· 正微光电· technology· 约 58 分钟精读

PQC FPGA IP 核实现详解:NTT 流水线架构

核心要点速览 · TL;DR 概要

从蝶形单元数据通路到双端口 BRAM 零碰撞寻址:深度解析正微光电 PQC FPGA IP 核的 8 级 NTT 流水线实现、Montgomery/Barrett 模约减电路选型,以及 193/193 KAT 测试向量全过的验证方法论。

PQC FPGA IP 核实现详解:NTT 流水线架构
PQC FPGA IP 核 · 硅片级验证FPGA IP Core · KAT算法矩阵 · crypto-agility 热切换NIST 标准ML-KEM · ML-DSA · SLH-DSA国产算法AIGIS · LAC · Scloud+芯片核心 IP 模块NTT 引擎256 系数 / 周期KEM / 签名核心恒定时间执行QRNG 熵源接口1 Gbps 随机注入硅片级验证与交付193 / 193 KAT全量通过PCIe 加速板卡7035 ops/sIP 核授权可编程交付

1. PQC 硬件加速需求与 IP 核设计目标

1.1 后量子密码落地的算力瓶颈

后量子密码(PQC)的标准化进程在 2024 年 8 月迎来里程碑:NIST 正式发布 FIPS 203(ML-KEM)、FIPS 204(ML-DSA)与 FIPS 205(SLH-DSA)三项联邦信息处理标准,标志着基于格的密码学正式进入全球商用部署阶段。然而,与经典 RSA/ECC 相比,格密码的运算特征发生了根本性变化:其核心计算从”大整数模幂”转变为”多项式环上的模乘与数论变换(NTT)“,单次密钥封装涉及多次 256 点 NTT 变换与数百次 16 位模乘。

在纯软件实现下,ML-KEM-768 的密钥封装在 1GHz Cortex-A72 上约需 120 微秒,在低功耗边缘处理器(如 Cortex-A7)上则高达数百微秒。对于每秒数万次握手的网关场景,这一性能远不能满足需求。更关键的是,工业关基场景对密码运算提出确定性要求:最坏情况执行时间(WCET)必须可验证,任何数据依赖分支都会破坏功能安全(SIL4)的形式化验证。软件实现中的动态分支、缓存抖动与调度延迟,使得 WCET 分析极为困难。

硬件加速是突破算力瓶颈的必然路径。FPGA 以其可重构性、低延迟与确定性执行特征,成为 PQC 硬件加速的首选载体:可以在不更换整机的前提下为存量设备注入抗量子能力;同时,硬件流水线天然满足恒定时间(Constant-time)执行要求,从架构层面消除计时侧信道。

1.6 密码学运算的并行度分析

ML-KEM 的运算负载呈现鲜明的并行特征:NTT 的每一层蝶形之间完全独立,128 组蝶形天然可并行;Basemul 的 128 组二次多项式乘法同样相互独立;Keccak 置换的轮函数在轮内步骤间存在依赖,但轮间可流水。这一并行度结构为硬件架构提供了清晰的映射指引:蝶形单元阵列(空间并行)× 流水线(时间并行)的双维并行架构,能够在有限资源约束下取得最优吞吐。

1.2 IP 核的总体架构与设计原则

正微光电 PQC FPGA IP 核遵循”模块化、流水化、确定性”三大设计原则,总体架构由五个功能模块构成:

  1. NTT 引擎(NTT Engine):核心计算单元,负责多项式乘法中的正/逆数论变换;
  2. Basemul 阵列(Base Multiplication Array):频域逐点乘法,处理 128 组二次多项式乘积;
  3. 模约减单元(Modular Reduction Unit):Montgomery 与 Barrett 双模式模约减电路;
  4. Keccak 采样器(Keccak Sampler):基于 SHAKE128 的可扩展输出函数,负责多项式系数采样;
  5. 控制与调度逻辑(Control & Scheduling):流水线级间握手、地址生成与状态机管理。

设计原则的工程含义如下:

  • 模块化:各功能模块通过标准 AXI-Stream 接口互连,支持独立验证与复用;
  • 流水化:所有计算路径均拆分为多级流水,消除组合逻辑关键路径,支持 300MHz 以上主频;
  • 确定性:循环次数恒定、无数据依赖分支、无动态缓存行为,WCET 可精确计算。

1.3 性能目标与资源约束

IP 核的设计目标设定为:

指标目标值说明
ML-KEM-768 封装延迟≤ 15 微秒满足网关高并发握手需求
ML-KEM-768 解封装延迟≤ 12 微秒满足双向协商时延预算
时钟频率≥ 300 MHz28nm 工艺综合约束
LUT 资源≤ 15,000适配中端 FPGA 器件
BRAM 资源≤ 3 块(18Kb)控制片上存储开销
功耗≤ 1.5 W工业级散热约束

1.4 设计流程与验证闭环

IP 核的开发遵循业界标准的 RTL 设计流程:规格定义 → 算法参考模型(C 模型,与 FIPS 203 参考实现比对)→ RTL 编码 → 仿真验证(含 KAT)→ 综合与时序收敛 → FPGA 原型验证 → 板级实测。其中算法参考模型与 RTL 的双轨实现是质量保证的核心:任何算法级修改先在 C 模型中验证正确性,再同步修改 RTL,确保两个实现始终比特级一致。

1.5 目标应用场景分析

IP 核面向三类典型场景设计:

  1. 高并发网关:TLS/IPsec 混合密钥交换的硬件加速,要求每秒数万次 ML-KEM 封装,双蝶形并行架构与多实例部署提供弹性算力;
  2. 工业终端:电力、轨交等行业的边缘设备,要求确定性 WCET 与宽温工作范围,恒定时间流水线天然满足;
  3. 云密码机:为 KMS 平台提供批量密钥生成与封装算力,与三级熵池架构协同,支撑百万级并发密钥分发。

三类场景对 IP 核的共性要求是:性能、确定性、安全性三者兼得——这正是硬件加速相对软件实现的根本优势。

2. 多项式环结构与 NTT 的数学基础

2.1 ML-KEM 的代数结构

ML-KEM 的全部运算定义在分圆多项式商环上:

Rq=Zq[X]/(X256+1)\mathcal{R}_q = \mathbb{Z}_q[X] / (X^{256} + 1)

其中模数 q=3329q = 3329 是精心挑选的素数,满足 q1(mod256)q \equiv 1 \pmod{256},从而保证环上存在本原 256 次单位根。由于 3329257(mod512)3329 \equiv 257 \pmod{512}X256+1X^{256} + 1Z3329\mathbb{Z}_{3329} 上分解为 128 个二次不可约因式的乘积:

