SHA-256 碰撞攻击取得突破,加密货币遭遇重大危机?
本文作者:OneKey 中文@OneKeyCN。发文时间:Last edited :31 AM · Mar 31, 2024
最近这样一条推特上了海外加密圈的热搜:「First practical SHA-256 collision for 31 steps.(首个 SHA-256 的 31 步可行碰撞攻击)」,配图是一张学术会议里的 PPT。
Solana 联创 Toly 转发道「We are so back」,似乎是想说,只有这样的牛市下才会有这样的新闻。
确实,恰逢在加密货币总市值才要回到前高 3 万亿美元的时间点,这个突破显得格外刺眼。要知道,如果 SHA-256 真的被破解了,各种加密货币都要一起完蛋,我们也会亏得只剩裤衩子。
这个突破是真的吗?
直接回答:是真的,确实突破了 SHA-256 碰撞攻击的新纪录。
这篇论文已经被被密码学三大旗舰会议之一的 EUROCRYPT 2024 接收。你可以在EUROCRYPT 官网(https://eurocrypt.iacr.org/2024/acceptedpapers.php)查到。并且可以在这里(https://eprint.iacr.org/2024/349)查看论文原文,标题为《New Records in Collision Attacks on SHA-2(SHA-2 碰撞攻击新记录)》。
如何理解这一次的突破?
虽然会涉及很多密码学的知识,下文会用最浅显的语言帮你理解,也不会涉及太深的原理。
你首先需要知道, SHA-256 是什么。
SHA-256 是一种加密算法,属于论文标题中 SHA-2 系列算法的细分。它被广泛地用在密码学、数字签名、数据完整性校验等领域,是现代数字安全的基石。
在区块链行业里面,可以说是「顶梁柱」的存在,挖矿、私钥安全、L2 数据发布(DA)等等,几乎处处都有它的身影。
这个算法简单来说,就是将任意长度的输入转换为固定长度的输出(哈希值)。即无论输入的内容有多长多短,经过算法输出的哈希值始终为 256 位(32 个字节)。而且,它对输入很敏感,输入中微小的变动会产生截然不同的哈希值。同时,它是一个不可逆的函数,这意味着根据输入很容易得到输出,根据输出却无法高效地得到输入。
例如「OneKey 科普:加密安全一点就通」这个文本,经过 SHA-256 加密之后,就会得到「C612FD61C200F9C7DC16565A53C0F96A4DEBD64C21EB40AE5283D4D36433A24A」。
假如我偷偷改了里面的一点内容,如「TwoKey 科普:加密安全两点就通」。此时再加密,就变成了「C3C0E108AD1417259E97E8E913459B9CECD67C3BD20D8DFE938214567FB4EB08」,是完全不一样的结果。
这种关系,就好像人的指纹或者虹膜。每一个人都有独一无二的指纹和虹膜,所以我们可以用它们来验明身份、作为密码。SHA-256 的哈希值在这里是便数据的「指纹」。
而碰撞攻击 SHA-256 的意义,就在于对于某一个数据的「指纹」,去寻找另外一个攻击数据,使其能够生成一样的「指纹」,从而实现数据的伪造。
在 SHA-256 中,加密过程需要经过 64 步循环加密计算,这是算法设计者平衡了安全与效率后选择的步数。
当我们说在 SHA-256 的前 31 步中发现了碰撞时,这是在说论文作者通过特别的方法找到了两个不同的输入,这些输入在经过前 31 步的处理后,在内部中间状态上产生了相同的值,从而在经过剩余的 33 个步骤后有更大概率产生相同的哈希值输出。
当然,随着攻击步数的增加,找到满足碰撞条件的输入对的难度通常会以指数级增长。这是因为每增加一步,攻击碰撞分析中都需要考虑更多的内部状态变化和传播效应,这大大增加了计算和分析的复杂度。所以大家可能以为距离破解只剩一半了,其实还差了很多。
更何况,比特币区块的哈希值是通过对区块头信息进行两次 SHA-256 运算得到的,私钥生成公钥和地址的过程还有使用了椭圆曲线数字签名算法(ECDSA)、RIPEMD-160 算法。所以要想随心所欲篡改比特币区块信息、攻击私钥,还有很长一段路要走。
而对于比特币挖矿,挖矿过程本质上是寻找一个满足特定条件的散列值,这个过程需要通过反复尝试不同的nonce值来实现。只有能够更容易地找到符合条件的散列值碰撞,理论上才可能降低挖矿难度,从而影响比特币的工作量证明(PoW)机制。
SHA-256的碰撞攻击成功并不意味着能够直接影响挖矿的难度,除非碰撞攻击能够以某种方式加速寻找这样特定散列值的过程,否则对挖矿的直接影响有限。
假如真的被破解了怎么办?
这势必将会引发全球数字安全的信任危机。
整个 Web2 安全就先崩了,各种银行系统和政府机构可能都会紧急停止。加密货币的 3 万亿市值可能在这里会显得微不足道。
当然,好在加密货币是分叉升级的。对于比特币来讲,这种可怕的情况,肯定需要通过比特币改进提案(BIP)和硬分叉升级算法核心加密算法。这些问题早就已经在社区内经过广泛的讨论,也有很多备选方案。哪怕是量子计算突破了,届时也有会有相应的抗量子的算法去升级。
总而言之
突破了,但是不多。
我们只是在之前的研究上往前走了一点,这从学术上来讲当然是突破,非常值得关注。
尽管如此,距离破坏性的破解仍有不小的差距,短期内对加密货币的影响可能也是有限的。比特币和各种加密货币依旧安全,我们的裤衩子保住了。
对于任何安全敏感的数字系统来说,对新的密码学研究成果保持警觉是至关重要的。如果有任何证明 SHA-256 算法在实际中存在严重弱点的发现,那将可能会对比特币产生重大影响,包括但不限于信任度的损失和安全协议的改变。相信比特币开发者和社区的大家都会密切监视情况,并在必要时准备进行安全升级。
对于 OneKey ,我们始终将用户资产安全放在第一位置,我们在安全攻防上投入巨大的时间与金钱,与顶尖安全实验室保持密切合作,并积极参与安全领域论坛、关注密码学安全新动态。未来也会积极输出相关内容动态,欢迎关注!
0xTodd@0x_Todd回帖补充内容:
一篇很好的密码学技术分享。
我想补充两句:
即便某个哈希算法真的被破解,也不算是“天塌了”。
试图找到一个绝对安全、永不破解的算法 ≈ 试图找到一个永动机。
最早的 SHA-1 算法,当年也风靡一时,但如今也容易被暴力破解,原因就是位数少,算法简单。
后面改进出的 SHA-2,安全性大幅提升。然后,又根据 SHA-2 诞生了 64 轮计算的威力加强版 SHA-256。
大家经常说,破解比特币私钥(即从地址倒推私钥)的难度类似于从整个宇宙中找到几个原子。
那么破解到第 31 轮,可能类似于在整个宇宙中找到某一滴水。
安全性层面,没有发生本质变化。
另外还有一个可供参考的事实,在 2013 年时,有研究人员已经破解到了第 28 轮。
已经过去 11 年,才多破解了 3 轮。我觉得这反而论证了 SHA-256 的可靠性。
如果按照整个速度,剩下的 33 轮,如果量子计算没有突破的话,没有几十年,都不太可能。
因此,再退一万步说(其实至少退一亿步说),即便 SHA-256 真的出了问题。那么,比特币以及其他所有加密货币还可以有大把时间升级算法。
大把时间是几十年哦,开发什么算法,达成什么共识,时间都够用了。
放心,绝对算不上“天塌了”。
深入浅出的文章,比网上的各种营销号务实多了。真理确实是掌握在少数明理的人手里!