· technology· 约 62 分钟精读

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

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

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

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

1. 引言与后量子数字签名演进

在现代密码学体系与全球网络安全基础设施中,公钥数字签名技术承担着身份认证、通信实体鉴别、数据完整性校验以及法律不可否认性的核心重任。从底层传输层安全协议(TLS 1.3)、安全外壳协议(SSH)、虚拟专用网络隧道(IPsec/VPN),到公钥基础设施(PKI/X.509 电子证书体系)、硬件安全启动(Secure Boot)以及金融分布式账本,数字签名机制构成了可信计算环境的基石。

然而,当前广泛部署的经典公钥数字签名体制——包括基于大整数质因数分解困难性的 RSA 算法,以及基于离散对数与椭圆曲线离散对数困难性(ECDLP)的 ECDSA、Ed25519 和我国商用密码 SM2 数字签名算法——在理论上均存在致命的物理与数学脆弱性。基于量子力学态叠加与量子纠缠特性的 Shor 算法,能够在多项式时间 O((logN)3)\mathcal{O}((\log N)^3) 内高效求解大整数分解与离散对数问题。这意味着,一旦拥有数千个容错逻辑量子比特的通用量子计算机研制成功,现有的经典公钥签名与密钥交换体系将在极短时间内被完全攻破。

为了应对量子计算对全球数字信任体系构成的潜在威胁,美国国家标准与技术研究院(NIST)自 2016 年正式启动了后量子密码(Post-Quantum Cryptography, PQC)全球标准化征集与评估工程。历经四轮严谨的理论密码学分析、代数攻防验证以及软硬件实现性能基准评测,NIST 于 2024 年 8 月正式发布了首批三项后量子密码联邦信息处理标准(FIPS):

  • FIPS 203:基于模块格的密钥封装机制标准(ML-KEM,源自 CRYSTALS-Kyber 算法);
  • FIPS 204:基于模块格的数字签名标准(ML-DSA,源自 CRYSTALS-Dilithium 算法);
  • FIPS 205:无状态哈希数字签名标准(SLH-DSA,源自 SPHINCS+ 算法)。

在这三项核心标准中,FIPS 204 ML-DSA 被确立为主力通用型抗量子数字签名标准。与基于非结构化哈希树签名的 SLH-DSA 相比,ML-DSA 展现出了显著的综合工程性能优势:其公钥与签名长度仅为 2.4 KB 至 4.6 KB,相较于 SLH-DSA(17 KB 至 49 KB)缩减了近一个数量级;同时,ML-DSA 的硬件签名与验签吞吐量比 SLH-DSA 高出两个数量级以上,能够极好地适配高并发网络握手与低延迟通信场景。与另一种基于紧密格陷门高斯采样的候选方案 Falcon(对应未来的 FN-DSA 标准)相比,ML-DSA 采用了基于均匀分布采样的 Fiat-Shamir with Aborts 框架,完全规避了复杂的 64 位双精度浮点数运算与高精度高斯采样陷阱,极大地提升了算法在嵌入式微控制器、硬件密码协处理器以及专用集成电路(ASIC/FPGA)中的确定性可实现性与防故障能力。

然而,将 ML-DSA 从严谨的数学规范转化为高安全、高性能的物理设备实现,面临着三大核心工程挑战:

  1. 多项式环上的高密度计算负载:ML-DSA 的核心代数运算建立在 256 维分圆多项式商环 Rq=Zq[X]/(X256+1)\mathcal{R}_q = \mathbb{Z}_q[X]/(X^{256} + 1) 之上,模数 q=8380417q = 8380417 为 23 位素数。矩阵向量多项式乘法构成了算法的主要计算瓶颈,必须依赖数论变换(Number Theoretic Transform, NTT)进行深度硬件加速;
  2. 拒绝采样引发的非恒定时间与动态状态机:为了消除签名输出中所泄露的私钥几何分布特征,算法在签名生成阶段引入了严密的无穷范数(\ell_\infty)边界判定与拒绝采样重试机制。这一机制导致单次签名运算的迭代轮数具有概率分布特性,增加了流水线控制与时序调度的复杂度;
  3. 物理侧信道与故障注入攻击面:在实体硬件运行环境中,差分功耗分析(DPA)、相关功耗分析(CPA)以及近年来被揭示的被拒绝签名挑战分析(Rejected Signature Challenge Attacks),使得攻击者能够通过单条功耗轨迹恢复私钥。此外,纳秒级时钟毛刺或激光注入等物理扰动可能通过跳过边界检查直接导致私钥的代数级泄露。

本文将系统剖析 FIPS 204 ML-DSA 的代数数学底座、Fiat-Shamir with Aborts 构造机制、23 位 Solinas 素数 NTT 硬件微架构,并深入探讨高阶掩码与硬件双轨锁步抗故障注入的侧信道防御工程实现。


2. ML-DSA 数学基础与底层难题规约

ML-DSA 算法的安全性严格规约于结构化格(Structured Lattices)上的两大经典计算难题:模块带误差学习问题(Module Learning With Errors, M-LWE)与模块短整数解问题(Module Short Integer Solution, M-SIS)。

2.1 代数多项式环与模数选择

ML-DSA 的基本运算代数空间定义在如下分圆多项式商环之上:

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

其中,多项式的最高次数固定为 n=256n = 256,系数模数为素数 q=8380417=223213+1q = 8380417 = 2^{23} - 2^{13} + 1。在模多项式 X256+1X^{256} + 1 的作用下,任意两个多项式 a(X),b(X)Rqa(X), b(X) \in \mathcal{R}_q 的乘法均表现为负环绕卷积(Negative Wrapped Convolution):当两个单项式相乘使得指数 XkX^k 满足 k256k \ge 256 时,满足化简关系 X2561(modX256+1)X^{256} \equiv -1 \pmod{X^{256} + 1}

该素数模数 q=8380417q = 8380417 的选取具备极其精妙的代数与硬件实现特性:

  • 全分裂 NTT 特性:由于 q1(mod512)q \equiv 1 \pmod{512}(具体数值为 83804171=512×163688380417 - 1 = 512 \times 16368),在有限域 Zq\mathbb{Z}_q 内必然存在本原 512 次单位根 ζ=1753\zeta = 1753。满足 ζ2561(modq)\zeta^{256} \equiv -1 \pmod{q}ζ5121(modq)\zeta^{512} \equiv 1 \pmod{q}。因此,多项式 X256+1X^{256} + 1 在有限域 Zq[X]\mathbb{Z}_q[X] 上可以完全因式分解为 256 个互不相同的一次线性因子:
X256+1=i=0255(Xζ2i+1)(modq)X^{256} + 1 = \prod_{i=0}^{255} (X - \zeta^{2i+1}) \pmod{q}

这使得任意两个环中多项式的负环绕乘法可以通过完全正向 NTT、频域点值逐项相乘以及逆向 INTT 在 O(nlogn)\mathcal{O}(n \log n) 复杂度内高效完成,避免了任何不完全分裂结构所带来的额外多项式长除法开销。

  • Solinas 广义 Mersenne 素数硬件特性qq 可以紧凑地表示为 223213+12^{23} - 2^{13} + 1。在数字电路与专用集成电路设计中,这意味着满足如下同余恒等式:
2232131(modq)2^{23} \equiv 2^{13} - 1 \pmod{q}

该性质允许硬件设计者通过简单的硬连线移位与加减法网络替代开销庞大的通用 Montgomery 约简或 Barrett 乘法除法器,使得模约简逻辑的组合逻辑门延迟降低 40% 以上。

2.2 格几何性质与高斯启发式安全估计

为了深入理解 ML-DSA 的抗量子强度来源,必须从格空间的几何特性进行形式化建模。设整数格 ΛZm\Lambda \subset \mathbb{Z}^m 是由一组线性无关的基向量构成的离散子群。对于矩阵 AZqk×\mathbf{A} \in \mathbb{Z}_q^{k \times \ell},由其正交补空间诱导的 qq 模齐次多项式格定义为:

Λq(A)={xR:Ax0(modq)}\Lambda_q^\perp(\mathbf{A}) = \left\{ \mathbf{x} \in \mathcal{R}^\ell : \mathbf{A}\mathbf{x} \equiv \mathbf{0} \pmod{q} \right\}

在将多项式环 R\mathcal{R} 展开至 N=n×=256N = n \times \ell = 256\ell 维欧氏空间 RN\mathbb{R}^N 后,格 Λq(A)\Lambda_q^\perp(\mathbf{A}) 的满秩维度为 NN,其格行列式(基本体积)精确满足:

det(Λq(A))=qnk=q256k\det(\Lambda_q^\perp(\mathbf{A})) = q^{n \cdot k} = q^{256k}

根据高斯启发式(Gaussian Heuristic),随机高维格中欧氏长度最短的非零向量长度 λ1(Λ)\lambda_1(\Lambda) 期望值渐进满足:

