Назад | Перейти на главную страницу

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

При подписании кода с помощью 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 с протоколами, и они различны, но для этого не должно быть причин.