Подписание кода и как это работает
При загрузке программного обеспечения из Интернета потребители всегда должны опасаться третьих лиц, маскирующихся под поставщика программного обеспечения. С таким ресурсом, как подпись кода, программное обеспечение может быть уверено, что оно исходит из надлежащего источника. Подписание кода — это операция, при которой разработчик программного обеспечения или распространитель ставит цифровую подпись на отправляемый файл, чтобы гарантировать пользователям, что они получают программное обеспечение, которое делает то, что обещал создатель. Подпись служит доказательством того, что код не был изменен или изменен по сравнению с его исходной формой.
Теперь, когда открытый ключ и сертификат подписи цифрового кода возвращены, код программного обеспечения проходит через хеш-функцию. Хеш-функция — это односторонняя функция, которая превращает текст, помещенный в функцию, в произвольную смесь значений, которые нельзя обратить. Это обеспечивает значение для сравнения, когда данные отправляются потребителю. Вывод или дайджест затем шифруется закрытым ключом. Причина, по которой закрытый ключ используется для шифрования, а не открытый ключ, заключается в том, что разработчик хочет, чтобы любой мог прочитать сообщение, но никто не мог вмешаться в него. Дайджест, сертификат подписи кода и хеш-функция теперь объединены в блок подписи и помещены в программное обеспечение, которое отправляется потребителю.
Когда программное обеспечение получено, компьютер потребителя сначала проверяет подлинность сертификата подписи кода. После подтверждения подлинности дайджест расшифровывается с помощью открытого ключа первоначально созданной пары ключей. Затем хэш-функция используется в коде программного обеспечения, и полученный дайджест сравнивается с дайджестом, отправленным разработчиком. Если дайджесты совпадают, то программное обеспечение безопасно для установки.
Чтобы предотвратить эти недостатки, необходимо следовать рекомендациям.
Некоторыми примерами программного обеспечения с кодовой подписью являются приложения Windows, обновления программного обеспечения Windows, программное обеспечение Apple, объекты и макросы Microsoft Office VBA, файлы .jar, .air и .airi, а также исполняемые файлы любого типа. Для приложений IOS для подписи кода используется Xcode. Чтобы загрузить программное обеспечение в магазин Itunes, пользователь должен иметь действительный идентификатор разработчика Apple с действительным сертификатом или профилем, прежде чем Xcode подпишет программное обеспечение. Для интеграции приложения разработчику потребуется использовать сертификат разработки. Чтобы запустить приложение на любом устройстве, необходимо использовать сертификат распространения для отправки приложения и его тестирования. Другие платформы, такие как Windows, просто требуют использования доверенного центра сертификации. C# и Visual Studio также предлагают собственные решения для подписывания кода.
Важность подписи кода
Благодаря возможности загружать так много программного обеспечения из Интернета, подпись кода становится все более и более важной для использования разработчиками и распространителями программного обеспечения. Злоумышленник может легко замаскироваться под законный источник для установки вредоносного ПО на компьютер жертвы. Подписание кода гарантирует, что эти типы атак не могут произойти, пока пользователи загружают только программное обеспечение, которое их операционная система считает безопасным. В настоящее время, когда программное обеспечение загружается на компьютер, операционная система проверяет наличие цифрового сертификата, созданного с помощью подписи кода, чтобы обеспечить безопасность программного обеспечения, которое пытаются установить. Если цифровой сертификат не найден, пользователь получает предупреждение об этом факте и предлагает либо остановить, либо продолжить установку.Как работает подпись кода
Подписание кода состоит из нескольких шагов, начиная с создания уникальной пары ключей. Созданная пара ключей является парой открытого и закрытого ключей, поскольку при подписании кода используется криптография с открытым ключом. После создания пары ключей открытый ключ отправляется в доверенный центр сертификации или ЦС, который проверяет, принадлежит ли ключ владельцу, возвращая открытый ключ разработчику программного обеспечения вместе с сертификатом подписи кода с цифровой подписью. Центр сертификации является высоконадежным объектом, на которого возложена ответственность за подписание и создание цифровых сертификатов. Сертификат с прикрепленным открытым ключом, возвращаемый ЦС, подтверждает надежность разработчика и любого программного обеспечения, которое они создают.Теперь, когда открытый ключ и сертификат подписи цифрового кода возвращены, код программного обеспечения проходит через хеш-функцию. Хеш-функция — это односторонняя функция, которая превращает текст, помещенный в функцию, в произвольную смесь значений, которые нельзя обратить. Это обеспечивает значение для сравнения, когда данные отправляются потребителю. Вывод или дайджест затем шифруется закрытым ключом. Причина, по которой закрытый ключ используется для шифрования, а не открытый ключ, заключается в том, что разработчик хочет, чтобы любой мог прочитать сообщение, но никто не мог вмешаться в него. Дайджест, сертификат подписи кода и хеш-функция теперь объединены в блок подписи и помещены в программное обеспечение, которое отправляется потребителю.
Когда программное обеспечение получено, компьютер потребителя сначала проверяет подлинность сертификата подписи кода. После подтверждения подлинности дайджест расшифровывается с помощью открытого ключа первоначально созданной пары ключей. Затем хэш-функция используется в коде программного обеспечения, и полученный дайджест сравнивается с дайджестом, отправленным разработчиком. Если дайджесты совпадают, то программное обеспечение безопасно для установки.
Преимущества подписи кода
Подписание кода дает множество преимуществ, в том числе перечисленные ниже.- Подписывая код, пользователи могут доверять загружаемому программному обеспечению и не беспокоиться о загрузке вредоносных программ на свой компьютер или мобильное устройство. Эта аутентификация действует как улица с двусторонним движением, при этом подпись кода способствует доверию с обеих сторон обмена. Не только пользователь может доверять отправителю, но и разработчик может быть уверен, что его программное обеспечение попало в нужное место и не используется не по назначению.
- Поскольку многие из крупнейших надежных магазинов мобильных и веб-приложений, таких как IOS AppStore или Google Play Store, требуют подписи кода, разработчики могут распространять свое программное обеспечение на еще большем количестве платформ.
Слабые стороны подписи кода
У подписи кода также есть несколько недостатков, в том числе:- Неправильное управление закрытым ключом, созданным в начале процесса подписи кода, может привести к небезопасности отправляемого программного обеспечения. Если законный закрытый ключ украден, злоумышленник может закодировать свое вредоносное программное обеспечение с помощью закрытого ключа, который сообщит пользователю, что программное обеспечение безопасно для использования, даже если это не так.
- Злоумышленники могут получить доверенный сертификат, но большинство злоумышленников удерживает необходимость предоставления идентификационной информации для получения сертификата. Если вредоносное ПО распространяется с легитимным сертификатом, разработчик может быть идентифицирован и остановлен.
- Если пользователь разрешает установку программного обеспечения, даже если операционная система говорит, что оно не подписано кодом, то подписывание кода становится бесполезным.
Чтобы предотвратить эти недостатки, необходимо следовать рекомендациям.
- Для защиты ключей шифрования следует использовать аппаратные модули безопасности или HSM. HSM — это специализированное физическое устройство с высоким уровнем доверия. Это сетевой компьютер, который выполняет все основные криптографические операции, включая шифрование, дешифрование, аутентификацию, управление ключами, обмен ключами и т. д. Они защищены от несанкционированного доступа и используют чрезвычайно безопасные криптографические операции.
- Наряду с HSM, с ключами следует использовать принцип наименьших привилегий, чтобы гарантировать, что только пользователи, которым нужен ключ, имеют к нему доступ.
- Наконец, всегда следует соблюдать осторожность при подписывании кода. Загружайте и устанавливайте только программное обеспечение, код которого подписан доверенным центром сертификации.
Кто использует подпись кода
Подпись кода используется в любом коммерчески упакованном и распространяемом программном обеспечении. Надежные магазины приложений, такие как IOS AppStore или Google Play Store, требуют подписи кода для части программного обеспечения, которое будет распространяться на их платформе. Многие потребители не будут загружать программное обеспечение, если оно не использует подпись кода, поэтому даже разработчики, которые не работают на известных платформах, будут внедрять подпись кода. Существует несколько различных типов сертификатов, которые можно использовать в зависимости от того, с какими системами работает распространяемое программное обеспечение. Сертификаты для настольных компьютеров включают сертификаты Microsoft, Java, Microsoft Office, VBA и Adobe AI. Примерами мобильных сертификатов являются Windows Phone, Windows Phone Private Enterprise, Java Verified, Android и Brew.Некоторыми примерами программного обеспечения с кодовой подписью являются приложения Windows, обновления программного обеспечения Windows, программное обеспечение Apple, объекты и макросы Microsoft Office VBA, файлы .jar, .air и .airi, а также исполняемые файлы любого типа. Для приложений IOS для подписи кода используется Xcode. Чтобы загрузить программное обеспечение в магазин Itunes, пользователь должен иметь действительный идентификатор разработчика Apple с действительным сертификатом или профилем, прежде чем Xcode подпишет программное обеспечение. Для интеграции приложения разработчику потребуется использовать сертификат разработки. Чтобы запустить приложение на любом устройстве, необходимо использовать сертификат распространения для отправки приложения и его тестирования. Другие платформы, такие как Windows, просто требуют использования доверенного центра сертификации. C# и Visual Studio также предлагают собственные решения для подписывания кода.
Похожие публикации
Нет комментариев