Cryptography HMAC安全性-基于SHA-1的HMAC的安全性是否受到SHA-1碰撞攻击的影响?

Cryptography HMAC安全性-基于SHA-1的HMAC的安全性是否受到SHA-1碰撞攻击的影响?,cryptography,sha1,hashcode,hmac,cryptographic-hash-function,Cryptography,Sha1,Hashcode,Hmac,Cryptographic Hash Function,基于SHA-1的HMAC的安全性是否受到对SHA-1的碰撞攻击的影响?的安全部分详细描述了HMAC的安全含义。简而言之,在HMAC的安全受到威胁之前,确实需要进行非常强烈的攻击;对SHA-1现有的碰撞攻击显然不构成此类攻击。HMAC是专门为使攻击变得困难而设计的,普通的碰撞攻击通常是不够的: 消息的安全性 提出了认证机制 这取决于密码 散列函数H的属性: 抗碰撞查找 (仅限于以下情况: 值是秘密和随机的,在哪里 函数的输出不正确 攻击者明确可用), 以及消息身份验证 压缩函数的性质 应用于单个块

基于SHA-1的HMAC的安全性是否受到对SHA-1的碰撞攻击的影响?

的安全部分详细描述了HMAC的安全含义。简而言之,在HMAC的安全受到威胁之前,确实需要进行非常强烈的攻击;对SHA-1现有的碰撞攻击显然不构成此类攻击。HMAC是专门为使攻击变得困难而设计的,普通的碰撞攻击通常是不够的:

消息的安全性 提出了认证机制 这取决于密码 散列函数H的属性: 抗碰撞查找 (仅限于以下情况: 值是秘密和随机的,在哪里 函数的输出不正确 攻击者明确可用), 以及消息身份验证 压缩函数的性质 应用于单个块体时的H值(in HMAC这些区块部分是 攻击者未知,因为它们包含 内H计算结果 尤其是,不能完全 由攻击者选择)


我建议阅读整个章节;它更详细地说明了什么样的攻击足以破坏HMAC,以及需要付出多少努力。

已知的针对HMAC的最强攻击基于攻击频率 哈希函数H(“生日攻击”)[PV,BCK2]的冲突,以及 对于最小合理的哈希函数来说是完全不切实际的

作为一个例子,如果我们考虑像MD5那样的哈希函数 输出长度等于攻击者需要的L=16字节(128位) 获取计算的正确消息身份验证标记(使用 在大约264个已知明文上使用相同的密钥K!)。这会 需要在H、an下处理至少2个64个块 在任何现实场景中都不可能完成的任务(块长度为64 字节在一个连续1Gbps的链路中需要250000年,并且 在这段时间内不更改密钥K)。这次袭击 只有在碰撞中存在严重缺陷的情况下才可能成为现实 发现函数H的行为(例如,发现碰撞 在2**30条消息之后)。这样的发现将决定直接的结果 功能H的更换(此类故障的影响将是 对于H的传统用法,在 数字签名、公钥证书等)

注意:此攻击需要与常规攻击进行强烈对比 对没有密钥的加密哈希函数的冲突攻击 涉及2个64个离线可并行(!)操作 足以找到碰撞。后一次袭击即将发生 可行性[VW]***而对HMAC的生日攻击完全是 不切实际的(在上述示例中,如果使用哈希函数 例如,如果输出为160位,则264应替换为280。)*

正确实施上述建设,选择 随机(或加密伪随机)密钥,安全密钥 交换机制、频繁的密钥茶点、良好的保密性 保护钥匙是确保安全的所有基本要素
HMAC提供的完整性验证机制。

有关同一主题的讨论,请参阅。简而言之:碰撞攻击不会直接伤害HMAC。但冲突攻击的存在意味着构建哈希函数的压缩函数不是“随机预言”,这使得HMAC安全性证明无效。

感谢您的快速回复:)如果您要广泛引用RFC2104,诚实的做法是承认这一点。