密码学基础:对称加密与非对称加密核心概念
说实话,每次我向新人介绍可搜索加密,都会先问一个问题:你分得清对称加密和非对称加密吗?
这个问题看似基础,但很多人一深入就容易搞混。我自己刚入行那会儿也吃过这个亏——有次给客户做数据库加密字段设计,想当然选了非对称算法,结果性能直接崩了。从那以后我学乖了:选加密方式之前,先把两类密码学的底子摸透。
什么是对称加密?
对称加密,说白了就是加密和解密用同一把钥匙。
你想想看,假设你要把一个文件锁进保险柜,你锁上柜子的时候用的这把钥匙,打开柜子的时候还得用它。对称加密就是这种感觉:发送方用密钥K对明文加密得到密文,接收方拿到密文后用同样的密钥K解密,还原出原文。
典型对称加密算法
| 算法 | 密钥长度 | 分组大小 | 安全状态 |
|---|---|---|---|
| AES(高级加密标准) | 128/192/256位 | 128位 | 安全(推荐) |
| DES(数据加密标准) | 56位 | 64位 | 已不安全(不建议使用) |
| 3DES(三重DES) | 112/168位 | 64位 | 不推荐(性能慢) |
| SM4(国密) | 128位 | 128位 | 安全(国内标准) |
AES是我在项目中用得最多的对称加密算法。我记得前几年检视一个IoT项目,设备端资源很受限,最后就选了AES-128。128位密钥在安全性和性能之间找到了一个平衡点。
对称加密的优缺点
- 优点:加解密速度极快,适合大批量数据加密。我做过测试,同等条件下AES比RSA快上千倍。
- 缺点:密钥分发问题。怎么安全地把密钥送到对方手上?这个“送钥匙”的过程特别棘手。
什么是非对称加密?
非对称加密解决了一个核心痛点:密钥怎么安全送达。
它用了两把钥匙——公钥和私钥。公钥可以公开给所有人,私钥只有你自己保存。用公钥加密的数据,只有对应的私钥能解开。反过来,用私钥签名(不是加密),公钥能验证签名。
为什么会这样?
这里藏着一个数学原理——单向陷门函数。简单来说,从公钥推算出私钥在计算上是不可能的。你可以把公钥想象成一把打开的锁,谁都可以用它锁上消息;但只有持有私钥的人才能打开这把锁。
典型非对称加密算法
| 算法 | 密钥长度 | 典型用途 | 安全状态 |
|---|---|---|---|
| RSA | 2048/4096位 | 加密、数字签名 | 安全(推荐2048位以上) |
| ECC(椭圆曲线密码学) | 256位(等效于RSA 3072位) | 加密、签名、密钥交换 | 安全(更短密钥,更高效率) |
| SM2(国密) | 256位 | 加密、签名、密钥交换 | 安全(国内标准) |
我个人习惯推荐ECC。你看这个表——256位的ECC已经能提供和3072位RSA同级别的安全性,密钥体积小了一大截。我在做移动端项目时,ECC的握手速度快了将近一倍。
对称 vs 非对称:核心差异对比
直接看对比表格更清楚:
| 特性 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1个(共享密钥) | 2个(公钥 + 私钥) |
| 加解密速度 | 极快(硬件加速友好) | 慢(慢1-3个数量级) |
| 密钥分发 | 困难(需安全通道) | 容易(公钥可公开) |
| 典型应用 | 批量数据加密 | 密钥交换、数字签名 |
| 密码学性质 | 可逆(单钥) | 单向函数 + 陷门 |
| 安全假设 | 密钥保密 | 私钥保密 |
我再补充一个实际场景——你在网上逛淘宝用的HTTPS。
首先,你的浏览器和服务端用非对称加密(比如ECDHE)安全地交换了一个会话密钥。然后,后续所有数据都用这个对称密钥(比如AES)加密传输。这就是经典的非对称换对称方案,既安全又高效。
本章知识结构图
下面这张图帮你把两个体系的脉络理清楚:
组合使用的实战价值
我在做金融项目接口时踩过这个坑——直接拿RSA加密一笔交易的完整数据。结果呢?响应时间飙到好几秒,用户疯狂投诉。后来改成先用RSA交换一个临时AES密钥,再用AES加密交易数据,速度直接降到毫秒级。
这个模式我反复用了很多次:
- 用非对称加密(如RSA/ECC)协商一个临时对称密钥
- 用这个对称密钥(如AES)加密后续所有数据
- 定期更换对称密钥(这叫“密钥轮转”)
好了,对称和非对称的核心概念就讲到这里。下一部分我们会进入可搜索加密的话题——你会发现,这些密码学基础就是整个可搜索加密大厦的地基。