Bitcoin - Comment la SEED est-elle créée ?
La création d’un wallet et ses paires de clés privées/publiques commence par la génération d’une SEED. Voici le processus.
![seed bitcoin](https://www.cointribune.com/app/uploads/2023/07/crypto-2-1024x683.png)
Bitcoin Improvement Proposal 39
Certains standards se sont imposés au fur et à mesure de l’évolution des wallets. Notamment :
-La phrase mnémoniques (aussi appelée « seed » par abus de langage) : BIP-39
-Le wallet HD (Hiérarchique Déterministe) : BIP-32
Aujourd’hui, quasiment tous les wallets utilisent le protocole BIP-39 proposé en 2013 par Marek Palatinus et Pavol Rusnak (co-fondateurs de Satoshilabs).
La BIP-39 tire son nom du fait qu’il s’agit de la 39e proposition d’amélioration du bitcoin (BIP). Elle est un protocole permettant de générer aléatoirement une phrase mnémonique servant ensuite à créer un wallet HD.
Depuis BIP-32, les paires de clés dérivent toujours de la même façon (déterministe). Ce protocole étant largement adopté, il est désormais possible de retrouver toutes ses clés privées (et donc l’accès à ses BTC) en entrant sa phrase mnémonique dans la plupart des wallets.
Un autre avantage est qu’il n’est plus nécessaire d’utiliser directement des clés privées très difficiles à mémoriser. Mémoriser une phrase mnémonique de 12 mots suffit à retrouver l’accès à des millions de clés.
Le processus de création de la seed se décompose en deux phases :
-Génération de la phrase mnémonique (un groupe de mots faciles à retenir)
-Conversion en seed (à partir de laquelle seront dérivées toutes les clés privées/publiques du wallet)
[Pour rappel, il faut utiliser une adresse (une paire de clé privée/publique) différente pour chaque transaction afin de gagner en anonymat.]
Génération de la seed
1) Générer l’entropie
L’entropie consiste à choisir un grand nombre d’une taille comprise entre 128 et 256 bits. 128 bits d’entropie correspondent à une phrase mnémonique de 12 mots.
160 bits d’entropie = 15 mots
192 bits d’entropie = 18 mots
224 bits d’entropie = 21 mots
256 bits d’entropie = 24 mots
Nous prenons pour notre exemple une entropie de 128 bits :
0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 0 1 1 1 0 1 1 0 0 0 1 1 1 0 0 0 0 1
(Soit 9 021 802 605 472 555 840 788 517 848 795 437 281 en format décimal)
Ce nombre est généré de manière aléatoire par votre wallet (ce qui est déjà tout un programme que nous n’aborderons pas).
2) Générer un checksum
Il faut d’abord passer l’entropie dans l’algorithme de hachage SHA-256 qui nous donne le hash :
40f006b68841cd790b25b66008366cc130b6b1e274399be44c4d0e7df283376a
Puis prendre les quatre premiers bits de ce hash (qui est exprimé en hexadécimal) et les ajouter à la fin de l’entropie. Le chiffre 4 correspond à 0100 en binaire :
00000110110010011000100100110101111010111101011101001010001100001101010101100011111001111001010011001001100010011101100011100001[0100]
3) Faire des séparations de 11 bits
00000110110 / 01001100010 / 01001101011 / 11010111101 / 01110100101 / 00011000011 / 01010101100 / 01111100111 / 10010100110 / 01001100010 / 01110110001 / 11000010100
4) Convertir en décimal
0 0 0 0 0 1 1 0 1 1 0 = 54
0 1 0 0 1 1 0 0 0 1 0 = 610
0 1 0 0 1 1 0 1 0 1 1 = 619
1 1 0 1 0 1 1 1 1 0 1 = 1 725
0 1 1 1 0 1 0 0 1 0 1 = 933
0 0 0 1 1 0 0 0 0 1 1 = 195
0 1 0 1 0 1 0 1 1 0 0 = 684
0 1 1 1 1 1 0 0 1 1 1 = 999
1 0 0 1 0 1 0 0 1 1 0 = 1 190
0 1 0 0 1 1 0 0 0 1 0 = 610
0 1 1 1 0 1 1 0 0 0 1 = 945
1 1 0 0 0 0 1 0 1 0 0 = 1 556
Ces représentations décimales varient de 0 à 2047 (211 possibilités). Autant de nombres correspondant chacun à un mot issu d’une liste bien précise de 2048 mots introduite dans la BIP-39.
Cette liste est telle qu’aucun mot ne commence par les quatre mêmes lettres. Se contenter de sauvegarder les quatre premières lettres de chaque mot suffit donc à les retrouver.
5) Trouver les mots correspondants à ces nombres :
54 = Allow
610 = Equip
619 = Essence
1 725 = Stuff
933 = Innocent
195 = Blue
684 = Fever
999 = Lamp
1 190 = Net
610 = Equip
945 = Invite
1 556 = Second
La phrase mnémonique de douze mots sera donc :
Allow Equip essence Stuff Innocent Blue Fever Lamp Net Equip Invite Second
Conversion en seed
Les wallets utilisent le plus souvent la fonction PBKDF2 (Password-Based Key Derivation Function) pour convertir la phrase mnémonique en seed. Il s’agit d’une fonction de dérivation de clé.
Dans notre cas, la clé sera la seed à partir de laquelle des paires de clés privées/publiques seront dérivées à l’aide de la cryptographie sur les courbes elliptiques.
Le PBKDF2 applique une fonction de hachage (HMAC-SHA-512) à la phrase mnémonique. L’opération est répétée 2048 fois d’affilée afin de générer la seed.
A noter que l’on ajoute aussi une information supplémentaire (le « sel ») pour renforcer la sécurité des informations qui sont hachées. Cela permet d’empêcher certains types d’attaques.
Le sel est par défaut le mot « mnemonic ». Mais il est également possible de rajouter une « passphrase ». Des wallets comme Trezor le recommandent afin de rendre vaine toute extraction de seed du hardware.
La plupart des wallets ne proposent pas cette option par défaut. La raison étant qu’il faut alors se souvenir de deux informations (la seed et la passphrase), sous peine de perdre l’accès à ses BTC.
La seed de 512 bits servira pour créer le wallet HD. Dans notre cas, nous nous retrouvons avec cette seed de 512 bits :
b8485829b0151585b9c24ba336811b7274c08d0d44380028f01f7d7e5e5c2e26811cef5b44c9785ffae7341ed8ec6f079a77829136b148b72b73f70ea7d31c02
Ainsi, les wallets génèrent une entropie. Puis en tirent une phrase mnémonique qu’ils convertissent par suite en une seed par le biais d’un processus complexe de hachage et de salage. Cette seed est ensuite utilisée pour générer les clés privées/publiques.
Nous verrons dans un prochain article comment dériver les clés privées et publiques à partir de la seed (BIP-32).
Maximisez votre expérience Cointribune avec notre programme 'Read to Earn' ! Pour chaque article que vous lisez, gagnez des points et accédez à des récompenses exclusives. Inscrivez-vous dès maintenant et commencez à cumuler des avantages.
Reporting on Bitcoin, "the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy".
Les propos et opinions exprimés dans cet article n'engagent que leur auteur, et ne doivent pas être considérés comme des conseils en investissement. Effectuez vos propres recherches avant toute décision d'investissement.