Karadocteur Menu

Bitcoin : clés privées, clés publiques, adresses et wallets

Bitcoin : clés privées, clés publiques, adresses et wallets

Comme vous le savez sûrement déjà, le Bitcoin est une cryptomonnaie qui a pour but de stocker et d'échanger de la valeur sur le réseau internet de manière sécurisée via une blockchain. Pour réaliser cela, Satoshi Nakamoto, le créateur du Bitcoin, a mis en place tout un système novateur et génialissime à base de clés privées, clés publiques, adresses bitcoin et wallets. Dans cet article, je me propose de vulgariser tout cela pour démystifier ces termes barbares et rendre compréhensible le fonctionnement du bitcoin par le plus grand nombre d'entre vous.

Détenir des Bitcoins, c'est posséder la clé privée

Comme c'est le cas avec n'importe quelle monnaie du monde (euros, dollars, etc) : pour en détenir il faut tout d'abord posséder un compte sur lequel les stocker ! Concernant le bitcoin et d'autres cryptomonnaies, posséder un compte : c'est posséder une clé privée. Vous lirez partout sur internet que les bitcoins vous appartiennent uniquement si vous contrôlez la clé privée.

En effet, une clé privée c'est en quelque sorte le mot de passe d'un compte de bitcoins puisque pour envoyer des bitcoins depuis un compte, il suffit simplement de fournir la clé privée du compte émetteur, le montant à transférer et l'adresse du compte receveur. C'est pour cela que celui qui possède la clé privée, possède le contrôle du compte bitcoin. En cas de perte ou de vol de clé privée, vous ne contrôlez plus vos BTC.

Il est important de comprendre que les bitcoins que vous détenez sur des plateformes d'achat ou d'échange, comme Coinbase ou Binance, ne vous appartiennent pas puisque vous ne possédez pas de clé privée en réalité. En effet, en cas de piratage ou de bug de ces plateformes, vous pouvez ne plus avoir accès à vos cryptoactifs... Facheux pour un projet qui prône la liberté financière et la décentralisation !

Par définition, une clé privée correspond simplement à un nombre choisi au hasard entre 20 (= 1) et 2256 (= 115 792 089 237 316 195 423 570 985 008 687 907 853 269 984 665 640 564 039 457 584 007 913 129 639 936). Rien que ça ! Ainsi, quand vous entendez parler de générer une clé privée : cela ne signifie rien d'autre que choisir un nombre aléatoirement dans cet intervalle.

cle privee

A titre de comparaison, il existe environ "seulement" 263 grains de sable sur la planètre Terre... La sécurité du Bitcoin réside en partie par le fait que le nombre de possibilités de clés privées est tellement gigantesque (2256) qu'il est impossible de tomber 2 fois sur la même clé privée si elle est générée au hasard.

Après avoir généré une clé privée aléatoirement, vous comprenez aisément qu'il n'est pas très pratique de conserver cette suite de chiffres telle quelle, notée au format décimal (base 10)... Il a donc fallu trouver un moyen pour raccourcir et uniformiser le format des clés privées. Plusieurs formats sont donc aujourd'hui disponibles, dont notamment le format héxadécimal, c'est-à-dire noté en base 16.

Toutefois, on retrouve le plus fréquemment le format WIF, signifiant Wallet Import Format, qui correspond à une notation en base 58. Pourquoi 58 ? Parce que ce nombre correspond à la somme de tous les caractères alpha-numériques, c'est-à-dire les chiffres de 1 à 9, les lettres minuscules et majuscules, sans compter les caractères pouvant porter à confusion, c'est-à-dire le "0" (zéro), le "O" (o majuscule), le "l" (L minuscule) et le "I" (i majuscule).

Pour votre culture personnelle, il peut être intéressant de savoir qu'il existe le format WIF non compressé dont les clés privées commencent toutes par le chiffre "5" et le format WIF compressé dont les clés privées commencent toutes par la lettre K ou L. Le format compressé est plus court, ce qui permet de réduire la taille des données à inscrire dans la blockchain et donc de diminuer les frais de transaction.

