我试图validation我的httpd-2.2.17.tar.gz图像的完整性。
我遵循以下几页中所写的步骤:
但是我得到了:
警告:此密钥未通过可信的签名authentication!
gpg:没有迹象表明签名属于所有者。
我需要做什么来validation密钥的真实性?
通常的validation方法是联系密钥所有者,并要求他/她(通过电话或亲自)提供密钥指纹。 如果你有充分的理由相信你实际上正在与被密钥标识的人交谈,并且如果人提供的指纹与你拥有的密钥的指纹相匹配,那么你可以肯定你拥有所有者的真实公钥(和不是冒牌货人为冒充他人而设立的冒牌钥匙)。
一旦您validation了密钥的真实性令您满意,您应该使用您自己的私钥签署该公钥。 一旦你签署了密钥,你将不会再得到这些警告,因为通过签名,你已经表明你相信密钥是真实的。
文件validation有两个不同的目的:
A.在下载过程中防止意外损坏
保护免受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攻击,攻击者可以:
通过以下方式从证书颁发机构获取本网站的证书 :
窃取发送数据的服务器的私钥。
哇,这可能不完美,但想象一下,做这样的事情。 我敢打赌,你楼上的怪胎宝贝并不常常到此为止。 这大大提高了攻击者的酒吧。
此外,如果攻击者只是妥协网站的服务器,他们可以只是改变文件以及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和信任网有一些相当大的问题:
但是,它不会受到https的某些限制,就像pgp不可能说服一家公司拿你的钱,给你一张愚弄整个世界的证书。 另一方面,对于大众来说,它的可用性却相当差。 它说明了简单性是安全性的关键决定因素。
总之,认识到HTTPS和PGP不是相互排斥是很重要的。 没有人阻止你试图尽可能地利用双方的能力。 应该认识到的是,任何安全链条都只能和最薄弱的环节一样强大。 说通过https下载的pgp密钥有pgp的弱点和https的弱点。 链条中的每一个环节都增加了它的弱点。
当我发现他们时,我将继续添加有趣的链接到这个答案。
也可以看看: