如何验证 Microsoft 签名

本文演示如何验证一个提交的 Microsoft 签名。

在几种情况下,你可能希望验证提交的 Microsoft 签名:

  • 你不确定某个驱动程序是否已被 Microsoft 签名,因此想检查一下。
  • 你有两个驱动程序,你需要确定哪一个是通过证明签名的,哪一个是在向仪表板提交 HLK/HCK 结果后签名的。

步骤 1:下载已签名的驱动程序文件

在此步骤中,会下载验证 Microsoft 签名时所需的签名文件。

注意

驱动程序提交文件夹位于包文件中。 这些文件由 Microsoft 签名。 合作伙伴无需对返回的有效负载进行签名。 Microsoft 总是会在批准提交后返回一个 .cat 文件。 如果合作伙伴包含自己的 .cat 文件。 Microsoft 会丢弃它并返回自己签名的 .cat 文件。 过去,Microsoft 仅对 .cat 文件进行签名。 从 Windows 10 开始,Microsoft 现在会对返回有效负载中的所有可移植可执行文件进行签名。 例如,.dll 文件也由 Microsoft 签名:

下载驱动程序签名文件:

  1. 查找硬件提交,该提交中包含要为其下载签名文件的驱动程序。
  2. 选择“专用产品 ID”以打开驱动程序详细信息。
  3. 在“驱动程序详细信息”页面上的“包和签名属性”下,选择“更多”
  4. 选择“下载签名文件”

步骤 2:检查增强型密钥用法 (EKU)

下载签名文件后,可以通过检查 EKU 来验证 Microsoft 签名。 EKU 属于 Microsoft 用于对提交进行签名的证书。

检查 EKU:

  1. 选择并按住(或右键单击).cat 文件。

  2. 选择“属性”,然后选择“数字签名”选项卡

  3. 选择证书名称,然后选择“详细信息”

  4. 在“详细信息”选项卡上,选择“增强型密钥用法”。 此处会显示证书的 EKU 和相应的 OID 值。 在此情况下,“Windows 硬件驱动程序验证 OID”会以 5 结尾,这意味着驱动程序未进行认证签名:

    Screenshot of EKU details pane for driver not signed for attestation. OID ends with 5.

  5. 如果驱动程序已通过证明签名,那么 OID 将以 1 结尾:

    Screenshot of EKU details pane for driver signed for attestation. OID ends with 1.