如何识别 Authenticode 时间戳与符合 RFC 3161 的时间戳?

如何识别 Authenticode 时间戳与符合 RFC 3161 的时间戳?

使用 Microsoft 的签名工具,指定时间戳 URL 时有几个不同的选项,/t 和 /tr。

/t 可以指定 Authenticode 时间戳 URL,而 /tr 应该与符合 RFC 3161 的时间戳服务器一起使用。

有没有办法分析文件上的时间戳来确定是否使用了 /t 或 /tr?是否是 Authenticode 或 RFC 3161?

答案1

是的。使用以下语法调用 Microsoft 的 signtool.exe 时,它​​将打印先前签名的文件上的数字签名摘要,包括用于创建时间戳的标准:

signtool 验证 /all /pa文件名

为了说明这一点,将您自己的一个文件置于Symantec 应用双重签名的程序。这将导致您的文件上出现 2 个数字签名,每个签名都有相应的时间戳。一个时间戳将使用 Authenticode 应用,另一个时间戳将使用 RFC 3161 应用。

请注意,Symantec 的程序建议通过查看文件 RMB 属性的“数字签名”选项卡来验证结果。该选项卡提供时间戳值(日期和时间),但不提供时间戳标准。

完成此过程后,使用 signtool verify 命令查看数字签名摘要,如上所示。时间戳标准将显示在“时间戳”字段中。例如,如果您对名为的文件进行双重签名,您将看到以下内容我的DigitallySigned.dll

C:\Users\我的用户名>signtool verify /all /pa MyDigitallySigned.dll
文件:MyDigitallySigned.dll
索引==算法==时间戳====
========================================
0 sha1 验证码
1 sha256 RFC3161

答案2

实施细节如下:https://msdn.microsoft.com/en-us/library/windows/desktop/bb931395(v=vs.85).aspx

简而言之,签名是标准化的。/t和之间唯一的不同/tr应该是用于获取时间戳签名的协议。在这两种情况下,Signtool 都会对签名执行自己的操作:将其作为副署复制到作为身份验证签名的 PKCS#7 消息中。

如果您可以将 CA 证书映射到协议并且它们是不同的,您可能能够通过检查签名推断出所使用的方法,但没有理由这样做。

相关内容