MD5 究竟如何容易受到碰撞攻击?

信息安全 密码学 哈希 已知漏洞 md5
2021-09-01 08:42:23

我经常读到 MD5(以及其他散列算法)容易受到碰撞攻击。我理解冲突部分:存在两个(或更多)输入,因此 MD5 将从这些不同且不同的输入中生成相同的输出。此处给出了 20 个此类输入的示例

很公平,但这具体是如何导致漏洞的呢?对具有这种缺陷的系统的攻击向量是什么?

例如,假设我有一个系统,它使用 MD5 简单地对用户密码进行哈希处理以进行“加密”。现在我想看两个场景。(为简单起见,还假设系统没有添加新用户/密码)。

场景 1:系统中的密码都不是可能产生冲突的输入。换句话说,所有经过 MD5 处理的密码都会生成唯一的哈希值。那里还有碰撞漏洞吗?

场景 2:系统中的密码之一就是这个美女(碰撞 14,列表中的消息1

Ó)\dvµ‡‚G ÌÕÀ˘∏8;å∑œPäÌ/+6éE≠3}˝óÙ|o‡¬{Ç9¸–Û≤‚Mgª%DWÌé$∞\˛UÊiJ;fÉ;™÷ÎQëµCI<˝y≠˜LùΩ]Owå˜1Ú'¬vo`âÃ(©tú√\îùf#4ú¿�(

所以存在另一个难看的字符串,它会与这个密码产生 MD5 冲突。但是,除非攻击者已经知道这些信息,否则漏洞是如何暴露的呢?

3个回答

我见过的一个常见示例涉及使用 MD5 对文档进行数字签名。

假设您有两个文件。其中一份文件非常无辜,另一份则带有恶意。由于您可以创建这两个文档,因此您可以使它们具有相同的 MD5 签名(例如,使用 postscript 制作 PDF)。

现在你让某人签署了无辜的文件(这通常是通过签署文件的哈希来完成),但是由于两个文件的哈希是相同的,这个人只是不小心也签署了恶意文件(可能会说类似“我允许这个人从我的银行账户中取出一百万美元)。现在你可以将恶意文件展示给其他人,因为文件中的冲突,他们会相信上面的签名。

看看这个链接 - http://th.informatik.uni-mannheim.de/people/lucks/HashCollisions/ - 查看解释和示例。

它的工作原理与 Oleksi 在他的回答中所说的完全一样:您有两个文档将生成相同的 MD5 哈希。哈希已签名,因此两个文档都可以是“有效的”。

密码散列适用于原像抗性:密码散列过程应该使得找到与给定输出(散列)匹配的输入(密码)在计算上是不可行的,通过尝试大量潜在输入和“幸运”来保存. “幸运”攻击仍然是一个问题,因为密码是由人类用户选择的,他们并不像人们希望的那样富有想象力和随机性;这就是为什么我们需要的不仅仅是一个简单的散列函数(我们需要盐,我们需要慢度;见这个)。但是,冲突对密码散列的安全性没有影响。随意产生碰撞的能力不会给攻击者额外的破解能力。

正如其他人指出的那样,冲突可用于涉及签名的其他设置中的攻击。在这些情况下,攻击者可以:

  1. 生成冲突的消息对,对这些消息的格式进行充分控制,以使一条消息看起来“无辜”,而另一条则适合攻击者的目标;
  2. 让看似无辜的消息由第三方签名,其签名功能从“按原样”散列消息开始

在这两种情况下,第三方都将生成签名,该签名对于两个消息都是有效的(就签名验证者而言)这就像让签名者在不向签名者显示的情况下对消息发出签名一样。2008 年进行了一次演示,“消息”是 X.509 证书,签名者是证书颁发机构。Flame 恶意软件中完成了相同概念的实际应用

需要指出的一点是,尽管原始签名容易受到冲突的影响,如上所述,但可以通过让签名者在其签名的开头包含一些随机性来保护它们。在伪造 X.509 证书的情况下,攻击者必须能够预测证书的所有位,直至公钥;这包括CA 选择的证书序列号。如果 CA 使用大的随机序列号,那么即使使用 MD5 作为哈希函数,攻击也不适用。另一方面,使用顺序或基于时间的序列号的 CA 是可预测的。


另一个对碰撞的担忧是关于安全证明在协议中使用的密码原语的某些特定假设下,可以证明某些密码协议是安全的;例如,一些使用散列函数的协议可以被证明是安全的,只要散列函数被假定为抗冲突或其他属性。一个例子是HMACHMAC 重用底层散列函数,并被设计为适应Merkle-Damgård 说服的散列函数,特别是 MD5 和整个 SHA 系列。这种散列函数是围绕内部“压缩函数”构建的。在假设压缩函数表现得像一个伪随机函数的情况下,HMAC 已被证明是安全的。

但是,如果 MD5 的压缩函数是 PRF,那么计算平均成本低于 2 64的 MD5 的碰撞是不可行的。我们知道如何产生 MD5 碰撞的成本远低于此。这意味着 MD5 压缩函数不是PRF。因此,这使 HMAC/MD5 上的安全证明无效。

这并不意味着我们知道如何通过碰撞来破坏 HMAC/MD5!“只是”,我们拥有的任何数学上的安全保证都像晨露一样在无情的正午阳光下蒸发了。在这方面,MD5 碰撞不是攻击者可以利用的工具,但仍然值得关注。