Post-Quantum Cryptography: A DevOps Engineer's Migration Playbook

Quantum computing will break current encryption by 2030. Here's a practical, step-by-step playbook for DevOps teams to migrate to post-quantum...

T
TechSaaS Team
12 min read

The Clock Is Ticking

Gartner's latest advisory is unambiguous: asymmetric cryptography that organizations rely on today will be unsafe by 2030. The threat isn't theoretical — "harvest now, decrypt later" attacks are already underway, with adversaries collecting encrypted data today to decrypt once quantum computers mature.

<div style="margin:2.5rem auto;max-width:600px;width:100%;text-align:center;"><svg viewBox="0 0 600 170" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"><rect width="600" height="170" rx="12" fill="#1a1a2e"/><path d="M80,90 Q80,50 120,50 Q130,30 160,35 Q190,25 200,50 Q230,45 230,70 Q240,90 210,95 L100,95 Q70,95 80,90 Z" fill="none" stroke="#3b82f6" stroke-width="1.5"/><text x="155" y="75" text-anchor="middle" fill="#3b82f6" font-size="11" font-family="system-ui">Cloud</text><text x="155" y="120" text-anchor="middle" fill="#94a3b8" font-size="9" font-family="system-ui">$5,000/mo</text><defs><marker id="arrow9" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto"><path d="M0,0 L10,3.5 L0,7" fill="#2dd4bf"/></marker></defs><line x1="245" y1="70" x2="340" y2="70" stroke="#2dd4bf" stroke-width="2.5" marker-end="url(#arrow9)"/><text x="293" y="60" text-anchor="middle" fill="#2dd4bf" font-size="10" font-family="system-ui" font-weight="bold">Migrate</text><rect x="355" y="35" width="180" height="70" rx="8" fill="none" stroke="#6366f1" stroke-width="2"/><rect x="365" y="45" width="160" height="15" rx="3" fill="#6366f1" opacity="0.7"/><rect x="365" y="65" width="160" height="15" rx="3" fill="#a855f7" opacity="0.7"/><rect x="365" y="85" width="100" height="10" rx="2" fill="#2dd4bf" opacity="0.5"/><text x="445" y="57" text-anchor="middle" fill="#ffffff" font-size="9" font-family="system-ui">Bare Metal</text><text x="445" y="77" text-anchor="middle" fill="#ffffff" font-size="9" font-family="system-ui">Docker + LXC</text><text x="445" y="120" text-anchor="middle" fill="#94a3b8" font-size="9" font-family="system-ui">$200/mo</text><text x="300" y="150" text-anchor="middle" fill="#2dd4bf" font-size="11" font-family="system-ui" font-weight="bold">96% cost reduction</text></svg><p style="margin-top:0.75rem;font-size:0.85rem;color:#94a3b8;font-style:italic;line-height:1.4;">Cloud to self-hosted migration can dramatically reduce infrastructure costs while maintaining full control.</p></div>

For DevOps teams, this isn't a distant concern. The migration to post-quantum cryptography (PQC) is a multi-year infrastructure project, and the window to start is now.

Understanding the Threat Model

What Quantum Computing Breaks

Quantum computers using Shor's algorithm will efficiently factor large numbers and compute discrete logarithms, breaking:

RSA (all key sizes)
ECDSA/ECDH (all curves)
DH key exchange (all groups)
DSA signatures

This means TLS, SSH, VPNs, code signing, certificate authorities, and JWT tokens are all vulnerable.

What Remains Safe

Symmetric algorithms (AES-256) and hash functions (SHA-256, SHA-3) remain quantum-resistant with doubled key sizes. Grover's algorithm only provides a quadratic speedup against these, so AES-256 becomes equivalent to AES-128 strength — still secure.

The NIST PQC Standards

NIST finalized the first wave of post-quantum standards in 2024:

ML-KEM (FIPS 203): Key encapsulation mechanism based on CRYSTALS-Kyber. Use for TLS, SSH, VPN key exchange.
ML-DSA (FIPS 204): Digital signature algorithm based on CRYSTALS-Dilithium. Use for code signing, certificates, JWT.
SLH-DSA (FIPS 205): Stateless hash-based signature scheme based on SPHINCS+. Use as a conservative backup for signatures.

The Migration Playbook

Phase 1: Inventory and Assessment (Weeks 1-4)

Step 1: Cryptographic inventory

Scan your infrastructure for all cryptographic usage:

# Find all certificate files
find /etc -name '*.pem' -o -name '*.crt' -o -name '*.key' 2>/dev/null

# Check TLS cipher suites on your services
nmap --script ssl-enum-ciphers -p 443 your-service.example.com

# Audit SSH key types across your fleet
for host in $(cat hosts.txt); do
  ssh $host 'cat /etc/ssh/ssh_host_*_key.pub' 2>/dev/null | awk '{print $NF, $1}'
done

Step 2: Classify data sensitivity

Prioritize migration based on data longevity:

Urgent: Data that must remain confidential for 10+ years (healthcare, finance, government)
High: Authentication and signing systems (certificates, SSH, code signing)
Medium: Session-based encryption (TLS for web traffic with ephemeral data)
Lower: Internal-only services with short-lived data

<div style="margin:2.5rem auto;max-width:600px;width:100%;text-align:center;"><svg viewBox="0 0 600 220" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"><rect width="600" height="220" rx="12" fill="#1a1a2e"/><path d="M300,25 L380,55 L380,120 Q380,170 300,195 Q220,170 220,120 L220,55 Z" fill="none" stroke="#6366f1" stroke-width="2.5"/><path d="M300,40 L365,65 L365,118 Q365,160 300,180 Q235,160 235,118 L235,65 Z" fill="#6366f1" opacity="0.15"/><rect x="280" y="95" width="40" height="30" rx="4" fill="#6366f1" opacity="0.9"/><path d="M288,95 L288,82 Q288,72 300,72 Q312,72 312,82 L312,95" fill="none" stroke="#6366f1" stroke-width="2.5"/><circle cx="300" cy="110" r="4" fill="#ffffff"/><text x="90" y="60" text-anchor="middle" fill="#3b82f6" font-size="10" font-family="system-ui">Firewall</text><line x1="130" y1="57" x2="218" y2="57" stroke="#3b82f6" stroke-width="1" stroke-dasharray="3,3"/><text x="90" y="100" text-anchor="middle" fill="#a855f7" font-size="10" font-family="system-ui">WAF</text><line x1="110" y1="97" x2="220" y2="85" stroke="#a855f7" stroke-width="1" stroke-dasharray="3,3"/><text x="90" y="140" text-anchor="middle" fill="#2dd4bf" font-size="10" font-family="system-ui">SSO / MFA</text><line x1="130" y1="137" x2="222" y2="120" stroke="#2dd4bf" stroke-width="1" stroke-dasharray="3,3"/><text x="510" y="60" text-anchor="middle" fill="#f59e0b" font-size="10" font-family="system-ui">TLS/SSL</text><line x1="470" y1="57" x2="382" y2="57" stroke="#f59e0b" stroke-width="1" stroke-dasharray="3,3"/><text x="510" y="100" text-anchor="middle" fill="#3b82f6" font-size="10" font-family="system-ui">RBAC</text><line x1="490" y1="97" x2="380" y2="85" stroke="#3b82f6" stroke-width="1" stroke-dasharray="3,3"/><text x="510" y="140" text-anchor="middle" fill="#a855f7" font-size="10" font-family="system-ui">Audit Logs</text><line x1="470" y1="137" x2="378" y2="120" stroke="#a855f7" stroke-width="1" stroke-dasharray="3,3"/></svg><p style="margin-top:0.75rem;font-size:0.85rem;color:#94a3b8;font-style:italic;line-height:1.4;">Defense in depth: multiple security layers protect your infrastructure from threats.</p></div>

Phase 2: Hybrid Implementation (Weeks 5-12)

The industry consensus is to deploy hybrid cryptography — combining classical and post-quantum algorithms. If either is broken, the other provides protection.

TLS Migration:

OpenSSL 3.5+ supports hybrid key exchange. Update your Nginx/Traefik configuration:

ssl_ecdh_curve X25519MLKEM768:X25519:secp384r1;
ssl_protocols TLSv1.3;

This uses X25519+ML-KEM-768 hybrid key exchange for TLS 1.3 connections.

SSH Migration:

OpenSSH 9.x supports PQC key exchange:

# Generate hybrid SSH keys
ssh-keygen -t ml-kem-768-x25519 -f ~/.ssh/id_pqc

# Update sshd_config
KexAlgorithms mlkem768x25519-sha256,curve25519-sha256

Certificate Authority:

Deploy hybrid certificates that contain both classical and PQC signatures. This ensures backward compatibility while adding quantum resistance.

Phase 3: Testing and Validation (Weeks 13-16)

Compatibility testing:

Test all clients and services with hybrid TLS
Verify SSH connectivity across your fleet
Check that older clients gracefully fall back to classical algorithms
Load test to measure PQC performance overhead (expect 10-30% increase in handshake time)

CI/CD integration:

# Add PQC compliance checks to your pipeline
pqc-audit:
  stage: security
  script:
    - pqc-scanner --config pqc-policy.yml --fail-on classical-only
    - openssl s_client -connect $SERVICE:443 | grep -i 'kem\|kyber'
  allow_failure: false

Phase 4: Full Migration (Weeks 17-24)

1. Rotate all certificates to hybrid PQC certificates 2. Update VPN configurations to use PQC key exchange 3. Migrate code signing to ML-DSA signatures 4. Update JWT token signing to PQC algorithms 5. Deprecate classical-only cipher suites

Performance Considerations

PQC algorithms have larger key sizes and slightly higher computational costs:

Algorithm
Public Key Size
Signature Size
Speed Impact