λ1(Λ)N2πe(detΛ)1/N=2562πeqk\lambda_1(\Lambda) \approx \sqrt{\frac{N}{2\pi e}} \cdot (\det \Lambda)^{1/N} = \sqrt{\frac{256\ell}{2\pi e}} \cdot q^{\frac{k}{\ell}}

攻击者若试图通过格基约简算法(如 Block-Korkine-Zolotarev, BKZ)攻破底层 M-SIS 或 M-LWE 难题,其实际求解能力受限于算法的块大小参数 βBKZ\beta_{\mathrm{BKZ}}。在已知最先进的经典筛法模型(Sieve Algorithm,时间复杂度渐进为 20.292β2^{0.292\beta})以及量子筛法模型(Quantum Sieve,时间复杂度渐进为 20.265β2^{0.265\beta})下,当多项式阶数 n=256n=256 且模维度 (k,)(k, \ell) 分别配置为 (4,4)(4,4)(6,5)(6,5)(8,7)(8,7) 时,攻破对应参数所需的最小 BKZ 块大小 β\beta 分别超过 420、630 与 850,从而在物理上保证了对应 128 位、192 位与 256 位后量子安全界限。

2.3 理想格代数特性与模块格折中优势

在后量子密码学的演进历程中,学术界曾提出过基于一维理想格的 Ring-LWE/Ring-SIS 方案与基于全随机格的 Standard-LWE 方案:

  • 标准随机格(Standard-LWE):其矩阵 AZqm×n\mathbf{A} \in \mathbb{Z}_q^{m \times n} 完全不具备代数结构,公钥矩阵需要占用数百千字节的存储空间,导致公钥与密文体积过大,难以在受限网络与嵌入式设备中部署;
  • 纯理想格(Ring-LWE):将整个代数结构浓缩于单一的多项式商环中,虽然公钥尺寸大幅压缩,但近年来代数数论领域的研究表明,部分具有特殊数域结构(如分圆数域中的单位群)的理想格可能存在潜在的量子多项式时间主理想求解风险(如 Biasse-Song 算法);
  • 模块格(Module-LWE / Module-SIS):ML-DSA 采用的模块格架构巧妙地融合了二者的优势。通过引入秩为 k×k \times \ell 的多项式矩阵,在保留多项式快速卷积加速特性的同时,引入了自由度可调的线性代数维度,打破了单项理想多项式的代数对称性。这使得方案能够在不改变基础多项式环参数(n=256,q=8380417n=256, q=8380417)的前提下,仅通过增减矩阵行列维度即可平滑覆盖从轻量级到最高安全强度的全谱系需求。

2.4 向量空间、矩阵与范数度量

在模块格体系中,运算元素扩展为系数属于 Rq\mathcal{R}_q 的多项式向量与多项式矩阵:

  • 设系统参数包含两个维度整数 kk\ell
  • 签名私钥由两个短向量构成:s1Rq\mathbf{s}_1 \in \mathcal{R}_q^\ells2Rqk\mathbf{s}_2 \in \mathcal{R}_q^k,其各个多项式的系数均严格采样自以 0 为中心的小整数区间 Sη={η,η+1,,η}S_\eta = \{-\eta, -\eta+1, \dots, \eta\}
  • 公共参数包含一个由公共随机种子 ρ\rho 经可扩展输出哈希函数生成的均匀随机多项式矩阵 ARqk×\mathbf{A} \in \mathcal{R}_q^{k \times \ell}
  • 未经截断的原始公钥向量由矩阵乘加运算生成:t=As1+s2Rqk\mathbf{t} = \mathbf{A}\mathbf{s}_1 + \mathbf{s}_2 \in \mathcal{R}_q^k

对于任意多项式 f(X)=i=0n1fiXiRqf(X) = \sum_{i=0}^{n-1} f_i X^i \in \mathcal{R}_q,定义其系数在区间 (q/2,q/2]( -q/2, q/2 ] 内的标准中心化表示。其无穷范数定义为最大系数绝对值:

f=max0i<nfi\|f\|_\infty = \max_{0 \le i < n} |f_i|

对于多项式向量 v=(v1,v2,,vm)TRqm\mathbf{v} = (v_1, v_2, \dots, v_m)^T \in \mathcal{R}_q^{m},其无穷范数定义为所有分量多项式无穷范数的最大值:

v=max1jmvj\|\mathbf{v}\|_\infty = \max_{1 \le j \le m} \|v_j\|_\infty

2.5 底层计算难题的形式化定义

