密钥管理基础:对称与非对称密钥
聊密钥多活同步之前,得先把两种基本密钥类型搞透彻。
说白了,对称密钥和非对称密钥,就是两把不同的锁。
一把锁,开锁和锁门用同一把钥匙。
另一把锁,你有一把公钥用来锁门,别人有一把私钥才能开门。
这两者在跨机房场景下,处理方式天差地别。
对称密钥:速度快,麻烦也在共享
对称加密,像 AES、SM4 这些算法。
加密和解密用的是同一个密钥。
好处是什么?快。非常快。
我做过一次压力测试,AES-256 加密 1GB 数据,耗时不到半秒。
所以你在机房内部传输数据,或者加密磁盘、数据库,对称密钥是首选。
我曾经踩过一个坑: 公司两个机房之间用对称密钥加密通信,结果密钥直接在配置文件中写死。后来有人误删了其中一端的密钥文件,整个链路瘫痪。对称密钥的核心隐患,就是「共享」。你知道它,就得负责保护它。
它的问题很明显:
- 分发困难: 你要把密钥安全地送到对方手里。
- 数量爆炸: 每对通信双方都需要一个独立的密钥。N 个节点,密钥数就是 N*(N-1)/2。
- 同步复杂: 跨机房场景下,密钥更新必须同步。一个机房更新了,另一个没更新,谁也解不开谁。
我的建议: 对称密钥在机房间做多活时,尽量用临时会话密钥。每次通信生成一次,用完就丢,减少同步压力。不过,这不是本节重点,先放一放。
非对称密钥:安全第一,代价是慢
非对称加密,RSA、ECC、SM2 这些。
公钥公开,私钥自己藏好。
你想想看,这在跨机房场景下有多爽?
每个机房只需要保管自己的私钥,其它机房的公钥可以放心地写在代码里、存到配置中心、甚至贴到墙上。
为什么?因为公钥丢了没事,它只能加密或验签,干不了坏事。
但代价也很现实:
- 加密 1GB 数据?用 RSA-2048 加密,得几十分钟。
- 所以实际中,没人拿非对称密钥直接加密大量数据。
- 常见做法是用非对称密钥加密一个「对称密钥」,再用那个对称密钥去加密实际内容。这就是混合加密。
核心原则: 非对称密钥负责「建立信任」,对称密钥负责「高效传输」。
两者的核心区别,看这张表就够了
| 对比维度 | 对称密钥 | 非对称密钥 |
|---|---|---|
| 密钥数量 | 加密解密同1个 | 公钥+私钥,2个 |
| 安全性核心 | 密钥必须保密 | 私钥必须保密 |
| 性能 | 极快(硬件加速后更优秀) | 慢(慢几十到几百倍) |
| 分发难度 | 高(需要安全通道) | 低(公钥可直接公开) |
| 典型算法 | AES-256, SM4, ChaCha20 | RSA-2048, ECC P-256, SM2 |
| 跨机房多活同步方式 | 需要强一致性同步 | 只需同步公钥,私钥无需同步 |
实际应用中,怎么配合?
我来给你讲一个真实案例。
我曾经参与过一个两地三中心的项目。
两个机房之间的数据库同步,用的就是混合方案:
- 机房A 生成一个 AES-256 密钥,作为本次会话的对称密钥。
- 机房A 用机房B 的公钥(RSA-2048)加密这个 AES 密钥。
- 机房B 收到后,用自己的私钥解密,拿到 AES 密钥。
- 数据全程用 AES 加密传输。
- 会话结束后,AES 密钥立即丢弃。
这个模式的好处很明显:
- 公钥同步到所有机房,随便广播,不怕泄露。
- 私钥只在一个机房内部,不需要跨机房同步,安全隐患降到最低。
- 数据加密性能不受非对称加密拖累。
一个建议: 做跨机房多活时,永远优先考虑非对称密钥做身份认证和密钥协商。对称密钥只用于会话层,用完就丢。这能帮你省掉一半的同步冲突问题。
密钥的生命周期,不能忽略
光懂加密算法还不够。密钥是有寿命的。
从生成、存储、使用、轮换到销毁,每一步都有讲究。
- 生成: 一定要用硬件随机数生成器。别用 Math.random() 这种软件随机数,我之前真的见过有人这么干。
- 存储: 生产环境用 HSM(硬件安全模块)或者 KMS(密钥管理系统)。实在不行,也要放在独立的密钥服务器上,不能跟业务代码放一起。
- 轮换: 对称密钥建议每 24 小时轮换一次。非对称密钥,根据安全等级,3 个月到 1 年换一次。
- 销毁: 密钥不再使用时,必须彻底销毁。覆盖、消磁、物理销毁,一个都不能少。
提醒: 很多团队在密钥轮换时,只换新密钥,忘了旧密钥还在用。结果旧密钥泄露,新密钥也白换了。轮换一定要确保旧密钥完全退役。
为什么讲这些?因为多活同步冲突,很多时候不是同步链路本身的问题,而是密钥本身就没管理好。
比如,旧密钥明明该销毁了,结果另一个机房还在用它加密数据,冲突就来了。
什么时候用对称,什么时候用非对称?
我个人的项目经验,可以总结成两个判断标准:
- 看数据量: 加密大块数据(文件、数据库记录)→ 对称密钥。加密少量关键信息(传输密钥、数字签名)→ 非对称密钥。
- 看分发难度: 你能保证安全通道吗?能 → 对称。不能 → 非对称。
嗯,就是这么简单。
最后,给你看一眼整体知识框架。把对称和非对称的区别,以及它们在密钥生命周期中的位置搞明白,后面讲多活同步冲突时你才能做出正确的技术决策。
好了,这一章就到这儿。先把这两种密钥的特点、区别和应用场景记牢。