前几天, Google 破解 SHA-1 算法的新闻刷了我的朋友圈。 其实破解二字不太准确, 应该是 公布了一个攻破SHA-1算法的实例。 对此新闻, 我看到了两种不同的评论:
本着求真的精神, 今天就来(xia)聊聊: 一、谷歌此次成果到底意义何在? 二、谷歌为啥要搞出这么大动静? --- 先还是简单科普一下哈希算法。 我们知道,每个人的指纹都不一样, 所以能用指纹来验证人的真伪。 (孙猴子除外) 在计算机系统中, 每个不同的文件内容也有自己的指纹哈希值 用来计算哈希值的方法有很多, 比如 SHA-1、SHA-2、MD5等等 它们统称“哈希算法” 美国有部著名的电影叫 乱世佳人, 用SHA-1算出的哈希值是:
如果你下载的乱世佳人.avi 哈希值不一样, 很可能你会被忽悠下载了葫芦娃全集 简单来说,哈希值就是数字世界的指纹。 那么问题来了, 虽然概率极低,但是 两个人的指纹还是有可能完全相同 两个文件的哈希值也有可能相同 也就是说, 只要我找到和马云爸爸指纹相同的人 就有可能盗走马云爸爸的财产 只要构造一个和电影的哈希值相同的视频文件 就能成功忽悠你下载葫芦娃全集。 其实谷歌这次就干了这么一件事。 他们成功构造了两个不同的PDF文件, 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不安全了,有两种解决方法:
但是, 在SHA-1 算法之前,同样有个叫MD5的算法 在1995年,就披露存在理论上的脆弱性, 但直到2008年,MD5仍被一些CA所使用。 好了,指望CA来淘汰SHA-1是没希望了, 那么,防止利用SHA-1伪造证书 只能用另一个方式: 浏览器取消对SHA-1的支持。 两三年前,谷歌就宣布因为SHA-1太脆弱了, 计划Chrome浏览器向用户显示警告 虽然微软、Mozilla(火狐)也很早发布了相关的计划 但实际冲在最前头的,依然是谷歌。 浏览器们这么做, 会让自己面临一个尴尬的情况:
至此,也就解释了, 谷歌之后为什么一直在不停地向大家传递一个消息: SHA-1 不安全了! 赶紧换呀! 浏览器厂商们快加入反抗队列呀~ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|