Skip to content

Lab-04: PQC Revocation

Incident Response: When Keys Are Compromised

Section titled “Incident Response: When Keys Are Compromised”

Key Message: Revoking a PQC certificate works exactly like revoking a classical one. Same workflow, same commands.


It’s 3 AM. You receive an alert:

🚨 SECURITY ALERT
The private key for server.example.com
was detected on GitHub.

What do you do?

“We had a security incident. A private key was compromised. How do we revoke a post-quantum certificate?”

The same way you revoke any certificate. PKI operations are algorithm-agnostic.

┌──────────────────────────────────────────────────────────────────┐
│ │
│ COMPROMISED KEY: The attacker can impersonate your server │
│ │
│ Attacker │
│ │ │
│ │ server.key (stolen) │
│ ▼ │
│ ┌──────────┐ │
│ │ Fake │ The attacker can now: │
│ │ Server │ - Impersonate server.example.com │
│ │ │ - Intercept client traffic │
│ │ │ - Sign malicious content │
│ └──────────┘ │
│ │
│ The certificate is still technically "valid". │
│ Solution: REVOKE IT IMMEDIATELY │
│ │
└──────────────────────────────────────────────────────────────────┘

  1. Create a CA (ML-DSA-65) 1b. Issue a TLS certificate
  2. Revoke the certificate (after key compromise) 2b. Generate a CRL (Certificate Revocation List)
  3. Verify the revoked certificate is rejected

Terminal window
./journey/04-revocation/demo.sh

Terminal window
# Create PQC CA
qpki ca init --profile profiles/pqc-ca.yaml \
--var cn="PQC CA" \
--ca-dir output/pqc-ca
qpki ca export --ca-dir output/pqc-ca --out output/pqc-ca/ca.crt
Terminal window
# Generate ML-DSA-65 key, CSR, and issue certificate
qpki csr gen --algorithm ml-dsa-65 \
--keyout output/server.key \
--cn server.example.com \
--out output/server.csr
qpki cert issue --ca-dir output/pqc-ca \
--profile profiles/pqc-tls-server.yaml \
--csr output/server.csr \
--out output/server.crt
# Extract serial number - needed for revocation command
openssl x509 -in output/server.crt -noout -serial
Terminal window
# Revoke certificate with reason
qpki cert revoke <serial> --ca-dir output/pqc-ca --reason keyCompromise

The certificate is now marked as revoked in the CA database. But clients don’t know yet — we need to publish a CRL.

Terminal window
# Generate the Certificate Revocation List
qpki crl gen --ca-dir output/pqc-ca
qpki inspect output/pqc-ca/crl/ca.crl

The CRL is now published. Clients can check if certificates are revoked.

Terminal window
# Verify certificate against CRL (should fail - certificate is revoked)
qpki cert verify output/server.crt \
--ca output/pqc-ca/ca.crt \
--crl output/pqc-ca/crl/ca.crl

CodeReasonWhen to Use
0unspecifiedDefault, no specific reason
1keyCompromisePrivate key exposed
2cACompromiseCA’s key was compromised
3affiliationChangedSubject’s organization changed
4supersededReplaced by new certificate
5cessationOfOperationService no longer needed

1. DETECT
└─► Key compromise discovered (leak, breach, etc.)
2. ASSESS
└─► Identify affected certificates (serial numbers)
3. REVOKE
└─► qpki cert revoke <serial> --ca-dir <ca> --reason keyCompromise
4. PUBLISH
└─► qpki crl gen --ca-dir <ca>
5. NOTIFY
└─► Inform relying parties, update distribution points
6. REMEDIATE
└─► Issue replacement certificates with new keys

Note: Revocation prevents future trust. It does not remove already-installed malware or undo past compromise.


ComponentClassical (ECDSA)Post-Quantum (ML-DSA)Ratio
CRL signature~96 bytes~3,309 bytes~34x
CRL total size~500 bytes~3,800 bytes~7.6x

CRLs are larger due to PQC signatures, but the protocol is unchanged.

CRL size usually remains negligible compared to network traffic.


IndustryScenarioImpact
Financial servicesStolen code signing keyMalicious transactions signed
HealthcareCompromised device certPatient data exposed
GovernmentEmployee terminationUnauthorized access continues
E-commerceTLS key leaked on GitHubMan-in-the-middle attacks
IoT/IndustrialFactory device breachSupply chain compromise

Compliance requirements:

  • PCI-DSS: Revoke compromised keys within 24 hours
  • HIPAA: Immediate revocation for terminated employees
  • SOC 2: Document revocation procedures and response times

  1. Algorithm-agnostic: Revocation workflow is identical for classical and PQC
  2. CRLs are signed: PQC CRLs have larger signatures
  3. Same commands: No new tools or procedures needed
  4. Ops teams: No retraining required for basic PKI operations


Hybrid | QLAB Home | Next: OCSP →