Dans le monde des crypto-monnaies, l’utilisation d’un hardware wallet (portefeuille de stockage physique) pour sécuriser ses fonds est devenu systématique au point où on ne saurait pas comment s’en passer. Pour autant cette dépendance devrait être mise en regard d'une éventuelle perte ou d'un éventuel vol.

Je vous propose un tutoriel qui vous permettra de conserver la capacité d’utiliser votre Ledger Nano S ou Ledger Nano X malgré sa perte ou sa destruction. Quand bien même vous ne l’auriez pas perdu, il est toujours bon de comprendre quelques astuces au sujet de Bitcoin.

Vous le constaterez par vous-même, ce tutoriel est relativement long et vous fera réaliser plusieurs manipulations. D’autre part, il existe des méthodes de récupération de portefeuille plus simples. Cependant, la manipulation de la graine (seed ou passphrase) de votre Ledger est quelque chose de très risquée. Le vol ou la perte de cette dernière implique la perte de vos fonds.

Je vous propose cette méthode, car elle permet de sécuriser un maximum cette graine.

 

Introduction étendue

Avant de se jeter directement dans ce tutoriel, il est nécessaire de comprendre ce que nous allons construire.

 

topologie

 

Comme on peut le voir, nous n’utilisons pas un mais deux ordinateurs ! En effet, le Ledger Nano est à lui tout seul une sorte d’ordinateur spécialisé. Il a pour rôle de stocker les clefs privées et de signer les transactions.

Les deux ordinateurs disposeront du wallet logiciel Electrum et auront deux fonctions très différentes :

  • Le premier portefeuille aura pour rôle d'ouvrir le portefeuille en lecture seule. Il nous permettra seulement d’afficher le solde courant du wallet, de préparer les transactions et de les diffuser sur le réseau une fois signée.
  • Contrairement au premier, le second portefeuille n’aura pas d’accès au réseau Internet. Il stockera de manière temporaire la graine de votre portefeuille matériel et aura pour fonction de signer les transactions.

Si pour vous le fonctionnement d’un portefeuille reste encore obscur, je vous invite à lire cet article de Ludovic Lars.

Pour en revenir sur notre configuration, le portefeuille en lecture seule vous demandera d’installer sur votre ordinateur le logiciel Electrum. Il s’agit d’un portefeuille logiciel exclusivement destiné à Bitcoin. Vous trouverez l'exécutable sur le site de l’éditeur : https://electrum.org. Il est open source (license MIT) et dispose d’une communauté très active. Cette partie n’est pas critique puisque ce portefeuille ne contiendra pas votre graine.

Pour le second, c’est une autre paire de manches puisqu’il faudra manipuler cette graine. Nous utiliserons la distribution Tails. Il s’agit d’une distribution Linux axée sur la confidentialité et ayant la particularité d’être amnésique. En effet, le système ne laisse par défaut aucune trace sur le disque dur de votre ordinateur,  car chaque extinction de la machine efface vos données. Vous trouverez l’ISO sur le site de l’éditeur : https://tails.boum.org/install/index.fr.html. Dans ce tutoriel, nous l’installerons sur une machine virtuelle à l’aide Virtual Box (lien de téléchargement : https://www.virtualbox.org/wiki/Downloads).

 

Récupération de la clef publique étendue

Comme évoqué dans l’article sur la génération des clefs et des adresses de Ludovic Lars, la clef publique étendue permet de récupérer l’ensemble des adresses Bitcoin de votre wallet. Elle peut être au format xpub, ypub ou encore zpub et est associée à un chemin de dérivation. Cette clef est récupérable dans le logiciel Ledger Live. Lancez-le, allez dans votre compte Bitcoin et cliquez sur la clef à molette.

 

Accès avancé pour récupérer la clef publique étendue

 

Dans la nouvelle fenêtre, cliquez sur « Advanced Logs » afin d’afficher le chemin de dérivation et la clef publique étendue.

 

Affichage de la clef publique étendue et du chemin de dérivation

 

Il est également nécessaire d’identifier le format de votre wallet. Pour ce faire, demandez une nouvelle adresse à l’aide de Ledger Live. Trois formats existent et ces derniers peuvent être reconnus grâce aux premiers caractères de l'adresse :

  • 1... : format legacy (appelé P2PKH)
  • 3... : format SegWit rétrocompatible (appelé P2SH-P2WPKH)
  • bc1... : format SegWit natif (appelé P2WPKH)

 