|-----------|----------------|----------------|-------------|

ML-KEM-768
1,184 bytes
N/A (KEM)
+5-15% handshake
ML-DSA-65
1,952 bytes
3,293 bytes
+10-25% signing
SLH-DSA-128s
32 bytes
7,856 bytes
+50-100% signing

For most web services, the overhead is negligible. For high-throughput API gateways, benchmark carefully and consider hardware acceleration.

Common Pitfalls

1. Don't wait for perfect standards — NIST standards are finalized. Hybrid deployment protects you now. 2. Don't forget embedded systems — IoT devices, HSMs, and firmware may need separate upgrade paths. 3. Don't ignore key management — PQC keys are larger. Update your key management infrastructure. 4. Don't skip the inventory — You can't migrate what you don't know about.

The Timeline

IBM's roadmap targets a quantum-safe ecosystem by 2030. That means:

2026: Start cryptographic inventory and hybrid deployments
2027-2028: Complete migration of all externally-facing services
2029: Migrate internal services and legacy systems
2030: Deprecate all classical-only cryptography

Starting today gives you a four-year runway. Starting in 2028 makes it a fire drill.

<div style="margin:2.5rem auto;max-width:600px;width:100%;text-align:center;"><svg viewBox="0 0 600 180" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;"><rect width="600" height="180" rx="12" fill="#1a1a2e"/><circle cx="60" cy="90" r="20" fill="none" stroke="#3b82f6" stroke-width="2"/><text x="60" y="94" text-anchor="middle" fill="#3b82f6" font-size="11" font-family="system-ui">User</text><rect x="120" y="65" width="95" height="50" rx="8" fill="#6366f1" opacity="0.85"/><text x="167" y="85" text-anchor="middle" fill="#ffffff" font-size="10" font-family="system-ui">Identity</text><text x="167" y="100" text-anchor="middle" fill="#ffffff" font-size="10" font-family="system-ui">Verify</text><rect x="250" y="65" width="95" height="50" rx="8" fill="#a855f7" opacity="0.85"/><text x="297" y="85" text-anchor="middle" fill="#ffffff" font-size="10" font-family="system-ui">Policy</text><text x="297" y="100" text-anchor="middle" fill="#ffffff" font-size="10" font-family="system-ui">Engine</text><rect x="380" y="65" width="95" height="50" rx="8" fill="#2dd4bf" opacity="0.85"/><text x="427" y="85" text-anchor="middle" fill="#1a1a2e" font-size="10" font-family="system-ui">Access</text><text x="427" y="100" text-anchor="middle" fill="#1a1a2e" font-size="10" font-family="system-ui">Proxy</text><rect x="510" y="65" width="60" height="50" rx="8" fill="#f59e0b" opacity="0.85"/><text x="540" y="94" text-anchor="middle" fill="#1a1a2e" font-size="10" font-family="system-ui">App</text><defs><marker id="arrow5" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto"><path d="M0,0 L8,3 L0,6" fill="#e2e8f0"/></marker></defs><line x1="82" y1="90" x2="118" y2="90" stroke="#e2e8f0" stroke-width="1.5" marker-end="url(#arrow5)"/><line x1="217" y1="90" x2="248" y2="90" stroke="#e2e8f0" stroke-width="1.5" marker-end="url(#arrow5)"/><line x1="347" y1="90" x2="378" y2="90" stroke="#e2e8f0" stroke-width="1.5" marker-end="url(#arrow5)"/><line x1="477" y1="90" x2="508" y2="90" stroke="#e2e8f0" stroke-width="1.5" marker-end="url(#arrow5)"/><text x="167" y="140" text-anchor="middle" fill="#94a3b8" font-size="9" font-family="system-ui">MFA + Device</text><text x="297" y="140" text-anchor="middle" fill="#94a3b8" font-size="9" font-family="system-ui">Least Privilege</text><text x="427" y="140" text-anchor="middle" fill="#94a3b8" font-size="9" font-family="system-ui">Encrypted Tunnel</text><text x="300" y="165" text-anchor="middle" fill="#6366f1" font-size="11" font-family="system-ui" font-weight="bold">Never Trust, Always Verify</text></svg><p style="margin-top:0.75rem;font-size:0.85rem;color:#94a3b8;font-style:italic;line-height:1.4;">Zero Trust architecture: every request is verified through identity, policy, and access proxy layers.</p></div>

Getting Started This Week

1. Run a cryptographic inventory scan on your infrastructure 2. Update OpenSSL to 3.5+ and enable hybrid key exchange in your reverse proxy 3. Generate PQC SSH keys for your team 4. Add PQC compliance checks to your CI/CD pipeline 5. Brief your security team on the migration timeline

The quantum threat is real, the standards are ready, and the tools exist. The only missing piece is execution.

#post-quantum#cryptography#devops#security#migration

Need help with security?

TechSaaS provides expert consulting and managed services for cloud infrastructure, DevOps, and AI/ML operations.