第4章 密钥管理基础:对称密钥与非对称密钥体系

密钥管理这事儿,说白了就是零信任架构的命根子。没有靠谱的密钥体系,你那些策略、边界、审计全是空中楼阁。今天咱们聊聊密钥体系的两大基石——对称密钥和非对称密钥。

我经常跟团队讲,搞安全审计的第一步不是看日志,是看你的密钥怎么生的、怎么存的、怎么换的。这个顺序很重要。你想想看,一个连密钥轮换周期都没定义的架构,审计能过关吗?

4.1 对称密钥体系

对称密钥,顾名思义——加密和解密用同一把钥匙。这就像你用一把锁锁了箱子,还得用同一把钥匙开。好处是快,坏处是钥匙怎么安全地交给对方?

我在项目中遇到过最典型的场景:内网微服务之间的通信加密。几十个服务,每个服务都得跟其他服务共享密钥。一开始觉得简单,但密钥分发这件事水很深。

4.1.1 核心算法

算法 密钥长度 安全性等级 典型应用
AES-256 256 bit 高 数据加密、TLS
ChaCha20 256 bit 高 移动端、性能敏感场景
SM4 128 bit 中(国密) 国内合规场景
DES 56 bit 低(已废弃) 无,应禁用
避坑提醒: 我曾经在审计中发现有团队还在用 DES 加密数据库连接串。那个项目号称零信任架构,结果密钥体系还是上世纪的水平。DES 和 3DES 现在一律禁止,别犹豫。

4.1.2 实战要点

  • 密钥生成:必须用安全的随机数生成器。别自己写随机函数,用系统提供的接口。/dev/urandom 在 Linux 下就很稳。
  • 密钥存储:内存里要加密,磁盘上更要加密。我的习惯是密钥绝不以明文形式落盘,哪怕是一秒钟。
  • 密钥轮换:对称密钥的轮换周期我建议不超过 90 天。敏感场景可以缩短到 30 天。
  • GCM 模式:AES 推荐用 GCM 模式,自带认证加密。CBC 模式已经有点过时了,容易出 padding oracle 攻击。
个人经验: 有一次我们做微服务改造,所有服务之间用 AES-CBC 加密通信。后来安全扫描发现 CBC 模式存在 IV 预测风险。改成 GCM 之后,不仅安全性上去了,性能还略好一点。

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 方案——性能和安全两手抓。
  • 数字签名:审计日志的完整性校验。每条日志用私钥签名,验签时用公钥,谁也别想篡改。
一个建议: 如果你的环境支持,优先考虑 Ed25519 做签名。性能比 ECDSA 好不少,而且实现上天然能抵抗侧信道攻击。我在一个新的零信任网关项目里全部切成了 Ed25519,签名速度快了将近 3 倍。

4.3 对称 vs 非对称:怎么选

这是一个经典问题。我的答案是:不要单选,要组合。零信任架构里,对称和非对称不是二选一,而是各司其职。

对称密钥 vs 非对称密钥 混合使用流程 非对称密钥 公钥加密对称密钥 对称密钥 加密业务数据(AES-GCM) 数字签名 私钥签名 -> 公钥验签 对称密钥适用场景 • 大量业务数据加密 • 存储加密(数据库、文件) • 内部通信(性能敏感) • 会话密钥 非对称密钥适用场景 • 身份认证(TLS、SSH) • 密钥交换(安全分发对称密钥) • 数字签名(审计日志、代码签名) • 非对称加密(小数据量) 最佳实践:非对称传递对称密钥,对称加密业务数据,非对称做签名审计 三者协同,形成零信任架构的密钥安全闭环

4.4 密钥生命周期管理

有了密钥还不够,你得管起来。密钥生命周期要覆盖以下阶段:

  1. 生成:安全的随机源,合规的算法库。
  2. 分发:非对称密钥可以通过公钥证书分发;对称密钥建议用非对称加密通道传输。
  3. 使用:内存中加密存储,使用完后立即清除。
  4. 轮换:定期更换,防止长期使用带来的泄露风险。
  5. 归档:过期密钥要保留一段时间(用于历史数据解密),但不允许用于新加密。
  6. 销毁:彻底删除,不留痕迹。磁盘上要覆写,HSM 中要调用安全删除接口。
曾经踩过的坑: 有一个客户把 RSA 私钥放在了 git 仓库里,还推到了远端。我审计时发现了这个隐患——那是核心 CA 的私钥。那一次之后,我要求所有项目必须使用硬件安全模块(HSM)或秘密管理服务(如 HashiCorp Vault),不能把私钥放在文件系统里。

4.5 总结

对称密钥和非对称密钥,没有谁比谁高级。它们是工具,关键看你会不会用。对称密钥快,适合干重活;非对称密钥灵活,适合做分发和认证。

零信任架构里,我倾向于这样的组合拳:用 ECDH 或 RSA 做密钥交换,用 AES-GCM 做数据加密,用 Ed25519 做日志签名。这套方案在多个项目中验证过,性能和安全都过得去。

嗯,最后补一句——每次做安全审计,我第一个查的就是密钥的生成源和存储方式。这两点有问题,后面再完美的策略都是白搭。