“MAC 函数必须在选择明文攻击下抵抗存在伪造”,这是什么意思?

信息安全 验证 密码学 哈希
2021-08-16 19:33:24

在阅读MAC(消息验证码)时,我遇到了这句话:

MAC 函数必须在选择明文攻击下抵抗存在性伪造

但我很困惑。什么resist existential意思,什么chosen-plaintext attacks意思?我是这个领域的新手,我需要你的帮助,所以有人可以解释和简化这两个术语吗?

用示例进行解释将不胜感激。

1个回答

所选明文的存在性伪造是攻击者有能力为您选择的明文获取有效 MAC,而无需知道生成正确 MAC 所需的密钥。

一个常见的向量是定时攻击,它的工作方式如下:

  1. 攻击者发送一条消息和一个 HMAC(实际上只是一个与 HMAC 长度相同的字节序列),并对来自解密系统的响应进行计时。

  2. 然后,攻击者重复发送相同的消息和相同的伪 HMAC,除了他现在迭代 HMAC 的第一个字节的每个 (256) 个可能值。

  3. 如果解密系统在发现字节之间不匹配时立即返回错误,则其中一个迭代(具有与解密系统计算的相同的第一个字节值的迭代)应该需要稍长的时间才能返回。如果攻击者可以检测到这种差异,他现在就知道给定解密系统的 HMAC 密钥的消息的正确 HMAC 的正确第一个字节。

  4. 攻击者发送相同的消息和 HMAC,这次使用已知正确的第一个字节,遍历第二个字节,直到再次找到导致解密系统响应错误的时间稍长的字节。攻击者现在知道正确 HMAC 的第二个字节。

  5. 对 HMAC 中的每个连续字节进行冲洗和重复,直到为攻击者选择的消息(无密钥)派生出有效的 HMAC。

这就是为什么 HMAC 比较需要是恒定时间的,在返回响应之前将提交的 HMAC 的所有字节与计算的 HMAC 进行比较。这样,无论任何错误字节的位置如何,出错的时间总是相等的。攻击者不再有办法分辨不正确的字节是什么或在哪里。

这个答案的大部分内容是直接从我的答案中复制而来的:Timing attack against HMAC in authenticated encryption?因此特别提到了 HMAC。