Zum Inhalt springen
ecdsa.com
EmpfohlenKurze Weierstraß-Form

P-256

P-256 (secp256r1, prime256v1) ist die am weitesten verbreitete elliptische Kurve: TLS, X.509, ES256 in JOSE, WebAuthn und DNSSEC nutzen sie alle.

P-256 ist eine Kurve in kurzer Weierstraß-Form y² = x³ + ax + b über einem 256-Bit-Primkörper mit einer 256-Bit-Untergruppe von Primordnung und dem Kofaktor 1; das geschätzte Sicherheitsniveau beträgt 128 Bit. Status: empfohlen für Neuentwicklungen.

P-256 ist die Kurve in kurzer Weierstraß-Form y² = x³ − 3x + b über der Primzahl p = 2^256 − 2^224 + 2^192 + 2^96 − 1, deren spezielle Form eine schnelle Reduktion erlaubt. Die Gruppe der Kurve hat eine Primordnung von etwa 2^256 (Kofaktor 1), was ein Sicherheitsniveau von rund 128 Bit ergibt. Dieselbe Kurve trägt drei Namen: P-256 (NIST, JOSE, COSE), secp256r1 (SEC 2, TLS) und prime256v1 (ANSI X9.62, OpenSSL).

Ein öffentlicher Schlüssel ist ein Punkt: unkomprimiert 65 Byte (0x04 ‖ x ‖ y), komprimiert 33 Byte. Eine ECDSA-Signatur ist im Rohformat r ‖ s (JOSE, WebCrypto) 64 Byte lang und in DER (X.509, TLS, OpenSSL, WebAuthn-Assertions) meist 70–72 Byte; die beiden Kodierungen zu verwechseln ist einer der häufigsten Interoperabilitätsfehler, und der Konverter DER ⇄ Raw wandelt zwischen ihnen um.

Die Hardwareunterstützung ist breit: Die Secure Enclave von Apple erzeugt nur P-256-Schlüssel, und FIDO2-Sicherheitsschlüssel sowie Plattform-Authenticators erzeugen in der Regel P-256-Passkeys (COSE-Algorithmus −7, ES256). Wie bei den anderen NIST-Kurven wurde b aus einem SHA-1-Seed abgeleitet, dessen Herkunft nicht dokumentiert ist – ein Grund, warum manche Protokollentwickler Curve25519 bevorzugen; eine Schwäche in P-256 wurde bislang nicht gefunden.

Namen in Standards

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

Object Identifier

Domainparameter

256-Bit-Primkörper · etwa 128-Bit-Sicherheit

Primzahl p des Körpers
0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff
Koeffizient a
0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc
Koeffizient b
0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b
x-Koordinate des Basispunkts
0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296
y-Koordinate des Basispunkts
0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5
Ordnung n des Basispunkts
0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551
Kofaktor h
0x1
Seed
0xc49d360886e704936a6678e1139d26b7819f7e90

Verwendet in

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

Kennungen in Registern

TLS-Supported-Groups
secp256r1 0x0017SecP256r1MLKEM512 0x11E9SecP256r1MLKEM768 0x11EBSecP256r1Kyber768Draft00 0x639A
TLS-Signaturverfahren
ecdsa_secp256r1_sha256 0x0403
JOSE-Algorithmen
ES256HPKE-0HPKE-0-KEHPKE-7HPKE-7-KE
JWK-Kurven
P-256
COSE-Algorithmen
ESP256 -9
Elliptische Kurven für COSE
P-256 1
SSH-Schlüsselaustauschmethoden
ecdh-sha2-nistp256gss-nistp256-sha256-*mlkem768nistp256-sha256
SSH-Algorithmen für öffentliche Schlüssel
ecdsa-sha2-nistp256x509v3-ecdsa-sha2-nistp256
DNSSEC-Algorithmusnummern
ECDSAP256SHA256 13
HPKE-KEM-Kennungen
DHKEM(P-256, HKDF-SHA256) 0x0010DHKEM(CP-256, HKDF-SHA256) 0x0013MLKEM768-P256 0x0050

Standards und Quellen

Alle Kurven