为 WBDI 驱动程序签名
WBDI 驱动程序的特定代码签名要求取决于 WBDI 驱动程序是使用用户模式驱动程序框架 (UMDF)、内核模式驱动程序框架 (KMDF) 还是 Windows 驱动程序模型 (WDM) 实现的。 除了需要签名的目录文件外,还需要使用特定属性对某些 dll 进行签名。 有关详细信息,请参阅提交指纹驱动程序的步骤。
所有 WBDI 驱动程序包都必须通过 WHQL 门户进行签名,以确保它未被篡改。 无论驱动程序是在内核模式下还是在用户模式下运行,都需要此类签名。 无需对包中的每个单个文件进行签名。 而是创建一个目录文件,其中包含包中每个文件的哈希值,并对目录文件进行签名。 INF 中的 CatalogFile 指令指示此文件的名称。 对于大多数 WBDI 驱动程序,目录文件签名是唯一需要的签名类型。
对于某些 WBDI 驱动程序,需要多个签名。 内核模式启动驱动程序是 Windows 加载程序在启动过程中加载的驱动程序,需要在 x86 和 x64 平台上添加额外的嵌入式签名。 因此,通常必须采用两种方式对启动启动驱动程序进行签名:
- 使用 INF 安装的启动驱动程序包必须具有已签名的目录文件,就像其他类型的驱动程序一样。 在安装过程中,目录文件用于签名验证。
- 启动驱动程序的二进制文件必须使用具有相应跨证书的 SPC 进行嵌入式签名。 跨证书由 CA(称为受信任根)颁发,该 CA 对另一个 CA 的根证书的公钥进行签名,该证书将创建从单个受信任的根 CA 到多个其他 CA 的信任链。
创建包的目录文件并对其进行签名后,通常对驱动程序二进制文件进行嵌入式签名。
启动驱动程序具有以下特征:
- 驱动程序的 INF 将开始类型指定为“Start=0”。
- 内核服务配置了内核驱动程序或文件系统驱动程序的 ServiceType,并将 StartMode 设置为“boot”。
本主题不介绍驱动程序签名要求或过程的详细信息。 有关驱动程序签名要求的一般信息,请参阅驱动程序签名。