При подписании кода с помощью Microsoft Signtool, есть несколько разных опций при указании URL-адреса отметки времени, / t и / tr.
/ t может указывать URL-адрес временной метки Authenticode, а / tr предполагается использовать с сервером временных меток, совместимым с RFC 3161.
Есть ли способ проанализировать метку времени в файле, чтобы выяснить, использовался ли / t или / tr? Если это Authenticode или RFC 3161?
Да. Программа signtool.exe от Microsoft распечатает сводку цифровых подписей для ранее подписанного файла, включая стандарт, использованный для создания отметки времени, при вызове со следующим синтаксисом:
signtool verify / all / pa Имя файла
Чтобы проиллюстрировать, подвергните один из ваших файлов Процедура Symantec для применения двойной подписи. Это приведет к созданию двух цифровых подписей для вашего файла, каждая с соответствующей отметкой времени. Одна временная метка будет применена с использованием Authenticode, а другая - с RFC 3161.
Обратите внимание, что процедура Symantec предлагает проверить результат, просмотрев вкладку «Цифровые подписи» в свойствах файла с помощью ПКМ. На этой вкладке отображается значение метки времени (дата и время), но не стандартная метка времени.
После завершения процедуры просмотрите сводку цифровых подписей с помощью команды signtool verify, как предложено выше. Стандарт отметки времени будет показан в поле «Отметка времени». Например, вот что вы увидите, если дважды подпишите файл с именем MyDigitallySigned.dll:
C:\Users\myusername>signtool verify /all /pa MyDigitallySigned.dll File: MyDigitallySigned.dll Index==Algorithm==Timestamp==== ======================================== 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, которое является подписью аутентификационного кода.
Вы могли бы сделать вывод о методе, использованном при проверке подписи, если вы можете сопоставить сертификаты CA с протоколами, и они различны, но для этого не должно быть причин.