HomeWikiWalletBIP32, 39 e 44: differenze fra i seed più utilizzati dai wallet

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

Ogni wallet di qualsiasi criptovaluta possiede un proprio seed. Esso consiste in una frase costituita da un certo numero di parole. Il seed è estremamente importante, motivo per cui va conservato con molta cura, magari su più copie cartacee offline, in quanto essenziale per recuperare i fondi conservati nel wallet.

Read this article in the English version here.

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

Proprio per questo motivo negli scorsi anni sono stati definiti alcuni standard precisi di seed per conservare in sicurezza le proprie chiavi private.

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 consentirà di recuperare i fondi del wallet associato, indipendentemente da quante transazioni sono state eseguite e da quanti indirizzi sono stati generati.

Una volta trascritto su un foglio di carta o imparato a memoria, il seed (salvo smarrimenti o furti) consentirà sempre di recuperare i bitcoin presenti sul relativo address associato. Sia che il computer su cui è installato il wallet venga disinstallato o distrutto, il SEED consentirà sempre e comunque di recuperare i fondi.

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, consente agli utenti, partendo dal 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 specifico di un determinato wallet.

BIP32, BIP39 & BIP44

La procedura di recuperò tuttavia, non è troppo scontata, in quanto è necessario  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. 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.

SEED Wallet bitcoin funzionamento vari BIP

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, è possibile ottenere tutte le informazioni necessarie per recuperare i fondi associati al wallet semplicemente digitando il 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, verrà mostrata la chiave estesa BIP32 e la relativa Master Key, che potrà essere utilizzata per recuperare un wallet utilizzando Electrum, ad esempio.

Come è possibile tutto ciò?

Per capire come funziona una passphrase è necessaria qualche conoscenza base inerente allo storage dei bitcoin. Quando un utente riceve dei bitcoin, essi sono associtati ad un certo indirizzo. Tale indirizzo, è una derivazione della chiave pubblica, che a sua volta è una derivazione della chiave privata.

Dunque, il wallet per prima cosa genera una chiave privata, da cui successivamente ricaverà una chiave pubblica che verrà infine trasformata in indirizzo.

Un semplice sistema di backup dei bitcoin presenti in un wallet potrebbe consistere nella trascrizione della 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 si vuole ricevere bitcoin. Di conseguenza, per fare il backup di tutti i bitcoin ricevuti, occorrerebbe 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).

SEED Wallet bitcoin funzionamento vari BIP

Nel caso del BIP44, dunque, si avrà 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 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 consente anche di risalire a tutte le 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, i PC protetti da malware, il browser dotato di filtri anti-pishing e quant’altro, c’è sempre una minima possibilità che qualcuno possa rubare il seed durante la fase di generazione.

Esistono infatti strumenti che registrano le attività eseguite dai PC. Inoltre, i computer non sempre hanno un adeguato livello di entropia nel creare una sequenza casuale di numeri, specie se disconnessi dalla rete.

Per questo motivo, è possibile eseguire tutte queste operazioni offline ed utilizzare ulteriori parametri variabili scelti variabili manualmente dall’utente. Una volta creato il seed, una delle migliori soluzioni di storage consiste nell’archiviazione offline, magari su più fogli di carta o seed keeper metallici

Emanuele Pagliari
Emanuele Pagliarihttps://www.emanuelepagliari.it/
Ingegnere delle telecomunicazioni appassionato di tecnologia. La sua avventura nel mondo del blogging è iniziata su GizChina.it nel 2014 per poi proseguire su LFFL.org e GizBlog.it. Emanuele è nel mondo delle criptovalute come miner dal 2013 ed ad oggi segue gli aspetti tecnici legati alla blockchain, crittografia e dApp, anche per applicazioni nell'ambito dell'Internet of Things
RELATED ARTICLES

MOST POPULARS

GoldBrick