设为首页收藏本站

安而遇随-随遇而安

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2220|回复: 0

深度:为什么Google急着杀死加密算法SHA-1

[复制链接]

 成长值: 50870

发表于 2014-9-9 01:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
<p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;"> hashing-650.png </p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;">哈希算法的希尔伯特曲线图(由Ian Boyd提供)</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><span style="color: rgb(0, 176, 80);">Google官方博客宣布,将在Chrome浏览器中逐渐降低SHA-1证书的安全指示。但有意思的是Google.com目前使用的也是SHA-1签名的证书,但证书将在3个月内过期,Google将从2015年起使用SHA-2签名的证书。SHA-1算法目前尚未发现严重的弱点,但伪造证书所需费用正越来越低。</span></p><h1 style="margin-top: 15px; font-size: 13px; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; line-height: normal;"><span style="color: rgb(38, 38, 38);"><strong><span style="font-size: 18px;">概述</span></strong></span></h1><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">大部分安全的网站正在使用一个不安全的算法,Google刚刚宣称这将是一个长周期的紧急情况。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">大约90%采用SSL加密<img src="http://image.3001.net/images/20140920/14112182752966.png!small" title="4.png" width="70" height="15" border="0" hspace="0" vspace="0" style="margin: 3px; padding: 3px; border: 0px; width: 70px; height: 15px;">的网站使用SHA-1算法来防止自己的身份被冒充。当你去访问网址<img data-original="http://image.3001.net/images/20140920/14112182705158.png!small" src="http://image.3001.net/images/20140920/14112182705158.png!small" title="2.png" width="174" height="15" border="0" hspace="0" vspace="0" style="margin: 3px; padding: 3px; border: 0px; width: 174px; height: 15px; display: inline;">时,保证了你正在访问的确实是正品Facebook,而不是把自己的密码发送给攻击者。然而不幸的是,SHA-1算法是非常脆弱的,长期以来都是如此。该算法的安全性逐年降低,却仍然被广泛的应用在互联网上。它的替代者SHA-2足够坚固,理应被广泛支持。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">最近谷歌声明如果你在使用Chrome浏览器,你将会注意到浏览器对大量安全的网站的警告会不断发生变化。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;"> chrome-warnings.png </p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;">证书有效期至2017年的站点在Chrome中发生的变化</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">首批警告会在圣诞节之前出现,并且在接下来6个月内变得越来越严格。最终,甚至SHA-1证书有效期至2016的站点也会被给予黄色警告。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">通过推出一系列警告,谷歌这正在宣布一个长周期的紧急情况,并督促人们在情况恶化之前更新他们的网站。这是件好事情,因为SHA-1是时候该退出历史舞台了,而且人们没有足够重视SHA-1的潜在风险。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">如果你拥有一个使用SSL的网站,你可以使用我创建的SHA-1测试小工具来测试你的网站,它会告诉你应该怎么做。即使你没有网站,我仍然推荐你去读一读。在接下来的博文,我会介绍网站上SSL和SHA-1是如何一起工作的,为什么如谷歌说的那么紧急,和浏览器正在采取的措施。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">同样重要的是,安全社区需要让证书更换过程少些痛苦和麻烦,因为网站的安全升级不必那么紧急和匆忙。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><span style="color: rgb(0, 176, 80);"><strong>安而遇随科普:安全散列算法与SHA-1</strong></span></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">安全散列算法(英语:Secure Hash Algorithm)是一种能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高;而SHA是FIPS所认证的五种安全散列算法。这些算法之所以称作“安全”是基于以下两点(根据官方标准的描述):</p><pre class="prettyprint lang-html prettyprinted" style="padding: 8px; background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; word-break: break-all; color: rgb(102, 102, 102); font-size: 13px; line-height: 24px;"><span class="pln" style="color: rgb(72, 72, 76);">1、由消息摘要反推原输入消息,从计算理论上来说是很困难的。
2、想要找到两组不同的消息对应到相同的消息摘要,从计算理论上来说也是很困难的。任何对输入消息的变动,都有很高的机率导致其产生的消息摘要迥异。</span></pre><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数。</p><p style="margin-top: 15px; margin-bottom: 15px; padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><span style="color: rgb(38, 38, 38);"><strong><span style="font-size: 18px;">SHA-1简介&nbsp;</span></strong></span></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">要理解替换SHA-1为什么这么重要,首先把自己站在一个浏览器的角度上。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">当你访问一个使用<img data-original="http://image.3001.net/images/20140920/14112182752966.png!small" src="http://image.3001.net/images/20140920/14112182752966.png!small" title="4.png" width="70" height="15" border="0" hspace="0" vspace="0" style="margin: 3px; padding: 3px; border: 0px; width: 70px; height: 15px; display: inline;">的网站,该网站向浏览器出示一个文件(类似于我们的身份证)即一个SSL证书。这个证书用来做两件事:加密访问网站的连接,并验证网站真实身份。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">任何证书都可以用来加密连接。但是为了验证你访问的是真实的Facebook(不是山寨的),你的浏览器必须通过某种方式决证书是否可信的,然后再向你显示一个绿色的小锁。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">为了完成验证工作,你的浏览器查明网站的证书是否由权威机构(证书签发机构,简称“CA”)颁发的。CA向网站颁发证书文件通常是收费的。你的浏览器信任来自超过56个CA(根CA)创建和担保的证书,如Verisign、GoDaddy、美国国防部等,还有经由56个根CA的授权的成千上万的中间CA。如你所料,这是一个有很大缺陷的系统,但确实是实际情况。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><br></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;"> certificate-connection.png </p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;">在Chrome中点击网址前面的绿色小锁时所显示的内容</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><span style="text-align: center;">此网站的CA在当时是Comodo,通过Namecheap购买的。</span>当网站的SSL证书宣称是自己由某个CA颁发给该网站时,你的浏览器需要进行另一项关键的测试:此证书本身能够证明这个事实吗?</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">普遍情况下,互联网通过数学来证明事实。当一个证书被颁发时,CA通过使用一个私钥签名该证书提供了身份证明。从某种程度上说,只有真正的CA能够完成这个签名(除非私钥丢了,哈哈,我经常丢钥匙),而浏览器能够验证该签名。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">但是CA实际上不签名原始的证书:它首先运行“单向散列”算法(如MD5、SHA-1、SHA-256)把证书压缩成一个唯一的字段。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;"> certificate-detail.png </p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;">Chrome浏览器中的证书片段</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">单向哈希算法能够压缩信息:例如,把《战争与和平》3.2MB版本通过SHA-1运算,你将得到:</p><pre class="prettyprint lang-html prettyprinted" style="padding: 8px; background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; word-break: break-all; color: rgb(102, 102, 102); font-size: 13px; line-height: 24px;"><span class="pln" style="color: rgb(72, 72, 76);">baeb2c3a70c85d44947c1b92b448655273ce22bb</span></pre><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;"> war-and-peace-results.png </p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;">MD5file.com(一个有趣的在线哈希计算器)的运算结果</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">类似SHA-1,单向哈希算法被用来产生唯一的不可逆的数据块(原文为slug,弹头的意思)。你不能够再从aeb2c3a70c85d44947c1b92b448655273ce22bb反推出《战争与和平》的内容(即哈希运算不可逆)。同样重要的是,没有其他文件能够产生相同的数据块(即指纹具有唯一性)。甚至内容修改一小部分也会导致SHA-1运算的结果发生很大的变化,难以寻找前后的关联性。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><strong>如果两个文件经过同一个哈希运算生成相同的值,这种现象被称作是一个“碰撞”。碰撞具有理论上的可能性,但概率过低而被认为是在现实中是不可能存在的。</strong></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">当浏览器遇到一个证书时,它会计算证书信息的SHA-1值,然后与被证书用作身份证明的原始SHA-1值作比较。因为SHA-1结果的唯一性,如果两个值是相同的,浏览器就确信提供的证书和CA签发的证书是同一个,没有经过篡改。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">如果你设计了一个证书,能够与目标站点的证书发生碰撞,然后再诱骗CA给你颁发此证书。最终,你就可以使用此证书来冒充目标站点,即使浏览器也无法区分真伪。</p><pre class="prettyprint lang-html prettyprinted" style="padding: 8px; background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; word-break: break-all; color: rgb(102, 102, 102); font-size: 13px; line-height: 24px;"><span class="pln" style="color: rgb(72, 72, 76);">具体详情:如果你想要了解签名算法和SSL证书的具体细节,乔舒亚·戴维斯有一个极其详尽的解释,具体链接如下:
http://commandlinefanatic.com/cg ... .cgi?article=art012</span></pre><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><a href="http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art012" style="color: rgb(35, 131, 87); text-decoration: none;"></a></p><p style="margin-top: 15px; margin-bottom: 15px; padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><span style="color: rgb(38, 38, 38); font-size: 18px;"><strong>SHA-1攻击</strong></span></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">在2005年,密码学家证明SHA-1的破解速度比预期提高了2000倍。但是破解仍然是极其困难和昂贵的。但是随着计算机变得越来越快和越来越廉价,在互联网上停止使用SHA-1算法只是时间的问题。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">后来,互联网继续使用SHA-1。在2012年,Jesse Walker写了一份评估报告,关于伪造一个SHA-1证书所花费的成本。该评估参照亚马逊Web服务的价格和摩尔定律。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><strong>当时沃克预计一个SHA-1的碰撞在2012年需花费2,000,000美元,在2015年需花费700,000美元,在2018年需花费173,000美元,在2021年需花费43,000美元。基于这些数字,施奈尔暗示到2018年就会有犯罪集团能够伪造证书,到2021年就会有科研院校具备这种能力。</strong></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">在有关更替SHA-1的规划和争论中,沃克的评估和施奈尔的推断被广泛的引用。一个由主流CA组成的组织:CA安全理事会(CA Security Council),近来使用沃克和施奈尔的结论来抱怨谷歌的时间表。CA把评估结果当作反驳的利器,认为 “等到2018年这种攻击才会实际出现”。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">我发现CA安全理事会所采取的立场简直像卡通片一样幼稚。他们只像在掩饰问题,因为他们深知加快的更换过程给他们带来很大的不便<strong>(直白点就是时间和金钱</strong>)。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">沃克和施奈尔的评估是在斯诺登事件之前,在人们弄明白原来政府也是敌人之前。基于他们的评估,在2014年伪造一个证书的成本要少于2000.000美元,许多一线的明星大腕都能支付得起这个数目。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">我们怎么确信他们会这样做呢?因为他们已经做了。<strong>(反正给我这么多钱,我不是干这种傻事的)</strong></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><strong><br></strong></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;"> kaspersky-flame.png </p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;">卡巴斯基实验室监控到已感染火焰病毒的计算机</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">在2012年研究人员发现了大名鼎鼎的火焰病毒。华盛顿邮报报道这是美国和以色列的合作,用于从伊朗搜集情报,阻挠伊朗核武器计划。一份泄露的NSA文件似乎证实了这一观点。火焰病毒依赖于一个伪造的SSL证书,实现了一个MD5(SHA-1的前任)的碰撞。令人不安的是,它使用了一个在当时鲜为人知的方法,尽管人们对MD5已经做了多年的研究。此事件给我们的提示是,我们应该假设最危险的漏洞是未知的。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">关于MD5,有一个有趣的故事。因为像SHA-1一样,很早之前人们就发现MD5存在脆弱性, 而且和SHA-1一样,从互联网上移除MD5所花费的时间令人吃惊。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">在1995年,MD5首次被披露存在理论上的脆弱性,并随着时间推移变得越来越脆弱,但直到2008年,MD5仍被一些CA所使用。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;"> md5-collisions-inc.png </p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;">在Chrome中通过<span style="text-decoration: underline;">chrome://settings/certificates</span>查看</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">虽然这是一个很危急的情况,可是一直到2011年Chrome仍然不能取消对MD5的支持-距离首次证明MD5不可信的时间已过去16年了。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">在互联网上更换签名算法存在一个特有的挑战:<strong>只要浏览器支持SHA-1,任何人的证书都可能被伪造</strong>。<strong>你可以使用一个SHA-1签名的伪造证书来冒充一个SHA-2签名的证书,</strong>因为浏览器只会查看SHA-1签名的伪造证书,并不知道存在一个“真正的”证书或证书应该使用SHA-2签名。<strong>(简言之,为了冒充目标站点的证书,伪造证书的信息和目标站点的证书一模一样,只是签名算法改为SHA-1)</strong>换句话说,防止利用SHA-1伪造证书的唯一方式就是浏览器取消对SHA-1的支持。</p><p style="margin-top: 15px; margin-bottom: 15px; padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><span style="font-size: 18px; color: rgb(38, 38, 38);"><strong>各浏览器的响应</strong></span></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">微软是第一个宣布了SHA-1弃用计划,在2016年之后Windows和IE将不再信任SHA-1证书。Mozilla也做了同样的决定。虽然微软和Mozilla向用户昭示了问题的存在性,但都没表明将要改变用户接口。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">另一方面,最近谷歌丢出一个爆炸性新闻,宣布因为SHA-1太脆弱了,Chrome浏览器会向用户显示警告:</p><pre class="prettyprint lang-html prettyprinted" style="padding: 8px; background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; word-break: break-all; color: rgb(102, 102, 102); font-size: 13px; line-height: 24px;"><span class="pln" style="color: rgb(72, 72, 76);">&nbsp;“我们计划通过Chrome中Https安全指示器来强调SHA-1不能满足当初的设计要求的这一事实。我们正在采取一种可量化的方法,逐渐下调安全指标器并逐渐推进时间表”</span></pre><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">在两周前,谷歌的Ryan Sleevi首先公布了Chrome的预期策略。建议大家阅读一下完整的讨论过程,具体链接如下:</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><a href="https://groups.google.com/a/chromium.org/d/msg/security-dev/2-R4XziFc7A/NDI8cOwMGRQJ" target="_blank" title="" data_ue_src="https://groups.google.com/a/chromium.org/d/msg/security-dev/2-R4XziFc7A/NDI8cOwMGRQJ" textvalue="https://groups.google.com/a/chromium.org/d/msg/security-dev/2-R4XziFc7A/NDI8cOwMGRQJ" style="color: rgb(35, 131, 87); text-decoration: none;">https://groups.google.com/a/chromium.org/d/msg/security-dev/2-R4XziFc7A/NDI8cOwMGRQJ</a></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">你会发现许多CA和大规模网站的运维人员露面,并试图和Ryan Sleevi进行辩论,因为Ryan Sleevi告诉他们现在就应该停止颁发脆弱的证书,而不是推迟到明年。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">这是谷歌发起的一个大胆的举动,同时也伴随着巨大的风险。浏览器移除签名算法为什么如此艰难,其主要原因是:当浏览器告诉用户一个重要的站点存在风险时,用户却认为浏览器出问题了,然后去更换浏览器。谷歌似乎在打赌用户对Chrome的安全性足够信任和对Chrome足够的喜欢,以致能够接受该计划带来的不便。(<strong>毕竟是第一个吃螃蟹,向谷歌致敬!)</strong></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">Opera 表示支持谷歌的计划。Safari团队正在观望<strong>(俗称“围观群众”)</strong>并未表态。</p><p style="margin-top: 15px; margin-bottom: 15px; padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><span style="font-size: 18px; color: rgb(38, 38, 38);"><strong>指导建议</strong></span></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">为了帮助迁移,我搭建了一个小型站点<a href="http://www.shaaaaaaaaaaaaa.com/" target="_blank" title="" data_ue_src="http://www.shaaaaaaaaaaaaa.com" textvalue="www.shaaaaaaaaaaaaa.com" style="color: rgb(35, 131, 87); text-decoration: none;">www.shaaaaaaaaaaaaa.com</a>,用于检查你的站点是否使用了SHA-1,以及是否需要更新。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;"> shaaaaa-site.png </p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px; text-align: center;"><span style="color: rgb(0, 176, 80);">字母A的数目是一个不可预测的大素数(作者为啥选择个数字让我费解,也许你能告诉我答案!嘿嘿)</span></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">你需要提交一个新证书请求,让你的CA颁发一个使用SHA-2的新证书。使用你现有的私钥:</p><pre class="prettyprint lang-html prettyprinted" style="padding: 8px; background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; word-break: break-all; color: rgb(102, 102, 102); font-size: 13px; line-height: 24px;"><span class="pln" style="color: rgb(72, 72, 76);">openssl&nbsp;req&nbsp;-new&nbsp;-sha256&nbsp;-key&nbsp;your-private.key&nbsp;-out&nbsp;your-domain.csr</span></pre><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">其中-sha256标志会使用SHA-2签名CSR,但CA才能决定是否向你颁发一个使用SHA-2签名的证书。我一直在关注有关从不同的CA获得SHA-2证书的问题和解决方案。如果你遇到的问题在网站上没有提到,请在<a href="https://github.com/konklone/shaaaaaaaaaaaaa/issues/24" target="_self" title="" style="color: rgb(35, 131, 87); text-decoration: none;">这里</a>反馈,我会及时更新网站。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">你可能更新所有的SHA-1中间证书,因为它们也需通过数字签名来验证。这也就意味着你要追踪你的CA是否颁发了SHA-2中间证书,并发向哪里了。我也一直在追踪不同的CA颁发的SHA-2中间证书的位置。如果你发现了网站上未提到的,或者你的CA没有中间证书的话,也请在<a href="https://github.com/konklone/shaaaaaaaaaaaaa/issues/36" target="_self" title="" style="color: rgb(35, 131, 87); text-decoration: none;">这里</a>反馈。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">如果你有一个站点,但其他公司控制着证书,你可以向他们的客服发送邮件告知。发送谷歌声明的连接,并询问他们的时间表。当然我也需要一些帮助,你如果愿意的话,查看网站上的<a href="https://github.com/konklone/shaaaaaaaaaaaaa/issues" target="_self" title="" style="color: rgb(35, 131, 87); text-decoration: none;">开放问题</a>,助我一臂之力。</p><pre class="prettyprint lang-html prettyprinted" style="padding: 8px; background-color: rgb(247, 247, 249); border: 1px solid rgb(225, 225, 232); white-space: pre-wrap; word-break: break-all; color: rgb(102, 102, 102); font-size: 13px; line-height: 24px;"><span class="pln" style="color: rgb(72, 72, 76);">SHA-1根证书:你不必担心浏览器自带的SHA-1根证书,因为它们的完整性不是通过数字签名验证的。</span></pre><p style="margin-top: 15px; margin-bottom: 15px; padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><span style="color: rgb(38, 38, 38); font-size: 18px;"><strong>结论</strong></span></p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">这种推动SHA-1退役的计划早就应该启动了。随着压力不断被放大而引发的所有麻烦应该被导向到CA,而不是让谷歌作替罪羊,因为长久以来CA都不能采取有效的措施。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">对于个人而言,获得证书应该像购买域名一样容易,安装它应该向打开一个网站那样简单,并更换它能够实现自动化。这些思路提供了一些非常明确的商业机会和开源工具的需求。&nbsp;</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">对于组织,在他们的基础设施的设计和更新过程中,频繁的证书轮换是需要优先考虑的。出色完成这项工作的组织应该广开言路,共享他们的工作成果。&nbsp;</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;">与此同时,网站经营者应该更新证书和利用暂无像Heartbleed级别的紧急情况为契机,重新审视自己的SSL配置,并开启“正向加密”(forward secrecy)之类的配置。</p><p style="padding-top: 6px; padding-bottom: 4px; overflow: hidden; color: rgb(102, 102, 102); font-family: 微软雅黑, 'Microsoft YaHei', 'WenQuanYi Micro Hei'; font-size: 13px; line-height: 24px;"><strong>参考信息来源<span style="color: rgb(38, 38, 38);">&nbsp;</span></strong><a href="https://konklone.com/post/why-google-is-hurrying-the-web-to-kill-sha-1" target="_blank" title="" data_ue_src="https://konklone.com/post/why-google-is-hurrying-the-web-to-kill-sha-1" textvalue="Why Google is Hurrying the Web to Kill SHA-1&nbsp;" style="color: rgb(38, 38, 38);">Why Google is Hurrying the Web to Kill SHA-1&nbsp;</a></p><p></p>
随遇而安
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表