1. 密码学基础:对称加密与非对称加密的概念、历史与核心区别
1.1 对称加密:从凯撒密码到 AES
对称加密(Symmetric Encryption)是密码学中最古老、最直观的加密方式。其核心特征是:加密和解密使用同一把密钥。通信双方必须在开始通信前,通过安全信道共享这把密钥。
历史演进
- 古典时期(约公元前100年):凯撒密码(Caesar Cipher)——将字母按固定位数移位,密钥就是移位值。这是最早的对称密码雏形。
- 维吉尼亚密码(16世纪):引入多表替换,使用关键词作为密钥,显著提升了安全性。
- 恩尼格玛机(二战时期):机械式转子密码机,将对称加密推向军事应用巅峰。
- DES(1977年):美国国家标准局颁布的数据加密标准,56位密钥,成为现代对称加密的里程碑。
- AES(2001年):高级加密标准(Advanced Encryption Standard),128/192/256位密钥,至今仍是全球最广泛使用的对称加密算法。
工作原理
对称加密的数学模型可表示为:
加密:C = E(K, P) // 使用密钥K加密明文P得到密文C
解密:P = D(K, C) // 使用同一密钥K解密密文C得到明文P
其中 E 和 D 分别是加密算法和解密算法,K 是共享密钥。常见的对称加密算法包括:
| 算法 | 密钥长度 | 分组大小 | 安全状态 |
|---|---|---|---|
| AES | 128/192/256 bit | 128 bit | 安全(推荐) |
| ChaCha20 | 256 bit | 流加密 | 安全(推荐) |
| DES | 56 bit | 64 bit | 已破解(不推荐) |
| 3DES | 112/168 bit | 64 bit | 已弃用 |
核心优势:加密速度快,适合大量数据加密。
核心挑战:密钥分发问题——如何安全地将密钥传递给通信对方?
核心挑战:密钥分发问题——如何安全地将密钥传递给通信对方?
1.2 非对称加密:公钥密码学的革命
非对称加密(Asymmetric Encryption),又称公钥密码学(Public-Key Cryptography),由 Whitfield Diffie 和 Martin Hellman 于1976年提出。它使用一对密钥:公钥(Public Key)和私钥(Private Key)。公钥可以公开分发,私钥必须保密。
历史演进
- 1976年:Diffie-Hellman 密钥交换协议发表,首次提出公钥密码学概念。
- 1978年:RSA 算法诞生(Rivest-Shamir-Adleman),基于大整数分解难题,成为最经典的非对称加密算法。
- 1985年:椭圆曲线密码学(ECC)被提出,使用更短的密钥提供同等安全强度。
- 2000年代至今:ECC 逐渐成为移动设备和端到端加密的首选方案。
工作原理
非对称加密的数学模型可表示为:
加密:C = E(PK, P) // 使用接收方公钥PK加密明文P
解密:P = D(SK, C) // 使用接收方私钥SK解密密文C
关键性质:从公钥推导出私钥在计算上不可行。常见非对称加密算法:
| 算法 | 密钥长度(推荐) | 数学难题 | 典型应用 |
|---|---|---|---|
| RSA | 2048/4096 bit | 大整数分解 | 数字签名、密钥传输 |
| ECC(如 Curve25519) | 256 bit | 椭圆曲线离散对数 | 端到端加密、移动设备 |
| DSA | 2048 bit | 离散对数 | 数字签名 |
安全强度对比:256位 ECC 密钥的安全强度 ≈ 3072位 RSA 密钥。这就是为什么现代端到端加密协议(如 Signal、WhatsApp)普遍采用 ECC 的原因。
1.3 核心区别对比
| 对比维度 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | 1个(共享密钥) | 2个(公钥 + 私钥) |
| 密钥分发 | 需要安全信道 | 公钥可公开分发 |
| 加密速度 | 快(硬件加速可达 GB/s) | 慢(通常慢 100~1000 倍) |
| 典型算法 | AES, ChaCha20, DES | RSA, ECC, DSA |
| 主要用途 | 批量数据加密 | 密钥交换、数字签名 |
| 安全基础 | 混淆与扩散 | 数学难题(NP问题) |
| 密钥长度 | 128~256 bit | 2048~4096 bit(RSA) |
1.4 对称加密与非对称加密的协作关系
在实际系统中,两种加密方式并非互斥,而是互补协作。典型的混合加密方案(Hybrid Encryption)流程如下:
- 密钥交换:使用非对称加密(如 ECDH)安全协商一个临时对称密钥。
- 数据加密:使用对称加密(如 AES-GCM)加密实际消息内容。
- 密钥封装:将对称密钥用接收方公钥加密后随密文一起发送。
常见误区:不要试图用非对称加密直接加密大文件。RSA 加密速度慢且密文膨胀严重(密文长度 ≈ 密钥长度)。正确的做法是:用 RSA/ECC 加密对称密钥,用对称密钥加密数据。
1.5 混合加密:端到端加密的基石
现代端到端加密(E2EE)系统几乎全部采用混合加密架构。以 Signal 协议为例,其核心设计如下:
- 密钥协商层:使用 X25519(ECC)进行 Diffie-Hellman 密钥交换,生成共享密钥。
- 数据加密层:使用 AES-256 或 ChaCha20 加密实际消息。
- 身份认证层:使用 Ed25519 数字签名验证通信双方身份。
为什么混合加密是 E2EE 的最佳实践?
1. 非对称加密解决了密钥分发难题。
2. 对称加密提供了高速批量加密能力。
3. 两者结合实现了安全性与性能的平衡。
1. 非对称加密解决了密钥分发难题。
2. 对称加密提供了高速批量加密能力。
3. 两者结合实现了安全性与性能的平衡。
1.6 安全通信中的密钥管理原则
无论采用哪种加密方式,密钥管理都是安全通信的核心。以下是必须遵守的基本原则:
- 密钥独立原则:不同用途使用不同密钥(加密密钥 ≠ 签名密钥 ≠ 身份密钥)。
- 前向安全性(Forward Secrecy):即使长期私钥泄露,历史会话密钥也无法被恢复。通过临时密钥交换(Ephemeral Diffie-Hellman)实现。
- 密钥轮换:定期更换密钥,限制单密钥加密的数据量。
- 安全存储:私钥必须存储在安全硬件(如 TPM、Secure Enclave)或经过加密的密钥库中。
实战建议:在设计端到端加密系统时,优先选择经过广泛验证的协议(如 Signal Protocol、TLS 1.3),而不是自行设计加密方案。密码学最大的敌人不是算法本身,而是实现中的错误。