2. 抗量子算法家族与嵌入式适配约束
抗量子密码(PQC)并不是某一种算法,而是若干条数学路线并行发展的算法家族。NIST 后量子标准化进程最终选定的路线主要落在四类数学结构上:格基(Lattice)、哈希(Hash-based)、编码(Code-based)和多变量(Multivariate)。对嵌入式开发者而言,理解这些家族的差异,重点不在于推导数学证明,而在于看清它们各自消耗什么资源——密钥与签名的体积、运算中的大数/多项式操作、内存峰值、随机数需求,以及能否在中断驱动的实时系统中安全地跑完。
四个家族的资源画像
格基算法是当前最主流的路线,代表是用于密钥封装的 ML-KEM(原 Kyber)和用于签名的 ML-DSA(原 Dilithium),以及偏重小签名的 Falcon。格基运算的核心是多项式环上的乘法与采样,通常用 NTT(数论变换)加速。它的特点是:密钥和密文体积中等(ML-KEM-768 公钥约 1184 字节、密文约 1088 字节),运算以定长多项式为主,内存访问模式规整,非常适合在 Cortex-M4/M33 这类带 DSP 指令的 MCU 上做常数时间实现。代价是需要较大的栈空间和较多样本缓存,且对侧信道防护要求高。
哈希算法以 SPHINCS+ 为代表,安全性只依赖哈希函数的抗碰撞性,数学假设最保守。但它的签名体积极大(常见参数集在 8KB~50KB 量级),签名过程需要大量哈希调用和树结构遍历,属于“计算换体积”的典型。它适合签名频率低、存储不紧张的场景,比如固件根信任的一次性签名,而不适合每包都签的通信链路。
编码算法以 Classic McEliece 为代表,公钥极大(数百 KB 到 MB 级),但密文很短、加解密运算量相对可控。它的瓶颈几乎完全落在 Flash 上,对 RAM 和算力反而不苛刻,适合公钥可预置、不需频繁分发的设备。
多变量算法(如已进入后续评估的 Rainbow 类方案,以及 UOV 系列)签名短、验签快,但公钥较大,且历史上多次因结构攻击被削弱,工程选型时需格外关注参数集的成熟度。
RAM 与 Flash:先算清“放不放得下”
嵌入式适配的第一道门槛是存储。以一颗 256KB Flash、64KB RAM 的 Cortex-M4 为例,若同时集成 ML-KEM-768 与 ML-DSA-44,仅算法代码(含 NTT 表、采样器、SHA-3/SHAKE 实现)通常就要占用 30~60KB Flash,密钥与中间缓冲区再占去数 KB 到十几 KB RAM。若再叠加 SPHINCS+,其签名缓冲区与树遍历栈很容易突破 20KB,此时必须重新评估任务栈划分。
工程上建议先做一次静态预算,而不是等链接报错再回头砍功能。下面是一份可直接套用的资源预算表模板(数值为示例假设,需按实际编译结果替换):
| 项目 | Flash 预算 | RAM 峰值预算 | 说明 |
|---|---|---|---|
| ML-KEM-768 代码+常量 | 约 22KB | 约 6KB | 含 SHAKE 与 NTT 表 |
| ML-DSA-44 代码+常量 | 约 28KB | 约 9KB | 签名栈较深 |
| SPHINCS+(低签名频率) | 约 15KB | 约 18KB | 仅用于根信任 |
| 协议栈与业务 | 约 120KB | 约 24KB | 原有系统占用 |
| 余量(建议 ≥15%) | — | — | 为 OTA 与日志预留 |
判断依据很直接:把上表各项相加,若 Flash 合计超过器件容量的 85%,或 RAM 峰值加上最大中断嵌套栈后超过 80%,就应削减算法组合或改用外部 Flash 存放公钥。
算力、能耗与实时性:算清“跑不跑得完”
算力约束要看最坏情况而非平均值。以 80MHz 的 Cortex-M4 为例,ML-KEM-768 的封装/解封装在优化实现下大致在数百万到千万周期量级,换算成时间是几十到一百多毫秒;ML-DSA 签名则更重,可能达到数百毫秒。这些数字必须与系统的实时性要求对齐:如果设备每 500ms 上报一次且需逐包签名,ML-DSA 就会挤占主循环;若只是会话建立时做一次密钥封装,则完全可接受。
能耗方面,抗量子运算的能耗主要来自长时间连续计算和频繁的 Flash 读取。一个实用做法是把重运算放在唤醒后的“计算窗口”内集中完成,随后立即进入低功耗模式,而不是让算法在多个中断之间被反复打断——后者不仅增加总能耗,还会因上下文保存拉高峰值 RAM。实时性上,务必确认算法实现是可重入且常数时间的,避免在中断上下文中调用带动态内存分配的封装接口。
最后要强调的是,算法家族的选择不是“越安全越好”,而是在安全等级、存储、算力、能耗与实时性之间找可行交点。把上述预算表与周期测量结果放在一起对照,才能判断某个参数集在这颗芯片上究竟是“能跑”还是“跑得稳”。