CRYSTALS-Dilithium 后量子数字签名算法
字数 1387 2025-10-30 08:32:20
CRYSTALS-Dilithium 后量子数字签名算法
题目描述
CRYSTALS-Dilithium 是一种基于格论困难问题的后量子数字签名算法,旨在抵御量子计算机的攻击。它通过多项式环上的运算生成密钥对,并利用"Fiat-Shamir启发式"将交互式证明转化为非交互式签名。题目要求理解其密钥生成、签名生成和验证的数学原理与步骤,重点包括多项式运算、拒绝采样和安全性设计。
解题过程
-
数学基础准备
- 环结构:Dilithium 在环 \(R_q = \mathbb{Z}_q[X]/(X^n + 1)\) 上操作,其中 \(n=256\)(多项式次数),\(q\) 是模数(如 \(2^{23} - 2^{13} + 1\))。多项式系数在 \([-q/2, q/2)\) 范围内运算。
- 难点问题:安全性基于模块化短整数解问题(MLWE)和模块化短整数独立向量问题(MSIS),攻击者需从随机矩阵和噪声中恢复秘密向量。
-
密钥生成
- 步骤1:生成随机种子 \(\rho\),扩展为矩阵 \(A \in R_q^{k \times l}\)(公钥基础矩阵)。
- 步骤2:采样秘密向量 \(s_1 \in R_q^l\) 和 \(s_2 \in R_q^k\),其系数服从小范围分布(如 \([-η, η]\)),计算 \(t = A s_1 + s_2\)。
- 步骤3:公钥为 \((ρ, t)\),私钥为 \((ρ, s_1, s_2)\)。私钥需哈希处理以绑定公钥防篡改。
-
签名生成(Fiat-Shamir范式)
- 步骤1:采样随机掩码 \(y \in R_q^l\),其系数范围大于私钥(如 \([-γ_1, γ_1]\)),计算 \(w = A y\)。
- 步骤2:哈希消息 \(μ\) 和 \(w\) 得到挑战多项式 \(c \in R_q\),其少量系数为 ±1,其余为 0。
- 步骤3:计算 \(z = y + c s_1\)。若 \(z\) 系数超出安全范围 \([γ_1 - β, γ_1 - β]\)(\(β\) 为阈值),则拒绝并重新采样 \(y\)(拒绝采样防信息泄漏)。
- 步骤4:计算 \(h = c s_2\),生成提示 \(h\) 的低位比特以减少签名大小。最终签名为 \((z, h, c)\)。
-
签名验证
- 步骤1:从 \(h\) 恢复 \(w' = A z - c t\) 的近似值。
- 步骤2:检查 \(z\) 系数是否在范围 \([γ_1 - β, γ_1 - β]\) 内,否则拒绝。
- 步骤3:重新哈希 \((μ, w')\) 得到 \(c'\),验证 \(c' = c\) 且提示 \(h\) 与计算一致。
-
安全性设计要点
- 拒绝采样:确保签名分布与私钥无关,避免侧信道攻击。
- 参数选择:平衡签名大小、速度与安全级别(如安全等级3对应128比特量子安全性)。
- 优化:使用NTT(数论变换)加速多项式乘法,减少计算开销。
通过以上步骤,Dilithium 实现了高效且抗量子攻击的数字签名,已被NIST选为后量子密码标准之一。