Aller au contenu
ecdsa.com
RecommandéeWeierstrass réduite

P-256

P-256 (secp256r1, prime256v1) est la courbe elliptique la plus déployée : TLS, X.509, JOSE (ES256), WebAuthn et DNSSEC l’utilisent tous.

P-256 est une courbe de Weierstrass réduite y² = x³ + ax + b sur un corps premier de 256 bits, avec un sous-groupe d’ordre premier de 256 bits et un cofacteur de 1 ; son niveau de sécurité estimé est de 128 bits. Statut : recommandée pour les nouveaux systèmes.

P-256 est la courbe de Weierstrass réduite y² = x³ − 3x + b définie modulo le nombre premier p = 2^256 − 2^224 + 2^192 + 2^96 − 1, dont la forme particulière permet une réduction rapide. Son groupe est d’ordre premier (cofacteur 1), d’environ 2^256, ce qui donne à peu près 128 bits de sécurité. La même courbe porte trois noms : P-256 (NIST, JOSE, COSE), secp256r1 (SEC 2, TLS) et prime256v1 (ANSI X9.62, OpenSSL).

Une clé publique est un point : 65 octets sous forme non compressée (0x04 ‖ x ‖ y) ou 33 octets sous forme compressée. Une signature ECDSA fait 64 octets au format brut r ‖ s (JOSE, WebCrypto) et généralement de 70 à 72 octets en DER (X.509, TLS, OpenSSL, assertions WebAuthn) ; confondre les deux encodages est l’un des bugs d’interopérabilité les plus courants, et le convertisseur DER ⇄ brut convertit l’un en l’autre.

La prise en charge matérielle est large : la Secure Enclave d’Apple ne crée que des clés P-256, et les clés de sécurité FIDO2 comme les authentificateurs de plateforme créent couramment des clés d’accès P-256 (algorithme COSE −7, ES256). Comme pour les autres courbes du NIST, b a été dérivé d’une graine SHA-1 dont l’origine n’est pas documentée, ce qui est l’une des raisons pour lesquelles certains concepteurs de protocoles préfèrent Curve25519 ; aucune faiblesse n’a été trouvée dans P-256.

Noms dans les normes

NormeNom
NIST FIPS 186-5 / SP 800-186P-256
SEC 2secp256r1
ANSI X9.62prime256v1
JOSE / COSEP-256
SSHnistp256

Identifiants d’objet

Paramètres de domaine

corps premier de 256 bits · sécurité d’environ 128 bits

Nombre premier p du corps
0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff
Coefficient a
0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc
Coefficient b
0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b
Coordonnée x du point de base
0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296
Coordonnée y du point de base
0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5
Ordre n du point de base
0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551
Cofacteur h
0x1
Graine
0xc49d360886e704936a6678e1139d26b7819f7e90

Utilisée dans

  • TLS 1.3
  • X.509 / Web PKI
  • JOSE (ES256)
  • COSE (ES256, ESP256)
  • SSH (ecdsa-sha2-nistp256)
  • DNSSEC (algorithm 13)
  • WebAuthn / passkeys
  • Apple Secure Enclave

Identifiants dans les registres

Groupes pris en charge par TLS
secp256r1 0x0017SecP256r1MLKEM512 0x11E9SecP256r1MLKEM768 0x11EBSecP256r1Kyber768Draft00 0x639A
Schémas de signature TLS
ecdsa_secp256r1_sha256 0x0403
Algorithmes JOSE
ES256HPKE-0HPKE-0-KEHPKE-7HPKE-7-KE
Courbes JWK
P-256
Algorithmes COSE
ESP256 -9
Courbes elliptiques COSE
P-256 1
Méthodes d’échange de clés SSH
ecdh-sha2-nistp256gss-nistp256-sha256-*mlkem768nistp256-sha256
Algorithmes de clé publique SSH
ecdsa-sha2-nistp256x509v3-ecdsa-sha2-nistp256
Numéros d’algorithmes DNSSEC
ECDSAP256SHA256 13
Identifiants de KEM HPKE
DHKEM(P-256, HKDF-SHA256) 0x0010DHKEM(CP-256, HKDF-SHA256) 0x0013MLKEM768-P256 0x0050

Normes et références

Toutes les courbes