Post-quantum cryptography is becoming critical as quantum computers get closer to breaking today’s RSA and ECC systems. One of the most practical quantum-resistant digital signature algorithms is XMSS (eXtended Merkle Signature Scheme).
In this post, we’ll break XMSS down with plain language and a toy example, so you can see how it works.
🔑 What is XMSS?
XMSS is a hash-based signature scheme. Instead of relying on number-theory problems like factoring (RSA) or elliptic curves (ECC), it uses hash functions (like SHA-256) as its only building block.
XMSS is stateful → it keeps track of how many times it has signed. Each key pair can only sign a limited number of messages (determined when the key is created).
🧩 Building Blocks of XMSS
- One-Time Signatures (WOTS+)
- Used to sign a single message safely.
- But since it can only be used once, we need a way to combine many of them.
- Merkle Tree
- A tree structure that combines many one-time keys into a single root (public key).
- The root acts as the master public key.
Together:
- The leaf nodes of the tree = one-time public keys.
- The root = your overall public key.
🌱 A Toy Example (XMSS with 4 Signatures)
Let’s imagine we want an XMSS key pair that can sign 4 messages.
Step 1: Generate One-Time Keys
We create 4 WOTS+ key pairs:
- SK₁ / PK₁
- SK₂ / PK₂
- SK₃ / PK₃
- SK₄ / PK₄
These are our “leaf nodes”.
Step 2: Build the Merkle Tree
We now hash these pairs to form a binary tree:
vbnetCopyEdit Root (Public Key)
/ \
Hash1 Hash2
/ \ / \
PK1 PK2 PK3 PK4
- The root hash is the XMSS public key.
- The private key stores all the one-time secret keys (SK₁ … SK₄).
Step 3: Signing a Message
Suppose we want to sign Message A.
- Use the first unused one-time key (SK₁).
- Generate a WOTS+ signature for
Message A. - Include the authentication path → the hashes needed to prove that PK₁ is part of the Merkle root.
So the signature includes:
- The WOTS+ signature using SK₁
- The “path” (PK₂, Hash2) that lets the verifier rebuild the root
Step 4: Verification
- Verifier checks the WOTS+ signature against PK₁.
- Verifier uses the authentication path to recompute the Merkle root.
- If it matches the known root (the public key), the signature is valid ✅.
🚦 Why XMSS Matters
- Quantum resistant: Relies only on hash functions.
- Forward secure: Even if later keys are exposed, old signatures remain safe.
- Standardized: XMSS is in RFC 8391 and approved by NIST SP 800-208.
📌 Limitations
- Stateful → you must carefully track how many signatures you’ve used. Reusing a WOTS+ key breaks security.
- Signature size → larger than RSA/ECC, but still practical.
🎯 Conclusion
XMSS shows how we can use hash functions and Merkle trees to build strong, quantum-safe digital signatures. By combining one-time keys with a tree structure, XMSS creates a secure and efficient post-quantum signing system.
It may look complex at first, but at its heart, XMSS is just:
- One-time signatures (WOTS+)
- Organized with a Merkle tree
That’s the beauty of hash-based cryptography!