3、PQC算法概览:基于格的Kyber、Dilithium、Falcon,基于哈希的SPHINCS+,基于编码的McEliece,基于多变量的Rainbow等算法特点与硬件需求
后量子密码(Post-Quantum Cryptography, PQC)的硬件加速设计,首要任务是对候选算法的数学结构、计算模式与存储访问特征进行深度剖析。不同算法族的安全假设、密钥形态与运算粒度差异巨大,直接决定了FPGA/ASIC架构中的算子选择、流水线组织、存储层次与并行策略。本章从硬件设计视角出发,系统梳理五类主流PQC算法的核心数学原理、计算热点与硬件资源需求,为后续章节的微架构设计建立算法层面的决策依据。
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/1024 | KEM | NTT + Keccak | q=3329, n=256 | NTT引擎、Keccak核、随机数生成 |
| Dilithium-2/3/5 | 数字签名 | NTT + 拒绝采样 | q=8380417, n=256 | NTT引擎、模约减单元、Keccak |
| Falcon-512/1024 | 数字签名 | FFT + 格基采样 | q=12289, n=512/1024 | FFT蝶形单元、浮点乘法器、采样器 |
硬件设计判断方法
在设计格基密码加速器时,首先需要判断算法对NTT引擎的依赖程度。Kyber和Dilithium可以共享同一套NTT硬件,但需要针对不同模数配置可重构的模约减单元。Falcon则无法复用NTT引擎,需要独立的FFT数据通路。其次,需要评估Keccak核的吞吐量需求——Kyber的封装/解封装过程需要数百次Keccak调用,而Dilithium的签名验证过程同样密集。建议采用多核Keccak架构,并配置DMA以支持连续数据流处理。
案例拆解: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+链需要顺序计算,但不同链之间完全独立,可并行执行。
常见误区与设计要点
一个常见误区是认为SPHINCS+的硬件实现简单,只需堆叠哈希核。实际上,树遍历的地址生成与随机数管理同样复杂。签名过程中需要生成大量随机化叶子索引,且每个节点的地址计算依赖哈希结果,形成数据依赖链。设计时应采用双缓冲机制,预计算下一层的认证路径,避免哈希核空闲等待。
3.3 编码基密码:McEliece的大矩阵运算与存储瓶颈
McEliece是历史最悠久的PQC候选算法,基于Goppa码的译码困难问题。其硬件实现面临的最大挑战并非计算复杂度,而是巨大的存储需求——公钥尺寸可达1MB量级,私钥同样庞大。这要求硬件架构必须围绕外部存储带宽进行优化。
核心计算模式与硬件需求
McEliece的加密过程涉及大矩阵与向量的乘法,解密过程的核心是Goppa码的Berlekamp-Massey译码算法。硬件实现需要GF(2^m)乘法器阵列,其中m通常为12或13。译码过程包含多项式求逆、欧几里得算法等步骤,控制逻辑复杂。存储系统需支持大容量外部存储(DDR4或QDR),并配置高效的DMA引擎。
| 参数集 | 公钥大小 | 私钥大小 | 加密延迟目标 | 解密延迟目标 |
|---|---|---|---|---|
| mceliece348864 | 261,120 B | 6,452 B | <100μs | <200μs |
| mceliece6688128 | 1,043,984 B | 13,932 B | <200μs | <400μs |
| mceliece8192128 | 1,357,824 B | 14,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)求逆运算的硬件开销。
总结复盘
综合五类PQC算法的硬件需求,可以得出以下设计准则:格基算法需要可重构NTT/FFT引擎与高吞吐Keccak核;哈希基算法依赖大规模并行哈希阵列;编码基算法受限于存储带宽;多变量算法追求GF乘法器阵列的并行度。在FPGA/ASIC架构设计中,建议采用异构计算单元组合,通过可配置数据通路适配不同算法族。同时,所有PQC实现均需考虑侧信道防护——功耗均衡、掩码与隐藏技术应作为硬件设计的基础模块,而非后期补充。