密钥用途分离
密钥用途分离的原则是「一把密钥只承担一件事」:签名、加密、密钥协商分别使用不同的密钥。这样做可以限制单点泄漏的影响面——签名密钥泄漏不会影响数据机密性,加密密钥泄漏也不会让攻击者伪造签名;同时也满足合规对密钥用途的约束,便于授权管理与审计说明。
基本信息
| 用途分类 | 签名与验签、加密与解密、密钥协商、密钥派生 |
|---|---|
| 协议约束 | X.509 的 keyUsage 与扩展密钥用途可限制证书密钥用途 |
| 存量迁移 | 混用密钥制定替换计划,先减少用途再轮换 |
| 审计价值 | 用途清晰便于授权与影响面评估 |
| 常见误区 | 用同一密钥同时做签名与加密 |
典型使用场景
- 设计新系统的密钥体系时区分用途
- 审计中发现密钥超范围使用
- 事故影响面评估:先看泄漏的密钥能做什么
- 与 HSM 或 KMS 配合时按用途设置策略
- 存量系统整改:先加限制,再逐步拆分
用途与算法对照
用途与算法对照
签名 Ed25519 / ECDSA P-256 / RSASSA-PSS
加密 AES-256-GCM / ChaCha20-Poly1305 / RSA-OAEP
密钥协商 X25519 / ECDH P-256
派生 HKDF-SHA256 等 KDF
# 原则:不跨用途复用,不跨系统共用同一密钥用途与约束
| 用途 | 常见算法 | 约束方式 |
|---|---|---|
| 签名 | Ed25519、ECDSA、RSASSA-PSS | keyUsage: digitalSignature |
| 加密 | AES-GCM、RSA-OAEP | keyUsage: keyEncipherment |
| 密钥协商 | X25519、ECDH | keyUsage: keyAgreement |
| 对称数据加密 | AES-256-GCM | 密钥独立于签名密钥 |
TLS 中 ECDHE 的私钥用于签名,而 RSA 密钥传输场景的私钥用于解密,两类材料不应共用同一个私钥。混用不仅扩大影响面,也让审计时难以说明用途边界,排查问题时同样难以判断泄漏后的真实影响。
补充:拆分存量密钥时,建议先按用途列出清单并标注影响面,再决定拆分顺序;签名与加密混用的密钥通常优先处理,因为它同时影响完整性与机密性两个方向。