Google 破解 SHA-1 算法,到底为啥?

作者: 谢幺

来源: 宅客频道

发布日期: 2017-03-02 10:01:10

Google 公布了一个攻破 SHA-1 算法的实例,引发了关于其安全性和应用价值的讨论。谷歌此次成果的意义在于敲响警钟,提醒业界 SHA-1 算法的不安全性,并推动加密算法的迭代更新。

前几天,Google 破解 SHA-1 算法的新闻刷了我的朋友圈。其实破解二字不太准确,应该是公布了一个攻破 SHA-1 算法的实例。对此新闻,我看到了两种不同的评论:A:哇好牛 X 呀,居然破解了加密算法,世界好危险,我要不要回火星?B:谷歌这次只是花费了大量的计算资源,验证了一下破解算法,没啥可牛逼的。我几年前就知道 SHA-1 算法不安全了。

本着求真的精神,今天就来聊聊:一、谷歌此次成果到底意义何在?二、谷歌为啥要搞出这么大动静?

先还是简单科普一下哈希算法。我们知道,每个人的指纹都不一样,所以能用指纹来验证人的真伪。在计算机系统中,每个不同的文件内容也有自己的指纹——哈希值。用来计算哈希值的方法有很多,比如 SHA-1、SHA-2、MD5 等等,它们统称“哈希算法”。

美国有部著名的电影叫乱世佳人,用 SHA-1 算出的哈希值是:5C9CD8EEECE37D8A66206D4652132C00B4D9F8F4。如果你下载的乱世佳人.avi 哈希值不一样,很可能你会被忽悠下载了葫芦娃全集。简单来说,哈希值就是数字世界的指纹。

那么问题来了,虽然概率极低,但是两个人的指纹还是有可能完全相同,两个文件的哈希值也有可能相同。也就是说,只要我找到和马云爸爸指纹相同的人,就有可能盗走马云爸爸的财产;只要构造一个和电影的哈希值相同的视频文件,就能成功忽悠你下载葫芦娃全集。其实谷歌这次就干了这么一件事。他们成功构造了两个不同的 PDF 文件,SHA-1 哈希值完全相同。

谷歌官方是这么说的:我们从应用角度破解了 SHA-1。

这一工业界应用的密码学哈希函数标准被用于数字签名、文件完整性验证中,并在多个领域保护着人们的数字财产,这些数字财产包括信用卡交易、电子文档、开源软件仓库、软件更新等。在实际中,我们可以构造两个 SHA-1 结果相同的 PDF 文件。这使得第二个文件 SHA-1 后的数字签名可以通过第一个文件 SHA-1 后数字签名的验证。

举例来说,可以构造两个 SHA-1 结果相同的 PDF 租赁协议文件,协议文件中标注的租金不同,但高租金文件的 SHA-1 后签名结果与低租金文件的 SHA-1 后签名结果一样。这样,可以让租赁方在低租金文件上签字,再用高租金文件替换,达到伪造租赁协议文件的目的。

之所以有的朋友觉得谷歌这个结果不牛 X,不令人震精,是因为 SHA-1 很早就从理论上被证明能破解了,只是计算量极大,成本比较高。

2005 年,我国密码学专家王小云教授联手姚期智夫妇提出了一种破解方法,将破解 SHA-1 的时间从 2^69 步到 2^63 步,让中国密码界闪耀在世界舞台。那次的研究结果,让国家标准技术局 NIST 不得不着手选择新 SHA-2 系列哈希函数。但由于破解的成本太高,SHA-1 依然在广泛应用。之后,学者们一直努力寻找更高效的破解方法。

2013 年,一个叫 Stevens 的小伙将破解计算量降低到 2016 年,他再一次将计算量降低到此次谷歌就借鉴了他的破解方法。利用这种方法,100 个 GPU 大约需要计算一年就能破解,大概得花个几十万,成本确实不低,但对于国家机构、高级黑客组织来说,简直就是毛毛雨。

对于这次成果的意义,我认为更多的还是敲响警钟。

就好比人们知道弱口令不安全,但只有当一个个盗号事件发生在他们身边,人们才会真正学乖。那么就到了第二个问题:谷歌为什么一直不惜代价来推动 SHA-1 算法灭亡?据本文作者所知,有很多采用 SSL 加密的网站使用 SHA-1 算法来防止自己的身份被冒充。当你去访问网址时,能保证了你正在访问的确实是正品 Facebook,而不会把自己的密码发送给攻击者。

为了完成验证工作,你的浏览器查明网站的证书是否由权威机构颁发的。(证书签发机构,简称“CA”)浏览器验证证书有这么一个过程:当浏览器遇到一个证书时,它会计算证书信息的 SHA-1 值,然后与被证书用作身份证明的原始 SHA-1 值作比较。如果两个值是相同的,浏览器就确信提供的证书和 CA 签发的证书是同一个,没有经过篡改。

如果你设计了一个证书,能够与目标站点的证书发生碰撞,然后再诱骗 CA 给你颁发此证书。最终,你就可以使用此证书来冒充目标站点,即使浏览器也无法区分真伪。证书欺骗过程其实就跟我忽悠你下载葫芦娃全集有点像。现在 SHA-1 不安全了,有两种解决方法:1. CA 办法的证书不支持 SHA-1;2. 浏览器不提供 SHA-1 认证。

但是,在 SHA-1 算法之前,同样有个叫 MD5 的算法,在 1995 年,就披露存在理论上的脆弱性,但直到 2008 年,MD5 仍被一些 CA 所使用。好了,指望 CA 来淘汰 SHA-1 是没希望了,那么,防止利用 SHA-1 伪造证书只能用另一个方式:浏览器取消对 SHA-1 的支持。两三年前,谷歌就宣布因为 SHA-1 太脆弱了,计划 Chrome 浏览器向用户显示警告。

虽然微软、Mozilla(火狐)也很早发布了相关的计划,但实际冲在最前头的,依然是谷歌。

浏览器们这么做,会让自己面临一个尴尬的情况:当浏览器告诉用户一个重要的站点存在风险时,用户会认为浏览器出问题了,然后去更换浏览器。就像你在浏览一些网站时,如果浏览器告诉你这个网站不安全,不允许你观看,很多情况下,仍会点击继续访问,或者换个不打扰的浏览器继续访问。

至此,也就解释了,谷歌之后为什么一直在不停地向大家传递一个消息:SHA-1 不安全了!赶紧换呀!浏览器厂商们快加入反抗队列呀~冲得太靠前,队友没跟上,有些心虚。话说,Safari 团队至今还没对 SHA-1 这事儿表过态。不过总的说来,谷歌能够第一个吃螃蟹,推动加密算法应用的迭代,提升整体网络安全状况,还是非常值得致敬!应该全力支持的!

UUID: 44e3b543-28a1-4103-b4d4-33458e2a9599

原始文件名: /home/andie/dev/tudou/annot/AI语料库-20240917-V2/AI语料库/中科院物理所公众号-pdf2txt/2017/中科院物理所_2017-03-02_「转」Google 破解 SHA-1算法,到底为啥?.txt

是否为广告: 否

处理费用: 0.0063 元