Recupero del portafoglio Electrum

Guida completa al ripristino del portafoglio Electrum

Portafoglio Bitcoin Electrum sul portatile durante il processo di ripristino

Electrum esiste dal novembre 2011, il che lo rende un vero e proprio veterano per gli standard del mondo delle criptovalute. Questa longevità rappresenta sia una benedizione che una maledizione per il recupero dei dati. Una benedizione perché il formato del portafoglio è ben documentato e il codice è in Python open source, quindi è effettivamente leggibile. Una maledizione perché quindici anni di aggiornamenti significano che il file del portafoglio presente sul disco rigido di qualcuno potrebbe essere in uno qualsiasi di una mezza dozzina di formati, ciascuno con schemi di crittografia, percorsi di derivazione e tipi di seed diversi. Ho recuperato portafogli Electrum risalenti al 2012 e ogni epoca presenta le sue particolari difficoltà.

Questa guida illustra l'intero panorama tecnico del recupero del portafoglio Electrum: dalla struttura interna dei file del portafoglio, passando per i meccanismi di crittografia nelle diverse versioni, fino all'intricato percorso di derivazione che rende la richiesta «il mio saldo è pari a zero» la più comune tra le richieste di assistenza relative a Bitcoin.

Come Electrum conserva le tue chiavi

Electrum salva il tuo portafoglio in un unico file autonomo. Di default si chiama default_wallet (senza estensione) e si trova in una posizione prevedibile a seconda del sistema operativo in uso:

Finestre: C:\Users\<USER>\AppData\Roaming\Electrum\wallets\

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

Linux: ~/.electrum/wallets/

Il file del portafoglio è in formato JSON: leggibile dall'utente, strutturato e sorprendentemente chiaro. Se apri un portafoglio non crittografato in un editor di testo, vedrai l'intero modello di dati: archivi di chiavi, indirizzi, cronologia delle transazioni, etichette, contatti, tutto. Il keystore L'oggetto è il fulcro del recupero.

Il seed campo lì – se il portafoglio non è crittografato o se riesci a decrittografarlo, hai tutto ciò che ti serve. Il xprv (chiave privata estesa) può generare tutte le chiavi secondarie che il portafoglio ha mai utilizzato. La seed_type ti indica quale schema di derivazione è stato utilizzato, e derivation indica il percorso principale.

Per i portafogli meno recenti (versioni precedenti alla 2.0), la struttura è diversa. Invece di bip32, vedrai type: "old" con mpk (chiave pubblica principale). Questi campi utilizzano il metodo di derivazione delle chiavi proprietario originale di Electrum, che precede sia il BIP32 che il BIP39. Maggiori dettagli in proposito sono riportati di seguito.

I file di portafoglio che contengono chiavi private importate (non derivate da un seed) utilizzano type: "imported" nel keystore, e tali chiavi vengono memorizzate direttamente. Questi portafogli non può essere recuperato da una frase di seed – Il file del portafoglio è il tuo unico backup. Se lo perdi, quelle chiavi andranno perse.

I due livelli di crittografia di Electrum

Electrum dispone di due livelli di crittografia indipendenti, e confonderli è uno degli errori più comuni che riscontro durante le procedure di ripristino.

Livello 1: Crittografia dell'archivio delle chiavi (chiavi private e seed)

Le tue chiavi private e la tua frase di seed vengono crittografate utilizzando AES-256-CBC. La chiave di crittografia viene generata elaborando la tua password tramite due cicli di SHA-256 – tutto qui. Non PBKDF2 con centinaia di migliaia di iterazioni come MetaMask o altri. Non scrypt. Solo SHA256(SHA256(password)). Ecco perché gli attacchi di forza bruta contro i portafogli Electrum sono notevolmente più veloci rispetto a quelli contro praticamente qualsiasi altro portafoglio moderno. Un benchmark con Hashcat, anche su una scheda grafica di fascia bassa, è in grado di testare centinaia di migliaia di password candidate al secondo su un portafoglio Electrum.

Questo livello protegge il seed e le chiavi private all'interno del file del portafoglio. Quando inserisci la password per firmare una transazione, Electrum decrittografa temporaneamente le chiavi private in memoria, esegue la firma e poi elimina le chiavi decrittografate. Il file del portafoglio sul disco conserva sempre le chiavi in forma crittografata.

Livello 2: Crittografia dell'intero file (ECIES)

