Skip to content
ecdsa.com
TLS

TLS supported groups: curves, FFDHE and ML-KEM

Named groups for TLS key exchange from the IANA registry: elliptic curves, finite-field groups, ML-KEM and hybrid post-quantum groups, with code points.

75 of 75 shown

TLS supported groups · 75 entries

Named groups for TLS key exchange: elliptic curves, finite-field groups, ML-KEM and hybrid post-quantum groups.

ValueNameDescriptionRecommendedReferences
0x0001sect163k1sect163k1 (0x0001) is elliptic-curve Diffie–Hellman on sect163k1.sect163k1DRFC 8422RFC 9847
0x0002sect163r1sect163r1 (0x0002) is elliptic-curve Diffie–Hellman on sect163r1.DRFC 8422RFC 9847
0x0003sect163r2sect163r2 (0x0003) is elliptic-curve Diffie–Hellman on sect163r2.sect163r2DRFC 8422RFC 9847
0x0004sect193r1sect193r1 (0x0004) is elliptic-curve Diffie–Hellman on sect193r1.DRFC 8422RFC 9847
0x0005sect193r2sect193r2 (0x0005) is elliptic-curve Diffie–Hellman on sect193r2.DRFC 8422RFC 9847
0x0006sect233k1sect233k1 (0x0006) is elliptic-curve Diffie–Hellman on sect233k1.sect233k1DRFC 8422RFC 9847
0x0007sect233r1sect233r1 (0x0007) is elliptic-curve Diffie–Hellman on sect233r1.sect233r1DRFC 8422RFC 9847
0x0008sect239k1sect239k1 (0x0008) is elliptic-curve Diffie–Hellman on sect239k1.DRFC 8422RFC 9847
0x0009sect283k1sect283k1 (0x0009) is elliptic-curve Diffie–Hellman on sect283k1.sect283k1NRFC 8422
0x000Asect283r1sect283r1 (0x000A) is elliptic-curve Diffie–Hellman on sect283r1.sect283r1NRFC 8422
0x000Bsect409k1sect409k1 (0x000B) is elliptic-curve Diffie–Hellman on sect409k1.sect409k1NRFC 8422
0x000Csect409r1sect409r1 (0x000C) is elliptic-curve Diffie–Hellman on sect409r1.sect409r1NRFC 8422
0x000Dsect571k1sect571k1 (0x000D) is elliptic-curve Diffie–Hellman on sect571k1.sect571k1NRFC 8422
0x000Esect571r1sect571r1 (0x000E) is elliptic-curve Diffie–Hellman on sect571r1.sect571r1NRFC 8422
0x000Fsecp160k1secp160k1 (0x000F) is elliptic-curve Diffie–Hellman on secp160k1.DRFC 8422RFC 9847
0x0010secp160r1secp160r1 (0x0010) is elliptic-curve Diffie–Hellman on secp160r1.DRFC 8422RFC 9847
0x0011secp160r2secp160r2 (0x0011) is elliptic-curve Diffie–Hellman on secp160r2.DRFC 8422RFC 9847
0x0012secp192k1secp192k1 (0x0012) is elliptic-curve Diffie–Hellman on secp192k1.secp192k1DRFC 8422RFC 9847
0x0013secp192r1secp192r1 (0x0013) is elliptic-curve Diffie–Hellman on P-192.P-192DRFC 8422RFC 9847
0x0014secp224k1secp224k1 (0x0014) is elliptic-curve Diffie–Hellman on secp224k1.secp224k1DRFC 8422RFC 9847
0x0015secp224r1secp224r1 (0x0015) is elliptic-curve Diffie–Hellman on P-224.P-224DRFC 8422RFC 9847
0x0016secp256k1secp256k1 (0x0016) is elliptic-curve Diffie–Hellman on secp256k1.secp256k1NRFC 8422
0x0017Notesecp256r1secp256r1 (0x0017) is elliptic-curve Diffie–Hellman on P-256.P-256YRFC 8422
0x0018Notesecp384r1secp384r1 (0x0018) is elliptic-curve Diffie–Hellman on P-384.P-384YRFC 8422
0x0019secp521r1secp521r1 (0x0019) is elliptic-curve Diffie–Hellman on P-521.P-521NRFC 8422
0x001AbrainpoolP256r1brainpoolP256r1 (0x001A) is elliptic-curve Diffie–Hellman on brainpoolP256r1.brainpoolP256r1NRFC 7027
0x001BbrainpoolP384r1brainpoolP384r1 (0x001B) is elliptic-curve Diffie–Hellman on brainpoolP384r1.brainpoolP384r1NRFC 7027
0x001CbrainpoolP512r1brainpoolP512r1 (0x001C) is elliptic-curve Diffie–Hellman on brainpoolP512r1.brainpoolP512r1NRFC 7027
0x001DNotex25519x25519 (0x001D) is elliptic-curve Diffie–Hellman on curve25519.curve25519YRFC 9846RFC 8422
0x001Ex448x448 (0x001E) is elliptic-curve Diffie–Hellman on curve448.curve448YRFC 9846RFC 8422
0x001FbrainpoolP256r1tls13brainpoolP256r1tls13 (0x001F) is elliptic-curve Diffie–Hellman on brainpoolP256r1.brainpoolP256r1NRFC 8734
0x0020brainpoolP384r1tls13brainpoolP384r1tls13 (0x0020) is elliptic-curve Diffie–Hellman on brainpoolP384r1.brainpoolP384r1NRFC 8734
0x0021brainpoolP512r1tls13brainpoolP512r1tls13 (0x0021) is elliptic-curve Diffie–Hellman on brainpoolP512r1.brainpoolP512r1NRFC 8734
0x0022GC256AGC256A (0x0022) is elliptic-curve Diffie–Hellman on GC256A.GC256ANRFC 9189
0x0023GC256BGC256B (0x0023) is elliptic-curve Diffie–Hellman on GC256B.GC256BNRFC 9189
0x0024GC256CGC256C (0x0024) is elliptic-curve Diffie–Hellman on GC256C.GC256CNRFC 9189
0x0025GC256DGC256D (0x0025) is elliptic-curve Diffie–Hellman on GC256D.GC256DNRFC 9189
0x0026GC512AGC512A (0x0026) is elliptic-curve Diffie–Hellman on GC512A.GC512ANRFC 9189
0x0027GC512BGC512B (0x0027) is elliptic-curve Diffie–Hellman on GC512B.GC512BNRFC 9189
0x0028GC512CGC512C (0x0028) is elliptic-curve Diffie–Hellman on GC512C.GC512CNRFC 9189
0x0029curveSM2curveSM2 (0x0029) is elliptic-curve Diffie–Hellman on SM2.SM2NRFC 8998
0x0100Noteffdhe2048ffdhe2048 (0x0100) is a 2048-bit finite-field Diffie–Hellman group from RFC 7919.NRFC 7919
0x0101ffdhe3072ffdhe3072 (0x0101) is a 3072-bit finite-field Diffie–Hellman group from RFC 7919.NRFC 7919
0x0102ffdhe4096ffdhe4096 (0x0102) is a 4096-bit finite-field Diffie–Hellman group from RFC 7919.NRFC 7919
0x0103ffdhe6144ffdhe6144 (0x0103) is a 6144-bit finite-field Diffie–Hellman group from RFC 7919.NRFC 7919
0x0104ffdhe8192ffdhe8192 (0x0104) is a 8192-bit finite-field Diffie–Hellman group from RFC 7919.NRFC 7919
0x0200MLKEM512MLKEM512 (0x0200) is post-quantum key agreement with ML-KEM-512 (FIPS 203) alone, without a classical component.NRFC-ietf-tls-mlkem-10
0x0201NoteMLKEM768MLKEM768 (0x0201) is post-quantum key agreement with ML-KEM-768 (FIPS 203) alone, without a classical component.NRFC-ietf-tls-mlkem-10
0x0202MLKEM1024MLKEM1024 (0x0202) is post-quantum key agreement with ML-KEM-1024 (FIPS 203) alone, without a classical component.NRFC-ietf-tls-mlkem-10
0x0A0AReserved0x0A0A is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0x11E9SecP256r1MLKEM512SecP256r1MLKEM512 (0x11E9) is a hybrid key exchange: the shared secret combines secp256r1 with ML-KEM-512, so it stays secret as long as either of the two holds.P-256Ndraft-rosomakho-tls-ecdhe-mlkem512-00
0x11EAMLKEM512X25519MLKEM512X25519 (0x11EA) is a hybrid key exchange: the shared secret combines X25519 with ML-KEM-512, so it stays secret as long as either of the two holds.curve25519Ndraft-rosomakho-tls-ecdhe-mlkem512-00
0x11EBNoteSecP256r1MLKEM768SecP256r1MLKEM768 (0x11EB) is a hybrid key exchange: the shared secret combines secp256r1 with ML-KEM-768, so it stays secret as long as either of the two holds.P-256NRFC 10024
0x11ECNoteX25519MLKEM768X25519MLKEM768 (0x11EC) is a hybrid key exchange: the shared secret combines X25519 with ML-KEM-768, so it stays secret as long as either of the two holds.curve25519YRFC 10024
0x11EDSecP384r1MLKEM1024SecP384r1MLKEM1024 (0x11ED) is a hybrid key exchange: the shared secret combines secp384r1 with ML-KEM-1024, so it stays secret as long as either of the two holds.P-384NRFC 10024
0x11EEcurveSM2MLKEM768curveSM2MLKEM768 (0x11EE) is a hybrid key exchange: the shared secret combines curveSM2 with ML-KEM-768, so it stays secret as long as either of the two holds.SM2Ndraft-yang-tls-hybrid-sm2-mlkem-03
0x1A1AReserved0x1A1A is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0x2A2AReserved0x2A2A is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0x3A3AReserved0x3A3A is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0x4A4AReserved0x4A4A is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0x5A5AReserved0x5A5A is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0x6399X25519Kyber768Draft00X25519Kyber768Draft00 (0x6399) is a hybrid key exchange: the shared secret combines X25519 with Kyber768 (draft 00), so it stays secret as long as either of the two holds. It is a pre-standard code point and now obsolete.curve25519Ddraft-tls-westerbaan-xyber768d00-02RFC 10024
0x639ASecP256r1Kyber768Draft00SecP256r1Kyber768Draft00 (0x639A) is a hybrid key exchange: the shared secret combines secp256r1 with Kyber768 (draft 00), so it stays secret as long as either of the two holds. It is a pre-standard code point and now obsolete.P-256Ddraft-kwiatkowski-tls-ecdhe-kyber-01RFC 10024
0x6A6AReserved0x6A6A is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0x7A7AReserved0x7A7A is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0x8A8AReserved0x8A8A is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0x9A9AReserved0x9A9A is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0xAAAAReserved0xAAAA is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0xBABAReserved0xBABA is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0xCACAReserved0xCACA is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0xDADAReserved0xDADA is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0xEAEAReserved0xEAEA is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0xFAFAReserved0xFAFA is a GREASE value (RFC 8701) in the TLS supported groups registry: clients send such values at random so that servers learn to ignore unknown entries. It never identifies a real algorithm.NRFC 8701
0xFF01arbitrary_explicit_prime_curvesarbitrary_explicit_prime_curves (0xFF01) tells the peer that curve parameters are sent explicitly instead of naming a group. RFC 8422 deprecates explicit curves.NRFC 8422
0xFF02arbitrary_explicit_char2_curvesarbitrary_explicit_char2_curves (0xFF02) tells the peer that curve parameters are sent explicitly instead of naming a group. RFC 8422 deprecates explicit curves.NRFC 8422
Unassigned and reserved ranges · 26 entries
RangeStatusDescription
0x0000reservedReserved
0x002A–0x00FFunassignedUnassigned
0x0105–0x01FBunassignedUnassigned
0x01FC–0x01FFprivateReserved for Private Use
0x0203–0x0A09unassignedUnassigned
0x0A0B–0x11E8unassignedUnassigned
0x11EF–0x1A19unassignedUnassigned
0x1A1B–0x2A29unassignedUnassigned
0x2A2B–0x3A39unassignedUnassigned
0x3A3B–0x4A49unassignedUnassigned
0x4A4B–0x5A59unassignedUnassigned
0x5A5B–0x6398unassignedUnassigned
0x639B–0x6A69unassignedUnassigned
0x6A6B–0x7A79unassignedUnassigned
0x7A7B–0x8A89unassignedUnassigned
0x8A8B–0x9A99unassignedUnassigned
0x9A9B–0xAAA9unassignedUnassigned
0xAAAB–0xBAB9unassignedUnassigned
0xBABB–0xCAC9unassignedUnassigned
0xCACB–0xDAD9unassignedUnassigned
0xDADB–0xEAE9unassignedUnassigned
0xEAEB–0xFAF9unassignedUnassigned
0xFAFB–0xFDFFunassignedUnassigned
0xFE00–0xFEFFprivateReserved for Private Use
0xFF00unassignedUnassigned
0xFF03–0xFFFFunassignedUnassigned

