\DeclareMathOperator{\keccak}{\mathrm{Keccak}} \DeclareMathOperator{ \concat }{x} $According to 凯克卡克网站,$\keccak(k \concat x)$是安全的:
与SHA-1和SHA-2不同,Keccak没有长度扩展的弱点,因此不需要HMAC嵌套结构。相反,可以通过简单地在消息前加上密钥来执行MAC计算。
我的问题是,$\keccak(x \concat k)$安全吗?
我读过$不是一个安全的MAC结构为什么$H(k\mathbin\Vert x)?,但我想它不适用于凯克卡克。$\endgroup$
发布于 2018-07-31 04:14:40
见论文“密码海绵函数”第5.11.2章(链接可找到这里):
请注意,还可以定义一个MAC函数,方法是将以下消息作为输入:$t =\左\ that {F(M \mathbin\Vert K)} \right\that _n$。在这种情况下,对手的优势是可以尝试脱机生成内部碰撞,即无需查询键控海绵函数。此外,她还可以尝试构造一个路径,到在吸收目标消息时发生的状态,从而导致具有相同MAC的第二条消息。
发布于 2018-07-31 02:42:25
Keccak非常可能是安全的,但对于多条消息,它的效率低于Keccak(k\x)。
与Keccak一起使用的标准MAC结构是FIPS 800-185中定义的KMAC。在KMAC中,首先要吸收海绵速率长度上的键垫。然后,您可以复制生成的Keccak状态,并对使用相同MAC密钥的所有消息重复使用它。
使用KMAC,您不需要对每条消息重复吸收相同的密钥。这可以为许多小消息(如VPN数据包)的MAC带来显著的性能好处。
简而言之:使用KMAC。
https://crypto.stackexchange.com/questions/61154
复制相似问题