Post-quantum · Algorithms · FIPS 205

SLH-DSA (FIPS 205) explained: when conservative hash-based signatures are worth their size

Published 12 October 2026 · 9 min read · By Ali Korsi SLH-DSA is the most conservative of the NIST post-quantum signatures: its security rests only on hash functions. The price is signatures of several to tens of kilobytes and slow signing, which makes it a specialist tool rather than a default.

SLH-DSA in one paragraph

SLH-DSA (Stateless Hash-Based Digital Signature Algorithm) is the NIST post-quantum signature standard published as FIPS 205 in August 2024, derived from SPHINCS+. It builds signatures from many one-time and few-time hash-based signatures arranged in a hypertree. Its security depends only on the properties of the underlying hash function — SHA-2 or SHAKE — not on lattices or any other newer mathematical assumption. That is its whole point: if a weakness were ever found in the lattice problems behind ML-DSA, SLH-DSA would be unaffected.

Stateless, unlike LMS and XMSS

Hash-based signatures are not new. LMS and XMSS, specified in NIST SP 800-208, are already standardised and are what CNSA 2.0 names for firmware and software signing. But they are stateful: the signer must never reuse a one-time key, so it has to track state reliably, across backups, failovers and HSM clusters. A single mistake can allow forgeries.

SLH-DSA removes that burden: it is stateless, so it can be used like any other signature scheme. It pays for this with much larger signatures and slower signing.

Parameter sets and sizes

FIPS 205 defines twelve parameter sets: two hash families (SHA-2 and SHAKE) × three security levels (128, 192, 256) × two trade-offs — “s” for small signatures and “f” for fast signing. Sizes are the same for SHA-2 and SHAKE at a given level:

Parameter setNIST categoryPublic keyPrivate keySignature
SLH-DSA-…-128s132 B64 B7,856 B
SLH-DSA-…-128f132 B64 B17,088 B
SLH-DSA-…-192s348 B96 B16,224 B
SLH-DSA-…-192f348 B96 B35,664 B
SLH-DSA-…-256s564 B128 B29,792 B
SLH-DSA-…-256f564 B128 B49,856 B

The keys are tiny — smaller than RSA’s — but the signatures are large: even the smallest is more than three times an ML-DSA-44 signature. The “s” sets sign slowly (orders of magnitude slower than ML-DSA); the “f” sets sign faster at the cost of signatures roughly twice as large. Verification is comparatively quick for both.

SLH-DSA, ML-DSA or LMS/XMSS?

ML-DSASLH-DSALMS / XMSS
Security basisModule latticesHash functions onlyHash functions only
State to manageNoNoYes — never reuse a one-time key
Signature size2.4–4.6 KB7.9–50 KBTypically a few KB
Signing speedFastSlow (“s”) to moderate (“f”)Fast, limited number of signatures per key
Good fitGeneral purpose: TLS, certificates, tokens, codeLong-lived roots, firmware, archives, a hedge against lattice breaksFirmware and software signing with careful state handling

Where SLH-DSA fits

It is a poor fit for high-volume signing (TLS handshakes, API tokens) and for constrained links where every kilobyte counts.

Library and platform support

As of this writing, SLH-DSA is available in OpenSSL 3.5 and later, Bouncy Castle and liboqs, among others. HSM and CA support is narrower than for ML-DSA, so check it early if you plan to use SLH-DSA for roots or firmware. FIPS 205 also defines a pre-hash variant (HashSLH-DSA); make sure signer and verifier agree on the variant and parameter set.

Planning the move

  1. Inventory signature uses — certificate signature algorithms, code and firmware signing, document signing — and record how long each must stay trusted.
  2. Separate the rare-but-long-lived from the frequent-but-short-lived. The first group is where SLH-DSA (or LMS/XMSS) is worth evaluating; the second belongs to ML-DSA.
  3. Check device and format limits. Bootloaders, secure elements and file formats must have room for the signature size and time for verification.
  4. Decide per use case, not per organisation, and keep the choice configurable — crypto-agility again.

Where CRYPTAGION fits

CRYPTAGION builds the inventory behind step 1. It finds RSA, ECDSA, EdDSA and other quantum-vulnerable signatures in Python, JavaScript/TypeScript, Java, Go and C/C++ source, records the signature algorithm, issuer and validity of X.509 certificates, and inspects live TLS endpoints. Each finding carries its location, a quantum status, a risk score and a recommended replacement — ML-DSA or SLH-DSA for signatures — with a migration year, exported as a CycloneDX 1.6 CBOM.

Sources

Sizes are taken from FIPS 205. Relative speeds are indicative and depend on implementation and hardware. Library and platform support is summarised as of October 2026 and changes often.

See which signatures need a long-term answer

In a 30-minute demo we run CRYPTAGION live on a public repository that matches your stack and show its signature algorithms, scored by quantum risk and mapped to ML-DSA or SLH-DSA. No access to your code needed.

Request a free demo →