A partire dalla versione 2.8 (rilasciata intorno al 2016), Electrum abilita di default la crittografia dell'intero file. Questa funzione utilizza lo schema di crittografia integrato a curve ellittiche (ECIES), un sistema di crittografia asimmetrica in cui il file del portafoglio viene crittografato utilizzando una chiave pubblica derivata dalla tua password. Il file crittografato appare come una sequenza di caratteri binari incomprensibili anziché come un file JSON, e per aprirlo è necessaria la password.

La differenza fondamentale: quando la crittografia dell'intero file è attiva, il portafoglio non rivela alcuna struttura senza la password corretta. Non è possibile sbirciare all'interno per vedere indirizzi, transazioni o persino il tipo di portafoglio. L'intero contenuto JSON è protetto da ECIES. Quando la crittografia dell'intero file è disattivata (o non era disponibile nelle versioni precedenti), il JSON è leggibile ma il xprv e seed i campi contengono testo cifrato con crittografia AES.

Questa distinzione è importante ai fini del recupero perché modifica la superficie di attacco. Con la sola crittografia dell'archivio chiavi, è comunque possibile identificare il tipo di portafoglio, visualizzare gli indirizzi e verificare di avere il file corretto prima di tentare un attacco di forza bruta. Con la crittografia dell'intero file, invece, si procede alla cieca finché non si riesce a decifrare la password.

Il sistema di generazione dei semi di Electrum – non il BIP39, e questo è estremamente importante

È proprio qui che iniziano la maggior parte dei problemi relativi al ripristino. Electrum utilizza un formato di seed proprietario che non è in alcun modo compatibile con BIP39. Se si tenta di importare un seed di Electrum in un portafoglio che supporta solo BIP39 (come Exodus, Trust Wallet e la maggior parte dei portafogli hardware), l'operazione verrà rifiutata o genererà indirizzi completamente errati.

La differenza è tecnica ma significativa. BIP39 prende le parole mnemoniche, le ricollega all’entropia utilizzando un elenco di parole fisso, aggiunge un checksum e poi esegue PBKDF2 con la passphrase “mnemonic” + una parola di estensione opzionale per 2048 iterazioni utilizzando HMAC-SHA512. Electrum 2.0+ fa qualcosa di apparentemente simile ma sostanzialmente diverso: esegue PBKDF2 per 2048 iterazioni utilizzando la passphrase "electrum" + una parola di estensione opzionale. Stesso numero di iterazioni, stesso HMAC-SHA512, stringa di salt completamente diversa. La chiave master risultante è completamente diversa anche con le stesse 12 parole.

Nelle versioni precedenti di Electrum (intorno al ticket n. 4566) era presente anche un bug relativo alla normalizzazione Unicode della passphrase: in particolare, Electrum eliminava in modo aggressivo gli spazi bianchi dalle passphrase BIP39, rimuovendo anche uno spazio quando ce n’erano due consecutivi. Se un utente impostava una passphrase con una spaziatura insolita, questo bug poteva rendere il suo portafoglio irrecuperabile sulle versioni più recenti in cui era stata corretta la normalizzazione.

I seed di Electrum incorporano anche un numero di versione all'interno del seed stesso. La versione viene ricavata applicando un algoritmo di hash alla frase seed e verificando se i primi bit corrispondono a un prefisso noto. Questa versione indica quale schema di derivazione utilizzare:

  • Versione iniziale 01 — Portafoglio standard (versione precedente, pre-SegWit)
  • Versione iniziale 100 — Portafoglio SegWit (SegWit nativo, Bech32)
  • Versione iniziale 101 — Portafoglio 2FA (con cofirmatario TrustedCoin)
  • Versione iniziale 102 — SegWit multisig

Si tratta in realtà di una soluzione ingegnosa: elimina infatti il dilemma «quale percorso di derivazione devo usare?», che affligge il BIP39. Ciò significa però che i seed di Electrum sono un «giardino recintato»: funzionano solo in Electrum (o in software che supportano esplicitamente il formato dei seed di Electrum, come lo strumento BIP39 di Ian Coleman, che dispone di una modalità Electrum).

Le tre epoche dei semi

