2

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

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

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

我的问题是这样的;当驱动程序处于脱机状态并且无法与所述信誉良好的证书颁发机构核对时,Windows 如何知道它是由信誉良好的证书颁发机构签署的?

Windows 是否在 Windows 中保留了一组来自信誉良好的证书颁发机构的公钥?难道不能改变这个列表来加载一个驱动程序,就好像它有一个有信誉的证书颁发机构的证书一样?

驱动程序签名如何离线工作?

4

1 回答 1

2

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

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

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

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

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

于 2015-06-20T01:44:17.647 回答