ScreenshotNeo

BlogEngineering

X25519MLKEM1024: Post-Quantum Hybrid Key Exchange Explained

Learn what X25519MLKEM1024 means, how its components fit together, how it differs from standardized TLS groups, and what to check before deployment.

By the ScreenshotNeo team29 September 20268 min read

X25519MLKEM1024: Post-Quantum Hybrid Key Exchange Explained

Direct answer: X25519MLKEM1024 describes a hybrid key exchange that combines X25519, a classical elliptic-curve Diffie–Hellman exchange, with ML-KEM-1024, a post-quantum key-encapsulation mechanism. It is not one of the three named TLS 1.3 groups in RFC 10024. Treat the exact combination as implementation-specific or application-level unless the protocol you are using defines it.

The name also does not mean that a standardized TLS group called X25519MLKEM1024 is available in every library. RFC 10024 names X25519MLKEM768, SecP256r1MLKEM768, and SecP384r1MLKEM1024. If you need a standards-defined X25519 hybrid for TLS, the named group is X25519MLKEM768; the standardized hybrid using ML-KEM-1024 pairs it with P-384.

This guide explains the components, the naming distinction, message sizes, deployment decisions, and a practical review checklist. It does not prescribe a custom wire protocol: use a protocol specification and a reviewed implementation that define how both contributions are combined and bound to the session.

1. What the name means

X25519 is the classical component. Two parties use elliptic-curve Diffie–Hellman to arrive at shared secret material over a public channel. ML-KEM-1024 is the post-quantum component: one party encapsulates to the other party’s ML-KEM public key, producing a ciphertext and a shared secret that the recipient recovers by decapsulation.

A hybrid exchange uses contributions from both mechanisms to derive session key material. The intended benefit is defense across different mathematical assumptions: the session is not meant to rely on only the classical or only the post-quantum contribution. That benefit depends on the actual protocol construction. Merely running two algorithms does not specify a safe combination.

NIST finalized FIPS 203 on August 13, 2024. It defines ML-KEM-512, ML-KEM-768, and ML-KEM-1024. Higher parameter sets have increasing security strength and decreasing performance among the defined sets. NIST describes a KEM as a set of algorithms that can, under certain conditions, establish a shared secret key over a public channel. NIST states that ML-KEM is currently believed secure even against adversaries with a quantum computer. This is a statement of the standard’s security belief, not a promise of invulnerability or a substitute for implementation review.

2. Is X25519MLKEM1024 a TLS 1.3 standard group?

No—not under that exact name in RFC 10024. The RFC defines these hybrid groups:

RFC 10024 group Classical component ML-KEM component
X25519MLKEM768 X25519 ML-KEM-768
SecP256r1MLKEM768 P-256 ML-KEM-768
SecP384r1MLKEM1024 P-384 ML-KEM-1024

Consequently, seeing the string X25519MLKEM1024 in a product, draft, configuration, or codebase requires context. It may identify a locally defined combination, but the label alone does not tell you its code point, encoding, transcript binding, key derivation, downgrade handling, or interoperability status. Ask which specification defines it and which implementations agree on its bytes-on-the-wire behavior.

Standards names matter operationally. TLS group negotiation uses defined identifiers and encodings; an application-level combination cannot be assumed to interoperate with a TLS implementation that supports a similarly named standardized group. Verify the exact group name and implementation documentation rather than inferring support from the presence of ML-KEM or X25519 separately.

3. How the hybrid exchange works conceptually

  1. Agree on the protocol and group. Both peers need the same defined construction, identifiers, and encodings. Negotiation should not silently fall back in a way that defeats the security policy.
  2. Contribute the classical exchange. The peers exchange X25519 public values and independently compute the matching ECDH secret.
  3. Contribute the KEM exchange. The initiator encapsulates using the responder’s ML-KEM-1024 encapsulation key, sending the resulting KEM ciphertext. The responder decapsulates it.
  4. Combine according to the specified key schedule. The two secret contributions are fed into the protocol-defined derivation, normally with the session transcript and context bound as required by that protocol. Do not invent concatenation, ordering, hashing, or key schedule rules.
  5. Use derived traffic keys. The protocol’s key schedule produces keys for authenticated encryption and other session functions; the raw component secrets are not application traffic keys.

