Windows脱机时如何进行驱动程序签名?

时间:2015-06-19 19:50:29

标签: windows cryptography driver signing certificate-authority

我了解签名的基本知识。您必须拥有来自信誉良好的证书颁发机构的私钥和证书(不一定)。然后,您必须拥有签名者的公钥以验证其完整性。

我可以看到这在线工作;站点被授予证书(不一定)来自信誉良好的证书颁发机构(例如Verisign),Firefox(例如)可以通过联系所述证书颁发机构来检查证书的真实性。

是的,我知道您可以使用自行生成的证书签名,但Firefox会在发生这种情况时抱怨,安装第三方驱动程序时也会抱怨。

我的问题是这样的; Windows如何知道驱动程序在信誉良好的证书颁发机构脱机时签名并且无法与所述信誉良好的证书颁发机构进行核对?

Windows是否在Windows中保留了信誉良好的证书颁发机构的公钥集合?是否能够改变此列表以加载驱动程序,就好像它具有信誉良好的证书颁发机构的证书一样?

驱动程序签名如何脱机工作?

1 个答案:

答案 0 :(得分:2)

是的,Windows保留了一组受信任的根证书。某些软件,如IE和Chrome,使用该集合;某些软件(如Firefox)附带自己的列表。这就是证书验证的工作原理;没有人通过互联网从CA获得根证书,因为你怎么知道你真的在和CA交谈?

您可以通过证书插件使用MMC查看Windows根证书存储区。请注意,除了全局(“计算机帐户”)商店外,每个用户帐户都有自己的证书存储区。

但是,Windows 使用该受信任证书列表进行驱动程序签名。相反,Windows内核具有内置的根证书列表。驱动程序的证书验证基于该内置列表,如果我理解正确,则完全由属于Microsoft的根证书组成。

When a driver is signed by a third-party certificate authority,使用cross-signed certificate

另一个复杂因素是,在大多数情况下,设备驱动程序以两种不同的方式进行加密验证;一次在安装期间,然后再次将驱动程序代码加载到内核中。安装期间的验证使用主根证书列表,并且可以由管理员根据具体情况进行覆盖;加载驱动程序代码时的验证使用内核的根证书列表,并且不能根据具体情况进行覆盖。