Conversion de la clef publique étendue

Cette étape est nécessaire si vous n’avez pas de portefeuille au format « legacy ».

En effet, Ledger Live affiche systématiquement la clef publique au format xpub, qui est le format natif pour les adresses legacy. Si vous utilisez portefeuille SegWit, il vous faut donc convertir votre clef.

Pour ce faire, téléchargez l’outil suivant : xpub converter. Puis, décompressez l’archive sur votre ordinateur. Cet outil n’envoie aucune information sur Internet. Ouvrez le fichier index.html.

 

outil de conversion de la clef

 

Collez votre clef publique étendue dans le formulaire (au format xpub).

  • Si votre wallet utilise des adresses au format SegWit compatible (3...), sélectionnez l’option « ypub (mainnet P2WPKH in P2SH) ». Cliquez sur « Convert » et vous obtiendrez une clef au format ypub.
  • Si votre wallet utilise des adresses au format SegWit natif (bc1...), sélectionnez « zpub (mainnet p2wpkh) ». Cliquez sur « Convert » et vous obtiendrez une clef au format zpub.

 

Création du portefeuille en lecture seule

Lancez Electrum, créez un nouveau wallet (Fichier Nouveau > Restaurer) et nommez-le.

Aux étapes suivantes, sélectionnez tout d’abord « Portefeuille Standard », puis « Utilisez une clef maîtresse ». Collez la clef publique étendue obtenue précédemment.

Ajoutez un mot de passe si vous souhaitez protéger l'accès à ce portefeuille. Pour rappel : ce portefeuille n'a pas accès à vos clefs privées et il lui est donc impossible de dépenser vos fonds.

Electrum va récupérer l’ensemble de transactions passées dans l’onglet historique et afficher votre solde courant. Si ce n’est pas le cas, c’est que vous n’avez pas correctement réalisé l’étape précédente.

 

Installation de Tails

Comme évoqué un peu plus haut, nous allons utiliser Tails dans une machine virtuelle. Cependant, je vous recommande de le démarrer sur votre propre ordinateur à partir d’une clef USB.

Pour en revenir à notre cas, il vous faudra préalablement installer un VirtualBox (ou équivalent).

Récupérez l’image ISO de tailOS sur le site officiel. Lancez VirtualBox et configurez-le comme dans le tutoriel du site de l’éditeur.

Démarrez votre machine virtuelle, sélectionnez la langue française et cliquez sur « Démarrer Tails ».

 

écran de démarrage de Tails

 

Une fois Tails lancé, coupez la connexion réseau en cliquant sur l’icône  icône (en haut à droite) puis sur « Filaire connecté » et enfin sur « Éteindre ».

 

coupure du réseau

 

Pour lancer Electrum, allez dans le menu « Applications » puis « Internet » et enfin « Electrum Bitcoin Wallet ». Sélectionnez le portefeuille par défaut et cliquez sur « Suivant ». Sur l’écran, sélectionnez « Portefeuille standard ». Pour le magasin de clef, choisissez « Je possède déjà une graine ». Sur l’écran d’importation de la graine, entrez celle qui correspond à votre portefeuille matériel. Avant de cliquer sur « Suivant », cliquez sur option et « Graine BIP39 ».

