Удостоверение подлинности Практика использования Code Signing сертифікатів для подписи кода

Удостоверение подлинности ПО - Практика подписания кода

  1. Ограничьте доступ к ключу
    • Ограничить доступ к закрытым ключам на основе ролей
    • Сведите к минимуму количество машин, на которых хранятся ключи подписи кода
    • Сведите к минимуму количество сотрудников, которые могут получить доступ к ключам
    • Используйте меры физической безопасности, чтобы свести к минимуму доступ к ключу, например, двери, защищенные ключ-картой, и запертые ящики, шкафы, сейфы
    • Всегда держите закрытый ключ под замком
  2. Обеспечьте максимальную безопасность ключей
    • Защищайте закрытые ключи с помощью безопасных хранилищ и аппаратных модулей безопасности (HSM), которые представляют собой специальные криптографические процессоры, предназначенные исключительно для защиты ключей.
    • Продукты для защиты ключей должны быть сертифицированы как минимум FIPS-140 Level 2.
    • Для транспортировки закрытых ключей используйте оборудование, которое защищено надежным паролем длиной не менее 16 символов и содержит прописные и строчные буквы, цифры и специальные символы.
    • Убедитесь, что закрытые ключи никогда и ни по какой-либо причине не добавляются в легкодоступные места, такие как GitHub, PasteBin, общедоступные серверы и т. д.
  3. Используйте отметку времени
    • Отметки времени позволяют проверять код даже после того, как срок действия оригинального сертификата подписи кода истек или он был отозван.
    • Сертификаты с отметкой времени можно использовать для подтверждения в течение 11 лет после выдачи.
  4. Используйте тестовую подпись только тогда, когда это уместно.
    • Сертификаты с тестовой подписью либо самозаверяющие, либо поступают от внутреннего частного центра сертификации, поэтому их следует использовать только в безопасной тестовой среде.
    • Сертификаты с тестовой подписью не требуют того же уровня безопасности, что и сертификаты подписи производственного кода.
    • Сертификаты с тестовой подписью не могут быть привязаны к тому же корню, что и ваши производственные сертификаты. Инфраструктура тестовой подписи должна быть полностью отделена от производственной инфраструктуры.
  5. Проверьте код перед подписанием
    • Перед подписанием код необходимо тщательно проверить и подтвердить его подлинность.
    • Следует создать и использовать процесс отправки и утверждения для подписи кода, чтобы избежать подписания неутвержденного и / или вредоносного кода.
    • Все действия по подписанию кода должны регистрироваться на случай будущих аудитов или инцидентов безопасности.
  6. Сначала сканирование
    • Важно помнить, что подписывание кода не гарантирует безопасность того, что находится внутри - вы можете подписать код вируса или вредоносной программы, случайно или если захотите ;)
    • Будьте особенно осторожны при включении открытого исходного кода из внешних источников.
    • Выполните сканирование на вирусы и вредоносные программы перед подписанием кода
    • Сканеры вредоносных программ не могут обнаружить все, поэтому убедитесь, что каждое изменение кода / компонента проверялось вручную.
  7. Не полагайтесь на один сертификат
    • Использование нескольких сертификатов помогает распределять риски
    • Несколько сертификатов могут помочь упростить отслеживание любых проблем, которые могут возникнуть.
  8. Не бойтесь отзывать сертификат
    • Любые скомпрометированные сертификаты должны быть немедленно отозваны и сообщены в центр сертификации.
    • «Взломанный» означает любое подозрение, что закрытый ключ мог попасть в руки неавторизованного пользователя или что сертификат был использован для подписи приложения, содержащего вредоносное ПО или другой вредоносный код.
    • Используйте метки времени, чтобы определить последнюю возможную дату отзыва, которая может быть использована, чтобы минимизировать влияние на безопасный код.
  9. Централизуйте управление сертификатами.
    • Постоянно отслеживайте состояние сертификатов для подписи кода
    • Регулярно проверяйте использование ключей, чтобы гарантировать точность политик
  10. Будьте в курсе событий
    • Будьте в курсе любых новых криптографических алгоритмов или отраслевых практик, чтобы обеспечить наилучшую доступную защиту
    • Немедленно реагируйте при обнаружении новых недостатков или уязвимостей в системе безопасности.
  11. Создание организационной политики и процедур.
    • Создайте письменный документ политики, которому должны следовать все в организации - это должен быть «живой документ», который адаптируется к любым внутренним или внешним изменениям.
    • Политика подписи кода должна касаться:
      • Кто может подписывать код
      • Какие инструменты подписи кода одобрены для использования
      • Какие сертификаты разрешены
      • Кто утверждает запросы на подпись кода
      • Как / где хранятся и защищаются приватные ключи
  12. Контролируйте своих сотрудников для соблюдения этих правил