Как проверить двоичный файл, подписанный самозаверяющим сертификатом? - PullRequest
1 голос
/ 28 апреля 2009

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

Вопрос: как проверить бинарный файл, подписанный самозаверяющим сертификатом, без необходимости устанавливать сертификат, используя API шифрования Microsoft? Файл .cer для проверки будет включен в приложение. Или проще использовать универсальную библиотеку Crypto?

Ответы [ 2 ]

3 голосов
/ 12 мая 2009

Вы можете пропустить весь процесс X509, ведь он вам действительно не нужен, если вы собираетесь использовать собственные сертификаты ...

Для того, что вы хотите сделать, сначала вам нужно сгенерировать пару секретных / открытых ключей RSA. Затем вы сохраняете открытый ключ в своем приложении.

Когда у вас есть обновление, вы подписываете его на своем сайте, получая MD5 или SHA-1 или любой другой хеш, который вы хотите использовать; затем вы шифруете этот хеш с помощью закрытого ключа. Установленные приложения получают обновление и подпись (зашифрованный хеш); когда приложение получает двоичный файл, оно вычисляет свой хэш, затем расшифровывает другой с помощью открытого ключа и сравнивает их. Если они идентичны, то это действительное обновление, в противном случае вы отклоняете его и предупреждаете пользователя или что-то в этом роде.

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

0 голосов
/ 12 мая 2009

Мне кажется, я вспоминал, как слышал о способе включения самозаверяющих сертификатов несколько лет назад, еще во времена Win2k, но он был очень хакерским, совсем не подходящим для публичного развертывания и, вероятно, был "исправлен". Если вы задумываетесь об использовании какой-либо другой криптографической библиотеки или разрабатываете свою собственную, позаботьтесь: очень трудно отличить хорошую криптографию от плохой криптографии.

...