Safeguard
Security Guides•

ML-DSA or SLH-DSA: how to choose a post-quantum signature

Both are NIST signature standards from August 2024. A decision guide on lattice versus hash-based signatures for code signing, firmware and documents.

Safeguard Security Team
3 min read

ML-DSA (FIPS 204) is the lattice-based general-purpose signature standard. SLH-DSA (FIPS 205) is a stateless hash-based standard derived from SPHINCS+. Choose by what you value: ML-DSA for the common default, SLH-DSA where you want security that rests only on hash functions and can accept its tradeoffs.

What the standards say

Both were published on 13 August 2024. Each describes a signature scheme that detects unauthorized changes, authenticates the signer, and gives a recipient evidence to show a third party who signed.

NIST states that ML-DSA is believed to be secure even against adversaries with a large-scale quantum computer. SLH-DSA is described as stateless hash-based and based on SPHINCS+, a scheme chosen through NIST's post-quantum standardization process.

The real difference: foundations

ML-DSA depends on module lattice problems, the same family as ML-KEM. SLH-DSA depends on hash functions. If a serious attack on lattices appeared, ML-KEM and ML-DSA would be affected together, while SLH-DSA would not. That is the main reason to keep SLH-DSA in your plans.

I am not stating signature sizes or speeds here because the NIST pages I fetched do not list them. Read the standards and your library's benchmarks, and test with your real payloads.

Decision guide

Ask four questions:

  1. How long must a signature stay verifiable? Decades-long trust, such as a root of trust or firmware, argues for considering the hash-based option.
  2. How constrained is the verifier? Small devices, bandwidth limits and certificate chains make signature size and speed matter. Measure.
  3. How much of the ecosystem already supports it? Check your TLS stack, code signing tools and HSMs.
  4. Do you want diversity? Using two families across different trust anchors limits the blast radius.

Practical defaults

  • General application signing, JWT replacements, internal services: start with ML-DSA where your libraries support it.
  • Long-lived roots and firmware: evaluate SLH-DSA, and stateful schemes from SP 800-208 if you control signing tightly.
  • Anything user-facing in browsers: follow what the browsers and certificate authorities actually support, since they set the pace.

Do not forget the hash

Choosing a new signature does not fix an old process. Check key custody, who can trigger signing, and whether your verifier rejects algorithm downgrade.

For a pilot, pick one internal signing use, such as a build artifact or an internal document flow, and run both algorithms in parallel for a few weeks. Record signature size, signing time, verification time and any tooling problems. A small real measurement from your own environment is worth more than any general comparison, and it gives you a defensible record of why you chose what you chose.

Quick check

Is SLH-DSA more secure than ML-DSA?

That is not the right frame. They rest on different assumptions. SLH-DSA depends only on hash functions, which some teams prefer as a hedge.

Can I sign with both?

Dual signatures, two signatures on one message, are discussed in NIST's draft transition report as a hybrid technique. They add complexity, so decide deliberately.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.