对于不同的密钥和消息对,HMAC 输出是否相同?

Could HMAC output be the same for different key and message pairs

如果我使用不同的密钥和消息,HMAC 的输出是否相同?

示例:

Out1 = HMAC(key1, msg1)
Out2 = HMAC(key2, msg2)

在任何情况下Out1=Out2都可以吗?

简而言之,当搜索受计算限制时,您找不到比可忽略概率更好的此类对。


HMAC 是一个伪随机函数 (PRF),假设使用的哈希函数是 PRF。

您正在寻找 HMAC 的冲突。理论上是有可能找到这样的对撞的。

如果使用n 位输出,则固定密钥的两对碰撞概率为1/2^n。如果 HMAC 是用 SHA256 发起的,那么两个随机对的碰撞将是 1/2^256。根据生日悖论,您需要大约 2^128 对才能在同一键下找到 50% 的碰撞。

也可以使用随机密钥执行类似的计算。