2022年发现SHA1碰撞有多容易?

1. 引言

随着硬件如GPU/CPU/ASIC的进步,当今实现SHA1碰撞的难度有多大?

2017年2月,阿姆斯特丹CWI研究所和谷歌实现了SHA1碰撞。

为实现SHA1碰撞,需要:

  • 总计900万兆(即百万的五次幂,具体为9,223,372,036,854,775,808)次SHA1计算。
  • 要完成攻击的首个阶段需要单一CPU计算6500年。
  • 要完成攻击的第二阶段需要单一GPU计算110年。

在这里插入图片描述
虽然这些数字看似非常巨大,但SHA-1破坏性攻击的速度仍然较暴力破解攻击快10万倍,这意味着前者确实具有可行性。

不同机器SHA1运算性能对比:【即意味着通过合作Bitcoin miner可在1秒内实现SHA1碰撞,而Summit需要约1天的时间。】
在这里插入图片描述
不同GPU SHA1运算性能对比为:
在这里插入图片描述
分别以三种型号GPU为例:
在这里插入图片描述
相应的成本开销为:
在这里插入图片描述
根据Hashcat benchmarks可知,当前Nvidia GPU计算SHA-1的hash rate为:

  • NVIDIA GeForce RTX 3090 ~22.6×109 hashes per second
  • NVIDIA GeForce RTX 3080 Ti ~21.7×109 hashes per second

根据AMD Radeon RX 6800 XT (reference) Hashcat Benchmarks 可知,AMD GPU的性能也基本相当:

  • SHA-1 Speed.#1…: 20.6×109

考虑到期MSRP价格为约$649,AMD RX 6800 XT似乎是进行SHA-1攻击的最佳设备。

根据2017年Shattered网站和论文可知:

  • 进行SHA1 SHAttered攻击需要 9,223,372,036,854,775,808 ≈ 2 63 \approx 2^{63} 263次 SHA1 运算。采用单CPU需要6500年,采用单GPU需要110年。

2020年SHA-1 is a Shambles∗ First Chosen-Prefix Collision on SHA-1 and Application to the PGP Web of Trust 论文 进一步改进了SHAttered攻击,相比于之前的 2 63 2^{63} 263次运算,提升为了仅需 2 61.6 = 3.5 × 1 0 18 2^{61.6}=3.5\times 10^{18} 261.6=3.5×1018次SHA-1运算。

若采用单个AMD GPU,需要约:
2 61.6 20.6 × 1 0 9 ≈ 169 × 1 0 6 \frac{2^{61.6}}{20.6\times 10^9}\approx 169\times 10^6 20.6×109261.6169×106
秒,约5.36年来实现SHAttered攻击。但是,可并行计算,增加为10个GPU可缩短为6个月,增加为30个GPU缩短为2个月。若为30个GPU,运行2个月,GPU理论成本约为$19470,电力成本约为$2000。

若租3个hash rate约为135GH/s的AWS p3.16xlarge instance,每个instance每小时成本约为$24.48,则每小时405GH/s的成本为$73.44,总共需要约2397.12小时(约3个月),总成本约为$176044。

随着GPU技术的发展,从2017~2022约5年的时间,进行SHA-1 SHAttered攻击由约110 GPU years缩短为约5.4 GPU years。

此外,注意,借助ASIC集群,成本约数百万美金,SHA-1的chosen-prefix碰撞可在1分钟内实现。从而可对使用SHA-1的TLS或SSH链接进行SLOTH攻击。

而如果借助超级计算机和比特币网络,速度将更快:
比特币网络当前的hashrate超过200TH/s,可在1秒内实现SHA1碰撞。不过,比特币网络的硬件是定制为计算SHA-256哈希运算的。借助US Department of Energy’s Oak Ridge National Laboratory (ORNL) 名为Summit的超级计算机,实现SHA1碰撞约需要1天。

参考资料

[1] How easy is it in 2022 to find a SHA1 collision?
[2] How reassuring is 64-bit (in)security?
[3] 谷歌首次成功实现SHA-1碰撞攻击
[4] Google宣布攻破SHA-1,从此SHA-1不再安全!

猜你喜欢

转载自blog.csdn.net/mutourend/article/details/124524506