Практические советы по использованию сертификатов для подписи кода программ
Самая большая проблема с подписями кода - это защита частного ключа подписи, связанного с сертификатом подписи кода. Если ключ скомпрометирован, сертификат теряет доверие и ценность, ставя под угрозу программное обеспечение, которое вы уже подписали.
Вот некоторые рекомендации по использованию и работе с сертификатом для подписи кода:
Минимизировать доступ к закрытым ключам
Компьютеры с сертификатом и приватным ключем должны иметь ограниченный доступ сотрудников
Сведите к минимуму пользователей, у которых есть доступ к сертификату
Используйте физические методы безопасности для минимизации доступа к компьютерам на которых находится сертификат для подписи кода
Защитите секретные ключи с помощью криптографических аппаратных продуктов
Ключи должны быть защищены продуктом с сертификатом FIPS 140 Level 2 (или лучше)
* Криптографическое оборудование не позволяет экспортировать закрытый ключ в программное обеспечение, где его можно атаковать
Используйте метку времени
Таим штампинг - метка времени позволяет доверять вашему програмному коду после истечения срока действия сертификата или его отмены
Используйте тестовый сертификат при разработке приложений
Для тестовых закрытых ключей и сертификатов для проверки подписи требуется меньшие требования с
доступом к безопасности, чем итоговый производственный код, подписаный авторизованным секретным ключом и сертификатом
Сертификаты для проверки подписи могут быть самоподписаны или получены из внутреннего тестового CA
Создайте отдельную инфраструктуру сертификата подписи кода для тестирования, чтобы проверить
предварительные сборки программного обеспечения
Тестовые сертификаты должны быть привязаны к совершенно другому корневому сертификату,
чем к корневому сертификату, который используется для подписывания публично выпущенных продуктов -
эта предосторожность поможет гарантировать, что тестовым сертификатам доверяют только в пределах
предполагаемой тестовой среды
Аутентификация подписанного кода
Любой код, который отправляется для подписи, должен быть строго аутентифицирован,
и вы уверены в том что подписано и выпущено
Внедрите процедуру подписи кода и утверждения подписи, чтобы предотвратить подписание неутвержденного
или вредоносного кода
Записывайте все действия по подписи кода для целей аудита и / или реагирования на инциденты
Проверка кода на подлинность перед подписанием
Подписание кода не подтверждает безопасность или качество кода; он подтверждает издателя и изменен ли код
Соблюдайте осторожность при включении кода из других источников
Вирусное сканирование поможет улучшить качество выпущенного кода
Не используйте запасной ключ (распределите риск с помощью нескольких сертификатов)
Если ваш код обнаружен с недостатком безопасности, тогда вам может понадобиться создать диалог доверия
- это можно сделать, отозвав текущий сертификат для подписи кода, в результате чего произойдет отмена действия
текущего сертификата.
* Если код с недостатком безопасности был выпущен до того, как был выпущен более хороший код,
то отзыв сертификата также повлияет на хороший код
Регулярная замена ключей и сертификатов поможет избежать этой ситуации
Для установки кода на многих платформах требуется подписание кода, поскольку оно обеспечивает гарантии подлинности и происхождения.
При подписании кода вы должны принять несколько решений по защите развернутого программного обеспечения.
Наиболее важным решением при установлении доверия конечного пользователя является то, что подписанный код поддерживается сертификатом подписи кода, выпущенным доверенным органом сертификации. Самоподписанные сертификаты должны использоваться только для тестирования, а не для выпуска продукции.
Вторым наиболее важным шагом является отметка времени вашего кода.
В случае взломанного ключа ваш штамп времени может гарантировать, что ваш код будет защищен, даже если ваш сертификат должен быть отозван.
Сертификат подписи с расширенным сертификатом проверки является лучшим инструментом, доступным для установления доверия
к секретному ключу, используемому для подписи кода, и обеспечивает более высокую степень уверенности в личности издателя
программного обеспечения.
Поскольку подписание кода EV обеспечивает лучшую информацию об источнике программного обеспечения, некоторые платформы с
фильтрами защиты от вредоносных программ предоставляют программе EV-signed лучшую обработку в диалоговых окнах
пользователя во время установки.