Aller au contenu
ecdsa.com

EdDSA (algorithme de signature sur courbes d’Edwards)

Un schéma de signature de type Schnorr sur des courbes d’Edwards tordues, défini dans la RFC 8032 et approuvé dans FIPS 186-5, dont les deux instances standard sont Ed25519 et Ed448.
Autres graphiesEdwards-curve Digital Signature AlgorithmPureEdDSA

La clé privée est une graine (32 octets pour Ed25519, 57 pour Ed448). Son hachage donne un scalaire secret s et un préfixe ; l’opération de signature calcule le nonce r = H(prefix ‖ M), R = r·B, le challenge k = H(R ‖ A ‖ M) et S = (r + k·s) mod L, et la signature est R ‖ S (64 octets pour Ed25519, 114 pour Ed448 ; RFC 8032 §5.1.6 et §5.2.6). Le nonce est une fonction de la clé et du message : EdDSA n’a donc besoin d’aucun aléa à la signature et ne peut pas réutiliser un nonce pour des messages différents.

PureEdDSA (Ed25519, Ed448) signe le message lui-même et le lit deux fois ; HashEdDSA (Ed25519ph, Ed448ph) signe à la place un condensat SHA-512 ou SHAKE256 ; Ed25519ctx et Ed448 acceptent une chaîne de contexte de 255 octets au plus pour la séparation de domaine. FIPS 186-5 §7 approuve EdDSA et HashEdDSA (§7.8).

La vérification est moins uniforme que la signature. La RFC 8032 §5.1.7 exige que S soit inférieur à l’ordre du groupe L et autorise soit l’équation avec cofacteur [8][S]B = [8]R + [8][k]A', soit celle sans cofacteur, et les bibliothèques divergent sur les points de petit ordre et les encodages qui ne respectent pas la forme canonique. Les systèmes de consensus fixent donc un seul ensemble de règles, par exemple ZIP 215 de Zcash.

Identifiants : OID X.509 1.3.101.112 (Ed25519) et 1.3.101.113 (Ed448) de la RFC 8410 ; valeurs JOSE alg Ed25519 et Ed448 de la RFC 9864, qui rend obsolète l’identifiant polymorphe EdDSA de la RFC 8037 ; COSE −19 et −53 (et l’ancien −8) ; TLS 1.3 ed25519 (0x0807) et ed448 (0x0808) ; SSH ssh-ed25519. Le NIST IR 8547 (projet) propose d’interdire EdDSA après 2035.

Normes et références

Tous les termes