如果文件长度相同,哈希碰撞的概率有多大?

3
我正在设计一个文件服务器应用程序,我想要检查客户端计算机上缓存的文件是否是保存在服务器上的最新版本。
我不太信任文件系统中的“更改日期”属性,因此我想比较文件中实际的字节。
我认为最快的方法是将文件长度和哈希字节发送到服务器(因为通过网络发送所有字节需要一些时间)。然后服务器首先检查文件长度,如果匹配,则计算位于服务器上的文件的哈希值,然后检查它是否与客户端计算的相同。
有人能告诉我当文件大小相同时哈希碰撞的概率有多大吗?(我目前使用MD5以获得速度)。
如果文件大小相同且哈希值相同,我可以假设内容相同吗?
谢谢!
1个回答

3

随机碰撞在MD5中是如此的不太可能,以至于几乎可以安全地忽略这种可能性。

然而,MD5已被证明在密码学上存在弱点,因此恶意对手可能会故意创建相互冲突的文件。一个著名的例子是:

2008年12月30日,在第25届混沌通信大会上,一组研究人员宣布他们使用MD5碰撞创建了一个中间证书颁发机构的证书,当通过其MD5哈希检查时,它看起来是合法的。

来源


1
谢谢!问题的恶意方面不是一个问题 :)你知道碰撞的数量级吗?比如说是一到多少? - Jakob Høgenes
1
@Jakob:对于两个特定的文件发生碰撞的概率大约是340282366920938463463374607431768211456中的1。在一组文件中发生碰撞的机会更大(但仍然极其、难以置信、惊人地不太可能)。 - Mark Byers
机会越低,我就越开心! - Jakob Høgenes
为了更加通用,对于一个N位的密码学安全哈希函数来说,碰撞的概率非常接近于2的N次方的倒数。 - Slartibartfast

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接