2. 对称加密与非对称加密基础归纳总结
说实话,加密这事,很多人觉得离自己很远。但你在云上存个数据库、调个 API,背后全是这些东西在撑。我以前也觉得「知道个概念就行」,直到有一次客户的数据泄露事件复盘,才发现问题就出在「密钥怎么安全地交给对方」上。嗯,从那以后,我对对称和非对称的理解就不再只是课本上的定义了。
这一章,我们来把这俩基础扎扎实实拎一遍。你先别急着看算法细节,重点是搞懂「它们各自解决什么问题」。
2.1 对称加密:快,但有个头疼的问题
对称加密,说白了就是用同一把钥匙,既锁箱子又开箱子。加密和解密都是同一个密钥。速度快,硬件友好,适合大数据量。
我个人的习惯是,只要不是必须用非对称的场景,优先选对称。为什么?因为 CPU 跑 AES 比跑 RSA 快两三个数量级。在云上,你每毫秒的花费都是钱。
常见对称算法
| 算法 | 密钥长度 | 分组大小 | 状态 |
|---|---|---|---|
| AES | 128 / 192 / 256 位 | 128 位 | 业界标准,云平台默认 |
| SM4 | 128 位 | 128 位 | 国密标准,国内合规必用 |
| DES / 3DES | 56 / 112 / 168 位 | 64 位 | 已淘汰,别在产品里用 |
| ChaCha20 | 256 位 | 流密码 | 移动端优化,Google 推荐 |
我记得早期有个项目,还在用 3DES 做支付流水加密。审计一来,直接被要求整改。后来我们切到 AES-256-GCM,顺便把 MAC 校验也搞定了。
工作模式要选对
光选算法还不够,模式更重要。我用过最坑的就是 ECB 模式——同样的明文块加密后一模一样,照片里能看到轮廓。你想想看,这种模式在云上做数据分区加密根本不行。
- ECB:别用。除非你只是教学演示。
- CBC:安全性够,但需要 IV,不支持并行。
- GCM:我最推荐。自带认证,防篡改,还能并行。
- CTR:可并行,但无认证,需额外加 HMAC。
2.2 非对称加密:慢,但解决了信任问题
非对称加密,也叫公钥加密。一对儿钥匙:公钥公开,私钥自己藏好。公钥加密的数据只有私钥能解开;反过来,私钥签名,公钥验证。
它慢,很慢。RSA-2048 的速度大概是 AES-128 的千分之一。所以你不可能用它加密整个文件。但它的价值在于「不用事先共享密钥」。举个例子,你给对方发一条加密消息,不需要像对称加密那样先把密钥传过去——公钥是公开的。
常见非对称算法
| 算法 | 典型密钥长度 | 用途 | 我的评价 |
|---|---|---|---|
| RSA | 2048 / 4096 位 | 加密、签名 | 最成熟,但密钥大,签名慢 |
| ECC (ECDH, ECDSA) | 256 位(等效 RSA-3072) | 密钥交换、签名 | 小钥匙高安全,云上首选 |
| SM2 | 256 位 | 加密、签名、密钥交换 | 国密,与 ECC 类似 |
| DSA / EdDSA | 2048+ / 256 位 | 仅签名 | EdDSA 更现代,性能好 |
为什么云上越来越倾向 ECC?你想想,一个证书里 RSA-2048 的公钥占 256 字节,而 ECC P-256 只有 32 字节。握手速度、存储成本都差很多。AWS 的 KMS 现在默认就用 ECC 做密钥交换。
2.3 对称 vs 非对称:一张表看明白
| 维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1 个 | 2 个(公钥 + 私钥) |
| 密钥分发 | 需要安全信道 | 公钥可公开,私钥本地 |
| 加密速度 | 快(~1 GB/s) | 慢(~1 MB/s) |
| 典型密钥长度 | 128 – 256 位 | 2048 – 4096 位(RSA) |
| 能否用于签名 | 否,需结合 MAC | 可以,私钥签名 |
| 典型场景 | 数据存储、传输加密 | 密钥交换、数字签名、证书 |
说白了,没有谁好。我常用的策略是:用对称加密保护数据,用非对称加密保护对称密钥。这就是下一章要讲的信封加密。
2.4 核心知识图:加密家族关系
下面这张图把对称与非对称的定位、关系以及常见算法串起来了,你可以先当个索引用。
2.5 实践中的避坑与选型建议
我做了这么多年云安全,总结了几条核心原则,你可以直接抄作业:
- 永远别自己发明加密协议。哪怕你觉得自己懂 AES、懂 RSA,组合在一起就可能出现中间人攻击。用现成的 TLS、JWT、AWS KMS 或者阿里云 KMS。
- 非对称加密不适合加密大数据。记得有一次,有同事直接用 RSA 加密一个 10MB 的文件,结果一次加密要 3 秒,而且密钥长度不够还爆出异常。后来改成信封加密,速度直接提升 50 倍。
- 对称密钥的分发要用非对称来保护。这是最经典的组合,也是本课程接下来要讲的信封加密的核心。
- 国密算法并非必须,但如果合规要求,就提前支持。我在政务云项目里吃过亏——开发到一半才被告知必须用 SM4+SM2,结果重构了很久。建议架构设计时就预留算法切换接口。
2.6 总结
对称加密快,但密钥分发是死穴。非对称加密解决了信任问题,但慢得让你肉疼。两者不是竞争关系,而是完美搭档。你在云上做数据保护时,脑子里一定要有「分层」的概念:数据用对称,对称密钥用非对称。
下一阶段,我们会把这两个家伙如何结婚讲清楚——信封加密。