X256+1=i=0127(X2ζ2BitRev7(i)+1)(mod3329)X^{256} + 1 = \prod_{i=0}^{127} \left( X^2 - \zeta^{2 \cdot \text{BitRev}_7(i) + 1} \right) \pmod{3329}

其中 ζ=17\zeta = 17 是本原 256 次单位根(满足 ζ2561\zeta^{256} \equiv 1ζ1281(mod3329)\zeta^{128} \equiv -1 \pmod{3329}),BitRev7\text{BitRev}_7 为 7 位比特反转置换。

基于中国剩余定理(CRT),环 Rq\mathcal{R}_q 同构于 128 个二次域的直接和:

Rqi=0127Zq[X]/(X2ζ2i+1)\mathcal{R}_q \cong \bigoplus_{i=0}^{127} \mathbb{Z}_q[X] / \left( X^2 - \zeta^{2i+1} \right)

这一结构决定了 ML-KEM 的 NTT 采用 7 层蝶形(而非 8 层),变换结果以”128 组二次多项式”的点值表示输出。

模数 q=3329q = 3329 的二进制表示为 1101000000012110100000001_2,位宽 12 比特。其二进制形态的低 12 位呈现稀疏模式,使 Montgomery 约减的常数乘法可以压缩为两次移位与两次加法,硬件实现中模乘单元的等效门数因此降低约 20%。这一性质是 FIPS 203 选择 3329 作为模数的工程考量之一,也是硬件实现必须精确利用的结构特征。

2.2 负包裹卷积与 NTT 的对应关系

多项式乘法在 Rq\mathcal{R}_q 上等价于负包裹卷积:对两个 256 系数多项式 ffgg,其乘积模 X256+1X^{256} + 1 满足:

hk=i+j=kfigji+j=k+256figjh_k = \sum_{i+j=k} f_i g_j - \sum_{i+j=k+256} f_i g_j

NTT 将这一 O(n2)O(n^2) 卷积转化为频域 O(n)O(n) 点乘:先对 ffgg 分别执行正变换得到 f^\hat{f}g^\hat{g},逐点执行 Basemul 乘法 h^=f^g^\hat{h} = \hat{f} \circ \hat{g},再执行逆变换还原 hh。总复杂度由 2562=65,536256^2 = 65,536 次模乘降至约 1,536 次,理论加速约 40 倍。

2.3 为什么选择 7 层而非 8 层:不完全 NTT 的工程意义

经典教科书中的 NTT 通常描述为 log2n\log_2 n 层完整蝶形变换,对 n=256n = 256 应为 8 层。但 ML-KEM 采用了 7 层”不完全”NTT,其根本原因在于模数 q=3329q = 3329 的代数性质:33291=3328=28×133329 - 1 = 3328 = 2^8 \times 13,因此 Z3329\mathbb{Z}_{3329} 中存在 256 阶乘法子群,但不存在 512 阶子群。多项式 X256+1X^{256} + 1 的根是本原 512 次单位根,而域中不存在 512 次本原单位根,导致 X256+1X^{256} + 1 无法完全分裂为 256 个一次因式,只能分裂为 128 个二次因式。

这一看似”缺陷”的性质反而带来了两个工程收益:

  1. 蝶形深度减半:7 层蝶形相对 8 层减少一层关键路径延迟,单次变换时钟周期数下降约 12%;
  2. Basemul 频域乘法:变换后的点值表示以”128 组二次多项式”呈现,频域乘法退化为 128 次模 X2γX^2 - \gamma 的二次多项式乘法(即 Basemul),每次 Basemul 仅需 5 次模乘,总模乘数从朴素卷积的 65,536 次锐减至 1,536 次。

这一结构是 ML-KEM 相对于早期 Kyber 版本的重要工程优化,也是 IP 核微架构设计中必须精确复现的代数前提:任何对 8 层完整 NTT 的”简化”实现都会导致与 FIPS 203 参考实现不兼容,KAT 验证将直接失败。

比特反转置换的硬件含义:FIPS 203 中旋转因子的索引采用比特反转顺序(Bit-Reversed Order),即蝶形运算的数据访问模式并非简单递增,而是遵循特定的位序重排。硬件实现中,这一重排通过交叉开关网络(Crossbar Network)在数据载入阶段一次性完成,将重排开销从每层摊销到单次,降低整体延迟约 5%。

2.4 旋转因子的预计算与存储

7 层 NTT 共需 128 个不同旋转因子 ωk=ζBitRev7(k)+1mod3329\omega_k = \zeta^{\text{BitRev}_7(k)+1} \bmod 3329k=0,,127k = 0, \dots, 127)。这些因子在 IP 核初始化阶段一次性计算并固化于 ROM,运行期零计算开销。旋转因子的数值范围验证如下:

ζ=17,ζ1281712833281(mod3329)\zeta = 17, \quad \zeta^{128} \equiv 17^{128} \equiv 3328 \equiv -1 \pmod{3329}

ζ256172561(mod3329)\zeta^{256} \equiv 17^{256} \equiv 1 \pmod{3329}

每个旋转因子以 16 位定点存储,128 个因子共占 256 字节 ROM。ROM 采用双端口设计,支持双蝶形并行时同周期读取两个独立因子。

2.5 逆变换的归一化处理

逆 NTT(INTT)在完成蝶形运算后需要乘以归一化因子 n1modqn^{-1} \bmod q。由于 n=256n = 256q=3329q = 3329,计算:

n125613304(mod3329)n^{-1} \equiv 256^{-1} \equiv 3304 \pmod{3329}

该常数在 IP 核初始化时预计算并固化,INTT 输出级通过一次常数模乘完成归一化,不引入额外延迟。归一化乘法复用蝶形单元的模乘通路,仅增加 1 个时钟周期。

2.6 多项式乘法全流程的周期预算

综合上述各环节,IP 核完成一次完整的 Rq\mathcal{R}_q 多项式乘法(正 NTT + Basemul + 逆 NTT + 归一化)的周期预算为:

环节时钟周期说明
正 NTT(7 层双蝶形)约 240含流水线填充
Basemul(128 组)约 324 路并行
逆 NTT(7 层双蝶形)约 240含归一化
合计约 512约 1.7 微秒 @ 300MHz

该周期预算与实测数据(ML-KEM-768 封装 11.2 微秒,含 4 次多项式乘法与采样/哈希开销)高度吻合,验证了微架构设计的精确性。

2.7 ML-KEM 三个参数集的运算量对比

ML-KEM 提供三个安全等级参数集(512/768/1024),其运算量随模块维度 kk 线性增长:

参数集模块维度 kk环多项式乘法次数(密钥生成)单次封装 NTT 次数公钥大小密文大小
ML-KEM-512243800 B768 B
ML-KEM-7683841,184 B1,088 B
ML-KEM-102441251,568 B1,568 B

IP 核通过配置寄存器选择参数集,NTT 引擎与采样器的流水线结构完全复用,仅矩阵运算的调度序列不同,资源占用不随参数集变化——这是硬件设计相对软件实现的重要优势:算法升级不增加硬件成本。

3. 蝶形单元与 8 级流水线微架构

3.1 蝶形运算的数学定义

NTT 正变换采用 Cooley-Tukey(CT)蝶形拓扑,其基本运算为:

a=a+ωb(modq)a' = a + \omega \cdot b \pmod q

b=aωb(modq)b' = a - \omega \cdot b \pmod q

其中 ω\omega 为预计算的旋转因子(Twiddle Factor)。逆变换采用 Gentleman-Sande(GS)拓扑:

a=a+b(modq)a' = a + b \pmod q

b=(ab)ω1(modq)b' = (a - b) \cdot \omega^{-1} \pmod q

两种拓扑共享同一套模乘与加减法器,通过数据通路复用实现面积优化。CT 蝶形先乘后加减,GS 蝶形先加减后乘,这一对称结构使硬件可以共用模乘累加单元,仅通过选择器切换数据流。

3.2 蝶形单元(BSU)的硬件结构

单个蝶形单元(Butterfly Unit, BSU)的关键路径为:一次 16 位乘法、一次 16 位加法与一次条件减法。为消除条件减法的分支延迟,硬件采用掩码式条件选择:

u=a+ωbu = a + \omega b

r=uq[uq]r = u - q \cdot [u \ge q]

其中 [uq][u \ge q] 为指示函数,通过比较器输出的高位构造全 0/全 1 掩码,与 qq 做位与后再减法,全程无分支跳转,执行时间恒定。

3.3 8 级流水线的级间调度

正变换需要 7 层蝶形(每层 128 组蝶形,共 448 次蝶形运算)。硬件采用双蝶形并行架构,每时钟周期可完成 2 次蝶形运算,单次正变换需 224 个时钟周期。考虑流水线填充与排空开销,实际约 240 个周期。在 300MHz 主频下,单次正 NTT 耗时约 0.8 微秒。

级间采用寄存器打拍(Register Retiming)策略:每级蝶形运算后插入两级流水寄存器,平衡数据到达时间,消除级间互锁需求。由于各级数据依赖仅存在于本级输入输出,流水线无需任何气泡(Bubble),利用率达到 100%。

3.4 流水线级间数据通路的寄存器分配

级间流水寄存器组的设计遵循”双寄存器堆”策略:每个蝶形级输出侧配置两套独立的 32 位宽寄存器堆,交替承载当前级输出与下一级输入,消除读写冲突。具体而言:

  • 写侧寄存器堆:捕获本级蝶形结果,与运算单元并行写入;
  • 读侧寄存器堆:向下一级提供操作数,与写侧物理隔离。

双寄存器堆通过乒乓(Ping-Pong)机制切换,实现”写当前级的同时读下一级”的全双工数据流。该设计避免了单一寄存器堆的读写端口竞争,且不增加 BRAM 带宽占用。

3.5 时钟门控与动态功耗管理

流水线采用逐级时钟门控(Clock Gating):当某级蝶形单元处于空闲状态(例如 INTT 阶段 Basemul 阵列等待时),其时钟自动关闭,动态功耗降为零。实测表明,在 50% 负载率下,时钟门控使引擎整体功耗下降约 62%。这一特性对工业级无风扇设备的散热预算尤为关键。

3.6 流水线的时序收敛策略

综合阶段的关键路径位于蝶形单元的模乘-加法链。为满足 300MHz 主频目标,设计采用三重时序优化:

  1. 重定时(Retiming):综合工具自动将关键路径上的组合逻辑跨寄存器重新分配,平衡各级延迟;
  2. 操作数预取:旋转因子在蝶形级启动前一个周期预取至寄存器,从关键路径中移除 ROM 访问延迟;
  3. 进位链优化:模乘加法树的进位链采用专用快速进位结构(如 FPGA 的 CARRY4 原语),进位传播延迟降低约 40%。

综合结果显示,最差路径建立时间裕量为 0.32 纳秒(@ 300MHz, 28nm, 0.8V),满足典型角与时序收敛要求。

3.7 蝶形级的吞吐-面积权衡分析

蝶形单元的数量选择是吞吐与面积的经典权衡。设计团队对 1/2/4/8 路蝶形并行配置进行了综合对比:

配置蝶形单元数等效门数单次正 NTT 周期吞吐(变换/秒 @300MHz)功耗(毫瓦)
单蝶形128,000448约 670K12
双蝶形251,000224约 1.34M21
四蝶形496,000112约 2.68M38
八蝶形8180,00056约 5.36M70

考虑到 ML-KEM 密钥封装需执行 2 至 4 次多项式乘法,双蝶形配置在面积效率(门数/吞吐比)上达到最优,且为 Basemul 阵列与采样器的并行执行留出资源余量。因此 IP 核最终采用双蝶形并行架构。

4. 模约减电路:Montgomery 与 Barrett 的硬件选型

4.1 Montgomery 模约减

Montgomery 模约减将除法转化为移位与乘法,适合硬件实现。选取基数 R=216R = 2^{16},预计算常数:

QINV=q1modR=33291mod65536=62209QINV = -q^{-1} \bmod R = -3329^{-1} \bmod 65536 = 62209

对输入乘积 t=abt = a \cdot b(最大 32 位),约减过程为:

m=(tQINV)modRm = (t \cdot QINV) \bmod R

u=(t+mq)/Ru = (t + m \cdot q) / R

r=min(u,uq)r = \min(u, u - q)

硬件实现中,modR\bmod R/R/R 分别通过截取低 16 位与高 16 位走线完成,无逻辑延迟。关键路径为两级 16 位乘法与一级 32 位加法,综合延迟约 2.1 纳秒(28nm 工艺)。

4.2 Barrett 模约减

Barrett 约减适用于不进入 Montgomery 域的通用模乘。预计算常数:

μ=216q=19\mu = \left\lfloor \frac{2^{16}}{q} \right\rfloor = 19

约减过程为:

t=xxμ216qt = x - \left\lfloor \frac{x \cdot \mu}{2^{16}} \right\rfloor \cdot q

r=tq[tq]r = t - q \cdot [t \ge q]

Barrett 仅需一次乘法、一次移位与一次乘法减法,面积开销低于 Montgomery,但需处理中间值范围更宽的边界条件。

4.3 双模式电路的统一设计

IP 核的模乘单元支持 Montgomery 与 Barrett 双模式切换:NTT 蝶形路径使用 Montgomery 模式(域内乘加无需反复进入/退出 Montgomery 域),Basemul 与采样路径使用 Barrett 模式。两种模式共享同一乘法器阵列与加法树,通过模式选择信号切换约减常数与数据通路,面积复用率超过 70%。

4.7 与软件实现的性能对比视角

硬件模约减与软件实现的差异,速度只是其一,确定性才是根本。软件实现(即使是精心优化的汇编)受分支预测、缓存行为与中断干扰影响,执行时间存在数百纳秒的抖动;硬件流水线则完全确定性,每次模乘执行时间精确到时钟周期。对于功能安全认证(IEC 61508 SIL4),这一确定性是 WCET 形式化验证的前提,也是硬件实现不可替代的工程价值。

4.8 模约减单元的自检与故障保护

模约减单元内置奇偶校验自检:对每次约减运算的结果附加一位偶校验位,周期性地与参考路径(并行复算同一运算的简化版本)比对。若检测到不一致,立即触发故障中断并切换至冗余单元。自检开销仅增加约 8% 的功耗,换取的是故障检出率提升至 99.99% 以上,满足工业功能安全的可靠性要求。

4.4 模乘单元的进位保留加法器(CSA)设计

模乘单元内部的乘法-加法树采用进位保留加法器(Carry-Save Adder, CSA)结构:三个 16 位操作数的乘积累加被压缩为”和向量 + 进位向量”两组,仅在最末级通过一个 24 位超前进位加法器(CLA)完成最终合并。CSA 结构将关键路径从三级加法压缩为一级加法加一级压缩,综合后模乘单元的组合延迟约 2.1 纳秒(28nm 工艺、0.8V 典型角),支撑 300MHz 以上主频。

进位保留编码的另一个工程价值在于功耗优化:CSA 压缩级的翻转率显著低于 CLA 全加器,动态功耗下降约 15%。

4.5 模约减的数值边界分析

Montgomery 约减要求输入 t<Rqt < R \cdot q,其中 R=216R = 2^{16}q=3329q = 3329,即 t<216×33292.18×1011t < 2^{16} \times 3329 \approx 2.18 \times 10^{11}。蝶形运算中 t=a+ωbt = a + \omega b,其中 a,b<qa, b < qω<q\omega < q,因此 t<q+q2<216qt < q + q^2 < 2^{16} \cdot q 恒成立,无溢出风险。Basemul 运算中两个二次多项式乘积的系数范围需要更仔细的界定:模 X2γX^2 - \gamma 后,系数上界为 2q2<216q2q^2 < 2^{16} \cdot q,同样安全。这一边界分析是 IP 核无流水线气泡运行的理论前提。

4.6 Montgomery 域的进出转换

Montgomery 算法的工作域与自然域之间存在转换开销:自然域元素 aa 需乘以 RmodqR \bmod q 进入 Montgomery 域,运算结果需乘以 R1modqR^{-1} \bmod q 返回自然域。在 ML-KEM 的运算流程中,多项式系数在采样阶段即直接生成于 Montgomery 域(采样输出的 12 位值直接与 RR 相乘),NTT 与 Basemul 全程在 Montgomery 域内完成,仅在最终输出(公钥/密文序列化)时执行一次域退出转换。这一”全程域内运算”策略将进出域转换次数从 O(n)O(n) 降低为常数次,避免了传统实现中反复转换的性能损耗。

5. 双端口 BRAM 零碰撞寻址算法

5.1 存储架构

NTT 引擎的系数存储采用两块独立的 128×16 位双端口 BRAM(Bank0 与 Bank1)。双端口特性允许同周期 2 次读或 2 次写,但 NTT 蝶形需要同周期读取两个操作数并写回两个结果,若寻址不当将产生 Bank 冲突(Bank Conflict),导致流水线停顿。

5.2 奇偶分离寻址策略

NTT 引擎的系数存储采用两块独立的 128×16 位双端口 BRAM(Bank0 与 Bank1)。双端口特性允许同周期 2 次读或 2 次写,但 NTT 蝶形需要同周期读取两个操作数并写回两个结果,若寻址不当将产生 Bank 冲突(Bank Conflict),导致流水线停顿。

正微光电采用奇偶位反转交错存储映射(Parity Interleaved Mapping):将 256 个系数均匀分布于两块 BRAM,映射规则为:

Bank(i)=imod2\text{Bank}(i) = i \bmod 2

Addr(i)=i/2\text{Addr}(i) = \left\lfloor i / 2 \right\rfloor

对于第 mm 层蝶形,参与配对的两个操作数索引为 iii+2mi + 2^m。由于 2m2^m 为偶数(m1m \ge 1),两者奇偶性相同,恒落于同一 Bank?——这看似矛盾,实则正是设计的精妙之处:配合地址的比特反转重排,第 mm 层的配对索引经过重排后奇偶性必然不同。

具体地,设系数经比特反转后的索引为 j=BitRev8(i)j = \text{BitRev}_8(i)。在第 mm 层,配对操作数的索引差为 27m2^{7-m}(奇数),因此两者奇偶性相反,恒落在不同 Bank。这一性质可通过数学归纳法严格证明:对任意 m[1,7]m \in [1, 7],第 mm 层所有 128 组蝶形的两个操作数均分布在 Bank0 与 Bank1,读写带宽利用率达到 100%,流水线零停顿。

5.3 旋转因子 ROM

旋转因子存储于独立的 128×16 位单端口 ROM,不占用 BRAM 带宽。ROM 地址由当前层数与组偏移量生成,支持双蝶形并行时同周期读取两个旋转因子(ROM 拆分为两块 64×16 位)。

5.4 地址生成器的硬件实现

