Как определить временную метку Authenticode в сравнении с временной меткой, соответствующей RFC 3161?

При подписании кода с помощью Signtool от Microsoft существует несколько различных опций при указании URL-адреса метки времени, /t и / tr.

/ t может указывать URL-адрес метки времени Authenticode, и / tr предполагается использовать с сервером меток времени, совместимым с RFC 3161.

Есть ли способ проанализировать метку времени в файле, чтобы выяснить, использовались ли / t или / tr? Если это Authenticode или RFC 3161?

2 ответа

Решение

Да. Microsoft signtool.exe будет печатать сводку цифровых подписей в ранее подписанном файле, включая сведения о том, какой стандарт использовался для создания метки времени, когда вызывается со следующим синтаксисом:

signtool verify / all / pa Имя файла

Чтобы проиллюстрировать это, подвергните один из своих собственных файлов процедуре Symantec для применения двойной подписи. Это приведет к 2 цифровым подписям в вашем файле, каждая с соответствующей отметкой времени. Одна временная метка будет применена с использованием Authenticode, а другая с RFC 3161.

Обратите внимание, что процедура Symantec предлагает проверить результат путем просмотра вкладки "Цифровые подписи" свойств файла RMB. Эта вкладка содержит значение метки времени (дата и время), но не стандарт метки времени.

После завершения процедуры просмотрите сводку цифровых подписей с помощью команды signtool verify, как предложено выше. Стандарт отметки времени будет показан в поле "Отметка времени". Например, вот что вы увидите, если дважды подписать файл с именем MyDigitallySigned.dll:

C: \ Users \ myusername> signtool verify / all / pa MyDigitallySigned.dll
Файл: MyDigitallySigned.dll
Индекс == Алгоритм == Отметка ====
========================================
0      sha1       Authenticode
1      sha256     RFC3161

Подробности реализации здесь: https://msdn.microsoft.com/en-us/library/windows/desktop/bb931395(v=vs.85).aspx

Короче, подписание стандартизировано. Единственное, что отличается между /t а также /tr должен быть протокол, используемый для получения подписи метки времени. Signtool в обоих случаях делает свое дело с подписью: копирует ее в качестве контрсигнатуры в сообщение PKCS#7, которое является подписью authenticode.

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

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