首页 > 代码库 > Google震惊密码界:攻破SHA-1加密技术

Google震惊密码界:攻破SHA-1加密技术

在美国的2月23日,Google在密码学领域干了件大事,它提交了第一次成功的SHA-1碰撞攻击。谷歌宣布找到SHA-1碰撞的算法,需要耗费110块GPU一年的运算量,并将在90天后公布源码。
 
 
1、首先说说,什么是SHA-1?
SHA-1,被称作哈希(Hash)算法,一个非常流行的加密散列函数。在许多安全协议中广为使用,通常被用做密码加密,文件校验等,曾被视为MD5的后继者,且存在不可逆性。
 
简单来讲:
 
比如,我有一个网站,用户在注册的时候会输入用户名和密码。大家都知道如果密码是明文的方式存储在数据库里的话,那么这个数据一旦泄漏或者内部人员作恶的话,会造成信息安全问题。
 
所以通用的做法是,把用户输入的用户名密码做MD5或SHA-1的运算,这时会生成一个哈希值字串。
 
举例:把“卡拉是条狗”保存为一个TXT文件,计算出这个文本文件的哈希值为b32200d4f3b0c50c5ce7e9801aecbcdce6adcbcc。
因为这个算法的“不可逆”性,仅凭b32200d4f3b0c50c5ce7e9801aecbcdce6adcbcc这串哈希值无法反计算出明文是什么。
 
 
2、再来说说,SHA-1碰撞是怎么一回事?
当散列函数有漏洞,两个文件产生相同的哈希值时,就产生了碰撞。
 
作为证明,Google在公布的结果中,显示了两个不同的PDF文件,经过SHA-1处理后,产生了相同的哈希值。
技术分享
 
3、SHA-1碰撞会产生什么危害?
这里,为了能够简单易懂,我们先将SHA-1碰撞比喻成军事领域上的情报传递。
 
首先,传递的情报一定都是加密的,不会明文。

通过校验密文,我们可以保证接收到情报的正确性(加密的结果是唯一的,可以保证信息不被篡改),但是这次的问题在于,通过某种方式,我们造出了能得到相同密文的情报C。
技术分享
 
那么这时候,接受到密文a的人就懵逼了,究竟是该执行进攻,还是执行待命呢?
 
而SHA-1碰撞就好似接收情报,因为它与合法文件有一样的哈希值,所以会让攻击者滥用恶意文件。

 

 
此外,Google 在发表 SHA-1 冲突新闻的Shattered.it 网站上表示:
 
我们已经通过这个实例演示了如何攻破 SHA-1 加密。
 
这项被业内广泛用于数字签名、文件完整性验证、以及保护广泛的数字资产(包括信用卡交易、电子文档、开源软件资源库与软件更新等)的加密标准,现已被实际证明可精心制作出两份冲突的 PDF 文件。
 
它们包含了不同的内容,却拥有相同的 SHA-1 数字签名,意味着一个有效签名可被另一份 PDF 文件所滥用。
 
举例来说,别有用心的人可以利用这种方法制作两份内容不一致的租赁协议,然后用低价‘副本’欺骗他人‘签下’价格更高的那份合约。
 
当然,想要达成 Google 这样的“成就”并非易事,因之实际上共执行了9,223,372,036,854,775,808 次 SHA-1 计算(9×10^18);破解分为两阶段,分别需要一个CPU 进行 6,500 年,和一个GPU 进行 110 年的计算才可完成。



4、作为普通用户,我们需要恐慌吗?
    显然,Google找到新的破解算法,可以利用110块GPU,一年内完成破解。这里我们不妨猜想:如果是地下黑产,面对一个高价值的目标,会不会动用掌握的数百万台肉鸡电脑的计算能力,在更短的时间内完成碰撞攻击呢?
 
    做为一种老旧的加密演算法,SHA-1 渐渐被后来者如 SHA-2 和 SHA-3 新演算法,以及各种变体取代。三大浏览器 Chrome、微软 Edge / IE 和火狐浏览器都决定弃用 SHA-1。截至今年的1月1日,当你访问一个经由SHA-1加密的网站时,每一个主流的浏览器都会向你发出警告(一般情况是全屏红色),当证书过期后,浏览器将无法存取这些网站。Google 方面也建议 IT 人士采用 SHA-256 等更安全的算法,所以不必过于担心。
 
    随着硬件能力高速发展,GPU已取代CPU来处理数据,导致原有的加密技术面临走下神坛的危机。而任何的安全都是当下的安全,相信时间会改变这一切!

Google震惊密码界:攻破SHA-1加密技术