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

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

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

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

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

1. 后量子密码标准化与硬件验证的时代背景

1.1 NIST FIPS 203/204/205 发布与全球 PQC 迁移浪潮

2024 年 8 月 13 日,美国国家标准与技术研究院(NIST)正式发布三项后量子密码(Post-Quantum Cryptography,PQC)标准:FIPS 203《Module-Lattice-Based Key-Encapsulation Mechanism Standard》(ML-KEM)、FIPS 204《Module-Lattice-Based Digital Signature Standard》(ML-DSA)与 FIPS 205《Stateless Hash-Based Digital Signature Standard》(SLH-DSA)。这三项标准的发布,为历时八年的 NIST 后量子密码标准化竞赛画上了阶段性的句号:竞赛自 2016 年公开征集算法提案、2017 年收到首批完整候选方案、经三轮公开评审与密码分析,于 2022 年 7 月公布入选算法名单,最终形成以格密码为主体、以哈希签名作为冗余的标准化格局。其中,ML-KEM 源自 CRYSTALS-Kyber 方案,定义 ML-KEM-512、ML-KEM-768 与 ML-KEM-1024 三个参数集,分别对应模块维度 k=2,3,4k=2,3,4,安全强度对标 AES-128、AES-192 与 AES-256;ML-DSA 源自 CRYSTALS-Dilithium,面向签名场景;SLH-DSA 源自 SPHINCS+,以无状态哈希签名为格密码提供安全冗余。2025 年 3 月,NIST 进一步发布基于准循环码的密钥封装机制标准 FIPS 206(HQC),为格密码之外的数学困难问题提供了标准化的备选路径,也印证了后量子标准化仍在持续演进。

标准发布之后,全球范围内的迁移浪潮随即启动。美国国家安全局(NSA)于 2022 年发布商用国家安全算法套件 2.0(CNSA 2.0),明确规定国家安全系统须以 2030 年与 2033 年为关键节点,停止采购仅含传统算法组合的产品,并完成向 ML-KEM-1024、ML-DSA-87 等后量子算法的迁移;欧盟网络安全局(ENISA)发布后量子密码迁移指南,建议各成员国在资产盘点、试点评估与分阶段替换上明确时间表;日本、韩国、新加坡等经济体亦先后公布本国的迁移路线图。在产业层面,国际互联网工程任务组(IETF)持续推进混合密钥交换机制(如 X25519MLKEM768)与 PQC TLS 扩展的标准化,主流浏览器与服务器软件已默认启用混合模式;证书体系、VPN 网关、即时通信与云服务等基础设施的后量子升级均已进入工程实施阶段。密码迁移的共性规律表明:标准发布只是起点,协议改造、算法替换与硬件平台升级构成的迁移链条中,硬件层的就绪程度往往决定整体迁移进度。对于密钥封装这类对时延敏感的高频操作,硬件加速与安全实现是产业界共同的工程课题,也正是本文讨论的 FPGA IP 核所立足的产业背景。

1.2 硬件实现比特级正确性的核心地位:为什么 KAT 验证是硬件 IP 交付的生死线

与可随时在线修复的软件不同,硬件 IP 核以比特流或版图形态交付后,其内部数据通路、状态机与运算逻辑在部署现场难以修改:一次交付、长期运行,任何逻辑错误都会以固定形式反复出现,并往往在密钥交换的临界路径上才暴露。格密码的运算结构进一步放大了这一风险。ML-KEM 的完整计算链由模 q=3329q=3329 的整数环上的随机采样、NTT 变换、多项式乘加与序列化构成,任意一个环节的单比特错误都会导致严重后果:Keccak 采样器吸收顺序错位将使全部输出错乱;NTT 蝶形因子查找表的一位错误将使点值表示系统性失真;模约减电路在边界输入上的分支错误将仅影响个别取值,表现为偶发性的封装解封装失败;采样序列的错误则将破坏密钥对内部一致性,使封装结果无法被正确解封装。此类错误的共同特征是:行为与输入相关、难以被随机测试稳定捕获,且往往在密钥交换的真实负载下才显现。

因此,硬件 IP 交付的正确性验证必须建立在确定性、可复现、可审计的比对机制之上。已知答案测试(Known Answer Test,KAT)正是这一机制的核心:以权威的输入输出对为基准,将实现的实际输出与期望输出逐比特比对,通过即证明实现行为与规范一致,失败即证明存在可定位的错误,不存在统计意义上的概率通过。KAT 与其它验证手段的定位区别如下表:

验证手段判定性质覆盖范围主要局限
随机功能测试统计性输入空间抽样无法证明边界行为,错误可能漏检
已知答案测试(KAT)确定性固定向量集覆盖范围受向量集设计制约
互操作测试协议级端到端通信不直接判定算法级正确性
形式化验证数学证明模型化范围建模成本高,抽象与实现存在差距

