La maggior parte dei possessori di Ledger Nano a un certo punto iniziano a chiedersi se esiste la possibilità di personalizzare il proprio seed. Alcuni potrebbero spingersi oltre e provare a utilizzare parole scelte casualmente durante il processo di recupero. In questi casi, dopo aver confermato l'ultima parola, quasi sicuramente vedranno il messaggio:

"Recovery phrase is invalid, retry"

Ciò significa che creare un nuovo portafoglio con il tuo set di parole personalizzato è impossibile?
Buone notizie: è del tutto possibile, sebbene con alcune limitazioni. Ma partiamo dall'inizio.

Il primo vincolo è che tutte le parole devono far parte dell'elenco standard BIP39 (Proposta di miglioramento di Bitcoin - numero 39). Puoi scoprire esattamente cosa sono le proposte di miglioramento di Bitcoin in questo articolo di Wikipedia. BIP39 non è altro che un insieme di 2048 parole, scelte in modo tale che le prime 4 lettere di ogni parola siano uniche. Questa regola si applica anche alle parole di tre lettere. Questa proprietà li rende più facili da ricordare quando si crea una sequenza di più parole, che è esattamente ciò che è il tuo seed.

La seconda restrizione è il requisito dell'ultima parola della sequenza. Si tratta di un checksum specifico determinato da tutti gli altri elementi della sequenza e non puoi sceglierlo da solo. Questo è esattamente il motivo per cui vediamo un messaggio di errore ogni volta che proviamo a inserire parole scelte casualmente come seed nel nostro Ledger Nano. Di solito, la condizione del checksum è soddisfatta da più di una sola parola; tuttavia, la possibilità di trovarne uno valido semplicemente indovinando è incredibilmente piccola. Il numero di parole che soddisfano la condizione di checksum è strettamente correlato al numero totale di parole seed. Nel caso di un seed di 24 parole (l'opzione più sicura), ci sono sempre esattamente 8 parole possibili che possono fungere da checksum. Pertanto, la possibilità di estrarne casualmente uno valido dal set BIP39 di 2048 parole è esattamente 8 nel 2048, ovvero solo lo 0,39%. Non c'è da meravigliarsi che tu abbia visto un messaggio di errore.

Allora come possiamo trovare il checksum corretto per una sequenza di nostra scelta? Ad esempio, prendiamo un insieme casuale di 23 parole conformi allo standard BIP39:

Ogni parola ha un indice, che è un numero basato sul suo ordine alfabetico. È importante iniziare la numerazione da 0. Ciascun indice deve poi essere espresso come valore binario. Poiché l'elenco BIP39 contiene 2048 elementi, ogni indice di parola deve essere composto da 11 bit. Troviamo così:

amount
00001000000
bone
00011001010
ceiling
00100100111
cake
00100000010
cause
00100100100
cost
00110000101
credit
00110011000
cupboard
00110101110
dinosaur
00111110011
dragon
01000010000
drum
01000011100
error
01001100110
fault
01010011111
fatal
01010011100
fog
01011010010
foam
01011010000
hold
01101100100
green
01100110010
hold
01101100100
kick
01111010001


Nel passaggio successivo concateniamo tutti gli indici, preservandone l'ordine di apparizione. Questo ci dà una sequenza binaria a 253 bit:

0000100000011111111101000110001100001100101000100100111001000000100010010010000110000101001100110000011010111000111110011010000100000100001110001001100110010100111110101001110001011010010010110100000110110010001100110010011011001000111100000101111010001

Completiamo il risultato ottenuto con ulteriori 3 bit di nostra scelta. Ricordi che abbiamo detto che la frase di recupero di 24 parole ha esattamente 8 possibili risultati di checksum? Il numero 8 è solo una semplice conseguenza di quei 3 bit. Otterremo tutti gli 8 risultati semplicemente inserendo qui 000, 001, 010, 011, 100, 101, 110 e 111.
Per questo esempio scegliamo: 000.
Lo concateniamo alla fine, il che si traduce in una parola binaria a 256 bit:

0000100000011111111101000110001100001100101000100100111001000000100010010010000110000101001100110000011010111000111110011010000100000100001110001001100110010100111110101001110001011010010010110100000110110010001100110010011011001000111100000101111010001000

Il passaggio successivo è calcolare l'hash SHA256 di tali dati binari preparati. L'algoritmo SHA256 (algoritmo di hashing sicuro, output a 256 bit) è una parte essenziale della tecnologia blockchain. Ulteriori informazioni su SHA256 sono disponibili nell'articolo Wikipedia sull'algoritmo SHA-256.
Come risultato di questo calcolo otteniamo la seguente parola esadecimale:

La mossa successiva è estrarre i primi 8 bit dal risultato sopra. Pertanto prendiamo i primi 2 caratteri esadecimali: 27.
Corrispondono a:

Ancora una volta utilizziamo gli stessi 3 bit che abbiamo scelto prima. Questa volta li concateliamo all'inizio della stringa binaria estratta. Di conseguenza, otteniamo:

che è il valore binario 39. Questo è un indice BIP39 della parola di checksum che stiamo cercando di trovare. Non dimenticare che la numerazione dell'indice inizia da "0". Pertanto, se utilizzi un elenco di parole BIP39 con numerazione standard che inizia da "1", quindi il numero di indice effettivo sarà 40. Troviamo l'indice corretto sul file Elenco BIP39 e otteniamo la parola: agent Infine, il seed di 24 parole contenente 23 parole di nostra scelta è:

Per le restanti combinazioni a 3 bit, l'ultima parola del checksum è:

001
coil
010
faculty
011
hospital
100
middle
101
recall
110
ten
111
tragic

Calcolatore della frase di recupero:

Utilizzare SOLO per scopi didattici e di test
Compila il campo di testo con 23 parole conformi al BIP39 standard:

ulteriori informazioni sui frasi di recupero personalizzati...

offline security vault

Come realizzarlo in modo sicuro?

Nella ricerca della soluzione dobbiamo rispettare due condizioni contraddittorie: la sequenza deve essere mnemonica, ma allo stesso tempo completamente casuale. Impossibile? Non necessariamente. Leggere...