Aller au contenu
ecdsa.com

X25519

La fonction Diffie–Hellman sur Curve25519 définie dans la RFC 7748, avec des clés de 32 octets et un secret partagé de 32 octets, utilisée pour l’échange de clés dans TLS 1.3, SSH, WireGuard, Signal et age.
Autres graphiesX25519 key exchangecurve25519-sha256ECDH over Curve25519

X25519(k, u) exécute une échelle de Montgomery en temps constant sur les seules coordonnées u. Une clé privée se compose de 32 octets aléatoires auxquels la fonction applique un clamping (mise à zéro des trois bits de poids faible et du bit 255, mise à un du bit 254) ; la clé publique est X25519(k, 9) (RFC 7748, §5). Comme la courbe et sa tordue sont toutes deux sûres, n’importe quelle chaîne de 32 octets peut servir de clé du pair sans validation de point, mais les entrées de petit ordre produisent un secret partagé entièrement nul, que les protocoles devraient détecter et rejeter (RFC 7748, §6.1).

Identifiants : groupe pris en charge TLS x25519 (29, 0x001D) ; SSH curve25519-sha256 (RFC 8731) ; OID 1.3.101.110 (RFC 8410) ; JOSE ECDH-ES avec une clé OKP et crv X25519 (RFC 8037) ; HPKE DHKEM(X25519, HKDF-SHA256), identifiant de KEM 0x0020 (RFC 9180). Sur un cœur d’Apple M4 Max, OpenSSL 3.6.5 calcule environ 52 000 opérations X25519 par seconde.

X25519 est un accord de clé, pas une signature : c’est Ed25519 qui signe. Les deux partagent une courbe, et les clés peuvent être converties d’une forme à l’autre, mais il est déconseillé d’utiliser une même clé pour les deux usages. L’algorithme de Shor casse X25519 : TLS l’associe donc désormais à ML-KEM-768 dans le groupe hybride X25519MLKEM768 (0x11EC, RFC 10024), et OpenSSH utilise par défaut mlkem768x25519-sha256.

Normes et références

Tous les termes