第4章 密钥管理基础:对称密钥与非对称密钥体系
密钥管理这事儿,说白了就是零信任架构的命根子。没有靠谱的密钥体系,你那些策略、边界、审计全是空中楼阁。今天咱们聊聊密钥体系的两大基石——对称密钥和非对称密钥。
我经常跟团队讲,搞安全审计的第一步不是看日志,是看你的密钥怎么生的、怎么存的、怎么换的。这个顺序很重要。你想想看,一个连密钥轮换周期都没定义的架构,审计能过关吗?
4.1 对称密钥体系
对称密钥,顾名思义——加密和解密用同一把钥匙。这就像你用一把锁锁了箱子,还得用同一把钥匙开。好处是快,坏处是钥匙怎么安全地交给对方?
我在项目中遇到过最典型的场景:内网微服务之间的通信加密。几十个服务,每个服务都得跟其他服务共享密钥。一开始觉得简单,但密钥分发这件事水很深。
4.1.1 核心算法
| 算法 | 密钥长度 | 安全性等级 | 典型应用 |
|---|---|---|---|
| AES-256 | 256 bit | 高 | 数据加密、TLS |
| ChaCha20 | 256 bit | 高 | 移动端、性能敏感场景 |
| SM4 | 128 bit | 中(国密) | 国内合规场景 |
| DES | 56 bit | 低(已废弃) | 无,应禁用 |
4.1.2 实战要点
- 密钥生成:必须用安全的随机数生成器。别自己写随机函数,用系统提供的接口。
/dev/urandom在 Linux 下就很稳。 - 密钥存储:内存里要加密,磁盘上更要加密。我的习惯是密钥绝不以明文形式落盘,哪怕是一秒钟。
- 密钥轮换:对称密钥的轮换周期我建议不超过 90 天。敏感场景可以缩短到 30 天。
- GCM 模式:AES 推荐用 GCM 模式,自带认证加密。CBC 模式已经有点过时了,容易出 padding oracle 攻击。
4.2 非对称密钥体系
非对称密钥,公钥和私钥成对出现。公钥可以公开,私钥必须保密。你想想看,这在零信任架构里多有用——你可以随便把公钥发给任何人,只有私钥能解密。
4.2.1 数学原理简述
说白了就是利用数学问题的单向性。RSA 依赖大整数分解,ECC 依赖椭圆曲线离散对数。这两类问题的共同点是:正向计算容易,逆向破解难。
我刚开始接触时觉得这些数学好深奥。后来做多了发现,你不需要深究数学证明,但必须理解:密钥长度和破解难度之间的关系。RSA 2048 位的安全强度大致相当于 ECC 256 位。所以有时候不是你用了非对称就安全,得看具体算法和长度。
4.2.2 典型算法对比
| 算法 | 密钥长度 | 安全强度 | 性能特点 |
|---|---|---|---|
| RSA-2048 | 2048 bit | 中高 | 加密慢,签名快 |
| ECDSA P-256 | 256 bit | 高 | 签名快,密钥小 |
| Ed25519 | 256 bit | 高 | 签名极快,天生抗侧信道 |
| SM2 | 256 bit | 高(国密) | 国密标准,国内合规必选 |
4.2.3 使用场景
- 身份认证:SSH 密钥对、TLS 证书、代码签名。这些都是非对称密钥的看家本领。
- 密钥交换:用非对称加密传输对称密钥。典型的 hybrid 方案——性能和安全两手抓。
- 数字签名:审计日志的完整性校验。每条日志用私钥签名,验签时用公钥,谁也别想篡改。
4.3 对称 vs 非对称:怎么选
这是一个经典问题。我的答案是:不要单选,要组合。零信任架构里,对称和非对称不是二选一,而是各司其职。
4.4 密钥生命周期管理
有了密钥还不够,你得管起来。密钥生命周期要覆盖以下阶段:
- 生成:安全的随机源,合规的算法库。
- 分发:非对称密钥可以通过公钥证书分发;对称密钥建议用非对称加密通道传输。
- 使用:内存中加密存储,使用完后立即清除。
- 轮换:定期更换,防止长期使用带来的泄露风险。
- 归档:过期密钥要保留一段时间(用于历史数据解密),但不允许用于新加密。
- 销毁:彻底删除,不留痕迹。磁盘上要覆写,HSM 中要调用安全删除接口。
4.5 总结
对称密钥和非对称密钥,没有谁比谁高级。它们是工具,关键看你会不会用。对称密钥快,适合干重活;非对称密钥灵活,适合做分发和认证。
零信任架构里,我倾向于这样的组合拳:用 ECDH 或 RSA 做密钥交换,用 AES-GCM 做数据加密,用 Ed25519 做日志签名。这套方案在多个项目中验证过,性能和安全都过得去。
嗯,最后补一句——每次做安全审计,我第一个查的就是密钥的生成源和存储方式。这两点有问题,后面再完美的策略都是白搭。