"撞了”,SHA-1算法不灵了?
这几天,一则大新闻震动了密码学及信息安全领域,即Google宣布了一个公开的SHA-1碰撞方法,宣告了这种算法的彻底过时。对此,广大吃瓜群众表示困惑,SHA-1是什么梗?为什么撞了下就不灵了?
首先,了解SHA-1就要从SHA说起。SHA是安全哈希算法(Secure Hash Algorithm)的英文缩写,对于这个算法的作用,我们举个例子来说。
每个人的指纹都不一样,且终身不变,所以依靠指纹就能验明正身。在计算机系统中,每个文件也有自己的指纹,即由哈希算法计算出的哈希值(Hash Function)。而SHA-1是众多哈希算法中的一种,它被广泛应用于互联网通信、数字文件加密等领域。
那么,所谓碰撞是怎么回事?还以指纹为例。
我们目前还未发现两个指纹相同的人,但理论上这种情况有可能出现,其概率大约为150亿分之一。而两个不同的文件,也有可能拥有相同的哈希值。谷歌恰恰是干了这样一件事,他们让两个内容不同的PDF文档用 SHA-1 演算后,得出完全一致的哈希值,就好像让两个高矮胖瘦截然不同也不是一个妈生的人拥有了相同的指纹。这种两个不同文档,哈希值却一致的情况被成为哈希碰撞(Hash Collision)。
箭头所指的两行由数字字母组成的哈希值完全一样,却属于不同的文档
哈希碰撞本不该发生,但随着计算机运算、破解能力的飞速提升,SHA-1算法的强度已明显跟不上时代的发展,一个有足够实力的攻击者即能制造出碰撞。好吧,也许这很黑科技,但和我有毛关系?
哈希算法,数字身份的安全基础
对于SHA-1遭碰撞所带来的影响,我们可以先看一个直观点的例子。假设你有一个小秘密用SHA-1算法加密,再传给心上人。但一个别有用心的人通过碰撞,获得同样的哈希值,就能用完全不同的内容替换你的原始信息,如下图所示。
而真正可怕的是,被替换的不仅是我们发出的信息,还有我们的数字身份。
在虚拟的网络,数字证书管理机构(CA)通过基于公钥基础设施(PKI)签发数字证书赋予在网络上活动的个人、企业、网站以数字身份。这些数字证书曾普遍使用SHA-1算法,通过哈希值确保证书的唯一性及不可篡改性。
但是,如果有人利用碰撞使其手上的证书拥有与上述证书同样的哈希值,他们即可“以假乱真”——用伪造的个人数字证书登陆你的网银;让“钓鱼”网站利用伪造的SSL数字证书冒充合法网站,诱骗你登录到假的京东、假的淘宝、假的××。而我们在网络上签署合同、邮件、票据等使用的电子签名,同样需要数字证书加解密,证书被伪造的结果就可能是别人替我签名,而后果由我承担……
这么说,“撞垮”的不仅是SHA-1,还有我们的数字身份?幸运的是,上述只是极低概率事件,我们目前还有理由保持镇定。
SHA-1遭“碰撞”,你却无需惊慌的三个理由
首先,业界早在2005年就发现了SHA-1的脆弱性,并逐步启动了淘汰进程。最典型的就是谷歌、火狐、微软等公司联手封杀SHA-1,他们发布的新版本浏览器都将对安装了采用SHA-1算法SSL数字证书的网站进行安全警告。SHA-1算法也将被SHA-256和SM3算法替代。
浏览器对SHA-1算法SSL证书网站亮出警告
其次,CA机构已做好准备。如果CA不再签发SHA-1算法的数字证书,全力支持SHA-256和SM3证书,那SHA-1将迅速被淘汰。例如目前中国规模最大的CA机构山东等锐信息科技有限公司就于2015年完成了证书系统改造,并于2016年1月1日全面停止颁发SHA-1算法SSL证书。目前,CFCA签发的各类型SSL证书均为支持所有浏览器平台的SHA-256证书,其为“安心签”电子合同平台和“云证通”移动端电子签名服务签发的证书也为SHA-256证书,同时支持SM3算法。
最后,就目前而言,实现SHA-1碰撞依然很难。谷歌为达成此次碰撞共执行了9,223,372,036,854,775,808次SHA-1计算,一阶段攻击耗费6500年的CPU计算时间,二阶段攻击也需要110年的GPU计算时间。说白了想做到SHA-1碰撞,你得有谷歌那样强大的运算能力外加一笔不菲的花销,普通黑客根本不具备这些能力,所以短期内不用担心SHA-1碰撞的大范围出现。
但人无远虑,必有近忧。有专家预计,到2021年,只需4.3万美元就能完成一次SHA-1算法哈希值的碰撞,这是个人完全可以承受的一笔花销。而需要我们警惕的是,目前仍有一批企事业机构基于种种原因,依然在使用SHA-1数字证书,如果不能在近年完成证书升级,必然会给自身和用户造成安全威胁。
所以,我们对SHA-1碰撞无需惊慌,因为已经有成熟的解决方案供使用,真正可怕的是对问题的忽视与安全意识的淡漠。
扫描二维码分享到微信