Sur le dernier écran, il vous faudra sélectionner le type de wallet ainsi que son chemin de dérivation. Le type de wallet est le même que sur votre wallet en lecture seule. Concernant le chemin de dérivation, il a été obtenu dans Ledger Live dans la première étape (dans mon cas m/49'/0'/0').

 

Affichage de la clef publique étendue et du chemin de dérivation

 

Pour rappel, voici la correspondance des wallets avec le format des adresses Bitcoin :

  • Legacy (P2PKH - Pay to Public Key Hash) : 1...
  • P2SH-SegWit / SegWit compatible (P2SH-P2WPKH - Pay Witness Public Key Hash nested in Pay to Script Hash) : 3...
  • Native SegWit (P2WPKH - Pay to Witness Public Key Hash) : bc1...

Comme le contenu de la machine virtuelle est détruit à l’extinction de machine, il n’est pas nécessaire de protéger le wallet avec un mot de passe.

Vous constaterez que votre solde est à 0, et c’est tout à fait normal. En effet, Electrum ne peut pas se connecter à Internet et ne peut donc pas se synchroniser avec le réseau Bitcoin. En revanche, il peut afficher vos adresses de réception via l’onglet « Adresses » (à afficher à l’aide du menu « Affichage »).

 

Réalisation d'une transaction

Pour réaliser une transaction, il faudra procéder aux étapes suivantes que nous allons détailler par la suite :

  • La préparation de la transaction de dépense sur le wallet en lecture seule.
  • L'exportation de la transaction du wallet en lecture seule.
  • L'importation de la transaction dans le wallet Tails.
  • La signature de la transaction sur le wallet Tails.
  • L'exportation de la transaction du wallet Tails.
  • L'importation de la transaction signée dans le wallet en lecture seule.
  • La diffusion de la transaction sur le réseau.

 

Préparez la transaction

Sur le wallet en lecture seule, cliquez sur « Envoyer ». Entrez l’adresse Bitcoin de destination et le montant. Si besoin, modifiez les frais.

 

Préparation de la transaction

Cliquez ensuite sur « Aperçu ». Sur la fenêtre d’aperçu, exportez la transaction dans un fichier. Il est également possible de copier la transaction.

 

Signez la transaction

Chargez le fichier dans la machine virtuelle puis importez dans le portefeuille Electrum. Pour ce faire, allez dans le menu « Outils » puis cliquez sur « Charger une transaction » et « Depuis un fichier ». Sélectionnez le fichier.

Notez qu'il est possible de coller la transaction via le menu « Charger une transaction » puis « Depuis un texte ».

 

La transaction est décodée par Electrum. Le bouton « Signer » vous permet de signer la transaction. Si le bouton n’est pas cliquable, c’est qu’il y a vraisemblablement une erreur dans le chemin de dérivation ou dans le format du wallet. Il est dans ce cas nécessaire de réinitialiser le portefeuille Electrum et refaire l'étape d'importation de la graine.

Après signature de la transaction, exportez ou copiez la transaction.

 

Diffuser la transaction sur le réseau

Importez la transaction signée dans votre wallet en lecture seule de la même manière (menu « Outils » puis « Charger une transaction »). Il ne vous restera plus qu’à la diffuser sur le réseau.

 

diffusion d'une transaction signée

 

 

Conclusion

Comme nous venons de le voir, la manière de procéder est essentielle et il faut être particulière vigilant lors l’importation de votre graine BIP39. Réalisez cette opération dans un ordinateur dans lequel vous avez entièrement confiance. Par ailleurs, l’utilisation d’une machine virtuelle pourra s’avérer insuffisante.

Gardez également à l'esprit que Tails est amnésique et qu'il faudra réimporter votre graine ce qui vous expose à son vol. D’autre part, après importation d’une transaction et avant de signer cette dernière, prenez garde à bien vérifier les informations sensibles comme l’adresse de destination et le montant envoyé.

En définitive, malgré l'ensemble des inconvénients listés, cette procédure est un palliatif suffisamment sécurisé en cas de perte, de vol ou de destruction de votre portefeuille matériel.

👉 Puis-je récupérer toutes mes cryptos grâce à ma passphrase ?

A propos de l'auteur : Jonathan Fraga

twitter-soothsayerdatatwitter-soothsayerdata

De formation réseau et sécurité, je suis tombé en 2014 dans Bitcoin. J'ai vécu la popularisation des "technologies blockchains" avec l'émergence de Ethereum et survécu à l'euphorie de 2017. J'aime analyser Bitcoin à travers ses concepts et sa technologie. J'aime encore plus partager mes découvertes.
Tous les articles de Jonathan Fraga.

guest
4 Commentaires
Inline Feedbacks
View all comments
Samuel

wow, ca demande de s'y connaître.
N'y a-t-il pas de clé privée pour signer la transaction ?
A quoi sert le hardware si finalement tout est faisable sans lui ?
Merci

Cedalone

C'est une solution qui fonctionne mais réservée a une elite! Sinon, on a deux nano s avec le même setup et le pb est réglé. Le plus important est de bien conserver la liste de mots de récupération quand on a un ledger, en cas de perte ou vol il suffit de la rentrer dans un ledger neuf pour récupérer ses clés.