4. 参数集与安全级别

ML-KEM 在 FIPS 203 中定义了三个参数集:ML-KEM-512、ML-KEM-768 和 ML-KEM-1024。它们共享同一套算法骨架——在模数 q=3329 的环 R_q = Z_q[X]/(X^256+1) 上进行 NTT 域多项式运算,但通过改变矩阵维度 k、噪声分布参数 η₁/η₂ 以及压缩参数 d_u/d_v,形成三档安全强度与性能档位。理解这三个参数集的差异,是工程选型的第一步。

一、三个参数集的共同底座

所有 ML-KEM 参数集都固定以下基础量:

  • 多项式次数 n = 256,环结构为 X^256 + 1;
  • 模数 q = 3329,满足 q ≡ 1 (mod 256),因此支持完整的 128 点 NTT;
  • CBD(中心二项分布)采样噪声,η₁ 用于生成秘密向量 s 和误差向量 e,η₂ 用于生成 e₁、e₂;
  • 压缩函数 Compress_d 与解压 Decompress_d,d_u 压缩 u 向量,d_v 压缩 v 分量;
  • 共享密钥 K 长度 32 字节,密文由 u(k 个多项式)和 v(1 个多项式)组成。

差异集中在 k、η₁、η₂、d_u、d_v 五个参数上。k 决定矩阵 A 的规模(k×k),直接决定公钥、私钥和密文的字节数;η 决定噪声多项式的系数范围,影响安全裕度与解密失败概率;d_u、d_v 决定密文压缩率,影响带宽与正确性。

二、参数集对照

参数ML-KEM-512ML-KEM-768ML-KEM-1024
k(矩阵维度)234
η₁322
η₂222
d_u101011
d_v445
NIST 安全类别1(≈AES-128)3(≈AES-192)5(≈AES-256)
公钥字节80011841568
私钥字节163224003168
密文字节76810881568

公钥字节数 = 384·k + 32(k 个多项式各 384 字节,加 32 字节随机种子 ρ);密文字节数 = 32·(d_u·k + d_v)。以 ML-KEM-768 为例:32×(10×3+4)=32×34=1088 字节,与表中一致。私钥字节数 = 768·k + 96(k 个 s 向量各 384 字节,加公钥哈希与 z 值)。

三、安全类别与噪声参数的关系

NIST 安全类别并非由 k 单独决定,而是由“格维度 × 噪声分布”共同决定。ML-KEM-512 虽然 k=2、维度较低,但 η₁=3 提供了更大的噪声,使攻击者区分 LWE 样本的难度达到类别 1。ML-KEM-768 和 1024 使用 η₁=2,但通过增大 k 提升维度,分别达到类别 3 和类别 5。这种“低维高噪”与“高维低噪”的搭配,是 Kyber 设计中的关键平衡:η 越大,采样和乘法开销越高,但维度可以更低;k 越大,矩阵乘法 O(k²) 增长,但噪声可以更小。

工程提示:η₁=3 的 CBD 采样需要 6 位随机比特生成一个系数(3 位一组相减),而 η₁=2 只需 4 位。在硬件实现中,ML-KEM-512 的采样模块反而比 768/1024 更复杂,不能简单认为“512 一定最快”。

四、性能与带宽权衡

从 512 到 1024,计算量、密钥尺寸、密文尺寸同步增长。以典型 AVX2 优化实现为参考(示例量级,非实测承诺):

  • 密钥生成:512 约 30–40 μs,768 约 50–60 μs,1024 约 70–90 μs;
  • 封装(Encaps):512 约 40–50 μs,768 约 60–70 μs,1024 约 90–110 μs;
  • 解封装(Decaps):512 约 50–60 μs,768 约 70–80 μs,1024 约 100–120 μs。

带宽方面,一次完整 KEM 交互(公钥 + 密文)在 512 下约 1568 字节,768 下约 2272 字节,1024 下约 3136 字节。若在 TLS 1.3 握手中使用,ML-KEM-768 的额外开销约为 X25519 的 10–15 倍,但仍在可接受范围。对于 IoT 或低带宽链路,512 的 768 字节密文更具优势;对于长期归档或高价值通道,1024 的类别 5 安全裕度更合适。

ML-KEM 三参数集:维度、带宽与安全类别对照 维度与噪声参数 k(矩阵维度) 2 3 4 η₁(秘密噪声) 3 2 2 η₂(误差噪声) 2 2 2 q = 3329, n = 256(三者相同) 密文与公钥字节数 768 512 1088 768 1568 1024 密文字节(柱高) NIST 安全类别 ML-KEM-512 类别 1 ML-KEM-768 类别 3 ML-KEM-1024 类别 5 选型决策路径 安全需求 ≥ 类别 5? (长期归档/高价值) 带宽/存储受限? (IoT/低功耗) 需与 AES-192 对齐? (通用 TLS/协议) ML-KEM-1024 类别 5 · 1568B 密文 ML-KEM-512 类别 1 · 768B 密文 ML-KEM-768 类别 3 · 1088B 密文 是 → 1024 否 → 继续判断 默认推荐 768

五、选型决策方法

实际工程中,选型不应只看“安全类别越高越好”,而应结合协议约束、硬件能力和生命周期。以下给出一个可操作的判断顺序:

  1. 先确定安全类别下限。若系统需要与 AES-256 或 SHA-384 对齐(如政府、金融长期归档),直接选 ML-KEM-1024;若与 AES-128 对齐(如普通 IoT 会话),512 即可;通用互联网协议默认 768。
  2. 再检查带宽与存储预算。若单次握手总字节数被限制在 2 KB 以内,512 是唯一选择;若在 3 KB 以内,768 可行;1024 需要至少 3.2 KB 的余量。
  3. 评估计算资源。在 Cortex-M4 上,512 的密钥生成约 1.2 ms、封装约 1.5 ms(示例量级);768 约 2.5 ms / 3 ms;1024 约 4 ms / 5 ms。若 MCU 主频低于 100 MHz 且无硬件加速,1024 可能超出实时预算。
  4. 考虑互操作性。若对端只支持某一参数集,则必须匹配。TLS 1.3 的 X25519Kyber768 混合模式已广泛部署,768 是当前互操作性最好的档位。
  5. 最后做降级预案。若 1024 因性能被否决,但安全要求又高于 768,可考虑混合模式(如 ML-KEM-768 + X25519)或增加对称层强度来补偿。
注意:ML-KEM 的安全类别是 NIST 对经典和量子攻击的综合评估,并不等同于“AES-128 的量子安全”。在量子模型下,类别 1 的 ML-KEM-512 仍能抵抗已知量子算法,但若系统需要长期抵抗 Grover 类搜索,对称层应使用 AES-256,此时 KEM 侧建议至少 768。

六、参数集与实现细节的关联

选择参数集后,实现层面还需注意:η₁=3 的 512 在采样时消耗更多随机字节,若使用硬件 TRNG 需确认吞吐;d_u=11 的 1024 在压缩时多一位,解压时的舍入边界更敏感,需验证正确性;k=4 的矩阵乘法在 NTT 域需要 16 次点乘,缓存局部性比 k=2 更差,优化时应优先考虑分块策略。这些细节说明,参数集不仅是“安全档位”,也直接决定了代码路径和优化重点。

总结来说,ML-KEM-512/768/1024 的选型是一个多目标决策:安全类别决定下限,带宽和算力决定上限,互操作性和生命周期决定最终落点。工程上最稳妥的做法是:默认 768,受限选 512,高保障选 1024,并在协议层保留参数协商能力。