Wallet Wiki

BIP32, 39 e 44: differenze fra i SEED più utilizzati dai principali wallet

Nelle nostre guide ed approfondimenti inerenti ai wallet vi abbiamo più volte parlato del SEED. Esso consiste in una frase costituita da un certo numero di parole. Più volte vi abbiamo poi sottolineato l’importanza del SEED, suggerendovi di conservarne una o più copie cartacee offline, in quanto essenziale per recuperare i fondi conservati nel wallet.

Tuttavia, esistono differenti tipi di SEED appartenenti a standard veri e propri, così da permettere all’utente di recuperare il propri fondi anche su wallet differenti. Se per esempio un giorno Electrum o Eidoo dovessero scomparire, come potreste fare a recuperare i vostri fondi senza uno standard ben definito?

In questo articolo approfondiremo proprio questi aspetti. Cercheremo di comprendere le differenze fra i tre standard più utilizzati nel mondo delle criptovalute e come funziona un SEED.

SEED: una frase per ripristinare tutto, sempre ed ovunque

La maggior parte dei wallet utilizzati offrono la possibilità di effettuare un backup dei fondi tramite il SEED. Esso è composto da una stringa casuale di parole, di solito 12, ma possono essere anche 18 o 24 parole. Più o meno assomiglia ad una frase del genere:

inspire october ten crop warfare wink game regular alley mimic anchor extra

Una frase di parole così composte non ha un senso logico, ma sarà l’unico mezzo che vi consentirà di recuperare i fondi del vostro wallet, indipendentemente da quante transazioni avete eseguito e da quanti indirizzi avete generato.

Una volta trascritto su un foglio di carta o imparato a memoria, se non lo smarrirete e nessuno ve lo ruberà, vi consentirà sempre di recuperare i vostri Bitcoin. Potrete infatti formattare il disco rigido del vostro PC, distruggere il computer, gettare il vostro smartphone in mare o incendiare la vostra casa. Il SEED vi consentirà comunque di recuperare i vostri Bitcoin.

Tuttavia, se la colpa non dovesse essere vostra ma degli sviluppatori di un wallet che hanno deciso di chiudere definitivamente lo sviluppo, come può il SEED funzionare per recuperare i fondi “perduti”?

Il merito è della crittografia, in particolare del concetto di portafoglio deterministico gerarchico, che, complice l’utilizzo di alcune funzioni matematiche, vi consentirà, partendo dal vostro SEED, di recuperare tutto. Esso infatti, traduce il SEED in una Master Key, dalla quale poi verranno derivate tutte le altre chiavi in ordine deterministico. Così come nel mondo reale non si è vincolati all’utilizzo di una certa calcolatrice per eseguire un’operazione matematica, nemmeno il SEED risulta dunque essere vincolato al software del Wallet. Un meccanismo quasi “magico” dunque.

BIP32, BIP39 & BIP44

Ovviamente la procedura non è troppo scontata, in quanto occorrerà fare alcune distinzioni in base allo standard di SEED adottato. Ne esistono diversi, fra cui il BIP32, il BIP39, il BIP44 ed anche il BIP43, ma potrei continuare con altre varianti. Tipicamente, la maggior parte dei wallet per criptovalute utilizza i primi tre.

BIP32 è stato il primo standard di SEED per wallet deterministici gerarchici (hierarchical deterministic wallets). Sono portafogli che possono essere condivisi parzialmente o interamente con sistemi diversi, ciascuno con o senza la possibilità di spendere monete.

BIP32 SEED

BIP39 e 44 invece, sono una più recente forma di standardizzazione di una specifica lista di parole (passphrase) per un dato linguaggio. Tale standard comprende anche il processo di trasformazione di quelle parole in un SEED hexa decimale a 512 bit che è il vero e proprio SEED necessario alla generazione del wallet HD BIP32. Nel dettaglio, il BIP44 ha introdotto la possibilità di utilizzare più Account.

Quindi qualsiasi portafoglio che riporti la dicitura “BIP 32/39/44 compatibile” genererà una passphrase da 12 a 24 parole che utilizzerà per generare in modo deterministico un SEED da 512 bit. Quest’ultimo verrà dunque utilizzato per creare in modo deterministico una Master Key di tipo BIP32. Da essa infine, verranno poi create le chiavi figlie in base al metodo riportato nelle specifiche del BIP39 o 44.

Ian Coleman Code Converter

L’utilizzo di differenti implementazioni dei SEED nei principali wallet può avere però alcune ripercussioni negative. Per esempio, i wallet hardware Ledger Nano S supportano SEED BIP39 e 44, idem Trezor. Electrum invece, usa il BIP32. MultiBit supporta sia il BIP32 che BIP44, mentre Eidoo supporta il BIP39.

Ne consegue dunque che alcuni portafogli come Ledger utilizzino una passphrase di 24 parole. Altri invece, come Exodus, sono in grado di leggere una passphrase di 12 parole. Ovviamente in questi casi non è possibili inserire solo le prime 12 parole, in quanto il sistema non funzionerebbe.

Per questo motivo dunque, potrebbe essere necessario “convertire” il proprio SEED BIP39 o BIP44 nella Master Key BIP32, sfruttando alcuni generatori, come quello ci Ian Coleman. Quest’ultimo, tra l’altro, può essere eseguito offline per massimizzare la sicurezza.

Utilizzando tale strumento infatti, potrete ottenere tutte le informazioni necessarie per recuperare i vostri fondi semplicemente digitando il vostro SEED. In primo luogo, l’applicazione ricaverà gli indirizzi e le chiavi private, i quali potranno essere utilizzati per recuperare i fondi con Electrum o qualsiasi altro portafoglio che consenta l’importazione di chiavi private. In secondo luogo, vi verrà mostrata la vostra  “chiave estesa BIP32” e la vostra Master Key, che potrete dunque utilizzare per recuperare un wallet utilizzando Electrum ad esempio.

 

Ma come è possibile tutto ciò?

Vediamo un po’ come funzionano quesi meccanismi. Per capire come funziona una passphrase è necessaria qualche conoscenza base inerente allo storage dei Bitcoin. Tutti sappiamo, bene o male, che quando riceviamo dei Bitcoin essi hanno un certo indirizzo. Tale indirizzo, è una derivazione delle nostre chiavi pubbliche, che a sua volta è una derivazione della nostra chiave privata. Dunque, il nostro wallet per prima cosa genera una chiave privata, da cui successivamente ricaverà una chiave pubblica che verrà infine trasformata un indirizzo.

Un semplice sistema di backup dei vostri Bitcoin potrebbe dunque essere quello di trascrivere la chiave privata in un file crittografato. La chiave privata è una stringa casuale di caratteri, simile a questa:

L3GrBerZZXtTDcAVNiULbN84UVGjX7ezypSCsYYroBdQDDDKKX1E53

Tuttavia, è fortemente consigliato di non riutilizzare il proprio indirizzo per motivi di privacy. Proprio per questo motivo dunque, gli ultimi wallet creano un nuovo indirizzo ogni volta che vogliamo ricevere Bitcoin. Di conseguenza, per fare il backup di tutti i Bitcoin ricevuti, dovremmo trascrivere tutte le chiavi private generate di volta in volta. Di fatto, questa soluzione risulta essere decisamente scomoda.

Fortunatamente, nel 2012 lo sviluppatore Peter Wuille ha creato la specifica BIP32 alla base dei portafogli deterministici gerarchici. Assieme ad esso, Peter ha ideato una funzione matematica per creare una Master Key da cui derivare in maniera deterministica tutte le altre chiavi.

Per esempio, data una Master Key A, essa genererà sempre le chiavi a, b, c, d e così via, sempre in questo ordine. Successivamente, alcuni sviluppatori hanno creato ulteriori strumenti per ricavare la Master Key da un SEED di 12, 18 o 24 parole (BIP39) e per aggiungere il supporto a diversi account (BIP44).

BIP SEED

Esempio di chiavi figlie nel BIP44

Nel caso del BIP44 dunque, avremo per esempio che, data la Master Key A, essa genererà gli account a, b, c, ciascuno dei quali avrà le proprie chiavi 1,2,3. Una feature molto interessante dunque, che consente ai wallet di garantire la privacy degli utenti contro il Data Mining della Blockchain. Negli anni infatti, sono stati sviluppati meccanismi di analisi per risalire all’identità degli utenti tracciando le transazioni e gli indirizzi visibili sulla blockchain. Con il BIP44 dunque, essi diventano inefficaci.

Il SEED dunque, è più di una semplice chiave di recupero, in quanto vi consentirà anche di risalire a tutte le vostre transazioni ed indirizzi. Ovviamente tale sistema funziona anche su altre monete, non solo Bitcoin. Si possono quindi ricavare chiavi per Litecoin, Monero, Ethereum etc dallo stesso SEED. Per questo motivo i portafogli multi valuta come Exodus, Jaxx ed altri, possono archiviare più criptovalute utilizzando il medesimo SEED.

Offline è tutto più sicuro

 

Tuttavia c’è un ultimo problema. Per quanto i wallet siano Open Source, il vostro PC protetto da malware, il browser dotato di filtri anti-pishing e quant’altro, c’è sempre una minima possibilità che qualcuno possa “rubarvi” il SEED durante la fase di generazione. Esistono infatti strumenti che registrano le attività eseguite dai PC. Inoltre, va anche detto che i computer non sempre hanno un adeguato livello di entropia nel creare una sequenza casuale di numeri, specie se disconnessi dalla rete, di solito utilizzata per fornire variabili aggiuntive. Ovviamente stiamo cercando il pelo nell’uovo, ma c’è chi è davvero paranoico.

Per questo motivo, è possibile eseguire tutte queste operazioni offline ed utilizzare ulteriori parametri variabili scelti da noi, decisi ad esempio, lanciando un dado a sei facce o altri strumenti affini. Una volta creato il SEED, trascrivetelo esclusivamente su un foglio di carta, anzi più di uno. Potrete anche salvarlo in un file locale crittografato, ma personalmente preferisco passare queste informazioni al “mondo offline”. Poi starà a voi nasconderlo in un posto sicuro. Considerate luoghi diversi, anche lontani, oppure potrete impararlo a memoria, se vi fidate della vostra mente.

Per questo approfondimento è tutto, alla prossima.

sharing-caring

Vi invitiamo a seguirci sul nostro canale Telegram ed anche sul gruppo ufficiale Telegram, dove sarà possibile discutere insieme delle notizie e dell’andamento del mercato, sulla nostra pagina Facebook e sul nostro account Twitter.

[ VIA | VIA | VIA | VIA ]

Emanuele Pagliari

Ingegnere delle telecomunicazioni appassionato di tecnologia. La mia avventura nel mondo del blogging è iniziata su GizChina.it nel 2014 per poi proseguire su LFFL.org, GizBlog.it, ed ora su CryptoMinando.it. Sono nel mondo delle criptovalute come minatore dal 2013 ed ad oggi seguo gli aspetti tecnici legati alla blockchain, crittografia e dApps, anche per applicazioni nell'ambito dell'Internet of Things, la mia branca di studio.
Follow Me:

Related Posts

Rispondi

CryptoMinando