首页/安全/加密与证书速查/AES-GCM 认证加密(AEAD)
本包目录(305 条)
加密算法基础95 条
TLS 与 HTTPS60 条证书与 PKI30 条OpenSSL 实战30 条证书运维排查49 条密钥管理41 条

AES-GCM 认证加密(AEAD)

基于 CTR 加密与 GHASH 认证的 AEAD 模式(NIST SP 800-38D),同时提供机密性与完整性,是 TLS 1.2/1.3 与 IPsec 中主流的 AES 工作模式。

加密与证书速查安全更新于 2026-10-12
标准NIST SP 800-38D
IV 长度推荐 96 位(12 字节)
认证标签常用 128 位
结构CTR 加密 + GHASH 认证

Python 使用示例(cryptography)

Python 使用示例(cryptography)
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
import os

key = AESGCM.generate_key(bit_length=256)
aead = AESGCM(key)
nonce = os.urandom(12)                 # 96 位随机 nonce
ct = aead.encrypt(nonce, b"payload", b"aad")
pt = aead.decrypt(nonce, ct, b"aad")   # 认证失败抛 InvalidTag
同一密钥下 nonce 绝不能重复:GCM nonce 重用会泄漏认证子密钥并可伪造消息(forbidden attack),随机 nonce 的单密钥调用次数应控制在 NIST 建议上限内。

易错点

  • GCM 不提供密钥承诺:同一密钥下不同消息可能产生相同的认证标签前缀,需要承诺时应考虑 GCM-SIV 或 EtM 组合
  • 批量加密建议按设备或会话分密钥,避免随机 96 位 nonce 在单密钥下累积碰撞风险

数据来源与参考

  • NIST SP 800-38D(GCM 规范)
  • RFC 5288(TLS 中的 AES-GCM 套件)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