A partir de ces différents formats de clés privées, il est possible de les représenter plus facilement sous forme de QR Code.

Qu'est qu'une clé publique ?

Comme vous le savez sûrement, les transactions de bitcoins entre 2 comptes doivent obligatoirement être validées par les mineurs et inscrites dans la blockchain. Pour les valider, les mineurs ont besoin d'analyser la validité des informations de l'émetteur de la transaction. Seulement voilà : la seule information que l'émetteur peut fournir, c'est sa clé privée... Et comme on vient de le voir, si quelqu'un d'autre que vous accède à votre clé privée : il peut initier une transaction et prendre vos BTC !

Ainsi, comment faire pour vérifier l'identité de l'émetteur de la transaction sans avoir besoin d'accéder à la clé privée pour l'analyser ? Réponse : analyser la clé publique, une signature numérique unique de la clé privée ! Voyons ça de plus près...

Avez-vous déjà entendu parler de cryptographie asymétrique ? C'est un mot barbare, je vous l'accorde.

calcul savant

Tout d'abord, qu'est-ce que la cryptographie ? C'est un procédé qui sert à crypter des informations, comme par exemple encoder un message secret. Ceci était très recherché durant les guerres pour transmettre des informations sans que les ennemis puissent les comprendre lorsqu'elles étaient interceptées. Le but de la cryptographie est donc de transformer une information importante en quelque chose d'incompréhensible que l'on appelle un "hash".

Dans la cryptographie symétrique, il est possible de déchiffrer le message codé en appliquant exactement le procédé inverse du chiffrement. Par exemple, si vous faites correspondre les lettres de l'alphabet (A, B, ..., Z) à des chiffres (1, 2, ..., 26) et qu'on les sépare par un tiret, le mot KARADOCTEUR peut se chiffrer par "11-1-18-1-4-15-3-20-5-21-18". En connaissant l'algorithme de chiffrement, on peut très facilement faire le chemin inverse et retrouver le message codé.

En revanche, dans la cryptographie asymétrique, il est impossible de faire le chemin inverse et donc impossible de retrouver le message codé à partir du hash. Dans le protocole du Bitcoin, la clé publique est donc un hash de la clé privée, basé sur l'algorithme ECDSA, qui utilise la courbe elliptique secp256k1. Ceci se fait donc à sens unique, de sorte qu’il est impossible de retrouver la clé privée à partir de la publique.

Finalement, lorsqu'un utilisateur initie une transaction : il fourni uniquement sa clé privée, la clé publique est automatiquement calculée pour servir de signature numérique et seulement cette dernière est transmise aux mineurs pour qu'ils puissent vérifier les informations et inscrire la transaction dans la blockchain. De cette façon, la clé privée reste secrète et seulement la clé publique est connue de tous.

Les adresses bitcoin, c'est quoi ?

bitcoin

Une adresse bitcoin est en quelque sorte l'équivalent d'un IBAN pour les comptes bancaires classiques. Grâce à la cryptographie asymétrique, une adresse bitcoin est unique, spécifiquement associée à une clé privée et donc a fortiori à une clé publique. Ainsi, c'est une information qui peut être connue de tous, sans danger pour vos crypto-actifs. C'est-à-dire qu'il est impossible de voler des bitcoins en ayant comme seule information l'adresse où ils sont stockés.

Comme dit plus haut, pour envoyer des bitcoins à quelqu'un vous devez renseigner votre clé privée et l'adresse bitcoin du destinataire. A l'inverse, pour en recevoir, l'émetteur doit renseigner sa clé privée et votre adresse. De plus, les adresses bitcoins étant des données publiques, il est possible de les explorer afin de savoir le montant de BTC qu'elles contiennent et toutes les transactions qui ont été effectuées.

