本指南由 WoSign 根据微软网站上有关资料翻译和整理,请同时参考微软网站以下英文原文:
• 内核模式驱动签名要求小结: http://www.microsoft.com/whdc/winlogo/drvsign/drvsign_perOS.mspx
• Windows 驱动签名要求: http://www.microsoft.com/whdc/winlogo/drvsign/drvsign.mspx
• Windows Vista x64 位系统的内核模式数字签名: http://www.microsoft.com/whdc/system/platform/64bit/kmsigning.mspx
• Windows Vista 内核模式签名指南: http://www.microsoft.com/whdc/winlogo/drvsign/kmcs_walkthrough.mspx
• Windows Vista 即插即用设备 (PnP) 驱动签名指南: http://www.microsoft.com/whdc/winlogo/drvsign/pnp-driver.mspx
• Windows Vista 内核模式签名交叉证书使用指南: http://www.microsoft.com/whdc/winlogo/drvsign/crosscert.mspx
• Windows Vista PMP 签名指南: http://www.microsoft.com/whdc/winlogo/drvsign/Pmp-sign.mspx
• Windows 系列操作系统驱动签名基础知识: http://www.microsoft.com/whdc/winlogo/drvsign/best_practices.mspx
并请同时参考:微软徽标认证常见问题问答: http://www.wotrust.com/FAQ/Designed_for_Windows_Logo_FAQ.htm
对于电脑硬件设备制造商或相关软件开发商的 CTO/CSO 以及相关工程师的确有必要仔细阅读以上 8 个文档,非常重要的,只可惜微软没有提供相应的中文文档。但鉴于 WoSign 收到许多用户的有关驱动签名咨询,认为有必要简单总结一下有关驱动签名和相关代码签名证书如何选购的文档,由于时间和专业所限,本指南仅供参考,以微软网站上的文档为准。
一、Windows 驱动代码签名证书选购指南
从以上微软文档可以看出:为了 Windows 操作系统的稳定和安全,没有签名的驱动是不允许运行的。所以,硬件厂商和相关软件开发商都需要申请相关的代码签名证书来数字签名其驱动代码。但不同的驱动类型对证书的要求是不同的,具体总结如下:
(1) 如果您希望 Windows Vista 直接允许安装驱动程序而没有任何警告,并且 Windows 会自动更新您的最新的硬件驱动软件,则您一定要申请微软徽标认证,使用 WHQL 签名。而申请微软徽标认证,首先则需要购买 VeriSign 微软徽标认证证书 或 购买 WoSign 微软代码签名证书(请事先联系微软,确认WoSign 微软代码签名证书是否可以用于您的硬件驱动和应用软件。WoSign 有详细联系信息,欢迎咨询);
(2) 如果您希望签名内核模式驱动(X64),但不想申请微软徽标认证,则只能申请 VeriSign 微软代码签名证书 ,请注意:请参考:VeriSign 微软代码签名证书使用指南,签名时是必须使用 Windows SDK 或 WDK 中指定签名工具签名,同时需要使用微软签发给 VeriSign 的交叉认证 根证书 的;
(3) 如果您希望签名即插即用驱动(x86),您可以申请 VeriSign 微软代码签名证书,或 WoSign 微软代码签名证书 ,前者贵些,但可能通用性好些;推荐用户选购 WoSign 微软签名证书,如果不能正常签名您的硬件驱动,可以在 28 天内取消定单退款;
(4) 如果您生产的电脑设备为不需要驱动的通用设备(如:键盘和鼠标等),但希望申请微软徽标认证来提升产品竞争和拓展全球市场,则您 VeriSign 微软徽标认证证书 或 购买 WoSign 微软代码签名证书(请事先联系微软,确认WoSign 微软代码签名证书是否可以用于您的硬件驱动和应用软件。WoSign 有详细联系信息,欢迎咨询)。
二、驱动签名基础知识
为了确保 Windows 操作系统的稳定和用户的安全,微软的策略是逐步实现所有硬件驱动的数字签名,以便用户在反馈硬件故障时能准确识别硬件的制造商,并及时通知相关制造商改进。
驱动签名的目的有两个:一是确保驱动代码没有被非法篡改,二是确保驱动代码的来源可信 ( 驱动开发商身份已经通过权威的第三方验证 ) ,从而保护了驱动代码的完整性、保护了用户不会被病毒、恶意代码和间谍软件所侵害。
请注意区分:硬件驱动签名与硬件徽标认证,前者是出于系统安全考虑,而后者则着重于市场推广。当然,通过徽标认证一定是已经签名的,而并非所有硬件签名都需要通过徽标认证。当然,要申请徽标认证,首先要申请徽标认证证书来证明制造商的身份和提交已经签名的驱动。
三、 微软操作系统硬件驱动数字签名要求一览表
鉴于微软操作系统种类和版本繁多,不同的系统对硬件签名的要求也不同。本表仅针对内核模式即插即用设备的驱动 (K ernel-mode Plug and Play drivers ) ,操作系统包括 Windows 2000 、 XP 、 2003 Server 和 Vista 。
| 没有签名 | 自签证书签名 | 有效代码签名 | 徽标认证签名 |
Windows Vista | 管理员用户有警告,普通用户不允许安装 *5 | 管理员用户有警告,普通用户不允许安装 *5 | 取决于管理员的信任级别设定 (有警告或没有警告) *7 | 没有任何警告 *9 |
Windows Vista | 只允许在测试机上安装 *6 | 只允许在测试机上安装 *6 | 取决于管理员的信任级别设定 (有警告或没有警告) *7,*8 | 没有任何警告 *9 |
Windows | 安装之前有警告 *2
| 安装之前有警告 *2
| 安装之前有警告 *2
| 没有任何警告 *9 |
Windows XP - x86 | 安装之前有警告 *2,*3 | 安装之前有警告 *2,*3
| 安装之前有警告 *2,*3
| 没有任何警告 *9 |
Windows XP x64 和 Windows 2003 Server | 安装之前有警告 *2,*4 | 安装之前有警告 *4 | 取决于管理员的信任级别设定 (有警告或没有警告) *7 | 没有任何警告 *9 |
注 *1 :仅针对即插即用的驱动,如果是非即插即用的驱动,请参考其他相关文档;
注 *2 :缺省情况下,系统会警告普通用户和管理员用户建议取消安装。系统管理员可以修改缺省设置为不允许或允许没有签名或自签的驱动;
注 *3 :可以使用 DifX 工具来安装没有签名或自签的驱动;
注 *4 :不可以使用 DifX 工具来安装没有签名或自签的驱动;
注 *5 :只允许管理员用户在 Windows Vista - x86 上 用户安装没有签名或自签的驱动;
注 *6 :没有签名或自签的驱动只能用于 x-64 位测试机,没有签名或自签的驱动是不允许在其他 x-64 位操作系统上安装的 ( 即使是系统管理员用户也不允许 ) ;
注 *7 :请参见如下文档“ Windows Vista 驱动签名其他要求”;
注 *8 :不仅需要签名,同时还需要使用交叉认证的证书签名; Boot-start 驱动必须 embedded signed ,同时还要签 catalog 文件;
注 *9 :系统信任徽标认证签名的驱动,无论是系统管理员用户还是普通用户安装都是没有任何警告的。
注:相关术语
* Boot-start 驱动:指在系统启动过程中调入的驱动程序;
* 有效代码签名:指 Windows 所信任的根证书颁发的代码签名证书的签名
* 自签证书签名:指签名使用的证书并不是 Windows 所信任的根证书颁发的代码签名证书的签名,如:使用开发工具中的 MakeCert 工具创建的签名证书;
* 交叉认证证书签名:指签名时不仅要使用 Windows 所信任的根证书颁发的代码签名证书,还要使用微软签发给这些根证书颁发机构的交叉证书一起签名;
* PMP 签名:指用于用户模式 (User-mode) 下 PMP 有关驱动签名;内核模式并不需要此类签名;
* embedded-signed(内嵌签名) :指驱动中的二进制文件的签名
四、 Windows Vista 具体签名要求
Windows Vista 驱动签名要求主要根据是否为 即插即用驱动和安装在 x86 还是 x64 操作系统上而不同,具体总结如下:
1. 即插即用驱动 (Plug and Play Driver )
即插即用 (PnP) 驱动的安装取决于是否已经签名,如果已经签名,则取决于管理员的信任级别设定。普通用户是可以安装以下列表中的前两类驱动,而只有管理员用户才可以选择是否安装以下列表中的后两类驱动,普通用户是不允许安装后两类驱动的。
(1) 徽标认证签名的驱动:所有用户都允许安装,没有任何警告;
(2) 受信任的发行者签名的驱动:所有用户都允许安装,没有任何警告;此发行者必须在“受信任的发行者”中列出;
(3) 受信任的代码签名证书签名的驱动:有警告,仅允许管理员用户选择是否安装,并可以添加发行者名称到“受 信任的发行者 ”中,以便普通用户也可以安装;
(4) 没有签名或驱动程序被篡改的驱动:有警告,仅允许管理员用户选择是否安装。主要包括:
* 驱动包中未含有已经签名的目录文件 (catalog file); 已经签名但签名证书不是 Windows 所信任的根证书颁发的;或签名不正确;
* 已经签名的文件已经被篡改,使得签名无效。
当一个新的即插即用设备被安装时,系统会选择最合适的驱动,即根据签名打分的高低来决定,优先选择分数高的驱动,具体排名如下:
(1) 有微软签名的,包括:
* 优先级别 (Premium) 和标准级别 (Standrd) 的 WHQL 签名;
* Inbox 驱动签名 ( Signatures for inbox drivers ) ;
* 可靠驱动签名 (DRS, Driver Reliability Signature);
* SE 签名 (Windows Sustained Engineering);
* 老版本 Windows 的 WHQL 签名;
(2) 有效代码签名,系统管理员可以设定安全策略来指定受信任的根证书颁发的微软代码签名证书的签名等同于微软签名;
(3) 没有签名的驱动,但 INF DDInstall 中有 .nt 文件;
(4) 没有签名的驱动,但 INF DDInstall 中没有 .nt 文件;
(5) 没有签名或签名有问题而无法确认是否有签名的驱动。
2. 下一代多媒体 (Next Generation Media)
Windows Vista 允许获得 AACS 许可 ( Advanced Access Content System ) 的下一代多媒体格式 ( 如: HD DVD) 和其他格式的回放 (Playback) 。为了能访问这些格式的文件,系统和硬件提供商必须满足如下代码签名要求:
(1) Windows 会列出所有未签名的设备,由 ISV( 独立软件开发商 ) 决定是否使用此设备;
(2) PMP 签名 ( Protected Media Path ) 不同于内核模式签名,虽然内核模式硬件并不要求 PMP 签名,但当安装包使用 PMP-PE 证书签名后, Windows Vista 会认为此内核模式的驱动时可信任的;
(3) 非即插即用的用户模式驱动在 PMP 方式下也必须签名,而普通的非即插即用的用户模式驱动只是推荐而不是必须,用户模式驱动可以只签名二进制文件或签名目录文件;
(4) 显示设备必须签名二进制文件 (embedded signed) ,以便与视频处理引擎的可靠通信。
3. Windows Vista – 64 位
对于 64 位的 Windows Vista ,有更严格的签名要求:
(1) Boot-start 驱动必须签名目录文件和所有二进制文件;
(2) 自签证书或非 Windows 信任的根证书颁发的代码签名证书只能用于测试机;
(3) 未签名的驱动只能用于测试机 ( 启动时按 F8) ;
(4) 非即插即用驱动必须签名二进制或目录文件,并且必须使用微软指定的证书颁发机构颁发的微软代码签名证书,而且签名时还要使用微软颁发的相应的交叉证书。
请同时参考: