对称与非对称加密:速览与在 TLS 里的分工
更新时间:2026-09-17。网络协议域·安全。本篇是理解 TLS 握手 的密码学最小前置;证书里的公钥与签名见证书链与 PKI。
TLS 之所以又安全又高效,是因为它把两类特性互补的加密算法组合使用:非对称加密解决"双方从没见过面,怎么安全约定密钥、怎么验证身份",对称加密解决"约定好之后,怎么高速加密大量数据"。
一、对称加密:一把共享密钥
加解密用同一把密钥:
- 代表算法:AES(128/256 位,常见 GCM、CCM、CBC 模式)、ChaCha20。
- 优点:快、适合大数据量;有 AES-NI 硬件指令时开销极小。
- 难点:双方怎么在不被窃听的情况下先拥有同一把密钥(密钥分发问题);密钥多了管理困难。
| 模式 | 说明 |
|---|---|
| GCM(AES-GCM) | AEAD,同时提供加密+完整性认证,现代首选 |
| ChaCha20-Poly1305 | 流密码+认证,移动端无 AES 硬件时更快、恒定时间抗时序攻击 |
| CBC | 老式分组链接模式,历史上有 padding oracle 等问题,TLS1.3 已移除 |
二、非对称加密:公钥/私钥对
每方有一对数学相关的密钥:公钥可公开、私钥必须保密。两种基本用法:
- 公钥加密 → 私钥解密:谁都能用公钥加密,只有私钥持有者能解——用于密钥协商/加密。
- 私钥签名 → 公钥验签:私钥对数据的哈希签名,任何人用公钥验证它确实来自私钥持有者且未被篡改——用于身份认证/数字签名(证书、TLS 签名、代码签名)。
- 代表:RSA(加密与签名,密钥长 2048+)、ECC/ECDSA/Ed25519(椭圆曲线,更短密钥同等强度,证书小、握手省)。
- 优点:解决密钥分发与身份问题;缺点:慢得多,不适合直接加密大量数据。
- 密钥交换还有一类 Diffie-Hellman(DH/ECDHE):双方公开交换参数,各自在本地算出同一个共享秘密,窃听者算不出来。
三、哈希与 MAC:完整性从哪来
加密解决"看不懂",但还要防"被篡改":
- 哈希(Hash):SHA-256 等,把任意数据映射成定长指纹,单向、抗碰撞。用于指纹、签名的第一步、证书校验。
- MAC / HMAC:带密钥的消息认证码,验证"数据没被改且来自持密钥方"。
- AEAD(如 AES-GCM、ChaCha20-Poly1305):一次操作同时保证机密性 + 完整性,现代 TLS 统一用 AEAD,不再单独加密+MAC 拼接(历史上易出错)。
哈希不是加密(不能解密还原);MD5/SHA1 已不应用于安全场景。
四、数字签名与证书链
服务器怎么证明"我真的是 example.com"?它的证书里有公钥和域名,由上级 CA 用 CA 的私钥签名;客户端用预置的 CA 公钥验签,从而相信这张证书及其公钥属于该域名。完整机制见证书链与 PKI。
五、TLS 如何把两者配合起来
一次 TLS 握手的密码学分工(详见 TLS 握手):
bash
1. 身份与认证:服务器出示证书,客户端用 CA 公钥验证签名与域名(非对称/签名)
2. 密钥协商:用 ECDHE(或历史上 RSA)安全地得到一个共享密钥
3. 后续通信:双方用该共享密钥派生会话密钥,用 AES-GCM/ChaCha20 等对称 AEAD 高速加密为什么不全程用非对称?太慢。为什么不用纯对称?没法在不可信信道安全地共享密钥、也无法认证对方。组合使用扬长避短。
六、前向保密:为什么优先 ECDHE 而非 RSA 交换
- RSA 密钥交换:客户端用服务器公钥加密会话密钥,一旦服务器长期私钥将来泄露,历史抓包都能被解密。
- ECDHE:每次握手生成临时密钥对、用完即弃;长期私钥只用于签名认证,即使将来泄露也无法推出历史会话密钥——前向保密(PFS)。TLS 1.3 干脆只保留带 PFS 的临时交换(见 TLS 1.3)。
七、选型与常见误区
- 现代配置:TLS1.2/1.3 + ECDHE + AES-GCM 或 ChaCha20-Poly1305 + ECDSA 证书;弃用 RC4/3DES/MD5/SHA1。
- 误区:以为"用了 HTTPS 就绝对安全"——TLS 保传输机密性/完整性/服务器身份,不防应用漏洞、不保证网站本身可信。
- 误区:把哈希当加密存密码——存密码应加盐用慢哈希(bcrypt/argon2),不是 AES 也不是 MD5。
相关阅读
总结
对称加密(AES-GCM/ChaCha20)用一把共享密钥、快,适合加密大量数据但难分发;非对称加密(RSA/ECC)用公私钥对解决密钥分发、密钥交换和数字签名身份认证,但慢;哈希/MAC/AEAD 提供完整性;TLS 先用证书签名做身份认证、用 ECDHE 协商出共享密钥(并获得前向保密),之后全部用对称 AEAD 高速通信——两类算法各取所长。