首页/网络/协议速查/HMAC 与 HKDF 密钥派生

HMAC 与 HKDF 密钥派生

HMAC 用密钥把哈希变成「带认证的完整性校验」;HKDF 从共享秘密派生出多个用途明确的密钥,是 TLS 1.3 密钥调度的基础。

协议速查网络更新于 2026-10-12

HMAC 示例

HMAC 示例
openssl dgst -sha256 -hmac 'secret-key' message.txt
# 安全比较请用 constant-time 实现(不要 == 比较)
HMAC 结构H(K ⊕ opad ‖ H(K ⊕ ipad ‖ m))
HKDFextract(提炼熵)→ expand(按 info 派生多把密钥)
TLS 1.3early/handshake/master 各阶段密钥均由 HKDF 派生
KDF 的 info/context 要写清用途:同一主秘密派生「加密密钥」与「登录令牌」必须用不同 info,避免跨用途复用。

易错点

  • 比较 MAC 时不能用普通字符串相等:会泄露时序信息,须 constant-time 比较

数据来源与参考

  • RFC 2104(HMAC)
  • RFC 5869(HKDF)
  • RFC 8446 §7.1

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