我已经读过一些东西,以至于HMAC构造能够减轻基础哈希中的冲突问题。

这意味着像HMAC-MD5这样的东西仍然可以被认为是安全的,可以验证加密数据?

评论

有点相关(强行强制HMAC)crypto.stackexchange.com/a/6753/5231

您可以通过以下链接找到有关HMAC-MD5总体安全性的答案。

#1 楼

是的,目前尚无针对HMAC-MD5的已知攻击。不需要碰撞抵抗力的HMAC:


“摘要:HMAC由Bellare,Canetti和Krawczyk(1996)证明是PRF,并假定(1)基本压缩函数为PRF和(2)迭代的散列函数具有较弱的抗冲突性,但是,最近的攻击表明,假设(2)对于MD5和SHA-1是错误的,从而消除了在这种情况下对HMAC的基于证明的支持。在唯一假设压缩函数为PRF的情况下证明HMAC是PRF,这可以恢复基于证明的保证,因为没有已知的攻击会损害压缩函数的伪随机性,这也有助于解释HMAC具有的抗攻击性即使使用具有(弱)抗碰撞性的哈希函数实现也显示sed。我们还表明,在压缩函数上比PRF还要弱的条件,即它是一个保护隐私的MAC,只要哈希函数满足计算上几乎是非常弱的要求,就足以建立HMAC是安全的MAC。通用,其价值再次在于已知的攻击不会使所做的假设无效。”但是,这并不意味着您应该在新的密码系统设计中使用HMAC-MD5。用布鲁斯·施耐尔(Bruce Schneier)的话来说,“攻击只会变得更好,永远不会更糟。”我们已经对MD5进行了实际的碰撞攻击,表明它没有达到其最初的安全目标;很可能在现在的任何一天,有人可能会想出办法将这些攻击扩展到可能危害HMAC-MD5安全性的新攻击中,更好的选择是将HMAC与不具有已知攻击的哈希函数一起使用,例如SHA-2或SHA-3。

评论


$ \ begingroup $
SHA-2已知攻击:en.wikipedia.org/wiki/SHA-2
$ \ endgroup $
–baptx
19年8月2日在13:43

$ \ begingroup $
@baptx任何加密原语都具有“已知攻击”。问题是他们是否会严重破坏全部回合。对于SHA-2,他们目前没有。除非您能证实SHA-2已被严重破坏,否则我想从答案中删除这些注释。
$ \ endgroup $
–马腾·博德威斯♦
19-09-19在10:42



$ \ begingroup $
“最近的攻击表明假设(2)对于MD5是错误的”最近发生了哪些攻击?选择的前缀攻击?为什么呢?
$ \ endgroup $
–user2679290
19-12-29在16:23

#2 楼

当将HMAC用于预期目的时,Ilmari Karonen的答案是正确的,但这并不意味着HMAC完全不受MD5碰撞的影响:



给出特定的密钥请注意,K xor opadK xor ipad与消息m无关。这意味着H((K xor ipad) || m)中的任何冲突都将导致HMAC发生冲突,即使有两个不同的消息也是如此。

对于HmacMd5,K xor ipad的长度为64个字节。因此,如果您发现两条消息m1m2至少具有64个字节的公共前缀pre,则可以计算密钥K = pre xor ipad,这将在H((K xor ipad) || m1)H((K xor ipad) || m2)之间产生冲突,从而导致整个HMAC发生完全冲突。

这可以通过两种方法加以利用:


您不信任生成密钥的人,并且HMAC被滥用为一种校验和。
攻击者可以访问密钥,并且可以使用MD5选定的前缀攻击来引起冲突。

但是正如公认的答案所述,如果密钥是机密的并且由您或受信任的各方控制,则HmacMd5仍然是安全的。

评论


$ \ begingroup $
是的,在删除之前,已经有这种答案。该问题明确指出“用于认证加密数据”。计算校验和的用途和密钥的可用性与问题的那一部分垂直。无论如何欢迎使用加密货币,在这里非常欢迎您编写这些格式正确的答案!
$ \ endgroup $
–马腾·博德威斯♦
16 Jan 23 '13:44



$ \ begingroup $
我同意,但是,此信息对于到达此页面的许多人很有用,并且不会针对最初的问题提供不正确的信息。它清楚地表明,如果正确使用hmacmd5,它仍然是安全的。
$ \ endgroup $
–乔治·鲍威尔(George Powell)
16年1月23日在13:47