长度延长攻击
在进行身份验证时,我注意到会话存储正在使用HMAC(基于哈希的消息身份验证代码)对会话进行身份验证。 HMAC通过使用秘密S和哈希函数H来验证消息M,以生成MAC。 消息和MAC(M,MAC)一起发送到客户端。
这样,当客户端发回会话及其MAC(M',MAC')进行身份验证时,服务器可以验证会话内容未被恶意用户修改。 服务器通过产生带有机密S和接收到的消息M'的新MAC来做到这一点。 如果新生成的MAC与接收到的MAC相匹配,则我们知道M = M',因此消息未修改。 注意,由于客户端不知道秘密S,因此即使他修改了消息,他也无法产生与服务器生成的MAC相匹配的MAC'。
吸引我注意HMAC的唯一事实是它依赖哈希函数。 我在问自己,如果我们已经有了哈希函数,为什么不能简单地用H(S || M)来生成MAC? 如果执行此操作,我们将受到哪种媒介攻击?HMAC如何涵盖该攻击?
2021-10-03 16:21:11
18KB
Rust
1