Even one small Spring Boot service hides more crypto than you would expect. Java already gives you a path: Bouncy Castle now, hybrid TLS in JDK 27. Inventory first. Hybrid key exchange first. Signatures next.
DES and SHA-1 were eventually broken. RSA and ECDSA have served us well, but they are not immune to the same fate — especially in the face of quantum computing.
lattice-based (ML-KEM / ML-DSA; historically Kyber / Dilithium) hash-based (SLH-DSA / SPHINCS+) code-based (for example HQC) Each relies on mathematical problems that quantum computers are not known to solve efficiently.
Post-Quantum Cryptography | CSRC Approved and in effect FIPS 203 (ML-KEM): key establishment FIPS 204 (ML-DSA): digital signatures FIPS 205 (SLH-DSA): digital signatures Selected / ongoing standardisation FN-DSA (FIPS 206 Initial Public Draft, Sep 2025; final expected late 2026 or early 2027) HQC: additional KEM, draft standard under way
estimates under specific hardware and error-correction assumptions, not deployed systems. How to factor 2048-bit RSA integers in 8 hours using 20 million noisy qubits – Quantum [2505.15917] How to factor 2048-bit RSA integers with less than a million noisy qubits Quantum computers need just 10,000 qubits to break the most secure encryption, scientists warn | Live Science 2025 2019 Mar 2026 20M noisy qubits, about 8 hours ~1M noisy qubits, under a week ~10k-100k physical qubits Architecture-specific estimate (preprint)
concerned about HNDL. expect current encryption to break within five years. 5% have fully deployed quantum-safe encryption. DigiCert, 2025, Survey of 1,042 senior cybersecurity managers (US, UK, AU) Capgemini 2025, Survey of 1,000 orgs (≥$1B revenue) in 13 countries
United States ~2035 (NSA CNSA 2.0) European Union ~2035 (EC Recommendation 2024/1101) United Kingdom ~2035 (NCSC Guidance) Japan ~2035 (Cabinet Secretariat PQC Council) Australia ~2030 (ASD/ACSC Roadmap)
the vulnerable primitive SHA-1 to its secure successor SHA-256, even after the necessary specifications and implementations were available.” – The PQC Migration Handbook Cryptographic migration takes time (SHA-1 deprecated 2017; many systems still used it in 2020+)
roadmap, not only a research topic. 2026 JAN NIST highlighted migration and crypto agility work CSRC Presentations | CSRC Frequently Asked Questions about Post-Quantum Cryptography 2026 FEB JEP 527 completed and shipping in JDK 27 EA JEP 527 / Inside.java blog / JDK 27 Early-Access Release Notes 2026 MAR Google linked its 2029 PQC timeline to hardware and QEC progress Google’s timeline for PQC migration
510: Key Derivation Function (KDF) API JEP 496: ML-KEM JEP 497: ML-DSA JEP 452: KEM API (Key Encapsulation Mechanism) Evolution of PQC support in Java 2023 Sep 2025 Mar 2025 Sep 2026 Sep Java 21 Java 24 Java 25 Java 27
You Will Be Able To Use Tomorrow Introduced functionalities Practical path Java 21 KEM API Use Bouncy Castle where needed Java 24 ML-KEM, ML-DSA Java 25 KDF API Java 27 Hybrid TLS 1.3 (JEP 527) Prefer hybrid TLS through standard JSSE APIs Migration lesson Start with platform capability Do not start with hand-written crypto code
you use the standard javax.net.ssl APIs, JDK 27 offers hybrid named groups first in ClientHello. The handshake goes hybrid when the peer also supports it. No need to change app code unless you override named groups. Override with -Djdk.tls.namedGroups=..."" Supported Named Groups X25519MLKEM768 SecP256r1MLKEM768 SecP384r1MLKEM1024
know 3. Both sides derive two shared secrets: X25519 + ML-KEM 🖥 Client 🌐 Server 2. ServerHello selects the group and returns a hybrid key share 4. HKDF combines them into one handshake secret 1. ClientHello offers a hybrid group (e.g., X25519MLKEM768) NOTE: Certificates can stay RSA or ECDSA for now. JEP 527 changes key exchange first.
a blind spot from the others. One grep is never enough. 1. Dependencies What crypto comes in through libraries or drivers? 2. Source & frameworks 3. Config & KeyStore 4. Runtime capability & Evidence Where does the application ask for crypto? What enables crypto with almost no Java code? What the JVM could use, and what it actually used under real traffic?
supported cipher suites supported named groups Evidence JFR TLS handshakes X.509 validation security events Outside the JVM Edge TLS / Managed crypto / External identity For TLS 1.3: cipher suite != key exchange group Check named groups as well
server key ▪RSA-signed certificate chain Used for HTTPS authentication in this service Same keystore is also referenced by JWT and licence flows in this demo Needs review for certificate and signature migration Does not prove the negotiated TLS named group
JFR / JDK Mission Control protocol version cipher suite certificate-validation events Exact named-group proof JSSE handshake debug packet capture custom audit event Practical rule JFR shows what happened one extra source proves the exact named group
/ X25519MLKEM768 🔑 Shared Secret derived here 🖥 Client 🌐 Server Application Data Application Data ServerHello key_share: X25519 / X25519MLKEM768 Certificate + CertificateVerify RSA / ECDSA signature 🔑 Server identity verified here This is what HNDL targets: Break the key exchange = decrypt ALL past sessions HNDL does NOT apply. Break the signature = forge future sessions only ▪ Key Exchange ▪ Authentication HNDL risk Past sessions decryptable No retroactive impact Time pressure Now (data already captured) Later (future threat only)
the ecosystem is mixed. Hybrid = classical + PQC during transition Pure PQ = likely future end state in controlled ecosystems Use hybrid when interoperability is uncertain Use pure PQ only when you control and can test both ends
near-term public-web recommendation Today Move hybrid key exchange first for HNDL protection Pilot certificate changes only where you control both ends Test trust stores, chain validation, and certificate-size impact Keep RSA/ECDSA on the public web until browser, CA, and standards support is ready Decision rule Controlled ecosystem: experiment Open ecosystem: wait
move to another with less disruption. Testing Roll out gradually, measure behaviour, and revert quickly if needed. Engineering effort Refactor hard-coded crypto before migration pressure arrives.
default. Override when needed JVM-wide: jdk.tls.namedGroups Per-connection: SSLParameters::"setNamedGroups(..."") Earlier JDKs Use provider-specific paths only if you need hybrid TLS.
TLS path Best for public web and mobile systems Faster change, narrower blast radius Inside-out (trust-core-first) First step: map internal trust dependencies and controlled service- to-service domains Best for tightly controlled internal ecosystems Slower change, broader coordination Note: topology order and primitive order are separate axes
Roll out hybrid TLS in phases. Keep backward compatibility. Introduce hybrid certificates only where the client ecosystem is controlled. Backends Java app CDN/Proxy Client Classic TLS Classic TLS Classic TLS
key exchange in TLS • Java 27 / JEP 527 • Browser and CDN deployment paths Later • PQC certificates for TLS authentication • RFC maturity • JSSE integration • Browser and CA ecosystem readiness Keep RSA/ECDSA certificates until the ecosystem is ready.
— AES/HKDF run at the same speed. Still measure: CPU / memory per handshake p50 / p95 handshake latency under real traffic connection-reuse rate (handshake cost amortises here) Handshake size and middlebox risk are on the earlier "key_share" slide.
Retire legacy 8. Migration Timeline — Anonymized Customer Case JDK 27 released in September 2026 Why it took longer than expected - 200+ services / 3,000+ touchpoints, mostly on Java 17 - 60%+ of crypto sat outside the security module - Same 4-layer model as the demo — just at estate scale
test larger handshakes on the real path - use canary rollout and fallback Certificates and keys - start with private PKI - plan for larger keys, signatures, and chain size Libraries and vendors - pin versions - test upgrades separately - ask vendors for PQC timelines early Operations - capture runtime evidence - monitor fallback to classical-only paths - prepare rollback before rollout
migrate what you cannot find. Hybrid key exchange The practical bridge during transition. Not the permanent end state. Start now Migration spans years, not months.
PQC roadmap. Developers Architects Security leads Managers Check runtime providers / TLS evidence Externalise algorithm and provider choice Build a Java 27 hybrid-TLS PoC now Plan production adoption on the first suitable LTS carrying JEP 527 Brief leadership on HNDL risk Fund the roadmap and ask key vendors for their PQC timelines
service keystore Do one 4-layer crypto inventory on that same service Test one hybrid TLS path with JDK 27 EA or a provider-specific hybrid-TLS stack That is how PQC migration starts in the real world.