有人能指出使用HMАC
的优势是什么吗?
例如,如果我有文字T
和密钥K
,我可以使用HMAC-MD5
算法或Md5(T + K)
来获取签名。
答案 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。