KAT 之所以被称为硬件 IP 交付的生死线,原因有三:硬件错误无法热修复,交付前的确定性验证是唯一的机会窗口;KAT 结论可作为合同与验收层面的客观判据,供需双方以同一组向量达成共识,避免对正确性标准的争议;KAT 向量集可长期复用为回归基线,支撑产品生命周期内的持续演进。对于以 FPGA 形态交付的 PQC IP 核而言,全量 KAT 通过是进入任何严肃集成项目的准入条件。

1.3 正微光电 PQC FPGA IP 核研发历程概述

正微光电是一家专注于量子安全技术的科技公司,母公司为正则量子(北京)技术有限公司。公司核心研发团队在量子随机数生成、后量子密码算法工程化与硬件加速方向具有长期的技术积累,现有 13 项发明专利,覆盖真随机数生成、PQC 算法实现、侧信道防护与密码系统集成等领域。在硬件之外,公司已构建完整的量子安全产品矩阵:量子随机数发生器(QRNG)芯片实现 1 Gbps 级别的量产能力,为密码系统提供物理层随机源;后量子密码软件库在 ARM Cortex-A7 嵌入式平台上相对基线实现取得 6.7–8.9 倍的性能提升,验证了团队在算法级优化上的工程能力。

在软件库与随机源的基础上,团队于 2024 年启动 PQC FPGA IP 核的研发,目标是把 ML-KEM 的密钥生成、封装、解封装全流程以可综合 RTL 形态交付,满足网关、加速卡等产品对微秒级时延与恒定时间安全性的要求。IP 核设计覆盖 NTT 引擎、模约减单元、Keccak 采样器、一阶掩码防护与流水控制等模块,研发过程遵循”规范文本—C 参考模型—RTL 实现—KAT 验证—原型板实测”的五阶段流程。2026 年 6 月,IP 核完成全量 193 组 KAT 测试向量的双轨验证,实现 193/193 全部通过。本文从验证方法论与硬件微架构两个视角,完整记录这一验证过程的技术细节与工程约束。

2. KAT 测试向量验证:从原理到方法

2.1 已知答案测试(KAT)的定义与密码学意义

已知答案测试(Known Answer Test,KAT)是密码工程中最基础的确定性验证手段:对给定输入,依据算法规范计算期望输出,将待测实现的实际输出与期望输出进行完全比对。其适用前提是算法具有确定性——在固定输入下必然产生固定输出。ML-KEM 恰好满足这一前提:密钥生成以种子对 (d,z)(d, z) 为输入,封装以封装密钥 ekek 与随机消息 mm 为输入,解封装以解封装密钥 dkdk 与密文 cc 为输入,三条计算路径均不存在依赖外部熵的环节——解封装的隐式拒绝分支亦由密钥派生的确定值驱动。因此,只要固定输入,输出即可精确预期,这为逐比特比对提供了数学基础。KAT 的方法渊源可追溯至 NIST 早期的密码算法验证项目(CAVP),其”固定输入—期望输出—完全比对”的基本范式至今仍是算法实现验证的标准起点。

KAT 的密码学意义体现在三个层面。正确性证明:KAT 全量通过表明实现与算法规范在覆盖的输入空间上行为一致,这是功能正确性的直接证据,而非统计推断——随机测试只能说明未发现错误,KAT 则说明该输入下绝对正确。错误定位:比对失败时,输出与期望的差异模式可辅助定位出错模块——采样阶段错误表现为共享密钥与密文同时失真,NTT 阶段错误表现为密文结构性错乱,序列化阶段错误表现为输出字节偏移,差异模式与模块边界存在对应关系,可显著缩短调试路径。回归基准:KAT 向量集成为后续任何修改的回归基线,保证工程演进不破坏已确认的正确性。KAT 验证的是功能正确性与确定性行为,不直接覆盖侧信道安全,后者由掩码与恒定时间设计另行保障,两者共同构成完整的硬件安全论证。

2.2 NIST ACVP(自动化密码算法验证协议)机制:注册、向量生成、比对、证书

面向算法实现的大规模验证需求,NIST 建立了自动化验证体系 ACVP(Automated Cryptographic Algorithm Validation Protocol),用以替代早期的 CAVP 人工向量流程。ACVP 以 JSON 格式的协议消息在 NIST 服务器与厂商测试工具之间交换数据,验证流程分为四个阶段,如下表所示:

阶段参与方主要内容
注册厂商、NIST 服务器申请特定算法与参数集的验证会话,声明能力范围
向量生成NIST 服务器依据规范生成测试向量,以提示—应答形式给出输入与期望输出
执行厂商测试工具、被测实现将向量输入送入实现,收集实际输出并组织应答消息
比对与证书NIST 服务器应答与期望输出比对,全部通过后签发验证证书并列入验证列表

ACVP 机制的关键设计在于判定权的隔离:向量的生成、期望值的计算与结果的判定全部发生在服务器侧,与被测实现完全隔离,从机制上杜绝了用实现验证实现的自证陷阱;同时,协议支持向量集的随机化扩展——服务器可为同一算法反复生成不同的向量,验证覆盖随会话数增加而持续扩大。ACVP 已覆盖 ML-KEM 等后量子算法的验证能力,其能力划分与 FIPS 203 的操作结构保持一致。本 IP 核的 KAT 验证采用了与 ACVP 同构的流程:向量由独立于 RTL 的向量生成器按 ACVP 规范产生,期望值由 C 参考模型与规范推导双重确认,比对规则与 ACVP 服务器端判定逻辑一致。这一设计保证验证结论在方法论上与 ACVP 体系对齐,为后续在 ACVP 框架下的正式验证预留了平滑的迁移路径。

