微软对驱动程序的签名要求主要包括以下几个方面:
一、证书要求
必须使用EV证书:
驱动程序必须使用扩展验证(EV)代码签名证书进行签名。EV证书相对于标准代码签名证书具有更高的安全性和可信度,因为它经过了更加严格的身份验证过程。
证书的有效性与关联:
用于签名的EV证书在提交时必须处于有效状态,且未过期。
硬件开发人员中心仪表板账户可以关联任意数量的证书(包括EV证书和标准证书),但每个提交的驱动程序必须使用其中一个有效证书进行签名。
二、签名过程要求
采用SHA2算法:
所有用于签名的证书都必须采用SHA2算法,通常使用/fd sha256 SignTool命令行开关进行签名。
签名文件的要求:
驱动程序文件夹的名称不能包含特殊字符,不能使用UNC文件共享路径,且长度应少于40个字符。
三、测试与认证要求
HLK/HCK测试:
建议驱动程序通过Windows硬件质量实验室(WHQL)的测试,即HLK(或旧版的HCK)测试。这证明了驱动程序经过了制造商的严格测试,并满足了微软在可靠性、安全性、功率效率、易维护性和性能方面的要求。
通过HLK测试的驱动程序可以获得微软的签名和认证,适用于Windows Vista及更高版本(包括Windows Server版本)。
鉴别签名:
仅用于测试目的的驱动程序可以进行鉴别签名,而无需进行HLK测试。但鉴别签名的驱动程序不能发布到面向零售用户的Windows更新。
鉴别签名仅适用于Windows 10桌面版和更高版本的Windows,且需要使用EV证书进行签名。
四、发布与兼容性要求
发布要求:
若要将驱动程序发布到面向零售受众的Windows更新,则必须通过Windows硬件兼容性计划(WHCP)提交该驱动程序。
兼容性要求:
驱动程序必须兼容所支持的Windows版本,并经过相应的测试验证。
五、其他要求
企业策略:
企业可以使用Windows 10企业版版本实施策略来修改驱动程序签名要求,例如通过Windows Defender应用程序控制(WDAC)定义自定义签名要求。
UEFI安全启动:
如果设备启用了UEFI安全启动,则驱动程序必须经过签名才能被加载。
综上所述,微软对驱动程序的签名要求涵盖了证书类型、签名过程、测试与认证、发布与兼容性以及其他相关方面。这些要求确保了驱动程序的合法性、安全性和兼容性,为用户提供了更好的Windows体验。开发者在提交驱动程序进行签名之前,应仔细了解并遵守这些要求。