Jump to content
Sign in to follow this  
L'affreux

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

Recommended Posts

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 ?

Share this post


Link to post
Share on other sites

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).

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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
  • Ancap 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...