BAD SKY.NET

ed25519

ed25519 is the EdDSA signature scheme on Curve25519. Libraries offer it for TLS; Chrome-like clients do not.

TLS signature algorithmCode 0x0807 (2055)recommended

What it is

ed25519 (code 0x0807) is the Edwards-curve Digital Signature Algorithm on Curve25519, described in RFC 8032 and available as a TLS 1.3 signature scheme through RFC 8446. Its signatures and keys are small, verification is fast, and the design avoids pitfalls of ECDSA such as the need for a perfect random number for every signature.

Despite these strengths, it is rare on the public web. Publicly trusted certificate authorities issue RSA and ECDSA certificates, not Ed25519 ones, so a browser has little reason to offer it. It is more common in private PKI, SSH and internal services.

Ed25519 is the signature counterpart of x25519 key exchange: both use Curve25519, in different forms.

Support exists in OpenSSL, Go and other libraries, which is why so many of them offer it in the ClientHello.

Who sends it

Chrome 153 (macOS) browserNot recorded
curl_cffi (impersonate chrome) Not sent
curl-impersonate chrome116 Not sent
curl-impersonate ff117 Not sent
curl 8.7 (macOS) Not sent
curl 7.88 (Debian 12) Sent at position 4
Python requests Sent at position 7
Python httpx Sent at position 7
Python httpx (HTTP/2) Sent at position 7
Go net/http Sent at position 3
Node.js fetch Sent at position 7
PHP Guzzle Sent at position 7

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

Why it matters for fingerprinting

In our measurements Python requests, httpx, Node.js fetch, Guzzle, Debian curl and Go net/http offer it, while curl_cffi, both curl-impersonate profiles and macOS curl do not. Our Chrome capture did not record signature algorithms, and the Chrome impersonators leave it out, so seeing ed25519 alongside a Chrome User-Agent is suspicious.

Check whether your client sends it

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

Run the TLS fingerprint test

References

Related