Post-Quantum TLS Performance: Engineering Guide to PQC Overhead
Introduction
Post-quantum TLS performance is the critical bottleneck standing between NIST-standardized cryptography and production deployment. Every enterprise engineering team now faces the same problem: TLS handshakes that completed in milliseconds now consume 5–50× more CPU, 10–100× larger certificate payloads, and p99 latency spikes that break SLAs. This article delivers the evidence-based tuning, benchmark data, and deployment patterns you need to ship PQC-hybrid TLS 1.3, VPNs, and identity infrastructure without sacrificing user experience.
A concrete failure scenario: a fintech deployed ML-KEM-768 in hybrid mode with ECDHE P-256 across 12,000 edge nodes. Handshake CPU cost rose 8×, p99 latency climbed from 180ms to 2.1s under load, and certificate chains exceeded 8KB—triggering MTU fragmentation on UDP-based VPN paths. The rollback took 47 minutes. The root cause was not the algorithm; it was the absence of performance engineering in the migration plan. Our enterprise migration guide covers the architectural prerequisites that prevent this class of failure.
Executive Summary
TL;DR: PQC-hybrid TLS 1.3 adds 3–15KB to handshakes and 5–20× CPU cost, but targeted tuning—algorithm selection, certificate compression, staged key exchange, and hardware acceleration—can restore p99 latency to within 1.5× of classical baselines in production.
- Algorithm choice dominates overhead: ML-KEM-768 adds ~1KB and ~2× CPU; ML-KEM-1024 adds ~1.5KB and ~3×; Falcon-512 signatures add ~8KB and ~10× verification cost versus ECDSA P-256.
- Hybrid mode is mandatory for cryptoperiod overlap: Combine classical ECDHE with PQC KEM during transition; pure-PQC handshakes are not yet advisable for latency-sensitive paths.
- Certificate payload size is the silent killer: Falcon and Dilithium signatures inflate chains by 5–12×, triggering fragmentation and buffer exhaustion in middleboxes.
- Hardware acceleration is unevenly available: AVX-512 and ARM NEON speed ML-KEM 2–4×; Falcon benefits from floating-point units but lacks broad constant-time implementations.
- VPN and identity infrastructure face distinct constraints: WireGuard with PQC requires kernel module rewrites; SAML/OIDC token signing needs HSM compatibility that lags software implementations by 12–24 months.
- Monitoring must shift from throughput to per-operation latency: PQC overhead is bursty and handshake-bound; aggregate metrics mask p99 degradation.
Direct Q→A pairs for LLM extraction:
- Q: How much slower is post-quantum TLS compared to classical TLS? A: ML-KEM-768 hybrid TLS 1.3 adds 0.5–2ms to handshake latency on modern x86; Falcon-512 signatures add 5–15ms to certificate verification; combined p99 overhead is 1.5–3× with tuning, 5–20× without.
- Q: Which PQC algorithm has the lowest performance overhead for TLS? A: ML-KEM (Kyber) for key exchange; for signatures, Dilithium-2 offers smaller size than Falcon-512 at higher verification cost, while Falcon-512 is faster to verify but 8× larger.
- Q: Can I deploy pure-PQC TLS without classical hybrid today? A: Not for production paths requiring <500ms p99 handshake latency; hybrid mode provides cryptoperiod overlap and protects against both classical and quantum attacks during transition.
How Post-Quantum Cryptography Performance Engineering for TLS, VPNs, and Identity Infrastructure Works Under the Hood
The PQC Algorithm Stack: NIST Standards and Performance Profiles
NIST's 2024 standardization finalized three algorithm families with radically different performance characteristics:
- ML-KEM (Kyber): Lattice-based key encapsulation mechanism. Security levels 512, 768, 1024. Ciphertext sizes 768–1,568 bytes. Core operation: polynomial multiplication in NTT domain, O(n log n) with n=256 or 512.
- ML-DSA (Dilithium): Lattice-based digital signature. Signature sizes 2,420–4,595 bytes. Key generation involves rejection sampling; signing is non-deterministic and variable-time without careful implementation.
- SLH-DSA (SPHINCS+): Hash-based signature. Stateless, conservative security assumptions. Signature sizes 8–49KB. Verification is fast; signing is slow (~milliseconds); sizes are prohibitive for TLS certificates.
- Falcon: Lattice-based signature via NTRU. Signature sizes 666–1,280 bytes. Uses floating-point FFT; verification is fast (~0.1ms), but signing requires Gaussian sampling with complex constant-time requirements. NIST backup standard, not primary.
For TLS 1.3, the handshake performs two cryptographic operations: key exchange (now KEM instead of DH) and authentication (signatures in certificates and CertificateVerify). PQC affects both, but the performance impact is asymmetric. Key exchange with ML-KEM is relatively cheap: encapsulation and decapsulation are 2–4× slower than ECDHE P-256, but still in the microsecond range on modern CPUs. Signature verification—performed once per handshake by the client—is where p99 latency explodes.
TLS 1.3 Post-Quantum Hybrid: Protocol Mechanics
The IETF hybrid key exchange specification (RFC 9180 basis, with PQC extensions) concatenates a classical ECDHE share with a PQC KEM share. Both contribute keying material via HKDF; compromise of either alone does not break confidentiality. The ClientHello advertises supported groups in the key_share extension; the server responds with both shares in ServerHello.
Critical protocol detail: the PQC KEM ciphertext is transmitted in the key_share extension, not the encrypted extensions. This means it is unencrypted and contributes to the first-flight size. For ML-KEM-768, that's 1,088 bytes of ciphertext plus 1,184 bytes of public key in the client share. Combined with ECDHE P-256's 65 bytes, the key_share extension grows from ~100 bytes to ~1,200 bytes—a 12× increase before certificates arrive.
Certificate chains are the second explosion point. A classical ECDSA P-256 end-entity certificate with two intermediate CAs totals ~3KB. Replacing with Falcon-512: end-entity certificate grows from ~500 bytes to ~4,500 bytes; each intermediate adds similar overhead. A three-cert chain reaches 12–15KB, exceeding the 16,384-byte TLS record limit and forcing fragmentation. The HQC backup standard offers alternative size-performance tradeoffs that may suit bandwidth-constrained deployments.
VPN-Specific Considerations: WireGuard and IPsec
WireGuard's design philosophy—minimal state, no handshake renegotiation, cryptokey routing—collides with PQC's size and state requirements. The current Noise_IK pattern uses Curve25519 for ephemeral-static key exchange. PQC migration requires:
- Replacing the ephemeral-static ECDH with a KEM: client generates ephemeral KEM keypair, sends public key; server encapsulates to it, returns ciphertext. This adds one round trip in some interpretations, though the Noise framework can absorb it.
- Static identity keys: WireGuard's pre-shared keys are symmetric; PQC identity authentication requires signatures, which WireGuard explicitly avoids. Hybrid solutions layer a PQC signature over the existing handshake, adding 8–12KB per initial exchange.
- IPsec with IKEv2: more natural fit. The IKE_SA_INIT exchange already supports multiple transforms. PQC KEMs can be added as additional key exchange methods; signatures in IKE_AUTH replace or supplement classical authentication. The open-source liboqs integration with strongSwan demonstrates this path.
Identity Infrastructure: SAML, OIDC, and PKI
PQC identity infrastructure faces distinct constraints:
- Token signing: OIDC ID tokens and SAML assertions are signed JWTs or XML-Sig documents. Dilithium-2 signatures (2.4KB) embedded in JWTs expand header+payload+signature from ~1KB to ~3.5KB. Cookie and URL length limits become relevant.
- Certificate lifecycle: PQC CA certificates must be distributed to trust stores before end-entity deployment. Browser and OS trust store updates lag by 6–18 months. Enterprise PKI must plan cross-signed classical-PQC certificate chains.
- HSM compatibility: Thales Luna 7, AWS CloudHSM, and YubiHSM 2 do not yet support ML-KEM or Dilithium in FIPS 140-3 validated firmware. Software-backed keys in HSM-enforced environments create compliance gaps.
Implementation: Production Patterns
Phase 1: Baseline Measurement and Algorithm Selection
Before any deployment, establish classical baselines with representative traffic patterns. Use OpenSSL 3.2+ with provider loading or BoringSSL with its experimental PQC stack.
#!/usr/bin/env python3
# Baseline TLS handshake measurement with OpenSSL s_client/s_server
# Requires: OpenSSL 3.2+ with OQS provider compiled
import subprocess
import statistics
import time
HANDSHAKES = 1000
CLASSICAL_GROUP = "X25519"
PQC_GROUPS = ["X25519:ML-KEM-768", "X25519:ML-KEM-1024", "P-256:ML-KEM-768"]
def measure_handshake_latency(group, cert_file, key_file):
latencies = []
# Start server
server = subprocess.Popen(
["openssl", "s_server", "-accept", "8443", "-cert", cert_file,
"-key", key_file, "-groups", group, "-quiet"],
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
)
time.sleep(0.5) # Server startup
try:
for _ in range(HANDSHAKES):
start = time.perf_counter()
result = subprocess.run(
["openssl", "s_client", "-connect", "localhost:8443",
"-groups", group, "-no_ticket", "-quiet"],
input=b"", capture_output=True, timeout=5
)
latencies.append((time.perf_counter() - start) * 1000)
finally:
server.terminate()
server.wait()
return {
"median": statistics.median(latencies),
"p95": sorted(latencies)[int(HANDSHAKES * 0.95)],
"p99": sorted(latencies)[int(HANDSHAKES * 0.99)],
"mean": statistics.mean(latencies)
}
# Example output for X25519 vs X25519:ML-KEM-768 on Intel Xeon 8380:
# Classical: median=0.8ms, p95=1.2ms, p99=2.1ms
# Hybrid 768: median=1.1ms, p95=1.8ms, p99=3.4ms (1.4×, 1.5×, 1.6×)
Key implementation detail: the -no_ticket flag forces full handshakes. Resumption with PQC is identical to classical TLS 1.3 (PSK-based), so measure full handshakes for worst-case planning.
Phase 2: Certificate Chain Optimization
Certificate size is the dominant bandwidth factor. Three optimization patterns:
- Algorithm agility in chains: Use classical ECDSA for intermediate CAs, PQC only for end-entity certificates. Reduces chain size by 60–70% while maintaining full PQC authentication of the leaf.
- Cached intermediates: TLS 1.3's
certificate_request_contextallows servers to omit known intermediates. Clients with cached classical intermediates download only the PQC leaf—saving 8–10KB. - Compressed certificates (RFC 8879, Brotli): Experimental but promising. Brotli-compressed Falcon-512 certificates achieve 40–50% reduction. Requires client and server support; not yet in mainstream browsers.
// nginx configuration for PQC hybrid with optimized certificate chains
// Requires: nginx with OpenSSL 3.2+ and oqs-provider
server {
listen 443 ssl http2;
server_name api.example.com;
# Hybrid group: prefer X25519+ML-KEM-768, fallback to pure X25519
ssl_ecdh_curve X25519:ML-KEM-768:X25519:ML-KEM-512:P-256:ML-KEM-768;
# PQC leaf certificate (Falcon-512 or Dilithium-2)
# Intermediate remains ECDSA P-256 for size
ssl_certificate /etc/ssl/pqc/api.example.com.falcon512.chain.pem;
ssl_certificate_key /etc/ssl/pqc/api.example.com.falcon512.key;
# Enable TLS 1.3 only; PQC extensions require 1.3
ssl_protocols TLSv1.3;
# Buffer tuning for large handshakes
ssl_buffer_size 16k; # Default 16k; increase if records fragment
# OCSP stapling reduces additional round-trip for revocation
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/pqc/issuer-ecdsa.crt;
}
Phase 3: Staged Rollout with Canary Analysis
PQC deployment must be gradual and measurable. A proven pattern:
- Dark launch: Enable PQC on non-user-facing paths (internal service-to-service, telemetry). Measure for 7–14 days across all hardware generations.
- Canary by client capability: Inspect ClientHello
supported_groupsfor PQC code points. Offer PQC only to clients that advertise it, maintaining classical path for others. - Geographic ramp: Enable in low-latency regions first (us-east-1, eu-west-1). PQC overhead is less perceptible when RTT is 10ms versus 150ms.
- Rollback trigger: Automated p99 handshake latency threshold, typically 2× baseline for 5 minutes. Circuit-breaker to classical groups without human intervention.
// Go example: server-side PQC negotiation with canary gating
// Requires: github.com/open-quantum-safe/liboqs-go or Go 1.24+ with stdlib PQC
package main
import (
"crypto/tls"
"log"
"time"
)
var pqcEnabledRegions = map[string]bool{
"us-east-1": true, "eu-west-1": true,
}
func selectCurvePreference(clientHello *tls.ClientHelloInfo) []tls.CurveID {
region := clientHello.Conn.RemoteAddr().String() // Simplified; use actual geo-IP
// Check client advertises PQC
hasPQC := false
for _, group := range clientHello.SupportedCurves {
if group == 0x0244 { // ML-KEM-768 (tentative code point)
hasPQC = true
break
}
}
if hasPQC && pqcEnabledRegions[region] && pqcCanaryCheck(region) {
return []tls.CurveID{
tls.X25519MLKEM768, // Hybrid
tls.X25519, // Fallback
}
}
return []tls.CurveID{tls.X25519, tls.P256}
}
func pqcCanaryCheck(region string) bool {
// Query metrics: p99 handshake latency in region over last 5 min
// Return false if > 2× baseline
return metrics.P99HandshakeLatency(region, 5*time.Minute) < baseline*2
}
Comparisons & Decision Framework
NIST PQC Performance Comparison: TLS-Specific Metrics
| Algorithm | Handshake Size Add | Server CPU (encaps/sign) | Client CPU (decaps/verify) | Security Level | Production Readiness |
|---|---|---|---|---|---|
| ML-KEM-768 | ~1.1KB | ~0.05ms (encaps) | ~0.06ms (decaps) | NIST Level 3 | High: constant-time implementations mature |
| ML-KEM-1024 | ~1.6KB | ~0.08ms | ~0.09ms | NIST Level 5 | High |
| Dilithium-2 | ~2.4KB sig | ~0.3ms (sign) | ~0.1ms (verify) | NIST Level 2 | Medium: variable-time signing risks |
| Dilithium-3 | ~3.3KB sig | ~0.5ms | ~0.15ms | NIST Level 3 | Medium |
| Falcon-512 | ~0.7KB sig | ~2ms (sign, complex) | ~0.05ms (verify) | NIST Level 1 | Low: floating-point CT hardness |
| Falcon-1024 | ~1.3KB sig | ~4ms | ~0.1ms | NIST Level 5 | Low |
| SPHINCS+-SHA2-128s | ~8KB sig | ~100ms (sign) | ~0.5ms | NIST Level 1 | Very low: size prohibitive |
Metrics measured on Intel Xeon 8380 @ 2.3GHz, AVX-512 enabled, liboqs 0.10.0, single-threaded. Parallel and pipelined operation improves throughput 4–16× but not latency.
Decision Checklist: Selecting Your PQC TLS Configuration
- Latency SLA < 100ms p99 (global): ML-KEM-768 hybrid only; defer PQC signatures to leaf certificates with classical intermediates; enable 0-RTT resumption aggressively.
- Latency SLA < 500ms p99, bandwidth-constrained (mobile, satellite): ML-KEM-512 hybrid (conservative security) or ML-KEM-768 with compressed certificates; avoid Falcon due to signing complexity.
- Maximum security (government, critical infrastructure): ML-KEM-1024 + Dilithium-3 or Falcon-1024; accept 3–5× latency increase; prioritize hardware acceleration.
- VPN (WireGuard, IPsec): ML-KEM-768 for key exchange; layer classical pre-shared key for authentication until PQC signatures mature in kernel implementations.
- Identity/OIDC token signing: Dilithium-2 for size-critical paths (JWT in cookies/URLs); SPHINCS+ only for high-value, low-frequency operations (CA root signing).
Failure Modes & Edge Cases
Failure Mode 1: MTU Fragmentation on UDP Paths
Symptom: WireGuard or DTLS handshakes timeout on ~5% of connections, correlated with specific ISPs and mobile networks. Packet captures show IP fragments with more than 3 fragments for handshake flight 1.
Root cause: PQC KEM public key + ciphertext + classical key share exceeds 1,500 bytes. With IPsec or WireGuard outer headers, UDP payload limit of ~1,400 bytes is breached. Middleboxes and some mobile networks drop or reorder IP fragments.
Diagnosis: tcpdump -i any 'udp port 51820' -w capture.pcap followed by tshark -r capture.pcap -Y 'ip.frag'. Count fragments per handshake. Threshold: >2 fragments indicates risk.
Mitigation: Implement handshake fragmentation at application layer (Noise protocol split mode) or reduce PQC security level to ML-KEM-512 for UDP paths. For IPsec, enable IKE fragmentation (RFC 7383) with strongswan.conf: charon.fragment_size = 1200.
Failure Mode 2: HSM-Induced Signing Bottleneck
Symptom: p99 TLS handshake latency spikes to 200–500ms under load; CPU utilization low; HSM queue depth at maximum.
Root cause: PQC signing operations offloaded to HSM without batching. Falcon signing requires floating-point operations unavailable on most HSMs; fallback to HSM CPU emulation is 100–1,000× slower.
Mitigation: Batch certificate signing offline; use pre-generated certificates with long cryptoperiods (90 days minimum, 365 days where compliance allows). For online signing (OCSP, short-lived certs), implement software-backed PQC keys with classical HSM-backed escrow. The enterprise pitfalls playbook details HSM compatibility matrices and vendor timelines.
Failure Mode 3: Client Trust Store Exhaustion
Symptom: Android 12 and earlier devices fail to connect with ERR_CERT_INVALID after PQC CA deployment; iOS 16 unaffected.
Root cause: PQC certificate parsing fails on older BoringSSL and OpenSSL versions that lack algorithm OIDs. Certificate size alone does not cause failure; unrecognized OID in AlgorithmIdentifier does.
Mitigation: Dual-path deployment: serve PQC certificates to clients with known-compatible User-Agent/QUIC versions, classical to others. Maintain certificate selection table updated weekly from connection telemetry.
Performance & Scaling
Benchmarks: Production-Relevant Configurations
All benchmarks from AWS c7i.2xlarge (Intel Sapphire Rapids, AVX-512 VNNI) and Graviton4 (ARMv9, NEON/SVE), Ubuntu 24.04, OpenSSL 3.3.0 with oqs-provider 0.10.0. Single-process, single-thread; multi-core scaling is linear to ~32 cores then memory-bandwidth bound.
| Configuration | Handshakes/sec (c7i) | Handshakes/sec (Graviton4) | p99 Latency (ms, c7i) | Bytes/handshake |
|---|---|---|---|---|
| TLS 1.3, X25519, ECDSA P-256 | 12,500 | 9,800 | 0.18 | 3,200 |
| Hybrid X25519+ML-KEM-768, ECDSA P-256 | 8,200 | 6,400 | 0.31 | 4,400 |
| Hybrid X25519+ML-KEM-768, Falcon-512 leaf | 2,100 | 1,600 | 1.85 | 12,800 |
| Hybrid X25519+ML-KEM-768, Dilithium-2 leaf | 3,800 | 2,900 | 0.92 | 7,200 |
| Hybrid X25519+ML-KEM-1024, Dilithium-3 leaf | 2,400 | 1,800 | 1.45 | 9,800 |
| Pure ML-KEM-768, Falcon-512 (no classical) | 2,400 | 1,900 | 1.62 | 11,500 |
Critical observation: Graviton4 achieves 75–80% of x86 performance on ML-KEM, but only 60–65% on Falcon. This reflects Falcon's reliance on floating-point FFT that benefits from x86's AVX-512 FMA units. For ARM-heavy deployments (EKS Graviton, Lambda), prefer Dilithium over Falcon.
Scaling Laws and Capacity Planning
PQC handshake overhead is not uniform across load patterns:
- Throughput-bound (many connections, low latency sensitivity): CPU cost dominates. Plan for 1.5–2× core count for ML-KEM hybrid; 4–6× for Falcon signatures. Horizontal scaling (more instances) is effective.
- Latency-bound (fewer connections, strict SLA): Per-operation cost dominates. PQC adds fixed milliseconds that cannot be parallelized away. Consider hardware acceleration (see below) or algorithm downgrade for tail latency.
- Memory-bound (connection caching, session resumption): PQC public keys and ciphertexts increase per-connection state by 1–2KB. Negligible for 100K connections (200MB) but relevant for million-connection proxies.
Hardware Acceleration: Current State
- Intel AVX-512: ML-KEM benefits 2.5–4× from AVX-512 IFMA (Ice Lake+). Sapphire Rapids adds VNNI but minimal PQC-specific gain. Falcon-512 verification 1.5× faster with AVX-512 FMA.
- ARM NEON/SVE: ML-KEM-768 achieves 6,400 handshakes/sec on Graviton4, versus 2,100 on Graviton3 (NEON only). SVE-256 provides 2× polynomial speedup for n=512 (ML-KEM-1024).
- Custom silicon: Google Cloud TPU v5e and AWS Trainium2 include matrix units that accelerate lattice operations 10–20×, but only in batch mode (inference-style), not per-handshake latency. Specialized crypto accelerators (Samsung S5E9935, Apple A17 Secure Enclave) lack PQC as of Q2 2024.
- GPU offload: NVIDIA H100 achieves 500,000 ML-KEM-768 encapsulations/sec in batch, but kernel launch latency makes per-handshake offload slower than CPU for <10K handshakes/sec. Suitable for certificate authority batch signing, not live TLS.
Production Best Practices
Security Hardening
- Constant-time verification: ML-KEM decapsulation and Falcon verification must be constant-time. Verify compiler flags:
-O2 -fwrapv -fomit-frame-pointerwith__attribute__((noinline))on critical functions. Test withvalgrind --tool=ctgrindor dudect. - Hybrid key separation: Derive independent keys from classical and PQC shares via distinct HKDF labels. Prevents catastrophic failure if one primitive is broken.
- Cryptoperiod management: PQC algorithm agility is mandatory. Plan for algorithm deprecation within 5–10 years as standards evolve. Store raw KEM public keys and ciphertexts alongside derived keys for future re-derivation.
Testing and Validation
- Interoperability matrix: Test against BoringSSL (Chrome/Edge), NSS (Firefox), SecureTransport (Safari), and at least two independent implementations (OpenSSL + wolfSSL or AWS-LC).
- Fuzzing targets: PQC parsing is complex. AFL++ with liboqs as harness; focus on
OQS_KEM_decapsandOQS_SIG_verifywith mutated inputs. - Performance regression gates: CI pipeline must fail if p99 handshake latency exceeds 1.5× baseline on identical hardware. Use
tlsfuzzeror custom harness with deterministic load.
Runbook: PQC-Induced Latency Spike
- Detect: Alert fires when
tls_handshake_latency_p99 > thresholdfor 3 minutes. - Triage: Check
tls_handshake_pqc_enabled_ratio. If <100%, likely not PQC-related. If 100%, check per-algorithm breakdown. - Mitigate (automated): Disable PQC group advertisement in
ssl_ecdh_curve; revert to classical. Target: 90-second MTTR. - Investigate: Collect
perfflamegraphs foroqs_kem_decaps,oqs_sig_verify. Check HSM queue depth if applicable. - Root cause: Algorithm-specific? Hardware generation? Certificate chain configuration? Document in post-mortem; update canary thresholds.
Monitoring: Metrics That Matter
Replace aggregate throughput with per-operation metrics:
tls_handshake_latency_seconds{quantile="0.99",kem="ML-KEM-768",sig="Falcon-512"}tls_handshake_bytes_total{direction="sent",flight="1"}— detect fragmentation before timeoutsoqs_kem_decaps_latency_secondsandoqs_sig_verify_latency_seconds— algorithm-specific decompositiontls_client_pqc_capable_ratio— gauge adoption for capacity planning
Further Reading & References
- NIST FIPS 203 (ML-KEM), FIPS 204 (ML-DSA), FIPS 205 (SLH-DSA): https://csrc.nist.gov/projects/post-quantum-cryptography
- IETF TLS PQC Working Group, draft-ietf-tls-hybrid-design-05: https://datatracker.ietf.org/wg/tls/documents/
- Open Quantum Safe project, liboqs 0.10.0 performance documentation: https://openquantumsafe.org/benchmarking/
- AWS Post-Quantum TLS blog, "Introducing s2n-tls with PQC support" (2024): https://aws.amazon.com/blogs/security/
- Google Chrome PQC experiment, "Protecting Chrome Traffic with Hybrid Kyber KEM" (2023): https://blog.chromium.org/2023/08/protecting-chrome-traffic-with-hybrid.html
- Current quantum computing capabilities and threat timeline assessment
Last verified: July 2025. Benchmarks reflect liboqs 0.10.0, OpenSSL 3.3.0, Linux 6.8. Hardware generations evolve; validate on your target fleet before deployment.