Aller au contenu

Comment fonctionne le "seed" (d'Electrum) ?


L'affreux

Messages recommandés

Avec Electrum, il est possible d'utiliser un "seed", c'est une suite de mot anglais tirés au hasard, et qui permet de retrouver son compte.

 

Je me demande si le stockage long du seed est fiable dans la durée. Comment est fait le lien entre le wallet et le seed ? Est-ce un pur algorithme exécuté sur la machine de l'utilisateur ? Ou bien le processus de restauration dépend de serveurs Electrum qui stockent une table de correspondance ? Si le projet Electrum (et donc ses serveurs) devient un projet abandonné dans deux ans, est-ce qu'il sera toujours possible de restaurer ses wallets avec un seed dans quatre ans ?

Lien vers le commentaire

L'idée est que chaque mot représente un couple, triplet, quad d'octets (cf BIP39) qui, remis dans l'ordre, forment la graine du générateur permettant d'aller d'une clé à une autre. 

Tant qu'on a l'algo et le dictionnaire, on pourra retrouver la graine et les clés enfantées. Donc de ce point de vue, c'est très solide. 

 

Après, si la question est de savoir si le générateur est bien suffisamment aléatoire, on tombe dans la crypto (et la réponse est oui, c'est assez solide).

Lien vers le commentaire

Merci. Pour la solidité j'avais lu du positif et je ne m'en fais pas.

 

OK pour l'encodage d'octets via des mots anglais. Ce qui n'est pas clair pour moi est : "la graine du générateur permettant d'aller d'une clé à une autre". Cette graine ne varie pas selon les mouvements faits dans le wallet, c'est donc une adresse, peut-être un pointeur vers un endroit dans la blockchain ? Par exemple, avec Dash Core, le wallet est un fichier qui est modifié à chaque opération et qu'il faut re-sauvegarder. Est-ce pareil avec les bitcoins ? Ou bien avec Bitcoin Core le fichier wallet reste statique et est donc encodable en une graine ? Ou bien serait-il possible de faire le même mécanisme de graine avec Dash ? Mais dans ce dernier cas, je ne comprends pas comment un fichier wallet dont le contenu évolue pourrait être encodé par une graine figée.

Lien vers le commentaire

Le principe de la graine, c'est de l'utiliser pour généner autant d'adresses que ce dont on a besoin de manière déterministique (la graine elle-même contient toutes les informations nécessaires pour retrouver toutes les adresses). Elle-même ne change jamais.

En pratique, on utilise une fonction de hashage cryptographique, c'est à dire que connaissant le résultat il est impossible de retrouver le paramètre qui a servi à génerer le résultat. C'est une crypto très bien maîtrisé.

La première adresse est le résultat de hash(graine + 1), la deuxième de hash(graine + 2), etc. Connaître les différentes adresses ne permet ni de retrouver la graine, ni de calculer hash(graine + n), donc pour un observateur extérieur qui ne connait pas la graine, les adresses apparaissent non liées.

 

Pour bitcoin, historiquement, c'était pareil que dash, le wallet change tout le temps et n'utilise pas de graine (dash est un fork de bitcoin et à donc hérité ce fonctionnement). Je ne sais pas ce que fait le client core aujourd'hui, mais une personne censée utilise soit electrum, soit un wallet hardware qui utilisent tous les deux le principe de graine.

Pour dash, il existe electrum-dash qui fait pareil, ou un wallet hardware.

  • Yea 1
Lien vers le commentaire

C'est exactement le même principe pour toute génération procédurale. Par exemple, dans Minecraft, chaque seed produit un monde spécifique, unique. Si tu réutilise la seed popur une nouvelle partie, tu retrouve exactement le même monde. Totues les décisions pseudo-aléatoires que prend le générateur de monde (ou d'adresses, dans le cas du wallet) se font de manière identiques.

 

Et donc il y a exactement autant de mondes ou de wallets possibles qu'il y a de seeds possibles, pour chaque algo de génération.

Lien vers le commentaire
  • 2 months later...

Pour info, voici comment les mots clés sont choisis et comment les clés privées sont produites.

 

Les N mots clés sont simplement un moyen d'encoder la première clé "seed" (racine), comme ceci :

 

e3e9b5ca7128eb03d526a342904ef27d.png

 

les autres clés privées étant obtenues par dérivation de celle-ci :

 

msbt_0411.png

  • Yea 1
  • Post de référence 2
  • Ancap 1
Lien vers le commentaire

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...