Source: Transport Layer Security (TLS) Parameters (IANA), retrieved 2026-10-20. Data license: CC0-1.0. TLS Supported Groups

Notes on notable entries

secp256r1

ECDHE on P-256: the key exchange RFC 8446 makes mandatory for every TLS 1.3 implementation.

secp256r1 (23) is the group a TLS 1.3 implementation MUST support (RFC 8446 §9.1), which makes it the fallback that always works. Its key share is a 65-byte uncompressed point; TLS 1.3 forbids compressed points for these curves. See P-256.

secp384r1

ECDHE on P-384, required by NSA's CNSA 1.0 suite.

secp384r1 (24) is marked Recommended by IANA and is the group of CNSA-compliant configurations. Its key share is 97 bytes. The hybrid SecP384r1MLKEM1024 pairs it with ML-KEM-1024 for CNSA 2.0 transitions. See P-384.

x25519

Elliptic-curve Diffie–Hellman on Curve25519, the default classical key exchange of TLS 1.3.

x25519 (29) is the most common TLS 1.3 key share and the classical half of X25519MLKEM768. RFC 8446 §9.1 says implementations SHOULD support it, next to the mandatory secp256r1. Shares are 32 bytes. See Curve25519.

ffdhe2048

The 2048-bit finite-field Diffie–Hellman group of RFC 7919.