2.3 KAT 测试向量的构成:密钥生成/封装/解封装三类向量的覆盖逻辑

193 组向量按操作类别分为三类,分别覆盖 ML-KEM 的三条主要数据通路,其输入输出结构与覆盖要点如下表:

向量类别输入输出覆盖要点
密钥生成种子对 (d,z)(d, z)(64 字节)封装密钥 ekek、解封装密钥 dkdk种子展开、采样、NTT 域变换、序列化
封装封装密钥 ekek、消息 mm(32 字节)密文 cc、共享密钥 KK消息哈希、K-PKE 封装、密文序列化
解封装解封装密钥 dkdk、密文 cc共享密钥 KK解密、重封装比对、隐式拒绝、密钥派生

密钥生成类向量的输入为 64 字节种子对 (d,z)(d, z),覆盖从种子展开、多项式采样、NTT 域变换到封装密钥与解封装密钥序列化的完整路径,其中 ddzz 的取值覆盖随机分布、全零、全 0xFF 与边界种子,用于验证密钥对内部一致性——即生成的封装密钥与解封装密钥必须构成可工作的密钥对;封装类向量的输入为封装密钥与 32 字节随机消息 mm,覆盖从消息哈希、K-PKE 封装到密文与共享密钥输出的路径,mm 的取值同样覆盖边界情形;解封装类向量的输入为解封装密钥与密文,覆盖解密、重封装比对、隐式拒绝与共享密钥派生的完整路径,其中既包含由封装类向量产生的合法密文(正路径),也包含经篡改的密文(负路径,触发隐式拒绝分支)。

三类向量的覆盖逻辑遵循”通路正交”原则:密钥生成类向量不与封装类共享中间状态,避免错误的相互抵消;封装类向量使用的密钥对来自独立的密钥生成向量,保证密钥对的真实性与样本独立性;解封装类向量与封装类向量成对组织,使”封装—解封装”往返一致性得到显式验证。此外,向量集的随机输入均以固定方式确定,保证每组向量在任意时间、任意平台上重放均得到完全相同的期望值,这是 KAT 可复现性的基础,也是向量集可归档、可审计的前提。

2.4 193 组测试向量的构成明细表(ML-KEM-512/768/1024 各参数集的向量组数分配)

向量集按参数集与操作类别二维组织:ML-KEM-512、ML-KEM-768 与 ML-KEM-1024 各配置 64 组常规向量,三个参数集合计 192 组,每组向量由密钥生成、封装、解封装三类操作按比例覆盖;另设 1 组跨参数集链路联调向量,验证同一测试消息依次经三个参数集完成”生成—封装—解封装—共享密钥一致性”的端到端链路。全量合计 193 组。每组向量对应一次完整的算法调用,其输入种子与消息取值由向量生成器以固定种子推导,保证全部向量可精确复现。构成明细如下表:

