常见的AEAD算法

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-GCMChaCha20-Poly1305(自动协商)
移动 App ChaCha20-Poly1305
IoT / 蓝牙设备 AES-CCM
高安全系统(防 nonce 重用) AES-GCM-SIV
本地文件加密 / 密码管理器 XChaCha20-Poly1305(libsodium 默认)
VPN(如 WireGuard) ChaCha20-Poly1305

📌 总结

目前最主流的 AEAD 算法是:

  1. AES-GCM:性能王者,广泛用于服务器端。
  2. ChaCha20-Poly1305:移动之王,软件实现最优。
  3. XChaCha20-Poly1305:安全之选,适合长期密钥。
  4. AES-GCM-SIV:防误用设计,适合高安全系统。
  5. AES-CCM:嵌入式/IoT 标准。

现代加密的最佳实践是:优先使用 AEAD 模式,避免手动组合加密和 HMAC。

在实际开发中,建议使用成熟的密码库(如 OpenSSL、libsodium、BoringSSL)提供的 AEAD 接口,避免自行实现。