首页>最新数字证书问答>代码签名证书的时间戳验证码签名方法

代码签名证书的时间戳验证码签名方法

以下实现的时间戳的反签名方法允许在代码签名证书过期或吊销后进行签名验证。 时间戳使验证程序能够可靠地知道签名所贴的时间,从而信任签名(如果签名在当时有效)。 时间戳器应具有可靠且受保护的时间源。

一、PKCS #7 签名文档和反符号

PKCS #7 是加密数据的标准格式,包括签名数据、证书和 证书吊销列表 (CRL) 。 时间戳上下文中特定 PKCS #7 类型的兴趣是签名数据,对应于定义的 SignedData 内容类型的 PKCS #7。

PKCS #7 包由 SignedData 组成,用于标识实际内容及其特定信息以及 SignerInfo 签名块。 SignerInfo 本身可能包含计数器符号,递归方式是另一个 SignerInfo。 原则上,可能会存在一系列此类反签名。 countersignature 是与 SignerInfo 中的签名相关的未经身份验证的属性;也就是说,它可能会在原始签名后贴上。 在大纲窗体中:

1、SignedData (PKCS #7)

PKCS #7 的版本 (通常为版本 1)

DigestAlgorithms (SignerInfo 签名块使用的所有算法的集合,以便优化处理)

ContentInfo (contentType 等于 SignedData,以及内容或对内容) 的引用

可选证书 (收集使用的所有证书)

所有 CRL) 的可选 CRL (集合

SignerInfo 签名块 (实际签名,由一个或多个 SignerInfo 签名块组成)

2、SignerInfo (签名块)

PKCS #7 的版本 (通常为版本 1)

证书 (颁发者和序列号,用于在 SignedData) 中唯一标识签名者的证书

DigestAlgorithm 加上 DigestEncryptionAlgorithm 加上 Digest (哈希) ,以及 EncryptedDigest (实际签名)

OPTIONAL AuthenticatedAttributes (例如,此签名者)

可选 UnauthenticatedAttributes (例如,此签名者)

经过身份验证的属性的一个示例是签名时间 (OID 1.2.840.113549.1.9.5) ,因为它是时间戳服务签名的一部分。 未经身份验证的属性的一个示例是计数器签名 (OID 1.2.840.113549.1.9.6) ,因为它可以在签名后加贴。 在这种情况下,SignerInfo 本身包含 SignerInfo (Countersignature) 。

二、SignTool 和 Authenticode 进程

SignTool 可用于验证码签名和时间戳二进制数据。 该工具安装在 Microsoft Windows 软件开发工具包的 \Bin 文件夹中, (SDK) 安装路径。

使用 SignTool 对二进制数据进行签名和时间戳比较简单。 发布者必须从商业代码签名 CA 获取代码签名证书。 为方便起见,Microsoft 发布并更新公共 CA 列表,包括颁发 Authenticode 证书的 CA 列表。 准备好发布时,将使用带 SignTool 工具的相应命令行参数对对象文件进行签名和时间戳。 任何 SignTool 操作的结果始终为 PKCS #7 格式 的 SignedData。

SignTool 接受输入要签名的原始二进制数据和时间戳,或者将以前签名的二进制数据标记为时间戳。 以前签名的数据可以使用 signtool timestamp 命令来标记时间戳。

三、实现详细信息和线路格式

SignTool 依赖于 Windows Authenticode 实现来创建和时间戳签名。 Authenticode 对二进制文件(例如.cab、.exe、.dll或 .ocx)进行操作。 Authenticode 首先创建签名,生成 PKCS #7 SignedData。 这是必须反签名的 SignedData ,如 PKCS #9 中所述。

反签名过程采用四个步骤:

复制签名 (,即 PKCS #7 SignedData 的 SignerInfo 中的 encryptedDigest) 。

构造其内容为原始签名的时间戳请求。 将其发送到时间戳服务器 抽象语法表示法一 (ASN.1) 编码为 TimeStampRequest。

接收从时间戳服务器返回的第二个 PKCS #7 SignedData 格式的时间戳。

将 SignerInfo 从时间戳直接复制到原始 PKCS #7 SignedData 中,作为 PKCS #9 countersignature (即原始) 的 SignerInfo 中未经身份验证的属性。

最新资讯

为什么要停止使用RSA密钥交换?

什么是DNS-over-HTTPS.是如何工作的?

Apple macOS操作系统中存在三个致命漏洞

"此网站提供的安全证书不安全"的解决方法

Chrome浏览器中出现“安全连接”错误,该如何解决?

标签推荐:数字证书申请 | ssl证书验证失败 | https证书申请| 数字签名技术| 电子签名软件| ssl证书更新| 小程序证书| ca认证电子签名| 个人代码签名| 微软代码签名| 泛域名证书| java代码签名| 代码签名证书| https证书配置| PKI技术知识| SQL注入| openssl漏洞| 识别钓鱼网站