参数集向量组数覆盖说明
ML-KEM-512(k=2k=264密钥生成 22 组、封装 21 组、解封装 21 组
ML-KEM-768(k=3k=364密钥生成 21 组、封装 22 组、解封装 21 组
ML-KEM-1024(k=4k=464密钥生成 21 组、封装 21 组、解封装 22 组
跨参数集链路联调1同一消息经三个参数集的端到端生成—封装—解封装链路
合计193常规向量 192 组与链路联调向量 1 组

每个参数集配置 64 组常规向量的依据是覆盖度与执行成本的平衡:64 组可容纳种子空间的多类边界样本与随机样本,且向量组数与回归流水线的执行时间匹配良好;三类操作的组数分配在三参数集之间轮换,避免单一参数集的操作覆盖偏向。跨参数集链路联调向量虽然仅 1 组,但其验证价值在于覆盖了参数集切换场景下的状态隔离:三个参数集共用同一硬件内核,链路向量验证切换过程中无状态串扰。这一设计使 193 组向量既覆盖了算法级正确性,也覆盖了工程级的状态管理正确性。

3. IP 核硬件微架构解析(与 KAT 验证的关系视角)

3.1 总体架构:NTT 引擎、Basemul 阵列、模约减单元、Keccak 采样器、控制逻辑

IP 核采用”采样—变换—乘加—逆变换—输出”的流水分级架构,核心模块包括:Keccak 采样器(SHAKE-128/SHAKE-256 内核,负责矩阵 AA 的伪随机展开、二项分布错误采样与消息哈希运算)、7 层不完全 NTT 引擎(负责多项式域与 NTT 域的互转)、128 路 Basemul 阵列(负责逐点乘加)、Montgomery/Barrett 双模式模约减单元(负责全部模 qq 运算的约减)与两级流水控制逻辑(负责宏观流程与微观调度的协同)。整体数据流如下:

种子/随机数 → Keccak采样器 → 系数缓冲(双端口BRAM,奇偶分离) → 7层NTT引擎 → Basemul阵列(128路) → 逆NTT → 模约减单元 → 序列化 → 密文/共享密钥

控制逻辑以两级状态机实现:顶层状态机管理密钥生成、封装、解封装三个操作的宏观流程与命令接口(AXI4-Lite 寄存器接口、状态寄存器与完成中断);流水状态机管理单条数据通路的微观调度,包括 NTT 蝶形的读写时隙、Basemul 阵列的输入分发与模约减单元的多路复用。IP 核同时提供可观测性设计:内部关键节点(各模块输出、流水级边界)的状态可通过调试寄存器镜像读出,配合向量级比对实现错误的快速定位。从 KAT 验证的视角,该架构的模块边界与向量比对的失败定位粒度一致——任意比特差异均可下钻至具体模块的输入输出交叉验证,这是微架构设计对可验证性的显式支持,也是本文以验证视角解析微架构的原因。

3.2 7 层不完全 NTT 与 128 组二次多项式点值表示的代数基础(简述 q=3329q=3329ζ=17\zeta=17

ML-KEM 的运算环为 Rq=Zq[X]/(X256+1)R_q = \mathbb{Z}_q[X]/(X^{256}+1),其中模数 q=3329=13×256+1q = 3329 = 13 \times 256 + 1,维度 n=256n = 256。环上定义了 7 层不完全 NTT:取 ζ=17\zeta = 17X256+1X^{256}+1Fq\mathbb{F}_q 上的本原 256 次单位根(满足 ζ1281(mod3329)\zeta^{128} \equiv -1 \pmod{3329}),不完全 NTT 将 n=256n = 256 维多项式映射为 128 组二次多项式(次数至多 1)的点值表示,即在 ζ2Br(i)+1\zeta^{2Br(i)+1}i=0,,127i = 0, \dots, 127Br(i)Br(i) 为 7 位比特反序)处的取值对;7 层蝶形网络对应 log2256=7\log_2 256 = 7 的递归分解,每一层完成一次分治与蝶形合并。该变换是不完全的:它不产生 256 个独立点值,而是 128 组线性因子,恰好匹配多项式乘法中”点值相乘”的需求——乘积多项式 f^g^\hat{f} \circ \hat{g} 的表示维度与乘法复杂度同时最优,Basemul 阵列即在该表示下执行模 X2ζ2Br(i)+1X^2 - \zeta^{2Br(i)+1} 的两两乘加。NTT 的正确性直接决定 KAT 能否通过:蝶形因子表、比特反序映射与分层顺序中任何一处偏差,都会在点值表示上留下系统性失真,并最终表现为密文与共享密钥的比特级错误,因此 NTT 引擎是 KAT 比对中权重最高的模块之一。

3.3 Montgomery/Barrett 双模式模约减电路(简述公式,重工程实现)

模约减单元提供两种可配置的约减模式。Montgomery 模式:预计算 μ=q1modR\mu = -q^{-1} \bmod R(取 R=216R = 2^{16},与 12 位系数、24 位中间积的定点宽度匹配),对输入 tt 依次计算 m=(tmodR)μmodRm = (t \bmod R) \cdot \mu \bmod Rt=(t+mq)/Rt' = (t + mq)/R,将模乘转化为低位乘法与移位,适合乘法流水内部使用,运算为恒定时延、无数据相关分支;Barrett 模式:预计算 q^=22k/q\hat{q} = \lfloor 2^{2k}/q \rfloor,以 t=ttq^/22kqt' = t - \lfloor t \cdot \hat{q} / 2^{2k} \rfloor \cdot q 的近似商修正实现约减,适合加法链末端的单次约减。两种模式均以一次条件减法收尾,保证输出严格落入 [0,q)[0, q)。工程上,Montgomery 模式承担乘法流水内的高频约减,Barrett 模式用于需要与 C 参考模型逐比特对齐的路径——模约减的执行顺序与取整方式是比特级一致性的敏感点,双模式设计在性能与可验证性之间提供了显式的工程权衡;两种模式的输出在任意输入下均须一致,这一性质本身也是 KAT 向量可以覆盖的验证点。

3.4 双端口 BRAM 奇偶分离零碰撞寻址(简述原理)

系数缓冲采用双端口 BRAM,并以奇偶分离策略消除 NTT 蝶形访问的存储冲突:地址空间按系数下标奇偶划分为两个 Bank,第 jj 层蝶形的两个操作数下标相差 2j2^jj=0,,6j = 0, \dots, 6),奇偶性必然不同,因此任意蝶形的一对操作数分别位于两个 Bank,双端口可在一个时钟周期内无冲突地读出两个操作数并写回两个结果,NTT 以每个时钟周期一个蝶形的速率流水推进,无需插入气泡周期;写回路径与读路径共享同样的奇偶规则,保证原地(in-place)变换的数据一致性。该策略同时简化了验证:地址冲突的完备性可通过遍历全部 7 层、128 组蝶形的静态分析确认,与 KAT 向量的动态比对互为补充——静态分析覆盖寻址逻辑的全部可能性,KAT 覆盖数据路径的实际行为,两者结合构成对系数缓冲子系统的完整验证。

3.5 一阶掩码与恒定时间侧信道防护

IP 核内置一阶掩码防护:关键数据路径上的多项式系数以布尔共享形式处理,即每个敏感值 xx 表示为两个共享 x=x0x1x = x_0 \oplus x_1,模加、模乘与采样均在共享域内完成,共享值在每轮运算后通过刷新协议更新;掩码随机数由片上真随机源提供,并支持通过外部接口接入公司 1 Gbps QRNG 芯片的物理随机源,将物理层随机性与密码运算的侧信道防护贯通。掩码方案覆盖 NTT 变换与 Basemul 乘加等主要数据通路,共享域内的运算电路面积开销约为一倍,以面积换取对抗功耗分析的一阶防护能力。

恒定时间策略贯穿全部数据通路:所有循环与采样过程采用固定迭代次数,拒绝采样以”固定轮数执行 + 条件选择有效值”的方式实现,不因数据值提前退出;访存模式与数据值无关,无数据相关分支;模约减的条件减法以掩码选择而非分支跳转实现。设计侧通过第一阶 TVLA 检验评估泄漏:在 1 亿次功耗采集下,t 统计量的绝对值低于 4.5 的判定阈值,未观测到一阶泄漏。恒定时间设计同时保证 KAT 执行时序与输入无关,避免时序变化干扰验证结果的可复现性——这一关联表明,侧信道防护与确定性验证在工程上是相互支撑的。

4. 193/193 KAT 验证的完整执行过程

4.1 验证环境搭建:RTL 仿真 + FPGA 原型板双轨验证

验证环境采用双轨结构,两条轨道的向量集、期望值与判定规则完全一致,互为交叉印证。仿真轨:RTL 代码在事件驱动仿真器中运行,测试平台由向量加载器、被测设计(DUT)、期望值存储与比对器组成;向量以 JSON 文件组织,经解析后逐组注入 DUT 的 AXI4-Lite 寄存器接口,输出经采集后送入比对器;仿真同时开启波形记录与覆盖率采集,为失败定位与覆盖率评估提供数据。原型板轨:RTL 经综合、布局布线后下载至商用 28 nm 级 FPGA 原型板(Kintex UltraScale 系列),工作频率 250 MHz,通过板载微控制器与上位机经串行调试接口逐组注入向量并回收输出;板级运行在真实时钟与真实 I/O 条件下,覆盖仿真轨难以触达的时序、扇出与物理效应。

双轨共用的向量集由独立于 RTL 的向量生成器产生,期望值由 C 参考模型计算并由规范推导复核,保证两条轨道面对的是完全相同的判定基准。两条轨道的执行结果分别记录,任何一条轨道出现比对失败即视为整体失败。双轨设计的价值在于错误类型的区分:仿真轨失败指向 RTL 逻辑错误,原型板轨失败而仿真轨通过则指向综合选项、时序收敛或物理实现问题,从而把”逻辑正确性”与”实现正确性”两个层次分离验证。验证环境本身亦纳入版本管理,仿真器版本、综合工具版本、实现选项与位流哈希均作为环境指纹随结果记录,保证验证过程可复现、可追溯。

4.2 逐比特比对流程与结果判定规则

比对流程对每组向量执行三级校验。第一级,长度校验:实测输出的字节长度必须与期望输出完全一致,长度不一致直接判 FAIL;第二级,逐字节比对:对全部输出字节逐字节比较,记录首个不一致字节的偏移,输出内容依操作类别包含封装密钥、解封装密钥、密文与共享密钥等字段,全部纳入比对范围;第三级,摘要复核:对完整输出计算 SHA-256 摘要并与期望摘要比对,作为逐字节比对的冗余确认,防止传输或记录环节的静默损坏。判定规则如下表:

校验级别校验内容判定规则
长度校验输出字节长度与期望长度不一致即 FAIL
逐字节比对全部输出字节任一字节不一致即 FAIL,记录首差偏移
摘要复核输出 SHA-256 摘要摘要不一致即 FAIL

任一级别失败即终止该组向量的执行并记录失败详情(向量 ID、参数集、类别、失败级别、首差偏移),同时继续执行后续向量,以收集失败的全景分布;全部通过则记录 PASS 与执行环境指纹。为排除物理噪声与时钟边沿抖动导致的偶发失败,原型板轨的每组向量执行三次,三次结果完全一致方可判 PASS;仿真轨由于确定性执行,单次执行即可判定。全部 193 组向量的比对结果汇总为验证矩阵,行对应向量组、列对应校验级别,形成直观的通过率视图。

4.3 192 组全部通过的测试报告结构与归档

验证报告按参数集分册组织:ML-KEM-512、ML-KEM-768 与 ML-KEM-1024 三个分册分别归档各参数集的常规向量(各 64 组,合计 192 组)的逐组记录,汇总册归档全量 193 组向量的总体结论与跨参数集链路联调向量(1 组)的记录。192 组常规向量全部通过,链路联调向量通过,全量 193 组实现 193/193 通过。每一组向量的记录包含:向量 ID、参数集、操作类别、输入摘要(SHA-256)、期望输出摘要、实测输出摘要、执行轨道(仿真或原型板)、执行环境指纹(RTL 版本哈希、综合选项哈希、位流哈希、仿真器版本、执行时间戳)与判定结果。

报告归档执行三项约束。版本绑定:报告与 RTL 仓库的提交哈希绑定,任何 RTL 修改后重新执行验证并生成新版本报告,旧版本报告完整保留,形成可追溯的验证历史链;完整性固化:报告文件与向量集文件的 SHA-256 摘要登记于归档清单,防止归档环节的篡改与损坏,归档清单由独立于研发侧的人员复核;审计可复现:归档内保存向量集、期望值、测试平台版本与执行脚本,第三方可在独立环境完整重放验证过程,复现结果应与归档结论一致。归档采用制品库与版本控制仓库双层存储,权限受控、访问留痕,满足产品交付审计的要求。

4.4 负向测试:错误注入验证测试平台的敏感性

KAT 全过结论的可信度取决于测试平台自身的敏感性——一个什么都测不出来的平台即使报告全过也毫无价值。为此,团队在正式向量之外设计了三类负向测试。向量级注入:随机篡改期望值的一个比特,平台必须报 FAIL,验证比对逻辑本身有效;RTL 级注入:在仿真中通过信号强制对内部寄存器(NTT 蝶形因子查找表、Keccak 状态寄存器、地址生成器)实施单比特翻转,平台必须报 FAIL,验证输出通路对内部错误的传播敏感;板级注入:通过调试接口向原型板 BRAM 写入错误系数,板级比对必须报 FAIL,验证物理链路的完整性。三类负向测试共执行注入 96 次,其中向量级、RTL 级、板级各 32 次,全部被正确捕获,漏检率为零。

注入点的选择遵循”高价值节点优先”原则:蝶形因子查找表是 NTT 正确性的关键依赖,Keccak 状态寄存器是采样正确性的关键依赖,地址生成器是存储一致性的关键依赖,三类节点的单比特错误均会在输出上留下可检测痕迹。负向测试同时覆盖边界输入:空种子、全零输入、全 0xFF 输入、模边界值 q1q-1 与超长密文输入,要求实现给出确定且符合规范的行为——不崩溃、不挂起、输出确定。负向测试的结论写入验证报告附册,与正向结果共同构成测试平台敏感性的完整证据。

5. 硬件微架构与参考实现的一致性保证

5.1 C 参考模型与 RTL 双轨实现策略

正确性的最终基准是算法规范本身,而规范到实现的落地需要一条可核对的中间链路。团队采用 C 参考模型与 RTL 双轨实现策略:C 参考模型依据 FIPS 203 文本独立编写,先行通过 NIST 公开示例向量与 ACVP 风格向量的自检,成为金标准实现;RTL 依据同一规范独立设计,两者在功能上互为对照,且刻意避免共享代码或共享设计文档之外的任何实现细节,以保证两条轨道的错误模式不相关——同一错误在两个独立实现中重复出现的概率极低,这正是双轨策略可靠性的来源。

验证时,RTL 输出与 C 参考模型输出在仿真中经 DPI 接口直接逐比特比对(协同仿真),比对对象覆盖密钥生成、封装、解封装的全部输出字节;KAT 向量的期望值亦由 C 参考模型计算,但以规范推导与公开示例向量双重确认,避免参考模型自身的错误通过期望值通道混入验证链。C 参考模型同时服务于性能基准评估与掩码方案的算法级验证,实现一物多用。需要说明的是,C 参考模型独立于公司已发布的性能优化软件库编写,两者互不依赖,避免优化实现与参考实现的错误耦合。

5.2 比特级一致性(Bit-Exactness)的工程保障:定点数宽度、模约减顺序、采样序列

比特级一致性要求 RTL 与 C 参考模型在全部中间值与最终输出上逐比特相同,其保障依赖三项工程约定,数据位宽约定如下表:

数据对象位宽表示约定
多项式系数12 位无符号整数,取值 [0,3328][0, 3328]
Montgomery 域系数16 位R=216R = 2^{16} 域表示
中间乘积24 位两系数乘积的精确表示
Keccak 状态1600 位五维排列状态,按规范字节序

三项约定如下。定点数宽度契约:全部系数为 12 位无符号定点数,中间乘积为 24 位,Montgomery 域参数固定为 R=216R = 2^{16},C 模型与 RTL 使用相同的整数类型与溢出语义,全程无浮点运算,排除浮点舍入带来的位级差异;模约减顺序契约:加法链中 Barrett 近似商的取整方式与条件减法的执行时机在双轨之间统一规定——不同的约减顺序可能收敛到相同的最终结果,但中间值不同,为保证位级一致,设计文档以显式顺序规范锁定执行序列;采样序列契约:SHAKE 的吸收与挤出顺序、字节到系数的映射(每 2 字节取 12 位、小端序)、二项分布采样(cbd)的随机字节消耗顺序与拒绝采样的边界值处理,在双轨之间逐字节对齐。三项契约以可执行的序列化规范文件维护,任何修改需双轨同步更新并重新验证,从流程上杜绝双轨漂移。

5.3 回归测试与持续集成:任何 RTL 修改后自动重跑全量 KAT

验证结论的时效性由回归体系保障。持续集成流水线对 RTL 仓库实施三级门禁,如下表所示:

门禁级别触发时机验证范围判定要求
提交级任何 RTL 修改全量 193 组 KAT 仿真回归全部通过方可合并
日级每日定时随机种子扩展回归(1,000 组)与 C 参考模型逐比特一致
发布级版本发布综合后网表仿真与原型板实测全量 KAT 通过

提交级门禁保证任何工程师的任何修改都无法在未通过全量验证的情况下进入交付物;日级回归随机生成 1,000 组 (d,z,m)(d, z, m) 输入与 C 参考模型逐比特比对,覆盖 KAT 向量之外的输入空间,作为确定性向量的补充;发布级门禁在综合后网表仿真(含布局布线时序信息)与原型板实测两个层次上重复全量 KAT,确认逻辑优化与时序收敛未引入行为变化。回归结果与提交哈希、综合选项、工具版本一并记录,形成可追溯的正确性基线。全量 193 组仿真回归单次运行时间在分钟量级,与提交频率匹配,回归体系以可接受的成本维持了”KAT 全过”结论的持续有效性。

6. 性能与资源实测数据

6.1 FPGA 资源占用表(LUT/FF/BRAM/DSP/时钟)

IP 核以 ML-KEM-512/768/1024 三参数集共用单内核的架构实现,参数集通过寄存器配置切换。资源占用在 Kintex UltraScale 系列 FPGA(速度等级 -2)上完成综合与实现,结果如下表:

资源项用量说明
LUT21,342逻辑与查找表实现
FF14,876寄存器,含流水级寄存器
BRAM(36 Kb)30系数缓冲、向量缓冲、Keccak 状态与结果缓冲
DSP48E8模乘的乘加运算,可配置为 0(纯 LUT 实现)
最高工作频率250 MHz最差工艺角收敛

资源占用随参数集切换几乎不变(k=2/3/4k=2/3/4 仅影响采样迭代次数与缓冲深度,不改变数据通路结构),便于产品在不同容量器件上的复用;若目标器件 DSP 资源受限,可配置为纯 LUT 乘法实现,面积与频率曲线由实现工具按选项重新评估。资源占用数据与 KAT 验证结论解耦:资源优化不改变功能行为,但任何影响数据通路的优化选项变更均触发发布级门禁的全量 KAT 回归,保证性能优化不破坏已验证的正确性。

6.2 性能实测表(ML-KEM-768 密钥生成/封装/解封装延迟与吞吐)

在 250 MHz 工作频率下,以 ML-KEM-768 为基准的实测延迟与吞吐如下表(原型板实测,数据为三次运行均值,时钟频率经实测校准):

操作周期数时延(μ\mus)吞吐(次/秒)
密钥生成2,90011.686,207
封装3,45013.872,464
解封装3,78015.166,225

周期构成分析显示:密钥生成的周期主要消耗于种子展开与多项式采样(约四成)、NTT 域变换(约三成)与序列化(约两成);封装的周期集中于消息哈希、封装密文计算与共享密钥派生;解封装的周期集中于解密、重封装比对与隐式拒绝判定。三操作共享同一数据通路,流水化调度下连续操作的吞吐按表中数值逼近单操作时延的倒数。与同团队 C 参考模型在通用嵌入式处理器上的实测时延相比,本硬件实现端到端时延降低约两个数量级;结合软件库在 Cortex-A7 平台上相对基线实现 6.7–8.9 倍的加速成绩,硬件形态将密钥交换全过程压缩至微秒级,满足网关设备每秒数千次密钥交换的工程需求;吞吐可通过多实例化线性扩展,适配更高并发场景。

6.3 第三方实测验证声明

为确保 KAT 结论与性能数据的独立可信度,公司委托独立第三方检测机构进行复测。复测在第三方自行搭建的平台上执行:复测向量集由第三方按 ACVP 规范独立生成,复测平台、工具链与研发侧环境完全隔离,复测范围覆盖全量 193 组 KAT 向量与 ML-KEM-768 的密钥生成、封装、解封装性能指标。复测结果显示:193 组向量全部通过,性能指标与研发侧实测一致,偏差处于测量误差范围内。复测报告摘要可在签署保密协议后向客户提供。

公司同时声明:上述 KAT 全过结论与性能数据均基于可复现的工程流程,任何客户可在自有环境下按本文第 4 节描述的方法独立重放验证;验证所需的向量集、期望值与测试平台说明文档均纳入交付物清单。第三方复测与客户自测两条路径互为补充,共同保证”193/193”结论的独立性与可验证性。

7. 结论与产品化落地

7.1 KAT 全过对产品可信度的意义

193/193 KAT 全量通过意味着 IP 核在确定性验证的意义上被证明与 FIPS 203 规范一致,这一结论是产品可信度的基石。对集成方而言,KAT 全过显著降低集成阶段的联调风险:密钥交换是安全协议的核心环节,其错误往往在互操作测试中才暴露,而 KAT 全过将这类风险前移并消除于交付之前,使集成方的验收标准从联调通过升级为向量级一致;对工程团队而言,KAT 全过与回归体系的结合,使后续的优化、移植与定制始终运行在正确性基线之上,避免”优化引入回归”的经典陷阱;对审计视角而言,可复现、可审计的验证记录是密码产品工程质量的直接证据,验证历史的完整链条为产品的长期维护提供了制度保障。

KAT 验证的是功能正确性与确定性行为,侧信道安全由掩码与恒定时间设计另行保障,两者共同构成完整的安全论证;验证报告、第三方复测与可重放性三者结合,使”193/193”从一次性的测试结论升格为持续有效的质量状态。这是硬件 IP 交付中”正确性可证明、可追溯、可复现”三要素的完整落地。

7.2 在 PQC FPGA 加速卡与光甲®网关中的落地

IP 核已在公司两条产品线中落地。PQC FPGA 加速卡:以 PCIe 形态提供 ML-KEM 与混合密钥交换的硬件卸载能力,面向服务器与安全设备的后量子密钥协商加速场景,配合公司 QRNG 芯片提供物理随机源,形成”硬件随机源 + 硬件密码引擎”的完整链路;加速卡支持多实例化配置,吞吐可随实例数线性扩展。光甲®网关:作为量子安全网关产品,集成 QRNG 1 Gbps 随机源、PQC 软件栈与 FPGA 加速卡,为既有网络基础设施提供后量子密钥交换与数据加密升级路径;网关的密码运算以 FPGA IP 核为主路径、软件栈为冗余路径,双路径设计兼顾性能与可用性,密钥协商失败时自动切换冗余路径,保证业务连续性。

两条产品线共享同一 IP 核与同一验证基线,KAT 全过结论随产品交付完整传递;相关微架构、掩码方案与验证方法已申请专利保护,公司累计拥有 13 项发明专利。公司将持续跟踪 NIST 标准演进,将 FIPS 206(HQC)等新算法的硬件实现纳入下一代 IP 核规划,并在既有验证体系上扩展相应的 KAT 向量集,保持”标准演进—实现跟进—验证先行”的研发节奏。

8. 参考文献与延伸阅读

8.1 参考文献(FIPS 203/204/205、ACVP 规范、Montgomery 原始论文等)

[1] NIST. FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard(ML-KEM)[S]. 2024-08-13. 定义 ML-KEM 的完整算法流程,是本文 KAT 向量生成与期望值计算的规范基准。(https://csrc.nist.gov/pubs/fips/203/final)

[2] NIST. FIPS 204: Module-Lattice-Based Digital Signature Standard(ML-DSA)[S]. 2024-08-13.(https://csrc.nist.gov/pubs/fips/204/final)

[3] NIST. FIPS 205: Stateless Hash-Based Digital Signature Standard(SLH-DSA)[S]. 2024-08-13.(https://csrc.nist.gov/pubs/fips/205/final)

[4] NIST. FIPS 206: Hamming Quasi-Cyclic Key-Encapsulation Mechanism Standard(HQC)[S]. 2025-03-12.(https://csrc.nist.gov/projects/post-quantum-cryptography)

[5] NIST. Automated Cryptographic Algorithm Validation Program(ACVP)协议规范文档集[EB/OL]. pages.nist.gov/ACVP. 本文向量生成、比对与判定规则的方法论参照。

[6] Montgomery P L. Modular Multiplication Without Trial Division[J]. Mathematics of Computation, 1985, 44(170): 519-521. 本文模约减单元 Montgomery 模式的理论来源。

[7] Barrett P. Implementing the Rivest Shamir and Adleman Public Key Encryption Algorithm on a Standard Digital Signal Processor[C]. CRYPTO 1986, LNCS 263, 1987: 311-323. 本文模约减单元 Barrett 模式的理论来源。

[8] NIST. FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions[S]. 2015. 本文 Keccak 采样器与摘要复核环节的规范依据。

[9] Bos J, Ducas L, Kiltz E, et al. CRYSTALS-Kyber: A CCA-Secure Module-Lattice-Based KEM[C]. IEEE EuroS&P 2018: 353-367. ML-KEM 前身 Kyber 方案的原始论文。

[10] NIST. NIST IR 8545: Transition to Post-Quantum Cryptography Standards[S/OL]. 2024. 后量子迁移路线图的官方参考。

8.2 站内延伸阅读

Share:
Back to Blog

Related Posts

View All Posts »
PQC FPGA IP 核实现详解:NTT 流水线架构

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

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

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 倍端到端混合加速。