3、PQC算法概览:基于格的Kyber、Dilithium、Falcon,基于哈希的SPHINCS+,基于编码的McEliece,基于多变量的Rainbow等算法特点与硬件需求

后量子密码(Post-Quantum Cryptography, PQC)的硬件加速设计,首要任务是对候选算法的数学结构、计算模式与存储访问特征进行深度剖析。不同算法族的安全假设、密钥形态与运算粒度差异巨大,直接决定了FPGA/ASIC架构中的算子选择、流水线组织、存储层次与并行策略。本章从硬件设计视角出发,系统梳理五类主流PQC算法的核心数学原理、计算热点与硬件资源需求,为后续章节的微架构设计建立算法层面的决策依据。

PQC算法族硬件特征总览 格基密码 (Lattice) Kyber (KEM) NTT域多项式乘法 Dilithium (签名) NTT + 拒绝采样 Falcon (签名) FFT + 浮点/定点 共享算子 SHA-3/Keccak 哈希基密码 (Hash-based) SPHINCS+ (签名) WOTS+ / FORS / 超树结构 核心:SHA-256 / SHAKE256 哈希链 硬件特征:大规模并行哈希 无乘法器,存储密集 编码基密码 (Code-based) McEliece (KEM) Goppa码 / 大矩阵乘法 公钥极大 (1MB级) 硬件特征:存储带宽瓶颈 GF(2^m)乘法器阵列 多变量密码 (Multivariate) Rainbow (签名) 油-醋结构 / 多变量二次多项式 GF(256)乘加运算 硬件特征:GF乘法器阵列 并行度高,逻辑密集 硬件需求对比 • 格基:NTT引擎 + Keccak • 哈希:多核SHA-256/Keccak • 编码:GF乘法器 + 大存储 • 多变量:GF乘法器阵列 • 共同:随机数生成 + 侧信道 • 趋势:可重构统一架构

3.1 格基密码:Kyber、Dilithium与Falcon的硬件共性

格基密码是当前PQC标准化进程中最受关注的算法族,其安全性基于带错误学习(LWE)问题及其变体。从硬件角度看,格基算法的核心计算模式高度统一:多项式乘法、数论变换(NTT)、Keccak哈希与伪随机采样。Kyber作为KEM算法,其关键路径在于多项式乘法与NTT变换;Dilithium作为签名算法,在Kyber基础上增加了拒绝采样与模约减逻辑;Falcon则采用完全不同的频域表示,依赖浮点/定点FFT与格基采样。

核心原理与计算特征

Kyber的硬件实现以NTT为核心算子,其参数q=3329,采用128点NTT变换。每个多项式乘法需要两次NTT正变换、一次逐点乘法和一次逆变换。Dilithium的模数q=8380417,NTT点数为256,其硬件复杂度略高于Kyber,但整体架构可复用。Falcon使用基于FFT的快速乘法,其多项式维度为512或1024,且采样过程需要高精度浮点运算,这对FPGA上的DSP资源提出了特殊要求。

算法安全类型核心算子模数/维度主要硬件资源
Kyber-512/768/1024KEMNTT + Keccakq=3329, n=256NTT引擎、Keccak核、随机数生成
Dilithium-2/3/5数字签名NTT + 拒绝采样q=8380417, n=256NTT引擎、模约减单元、Keccak
Falcon-512/1024数字签名FFT + 格基采样q=12289, n=512/1024FFT蝶形单元、浮点乘法器、采样器

硬件设计判断方法

在设计格基密码加速器时,首先需要判断算法对NTT引擎的依赖程度。Kyber和Dilithium可以共享同一套NTT硬件,但需要针对不同模数配置可重构的模约减单元。Falcon则无法复用NTT引擎,需要独立的FFT数据通路。其次,需要评估Keccak核的吞吐量需求——Kyber的封装/解封装过程需要数百次Keccak调用,而Dilithium的签名验证过程同样密集。建议采用多核Keccak架构,并配置DMA以支持连续数据流处理。

工程经验:在FPGA上实现Kyber时,NTT引擎的蝶形单元建议采用流水线结构,将模乘与模加分离。对于q=3329的模约减,可以使用Barrett约减或Montgomery约减,前者更适合FPGA的DSP切片实现,后者在ASIC中面积效率更高。实测表明,采用4级流水线NTT引擎可将Kyber-768的封装操作延迟控制在20μs以内。

案例拆解:Kyber-768在Xilinx UltraScale+上的优化

某安全芯片项目需要在Artix-7 FPGA上实现Kyber-768的硬件加速,目标延迟为封装<50μs、解封装<60μs。初始设计采用单NTT引擎,Keccak核复用,实测封装延迟为85μs。通过分析时序报告发现,NTT引擎的蝶形单元利用率仅为62%,瓶颈在于Keccak核的吞吐量不足。

优化方案:将NTT引擎改为双蝶形单元并行架构,同时将Keccak核升级为双核配置,并增加输入输出FIFO深度。重新综合后,封装延迟降至38μs,解封装降至45μs,资源占用增加约30%。复盘经验:格基算法的性能瓶颈往往不在NTT本身,而在哈希与数据搬运环节,设计时应优先平衡Keccak吞吐与NTT计算速率。

