对称加密和非对称加密有什么区别?
简化版
对称加密:加密和解密用同一把密钥,速度快,但「怎么把密钥安全地给对方」是难题(密钥分发问题)。非对称加密:用一对公钥 + 私钥,公钥加密只能私钥解、私钥加密只能公钥验,解决了密钥分发问题但慢。HTTPS 把两者结合——用非对称加密安全地传对称密钥,再用对称加密传数据。
详细版
| 维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥 | 一把密钥,加解密都用它 | 公钥 + 私钥 一对 |
| 速度 | 快(适合大量数据) | 慢(约慢几个数量级) |
| 密钥分发 | 难(怎么安全地给对方) | 易(公钥可公开) |
| 典型算法 | AES、DES、3DES、ChaCha20 | RSA、ECC、DH |
| 用途 | 加密业务数据 | 密钥交换、数字签名 |
- 对称加密:
密文 = 加密(明文, 密钥),明文 = 解密(密文, 同一密钥)。快,但通信双方必须先安全地共享这把密钥。 - 非对称加密:公钥公开、私钥保密。公钥加密的只有私钥能解(用于加密),私钥签名的用公钥能验(用于签名/认证)。
完整版教学
一、对称加密的痛点:密钥怎么给对方
对称加密本身很好——快、安全(AES 至今没被攻破)。它唯一的死穴是密钥分发:加解密要用同一把密钥,那么通信双方一开始怎么安全地共享这把密钥?
如果直接在网络上把密钥发给对方,中间人截获了密钥,之后所有加密都形同虚设。这就是「先有鸡还是先有蛋」的困境:要安全通信得先有共享密钥,可共享密钥本身又需要安全通信。非对称加密就是来打破这个困境的。
二、非对称加密怎么破解密钥分发
非对称加密用一对数学上关联的密钥:公钥和私钥。关键特性是——公钥加密的内容,只有对应的私钥能解密。
于是密钥分发问题迎刃而解:
- 服务器把公钥公开(谁都能拿,不怕泄露);
- 客户端用服务器公钥加密一个对称密钥,发给服务器;
- 只有握着私钥的服务器能解开,中间人拿到公钥也解不了。
这样就在不安全的网络上,安全地把对称密钥送到了对方手里。公钥可以随便公开,私钥只有自己有——这是非对称加密的精髓。
三、非对称加密的两种用法:加密 vs 签名
非对称的公私钥可以「反着用」,对应两个不同目的:
- 加密(保密性):用公钥加密,私钥解密。任何人都能用公钥加密发给你,但只有你的私钥能解 → 保证「只有你能看」。
- 签名(认证 + 完整性):用私钥签名,公钥验证。只有你的私钥能签,别人用你的公钥能验证「这确实是你签的、没被改」 → 证明「这是你发的」。
HTTPS 里两者都用到了:加密用于密钥交换,签名用于证书认证身份(详见「数字签名」那道题)。
四、为什么非对称慢,所以要混合
非对称加密基于大数分解、椭圆曲线等复杂数学运算,计算量远大于对称加密——同样数据量可能慢几个数量级。所以不能全程用非对称加密业务数据。
HTTPS 的混合方案:
- 非对称只在握手时用一次——安全地协商出对称密钥;
- 对称用于之后的所有数据——快。
用非对称解决「密钥分发」,用对称解决「大量数据加密」,各扬所长。这就是 HTTPS 混合加密的由来(详见「TLS 握手过程」那道题)。
五、常见误区
- ❌ 以为非对称加密「更高级所以全用它」——它慢,只适合密钥交换和签名,大数据用对称。
- ❌ 以为公钥加密、私钥解密是唯一用法——反过来私钥签名、公钥验证用于认证。
- ❌ 以为对称加密不安全——AES 很安全,它的问题只是密钥分发,非对称正好补这块。
- ❌ 把 DH/ECDHE 当成加密算法——它们是密钥交换算法,让双方协商出共享密钥,不直接加密数据。
六、常见误区与追问
| 考点 | 正确口径 |
|---|---|
| 对称加密 | 同一密钥加解密,快,但密钥分发难 |
| 非对称加密 | 公钥和私钥成对,慢,但便于分发和认证 |
| 混合加密 | 非对称协商密钥,对称加密数据 |
symmetric: K encrypts and decrypts
asymmetric: public key / private key
TLS: asymmetric key exchange + symmetric data encryption
HTTPS 同时用两者:非对称解决“怎么安全商量密钥”,对称解决“大量数据怎么高效加密”。
- 误区:非对称加密一定比对称加密更安全。 安全性取决于算法和密钥长度;非对称主要优势是密钥分发和签名。
- 误区:公钥必须保密。 公钥可以公开,私钥必须保密。
- 误区:私钥加密、公钥解密就是保密通信。 任何人都有公钥都能解开,这更像签名验证,不提供机密性。
- 追问:为什么对称加密快? 运算通常是分组/流式变换,计算成本远低于大整数或椭圆曲线运算。
- 追问:密钥分发难题是什么? 双方还没安全信道时,如何把同一个对称密钥安全交给对方。
- 追问:TLS 为什么混合使用? 兼顾身份认证、密钥协商和大流量传输效率。
七、加强记忆
对称加密一把密钥、快、但密钥分发难(AES);非对称加密公私钥一对、慢、但公钥可公开解决了密钥分发(RSA/ECC)。非对称有两种用法:公钥加密私钥解(保密)、私钥签名公钥验(认证)。HTTPS 混合两者——非对称协商出对称密钥、对称加密业务数据,兼顾安全与性能。