BIP-39
Blog
Etape 1 : Génération de l’entropie
Entropie initiale (128 bits)
1101 1010 1011 0010 1010 1010 1010 1010 0110 1010 1010 1011 1010 1010 0101 1010
Cette séquence est complètement aléatoire, ce qui la rend impossible à deviner.
C'est la première étape fondamentale du processus BIP-39. L'entropie est comme le point de départ de toute la sécurité du portefeuille.
Quand nous choisissons 128 bits, c'est comme si nous lancions une pièce 128 fois de suite et notions chaque résultat (0 ou 1). Cela donne un nombre astronomiquement grand de possibilités : 2^128, soit environ 340 billions de billions de billions de combinaisons possibles !
Et si nous choisissons 256 bits, le nombre de possibilités devient encore plus vertigineux : 2^256 combinaisons. Pour mettre cela en perspective, c'est plus que le nombre estimé d'atomes dans l'univers observable !
Cette énorme quantité de possibilités est essentielle pour la sécurité. C'est comme avoir un coffre-fort avec tellement de combinaisons possibles qu'il serait impossible de toutes les essayer, même avec tous les ordinateurs du monde travaillant pendant des milliards d'années.
Le choix entre 128 et 256 bits dépend du niveau de sécurité souhaité :
128 bits donne 12 mots et est déjà extrêmement sécurisé pour la plupart des usages
256 bits donne 24 mots et offre une sécurité encore plus forte,
Checksum
Ajout du checksum (4 bits)
1101 1010 1011 0010 1010 1010 1010 1010 0110 1010 1010 1011 1010 1010 0101 1010 1010
132 bits au total (128 + 4)
Le checksum est un mécanisme de vérification qui permet de détecter les erreurs potentielles lors de la saisie ou de la copie de la phrase mnémonique. Voici comment il fonctionne étape par étape :
Hash SHA-256 de l'entropie Le processus commence en prenant l'entropie initiale (dans ce cas, 128 bits) et en la passant à travers la fonction de hachage SHA-256. Cette fonction produit une empreinte numérique unique de 256 bits pour n'importe quelle entrée. C'est une étape de sécurité importante car SHA-256 est une fonction cryptographique robuste qui rend pratiquement impossible la manipulation intentionnelle du checksum.
Aparte : SHA-256 est une fonction de hachage cryptographique qui possède plusieurs propriétés essentielles pour BIP-39 :
L'effet avalanche : Un changement d'un seul bit dans l'entrée modifie complètement la sortie. Par exemple, si quelqu'un fait une erreur en notant un seul mot de la seed phrase, le checksum calculé sera totalement différent. C'est exactement ce que nous voulons pour détecter les erreurs rapidement.
La résistance aux collisions : Il est extrêmement difficile de trouver deux entrées différentes qui produisent le même hash. Cela signifie qu'il est pratiquement impossible de créer une phrase mnémonique incorrecte qui aurait accidentellement un checksum valide.
La rapidité de calcul : SHA-256 est suffisamment rapide pour être utilisé sur des appareils mobiles ou des portefeuilles hardware, tout en maintenant un excellent niveau de sécurité.
Extraction de 4 bits Une fois le hash SHA-256 obtenu, on n'en prend que les premiers 4 bits. Le nombre de bits extraits n'est pas arbitraire : il correspond à la longueur de l'entropie initiale divisée par 32. Dans ce cas, 128/32 = 4 bits. Cette proportion est maintenue pour toutes les longueurs d'entropie possibles (par exemple, pour une entropie de 256 bits, on prendrait 8 bits de checksum).
Concaténation avec l'entropie Ces 4 bits de checksum sont ensuite ajoutés à la fin de l'entropie initiale. C'est une simple opération de concatenation qui donne :
Entropie initiale : 128 bits
Checksum : 4 bits
Total : 132 bits
Le résultat final de 132 bits est ensuite utilisé pour générer la phrase mnémonique. Cette longueur spécifique de 132 bits est importante car elle permet de diviser parfaitement le nombre en segments de 11 bits (132 ÷ 11 = 12), où chaque segment correspondra à un mot de la phrase mnémonique.
Ce système de checksum est particulièrement ingénieux car il permet de détecter immédiatement si un mot de la phrase mnémonique a été mal saisi ou modifié, rendant le processus de récupération de portefeuille plus sûr et plus fiable. Si un utilisateur fait une erreur en écrivant sa phrase, le checksum ne correspondra pas, et le portefeuille pourra l'avertir avant qu'il ne perde l'accès à ses fonds.
Découpage en segments de 11 bits
11011010101
10010101010
...
12 segments de 11 bits (132 ÷ 11 = 12)
Le découpage en segments de 11 bits est une partie fascinante du processus BIP-39. Pour bien comprendre pourquoi ce nombre 11 a été choisi, nous devons d'abord comprendre le système binaire.
En informatique, tout est basé sur le système binaire, qui ne connaît que deux états : 0 ou 1. C'est comme avoir une série d'interrupteurs qui peuvent être soit éteints (0) soit allumés (1). Chaque position dans un nombre binaire double les possibilités :
Avec 1 bit, nous avons 2^1 = 2 possibilités (0 ou 1)
Avec 2 bits, nous avons 2^2 = 4 possibilités (00, 01, 10, 11)
Avec 3 bits, nous avons 2^3 = 8 possibilités (000 à 111)
Quand nous arrivons à 11 bits, nous pouvons représenter 2^11 = 2048 valeurs différentes (de 0 à 2047). C'est exactement ce dont nous avons besoin pour BIP-39, car la liste standardisée contient précisément 2048 mots. Chaque segment de 11 bits peut donc être converti en un indice unique qui pointe vers un mot spécifique dans cette liste.
Pour le découpage lui-même, prenons les deux cas possibles :
Avec une entropie de 128 bits :
Nous ajoutons 4 bits de checksum (128 ÷ 32 = 4)
Nous avons donc 132 bits au total
En divisant 132 par 11, nous obtenons exactement 12 segments
Chaque segment devient un mot → 12 mots au total
Avec une entropie de 256 bits :
Nous ajoutons 8 bits de checksum (256 ÷ 32 = 8)
Nous avons donc 264 bits au total
En divisant 264 par 11, nous obtenons exactement 24 segments
Chaque segment devient un mot → 24 mots au total
Ce système est remarquablement bien conçu car les mathématiques s'alignent parfaitement : le nombre de bits dans chaque segment (11) permet exactement le bon nombre de possibilités (2048) pour correspondre à notre liste de mots, et le nombre total de bits (avec le checksum) se divise toujours parfaitement par 11 pour donner un nombre entier de mots.
![](https://framerusercontent.com/images/8RJKGjcgl2hrO4mOLPAno59u2I.png)
![](https://framerusercontent.com/images/Pn3RCYLl81FB9Ed2mvobIP1W93c.png)
Conversion en binaires (0-2047)
11011010101 → 1701
10010101010 → 1202
...
Chaque groupe de 11 bits devient un nombre entre 0 et 2047
Cette conversion de binaire en décimal est fondamentale pour comprendre BIP-39.
Comprendre comment transformer "11011010101" (11 bits) en "1701" (nombre décimal). En binaire, chaque position représente une puissance de 2, en commençant par la droite.
Prenons le temps de décomposer cela :
Voici nos 11 bits : 1 1 0 1 1 0 1 0 1 0 1
En partant de la droite, chaque position vaut :
1ère position (tout à droite) : 2^0 = 1
2ème position : 2^1 = 2
3ème position : 2^2 = 4
4ème position : 2^3 = 8
5ème position : 2^4 = 16
6ème position : 2^5 = 32
7ème position : 2^6 = 64
8ème position : 2^7 = 128
9ème position : 2^8 = 256
10ème position : 2^9 = 512
11ème position (tout à gauche) : 2^10 = 1024
Maintenant, pour calculer la valeur décimale, nous additionnons les valeurs uniquement là où nous avons un 1 :
1 1 0 1 1 0 1 0 1 0 1 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 1024 + 512 + 0 + 128 + 32 + 0 + 4 + 0 + 1 = 1701
En détail :
Position 11 (1) : 1024
Position 10 (1) : 512
Position 9 (0) : 0
Position 8 (1) : 128
Position 7 (1) : 32
Position 6 (0) : 0
Position 5 (1) : 4
Position 4 (0) : 0
Position 3 (1) : 1
C'est ainsi que nous obtenons le nombre 1701, qui servira ensuite d'index pour sélectionner un mot dans notre liste de 2048 mots.
Ce système est particulièrement ingénieux car il nous permet de passer d'une séquence de bits (facile à manipuler pour un ordinateur) à un nombre décimal (plus facile à comprendre pour nous), qui pointe ensuite vers un mot mémorisable dans notre liste.
![](https://framerusercontent.com/images/okUMKKCOnEpaI1hhzVg8mR2UgUc.png)
La liste de 2048 mots
![](https://framerusercontent.com/images/SqmdrX844Uh67M5lJmM94ZjLfJk.png)
https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt