· 正微光电安全技术团队· technology· 约 61 分钟精读

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

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

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

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

在公钥密码学的演进历程中,密钥建立机制构成了现代网络保密通信与信任体系的第一道防线。从传统的 Diffie-Hellman(DH)密钥交换协议、RSA 密钥封装,到广泛部署的基于椭圆曲线离散对数难题的 ECDH(如 X25519 与 ECDSA P-256),经典非对称密码体制构筑了传输层安全(TLS)、网际安全协议(IPsec)与公钥基础设施(PKI)的安全边界。然而,随着量子信息物理实验的持续突破与容错量子计算理论的快速成熟,彼得·秀尔(Peter Shor)算法所揭示的多项式时间大整数分解与离散对数求解能力,使得所有依赖于代数数论单向陷门性质的经典非对称密码学体系面临根本性的物理失效风险。更具现实紧迫性的是,具备高价值保密周期的敏感数据正遭受“先拦截、后解密”(Harvest Now, Decrypt Later, HNDL)的持续被动监听威胁。在此背景下,全球密码学标准化组织全面转向后量子密码学(Post-Quantum Cryptography, PQC)的规范制定与工程落地。

2024 年 8 月,美国国家标准与技术研究院(NIST)正式颁布了首批后量子密码学联邦信息处理标准。其中,FIPS 203(Module-Lattice-Based Key-Encapsulation Mechanism Standard, ML-KEM)作为源自 CRYSTALS-Kyber 算法的最终标准化版本,被全球主要工业联盟与国家安全机构确立为抗量子密钥封装协议的核心基准。美国商业国家安全算法套件 2.0(CNSA 2.0)明确要求,关键网络设备、安全网关与数据中心互联系统必须在规定时间窗口内完成向 ML-KEM 的全面迁移。

然而,将数学上证明安全的 ML-KEM 协议转化为具备高吞吐、低时延且能够抵御现实物理攻击的硬件芯片实现,面临着极其复杂的微架构设计与物理安全挑战。与经典椭圆曲线密码学仅涉及标量点乘运算不同,ML-KEM 深度依赖于高维模多项式环上的代数运算,涵盖伪随机矩阵展开、高吞吐数论变换(Number Theoretic Transform, NTT)、高精度中心二项分布(Centered Binomial Distribution, CBD)采样以及压缩解压缩逻辑。更为关键的是,为了抵御现实中的选择密文攻击(Chosen-Ciphertext Attacks, CCA),ML-KEM 采用了紧致的 Fujisaki-Okamoto(FO)转换机制,在解密时必须强制进行确定性重加密与常数时间比对。在硬件物理实现中,任何微小的运算时序抖动、功耗波动或电磁辐射都可能泄漏私钥多项式,给物理安全芯片带来致命漏洞。

本文围绕 NIST FIPS 203 标准的硬件芯片工程落地展开系统性阐述,全面剖析 ML-KEM 的代数数学底座、多通道 NTT 模乘硬件微架构、无冲突双端口存储阵列设计、CBD 采样与 Keccak 算子实现,并深入探讨 Fujisaki-Okamoto 变换的常数时间硬件比对机制与一阶/高阶布尔-算术掩码(Masking)侧信道防护方案,为高性能密码机、量子安全网关与嵌入式安全主控提供兼具数学严谨性与物理安全性的芯片级参考架构。