地址生成器(Address Generator)负责将”层号 + 组号 + 蝶形号”映射为 BRAM 读写地址。其硬件实现包含三个部件:

  1. 比特反转单元:实现 BitRev8\text{BitRev}_8 置换,通过 8 级交叉走线网络完成,零逻辑延迟;
  2. 层索引计算单元:根据当前层号 mm 计算操作数索引差 27m2^{7-m},并通过移位器产生连续地址流;
  3. 奇偶校验逻辑:对生成的每对地址进行奇偶校验,确保恒落入不同 Bank,作为硬件自检断言(Assertion)。

地址生成器的设计使得蝶形数据流完全流水化:每时钟周期输出一对读地址与一对写地址,与双蝶形并行架构的带宽需求精确匹配。

5.5 流水线冲突的完备性分析

零碰撞寻址的正确性依赖对全部 7 层 × 128 组 = 896 组蝶形访问模式的穷举验证。验证方法包括:

  1. 形式化验证:利用 SAT 求解器对”任意层任意组的两个操作数 Bank 不同”这一断言进行穷举证明,覆盖全部 896 组访问模式;
  2. 动态仿真:在 RTL 仿真中监控所有 BRAM 读写端口,断言任何周期不出现同 Bank 双端口竞争;
  3. 覆盖率分析:地址生成器的状态转移覆盖率与分支覆盖率均达到 100%。

三重验证把零碰撞性质从设计意图变成了被机器证明的硬件事实。

5.6 存储系统的功耗优化

BRAM 读写功耗在引擎总功耗中占比可观。设计采用三项优化措施:

  1. 写掩码(Write Mask):未参与当前蝶形的 BRAM 字节自动使能写屏蔽,避免无效翻转;
  2. Bank 级时钟门控:空闲 Bank 的时钟关闭,仅活跃 Bank 保持供电;
  3. 读数据寄存:读端口数据寄存一拍,降低总线翻转负载。

综合三项优化后,存储系统功耗降低约 35%,进一步压缩整体功耗预算。

6. Keccak 采样器与扩展级流水线

6.1 SHAKE128 可扩展输出函数

ML-KEM 的密钥生成与封装需要从种子中扩展出 256 个多项式系数,系数采样采用拒绝采样(Rejection Sampling)从 SHAKE128 输出中提取。SHAKE128 基于 Keccak-f[1600] 置换,支持任意长度输出。

6.2 采样器硬件流水线

Keccak 采样器采用三级流水线:第一级执行吸收阶段(Absorb),第二级执行 θ、ρ、π 三步骤,第三级执行 χ、ι 与挤出阶段(Squeeze)。θ 步骤的列奇偶校验(Column Parity)是组合逻辑关键路径,通过流水线重定时(Retiming)将奇偶校验求和提前至上一级末尾预计算,关键路径缩短约 30%。

采样器与 NTT 引擎并行工作,形成两条独立流水线:采样器输出 128 个系数后即触发 NTT 引擎加载,密钥生成总延迟从 1,800 周期压缩至 1,280 周期。

Keccak-f[1600] 置换的轮函数结构为:

Round(A)=ι(χ(π(ρ(θ(A)))),RCr)\text{Round}(A) = \iota(\chi(\pi(\rho(\theta(A)))), RC_r)

其中 θ\theta 为列混合(Column Parity Mixing),ρ\rho 为行旋转,π\pi 为位置置换,χ\chi 为非线性 S 盒层,ι\iota 为轮常数加。硬件实现将 24 轮置换展开为三级流水,每级处理 8 轮,通过寄存器共享减少面积。

6.3 中心二项分布采样的硬件实现

ML-KEM 的噪声系数服从中心二项分布 Bη\mathcal{B}_\etaη=2\eta = 233)。硬件采样器从 SHAKE128 输出流中取 2η2\eta 个比特,计算其汉明重量之差得到采样值:

x=i=1ηbii=1ηcix = \sum_{i=1}^{\eta} b_i - \sum_{i=1}^{\eta} c_i

其中 bi,cib_i, c_i 为 SHAKE128 输出的独立比特。硬件实现通过两个并行汉明重量计算单元(各含 η\eta 个半加器树)与一个减法器完成,每时钟周期可生成 4 个采样值,与 NTT 引擎的系数消费速率匹配。

6.6 哈希函数在密钥封装流程中的角色

ML-KEM 的密钥封装流程还包含多个哈希环节:随机数散列(G 函数)、公钥散列(H 函数)、密钥确认(J 函数)以及 FO 变换(Fujisaki-Okamoto)中的隐式拒绝。IP 核内嵌 SHA3-256 与 SHAKE256 硬件单元,与 Keccak 采样器共享轮函数电路,复用面积:

  • G 函数G(m)=(K,r)G(m) = (K, r),输出 64 字节,用于生成封装随机性与共享秘密;
  • H 函数H(pk)=hH(pk) = h,公钥散列,参与密文绑定;
  • J 函数J(K)=jJ(K) = j,密钥确认,防止解封装失败时的密钥混淆。

哈希单元的流水线与采样器流水线共享 Keccak 轮函数三级结构,通过操作数多路复用切换输入输出,新增逻辑面积仅约 15%。

6.4 拒绝采样的流水线衔接

系数采样采用模 qq 拒绝采样:当 SHAKE128 输出的 12 位值大于等于 q=3329q = 3329 时拒绝并重取。拒绝概率为:

Preject=13329409618.7%P_{reject} = 1 - \frac{3329}{4096} \approx 18.7\%

硬件为拒绝事件预留了额外的采样时钟周期预算,确保平均情况下流水线不出现饥饿(Starvation)。实测表明,在 300MHz 主频下,256 个系数的完整采样耗时约 1.2 微秒。

6.5 Basemul 阵列的微架构展开

Basemul(基底乘法)是 ML-KEM 频域乘法的核心原语:对 128 组形如 f^i=fi,0+fi,1X\hat{f}_i = f_{i,0} + f_{i,1} X 的二次多项式对执行模 X2γX^2 - \gamma 乘法。展开计算:

(a0+a1X)(b0+b1X)=(a0b0+a1b1γ)+(a0b1+a1b0)X(modX2γ)(a_0 + a_1 X)(b_0 + b_1 X) = (a_0 b_0 + a_1 b_1 \gamma) + (a_0 b_1 + a_1 b_0) X \pmod{X^2 - \gamma}

硬件实现将每组 Basemul 拆解为 4 次 16 位模乘与 2 次模加,共需 5 次独立模乘(其中 a1b1γa_1 b_1 \gamma 可通过预乘旋转因子优化为一次乘加)。Basemul 阵列由 4 个并行模乘单元构成,每时钟周期完成 4 组 Basemul 运算,128 组共需 32 个时钟周期。

