行业资讯 ev-ssl-news2

您现在所在的位置 首页 > 行业资讯 > 为什么Google急着杀死加密算法SHA-1

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

哈希算法的希尔伯特曲线图(由Ian Boyd提供)

Google官方博客宣布,将在Chrome浏览器中逐渐降低SHA-1证书的安全指示。但有意思的是Google.com目前使用的也是SHA-1签名的证书,但证书将在3个月内过期,Google将从2015年起使用SHA-2签名的证书。SHA-1算法目前尚未发现严重的弱点,但伪造证书所需费用正越来越低。

概述

大部分安全的网站正在使用一个不安全的算法,Google刚刚宣称这将是一个长周期的紧急情况。

大约90%采用SSL加密https://的网站使用SHA-1算法来防止自己的身份被冒充。当你去访问网址https://www.facebook.com时,保证了你正在访问的确实是正品Facebook,而不是把自己的密码发送给攻击者。然而不幸的是,SHA-1算法是非常脆弱的,长期以来都是如此。该算法的安全性逐年降低,却仍然被广泛的应用在互联网上。它的替代者SHA-2足够坚固,理应被广泛支持。

最近谷歌声明如果你在使用Chrome浏览器,你将会注意到浏览器对大量安全的网站的警告会不断发生变化。

sha1

证书有效期至2017年的站点在Chrome中发生的变化

首批警告会在圣诞节之前出现,并且在接下来6个月内变得越来越严格。最终,甚至SHA-1证书有效期至2016的站点也会被给予黄色警告。

通过推出一系列警告,谷歌这正在宣布一个长周期的紧急情况,并督促人们在情况恶化之前更新他们的网站。这是件好事情,因为SHA-1是时候该退出历史舞台了,而且人们没有足够重视SHA-1的潜在风险。

如果你拥有一个使用SSL的网站,你可以使用我创建的SHA-1测试小工具来测试你的网站,它会告诉你应该怎么做。即使你没有网站,我仍然推荐你去读一读。在接下来的博文,我会介绍网站上SSL和SHA-1是如何一起工作的,为什么如谷歌说的那么紧急,和浏览器正在采取的措施。

同样重要的是,安全社区需要让证书更换过程少些痛苦和麻烦,因为网站的安全升级不必那么紧急和匆忙。

FreeBuf科普:安全散列算法与SHA-1

安全散列算法(英语:Secure Hash Algorithm)是一种能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高;而SHA是FIPS所认证的五种安全散列算法。这些算法之所以称作“安全”是基于以下两点(根据官方标准的描述):

1、由消息摘要反推原输入消息,从计算理论上来说是很困难的。

2、想要找到两组不同的消息对应到相同的消息摘要,从计算理论上来说也是很困难的。任何对输入消息的变动,都有很高的机率导致其产生的消息摘要迥异。

SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数。

SHA-1简介 

要理解替换SHA-1为什么这么重要,首先把自己站在一个浏览器的角度上。

当你访问一个使用https://的网站,该网站向浏览器出示一个文件(类似于我们的身份证)即一个SSL证书。这个证书用来做两件事:加密访问网站的连接,并验证网站真实身份。

任何证书都可以用来加密连接。但是为了验证你访问的是真实的Facebook(不是山寨的),你的浏览器必须通过某种方式决证书是否可信的,然后再向你显示一个绿色的小锁。

为了完成验证工作,你的浏览器查明网站的证书是否由权威机构(证书签发机构,简称“CA”)颁发的。CA向网站颁发证书文件通常是收费的。你的浏览器信任来自超过56个CA(根CA)创建和担保的证书,如Verisign、GoDaddy、美国国防部等,还有经由56个根CA的授权的成千上万的中间CA。如你所料,这是一个有很大缺陷的系统,但确实是实际情况。

sha2

在Chrome中点击网址前面的绿色小锁时所显示的内容

