2. 后量子密码算法家族与评估边界

后量子密码(PQC)并不是单一算法,而是若干数学困难问题支撑的算法家族。NIST 在 2022—2024 年间陆续标准化的 ML-KEM(FIPS 203,源自 CRYSTALS-Kyber)、ML-DSA(FIPS 204,源自 CRYSTALS-Dilithium)、SLH-DSA(FIPS 205,源自 SPHINCS+)以及后续的 FN-DSA(Falcon)与 HQC,分别落在格、哈希、编码等不同家族。做性能评估时,第一步不是跑基准测试,而是先明确“评估边界”:这个算法属于哪个家族、它的困难问题假设是什么、密钥与签名/密文尺寸的量级如何、在什么平台上运行、安全等级对应哪一档。边界不清,测出来的数字就没有可比性。

四大算法家族的核心差异

格基算法基于 LWE/SIS 及其模块化变体(MLWE/MSIS),在多项式环上做向量运算。它的优势是密钥与密文/签名尺寸适中、运算以 NTT(数论变换)和多项式乘法为主,适合硬件加速。ML-KEM 的密文约 768–1568 字节,ML-DSA 签名约 2420–4627 字节,属于“中等尺寸、高速”的一类。

编码基算法基于纠错码的译码困难性(如 McEliece、HQC)。它的公钥极大(经典 McEliece 可达数百 KB 至 MB 级),但加解密速度很快,且已历经数十年密码分析,安全信心较高。HQC 作为 NIST 选定的备选 KEM,公钥约 2–4 KB、密文约 128 字节,是编码类中尺寸较友好的代表。

多变量算法基于求解有限域上多变量二次方程组(MQ 问题)的困难性,如 Rainbow(已被攻破)、GeMSS、UOV 等。签名短、验签快,但公钥大、密钥生成慢,且历史上多次被结构攻击削弱,评估时需格外关注参数集是否仍安全。

哈希签名只依赖哈希函数的抗碰撞/抗原像性,安全假设最保守,SLH-DSA 即属此类。代价是签名尺寸大(约 7–50 KB)、签名速度慢,但验签快、实现简单、无复杂代数结构,适合作为“安全兜底”或固件签名等对尺寸不敏感的场景。

后量子密码算法家族:性能特征与评估边界 横轴=尺寸量级(小→大) 纵轴=运算速度(慢→快) 气泡大小≈安全信心/成熟度 密钥/密文/签名尺寸 → 运算速度 → ML-KEM 格·KEM ML-DSA 格·签名 FN-DSA 格·紧凑签名 HQC 编码·KEM McEliece 编码·大公钥 UOV 多变量·签名 SLH-DSA 哈希·大签名 格基家族 编码基家族 多变量家族 哈希签名家族 评估边界四要素:① 安全等级(NIST L1/L3/L5) ② 平台(x86/ARM/嵌入式) ③ 操作类型(密钥生成/封装/解封装/签名/验签) ④ 尺寸约束(带宽/存储/固件) 同一算法在不同边界下性能结论可能完全不同,跨家族比较必须先对齐这四项

性能评估的四个边界维度

把算法家族放到评估框架里,需要固定四个维度。第一是安全等级:NIST L1 对应 AES-128 强度,L3 对应 AES-192,L5 对应 AES-256。同一算法在 L1 与 L5 下的参数集不同,尺寸和速度差异可达数倍,混用等级比较没有意义。第二是运行平台:x86-64 上 AVX2 加速的 ML-KEM 与 Cortex-M4 上的实现,周期数可能相差两个数量级。第三是操作类型:KEM 要分别测密钥生成、封装、解封装;签名要分别测密钥生成、签名、验签,其中签名往往是最慢的一环。第四是尺寸约束:TLS 握手受带宽限制,固件签名受 Flash 容量限制,智能卡受 RAM 限制,约束不同,家族选择就不同。

典型场景下的家族选择

以 TLS 1.3 混合密钥交换为例,客户端与服务器需要在一次握手内完成 KEM 封装与解封装,且证书链不能过大。此时 ML-KEM-768 是主流选择:公钥 1184 字节、密文 1088 字节,封装/解封装在 x86 上约几十微秒量级,与 X25519 混合后握手包增量可控。若换成 Classic McEliece,公钥达 1 MB 级,握手包会直接撑爆 MTU,必须分片,工程上不可接受。

以代码签名或固件签名为例,签名验证发生在设备端,验签速度比签名速度更关键,且签名可离线生成、尺寸不敏感。SLH-DSA 的验签只需少量哈希运算,速度极快,签名虽达 7–50 KB,但固件包本身就有 MB 级,增量可接受;同时它只依赖哈希假设,安全信心最高,适合作为长期信任根。

以资源受限的 IoT 设备为例,RAM 可能只有几十 KB,此时应优先考虑密钥与中间状态小的方案。ML-KEM 的 NTT 实现需要约几 KB 的栈空间,HQC 的译码需要存储较大的校验矩阵,而多变量签名(如 UOV)公钥大但验签只需少量运算,需根据设备是“存储受限”还是“算力受限”分别取舍。

评估边界建议写成一张“边界卡”随测试报告一起归档:算法与参数集、NIST 等级、目标平台与编译选项、被测操作、尺寸上限、测试工具与版本。缺少任一项,跨团队的性能数字就无法复现和比较。

评估时容易踩的坑

第一,把不同安全等级的数字放在同一张表里比较。第二,只测平均耗时而不测最坏情况与方差,PQC 实现中 NTT、采样、拒绝采样等步骤的耗时分布并不对称,最坏情况对实时系统更关键。第三,忽略密钥生成时间:多变量与部分格方案的密钥生成可能远慢于签名/验签,若系统需要频繁轮换密钥,这一项会成为瓶颈。第四,忽略内存峰值:嵌入式平台上栈溢出往往比速度慢更致命。第五,把参考实现(ref)的数字当作优化实现的数字,两者可能相差 5–10 倍。