Aller au contenu
ecdsa.com

P-256 (secp256r1)

La courbe elliptique du NIST sur un corps premier de 256 bits, aussi appelée secp256r1 et prime256v1, qui offre environ 128 bits de sécurité et qui est la courbe la plus déployée pour ECDSA et ECDH.
Autres graphiessecp256r1prime256v1NIST P-256P256

P-256 est la courbe de Weierstrass courte y² = x³ − 3x + b modulo le nombre premier p = 2²⁵⁶ − 2²²⁴ + 2¹⁹² + 2⁹⁶ − 1, dont l’ordre du groupe est premier (cofacteur 1). Elle est spécifiée dans la NIST SP 800-186 §3.2.1.3 et dans SEC 2 sous le nom secp256r1 ; OpenSSL l’appelle prime256v1, son OID est 1.2.840.10045.3.1.7, TLS la nomme secp256r1 (groupe 23) et JOSE/COSE utilisent "crv": "P-256".

Tailles : clés privées de 32 octets ; clés publiques de 65 octets non compressées (04‖x‖y) ou de 33 octets compressées ; signatures ECDSA de 64 octets au format r‖s brut (JWS ES256) ou de 70 à 72 octets en DER (X.509, TLS, assertions WebAuthn, formats par défaut d’OpenSSL et de Java). Mélanger les deux encodages est la cause la plus fréquente d’une « signature invalide » avec des clés valides.

C’est la courbe par défaut presque partout : JWT ES256, clés d’accès (algorithme COSE −7), certificats TLS ECDSA et key shares, Secure Enclave d’Apple, ainsi que la plupart des HSM et des cartes à puce, qui ne prennent souvent en charge aucune autre courbe. Sur un cœur d’Apple M4 Max, OpenSSL 3.6.5 produit environ 87 000 signatures ECDSA P-256 et en vérifie environ 29 000 par seconde.

Ses coefficients proviennent d’une graine inexpliquée de la NSA, ce qui explique en partie pourquoi certains concepteurs préfèrent Curve25519 ; aucune faiblesse de P-256 elle-même n’est connue. Comme toute courbe elliptique, elle ne résiste pas à un grand ordinateur quantique, et le NIST IR 8547 (projet) propose d’interdire ECDSA et ECDH à tous les niveaux de sécurité après 2035. Pour la courbe de Bitcoin, consultez P-256 vs secp256k1.

Normes et références

Tous les termes