wallet : Comment convertir une phrase mnémonique entre différents nombres de mots ?
Je me suis posé des questions similaires qui m’ont amené à en savoir plus sur les mnémoniques avec Bitcoin, et comme beaucoup d’autres (pas toutes) crypto-monnaies, qui utilisent BIP39 qui est une spécification basée sur une liste de mots unique de 2048 mots (indexés à zéro de 0-2047 ) disponible dans différentes langues (bien que je doive noter que vous ne pouvez pas traduire les mots dans les langues prises en charge car ils ne contiennent pas les mêmes valeurs d’index dans les langues pour un mnémonique donné, en termes d’une méthode de « conversion » que vous pourriez impliquer).
- Le but de BIP39 est de créer un mnémonique lisible par l’homme (facile à écrire, réciter, lire, etc.) par rapport aux données binaires sous-jacentes que le mnémonique représente et qui sont lisibles par machine (zéros et uns, qui peuvent être représenté au format hexadécimal ou d’autres notations/numéros de base) mais n’est pas facile à écrire/réciter et donc BIP39 résout ce problème, cependant, comprendre ce qui se passe sous la surface est essentiel pour gérer les mnémoniques et prendre le contrôle de votre sécurité cryptographique
c’est pourquoi vous ne pouvez pas simplement choisir vos propres 12 ou 24 mots, car une partie du dernier mot est calculée sur la base de cette somme de contrôle (plus à ce sujet dessous).
Par exemple, dans BIP39 la liste de mots correspond à la plage de puissance 2^11 (soit 2048) et la raison pour laquelle le mnémonique finit par faire 12 ou 24 mots dépend de la sécurité souhaitée en termes de bits, selon qu’il s’agit de 128 bits ou 256 bits.
il doit y avoir un générateur de nombres pseudo-aléatoires (CSPRNG) sécurisé par chiffrement, tel que l’API de cryptographie du WorldWideWide Consortium (W3C) pour les portefeuilles Web (remarque : je suis un contributeur à ce spec sur Github) s’exécutant localement qui rassemble divers éléments aléatoires de votre appareil local d’une manière qui rendrait difficile la réplication ou la prédiction d’un attaquant, puis ces éléments sont utilisés comme entropie initiale (pour créer le mnémonique).
- En d’autres termes, pour un mnémonique de 24 mots, l’appareil produirait 256 bits et convertirait cette chaîne en un tableau d’octets et la hacherait à l’aide de SHA256, ce qui donnerait une autre sortie de 256 bits dont les 8 premiers bits sont pris et ajoutés. à la fin de l’entropie initiale, ce qui en fait une longueur de 264 bits.
Si vous divisez 264 bits par 11 bits par mot, les 24 groupes de 11 bits résultants correspondent chacun à la même valeur d’index de 11 bits où chaque mot se trouve sur la liste (où 0 = 00000000000 et 2047 = 11111111111). Ainsi, chaque mot correspondant à un nombre de 11 bits dans le mnémonique résultant. Les mots ne sont qu’un moyen facile de trouver le nombre de 11 bits, de recréer l’entropie initiale + la somme de contrôle pour dériver le portefeuille.
En matière de conversion :
Il n’est pas recommandé de choisir vos propres mots, premièrement parce que ce processus de sélection pourrait avoir un biais qui réduirait la sécurité résultante du mnémonique par rapport à un mnémonique généré aléatoirement, et deuxièmement parce que la somme de contrôle doit être calculée de manière déterministe (donc si vous coupez votre 24 mots en deux et utilisé les 12 premiers dans un autre portefeuille, il y a très peu de chances qu’il soit conforme à la somme de contrôle (1 chance sur 16), alors que choisir vos propres 24 mots serait encore moins susceptible d’être une plainte de somme de contrôle ( 1 chance sur 256).
- Par conséquent, il est préférable de ne pas choisir vos propres mots ou de trancher votre mnémonique, mais plutôt d’utiliser un logiciel de confiance dans un environnement de stockage à froid (hors ligne) pour une sécurité maximale
Entropie : Il en va de même pour le choix de votre propre entropie, en ce sens qu’il est préférable de la laisser à un logiciel de confiance. Bien que d’autres dans l’industrie aient donné quelques exemples de lancer une pièce 128 fois et d’écrire un 1 pour chaque tête et 0 pour chaque pile, ce qui est un moyen de créer manuellement 128 bits d’entropie pour un portefeuille (où le portefeuille calculerait la somme de contrôle de 4 bits) à condition que le processus de lancer de pièces soit aléatoire (c’est-à-dire qu’il n’y ait pas de pièce pondérée d’un côté).
- Cependant, de nombreux portefeuilles ne vous permettent pas de coller de l’entropie et autorisent uniquement l’importation ou la génération d’un mnémonique à la volée
Il existe un outil de conversion mnémonique (Remarque : J’y contribue sur Github) avec des fonctionnalités avancées qui peuvent accepter l’entropie pour créer un mnémonique de différentes longueurs, mais je ne le suggérerais pas à quelqu’un qui vient de commencer ou même à ceux qui ont des années d’expérience, sauf si vous maîtrisez parfaitement le Spécification BIP39, ainsi que BIP44 et BIP32, et toutes les innombrables façons dont une petite erreur peut entraîner une perte de fonds irréversible.
Concernant la question de la conversion : Bien que je ne sois pas sûr de ce que vous vouliez dire par « convertir » en supposant que vous vouliez dire couper un mnémonique 24 en deux pour n’utiliser que les 12 premiers mots, j’ai expliqué ci-dessus pourquoi ce n’est pas une option viable, à moins que les 12 mots se terminent être conforme à la somme de contrôle. (certains logiciels peuvent parcourir des mnémoniques valides de 24 mots pour en trouver un qui est également une plainte de somme de contrôle lorsqu’ils n’utilisent que les 12 premiers mots, mais les 12 derniers mots ne seraient probablement pas conformes à la somme de contrôle car il y aurait une chance sur 256 pour les 12 premiers ET les 12 derniers).
- De tels mnémoniques existent mais sont difficiles à trouver/créer tout en conservant le niveau de sécurité souhaité en termes de bits (réduire un mnémonique d’un mot réduit sa sécurité de moitié, ainsi un mnémonique de 12 mots n’a pas la moitié de la sécurité d’un 24 -mot mnémonique mais a à la place une sécurité égale à la racine carrée d’un mnémonique de 24 mots, où 2^128*2^128 == 2^256. Noter : J’ai écrit un programme similaire qui trouve des mnémoniques palindromiques réversibles valides qui sont conformes à la somme de contrôle en termes de BIP39, mais uniquement à des fins éducatives
Concernant l’utilisation du même mnémonique dans tous les portefeuilles : Si un portefeuille est compatible avec BIP39, il y a de fortes chances qu’il soit également compatible avec BIP44 pour prendre en charge plusieurs comptes/pièces, ce qui signifie que tant que le chemin de dérivation correct a été ajouté pour être pris en charge par les développeurs de ce portefeuille, cette crypto-monnaie seront pris en charge et pourront être utilisés avec votre mnémonique existant (mais pas s’ils utilisent une liste de mots différente, comme Monero, par exemple, qui n’est pas compatible BIP39). C’est pourquoi j’aime penser aux mnémoniques comme des coffres-forts cryptographiques, pas des portefeuilles (car un mnémonique peut contenir plusieurs comptes de crypto-monnaies contenant chacun plusieurs portefeuilles.
- Bien qu’il puisse être pratique de regrouper tous vos actifs cryptographiques sur un seul mnémonique, cela concentre également le risque en termes de garde responsable de la gestion de ce mnémonique, alors que le fait d’avoir plusieurs mnémoniques avec plusieurs crypto-monnaies sur chacun ajoute le fardeau de plus de coffres-forts crypto à gérer mais réduit le risque au cas où l’un serait compromis (je dirais que la plupart des investisseurs avertis en cryptographie en ont plusieurs, car un ou plusieurs pourraient être utilisés pour les portefeuilles chauds qui se trouvent sur des appareils connectés à Internet, alors que d’autres mnémoniques utilisés pour le stockage à froid sont sur le matériel portefeuilles ou appareils qui ne se connectent jamais en ligne
Emporter : il est préférable d’utiliser le logiciel fourni par le projet de jeton/crypto-monnaie sous-jacent car certains projets utilisent une liste de mots différente, et/ou d’autres différences qui pourraient rendre le mnémonique incompatible et entraîner une perte permanente de fonds, ou d’autres inconvénients tels que si le le même mnémonique peut dériver différentes adresses qui ne correspondent pas à travers le logiciel même avec le même chemin de dérivation choisi si la graine racine ou d’autres étapes divergent pour des raisons inconnues (et un tel dépannage est très technique pour trouver un bogue potentiel).
Entropie initiale de 128 bits au format hexadécimal :
Entropie en octets :
bytearray(b’e\x9b\x8a\x03\xbf\xbb\x80\xcd\xcd\xc3\xc3\x83\xd4\xb0\xd5\x05′)
Résumé de hachage SHA-256 des octets d’entropie, au format hexadécimal :
Fragment partiel de « l’octet » initial du hachage représentant les 4 premiers bits :
c
N premiers bits de hachage à convertir en hexadécimal : c
Somme de contrôle (hexadécimal en bits) :
1100
Entropie initiale + somme de contrôle = nombre total de bits :
Longueur totale des bits :
132
Répartis en 12 groupes de 11 bits :
Valeurs d’indice correspondantes pour chaque groupe (en base 10) :
Mnémonique correspondant :
grain épée liberté retraite légale groupe dommage voyage longue pas cristal argumenter