作为序言:我没有实现HMAC -我只是想了解它,因为它是我的计算机科学课程的一部分。
当使用基于哈希的消息认证代码时,我理解您需要保护MAC的前后,以防止对手在传输过程中修改HMAC。
HMAC (K,m) = H((K ⊕ opad) ∥ H((K ⊕ ipad) ∥ m))因此,HMAC是通过散列密钥K的XOR来构造的,外部填充opad与密钥K XORed的哈希连接,内部填充ipad与消息连接。
有人能解释这些“带有填充的秘密密钥XORed”如何保护HMAC免受对手的修改(例如将数据附加到MAC的末尾)吗?
发布于 2014-01-01 22:45:59
要攻击MAC,攻击者通常需要查找他们没有MAC的消息的有效MAC (或者找到允许不同消息具有相同MAC摘要的消息冲突)。在这种情况下,攻击者将把数据附加到原始消息,而不是MAC本身,并试图为新消息获取有效的MAC。具体来说,这听起来像是在考虑长度扩展攻击。
在HMAC中,内部哈希本身就容易受到长度扩展攻击,攻击者可以在不访问密钥的情况下成功计算有效的内部哈希摘要。但是,外部哈希不容易受到长度扩展攻击,因为执行HMAC身份验证的客户端只会将固定长度的字符串key || inner_hash输入其中。攻击者只控制内部哈希的可变长度输入,而不控制外部哈希。
这个答案或多或少地提到了另一个问题。有关摘录:
内部功能的作用是提供冲突抗性(将长消息压缩为短指纹,以便不知道密钥的人找不到具有相同指纹的一对消息),外部功能的作用是在此指纹上充当消息身份验证代码。
https://crypto.stackexchange.com/questions/12680
复制相似问题