47

谁能指出使用的好处HMАC是什么?

例如,如果我有一个 textT和一个 key K,我可以使用任一HMAC-MD5算法或Md5(T + K)获取签名。

4

3 回答 3

38

HMAC 不易受到长度扩展攻击。

md5(T + K) 对于大多数用途应该没问题,除非你的对手有动机篡改你的消息并且具有非常好的计算能力。只要你控制T,生日攻击不适用,你只有蛮力攻击。但了解这些限制是件好事。如果您想采用这种方法,您可能需要使用 SHA1(T + K) 而不是 MD5。

md5(T+K) 肯定比 md5(K+T) 更好,攻击者可能会在您的消息中附加文本并生成另一个有效的 MAC。

对于 md5(T+K),问题是如果攻击者可以找到与 T2 的碰撞,使得 md5(T) = md5(T2),那么 md5(T+K) = md5(T2+K)。但这需要蛮力攻击。

注意:我说“只要你控制 T ”,因为如果可以对 T 进行更改(以不明显的方式),可以尝试生成 2 条消息 T1 和 T2,其中 T1 可以传递给 T 和 md5 (T1) = md5(T2)。现在这相对容易得多(我们说的是 2^64 而不是 2^128),原因是所谓的生日悖论或生日攻击。

注意: HMAC 的设计旨在避免此类扩展攻击。没有针对 HMAC 的已知攻击。

于 2011-04-05T10:41:50.080 回答
28

关于 HMAC的Wikipedia 文章对此给出了很好的解释。

在同一篇文章的安全部分,它继续说:

与单独的底层散列算法相比,HMAC 受冲突的影响要小得多。

因此,将 HMAC 添加到 MD5 散列将使通过彩虹表破解变得更加困难。

于 2011-02-19T15:17:30.487 回答
6

我建议阅读Bellare、Canetti 和 Krawczyk的 HMAC 论文。

于 2011-02-19T18:03:38.083 回答