В прошлый раз мы рассматривали цифровые SSL сертификаты, в этот раз рассмотрим еще один вариант цифровых сертификатов.
Code Signing сертификаты — это сертификат, которым подписывается программное обеспечение или скрипты, который подтверждает автора программы и гарантирует, что код не был изменен, после того, как была наложена цифровая подпись. Также их еще называют сертификаты разработчика.
Итак сертификаты разработчика предоставляют нам несколько возможностей. Во-первых это механизм цифровой подписи, которая подтверждает, что программа, которой вы пользуетесь действительно выпущена той или иной компанией, то есть гарантирует подлинность источника. А во вторых гарантирует целостность содержимого, то есть, что с момента подписания программный продукт не был поврежден или изменен.
Во всех современных версиях Windows, начиная с Windows XP SP2, при установке программного обеспечения без такой цифровой подписи вы получите предупреждение. То же самое кстати касается и установки драйверов, которые не имеют соответствующей цифровой подписи.
В случае, если цифровая подпись не найдена, Windows выдаст предупреждение, что у этой программы «Неизвестный издатель» и запускать её не рекомендуется.
В случае, если программа имеет цифровую подпись, то окошко будет выглядеть иначе и вы также сможете посмотреть информацию о сертификате.
Какие бывают виды Code signing сертификатов, и чем отличаются?
Прежде всего рассмотрим сертификаты, по центрам сертификации, которые их выпускают.
Лучше всего различия между сертификатами от разных центров сертификации показывает сводная табличка.
В колонках указаны названия центров сертификации, а в в строках тип сертификата или технология/платформа для которой он используется.
Платформа Центр сертификации | Symantec | Thawte | Comodo | Digicert | Globalsign | Trustwave | Startcom |
---|---|---|---|---|---|---|---|
Microsoft Authenticode Signing | + | + | + | + | + | + | + |
Code Signing for Apple | + | + | + | + | + | + | |
Microsoft Vba Signing | + | + | + | + | + | + | |
Java Code Signing | + | + | + | + | + | + | |
Adobe Air Signing | + | + | + | + | + | + | |
Kernel Mode Signing | + | + | + | + | |||
Android | + | ||||||
Windows Phone | + | ||||||
Qualcomm BREW | + | ||||||
Стоимость, от | 500$ | 250$ | 90$ | 220$ | 220$ | 330$ | 200$ |
стоит уточнить, что не все центры сертификации дают полную информацию о платформах, на которых работают их сертификаты, поэтому плюсом отмечены только те платформы, поддержка которых в явном виде заявлена центром сертификации.
Microsoft Authenticode
Для подписи 32 и 64 битных файлов (.exe, .cab, .dll, .ocx, .msi, .xpi и .xap файлы). Также позволяет подписывать код для Microsoft® Office, Microsoft VBA, Netscape Object Signing и Marimba Channel Signing.
Поддерживает приложения на Silverlight 4
Code Signing for Apple
Позволяет разработчикам подписывать программы для Mac OS, а также обновления для программного обеспечения
Microsoft Office Vba Signing
Подписывает VBA объекты, скрипты и макросы для файлов Microsoft Office .doc, .xls, и.ppt
Для Microsoft Office и дополнений, которые используют VBA
Java Code Signing
Для подписи Java апплетов. Позволяет подписывать .jar файлы и Java приложения для настольных и мобильных устройств.
Распознается Java Runtime Environment (JRE)
Adobe Air Signing
Для подписи файлов .air
Требуется для всех приложений, основанных на AIR
Kernel Mode Signing
Сертификаты разработчика Kernel-Mode позволяют подписывать, так называемые kernel-mode приложения и драйвера устройств. 64 битная версия Windows Vista и Windows 7 требуют, чтобы все kernel-mode приложения были подписаны сертификатом и доверенного центра сертификации.
Android
Для подписи и оптимизации .apk файлов для платформы Android
Microsoft Windows Phone
Для цифровой подписи приложений для Windows Phone и Xbox 360. Требуется для сервиса Microsoft App Hub
Qualcomm BREW
Для тех, кто разрабатывает приложения под платформу BREW (Binary Runtime Environment for Wireless)
Как работает Code Signing сертификат:
Процесс подписи кода.
- Издатель запрашивает Code Signing сертификат у центра сертификации
- Издатель создает код
- Используя SIGNCODE.EXE издатель, cоздает хеш кода, используя алгоритмы MD5 или SHA
- Кодирует хеш, с помощью приватного ключа
- Создает пакет, который включает в себя: код, зашифрованный хеш и сертификат издателя
Процесс проверки подписанного кода.
- Пользователь скачивает или устанавливает подписанное ПО и платформа или система пользователя проверяет сертификат издателя, который подписан корневым приватным ключем центра сертификации
- Система запускает код, используя тот же самый алгоритм создания хеша, как издатель и создает новый хеш
- Используя публичный ключ издателя, который содержится в сертификате, система расшифровывает зашифрованный хеш
- И сравнивает между собой 2 хеша
Центр сертификации
Когда разработчик запрашивает цифровой сертификат — центр сертификации идентифицирует его и выпускает сертификат, связанный с корневым сертификатом центра сертификации. Платформы и устройства содержат в себе корневой сертификат соответствующего центра сертификации. То есть если платформа или устройство доверяет какому-либо центру сертификации, то оно доверят и вашему сертификату, подписанному этим центром сертификации.
В случае если хеши не совпадают вы получите ошибку при запуске такого ПО — это может означать, что ПО было модифицировано вирусом или злоумышленником.
Когда ПО расшифровывает цифровую подпись, оно проверяет также корневой сертификат в системе, источник проверенной информации. В случае использования самоподписного сертификата, вы получите ошибку: «издатель не может быть проверен». Поэтому важно использовать сертификаты того центра сертификации, чьи корневые сертификаты уже установлены в системе у предполагаемого пользователя программы.
О самом процессе верификации организации рассказывать не буду, так как он такой же как и для SSL сертификатов с валидацией организации, о чем мы уже говорили в прошлой статье.
Подведем итог
Для выбора сертификата сначала нужно выбрать центр сертификации, который выпускает сертификаты под нужную вам платформу, а дальше выбор по сути сводится к выбору по цене и по известности центра сертификации, зачастую клиенты выбирают те центры сертификации, с которым уже работали ранее.
Несколько советов.
- Заявку на сертификат желательно оформлять с той же машины, с которой вы потом будете выполнять подпись ПО.
- Большинство центров сертификации рекомендуют генерировать заявку на сертификат через Internet explorer, хотя при генерации заявок через другие браузеры у нас также не было проблем.
Буду рад ответить на вопросы по сертификатам разработчика, в рамках своей компетенции, так как сам разработчиком не являюсь.
Также буду рад дополнениям и уточнениям от тех, кто такими сертификатами пользуется.
Автор: s0laris