Skip to content

Learning Path

Post-Quantum PKI Lab

QLAB is an educational resource to help teams understand PKI and Post-Quantum Cryptography (PQC) migration through hands-on practice.

β€œThe PKI is the tool for transition β€” post-quantum is an engineering problem, not magic.”

What you’ll learn:

  • Understand the quantum threats to current cryptography (SNDL, TNFL)
  • Assess your PQC migration urgency using Mosca’s theorem
  • Issue classical and post-quantum certificates with the same workflow
  • Build complete PQC hierarchies (Root CA β†’ Issuing CA β†’ End-Entity)
  • Deploy hybrid certificates for backward-compatible migration
  • Manage full lifecycle: revocation, OCSP, CRL
  • Sign code, timestamp documents, and create LTV signatures
  • Encrypt with ML-KEM key encapsulation (the new pattern)
  • Practice crypto-agile CA migration

QLAB uses Qpki for all PKI operations.


Prerequisites:

  • Git β€” for cloning the repository
  • Bash β€” for running demos (Git Bash or WSL on Windows)
  • OpenSSL 3.x β€” optional, for cross-verification commands
Terminal window
git clone https://github.com/remiblancher/qlab.git
cd qlab
./tooling/install.sh
Terminal window
# 1. Install QPKI (PowerShell)
git clone https://github.com/remiblancher/qlab.git
cd qlab
.\tooling\install.ps1
# 2. Run demos (requires Git Bash or WSL)
./journey/00-revelation/demo.sh

Note: The install script works in PowerShell, but the demos require Git Bash or WSL.

Terminal window
./journey/00-revelation/demo.sh

Total time: ~2h | Quick path: 20 min (Revelation + Quick Start)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ AWARENESS BUILD LIFECYCLE β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚Lab-00β”‚β†’β”‚Lab-01β”‚ β†’ β”‚Lab-02β”‚β†’β”‚Lab-03β”‚ β†’ β”‚Lab-04β”‚β†’β”‚Lab-05β”‚ β”‚
β”‚ β”‚Why? β”‚ β”‚How? β”‚ β”‚Chain β”‚ β”‚Hybridβ”‚ β”‚CRL β”‚ β”‚OCSP β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ ↓ β”‚
β”‚ MIGRATION ENCRYPTION LONG-TERM SIGS β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚Lab-10β”‚ ← β”‚Lab-09β”‚ ← β”‚Lab-06β”‚Lab-07β”‚Lab-08β”‚ β”‚
β”‚ β”‚Agile β”‚ β”‚KEM β”‚ β”‚Sign β”‚Time β”‚LTV β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

#LabTimeTakeaway
0The Quantum Threat10 minYour data is already being recorded
1Classical vs Post-Quantum10 minSame workflow, just different algorithms

↓ Let’s build!

#LabTimeTakeaway
2Full PQC Chain10 minBuild a 100% PQC chain
3Hybrid10 minOr hybrid to coexist with legacy

↓ PKI operations stay identical

#LabTimeTakeaway
4Revocation10 minRevoke = same command
5OCSP10 minVerify = same protocol

↓ Sign, timestamp, archive for decades

#LabTimeTakeaway
6Code Signing10 minSignatures that outlive the threat
7Timestamping15 minProve WHEN, forever
8LTV15 minBundle proofs for offline verification

↓ Except for encryption…

#LabTimeTakeaway
9Encryption15 minKEM keys require a new pattern: attestation

↓ And for production migration?

#LabTimeTakeaway
10Crypto-Agility15 minCA versioning + trust bundles

  • ML-DSA (FIPS 204) β€” Lattice-based signatures β†’ replaces ECDSA
  • SLH-DSA (FIPS 205) β€” Hash-based signatures (conservative)
  • ML-KEM (FIPS 203) β€” Key encapsulation β†’ replaces ECDH
  • Catalyst certificates (ITU-T X.509 9.8)
  • Composite certificates (supported, no lab demo)

See Qpki for the full list of supported algorithms.



Apache License 2.0 β€” See LICENSE