Главное Авторские колонки Вакансии Образование
Выбор редакции:
5 955 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Как подписать программу цифровой подписью

Приложение или драйвер, не имеющие цифровой подписи, воспринимаются как потенциально опасные – у пользователя будут возникать постоянные проблемы с их запуском. Сторонние антивирусы и собственные инструменты информационной защиты операционной системы будут делать все возможное, чтобы предотвратить запуск такой программы. Если это противоречит вашим целям, позаботьтесь о цифровой подписи для вашего приложения или драйвера.
Мнение автора может не совпадать с мнением редакции

b_5b17fd7f09276.jpg

Что такое цифровая подпись для программы

Подпись программы – это процесс добавления специального кода (электронной подписи) к исполняемым файлам и драйверам на этапе разработки.

Электронная подпись позволяет пользователям убедиться, что данная программа:

  1. подписана именно данным автором, и
  2. не была изменена или повреждена после подписания.

Электронная подпись для программы также может содержать информацию о версии или другие метаданные. По сути это цифровой аналог обычной рукописной подписи и печати.

Польза от подписания программ для пользователей состоит в том, что они знают, кем было опубликовано данное ПО, и что оно не было изменено. Для разработчиков же это выгодно тем, что их программам доверяют, и подделать их труднее.

Как правило, подписывается не сам исполняемый файл, а его хэш-сумма. Это позволяет уменьшить размер цифровой подписи.

Подтвердить авторство и отсутствие изменений после подписания можно благодаря тому, что:

  • ­Создать подпись можно только с помощью закрытого ключа, известного только владельцу подписи.
  • ­При любом изменении программы изменяется ее хэш-сумма, и подпись становится недействительной, о чем выдается соответствующее предупреждение.

Для чего используется

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

Наиболее частое применение подписи программного кода – обеспечение безопасности при установке программы. Например, файлы обновлений операционных систем содержат подписи компании-разработчика, чтобы принимающая система могла убедиться в целостности файлов и в том, что они действительно созданы данным производителем, даже если обновления доставляются через третьи лица (скачиваются с сайта дистрибьютора или устанавливаются с дисков).

Как получать цифровую подпись для программы

b_5b17fd883fd82.jpg

Электронные подписи создаются с помощью алгоритма подписи с открытым ключом, например, RSA. В алгоритме с открытым ключом на самом деле используются два различных ключа: открытый и закрытый. Закрытый ключ знает только его владелец, а открытый ключ доступен всем. В технологии электронной подписи с помощью закрытого ключа генерируется подпись, а соответствующий ему открытый ключ используется для её проверки.

Чтобы получить электронную подпись, необходимо обратиться в специальный центр сертификации (или удостоверяющий центр). Центр сертификации выдаёт ключи (закрытый и открытый) и сертификат (собственно подпись).

С помощью закрытого ключа разработчик вычисляет хэш-сумму своего кода (в специальном ПО или через веб-сайт), прикрепляет хэш-сумму и сертификат к коду и компилирует его – получается подписанная программа.

Сертификат – это электронный документ, который подтверждает, что подпись принадлежит данному лицу. Сертификат содержит следующую информацию:

  • ­уникальный номер;
  • ­дата начала и окончания срока действия;
  • ­данные о владельце;
  • ­уникальный ключ проверки сертификата (открытый);
  • ­название используемой подписи или стандарты, которым она соответствуют;
  • ­название центра сертификации.

С помощью открытого ключа любой пользователь может проверить, является ли цифровая подпись действительной, то есть соответствует ли она данной программе и открытому ключу пользователя. Проверка подписи осуществляется с помощью специального ПО или на специализированных сайтах. Проверяются следующие параметры:

  • ­срок действия ключа;
  • ­отсутствие ключа в списке отозванных;
  • ­факт выдачи ключа авторизованным центром сертификации.

Помимо выдачи ключей и сертификатов, центр сертификации отзывает истёкшие или скомпрометированные сертификаты и ведёт соответствующие базы данных.

Существует также вариант, при котором разработчик внедряет в код свою собственную, личную подпись. Конечному пользователю в этом случае необходимо получить открытый ключ непосредственно у разработчика, чтобы выполнить проверку ПО при первом запуске.

Кроме программной реализации цифровой подписи, существует также её аппаратная реализация (например, с помощью смарт-карт, USB-токенов и т.п.).

Однако само по себе наличие цифровой подписи в программе не гарантирует, что последняя безопасна. Наличие подписи говорит о том, что программа была получена из данного источника и не была изменена после того, как была подписана. Доверять источнику программы или нет, решает сам пользователь.

Лицензирование программ

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

Подробнее о лицензировании программного обеспечения.

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.