Можно ли / как избежать подписи 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-адреса.