GnuPG 如何信任 keyserver.ubuntu.com?

Rob*_*low 6 encryption gnupg keyserver

我了解任何 OpenPGP 证书的有效性都基于该证书由信任网络中的受信任方验证。

然而,对于大多数不是每天都使用 GnuPG 的人来说,他们只会从keyserver.ubuntu.com一次获得他们的密钥,并相信他们是准确的。例如,当遵循Ubuntu.com 上的“如何验证”指南时:

gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092" "C598 6B4F 1257 FFA8 6632 CBA7 4618 1433 FBB7 5451"
Run Code Online (Sandbox Code Playgroud)

尽管这种通信将通过普通未加密的 HTTP发生,但我相信我们从密钥服务器取回的证书将由密钥服务器本身签名,因此只要我们知道密钥服务器的可信证书,我们就可以信任响应。

但是,基于只运行一次这个命令,我们如何信任密钥服务器,因为我不相信 GnuPG 会创建一个trustdb文件呢?GnuPG 是否有它信任的内置证书列表,其中包括keyserver.ubuntu.com? 如果是这样,我怎样才能找到这个列表来检查情况是否如此?

在这种情况下信任列表中,岂不是可能由同一人在这方面的中间人(MITM)被截获所有的通信,那么谁可以喂我从一个假证书keyserver.ubuntu.com在同一时间给我一个伪造的签名包(例如操作系统 ISO 本身)?

Jen*_*rat 4

接收密钥的参数是两个密钥的完整指纹:

  • 8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092
  • C598 6B4F 1257 FFA8 6632 CBA7 4618 1433 FBB7 5451

指纹是根据公钥计算的(如果您需要更多参考,我在超级用户上讨论了 OpenPGP 密钥 ID )。如果接收到的密钥的计算指纹与请求的指纹不匹配,GnuPG 将意识到返回了错误的密钥。换句话说:您可能不信任密钥服务器(它们由随机个人操作,很可能具有恶意目标),但您不必这样做,从密钥服务器收到的所有信息都必须经过验证。可能的指纹范围非常非常大:找到冲突(另一个密钥的相同指纹)是不可行的,即使您拥有像国家安全局这样的机构那样的强大计算能力)。不过,不要相信短密钥 ID。

出于同样的原因,在搜索邮件收件人或用户 ID 时,您可能不信任密钥服务器的结果。密钥服务器操作员不仅可以返回恶意信息,而且密钥服务器根本不验证任何内容(每个人都可以上传任意邮件地址的密钥)。您始终必须自己验证密钥。GnuPG 中没有默认信任的密钥,甚至 GnuPG 维护者的密钥也是如此。如果您信任列出 Ubuntu 密钥指纹的来源,您可以对它们进行签名,以使 GnuPG 知道您验证了这些密钥。

还有HKPS(HKP over HTTPs),但是考虑到缺少关键服务器信息的验证,这并没有改变任何东西;HKPS 的引入只是为了让中间人无法记录您从密钥服务器检索到的密钥。

  • 好的,我们将密钥 ID 传递给 gpg,它会验证它是否与 keyserver.ubuntu.com 上的密钥 ID 匹配。因此,大概这意味着在遵循 http://www.ubuntu.com/download/how-to-verify 指南的特定用例中,您实际上根本无法可靠地验证 ISO,因为您从未加密的页面复制指纹。 (2认同)