Comprendre vos clés Bitcoin  : mots de départ Bip39


Le fondement de l’autosouveraineté de Bitcoin est le contrôle de vos clés privées. Sans cela, d’une manière ou d’une autre, vous abandonnez le contrôle de votre argent à quelqu’un d’autre. « Pas vos clés, pas vos pièces » comme le dit le proverbe. Un aspect contre-intuitif du Bitcoin pour les personnes qui ne connaissent pas ses fondements techniques est « où » se trouve réellement votre Bitcoin. Quand les gens pensent à un portefeuille, ils pensent à « l’endroit où je garde mon argent ». Votre portefeuille Bitcoin ne « contient » pas réellement votre Bitcoin, il stocke simplement vos clés privées. Votre Bitcoin n’est que des entrées de données sur la blockchain hébergées par toutes les personnes participant au réseau. Lorsque vous dépensez votre bitcoin, vous proposez en réalité une mise à jour des données stockées sur la blockchain. Une clé privée permet au protocole de garantir que vous, et vous seul, pouvez autoriser une mise à jour de la blockchain qui dépense votre Bitcoin.

Alors, quelles sont vos clés privées ? Juste de très grands nombres. Extrêmement large. Il s'agit d'une clé privée en binaire  :

01101010

256 1 et 0 aléatoires. Ce nombre aléatoire est ce qui sécurise finalement votre Bitcoin. Cela n’a peut-être l’air de rien, mais c’est son caractère aléatoire qui garantit la sécurité de votre portefeuille. Il existe presque autant de clés privées Bitcoin possibles qu’il y a d’atomes dans l’univers visible. C’est le nombre de nombres qu’un ordinateur devrait compter pour générer et cataloguer toutes les clés privées potentiellement possibles. Tant que le processus utilisé pour générer les clés est véritablement aléatoire, vos clés sont en sécurité.

Comprendre vos clés Bitcoin  : mots de départ Bip39

