加载中...

HMAC(Hash-based Message Authentication Code)是一种利用密码哈希函数和共享密钥计算消息认证码的构造,由 Bellare、Canetti、Krawczyk 于 1996 年提出,在 RFC 2104 中标准化。
HMAC 将密钥分别与内填充 ipad、外填充 opad 异或后进行两层嵌套哈希:HMAC(K, m) = H((K xor opad) || H((K xor ipad) || m))。这种双层结构规避了 Merkle-Damgard 哈希的长度扩展攻击,安全性可以归约到底层哈希函数的性质。
HMAC 无处不在:TLS 记录完整性、API 请求签名(如各云厂商的签名机制)、JWT 的 HS256、TOTP 动态口令、HKDF 密钥派生都以它为核心。
即使底层哈希(如 MD5、SHA-1)的抗碰撞性被攻破,对应 HMAC 的伪随机性在已知攻击下仍相对稳健,但新系统仍应选用 HMAC-SHA256 及以上。验证 HMAC 时必须使用常数时间比较,防止计时侧信道泄露。

登录 后参与讨论
暂无讨论,来发表第一条评论吧