首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HMAC中的密钥如何防止修改HMAC?

HMAC中的密钥如何防止修改HMAC?
EN

Cryptography用户
提问于 2014-01-01 15:53:30
回答 1查看 9.4K关注 0票数 14

作为序言:我没有实现HMAC -我只是想了解它,因为它是我的计算机科学课程的一部分。

当使用基于哈希的消息认证代码时,我理解您需要保护MAC的前后,以防止对手在传输过程中修改HMAC。

代码语言:javascript
复制
HMAC (K,m) = H((K ⊕ opad) ∥ H((K ⊕ ipad) ∥ m))

因此,HMAC是通过散列密钥K的XOR来构造的,外部填充opad与密钥K XORed的哈希连接,内部填充ipad与消息连接。

有人能解释这些“带有填充的秘密密钥XORed”如何保护HMAC免受对手的修改(例如将数据附加到MAC的末尾)吗?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2014-01-01 22:45:59

要攻击MAC,攻击者通常需要查找他们没有MAC的消息的有效MAC (或者找到允许不同消息具有相同MAC摘要的消息冲突)。在这种情况下,攻击者将把数据附加到原始消息,而不是MAC本身,并试图为新消息获取有效的MAC。具体来说,这听起来像是在考虑长度扩展攻击

在HMAC中,内部哈希本身就容易受到长度扩展攻击,攻击者可以在不访问密钥的情况下成功计算有效的内部哈希摘要。但是,外部哈希不容易受到长度扩展攻击,因为执行HMAC身份验证的客户端只会将固定长度的字符串key || inner_hash输入其中。攻击者只控制内部哈希的可变长度输入,而不控制外部哈希。

这个答案或多或少地提到了另一个问题。有关摘录:

内部功能的作用是提供冲突抗性(将长消息压缩为短指纹,以便不知道密钥的人找不到具有相同指纹的一对消息),外部功能的作用是在此指纹上充当消息身份验证代码。

票数 10
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/12680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档