AEAD(Authenticated Encryption with Associated Data,带关联数据的认证加密)是一种现代加密模式,它同时提供机密性、完整性和真实性。以下是目前最常见、最广泛使用的 AEAD 算法,已被标准化并广泛应用于 TLS、VPN、数据库加密、API 安全等领域。
✅ 常见的 AEAD 算法列表
算法名称 | 类型 | 密钥长度 | 认证标签长度 | 主要应用场景 | 标准化 |
---|---|---|---|---|---|
AES-GCM AES-128-GCM , AES-256-GCM |
分组密码模式(CTR + GHASH) | 128/256 位 | 128 位 | TLS 1.3、HTTPS、IPSec、数据库加密 | NIST SP 800-38D, RFC 5116 |
ChaCha20-Poly1305 | 流密码 + MAC | 256 位 | 128 位 | TLS 1.3、移动端、WireGuard、Signal | RFC 7539 |
AES-CCM AES-128-CCM |
分组密码模式(CTR + CBC-MAC) | 128/256 位 | 64~128 位可变 | WiFi(WPA3)、IoT、蓝牙 LE | NIST SP 800-38C, RFC 3610 |
AES-GCM-SIV | GCM 的变种(nonce-misuse resistant) | 128/256 位 | 128 位 | 高安全场景,防 nonce 重用 | RFC 8452 |
XChaCha20-Poly1305 | ChaCha20 扩展版(长 nonce) | 256 位 | 128 位 | 密钥派生、长期密钥使用 | RFC 8439(草案) |
🔍 详细说明
1. AES-GCM(Galois/Counter Mode)
- 最广泛使用的 AEAD 模式。
- 基于 AES 的计数器模式(CTR)加密 + GHASH 认证。
- 支持硬件加速(Intel AES-NI),性能极高。
- 要求 nonce 唯一,重复使用会导致严重安全漏洞。
- TLS 1.3 默认推荐算法之一。
✅ 适用于:服务器、桌面应用、有硬件加速的环境。
2. ChaCha20-Poly1305
- 由 Daniel J. Bernstein 设计,Google 推广。
- ChaCha20:流密码,生成密钥流。
- Poly1305:消息认证码,验证完整性。
- 在无 AES 硬件加速的设备上(如移动设备、ARM 芯片)性能优于 AES-GCM。
- 被 Chrome、Android、iOS 广泛采用。
✅ 适用于:移动端、嵌入式设备、WireGuard VPN、Signal 协议。
3. AES-CCM(Counter with CBC-MAC)
- 结合 CTR 加密和 CBC-MAC 认证。
- 常用于资源受限环境。
- 是 WPA3 (WiFi 安全协议)和 蓝牙低功耗(BLE) 的标准加密模式。
- 性能略低于 GCM,但实现简单。
✅ 适用于:IoT 设备、无线通信、低功耗场景。
4. AES-GCM-SIV
- GCM 的改进版,具有 nonce 重用抵抗能力(nonce-misuse resistant)。
- 即使 nonce 重复,也不会像 GCM 那样完全崩溃。
- 使用 SIV(Synthetic Initialization Vector)结构,更安全但略慢。
- 适合高安全要求或难以保证 nonce 唯一性的场景。
✅ 适用于:密钥长期使用、分布式系统、防误用设计。
5. XChaCha20-Poly1305
- 是 ChaCha20-Poly1305 的扩展版本。
- 使用 192 位 nonce(而非 96 位),更容易实现"随机 nonce 而不重复"。
- 特别适合与密钥派生函数(如 Argon2、scrypt)结合使用。
- 常用于密码管理器、本地加密工具(如
libsodium
默认推荐)。
✅ 适用于:长期密钥、高安全本地存储、密钥派生场景。
📊 对比总结
算法 | 性能 | 安全性 | nonce 要求 | 硬件加速 | 推荐场景 |
---|---|---|---|---|---|
AES-GCM | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐☆ | 必须唯一 | ✅(AES-NI) | 服务器、TLS、高性能网络 |
ChaCha20-Poly1305 | ⭐⭐⭐⭐☆ | ⭐⭐⭐⭐⭐ | 必须唯一 | ❌(纯软件) | 移动端、无硬件加速设备 |
AES-CCM | ⭐⭐⭐☆☆ | ⭐⭐⭐⭐☆ | 必须唯一 | ✅ | IoT、蓝牙、WiFi |
AES-GCM-SIV | ⭐⭐⭐☆☆ | ⭐⭐⭐⭐⭐ | 可容忍重复(更安全) | ✅ | 高安全、防误用系统 |
XChaCha20-Poly1305 | ⭐⭐⭐⭐☆ | ⭐⭐⭐⭐⭐ | 更易保证唯一(长 nonce) | ❌ | 本地加密、密码管理器 |
✅ 如何选择?
场景 | 推荐算法 |
---|---|
Web 服务器 / TLS | AES-GCM 或 ChaCha20-Poly1305 (自动协商) |
移动 App | ChaCha20-Poly1305 |
IoT / 蓝牙设备 | AES-CCM |
高安全系统(防 nonce 重用) | AES-GCM-SIV |
本地文件加密 / 密码管理器 | XChaCha20-Poly1305 (libsodium 默认) |
VPN(如 WireGuard) | ChaCha20-Poly1305 |
📌 总结
目前最主流的 AEAD 算法是:
- AES-GCM:性能王者,广泛用于服务器端。
- ChaCha20-Poly1305:移动之王,软件实现最优。
- XChaCha20-Poly1305:安全之选,适合长期密钥。
- AES-GCM-SIV:防误用设计,适合高安全系统。
- AES-CCM:嵌入式/IoT 标准。
✅ 现代加密的最佳实践是:优先使用 AEAD 模式,避免手动组合加密和 HMAC。
在实际开发中,建议使用成熟的密码库(如 OpenSSL、libsodium、BoringSSL)提供的 AEAD 接口,避免自行实现。