我知道不可能将 MD5 哈希值反转回其原始值。但是如何生成一组随机字符,这些字符在散列时会给出完全相同的值呢?那可能吗?
5 回答
查找与给定 MD5 哈希匹配的消息可以通过三种方式进行:
- 你猜原来的消息。对于密码和其他低熵消息,这通常相对容易。这就是为什么我们在这种情况下使用使用键拉伸。对于足够复杂的消息,这变得不可行。
- 您猜测大约 2^127 次,并得到一条适合该哈希的新消息。目前这是不可行的。
- 您利用通过加密分析获得的特定散列函数的原像攻击。对于 MD5 ,有一个,其工作因数为 2^123,但这仍然不可行。
目前对MD5的原像抗性没有有效的攻击。
有针对 MD5 的有效碰撞攻击,但它们只允许攻击者构造具有相同哈希的两条不同消息。但它不允许他为给定的哈希构造消息。
是的,可能会发生碰撞(因为您从较大的空间映射到较小的空间,这是您可以假设最终会发生的事情)。其实MD5
在这方面已经算是“破”了。
来自维基:
然而,已经证明 MD5不是抗碰撞;[3] 因此,MD5 不适用于依赖此属性的 SSL 证书或数字签名等应用程序。1996 年,发现 MD5 的设计存在缺陷,虽然这不是一个明显的致命弱点,但密码学家开始推荐使用其他算法,例如 SHA-1,后来发现它也很容易受到攻击。2004 年,在 MD5 中发现了更严重的缺陷,使得进一步将该算法用于安全目的值得怀疑——具体来说,一组研究人员描述了如何创建一对共享相同 MD5 校验和的文件。[4][5] 2005 年、2006 年和 2007 年在破解 MD5 方面取得了进一步进展。 [6] 2008 年 12 月,一组研究人员使用这种技术来伪造 SSL 证书的有效性,[7][8] 而 US-CERT 现在表示 MD5“
从某种意义上说,这是可能的。如果你有比散列本身长的字符串,那么你就会有冲突,所以这样的字符串就会存在。
但是,找到这样的字符串相当于反转散列,因为您会找到一个散列到特定散列的值,因此它不会比任何其他方式反转散列更可行。
专门针对 MD5?是的。
几年前,发表了一篇关于 MD5 散列漏洞利用的文章,该漏洞允许轻松生成数据,这些数据在散列时会给出所需的 MD5 散列(嗯,他们实际发现的是一种算法,可以找到具有相同散列的数据集,但你知道如何反过来使用它)。您可以在此处阅读该原理的概述。没有为 SHA-2 找到类似的算法,尽管将来可能会改变。
是的,你所说的叫做碰撞。任何散列机制中的冲突是当两个不同的明文在通过散列算法运行后创建相同的散列时。