加密系统基础
说白了,加密系统就像一把锁和一把钥匙的关系。但这里的钥匙不止一种。我做了这么多年容灾方案,最深的体会是:不理解加密基础,就没办法设计出可靠的集群安全策略。今天咱们把这四种核心工具掰开揉碎讲清楚。
对称加密——最直接的锁
对称加密,就是加密和解密用同一把钥匙。就像你家的门锁,钥匙既能锁门也能开门。
我在项目中遇到过最典型的场景是数据库实时同步。两个集群节点之间传输数据,如果用对称加密,速度非常快。但问题来了——这把钥匙怎么安全地交给对方?这就是对称加密的命门:密钥分发。
常用对称加密算法
| 算法 | 密钥长度 | 典型场景 |
|---|---|---|
| AES | 128 / 256 位 | 集群内数据传输 |
| DES | 56 位 | 老系统兼容(不推荐) |
| 3DES | 112 / 168 位 | 遗留系统,速度慢 |
| SM4 | 128 位 | 国密标准,合规场景 |
你想想看,集群里有几十个节点,如果每个节点都用对称加密,密钥管理就是一场噩梦。我建议只在数据库连接或内存通道这种短生命周期的通信中使用,别把它扩散到整个集群。
非对称加密——两个钥匙的世界
非对称加密使用一对钥匙:公钥加密,私钥解密。公钥随便公开,私钥自己藏着。这就解决了密钥分发问题。
我记得第一次做跨机房容灾的时候,领导问:“两个机房之间加密怎么搞?”我说用非对称加密握手,然后协商一个对称会话密钥。实际上 RSA + AES 混合模式就是最常见的做法——非对称负责密钥交换,对称负责后续大数据量加密。
个人经验:非对称加密慢得惊人。RSA 2048 位每秒只能加密几千字节,而 AES-256 每秒能跑几个 G。所以千万别直接用非对称加密大文件,那是给自己挖坑。
主流非对称算法对比
| 算法 | 强度 | 密钥长度 | 特点 |
|---|---|---|---|
| RSA | 高 | 2048 / 4096 | 广泛,但慢 |
| ECC | 极高 | 256(相当于RSA 3072) | 密钥短,速度快 |
| SM2 | 高 | 256 | 国密,适用于政务项目 |
在集群环境中,非对称加密主要用于:节点身份认证、数字信封、TLS握手。别拿它加密业务数据,否则性能会崩。
哈希算法——指纹机
哈希算法把任意长度的数据变成固定长度的摘要。它不可逆,碰撞概率极低。这玩意儿就像文件的指纹,一小段就能验真伪。
我曾经处理过一个幽灵问题:两台机器上的同一文件,明明内容一样,但校验码不同。查了半天发现是文件结尾多了个换行符。从那以后,我再也不信肉眼比对了——只用哈希。
注意! MD5 和 SHA-1 已经被攻破,别再用了。我见过有项目还在用 MD5 做数据完整性校验,赶紧换 SHA-256 或 SM3。
常用哈希算法对比
| 算法 | 摘要长度 | 安全性 |
|---|---|---|
| MD5 | 128 位 | 已破解,仅用于非安全场景 |
| SHA-1 | 160 位 | 不推荐,有碰撞攻击 |
| SHA-256 | 256 位 | 安全,广泛使用 |
| SM3 | 256 位 | 国密,同等安全 |
在集群容灾里,哈希用来做数据一致性校验。比如同步数据后,两边算一下哈希值,不一样就说明传输有问题。
数字签名——电子印章
数字签名=哈希+非对称加密。先对数据算哈希,再用私钥加密这个哈希值。验证时用公钥解密哈希,再对比本地计算出的哈希。一致就证明数据未被篡改且来源可信。
嗯,这里要注意:数字签名不等于加密。签名的目的是防篡改和防抵赖,并不隐藏内容。很多人一开始搞混,包括我。
集群中的典型签名场景
- 节点之间发送心跳消息时加上签名,防止伪造节点加入集群
- 配置文件的签名校验,确保下发的是官方版本
- 容器镜像签名,避免被植入恶意代码
知识体系总览
下面这张 SVG 把四种工具的关系画清楚了。我画图有个习惯:先理清“用在哪”再讲“怎么用”。你看里面的箭头和分组,就明白它们各自的位置。
四种工具的关系与避坑
我在实际设计容灾方案时,经常看到新人犯一个错误:把非对称加密当万能药。其实场景决定了选型。
- 需要高速加密大量数据 → 对称加密(AES-GCM 模式更快)
- 需要安全分发密钥 → 非对称加密(但只做握手,不做数据加密)
- 需要校验文件完整性 → 哈希(记得加盐防彩虹表)
- 需要防篡改和防抵赖 → 数字签名
我曾经踩过的坑:在集群同步功能里,直接用 MD5 做数据一致性校验。后来发现有人能构造出相同 MD5 值的不同文件,差点导致数据污染。从那以后,所有新系统统一用 SHA-256。你别省那点计算量,安全马虎不得。