Подтвердите подпись Authenticode как полученную от нашей компании для автоматического средства обновления

Я реализую функцию автоматического обновления и мне нужен совет о том, как сделать это безопасно, используя лучшие практики. Я хотел бы использовать подпись Authenticode загруженного файла, чтобы убедиться, что он безопасен для запуска (т. Е. Исходит от нашей компании и не имеет t были подделаны). Мой вопрос очень похож на вопрос № 2008519.

Итоговый вопрос: каков наилучший и наиболее безопасный способ проверки подписей Authenticode для функции автоматического обновления? Какие поля в сертификате нужно проверить? Требования: (1) проверить подпись действительна, (2) проверить, что это моя подпись, (3) старые клиенты могут обновиться, когда истечет срок действия моего сертификата, и я получу новый.

Вот некоторая справочная информация / идеи из моего исследования : Я считаю, что это можно разбить на два этапа:

  1. Убедитесь, что подпись действительна. Я считаю, что с помощью WinVerifyTrust это должно быть легко, как описано в http://msdn.microsoft.com/en-us/library/aa382384 (VS.85) .aspx - Я не ожидаю здесь проблем.

  2. Убедитесь, что подпись соответствует нашей компании, а не другой компании. На этот вопрос кажется более трудным ответить:

Одна из возможностей - проверить некоторые строки в подписи. Может быть получен с помощью кода в статье MS KB № 323809, но в этой статье не дается рекомендаций о том, какие поля следует проверять для этого типа приложения (или любого другого, если на то пошло). Вопрос № 1072540 также показывает, как получить некоторую информацию о сертификате, но опять же не рекомендует, какие поля на самом деле проверять. Меня беспокоит, что строки могут быть не лучшей проверкой: что, если другой человек может получить сертификат с тем же именем, например? Или есть ли у нас веская причина изменить строки в будущем?

Человек, ответивший на вопрос № 2008519 , предъявляет очень похожие требования. Его потребность в функции "TrustedByUs" идентична моей. Однако он проводит проверку, сравнивая открытые ключи. Хотя это сработает в краткосрочной перспективе, похоже, что это не сработает для функции автоматического обновления. Это связано с тем, что сертификаты для подписи кода действительны не более 2–3 лет. Следовательно, в будущем, когда мы купим новый сертификат через 2 года, старые клиенты не смогут больше обновляться из-за изменения открытого ключа.

10
задан Community 23 May 2017 в 12:00
поделиться