加密基础回顾:对称加密与非对称加密核心概念归纳总结

做可搜索加密之前,先得把基本功砸实。加密这件事,说白了就两个流派:对称和非对称。我做了这么多年安全系统,见过不少团队因为选错加密方案导致性能翻车或安全隐患。今天就好好聊聊这两个流派,以及它们在实际项目里该怎么用。

对称加密:一把钥匙开一把锁

对称加密,顾名思义,加密和解密用的是同一把钥匙。想象一下你有一个带锁的保险箱,只有一把钥匙能打开它。你用它锁上文件,也用它解开文件——这就是对称加密。

我最早做嵌入式加密模块时,芯片资源紧张,对称加密几乎是唯一选择。常用的算法有:

算法密钥长度(位)分组/流模式典型场景
AES-256256分组(ECB/CBC/GCM 等)数据存储、传输加密
ChaCha20256流(配合 Poly1305)移动端、TLS 1.3
SM4(国密)128分组国内合规需求
3DES(已淘汰)168(有效)分组遗留系统兼容

我的建议:除非有特殊合规要求,否则优先选 AES-256 GCM。GCM 模式自带认证,能防止密文被篡改。我之前处理过一个金融日志系统,客户要求加密后不能影响写入性能,用 AES-256 GCM 配合硬件加速,吞吐量基本打平明文写入。

非对称加密:一把锁配两把钥匙

非对称加密就有点反直觉了——加密和解密用不同的钥匙。你公开一把叫公钥,自己藏一把叫私钥。别人用你的公钥加密信息,只有你用私钥才能解开。这就解决了对称加密最头疼的问题:怎么安全地把密钥传给对方?

常见的非对称算法有:

算法密钥长度(位)特点典型应用
RSA2048 / 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。这种差距在大流量场景下根本没法忍。

所以实际系统中普遍采用混合加密:

  1. 用非对称加密传递一个临时的对称密钥(比如会话密钥)
  2. 后续所有数据都用这个对称密钥加密
  3. 对称密钥用完就销毁

HTTPS 的 TLS 握手就是这么干的。我参与过的一个 IoT 项目,设备端用 ECC 做密钥协商,然后用 ChaCha20 加密传感器数据,既保证了密钥分发安全,又满足了低功耗要求。

核心结论:对称加密是“快而脆弱”,非对称是“慢而安全”。混合加密才是工程上平衡两者的最优解。做可搜索加密时,数据加密部分几乎都选对称加密(AES 为主),密钥管理和搜索令牌生成才会用到非对称或哈希。

避坑指南

  • 不要用 ECB 模式:我见过一个新人用 AES-ECB 加密用户头像,结果相同像素块在密文里一模一样,直接暴露了图片结构。改用 CBC 或 GCM 吧。
  • 密钥长度别图省:曾经为了性能把 RSA 密钥降到 1024 位,结果上线没多久就被 NIST 警告要求升级。现在基准是 RSA-2048 或 ECC-256。
  • 随机数很重要:非对称加密需要随机填充机制(如 OAEP),否则可能被选择密文攻击。我调试过一个签名验证失败的问题,最后发现是随机数生成器种子没处理好。

好了,对称和非对称的基本盘就这些。接下来我们进入可搜索加密的核心领域——如何在不解密的情况下搜索密文。嗯,那才是真正有意思的部分。