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