一份评审草案 — 不是已获准用于生产环境的 AES 替代品。
XAES-512 不是 FIPS 197 AES 实现,也不是 AES-128/192/256 的直接替代品。版本 2.0 rev4.2 作为开放评审草案发布 — 用于独立密码分析、实现审查和社区反馈,而不是作为已获准用于生产环境的算法。
描述该设计的四个数字。
XAES-512 可以归纳为几个关键数字 — 每个数字都有明确的技术含义,并不包含任何优越性主张。
算法之间的差异。
FIPS 197 所定义的标准 AES 非常优秀,并且仍然是参考基准。XAES-512 是一个独立的、源自 Rijndael 的设计,具有更大的分组 — 它不是替代品,而是一个公开发布以供评审的提案。
* 在随附的结构扩散测量中,ShiftRows 偏移 {0,1,4,5} 在 4 轮后达到完全扩散;朴素模式 {0,1,2,3} 需要 6 轮。在该测量中,标准 AES 在其较小的 4×4 矩阵中仅 2 轮后即达到完全扩散。扩散结论可通过 diffusion_check.py 复现;core KATs 还会验证 core cipher 的正确实现。
每一步处理更大的分组。
每个单元是一个字节。更大的矩阵每个分组处理更多数据,并扩展每轮所混合的内部状态。
24 轮。
XAES-512 在 4×16 状态矩阵上使用 24 轮。内部轮遵循 Rijndael 的 AddRoundKey、SubBytes、ShiftRows 和 MixColumns 原则;准确的轮结构在规格 PDF 中定义。
三个以事实方式描述的属性。
认证加密
XAES-512 是一种基于 Encrypt-then-MAC 原则的 AEAD 构造:CTR 用于保密性,HMAC-SHA-512 用于完整性和真实性。被篡改的消息会在解密前被检测到。
标准化密钥派生
密钥从密码派生,使用 PBKDF2-HMAC-SHA-512,并为每条消息使用随机 salt,随后使用 HKDF-SHA-512 进行密钥分离。配置文件 0x02 使用 220,000 次 PBKDF2 迭代;密码采用 UTF-8 编码并进行 NFC 规范化。
开放且可复现
不依赖隐蔽性来获得安全性。规格、参考实现、已知答案测试和工具以 Apache-2.0 包形式发布 — 任何人都可以复现并审查该设计。
规格概览。
构造、密钥派生、轮数和扩散。规范版本是包中的规格 PDF。
1 来源与分类 Rijndael 基础 · 与 FIPS 197 AES 的区别 ▾
XAES-512 基于最早于 2007 年发布的 Protectstar Extended AES。它使用 4×16 状态矩阵 (512 位),而不是标准 AES 使用的 4×4 矩阵 (128 位),并保持 Rijndael 的 AddRoundKey、MixColumns 和 SubBytes S-box 不变;ShiftRows 偏移、轮数和密钥扩展均已扩展。
如今,该名称代表 “Extended Algorithm, Enhanced Security.” XAES-512 不是 FIPS 197 所定义的 AES,也不是其替代品。
2 构造:认证加密 (AEAD) CTR · HMAC-SHA-512 · Encrypt-then-MAC ▾
XAES-512 提供单一认证构造 — 而不是多个可自由选择的运行模式。保密性由 Counter mode (CTR) 提供;完整性和真实性由 HMAC-SHA-512 按 Encrypt-then-MAC 方案提供(依据 Bellare–Namprempre 的通用组合)。认证标签会在每次解密前被验证。
消息格式定义为 Wire Format v1 (配置文件 0x02)。关联数据 (Associated Data) 被纳入认证。
3 密钥派生 (KDF) PBKDF2-HMAC-SHA-512 · HKDF · 每条消息一个 salt ▾
密钥通过 PBKDF2-HMAC-SHA-512 从密码派生 — 每条消息使用随机 salt,并进行 220,000 次迭代 (配置文件 0x02)。随后 HKDF-SHA-512 将密钥分离为加密密钥和认证密钥。密码采用 UTF-8 编码并进行 Unicode NFC 规范化,以便相同输入在不同平台上生成相同密钥。
头部中传输的迭代字段设置了上限(实现限制),因此消息无法在标签验证前强制执行过量计算。
4 总轮数 24 轮的推导 ▾
轮数遵循文档中描述的 Rijndael 派生推导:由分组大小和密钥大小得到的较大字数起决定作用。对于 512 位分组,该值为 16 个字 → 22 轮;配置文件 0x02 结合扩展 ShiftRows 结构再增加两轮,因此总计 24 轮。
5 密钥扩展 扩展 KeyExpansion 过程 ▾
基于 Rijndael 规格的扩展 KeyExpansion 过程:
KeyExpansion(byte Key[4*Nk], word W[Nb*(Nr+1)])
{
for (i = 0; i < Nk; i++)
W[i] = (Key[4*i], Key[4*i+1], Key[4*i+2], Key[4*i+3]);
for (i = Nk; i < Nb*(Nr+1); i++) {
temp = W[i-1];
if (i % Nk == 0 || (i % Nk == 4 && Nk > 6))
temp = SubByte(RotByte(temp)) ^ Rcon[i / Nk];
else if ((i % Nk == 8 || i % Nk == 12) && Nk > 6)
temp = SubByte(temp);
W[i] = W[i-Nk] ^ temp;
}
} 6 ShiftRows 与扩散 偏移 {0,1,4,5} · diffusion_check.py ▾
使用标准偏移 {0,1,2,3} 时,512 位变体在随附的结构扩散测量中只有在 6 轮后才达到完全扩散。所选偏移 {0,1,4,5} 在该测量中 4 轮后达到完全扩散。
扩散结论可以使用包中的 diffusion_check.py 工具复现。core-kats.json 文件包含 core cipher 的额外已知答案测试。
参考资料。 FIPS 197 (AES) · FIPS 180-4 (SHA) · FIPS 198-1 / RFC 2104 (HMAC) · RFC 8018 (PBKDF2) · RFC 5869 (HKDF) · NIST SP 800-38A (运行模式) · Bellare–Namprempre 2000 (认证加密) · Daemen–Rijmen, “AES Proposal: Rijndael” · OWASP Password Storage Cheat Sheet。完整参考资料包含在规格 PDF 中。
XAES-512 不是哪些东西 — 至少目前还不是。
对公开评审草案进行诚实分类,需要明确说明其限制。
- 实验性,处于公开评审阶段。 core cipher 的完整独立密码分析仍有待完成。此次发布正是为了让这种评审成为可能。
- 不是 FIPS 197 AES。 XAES-512 未在 FIPS 197 中标准化,未经过 CAVP/FIPS 验证,也不与 AES-128/192/256 互操作。
- 信息性参考实现。 目前已有 Java 参考实现;计划提供第二个独立实现,包括 Rust 实现。
- 未针对侧信道攻击进行加固。 Java 参考实现是可追踪的参考工件,而不是面向生产的 constant-time 实现。
- 固定格式。 Wire Format v1 / 配置文件 0x02 是固定的;未来配置文件,例如使用 Argon2id 的配置文件,将单独规划。
- 评审期间不是生产替代品。 在评审仍在进行期间,成熟且标准化的算法仍然是生产系统的正确选择。
完整的公开评审包。
ZIP 包是权威工件:规格、参考实现、已知答案测试、工具和治理文档都在一个包中。PDF 是额外的便捷下载。
XAES-512 公开评审包
Protectstar-XAES-512-spec-v2.0-rev4.2-2026-06-03.pdf PDF 参考实现 (信息性)
Protectstar-XAES-512-reference-implementation-v2.0-rev4.2-2026-06-03.pdf TXT Build Manifest & SHA-256
BUILD-MANIFEST-rev4.2.txt
技术文档为英文。下载后,请使用 sha256sum 按上方显示的值验证该包;在解压后的包中,SHA256SUMS 覆盖每个单独文件。2007 年的历史版本 1.0 仍作为归档版本提供。


