BAD SKY.NET

x25519

x25519 is the Curve25519 key exchange, the fast default elliptic curve of modern TLS. Every measured client offers it.

TLS supported groupCode 0x001d (29)recommended

What it is

x25519 (group 29) is elliptic curve Diffie-Hellman over Curve25519, described in RFC 7748 and added to TLS by RFC 8422. Both sides generate a random 32-byte key pair, exchange the public halves, and compute the same shared secret.

Curve25519 was designed by Daniel J. Bernstein to be fast and hard to implement wrongly: it avoids several classes of mistakes that affect the NIST P-curves, such as invalid point attacks, and runs in constant time with straightforward code.

It has been the preferred TLS key exchange of browsers and most libraries for years, and nearly every server supports it. With the rise of post-quantum hybrids it often moves to second place, behind X25519MLKEM768, which uses X25519 internally anyway. Clients usually send a key share for both.

Who sends it

Chrome 153 (macOS) browser Sent at position 2
curl_cffi (impersonate chrome) Sent at position 2
curl-impersonate chrome116 Sent at position 1
curl-impersonate ff117 Sent at position 1
curl 8.7 (macOS) Sent at position 1
curl 7.88 (Debian 12) Sent at position 1
Python requests Sent at position 2
Python httpx Sent at position 2
Python httpx (HTTP/2) Sent at position 2
Go net/http Sent at position 2
Node.js fetch Sent at position 2
PHP Guzzle Sent at position 2

Measured on 2026-10-25 against our own test server: sent by 12 of 12 clients. Position counts from 1 and ignores GREASE values.

Why it matters for fingerprinting

Every measured client offers x25519. Chrome, curl_cffi, Python requests, httpx, Go, Node.js and Guzzle put it second, after X25519MLKEM768. curl and curl-impersonate put it first, because they do not offer the hybrid group at all. That ordering shows up in the groups field of JA3.

Check whether your client sends it

Open the test from your browser, or call it from your script, and look for x25519 in the TLS details.

Run the TLS fingerprint test

FAQ

References

Related