验证码数字签名

Authenticode 是一种 Microsoft 代码签名技术,用于标识验证码签名软件的发布者。 验证码还验证软件自签名和发布以来未被篡改。

验证码使用加密技术来验证发布者标识和代码完整性。 它将数字签名与受信任实体(包括证书颁发机构 (CA) )的基础结构相结合,以确保用户驱动程序源自指定的发布者。 验证码允许用户通过将数字签名中的证书链接到受信任的根证书来验证软件发布者的标识。

使用 Authenticode,软件发布者对驱动程序或 驱动程序包进行签名,使用 数字证书 对其进行标记,该证书可验证发布者的身份,并为代码接收方提供验证代码完整性的能力。 证书是标识软件发布者的一组数据。 只有在 CA 验证了软件发布者的身份后,CA 才会发布该证书。 证书数据包括发布者的公共加密密钥。 该证书通常是此类证书链的一部分,最终会引用 VeriSign 等知名 CA。

验证码代码签名不会更改驱动程序的可执行部分。 相反,它会执行以下操作:

  • 使用嵌入签名时,签名过程会将数字签名嵌入到驱动程序文件的非执行部分中。 有关此过程的详细信息,请参阅 驱动程序文件中的嵌入签名

  • 将数字签名的 目录文件 (.cat) ,签名过程需要从 驱动程序包中每个文件的内容生成文件哈希值。 此哈希值包含在目录文件中。 然后,使用嵌入的签名对目录文件进行签名。 这样,目录文件就是一种分离签名。

注意硬件认证工具包 (HCK) 具有适用于各种设备类型的测试类别。 可在 HLK API 参考中找到测试类别列表。 如果此列表中包含设备类型的测试类别,则软件发布者应获取驱动程序包WHQL 发布签名。但是,如果 HCK 没有设备类型的测试程序,则软件发布者可以使用 Microsoft Authenticode 技术对驱动程序包进行签名。 有关此过程的详细信息,请参阅 为公共版本签名驱动程序