3. 加密技术基础:对称加密与非对称加密归纳总结

聊加密之前,先问个问题:你在项目里用什么加密?我见过不少团队直接一把梭「RSA-2048」,结果加解密慢得离谱。说实话,没有万能密码术,只有适合场景的方案。

这一章咱们把对称加密和非对称加密掰开揉碎讲清楚。我的目标很简单:让你下次选加密时,脑子里马上能浮现一张「地图」——哪个场景该用谁,怎么搭着用。

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

对称加密,说白了就是加密和解密用同一把密钥。你想想看,像你家大门钥匙——锁门和开门都用同一把,简单直接。

  • 核心逻辑:Cipher = Enc(Plaintext, Key),Plaintext = Dec(Cipher, Key)
  • 代表算法:AES、SM4、3DES(别用了)、ChaCha20
  • 优势:速度快,硬件支持好(AES-NI指令集)
  • 短板:密钥分发难,N个人通信就得N×(N-1)/2把密钥
我的习惯:在DSPM密文检索场景里,我几乎只用AES-256-GCM。为什么?因为明文被加密后还要做检索索引,GCM模式自带认证,省去额外MAC开销。之前有个项目用AES-CBC,结果被填充预言攻击搞了一个漏洞,修起来巨痛苦。

3.2 非对称加密:公钥公开,私钥保密

非对称加密是个更巧妙的玩法。每个用户生成一对密钥:公钥随便发,私钥自己藏。别人用你的公钥加密,只有你能用私钥解密——解决了对称加密的密钥分发死结。

  • 数学原理:依赖大数分解(RSA)、椭圆曲线离散对数(ECC)等单向陷门函数
  • 代表算法:RSA、ECC(ECDSA/ECDH)、SM2、Ed25519
  • 优势:密钥管理方便,支持数字签名和密钥交换
  • 短板:性能慢(比对称加密慢2~3个数量级),且密文会膨胀
避坑:我曾经见过有人直接用RSA加密大块数据(比如几MB的文件),结果程序跑了几十秒才加密完。记住:非对称加密永远只适合加密小数据(密钥、哈希值),大数据必须用对称加密。

说到密钥长度,我习惯做一张表留档,方便团队评审时快速对照:

特性 对称加密 非对称加密
密钥数量 1 个密钥 一对(公钥+私钥)
速度 极快(>1 GB/s) 慢(~100 KB/s 量级)
安全强度(等价) AES-128 ≈ RSA-3072 ≈ ECC-256 依赖具体算法
典型场景 大数据加密、全盘加密 密钥交换、数字签名、证书
常见算法 AES, SM4, ChaCha20 RSA, ECC, SM2, Ed25519

3.3 实践中的混合加密:博采众长

现实项目里没人会只选一种加密。最经典的组合就是「混合加密」:用非对称加密传递对称密钥,然后用对称密钥加密实际数据。你每天用的HTTPS就是这么干的。

我在做DSPM审计日志传输时,也用了这个套路:

  1. 客户端生成一个随机的AES-256密钥(会话密钥)
  2. 用服务端的RSA公钥加密这个AES密钥
  3. 将加密后的AES密钥和用AES加密的日志数据一起发过去
  4. 服务端用私钥解开AES密钥,再用它解密日志

这样做的好处是:既利用了对称加密的速度,又避开了密钥分发的难题。非对称加密只处理一个极小的密钥块,性能瓶颈可以接受。

核心结论:在密文检索这个课程主题里,你要记住——

  • 明文索引用对称加密(AES-SIV,保留可检索性)
  • 密钥分发和身份认证靠非对称
  • 混合加密是工程标配,不要自己发明协议

3.4 知识体系图

下面这张图把对称、非对称、混合加密的脉络串起来了。你可以把它当作「加密选型走查表」存手机上。

加密技术知识体系 对称加密 同一密钥 加密 = 解密 代表:AES-256 / SM4 速度:⚡⚡⚡ 极快 致命缺点:密钥分发 非对称加密 公钥/私钥 成对出现 代表:RSA-2048 / ECC 速度:🐢 慢 优势:解决密钥分发 混合加密 非对称传对称密钥 对称加密大块数据 如:TLS 握手 DSPM 日志传输 📌 选择指南 • 数据量大 + 速度要求高 → 对称加密(AES-256-GCM) • 密钥交换 / 数字签名 → 非对称加密(ECC或RSA) • 既要安全传输又要高性能 → 混合加密(如TLS 1.3) • 密文检索场景 → 对称加密保留索引结构,非对称负责密钥分发 • 记住:不要用RSA加密大数据块,否则你会后悔的

3.5 避坑清单(都是血泪教训)

  • 密钥长度别偷懒:AES至少128位(256更好);RSA至少2048位;ECC至少256位。我曾经见过生产线用RSA-512的扫描仪固件……一周就被破解了。
  • 随机数一定要真随机:random.randint生成的密钥等于没用。项目中我强制要求用secrets._bytes(32)或系统的/dev/urandom。
  • 不要自己拼协议:直接用TLS或COSE标准。我早年做过一个混合加密,自己发明了「先签名再加密」的糟心顺序,后来发现早就有人踩过这个坑。
  • 算法不要硬编码:保留算法协商机制。DSPM审计日志需要长期存储,未来可能需要迁移到抗量子加密。

嗯,加密基础先到这里。什么场景用什么,心里有谱了就好。后面咱们会把这些技术具体用到密文检索的审计日志架构里。到时候你再回头翻这张图,会发现所有设计都围绕一个核心:用对称加密解决效率,用非对称加密解决信任。