BAD SKY.NET

secp256r1

secp256r1, also called NIST P-256, is the most widely supported elliptic curve in TLS. Every measured client offers it.

TLS supported groupCode 0x0017 (23)recommended

What it is

secp256r1 (group 23), known as NIST P-256 or prime256v1, is an elliptic curve standardized by NIST and used in TLS for ECDHE key exchange since RFC 4492, now RFC 8422. It provides about 128 bits of security, comparable to AES-128.

P-256 is also the curve behind most ECDSA certificates, through the ecdsa_secp256r1_sha256 signature scheme, and it is required by many compliance profiles that accept only NIST curves. RFC 8446 requires TLS 1.3 implementations to support it for key exchange.

Its main competitor is x25519, which is faster and easier to implement safely, so most clients now prefer x25519 and keep P-256 as the second or third choice for servers that do not support Curve25519.

Its parameters were published by NIST and SECG in the early 2000s, and it is supported by every major TLS library and hardware security module.

Who sends it

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

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 it. Chrome, curl_cffi, Python requests, httpx, Go net/http, Node.js fetch and Guzzle list it 3rd, after X25519MLKEM768 and x25519. curl and curl-impersonate list it 2nd, because they do not offer the post-quantum hybrid.

Check whether your client sends it

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

Run the TLS fingerprint test

References

Related