3、后量子密码算法概览:基于格的、基于编码的、基于多变量的、基于哈希的、基于同源的PQC算法分类与特点
后量子密码(Post-Quantum Cryptography, PQC)并非单一算法,而是一个涵盖多种数学难题的算法家族。NIST在2024年发布的首批标准化成果中,CRYSTALS-Kyber(密钥封装)与CRYSTALS-Dilithium(数字签名)均基于格难题,而SPHINCS+则基于哈希函数。理解这五大类算法的数学根基、硬件实现特性与安全假设,是进行PQC硬件设计的第一步。不同算法在密钥尺寸、计算复杂度、并行度、存储带宽需求上差异巨大,直接决定了FPGA/ASIC实现时的资源占用、时序收敛难度与侧信道防护策略。
3.1 基于格的PQC算法:NIST标准化的主力军
核心原理
基于格的密码学建立在格上困难问题之上,主要包括带错误学习问题(LWE)及其环变体MLWE(Module-LWE)。其核心思想是:给定一个矩阵A和向量b = A·s + e(其中e为小噪声),恢复秘密向量s在计算上是困难的。CRYSTALS-Kyber采用MLWE构造密钥封装机制(KEM),CRYSTALS-Dilithium则基于MSIS(Module-SIS)与MLWE的混合困难假设构造数字签名。硬件实现的核心运算为数论变换(NTT),它将多项式乘法从O(n²)降至O(n log n),其中n通常为256或512。
判断方法与操作流程
在硬件实现格密码算法时,需按以下流程进行设计决策:
- 参数选择:根据安全等级确定n、q、k等参数(Kyber-512/768/1024对应不同安全级别);
- NTT架构选择:迭代型(资源友好)vs 流水线型(高吞吐);
- 模约简策略:Barrett约简(适合硬件流水线)vs Montgomery约简(适合模乘器复用);
- 并行度规划:单蝶形单元串行 vs 多蝶形单元并行,需权衡面积与吞吐率;
- 侧信道防护:在NTT输入处引入随机掩码,或在蝶形运算中插入随机延迟。
案例拆解:Kyber-768在Artix-7 FPGA上的实现
某安关项目需要在Xilinx Artix-7 200T上实现Kyber-768密钥封装,目标吞吐率为≥10k次封装/秒。初始设计采用单蝶形单元迭代架构,时钟频率150MHz,实测仅达到3.2k次/秒,远低于目标。
分析过程:通过Vivado时序报告发现,关键路径位于模乘后的模约简逻辑,组合逻辑延迟达6.8ns。进一步使用XPower分析功耗,发现BRAM读写功耗占比达42%。
优化措施:
- 将单蝶形单元扩展为4路并行,利用Artix-7的DSP48E1资源(每个DSP实现一次模乘);
- 采用两级流水线插入模约简中间寄存器,将关键路径缩短至4.2ns;
- 将NTT中间结果从BRAM迁移至分布式RAM(LUTRAM),降低读写延迟。
结果对比:优化后时钟频率提升至210MHz,吞吐率达到12.8k次/秒,满足目标。资源消耗从12,400 LUT增至28,600 LUT,DSP从8个增至32个,但仍在器件容量内。
3.2 基于编码的PQC算法:经典安全但密钥庞大
核心原理
基于编码的密码学源于纠错码理论,其安全基础是一般线性码的译码问题(Syndrome Decoding)。Classic McEliece使用Goppa码,公钥为生成矩阵的随机置换形式,私钥为Goppa码的结构化表示。加密时,发送方将明文编码后加入随机错误向量;解密时,接收方利用Goppa码的快速译码算法(如Berlekamp-Massey算法)恢复明文。BIKE(Bit Flipping Key Encapsulation)则基于QC-MDPC码,密钥尺寸相对较小但译码算法为迭代概率型。
硬件实现特点
| 算法 | 公钥尺寸 | 私钥尺寸 | 主要运算 | 硬件瓶颈 |
|---|---|---|---|---|
| Classic McEliece (m=12, t=64) | 1,057,792 bytes | 6,492 bytes | GF(2^12)乘法、Goppa译码 | 公钥存储与加载带宽 |
| BIKE (Level 1) | 1,542 bytes | 1,542 bytes | QC-MDPC译码(迭代翻转) | 译码迭代次数不确定 |
| HQC (Level 1) | 2,249 bytes | 2,249 bytes | Reed-Muller + Reed-Solomon译码 | 双译码器协同 |
在硬件实现中,Classic McEliece的最大挑战是公钥的存储与传输。1MB级别的公钥无法放入片上SRAM,必须使用外部DDR存储,并在加密操作时以DMA方式流式加载。GF(2^m)乘法器建议使用多项式基乘法器配合不可约多项式约简,m=12时每个乘法器约消耗120个LUT。
3.3 基于多变量的PQC算法:签名速度快但密钥大
核心原理
多变量密码学基于有限域上多元二次方程组求解(MQ问题)的NP困难性。UOV(Unbalanced Oil and Vinegar)签名方案构造一组包含油变量(Oil)和醋变量(Vinegar)的二次方程组,私钥为可逆仿射变换,公钥为混合后的二次多项式组。签名时,随机选择醋变量值,求解线性方程组得到油变量;验证时,将签名代入公钥多项式检查是否等于消息哈希。MAYO和SNOVA是UOV的优化变体,通过减小公钥尺寸提升实用性。
硬件实现核心运算
多变量签名的主要计算量为有限域GF(2^k)上的大规模矩阵-向量乘法和多项式求值。以UOV为例,签名生成需要计算约O(n·m)次GF乘法,其中n为变量总数(如n=112),m为方程数(如m=64)。硬件设计的关键在于:
- GF(2^k)乘法器阵列:使用组合逻辑实现,k=8时每个乘法器约消耗40-60个LUT;
- 并行度优化:将m个方程的计算完全并行化,每个方程分配独立的乘法器阵列;
- 密钥存储:公钥矩阵(约66KB)可存于BRAM,私钥仿射变换(约32KB)建议存于分布式RAM以降低访问延迟。
实战场景:车规级V2X签名加速
某智能网联汽车项目需要在ECU中实现UOV签名,要求签名生成延迟<1ms。ECU采用RISC-V处理器+硬件加速器架构。初始方案使用软件实现,签名延迟达8.5ms,无法满足要求。
硬件加速器设计:在FPGA中实现GF(2^8)乘法器阵列(64个并行),配合流水线结构的矩阵乘法单元。将公钥矩阵预加载至BRAM(占用36个36Kb BRAM),私钥仿射变换存储在寄存器堆中。签名流程分为三步:①计算消息哈希(SHA-256硬件核);②随机醋变量生成(使用TRNG);③线性方程组求解(高斯消元硬件单元)。
实测结果:签名生成延迟降至0.42ms,验证延迟0.18ms,满足V2X通信的实时性要求。硬件资源消耗为18,200 LUT、24个DSP、36个BRAM,功耗约0.8W。
3.4 基于哈希的PQC算法:实现简单但状态管理复杂
核心原理
基于哈希的签名方案(HBS)仅依赖哈希函数的抗碰撞性和抗原像性。SPHINCS+采用无状态设计,通过FORS(Few-time Signature)和HORST(Hash to Obtain Random Subset Trees)组合实现一次性签名,再通过Merkle树实现多消息签名。XMSS则为有状态方案,需要维护密钥索引。硬件实现的核心是哈希函数的高效计算,SPHINCS+支持SHA-256、SHAKE256和Haraka三种哈希族。
硬件实现特点
哈希密码的硬件实现相对简单,主要资源消耗在哈希核的实例化数量上。SPHINCS+签名生成需要执行数千次哈希运算,因此多核并行哈希架构是提升性能的关键。以SHA-256为例,单个硬件核在Artix-7上可达到约2Gbps吞吐率,但SPHINCS+需要约2,000次哈希调用,因此需要8-16个并行哈希核才能达到可接受的签名速度。
常见误区与复盘
许多设计者误以为哈希密码“简单”而忽视状态管理。对于有状态的XMSS,硬件中必须实现防回滚机制:密钥索引需存储在非易失性存储器(如Flash)中,并采用“先写后增”的原子操作。若在签名过程中掉电,可能导致密钥重用,造成灾难性安全漏洞。建议在硬件中加入看门狗定时器和电源监测电路,确保密钥索引更新的原子性。
3.5 基于同源的PQC算法:理论优美但硬件实现困难
核心原理
同源密码学基于椭圆曲线同源计算的困难性。SIKE(Supersingular Isogeny Key Encapsulation)曾是最有潜力的同源方案,但在2022年被Castryck-Decru攻击破解,NIST已将其从候选名单中移除。CSIDH(Commutative Supersingular Isogeny Diffie-Hellman)基于更复杂的群作用问题,目前仍在研究中。同源计算的核心运算是大素数域上的椭圆曲线标量乘和同源映射的迭代计算。
硬件实现难点
同源密码的硬件实现面临三大挑战:
- 有限域运算位宽大:SIKE使用434位素数域,需要实现434位乘法器(约消耗4,000个LUT);
- 同源计算迭代深度大:每次同源映射需要执行数十次椭圆曲线点运算,且存在数据依赖,难以流水线化;
- 存储开销高:中间结果需保存多个椭圆曲线点坐标,每个点需2个434位大数。
尽管SIKE已被破解,但同源方案的研究仍在继续。对于硬件工程师而言,理解同源密码的实现难点有助于评估未来新型PQC算法的硬件可行性。目前建议将同源算法作为研究性实现,而非产品化选择。