Il faut savoir qu'il existe plusieurs types d'adresses bitcoin. Les plus simples et les plus fréquemment utilisées sont les adresses Pay-to-Public-Key-Hash (P2PKH). Celles-ci sont produites également par cryptographie asymétrique à partir de la clé publique, via l'algorithme HASH160 qui correspond en réalité à la succession de l'algorithme SHA256 puis RIPEMD160. Enfin, l'adresse obtenue est présentée dans un format en base 58, comme pour les clé privées. De cette manière, on obtient des adresses qui commencent toutes par 1.

Si vous avez bien suivi, vous pouvez vous rendre compte qu'une clé privée permet de générer finalement 2 adresses distinctes : une depuis la clé publique non-compressée, l'autre depuis la clé publique compressée.

D'autres types d'adresses bitcoin sont disponibles et feront l'objet d'articles futurs :

  • Pay-to-Script-Hash (P2SH) : ce sont des adresses multisignatures, utilisées pour les comptes joints principalements. Elles ont la particularité de commencer par un 3.
  • Pay-to-Witness-Public-Key-Hash (P2WPKH) et Pay-to-Witness-Script-Hash (P2WSH) : ce sont des adresses introduites avec l'arrivée du protocole SegWit. Elles sont représentées en base 32 et commencent par bc1.

A noter que là-aussi, pour une question pratique, il est possible de représenter les adresses en QR Code. Cela facilitement grandement le stockage et le partage de ces informations précieuses.

Qu'est-ce qu'un wallet de cryptomonnaie ?

Le mot "wallet" signifie "porte-feuille" en anglais. Dans le jargon des cryptomonnaies, un wallet est un programme / logiciel / application qui a pour rôle de gérer vos clés privées, clés publiques et adresses bitcoin, afin d'envoyer et de recevoir des transactions sur la blockchain.

Il en existe différents types, disponibles sur des supports très différents et ayant chacun des avantages et des inconvénients. Parmi eux, on peut citer notamment :

  • Desktop Wallet : logiciel à télécharger sur un ordinateur de bureau ou portable.
  • Mobile Wallet : application à télécharger sur votre smartphone.
  • Hardware Wallet : dispositif dédié au stockage de cryptoactifs
  • Paper Wallet : clef privée et adresse imprimée sur une feuille de papier.
Pour information, sachez que j'ai créé une page sur ce blog qui permet de générer un nouveau paper wallet de bitcoins de manière aléatoire, sécurisée et gratuite !

Pour en savoir plus, je peux vous suggérer de lire mon article concernant les différents wallets pour stocker vos cryptomonnaies en toute sécurité.

En résumé

  • Les wallets de cryptomonnaies sont indispensables pour vous aider à gérer facilement vos interactions avec la blockchain, c'est-à-dire vos transactions. Ces logiciels permettent entre-autre de stocker vos clés privées et de calculer vos clés publiques.
  • Les clés privées doivent rester secrètes : vous êtes la seule personne qui doit en avoir connaissance, puisqu'elles vous permettent d'envoyer des actifs numériques à d'autres personnes. Si quelqu'un est en possession de votre clé privée, il peut vous voler vos bitcoins.
  • Les clés publiques sont utilisées par les mineurs en tant que signatures numériques afin de ne pas divulguer vos clés privées. Elles sont gérées entièrement par les wallets, vous n'avez générélement pas à vous en soucier.
  • Une adresse bitcoin est unique, spécifique à votre clé privée. Il n'est pas possible de voler des bitcoins simplement en connaissant l'adresse où ils sont stockés, c'est pourquoi vous pouvez la communiquer sans problème à tout ceux qui sont susceptibles de vous envoyer de l'argent.

Pour de plus amples informations sur ce thème, je peux vous conseiller de lire l'article Comprendre Bitcoin : Clés et adresses, un des meilleurs textes en français sur ce sujet !

Maintenant que vous comprenez parfaitement les cryptomonnaies, il serait peut-être temps d'investir dans le Bitcoin, qu'en pensez-vous ?

Vous avez des questions, remarques ou suggestions ? N'hésitez pas à m'en faire part dans les commentaires ci-dessous. Je me ferai un plaisir de vous répondre !