secp256k1 vs ed25519 : Les Courbes Elliptiques en Crypto
Table des matières
Chaque transaction de cryptomonnaie necessite une signature numerique --- une preuve mathematique que la personne envoyant les fonds controle effectivement le compte. Cette signature est produite par un algorithme qui s'appuie sur les proprietes d'une courbe elliptique. Les deux courbes qui dominent le monde blockchain sont secp256k1 et ed25519. Elles servent le meme objectif fondamental, mais leurs conceptions, caracteristiques de performance et historiques d'adoption sont tres differents.
Ce guide explique ce que font les courbes elliptiques en cryptographie, en quoi secp256k1 et ed25519 different, et ce que ces differences signifient pour la generation de cles, la securite des portefeuilles et les blockchains que vous utilisez.
Que Sont les Courbes Elliptiques ?¶
Une courbe elliptique, dans le contexte de la cryptographie, est une structure mathematique definie par une equation de la forme y^2 = x^3 + ax + b (pour les courbes comme secp256k1) ou une forme apparentee (pour les courbes comme ed25519). La securite de la cryptographie a courbe elliptique (ECC) repose sur le Probleme du Logarithme Discret sur Courbe Elliptique (ECDLP) : etant donne un point P sur la courbe et un point Q = k * P (ou k est un scalaire et * represente la multiplication de point), il est informatiquement infaisable de determiner k a partir de P et Q seuls.
En termes de cryptomonnaies :
- k est votre cle privee --- un nombre secret.
- P est le point generateur --- un point fixe et publiquement connu sur la courbe.
- Q est votre cle publique --- derivee de la cle privee via la multiplication de point.
N'importe qui peut verifier que Q correspond a k * P s'il connait a la fois Q et une signature produite avec k, mais personne ne peut extraire k de Q. C'est ce qui rend sur le partage de votre cle publique (et de l'adresse qui en derive) tout en gardant la cle privee secrete.
L'ECC fournit le meme niveau de securite que RSA avec des tailles de cle beaucoup plus petites. Une cle de courbe elliptique de 256 bits offre approximativement la meme securite qu'une cle RSA de 3 072 bits. Cette compacite est essentielle pour les blockchains, ou chaque octet d'une transaction coute en stockage et en bande passante.
secp256k1 : La Courbe de Bitcoin et Ethereum¶
secp256k1 est la courbe elliptique utilisee par Bitcoin, Ethereum et la plupart des blockchains de leur ecosysteme. Le nom se decompose comme suit :
- sec --- Standards for Efficient Cryptography
- p --- La courbe est definie sur un corps premier
- 256 --- Le nombre premier fait 256 bits
- k --- C'est une courbe de Koblitz (une classe specifique avec des avantages d'efficacite computationnelle)
- 1 --- C'est la premiere (et seule) courbe de ce type dans le standard
L'equation de la courbe est : y^2 = x^3 + 7 (sur le corps fini defini par le nombre premier p = 2^256 - 2^32 - 977).
Satoshi Nakamoto a choisi secp256k1 pour Bitcoin en 2009. A l'epoque, c'etait un choix inhabituel. La plupart des systemes utilisaient la courbe NIST P-256 (aussi appelee secp256r1). Le "r" dans secp256r1 indique qu'elle utilise une graine verifiablement aleatoire pour ses parametres, tandis que les parametres de secp256k1 ont ete choisis pour l'efficacite computationnelle, pas pour l'aleatoire. Certains cryptographes s'inquietent depuis longtemps que les courbes NIST puissent avoir des parametres influences par la NSA --- une preoccupation amplifiee par le scandale Dual_EC_DRBG revele en 2013. Secp256k1 evite entierement ce soupcon car ses parametres sont simples et transparents : a = 0, b = 7.
Signatures : ECDSA¶
L'algorithme de signature associe a secp256k1 dans Bitcoin et Ethereum est ECDSA --- l'Elliptic Curve Digital Signature Algorithm. Lorsque vous envoyez une transaction Bitcoin ou Ethereum, le portefeuille utilise ECDSA pour produire une signature a partir de votre cle privee et du hash de la transaction. Les validateurs du reseau verifient cette signature en utilisant votre cle publique.
Les signatures ECDSA sur secp256k1 font 64 octets (deux valeurs de 32 octets, communement appelees r et s) plus un octet de recuperation que certaines implementations incluent. Elles sont deterministes lorsqu'elles utilisent RFC 6979 (que Bitcoin et Ethereum utilisent tous deux), ce qui signifie que le meme message et la meme cle privee produisent toujours la meme signature --- aucun aleatoire necessaire au moment de la signature.
Une particularite d'ECDSA est la malleabilite de signature : etant donne une signature valide (r, s), la paire (r, -s mod n) est egalement valide. Bitcoin a resolu cela avec BIP66 (encodage DER strict) puis avec SegWit. Ethereum le resout en imposant une forme canonique pour s.
Performance¶
La verification de secp256k1 sur des implementations optimisees (comme libsecp256k1, utilisee par Bitcoin Core) est rapide : plusieurs milliers de verifications par seconde sur du materiel moderne. Cependant, la signature et la verification ECDSA sont inherement plus complexes que EdDSA (l'algorithme associe a ed25519), qui a ete concu des l'origine pour la vitesse.
ed25519 : Le Choix Moderne de Solana¶
ed25519 est une courbe elliptique concue par Daniel J. Bernstein et ses collaborateurs. Elle a ete publiee en 2011, deux ans apres le lancement de Bitcoin, et represente une generation plus recente de conception de courbe qui privilegia a la fois la securite et la performance.
Le nom fait reference a la forme de la courbe d'Edwards sur le corps premier 2^255 - 19 (d'ou "25519"). La courbe specifique utilisee est une courbe d'Edwards tordue appelee "edwards25519", qui est birationnellement equivalente a Curve25519 (largement utilisee pour l'echange de cles, par exemple dans Signal et TLS 1.3).
Solana a choisi ed25519 comme courbe de signature, tout comme plusieurs autres blockchains modernes. Ce choix reflete les avantages d'ed25519 en termes de debit --- une preoccupation critique pour l'architecture haute performance de Solana.
Signatures : EdDSA¶
L'algorithme de signature associe a ed25519 est EdDSA --- l'Edwards-curve Digital Signature Algorithm. Specifiquement, Solana utilise Ed25519 (EdDSA avec edwards25519), qui produit des signatures de 64 octets.
EdDSA a ete concu pour eviter les pieges d'ECDSA :
- Aucun aleatoire requis pendant la signature. Les signatures EdDSA sont inherement deterministes --- le nonce est derive de la cle privee et du message via un hash. Avec ECDSA, un mauvais generateur de nombres aleatoires lors de la signature peut faire fuiter la cle privee completement (c'est arrive a la cle de signature du PS3 de Sony en 2010).
- Pas de malleabilite de signature. Les signatures EdDSA ont une seule forme canonique.
- Verification par lot plus rapide. Plusieurs signatures Ed25519 peuvent etre verifiees simultanement plus rapidement que les verifier une par une --- un avantage significatif pour les blockchains a haut debit.
- Implementation plus simple. L'algorithme a moins de cas limites et de conditions de branchement, ce qui reduit la surface pour les attaques par canal auxiliaire.
Performance¶
Ed25519 est regulierement plus rapide que ECDSA-secp256k1 dans les benchmarks. La signature est environ 2 a 3 fois plus rapide, et la verification d'une seule signature est a peu pres comparable, mais la verification par lot est ou Ed25519 excelle reellement --- elle peut verifier des centaines de signatures significativement plus vite que les verifier une par une. Sur Solana, ou les blocs peuvent contenir des milliers de transactions, cette difference de performance est substantielle.
ECDSA vs EdDSA : Une Comparaison Directe¶
| Propriete | ECDSA (secp256k1) | EdDSA (ed25519) |
|---|---|---|
| Type de courbe | Short Weierstrass | Twisted Edwards |
| Taille de cle | 256 bits | 256 bits |
| Taille de signature | 64-65 octets | 64 octets |
| Niveau de securite | ~128 bits | ~128 bits |
| Vitesse de signature | Rapide | Plus rapide (2-3x) |
| Vitesse de verification | Rapide | Comparable (unitaire), plus rapide (lot) |
| Signature deterministe | Optionnelle (RFC 6979) | Native (par conception) |
| Malleabilite de signature | Possible (attenuee en pratique) | Aucune |
| Vulnerabilite du nonce | Oui (mauvais RNG fuit la cle) | Non (nonce derive de la cle + message) |
| Adoption | Bitcoin, Ethereum, BNB Chain, Tron, Dogecoin, Litecoin | Solana, XRP (partiel), Cardano, Polkadot |
Les deux algorithmes fournissent approximativement 128 bits de securite, ce qui signifie qu'un attaquant devrait effectuer environ 2^128 operations pour casser une cle. C'est bien au-dela de la capacite de tout ordinateur classique actuel ou previsible. Les differences resident dans la surete d'implementation et la performance, pas dans la force de securite brute.
Pour un regard plus approfondi sur le fonctionnement de la securite des cles en pratique, consultez les Bonnes Pratiques de Securite des Cles Privees.
Quelles Chaines Utilisent Laquelle ?¶
Le choix de la courbe est l'une des decisions architecturales les plus fondamentales qu'une blockchain prend. Voici un apercu des principaux reseaux :
Chaines secp256k1¶
- Bitcoin --- L'original. Utilise ECDSA avec secp256k1 pour les transactions standard, et les signatures Schnorr (egalement sur secp256k1) pour Taproot.
- Ethereum --- ECDSA avec secp256k1. Toutes les chaines compatibles EVM heritent de ce choix.
- BNB Chain --- Compatible EVM, utilise secp256k1.
- Polygon --- Compatible EVM, utilise secp256k1.
- Arbitrum et Optimism --- L2s d'Ethereum, heritent de secp256k1.
- Tron --- Utilise secp256k1 avec ECDSA.
- Dogecoin --- Fork de Bitcoin, utilise secp256k1.
- Litecoin --- Fork de Bitcoin, utilise secp256k1.
- Avalanche (C-Chain) --- Compatible EVM, utilise secp256k1.
Chaines ed25519¶
- Solana --- Utilise Ed25519 exclusivement. C'est l'une des raisons principales pour lesquelles Solana peut traiter des milliers de transactions par seconde.
- XRP --- Supporte a la fois secp256k1 et ed25519. Les utilisateurs peuvent choisir quelle courbe utiliser lors de la generation des cles.
- Cardano --- Utilise Ed25519 (specifiquement Ed25519-BIP32, une variante etendue).
- Polkadot --- Utilise principalement Sr25519 (Schnorr sur Ristretto25519), qui est etroitement liee a ed25519.
La repartition est largement generationnelle. Les blockchains concues avant 2015 tendent a utiliser secp256k1 (suivant l'exemple de Bitcoin). Les blockchains concues apres 2017 favorisent de plus en plus ed25519 ou des courbes apparentees.
Impact sur la Generation de Cles¶
Le choix de la courbe elliptique affecte directement la facon dont les cles et les adresses sont generees. Si vous utilisez les outils de SafeSeed, la difference est geree automatiquement, mais la comprendre vous aide a savoir ce qui se passe en coulisses.
Generation de Cles secp256k1¶
- Generez un nombre aleatoire de 256 bits (la cle privee). Il doit etre compris entre 1 et
n - 1, ou n est l'ordre de secp256k1 (~2^256). - Calculez la cle publique : multipliez la cle privee par le point generateur G sur secp256k1. Le resultat est un point (x, y) sur la courbe.
- La cle publique non compressee fait 65 octets (prefixe 04 + 32 octets x + 32 octets y). La forme compressee fait 33 octets (prefixe 02 ou 03 + 32 octets x).
- Hachez la cle publique pour produire l'adresse (SHA-256 + RIPEMD-160 pour Bitcoin ; Keccak-256 pour Ethereum).
Vous pouvez generer des cles secp256k1 avec le Generateur de Cle Privee Bitcoin ou le Generateur de Cle Privee Ethereum.
Generation de Cles ed25519¶
- Generez une graine aleatoire de 32 octets (ce n'est pas la meme chose qu'une seed BIP39 --- c'est le materiau de cle brut).
- Hachez la graine avec SHA-512 pour produire 64 octets. Les 32 premiers octets (avec des bits specifiques ajustes) deviennent le scalaire utilise pour la signature. Les 32 derniers octets servent a la generation du nonce lors de la signature.
- Calculez la cle publique : multipliez le scalaire par le point de base B sur edwards25519. Le resultat est un point compresse de 32 octets.
- Le format d'adresse est specifique a la chaine. Sur Solana, la cle publique elle-meme (encodee en Base58) est l'adresse.
Vous pouvez generer des cles ed25519 avec le Generateur de Cle Privee Solana.
Implications Inter-Courbes¶
Parce que secp256k1 et ed25519 sont mathematiquement incompatibles, une cle privee valide sur une courbe n'a pas de relation significative avec une cle sur l'autre. Lorsque vous restaurez une seed phrase dans un portefeuille supportant a la fois Bitcoin et Solana, le portefeuille execute deux processus de derivation completement separes a partir de la meme seed maitresse --- l'un utilisant secp256k1 pour les comptes Bitcoin/Ethereum, et l'autre utilisant ed25519 pour les comptes Solana. La seed partagee est la seule connexion entre eux.
C'est pourquoi le chemin de derivation inclut un type de monnaie : le chemin de Bitcoin (m/44'/0'/0'/0/0) et le chemin de Solana (m/44'/501'/0'/0') se separent au niveau du type de monnaie, et chaque branche utilise sa courbe respective. Pour une explication complete du fonctionnement des chemins de derivation entre les chaines, lisez Portefeuilles HD et Chemins de Derivation Expliques.
Et l'Informatique Quantique ?¶
Tant secp256k1 qu'ed25519 sont egalement vulnerables a un ordinateur quantique suffisamment puissant executant l'algorithme de Shor, qui pourrait resoudre le probleme du logarithme discret en temps polynomial. Aucune courbe n'est "plus resistante aux quantiques" que l'autre. La communaute cryptographique developpe des schemas de signature post-quantique, mais aucune blockchain majeure n'a encore migre vers l'un d'eux. Pour une evaluation actuelle, consultez L'Informatique Quantique et la Menace Crypto.
Choisir le Bon Outil¶
En tant qu'utilisateur, vous ne choisissez pas directement entre secp256k1 et ed25519. La blockchain que vous utilisez fait ce choix pour vous. Bitcoin et Ethereum imposent secp256k1. Solana impose ed25519. Ce que vous pouvez choisir, c'est d'utiliser des outils qui implementent correctement la courbe requise par votre chaine.
Les generateurs de SafeSeed gerent cela automatiquement. Le Generateur de Seed Phrase Bitcoin derive des cles secp256k1. Le Generateur de Seed Phrase Ethereum fait de meme. Le Generateur de Seed Phrase Solana derive des cles ed25519. Tous fonctionnent entierement cote client, en utilisant la Web Crypto API de votre navigateur pour la generation securisee de nombres aleatoires. Aucun materiau de cle privee ne quitte votre appareil.
Comprendre la courbe sous-jacente a votre blockchain ne change pas la facon dont vous utilisez votre portefeuille au quotidien. Mais cela vous aide a comprendre pourquoi les adresses Solana ont un aspect different des adresses Ethereum, pourquoi vous ne pouvez pas utiliser une cle privee Solana brute sur Ethereum, et pourquoi les hypotheses de securite derriere vos fonds sont aussi solides qu'elles le sont. Ces courbes sont le socle mathematique de la propriete de cryptomonnaies --- invisibles en usage normal, mais absolument fondamentales.