Skip to main content

附录 B. AEAD 算法分析 (AEAD Algorithm Analysis)

本节记录了用于推导 AEAD_AES_128_GCM、AEAD_AES_128_CCM 和 AEAD_AES_256_GCM 的 AEAD 算法限制的分析. 以下分析使用符号表示乘法 (*)、除法 (/) 和幂运算 (^),加上括号用于建立优先级. 还使用以下符号:

t: 认证标签的大小 (以位为单位). 对于这些密码,t 为 128.

n: 块函数的大小 (以位为单位). 对于这些密码,n 为 128.

k: 密钥的大小 (以位为单位). 对于 AEAD_AES_128_GCM 和 AEAD_AES_128_CCM 为 128; 对于 AEAD_AES_256_GCM 为 256.

l: 每个数据包中的块数 (见下文).

q: 端点创建和保护的真实数据包数量. 此值是在更新密钥之前可以保护的数据包数量的界限.

v: 端点将接受的伪造数据包数量. 此值是端点在更新密钥之前可以拒绝的伪造数据包数量的界限.

o: 攻击者进行的离线理想密码查询的数量.

以下分析依赖于生成每条消息所涉及的块操作数量的计数. 此分析针对大小高达 2^11 (l = 2^7) 和 2^16 (l = 2^12) 的数据包执行. 2^11 的大小预计是与常见部署模式相匹配的限制,而 2^16 是 QUIC 数据包的最大可能大小. 只有严格限制数据包大小的端点才能使用使用较小数据包大小推导出的更大机密性和完整性限制.

对于 AEAD_AES_128_GCM 和 AEAD_AES_256_GCM,消息长度 (l) 是关联数据的长度 (以块为单位) 加上明文的长度 (以块为单位).

对于 AEAD_AES_128_CCM,块密码操作的总数是以下各项的总和: 关联数据的长度 (以块为单位)、密文的长度 (以块为单位)、明文的长度 (以块为单位),加 1. 在此分析中,这被简化为数据包长度的两倍 (以块为单位)(即,对于限制为 2^11 字节的数据包,"2l = 2^8",否则为 "2l = 2^13"). 此简化基于数据包包含所有关联数据和密文. 这导致每个数据包的操作数量高估 1 到 3 个块.

B.1. AEAD_AES_128_GCM 和 AEAD_AES_256_GCM 使用限制分析 (Analysis of AEAD_AES_128_GCM and AEAD_AES_256_GCM Usage Limits)

[GCM-MU] 为 TLS 1.3 和 QUIC 中使用的 AEAD_AES_128_GCM 和 AEAD_AES_256_GCM 指定了具体界限. 本节使用几个简化假设记录此分析:

  • 攻击者在伪造尝试中使用的密文块数由 v * l 限制,即伪造尝试的数量乘以每个数据包的大小 (以块为单位).

  • 攻击者完成的离线工作量不会主导分析中的其他因素.

[GCM-MU] 中的界限比 [AEBounds] 中使用的界限更严格、更完整,这允许比 [TLS13] 中描述的限制更大的限制.

B.1.1. 机密性限制 (Confidentiality Limit)

对于机密性,[GCM-MU] 中的定理 (4.3) 确定,对于不重复随机数的单个用户,攻击者获得的真实和随机 AEAD 算法之间的区分优势的主导项是:

2 * (q * l)^2 / 2^n

对于 2^-57 的目标优势,这导致以下关系:

q <= 2^35 / l

因此,不发送大于 2^11 字节的数据包的端点不能在单个连接中保护超过 2^28 个数据包,而不会导致攻击者获得比 2^-57 目标更显著的优势. 允许数据包大小高达 2^16 的端点的限制改为 2^23.

B.1.2. 完整性限制 (Integrity Limit)

对于完整性,[GCM-MU] 中的定理 (4.3) 确定攻击者成功伪造数据包的优势不超过以下值:

(1 / 2^(8 * n)) + ((2 * v) / 2^(2 * n))
+ ((2 * o * v) / 2^(k + n)) + (n * (v + (v * l)) / 2^k)

目标是将此优势限制为 2^-57. 对于 AEAD_AES_128_GCM,此不等式中的第四项主导其余项,因此可以删除其他项而不会对结果产生显著影响. 这产生以下近似值:

v <= 2^64 / l

不尝试从大于 2^11 字节的数据包中移除保护的端点最多可以尝试从 2^57 个数据包中移除保护. 不限制已处理数据包大小的端点最多可以尝试从 2^52 个数据包中移除保护.

对于 AEAD_AES_256_GCM,相同的项占主导地位,但较大的 k 值产生以下近似值:

v <= 2^192 / l

这比 AEAD_AES_128_GCM 的限制大得多. 但是,本文档建议对两个函数应用相同的限制,因为任一限制都可接受地大.

B.2. AEAD_AES_128_CCM 使用限制分析 (Analysis of AEAD_AES_128_CCM Usage Limits)

TLS [TLS13] 和 [AEBounds] 没有为 AEAD_AES_128_CCM 指定使用限制. 但是,与 QUIC 一起使用的任何 AEAD 都需要使用限制,以确保保持机密性和完整性. 本节记录该分析.

[CCM-ANALYSIS] 用作此分析的基础. 该分析的结果用于推导基于 [TLS13] 中选择的使用限制.

对于机密性,[CCM-ANALYSIS] 中的定理 2 确定攻击者在理想伪随机排列 (Pseudorandom Permutation, PRP) 上获得的区分优势不超过以下值:

(2l * q)^2 / 2^n

[CCM-ANALYSIS] 中定理 1 中的完整性限制为相同数量的消息提供了攻击者严格更高的优势. 由于机密性优势和完整性优势的目标相同,因此只需考虑定理 1.

定理 1 确定攻击者在理想 PRP 上获得的优势不超过以下值:

v / 2^t + (2l * (v + q))^2 / 2^n

由于 "t" 和 "n" 都是 128,因此第一项相对于第二项可以忽略不计,因此可以删除该项而不会对结果产生显著影响.

这产生了一个关系,该关系将加密和解密尝试与仅机密性定理产生的限制相同的限制相结合. 对于 2^-57 的目标优势,这导致以下结果:

v + q <= 2^34.5 / l

通过设置 "q = v",可以产生机密性和完整性限制的值. 因此,将数据包限制为 2^11 字节的端点的机密性和完整性限制都为 2^26.5 个数据包. 不限制数据包大小的端点的限制为 2^21.5.


贡献者 (Contributors)

IETF QUIC 工作组获得了许多人的大力支持. 以下人员为本文档提供了实质性贡献:

  • Adam Langley
  • Alessandro Ghedini
  • Christian Huitema
  • Christopher Wood
  • David Schinazi
  • Dragana Damjanovic
  • Eric Rescorla
  • Felix Günther
  • Ian Swett
  • Jana Iyengar
  • 奥 一穂 (Kazuho Oku)
  • Marten Seemann
  • Martin Duke
  • Mike Bishop
  • Mikkel Fahnøe Jørgensen
  • Nick Banks
  • Nick Harper
  • Roberto Peon
  • Rui Paulo
  • Ryan Hamilton
  • Victor Vasiliev

作者地址 (Authors' Addresses)

Martin Thomson (editor)
Mozilla
Email: [email protected]

Sean Turner (editor)
sn3rd
Email: [email protected]