Basemul 结果直接写回 BRAM 的输出缓冲区,供 INTT 逆变换读取。整个”正 NTT → Basemul → 逆 NTT”的频域乘法流水线总延迟约 512 个时钟周期(1.7 微秒 @ 300MHz),是密钥封装的关键路径。

7. 侧信道防护:一阶掩码与恒定时间

7.0 侧信道威胁的物理本质

侧信道攻击利用密码实现运行时的物理泄露(功耗、电磁辐射、运行时间)恢复秘密信息。对于格密码,攻击者特别关注两类目标:NTT 蝶形运算中的旋转因子乘法的功耗特征;模约减条件减法中的分支行为。若实现不当,单次功耗迹(Power Trace)即可泄露私钥多项式的多个系数比特。

正微光电 IP 核的侧信道防护体系从三个层面构建:算法层(掩码)、实现层(恒定时间)、物理层(噪声注入与时钟随机化)。其中,算法层掩码与实现层恒定时间的组合是防护的核心,物理层措施作为纵深防御补充。

攻击模型的具体化:针对 ML-KEM 的侧信道攻击研究中,最经典的是对解封装流程中解密误差(Decryption Failure)的时序分析——若解密失败率与密文相关,攻击者可利用失败注入(Fault Injection)结合功耗分析恢复私钥。正微光电 IP 核在解封装路径上采用恒定时间解密失败检查(无提前返回),从根本上消除该攻击面。

7.1 掩码策略

私钥多项式在参与运算前被拆分为两个随机份额:

s=sms = s' \oplus m

其中 mm 为 QRNG 注入的随机掩码。NTT 线性变换分别作用于两个份额:

