嵌入式暴力MD5sum的时间复杂度

时间:2011-03-15 09:22:09

标签: security hash cryptography time-complexity

我已经回答了很长一段时间的问题 - 找到包含静态嵌入在其中的相同MD5的编译二进制文件的MD5sum的时间复杂度是什么,比方说,作为字符串?

编辑:如果这还不是很清楚。我正在寻找时间复杂度解释的答案。

6 个答案:

答案 0 :(得分:1)

这可以在恒定时间内解决。

包含所有可能的MD5摘要的文件包含该文件的摘要。

答案 1 :(得分:0)

与蛮力几乎相同:计算md5sum是微不足道的,但制作一个与已知md5sum匹配的文件很难。

在最好的情况下,您正在寻找能够为您提供已知哈希的preimage(可能通过将数据添加到二进制文件中)。

答案 2 :(得分:0)

由于MD5具有良好的分布,因此真的很难。通过强制执行最好的方法是在文件中添加一些哈希值,并将无意义的数据附加到二进制文件的末尾,直到二进制文件与嵌入的二进制文件具有相同的哈希值。

另一方面,如果你想检查你的二进制文件是否完整和未经修改,最好将你的二进制文件拆分为3部分:哈希值之前的二进制文件部分,哈希本身以及之后的部分哈希值。连接第一个和最后一个部分,计算md5哈希值并将其嵌入到二进制文件中。

像这样(例子):

foo098f6bcd4621d373cade4e832627b4f6bar
foo | 098f6bcd4621d373cade4e832627b4f6 | bar
md5(foo+bar) = 3858f62230ac3c915f300c664312c63f
foo3858f62230ac3c915f300c664312c63fbar

答案 3 :(得分:0)

您想要做的事情需要哈希算法中的缺陷。事实上,MD5 isn't very secure,所以有可能。但我不知道任何已知的弱点如何能帮助你想做什么。即使是前像素攻击也无济于事,它需要是一个“选择前缀前像攻击”。

所以我想唯一可行的方法(今天)就是使用蛮力。

如果您正在寻找一种向二进制文件“添加安全性”的方法,截断哈希值,然后使用暴力破解。

答案 4 :(得分:0)

这也取决于情况。如果给出二进制文件,并且只需要在某个地方插入md5,那么答案可以是:0。因为有可能(并且我认为它可能在几乎所有情况下都是这样),所以没有插入md5产生相同的md5。

如果您有可能修改更多二进制文件(例如,通过填充空格可以填充任意数字),唯一可行的方法就是暴力。

答案 5 :(得分:0)

为了实现这一目标,您必须找到collision。这可以使用the prefixing attack against md5完成。请记住,这是唯一可能的,因为md5非常破碎。此攻击有一个time complexity of 2^24.1,可以在现代桌面下使用。