验证码数字签名
Authenticode 是一种 Microsoft 代码签名技术,用于标识 Authenticode 签名软件的发布者。 验证码还验证软件自签名和发布以来是否未被篡改。
验证码使用加密技术来验证发布者标识和代码完整性。 它将数字签名与受信任实体的基础结构(包括证书颁发机构 (CA) ,以确保用户驱动程序源自所说明的发布者。 验证码允许用户通过将数字签名中的证书链接至受信任的根证书来验证软件发布者的身份。
软件发布者使用 Authenticode 对驱动程序或驱动程序包进行签名,使用数字证书进行标记,该证书可验证发布者的身份,同时为代码的接收者提供验证代码完整性的能力。 证书是标识软件发布者的一组数据。 只有在该颁发机构验证了软件发布者的标识后,CA 才颁发该证书。 证书数据包括发布者的公共加密密钥。 证书通常是此类证书链的一部分,最终引用了已知 CA,如 VeriSign。
验证码签名不会更改驱动程序的可执行部分。 相反,它会执行以下操作:
使用嵌入式签名时,签名过程在驱动程序文件的"非执行"部分中嵌入数字签名。 有关此过程的信息,请参阅 驱动程序文件中嵌入的签名。
使用 .cat (数字签名的目录) ,签名过程需要从驱动程序包中每个文件的内容生成文件哈希值。 此哈希值包含在目录文件中。 然后,使用嵌入的签名对目录文件进行签名。 这样,目录文件就是一种分离签名。
注意 硬件 认证工具包 (HCK) 具有各种设备类型的测试类别。 可以在 HLK API 参考找到测试类别列表。 如果此列表中包含设备类型的测试类别,则软件发布者应获取驱动程序包的 WHQL 发布签名。但是,如果 HCK 没有设备类型的测试程序,则软件发布者可以使用 Microsoft Authenticode 技术对驱动程序包进行签名。 有关此过程详细信息,请参阅 为公共发布签名驱动程序。