HKDF密钥派生
在线HKDF密钥派生工具,支持RFC5869提取与扩展流程、SHA-256/384/512、多格式IKM/PRK/Info输入及OKM导出,适用于协议密钥调度与加密系统开发。
HKDF密钥派生
RFC 5869 基于 HMAC 的提取-扩展密钥派生流程
工具说明
支持 HKDF-Extract、HKDF-Expand 与完整两阶段流程,适用于 TLS 密钥调度、协议联调与多用途子密钥生成。
HKDF 技术文档
HKDF(HMAC-based Key Derivation Function)由 RFC 5869 定义,采用“提取 + 扩展”两阶段从输入密钥材料中派生高质量子密钥。
该算法广泛用于 TLS 1.3、Noise、Signal 等协议,适合从高熵共享密钥构建分层密钥体系。
提取阶段:HKDF-Extract(salt, IKM) -> PRK
提取阶段把输入密钥材料中的熵集中为固定长度的 PRK:
- 输入 IKM 与可选 salt(空值时默认 HashLen 个零字节)
- 计算 PRK = HMAC-Hash(salt, IKM)
- PRK 长度恒等于哈希输出长度
扩展阶段:HKDF-Expand(PRK, info, L) -> OKM
扩展阶段按目标长度 L 迭代生成输出密钥材料:
- 计算 T(i) = HMAC-Hash(PRK, T(i-1) | info | counter)
- 连接 T(1) ~ T(N) 并截断得到 OKM
- 最大输出长度为 255 × HashLen 字节
典型应用场景
- TLS 1.3 密钥调度与会话子密钥派生
- Signal/Noise 协议中的链密钥与消息密钥生成
- ECDH 共享密钥后的用途分离(加密/认证/会话)
- 主密钥到多业务子密钥的分层派生
HKDF 与 PBKDF2 对比
| 维度 | HKDF | PBKDF2 |
|---|---|---|
| 标准 | RFC 5869 | RFC 8018 |
| 输入 | 高熵共享密钥 | 用户口令 |
| 工作方式 | 提取 + 扩展 | 高迭代拉伸 |
| 主要用途 | 协议密钥调度 | 密码存储与口令派生 |
安全实践建议
- HKDF 不用于弱口令,输入应具备足够熵
- info 应携带用途上下文,避免不同用途密钥混用
- 当同一 IKM 多次派生时建议使用不同 salt
- 避免直接使用 PRK,应继续扩展得到最终业务密钥
参考资料
- RFC 5869 - HMAC-based Extract-and-Expand Key Derivation Function
- RFC 8446 - TLS 1.3 Key Schedule
- Signal Double Ratchet Specification