我正在寻找一个简单哈希算法的例子,可以证明它对于指定的输入长度容易受到多次原像攻击。
例如,如果我知道输入数据正好是160字节并生成一个16字节的散列,那么存在一些方法来查找长度为160字节的其他输入并生成相同的16字节散列而无需求助于纯暴力强迫。
请注意,我并不是指使用MD5或SHA1之类的东西。我知道这些旨在使这不切实际。该算法将是哈希算法的有缺陷设计的教科书示例以及如何实际利用该缺陷。我曾尝试使用Google,但最重要的是对已知安全算法的理论研究。
答案 0 :(得分:2)
一个简单的例子是XBOX中使用的基于TEA的哈希函数。 这个哈希函数很容易受到简单的第二次原像攻击。 缺点是它在Davis-Meyer结构中使用了密码TEA。 攻击利用了TEA具有相同的密钥。哈希碰撞可以 通过简单的位翻转找到。
描述这次攻击的书是Andrew“bunnie”Huang“Hacking the XBOX”。
答案 1 :(得分:1)
您要求的是弱哈希算法。强哈希算法很难。弱者很容易。
这是伪代码中的一首:
hash[0..15] = all 0
for i in range(0..159):
hash[i % 16] ^= data[i]
这里,每个散列字节是十个数据字节的xor
。很容易解决,是吗?我相信你能想到同样容易的。