CRYSTALS-Dilithium 与 Falcon 签名
比较 NIST 标准化的基于格的数字签名方案
CRYSTALS-Dilithium 与 Falcon 签名 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。
后量子签名的需求
RSA 和 ECDSA 签名会被 Shor 算法破解。后量子签名必须在以下场景中替代它们:TLS 证书、代码签名、电子邮件签名(S/MIME、PGP)以及软件更新身份验证。NIST 已将两种基于格的方案标准化:ML-DSA 和 FN-DSA。
CRYSTALS-Dilithium(ML-DSA)
Dilithium 的安全性基于模-LWE 和模-SIS(短整数解)问题的困难性。其安全性证明基于 QROM(量子随机预言机模型)。它有三种变体:Dilithium2(约 128 位)、Dilithium3(约 192 位)和 Dilithium5(约 256 位)。签名路径简单,且无需拒绝采样。
Dilithium 签名
私钥:秘密矩阵 s1、s2。公钥:t = As1 + s2。签名:随机采样 y;计算 w = Ay;计算挑战值 c = H(mu || w1),其中 w1 = HighBits(w);计算 z = y + cs1;如果 ||z|| 或 ||r0|| 过大,则拒绝并重试。输出 (z, c, hint)。
Dilithium 验证
验证 (z, c, hint):检查 ||z|| 是否足够小;计算 w' = Az - ct;使用 hint 恢复 w1;验证 c == H(mu || w1)。hint 是 MakeHint() 生成的少量比特。拒绝操作可以确保 z 不会泄露 s1,其安全性论证称为“中止后均匀”论证。
Dilithium 密钥和签名大小
ML-DSA-65(Dilithium3,192 位安全强度):公钥 1952 字节,私钥 4000 字节,签名 3293 字节。相比之下,ECDSA-P256 的公钥为 64 字节,签名为 64 字节。Dilithium 的签名大约大 40—50 倍,但可以抵抗量子攻击。
Falcon(FN-DSA)
Falcon 基于 NTRU 格,并在 NTRU 格上使用高斯采样器。它的签名明显小于 Dilithium,但签名过程需要浮点高斯采样器,因此更难实现为常数时间,也更难编写安全的代码。
Falcon 密钥和签名大小
Falcon-512(128 位安全强度):公钥 897 字节,签名 666 字节,远小于 Dilithium。代价是 Falcon 更难安全地实现(高斯采样容易受到时序攻击)。它适合带宽受限的环境,但需要谨慎实现。
SPHINCS+(SLH-DSA)
SPHINCS+ 是一种基于哈希的签名方案,不依赖结构性代数假设,是一种保守的选择。其安全性仅依赖哈希函数的安全性。签名大小约为 8—50 KB,较大;签名速度较慢。它适用于长期信任至关重要而性能处于次要地位的场景。
方案选择
ML-DSA(Dilithium):通用、实现简单,适合 TLS 证书和代码签名。FN-DSA(Falcon):适合带宽受限的环境(IoT、LPWAN)。SLH-DSA(SPHINCS+):极其保守,适合长期使用的根密钥(CA 离线密钥、软件信任根)。
实现注意事项
Dilithium:拒绝采样可能通过分支时序泄露信息,请使用常数时间比较。Falcon:高斯采样器使用浮点数,请确保 FP 的确定性。两者都应避免多项式运算中的侧信道。请使用 NIST 提交包中的参考实现。
FIPS 标准
NIST FIPS 204:ML-DSA(Dilithium)。NIST FIPS 205:SLH-DSA(SPHINCS+)。NIST FIPS 206:FN-DSA(Falcon)。这些标准均于 2024 年 8 月发布。相关库包括 OpenSSL 3.x、BoringSSL 和 liboqs(Open Quantum Safe 项目),它们都实现了这三种方案。
快速检查
Falcon 相比 Dilithium 的主要优势是什么?
回顾
ML-DSA(Dilithium):基于格、实现简单,签名约为 3 KB。FN-DSA(Falcon):基于 NTRU,签名约为 700 字节,但实现复杂。SLH-DSA(SPHINCS+):基于哈希、较为保守,但签名较大。三者均已在 FIPS 204/205/206 中标准化。下一节:使用混合方案迁移到 PQC。
常见问题解答
「CRYSTALS-Dilithium 与 Falcon 签名」课时是免费的吗?
是的 — 「CRYSTALS-Dilithium 与 Falcon 签名」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。
「CRYSTALS-Dilithium 与 Falcon 签名」这节课中我会学到什么?
比较 NIST 标准化的基于格的数字签名方案 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cryptology Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「CRYSTALS-Dilithium 与 Falcon 签名」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cryptology Academy 课中编写并运行代码吗?
能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Shor 算法与 Grover 算法详解
- CRYSTALS-Kyber:基于格的 KEM
- CRYSTALS-Dilithium 与 Falcon 签名
- 迁移到 PQC:混合方案