Zum Inhalt springen
ecdsa.com

P-256 (secp256r1)

Die elliptische Kurve des NIST über einem 256-Bit-Primkörper, auch secp256r1 und prime256v1 genannt, mit etwa 128 Bit Sicherheit; die am weitesten verbreitete Kurve für ECDSA und ECDH.
Auch geschrieben alssecp256r1prime256v1NIST P-256P256

P-256 ist die Kurve in kurzer Weierstraß-Form y² = x³ − 3x + b über der Primzahl p = 2²⁵⁶ − 2²²⁴ + 2¹⁹² + 2⁹⁶ − 1; ihre Gruppenordnung ist eine Primzahl (Kofaktor 1). Spezifiziert ist sie in NIST SP 800-186 §3.2.1.3 und in SEC 2 als secp256r1; OpenSSL nennt sie prime256v1, ihre OID ist 1.2.840.10045.3.1.7, TLS nennt sie secp256r1 (Gruppe 23), und JOSE/COSE verwenden "crv": "P-256".

Größen: private Schlüssel mit 32 Byte; öffentliche Schlüssel mit 65 Byte unkomprimiert (04‖x‖y) oder 33 Byte komprimiert; ECDSA-Signaturen mit 64 Byte als rohes r‖s (JWS ES256) oder 70–72 Byte in DER (X.509, TLS, WebAuthn-Assertions, Standardeinstellungen von OpenSSL und Java). Das Vermischen der beiden Kodierungen ist die häufigste Ursache für „invalid signature“ bei gültigen Schlüsseln.

P-256 ist fast überall die Voreinstellung: ES256-JWTs, Passkeys (COSE-Algorithmus −7), ECDSA-Zertifikate und Key Shares in TLS, Apples Secure Enclave sowie die meisten HSMs und Smartcards, die oft keine andere Kurve unterstützen. Auf einem Kern eines Apple M4 Max erzeugt OpenSSL 3.6.5 etwa 87.000 ECDSA-Signaturen mit P-256 und prüft etwa 29.000 pro Sekunde.

Die Koeffizienten von P-256 stammen aus einem unerklärten Seed der NSA – ein Grund, warum manche Entwickler Curve25519 bevorzugen; eine Schwäche der Kurve selbst ist nicht bekannt. Wie jede elliptische Kurve hält sie einem großen Quantencomputer nicht stand, und NIST IR 8547 (Entwurf) schlägt vor, ECDSA und ECDH nach 2035 in allen Sicherheitsstufen zu untersagen. Zur Bitcoin-Kurve siehe P-256 vs. secp256k1.

Standards und Quellen

Alle Begriffe