ML-DSA Dilithium Explained: How Lattice-Based Signatures Work

ML-DSA Dilithium explained — this article breaks down one of the most important cryptographic standards to emerge from NIST's post-quantum standardisation process. You will learn how CRYSTALS-Dilithium constructs digital signatures from hard lattice problems, why its security assumptions resist quantum attack, how signature and key sizes compare to classical schemes like ECDSA, and what adoption looks like in the real world, including cryptocurrency wallets built around post-quantum security. No hand-waving: this is a technically grounded explainer suitable for developers, security researchers, and informed crypto holders.

What Is ML-DSA and Where Did It Come From?

ML-DSA stands for Module-Lattice-Based Digital Signature Algorithm. It is the formal NIST designation published in FIPS 204 (August 2024) for what the cryptographic community had previously called CRYSTALS-Dilithium. The two names refer to the same algorithm: Dilithium was the submission name used throughout NIST's Post-Quantum Cryptography (PQC) standardisation project, which ran from 2016 to 2024. Once NIST finalised the standard, it renamed the scheme ML-DSA to align with its broader naming convention for lattice-based primitives.

The algorithm was designed by a team of researchers from CWI Amsterdam, Ruhr-Universität Bochum, ENS Lyon, and other institutions. It was selected alongside ML-KEM (formerly Kyber, a key-encapsulation mechanism) as the primary NIST-approved post-quantum primitive intended for general-purpose digital signatures.

Why a New Signature Standard Was Needed

Every digital signature scheme in widespread use today — ECDSA (used in Bitcoin and Ethereum), EdDSA (Ed25519), and RSA-PSS — relies on mathematical problems that a sufficiently powerful quantum computer can solve efficiently:

This vulnerability is not theoretical speculation. The academic and intelligence communities refer to "Q-day" as the point at which fault-tolerant quantum hardware becomes capable of running Shor's algorithm against real-world key sizes. Harvest-now-decrypt-later attacks are already a documented threat model: adversaries can record encrypted traffic or signed data today and decrypt or forge signatures once quantum capability matures.

ML-DSA was standardised precisely to give software engineers and protocol designers a drop-in signature scheme that does not depend on these broken assumptions.

---

The Mathematical Foundation: Module Lattices

To understand ML-DSA, you need a working model of what a lattice is and why the hard problems defined over lattices are believed to resist quantum attack.

What Is a Lattice?

A lattice is a regular grid of points in high-dimensional space, generated by taking all integer linear combinations of a set of basis vectors. Formally, given basis vectors b₁, b₂, …, bₙ, the lattice L is:

```

L = { a₁b₁ + a₂b₂ + … + aₙbₙ : aᵢ ∈ ℤ }

```

The basis can be expressed in many equivalent ways. Some bases make the lattice structure obvious; others (called "bad" or "reduced" bases) make it computationally very hard to solve geometric problems on the lattice.

Hard Lattice Problems

Two related problems underpin ML-DSA's security:

ML-DSA operates over module lattices, meaning it works with matrices of polynomials over a ring (specifically, polynomials modulo a cyclotomic polynomial). This Module-LWE / Module-SIS setting lets the scheme tune security levels efficiently by changing the module dimension k × l rather than redesigning the entire primitive.

Why Quantum Computers Cannot Break This

Shor's algorithm exploits the algebraic structure of cyclic groups. Lattice problems do not have the same exploitable structure. The best known quantum algorithms for LWE and SIS (based on quantum variants of lattice sieving) provide only modest speedups over classical algorithms, and those speedups are accounted for in the parameter choices. There is no known sub-exponential quantum algorithm for Module-LWE.

---

How ML-DSA Constructs a Digital Signature

ML-DSA follows the Fiat-Shamir with Aborts paradigm, pioneered by Lyubashevsky. Here is the construction at a conceptual level:

Key Generation

  1. Sample a random matrix A (public, derived from a seed).
  2. Sample secret vectors s₁ and s₂ with small coefficients (drawn from a bounded distribution).
  3. Compute t = As₁ + s₂.
  4. The public key is (A, t). The private key is (s₁, s₂) (plus a commitment for efficiency).

The security of the public key rests on Module-LWE: an adversary seeing t cannot recover s₁ or s₂.

Signing

  1. Sample a random masking vector y with bounded coefficients.
  2. Compute a commitment w = Ay.
  3. Generate a challenge c by hashing the message together with a compressed version of w.
  4. Compute the response z = y + cs₁.
  5. Abort and restart if z or certain intermediate values exceed a coefficient bound. This abort step is critical: it prevents leaking information about the secret s₁ through the response vector.
  6. Output the signature (z, c, h) where h is a hint vector used to allow the verifier to reconstruct the high bits of w from the public key alone.

Verification

  1. Reconstruct w' from Az - ct using the hint h.
  2. Re-derive the challenge c' by hashing the message against the reconstructed w'.
  3. Accept if c' = c and the coefficient norms of z are within bounds.

The abort mechanism means signing is probabilistic in runtime — on average, the signer restarts approximately 4 to 7 times per signature across the standard parameter sets, but each attempt is fast.

---

Parameter Sets and Security Levels

FIPS 204 defines three parameter sets for ML-DSA, mapped to NIST security categories:

Parameter SetNIST Security LevelClassical SecurityQuantum SecurityPublic Key SizeSignature Size
ML-DSA-44Level 2≥ 128-bit≥ 64-bit1,312 bytes2,420 bytes
ML-DSA-65Level 3≥ 192-bit≥ 96-bit1,952 bytes3,309 bytes
ML-DSA-87Level 5≥ 256-bit≥ 128-bit2,592 bytes4,595 bytes

For comparison, an ECDSA signature over secp256k1 (the Bitcoin curve) is 64 bytes, and the compressed public key is 33 bytes. ML-DSA signatures are roughly 35 to 70 times larger.

What Those Size Differences Mean in Practice

Larger signatures have real-world consequences:

The performance story is therefore good. The bandwidth story requires protocol adaptation, particularly for high-frequency blockchain use cases.

---

ML-DSA vs. Other Post-Quantum Signature Schemes

NIST standardised one additional signature algorithm alongside ML-DSA and is evaluating more:

SchemeNIST StandardBasisSig Size (Level 2)Key Gen SpeedNotes
ML-DSA (Dilithium)FIPS 204Module Lattice (MLWE/MSIS)~2,420 bytesVery fastPrimary general-purpose choice
SLH-DSA (SPHINCS+)FIPS 205Hash functions (stateless)~8,080 bytesSlowerConservative; no algebraic assumptions
FN-DSA (Falcon)FIPS 206NTRU Lattice~666 bytesComplex keygenSmallest signatures; tricky to implement securely
MAYO, CROSS, etc.Round 2 (ongoing)Multivariate / CodesVariesResearch stageNot yet standardised

ML-DSA is the practical default for most new deployments. It has the broadest hardware support, the clearest implementation guidance, and the most mature tooling. Falcon's smaller signatures are attractive for constrained environments, but its Gaussian sampling requires careful constant-time implementation to avoid side-channel leakage. SLH-DSA is the most conservative choice (it requires no lattice hardness assumption), but its large signatures and slower signing make it a secondary option.

---

Implementation and Adoption Status

Open-Source Libraries

Mature, audited implementations of ML-DSA exist in:

Adoption in Standards and Protocols

Adoption in Cryptocurrency Infrastructure

Cryptocurrency wallets represent one of the most sensitive deployment environments for signature schemes, because a compromised signing key means irreversible loss of funds. Quantum exposure is a long-horizon but structurally serious risk: the public key of any address that has ever spent funds is exposed on-chain permanently.

Projects building post-quantum-resistant wallet infrastructure are beginning to adopt ML-DSA or hybrid classical-plus-ML-DSA schemes for key derivation and transaction signing. BMIC.ai is one such project, applying NIST PQC-aligned lattice-based cryptography to protect wallet keys against the eventual Q-day threat. Hybrid approaches, where both ECDSA and ML-DSA signatures must validate, are considered prudent during the transition period because they do not reduce security even if lattice assumptions are later weakened.

---

Security Considerations and Known Limitations

ML-DSA is not a silver bullet. Implementers should be aware of:

---

Summary: Key Takeaways

Frequently Asked Questions

What is the difference between ML-DSA and CRYSTALS-Dilithium?

They are the same algorithm. CRYSTALS-Dilithium was the name used during NIST's post-quantum standardisation competition. When NIST published the final standard as FIPS 204 in August 2024, it renamed the scheme ML-DSA (Module-Lattice-Based Digital Signature Algorithm) to follow its standardised naming convention. All technical properties are identical.

Is ML-DSA safe against quantum computers?

Based on current cryptanalysis, yes. ML-DSA's security rests on the Module-LWE and Module-SIS problems. No known quantum algorithm, including Shor's algorithm or quantum lattice-sieving variants, can solve these problems in sub-exponential time. The parameter sets in FIPS 204 are calibrated to maintain at least 64 bits of quantum security (Level 2) up to 128 bits (Level 5) against the best known attacks.

How large are ML-DSA signatures compared to ECDSA?

An ECDSA signature over secp256k1 is 64 bytes with a 33-byte compressed public key. ML-DSA-44 produces a 2,420-byte signature with a 1,312-byte public key; ML-DSA-65 produces 3,309 bytes and 1,952 bytes respectively. The size increase is roughly 35 to 70 times. Signing and verification speeds are still very fast, under 0.1–0.15 ms on modern hardware, so the main practical challenge is bandwidth and on-chain storage, not computation.

Which ML-DSA parameter set should I use?

For most applications, ML-DSA-65 (NIST Level 3) offers a practical balance of security and size. For high-value or long-lived keys, such as cryptocurrency wallet signing keys or code-signing certificates, ML-DSA-87 (Level 5) provides the strongest margins. ML-DSA-44 is acceptable for short-lived, low-value signatures where bandwidth is constrained.

Can ML-DSA signatures be aggregated like BLS signatures?

Not natively with the current FIPS 204 standard. BLS signature aggregation exploits the bilinear pairing structure of elliptic curves, which lattice schemes do not share. Research into lattice-based signature aggregation and batch verification is active, but no standardised aggregation scheme for ML-DSA exists yet. Protocols requiring aggregation should monitor IETF and NIST research publications for updates.

What programming libraries support ML-DSA today?

Mature options include the Open Quantum Safe project's liboqs (C with bindings for Python, Java, Go, Rust, .NET), the pqcrypto Rust crates, BouncyCastle (Java and C# since version 1.73), and OpenSSL 3.x via the OQS provider plug-in. AWS-LC and Google's BoringSSL also have experimental ML-DSA support. All reference implementations from NIST are publicly available and have undergone community review.