Статья Code Signing сертификаты или сертификаты разработчика. Виды, как выбрать

Тема в разделе "Другие языки программирования", создана пользователем Dragokas, 25 ноя 2014.

  1. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.493
    Симпатии:
    4.310


    В прошлый раз мы рассматривали цифровые SSL сертификаты, в этот раз рассмотрим еще один вариант цифровых сертификатов.
    Code Signing сертификаты — это сертификат, которым подписывается программное обеспечение или скрипты, который подтверждает автора программы и гарантирует, что код не был изменен, после того, как была наложена цифровая подпись. Также их еще называют сертификаты разработчика.

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




    Платформа \ Центр сертификации Symantec Thawte Comodo Digicert Globalsign Trustwave Startcom
    1 Microsoft Authenticode Signing
    +​
    +​
    +​
    +​
    +​
    +​
    +​
    2 Code Signing for Apple
    +​
    +​
    +​
    +​
    +​
    +​
    3 Microsoft Vba Signing
    +​
    +​
    +​
    +​
    +​
    +​
    +​
    4 Java Code Signing
    +​
    +​
    +​
    +​
    +​
    +​
    +​
    5 Adobe Air Signing
    +​
    +​
    +​
    +​
    +​
    +​
    +​
    6 Kernel Mode Signing
    +​
    +​
    +​
    +​
    7 Android
    +​
    8 Windows Phone
    +​
    9 Qualcomm BREW
    +​
    10 Стоимость, от
    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 сертификат:

    Процесс подписи кода.

    [​IMG]
    1. Издатель (разработчик) запрашивает Code Signing сертификат у центра сертификации
    2. Используя SIGNCODE.EXE или другую утилиту для подписи кода издатель, cоздает хеш кода, используя алгоритмы MD5 или SHA
    3. Кодирует хеш, с помощью приватного ключа
    4. Создает пакет, который включает в себя: код, зашифрованный хеш и сертификат издателя

    Процесс проверки подписанного кода.
    [​IMG]

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


    Центр сертификации

    Когда разработчик запрашивает цифровой сертификат — центр сертификации идентифицирует его и выпускает сертификат, связанный с корневым сертификатом центра сертификации. Платформы и устройства содержат в себе корневой сертификат соответствующего центра сертификации. То есть если платформа или устройство доверяет какому-либо центру сертификации, то оно доверят и вашему сертификату, подписанному этим центром сертификации.
    В случае если хеши не совпадают вы получите ошибку при запуске такого ПО — это может означать, что ПО было модифицировано вирусом или злоумышленником.

    Когда ПО расшифровывает цифровую подпись, оно проверяет также корневой сертификат в системе, источник проверенной информации. В случае использования самоподписного сертификата, вы получите ошибку: «издатель не может быть проверен». Поэтому важно использовать сертификаты того центра сертификации, чьи корневые сертификаты уже установлены в системе у предполагаемого пользователя программы.

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

    Несколько слов про timestamp.

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

    Пример:
    Сертификат действителен с: 01.01. 2008
    Сертификат действителен до: 31.12.2010
    Подпись сделана: 04.07.2009
    Подпись проверена: 30.04.2012

    C временной меткой (timestamp) подпись пройдет проверку, поскольку на момент подписи сертификат был действителен. Без такой метки сертификат не пройдет проверку, поскольку на момент проверки у сертификата уже закончился срок.
    То есть такая метка позволяет использовать подписанный код, даже после срок окончания сертификата.

    Подведем итог

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

    Несколько советов.

    1. Заявку на сертификат желательно оформлять с той же машины, с которой вы потом будете выполнять подпись ПО.
    2. Большинство центров сертификации рекомендуют генерировать заявку на сертификат через Internet explorer, хотя при генерации заявок через другие браузеры у нас также не было проблем.
    Источник
     
    orderman и Kиpилл нравится это.

Поделиться этой страницей