Zum Inhalt springen
ecdsa.com
EmpfohlenMontgomery

curve25519

Curve25519 ist die Montgomery-Kurve hinter X25519, dem Standard-Schlüsselaustausch von TLS 1.3, SSH und WireGuard.

curve25519 ist eine Montgomery-Kurve By² = x³ + Ax² + x über einem 255-Bit-Primkörper mit einer 253-Bit-Untergruppe von Primordnung und dem Kofaktor 8; das geschätzte Sicherheitsniveau beträgt 128 Bit. Status: empfohlen für Neuentwicklungen.

Curve25519 ist die Montgomery-Kurve y² = x³ + 486662x² + x über der Primzahl 2^255 − 19, 2006 von Daniel J. Bernstein entworfen und in RFC 7748 spezifiziert. Die Gruppe der Kurve hat die Ordnung 8·n mit einer 253-Bit-Primzahl n, was ein Sicherheitsniveau von etwa 128 Bit ergibt, und auch ihr quadratischer Twist ist sicher.

X25519, die Diffie-Hellman-Funktion auf dieser Kurve, verwendet nur u-Koordinaten: Schlüssel sind 32-Byte-Strings, und private Schlüssel durchlaufen das in RFC 7748 §5 vorgeschriebene „Clamping“, damit der Kofaktor keine Informationen preisgeben kann. Die Funktion akzeptiert beliebige 32 Byte als öffentlichen Schlüssel; Eingaben niedriger Ordnung ergeben ein gemeinsames Geheimnis aus lauter Nullen, das Protokolle ablehnen sollten.

TLS 1.3 führt x25519 als empfohlene Gruppe („Recommended“) und nutzt sie als klassische Hälfte des Hybrids X25519MLKEM768; SSH verwendet sie als curve25519-sha256 (RFC 8731), und WireGuard, Signal und age bauen auf ihr auf. Der Zwilling in Twisted-Edwards-Form ist edwards25519, die Kurve der Ed25519-Signaturen.

Namen in Standards

StandardName
RFC 7748curve25519
RFC 7748 / RFC 8410X25519
SSHcurve25519-sha256

Object Identifier

Domainparameter

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

Primzahl p des Körpers
0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed
Koeffizient a
0x76d06
Koeffizient b
0x1
x-Koordinate des Basispunkts
0x9
y-Koordinate des Basispunkts
0x20ae19a1b8a086b4e01edd2c7748d14c923d4d7e6d7c61b229e9c5a27eced3d9
Ordnung n des Basispunkts
0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed
Kofaktor h
0x8

Verwendet in

  • TLS 1.3 (x25519, X25519MLKEM768)
  • SSH (curve25519-sha256)
  • Signal
  • WireGuard
  • age
  • HPKE

Kennungen in Registern

TLS-Supported-Groups
x25519 0x001DMLKEM512X25519 0x11EAX25519MLKEM768 0x11ECX25519Kyber768Draft00 0x6399
JOSE-Algorithmen
HPKE-3HPKE-3-KEHPKE-4
JWK-Kurven
X25519
Elliptische Kurven für COSE
X25519 4
SSH-Schlüsselaustauschmethoden
curve25519-sha256gss-curve25519-sha256-*mlkem768x25519-sha256sntrup761x25519-sha512
HPKE-KEM-Kennungen
DHKEM(X25519, HKDF-SHA256) 0x0020DHKEM(X25519+Elligator, HKDF-SHA256) 0x0022X25519Kyber768Draft00 0x0030X-Wing 0x647A

Standards und Quellen

Alle Kurven