美国2月23日,Google在密码学领域干了一件大事,它宣布一个公开的SHA-1算法碰撞方法,将这种算法攻破了。这也是对曾经在密码学中最流行的算法宣判死亡。不过好消息是,几乎没有人仍在使用SHA-1了,所以看到这篇文章的你,也不需要安装什么安全补丁。但Google公布的结果对网络安全仍有十分重大的意义。
在了解整个事件前,应该先知道,Google到底做了什么?
一句话:Google公开破解了web加密中的一个主要算法SHA-1。公司研究人员在博文中称,有足够的计算力(其中一个阶段就花1个GPU大约110年的计算)就能实现碰撞,有效地破解算法。其实在之前,大家就知道这是可能的,但没人这么做过。
根据Google的披露政策,它将在90天后说明自己是怎么做的。不过一旦这种概念验证方法公布出来,
任何有足够计算力的人都能实现SHA-1碰撞,这样这一算法也就不安全,该过时了。
也许Google都不是第一个这么做的(比如一些国家情报机关),但是第一个公开的。
那么问题来了,SHA-1是什么?
SHA-1是一个散列函数(或哈希函数),它会从给定的文件中产生数字指纹(就像人的 指纹一样),从而让你验证文件的完整性,又不会暴露整个文件内容,只需要检查哈希值即可。如果散列函数一切正常,每个文件会产生唯一的哈希值,所以如果哈希值能匹配上,文件本身也能匹配上。这对于登陆系统尤其重要,因为它需要在不暴露密码本身的情况下,验证密码是否正确。
知道了SHA-1,那什么叫碰撞呢?刚才说的“实现碰撞”是什么意思?
当散列函数有漏洞,两个文件产生相同的哈希值时,就产生了碰撞。它会让攻击者滥用恶意文件,因为它与合法文件有一样的哈希值。
作为证明,Google在公布的结果中,显示了两个PDF文件,经过SHA-1处理后,产生了相同的哈希值。
实际上,被攻破的散列函数能用来攻击另一个加密系统HTTPS,后者保护了全球超过一半网页的安全。
作为普通用户,我能怎么办?
其实完全不用担心。密码学家已经预测到这种碰撞很多年了,对怎么做以及需要多少计算力,都了解的很清楚。Google这么做,是因为它有钱,服务器多……所以就动手了,业界对这种可能性一直都是很清楚的。
另外就是,多数网站都已经弃用了SHA-1。虽然也就是
在2014年的时候,网络上九成的加密都是用的它,但随后的几年它迅速被抛弃。截至今年的1月1日,当你访问一个经由SHA-1加密的网站时,每一个主流的浏览器都会向你发出警告(一般情况是全屏红色)。虽然很难说还有多少网站在用它,但正常的网络活动都是安全的。
SHA-1也仍被用在除网络加密外的其它地方,比如Git存储库,但考虑到它已经被弃用一段时间了,所以影响不会很大。
还有一个问题是,如果Google做的并不那么激动人心,那为什么要这样做呢?
很可能是因为它想结束争论,因为放弃SHA-1也是花了行业人士不少时间和精力的,而且不是每个人都想这么做。如果直接破解了它,就能给反对的人致使一击,快速结束战斗。
Chrome早在2014年就开始对SHA-1加密的网页进行警告,
Firefox和微软的Edge和
IE也迅速跟进了。
虽然现在来看,整个事件的影响不会很大,但我们应该庆幸的是,行业的进步很快,迅速弃用了原来的加密方式,否则现在来看就危险了。