En cryptographie à clé publique , l'algorithme de signature numérique à courbe d'Edwards ( EdDSA ) est un schéma de signature numérique utilisant une variante de la signature de Schnorr basée sur des courbes d'Edwards torsadées . Il est conçu pour être plus rapide que les schémas de signature numérique existants sans compromettre la sécurité. Il a été développé par une équipe comprenant Daniel J. Bernstein , Niels Duif, Tanja Lange , Peter Schwabe et implémentation de référence est un logiciel du domaine public .
Résumé
Ce qui suit est une description simplifiée d'EdDSA, omettant les détails de l'encodage des entiers et des points de courbe sous forme de chaînes binaires ; les détails complets se trouvent dans les articles et RFC.
Un schéma de signature EdDSA est un choix :
- de champ fini
- de courbe elliptique
- point de base
- de fonction de hachage cryptographique
Ces paramètres sont communs à tous les utilisateurs du schéma de signature EdDSA. La sécurité de ce schéma dépend crucialement du choix des paramètres, à l'exception du choix arbitraire du point de base ; par exemple, l'algorithme rho de Pollard pour les logarithmes devrait avoir une complexité temporelle d'environ
Dans le cadre d'un système de signature EdDSA,
- Clé publique
- Une clé publique EdDSA est un point de courbe
- Vérification de signature
- Une signature EdDSA sur un message
- Clé privée
- Une clé privée EdDSA est une
- Signature
- La signature d'un message
Ed25519
Ed25519 est le schéma de signature EdDSA utilisant SHA-512 (SHA-2) et une courbe elliptique liée à Curve25519 où
Performance
L'équipe d'origine a optimisé Ed25519 pour la famille de processeurs x86-64 Nehalem / Westmere . La vérification peut être effectuée par lots de 64 signatures pour un débit encore plus élevé. Ed25519 est conçu pour offrir une résistance aux attaques comparable à celle des chiffrements symétriques 128 bits de haute qualité .
Les clés publiques ont une longueur de 256 bits et les signatures ont une longueur de 512 bits.
Codage sécurisé
Ed25519 est conçu pour éviter les implémentations qui utilisent des conditions de branchement ou des indices de tableau qui dépendent de données secrètes, afin d'atténuer les attaques par canal auxiliaire .
Comme d'autres schémas de signature basés sur le logarithme discret, EdDSA utilise une valeur secrète appelée nonce , unique à chaque signature. Dans les schémas de signature DSA et ECDSA , ce nonce est traditionnellement généré aléatoirement pour chaque signature. Si le générateur de nombres aléatoires est compromis et devient prévisible lors de la création d'une signature, celle-ci peut divulguer la clé privée, comme ce fut le cas pour la clé de signature de la mise à jour du firmware de la PlayStation 3 de Sony .
À l'inverse, EdDSA choisit le nonce de manière déterministe comme le hachage d'une partie de la clé privée et du message. Ainsi, une fois la clé privée générée, EdDSA n'a plus besoin de générateur de nombres aléatoires pour effectuer les signatures, et il n'y a aucun risque qu'un générateur de nombres aléatoires défectueux utilisé pour la signature révèle la clé privée.
Incohérences de normalisation et de mise en œuvre
Il convient de noter qu’il existe deux initiatives de normalisation pour EdDSA : l’une émanant de l’IETF ( RFC 8032 à titre informatif ) et l’autre du NIST (dans le cadre de la norme FIPS 186-5). Les différences entre ces normes ont été analysées et des vecteurs de test sont disponibles.
Logiciel
Parmi les utilisations notables d'Ed25519 figurent OpenSSH , GnuPG et diverses alternatives, ainsi que l' outil signify d' OpenBSD . L'utilisation d'Ed25519 (et d'Ed448) dans le protocole SSH a été normalisée . En 2023, la version finale de la norme FIPS 186-5 a inclus Ed25519 déterministe comme schéma de signature approuvé
- Apple Watch et iPhone utilisent des clés Ed25519 pour l'authentification mutuelle IKEv2
- Botan
- Crypto++
- Protocole de cryptomonnaie CryptoNote
- Dropbear SSH
- Implémentation I2Pd d'EdDSA
- Kit de développement Java 15
- Libgcrypt
- Minisign et Minisign Miscellanea pour macOS
- NaCl / libsodium
- OpenSSL 1.1.1
- Python - Une implémentation alternative lente mais concise, n'inclut pas de protection contre les attaques par canal auxiliaire
- Implémentation de référence Supercop ( Langage C avec assembleur en ligne )
- Virgil PKI utilise par défaut des clés Ed25519
- wolfSSL
Ed448
Ed448 est le schéma de signature EdDSA défini dans la RFC 8032 utilisant la fonction de hachage SHAKE256 et la courbe elliptique edwards448 , une courbe d'Edwards (non torsadée) apparentée à Curve448 dans la RFC 7748. Ed448 a également été approuvé dans la version finale de la norme FIPS 186-5.