Приложение или драйвер, не имеющие цифровой подписи, воспринимаются как потенциально опасные — у пользователя будут возникать постоянные проблемы с их запуском.
Сторонние антивирусы и собственные инструменты информационной защиты операционной системы будут делать все возможное, чтобы предотвратить запуск такой программы. Если это противоречит вашим целям, позаботьтесь о цифровой подписи для вашего приложения или драйвера.
Содержание
Что такое цифровая подпись для программы
Подпись программы — это процесс добавления специального кода (электронной подписи) к исполняемым файлам и драйверам на этапе разработки.
Электронная подпись позволяет пользователям убедиться, что данная программа:
Электронная подпись для программы также может содержать информацию о версии или другие метаданные. По сути это цифровой аналог обычной рукописной подписи и печати.
Польза от подписания программ для пользователей состоит в том, что они знают, кем было опубликовано данное ПО, и что оно не было изменено. Для разработчиков же это выгодно тем, что их программам доверяют, и подделать их труднее.
Как правило, подписывается не сам исполняемый файл, а его хэш-сумма. Это позволяет уменьшить размер цифровой подписи.
Подтвердить авторство и отсутствие изменений после подписания можно благодаря тому, что:
Для чего используется
Электронная подпись используется в большинстве криптографических протоколов, применяется для распространения ПО, в финансовых транзакциях и других операциях, для которых важно уметь распознать случаи фальсификации.
Наиболее частое применение подписи программного кода — обеспечение безопасности при установке программы. Например, файлы обновлений операционных систем содержат подписи компании-разработчика, чтобы принимающая система могла убедиться в целостности файлов и в том, что они действительно созданы данным производителем, даже если обновления доставляются через третьи лица (скачиваются с сайта дистрибьютора или устанавливаются с дисков).
Как получать цифровую подпись для программы
Электронные подписи создаются с помощью алгоритма подписи с открытым ключом, например, RSA. В алгоритме с открытым ключом на самом деле используются два различных ключа: открытый и закрытый. Закрытый ключ знает только его владелец, а открытый ключ доступен всем. В технологии электронной подписи с помощью закрытого ключа генерируется подпись, а соответствующий ему открытый ключ используется для её проверки.
Чтобы получить электронную подпись, необходимо обратиться в специальный центр сертификации (или удостоверяющий центр). Центр сертификации выдаёт ключи (закрытый и открытый) и сертификат (собственно подпись).
С помощью закрытого ключа разработчик вычисляет хэш-сумму своего кода (в специальном ПО или через веб-сайт), прикрепляет хэш-сумму и сертификат к коду и компилирует его — получается подписанная программа.
Сертификат — это электронный документ, который подтверждает, что подпись принадлежит данному лицу. Сертификат содержит следующую информацию:
С помощью открытого ключа любой пользователь может проверить, является ли цифровая подпись действительной, то есть соответствует ли она данной программе и открытому ключу пользователя. Проверка подписи осуществляется с помощью специального ПО или на специализированных сайтах. Проверяются следующие параметры:
Помимо выдачи ключей и сертификатов, центр сертификации отзывает истёкшие или скомпрометированные сертификаты и ведёт соответствующие базы данных.
Существует также вариант, при котором разработчик внедряет в код свою собственную, личную подпись. Конечному пользователю в этом случае необходимо получить открытый ключ непосредственно у разработчика, чтобы выполнить проверку ПО при первом запуске.
Кроме программной реализации цифровой подписи, существует также её аппаратная реализация (например, с помощью смарт-карт, USB-токенов и т.п.).
Однако само по себе наличие цифровой подписи в программе не гарантирует, что последняя безопасна. Наличие подписи говорит о том, что программа была получена из данного источника и не была изменена после того, как была подписана. Доверять источнику программы или нет, решает сам пользователь.
Лицензирование программ
Лицензирование позволяет из написанной программы сделать продукт, пригодный для продажи. Как и с цифровой подписью, разработчик может попытаться создать собственные механизмы или подключиться к существующим системам. Как правило, такие системы позволяют оперативно запустить продажи на основе распространения дистрибутива и серийных номеров, а также обеспечивают защиту от копирования, взлома и модификации.
Подробнее о лицензировании программного обеспечения.
Источник