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