【发布时间】:2009-11-13 20:19:59
【问题描述】:
这是一道组合数学题,需要一些散列算法理论。
假设输入可以是 30 kB 到 5 MB 大小的任意随机字节序列(我猜这会产生相当多的输入值组合 :))
从字节序列计算的 MD5 哈希的前 4 个字节(或前 n 个字节)对于不同的文件相同的概率是多少?
如果这不能专门针对 MD5 哈希计算,那么任何生成均匀分布的 m 字节哈希的哈希函数在给定输入范围的前 n 个字节上计算冲突哈希的概率是多少?
【问题讨论】:
-
澄清:请不要评论MD5的安全性。我要解决的问题是如何检测相同的文件,而不是安全相关的。
-
最近实施的 ZFS 重复数据消除带来了一些有趣的见解;哈希冲突确实在那里引发了一次有趣的攻击。如果您可以知道您刚刚创建的文件与另一个文件相同,那么您实际上破坏了文件系统 安全性。事实上,文件系统 insecurity 是 SHA256 security 的直接后果 - 如果你有相同的 SHA256 哈希,你几乎知道你有相同的文件。
-
你能澄清一下你对字节的含义吗?当哈希以“E8:F0:D3:03:...”开头时,前四个字节是“E 8 F 0”还是“E8 F0 D3 03”?
-
我很惊讶这里没有一个 cmets 提到文件头问题。如果您使用 Excel、Word、AutoCAD、JPG 等常见类型,他们知道文件头可能会大大增加冲突率。
标签: hash cryptography md5 combinatorics