密码学基础:对称加密与非对称加密

密码学,说白了就是信息的伪装术。没有它,密钥隔离域的设计连地基都算不上。你在域里折腾半天,加解密通道被人一锅端,那还玩什么?我当年刚做安全系统时,觉得算法选哪个都行,结果被架构师怼了一顿——现在回看,那真是血泪教训。

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

对称加密的概念很简单。通信双方用同一把密钥来加密和解密。

拿 AES 来说吧。它是个分组密码,把明文切成 128 比特的块,然后用 128、192 或 256 比特的密钥反复混淆。加密和解密用的是同一个密钥。

核心公式:
加密:C = Encrypt(K, M)
解密:M = Decrypt(K, C)
其中 K 就是那把共享密钥。

但问题来了——密钥怎么安全地交给对方?你想想看,如果网络是明文传输的,那密钥本身就成了新靶子。这是对称加密的老大难问题。

避坑指南: 我在项目中遇到过团队用 ECB 模式加密图片的情况。结果怎么样?因为相同明文块会生成相同密文块,图片轮廓直接透出来了。嗯,永远别用 ECB 模式。用 CBC 或 GCM。

常见对称算法对比

算法密钥长度分组大小安全性状态
AES128/192/256128安全(推荐)
DES5664已破解(别用)
3DES112/16864逐渐淘汰
SM4128128国标,安全

实际开发里,AES-GCM 是我的首选。它内置了认证加密,能防篡改。一次操作,加密加完整性校验都办了。

非对称加密:公钥私钥这对好基友

非对称加密解决了密钥分发的问题。它用一对密钥:一个公开,一个私有。

  • 公钥加密,私钥解密:别人用你的公钥加密数据,只有你能用私钥解开。
  • 私钥签名,公钥验签:你用私钥签名消息,别人用公钥验证是你签的。

为什么它能做到?基于数学难题。RSA 依赖大数分解,ECC 依赖椭圆曲线离散对数。本质上,正向运算(生成密钥对、加密、解密)相对轻松,但逆向破解在计算上不现实。

注意性能差异: 非对称加密比对称加密慢好几个数量级。我在做支付网关时测过——RSA 2048 一次加密,够 AES 加密好几兆数据了。所以实际场景里,用非对称加密来协商对称密钥,然后用对称加密处理业务数据。

主流非对称算法速览

算法密钥长度等效常见应用安全状态
RSA2048+加密、签名安全
ECC256|384|521签名、密钥交换高效安全
SM2256国标签名/加密安全
DH2048+密钥交换安全

我个人的习惯是:新项目优先用 ECDSA 签名 + ECDH 密钥交换。效率高,密钥短,证书也紧凑。但记得检查曲线实现是否有侧信道漏洞,这事我踩过坑。

为什么密钥隔离域要同时用这两个

好,问题来了——既然非对称能解决密钥分发,那直接全用它不就行了?

不行。性能扛不住。在隔离域的加解密通道里,如果所有数据都用 RSA 处理,延迟会爆炸。

做法是这样:

  1. 客户端用服务器的公钥(非对称)加密一个临时对称密钥。
  2. 服务器用私钥解密,得到这个对称密钥。
  3. 后续所有的业务数据都用对称加密(AES-GCM)传输。

这就是混合加密系统的典型结构。HTTPS 就是这么干的。

关键点: 隔离域里,证书管理、密钥轮换、会话密钥生命周期全部要结合这两种密码体制来设计。不能只懂算法,还得懂怎么把它们拼成一个可信系统。

举个例子。在域内的密钥分发协议里:

  • 用 SM2 签名验证通信方身份。
  • 用 ECDH 协商会话密钥。
  • 用 SM4 加密会话数据。
  • 用 HMAC-SM3 校验完整性。

你看,四种密码原语各司其职。你不可能只用一种解决所有问题。我在迭代隔离域架构时,把这三个层次拆开设计,后期的维护成本低了不止一个量级。

对称与非对称加密在隔离域中的定位 对称加密与非对称加密:隔离域适用场景 对称加密 AES-GCM SM4-CBC 批量数据加密 会话加密 场景:大量业务数据,高速传输 痛点:密钥分发困难 性能优秀 · 必须配合密钥管理 非对称加密 RSA 2048 ECDSA / SM2 密钥协商 数字签名 场景:密钥交换,身份认证,少量关键数据 痛点:性能差,密文膨胀 安全分发 · 必须搭配对称加密使用 混合加密:非对称分发密钥 + 对称加密业务数据

到这里,你应该清楚了。对称加密和非对称加密不是二选一的关系。它们是工具链里的两个组件。在密钥隔离域系统里,你要学会把它们组合起来,让每个组件干它最擅长的事。

对了,我建议你在设计初期就把密码算法抽象成接口层。别和具体实现绑死。这样以后换算法、升版本,不用动整个系统。这是我迭代了三版隔离域架构之后,最后悔没早点做的事。