Récupération du portefeuille Electrum

Le guide complet pour la récupération du portefeuille Electrum

electrum bitcoin wallet on laptop during recovery process (portefeuille bitcoin electrum sur l'ordinateur portable pendant le processus de récupération)

Electrum existe depuis novembre 2011, ce qui en fait un vétéran selon les normes du monde des cryptomonnaies. Cette longévité est à la fois une aubaine et un casse-tête pour la récupération. Une bénédiction, car le format du portefeuille est bien documenté et le code source est en Python open source, ce qui permet de le lire. Une malédiction, car quinze ans de changements de version signifient que le fichier du portefeuille stocké sur le disque dur de quelqu'un peut se présenter sous l'un des six formats existants, chacun avec des schémas de chiffrement, des chemins de dérivation et des types de graines différents. J'ai récupéré des portefeuilles Electrum datant de 2012, et chaque époque a ses propres difficultés.

Ce guide couvre tous les aspects techniques de la récupération du portefeuille Electrum : de la structure interne des fichiers du portefeuille aux mécanismes de chiffrement utilisés dans les différentes versions, en passant par le casse-tête que représente le chemin de dérivation, qui fait de la phrase « mon solde affiche zéro » la demande d'assistance la plus courante dans le monde du Bitcoin.

Comment Electrum stocke vos clés

Electrum enregistre votre portefeuille sous la forme d'un fichier unique et autonome. Par défaut, il s'appelle default_wallet (sans extension), et il se trouve à un emplacement prévisible en fonction de votre système d'exploitation :

Fenêtres : C:\Users\<USER>\AppData\Roaming\Electrum\wallets\

macOS : ~/Library/Application Support/Electrum/wallets/

Linux : ~/.electrum/wallets/

Le fichier du portefeuille est au format JSON : lisible par l'utilisateur, structuré et étonnamment clair. Ouvrez un portefeuille non chiffré dans un éditeur de texte et vous verrez l'intégralité du modèle de données : magasins de clés, adresses, historique des transactions, étiquettes, contacts, tout y est. Le keystore C'est là le cœur même de la guérison.

Le seed champ ci-dessous : si le portefeuille n'est pas chiffré ou si vous pouvez le déchiffrer, vous avez tout ce qu'il vous faut. Le xprv (clé privée étendue) permet de dériver toutes les clés enfants que le portefeuille a jamais utilisées. La seed_type vous indique quel schéma de dérivation a été utilisé, et derivation indique le chemin d'accès racine.

Pour les anciens portefeuilles (antérieurs à la version 2.0), la structure est différente. Au lieu de bip32, tu verras type: "old" avec mpk (clé publique principale). Ces champs utilisent le système de dérivation de clés propriétaire d'Electrum, qui est antérieur aux spécifications BIP32 et BIP39. Nous y reviendrons plus en détail ci-dessous.

Les fichiers de portefeuille contenant des clés privées importées (et non dérivées d'une graine) utilisent type: "imported" dans le keystore, et ces clés y sont stockées directement. Ces portefeuilles ne peut pas être récupérée à partir d'une phrase de récupération – Le fichier du portefeuille est votre seule sauvegarde. Si vous le perdez, ces clés sont perdues à jamais.

Les deux niveaux de cryptage d'Electrum

Electrum comporte deux couches de chiffrement indépendantes, et les confondre est l'une des erreurs de récupération les plus courantes que je rencontre.

Niveau 1 : Chiffrement du keystore (clés privées et graine)

Vos clés privées et votre phrase de récupération sont chiffrées à l'aide de AES-256-CBC. La clé de chiffrement est générée en traitant votre mot de passe à l'aide de deux tours de SHA-256 – c'est tout. Pas de PBKDF2 avec des centaines de milliers d'itérations comme MetaMask ou d'autres. Pas de scrypt. Juste SHA256(SHA256(password)). C'est pourquoi les portefeuilles Electrum sont nettement plus rapides à pirater par force brute que pratiquement n'importe quel autre portefeuille moderne. Un test de performance Hashcat, même sur un matériel GPU modeste, permet de tester des centaines de milliers de mots de passe potentiels par seconde sur un portefeuille Electrum.

Cette couche protège la graine et les clés privées contenues dans le fichier du portefeuille. Lorsque vous saisissez votre mot de passe pour signer une transaction, Electrum déchiffre brièvement les clés privées en mémoire, procède à la signature, puis supprime les clés déchiffrées. Le fichier du portefeuille stocké sur le disque conserve toujours les clés sous forme chiffrée.

Couche 2 : Chiffrement de fichiers entiers (ECIES)

Depuis la version 2.8 (sortie vers 2016), Electrum active par défaut le chiffrement complet du fichier. Ce système utilise le protocole ECIES (Elliptic Curve Integrated Encryption Scheme) – un chiffrement asymétrique dans lequel le fichier du portefeuille lui-même est chiffré à l'aide d'une clé publique dérivée de votre mot de passe. Le fichier chiffré se présente sous la forme d'un charabia binaire plutôt que de JSON, et vous avez besoin du mot de passe simplement pour l'ouvrir.

La différence fondamentale : lorsque le chiffrement complet du fichier est activé, le portefeuille ne dévoile aucune information sans le mot de passe correct. Il est impossible d'y jeter un œil pour voir les adresses, les transactions ou même le type de portefeuille. L'intégralité du contenu JSON est chiffrée à l'aide de l'algorithme ECIES. Lorsque le chiffrement complet du fichier est désactivé (ou n'était pas disponible dans les anciennes versions), le JSON est lisible, mais le xprv et seed ces champs contiennent du texte chiffré selon le standard AES.

Cette distinction est importante pour la récupération, car elle modifie votre surface d'attaque. Avec un simple chiffrement du keystore, il est toujours possible d'identifier le type de portefeuille, de voir les adresses et de vérifier que vous disposez du bon fichier avant de tenter une attaque par force brute. Avec le chiffrement complet du fichier, vous avancez à l'aveuglette jusqu'à ce que vous parveniez à déchiffrer le mot de passe.

Le système de graines d'Electrum – qui n'est pas le BIP39, et cela a une importance capitale

C'est là que la plupart des problèmes de récupération commencent. Electrum utilise son propre format de graine, qui n'est explicitement pas compatible avec le BIP39. Si quelqu'un tente d'importer une graine Electrum dans un portefeuille compatible uniquement avec le BIP39 (Exodus, Trust Wallet, la plupart des portefeuilles matériels), celle-ci sera soit rejetée d'emblée, soit générera des adresses complètement erronées.

La différence est d'ordre technique, mais importante. Le BIP39 prend vos mots mnémoniques, les convertit en entropie à l'aide d'une liste de mots fixe, ajoute une somme de contrôle, puis exécute PBKDF2 avec la phrase de passe « mnemonic » + un mot d'extension facultatif pendant 2048 itérations en utilisant HMAC-SHA512. Electrum 2.0+ effectue une opération similaire en apparence, mais fondamentalement différente : il exécute PBKDF2 pendant 2 048 itérations en utilisant la phrase de passe « electrum » + un mot d'extension facultatif. Même nombre d'itérations, même HMAC-SHA512, chaîne de sel complètement différente. La clé principale obtenue est totalement différente, même avec les mêmes 12 mots.

Il existait également un bug dans les anciennes versions d'Electrum (autour du ticket n° 4566) lié à la normalisation Unicode de la phrase de passe : plus précisément, Electrum supprimait de manière excessive les espaces des phrases de passe BIP39, allant jusqu'à remplacer deux espaces consécutifs par un seul. Si un utilisateur définissait une phrase de passe comportant des espacements inhabituels, ce bug pouvait rendre son portefeuille irrécupérable sur les versions plus récentes qui avaient corrigé ce problème de normalisation.

Les graines Electrum intègrent également un numéro de version dans la graine elle-même. Ce numéro est obtenu en appliquant une fonction de hachage à la phrase de récupération et en vérifiant si les premiers bits correspondent à un préfixe connu. Ce numéro indique le schéma de dérivation à utiliser :

  • Version préliminaire 01 — Portefeuille standard (ancienne version, pré-SegWit)
  • Version préliminaire 100 — Portefeuille SegWit (SegWit natif, Bech32)
  • Version préliminaire 101 — Portefeuille 2FA (avec cosignataire TrustedCoin)
  • Version préliminaire 102 — SegWit multisignature

C'est en fait une conception astucieuse : elle élimine le casse-tête lié au choix du chemin de dérivation, qui est le talon d'Achille du BIP39. Mais cela signifie que les graines Electrum constituent un « jardin clos ». Elles ne fonctionnent qu'avec Electrum (ou avec des logiciels prenant explicitement en charge le format de graine Electrum, comme l'outil BIP39 de Ian Coleman, qui dispose d'un mode Electrum).

Les trois époques des semences

Fichiers de démarrage antérieurs à la version 2.0 (Electrum 1.x, « ancien » format) : Celles-ci utilisaient un codage bidirectionnel : la phrase de départ pouvait être reconvertie en une valeur d'entropie spécifique, et inversement. Cela nécessitait une liste de mots exacte et fixe. La dérivation était le propre schéma d'Electrum (et non le BIP32), utilisant des chemins tels que m/0/k pour la réception d'adresses et m/1/k pour les adresses de change. Ces portefeuilles sont reconnaissables à "seed_type": "old" dans le fichier du portefeuille. C'est rare aujourd'hui, mais j'en vois encore chez des personnes qui ont créé des portefeuilles Bitcoin en 2012-2013 et qui les ont oubliés.

Fichiers de départ Electrum 2.x (2014 et après) : Intégration de la structure de portefeuille HD BIP32 avec le système de version de graine d'Electrum. Les portefeuilles standard utilisent un chemin de dérivation m/0h à l'adresse suivante : m/0h/0/k et changer à m/0h/1/k. Notez qu'il ne s'agit PAS de la procédure BIP44 (m/44'/0'/0'). Cette dérivation atypique est une source constante de confusion.

Graines SegWit pour Electrum 3.x+ : Lorsque la prise en charge de SegWit a été mise en place, Electrum a ajouté de nouvelles versions de graines pour les portefeuilles SegWit natifs. Celles-ci utilisent un chemin de dérivation m/0h de même – le chemin d'accès à la racine est identique, mais le préfixe de version de la graine garantit que le portefeuille génère des adresses Bech32 (bc1…) plutôt que des adresses héritées (1…).

Les chemins de dérivation et le problème du « portefeuille vide »

Les chemins de dérivation constituent la principale raison pour laquelle les utilisateurs, après avoir restauré une graine, se retrouvent avec un solde nul. Chaque élément du chemin a son importance, et une seule erreur dans les chiffres entraîne des clés et des adresses complètement différentes.

Voici la structure des chemins de dérivation pour Electrum :

Graines natives d'Electrum (non BIP39) :

  • Portefeuille standard classique : m/0h → réception à m/0h/0/k, changer à m/0h/1/k
  • Portefeuille standard SegWit : m/0h → réception à m/0h/0/k, changer à m/0h/1/k (même chemin, codage d'adresse différent)
  • Ancienne version d'Electrum (antérieure à la version 2.0) : m/k pour la réception, m/k avec une combinaison de touches distincte pour la modification

Graines BIP39 importées dans Electrum :

  • Ancien système (P2PKH, adresses commençant par 1) : m/44'/0'/0'
  • SegWit encapsulé (P2SH-P2WPKH, adresses commençant par 3) : m/49'/0'/0'
  • SegWit natif (P2WPKH, adresses commençant par bc1) : m/84'/0'/0'
  • Taproot (P2TR, adresses commençant par bc1p) : m/86'/0'/0'

Le piège : si quelqu'un a créé un portefeuille dans Trezor Suite (qui utilise BIP39 et m/84'/0'/0' (pour le SegWit natif), puis tente de restaurer son portefeuille dans Electrum à l'aide d'une graine de type Electrum, les chemins de dérivation ne correspondront pas. Même s'ils sélectionnent correctement « Graine BIP39 » dans les options d'Electrum, ils devront encore choisir le bon type de script (legacy, SegWit ou SegWit natif) et vérifier que le chemin de dérivation correspond bien à celui du portefeuille d'origine.

Et c'est là que les choses se compliquent vraiment : Electrum vous permet d'importer des graines BIP39, mais n'en génère PAS. Lors de la création d'un nouveau portefeuille, Electrum produit toujours son propre format de graine. L'option d'importation BIP39 existe uniquement pour assurer la compatibilité entre les différents portefeuilles. Mais Electrum accepte sans problème une graine BIP39 invalide (celle dont le mot de somme de contrôle est erroné) : il affiche un petit avertissement « checksum failed » (somme de contrôle échouée), mais ne vous empêche pas de continuer. Cela a conduit des utilisateurs à créer des portefeuilles avec des graines mal orthographiées qui semblent fonctionner jusqu'à ce qu'ils essaient de les restaurer.

Solution pratique au problème du portefeuille vide : si vous restaurez une graine et que le solde affiché est nul, essayez systématiquement différentes combinaisons. Commencez par déterminer si la graine est au format Electrum ou BIP39. Si c'est au format Electrum, la dérivation est automatique. Si c'est au format BIP39, vous devez essayer chaque type de script : d'abord le script SegWit natif (le plus courant pour les portefeuilles récents), puis le script SegWit encapsulé, et enfin le script hérité. Electrum 4.x inclut un bouton « Détecter les comptes existants » lors de la restauration BIP39 qui interroge le serveur pour obtenir l'historique des transactions sur les chemins de dérivation courants. Utilisez-le.

Si le portefeuille comportait plusieurs comptes (ce qui est courant avec les portefeuilles matériels utilisant Trezor Suite), n'oubliez pas qu'Electrum ne prend pas en charge plusieurs comptes par fichier de portefeuille. Vous devez créer un portefeuille distinct pour chaque compte, en incrémentant l'index du compte dans le chemin de dérivation : m/84'/0'/0' pour le compte 1, m/84'/0'/1' pour le compte n° 2, et ainsi de suite.

La limite d'écart et pourquoi vos fonds peuvent être invisibles

Même avec une graine et un chemin de dérivation corrects, des fonds peuvent sembler manquants en raison de la limite d'écart. Electrum génère les adresses de manière séquentielle et cesse la recherche lorsqu'il rencontre 20 adresses inutilisées consécutives (la limite d'écart par défaut). Si quelqu'un a utilisé les adresses de l'index 0 à 5, puis est passé à l'index 30 (peut-être via une API ou un autre portefeuille), Electrum ne détectera pas les adresses au-delà de l'index 25, car il atteint la limite d'écart et interrompt la recherche.

La solution est simple : dans la console d'Electrum (Affichage → Afficher la console), exécutez la commande suivante :

wallet.change_gap_limit(50)

Ou tout autre nombre dont vous avez besoin. Lancez ensuite une resynchronisation. Dans les cas extrêmes, j'ai fixé des limites d'écart à plus de 200 pour les portefeuilles utilisés par programmation (plateformes de commerce électronique, pages de dons).

Historique des versions et problèmes rencontrés lors des mises à jour

Les mises à jour d'Electrum ont toujours eu pour effet de rompre la rétrocompatibilité. Lorsque vous ouvrez un fichier de portefeuille dans une version plus récente, celle-ci modifie souvent le format interne, et les versions antérieures ne peuvent plus lire le fichier mis à jour. Ce fait est clairement indiqué dans la documentation, mais il est largement ignoré.

Les transitions de version critiques :

1.x → 2.0 (2014) : Changement complet du format du portefeuille. La prise en charge des portefeuilles HD BIP32 a remplacé l'ancienne méthode de dérivation propriétaire. Le processus de mise à jour régénère toutes les adresses. Electrum 1.x ne peut en aucun cas lire les fichiers de portefeuille 2.x. Si quelqu'un a besoin d'ouvrir un portefeuille v1, il doit installer spécifiquement Electrum 1.9.8.

2.x → 3.0 (2017) : Ajout d'un nouveau protocole serveur et de la prise en charge de SegWit. Les fichiers de portefeuille ont été mis à jour avec une nouvelle version du format. Introduction du type de graine SegWit. Le système interne seed_version Le champ correspondant dans le fichier JSON du portefeuille permet de suivre cela — si vous voyez seed_version: 13 ou 14, c'est un portefeuille de la génération v3.

3.x → 4.0 (2020) : prise en charge du Lightning Network, PSBT, restructuration interne importante. Les canaux Lightning sont stockés dans le fichier du portefeuille ; si des canaux étaient ouverts lors de la dernière utilisation du portefeuille, la récupération de la graine seule ne permettra pas de restaurer l'état des canaux Lightning. Le fichier du portefeuille lui-même est indispensable pour la récupération des données Lightning.

Série 4.x (depuis 2020) : améliorations continues. La version 4.1.0 a supprimé la possibilité de créer des portefeuilles hérités via l'interface utilisateur standard (le mode par défaut étant désormais SegWit natif). La version 4.5 et les versions ultérieures ont encore mis à jour la version du stockage. Le code de mise à niveau de la base de données du portefeuille gère la migration à partir de formats très anciens, mais cela ne se passe pas toujours sans heurts : il existe des cas particuliers dans le chemin de mise à niveau à partir des portefeuilles v1.9.8 qui peuvent déclencher des messages d'erreur vous invitant à contacter les développeurs.

La leçon à retenir : avant de mettre à jour Electrum, copiez toujours votre fichier de portefeuille dans un autre emplacement. Si la mise à jour provoque un dysfonctionnement, vous pourrez revenir à l'ancienne version à l'aide du fichier d'origine. Et surtout, ne revenez jamais à une version antérieure après qu'une mise à jour a modifié le fichier de portefeuille.

Le piratage des mots de passe et pourquoi Electrum est particulièrement vulnérable

La dérivation de clés d'Electrum – tout simplement SHA256(SHA256(password)) – est l'un des plus faibles de tout l'écosystème des portefeuilles de cryptomonnaies. Il n'y a ni sel, ni PBKDF2, ni scrypt, ni argon2. Deux passages par SHA-256, et voilà votre clé de chiffrement pour AES-256-CBC.

Pour replacer les choses dans leur contexte : MetaMask utilise 600 000 itérations PBKDF2. Bitcoin Core en utilise environ 100 000. Electrum utilise… deux opérations SHA-256. Sur un GPU moderne, hashcat peut tester des milliards de hachages SHA-256 par seconde. Même en tenant compte de la vérification par décryptage AES, le craquage des mots de passe d'Electrum est d'un ordre de grandeur plus rapide que celui de presque tous les autres portefeuilles.

Hashcat prend en charge Electrum via trois modes, en fonction du type de sel utilisé par le portefeuille :

  • Modèle 16600 – Portefeuille Electrum (type de sel 1-3) : couvre la grande majorité des portefeuilles. Le format du hachage se présente comme suit : $electrum$1*<hex_salt>*<hex_data>.
  • Mode 21700 – Portefeuille Electrum (Salt-Type 4) : nouveau format de chiffrement de portefeuille utilisant le chiffrement complet de fichier ECIES.
  • Mode 21800 – Portefeuille Electrum (type de sel 5) : dernière variante de chiffrement.

Pour extraire le hachage, utilisez electrum2john.py issu du projet John the Ripper.

btcrecover est l'autre outil incontournable, et sans doute plus pratique dans la plupart des cas de récupération, car il permet de générer des mots de passe à partir de mots-clés. Il suffit de lui indiquer les éléments dont on se souvient (« Je sais que ça commençait par “Bitcoin” et que ça finissait par des chiffres et peut-être un point d'exclamation ») pour qu'il génère toutes les combinaisons possibles. Pour Electrum en particulier, btcrecover prend en charge à la fois le fichier de portefeuille chiffré et la récupération directe de la phrase de récupération, notamment lorsque l'on dispose d'une phrase de récupération partielle comportant des mots manquants ou incertains.

Fichiers de portefeuille corrompus

La corruption des fichiers de portefeuille dans Electrum peut prendre plusieurs formes, et la méthode de récupération dépend de la nature du problème. Si vous rencontrez un cas particulier, vous pouvez nous contacter à l'adresse david@walletrecoveryservice.com et nous ferons de notre mieux pour vous aider.

Les portefeuilles « v1.9.8 bug » : il existe une catégorie spécifique de portefeuilles corrompus issus de la version 1.9.8 d'Electrum, dans lesquels la saisie d'une graine incorrecte lors de la restauration a généré un fichier de portefeuille qui semblait valide mais ne contenait en réalité aucune clé. Le code de la base de données des portefeuilles dans les versions récentes d'Electrum intègre un contrôle spécial à cet effet : il recherche les portefeuilles dépourvus de clés principales et dont la graine est de version v6, puis avertit l'utilisateur. Ces portefeuilles ne contiennent aucun fonds récupérable.

Corruption de l'état des canaux Lightning : si un portefeuille comportant des canaux Lightning ouverts est corrompu, la restauration à partir de la graine seule ne permettra PAS de récupérer les fonds Lightning. Les canaux Lightning sont étatiques : l'état le plus récent du canal (transactions d'engagement, clés de révocation) se trouve uniquement dans le fichier du portefeuille. Electrum inclut un mécanisme de sauvegarde des canaux (SCB – Static Channel Backups), mais celui-ci permet uniquement de forcer la fermeture des canaux, et non de les réactiver. Si vous disposez d'un portefeuille corrompu contenant des fonds Lightning, la priorité est de récupérer le fichier du portefeuille lui-même, et pas seulement la graine.

Stratégie de sauvegarde : Electrum dispose d'une fonction de sauvegarde intégrée accessible via Fichier → Enregistrer la sauvegarde (ou Enregistrer une copie dans les anciennes versions). Cela permet d'enregistrer une copie complète du fichier du portefeuille. La sauvegarde reste cryptée à l'aide de votre mot de passe ; vous aurez donc besoin à la fois du fichier de sauvegarde et du mot de passe pour effectuer une restauration. Pour une sécurité maximale, exportez la phrase de récupération sur papier ET conservez des sauvegardes du fichier du portefeuille (en particulier si vous utilisez Lightning ou des clés importées).

Le portefeuille Electrum pour Android

Electrum pour Android repose sur le framework Kivy (introduit dans la version 2.6) et utilise le même format de fichier de portefeuille que la version de bureau d'Electrum. Les types de graines, le cryptage et les chemins de dérivation sont identiques. Un fichier de portefeuille créé sur Android peut être ouvert sur un ordinateur de bureau, et inversement.

Le défi spécifique à Android réside dans l'accès aux fichiers. Sur les appareils Android non rootés, les fichiers du portefeuille Electrum sont stockés dans la mémoire interne privée de l'application, à l'emplacement suivant :

/data/data/org.electrum.electrum/files/data/wallets/

Vous ne pouvez pas accéder à ce chemin d'accès via un gestionnaire de fichiers classique ou par USB : le système de sandboxing d'Android l'empêche. Il s'agit d'une fonctionnalité prévue (pour empêcher d'autres applications de voler les fichiers du portefeuille), mais cela pose un réel problème de récupération si l'application plante ou est désinstallée par inadvertance.

Il n'existe pas de version iOS d'Electrum. Point final. Si quelqu'un prétend utiliser Electrum sur un iPhone, c'est qu'il utilise une fausse application – et l'App Store a vu apparaître au fil des ans de nombreux clones frauduleux d'Electrum destinés à voler des fonds.

Le problème lié aux fichiers de portefeuille écrasés ou supprimés

Les fichiers du portefeuille Electrum sont des fichiers ordinaires du système de fichiers. Cela facilite leur sauvegarde, mais augmente également le risque de les supprimer par inadvertance.

Scénario 1 : Fichier de portefeuille supprimé

Si le fichier du portefeuille a été supprimé (par inadvertance, lors d'une désinstallation ou à cause d'un logiciel malveillant), contactez WalletRecoveryService.com pour bénéficier d'un service professionnel de récupération de données ou envoyez-nous un e-mail à l'adresse david@walletrecoveryservice.com. Le fichier du portefeuille est généralement de petite taille (quelques centaines de Ko pour un portefeuille standard, voire plusieurs Mo pour les portefeuilles comportant un historique étendu des canaux Lightning), ce qui signifie qu'il est souvent récupérable sur le disque même après sa suppression – À CONDITION que le disque n'ait pas fait l'objet d'un écriture intensive depuis lors.

Sur les SSD, la fenêtre TRIM s'applique : cessez immédiatement d'utiliser le disque. Sur les disques durs, vous disposez d'un peu plus de temps, mais chaque opération d'écriture risque d'écraser les secteurs du fichier du portefeuille.

Scénario 2 : Portefeuille écrasé lors de la restauration

Il s'agit d'un piège propre à Electrum. Lorsque vous effectuez une restauration à partir d'une graine dans Electrum et que vous choisissez le même nom de fichier de portefeuille qu'un fichier existant, Electrum écrase l'ancien fichier. La documentation le mentionne, mais on peut facilement passer à côté dans le feu de l'action. Si vous disposez d'un fichier de portefeuille contenant des clés privées importées (et non dérivées d'une graine) et que vous l'écrasez en restaurant une graine différente sous le même nom de fichier, ces clés importées seront perdues, à moins que vous n'ayez effectué une sauvegarde séparée.

Veillez à toujours utiliser un nom de fichier différent lors de la restauration : restored_wallet, recovery_test, tout ce qui n'est pas le nom d'un fichier de portefeuille existant.

Scénario 3 : Fichier de portefeuille sur un disque dur défectueux

Le fichier de portefeuille d'Electrum est un fichier unique et autonome. Si vous parvenez à récupérer ce fichier à partir d'un disque dur défaillant – grâce à une récupération de données professionnelle, à la création d'une image disque ou à l'extraction de fichiers – walletrecoveryservice.com peut vous aider et vous accompagner tout au long du processus – vous disposez alors de tout ce dont vous avez besoin. Il n'est pas nécessaire de récupérer l'intégralité de l'installation d'Electrum, de sa configuration ou des en-têtes de la blockchain. Seuls le fichier de portefeuille et votre mot de passe (ou phrase de récupération) sont requis.

Le vecteur d'attaque par hameçonnage : un problème propre à Electrum

Electrum présente une faille de sécurité bien connue qui n'existe pas dans la plupart des autres portefeuilles, et qui a un impact direct sur la procédure de récupération, car elle est à l'origine des situations mêmes qui nécessitent une récupération.

En décembre 2018, on a découvert que les serveurs Electrum pouvaient envoyer des messages d'erreur arbitraires au client, qu'Electrum affichait sous forme de texte HTML. Des pirates ont mis en place des serveurs Electrum malveillants qui, lorsqu'un utilisateur diffusait une transaction, renvoyaient une fausse erreur « mise à jour requise » accompagnée d'un lien vers un site de phishing hébergeant un fichier binaire Electrum modifié. Les utilisateurs qui téléchargeaient et installaient cette fausse mise à jour se faisaient voler leurs graines ou leurs mots de passe de portefeuille.

Cette attaque a été particulièrement dévastatrice car le message de phishing s'affichait directement dans l'interface d'Electrum, ce qui lui donnait un aspect officiel. Des milliers de bitcoins ont été volés avant que la faille ne soit corrigée. Le correctif a été publié dans la version 3.3.3 d'Electrum, qui a désactivé l'affichage du code HTML dans les messages du serveur.

Pourquoi cela est-il important pour la récupération ? De nombreux utilisateurs qui ont perdu des fonds à la suite de cette attaque possèdent toujours les fichiers originaux de leur portefeuille, avec les graines d'origine : la version de l'attaquant a volé les clés et transféré les fonds, mais le portefeuille légitime existe toujours. Si quelqu'un vient me voir en disant « J'avais des bitcoins dans Electrum et ils ont tout simplement disparu en 2018-2019 », l'attaque par hameçonnage est toujours l'une des premières choses que je vérifie. Dans ce cas, la récupération n’est pas d’ordre technique : les fonds ont été volés, pas perdus. Mais il est important de poser le bon diagnostic afin que l’utilisateur ne perde pas de temps et d’argent à essayer de cracker le mot de passe d’un portefeuille qui a été vidé par un attaquant.

Récupération de portefeuille avec signature multiple et authentification à deux facteurs

Electrum prend en charge les portefeuilles à signatures multiples et une option d'authentification à deux facteurs via TrustedCoin, deux fonctionnalités qui compliquent la procédure de récupération.

Portefeuilles à signatures multiples dans Electrum sont identifiés par le champ « Type de portefeuille » : "wallet_type": "2of3" ou similaire. Le fichier du portefeuille contient plusieurs magasins de clés (x1/, x2/, etc.), chacun représentant un cosignataire. Pour effectuer un paiement à partir d'un portefeuille multisig, vous devez disposer du nombre de clés requis. Si vous disposez du fichier du portefeuille contenant tous les fichiers de clés des cosignataires, la procédure de récupération se déroule normalement. Si vous ne disposez que de la graine d'un seul cosignataire et que vous avez besoin des autres cosignataires, vous devez obtenir la coopération des autres détenteurs de clés.

Les portefeuilles à authentification à deux facteurs (2FA) utilisent TrustedCoin comme service de cosignature. Il s'agit essentiellement de portefeuilles multisignature « 2 sur 3 », dans lesquels TrustedCoin détient une clé et l'utilisateur en détient deux. La récupération nécessite soit : (a) deux des trois graines, soit (b) une graine, à condition que le service TrustedCoin soit opérationnel et que l'utilisateur soit authentifié. Si TrustedCoin cesse ses activités, les utilisateurs peuvent toujours effectuer des transactions en utilisant leurs deux graines locales, mais ils ont besoin des deux. La clé de récupération 2FA qu'Electrum affiche lors de la création du portefeuille (et que la plupart des gens ne notent jamais) est la troisième graine, et elle est essentielle pour la récupération sans TrustedCoin.

Des techniques de récupération qui font leurs preuves dans la pratique

Après des années passées à récupérer des portefeuilles Electrum, voici les cas que je rencontre le plus souvent et la manière dont je les aborde.

Scénario 1 : Vous disposez de la phrase de récupération, il vous suffit de restaurer

Ouvrez Electrum, puis sélectionnez Fichier → Nouveau/Restaurer. Choisissez « Portefeuille standard » → « J'ai déjà une graine ». Saisissez la graine. S'il s'agit d'une graine Electrum, Electrum détectera automatiquement le type de graine et la dérivation. S'il s'agit d'une graine BIP39 (provenant d'un portefeuille matériel ou d'un autre portefeuille logiciel), cliquez sur Options → sélectionnez « Graine BIP39 » AVANT de saisir les mots. Choisissez le type de script approprié et vérifiez le chemin de dérivation. Définissez un nouveau mot de passe.

Si le solde est nul : essayez différents types de scripts (SegWit natif, SegWit encapsulé, Legacy). Si vous utilisez BIP39, cliquez sur « Détecter les comptes existants » pour rechercher l'historique. Augmentez la limite d'écart si des adresses au-delà de la 20e ont été utilisées.

Scénario 2 : Vous disposez du fichier de portefeuille et du mot de passe

Il suffit d'ouvrir Electrum et de lui indiquer l'emplacement du fichier du portefeuille. Si le fichier se trouve sur une clé USB ou à un emplacement autre que celui par défaut, utilisez Fichier → Ouvrir et naviguez jusqu'à lui. Une fois ouvert, vous pouvez consulter votre phrase de récupération dans Portefeuille → Phrase de récupération (mot de passe requis), exporter vos clés privées ou simplement effectuer des transactions comme d'habitude.

Scénario 3 : Vous disposez du fichier du portefeuille, mais vous avez oublié votre mot de passe ; vous avez toutefois la phrase de récupération

Ignorez complètement le mot de passe. Créez un nouveau portefeuille à partir de la phrase de récupération (comme dans le scénario 1). La phrase de récupération génère les mêmes clés, quel que soit le mot de passe défini sur l'ancien fichier de portefeuille. Définissez un nouveau mot de passe pour le nouveau portefeuille.

Scénario 4 : Vous disposez du fichier du portefeuille, mais vous avez oublié votre mot de passe et vous n'avez pas la phrase de récupération

C'est le domaine de la force brute. Contactez un expert en récupération de données professionnel tel que walletrecoveryservice.com ou extraire le hachage à l'aide de electrum2john.py, puis l'envoyer à hashcat (mode 16600, 21700 ou 21800 selon le type de sel) ou à btcrecover.

Scénario 5 : Ancien portefeuille Electrum v1.x

N'essayez pas d'ouvrir un portefeuille v1 directement dans Electrum 4.x : la mise à niveau peut échouer dans certains cas particuliers, et si c'est le cas, vous aurez besoin de disposer du fichier d'origine intact. Contactez-nous par e-mail à l'adresse david@walletrecoveryservice.com; nous traitons ce genre de cas depuis longtemps.

Scénario 6 : La phrase de récupération Electrum ne fonctionne pas dans un autre portefeuille

Si vous essayez d'importer une phrase de récupération Electrum dans un portefeuille autre qu'Electrum (Trezor, Ledger, Exodus, etc.), cela ne fonctionnera pas, car ces portefeuilles exigent le format BIP39. Vous pouvez restaurer vos fonds dans Electrum, puis les transférer vers le portefeuille de destination.

Scénario 7 : la phrase de récupération BIP39 d'un portefeuille matériel affiche des adresses erronées dans Electrum

Vous avez probablement sélectionné un type de script ou un chemin de dérivation incorrect. Pour les portefeuilles Trezor : le SegWit natif est m/84'/0'/0', l'héritage est m/44'/0'/0', le SegWit encapsulé est m/49'/0'/0'. Si vous disposez de plusieurs comptes, incrémentez le dernier index sécurisé. Electrum doit être configuré en mode BIP39 (Options → Graine BIP39) avant de saisir les mots.

Scénario 8 : Portefeuille Android, l'application ne s'ouvre pas

Si le téléphone est rooté, accédez à /data/data/org.electrum.electrum/files/data/wallets/ et copiez le fichier du portefeuille. Si aucune de ces solutions ne fonctionne et que vous disposez de la phrase de récupération, effectuez une restauration sur votre ordinateur. Si vous ne disposez pas de la phrase de récupération et que le téléphone n'est pas rooté, votre dernière option consiste à faire appel à un service professionnel d'extraction de données Android capable de créer une image de la mémoire de l'appareil.

Les outils indispensables à tout spécialiste de la récupération d'Electrum

  • electrum2john.py – Extraction de hachages à partir de l'édition Jumbo de John the Ripper. Compatible avec tous les formats de portefeuille Electrum.
  • hashcat – Modes 16600, 21700, 21800. Cracking rapide de mots de passe via GPU.
  • btcrecover – Récupération de mot de passe et de phrase de départ à l'aide d'un jeton (pour les phrases de départ partielles ou incertaines).
  • L'outil BIP39 de Ian Coleman – À utiliser uniquement hors ligne. Dispose d'un mode « seed » pour Electrum permettant de générer des clés et des adresses à partir de graines au format Electrum.

Ce qui distingue les portefeuilles récupérables de ceux qui sont perdus

L'écosystème Electrum est plus tolérant que la plupart des autres, car le fichier du portefeuille est un fichier JSON autonome, portable et bien documenté qui peut être ouvert dans n'importe quel éditeur de texte (à condition qu'il ne soit pas entièrement chiffré) et traité par des outils open source largement pris en charge. Le chiffrement, bien qu'il offre une protection suffisante à la plupart des utilisateurs, est nettement moins performant que les normes du secteur – ce qui est préjudiciable à la sécurité, mais excellent pour la récupération.

Les portefeuilles que je ne parviens pas à récupérer présentent l'une des deux caractéristiques suivantes : soit l'utilisateur a perdu à la fois la phrase de récupération ET le fichier du portefeuille (je n'ai donc aucun élément sur quoi m'appuyer), soit l'utilisateur a perdu la phrase de récupération, mais dispose du fichier du portefeuille et a défini un mot de passe extrêmement fort (plus de 15 caractères aléatoires), rendant toute attaque par force brute mathématiquement irréalisable, même avec le système de dérivation de clé peu sécurisé d'Electrum.

Tout le reste – chemins d'accès incorrects, incompatibilités de format, fichiers endommagés, anciennes versions, extraction sur Android – peut être résolu à l'aide d'outils personnalisés adaptés et des connaissances nécessaires.

La chose la plus importante que vous puissiez faire dès maintenant : rendez-vous dans « Wallet → Seed » dans votre installation d'Electrum, notez ces 12 mots sur un bout de papier, puis rangez ce bout de papier dans un endroit sûr. Votre fichier de portefeuille peut être endommagé, supprimé, chiffré ou perdu. Mais ces douze mots sur papier, conservés en lieu sûr, vous permettront toujours de récupérer vos bitcoins.

 

Vous avez des questions ? Envoyez-les-nous par e-mail à l'adresse david@walletrecoveryservice.com