Part VIII. Applications and Strategy · Chapter 68
Cryptography, PQC, QKD, and Security Migration
Security is the one quantum application where the deadline can arrive before the machine does. This chapter separates three things vendors blur together — Shor's threat, post-quantum migration, and quantum key distribution — and turns them into a sequenced plan.
In this chapter 9 sections
Inventory cryptographic dependencies and migrate exposed public-key uses to NIST-standardized post-quantum schemes under a crypto-agility program now; treat QKD as a specialized link technology, and size cryptanalytic-computer risk with explicit fault-tolerant resource assumptions.
Quantum security planning contains three clocks. Cryptographic migration is an inventory and systems-change program already underway. Cryptanalytic quantum computing is a fault-tolerant resource question with substantial uncertainty. Quantum key distribution is a physical communications architecture with its own authentication, distance, availability, and trust assumptions. Combining the clocks produces bad controls.
Separate migration, cryptanalysis, and key distribution
The migration register works asset by asset. It records algorithm and parameter set, where keys or signatures are created and verified, data exposure and confidentiality lifetime, protocol and library dependencies, owner, target scheme, compatibility test, rollback, and deadline. A label such as quantum-ready cannot replace any field.
A cryptographic inventory becomes the control plane
Dated evidence table: standards, drafts, and original protocols
The archive path signs software and retains verification value for fifteen years. That lifetime and a slow replacement cycle make it a higher migration priority than an internal short-lived session whose library can be updated centrally. A QKD link does not solve the archive-signature dependency. The register puts the control next to the asset rather than next to a technology category.
| Asset | Current dependency | Exposure or lifetime | Next control |
|---|---|---|---|
| Archive signatures | RSA verification | 15 years | PQC signature migration test |
| External key exchange | ECDH | long-lived captures | hybrid/PQC interoperability |
| Internal sessions | central TLS library | hours | scheduled library upgrade |
| Dedicated fiber link | site-specific transport | continuous | separate QKD architecture review |
Artifact contract. A dated asset inventory and executable priority classifier using exposure, data lifetime, algorithm, and replacement lead time. Every asset has an owner and dependency; high-lifetime vulnerable public-key uses rank ahead of short-lived low-friction systems; no QKD row is accepted as a drop-in PQC replacement.
REQUIRED = {"name": str, "algorithm": str, "owner": str, "exposure": dict,
"replacement_test": str, "dependency": str, "track": str, "source_id": str}
def triage(inventory, urgent_years):
errors = []
migration = []
for asset in inventory:
missing = [name for name, kind in REQUIRED.items()
if name not in asset or type(asset[name]) is not kind or not asset[name]]
exposure = asset.get("exposure", {})
if type(exposure.get("value")) not in (int, float) or exposure.get("unit") != "years":
missing.append("exposure_value_or_unit")
if asset.get("track") == "QKD-evaluation" and not asset.get("physical_link"):
missing.append("physical_link")
if missing:
errors.append(asset.get("name", "asset") + ":" + ",".join(sorted(set(missing))))
elif asset["track"] == "PQC-migration":
migration.append(asset)
ordered = [a["name"] for a in sorted(migration,
key=lambda a: (-a["exposure"]["value"], a["name"]))]
urgent = [a["name"] for a in migration if a["exposure"]["value"] >= urgent_years]
return {"decision": "invalid" if errors else "migrate", "errors": errors,
"priority": ordered, "urgent": sorted(urgent)}
assets = [
{"name": "archive", "algorithm": "RSA-2048", "owner": "release",
"exposure": {"value": 15, "unit": "years"}, "replacement_test": "ML-KEM restore test",
"dependency": "release signer", "track": "PQC-migration", "source_id": "nist-pqc"},
{"name": "external-kex", "algorithm": "ECDH P-256", "owner": "network",
"exposure": {"value": 8, "unit": "years"}, "replacement_test": "hybrid handshake test",
"dependency": "gateway", "track": "PQC-migration", "source_id": "nist-pqc"},
{"name": "metro-link", "algorithm": "authenticated QKD", "owner": "network",
"exposure": {"value": 1, "unit": "years"}, "replacement_test": "key-service failover",
"dependency": "fiber plus authentication", "track": "QKD-evaluation",
"source_id": "etsi-qkd", "physical_link": "leased fiber"}]
base_result = triage(assets, 10)
bad_assets = [{key: value for key, value in assets[0].items() if key != "owner"}, *assets[1:]]
bad_result = triage(bad_assets, 10)
short_archive = [{**assets[0], "exposure": {"value": 0.5, "unit": "years"}}, *assets[1:]]
sensitive_result = triage(short_archive, 10)
assert base_result["priority"][:2] == ["archive", "external-kex"] and base_result["urgent"] == ["archive"]
assert bad_result["decision"] == "invalid" and "owner" in bad_result["errors"][0]
assert sensitive_result["priority"][0] == "external-kex" and sensitive_result["urgent"] == []
print(f"PASS: 68 crypto dossier priority={base_result['priority']} invalid={bad_result['errors']} sensitivity={sensitive_result['priority'][0]}")
Exact validation command: python3 tools/validate_briefs.py --briefs data/editorial_briefs_64_87.json --from 64 --through 87 --check-rewritten-sources --execute-artifacts
Prioritize by exposure lifetime and replacement friction
Begin with discovery and crypto agility: find embedded algorithms, test hybrid or replacement modes where applicable, measure key and signature sizes in real protocols, and exercise rollback. Procurement language should name standards, parameters, profiles, and validation evidence. QKD may be assessed for a particular link only after its physical topology and authentication model are declared.
Run a migration triage on five assets
Prompt. Triage five real cryptographic assets without using a generic 'quantum-safe' label.
Deliverable. Asset register with algorithms, data lifetime, exposure, owner, migration dependency, PQC target, and verification step.
Pass condition. Every asset has evidence and an owner; vulnerable long-lived traffic is prioritized; QKD appears only where its physical link and authentication assumptions are documented.
Model answer: authenticate the archive path first
Format. Five-asset register prioritizing long-lived archive authentication and key exchange.
The model register prioritizes archive signing, external key exchange, and device-update verification. It assigns an owner and replacement test to all five assets. The QKD row is classified as a separate link study and does not reduce the migration priority of public-key assets. The fixture fails any item without an owner, algorithm, exposure duration, or test, which prevents an inventory from becoming a decorative spreadsheet.
Verification. The classifier reproduces the ordering and fails if an asset lacks an algorithm, owner, exposure window, or replacement test.
Companion work
Artifacts for this chapter
These entries resolve to checked-in local source. Commands are reproduced exactly from the chapter manifest, and source-embedded fixtures are exported as direct downloads.
evidence dossier
Cryptographic migration priority register
Reproduce or test
python3 tools/validate_briefs.py --briefs data/editorial_briefs_64_87.json --from 64 --through 87 --check-rewritten-sources --execute-artifacts
Provenance
Sources and review
- National Institute of Standards and Technology. Post-Quantum Cryptography Standards. NIST. 2024official standardization project
- Dustin Moody et al.. Transition to Post-Quantum Cryptography Standards. National Institute of Standards and Technology. 2024official transition guidance (initial public draft)
- Charles H. Bennett and Gilles Brassard. Quantum cryptography: Public key distribution and coin tossing. Proceedings of the IEEE International Conference on Computers, Systems and Signal Processing / IBM Research. 1984primary conference paper
- Peter W. Shor. Polynomial-time algorithms for prime factorization and discrete logarithms on a quantum computer. SIAM Journal on Computing. 1997primary paper
- Craig Gidney and Martin Ekerå. How to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits. Quantum. 2021primary peer-reviewed resource estimate
- U.S. Government Accountability Office. Quantum Computing and Communications: Status and Prospects. GAO. 2021government technology assessment
- National Academies of Sciences, Engineering, and Medicine. Quantum Computing: Progress and Prospects. National Academies Press. 2019consensus study report
- Lieven M. K. Vandersypen et al.. A look at the full stack. Nature Reviews Physics. 2021peer-reviewed perspective
The load-bearing claims in the chapter are mapped inline to this registered source set. A citation supports only the bounded claim beside it.