【问题标题】:HMAC security - Is the security of the HMAC based on SHA-1 affected by the collisions attacks on SHA-1?HMAC 安全性 - 基于 SHA-1 的 HMAC 的安全性是否会受到 SHA-1 冲突攻击的影响?
【发布时间】:2011-03-21 01:21:20
【问题描述】:

基于 SHA-1 的 HMAC 的安全性是否会受到 SHA-1 冲突攻击的影响?

【问题讨论】:

    标签: cryptography sha1 hashcode hmac cryptographic-hash-function


    【解决方案1】:

    HMAC 的安全含义在the RFC 的安全部分中有详细描述。简而言之,在 HMAC 的安全受到威胁之前,确实需要非常强大的攻击;现有的对 SHA-1 的碰撞攻击当然不构成这种情况。 HMAC 专门设计用于使攻击变得困难,普通的碰撞攻击通常是不够的:

    消息的安全性 提出的认证机制 这里取决于密码学 散列函数 H 的性质: 抗碰撞发现 (仅限于初始的情况 值是秘密和随机的,其中 函数的输出不是 对攻击者明确可用), 和消息认证 压缩函数的性质 应用于单个块时的 H (在 HMAC 这些块是部分 攻击者不知道,因为它们包含 内部 H 计算的结果 尤其是不能完全 由攻击者选择)。

    我建议阅读整个部分;它更详细地说明了哪些攻击将足以破坏 HMAC,以及需要付出多少努力。

    【讨论】:

    • 感谢您的快速回复:)
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      例如,如果我们考虑像 MD5 这样的哈希函数,其中 输出长度等于 L=16 字节(128 位),攻击者需要 获取计算出的正确消息认证标签(使用 相同密钥 K!)在大约 264 个已知明文上。这个会 需要在 H 下处理至少 264 个块,一个 任何现实场景中不可能完成的任务(块长度为 64 在一个连续的 1Gbps 链路中,这将需要 250,000 年的字节数,并且 在这段时间内不改变密钥 K)。这次袭击 只有在碰撞中出现严重缺陷时才能变得现实 发现函数 H 的行为(例如发现碰撞 2**30 条消息后)。这样的发现将立即决定 替换函数 H(这种失败的影响将是 对于 H 在 数字签名、公钥证书等)。

      注意:这种攻击需要与常规攻击形成强烈对比 对没有密钥的加密哈希函数的冲突攻击 涉及到 264 个离线可并行化 (!) 操作 足以找到碰撞。后一种攻击正在逼近 可行性 [大众] ***而对 HMAC 的生日攻击完全是 不切实际的。 (在上面的例子中,如果使用哈希函数 例如,输出 160 位,然后 264 应替换为 280。)*

      正确执行上述构造,选择 随机(或加密伪随机)密钥,安全密钥 交换机制,密钥更新频繁,保密性好 密钥的保护都是确保安全的重要组成部分 HMAC提供的完整性验证机制。

      【讨论】:

      • 如果你要广泛引用 RFC2104,诚实的做法就是承认这一点。
      • 该死,我在搜索 RFC 2104 的摘录时找到了这个答案,lolz
      猜你喜欢
      • 2014-07-19
      • 2016-02-26
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 2021-12-11
      • 2017-04-08
      相关资源
      最近更新 更多