加密基础回顾:对称加密与非对称加密核心概念归纳总结
做可搜索加密之前,先得把基本功砸实。加密这件事,说白了就两个流派:对称和非对称。我做了这么多年安全系统,见过不少团队因为选错加密方案导致性能翻车或安全隐患。今天就好好聊聊这两个流派,以及它们在实际项目里该怎么用。
对称加密:一把钥匙开一把锁
对称加密,顾名思义,加密和解密用的是同一把钥匙。想象一下你有一个带锁的保险箱,只有一把钥匙能打开它。你用它锁上文件,也用它解开文件——这就是对称加密。
我最早做嵌入式加密模块时,芯片资源紧张,对称加密几乎是唯一选择。常用的算法有:
| 算法 | 密钥长度(位) | 分组/流模式 | 典型场景 |
|---|---|---|---|
| AES-256 | 256 | 分组(ECB/CBC/GCM 等) | 数据存储、传输加密 |
| ChaCha20 | 256 | 流(配合 Poly1305) | 移动端、TLS 1.3 |
| SM4(国密) | 128 | 分组 | 国内合规需求 |
| 3DES(已淘汰) | 168(有效) | 分组 | 遗留系统兼容 |
我的建议:除非有特殊合规要求,否则优先选 AES-256 GCM。GCM 模式自带认证,能防止密文被篡改。我之前处理过一个金融日志系统,客户要求加密后不能影响写入性能,用 AES-256 GCM 配合硬件加速,吞吐量基本打平明文写入。
非对称加密:一把锁配两把钥匙
非对称加密就有点反直觉了——加密和解密用不同的钥匙。你公开一把叫公钥,自己藏一把叫私钥。别人用你的公钥加密信息,只有你用私钥才能解开。这就解决了对称加密最头疼的问题:怎么安全地把密钥传给对方?
常见的非对称算法有:
| 算法 | 密钥长度(位) | 特点 | 典型应用 |
|---|---|---|---|
| RSA | 2048 / 4096 | 最成熟,计算慢 | 数字签名、密钥交换 |
| ECC(如 secp256k1) | 256 | 同等安全强度下密钥更短、更快 | 区块链、移动端 |
| SM2(国密) | 256 | 国产椭圆曲线算法 | 国内合规 |
我曾经踩过的坑:用 RSA 加密 4KB 以上数据时,性能直接崩了。非对称加密的运算量特别大,批量加密几乎不可用。后来我改成“对称加密内容 + 非对称加密对称密钥”的混合方案,才搞定。
对称 vs 非对称:核心差异一图看懂
下面这张图展示了两种加密模式的核心流程对比,你一眼就能看出区别。
对称 vs 非对称:一张对照表说清楚
| 维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 一把(共享密钥) | 两把(公钥 + 私钥) |
| 密钥分发 | 需要安全通道,困难 | 公钥可公开,方便 |
| 计算速度 | 快(硬件加速后可达 GB/s) | 慢(比对称慢数百到数千倍) |
| 安全性基础 | 密钥保密强度 | 数学难题(大数分解、椭圆曲线离散对数) |
| 典型密钥长度 | 128~256 位 | 2048~4096 位(RSA)/ 256 位(ECC) |
| 主要用途 | 数据加密(大块内容) | 数字签名、密钥交换、证书 |
| 抗量子攻击 | 较好(增大密钥即可) | 脆弱(Shor 算法可破解 RSA/ECC) |
混合加密:为什么是实际标配
你可能会问,既然非对称这么好,为什么不全用非对称?原因很简单——太慢了。我在公司做 HTTPS 性能优化时测过,RSA-2048 加密 16KB 数据需要约 5ms,而 AES-256 加密同样数据不到 0.01ms。这种差距在大流量场景下根本没法忍。
所以实际系统中普遍采用混合加密:
- 用非对称加密传递一个临时的对称密钥(比如会话密钥)
- 后续所有数据都用这个对称密钥加密
- 对称密钥用完就销毁
HTTPS 的 TLS 握手就是这么干的。我参与过的一个 IoT 项目,设备端用 ECC 做密钥协商,然后用 ChaCha20 加密传感器数据,既保证了密钥分发安全,又满足了低功耗要求。
核心结论:对称加密是“快而脆弱”,非对称是“慢而安全”。混合加密才是工程上平衡两者的最优解。做可搜索加密时,数据加密部分几乎都选对称加密(AES 为主),密钥管理和搜索令牌生成才会用到非对称或哈希。
避坑指南
- 不要用 ECB 模式:我见过一个新人用 AES-ECB 加密用户头像,结果相同像素块在密文里一模一样,直接暴露了图片结构。改用 CBC 或 GCM 吧。
- 密钥长度别图省:曾经为了性能把 RSA 密钥降到 1024 位,结果上线没多久就被 NIST 警告要求升级。现在基准是 RSA-2048 或 ECC-256。
- 随机数很重要:非对称加密需要随机填充机制(如 OAEP),否则可能被选择密文攻击。我调试过一个签名验证失败的问题,最后发现是随机数生成器种子没处理好。
好了,对称和非对称的基本盘就这些。接下来我们进入可搜索加密的核心领域——如何在不解密的情况下搜索密文。嗯,那才是真正有意思的部分。