数字签名

数字签名基于 Microsoft 公钥基础结构技术,该技术基于 Microsoft Authenticode ,并结合受信任的证书颁发机构的基础结构 (CA) 。 Authenticode 基于行业标准,允许供应商或软件发布者使用 CA 颁发的代码签名数字证书对文件或文件集合 ((例如驱动程序包) )进行签名。

Windows 使用有效的数字签名来验证以下内容:

  • 文件或文件集合已签名。

  • 签名者受信任。

  • 对签名者进行身份验证的证书颁发机构是受信任的。

  • 文件集合在发布后未更改。

例如, 驱动程序包 的此签名过程涉及以下内容:

  • 发布者从 CA 获取 X.509 数字证书 。 Authenticode 证书也称为 签名证书。 签名证书是一组标识发布者的数据,仅在 CA 验证发布者身份后,CA 才会颁发。 CA 可以是 Microsoft CA、第三方商业 CA 或企业 CA。

    签名证书用于对驱动程序包的 目录文件 进行签名或在驱动程序文件中 嵌入签名 。 标识受信任发布者和受信任 CA 的证书安装在由 Windows 维护的 证书存储 中。

  • 签名证书包括私钥和公钥,称为 密钥对。 私钥用于对 驱动程序包 的目录文件进行签名或在驱动程序文件中嵌入签名。 公钥用于验证驱动程序包的目录文件的签名或嵌入在驱动程序文件中的签名。

  • 若要对目录文件进行签名或在文件中嵌入签名,签名过程首先会生成文件的加密哈希或 指纹。 然后,签名过程使用私钥加密文件指纹,并将指纹添加到文件。

    签名过程还会添加有关发布者和颁发签名证书的 CA 的信息。 数字签名将添加到文件中的一部分,在生成文件指纹时不会处理该文件。

  • 为了验证文件的数字签名,Windows 提取有关发布者和 CA 的信息,并使用公钥解密加密的文件指纹。

    仅当满足以下条件时,Windows 才接受文件的完整性和发布者的真实性:

有关 即插即用 (PnP) 设备安装如何使用驱动程序包目录文件的数字签名的详细信息,请参阅数字签名和 PnP 设备安装

有关 Microsoft 公钥基础结构技术、代码签名和数字签名的详细信息,请参阅 代码签名代码签名最佳做法简介。