Both sides must derive the same final key material, and the protocol must authenticate the handshake and bind the negotiated group to it. A hybrid can be undermined by incorrect secret combination, weak random generation, malformed-input handling bugs, side channels, or a downgrade path that permits only the classical exchange when policy requires hybrid protection.

A hybrid exchange combines a classical contribution and a post-quantum KEM contribution through a protocol-defined key schedule.
A hybrid exchange combines a classical contribution and a post-quantum KEM contribution through a protocol-defined key schedule.

4. Key and ciphertext sizes

The following ML-KEM-1024 sizes are from NIST’s 2023 draft parameter table. They describe the KEM objects, not the complete TLS handshake, which also has framing, classical key shares, certificates, extensions, and potentially other protocol data.

Larger key shares and ciphertexts make end-to-end message size and transport behavior worth checking.
Larger key shares and ciphertexts make end-to-end message size and transport behavior worth checking.
ML-KEM-1024 object Size Purpose
Encapsulation key 1,568 bytes Public key used to create a KEM ciphertext and shared secret
Decapsulation key 3,168 bytes Private key used to recover the shared secret
Ciphertext 1,568 bytes Value sent for decapsulation
Shared secret 32 bytes Secret input to the protocol key schedule

These numbers are not interchangeable: the encapsulation key is typically sent or otherwise made available to the encapsulating party, while the ciphertext travels back through the protocol. The decapsulation key is private key material and needs suitable storage and handling. The final handshake overhead includes the X25519 contribution and protocol framing in addition to the KEM data.

Plan for larger handshake messages than an X25519-only exchange. That can matter for constrained links, small datagrams, middleboxes, packet fragmentation, handshake retransmissions, and memory-constrained clients. Measure the actual protocol and deployment path. The dossier contains no authoritative benchmark for the exact X25519 plus ML-KEM-1024 combination, so no numeric latency, throughput, or CPU-overhead claim is appropriate without a benchmark matching your implementation, hardware, and protocol.

5. Choosing among the defined hybrid groups

Question X25519MLKEM768 SecP384r1MLKEM1024 Application-defined X25519 + ML-KEM-1024
Standardized name in RFC 10024? Yes Yes No, not by that exact name
Classical component X25519 P-384 X25519
Post-quantum parameter set ML-KEM-768 ML-KEM-1024 ML-KEM-1024
Main implementation question Does the TLS stack implement this group? Does the stack support this group and its integration? Which specification defines the construction and wire format?

Do not choose solely by comparing parameter-set numbers. Check required security policy, protocol support, library availability, certificate and handshake integration, peer interoperability, expected message sizes, and assurance evidence. A standardized group usually gives a clearer interoperability target, but standards conformance by itself does not prove an implementation is secure.

6. Deployment checklist

  1. Identify the protocol boundary. Is this TLS group negotiation, another standardized protocol, or an application-level exchange? Record the exact specification and version.
  2. Confirm names and identifiers. Verify the group identifier and encoding against the authoritative protocol document. Avoid treating a vendor label as a standard identifier.
  3. Confirm both endpoints. Check library and runtime support on clients, servers, proxies, and termination points. Test real negotiation, including what happens when the peer lacks support.
  4. Review downgrade behavior. Decide whether classical fallback is allowed, how it is signaled, and whether application policy detects a session that did not get the required protection.
  5. Check size limits end to end. Account for handshake message limits, transport MTU, datagram fragmentation or TCP segmentation, proxy limits, and constrained-device buffers.
  6. Review randomness and secret handling. Use the library’s approved random-bit generator path. Protect and erase private KEM and ECDH material according to the implementation’s guidance.
  7. Check implementation assurance. Review validation status where relevant, independent audits, side-channel protections, malformed input handling, and security advisories for the exact library version.
  8. Observe without logging secrets. Record negotiated group and handshake outcome for compatibility and policy monitoring, but never log private keys or shared secrets.

