4. 抗量子算法计算与存储需求剖析

在嵌入式设备上落地抗量子密码,第一步不是写代码,而是把“资源账”算清楚。NIST 后量子密码标准化选出的四类代表算法——用于密钥封装的 Kyber(ML-KEM)、用于数字签名的 Dilithium(ML-DSA)、Falcon 和 SPHINCS+——在数学结构上差异极大,直接导致密钥尺寸、运算复杂度和内存占用呈现数量级差别。本节围绕这三条资源维度,逐一剖析四种算法的工程特性,并给出嵌入式选型时的判断依据。

一、密钥与签名尺寸:先看“存储地板”

密钥尺寸决定了固件中静态存储的开销,也决定了协议报文的大小。以 NIST 第三轮及后续标准化的参数集为参考(具体数值以最终标准文档为准,此处为教学用近似值):

算法公钥私钥密文/签名典型安全等级
Kyber-768约 1184 B约 2400 B密文约 1088 BNIST 3 级
Dilithium3约 1952 B约 4000 B签名约 3293 BNIST 3 级
Falcon-512约 897 B约 1281 B签名约 666 BNIST 1 级
SPHINCS+-128s约 32 B约 64 B签名约 7856 BNIST 1 级

这张表已经能读出关键结论:SPHINCS+ 的公私钥极小(仅哈希种子),但签名长达近 8 KB;Falcon 签名最短,适合带宽受限链路;Kyber 与 Dilithium 处于中间量级。对只有几十 KB RAM 的 MCU 而言,Dilithium3 的私钥加签名缓冲区就可能吃掉数 KB,必须在链接脚本中预留专用段,而不能依赖默认栈空间。

二、运算复杂度:乘法、NTT 与哈希次数

Kyber 和 Dilithium 都基于格问题,核心运算是多项式环上的乘法,工程上通过 NTT(数论变换)把 O(n²) 的卷积降为 O(n log n)。Kyber 的模数为 3329,Dilithium 为 8380417,后者需要 64 位中间结果,在 32 位 MCU 上乘法开销更高。Falcon 使用浮点 FFT 实现快速傅里叶采样与解码,对浮点单元(FPU)依赖明显,无 FPU 的 Cortex-M0/M3 上性能会显著劣化。SPHINCS+ 则是纯哈希构造,运算由大量 SHA-256 或 SHAKE 调用堆叠而成,单次签名可能涉及数万次哈希压缩,属于“计算换尺寸”的典型。

复杂度不能只看渐近阶。嵌入式实测中,Kyber-768 的密钥封装在带 DSP 指令的 Cortex-M4 上通常为毫秒级,而 SPHINCS+-128s 的签名可能达到数百毫秒甚至秒级,差距主要来自哈希调用次数而非算法阶数。

三、内存占用:栈、堆与工作区

内存要分三块看:静态密钥存储、运算栈峰值、临时工作区。Kyber 的 NTT 工作区较小,通常几百字节到 1 KB 量级;Dilithium 因多项式向量维度更大,栈峰值可达数 KB;Falcon 的 FFT 需要浮点数组,工作区与实现方式强相关;SPHINCS+ 的栈需求相对温和,但哈希状态与树遍历需要固定缓冲区。工程上应把工作区显式声明为静态数组或内存池,避免在中断上下文或小栈任务中调用签名函数。

NIST PQC 四算法资源特性对比(教学示意) 密钥/签名尺寸(相对量级)→ 运算与内存开销 → Kyber ML-KEM 中等尺寸·NTT·低栈 Dilithium ML-DSA 较大密钥·高栈峰值 Falcon FN-DSA 短签名·依赖FPU SPHINCS+ SLH-DSA 超大签名·海量哈希 横轴:尺寸越大越靠右 纵轴:开销越大越靠上

四、嵌入式选型与工程落地

把上述特性映射到具体场景,可以形成几条可操作的判断规则。第一,若设备只需建立安全会话、报文预算紧张,优先选 Kyber,其密文约 1 KB,配合 TLS 1.3 混合密钥交换时对 MTU 影响可控。第二,若需要设备端签名且对签名长度敏感(如 LoRa、NB-IoT 上报),Falcon 的短签名有优势,但要确认芯片具备 FPU 或选用定点优化实现。第三,若追求实现简单、抗侧信道特性好、且能接受较大签名,SPHINCS+ 的哈希构造最易审计,适合固件签名等低频操作。第四,Dilithium 综合平衡,适合作为通用签名默认选项,但必须核算栈峰值。

一个常见的实操误区是只按公钥大小估算 Flash 占用。实际固件中,私钥往往需要安全存储区,签名缓冲区、NTT 旋转因子表、哈希常量表都要计入。以 Dilithium3 为例,私钥约 4 KB、签名约 3.3 KB,加上工作区,单次签名路径的 RAM 需求可能接近 10 KB,这在 64 KB RAM 的 MCU 上已占近六分之一,必须通过静态分配和调用时序控制来保证不与通信缓冲区冲突。

不要用 PC 上的基准测试直接推断 MCU 表现。格密码的 NTT 在带 DSP 扩展的 Cortex-M4/M33 上可获数倍加速,而 SPHINCS+ 的哈希次数优势在硬件 SHA 加速器上才明显。选型前应在目标板卡上实测密钥生成、封装/解封装、签名/验签四类操作的耗时与栈水位。