validationGPG密钥签名的真实性

我试图validation我的httpd-2.2.17.tar.gz图像的完整性。
我遵循以下几页中所写的步骤:

  • http://httpd.apache.org/download.cgi#verify
  • http://httpd.apache.org/dev/verification.html#Validating

但是我得到了:

警告:此密钥未通过可信的签名authentication
gpg:没有迹象表明签名属于所有者。

我需要做什么来validation密钥的真实性?

通常的validation方法是联系密钥所有者,并要求他/她(通过电话或亲自)提供密钥指纹。 如果你有充分的理由相信你实际上正在与被密钥标识的人交谈,并且如果人提供的指纹与你拥有的密钥的指纹相匹配,那么你可以肯定你拥有所有者的真实公钥(和不是冒牌货人为冒充他人而设立的冒牌钥匙)。

一旦您validation了密钥的真实性令您满意,您应该使用您自己的私钥签署该公钥。 一旦你签署了密钥,你将不会再得到这些警告,因为通过签名,你已经表明你相信密钥是真实的。

文件validation有两个不同的目的:

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

  2. 保护免受MITM攻击 ,甚至在私人pgp密钥未被泄露的情况下甚至可以威胁到web服务器。

对于A来说,SHA-1,MD5等哈希函数更令人满意。 然而,使用更加现代的哈希值仍然被认为是密码学是没有害处的。

对于B,事情变得更加复杂。 对于初学者,您应该通过正确authentication的HTTPS (SSL)进行所有通信:

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

你运气好,阿帕奇提供这样的访问他们的网站。

现在让我们来评估一下哪些风险依然存在,哪些风险得到了缓解。 一个简单的MITM攻击不再是可能的。 然而,为了执行MITM攻击,攻击者可以:

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

    • 欺骗他们相信他们拥有这个网站并付款。
    • 欺骗浏览器接受他们作为一个CA(注意,有几个政府被包括在浏览器中作为CA ,而现有的CA可以委托他们收到的信任给第三方,没有任何通知,请参阅etisalat事件 )如果这样就会发现subCA做了一些不好的事情,CA拒绝撤销这个subCA,那么仍然有所有由CA合法authentication的网站,这就给浏览器造成了压力,要求他们继续信任CA.
    • 通过打破和窃取CA的私钥
    • 通过法律强制他们作出这样的certificate( 传票 )
  2. 窃取发送数据的服务器的私钥。

哇,这可能不完美,但想象一下,做这样的事情。 我敢打赌,你楼上的怪胎宝贝并不常常到此为止。 这大大提高了攻击者的酒吧。

此外,如果攻击者只是妥协网站的服务器,他们可以只是改变文件以及md5,sha1或其他散列以及它所服务的pgp密钥,因此不必做MITM-攻击。 最后一个选项是首选,因为进入服务器通常比获取证书更简单。

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

现在哈希是validation中的关键环节。 请注意, MD5已被打破 , SHA1正在发展中 。 从apache仍然提供这些安全的目的是不好的。 如果一切都失败了,并且两者都可用,请检查两者。 据我所知,还没有发现为两个文件产生相同的md5和sha1值的冲突攻击。

如果https不适用于给定的网站。 那么从该服务器向您提供的文件与网站上的散列(如果它位于同一服务器上)或pgp密钥或其他任何相同的文件一样安全。

超越https:

如果https不能满足您的安全需求( 实际上不应该 )或https不可用于网站,您可以做什么?

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

当你在你的钥匙圈中包含一个pgp密钥时,不一定知道这个密钥是否真的属于它附带的用户标识。 为了validation用户在validation彼此的身份之后签署对方的密钥,例如亲自见面或者打电话给他人。 进一步,你可以在你之间构build一个链接,如果你没有亲自validation他们,或者遇到了你遇到的人,或者他们遇到了一个人,

因此,当一个新的密钥进入你的密钥环,而且你的密钥环中已经被validation的其他密钥都没有签名这个密钥,并且你尝试使用它,gpg或者pgp会发出一个警告,就像浏览器给你一个警告if你冲浪到一个https网站谁的证书无法validation。

除了亲自签署密钥以validation它是合法的,如果您的一个完全可信的联系人签名,或者3个边缘信任的联系人签名,该软件可能会自动接受该密钥…这是依赖于实施/用户。 正如您的浏览器将默认接受任何SSL证书(如果它由已知可信的CA(通过您的浏览器)签名)。

这在实践中意味着什么? 那么,如果你处于极客世界的中间,这可能会给你一个合理的保护。 对于世界其他地方而言,这更像是一个没有汽油的monstertruck。

对普通人来说,pgp和信任网有一些相当大的问题:

  • 不正确地使用gpg和信任网断裂了它的安全
  • 正确使用它是困难的,复杂和免费的工具,如gnupg和它的前端毛茸茸的
  • 如果你或者另外一方在信任networking上没有扎根,那么validation密钥几乎是不可能的
  • 一个信任链实际上意味着你必须相信所有的人之间。 它越不安全。 如果说所有你的链接到apache签名密钥通过可能设置MITM攻击的同一个人,比pgp只是一个虚假的安全感。
  • Web of Trust可帮助当局像Facebook一样绘制您的社交networking地图。

但是,它不会受到https的某些限制,就像pgp不可能说服一家公司拿你的钱,给你一张愚弄整个世界的证书。 另一方面,对于大众来说,它的可用性却相当差。 它说明了简单性是安全性的关键决定因素。

总之,认识到HTTPS和PGP不是相互排斥是很重要的。 没有人阻止你试图尽可能地利用双方的能力。 应该认识到的是,任何安全链条都只能和最薄弱的环节一样强大。 说通过https下载的pgp密钥有pgp的弱点和https的弱点。 链条中的每一个环节都增加了它的弱点。

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

也可以看看:

  • 在任何地方使用 Firefox插件,可以让您的浏览器将您redirect到多个知名站点上的https。
  • 透视图 – 一个Firefox插件,可以让世界各地的电脑validation他们是否可以获得与网站相同的HTTPS证书。 请注意,您与这些“公证人”之间的stream量已签名但未encryption。 您因此公开地通知那些和潜在的窃听者您正在浏览的网站。
  • 如何正确部署HTTPS
  • 执法设备颠覆了SSL
  • 被证实的谎言:侦测和击败政府拦截SSL的拦截攻击