Можно ли / как избежать подписи SHA-1 при подписании кода?

Мы только что перешли с SHA-1 на сертификат подписи кода SHA-2. (В качестве справочной информации мы подписываем файлы.exe и.xap в Windows с помощью signtool.exe, используя сертификаты подписи кода COMODO.) Мы делаем это с использованием сертифицированной метки времени, чтобы убедиться, что Windows продолжает доверять подписи кода после сертификата подписи кода. истекает.

Теперь я заметил, что сертификат временной метки все еще является сертификатом SHA-1 при использовании http://timestamp.comodoca.com/authenticode. (Подробности: это df946a5... с темой 'CN=COMODO Штамповка времени,O=COMODO CA Limited,L= Солфорд, S= Большой Манчестер, C = GB'.)

(В Windows этот сертификат можно увидеть, взяв подписанный файл.exe, затем в диалоговом окне "Свойства обозревателя" перейдите на вкладку "Цифровые подписи", выберите подпись и нажмите "Подробности", затем в диалоговом окне "Сведения о цифровой подписи" щелкните подпись счетчика и нажмите кнопку "Подробности". затем во втором диалоговом окне "Сведения о цифровой подписи" нажмите "Просмотреть сертификат". Сертификат является сертификатом SHA-1, если его "алгоритм хеширования подписи" равен "sha1".)

Будет ли это проблемой? Другими словами, после истечения срока действия нашего сертификата для подписи кода и после того, как Microsoft Windows рассматривает SHA-1 как неисправный алгоритм (что не позднее 2020 года), будут ли наши текущие подписи оставаться доверенными? Или Windows скажет: "Отметка времени находится в пределах диапазона действия сертификата подписи кода, но отметка времени была подписана сертификатом SHA-1, поэтому я не буду доверять отметке времени и, следовательно, не буду доверять этой подписи"?

Есть ли другой сервис, который мы можем / должны использовать? (Не Verisign http://timestamp.verisign.com/scripts/timstamp.dll, так как они также все еще используют сертификат отметки времени SHA-1, а именно: 6543992...)

2 ответа

Решение

Обновление: Похоже, вы в порядке до 01.01.2017.

Возможно, но благодаря этой статье я обнаружил, как получить сертификат метки времени SHA-256. Я нашел только один сервер отметок времени, который может это сделать: http://timestamp.globalsign.com/?signature=sha2

Флаг signtool / td также важен (и плохо документирован).

Подпись так:

signtool sign /fd SHA256 /tr http://timestamp.globalsign.com/?signature=sha2 /td SHA256 /a filename.exe

в результате получается исполняемый файл с сертификатом подписи кода и сертификатом временной метки с алгоритмом хеширования подписи SHA-256.

Вы можете использовать свой сертификат SHA-2 для двойной подписи кода, чтобы он проверялся в XPsp3 и Vista (которые не понимают SHA-2), а также в более поздних ОС (Win 7, 8, 10).

Это двухэтапный процесс, который сначала подписывается с помощью SHA-1, а затем добавляет подпись SHA-256. Хотя это не является явным, первый запуск signtool по умолчанию подписывает SHA-1. Во втором запуске вы запрашиваете алгоритм дайджеста sha256 с параметром /fd. Серверы времени в этом примере принадлежат Comodo.

signtool sign /f cert.pfx /p your_cert_password /t "http://timestamp.comodoca.com" /v file_to_sign.exe

signtool sign /f cert.pfx /p your_cert_pass /fd sha256 /tr "http://timestamp.comodoca.com/?td=sha256" /td sha 256 /as /v file_to_sign.exe

Вам необходимо использовать версию signtool, которая поддерживает двойную подпись (опция /as). Я считаю, что это Windows SDK версии 8.1 или выше.

Когда вы это сделаете, проверьте свойства безопасности исполняемого файла, и вы должны увидеть подписи SHA-1 и SHA-256 (в более поздних ОС), но только подпись SHA-1 в XP/VISTA.

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

Другие вопросы по тегам