2. 后量子签名算法概览

后量子签名算法的设计思路并非只有一条路。目前进入标准化视野的主流方案大致分为三类:基于哈希的签名、基于格的签名、基于编码的签名。它们各自建立在不同的数学困难问题之上,因此在密钥尺寸、签名长度、运算速度、实现复杂度上呈现出截然不同的性能画像。理解这些差异,是后续做性能评测与调优的前提——因为不同算法对CPU、内存、随机数质量、缓存层次的敏感点完全不同,调优手段也大相径庭。

基于哈希的签名:以SPHINCS+为代表

基于哈希的签名安全性只依赖于哈希函数的抗碰撞性与单向性,被认为是最保守、最"抗量子"的路线,因为即便量子计算机出现,哈希函数的安全假设也相对稳固。其核心思想是Merkle树:把大量一次性签名(OTS)的公钥作为叶子节点,逐层哈希得到根节点作为整体公钥。签名时选取某个叶子的一次性密钥对消息签名,并附带从该叶子到根的认证路径。

SPHINCS+是这类方案的无状态代表。它用少量几层超树(hypertree)结构替代了早期XMSS/LMS必须维护的状态,从而避免了"签名次数不能重复、状态必须严格保存"的工程难题。代价是签名体积很大:SPHINCS+的签名通常在7KB到50KB之间(取决于参数集,如sphincs+-sha2-128s约7.8KB,128f约17KB),公钥和私钥则较小(公钥约32字节,私钥约64字节)。签名过程需要大量哈希运算,速度偏慢,验签相对快一些。它的典型特征是"小密钥、大签名、慢签名、快验签、无状态、实现简单",非常适合签名频率低但对长期安全性要求极高的场景,例如固件签名、根证书签发。

基于格的签名:Dilithium与Falcon

格基签名是当前标准化进程中的主力。其安全性建立在模格上困难问题(如SIS、LWE)之上,兼顾了效率与尺寸。Dilithium(现已被NIST选为ML-DSA)基于模格上的短向量问题,采用"拒绝采样"式的Fiat-Shamir变换:签名者反复采样一个小的随机向量,计算承诺,挑战哈希后若结果落在安全范围内则输出,否则重新采样。这种设计使签名分布与私钥无关,从而具备安全性证明。

Dilithium的性能特征是"均衡":公钥约1.3KB,签名约2.4KB(以Dilithium3为例),签名和验签都在毫秒级甚至更快,且不需要浮点运算,适合嵌入式与通用CPU。Falcon则走另一条路,基于NTRU格,使用快速傅里叶变换(FFT)做高斯采样,签名更短(约666字节,Falcon-512),但签名过程涉及浮点FFT和高斯采样,实现复杂、对浮点精度和侧信道防护要求高,验签则很快。可以概括为:Dilithium"尺寸适中、实现友好、速度均衡";Falcon"签名最短、验签快、但签名实现门槛高"。

基于编码的签名:MQDSS等

基于编码的密码学以纠错码解码困难问题为基础,最著名的是McEliece加密,但签名方案相对小众。MQDSS(基于多变量与编码思想的一类签名)等方案试图在编码框架下构造签名。这类方案的特点是公钥往往很大(可达数百KB甚至MB级),签名尺寸中等,运算以有限域上的矩阵/向量运算为主。由于公钥体积庞大,它们在证书链、带宽受限场景中并不占优,更多出现在特定研究或对编码假设有偏好的部署中。工程上需要关注大公钥的存储与传输开销,以及有限域运算的查表优化。

三类后量子签名算法性能画像 基于哈希(SPHINCS+) 基于格(Dilithium/Falcon) 基于编码(MQDSS等) 公钥尺寸 签名尺寸 签名速度 验签速度 实现复杂度 小(约32B) 大(7–50KB) 慢(大量哈希) 较快 低(无状态) 中(约1.3KB) 中(0.7–2.4KB) 快(D)/复杂(F) 快 中(F需浮点FFT) 大(数百KB+) 中 中(有限域运算) 中 较高(大公钥管理) 注:尺寸与速度为典型参数集的量级示意,具体数值随参数集与平台变化

性能特征对比与选型判断

把三类方案放在一起看,可以形成一张清晰的取舍地图。基于哈希的方案是"用签名体积换安全保守性",密钥极小、实现极简、无状态,但签名大且慢;基于格的方案是"综合最优解",尺寸和速度都处于可用区间,Dilithium实现友好、Falcon签名最短但实现门槛高;基于编码的方案则受制于大公钥,在带宽和存储敏感的场景中处于劣势。

实际选型时,建议先明确约束条件再对号入座。若场景是低频签名、长期存档、固件或根证书,签名体积不敏感而安全性要求最高,SPHINCS+是稳妥选择;若场景是TLS握手、代码签名、通用身份认证,需要兼顾尺寸与速度,Dilithium是默认起点;若场景对签名长度极度敏感(如某些区块链或空间受限的报文),且团队有能力处理浮点实现与侧信道防护,可评估Falcon;基于编码的方案目前更适合作为研究或特定合规偏好的备选。

做性能评测时,不要只测单一指标。对SPHINCS+要重点测签名耗时与签名体积对带宽的影响;对Dilithium要测密钥生成、签名、验签三段耗时及缓存行为;对Falcon要额外关注浮点单元可用性与签名时间的方差(高斯采样可能带来抖动)。同一算法在不同参数集(如128/192/256安全级别)下差异显著,评测必须锁定参数集并注明平台。