0Pricing
Cryptology Academy · 课时

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. Shor 算法与 Grover 算法详解
  2. CRYSTALS-Kyber:基于格的 KEM
  3. CRYSTALS-Dilithium 与 Falcon 签名
  4. 迁移到 PQC:混合方案
← 返回 Cryptology Academy