Clés privées, clés publiques et adresses dans Bitcoin
Acheter Bitcoin (BTC)
Publicité eToro
Dans l'univers des cryptomonnaies, les notions de clé privée, de clé publique et d'adresse reviennent régulièrement. Cependant, elles sont encore assez mal comprises par beaucoup et peuvent prêter à confusion. Nous allons voir dans cet article ce qu'il en est.
Dans Bitcoin, toutes les transactions sont enregistrées sur un grand registre public appelé la blockchain. Les bitcoins sont échangés entre des adresses, données en général sous la forme de chaînes de caractères, par exemple 1J5LQL86oA9Q4wT4D91GECbY4caioj5a4p. Une adresse est en quelque sorte un compte appartenant à un utilisateur dont il se sert pour conserver, recevoir et échanger ses bitcoins.
En général, une adresse est liée à une clé privée et à une clé publique. Ces dernières interviennent dans le processus de signature numérique qui permet de dépenser les bitcoins présents à l'adresse correspondante. La clé privée joue le rôle de mot de passe pour l'accès au compte et la clé publique permet de vérifier publiquement la signature sans que la clé privée ne soit dévoilée.
Qu'est-ce qu'une clé privée ?
Une clé privée est un nombre aléatoire compris entre 1 et 2256 (soit environ 1.1579 × 1077). Ce qu'on appelle générer une nouvelle clé privée revient simplement à choisir un nombre dans cet intervalle. La sécurité de ce procédé vient du fait que le nombre de possibilités est tellement grand qu'il est statistiquement impossible de tomber deux fois sur la même clé privée si elle est choisie au hasard.
Les clés privées sont usuellement représentées en base 58 sous la forme d'une chaîne de caractères. Elles commencent toujours par un 5, un K ou un L. Par exemple :
Kzczf8E4oq8MLakhRS479gpZpSe2e6u2xErKHQNqpeFMPEK4irtc
La clé privée permet de dépenser les bitcoins présents à une adresse, et est donc censée rester secrète aux yeux des autres, d'où son nom de clé « privée ». Ainsi, on peut dire que quelqu'un ne possède réellement des bitcoins que lorsqu'il a accès à ses clés privées.
Les clés privées sont généralement conservées dans ce qu'on appelle des portefeuilles ou wallets. Vos clés privées sont enregistrées sur votre appareil, que vous utilisiez un smartphone, un ordinateur ou un portefeuille matériel (hardware wallet) comme le Ledger Nano S. La plupart du temps, elles sont générées par ces portefeuilles de manière déterministe à partir d'une phrase de récupération 12 à 24 mots. Il faut donc conserver précieusement cette phrase qui vous permettra de retrouver vos fonds si votre appareil est volé ou cassé.
Si vous avez des bitcoins sur une plateforme d'échange classique comme Coinbase ou Kraken, alors c'est cette dernière qui conserve vos bitcoins à votre place (comme le ferait une banque) et vous n'avez pas accès à vos clés privées.
Qu'est-ce qu'une clé publique ?
Une clé publique va toujours de pair avec une clé privée. Dans le cas de Bitcoin, la clé publique est calculée à partir de la clé privée à l'aide d'un algorithme de cryptographie asymétrique appelé ECDSA (Elliptic Curve Digital Signature Algorithm ou algorithme de signature numérique sur courbes elliptiques). L'opération est réalisée à l'aide de la courbe elliptique secp256k1 représentée ci-dessous. Elle se fait à sens unique, de sorte qu'il est impossible de retrouver la clé privée à l'aide de la publique.
La paire clé privée / clé publique intervient dans la signature des transactions. L'utilisateur signe sa transaction avec sa clé privée et les autres acteurs du réseau vérifient cette signature à l'aide de la clé publique. Si la clé publique correspond à la signature, la transaction est validée et ajoutée à la chaîne de blocs. Sinon elle est refusée par le réseau. Dans ce processus, la clé privée n'est donc pas dévoilée et seule la clé publique est connue de tous, d'où son nom de clé « publique ».
Les clés publiques sont gérées de manière automatisée par les logiciels qui construisent les transactions. L'utilisateur ne voit pas sa clé publique en général. Elles sont usuellement représentées sous forme hexadécimale. Par exemple, la clé publique associée à la clé privée donnée plus haut est :
02f5e25778dcee9539b25799831277eb8e731ffcbdcd9e68f79f8ca43c570b94ba
Notez aussi que, bien que ces clés soient publiques, elles ne sont en général révélées qu'au moment de la transaction. L'information fournie publiquement par l'utilisateur et qui lui permet de recevoir des fonds est l'adresse.
Les adresses simples
Une adresse simple est calculée à partir de la clé publique à l'aide de fonctions de hachage. La clé publique est d'abord hachée par la fonction SHA-256, puis le résultat est haché par la fonction RIPEMD-160. Ou pour le dire sous forme plus mathématique, si K est la clé publique, alors l'adresse a est :
À = RIPEMD160( SHA256( K ) )
Les deux fonctions de hachage sont des fonctions irréversibles et il est donc impossible de retrouver la clé publique à partir de l'adresse. Tout comme la clé privée, l'adresse est usuellement représentée à l'aide de la base 58 sous forme de chaîne de caractères. Elle commence toujours par un 1. L'adresse correspondant à notre exemple paire de clés ci-dessus est :
1KMnRF6NbRnLg8KkqBGorSyLGM14BVR2LS
Ainsi, l'adresse est calculée à partir de la clé publique, qui est elle-même calculée à partir de la clé privée. Ces opérations sont à sens unique, si bien que personne ne peut retrouver votre clé privée (ni même votre clé publique si vous n'avez pas réalisé de transaction) à partir de votre adresse !
Il faut également noter que les portefeuilles les plus récents génèrent systématiquement de nouvelles clés et de nouvelles adresses à chaque paiement. Cela permet d'améliorer la confidentialité des transactions qui sont inscrites sur la blockchain. Un utilisateur utilise donc généralement plusieurs dizaines d'adresses.
D'autres types d'adresse
Ici on a parlé des adresses simples traditionnelles. Dans le milieu, elles sont souvent appelées adresses Pay-to-Public-Key-Hash (P2PKH), car elles représentent chacune le hachage d'une clé publique (public key). Il existe un autre type d'adresse appelé Pay-to-Script-Hash (P2SH), utilisé pour les adresses issues de scripts complexes. Ces dernières commencent par un 3, par exemple :
3KspPat3qWB1eFrxSLqCv6e4ozuxB9Bkya
Les adresses P2SH sont notamment utilisées pour les comptes joints (adresses multisignatures).
Avec SegWit, d'autres types d'adresses ont vu le jour : le Pay-to-Witness-Public-Key-Hash et le Pay-to-Witness-Script-Hash. Ces nouveaux types jouent à peu près le même rôle que les deux types précédents. Ces adresses ont la particularité d'être représentées en base 32 et de commencer par un bc1, par exemple :
bc1qe9s87yw62zu5qe7873x3zh3ahhls7677k4y5jt
Le cold storage
Puisque le calcul des clés privées et des adresses est entièrement déterminé, il est possible de les générer hors-ligne. Il n'y a ainsi pas besoin de se connecter au réseau pour créer un compte. Cette propriété est exploitée à des fins de sécurité : générer les clés et les adresses sur un appareil non connecté à Internet permet de diminuer drastiquement les risques de piratages. C'est ce qu'on appelle le stockage à froid ou cold storage et qui est notamment utilisé par les portefeuilles matériels.
On peut également réaliser un stockage à froid en générant des clés privées sur un ordinateur hors-ligne et les écrivant sur une feuille de papier : c'est ce qu'on appelle un portefeuille papier (paper wallet).
? Comment créer un portefeuille papier ?
Recevez un récapitulatif de l'actualité crypto chaque jour par mail 👌
Bonjour, je suis débutant en crypto, a ce stade j'ai ouvert un compte sur coinbase et binance. Donc si j'ai bien compris tant que j'aurais pas mis mes cryptos sur un wallet, par exemple un ledger, tant que mes crypto seront sur ses plateformes d'échange, je n'aurais pas de clé privé et de clé publique c'est sa? j'aimerais participé a une ico, mais apparement il faut une adresse non? ou une clé publique c'est sa? Donc il fautdrait que je mette mes crypto sur un wallet, ensuite j'aurais une clé privé et donc une clé publique, et la je pourais… Read more »
Merci beaucoup pour cet article. Un truc que je ne comprends pas, c'est : si une adresse est suffisante pour recevoir des Bitcoins, qu'est-ce qui garanti l'unicité de cette adresse? En d'autres termes, si Jean envoie 2BTC à l'adresse xY3z que Toto lui a communiqué, comment peut-il être certain que l'adresse xY3z est unique sur la Blockchain? Ça revient finalement à poser la question : est-ce que deux clé privées différentes peuvent générer une adresse identique ?
Il y a autant de chose de créer deux adresses identiques qu’il y a d’atomes dans l’univers. Les chances sont infimes.
Bonjour, et bravo à l'équipe cryptoast ,il y a un truc qui m'échappe avec les wallet ( soft ou cold), newbie, j'ai commencer avec Atomic Wallet, j'ai donc une phrase douze mots et des clés privées, jusqu'ici tout va bien. Devant les frais de transfert entre autre AAVE, j'ai voulu essayer trust WALLET qui me permettait d'utiliser des Dapps, histoire que mes valeurs dorment pas de trop , et j'ai rentré ma 12 mots Atomic dans trust wallet, j'ai du BTH, ETH, AAVE, XLM, COM, ET TRX, ça a plus ou moins fonctionné, j'ai bien ma liste de crypto, sauf… Read more »
Salut, je crois que sur trust on ne peut trouver ses clés privées que de certaines cryptos.... La clé privée n'est pas lié à un wallet... et un wallet comme trust n'a pas accès à tes clés privés ou ta phrase. Avec ta phrase de 12 mots tu peux retrouver tes "clés" privés. Tu peux avoir 50 portefeuilles avec ta même phrases, donc même clé à l'instant T.