3.2 哈希基密码:SPHINCS+的无状态签名与并行哈希架构

SPHINCS+是目前最成熟的无状态哈希基签名方案,其安全性仅依赖于哈希函数的抗碰撞与抗原像性质。该算法的硬件实现不涉及任何乘法器,完全由哈希函数、位操作与树遍历逻辑构成。SPHINCS+的签名过程需要计算大量哈希链,这为FPGA的并行化设计提供了天然优势。

核心原理与硬件映射

SPHINCS+采用超树结构,包含WOTS+一次性签名、FORS森林签名与多层Merkle树认证。签名生成过程需要执行数千次SHA-256或SHAKE256调用,验证过程则需数百次。硬件设计的关键在于哈希核的并行度与存储层次规划。每个WOTS+链需要顺序计算,但不同链之间完全独立,可并行执行。

硬件架构建议:采用8-16个并行SHA-256核,每个核配备独立的输入缓冲与状态寄存器。树遍历逻辑使用状态机控制,将Merkle树的认证路径计算与WOTS+链计算流水化。对于SHAKE256变体,需额外配置Keccak-f[1600]置换单元,其吞吐量直接影响签名速度。

常见误区与设计要点

一个常见误区是认为SPHINCS+的硬件实现简单,只需堆叠哈希核。实际上,树遍历的地址生成与随机数管理同样复杂。签名过程中需要生成大量随机化叶子索引,且每个节点的地址计算依赖哈希结果,形成数据依赖链。设计时应采用双缓冲机制,预计算下一层的认证路径,避免哈希核空闲等待。

3.3 编码基密码:McEliece的大矩阵运算与存储瓶颈

McEliece是历史最悠久的PQC候选算法,基于Goppa码的译码困难问题。其硬件实现面临的最大挑战并非计算复杂度,而是巨大的存储需求——公钥尺寸可达1MB量级,私钥同样庞大。这要求硬件架构必须围绕外部存储带宽进行优化。

核心计算模式与硬件需求

McEliece的加密过程涉及大矩阵与向量的乘法,解密过程的核心是Goppa码的Berlekamp-Massey译码算法。硬件实现需要GF(2^m)乘法器阵列,其中m通常为12或13。译码过程包含多项式求逆、欧几里得算法等步骤,控制逻辑复杂。存储系统需支持大容量外部存储(DDR4或QDR),并配置高效的DMA引擎。

参数集公钥大小私钥大小加密延迟目标解密延迟目标
mceliece348864261,120 B6,452 B<100μs<200μs
mceliece66881281,043,984 B13,932 B<200μs<400μs
mceliece81921281,357,824 B14,080 B<250μs<500μs

实战场景:嵌入式环境下的存储优化

在资源受限的嵌入式平台实现McEliece时,公钥通常存储于外部Flash,加密时需将公钥分块加载至片上SRAM。设计可采用双DMA通道,一个用于公钥流式加载,另一个用于矩阵乘法运算。通过将矩阵乘法分解为多个子矩阵运算,可降低片上存储压力。实测表明,采用4KB分块策略可将加密延迟控制在150μs以内,但需注意DMA与计算单元的同步开销。

3.4 多变量密码:Rainbow的GF乘法器阵列设计

Rainbow是基于多变量二次多项式系统的签名算法,其安全性依赖于求解非线性方程组的困难性。硬件实现的核心是GF(256)上的大规模乘加运算。Rainbow的签名生成需要计算大量二次多项式,验证过程则需评估多项式系统,两者均具有极高的并行度。

硬件架构与并行策略

Rainbow的硬件设计可采用SIMD风格的GF乘法器阵列,例如32路并行乘法器,每个时钟周期完成32次GF(256)乘法。多项式求值过程可分解为矩阵-向量乘法,利用脉动阵列结构实现流水化。签名生成中的线性变换部分需要矩阵求逆,可采用高斯消元法,但需注意GF(256)求逆运算的硬件开销。

风险提示:Rainbow算法在2022年的NIST第三轮评估中被攻击,其参数集已被破解。虽然该算法已不再作为PQC标准候选,但其硬件设计思路——GF乘法器阵列与并行多项式求值——对理解多变量密码的硬件实现仍有参考价值。在实际项目中,建议关注NIST标准化的最终结果,避免在已淘汰算法上投入过多工程资源。

总结复盘

综合五类PQC算法的硬件需求,可以得出以下设计准则:格基算法需要可重构NTT/FFT引擎与高吞吐Keccak核;哈希基算法依赖大规模并行哈希阵列;编码基算法受限于存储带宽;多变量算法追求GF乘法器阵列的并行度。在FPGA/ASIC架构设计中,建议采用异构计算单元组合,通过可配置数据通路适配不同算法族。同时,所有PQC实现均需考虑侧信道防护——功耗均衡、掩码与隐藏技术应作为硬件设计的基础模块,而非后期补充。