0Pricing
Cryptology Academy · Lesson

CRYSTALS-Dilithium & Falcon Signatures

Compare lattice-based digital signature schemes standardized by NIST.

CRYSTALS-Dilithium & Falcon Signatures is a free Cryptology Academy lesson on CoddyKit — lesson 3 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Cryptology Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.

Post-Quantum Signatures Need

RSA and ECDSA signatures are broken by Shor's algorithm. Post-quantum signatures must replace them for: TLS certificates, code signing, email signing (S/MIME, PGP), and software update authentication. NIST standardized two lattice-based schemes: ML-DSA and FN-DSA.

CRYSTALS-Dilithium (ML-DSA)

Dilithium is based on the hardness of Module-LWE and Module-SIS (Short Integer Solution). Security proof in the QROM (Quantum Random Oracle Model). Three variants: Dilithium2 (~128-bit), Dilithium3 (~192-bit), Dilithium5 (~256-bit). Simple, rejection-sampling-free sign path.

Dilithium Signing

Private key: secret matrices s1, s2. Public key: t = As1 + s2. Sign: sample random y; compute w = Ay; compute challenge c = H(mu || w1) where w1 = HighBits(w); compute z = y + cs1; if ||z|| or ||r0|| is too large, reject and retry. Output (z, c, hint).

Dilithium Verification

Verify (z, c, hint): check ||z|| is small; compute w' = Az - ct; use hint to recover w1; verify c == H(mu || w1). The hint is a small number of bits from MakeHint(). Rejection ensures z does not leak s1 — the security argument is a "aborts-then-uniform" argument.

Dilithium Key/Signature Sizes

ML-DSA-65 (Dilithium3, 192-bit security): public key 1952 bytes, private key 4000 bytes, signature 3293 bytes. Compare: ECDSA-P256: 64-byte public key, 64-byte signature. Dilithium is ~40-50x larger in signatures but quantum-safe.

Falcon (FN-DSA)

Falcon is based on NTRU lattices and uses a Gaussian sampler over the NTRU lattice. Signatures are significantly smaller than Dilithium but signing requires a floating-point Gaussian sampler — harder to implement in constant time and more complex to code securely.

Falcon Key/Signature Sizes

Falcon-512 (128-bit security): public key 897 bytes, signature 666 bytes — much smaller than Dilithium. Trade-off: Falcon is harder to implement securely (Gaussian sampling susceptible to timing attacks). Suitable for constrained bandwidth but requires careful implementation.

SPHINCS+ (SLH-DSA)

SPHINCS+ is a hash-based signature scheme — conservative choice with no structural algebraic assumptions. Security relies only on hash function security. Signature size: ~8-50 KB (large). Slow signing. Used where long-term trust is critical and performance is secondary.

Choosing Between Schemes

ML-DSA (Dilithium): general purpose, simple implementation, good for TLS certificates and code signing. FN-DSA (Falcon): bandwidth-constrained environments (IoT, LPWAN). SLH-DSA (SPHINCS+): ultra-conservative, long-lived roots (CA offline keys, software root of trust).

Implementation Concerns

Dilithium: rejection sampling may leak branch timing — use constant-time comparison. Falcon: Gaussian sampler uses floating-point — ensure FP determinism. Both: avoid side-channels in polynomial arithmetic. Use reference implementations from NIST submission packages.

FIPS Standards

NIST FIPS 204: ML-DSA (Dilithium). NIST FIPS 205: SLH-DSA (SPHINCS+). NIST FIPS 206: FN-DSA (Falcon). All published August 2024. Libraries: OpenSSL 3.x, BoringSSL, liboqs (Open Quantum Safe project) implement all three.

Quick Check

What is the main advantage of Falcon over Dilithium?

Recap

ML-DSA (Dilithium): lattice-based, simple, ~3 KB signatures. FN-DSA (Falcon): NTRU-based, ~700-byte signatures, complex implementation. SLH-DSA (SPHINCS+): hash-based, conservative, large. All standardized in FIPS 204/205/206. Next: migrating to PQC with hybrid approaches.

Frequently asked questions

Is the “CRYSTALS-Dilithium & Falcon Signatures” lesson free?

Yes — the full text of “CRYSTALS-Dilithium & Falcon Signatures” is free to read here on the web, and the Cryptology Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Cryptology Academy course, upgrade to CoddyKit PRO.

What will I learn in “CRYSTALS-Dilithium & Falcon Signatures”?

Compare lattice-based digital signature schemes standardized by NIST. You practise Cryptology Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.

Do I need any experience to start Cryptology Academy?

No prior experience is required. Cryptology Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 3 of 4, so you can start here or from the beginning and move at your own pace.

How long does the “CRYSTALS-Dilithium & Falcon Signatures” lesson take?

Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.

Can I write and run code in this Cryptology Academy lesson?

Yes. Every Cryptology Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.

All lessons in this course

  1. Shor's & Grover's Algorithms Explained
  2. CRYSTALS-Kyber: Lattice-Based KEM
  3. CRYSTALS-Dilithium & Falcon Signatures
  4. Migration to PQC: Hybrid Approaches
← Back to Cryptology Academy