解读 RFC 10032:AEGIS 认证加密算法的规范与结构

ネットワーク・RFCカテゴリを表すパンダのイラスト 网络・RFC

本文是利用人工智能生成的的技术解析与实现示例。所发布的代码和步骤基于一手资料构建,但未经作者在实机上进行运行验证。根据环境和版本的不同,运行结果可能会有所差异。本文根据官方规范,对 RFC 10032 中规定的高速认证加密(AEAD)算法“AEGIS”家族的组成要素及处理机制进行安全且实用的整理。我们将详细了解 AEGIS-128L 和 AEGIS-256 等各变体的特点、内部状态的更新方法,以及消息的加密与解密过程。


1. AEGIS 家族概述与定位

AEGIS 是在 CAESAR 竞赛中为高性能用途选出的 AEAD 算法家族。作为密码研究工作组(CFRG)的成果,它以信息性(Informational)文档的形式总结在 RFC 10032 中。

与 AES-GCM 等现有结构相比,它不仅在配备 AES 指令集的 CPU 上表现出优异的性能,而且在不使用 AES 指令的软件实现中也具有高速运行的特性。此外,AEGIS-256 和 AEGIS-256X 等变体的一个特点是,可以安全地选择随机 nonce,且没有实际限制。

在一手资料中,规定了以下主要变体。

  • AEGIS-128L: 具有 128 位密钥、128 位 nonce、1024 位状态(8 个 128 位块)、128 或 256 位认证标签,并处理 256 位输入块。

  • AEGIS-256: 具有 256 位密钥、256 位 nonce、768 位状态(6 个 128 位块)、128 或 256 位认证标签,并处理 128 位输入块。

  • AEGIS-128X: 基于 AEGIS-128L,是专为拥有大型向量寄存器和向量 AES 指令的 CPU 设计的模式。

  • AEGIS-256X: 基于 AEGIS-256,是专为拥有大型向量寄存器和向量 AES 指令的 CPU 设计的模式。

所有变体均采用无逆函数(inverse-free)的结构,并通过组合 AES 的加密轮函数(AESRound)来构建。


2. 原语与通用定义

在 RFC 10032 中,为了描述算法规范,定义了一些基本的运算符和函数。

  • {}: 空位数组

  • |x|: $x$ 的位长度

  • a ^ b: 按位异或(XOR)

  • a & b: 按位与(AND)

  • a || b: 连接

  • LE64(x): 无符号64位整数 $x$ 的小端序编码

  • Zeros(n): 全为0的 $n$ 比特数组

  • ZeroPad(x, n): 添加零填充以使长度为 $n$ 比特倍数的函数

  • AESRound(in, rk): SubBytes、ShiftRows、MixColumns、AddRoundKey 相结合的单个AES轮函数

此外,作为常量块,定义了由16字节十六进制值组成的 C0 和 C1。


3. AEGIS-128L的结构与内部函数

AEGIS-128L维持一个1024位的状态,由八个128位块 ${S_0, \dots, S_7}$ 组成。在此梳理主要内部函数的作用。

flowchart TD
    Init["Init(key, nonce)"] --> Absorb["Absorb(ai) <br/> 関連データの吸収"]
    Absorb --> EncDec["Enc(xi) / Dec(ci) <br/> ブロックの暗号化・復号"]
    EncDec --> Finalize["Finalize(ad_len, msg_len) <br/> 認証タグ生成"]

初始化函数(Init)

Init(key, nonce) 使用给定的 key 和 nonce 构建初始状态 ${S_0, \dots, S_7}$。在将密钥和随机数(nonce)的异或以及常量块 C0、C1 配置到初始状态后,Update 函数重复执行10次以进行搅动。

状态更新函数(Update)

Update(M0, M1) 是AEGIS-128L的核心状态更新函数。它接收两个128位值(或块),在应用AES轮函数的同时依次更新八个状态块 ${S_0, \dots, S_7}$。

加密与解密(Enc / Dec)

Encrypt 以及 Decrypt 过程中,填充后的关联数据会由 Absorb 函数依次吸收,然后以消息块为单位进行加密(Enc)或解密(Dec)。对于末尾不完整的块,将应用 DecPartial。

标签生成函数(Finalize)

Finalize(ad_len_bits, msg_len_bits) 结合关联数据和消息的长度来计算标签。标签长度为128位和256位时的输出格式有所不同,该标签用于检测数据是否被篡改。


4. 安全特性与设计注意事项

RFC 10032 阐述了针对传统 AEAD 方案(如 AES-GCM)中指出的问题的抵抗力,以及 AEGIS 特有的安全优势。

  1. 对分区预言机攻击的抵抗力: 在 AES-GCM 等部分方案中,攻击者有时可以生成能使用多个不同密钥成功解密的密文,这可能会被用于提高密码搜索等操作的效率。另一方面,在 AEGIS 中寻找不同密钥或随机数(nonce)对的难度取决于标签大小,128位或256位的标签可确保足够的安全性。

  2. 减轻状态泄露的影响: 与许多基于 AES 的结构不同,即使内部状态的一部分发生泄露,该结构也不会直接导致密钥或过去的状态泄露。

  3. 临时密钥的保护: AEGIS 的密钥在执行初始化函数后无需保留,且不存在密钥编排。这使得在数据加密和解密之前可以从内存中擦除临时密钥,从而降低冷启动攻击的风险。

  4. 禁止重复使用 Nonce: 作为一项基本安全要求,绝不能对同一密钥重复使用 nonce。重复使用 nonce 允许恢复内部状态,因此需要进行严格管理。


5. AEGIS-256 的规范差异

AEGIS-256 是为追求更高安全余量应用而设计的变体。与 AEGIS-128L 的主要区别如下:

  • 状态大小: 768 位(6 个 128 位块 ${S_0, \dots, S_5}$)

  • 密钥长度和随机数(Nonce)长度: 32 字节(256 位)

  • 输入块大小: 128 位

尽管参数和使用限制(如符合 RFC 5116 的 P_MAX 和 A_MAX 等)的框架是通用的,但由于内部块长度和状态数组大小不同,在实现时必须严格遵守目标算法的规范。


6. 总结

本文基于一手资料,对 RFC 10032 中规定的 AEGIS 带有关联数据的认证加密(AEAD)算法的规范与结构进行了整理。

  • 主要考点:

    • AEGIS 系列是专为高性能应用设计的、不具备逆函数的基于 AES 的 AEAD 算法。

    • 存在多种变体,包括 AEGIS-128L(1024 位状态)和 AEGIS-256(768 位状态)。

    • 由于不存在密钥调度,且初始化后可立即擦除密钥,因此有助于防范冷启动攻击。

    • 严禁在同一密钥下重复使用 nonce,必须进行安全的随机数生成或管理。

    • 本文的内容全部基于官方标准文档的研究与解说,未在实机上进行运行验证。


参考信息

文档信息

文章??
解读 RFC 10032:AEGIS 认证加密算法的规范与结构
?布日期
更新日期
来源
https://papanda925.com/?p=17673&lang=zh

?可: ?于本站?有相??利的正文及原??表,除非?有?明,可依据 CC BY 4.0 使用。本文可能包含使用生成式AI?建或??的内容。若代??有?可声明,或?接的GitHub???定了?可,?代?以??可?准。引用内容、第三方?料、?片及商?不在本?可范?内。 使用政策

标题和URL已复制