数字签名基于Microsoft公钥基础结构技术,该技术基于 Microsoft Authenticode 与受信任的证书颁发机构(CA)基础结构相结合。 Authenticode 基于行业标准,允许供应商或软件发布者使用 CA 颁发的代码签名数字证书对文件或文件集合(如驱动程序包)进行签名。
Windows 使用有效的数字签名来验证以下内容:
文件或文件集合已签名。
签名者受信任。
对签名者进行身份验证的证书颁发机构受信任。
文件集合在发布后未更改。
例如, 驱动程序包 的此签名过程涉及以下内容:
发布者从 CA 获取 X.509 数字证书 。 验证码证书也称为 签名证书。 签名证书是一组标识发布者的数据,仅在 CA 验证发布者的标识后由 CA 颁发。 CA 可以是Microsoft CA、第三方商业 CA 或企业 CA。
签名证书用于对驱动程序包的 目录文件 进行签名或在驱动程序文件中 嵌入签名 。 标识受信任发布者和受信任 CA 的证书安装在由 Windows 维护的 证书存储 中。
签名证书包括私钥和公钥,称为 密钥对。 私钥用于对 驱动程序包 的目录文件进行签名或在驱动程序文件中嵌入签名。 公钥用于验证驱动程序包目录文件的签名或嵌入在驱动程序文件中的签名。
若要对目录文件进行签名或将签名嵌入文件中,签名过程首先生成文件的加密哈希或 指纹。 然后,签名过程使用私钥加密文件指纹,并将指纹添加到该文件。
签名过程还会添加有关发布者和颁发签名证书的 CA 的信息。 数字签名被添加到文件中的一个部分,该部分在生成文件指纹时不会被处理。
若要验证文件的数字签名,Windows 会提取有关发布者和 CA 的信息,并使用公钥解密加密的文件指纹。
仅当以下内容为 true 时,Windows 才接受文件的完整性和发布者的真实性:
- 解密的指纹与文件的指纹匹配。
- 发布者的证书安装在 受信任的发布者证书存储中。
- 颁发发布者证书的 CA 的根证书安装在 受信任的根证书颁发机构证书存储中。
有关即插即用(PnP)设备安装如何使用 驱动程序包目录文件的数字签名的详细信息,请参阅 数字签名和 PnP 设备安装。