HMAC与简单的MD5哈希

时间:2011-02-19 15:05:49

标签: security md5 hmac

有人能指出使用HMАC的优势是什么吗?

例如,如果我有文字T和密钥K,我可以使用HMAC-MD5算法或Md5(T + K)来获取签名。

3 个答案:

答案 0 :(得分:36)

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的攻击。

答案 1 :(得分:25)

Wikipedia article on HMAC给出了很好的解释。

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

  与单独的基础哈希算法相比,HMAC受冲突的影响要小得多。

因此,将HMAC添加到MD5哈希会使通过彩虹表突破更加困难。

答案 2 :(得分:5)

我建议阅读Bellare,Canetti和Krawczyk的the HMAC papers