SHA1碰撞的可能性


68

给定一组100个长度相等的不同字符串,如何量化字符串不太可能发生SHA1摘要冲突的可能性?


澄清一下,如何拥有“不同但长度相等”的字符串?
KevinDTimm,2009年

5
@kevindtimm“ a”,“ b”,“ c”长度相等,但字符串不同
Joe Phillips 2009年

4
@安东尼,为什么这么明显?我不知道这是不是真的
菲利普斯

3
重新阅读时,很清楚。
KevinDTimm,2009年

1
这与以下问题有关:sites.google.com/site/itstheshappening至少发现了一次碰撞。
Christophe De Troyer,2015年

Answers:


144

替代文字

SHA-1生成的160位哈希值是否足够大以确保每个块的指纹都是唯一的?假设随机哈希值具有均匀分布,n个不同数据块的集合以及生成b位的哈希函数,则将存在一个或多个冲突的概率p由块对的数量乘以给定的一对将发生碰撞。

(来源:http : //bitcache.org/faq/hash-collision-probabilities


12
总之,发生碰撞的可能性约为10 ^ -45。那是非常非常不可能的。
Paul Lammertsma,2009年

4
但是SHA-1不是均匀分布,它可能大于此上限。我怀疑这个方程式是不正确的。至少等于。
卡梅尔2015年

1
这个答案没有考虑到2005年的中国发现,他们能够以2 ^ 69次迭代产生碰撞,而不是暴力破解schneier.com/blog/archives/2005/02/sha1_broken.html
Djarid '16

5
@Djarid重要的是不要混淆偶然的哈希碰撞和对抗性碰撞狩猎。前者是两个项目的哈希值发生冲突的概率,并遵循上面的公式(尽管,正如Kamel所指出的,分布不是完全均匀的,因此概率可能更高)。后者用于有意地尝试查找冲突,并依赖于发现和利用哈希中的弱点。密码散列试图抵御此类攻击,但对于更简单的哈希应用程序(不传输机密)而言,它们通常显得过分杀伤力。
Pierre D

当2 ^ b >> n ^ 2(并且2 ^ b非常大)时,该公式是准确的。我知道这是sha1案件的市长(如果不是全部)...但是为了记录!
MrIo

7

好吧,发生碰撞的可能性为:

1 - ((2^160 - 1) / 2^160) * ((2^160 - 2) / 2^160) * ... * ((2^160 - 99) / 2^160)

考虑一下在10个空间中发生2个项目碰撞的概率。第一个项目是唯一的,概率为100%。第二个是唯一的,概率为9/10。因此,两者唯一100% * 90%的概率为,而发生碰撞的概率为:

1 - (100% * 90%), or 1 - ((10 - 0) / 10) * ((10 - 1) / 10), or 1 - ((10 - 1) / 10)

这不太可能。您将不得不拥有更多的字符串,这样的可能性很小。

看看Wikipedia此页面上的表格; 只需在行之间插入128位和256位。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.