$$ \ text {HMAC} _K(\ text {message})= H(K \ oplus \ text {opad} \ mathbin \ | H(K \ oplus \ text {ipad) } \ mathbin \ | \ text {message}))$$
是块大小$ b $的定义,其中$ b / 8 $是HMAC中的$ B $参数。这对于确定$ \ text {ipad} $和$ \ text {opad} $的大小(必须大于$ K $之前需要用$ H(K)$替换)的大小是必要的。但是,HMAC的原始和改进的安全性论据/“证明”是针对Merkle–Damgård结构制作的,因此不能直接应用于HMAC-SHA3。这些HMAC-SHA3-的安全性如何? $ \ ell $是吗? $ b $的四个$ \ ell $值分别是什么?可以做出什么样的安全性论据/“证明”?
HMAC-SHA3是否比通用海绵MAC还要坚固?
>
在Keccak提交的内容中对HMAC进行了简要讨论(第5.1.3节),但我不明白给出了证明或提出了安全性声明。
更新:引用第5.1.1节,我现在读为建议我们将HMAC块化$ b $所谓的比特率$ r $的倍数;因此,对于$ \ ell $为224(分别为256、384、512),$ b $是1152的倍数(分别为1088、832、576)。这与这些NIST幻灯片是一致的
#1 楼
Keccak提交的内容说:从[12]中的安全性声明来看,使用HMAC构造的PRF将抵抗明显的攻击,该攻击所需的查询少于$ 2 ^ {c / 2} $
这里的$ c $表示海绵的容量,即内部状态的有效大小(以位为单位)。
由于HMAC是确定性的迭代MAC(特别是它不使用随机数),因此它总是容易受到基于通用生日的存在性伪造攻击,要求MAC约为$ 2 ^ {c / 2} $查询(Preneel&Oorschot,1999)。
因此,HMAC-SHA3声称的安全级别与HMAC或其他确定性迭代MAC构造的总体最大可达到安全级别相同,相同的有效内部状态大小。
评论
$ \ begingroup $
@fgrieu:据我所知,论点是Keccak与通用海绵MAC构造(=消息的前缀; CSF§5.11.2)一起使用时,可提供此级别的安全性。 HMAC传递可以看作是一个实例。相应地,该安全性被认为来自Keccak扁平海绵声明(Keccak参考§1.5),这是一个相当有力的声明,宽松地说,Keccak与针对使用$ \ lll进行攻击的随机预言一样好2 ^ {c / 2} $的工作。
$ \ endgroup $
–伊尔马里·卡洛宁(Ilmari Karonen)
2014年4月26日在6:16
$ \ begingroup $
再读一遍报价,如果我们将“应抗拒”理解为“抗拒任何”,这是一个很好的主张。现在,我看到它如何表示查询数量的界限:$ 2 ^ {c / 2- \ xi} $对于带有派生的适度$ \ xi $和$ \ xi \ lll c / 2 $。您的回答和上面的评论帮助您了解问题的解决方法,非常感谢!现在,我看到对于HMAC-SHA3-$ \ ell $而言,绑定变为$ 2 ^ {\ ell- \ xi} $个查询,这比您对普通攻击的$ 2 ^ {\ ell / 2} $个查询要好得多引用并适用于HMAC-SHA-256和HMAC-SHA-512。
$ \ endgroup $
–fgrieu♦
2014年4月26日9:01
$ \ begingroup $
但是,我仍然不确定:•A)计算范围;也是$ 2 ^ {\ ell- \ xi} $个运算吗? •B)与HMAC相比,与通用海绵MAC有更好的结合吗? •C)在绑定推导中,对于HMAC和通用海绵MAC,块大小$ b $是比特率$ r $的倍数(对于$ \ ell $为$ \ ell $,其为1152、1088、832、576)。
$ \ endgroup $
–fgrieu♦
2014年4月26日在9:03
评论
我假设只要填充密钥是$ r $的倍数并且至少与$ c $一样大,就可以应用标准的HMAC安全级别。对于速率800和更大(1600位状态)已经是这种情况,但是SHA3-512的速率为576,因此“块大小”必须为1152。这将确保开始将第一个消息位吸收到状态开始在第一位。@Richie Frame:Keccak提交(以及我刚刚添加的NIST幻灯片)似乎使用比特率$ r $作为块大小,而没有您建议的至少$ c $条件。我没有知情的意见。
对于后期访问者,NIST现在为HMAC-SHA3进行CAVP验证(但非正式测试向量似乎不包含更改):csrc.nist.gov/groups/STM/cavp / ...