NTT(s)=NTT(s)NTT(m)\text{NTT}(s) = \text{NTT}(s') \oplus \text{NTT}(m)

由于 NTT 为线性运算,掩码在频域仍保持线性叠加,运算结束后再合并还原,全程功耗曲线与真实私钥解耦。

7.2 恒定时间执行

IP 核的所有计算路径均无数据依赖分支:模约减采用掩码式条件选择,蝶形运算循环次数恒定,存储器访问地址与数据值无关。汇编级与 RTL 级双重审查确保任何输入下执行时间完全一致,从架构层面消除计时侧信道。

7.3 故障注入检测与自检机制

针对工业级应用的功能安全要求(IEC 61508 SIL4),IP 核内置三重自检机制:

  1. 上电自检(Power-On Self-Test):上电后对旋转因子 ROM 执行 CRC 校验,并对蝶形单元执行已知输入-输出向量比对,耗时约 40 微秒;
  2. 周期自检(Periodic Self-Test):运行期间每 1 秒触发一次轻量级校验,对中间数据总线执行 CRC-8 多项式检测,误检率低于百万分之一;
  3. 故障注入测试(Fault Injection Test):通过测试端口注入单比特翻转,验证自检机制能够检测并隔离故障,避免故障传播至密钥输出。

7.4 掩码随机源与 QRNG 的协同

掩码所需的随机数由板载 QRNG 物理熵源实时提供,杜绝伪随机种子导致的掩码退化。QRNG 输出经在线健康测试(重复计数测试与自适应比例测试)后进入掩码寄存器,每次密钥运算消耗 256 位掩码随机数。这一协同设计确保掩码质量的物理随机性,是侧信道防护可信度的根基。

7.5 掩码方案的代价分析与权衡

一阶掩码并非零成本:掩码将运算量翻倍(两份份额分别计算),资源占用增加约 90%,功耗增加约 80%。工程权衡的核心问题在于:何种场景需要掩码?分析如下:

  • 网关/密码机场景:设备物理可控性差(可能被攻击者接触),攻击者具备功耗采集条件,必须启用掩码;
  • 可信硬件环境:设备位于物理隔离机房且无侧信道攻击者模型,可关闭掩码以换取性能;
  • 动态配置:IP 核支持运行时通过安全配置寄存器切换掩码模式,实现”性能/安全”按需调节。

实测表明,关闭掩码后 ML-KEM-768 封装延迟从 11.2 微秒降至约 8.5 微秒,但侧信道抗性随之下降。默认出厂配置启用掩码,确保安全优先。

7.6 物理层噪声注入

作为纵深防御的第三层,IP 核在功耗关键路径上叠加物理层噪声注入:由 QRNG 生成的高速随机比特流驱动一组冗余翻转逻辑(Dummy Switching Cells),在密钥运算期间持续产生与数据无关的随机功耗活动,进一步模糊功耗迹中与密钥相关的特征峰。实测表明,噪声注入使相关性功耗分析(CPA)所需的功耗迹数量提升约 4 个数量级。

7.7 侧信道验证的实测方法论

IP 核的侧信道防护水平通过标准化评估流程验证:

  1. TVLA 测试(Test Vector Leakage Assessment):采集固定与随机密钥组的各 10 万条功耗迹,计算 Welch t 统计量,检验泄露显著度是否低于阈值(t<4.5|t| < 4.5);
  2. CPA 攻击复现:以真实攻击工具对 IP 核实施相关性功耗分析,验证 100 万条功耗迹内无法恢复任一私钥字节;
  3. 计时一致性测试:对 10 万次不同输入的运算耗时进行分布检验,确认标准差低于 1 个时钟周期。

三项实测全部通过,验证了”掩码 + 恒定时间 + 噪声注入”三层防护体系的有效性。测试结果经第三方实测确认,并在安全评估报告中完整归档,为客户的密评与等保测评提供侧信道维度的证据。

8. 193/193 KAT 测试向量验证方法论

8.1 ACVP 验证协议

NIST 自动化密码算法验证协议(ACVP, Automated Cryptographic Algorithm Validation Program)是 KAT 验证的标准通道。IP 核通过 ACVP 服务器生成确定性测试向量,对 ML-KEM-512/768/1024 全参数集执行逐比特比对。

ACVP 协议采用客户端-服务器模式:测试向量由 NIST ACVP 服务器依据规范生成并以 JSON 格式下发,被测实现(DUT)执行算法后回传结果,服务器自动比对并签发验证证书。IP 核的 ACVP 客户端实现支持完整的三阶段流程(注册、向量获取、结果提交),并已通过 NIST 官方的互操作测试。

8.2 测试向量构成

KAT 测试覆盖以下环节:

  1. 密钥生成 KAT:固定种子输入,比对公钥与私钥输出;
  2. 封装 KAT:固定公钥与随机数输入,比对密文与共享秘密;
  3. 解封装 KAT:固定私钥与密文输入,比对还原的共享秘密。

全参数集共 193 组确定性测试向量,全部通过逐比特比对验证,实现 193/193 KAT 全过。该验证结果经第三方实测确认,证明 IP 核的 RTL 实现与 NIST 参考实现比特级一致。

8.3 KAT 验证的工程方法论

KAT 验证的工程价值远不止”测试通过”本身,其方法论包含四个层次:

  1. RTL 仿真层:在 Verilog/VHDL 仿真环境中加载测试向量,比对 RTL 输出与参考输出,覆盖所有参数集与所有功能路径;
  2. FPGA 原型层:在 FPGA 原型板上运行真实时钟频率的 KAT 测试,验证时序收敛后的行为与仿真一致(仿真与原型结果不一致通常是时钟域交叉或复位问题);
  3. 随机测试层:除确定性 KAT 向量外,额外运行 10 万组随机输入测试,验证实现的统计正确性,防止”过拟合测试向量”的实现错误;
  4. 负向测试层:注入单比特翻转与非法输入,验证错误检测机制(见 7.3 节)能够正确捕获异常。

8.4 与 ACVP 服务器的自动化对接

IP 核通过 ACVP 协议的 JSON 接口与 NIST ACVP 服务器自动化对接:测试注册(Test Session)、向量获取、结果提交全程自动化,支持回归测试的持续集成(CI)。每次 RTL 修改后自动触发全量 193 组 KAT 回归,确保任何微架构调整不破坏比特级兼容性。

8.5 KAT 验证的覆盖范围扩展

除 ML-KEM 的 193 组 KAT 向量外,IP 核还执行了扩展验证覆盖:

  1. ML-DSA(FIPS 204)KAT:覆盖签名/验签全流程的确定性向量,验证 IP 核在签名算法上的正确性;
  2. SHA-3/SHAKE 功能向量:对 Keccak 采样器执行 NIST FIPS 202 的官方功能向量验证,确保哈希原语正确;(https://csrc.nist.gov/pubs/fips/202/final)
  3. 边界与异常输入:对空输入、最大长度输入、非法参数组合执行鲁棒性测试,验证控制逻辑的异常处理;
  4. 连续运行稳定性:72 小时连续满负载运行后重新执行 KAT,验证时序与功耗漂移不影响功能正确性。

扩展验证的结果进一步强化了 IP 核的可信度:不仅”正确”,而且”稳定正确”。

8.6 验证环境的搭建与复现性

为确保 KAT 验证结果的可复现性,验证环境采用容器化交付:RTL 代码、测试平台(Testbench)、仿真脚本与 ACVP 客户端均打包为 Docker 镜像,任何工程师在任意机器上执行同一命令即可复现全部验证结果。验证环境的版本化(Git Tag)与 RTL 版本强绑定,确保”哪个 RTL 版本通过了哪些验证”永远可追溯。这一实践使 193/193 KAT 的结论不仅是一组数字,而是可随时被第三方审计复现的工程事实。

9. 资源占用、性能与产品落地

9.1 FPGA 资源占用实测

资源类型使用量说明
LUT约 14,200双蝶形并行架构
FF约 6,800级间流水寄存器
BRAM(18Kb)2.5 块系数存储与旋转因子 ROM
DSP约 16乘法器阵列
最高时钟300 MHz28nm 工艺综合

资源占用相对于中端 FPGA(如 Xilinx Artix-7 200T,约 134,000 LUT)占比约 10.6%,留有充足余量支持多实例部署与业务逻辑共存。

9.2 性能实测

操作延迟吞吐
ML-KEM-768 密钥生成约 12.5 微秒80,000 次/秒
ML-KEM-768 封装约 11.2 微秒89,000 次/秒
ML-KEM-768 解封装约 9.8 微秒102,000 次/秒
ML-DSA-65 签名约 30 微秒33,000 次/秒

性能数据的测量条件:板卡运行于 300MHz 时钟、启用一阶掩码与噪声注入(默认安全配置)、DDR 带宽不受限。第三方实测验证表明,在上述条件下性能数据可稳定复现,偏差小于 3%。若关闭掩码(可信环境配置),封装延迟进一步降至约 8.5 微秒,为性能敏感场景提供弹性选项。

9.3 产品落地

该 IP 核已集成于正微光电 PQC FPGA 加速卡与光甲® 融合网关,为关键信息基础设施提供微秒级后量子密码算力,支撑混合密钥交换、零信任改造与海量终端接入等场景。产品化的过程中,IP 核以标准化 AXI-Stream 接口对外提供能力,支持 PCIe 与千兆以太网两种宿主连接方式,适配服务器、网关与边缘设备等多样化载体。

9.4 与软件实现的多维对比

为客观呈现硬件加速价值,工程团队在同一平台(Xilinx Zynq UltraScale+,四核 Cortex-A53 + FPGA)上完成了软硬件对比测试:

指标纯软件(Cortex-A53, 1.5GHz)硬件加速(300MHz)加速比
ML-KEM-768 密钥生成约 95 微秒约 12.5 微秒约 7.6 倍
ML-KEM-768 封装约 88 微秒约 11.2 微秒约 7.9 倍
ML-KEM-768 解封装约 80 微秒约 9.8 微秒约 8.2 倍
ML-DSA-65 签名约 210 微秒约 30 微秒约 7.0 倍
CPU 占用率100%(独占)约 5%释放 95% 算力

对比结论:硬件加速带来约 8 倍的延迟改善,还释放了 CPU 算力供业务使用,同时以恒定时间执行消除侧信道风险——这是软件实现无法同时提供的三重收益。

9.5 可扩展性与多实例部署

IP 核支持多实例(Multi-Instance)部署:单块 FPGA 上可例化多个 NTT 引擎实例,通过 AXI 互连实现负载均衡。实测数据表明:

实例数总吞吐(封装/秒)资源增量
1约 89,000基准
2约 178,000LUT 增加约 95%
4约 356,000LUT 增加约 190%

吞吐近似线性扩展,验证了 IP 核架构的可扩展性,为不同规模场景提供弹性算力配置。

9.6 与国产 FPGA 平台的适配

为满足自主可控要求,IP 核已完成对国产 FPGA 平台(如紫光同创、复旦微电子等 28nm 级器件)的移植适配。适配工作的核心在于三方面:

  1. 原语映射:将 Xilinx 专用原语(BRAM、DSP48E)映射为国产平台等效原语,资源利用率差异控制在 5% 以内;
  2. 时序收敛:针对国产平台布线资源特性调整流水线级间寄存器分布,主频收敛至 250MHz 以上;
  3. 工具链对接:适配国产 EDA 综合工具(如紫光同创 PDS),验证流程与 KAT 回归全部通过。

国产平台适配使 IP 核能够在关键信息基础设施中实现全链条自主可控,摆脱对单一 FPGA 供应链的依赖。

9.7 工业场景的落地约束与适配

PQC 硬件加速在工业场景的落地需要满足额外的环境约束:

  1. 宽温工作范围:工业级器件需支持 -40°C 至 +85°C 工作温度,FPGA 时序需在极端温度下保持收敛(设计预留 15% 时序裕量);
  2. 电磁兼容(EMC):板卡设计满足 GB/T 17626 系列抗扰度要求,密码运算的电磁辐射经屏蔽与滤波处理,避免侧信道泄露与外部干扰;
  3. 冗余与热插拔:网关场景支持双卡冗余与在线热插拔,单卡故障时业务无缝切换至冗余卡;
  4. 远程固件升级:IP 核支持 FPGA 动态部分重配置(Partial Reconfiguration),可在线升级算法版本而无需停机。

这些工程约束的满足,使 IP 核是一个计算单元,也是可长期稳定运行于工业现场的可靠器件。

9.8 与算法库软件生态的协同

硬件 IP 核并非孤立存在,其与软件算法库的协同设计是系统性能的关键。正微光电的 PQC 算法库提供统一抽象层(Unified API),应用层调用与硬件/软件实现透明切换:

  • 统一接口:OpenSSL Engine / PKCS#11 / 国密接口(GM/T 0018)三种接入方式,应用零改造;
  • 自动调度:算法库检测硬件加速卡存在时自动卸载密码运算至 FPGA,无卡时回退纯软件实现;
  • 密钥管理对接:硬件密钥生成直接对接 KMS 平台的 KMIP 协议,实现密钥全生命周期管理。

该协同架构使 IP 核的价值最大化:硬件提供算力,软件提供生态兼容,二者结合形成完整的产品闭环。

9.9 未来演进方向

IP 核的演进路径与后量子密码标准化进程同步:

  1. ML-DSA 全面硬件化:当前签名运算由采样器与 NTT 引擎协同完成,后续将增加专用的拒绝采样与多项式运算单元,将 ML-DSA-65 签名延迟从 30 微秒压缩至 15 微秒以内;
  2. SLH-DSA 支持:基于哈希的无状态签名(FIPS 205)无需 NTT,主要依赖哈希单元吞吐,计划通过多实例哈希核阵列实现高性能支持;
  3. 形式化验证升级:将 RTL 级安全性质(恒定时间、零碰撞、掩码正确性)纳入形式化验证流程,为功能安全认证提供机器证明;
  4. 异构集成:探索将 IP 核与国密引擎(SM2/SM3/SM4)集成于同一 FPGA 或 SoC,形成”国密 + 后量子”双栈一体的密码算力平台。

10. 参考文献与延伸阅读

10.1 参考文献

  1. NIST, “FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard,” Aug. 2024.(https://csrc.nist.gov/pubs/fips/203/final)
  2. NIST, “FIPS 204: Module-Lattice-Based Digital Signature Standard,” Aug. 2024.(https://csrc.nist.gov/pubs/fips/204/final)
  3. J. Bos, L. Ducas, E. Kiltz, et al., “CRYSTALS-Kyber: a CCA-secure module-lattice-based KEM,” IEEE EuroS&P, 2018.(https://eprint.iacr.org/2017/634)
  4. P. L. Montgomery, “Modular multiplication without trial division,” Mathematics of Computation, 1985.(https://www.ams.org/journals/mcom/1985-44-170/S0025-5718-1985-0777282-X/)
  5. P. Barrett, “Implementing the Rivest Shamir and Adleman public key encryption algorithm on a standard digital signal processor,” CRYPTO ‘86, 1986.(https://link.springer.com/chapter/10.1007/3-540-47721-7_24)
  6. NIST, “The SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions,” FIPS 202, 2015.(https://csrc.nist.gov/pubs/fips/202/final)

10.2 站内延伸阅读

Share:
Back to Blog

Related Posts

View All Posts »
PQC FPGA IP 核:193 组 KAT 测试向量全过

PQC FPGA IP 核:193 组 KAT 测试向量全过

正微光电自研 PQC FPGA IP 核完成全量 193 组 KAT 测试向量验证,193/193 全部通过。本文解析 NIST ACVP 验证机制、三类测试向量的构成与双轨验证流程,剖析 NTT 引擎、模约减与一阶掩码防护等硬件微架构要点,并给出 ML-KEM-768 的性能与资源实测数据。

ML-KEM 硬件微架构与抗侧信道 FO 变换

ML-KEM 硬件微架构与抗侧信道 FO 变换

深入剖析 NIST FIPS 203 ML-KEM 模块格密钥封装标准的数学底座、多通道 NTT 模乘流水线微架构、CBD 采样硬件设计,以及针对选择密文攻击的 Fujisaki-Okamoto 隐式拒绝重加密电路与一阶/高阶掩码侧信道防御工程实现。

FIPS 204 ML-DSA 原理与抗侧信道微架构

FIPS 204 ML-DSA 原理与抗侧信道微架构

深入剖析 NIST FIPS 204 ML-DSA(原 CRYSTALS-Dilithium)格基数字签名标准的数学底座、Fiat-Shamir with Aborts 拒绝采样机制、23位 Solinas 素数 NTT 硬件微架构,以及高阶掩码与抗故障注入的侧信道防御工程实现。

FPGA动态局部重构:后量子密码敏捷加速与微架构

FPGA动态局部重构:后量子密码敏捷加速与微架构

深入解析基于 FPGA 动态局部重构(DFX)的后量子密码敏捷硬件加速体系。从 PCIe Gen2x8 XDMA 静态外壳、ICAP 400MB/s 局部比特流加载到无毛刺 AXI-Stream 解耦隔离,系统拆解 ML-KEM、ML-DSA 与 SLH-DSA 多模态算力核时分复用微架构;结合 1Gbps QRNG 连续物理熵源注入、一阶掩码侧信道防护与瞬态清零机制,实现 193/193 KAT 测试全过与 6.7~8.9 倍端到端混合加速。