此网站的CA在当时是Comodo,通过Namecheap购买的。当网站的SSL证书宣称是自己由某个CA颁发给该网站时,你的浏览器需要进行另一项关键的测试:此证书本身能够证明这个事实吗?

普遍情况下,互联网通过数学来证明事实。当一个证书被颁发时,CA通过使用一个私钥签名该证书提供了身份证明。从某种程度上说,只有真正的CA能够完成这个签名(除非私钥丢了,哈哈,我经常丢钥匙),而浏览器能够验证该签名。

但是CA实际上不签名原始的证书:它首先运行“单向散列”算法(如MD5、SHA-1、SHA-256)把证书压缩成一个唯一的字段。

sha3

Chrome浏览器中的证书片段

单向哈希算法能够压缩信息:例如,把《战争与和平》3.2MB版本通过SHA-1运算,你将得到:

baeb2c3a70c85d44947c1b92b448655273ce22bb

sha4

MD5file.com(一个有趣的在线哈希计算器)的运算结果

类似SHA-1,单向哈希算法被用来产生唯一的不可逆的数据块(原文为slug,弹头的意思)。你不能够再从aeb2c3a70c85d44947c1b92b448655273ce22bb反推出《战争与和平》的内容(即哈希运算不可逆)。同样重要的是,没有其他文件能够产生相同的数据块(即指纹具有唯一性)。甚至内容修改一小部分也会导致SHA-1运算的结果发生很大的变化,难以寻找前后的关联性。

如果两个文件经过同一个哈希运算生成相同的值,这种现象被称作是一个“碰撞”。碰撞具有理论上的可能性,但概率过低而被认为是在现实中是不可能存在的。

当浏览器遇到一个证书时,它会计算证书信息的SHA-1值,然后与被证书用作身份证明的原始SHA-1值作比较。因为SHA-1结果的唯一性,如果两个值是相同的,浏览器就确信提供的证书和CA签发的证书是同一个,没有经过篡改。

如果你设计了一个证书,能够与目标站点的证书发生碰撞,然后再诱骗CA给你颁发此证书。最终,你就可以使用此证书来冒充目标站点,即使浏览器也无法区分真伪。

具体详情:如果你想要了解签名算法和SSL证书的具体细节,乔舒亚·戴维斯有一个极其详尽的解释,具体链接如下:

http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art012

SHA-1攻击

在2005年,密码学家证明SHA-1的破解速度比预期提高了2000倍。但是破解仍然是极其困难和昂贵的。但是随着计算机变得越来越快和越来越廉价,在互联网上停止使用SHA-1算法只是时间的问题。

后来,互联网继续使用SHA-1。在2012年,Jesse Walker写了一份评估报告,关于伪造一个SHA-1证书所花费的成本。该评估参照亚马逊Web服务的价格和摩尔定律。

当时沃克预计一个SHA-1的碰撞在2012年需花费2,000,000美元,在2015年需花费700,000美元,在2018年需花费173,000美元,在2021年需花费43,000美元。基于这些数字,施奈尔暗示到2018年就会有犯罪集团能够伪造证书,到2021年就会有科研院校具备这种能力。

在有关更替SHA-1的规划和争论中,沃克的评估和施奈尔的推断被广泛的引用。一个由主流CA组成的组织:CA安全理事会(CA Security Council),近来使用沃克和施奈尔的结论来抱怨谷歌的时间表。CA把评估结果当作反驳的利器,认为 “等到2018年这种攻击才会实际出现”。

我发现CA安全理事会所采取的立场简直像卡通片一样幼稚。他们只像在掩饰问题,因为他们深知加快的更换过程给他们带来很大的不便(直白点就是时间和金钱)。

沃克和施奈尔的评估是在斯诺登事件之前,在人们弄明白原来政府也是敌人之前。基于他们的评估,在2014年伪造一个证书的成本要少于2000.000美元,许多一线的明星大腕都能支付得起这个数目。