密钥生命周期七阶段
NIST SP 800-57 将密钥的生命周期划分为七个标准化的管理阶段,每个阶段都有对应的安全要求和操作规范:
阶段一:生成(Generation)
密钥生成的随机性是密码学安全的根基。生成密钥时必须使用密码学安全的随机数生成器(CSPRNG)或硬件真随机数生成器(TRNG),严禁使用数学意义上可预测的伪随机数生成器(如 C 标准库的 rand()、Java 的 java.util.Random)。
历史上因弱密钥生成导致的安全灾难性事件包括:2012 年,安全研究员 Heninger、Durumeric、Wustrow 和 Halderman 在论文「Mining Your Ps and Qs」中发现,互联网上数以万计的 TLS 证书和 SSH 主机密钥因为使用了不安全的随机数生成器(从嵌入式设备有限熵源生成)而出现重复的 RSA 公钥模数——攻击者可以通过计算两方的公钥模数最大公约数(GCD)来分解双方私钥,进而在数小时内破解大量 TLS/SSH 加密通信。
阶段二:分发(Distribution)
对称密钥(AES、ChaCha20)的分发是经典密码学的核心难题——双方如何在未加密通道中安全共享密钥。当前实践中,对称密钥分发通常通过以下机制解决:
- 密钥封装(Key Encapsulation):使用接收方的公钥(RSA/ECC)将对称密钥加密后发送,接收方用私钥解密。
- 密钥协商协议(Key Agreement):Diffie-Hellman(DH)和椭圆曲线 Diffie-Hellman(ECDH)允许双方在不安全信道上协商出一个共同的对称密钥,即使攻击者截获全部通信流量也无法推导出协商结果。
- 密钥管理系统(KMS):中心化 KMS(AWS KMS 等)生成加密密钥(DEK, Data Encryption Key)并返回两种形式——明文的 DEK(用于应用程序加密数据,在内存中短暂存在但不持久化)和由 KMS 主密钥(CMK, Customer Master Key)加密后的密文加密密钥(Encrypted DEK,可以与密文一同安全存储)。
阶段三:存储(Storage)