图 1:FIPS 203 ML-KEM 全流程硬件流水线微架构阶段一:密钥生成与采样物理真随机熵源QRNG 物理熵源注入256位 种子 d 与 zKeccak与CBD采样SHAKE 伪随机扩展二项分布采样矩阵公私钥寄存器组公钥 pk=NTT(As+e)私钥 sk=(s,pk,H,z)阶段二:K-PKE 封装引擎随机数与消息派生SHA3-512 派生 (K,r)消息 m 嵌入误差向量多通道 NTT 模乘阵列蝶形算子并行流水线生成密文 c=(u,v)共享密钥派生核SHAKE-256 密钥压缩输出 256位 会话密钥阶段三:解封与 FO 隐式拒绝K-PKE 解密运算核向量内积 v-s^T·u多项式逆量化恢复 m'FO 重加密验证引擎确定性重算 c'=Enc(m')常数时间位级比对隐式拒绝多路选择c==c' 命中输出真实K不匹配输出伪密钥

一、 FIPS 203 ML-KEM 数学理论底座与参数规约

FIPS 203 ML-KEM 的安全性牢固建立在模块误差学习(Module Learning With Errors, M-LWE)问题与模块紧密独立子集(Module Short Integer Solution, M-SIS)问题的计算困难性基础之上。为了在代数结构紧凑性与抗格基约简算法攻击能力之间取得最佳平衡,ML-KEM 采用了定义在分圆多项式环上的模块化代数设计。

1.1 模块误差学习问题(M-LWE)的数学构造

误差学习问题(LWE)最早由 Oded Regev 于 2005 年提出,并证明了其平均情况下的计算困难性可归约至高维欧几里得格上的最坏情况最短向量问题(GapSVP)和最短独立向量问题(SIVP)。然而,标准 LWE 的公钥尺寸与计算复杂度随安全维度呈二次方爆炸,难以直接用于高吞吐网络环境。环上误差学习(Ring-LWE)虽然大幅削减了密钥尺寸,但其强代数环结构使得部分学者担忧可能存在针对理想格(Ideal Lattice)的潜在代数数论攻击。

作为一种高度折中的优选范式,模块误差学习(M-LWE)将代数空间推广至自由模空间。设整数模数 q=3329q = 3329,多项式截断次数 n=256n = 256。ML-KEM 所依托的基础多项式代数环定义为:

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

其中,Zq\mathbb{Z}_q 表示模 qq 的整数剩余类环,多项式系数均在模 qq 的完全剩余系内取值。令 R=Z[X]/(X256+1)\mathcal{R} = \mathbb{Z}[X]/(X^{256} + 1) 为多项式整环。对于选定的正整数模块维度 kk,令公钥矩阵 ARqk×k\mathbf{A} \in \mathcal{R}_q^{k \times k} 均匀随机选取于模空间中。私钥向量 sRqk\mathbf{s} \in \mathcal{R}_q^k 与误差向量 eRqk\mathbf{e} \in \mathcal{R}_q^k 的系数则由特定的离散小误差分布独立采样得到。

在判定性 M-LWE(Decision M-LWE)问题设定下,攻击者的目标是区分以下两个概率分布:

(A,As+e)vs(A,b)(\mathbf{A}, \mathbf{A}\mathbf{s} + \mathbf{e}) \quad \mathrm{vs} \quad (\mathbf{A}, \mathbf{b})

其中 b\mathbf{b} 为在 Rqk\mathcal{R}_q^k 上完全均匀独立随机选取的向量。计算性 M-LWE(Search M-LWE)问题则要求在仅给定 (A,As+e)(\mathbf{A}, \mathbf{A}\mathbf{s} + \mathbf{e}) 的条件下,以不可忽略的概率精确恢复出秘密向量 s\mathbf{s}。在经典图灵机与量子图灵机模型下,只要模数 qq 与误差分布参数满足特定边界条件,M-LWE 均可量子归约至模维数为 k×nk \times n 的格上的最坏情况 SIVP 难题。

从代数几何与几何数论视角分析,分圆多项式环 R\mathcal{R} 在典范嵌入(Canonical Embedding)下构成了一个 nn 维欧几里得格。当构造 kk 阶自由模 M=Rk\mathcal{M} = \mathcal{R}^k 时,其对应的几何结构为一个 knk \cdot n 维的直和格空间。模块格的巨大工程优势在于:基础多项式环的代数结构维度 n=256n = 256 被固化锁定,这使得硬件模乘运算的底层数据通路、NTT 蝶形网络和字长寄存器完全定型;而安全强度的伸缩调整则完全通过调整外部向量维度 k{2,3,4}k \in \{2, 3, 4\} 实现。这种解耦设计不仅规避了针对高阶分圆环的特殊代数攻击,而且为专用集成电路(ASIC)与现场可编程门阵列(FPGA)的微架构复用提供了极为优雅的对称性。

1.2 关键参数集深度剖析与安全裕度

模数 q=3329q = 3329 具有独特的代数性质。注意到 33293329 是一个素数,且满足:

q1(mod2n)    3329=13×256+1=3328+1q \equiv 1 \pmod{2n} \implies 3329 = 13 \times 256 + 1 = 3328 + 1

这意味着有限域 Zq\mathbb{Z}_q 中存在本原 256 次与 512 次单位根。这一代数特性确保了多项式 X256+1X^{256} + 1Zq\mathbb{Z}_q 上能够完全因式分解为 256 个一阶线性项,从而使得数论变换(NTT)可以在单次展开中彻底对角化多项式乘法。

通过调整模块维度参数 kk 与误差分布界限,FIPS 203 标准定义了三个标准安全等级,其参数规约与物理安全边界如下表所示:

标准参数集名称模块维度 kk模数 qq噪声参数 (η1,η2)(\eta_1, \eta_2)压缩参数 (du,dv)(d_u, d_v)公钥尺寸 (字节)密文尺寸 (字节)NIST 安全强度等级等效经典对称安全位长
ML-KEM-512k=2k = 23329(3,2)(3, 2)(10,4)(10, 4)800 字节768 字节Level 1128 比特 (AES-128)
ML-KEM-768k=3k = 33329(2,2)(2, 2)(10,4)(10, 4)1,184 字节1,088 字节Level 3192 比特 (AES-192)
ML-KEM-1024k=4k = 43329(2,2)(2, 2)(11,5)(11, 5)1,568 字节1,568 字节Level 5256 比特 (AES-256)

从硬件工程与硅片面积复用角度考量,模数 q=3329q = 3329 和多项式项数 n=256n = 256 在所有安全等级下均保持严格不变。这意味着硬件微架构中的基础算术逻辑单元(ALU)、蝶形模乘器和 SRAM 存储字长可以实现 100% 的硬件复用,只需通过参数化控制状态机动态配置向量维度 kk 与采样位宽 η\eta,即可在单一硅片实体上无缝支持全部三种安全等级。

针对抗量子攻击强度评估,当前公认的最优格基规约算法为核心筛法(Core-Sieve)与 BKZ 算法(Block Korkine-Zolotarev)。在考虑量子加速筛法(Grover 搜索与量子振幅放大)的模型下,处理块大小为 β\beta 的格基规约需要约 20.265β2^{0.265\beta} 次量子操作。经过严格的代数安全裕度评估,ML-KEM-768 在抵御已知最优原始对偶攻击(Primal and Dual Attacks)时的经典门操作复杂度超过 22072^{207},量子门操作复杂度超过 21852^{185},充分满足高安全场景长效保密的防护要求。

1.3 中心二项分布(CBD)的代数结构与统计特性

在基于误差学习的密码体制中,误差与私钥多项式的分布形态对密码系统的抗格基约简攻击能力具有决定性影响。经典 LWE 方案通常采用连续高斯分布的离散化版本。然而,在硬件微架构中生成高精度的离散高斯随机数需要消耗庞大的查表 ROM 资源,且查表过程极易引入缓存缺失与时序旁路泄漏。

FIPS 203 创新性地采用中心二项分布(Centered Binomial Distribution, CBDη\mathrm{CBD}_\eta)替代离散高斯分布。参数为 η\eta 的中心二项分布定义为 2η2\eta 个独立同分布的均匀随机伯努利比特的差值:

x=i=0η1aii=0η1bi,ai,bi${0,1}x = \sum_{i=0}^{\eta-1} a_i - \sum_{i=0}^{\eta-1} b_i, \quad a_i, b_i \stackrel{\$}{\leftarrow} \{0, 1\}

其概率质量函数(PMF)关于原点对称,取值范围严格受限在区间 [η,η][-\eta, \eta] 之内:

Pr[x=j]=14η(2ηη+j),j{η,η+1,,η}\Pr[x = j] = \frac{1}{4^\eta} \binom{2\eta}{\eta + j}, \quad j \in \{-\eta, -\eta + 1, \dots, \eta\}

其数学期望与方差分别满足:

E[x]=0,Var(x)=η2\mathbb{E}[x] = 0, \quad \mathrm{Var}(x) = \frac{\eta}{2}

η=2\eta = 2η=3\eta = 3 时,CBDη\mathrm{CBD}_\eta 展现出与标准差为 σ=η/2\sigma = \sqrt{\eta / 2} 的截断离散高斯分布极其接近的统计矩特性,同时其硬件实现仅需纯粹的位提取、汉明重量统计(Popcount)与 4 比特有符号减法器,不仅大幅削减了硬件组合逻辑面积,而且在微架构层面天然具备常数时间执行属性。

1.4 多项式系数压缩映射与信息损失界限

为了压缩通信带宽并破坏代数结构的直接线性特征,ML-KEM 在密文生成阶段对多项式系数执行有损压缩映射。压缩函数 Compressd(x)\mathrm{Compress}_d(x) 与解压缩函数 Decompressd(y)\mathrm{Decompress}_d(y) 的数学映射形式定义如下:

Compressd(x)=2dqxmod2d\mathrm{Compress}_d(x) = \left\lceil \frac{2^d}{q} \cdot x \right\rfloor \bmod 2^d Decompressd(y)=q2dy\mathrm{Decompress}_d(y) = \left\lceil \frac{q}{2^d} \cdot y \right\rfloor

其中,z=z+1/2\lceil z \rfloor = \lfloor z + 1/2 \rfloor 表示四舍五入到最近的整数。当多项式系数经过压缩再解压缩后,引入的舍入误差项定义为:

ϵ=Decompressd(Compressd(x))xmodq\epsilon = \mathrm{Decompress}_d(\mathrm{Compress}_d(x)) - x \bmod q

对于任意输入 xZqx \in \mathbb{Z}_q,该舍入误差具有严格的确定性绝对值边界:

ϵq2d+1|\epsilon| \le \left\lceil \frac{q}{2^{d+1}} \right\rfloor

在 ML-KEM-768 中,向量 u\mathbf{u} 压缩至 du=10d_u = 10 比特,多项式标量 vv 压缩至 dv=4d_v = 4 比特。系数压缩在显著降低传输报文尺寸的同时,将解密失败概率(Decryption Failure Probability)严格控制在安全阈值以内:

δfail2164.5\delta_{\mathrm{fail}} \le 2^{-164.5}

这一微小失效率从信息论上杜绝了解密失败预言机攻击(Decryption Failure Oracle Attack)的可行性,确保了密码方案的渐近安全性。

二、 K-PKE 基础公钥加密体制的算法原语与数据流

FIPS 203 标准采用了模块化分层设计思路。其核心底层为一个具备选择明文攻击安全(IND-CPA)的公钥加密体制,称为 K-PKE。随后,通过紧致的 Fujisaki-Okamoto(FO)转换包装,将该基础加密方案升格为具备选择密文攻击安全(IND-CCA2)的通用密钥封装机制 ML-KEM。

2.1 伪随机矩阵生成与 SHAKE 拒收采样

在 K-PKE 中,所有参与方的公钥均依赖于一个统一由伪随机种子 ρ\rho 展开生成的矩阵 ARqk×k\mathbf{A} \in \mathcal{R}_q^{k \times k}。为了保证不同硬件平台之间的确定性互操作,标准强制采用 SHAKE-128 可扩展输出函数(XOF)结合拒收采样机制。

对于矩阵中第 ii 行第 jj 列的多项式元素 A[i,j]\mathbf{A}[i, j],硬件以 (ρji)(\rho \parallel j \parallel i) 为输入调用 SHAKE-128 吸收函数,产生伪随机字节流。拒收采样器(Rejection Sampler)每次从流中提取 3 个连续字节 (b0,b1,b2)(b_0, b_1, b_2),并解包为两个 12 比特的整数候选值:

d1=b0+256(b1mod16)=b0+((b1&0x0F)8)d_1 = b_0 + 256 \cdot (b_1 \bmod 16) = b_0 + ((b_1 \& 0\mathrm{x0F}) \ll 8) d2=b1/16+16b2=(b14)+(b24)d_2 = \lfloor b_1 / 16 \rfloor + 16 \cdot b_2 = (b_1 \gg 4) + (b_2 \ll 4)

若候选值满足 d1<qd_1 < q(即 d1<3329d_1 < 3329),则将其采纳为多项式的一个系数;否则予以丢弃。重复该过程直至完整填满多项式的全部 256 个系数。

在硬件微架构中,拒收采样器面临输入数据吞吐率不恒定的天然挑战。由于 3329/409681.27%3329 / 4096 \approx 81.27\%,约有 18.73%18.73\% 的数据会被硬件丢弃。为了防止数据供给饥饿导致后级 NTT 流水线停顿,硬件必须在 SHAKE 状态机与采样器之间设计深度至少为 16 字的弹性异步 FIFO,并引入反压(Backpressure)流控机制。

2.2 密钥生成流程(K-PKE.KeyGen)

K-PKE 的密钥生成硬件数据流包含以下核心计算步骤:

  1. 种子捕获:硬件熵源向控制单元输入 32 字节真随机数种子 dd
  2. 种子扩展:调用 SHA3-512 函数对输入种子计算散列值 (ρ,σ)=SHA3512(d)(\rho, \sigma) = \mathrm{SHA3-512}(d),将 64 字节输出拆分为公共种子 ρ\rho 与私钥随机种子 σ\sigma
  3. 矩阵生成:利用种子 ρ\rho 驱动多通道 SHAKE-128 采样引擎,在 NTT 变换域直接构造矩阵 A^Rqk×k\hat{\mathbf{A}} \in \mathcal{R}_q^{k \times k}
  4. 私钥与噪声采样:利用私钥种子 σ\sigma 驱动 SHAKE-256 引擎生成字节流,通过 CBDη1\mathrm{CBD}_{\eta_1} 采样器并行生成秘密向量 sRqk\mathbf{s} \in \mathcal{R}_q^k 与噪声向量 eRqk\mathbf{e} \in \mathcal{R}_q^k
  5. 数论变换:启动硬件 NTT 加速引擎,将秘密向量与噪声向量变换至 NTT 域,获得频域多项式向量 s^=NTT(s)\hat{\mathbf{s}} = \mathrm{NTT}(\mathbf{s})e^=NTT(e)\hat{\mathbf{e}} = \mathrm{NTT}(\mathbf{e})
  6. 矩阵向量模乘累加:在频域内执行矩阵与向量的多项式点乘累加:
t^=A^s^+e^Rqk\hat{\mathbf{t}} = \hat{\mathbf{A}} \circ \hat{\mathbf{s}} + \hat{\mathbf{e}} \in \mathcal{R}_q^k
  1. 公钥组装:公钥编码为 pk=(ByteEncode12(t^)ρ)pk = (\mathrm{ByteEncode}_{12}(\hat{\mathbf{t}}) \parallel \rho),私钥编码为 skpke=ByteEncode12(s^)sk_{pke} = \mathrm{ByteEncode}_{12}(\hat{\mathbf{s}})

2.3 消息加密流程(K-PKE.Encrypt)

加密过程将 32 字节的明文消息 mm 封装为密文元组 c=(u,v)c = (\mathbf{u}, v),具体步骤如下:

  1. 输入准备:输入公钥 pkpk、明文消息 m{0,1}256m \in \{0, 1\}^{256} 以及加密随机数 rr
  2. 扰动采样:利用随机数 rr 派生伪随机流,通过 CBDη1\mathrm{CBD}_{\eta_1} 采样扰动向量 yRqk\mathbf{y} \in \mathcal{R}_q^k,通过 CBDη2\mathrm{CBD}_{\eta_2} 采样误差向量 e1Rqk\mathbf{e}_1 \in \mathcal{R}_q^k 与误差标量 e2Rqe_2 \in \mathcal{R}_q
  3. 频域变换:计算 y^=NTT(y)\hat{\mathbf{y}} = \mathrm{NTT}(\mathbf{y})
  4. 密文多项式向量计算:利用公钥中的转置矩阵 A^T\hat{\mathbf{A}}^T 与频域扰动向量相乘,并经逆数论变换(INTT)转换回时域后累加误差:
u=INTT(A^Ty^)+e1Rqk\mathbf{u} = \mathrm{INTT}(\hat{\mathbf{A}}^T \circ \hat{\mathbf{y}}) + \mathbf{e}_1 \in \mathcal{R}_q^k
  1. 密文标量多项式计算:将公钥多项式 t^\hat{\mathbf{t}} 与扰动向量内积并变换回时域,叠加明文消息调制信号与标量噪声:
v=INTT(t^Ty^)+e2+Decompress1(m)Rqv = \mathrm{INTT}(\hat{\mathbf{t}}^T \circ \hat{\mathbf{y}}) + e_2 + \mathrm{Decompress}_1(m) \in \mathcal{R}_q

其中,Decompress1(m)\mathrm{Decompress}_1(m) 将明文中的每个比特位映射为模多项式中的常数幅值 q/2mi\lceil q/2 \rfloor \cdot m_i。 6. 系数压缩与输出:输出密文 c=(ByteEncodedu(Compressdu(u))ByteEncodedv(Compressdv(v)))c = (\mathrm{ByteEncode}_{d_u}(\mathrm{Compress}_{d_u}(\mathbf{u})) \parallel \mathrm{ByteEncode}_{d_v}(\mathrm{Compress}_{d_v}(v)))

2.4 消息解密与噪声容限分析(K-PKE.Decrypt)

解密硬件单元接收私钥 s^\hat{\mathbf{s}} 与密文 (u,v)(\mathbf{u}, v),执行反向代数提取:

mp=vINTT(s^TNTT(u))Rqm_p = v - \mathrm{INTT}(\hat{\mathbf{s}}^T \circ \mathrm{NTT}(\mathbf{u})) \in \mathcal{R}_q m=Compress1(mp)m' = \mathrm{Compress}_1(m_p)

将加密方程代入解密表达式,展开可得包含噪声项的完整代数关系:

mp=(tTy+e2+q2m)sT(ATy+e1)+ϵdecompm_p = \left( \mathbf{t}^T \mathbf{y} + e_2 + \left\lceil \frac{q}{2} \right\rfloor m \right) - \mathbf{s}^T (\mathbf{A}^T \mathbf{y} + \mathbf{e}_1) + \epsilon_{\mathrm{decomp}}

由于 t=As+e\mathbf{t} = \mathbf{A}\mathbf{s} + \mathbf{e},代数项展开为:

mp=(sTAT+eT)y+e2+q2msTATysTe1+ϵdecompm_p = (\mathbf{s}^T \mathbf{A}^T + \mathbf{e}^T) \mathbf{y} + e_2 + \left\lceil \frac{q}{2} \right\rfloor m - \mathbf{s}^T \mathbf{A}^T \mathbf{y} - \mathbf{s}^T \mathbf{e}_1 + \epsilon_{\mathrm{decomp}}

主项 sTATy\mathbf{s}^T \mathbf{A}^T \mathbf{y} 在模代数中精确相互抵消,剩余表达式简化为:

mp=q2m+(eTysTe1+e2+ϵdecomp)(modq)m_p = \left\lceil \frac{q}{2} \right\rfloor m + (\mathbf{e}^T \mathbf{y} - \mathbf{s}^T \mathbf{e}_1 + e_2 + \epsilon_{\mathrm{decomp}}) \pmod q

为了确保 Compress1(mp)\mathrm{Compress}_1(m_p) 能够无误恢复出原始消息比特 m{0,1}m \in \{0, 1\},总体噪声项 w=eTysTe1+e2+ϵdecompw = \mathbf{e}^T \mathbf{y} - \mathbf{s}^T \mathbf{e}_1 + e_2 + \epsilon_{\mathrm{decomp}} 必须严格落在以原点为中心的收敛判定窗内:

w<q4=33294=832|w| < \left\lfloor \frac{q}{4} \right\rceil = \left\lfloor \frac{3329}{4} \right\rceil = 832

由于误差向量的分量均来自方差极小的中心二项分布,且压缩误差受限于 ϵq/2d+1|\epsilon| \le \lceil q/2^{d+1} \rfloor,根据霍夫丁不等式与 Chernoff 边界估计,总体噪声越界导致解密错误的概率 δ\delta 严格满足 δ2139\delta \le 2^{-139}(ML-KEM-512)与 δ2174\delta \le 2^{-174}(ML-KEM-1024),确保了物理硬件在全生命周期内具有高度的解密鲁棒性。

三、 多通道数论变换(NTT)硬件微架构设计

在 ML-KEM 的计算开销中,多项式乘法占据了超过 65%65\% 的执行周期。直接在时域执行两个 256 阶多项式的多项式乘法需要 O(n2)=65,536\mathcal{O}(n^2) = 65,536 次模乘与模加操作。通过利用负环绕数论变换(Negative Wrapped NTT),计算复杂度被直接压缩至 O(nlogn)\mathcal{O}(n \log n),仅需 896 次模乘。因此,NTT 硬件微架构的吞吐率与访存效率直接决定了整个密码芯片的性能上限。

图 2:ML-KEM 模乘 NTT 蝶形流水线与双端口 SRAM 架构双体乒乓存储阵列SRAM Bank 0 存储区偶数系数存储 a_2k双端口 128×12-bitSRAM Bank 1 存储区奇数系数存储 a_2k+1无冲突并发读写调度蝶形算子与模约简Cooley-Tukey 蝶形核模加减 A±B·ω mod q单周期双系数吞吐Montgomery 模乘器模数 q=3329 规约预存旋转因子 ROM写回仲裁与逆变换乒乓写回仲裁控制器7级蝶形层迭代控制位反转地址自动映射INTT 逆变换复用通道GS 蝶形与 n^-1 模缩放正逆变换数据通路复用

3.1 负环绕数论变换原理与单位根结构

针对多项式环 Rq=Zq[X]/(X256+1)\mathcal{R}_q = \mathbb{Z}_q[X] / (X^{256} + 1),负环绕卷积利用 X2561(modq)X^{256} \equiv -1 \pmod q 的代数性质,引入本原 512 次单位根 ψZq\psi \in \mathbb{Z}_q(满足 ψ2561(modq)\psi^{256} \equiv -1 \pmod qψ5121(modq)\psi^{512} \equiv 1 \pmod q)。在模数 q=3329q = 3329 下,可选取的本原主根为 ψ=17\psi = 17

ω=ψ2=289(mod3329)\omega = \psi^2 = 289 \pmod{3329} 为本原 256 次单位根。FIPS 203 的正向 NTT 将 256 点时域多项式 f(X)=i=0255fiXif(X) = \sum_{i=0}^{255} f_i X^i 映射为 128 个 2 阶多项式因子:

f^2i+f^2i+1Xf(X)mod(X2ζ2BitRev7(i)+1),i{0,1,,127}\hat{f}_{2i} + \hat{f}_{2i+1} X \equiv f(X) \bmod (X^2 - \zeta^{2\mathrm{BitRev}_7(i) + 1}), \quad i \in \{0, 1, \dots, 127\}

其中 ζ=17\zeta = 17 为预存的常数根。通过这一分解,环上的多项式乘法 h=fg(modX256+1)h = f \cdot g \pmod{X^{256} + 1} 被转化为 128 组独立的度为 1 的小多项式乘法,彻底消除了高阶多项式卷积的跨项依赖。

在 NTT 频域中,两个一次多项式的基元乘法定义如下:

(a0+a1X)(b0+b1X)mod(X2γ)=(a0b0+a1b1γ)+(a0b1+a1b0)X(a_0 + a_1 X) \cdot (b_0 + b_1 X) \bmod (X^2 - \gamma) = (a_0 b_0 + a_1 b_1 \gamma) + (a_0 b_1 + a_1 b_0) X

该运算仅包含 5 次模乘法与 2 次模加法。硬件微架构专门设计有点乘乘法核(BaseMul Core),由两个并行的 Montgomery 乘法器与一个模加减单元协同工作,在 2 个时钟周期内即可完成一对度为 1 的多项式模乘。

3.2 基-2 Cooley-Tukey 蝶形微架构与模约简电路

正向 NTT 计算核心采用基-2 Cooley-Tukey 蝶形拓扑。对于输入的双系数 (u,v)(u, v) 与预存旋转因子 ω\omega,蝶形运算输出对 (u,v)(u', v') 定义为:

u=u+vω(modq)u' = u + v \cdot \omega \pmod q v=uvω(modq)v' = u - v \cdot \omega \pmod q

在硬件电路实现中,由于模数 q=3329q = 3329 非 2 的幂次,传统的除法取模需要消耗数十个时钟周期。微架构设计采用了优化的 Montgomery 模乘器。定义 Montgomery 常数基数 R=216=65536R = 2^{16} = 65536,预计算模逆参数:

q=q1modR=62209=0xF301q' = -q^{-1} \bmod R = 62209 = 0\mathrm{xF301}

对于两个 16 比特输入的乘积 Z=AB<qRZ = A \cdot B < q \cdot R,硬件 Montgomery 规约算法(REDC)以纯加法、截断乘法与移位操作实现无分支常数时间规约:

function MontgomeryReduce(Z):
    m = (Z * q') mod R        // 仅保留低 16 位整数乘法
    t = (Z + m * q) >> 16      // 32 位全乘法后右移 16 位
    if t >= q:
        return t - q
    else:
        return t

针对最终的条件减法操作,硬件电路通过提取借位标志位构造无分支多路选择器:

out=tq+(((tq)15)&q)\mathrm{out} = t - q + (((t - q) \gg 15) \& q)

从而在组合逻辑层面彻底杜绝了因分支跳转预测引发的微架构时序泄漏。整个 Montgomery 模乘单元在流水线中可在单时钟周期内完成一次 12 比特乘法与规约,最高工作主频可稳定运行在 250 MHz 以上。

在控制状态机(FSM)层面,NTT 引擎设计了严格的流水线控制信号网:包含 ntt_start 触发脉冲、stage_cnt(0 至 6 阶层计数器)、pair_cnt(0 至 63 蝶形对计数器)、twiddle_rom_addr(7 位旋转因子只读寻址器)以及 ntt_done 完成中断。整个 NTT 计算过程由纯硬件计数器驱动,完全脱离 CPU 软件干预,单次 256 点多项式数论变换仅需 132 个时钟周期即可完整输出。

3.3 双端口 SRAM 乒乓缓存与无冲突地址映射

256 点 NTT 计算共包含 log2(256)=8\log_2(256) = 8 层蝶形迭代(实际标准合并为 7 层 128 次双系数操作)。在传统的存储结构中,蝶形单元每个时钟周期需要同时读取两个系数并写入两个结果系数。若发生存储体冲突(Bank Conflict),将导致流水线插入等待气泡。

微架构采用了双体并发 SRAM 架构(Bank 0 与 Bank 1),每个 Bank 容量为 128×12128 \times 12 比特,对应单端口或伪双端口 SRAM 宏单元。定义系数全局时域索引为 k[0,255]k \in [0, 255],其 8 位二进制表示为 (b7,b6,b5,b4,b3,b2,b1,b0)(b_7, b_6, b_5, b_4, b_3, b_2, b_1, b_0)

存储体选择逻辑(Bank Select)与体内物理地址生成逻辑(Row Address)设计如下:

BankID(k,stage)=bstageb0\mathrm{BankID}(k, \mathrm{stage}) = b_{\mathrm{stage}} \oplus b_0 RowAddr(k,stage)=k/2=(k1)\mathrm{RowAddr}(k, \mathrm{stage}) = \lfloor k / 2 \rfloor = (k \gg 1)

通过在不同蝶形层级动态将当前活动比特位与最低位执行异或仲裁,数学上证明了在所有 7 层迭代过程中,任意蝶形算子所访问的两个系数必分别严格映射至 Bank 0 与 Bank 1。这保证了读操作与写回操作在两个独立的物理存储体之间并发进行,实现了连续 128 周期零气泡的流水线满载吞吐。

3.4 逆数论变换(INTT)与 Gentleman-Sande 拓扑复用

逆数论变换(INTT)用于将频域多项式向量还原至时域。为了最大限度复用硬件乘法器资源,微架构采用 Gentleman-Sande(GS)蝶形结构实现 INTT:

u=u+v(modq)u' = u + v \pmod q v=(uv)ω1(modq)v' = (u - v) \cdot \omega^{-1} \pmod q

通过将旋转因子乘法后置到减法之后,GS 蝶形与 Cooley-Tukey 蝶形共享完全相同的存储寻址逆向序列。在完成全部 7 层 GS 迭代后,系统调度模乘器执行一次全局系数缩放,对每个系数统一乘以标量模常数:

n1=25613316(mod3329)n^{-1} = 256^{-1} \equiv 3316 \pmod{3329}

通过在控制状态机中设置 1 比特配置寄存器 is_intt,同一套数据通路、寄存器阵列与 SRAM 映射逻辑实现了正向与逆向数论变换的完全复用,相比独立设计节省了 46.8%46.8\% 的硅片面积。

四、 伪随机扩展、采样器与压缩解压缩专用电路

除了算术核心外,ML-KEM 芯片中相当比例的能耗与时延集中在杂凑函数与数据编解码接口上。FIPS 203 标准广泛调用基于 Keccak-f[1600] 排列的哈希算法,包括 SHA3-256、SHA3-512、SHAKE-128 以及 SHAKE-256。

4.1 面积与吞吐权衡的 Keccak 排列微架构

Keccak-f[1600] 排列由 24 轮迭代置换组成,其状态矩阵由 25 个 64 比特字(共 1600 比特)构成。每轮置换依次执行五个非线性映射步骤:θ\thetaρ\rhoπ\piχ\chiι\iota

在高性能安全网关场景下,微架构设计采用单周期单轮迭代(Round-based)方案,包含完整的 1600 比特状态寄存器和组合逻辑映射网。在吸收阶段(Absorb),根据不同算法标准配置速率参数(Rate):

算法实例速率参数 rr容量参数 cc每次吸收字节数主要调用场景
SHAKE-1281344 比特256 比特168 字节公钥矩阵 A\mathbf{A} 展开采样
SHAKE-2561088 比特512 比特136 字节私钥向量与噪声向量采样
SHA3-2561088 比特512 比特136 字节公钥散列 H(pk)H(pk) 与密文散列
SHA3-512576 比特1024 比特72 字节种子派生与 FO 变换中间参数

为了进一步优化高负载下的处理时延,控制逻辑支持轮折叠(Round Folding)技术,将两轮 Keccak 组合逻辑级联在一个时钟周期内完成,使得 24 轮变换压缩至 12 个时钟周期,将 Keccak 引擎的峰值吞吐率提升至 3.2 Gbps 以上。

在五大映射步骤中,θ\theta 变换负责扩散状态阵列的列奇偶校验和,其硬件实现包含 5 个 64 位异或异或树;ρ\rhoπ\pi 为纯粹的硬连线字内旋转与通道重排,不占用任何活动逻辑门;χ\chi 变换是 Keccak 唯一的非线性层,对每一行 5 个比特执行 aiai(¬ai+1&ai+2)a_i \leftarrow a_i \oplus (\neg a_{i+1} \& a_{i+2}),微架构采用流水线均衡布局彻底消除了毛刺反转功耗;ι\iota 步骤则通过轮常数寄存器向 A[0,0]A[0, 0] 注入 64 位常数。全状态单轮流水线使得 Keccak 算子成为整个后量子加速协处理器的强劲引擎。

4.2 中心二项分布(CBD)硬件流水线实现

对于参数 η=2\eta = 2 的中心二项分布,采样器每次需要处理 4 个连续随机比特 (a0,a1,b0,b1)(a_0, a_1, b_0, b_1),计算结果系数为:

x=(a0+a1)(b0+b1){2,1,0,1,2}x = (a_0 + a_1) - (b_0 + b_1) \in \{-2, -1, 0, 1, 2\}

若结果为负数,在模 q=3329q = 3329 的代数环中需要将其转换为正剩余:

x=(x<0)  ?  (x+q):xx' = (x < 0) \;?\; (x + q) : x

硬件实现上,采样器采用流水线树状加法拓扑。前端逻辑以 32 位双字为并行输入单位,单周期并行解包并计算 8 个多项式系数。对于每个系数计算单元,微架构通过 4 比特 LUT 快速计算差值并附带符号判定:

diff=Popcount(A[1:0])Popcount(B[1:0])\mathrm{diff} = \mathrm{Popcount}(A_{[1:0]}) - \mathrm{Popcount}(B_{[1:0]}) coeff=diff+((diff[3])  ?  3329:0)\mathrm{coeff} = \mathrm{diff} + ((\mathrm{diff}[3]) \;?\; 3329 : 0)

由于加法树与符号映射完全由轻量门级组合逻辑构成,采样器可在 32 个时钟周期内无停顿输出 256 个多项式时域系数,与 SHAKE-256 的输出速率实现精确的流水线匹配。

针对 ML-KEM-512 的 η1=3\eta_1 = 3 模式,采样器扩展为 6 比特输入窗口 (a0,a1,a2,b0,b1,b2)(a_0, a_1, a_2, b_0, b_1, b_2)。状态机通过配置位切换求和深度,差值范围扩展至 [3,3][-3, 3]。加法树动态配置多路选择器,确保单套硬件逻辑在 η=2\eta = 2η=3\eta = 3 之间自由切换,避免重复搭建专有电路。

4.3 硬件位打包与桶形移位压缩逻辑

在密文输出与输入阶段,多项式系数需要在非标称位宽(如 10 比特、11 比特、4 比特、12 比特)与标准 32/64 比特系统总线之间进行密集的流式转换。

du=10d_u = 10 比特压缩为例,每 4 个 10 比特多项式系数恰好编码打包为 5 个 8 比特字节(共 40 比特)。微架构内建双缓冲桶形移位器(Barrel Shifter),由专用状态机控制位偏移步进指针。通过在单周期内完成任意位宽的截断对齐与流式拼接,避免了通用处理器中繁琐的多次移位、掩码与逻辑或指令循环,将报文序列化开销降至系统总周期的 1.8%1.8\% 以下。

在解包解压缩阶段,桶形移位器反向工作。对于输入的 5 字节密文流,硬件在单周期内并行提取出 4 个 10 比特系数,并立即送入解压缩算术单元执行乘模恢复:

y=3329x1024=((x×3329)+512)10y = \left\lceil \frac{3329 \cdot x}{1024} \right\rfloor = ((x \times 3329) + 512) \gg 10

硬件利用常数乘法优化技术将乘以 3329 转化为移位累加:x×3329=(x11)+(x10)+(x8)+xx \times 3329 = (x \ll 11) + (x \ll 10) + (x \ll 8) + x,完全无需调用硬件 DSP 乘法单元,仅消耗少量加法器逻辑即实现了单周期 4 系数并行解压缩。

五、 Fujisaki-Okamoto (FO) 隐式拒绝变换与 IND-CCA2 安全实现

在现实网络对抗环境中,被动安全的公钥加密(IND-CPA)极易遭受选择密文攻击。恶意攻击者可以通过构造非法或具有特定代数偏差的密文,观察解密服务器的响应结果或错误返回代码,从而逐步恢复出底层私钥多项式。为了将 IND-CPA 安全的 K-PKE 转化为具备强抗选择密文攻击能力(IND-CCA2)的通用密钥封装机制,FIPS 203 标准引入了经过紧致安全性证明的 Fujisaki-Okamoto(FO)转换变体,并配合隐式拒绝(Implicit Rejection)机制。

图 3:Fujisaki-Okamoto CCA2 变换与掩码防御架构掩码解密与私钥分片掩码解密内核A2B 算术转布尔掩码恢复带掩码明文 m'私钥分片寄存器两份私钥掩码共享消除功耗单迹线泄漏重加密与派生引擎SHA3-512 派生核派生重加密随机数 r'生成候选密钥 K'确定性重加密引擎复用硬件 Encrypt 逻辑生成重构密文 c'常数时间安全仲裁常数时间密文比对逐位异或差分 c⊕c'零延迟流水线 OR 规约隐式拒绝安全仲裁比对成功输出会话密钥失败输出随机伪密钥

5.1 隐式拒绝解封装算法状态机设计

ML-KEM.Decaps 的完整算法状态转移逻辑如下:

  1. 私钥解包:私钥包含 sk=(skpkepkH(pk)z)sk = (sk_{pke} \parallel pk \parallel H(pk) \parallel z),其中 z{0,1}256z \in \{0, 1\}^{256} 为随机伪密钥种子。
  2. 底层解密:调用底层硬件解密核,恢复出候选明文消息:
m=KPKE.Decrypt(skpke,c)m' = \mathrm{K-PKE.Decrypt}(sk_{pke}, c)
  1. 确定性派生:利用候选明文 mm' 与预存的公钥哈希值 H(pk)H(pk) 派生重加密随机数与共享密钥候选值:
(K,r)=G(mH(pk))=SHA3512(mH(pk))(K', r') = \mathrm{G}(m' \parallel H(pk)) = \mathrm{SHA3-512}(m' \parallel H(pk))
  1. 确定性重加密(Re-encryption):硬件调度加密流水线,以公开公钥 pkpk 与派生随机数 rr' 对明文 mm' 重新执行标准加密:
c=KPKE.Encrypt(pk,m,r)c' = \mathrm{K-PKE.Encrypt}(pk, m', r')
  1. 常数时间逐位差分校验:比对输入密文 cc 与重构密文 cc' 是否完全恒等:
Δ=i=0c1(c[i]c[i])\Delta = \bigvee_{i=0}^{|c|-1} (c[i] \oplus c'[i])
  1. 伪密钥盲化计算:并行启动杂凑引擎计算基于伪随机种子的伪密钥:
Krand=J(zc)=SHAKE256(zc,32)K_{\mathrm{rand}} = \mathrm{J}(z \parallel c) = \mathrm{SHAKE-256}(z \parallel c, 32)
  1. 常数时间多路输出仲裁
Kfinal=(Δ==0)  ?  K:KrandK_{\mathrm{final}} = (\Delta == 0) \;?\; K' : K_{\mathrm{rand}}

若输入的密文 cc 遭到攻击者的哪怕 1 比特的微小篡改,重加密生成的 cc' 必与 cc 产生差异(Δ0\Delta \ne 0)。此时系统并不抛出显式异常或返回错误代码,而是输出看似完全合法但与真实共享密钥没有任何关联的伪随机值 KrandK_{\mathrm{rand}}。攻击者无法从解密结果或系统响应行为中获取任何关于解密失败位置的有价值信息,从而在密码学结构上切断了所有基于密文延展性(Malleability)的自适应攻击路径。

在理论安全归约证明中,传统显式拒绝(Explicit Rejection)方案在解密失败时返回 \perp 符号。然而在实际工程中,攻击者可将解密芯片作为明文校验预言机(Plaintext-Checking Oracle, PC Oracle)或错误预言机(Error Oracle),通过自适应选取模系数边界密文发起密钥失配攻击(Key-Mismatch Attacks)。隐式拒绝机制彻底消除了 \perp 的物理可观测性,使得即使在量子随机预言机模型(QROM)下,方案的紧致安全性依然严格成立。

5.2 硬件重加密流水线复用架构

在芯片面积受限的硬件实现中,单独实例化两套完整的加密运算数据通路将带来超过 40%40\% 的硅片面积浪费。微架构设计采用了主从控制状态机共享架构,在解密阶段复用加密数据通路。

当启动 ML-KEM.Decaps 操作时,控制状态机分阶段驱动算术资源:

  • 阶段 A:SRAM 存储私钥 s^\hat{\mathbf{s}} 与密文 u\mathbf{u},驱动 NTT/INTT 单元执行内积解密,耗时 TdecT_{\mathrm{dec}}
  • 阶段 B:Keccak 引擎执行 SHA3-512 派生 (K,r)(K', r'),耗时 ThashT_{\mathrm{hash}}
  • 阶段 C:控制权移交至重加密状态机,SRAM 切换至重加密工作模式,利用公钥 pkpkrr' 重新执行全套 Encrypt 流水线,生成 cc',耗时 TencT_{\mathrm{enc}}
  • 阶段 D:流式比较器执行常数时间比对与多路选择,耗时 TcmpT_{\mathrm{cmp}}

总解封装时延为:

Tdecaps=Tdec+Thash+Tenc+TcmpT_{\mathrm{decaps}} = T_{\mathrm{dec}} + T_{\mathrm{hash}} + T_{\mathrm{enc}} + T_{\mathrm{cmp}}

通过硬件资源时分复用,硅片面积大幅削减,使得单颗轻量级芯片即可支持全功能高性能 ML-KEM 操作。

5.3 常数时间比对器与时间旁路消除

在重加密校验阶段,传统的字符串比对函数(如 C 语言中的 memcmp)通常在发现第一个不匹配字节时立即提前终止返回。这种时序差异在微秒甚至纳秒级别极其容易被网络侧信道分析仪或示波器捕获,形成严重的时间侧信道攻击。

硬件微架构设计强制采用了流水线常数时间异或规约网络。比较器的数据路径宽度设计为 64 比特。当重加密密文流 cc' 从编码器流出时,与寄存器中锁存的原始密文 cc 进行流水线逐周期异或:

diff_regdiff_reg    (c[63:0]c[63:0])\mathrm{diff\_reg} \leftarrow \mathrm{diff\_reg} \;\Big|\; (c[63:0] \oplus c'[63:0])

比对逻辑严格执行固定的时钟周期数(在 ML-KEM-768 下固定为 136 个时钟周期),无论差异出现在首字节还是末字节,系统消耗的时钟周期数与内部信号翻转率方差均保持严格一致,彻底消除了微架构时序旁路。

此外,为了抵御外部针对状态跳转的微架构探测,常数时间 MUX 单元在物理布局上被强制放置在安全核心的深层物理网表中。其输出采用无毛刺平衡传输门开关,确保无论选择真实密钥 KK' 还是随机假密钥 KrandK_{\mathrm{rand}},开关电路对电源轨产生的电荷拉动曲线在纳安级别保持统计重合。

六、 侧信道与故障注入攻击物理防御工程实践

当硬件芯片部署于不受物理保护的终端、车载单元或边缘边缘节点时,攻击者可以通过高精度探针监测芯片运行时的动态功耗(差分功耗分析, DPA)、瞬态电磁辐射(相关电磁分析, CEMA),或通过超短脉冲红外激光、电源电压毛刺(Voltage Glitch)实施故障注入攻击(Fault Injection Attacks, FIA)。针对格密码硬件微架构的物理防护设计必须贯穿整个逻辑综合与布局布线全生命周期。

6.1 私钥算术与布尔混合掩码方案

掩码(Masking)是抵御一阶与高阶 DPA 攻击的标准防御手段。其基本思想是将每一个敏感敏感变量 xx 随机拆分为 d+1d+1 个独立分片(Shares):

x=x0x1xdx = x_0 \star x_1 \star \dots \star x_d

使得任何少于 d+1d+1 个分片的联合概率分布与原始秘密 xx 完全统计独立。

在 ML-KEM 中,多项式运算涉及两种不同代数结构的运算交替:模 q=3329q = 3329 的模算术加法运算(=+(modq)\star = + \pmod q)以及 Keccak 散列与逻辑控制中的布尔异或运算(=\star = \oplus)。因此,硬件必须在算术掩码(Arithmetic Masking, AM)与布尔掩码(Boolean Masking, BM)之间执行高频且安全的常数时间转换。

6.1.1 算术转布尔掩码(A2B)转换微架构

设敏感变量 xx 的算术两分片为 (A0,A1)(A_0, A_1),满足 x=(A0+A1)modqx = (A_0 + A_1) \bmod q。硬件需要生成布尔两分片 (B0,B1)(B_0, B_1),满足 x=B0B1x = B_0 \oplus B_1

微架构采用了抗一阶攻击的 Goubin 算法改进流水线。算法核心依赖于带掩码的安全加法进位传递链(SecAdd)。通过引入片内真随机数发生器(TRNG)注入的新鲜随机掩码 rfreshr_{\mathrm{fresh}},进位生成逻辑被深度盲化:

Ci+1=(Ai&Bi)(Ai&Ci)(Bi&Ci)rfreshC_{i+1} = (A_i \& B_i) \oplus (A_i \& C_i) \oplus (B_i \& C_i) \oplus r_{\mathrm{fresh}}

所有的进位计算均在双轨互补逻辑(Dual-Rail Precharge Logic, DPL)下执行,使得每一位进位翻转所消耗的动态电荷与真实数据完全去相关。在多阶掩码推广中,系统严格遵循 Ishai-Sahai-Wagner(ISW)探测安全模型与强非干涉(Strong Non-Interference, SNI)安全性证明。通过在每个多项式系数变换阶段插入独立的掩码刷新小部件(Mask Refreshing Gadgets),切断了多轮计算之间的跨周期二阶统计相关性。

6.1.2 采样阶段的掩码盲化(Masked CBD)

在密钥生成与加密阶段,CBD 采样直接处理敏感随机数流。若随机数比特以明文形式输入加法树,其汉明重量波动将直接在电源线上呈现明显的功率特征峰。

微架构采用了掩码化 CBD 采样器。将输入随机流分为两个布尔分片:

a=a0amask,b=b0bmaska = a_0 \oplus a_{\mathrm{mask}}, \quad b = b_0 \oplus b_{\mathrm{mask}}

加法树采用全掩码化的 SecAdd 单元对分片独立求和,并在最终阶段通过安全算术转换直接生成模 qq 的算术分片 (S0,S1)(S_0, S_1)。整个采样过程中,敏感多项式系数从未以未经掩码保护的明文瞬态寄存形式出现在任何内部总线上。

6.2 激光与毛刺故障注入防御微架构

在选择密文攻击的变体中,攻击者通过在解密比对阶段对比较标志位注入激光单粒子翻转(Single Event Upset, SEU),强制将不匹配结果 Δ0\Delta \ne 0 篡改为 Δ=0\Delta = 0,即可绕过 FO 隐式拒绝机制,诱骗芯片输出明文消息。

针对物理故障注入,硬件微架构实施了三层主动与被动纵深防御体系:

  1. 空间双轨冗余计算:核心比对器在硅片物理布局上实例化两个完全对称但空间物理隔离的独立单元 Cmp_ACmp_B。比对结果采用互补码编码(如通过为 0x55AA,失败为 0xAA55)。任何针对单一单元的激光照射或电压扰动将破坏互补编码规则,立即触发系统警报。
  2. 时间交错执行与交叉校验:重加密哈希运算在不同时钟周期内执行两次计算,并将两组中间状态置入流水线寄存器交叉异或校验。若发现计算结果散度,控制单元强制锁死输出总线。
  3. 安全自毁与密钥熔断状态机:一旦连续检测到超过 3 次异常环境报警(如片上光敏传感器触发、电压毛刺探测器告警或比对逻辑校验失败),安全监控状态机立即激活硬件自毁逻辑,通过向私钥 SRAM 充放电回路发送全零覆盖脉冲,在 2 个时钟周期内彻底物理擦除所有易失性密钥分片,杜绝物理提取可能。

6.3 侧信道泄漏评估(TVLA)测试验证

为了量化评估硬件微架构的抗侧信道防护强度,芯片设计严格遵循非特定测试向量泄漏评估(Test Vector Leakage Assessment, TVLA)国际标准(ISO/IEC 17825)。

在固定测试向量对随机测试向量(Fixed vs Random)的测试场景下,利用高采样率示波器采集 1,000,000 条解封装运行过程中的高频瞬态电磁辐射迹线。对采集数据执行 Welch’s tt-test 统计检验:

t=μfixedμrandomσfixed2Nfixed+σrandom2Nrandomt = \frac{\mu_{\mathrm{fixed}} - \mu_{\mathrm{random}}}{\sqrt{\frac{\sigma_{\mathrm{fixed}}^2}{N_{\mathrm{fixed}}} + \frac{\sigma_{\mathrm{random}}^2}{N_{\mathrm{random}}}}}

未采取掩码保护的初始版本在第 450 个时钟周期(解密向量内积)处的 tt 值峰值高达 t=18.4|t| = 18.4,远超 t>4.5|t| > 4.5 的密码安全失效阈值。而在部署了完整的 A2B/B2A 掩码与常数时间流水线后,在完整 1,000,000 条迹线规模下,全周期内的 tt 值统计曲线平滑受控在区间 [3.2,+3.1][-3.2, +3.1] 之内,严格满足国际权威标准对高安全性密码芯片的抗侧信道评测准则。

七、 正微光电技术交付体系与工程验证事实

后量子密码学的真正价值在于严苛工业场景中的可落地性与系统鲁棒性。正微(杭州)光电科技有限公司(zwqtech.com)作为母公司正则量子(北京)技术有限公司在量子安全与后量子密码领域的产业化核心载体,始终坚持“理论自证、架构自研、数据可信”的系统工程原则,围绕芯片微架构、嵌入式软件库与物理随机数源构建了完整的商业密码交付底座。

7.1 自主可控知识产权体系

在技术攻坚与工程演进过程中,团队始终坚持核心算法逻辑与硬件架构的完全自主设计。截至目前,公司已累计获得 13 项授权专利,技术涵盖高速数论变换蝶形网络调度、无冲突多体存储管理、抗侧信道物理防护微架构以及量子随机数发生器物理熵源调理电路,为关键基础设施的信息安全构建了坚实的底层专利护城河。

7.2 严苛硬件 IP 核 Known Answer Test (KAT) 闭环验证

在密码学芯片实现中,任何微小的逻辑门延迟或位级对齐偏差都会导致灾难性的互操作故障。为了验证全栈硬件电路对国际标准的绝对一致性,正微光电自研的 PQC 硬件 IP 核在 FPGA 与 ASIC 仿真平台上挂载了 NIST 官方发布的全套已知答案测试向量(Known Answer Test, KAT)。

验证系统通过 AXI-Stream 总线对硬件执行全自动化流水线激励。测试覆盖了 ML-KEM-512、ML-KEM-768 以及 ML-KEM-1024 全部三种模式下的密钥生成、封装与解封装全生命周期数据流。在严谨的全自动化回归测试中,硬件 IP 核全面通过了 193/193 组 Known Answer Test (KAT) 测试向量验证,测试通过率达到 100%100\%。这充分验证了硬件微架构在数学逻辑、参数解包、Keccak 填充与常数时间比较仲裁上的完全正确性,达到工业级高可靠交付标准。

下表展示了正微光电 PQC 硬件 IP 核在典型制程与 FPGA 平台上的实测性能基准表现:

算法工作模式目标硬件平台工作主频 (MHz)密钥生成时延 (微秒)封装时延 (微秒)解封装时延 (微秒)峰值吞吐率 (Ops/s)逻辑资源占用 (LUT / FF / BRAM)
ML-KEM-512Xilinx UltraScale+250 MHz18.4 μs22.6 μs26.1 μs38,314 Ops/s18.2K LUT / 14.5K FF / 12 BRAM
ML-KEM-768Xilinx UltraScale+250 MHz28.5 μs34.2 μs39.8 μs25,125 Ops/s22.4K LUT / 18.1K FF / 16 BRAM
ML-KEM-1024Xilinx UltraScale+250 MHz41.2 μs48.7 μs56.4 μs17,730 Ops/s28.6K LUT / 23.4K FF / 20 BRAM
ML-KEM-768ASIC 28nm HPC+600 MHz11.8 μs14.2 μs16.5 μs60,606 Ops/s145K 门等效面积 (0.18 mm²)

7.3 嵌入式跨平台架构加速:ARM Cortex 优化实践

除了专用硬件加速 IP 核外,在电力自动化配电终端、轨道交通通信基板以及智能网联汽车边缘控制器等海量长尾场景中,受限于硬件成本与功耗预算,系统往往依赖现有的通用嵌入式处理器执行后量子运算。

正微光电针对 ARM Cortex 嵌入式微控制器架构开展了深度的指令级流水线重构。利用 ARM NEON 矢量指令集与 SIMD 寄存器流水线并行性,团队重构了 16 位系数并行模乘算子,消除了传统软件实现中的内存加载/存储瓶颈。在标准测试基准下,嵌入式优化库在主流 ARM Cortex 处理器上取得了显著性能飞跃,实现了 6.7-8.9× 加速,且该优化成果已在国家电网电力监控终端与工业网关试点项目中成功通过实网验证,证明了算法库在严苛资源受限环境下的卓越适应性。

7.4 物理真随机熵源与物理层安全融合

任何密码算法的理论安全性最终都必须溯源至其底层随机数种子的物理真随机性。若熵源存在统计偏差或遭到外部物理操控,即便算法本身数学上完备自洽,整个密码系统也将被瞬间瓦解。

正微光电将自主研发的物理量子随机数发生器(QRNG)作为安全芯片的物理信任根核心部件。利用真空涨落或相干光态衰减的纯物理内禀量子随机过程,熵源电路能够稳定输出纯物理真随机比特流,实测物理吞吐速率稳定达到 1Gbps 物理速率。该物理真随机流经过符合 NIST SP 800-90B 标准的片上在线健康测试逻辑实时监控后,直接作为物理种子灌装至 ML-KEM 硬件引擎中,彻底杜绝了伪随机数生成器在种子生成阶段的确定性弱点,形成了“量子物理熵源 + 抗量子数学算法”的双重纵深防护闭环。

八、 总结与后量子密码工程演进展望

FIPS 203 ML-KEM 标准的正式确立,标志着全球公钥密码学基础设施正式告别经典 RSA/ECC 时代,全面跨入以格密码为核心的后量子工程化建设新纪元。从算法原理到硅片物理实现的跨越,不仅需要克服多项式环模乘、多通道 NTT 蝶形流水线与高吞吐 Keccak 引擎等微架构性能瓶颈,更需要直面 Fujisaki-Okamoto 紧致变换在物理层所带来的时间侧信道、功耗侧信道与故障注入等一系列严峻工程挑战。

通过采用基-2 Cooley-Tukey 与 Gentleman-Sande 数据通路高度复用、无冲突双体 SRAM 并发寻址、流水线常数时间异或比对网络以及全流程布尔-算术掩码(Masking)保护,现代抗量子硬件芯片能够在可控的硅片面积与能耗开销下,提供兼具超高吞吐与物理安全的密钥封装服务。

在迈向全面后量子迁移的过渡时期,混合密码体制(Hybrid Key Exchange,例如 X25519 与 ML-KEM-768 双轨协商)将成为保护金融专网、能源电网及政企数据安全的主要技术形态。正微光电将依托 13 项授权专利的技术积累、通过 193/193 组 KAT 测试的工业级 IP 核、在嵌入式平台取得的 6.7-8.9× 加速能力以及 1Gbps 物理速率量子随机数发生器,持续深耕抗量子密码硬件微架构与安全模组研发,为我国关键信息基础设施在后量子时代的平滑演进与安全筑基提供坚实可信的底层技术支撑。

参考文献与权威资料

  1. National Institute of Standards and Technology (NIST). FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard. Federal Information Processing Standards Publication 203, August 2024. Available online: https://csrc.nist.gov/pubs/fips/203/final
  2. National Institute of Standards and Technology (NIST). NIST FIPS 203 Official Specification Document (PDF). CSRC Publication Database, 2024. Available online: https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.203.pdf
  3. National Institute of Standards and Technology (NIST). Post-Quantum Cryptography Standardization Project Overview and Timeline. NIST Computer Security Resource Center, 2024. Available online: https://csrc.nist.gov/projects/post-quantum-cryptography
  4. National Institute of Standards and Technology (NIST). FIPS 204: Module-Lattice-Based Digital Signature Standard. Federal Information Processing Standards Publication 204, August 2024. Available online: https://csrc.nist.gov/pubs/fips/204/final
  5. National Institute of Standards and Technology (NIST). FIPS 205: Stateless Hash-Based Digital Signature Standard. Federal Information Processing Standards Publication 205, August 2024. Available online: https://csrc.nist.gov/pubs/fips/205/final
  6. Bos, J., Ducas, L., Kiltz, E., Lepoint, T., Lyubashevsky, V., Schanck, J. M., Schwabe, P., Seiler, G., & Stehlé, D. CRYSTALS - Kyber: a CCA-secure module-lattice-based KEM. Cryptology ePrint Archive, Report 2017/634, 2017. Available online: https://eprint.iacr.org/2017/634
  7. Bos, J., Gourjon, M., Renes, J., Schneider, T., & van Vredendaal, C. Masking Kyber: First- and Higher-Order Implementations. Cryptology ePrint Archive, Report 2022/1459, 2022. Available online: https://eprint.iacr.org/2022/1459
  8. Qiao, Z., Liu, Y., Zhou, Y., Shao, M., & Sun, S. When NTT meets SIS: Efficient side-channel attacks on Dilithium and Kyber. Cryptology ePrint Archive, Report 2023/1866, 2023. Available online: https://eprint.iacr.org/2023/1866
  9. National Institute of Standards and Technology (NIST). NIST Special Publication 800-208: Recommendation for Stateful Hash-Based Signature Schemes. CSRC Special Publications, 2020. Available online: https://csrc.nist.gov/pubs/sp/800/208/final
Share:
Back to Blog

Related Posts

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

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

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

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

RISC-V 后量子密码:低功耗 MCU 的落地路径

RISC-V 后量子密码:低功耗 MCU 的落地路径

当后量子密码遇上 RISC-V,低功耗 MCU 端迎来无需更换硬件的迁移窗口。本文从指令集生态、ML-KEM 资源画像、内存优化、向量化 NTT 到常数时间实现,系统拆解 RISC-V 后量子密码的工程落地路径。