Voici à quoi ressemble une clé privée en hexadécimal (le binaire utilise deux chiffres pour coder un nombre, 1 et 0, l'hexadécimal utilise 16 chiffres, 0-9 et AF)  :

Voici à quoi ressemble une clé privée au format WIF (Wallet Import Format) non compressé  :

Le format WIF est la manière dont tout le monde interagissait avec ses clés privées au début de Bitcoin. À cette époque, vous pouviez générer une clé privée à la fois, puis générer la clé publique à partir de celle-ci. Le processus de génération d'une clé publique n'est essentiellement que la multiplication de très grands nombres, mais il y a un peu plus que cela. Toutes les clés publiques sont un point x et y sur un graphique montrant une très, très grande courbe qui revient en arrière. sur lui-même.

Sur la courbe graphique, dans le cas de Bitcoin Secp256k1, il y a un point appelé « point générateur ». Ce point générateur peut être considéré comme le « point de base » sur la courbe Secp256k1. Cela fait partie intégrante du processus de génération de clés et de signature avec elles. Voici à quoi correspond le point générateur de la courbe de Bitcoin  :

G = 02 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798

Pour générer la clé publique à partir de votre clé privée, vous prenez la clé privée que vous avez générée et la multipliez par le point générateur. C'est ça. Cela établit désormais un point sur le graphique avec une relation mathématique avec la clé privée que vous avez générée et que vous seul connaissez.

Il s'agit d'une clé publique non compressée affichant les points x et y  :

Il est très courant de « compresser » des clés publiques dans les rares cas où vous interagissez avec elles pour simplement stocker la coordonnée x avec un octet pour vous indiquer si la coordonnée y est négative ou positive. Cela le raccourcit considérablement  :

Lorsque vous signez une transaction avec votre clé privée, cela se résume encore une fois à une simple multiplication. En générant un nombre aléatoire (le nonce) et en l'utilisant ainsi que votre clé privée pour multiplier essentiellement le hachage de la transaction que vous signez, vous produisez la signature (qui est composée de deux valeurs, r et S). Cela permet à quelqu'un d'exécuter un algorithme pour vérifier que le message a été signé par la clé privée appropriée sans révéler cette clé. Ce qui garantit que vous seul pouvez autoriser la dépense de votre Bitcoin est essentiellement la multiplication de très, très grands nombres.

Si vous n’êtes pas très familier avec ces concepts avant de lire ceci, tout cela semble probablement quelque peu intimidant. Binaire? Hexadécimal? Points du graphique ? Comment sauvegarder un WIF ?

Depuis le développement de méthodes plus intuitives de traitement de ces données, la plupart des utilisateurs ne connaissent pas ces formats compliqués. Très probablement, vous avez plus d’expérience avec les graines de mots, également appelées phrases de départ.

BIP 39 Graines mnémoniques

Les graines mnémoniques, ou phrases de départ, ont été créées pour résoudre le problème de l'expérience d'interaction avec vos clés privées.

les clés privées ne sont en fin de compte qu’une longue série de 1 et de 0 générés de manière aléatoire. Imaginez que vous essayez de créer des copies de ceci et assurez-vous de ne pas avoir commis d'erreur en le transcrivant  :

01101010

Il suffirait d’une seule erreur lors de la copie d’un chiffre pour rendre inutile une sauvegarde de vos clés. C’est là que les graines mnémotechniques sont utiles. 256 1 et 0 consécutifs d'affilée ne constituent pas une manière conviviale d'interagir avec des informations sensibles. Une mauvaise inscription de ce numéro entraîne la perte de l’accès à votre compte.

un camion renouvelle la fureur de l'âne rappelle les détails de la réforme de l'ordinateur portable divise le chagrin parce que la graisse

C'est beaucoup plus facile à gérer, n'est-ce pas ? Juste 12 mots. Alors, comment cela fonctionne-t-il, passer d'un tas de 1 et de 0 aléatoires à une chaîne de mots qui ont réellement un sens pour vous ? Un schéma de codage, tout comme le binaire ou l'hexadécimal  !

exemple de clé privée WIF plus tôt, il s'agissait simplement d'un nombre codé dans un schéma de codage spécifique, dans ce cas, la base 58, qui utilise tous les chiffres et lettres de l'alphabet sauf 0 et 1, et O et l ( sensible aux majuscules et minuscules). L'exclusion de ces caractères a été faite spécifiquement pour rendre improbables les erreurs de transcription en confondant un 1 pour un l, ou un 0 pour un O. bech32 et bech32m utilisés par Segwit et Taproot font passer cela au niveau supérieur en utilisant uniquement cet ensemble de caractères ( ).

La proposition d'amélioration Bitcoin 39 (BIP 39) a introduit un schéma de codage standardisé dans lequel chaque mot d'un dictionnaire spécialement conçu est mappé par ordre alphabétique à un nombre binaire compris entre 00000000001 et 11111111111. La graine de démonstration ci-dessus correspond à ceci  :

camion : 11101001001

renouveler : 10110110001

fureur  : 01011110011

âne : 01000001001

rappeler  : 10110101110

ordinateur portable : 01111101000

réforme : 10110100010

détail : 00111100010

fractionné  : 11010010001

deuil  : 01100110100

parce que  : 00010011110

graisse : 01010011011

En binaire, cela ressemble à ceci  :

11101001001 10110110001 01011110011 01000001001 10110101110 01111101000 10110100010 00111100010 11010010001 01100110100 000 10011110 0101001 1011

Il y a 2048 mots, chacun mappé à une chaîne spécifique de 11 chiffres de 1 et de 0, spécifiquement pour permettre aux utilisateurs d'interagir plus facilement avec leurs clés privées. Lorsque vous générez un nombre aléatoire pour votre clé privée, votre portefeuille découpe ce nombre en morceaux de nombres binaires à 11 chiffres et les mappe au dictionnaire mnémonique BIP 39. C'est toujours le même grand nombre, mais vous pouvez désormais le lire sous forme de mots anglais. Étant donné que votre cerveau est beaucoup plus habitué à ce format qu’aux longues chaînes de 1 et de 0, cela réduit considérablement les chances que vous écriviez quelque chose de mal et que vous perdiez votre Bitcoin dans le processus.

Vous avez peut-être remarqué que dans le codage binaire brut de la graine de mot ci-dessus, il y a quatre chiffres (1011) isolés, et le dernier « mot » ne comporte en réalité que 8 chiffres. Il s’agit d’une somme de contrôle pour garantir qu’une phrase de départ est valide. Lorsque vous générez votre nombre aléatoire, il n'y a pas suffisamment de chiffres pour le mapper exactement à 12 (ou 24) mots. Le portefeuille hache les chiffres existants que vous avez générés et prend les premiers chiffres du hachage pour les ajouter à la fin de votre nombre aléatoire. Cela vous donne suffisamment de chiffres pour correspondre au dernier mot.

Ce dernier mot vous permet d'effectuer un contrôle de sécurité sur les copies de votre graine. Si vous entrez incorrectement votre graine mnémonique dans un portefeuille, la somme de contrôle ne correspondra pas. Chaque graine de 12 ou 24 mots a plusieurs mots de contrôle potentiellement valides, mais si le dernier mot ne correspond pas à la somme de contrôle d'une graine correcte, votre portefeuille vous avertira qu'il est invalide. Cela donne aux utilisateurs un moyen intuitif mais néanmoins mathématique de garantir que leurs sauvegardes sont correctes, contrairement au processus compliqué de transcription et de sauvegarde des nombres binaires bruts.

La sélection des mots spécifiques de la liste est même allée jusqu'à garantir qu'aucun des 2048 mots n'ait les mêmes quatre premières lettres. Cela a été fait pour réduire le risque que des personnes commettent des erreurs de transcription en confondant des mots similaires et en se retrouvant avec une sauvegarde incorrecte de leurs clés privées.

Traduire ces mots en un ensemble de plusieurs clés privées/publiques est assez simple. Votre graine mnémonique est prise et hachée à l'aide de SHA512, qui génère un hachage de 512 1 et 0 individuels. La moitié de cette sortie est utilisée comme clé privée réelle et l'autre moitié est utilisée comme entrée dans SHA512 avec un numéro d'index et la clé privée ou publique existante pour générer une nouvelle paire de clés. Vous pouvez le faire autant de fois que vous le souhaitez pour générer de nouvelles clés privées/publiques qui peuvent toutes être récupérées à partir de votre seule phrase mnémonique.

Cela garantit que vous pouvez gérer vos clés privées aussi facilement et en toute sécurité que possible avec le moins de chances de commettre une erreur qui vous fera perdre votre argent. Et tout cela a été fait en utilisant les mathématiques ! J'espère que vous comprenez maintenant bien pourquoi les gens disent que Bitcoin est de l'argent « sécurisé par les mathématiques ».