RFC 7919 replaced server-chosen DHE parameters — often 1024-bit, sometimes shared among many servers and precomputable, as the Logjam attack showed — with five fixed, named groups. TLS 1.3 negotiates them through supported_groups. RFC 10015 §3 forbids FFDHE cipher suites in TLS 1.2, so these groups now matter only for TLS 1.3, where they are rarely used.

MLKEM768

ML-KEM-768 alone, without a classical component: a pure post-quantum TLS key exchange.

MLKEM768 (513) uses only the FIPS 203 KEM. If ML-KEM were broken, nothing would protect the session, which is why the web uses hybrids such as X25519MLKEM768; the pure groups target environments whose policy requires post-quantum-only algorithms.

SecP256r1MLKEM768

The hybrid of P-256 ECDHE with ML-KEM-768, for deployments that must stay with NIST-approved curves.

SecP256r1MLKEM768 (0x11EB, RFC 10024) combines a P-256 share with ML-KEM-768. Because both components are NIST-approved, it suits FIPS-validated deployments that cannot use X25519.

X25519MLKEM768

The hybrid post-quantum key exchange that browsers and major servers negotiate by default: X25519 combined with ML-KEM-768.

X25519MLKEM768 (0x11EC, RFC 10024) sends an ML-KEM-768 encapsulation key and an X25519 share in one key_share entry and concatenates the two shared secrets, so the session stays secret as long as either algorithm holds. It protects today's traffic against 'harvest now, decrypt later' attacks by future quantum computers. IANA marks it Recommended.

The ClientHello share is about 1.2 KB, which pushes the ClientHello beyond one TCP segment and has exposed middleboxes that cannot handle split ClientHellos. Earlier deployments used the pre-standard code point X25519Kyber768Draft00 (0x6399), now obsolete.

All registries