Рейтинг:2

Подписание программного обеспечения с помощью openSSL

флаг sg

Компания, в которой я работаю, хочет, чтобы я реализовал некоторые функции C для автоматической подписи их программного обеспечения. Проведя некоторое исследование, я обнаружил, что openSSL отлично подходит для этого.

Прежде чем приступить к реализации на C, я хотел получить представление о рабочем процессе, сначала выполнив его в CLI. Но это меня немного смутило, потому что я не уверен, где здесь следует использовать сертификаты.

Вот шаги, которые я предпринял:

  1. Сгенерировать закрытый ключ
$ openssl genrsa -out privat.pem 2048
  1. Извлечь открытый ключ из закрытого ключа
$ openssl rsa -in privat.pem -outform PEM -pubout -out public.pem
  1. Подпишите файл примера закрытым ключом
$ openssl dgst -sha256 -sign privat.pem -out sign.sha256 файл.txt
  1. Подтвердить подпись открытым ключом
$ openssl dgst -sha256 -verify public.pem -signature sign.sha256 file.txt

Подтверждено ОК

Где мне теперь использовать сертификат, чтобы доказать, что программное обеспечение принадлежит компании?

Кроме того, программное обеспечение поставляется в виде контейнера приложений для Debian, где мы создаем собственный заголовок приложения с метаданными, такими как, например, контрольная сумма. Мне также пришлось бы включить подпись в этот заголовок, было бы неплохо сохранить там вывод sign.sha256? Может в Base64?

DannyNiu avatar
флаг vu
Подкоманда `dgst` предназначена для вычисления хеш-дайджеста данных входного сообщения. Вы должны использовать подкоманду `cms` для работы с форматом данных CMS, который позволяет подписывать, шифровать, а также переваривать.
DannyNiu avatar
флаг vu
Чистое использование программного обеспечения, вероятно, не по теме на этом сайте, но для ответа на ваш вопрос требуются нетривиальные практические знания в области криптографии, поэтому я бы посоветовал оставить этот вопрос здесь, но у других может быть другое мнение об актуальности в этом случае.
fgrieu avatar
флаг ng
Если цель состоит в том, чтобы «подписать свое программное обеспечение» в том же смысле, что и для Windows, то я не знаю, сможет ли OpenSSL это сделать. Насколько мне известно, его роль в процедуре ограничена созданием пары открытого/закрытого ключа и соответствующим запросом на подпись сертификата в центр сертификации. Подписание выполняется с помощью других инструментов, обычно signtool.exe.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.