验证 GPG 密钥签名的真实性

Dor*_*Dor 2 authentication gpg keys

我正在尝试验证我的httpd-2.2.17.tar.gz图像的完整性。
我按照以下页面中写的步骤操作:

但我得到了:

警告:此密钥未经可信签名认证!
gpg:没有迹象表明签名属于所有者。

我需要做什么才能验证密钥的真实性?

小智 5

文件验证有两个不同的目的:

  1. A. 防止下载过程中意外损坏

  2. 以防止MITM 攻击,如果私有 pgp 密钥没有被泄露,甚至网络服务器被泄露。

对于 A,像 SHA-1、MD5、... 这样的散列函数是非常令人满意的。然而,使用仍然被认为是加密的更现代的哈希不会有什么坏处。

对于 B 来说,事情变得非常复杂。首先,您应该通过正确认证的HTTPS (SSL)进行所有通信:

https://httpd.apache.org/download.cgi#verify
https://httpd.apache.org/dev/verification.html#Validating
https://www.apache.org/dist/httpd/KEYS

你很幸运,apache 确实提供了对他们网站的访问。

现在让我们评估哪些风险仍然存在,哪些风险已经得到缓解。不再可能进行简单的 MITM 攻击。然而,为了仍然执行 MITM 攻击,攻击者可以:

  1. 通过以下方式从证书颁发机构获取此网站的证书

    • 诱使他们相信他们拥有这个网站并付钱给他们。
    • 欺骗浏览器接受它们作为 CA(请注意,浏览器中包含多个政府作为 CA,并且现有 CA 可以将他们收到的信任委托给第三方而无需任何通知,请参阅etisalat 事件) subCA 做了一些坏事,CA 拒绝撤销这个 subCA,那么仍然存在所有由 CA 合法认证的网站,这给浏览器带来了继续信任 CA 的压力。
    • 通过闯入并窃取 CA 的私钥
    • 通过法律强制他们出具这样的证明(传票
  2. 窃取发送数据的服务器的私钥。

哇,这可能并不完美,但想象一下必须做这样的事情。我敢打赌你楼上的极客小兄弟不会经常想到这一点。它大大提高了攻击者的门槛。

此外,如果攻击者可以破坏网站的服务器,他们可以只更改文件以及 md5、sha1 或其他哈希值以及它所服务的 pgp 密钥,因此不必执行 MITM-攻击。到目前为止,最后一个选项是首选,因为进入服务器通常比获取证书更简单。

请注意,有时哈希值和下载的文件不是从同一位置提供的。这本身就很好。这会使攻击者的工作复杂化。所以,假设我有一个 https 认证的网站,你提供一些文件供下载。我可能会提出将这些文件的哈希值放在我的网站上以帮助您。或者在 apache 的情况下,实际下载是在没有 https 的镜像上。

现在哈希值是验证中的关键环节。请注意,MD5 已损坏SHA1 正在开发中。出于安全目的,Apache 仍然提供这些是不好的。如果所有其他方法都失败并且它们都可用,请检查它们。据我所知,尚未发现为两个文件产生相同 md5 和 sha1 值的碰撞攻击。

如果给定站点的 https 不可用怎么办。好吧,从该服务器提供给您的文件与网站上的散列(如果它在同一台服务器上)或 pgp 密钥或其他任何相关内容一样安全。

超越https:

如果 https 不能满足您对安全性的需求(实际上它不应该)或网站无法使用 https,您能做什么?

如果您可以从签名者那里获得合法的公钥,那么使用 pgp 密钥来验证签名可能允许您验证文件。PGP 使用称为Web of Trust的系统来验证其密钥,而不是 HTTPS 中使用的中央证书颁发机构。

当您在密钥环中包含 pgp 密钥时,不一定知道该密钥是否真的属于它附带的用户 ID。为了能够验证这一点,用户在验证彼此的身份后签署彼此的密钥,例如亲自会面或致电该人。此外,如果您尚未亲自验证它们但您遇到的某个人验证过,或者他们遇到了这样做的人,则可以在您之间构建一条链并说出 apache 签名密钥。

因此,当一个新密钥进入您的密钥环时,并且您的密钥环中已经验证的其他密钥均未对该密钥进行签名并且您尝试使用它时,gpg 或 pgp 将发出警告,就像浏览器在以下情况下向您发出警告一样您浏览到无法验证证书的 https 网站。

除了自己签署密钥以验证它是否合法之外,如果您完全信任的联系人之一签署了它,或者 3 个边缘信任的联系人签署了它,软件可能会自动将其接受为有效......这取决于实现/用户。就像您的浏览器将静默接受任何 SSL 证书一样,如果它由已知受信任的 CA 签名(即由您的浏览器)。

这一切在实践中意味着什么?好吧,如果您处于极客知道极客世界的中间,这可能会为您提供合理的保护。对于世界其他地方,它更像是一辆没有汽油的怪物卡车。

对于普通人来说 pgp 和 web of trust 有一些相当大的问题:

  • 不当使用 gpg 和信任网络会破坏其安全性
  • 正确使用它是困难的、复杂的和免费的工具,比如 gnupg,而且它的前端很粗糙
  • 如果您或另一方没有很好地锚定在信任网络中,则几乎不可能验证密钥
  • 信任链实际上意味着您必须信任中间的所有人。时间越长越不安全。如果说所有指向 apache 签名密钥的链接都通过可能设置 MITM 攻击的同一个人,那么 pgp 只会提供虚假的安全感。
  • Web of Trust 可帮助当局像 Facebook 一样绘制您的社交网络地图。

然而,它不受 https 的某些限制的影响,就像 pgp 不可能说服一家公司拿走你的钱并给你一张可以愚弄整个世界的证书。另一方面,它对普通大众的使用要少得多。它说明了简单性是安全性的关键决定因素。

总之,重要的是要认识到 HTTPS 和 PGP 并不相互排斥。没有人会阻止您尽最大努力尝试使用两者。人们应该意识到的是,任何安全链的强度都取决于最薄弱的环节。说一个通过https下载的pgp密钥,既有pgp的弱点,又有https的弱点。链条中的每个环节都会在结果中增加其弱点。

当我发现它们时,我会继续添加有趣的链接到这个答案。

也可以看看: