3 对称加密与非对称加密基础归纳总结
说到加密,其实就两大类:对称加密 和 非对称加密。
别被名字吓到,说白了,核心区别就一个词——密钥。
3.1 对称加密:一把钥匙开一把锁
对称加密,你想想看,加密和解密用的是同一个密钥。
像一把钥匙开一把锁。发消息的人用这把钥匙锁上,收消息的人用同一把钥匙打开。
核心特点:
- 速度快:适合加密大量数据,比如文件、视频流。
- 密钥管理难:怎么把密钥安全地传给对方?这是个大问题。
我在项目中遇到过,用对称加密加密数据库里的字段。当时用的是 AES-256,速度确实快。但密钥怎么存?硬编码在代码里肯定不行。后来用了密钥管理服务,每次启动时拉取。
常见的对称加密算法,我这里列个表:
| 算法 | 密钥长度 | 分组大小 | 典型场景 |
|---|---|---|---|
| AES | 128/192/256 bit | 128 bit | 文件加密、通信加密 |
| DES | 56 bit | 64 bit | 老系统(已不推荐) |
| 3DES | 112/168 bit | 64 bit | 兼容旧设备 |
| SM4 | 128 bit | 128 bit | 国密标准 |
避坑指南:
我曾经见过有人用 DES 加密生产数据,觉得没问题。后来被安全审计发现,要求全部升级到 AES。DES 的 56 位密钥,用现在的算力,暴力破解可能就几小时的事。别再用它了。
3.2 非对称加密:两把钥匙,一对搭档
非对称加密就聪明多了。它有一对钥匙:公钥 和 私钥。
公钥你可以随便发给别人。私钥自己藏好,谁都不给。
它的逻辑是:
- 公钥加密的数据,只能用对应的私钥解密。
- 私钥加密的数据,只能用对应的公钥解密(这个叫数字签名)。
我个人习惯把公钥想象成信箱,谁都能往里投信。私钥是信箱钥匙,只有你能打开取信。
但非对称加密有个硬伤——慢。
比对称加密慢几百上千倍。所以不适合直接加密大段数据。实际应用中,它主要用来加密对称密钥。
常见的非对称加密算法:
| 算法 | 密钥长度 | 典型用途 | 安全性 |
|---|---|---|---|
| RSA | 2048 / 4096 bit | 加密、签名 | 高 |
| ECC (椭圆曲线) | 256 bit | 加密、签名 | 高(同等安全强度下密钥更短) |
| SM2 | 256 bit | 加密、签名 | 国密标准,与 ECC 类似 |
为什么 ECC 越来越流行?
本质上,ECC 的 256 位密钥,安全强度相当于 RSA 的 3072 位。密钥更短,计算更快,资源占用更少。我最近做的一个物联网项目,设备性能有限,全用的 ECC。效果不错。
3.3 对称与非对称加密的对比
嗯,这里我直接画了张对比图。你看一眼就明白了。
一句话总结:
对称加密用来加密数据,非对称加密用来加密密钥。这种组合拳,就是 HTTPS、SSH、VPN 等几乎所有安全协议的核心思想。
3.4 混合加密:取长补短
实际工程里,没人傻到只用一种。
都是混合加密。
流程是这样的:
- 客户端生成一个临时的对称密钥(叫会话密钥)。
- 用服务器的公钥(非对称)加密这个会话密钥,发过去。
- 服务器用私钥解密,拿到会话密钥。
- 之后通信,双方都用这个会话密钥(对称加密)加密数据。
这就解决了两个核心问题:
- 安全传输密钥:非对称加密搞定。
- 高效加密数据:对称加密搞定。
关于 RSA 的老话题:
我曾经维护过一套老系统,用的 RSA 1024。当时觉得够用了。直到前几年,安全团队说不达标,要求升级到 2048。现在看的话,新项目建议直接上 4096 或者换 ECC。RSA 密钥太长,计算开销其实也不小。
3.5 我的选择建议
嗯,最后给点实际建议。你设计系统时可以参考:
- 文件加密、数据库加密、通信流加密:选 AES-256-GCM。兼顾安全和速度,GCM 模式还支持认证,能防篡改。
- 密钥交换、数字签名、证书:选 ECC (P-256 或 P-384)。资源占用小,安全强度高。尤其是移动端和物联网设备。
- 国密合规要求:对称用 SM4,非对称用 SM2。
- 老系统兼容:如果实在改不动,用 RSA 2048 保底。但别再用 1024 了,我见过因为 RSA 1024 被攻破导致的数据泄露案例,代价很大。
一个小测试:
你想想看,一个 128 位的 AES 密钥,如果用 RSA 2048 加密后,密文长度是多少?
答案是 256 字节(2048 位 / 8)。因为 RSA 的输出长度跟密钥长度直接相关,跟输入数据长度无关。这是非对称加密的典型特性。
好了,关于对称和非对称加密的基础,就这些。记住那个核心思想——混合加密。后面讲密文检索 SDK 时,你会看到这个思想贯穿始终。