7. Reliability, performance, and cost considerations

Hybrid negotiation adds protocol bytes and additional cryptographic work. The practical effect depends on implementation, hardware, connection reuse, protocol framing, network conditions, and peer behavior. Measure handshake completion rates and resource use in the intended environment rather than extrapolating from the KEM sizes alone. Include cold connections and failure paths, not just successful warm sessions.

Reliability work should focus on the whole connection path: whether large handshake messages reach both endpoints, whether middleboxes tolerate the selected group, what fallback does, and whether retries or fragmentation behave as expected. For services, canary rollout and telemetry for negotiated groups can expose interoperability problems. Define a rollback policy that does not unintentionally violate the security requirement.

There is no general price attached to the algorithm itself. Deployment cost comes from implementation work, infrastructure capacity, compatibility testing, and potentially larger traffic. The exact resource and cost impact should be measured on the chosen stack; no universal overhead figure can be inferred from the available evidence.

8. Troubleshooting

Symptom Likely cause What to do
Peer rejects the group name X25519MLKEM1024 is not the RFC 10024 TLS group name Use the group actually specified and supported by both peers, or document the application-level spec that defines the custom name.
Handshake fails after negotiation Different encodings, key-share formats, or key schedule assumptions Compare the protocol version, identifier, wire encoding, and transcript/key schedule requirements at both ends.
Only one peer supports the hybrid Runtime, TLS library, proxy, or endpoint configuration mismatch Check every TLS termination point and verify negotiated group in connection diagnostics; define explicit fallback policy.
Intermittent connection failure on constrained networks Larger handshake messages encounter path, MTU, fragmentation, or buffer limits Capture handshake traces, test representative paths, check transport and proxy limits, and validate retry behavior.
Unexpected classical-only sessions Negotiation selected a fallback group or policy was not enforced Inspect negotiated-group telemetry and enforce the minimum group policy at the correct protocol boundary.
Security review flags custom combination Algorithm pairing is specified, but composition or binding is not Do not design an ad hoc combiner. Adopt a reviewed protocol construction and have its implementation independently assessed.
Performance differs from expectation Workload, CPU, implementation, or network path differs from assumed conditions Benchmark the real implementation with fixed hardware, protocol, concurrency, and connection lifecycle; report those conditions.

9. Frequently asked questions

Is ML-KEM just another name for Kyber?

Kyber is the earlier project name associated with the design. Use ML-KEM when referring to the NIST-standardized algorithm and parameter sets defined in FIPS 203.

Does the name guarantee quantum-safe communication?

No. It indicates intended algorithm components, not the security of a complete deployment. Protocol composition, authentication, implementation quality, randomness, and downgrade policy all matter.

Can I substitute ML-KEM-1024 into a library’s X25519MLKEM768 option?

Do not assume so. A standardized group defines its component choices and encoding. Substitution creates a different construction unless a specification explicitly defines it.

Where should I start for TLS?

Start with RFC 10024 and your TLS implementation’s documentation, then verify the group actually negotiated between representative peers.

10. Capture protocol documentation with ScreenshotNeo

When reviewing a protocol rollout, teams often need a visual record of versioned specification pages, compatibility matrices, or internal documentation in a browser. ScreenshotNeo is a website screenshot API and MCP server for developers. It returns PNG, JPEG, WebP, or PDF from one GET request. Its clean-shot flow accepts consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be disabled. See the ScreenshotNeo website and API documentation.

For example, capture an RFC page as a WebP file:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://www.rfc-editor.org/rfc/rfc10024.html -o rfc10024.webp

Inspect the response headers as well as the image: ScreenshotNeo reports page verdict and billing status, and bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed. Its MCP server exposes take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. Free includes 1,000 shots a month with no card; paid plans start at $5 for 3,000 shots.

Sign up for 1,000 free screenshots a month, with no card required.