Software developer

Одним из важнейших вопросов в современном мире является вопрос доверия к полученным данным. Например, пользователь А отправляет по почте пользователю В данные D. Может ли пользователь В быть уверенным, что полученные им данные являются теми же самыми данными, которые отправил пользователь А? Одним из способов решения этой проблемы является цифровая подпись. На цифровую подпись налагаются следующие требования:

  • содержание подписи должно зависеть от подписываемого сообщения;
  • в подписи должна использоваться уникальная информация отправителя;
  • подпись должна легко создаваться;
  • подпись вычислительно невозможно подделать;
  • подпись должна иметь небольшой размер.

В этой статье будет рассмотрен пример реализации цифровой подписи для проверки целостности бинарного файла в Linux (64-битный ELF). Мы будем использовать прямую цифровую подпись при которой взаимодействие осуществляется только между отправителем и получателем (без арбитра). Для этого нам понадобятся закрытый ключ шифрования и открытый ключ (сертификат). Оба ключа создаются отправителем. Пользователь А подписывает исполняемый файл и передаёт сертификат пользователю B, используя надёжные средства доставки. После этого пользователь А отправляет пользователю B подписанный файл. Пользователь B запускает полученный файл: если бинарный файл был повреждён, то пользователь B получит сообщение о том, что проверка цифровой подписи завершилась неудачей. Для реализации этого подхода нам понадобится программа, которая подписывает бинарный файл и код, который проверяет цифровую подпись.

Автор статьи – Кирилл Бражников, инженер-разработчик в Ауриге.

Вы можете скачать эту статью в формате PDF.