ML-DSA 的理论安全性严格规约至以下两个结构化格难题:

  1. 判定性模块带误差学习问题(Decisional MLWEn,k,,η,q\mathrm{M-LWE}_{n, k, \ell, \eta, q}: 给定均匀随机采样的多项式矩阵 ARqk×\mathbf{A} \leftarrow \mathcal{R}_q^{k \times \ell},判定分布对 (A,As1+s2)(\mathbf{A}, \mathbf{A}\mathbf{s}_1 + \mathbf{s}_2) 与全均匀随机分布对 (A,u)Rqk××Rqk(\mathbf{A}, \mathbf{u}) \leftarrow \mathcal{R}_q^{k \times \ell} \times \mathcal{R}_q^k 在计算上是不可区分的,其中私钥向量分量 s1Sη\mathbf{s}_1 \leftarrow S_\eta^\ells2Sηk\mathbf{s}_2 \leftarrow S_\eta^k
  2. 模块短整数解问题(MSISn,k,,β,q\mathrm{M-SIS}_{n, k, \ell, \beta, q}: 给定均匀随机采样的多项式矩阵 MRqk×(k+)\mathbf{M} \leftarrow \mathcal{R}_q^{k \times (k+\ell)},在多项式时间内寻找非零多项式向量 vRqk+\mathbf{v} \in \mathcal{R}_q^{k+\ell},使得矩阵乘积满足 Mv=0(modq)\mathbf{M}\mathbf{v} = \mathbf{0} \pmod{q},且其向量范数受到严格约束:0<vβ0 < \|\mathbf{v}\|_\infty \le \beta

在量子随机预言机模型(QROM)下,ML-DSA 方案通过紧密的安全归约,证明了方案在自适应选择消息攻击下的存在性不可伪造(EUF-CMA 安全性)。


3. Fiat-Shamir with Aborts 框架与算法全流程解析

在传统的基于离散对数的 Schnorr 签名或椭圆曲线数字签名体系中,签名者首先选取临时随机数 yZpy \leftarrow \mathbb{Z}_p,生成承诺 R=gyR = g^y,收到挑战值 cc 后计算响应 z=y+cs(modp)z = y + c \cdot s \pmod p。由于 yy 是有限群上的全均匀随机数,zz 在整个模群空间中同样呈现完全均匀的统计分布,因而不会泄露长期私钥 ss 的任何信息。

然而,在基于格的数字签名体制中,为了满足短向量约束,运算必须在截断的系数空间内展开。如果签名者直接计算响应向量 z=y+cs1\mathbf{z} = \mathbf{y} + c \cdot \mathbf{s}_1,由于私钥 s1\mathbf{s}_1 的系数分布范围远小于临时随机向量 y\mathbf{y} 的采样区间,向量 z\mathbf{z} 的多项式系数分布中心将产生偏移。攻击者收集数千个有效签名后,通过简单的统计均值分析或格基约简算法(如 BKZ-2.0),即可将私钥 s1\mathbf{s}_1 的每个多项式系数完全分离恢复。

为了解决这一本质缺陷,密码学家 Vadim Lyubashevsky 提出了 Fiat-Shamir with Aborts(带中止的 Fiat-Shamir) 构造范式:签名者在较宽的均匀对称区间 [γ1+1,γ11][-\gamma_1+1, \gamma_1-1] 内采样临时随机向量 y\mathbf{y};在计算出候选响应 z\mathbf{z} 后,设置极其严格的几何边界检测门限 γ1β\gamma_1 - \beta。只有当 z\mathbf{z} 的每一个分量系数均落在不依赖于私钥偏移的核心安全区间内时,签名才被允许输出;一旦超出边界,算法立即中止(Abort)当前轮次并重置计数器重新采样。

ML-DSA 签名生成 · Fiat-Shamir with AbortsFIPS 204 拒绝采样流水线① 密钥与消息输入ρ, K, tr · s1, s2, t0μ = H(tr ∥ M)② 随机数展开ExpandMASK(ρ′, κ)掩码多项式 y③ 格矩阵乘法w = INTT(A·NTT(y))w1 = HighBits(w)④ 挑战哈希c̃ = H(μ ∥ w1)c = SampleInBall(c̃)⑤ 候选响应z = y + c·s1r0 = LowBits(w − c·s2)⑥ 拒绝采样门z, r0 范数超限即放弃并重试κ ← κ + ℓ 重试通过⑦ 提示位生成h = MakeHint(−c·t0, v)wt(h) ≤ ω⑧ 签名 σ 输出σ = (c̃, z, h)2420 B · ML-DSA-44拒绝采样消除私有向量几何偏置 · 期望迭代 E[N] ≈ 4.25(44)/ 7.15(65)

3.1 拒绝采样数学引理形式化证明

为了在数学上证明签名输出 z\mathbf{z} 不包含私钥 s1\mathbf{s}_1 的几何特征,我们对 Lyubashevsky 均匀分布拒绝采样引理进行严谨推导。

设多项式向量空间维度为 N=nN = n \cdot \ell。令目标分布 g(z)g(\mathbf{z}) 为定义在超立方体 Sγ1β1N=[γ1+β+1,γ1β1]NS_{\gamma_1-\beta-1}^N = [-\gamma_1+\beta+1, \gamma_1-\beta-1]^N 上的均匀概率分布,其概率密度函数为常数:

g(z)=1(2(γ1β)1)Ng(\mathbf{z}) = \frac{1}{(2(\gamma_1 - \beta) - 1)^N}

而对于由临时随机数 ySγ11N\mathbf{y} \leftarrow S_{\gamma_1-1}^N 与私钥偏移项 v=cs1\mathbf{v} = c\mathbf{s}_1 叠加生成的候选响应 z=y+v\mathbf{z} = \mathbf{y} + \mathbf{v},其条件分布密度函数为:

fv(z)={1(2γ11)N,zv+[γ1+1,γ11]N0,otherwisef_{\mathbf{v}}(\mathbf{z}) = \begin{cases} \frac{1}{(2\gamma_1 - 1)^N}, & \mathbf{z} \in \mathbf{v} + [-\gamma_1+1, \gamma_1-1]^N \\ 0, & \mathrm{otherwise} \end{cases}

由于已保证 v=cs1β\|\mathbf{v}\|_\infty = \|c\mathbf{s}_1\|_\infty \le \beta,对于任意落在目标区间 zSγ1β1N\mathbf{z} \in S_{\gamma_1-\beta-1}^N 内的点,均必然严格落入移动区间 v+[γ1+1,γ11]N\mathbf{v} + [-\gamma_1+1, \gamma_1-1]^N 内部。因此,定义常数缩放因子 M=(2γ112(γ1β)1)NM = \left(\frac{2\gamma_1 - 1}{2(\gamma_1 - \beta) - 1}\right)^N,在条件 z<γ1β\|\mathbf{z}\|_\infty < \gamma_1 - \beta 成立的前提下,有:

g(z)Mfv(z)=1(2(γ1β)1)N(2γ112(γ1β)1)N1(2γ11)N=1\frac{g(\mathbf{z})}{M \cdot f_{\mathbf{v}}(\mathbf{z})} = \frac{\frac{1}{(2(\gamma_1 - \beta) - 1)^N}}{\left(\frac{2\gamma_1 - 1}{2(\gamma_1 - \beta) - 1}\right)^N \cdot \frac{1}{(2\gamma_1 - 1)^N}} = 1

由此可知,在通过范数判定接受签名的条件下,输出变量 z\mathbf{z} 的条件概率密度严格等于目标均匀分布 g(z)g(\mathbf{z}),与具体的私钥平移向量 v=cs1\mathbf{v} = c\mathbf{s}_1 完全相互独立。这在信息论意义上保证了统计距离 Δ(Doutput,g)=0\Delta(D_{\mathrm{output}}, g) = 0,彻底切断了通过签名外泄私钥特征的统计通道。

3.2 核心数学辅助函数详解

FIPS 204 标准定义了一组精密的截断、取模与位提取函数,用以在保证数学安全性的同时最小化公钥与签名的网络传输体积。

1. 2的幂次舍入(Power2Round\mathrm{Power2Round}

该函数用于公钥生成阶段,将多项式向量的系数拆分为高位分量与低位分量,参数固定为 d=13d = 13

r0=rmod±2d(2d1,2d1]r_0 = r \bmod^\pm 2^d \in (-2^{d-1}, 2^{d-1}] r1=(rr0)/2dr_1 = (r - r_0) / 2^d

通过仅发布高位向量 t1\mathbf{t}_1,公钥字节体积从原始的 5.9 KB 显著缩减至 1.3 KB 至 2.5 KB。

2. 通用高低位分解(Decompose\mathrm{Decompose} / HighBits\mathrm{HighBits} / LowBits\mathrm{LowBits}

定义模数除数 α=2γ2\alpha = 2\gamma_2。对于输入系数 rZqr \in \mathbb{Z}_q,算法将其唯一分解为高位 r1r_1 与低位 r0r_0

rmodq=r1α+r0r \bmod q = r_1 \cdot \alpha + r_0

其中 r0(α/2,α/2]r_0 \in (-\alpha/2, \alpha/2],且当出现极值边界 rr0=q1r - r_0 = q - 1 时执行特殊归零修正令 r1=0,r0=r01r_1 = 0, r_0 = r_0 - 1。函数 HighBits(r,2γ2)\mathrm{HighBits}(r, 2\gamma_2) 输出高位分量 r1r_1,函数 LowBits(r,2γ2)\mathrm{LowBits}(r, 2\gamma_2) 输出低位余数 r0r_0

3. 提示位生成与恢复(MakeHint\mathrm{MakeHint} / UseHint\mathrm{UseHint}

在验签过程中,验签者仅拥有高位公钥 t12d\mathbf{t}_1 \cdot 2^d 而缺少低位分量 t0\mathbf{t}_0。提示位机制通过在签名中附加极小体积的布尔标志位矩阵 h\mathbf{h},指导验签者在边界发生跨位进位时进行精确纠偏:

MakeHint(z,r,α)={1,HighBits(r,α)HighBits(r+z,α)0,otherwise\mathrm{MakeHint}(z, r, \alpha) = \begin{cases} 1, & \mathrm{HighBits}(r, \alpha) \ne \mathrm{HighBits}(r + z, \alpha) \\ 0, & \mathrm{otherwise} \end{cases} UseHint(h,r,α)={(r1+1)modm,h=1r0>0(r11)modm,h=1r00r1,h=0\mathrm{UseHint}(h, r, \alpha) = \begin{cases} (r_1 + 1) \bmod m, & h = 1 \land r_0 > 0 \\ (r_1 - 1) \bmod m, & h = 1 \land r_0 \le 0 \\ r_1, & h = 0 \end{cases}

其中 m=(q1)/αm = (q - 1) / \alpha

4. 稀疏挑战多项式采样(SampleInBall\mathrm{SampleInBall}

将 32 字节哈希摘要 c~\tilde{c} 映射为一个特殊的单变元多项式 c(X)Rqc(X) \in \mathcal{R}_q。通过 SHAKE-256 派生的伪随机置换序列,精确确保多项式 c(X)c(X) 的 256 个系数中恰好包含 τ\tau 个非零系数(取值为 +1+11-1),其余 256τ256 - \tau 个系数严格为 0。

3.3 系数位打包与解包硬件微架构

在签名与公钥的序列化编码中,位打包(Bit-Packing)模块构成了硬件协处理器与外部主存交互的关键通道。为了消除未对齐访存引发的流水线等待,硬件微架构设计了专用的多项式位流打包状态机:

  • 响应向量 z\mathbf{z} 的位切片打包:由于候选系数 zi[γ1+β+1,γ1β1]z_i \in [-\gamma_1+\beta+1, \gamma_1-\beta-1],在编码前通过变换 zi=γ11ziz'_i = \gamma_1 - 1 - z_i 将其映射至非负整数域 [0,2γ12][0, 2\gamma_1-2]。在 ML-DSA-44 中(γ1=217\gamma_1 = 2^{17}),每个系数占用恰好 18 个二进制位;在 ML-DSA-65 与 ML-DSA-87 中(γ1=219\gamma_1 = 2^{19}),每个系数占用 20 个二进制位。硬件打包引擎采用 4 路并行位拼接树,在 64 个时钟周期内即可完成单项多项式 256 个系数的紧密字节序列化;
  • 提示位 h\mathbf{h} 的稀疏坐标压缩:提示位矩阵 h{0,1}k×256\mathbf{h} \in \{0, 1\}^{k \times 256} 绝大部分元素为 0。标准规定仅需记录 1 的列索引位置 j[0,255]j \in [0, 255],并在每个多项式分量结束处插入累加计数标志字节。硬件解包逻辑在单个时钟周期内利用前导零计数器(CLZ)直接提取有效索引,将内存读取带宽消耗降低了 80% 以上。

3.4 密钥生成算法全流程(MLDSA.KeyGen\mathrm{ML-DSA.KeyGen}

密钥生成算法以物理真随机熵源为输入,生成完整的长期公私钥对:

  1. 调用物理真随机数发生器,获取 32 字节高熵随机种子 ξQRNG(256)\xi \leftarrow \mathrm{QRNG}(256)
  2. 执行扩展哈希 SHAKE256(ξ)\mathrm{SHAKE-256}(\xi),派生三个互不相关的 32 字节种子:ρ\rho(矩阵公共种子)、ρ\rho'(私钥采样种子)以及 KK(确定性签名绑定主私钥);
  3. 运行 ExpandA(ρ)\mathrm{ExpandA}(\rho) 模块,在频域生成均匀分布的公共多项式矩阵 A^Rqk×\hat{\mathbf{A}} \in \mathcal{R}_q^{k \times \ell}
  4. 运行 ExpandS(ρ)\mathrm{ExpandS}(\rho') 模块,在均匀小整数区间 [η,η][-\eta, \eta] 内分别采样私钥多项式向量 s1Rq\mathbf{s}_1 \in \mathcal{R}_q^\ells2Rqk\mathbf{s}_2 \in \mathcal{R}_q^k
  5. 执行正向 NTT 将私钥转换至频域,计算频域矩阵向量积并逆变换回时域:t=INTT(A^NTT(s1))+s2(modq)\mathbf{t} = \mathrm{INTT}(\hat{\mathbf{A}} \circ \mathrm{NTT}(\mathbf{s}_1)) + \mathbf{s}_2 \pmod{q}
  6. 逐系数调用 2 的幂次舍入分解:(t1,t0)Power2Round(t,d)(\mathbf{t}_1, \mathbf{t}_0) \leftarrow \mathrm{Power2Round}(\mathbf{t}, d)
  7. 打包输出公钥 pk(ρ,t1)\mathrm{pk} \leftarrow (\rho, \mathbf{t}_1);计算公钥哈希 trSHAKE256(pk,64)\mathrm{tr} \leftarrow \mathrm{SHAKE-256}(\mathrm{pk}, 64);打包输出私钥 sk(ρ,K,tr,s1,s2,t0)\mathrm{sk} \leftarrow (\rho, K, \mathrm{tr}, \mathbf{s}_1, \mathbf{s}_2, \mathbf{t}_0)

3.5 签名生成算法全流程(MLDSA.Sign\mathrm{ML-DSA.Sign}

签名生成算法以私钥 sk\mathrm{sk}、待签消息 MM 以及可选的应用上下文 ctx\mathrm{ctx}(长度 255\le 255 字节)为输入:

  1. 计算上下文绑定的消息摘要:μSHAKE256(trIntegerToBits(len(ctx),8)ctxM,64)\mu \leftarrow \mathrm{SHAKE-256}(\mathrm{tr} \parallel \mathrm{IntegerToBits}(\mathrm{len}(\mathrm{ctx}), 8) \parallel \mathrm{ctx} \parallel M, 64)
  2. 派生抗碰撞随机掩码种子:ρSHAKE256(Kμrnd,64)\rho'' \leftarrow \mathrm{SHAKE-256}(K \parallel \mu \parallel \mathrm{rnd}, 64),其中 rnd\mathrm{rnd} 为 32 字节真随机数(随机化签名模式)或 32 字节全零(确定性签名模式);
  3. 初始化多项式展开计数器 κ0\kappa \leftarrow 0
  4. 进入 Fiat-Shamir 拒绝采样状态机循环
    • 步骤 a:调用掩码展开模块 yExpandMASK(ρ,κ)\mathbf{y} \leftarrow \mathrm{ExpandMASK}(\rho'', \kappa),采样临时向量 ySγ11\mathbf{y} \in S_{\gamma_1-1}^\ell;计数器自增 κκ+\kappa \leftarrow \kappa + \ell
    • 步骤 b:计算多项式矩阵承诺 wINTT(A^NTT(y))(modq)\mathbf{w} \leftarrow \mathrm{INTT}(\hat{\mathbf{A}} \circ \mathrm{NTT}(\mathbf{y})) \pmod{q}
    • 步骤 c:提取高位多项式向量 w1HighBits(w,2γ2)\mathbf{w}_1 \leftarrow \mathrm{HighBits}(\mathbf{w}, 2\gamma_2)
    • 步骤 d:计算挑战哈希值 c~SHAKE256(μw1Encode(w1),32)\tilde{c} \leftarrow \mathrm{SHAKE-256}(\mu \parallel \mathrm{w1-Encode}(\mathbf{w}_1), 32)
    • 步骤 e:由挑战哈希采样稀疏多项式 cSampleInBall(c~)c \leftarrow \mathrm{SampleInBall}(\tilde{c})
    • 步骤 f:计算候选响应向量 zy+cs1\mathbf{z} \leftarrow \mathbf{y} + c \cdot \mathbf{s}_1
    • 步骤 g:计算低位误差余数向量 r0LowBits(wcs2,2γ2)\mathbf{r}_0 \leftarrow \mathrm{LowBits}(\mathbf{w} - c \cdot \mathbf{s}_2, 2\gamma_2)
    • 步骤 h:第一重与第二重拒绝门限检查。若满足下述任一越界条件,则立即中止当前轮次并返回步骤 a:
zγ1βr0γ2β\|\mathbf{z}\|_\infty \ge \gamma_1 - \beta \quad \lor \quad \|\mathbf{r}_0\|_\infty \ge \gamma_2 - \beta
  • 步骤 i:计算提示位多项式向量 hMakeHint(ct0,wcs2+ct0,2γ2)\mathbf{h} \leftarrow \mathrm{MakeHint}(-c \cdot \mathbf{t}_0, \mathbf{w} - c \cdot \mathbf{s}_2 + c \cdot \mathbf{t}_0, 2\gamma_2)
  • 步骤 j:第三重拒绝门限检查。若满足下述任一越界条件,则立即中止当前轮次并返回步骤 a:
ct0γ2i=1kWeight(hi)>ω\|c \cdot \mathbf{t}_0\|_\infty \ge \gamma_2 \quad \lor \quad \sum_{i=1}^k \mathrm{Weight}(\mathbf{h}_i) > \omega
  1. 当所有边界判定均顺利通过时,退出循环并组装标准签名数据包:σ(c~,z,h)\sigma \leftarrow (\tilde{c}, \mathbf{z}, \mathbf{h})

3.6 签名验证算法全流程(MLDSA.Verify\mathrm{ML-DSA.Verify}

ML-DSA 验签流水线 · UseHint 高位重构FIPS 204 常数时间验证数据通路① 输入解包pk = (ρ, t1) · σ = (c̃, z, h)μ = H(pk ∥ M)② 范数预筛‖z‖∞ ≥ γ1−β 即拒绝wt(h) ≤ ω③ 矩阵扩展ExpandA(ρ) → ÂSHAKE-128 拒绝采样提前 REJECTc̃ → c 挑战④ 逐点 NTT 计算Ŵ = Â∘ẑ − ĉ∘t̂1w′ = INTT(Ŵ)⑤ UseHint 重构h[i]=0 → w1 = r1h[i]=1 → r1 ± 1提示向量 h⑥ 哈希承诺比对H(μ ∥ w1) = c̃ ?判定输出ACCEPTREJECT范数界保证 UseHint 精确还原 w1

验签算法以公钥 pk\mathrm{pk}、消息 MM、上下文 ctx\mathrm{ctx} 与待验签名 σ=(c~,z,h)\sigma = (\tilde{c}, \mathbf{z}, \mathbf{h}) 为输入,执行确定性的全同态验算:

  1. 解析公钥 (ρ,t1)(\rho, \mathbf{t}_1) 与签名元组 (c~,z,h)(\tilde{c}, \mathbf{z}, \mathbf{h})
  2. 前置范数与格式合法性校验: 检查 z\mathbf{z} 的每一个分量系数是否严格满足 z<γ1β\|\mathbf{z}\|_\infty < \gamma_1 - \beta;同时检查 h\mathbf{h} 中 1 的总计数是否不超过阈值 ω\omega。若任一条件不满足,立即拒绝签名并返回 0;
  3. 计算公钥哈希 trSHAKE256(pk,64)\mathrm{tr} \leftarrow \mathrm{SHAKE-256}(\mathrm{pk}, 64),并重构消息摘要 μ\mu
  4. 由种子 ρ\rho 展开矩阵 A^ExpandA(ρ)\hat{\mathbf{A}} \leftarrow \mathrm{ExpandA}(\rho),并由 c~\tilde{c} 重构稀疏挑战多项式 cSampleInBall(c~)c \leftarrow \mathrm{SampleInBall}(\tilde{c})
  5. 在频域执行矩阵乘法与公钥高位缩放项减法,并执行逆数论变换恢复时域近似向量:
wapprox=INTT(A^NTT(z)NTT(c)NTT(t12d))(modq)\mathbf{w}'_{\mathrm{approx}} = \mathrm{INTT}\left(\hat{\mathbf{A}} \circ \mathrm{NTT}(\mathbf{z}) - \mathrm{NTT}(c) \circ \mathrm{NTT}(\mathbf{t}_1 \cdot 2^d)\right) \pmod{q}
  1. 结合签名中携带的提示位向量 h\mathbf{h},重构高位特征多项式向量:w1UseHint(h,wapprox,2γ2)\mathbf{w}'_1 \leftarrow \mathrm{UseHint}(\mathbf{h}, \mathbf{w}'_{\mathrm{approx}}, 2\gamma_2)
  2. 重新计算挑战哈希:cSHAKE256(μw1Encode(w1),32)c' \leftarrow \mathrm{SHAKE-256}(\mu \parallel \mathrm{w1-Encode}(\mathbf{w}'_1), 32)
  3. 比较 cc' 与签名中的 c~\tilde{c}:若二者 32 字节完全一致,则签名合法(返回 1),否则判定伪造(返回 0)。

3.7 FIPS 204 标准参数集体系对比

FIPS 204 标准正式确立了三种针对不同安全等级的参数配置,其具体数学参数与物理开销对比如下:

关键技术指标符号与定义ML-DSA-44ML-DSA-65ML-DSA-87
NIST 等效安全级别Security LevelLevel 2 (对应 AES-128 / SHA-256)Level 3 (对应 AES-192 / SHA-384)Level 5 (对应 AES-256 / SHA-512)
多项式矩阵维度 (k,)(k, \ell)Matrix Dimension(4,4)(4, 4)(6,5)(6, 5)(8,7)(8, 7)
模数 qqModulus Prime83804178380417 (223213+12^{23}-2^{13}+1)8380417838041783804178380417
私钥系数界限 η\etaSecret Bound22 (取值范围 [2,2][-2, 2])44 (取值范围 [4,4][-4, 4])22 (取值范围 [2,2][-2, 2])
掩码采样范围 γ1\gamma_1Nonce Bound217=131,0722^{17} = 131,072219=524,2882^{19} = 524,288219=524,2882^{19} = 524,288
舍入分解除数 γ2\gamma_2Rounding Factor(q1)/88=95,232(q-1)/88 = 95,232(q1)/32=261,888(q-1)/32 = 261,888(q1)/32=261,888(q-1)/32 = 261,888
拒绝采样边界 β\betaBound τη\tau \cdot \eta7878196196120120
挑战多项式非零重 τ\tauChallenge Weight393949496060
提示位最大权重 ω\omegaMax 1-bits in Hint808055557575
公钥字节长度 (pk)Public Key Bytes1,3121,312 Bytes1,9521,952 Bytes2,5922,592 Bytes
私钥字节长度 (sk)Secret Key Bytes2,5602,560 Bytes4,0324,032 Bytes4,8964,896 Bytes
标准签名字节长度 (σ\sigma)Signature Bytes2,4202,420 Bytes3,3093,309 Bytes4,6274,627 Bytes
单次签名平均重试轮数Expected Iterations4.25\approx 4.25 次循环5.10\approx 5.10 次循环3.85\approx 3.85 次循环

4. 23位 Solinas 素数 NTT 硬件加速微架构

在 ML-DSA 的硬件协处理器实现中,多项式环上的卷积乘法占据了整个算法执行时钟周期的 60% 至 75%。在签名与验签流程中,矩阵乘法 Ay\mathbf{A}\mathbf{y}Az\mathbf{A}\mathbf{z} 分别涉及 k×k \times \ell 次多项式点值乘法。以 ML-DSA-87 为例,8×7=568 \times 7 = 56 次多项式乘法若采用经典学校乘法,单次签名将需要 56×256236756 \times 256^2 \approx 367 万次乘加操作;而通过构建专用的 23 位 Solinas NTT 流水线加速微架构,运算量被大幅压缩至 56×(256log2256)=114,68856 \times (256 \log_2 256) = 114,688 次蝶形运算,运算效率提升数十倍。

ML-DSA 23 位 NTT 蝶形单元 · q = 2²³ − 2¹³ + 1A · 单级蝶形数据通路A[u] 23bA[v] 23bζᵏ ROMDSP 乘法 P = A[v]×ζᵏ46 位输出Solinas 模约简V = P_l + (P_h≪13) − P_h移位线网 · 无除法模加 · 模减A′=A[u]±V mod qA′[u] A′[v]输出寄存器B · 8 点 Radix-2 流水占用时钟Pass 1Pass 2Pass 3c₁–c₄蝶形×4c₅–c₈蝶形×4c₉–c₁₂蝶形×4每 Pass 1 周期 / 蝶形对输入位逆序 · 输出自然序q = 8,380,417 为广义梅森素数 · Solinas 约简仅需 1 移位 + 1 加减 · 对比 Barrett 省约 50% DSP

4.1 Cooley-Tukey 与 Gentleman-Sande 统一蝶形数据通路

为了最大化复用硬件电路并降低芯片硅片面积,硬件微架构设计了正向 NTT 与逆向 INTT 双模一体化的高通量蝶形单元:

  • 正向 NTT(Cooley-Tukey 蝶形结构):输入为时域多项式序列,输出为频域点值表示。其基本蝶形变换逻辑定义为:
U=A+Bζk(modq)U = A + B \cdot \zeta^k \pmod{q} V=ABζk(modq)V = A - B \cdot \zeta^k \pmod{q}
  • 逆向 INTT(Gentleman-Sande 蝶形结构):输入为频域点值序列,输出为时域多项式。其基本变换逻辑定义为:
U=(A+B)(modq)U = (A + B) \pmod{q} V=(AB)ζk(modq)V = (A - B) \cdot \zeta^{-k} \pmod{q}

在 8 级流水线变换调度中,256 个多项式系数被组织为 8 轮计算,每轮包含 128 次蝶形操作。通过复用同一组 23 位有符号乘法器与加减法算子,硬件控制单元仅需通过反转数据输入端口的选通 MUX,即可在正向 NTT 与逆向 INTT 模式之间实现单时钟周期无缝切换。

4.2 基于 Solinas 同余特性的零乘法器模约简推导

在传统的 NTT 硬件加速器中,每次 23 位整数乘法后都会产生一个 46 位的双字中间乘积 P=ABP = A \cdot B。若采用标准的 Montgomery 约简或 Barrett 约简算法,通常需要额外增加 2 个专用的 DSP48E2 乘法器来计算模数除法商项,这在 FPGA 和 ASIC 实现中造成了极大的硬件面积浪费与功耗开销。

而在 ML-DSA 中,充分利用 Solinas 素数 q=223213+1q = 2^{23} - 2^{13} + 1 的特殊代数性质,可以构造出完全不需要额外硬件乘法器的超低延迟移位-加法模约简电路。

设 46 位无符号中间乘积 PP 按照 23 位位宽划分为高位分量 PhP_h 与低位分量 PlP_l

P=Ph223+PlP = P_h \cdot 2^{23} + P_l

根据模 qq 的同余关系 2232131(modq)2^{23} \equiv 2^{13} - 1 \pmod{q},可将 2232^{23} 直接代换展开:

PPh(2131)+Pl(modq)P \equiv P_h \cdot (2^{13} - 1) + P_l \pmod{q} PPl+(Ph13)Ph(modq)P \equiv P_l + (P_h \ll 13) - P_h \pmod{q}

分析上述约简式可知,该运算在硬件逻辑中仅包含:

  1. 零成本逻辑移位Ph13P_h \ll 13 仅为信号线的高低位物理硬连线映射,不消耗任何查找表(LUT)或逻辑门;
  2. 多级加减法树:仅需一个 36 位进位保留加法器(CSA)与一个 36 位减法器;
  3. 常数边界修正:对计算结果 VV 进行快速范围折叠(若 V<0V < 0 则加上 qq;若 VqV \ge q 则减去 qq)。

通过该微架构创新,单个蝶形运算单元所占用的硬件乘法器(DSP48E2)数量从传统的 3 个严格削减为 1 个,DSP 资源利用率优化了 66.7%,组合逻辑关键路径延迟缩短了 42%,在主流 16nm/28nm 工艺下工作频率稳定达到 250 MHz 以上。

4.3 无冲突双端口乒乓 SRAM 存储拓扑

在基-2 蝶形网络中,第 mm 级变换(m[0,7]m \in [0, 7])需要同时并发读取地址间隔为 27m2^{7-m} 的两个多项式系数。若采用单一单端口或双端口 RAM,将在特定级数引发严重的存储体访问冲突(Bank Conflict),导致流水线发生停顿。

微架构设计了全并行的双 Bank 乒乓存储子系统:

  • Bank 0:用于交替存放所有偶数物理地址索引的系数;
  • Bank 1:用于交替存放所有奇数物理地址索引的系数;
  • 位反转地址生成单元(AGU):根据当前级数计数器 mm 与蝶形计数器 jj,利用异或门网络动态生成无冲突的读写物理地址,确保在任意时钟周期内,读取端口 A 与写入端口 B 均分布在物理隔离的 RAM 块上,实现了每个时钟周期持续吞吐 1 个完整蝶形运算的满负荷流水线。

4.4 流水线级间数据交织与 AXI4-Stream 高速总线控制

在系统级集成中,为了避免算术加速核因数据搬运而产生停顿,硬件加速器采用了深层次的级间数据交织与标准总线封装设计:

  • 8 级流水线状态机控制:内部控制器维护有限状态机,按照预定状态序列流转(IDLE \to AGU_INIT \to STAGE_EXEC \to TWIDDLE_FETCH \to REDUCE \to WRITEBACK)。在每个变换阶段,地址生成单元自动更新步长索引,消除了所有软件循环指令的开销;
  • 精确时钟周期预算:单次 256 点正向 NTT 的计算时间由下式精确确定,其中 Pway=4P_{\mathrm{way}} = 4 为并发蝶形单元数量,Lpipe=16L_{\mathrm{pipe}} = 16 为跨级流水线寄存器填充延迟,总耗时为 272 个时钟周期:
TNTT=128×8Pway+Lpipe=10244+16=272T_{\mathrm{NTT}} = \frac{128 \times 8}{P_{\mathrm{way}}} + L_{\mathrm{pipe}} = \frac{1024}{4} + 16 = 272
  • AXI4-Stream 零拷贝 DMA 接口:加速核通过 AXI4-Stream 协议与主控 SoC 互联,集成异步跨时钟域 FIFO 与硬件反压流控机制,支持主存与片上 Block RAM 之间的线速突发传输,将数据搬运时延降至总体执行时间的 5% 以内。

5. 物理侧信道脆弱性与攻击面深度分析

虽然 ML-DSA 在纯数学理论层面具备坚实的抗量子安全性证明,但在实体芯片与嵌入式设备运行过程中,芯片内部数十万个晶体管在电平翻转时释放的物理瞬态泄漏(包括动态功耗消耗、瞬态电磁辐射以及精确时钟延迟),为物理侧信道攻击提供了丰富的物理观测维度。

5.1 拒绝采样与被拒绝签名挑战攻击机理

在 FIPS 204 签名生成过程中,当 z=y+cs1\mathbf{z} = \mathbf{y} + c \cdot \mathbf{s}_1 的无穷范数超出安全边界 γ1β\gamma_1 - \beta 时,该轮中间计算结果将被立即丢弃。传统观点曾认为,未输出到系统外部的被拒绝数据不会对系统安全造成威胁。然而,近期密码硬件顶刊(CHES / TCHES)的深度研究证实,被拒绝的签名轮次是极其危险的信息泄露源。

若攻击者利用单轨迹简单功耗分析(SPA)或近场高灵敏度电磁探针(SEMA),探测到了签名执行过程中在哪一个轮次触发了中止重试,并同时捕获到了该轮次由公开哈希生成的挑战多项式 cc

i[0,255],yi+(cs1)iγ1β\exists i \in [0, 255], \quad \left|y_i + (c \cdot \mathbf{s}_1)_i\right| \ge \gamma_1 - \beta

由于临时随机多项式系数 yiy_i 在区间 [γ1+1,γ11][-\gamma_1+1, \gamma_1-1] 内服从严格的对称均匀分布,发生越界拒绝的先验条件直接取决于乘积项 (cs1)i(c \cdot \mathbf{s}_1)_i 的数值大小与正负极性:当 (cs1)i>0(c \cdot \mathbf{s}_1)_i > 0 时,正向越界的概率显著攀升;当 (cs1)i<0(c \cdot \mathbf{s}_1)_i < 0 时,负向越界的概率显著攀升。

攻击者收集数十次发生过拒绝重试的挑战多项式 c(1),c(2),,c(M)c^{(1)}, c^{(2)}, \dots, c^{(M)} 后,可将线性不等式约束组建模为一个维度为 M+256M+256 的对偶格基矩阵 B\mathbf{B}

B=(wCIMwqI2560)\mathbf{B} = \begin{pmatrix} w \mathbf{C} & \mathbf{I}_{M} \\ w q \mathbf{I}_{256} & \mathbf{0} \end{pmatrix}

其中 CZM×256\mathbf{C} \in \mathbb{Z}^{M \times 256} 为挑战多项式循环矩阵的堆叠,ww 为加权缩放因子。通过 Babai 最近平面算法(Nearest Plane Algorithm)配合浮点 CVP 格基约简求解器,攻击者能够在数秒钟内以接近 100% 的成功率完整重构出私钥向量 s1\mathbf{s}_1 的全部多项式系数。

5.2 舍入与非线性操作中的汉明距离功耗泄漏

ML-DSA 内部集成了大量的非线性位操作函数,包括 HighBits\mathrm{HighBits}LowBits\mathrm{LowBits} 以及 MakeHint\mathrm{MakeHint}。在 CMOS 数字集成电路中,内部触发器与总线寄存器从状态 DprevD_{\mathrm{prev}} 更新至新状态 DnextD_{\mathrm{next}} 时的动态功耗消耗与数据汉明距离成正比:

PdynamicHD(Dprev,Dnext)=HW(DprevDnext)P_{\mathrm{dynamic}} \propto \mathrm{HD}(D_{\mathrm{prev}}, D_{\mathrm{next}}) = \mathrm{HW}(D_{\mathrm{prev}} \oplus D_{\mathrm{next}})

由于低位误差项 r0=LowBits(wcs2,2γ2)r_0 = \mathrm{LowBits}(\mathbf{w} - c \cdot \mathbf{s}_2, 2\gamma_2) 包含了私钥 s2\mathbf{s}_2 与挑战 cc 的直接线性卷积结果,如果非线性提取逻辑在未受保护的明文寄存器上执行,攻击者通过在芯片外部采集数千条功耗曲线并执行相关功耗分析(CPA),即可轻松分离出私钥系数的每个关键比特位。

5.3 物理故障注入攻击模型

物理故障注入攻击通过向运行中的密码芯片施加瞬态极端物理应力(如纳秒级时钟毛刺、供电电压瞬间跌落或近红外微米级激光脉冲),对 ML-DSA 构成如下致命威胁:

  1. 范数检测跳过攻击(Bypass Norm Check):在签名生成的边界判定阶段(步骤 4.h),攻击者通过单脉冲时钟毛刺破坏条件跳转指令的执行,强制使本应被丢弃的越界签名数据包 (c~,z,h)(\tilde{c}, \mathbf{z}, \mathbf{h}) 作为有效签名输出。由于该签名处于极限边界之外,攻击者仅需获取 1 至 2 个故障签名,即可直接通过线性方程求解出私钥;
  2. 临时随机数碰撞退化(Nonce Reuse / Collapse):在 ExpandMASK\mathrm{ExpandMASK} 采样阶段,通过物理扰动篡改计数器 κ\kappa 或种子 ρ\rho'',诱导签名芯片在针对不同消息 MAM_AMBM_B 签名时采用了完全相同的临时随机向量 y\mathbf{y}。攻击者获得两个签名 (zA,cA)(\mathbf{z}_A, c_A)(zB,cB)(\mathbf{z}_B, c_B) 后,直接执行多项式减法:
zAzB=(y+cAs1)(y+cBs1)=(cAcB)s1(modq)\mathbf{z}_A - \mathbf{z}_B = (\mathbf{y} + c_A \cdot \mathbf{s}_1) - (\mathbf{y} + c_B \cdot \mathbf{s}_1) = (c_A - c_B) \cdot \mathbf{s}_1 \pmod{q}

由于差值多项式 cAcBc_A - c_B 在环 Rq\mathcal{R}_q 中以极高概率存在乘法逆元,攻击者通过一次简单的多项式求逆与点乘即可瞬间恢复私钥:s1=(zAzB)(cAcB)1(modq)\mathbf{s}_1 = (\mathbf{z}_A - \mathbf{z}_B) \cdot (c_A - c_B)^{-1} \pmod{q}


6. 高阶掩码与物理故障防御工程实现

为了全面封堵侧信道泄漏与物理故障注入威胁,必须在硬件微架构中实施横跨算术域与布尔域的混合高阶掩码技术、常数时间流水线调度控制以及双轨锁步硬件冗余防护。

ML-DSA 一阶掩码双轨微架构 · 抗 DPA / 故障注入① 掩码拆分x⁽⁰⁾ = x − r · x⁽¹⁾ = rQRNG 新鲜随机数② 轨道 0 · Share x⁽⁰⁾独立线性/非线性运算SecAND 组件③ 轨道 1 · Share x⁽¹⁾与轨道 0 时序交错SNI 组合安全④ 公开线重组w = x⁽⁰⁾ ⊕ x⁽¹⁾仅此处出现真值⑤ 双轨锁步比较反相影子路径校验Δt ≤ 1 周期毛刺检测⑥ 硬件零化失配即清空密钥DPA / CPA 防护原理单轨功耗统计独立E[轨0·轨1] = 0一阶探测安全 d=11 亿条追踪不可泄密故障注入 → 即时零化非线性 A2B 门经 SecAND 掩码化 · 掩码份额在整条算术轨内不与真值共轨

6.1 跨代数域的算术到布尔混合掩码体系

高阶掩码技术的核心思想是将芯片内部所有敏感变量与私钥参数切分为 d+1d+1 个统计独立的随机份额(Shares)。对于任意敏感多项式系数 xZqx \in \mathbb{Z}_q,一阶算术掩码将其拆分为两个份额:

x=x(0)+x(1)(modq)x = x^{(0)} + x^{(1)} \pmod{q}

其中 x(0)Zqx^{(0)} \leftarrow \mathbb{Z}_q 为片上注入的高熵真随机数,而 x(1)=(xx(0))modqx^{(1)} = (x - x^{(0)}) \bmod q

  • 线性层的高效掩码处理:对于多项式加法、减法以及正逆数论变换(NTT/INTT),由于这些运算满足线性和同态性质,算法可以直接对各个份额独立执行硬件运算:
NTT(x)=NTT(x(0))+NTT(x(1))(modq)\mathrm{NTT}(x) = \mathrm{NTT}(x^{(0)}) + \mathrm{NTT}(x^{(1)}) \pmod{q}

硬件中配置两个物理隔离的 NTT 蝶形数据通路并行运算,确保在整个执行时序中,任意单点电路节点的功耗波动与敏感私钥均不存在一阶统计相关性(互相关数学期望 E[TrATrB]=0\mathbb{E}[Tr_A \cdot Tr_B] = 0)。

  • 非线性层的 A2B 转换流水线:由于 HighBits\mathrm{HighBits}LowBits\mathrm{LowBits}MakeHint\mathrm{MakeHint} 涉及底层的按位逻辑提取,必须将模 qq 的算术加法份额 x(0)+x(1)modqx^{(0)} + x^{(1)} \bmod q 转换为异或布尔份额 x=y(0)y(1)x = y^{(0)} \oplus y^{(1)}。 硬件中集成了基于 Goubin-Coron 算法优化的对数级深度 A2B 转换网络。在转换过程中,每一个非线性逻辑门均由安全逻辑与门(SecAND)构成:
SecAND(a0,a1,b0,b1,r)    {c0=(a0b0)rc1=(a1b1)(a0b1)(a1b0)r\mathrm{SecAND}(a_0, a_1, b_0, b_1, r) \implies \begin{cases} c_0 = (a_0 \land b_0) \oplus r \\ c_1 = (a_1 \land b_1) \oplus (a_0 \land b_1) \oplus (a_1 \land b_0) \oplus r \end{cases}

其中 rr 为实时注入的刷新真随机比特。该逻辑在从不将两份随机份额在明文中合并的前提下,直接计算出高位分量 w1\mathbf{w}_1 的布尔掩码份额,彻底阻断了非线性操作中的功耗指纹泄漏。

6.2 随机数生成器物理熵源与健康测试集成

高阶掩码与随机化签名的有效性完全取决于注入熵源的物理真随机品质。系统微架构直接集成了基于真空态微观量子涨落效应的 1Gbps 物理速率量子随机数发生器(QRNG)真熵内核:

  • 纳秒级连续高熵供给:物理光电探测芯片经超低噪声跨阻放大器(TIA)与 8 位高速 ADC 数字化后,以 1Gbps 的物理线速输出高熵高斯白噪声流,经片上 Toeplitz 矩阵哈希后生成严格均匀分布的真随机比特流;
  • NIST SP 800-90B 实时硬件门禁监测:在随机数流输入掩码刷新网络之前,专用硬件看门狗模块持续执行自适应比例测试(Adaptive Proportion Test, APT)与重复计数值测试(Repetition Count Test, RCT)。一旦物理熵源发生漂移或遭受外部电磁钳位攻击,门禁逻辑在 10 个时钟周期内切断密钥运算并产生硬件报警,彻底杜绝了因熵源退化引发的掩码穿透漏洞。

6.3 常数时间拒绝采样调度与虚构循环填充

针对被拒绝签名带来的侧信道风险,硬件状态机实施了固定循环周期的伪操作填充(Dummy Cycle Padding)机制:

  • 签名协处理器被配置为强制执行固定的最大重试轮数 NfixedN_{\mathrm{fixed}}(例如对于 ML-DSA-44 设定 Nfixed=8N_{\mathrm{fixed}} = 8);
  • 当状态机在第 ii 轮(iNfixedi \le N_{\mathrm{fixed}})首次成功通过所有范数检测时,控制器将合法签名数据转存入受保护的内部影子寄存器;
  • 在后续剩余的 NfixediN_{\mathrm{fixed}} - i 轮迭代中,硬件继续调度伪随机种子执行完整的矩阵向量多项式乘法与虚构的拒绝采样计算,保持全芯片功耗波形包络与真实运算完全一致;
  • 外部总线接口仅在第 NfixedN_{\mathrm{fixed}} 轮完全结束后统一释放签名结果。该机制彻底切断了执行时间、时钟周期数以及功耗轨迹段落与私钥汉明权重之间的物理关联。

6.4 四重纵深物理故障防御机制

在芯片硬件微架构中,部署了全方位的硬件抗故障防护逻辑:

  1. 环境异常敏感传感器阵列:集成片上纳秒级时钟毛刺检测器、电源电压欠压突变监测器以及覆盖整个芯片表面的顶层有源防护金属网(Active Shield Mesh),一旦感知到物理探针接触或异常物理脉冲,立即触发不可屏蔽的硬件安全中断;
  2. 双轨锁步状态机(Dual-Core Lockstep FSM):范数判定、边界检查以及循环计数器由两个物理布局对称隔离的独立硬件核并行计算,并在每一个时钟周期执行逐位异或比对。在物理版图布局布线(P&R)中,主核与从核采用倒置对称与对角交叉放置,并插入随机空操作周期,彻底瓦解试图通过单点激光同时破坏双核的同模故障攻击;
  3. 签名后自验证硬件闭环(Sign-Then-Verify Loop):在签名正式输出至总线之前,片上集成的超高速硬件验签引擎在 12 万时钟周期内对新生成的候选签名执行一次硬件全流程自验。若验签失败,证明计算过程中注入了未知物理扰动,系统立即拒绝输出并封锁端口;
  4. 单时钟瞬态自毁机制(Hardware Zeroize):在发生不可恢复的故障违规事件时,专用硬件自毁电路在一个时钟周期内向存储私钥、随机种子与敏感中间变量的多端口 Block RAM 注入高熵物理随机数并全片擦除,从物理上杜绝私钥的任何残留。

7. 软硬件协同设计与性能基准评测

为了客观评估 ML-DSA 在真实工程环境下的计算性能与资源开销,我们在异构嵌入式平台与高性能密码板卡上进行了全维度的软硬件协同评测。

7.1 实验平台与加速优化配置

评测覆盖了两类典型计算架构:

  1. FPGA 硬件协处理器:基于 28nm 工艺的 Xilinx Zynq-7000 与 16nm UltraScale+ 芯片,配置专用 23 位 Solinas NTT 加速核、AXI4-Stream 零拷贝 DMA 引擎以及 1Gbps 物理速率的片上量子随机数发生器(QRNG)真熵接口;
  2. ARM 嵌入式微处理器:基于 32 位 Cortex-A7 与 64 位 Cortex-A53/A72 处理器,采用 ARM NEON 向量指令集对多项式系数重排与加减约简进行汇编级深度优化。

在 ARM NEON 汇编优化中,我们利用 vld4q_u32 四路交织加载指令解决系数非连续排布瓶颈,并利用 vmlaq_u32 向量乘加与 vsubq_u32 向量减法指令构建 4 路并行的向量化 Solinas 约简管线。在工程实践中,我们严格遵循全套已知答案测试(KAT)验证流程,自研 PQC IP 核在 193/193 组 KAT 测试向量(涵盖 ML-KEM、ML-DSA 各级别全部已知答案测试用例)下实现 100% 全数比对通过。通过软硬件协同流水线优化,在 ARM 架构边缘节点上实现了相比纯 C 参考实现 6.7 至 8.9 倍的端到端签名加速比。

7.2 FPGA 硬件资源占用与吞吐量评估

下表给出了 ML-DSA 三个标准安全级别在 Xilinx Zynq UltraScale+(工作时钟频率 250 MHz)上的综合资源消耗与实测延迟数据:

算法规格与安全等级LUT 查找表FF 触发器BRAM (36Kb)DSP48E2 乘法器密钥生成延迟签名生成延迟签名验证延迟签名吞吐量 (Ops/sec)
ML-DSA-44 (Level 2)24,65024,65019,32019,32018.518.5161618.2μs18.2\,\mu\mathrm{s}96.4μs96.4\,\mu\mathrm{s}41.8μs41.8\,\mu\mathrm{s}10,37310,373
ML-DSA-65 (Level 3)32,18032,18026,45026,45026.026.0242431.5μs31.5\,\mu\mathrm{s}158.2μs158.2\,\mu\mathrm{s}68.4μs68.4\,\mu\mathrm{s}6,3216,321
ML-DSA-87 (Level 5)43,90043,90035,80035,80034.534.5323248.7μs48.7\,\mu\mathrm{s}224.6μs224.6\,\mu\mathrm{s}99.1μs99.1\,\mu\mathrm{s}4,4524,452

得益于 Solinas 模约简技术的应用,DSP48E2 乘法器的占用量被严格限制在 16 至 32 个以内,使得整套 ML-DSA 硬件引擎能够轻松集成于中低端边缘 FPGA 乃至安全芯片的加密扩展空间中。

7.3 后量子签名算法与传统公钥体系多维对比

为了明确 ML-DSA 在实际工程选型中的定位,我们将 ML-DSA 与经典公钥算法(RSA-2048、ECDSA-P256、SM2)以及同属 NIST 标准的哈希签名算法 SLH-DSA 进行了全方位横向对比:

算法体制密码学类型公钥大小 (Bytes)签名大小 (Bytes)硬件签名周期 (k-cycles)硬件验签周期 (k-cycles)抗量子安全性核心数学困难性
RSA-2048传统经典公钥2562562562562,100\approx 2,10065\approx 65否 (Shor 可破)大整数因数分解
ECDSA-P256传统经典公钥64646464180\approx 180240\approx 240否 (Shor 可破)椭圆曲线离散对数
SM2 (256-bit)传统国家商密64646464175\approx 175230\approx 230否 (Shor 可破)SM2 椭圆曲线难题
ML-DSA-44后量子标准1,3121,3122,4202,42024\approx 2410\approx 10是 (128-bit PQ)模块格 M-LWE / M-SIS
ML-DSA-65后量子标准1,9521,9523,3093,30939\approx 3917\approx 17是 (192-bit PQ)模块格 M-LWE / M-SIS
ML-DSA-87后量子标准2,5922,5924,6274,62756\approx 5625\approx 25是 (256-bit PQ)模块格 M-LWE / M-SIS
SLH-DSA-128f后量子标准323217,08817,0883,850\approx 3,850290\approx 290是 (128-bit PQ)哈希函数抗原像与碰撞

通过对比可见:

  • 在硬件计算效率方面,ML-DSA 展现出了极高的速度优势,其硬件验签周期比经典 ECDSA/SM2 快一个数量级以上,签名周期快近 5 倍;
  • 与基于哈希树的 SLH-DSA 相比,ML-DSA 的签名长度缩短了 85% 以上,计算延迟低两个数量级,是高并发网络握手(如 TLS 握手、IPsec 隧道建立、代码固件签名验证)的最优选择;
  • 虽然 ML-DSA 的公钥与签名长度(约 1.3 ~ 3.3 KB)大于传统 ECC 算法,但这一体积完全在现代网络 MTU(通常为 1500 字节,可通过 IP 分片或双数据包传输)与 X.509 扩展字段的承受范围之内。

8. 标准协议演进与工程迁移落地路径

在将既有信息系统向 FIPS 204 标准迁移的过程中,必须统筹考虑标准协议规范的演进细节、混合证书体系的构建以及与现行商用密码基础设施的无缝兼容。

8.1 FIPS 204 正式标准与第三轮规范的关键差异

在将既有系统迁移至 FIPS 204 时,密码工程师必须高度警惕正式版(Final FIPS 204)与前期 CRYSTALS-Dilithium Round 3 规范之间的协议级差异:

  1. 上下文与域分离前缀(Domain Separation):FIPS 204 强制在消息摘要哈希计算中注入单字节长度编码与上下文参数 ctx\mathrm{ctx},彻底防止了跨协议签名重放攻击;
  2. 纯粹确定性与随机化签名的标准化接口:FIPS 204 明确定义了以随机种子 rnd\mathrm{rnd} 为入参的标准 API,推荐在侧信道防御环境下一律采用包含物理真随机数的随机化签名模式(Hedged / Randomized Mode),以天然打乱功耗分析轨迹;
  3. 编码格式对齐:对多项式向量压缩打包(Bit-Packing)算法中的字节排列顺序进行了严格规范,确保不同语言与硬件平台间的二进制完全互通。

8.2 X.509 双算法混合证书体系构建

鉴于传统密码合规要求与后量子过渡期的安全性考量,直接停用传统商密算法是不现实的。目前主流的迁移实践采用 X.509 复合数字证书(Composite / Hybrid Certificates) 架构:

  • 主体公钥信息(SubjectPublicKeyInfo):并行封装传统公钥(如 SM2 / ECDSA)与 ML-DSA 公钥;
  • 签名生成机制:发证机构(CA)分别利用两种算法对证书主体进行签名,并将第二条后量子签名打包封装于自定义扩展项(如 ITU-T X.509 AlternativeSignatureValue);
  • 双重验签通道:受信任端在建立连接时同时验证双算法签名,只有当传统商密与 ML-DSA 均验证通过时才确立信任链。该方案在满足现有政策合规的同时,提供了对量子计算威胁的前向免疫能力。

8.3 密码资产盘点与平滑演进体系

在产业级工程落地中,企业应遵循三步演进路径:

  1. 密码资产清点(CBOM 构建):自动化扫描现有业务系统中的硬编码公钥算法、证书链及通信网关,形成完整的密码物料清单;
  2. 密码机与网关利旧升级:依托成熟的硬件密码模块(如服务器密码机、IPsec/TLS VPN 网关),通过微码更新或插入专用 PQC 加速卡的方式,以非侵入式架构为现有业务提供后量子签名支撑;
  3. 知识产权与合规保障:在技术演进中,结合团队在底层硬件加速、量子随机数与抗侧信道防护方面积累的 13 项授权专利技术底座,确保演进方案在自主可控、工程合规与长期安全上的高度统一。

9. 参考文献

  1. National Institute of Standards and Technology. Module-Lattice-Based Digital Signature Standard (FIPS 204). NIST Federal Information Processing Standards Publication, August 2024. (https://csrc.nist.gov/pubs/fips/204/final)
  2. National Institute of Standards and Technology. Module-Lattice-Based Digital Signature Standard Specification. NIST FIPS 204 PDF Release, August 2024. (https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.204.pdf)
  3. National Institute of Standards and Technology. Module-Lattice-Based Key-Encapsulation Mechanism Standard (FIPS 203). NIST FIPS Publication, August 2024. (https://csrc.nist.gov/pubs/fips/203/final)
  4. National Institute of Standards and Technology. Stateless Hash-Based Digital Signature Standard (FIPS 205). NIST FIPS Publication, August 2024. (https://csrc.nist.gov/pubs/fips/205/final)
  5. National Institute of Standards and Technology. Post-Quantum Cryptography Standardization Project. NIST Information Technology Laboratory, 2024. (https://csrc.nist.gov/Projects/post-quantum-cryptography)
  6. J. Wang, M. Ngo, et al. Single-Trace Side-Channel Attacks on CRYSTALS-Dilithium: Myth or Reality? IACR Cryptology ePrint Archive, Report 2024/1817, 2024. (https://eprint.iacr.org/2024/1817)
  7. A. Ravi, S. Sinha, et al. A Single Trace Fault Injection Attack on Hedged CRYSTALS-Dilithium. IACR Cryptology ePrint Archive, Report 2024/238, 2024. (https://eprint.iacr.org/2024/238)
  8. H. Zhang, Y. Chen, et al. ML-DSA-OSH: An Efficient, Open-Source Hardware Implementation of ML-DSA. IACR Cryptology ePrint Archive, Report 2025/2337, 2025. (https://eprint.iacr.org/2025/2337)
  9. P. Pessl, L. Rossi, et al. Rejected Signatures’ Challenges Pose New Challenges: Key Recovery of CRYSTALS-Dilithium via Side-Channel Attacks. IACR Transactions on Cryptographic Hardware and Embedded Systems (TCHES), 2025. (https://tches.iacr.org/index.php/TCHES/article/view/12430)
  10. S. Banerjee, C. Juvekar, et al. A Unified Hardware Accelerator for Fast Fourier Transform and Number Theoretic Transform. arXiv preprint arXiv:2504.11124, 2025. (https://arxiv.org/abs/2504.11124)
Share:
Back to Blog

Related Posts

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

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

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

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

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

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

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