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

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

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

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

我的问题就是这样。 Windows如何知道驱动程序在离线时由信誉良好的证书颁发机构签名,并且无法使用所述信誉良好的证书颁发机构进行检查?

Windows是否在Windows中保存来自信誉良好的证书颁发机构的公钥? 难道没有人能够修改这个列表来加载驱动程序,就好像它拥有信誉良好的证书颁发机构的证书一样吗?

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

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

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

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

当驱动程序由第三方认证机构 签名时 ,使用交叉签名证书 。

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