File di seed precedenti alla versione 2.0 (Electrum 1.x, formato “vecchio”): Questi utilizzavano una codifica bidirezionale: la frase seed poteva essere riconvertita in un valore di entropia specifico e viceversa. Ciò richiedeva un elenco di parole preciso e fisso. La derivazione era basata su uno schema proprio di Electrum (non BIP32), che utilizzava percorsi come m/0/k per ricevere indirizzi e m/1/k per gli indirizzi di cambio. Questi portafogli sono riconoscibili da "seed_type": "old" nel file del portafoglio. Ormai sono rari, ma me ne capita ancora di vederne tra chi ha creato un portafoglio Bitcoin nel 2012-2013 e se n’è poi dimenticato.

Seed di Electrum 2.x (dal 2014 in poi): È stata introdotta la struttura del portafoglio HD BIP32 con il sistema di versioni del seed di Electrum. I portafogli standard utilizzano il percorso di derivazione m/0h con indirizzi di destinazione a m/0h/0/k e cambiare a m/0h/1/k. Si noti che NON si tratta del percorso BIP44 (m/44'/0'/0'). Questa derivazione non convenzionale è fonte costante di confusione.

Seed SegWit per Electrum 3.x+: Con l'introduzione del supporto a SegWit, Electrum ha aggiunto nuove versioni di seed per i portafogli SegWit nativi. Queste utilizzano il percorso di derivazione m/0h allo stesso modo: lo stesso percorso di base, ma il prefisso della versione seed garantisce che il portafoglio generi indirizzi Bech32 (bc1…) anziché indirizzi legacy (1…).

Percorsi di derivazione e il problema del «portafoglio vuoto»

I percorsi di derivazione sono la causa principale per cui, dopo aver ripristinato un seme, si riscontra un saldo pari a zero. Ogni componente del percorso è fondamentale e un solo numero errato comporta chiavi e indirizzi completamente diversi.

Ecco la panoramica dei percorsi di derivazione per Electrum:

Semi nativi di Electrum (non BIP39):

  • Portafoglio standard tradizionale: m/0h → ricezione presso m/0h/0/k, cambiare a m/0h/1/k
  • Portafoglio standard SegWit: m/0h → ricezione presso m/0h/0/k, cambiare a m/0h/1/k (stesso percorso, diversa codifica dell'indirizzo)
  • Vecchia versione di Electrum (pre-2.0): m/k per la ricezione, m/k con una sequenza di tasti distinta per il cambio

Seed BIP39 importati in Electrum:

  • Versione precedente (P2PKH, indirizzi che iniziano con 1): m/44'/0'/0'
  • SegWit avvolto (P2SH-P2WPKH, indirizzi che iniziano con 3): m/49'/0'/0'
  • SegWit nativo (P2WPKH, indirizzi che iniziano con bc1): m/84'/0'/0'
  • Taproot (P2TR, indirizzi che iniziano con bc1p): m/86'/0'/0'

Il problema: se qualcuno ha creato un portafoglio in Trezor Suite (che utilizza BIP39 e m/84'/0'/0' (per SegWit nativo), e poi provi a ripristinare il portafoglio in Electrum utilizzando un seed di tipo Electrum, i percorsi non corrisponderanno. Anche se seleziona correttamente “BIP39 seed” nelle opzioni di Electrum, dovrà comunque scegliere il tipo di script corretto (legacy, SegWit o SegWit nativo) e verificare che il percorso di derivazione corrisponda a quello del portafoglio di origine.

Ed è qui che le cose si complicano davvero: Electrum consente di importare seed BIP39 ma NON li genera. Quando si crea un nuovo portafoglio, Electrum produce sempre un proprio formato di seed. L'opzione di importazione BIP39 esiste esclusivamente per garantire la compatibilità tra i diversi portafogli. Tuttavia, Electrum accetta tranquillamente un seed BIP39 non valido (cioè con una parola di checksum errata): visualizza un piccolo avviso "checksum failed", ma non impedisce di procedere. Ciò ha portato alcune persone a creare portafogli con seed scritti in modo errato che sembrano funzionare fino al momento del ripristino.

Soluzione pratica al problema del portafoglio vuoto: se stai ripristinando un seed e vedi un saldo pari a zero, prova sistematicamente diverse combinazioni. Innanzitutto, verifica se il seed è in formato Electrum o BIP39. Se è in formato Electrum, la derivazione è automatica. Se è in formato BIP39, devi provare ogni tipo di script: prima il segwit nativo (il più comune per i portafogli recenti), poi il segwit wrapped e infine il legacy. Electrum 4.x include un pulsante "Rileva account esistenti" durante il ripristino BIP39 che interroga il server per la cronologia delle transazioni attraverso i percorsi di derivazione comuni. Usalo.

Se il portafoglio conteneva più conti (come spesso accade con i portafogli hardware che utilizzano Trezor Suite), tieni presente che Electrum non supporta più conti per singolo file di portafoglio. È necessario creare un portafoglio separato per ciascun conto, incrementando l'indice del conto nel percorso di derivazione: m/84'/0'/0' per il conto 1, m/84'/0'/1' per il conto 2, e così via.

Il limite di gap e perché i tuoi fondi potrebbero non essere visibili

Anche se il seed e il percorso di derivazione sono corretti, i fondi potrebbero risultare mancanti a causa del limite di intervallo. Electrum genera gli indirizzi in modo sequenziale e interrompe la scansione quando incontra 20 indirizzi inutilizzati consecutivi (il limite di intervallo predefinito). Se qualcuno ha utilizzato gli indirizzi dall'indice 0 al 5, per poi passare all'indice 30 (magari utilizzando un'API o un altro portafoglio), Electrum non rileverà gli indirizzi oltre l'indice 25 perché raggiunge il limite di intervallo e interrompe la ricerca.

La soluzione è semplice: nella console di Electrum (Visualizza → Mostra console), esegui:

wallet.change_gap_limit(50)

O qualsiasi altro numero ti serva. Quindi avvia una risincronizzazione. Nei casi più estremi, ho impostato limiti di scostamento superiori a 200 per i portafogli utilizzati a livello di programmazione (piattaforme di e-commerce, pagine di donazioni).

Cronologia delle versioni e cosa smette di funzionare tra un aggiornamento e l'altro

Gli aggiornamenti di versione di Electrum hanno storicamente compromesso la retrocompatibilità. Quando si apre un file di portafoglio in una versione più recente, spesso il formato interno viene aggiornato e le versioni precedenti non sono in grado di leggere il file aggiornato. Questo aspetto è documentato in modo esplicito, ma viene ampiamente ignorato.

Le transizioni tra le versioni critiche:

1.x → 2.0 (2014): Modifica completa del formato del portafoglio. Il supporto per i portafogli HD BIP32 ha sostituito la vecchia derivazione proprietaria. Il processo di aggiornamento rigenera tutti gli indirizzi. Electrum 1.x non è in grado di leggere i file dei portafogli 2.x, punto e basta. Se qualcuno ha bisogno di aprire un portafoglio v1, deve installare specificatamente Electrum 1.9.8.

2.x → 3.0 (2017): È stato aggiunto un nuovo protocollo server e il supporto a SegWit. I file del portafoglio sono stati sottoposti a una revisione del formato. È stato introdotto il tipo di seed SegWit. Il sistema interno seed_version Il campo nel JSON del portafoglio tiene traccia di questo — se vedi seed_version: 13 o 14, è un portafoglio dell'era v3.

3.x → 4.0 (2020): supporto per Lightning Network, PSBT, significativa riorganizzazione interna. I canali Lightning vengono memorizzati nel file del portafoglio e, se erano aperti al momento dell'ultimo utilizzo del portafoglio, il recupero del solo seed non consentirà di ripristinare lo stato dei canali Lightning. Il file del portafoglio stesso è fondamentale per il ripristino di Lightning.

Serie 4.x (dal 2020 ad oggi): ulteriori perfezionamenti. La versione 4.1.0 ha eliminato la possibilità di creare portafogli legacy tramite l'interfaccia utente standard (impostando come predefinito il SegWit nativo). La versione 4.5 e successive hanno ulteriormente aggiornato la versione del database di archiviazione. Il codice di aggiornamento del database del portafoglio gestisce la migrazione da formati molto vecchi, ma non sempre in modo fluido: ci sono casi limite nel percorso di aggiornamento dai portafogli v1.9.8 che possono generare messaggi di errore che suggeriscono di contattare gli sviluppatori.

La lezione da imparare: prima di aggiornare Electrum, copia sempre il file del portafoglio in una posizione separata. Se l'aggiornamento causa qualche problema, potrai tornare alla versione precedente utilizzando il file originale. E non effettuare mai, in nessun caso, un downgrade dopo che l'aggiornamento ha modificato il file del portafoglio.

La violazione delle password e perché Electrum è particolarmente vulnerabile

La derivazione della chiave di Electrum – semplicemente SHA256(SHA256(password)) – è uno dei più deboli dell'intero ecosistema dei portafogli di criptovalute. Non c'è né salt, né PBKDF2, né scrypt, né argon2. Due passaggi di SHA-256, e questa è la chiave di crittografia per AES-256-CBC.

Per contestualizzare: MetaMask utilizza 600.000 iterazioni PBKDF2. Bitcoin Core ne utilizza circa 100.000+. Electrum ne utilizza… due operazioni SHA-256. Su una GPU moderna, hashcat è in grado di testare miliardi di hash SHA-256 al secondo. Anche tenendo conto della verifica della decrittografia AES, la violazione delle password di Electrum è di gran lunga più veloce rispetto a quasi tutti gli altri portafogli.

Hashcat supporta Electrum attraverso tre modalità basate sul tipo di salt del portafoglio:

  • Modello 16600 – Portafoglio Electrum (tipo Salt 1-3): copre la stragrande maggioranza dei portafogli. Il formato dell'hash è simile a $electrum$1*<hex_salt>*<hex_data>.
  • Modalità 21700 – Portafoglio Electrum (tipo Salt 4): formato di crittografia del portafoglio di nuova generazione con crittografia dell'intero file tramite ECIES.
  • Modalità 21800 – Portafoglio Electrum (tipo di salt 5): ultima variante di crittografia.

Per estrarre l'hash, usa electrum2john.py dal progetto John the Ripper.

btcrecover è l'altro strumento di riferimento, e probabilmente più pratico per la maggior parte dei casi di recupero poiché supporta la generazione di password basata su token. È sufficiente specificare gli elementi che si ricordano («So che iniziava con “Bitcoin” e finiva con alcuni numeri e forse un punto esclamativo») e il programma genera tutte le possibili combinazioni. Per quanto riguarda Electrum in particolare, btcrecover supporta sia il file del portafoglio crittografato sia il recupero diretto del seed nei casi in cui si disponga di una frase seed parziale con parole mancanti o incerte.

File del portafoglio danneggiati

Il danneggiamento dei file del portafoglio in Electrum può assumere diverse forme e la procedura di recupero dipende dal tipo di problema: se hai un caso specifico, puoi contattarci all'indirizzo david@walletrecoveryservice.com e cercheremo di trovare una soluzione per te.

I portafogli con il "bug della v1.9.8": esiste una categoria specifica di portafogli danneggiati della versione 1.9.8 di Electrum in cui l'inserimento di un seed errato durante il ripristino generava un file di portafoglio che appariva valido ma che in realtà non conteneva alcuna chiave. Il codice del database dei portafogli nelle versioni più recenti di Electrum prevede un controllo specifico per questo caso: individua i portafogli privi di chiavi master e con un seed in formato v6, avvisando l'utente. Questi portafogli non contengono fondi recuperabili.

Corruzione dello stato dei canali Lightning: se un portafoglio con canali Lightning aperti viene danneggiato, il ripristino tramite il solo seed NON consentirà di recuperare i fondi Lightning. I canali Lightning sono stateful: lo stato più recente del canale (transazioni di impegno, chiavi di revoca) si trova solo nel file del portafoglio. Electrum include un meccanismo di backup dei canali (SCB – Static Channel Backups), ma questi consentono solo la chiusura forzata dei canali, non il loro ripristino. Se si dispone di un portafoglio danneggiato con fondi Lightning, la priorità è recuperare il file del portafoglio stesso, non solo il seed.

Strategia di backup: Electrum dispone di una funzione di backup integrata accessibile dal menu File → Salva backup (o Salva copia nelle versioni precedenti). Questa opzione salva una copia completa del file del portafoglio. Il backup rimane crittografato con la tua password, quindi per ripristinare il portafoglio sono necessari sia il file di backup che la password. Per garantire la massima sicurezza, esporta la frase di seed su carta E conserva i backup del file del portafoglio (soprattutto se utilizzi Lightning o chiavi importate).

Il portafoglio Electrum per Android

Electrum per Android è basato sul framework Kivy (introdotto nella versione 2.6) e utilizza lo stesso formato di file del portafoglio della versione desktop di Electrum. I tipi di seed, la crittografia e i percorsi di derivazione sono identici. Un file di portafoglio creato su Android può essere aperto sulla versione desktop e viceversa.

La sfida specifica per Android riguarda l'accesso ai file. Sui dispositivi Android non rootati, i file del portafoglio Electrum vengono salvati nella memoria interna privata dell'app al percorso:

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

Non è possibile accedere a questo percorso tramite un normale file manager o tramite USB: il sandboxing di Android lo impedisce. Si tratta di una scelta progettuale (per impedire ad altre app di sottrarre i file del portafoglio), ma ciò crea un vero e proprio problema di ripristino se l'app si blocca o viene disinstallata accidentalmente.

Non esiste una versione di Electrum per iOS. Punto. Se qualcuno sostiene di utilizzare Electrum su un iPhone, sta usando un'app contraffatta: nel corso degli anni, infatti, sull'App Store sono stati segnalati numerosi cloni fasulli di Electrum che rubano denaro.

Il problema dei file del portafoglio sovrascritti e cancellati

I file del portafoglio Electrum sono normali file presenti nel file system. Questo li rende più facili da sottoporre a backup, ma anche più facili da cancellare accidentalmente.

Scenario 1: file del portafoglio cancellato

Se il file del portafoglio è stato cancellato (accidentalmente, tramite disinstallazione o a causa di malware), contatta WalletRecoveryService.com per un servizio professionale di recupero dati oppure inviaci un'e-mail all'indirizzo david@walletrecoveryservice.com. Il file del portafoglio è in genere di piccole dimensioni (poche centinaia di KB per un portafoglio standard, potenzialmente diversi MB per portafogli con una cronologia estesa dei canali Lightning), il che significa che spesso è recuperabile dal disco anche dopo la cancellazione – SE da allora il disco non è stato sottoposto a un'intensa attività di scrittura.

Nel caso degli SSD, si applica la finestra TRIM: smetti immediatamente di utilizzare l'unità. Nel caso degli HDD, hai più tempo a disposizione, ma ogni operazione di scrittura comporta il rischio di sovrascrivere i settori del file del portafoglio.

Scenario 2: Portafoglio sovrascritto durante il ripristino

Si tratta di una trappola specifica di Electrum. Quando si esegue il ripristino da un seed in Electrum e si sceglie lo stesso nome di file del portafoglio di un file esistente, Electrum sovrascrive il vecchio file. La documentazione lo menziona, ma è facile non accorgersene nel panico. Se si dispone di un file di portafoglio con chiavi private importate (non derivate dal seed) e lo si sovrascrive ripristinando un seed diverso con lo stesso nome di file, quelle chiavi importate andranno perse, a meno che non si disponga di un backup separato.

Quando esegui il ripristino, utilizza sempre un nome file diverso: restored_wallet, recovery_test, qualsiasi cosa che non sia il nome di un file di portafoglio esistente.

Scenario 3: File del portafoglio su un disco guasto

Il file del portafoglio di Electrum è un unico file autonomo. Se riesci a recuperare quel singolo file da un disco danneggiato – tramite un servizio professionale di recupero dati, la creazione di un’immagine del disco o il file carving – walletrecoveryservice.com può aiutarti e assisterti nel processo – hai tutto ciò che ti serve. Non è necessario recuperare l’intera installazione di Electrum, la configurazione o le intestazioni della blockchain. Bastano il file del portafoglio e la tua password (o frase seed).

Il vettore di attacco di phishing: un problema specifico di Electrum

Electrum presenta una nota vulnerabilità che non si riscontra nella maggior parte degli altri portafogli, e che è direttamente rilevante per il ripristino poiché causa proprio quelle situazioni che rendono necessario il ripristino.

Nel dicembre 2018 è emerso che i server Electrum potevano inviare messaggi di errore arbitrari al client, che Electrum visualizzava come testo in formato HTML. Gli hacker hanno creato server Electrum dannosi che, quando un utente trasmetteva una transazione, restituivano un falso messaggio di errore del tipo «aggiornamento richiesto» con un link a un sito di phishing che ospitava un file binario Electrum modificato. Agli utenti che scaricavano e installavano il falso aggiornamento venivano sottratti i seed o le password del portafoglio.

Questo attacco è stato particolarmente devastante perché il messaggio di phishing appariva all'interno dell'interfaccia stessa di Electrum, facendolo sembrare ufficiale. Migliaia di Bitcoin sono stati rubati prima che la vulnerabilità venisse corretta. La correzione è stata rilasciata nella versione 3.3.3 di Electrum, che ha disattivato il rendering dell'HTML nei messaggi del server.

Perché questo è importante per il recupero: molti utenti che hanno perso fondi a causa di questo attacco possiedono ancora i file originali del proprio portafoglio con i seed originali – la versione creata dall’autore dell’attacco ha rubato le chiavi e trasferito i fondi, ma il portafoglio legittimo esiste ancora. Se qualcuno viene da me dicendo: «Avevo dei Bitcoin su Electrum e sono semplicemente scomparsi nel 2018-2019», l’attacco di phishing è sempre una delle prime cose che verifico. Il recupero in quel caso non è tecnico: i fondi sono stati rubati, non persi. Ma è importante fare una diagnosi corretta in modo che l'utente non sprechi tempo e denaro nel cercare di decifrare la password di un portafoglio che è stato svuotato da un hacker.

Recupero del portafoglio con multisig e autenticazione a due fattori

Electrum supporta i portafogli con firma multipla e l'autenticazione a due fattori (2FA) tramite TrustedCoin, e entrambe queste funzionalità rendono più complessa la procedura di recupero.

Portafogli multi-firma in Electrum sono identificati dal campo "tipo di portafoglio": "wallet_type": "2of3" o simili. Il file wallet contiene più archivi di chiavi (x1/, x2/, ecc.), ciascuno dei quali rappresenta un cofirmatario. Per effettuare prelievi da un portafoglio multisig, è necessario disporre del numero minimo richiesto di chiavi. Se si possiede il file del portafoglio contenente tutti gli archivi delle chiavi dei cofirmatari, il ripristino procede normalmente. Se si dispone solo del seed di un cofirmatario e sono necessari gli altri cofirmatari, è necessaria la collaborazione degli altri titolari delle chiavi.

I portafogli 2FA utilizzano TrustedCoin come servizio di co-firma. Si tratta essenzialmente di portafogli multisig 2-di-3 in cui TrustedCoin detiene una chiave e l'utente ne detiene due. Il ripristino richiede: (a) due dei tre seed, oppure (b) un seed più il servizio TrustedCoin operativo e l'autenticazione dell'utente. Se TrustedCoin dovesse chiudere, gli utenti potrebbero comunque effettuare transazioni utilizzando i loro due seed locali, ma ne occorrerebbero entrambi. La chiave di recupero 2FA che Electrum visualizza durante la creazione del portafoglio (e che la maggior parte delle persone non annota mai) è il terzo seed ed è essenziale per il recupero senza TrustedCoin.

Tecniche di recupero che funzionano davvero nella pratica

Dopo anni passati a recuperare portafogli Electrum, ecco quali sono i casi che mi capita di affrontare più spesso e come li gestisco.

Scenario 1: Hai la frase di seed, devi solo ripristinare

Apri Electrum, File → Nuovo/Ripristina. Seleziona “Portafoglio standard” → “Ho già un seed”. Inserisci il seed. Se si tratta di un seed di Electrum, Electrum rileverà automaticamente il tipo di seed e la derivazione. Se si tratta di un seed BIP39 (proveniente da un portafoglio hardware o da un altro portafoglio software), clicca su Opzioni → seleziona “Seed BIP39” PRIMA di inserire le parole. Scegli il tipo di script corretto e verifica il percorso di derivazione. Imposta una nuova password.

Se il saldo è pari a zero: prova diversi tipi di script (segwit nativo, segwit avvolto, legacy). Se utilizzi BIP39, clicca su «Rileva account esistenti» per cercare nella cronologia. Aumenta il limite di intervallo se sono stati utilizzati indirizzi oltre il ventesimo.

Scenario 2: Si dispone del file del portafoglio e della password

Basta aprire Electrum e selezionare il file del portafoglio. Se il file si trova su una chiavetta USB o in una posizione diversa da quella predefinita, seleziona File → Apri e individua il file. Una volta aperto, puoi visualizzare il tuo seed in Portafoglio → Seed (è richiesta la password), esportare le chiavi private o semplicemente effettuare transazioni come di consueto.

Scenario 3: si dispone del file del portafoglio, si è dimenticata la password, si dispone della frase di seed

Ignora completamente la password. Crea un nuovo portafoglio utilizzando la frase di seed (come nello Scenario 1). La frase di seed genera le stesse chiavi indipendentemente dalla password impostata sul vecchio file del portafoglio. Imposta una nuova password sul nuovo portafoglio.

Scenario 4: si dispone del file del portafoglio, si è dimenticata la password, non si possiede la frase di seed

Qui si entra nel campo della forza bruta. Rivolgiti a un esperto professionista nel recupero dati come walletrecoveryservice.com oppure estrarre l'hash con electrum2john.py, e inserirlo in hashcat (modalità 16600, 21700 o 21800 a seconda del tipo di salt) o in btcrecover.

Scenario 5: Vecchio portafoglio Electrum v1.x

Non provare ad aprire un portafoglio v1 direttamente in Electrum 4.x: il processo di aggiornamento potrebbe fallire in alcuni casi particolari e, se ciò dovesse accadere, ti servirà il file originale intatto. Contattaci via e-mail all'indirizzo david@walletrecoveryservice.com: ci occupiamo di casi simili da molto tempo.

Scenario 6: Il seed di Electrum non funziona in un altro portafoglio

Se provi a importare un seed di Electrum in un portafoglio diverso da Electrum (Trezor, Ledger, Exodus, ecc.), l'operazione non funzionerà perché quei portafogli richiedono il formato BIP39. Puoi ripristinare il portafoglio in Electrum e trasferire i fondi al portafoglio di destinazione.

Scenario 7: il seed BIP39 del portafoglio hardware mostra indirizzi errati in Electrum

Probabilmente hai selezionato il tipo di script o il percorso di derivazione sbagliato. Per i portafogli Trezor: il segwit nativo è m/84'/0'/0', l'eredità è m/44'/0'/0', SegWit avvolto è m/49'/0'/0'. Se si dispone di più conti, aumentare l'indice di sicurezza dell'ultimo conto. Prima di inserire le parole, è necessario impostare Electrum in modalità BIP39 (Opzioni → Seed BIP39).

Caso 8: Portafoglio Android, l'app non si apre

Se il telefono è stato sbloccato, vai su /data/data/org.electrum.electrum/files/data/wallets/ e copia il file del portafoglio. Se nessuna delle due soluzioni funziona e disponi della frase di seed, esegui il ripristino sul computer. Se non disponi della frase di seed e il telefono non è rootato, l'ultima opzione è rivolgersi a un servizio professionale di estrazione dati per Android in grado di creare un'immagine della memoria del dispositivo.

Strumenti indispensabili per ogni specialista nel recupero dati con Electrum

  • electrum2john.py – Estrazione dell'hash dall'edizione Jumbo di John the Ripper. Funziona con tutti i formati di portafoglio Electrum.
  • hashcat – Modalità 16600, 21700, 21800. Cracking veloce delle password basato su GPU.
  • btcrecover – Recupero della password e del seed basato su token (per frasi seed parziali o incerte).
  • Strumento BIP39 di Ian Coleman – Da eseguire solo offline. Dispone della modalità "seed" di Electrum per ricavare chiavi e indirizzi da seed in formato Electrum.

Cosa distingue i portafogli recuperabili da quelli smarriti

L'ecosistema Electrum è più tollerante rispetto alla maggior parte degli altri, poiché il file del portafoglio è un file JSON autonomo, portatile e ben documentato, che può essere aperto con qualsiasi editor di testo (se non è crittografato nella sua interezza) ed elaborato con strumenti open source ampiamente supportati. La crittografia, pur garantendo una protezione adeguata per la maggior parte degli utenti, è notevolmente più debole rispetto agli standard del settore: ciò rappresenta un svantaggio in termini di sicurezza, ma è eccellente per il recupero dei dati.

I portafogli che non riesco a recuperare presentano una delle due seguenti caratteristiche: l'utente ha perso sia la frase seed SIA il file del portafoglio (non c'è nulla su cui lavorare), oppure l'utente ha perso la frase seed, possiede il file del portafoglio e ha impostato una password davvero complessa (più di 15 caratteri casuali), per la quale un attacco di forza bruta è computazionalmente irrealizzabile anche con la derivazione debole delle chiavi di Electrum.

Tutto il resto – percorsi di derivazione errati, incompatibilità di formato, file danneggiati, versioni obsolete, estrazione da Android – può essere risolto con gli strumenti personalizzati adeguati e le competenze necessarie.

La cosa più importante che puoi fare in questo momento è: andare su Portafoglio → Seed nella tua installazione di Electrum, scrivere quelle 12 parole su un foglio di carta e riporre il foglio in un luogo sicuro. Il file del tuo portafoglio potrebbe danneggiarsi, essere cancellato, crittografato o andare perso. Ma dodici parole su carta, conservate in modo sicuro, ti permetteranno sempre di recuperare i tuoi Bitcoin.

 

Hai delle domande? Scrivici all'indirizzo david@walletrecoveryservice.com