| Internet-Draft | ietf-tls-mlkem | February 2026 |
| Connolly | Expires 16 August 2026 | [Page] |
This memo defines ML-KEM-512, ML-KEM-768, and ML-KEM-1024 as NamedGroups
and and registers IANA values in the TLS Supported Groups registry for use
in TLS 1.3 to achieve post-quantum (PQ) key establishment.¶
This note is to be removed before publishing as an RFC.¶
Status information for this document may be found at https://datatracker.ietf.org/doc/draft-ietf-tls-mlkem/.¶
Discussion of this document takes place on the Transport Layer Security Working Group mailing list (mailto:tls@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/tls/. Subscribe at https://www.ietf.org/mailman/listinfo/tls/.¶
Source for this draft and an issue tracker can be found at https://github.com/tlswg/draft-ietf-tls-mlkem.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 16 August 2026.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
FIPS 203 (ML-KEM) [FIPS203] is a FIPS standard for post-quantum [RFC9794] key establishment via a lattice-based key encapsulation mechanism (KEM). This document defines key establishment options for TLS 1.3 that use solely post-quantum algorithms, without a hybrid construction that also includes a traditional cryptographic algorithm. Use cases include regulatory frameworks that require standalone post-quantum key establishment, constrained environments where smaller key sizes or less computation are needed, and deployments where legacy middleboxes reject larger hybrid key shares.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
This document models key establishment as key encapsulation mechanisms (KEMs), which consist of three algorithms:¶
KeyGen() -> (pk, sk): A probabilistic key generation algorithm,
which generates a public encapsulation key pk and a secret
decapsulation key sk.¶
Encaps(pk) -> (ct, shared_secret): A probabilistic encapsulation
algorithm, which takes as input a public encapsulation key pk and
outputs a ciphertext ct and shared secret shared_secret.¶
Decaps(sk, ct) -> shared_secret: A decapsulation algorithm, which takes as
input a secret decapsulation key sk and ciphertext ct and outputs
a shared secret shared_secret.¶
ML-KEM-512, ML-KEM-768 and ML-KEM-1024 conform to this interface:¶
ML-KEM-512 has encapsulation keys of size 800 bytes, expanded decapsulation keys of 1632 bytes, decapsulation key seeds of size 64 bytes, ciphertext size of 768 bytes, and shared secrets of size 32 bytes¶
ML-KEM-768 has encapsulation keys of size 1184 bytes, expanded decapsulation keys of 2400 bytes, decapsulation key seeds of size 64 bytes, ciphertext size of 1088 bytes, and shared secrets of size 32 bytes¶
ML-KEM-1024 has encapsulation keys of size 1568 bytes, expanded decapsulation keys of 3168 bytes, decapsulation key seeds of size 64 bytes, ciphertext size of 1568 bytes, and shared secrets of size 32 bytes¶
The KEMs are defined as NamedGroups, sent in the supported_groups
extension. Section 4.2.7 of [RFC8446]¶
Each parameter set of ML-KEM is assigned an identifier, registered by IANA in the TLS Supported Groups registry:¶
enum {
...,
/* ML-KEM Key Establishment Methods */
mlkem512(0x0200),
mlkem768(0x0201),
mlkem1024(0x0202)
...,
} NamedGroup;
¶
The public encapsulation key and ciphertext values are each directly encoded with fixed lengths as in [FIPS203].¶
In TLS 1.3 a KEM public encapsulation key pk or ciphertext ct is
represented as a KeyShareEntry Section 4.2.8 of [RFC8446]:¶
struct {
NamedGroup group;
opaque key_exchange<1..2^16-1>;
} KeyShareEntry;
¶
These are transmitted in the extension_data fields of
KeyShareClientHello and KeyShareServerHello extensions:¶
struct {
KeyShareEntry client_shares<0..2^16-1>;
} KeyShareClientHello;
struct {
KeyShareEntry server_share;
} KeyShareServerHello;
¶
The client's shares are listed in descending order of client preference; the server selects one algorithm and sends its corresponding share.¶
For the client's share, the key_exchange value contains the pk
output of the corresponding ML-KEM parameter set's KeyGen algorithm.¶
For the server's share, the key_exchange value contains the ct
output of the corresponding ML-KEM parameter set's Encaps algorithm.¶
For all parameter sets, the server MUST perform the encapsulation key check
described in Section 7.2 of [FIPS203] on the client's encapsulation key,
and abort with an illegal_parameter alert if it fails.¶
For all parameter sets, the client MUST check if the ciphertext length
matches the selected parameter set, and abort with an illegal_parameter
alert if it fails.¶
If ML-KEM decapsulation fails for any other reason, the connection MUST be
aborted with an internal_error alert.¶
This document defines standalone ML-KEM key establishment for TLS 1.3. Hybrid key establishment mechanisms, which combine a post-quantum algorithm with a traditional algorithm such as ECDH, are supported generically via [HYBRID] with some concrete definitions in [ECDHE-MLKEM]. Hybrid mechanisms provide security as long as at least one of the component algorithms remains unbroken, combining both a lattice-based and a traditional cryptographic assumption. Standalone ML-KEM relies on lattice-based and hash function cryptographic assumptions for its security.¶
The main security property for KEMs is indistinguishability under adaptive chosen ciphertext attack (IND-CCA), which means that shared secret values should be indistinguishable from random strings even given the ability to have other arbitrary ciphertexts decapsulated. IND-CCA corresponds to security against an active attacker, and the public encapsulation key / secret decapsulation key pair can be treated as a long-term key or reused. ML-KEM satisfies IND-CCA security in the random oracle model [KYBERV].¶
ML-KEM is explicitly designed to be secure in the event that the keypair is reused, satisfying IND-CCA security via a variant of the Fujisaki-Okamoto (FO) transform [FO][HHK].¶
While it is recommended that implementations avoid reuse of ML-KEM keypairs to ensure forward secrecy, implementations that do reuse MUST ensure that the number of reuses abides by bounds in [FIPS203] or subsequent security analyses of ML-KEM.¶
Implementations MUST NOT reuse randomness in the generation of ML-KEM ciphertexts.¶
[NIST-SP-800-227] includes guidelines and requirements for implementations on using KEMs securely. Implementers are encouraged to use implementations resistant to side-channel attacks, especially those that can be applied by remote attackers.¶
TLS 1.3's key schedule commits to the ML-KEM encapsulation key and the
ciphertext as the key_exchange field of the key_share extension is
populated with those values, which are included as part of the handshake
messages. This provides resilience against re-encapsulation attacks against
KEMs used for key establishment [CDM23].¶
This document requests/registers three new entries to the TLS Named Group (or Supported Group) registry, according to the procedures in Section 6 of [tlsiana].¶
0x0200¶
MLKEM512¶
Y¶
N¶
This document¶
FIPS 203 version of ML-KEM-512¶
0x0201¶
MLKEM768¶
Y¶
N¶
This document¶
FIPS 203 version of ML-KEM-768¶
0x0202¶
MLKEM1024¶
Y¶
N¶
This document¶
FIPS 203 version of ML-KEM-1024¶
Thanks to Douglas Stebila for consultation on the draft-ietf-tls-hybrid-design design, and to Scott Fluhrer, Eric Rescorla, and Rebecca Guthrie for reviews.¶