2. 密码学基础与工程约束
在 PKI 与 KMS 一体化架构中,密码学算法不是“可选项”,而是被密钥生命周期、合规基线和性能预算共同约束的工程组件。理解每种原语的能力边界,才能在设计密钥层级、接口和轮换策略时不至于把签名密钥当加密密钥用,或把哈希当完整性保护的全部。
四类原语的分工与工程定位
对称加密(如 AES-256-GCM、SM4-GCM)用同一密钥完成加解密,速度快、适合大数据量,但密钥分发是难点。在 KMS 中,对称密钥通常以“数据密钥”形式出现:KMS 生成明文数据密钥和密文数据密钥,明文只在内存中短暂存在,密文随数据一起落盘。非对称加密(如 RSA-OAEP、SM2)用公钥加密、私钥解密,解决密钥分发问题,但吞吐低,一般只用于封装对称密钥或小数据。哈希(如 SHA-256、SM3)把任意长度输入映射为固定长度摘要,用于完整性校验和指纹,但不提供机密性。数字签名(如 RSA-PSS、ECDSA、SM2 签名)用私钥签名、公钥验签,提供不可否认性,是证书和代码签名的核心。
这四类原语在 KMS 中并非孤立存在,而是通过“密钥派生”和“密钥封装”串联成一条密钥供应链。密钥派生函数(KDF,如 HKDF、PBKDF2、SM3-KDF)从一个高熵根密钥派生出多个用途隔离的子密钥;密钥封装(KEM 或 RSA-KEM)则用非对称公钥把对称密钥安全地传给对方。工程上必须坚持“一密钥一用途”:签名密钥不用于加密,加密密钥不用于派生,派生出的子密钥通过标签(label)和上下文(context)绑定用途,避免跨域复用。
密钥派生与封装的工程细节
密钥派生不是简单地把根密钥做一次哈希。以 HKDF 为例,它分为 Extract 和 Expand 两步:Extract 用盐(salt)把输入密钥材料压缩成固定长度的伪随机密钥(PRK),Expand 再用 PRK、可选上下文(info)和长度参数派生出目标密钥。工程上必须把“用途标签”放进 info 参数,例如 info = "encryption-key-v1" 与 info = "signing-key-v1" 派生出的密钥完全不同,即使根密钥相同。这样即使某个子密钥泄露,也无法推导出其他用途的密钥。
密钥封装则解决“如何把对称密钥安全地交给对方”。RSA-KEM 的做法是:发送方生成随机对称密钥 K,用接收方公钥加密 K 得到密文 C,把 C 和用 K 加密的数据一起发送;接收方用私钥解出 K,再解密数据。相比直接 RSA 加密数据,KEM 只加密短密钥,性能更好,也避免了 RSA 填充模式选择不当带来的风险。在国密场景中,SM2 的密钥封装与 SM4 数据加密组合,构成完整的信封加密链路。
性能、合规与生命周期的三角约束
性能约束最直接的体现是算法选择与调用频率。AES-256-GCM 在现代 CPU 上有硬件加速,吞吐可达 GB/s 级;而 RSA-2048 私钥解密一次约几毫秒,HSM 中可能更慢。因此 KMS 设计上应把非对称操作限制在“密钥封装”和“签名”两类低频场景,大数据加密一律走对称密钥。同时,KMS 应缓存公钥和证书,避免每次验签都回源查询。
合规约束决定了算法套件和密钥存储边界。如果业务面向国内金融或政务,SM2/SM3/SM4 是优先选项;如果面向国际或需要 FIPS 认证,则 AES、SHA-2、RSA/ECDSA 是基线。无论哪种,密钥都不得以明文形式离开 HSM 或安全模块,KMS 对外只暴露“使用密钥”的接口,而不是“导出密钥”的接口。
密钥生命周期约束则要求 KMS 把“生成、激活、使用、轮换、停用、归档、销毁”作为一等状态机来管理。轮换时不能直接删除旧密钥,因为历史数据仍需要旧密钥解密;正确做法是保留旧密钥为“解密专用”状态,新数据用新密钥加密。销毁则必须可证明、不可恢复,通常通过 HSM 的密钥销毁指令完成,并记录审计日志。
key_usage 字段(如 ENCRYPT_DECRYPT、SIGN_VERIFY、DERIVE),任何跨用途调用直接拒绝。这比事后审计更有效。一个可参考的密钥策略示例
以下是一份简化的密钥策略表,用于说明如何把算法、用途、生命周期和合规要求绑定在一起。示例参数为教学假设,实际部署需根据业务量和合规基线调整。
| 密钥类型 | 算法 | 用途 | 轮换周期 | 存储边界 |
|---|---|---|---|---|
| 根密钥 | AES-256 / SM4 | 派生 | 不轮换(离线备份) | HSM 内,不可导出 |
| 数据加密密钥 | AES-256-GCM / SM4-GCM | 加密解密 | 90 天或每 2^32 次调用 | 明文仅内存,密文落盘 |
| 签名密钥 | ECDSA P-256 / SM2 | 签名验签 | 1 年 | 私钥 HSM 内,公钥可导出 |
| 日志加密密钥 | AES-256-GCM | 加密 | 180 天 | HSM 内,审计可查 |
这张表的关键在于:轮换周期不是拍脑袋定的,而是由算法安全边界(如 GCM 的调用次数上限)和合规要求共同决定。数据加密密钥轮换后,旧密钥进入“仅解密”状态,保留至少一个数据保留周期;签名密钥轮换后,旧公钥仍需保留用于验证历史签名。只有把算法、用途、生命周期和存储边界四者对齐,PKI 与 KMS 的一体化架构才具备可审计、可轮换、可恢复的工程基础。