Распространение сертификата подписи кода - лучшие практики?

447
fsteff

Распространение сертификата подписи кода - лучшие практики?

Примечание: я абсолютный новичок, когда дело доходит до подписания кода и сертификатов программного обеспечения. Я пытался найти и прочитать о том, как решить нашу конкретную проблему, но не нашел ничего похожего в Интернете.

До сих пор подписывание кода не было для нас проблемой, так как мы работаем над встроенными системами на базе Windows, но там, где мы предоставляем решения под ключ. Затем наш антивирус (который является обязательным!) Испытал неприязнь к нескольким нашим двоичным файлам (во всех проектах), и, похоже, в том, что он не любит, нет реальной картины. После нескольких недель разговоров с поставщиком антивируса мы обнаружили, что решение для нас заключается в том, что у наших разработчиков есть папка, исключенная из сканирования (используемая для создания программного обеспечения), и что мы реализуем подпись кода, имея наш сертификат Белый список в антивирусном приложении (используется для ограниченного внутреннего распространения и тестирования нашего программного обеспечения).

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

Наши разработчики находятся в пяти местах по всему миру, и мы ищем самое простое решение для нас, чтобы они могли выполнять подписывание кода (поскольку в противном случае у них не было бы возможности протестировать код, который они создают).

Мы надеемся, что возможно какое-то распространение сертификатов, возможно, даже с использованием Active Directory?

В недалеком будущем нам потребуется подписать код, чтобы фактически проверить безопасность нашего программного обеспечения, поэтому если мы будем использовать распределенный сертификат, будет ли он по-прежнему «безопасным» для проверки? Наверное, нет - что заставляет меня задуматься, могли бы мы иметь два сертификата и подписать их обоими? Один сертификат затем будет распространен и позволит нам создавать и тестировать, а другой будет использоваться для фактической публикации.

Мы, вероятно, пойдем с сертификатом Microsoft Authenticode - если нет веских причин не делать этого.

Однако, насколько я понимаю, Microsoft с 1 февраля 2017 года требовала использования модуля аппаратной безопасности (HSM) в процессе подписи кода - мы надеемся, что это не означает, что каждому разработчику нужен собственный HSM на своем компьютере!

Итак, подведем итог моим вопросам:

  1. Для подписи кода в двоичных файлах Windows требуется сертификат HSM или есть другие лучшие альтернативы (в этой ситуации).
  2. Какие есть варианты распространения сертификата среди разработчиков? Было бы неплохо использовать AD, так как он уже существует во всем мире.
  3. Можно ли при распределенной установке сохранить сертификат подписи в секрете?
  4. Будет ли двойная подпись вариантом для повышения безопасности? (Одна подпись, чтобы победить антивирус во время тестирования, другая для реальной безопасности выпущенного программного обеспечения)
  5. У вас есть лучшее решение для нас, чтобы рассмотреть?

Заранее спасибо.

-1

1 ответ на вопрос

1
harrymc

Для подписи кода в двоичных файлах Windows требуется сертификат HSM или есть другие лучшие альтернативы (в этой ситуации).

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

Я сам не использовал HSM, но я бы опасался ключей, которые генерируются таким оборудованием. Они могут подойти для внутреннего использования, но для внешнего использования вы должны использовать сертификаты, созданные хорошо известным центром сертификации (CA).

Let's Encrypt - это бесплатный CA, который широко используется. В моей организации мы предпочитали платить за известный CA для распространения нашего программного обеспечения.

Какие есть варианты распространения сертификата среди разработчиков? Было бы неплохо использовать AD, так как он уже существует во всем мире.

Вы можете использовать AD, но это может быть излишним для нескольких программистов. Я бы использовал его только для сертификата разработки, сохраняя при этом сертификат публикации очень защищенным, возможно, сам в зашифрованном контейнере и под полным и неразделенным контролем только одного доверенного лица (и, возможно, одного резервного пользователя).

Для получения дополнительной информации см .:

Можно ли при распределенной установке сохранить сертификат подписи в секрете?

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

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

Будет ли двойная подпись вариантом для повышения безопасности? (Одна подпись, чтобы победить антивирус во время тестирования, другая для реальной безопасности выпущенного программного обеспечения)

Конечно, и я бы видел это как вашу единственную возможность. Сертификат разработки может просочиться, но вам будет все равно, потому что люди, которые его утекут, также могут утекать неподписанные модули.

У вас есть лучшее решение для нас, чтобы рассмотреть?

Похоже, вы глубоко подумали на эту тему. В вашей ситуации я бы тоже пошел на такое решение с двойным сертификатом.

Похожие вопросы