Seed Phrase, come si ottiene?

Vi siete mai domandati come si ottiene il seed phrase?

Il Seed phrase è una serie di parole, che permettono di generare o rigenerare l’albero delle chiavi, di derivare quindi il wallet deterministico.

Quindi se qualcuno trova il seed phrase, va da se che ha a disposizione tutte le nostre chiave e di conseguenza i nostri bitcoin.

Quindi conservatelo in un posto sicuro !

Il BIP39 definisce la creazione del mnemonic code e del seed.

mnemonic code, mnemonic phrase, mnemonic recovery phrase, mnemonic seed, seed phrase. Sono tutti sinonimi 🙂

La sequenza di queste parole sono sufficienti per ricreare il seed, e da qui ricreare il wallet HD e le chiavi derivate.

Seed Phrase -> Seed-> Chiavi Master -> Chiavi

Se si usa lo standard mnemonic, abbiamo a disposizione un dizionario di 2048 parole, con 2048¹² combinazioni.

Tali parole sono selezionate con cura per non essere simili tra loro e non sbagliare a scriverle.

Gli steps da seguire

Partiamo da 128 bits, 32 caratteri esadecimali, che rappresentano l’entropia.

Applichiamo lo SHA256 e appendiamo i primi 4 bits (cioè 1 carattere esadecimale) in fondo all’entropia.

Questo rappresenta il checksum.

Convertiamo il risultato ottenuto in base2.

Il risultato binario viene diviso in 12 segmenti da 11 bits ciascuno, ogni segmento rappresenta una parola.

È necessario convertire il valore delle singole caselle in base10, in modo tale da ottenere un numero che si può mappare nel dizionario.

Prendiamo i valori corrispondenti dei bits accesi, cioè dove è presente il numero 1, e gli sommiamo.

Il risultato che otteniamo è un numero, che mappato al dizionario inglese dato dalle 2048 parole, da come risultato accident.

Slide del corso “Bitcoin dalla teoria alla pratica — corso completo

Partiamo dall’entropia

0168071cf29dbdf232de82fa34acb933

applichiamo quindi lo SHA256 e prendiamo il primo carattere del digest.

printf 0168071cf29dbdf232de82fa34acb933 | xxd -r -p | sha256sum -b | head -c 1
> 3

Il 3 è il checksum che dobbiamo appendere all’entropia, e poi convertire in base2.

echo "ibase=16; obase=2; $(echo 0168071cf29dbdf232de82fa34acb9333  | tr '[:lower:]' '[:upper:]') " | bc| tr -d '\n'
> 10110100000000111000111001111001010011101101111011111001000110010110111101000001011111010001101001010110010111001001100110011

Ottenendo così codice binario da “incasellare”.

printf 10110100000000111000111001111001010011101101111011111001000110010110111101000001011111010001101001010110010111001001100110011 | sed 's/.\{11\}/& /g'| tr " " "\n"

> 10110100000
00011100011
10011110010
10011101101
11101111100
10001100101
10111101000
00101111101
00011010010
10110010111
00100110011
0011

Come vediamo non abbiamo delle caselle da 11 bits ciascuna, per renderle omogenee dobbiamo aggiungere 7 bits di zeri all’inizio

printf 000000010110100000000111000111001111001010011101101111011111001000110010110111101000001011111010001101001010110010111001001100110011 | sed 's/.\{11\}/& /g'| tr " " "\n"
> 00000001011
01000000001
11000111001
11100101001
11011011110
11111001000
11001011011
11010000010
11111010001
10100101011
00101110010
01100110011

Convertendo il primo risultato in base10

echo "ibase=2; 00000001011" | bc

Otteniamo il risultato

11

Possiamo verificare che parola è mappata all’indice 11 https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt.
La parola che troviamo all’indice 11 è accident.

Attenzione, la lista parte da 1, quindi l’elemento è n+1.

Abbiamo la possibilità di verificare il nostro risultato utilizzando il sito https://iancoleman.io/bip39/ ed inserire l’entropia che abbiamo utilizzato

Slide del corso “Bitcoin dalla teoria alla pratica — corso completo
Slide del corso “Bitcoin dalla teoria alla pratica — corso completo”
Slide del corso “Bitcoin dalla teoria alla pratica — corso completo”

QR_CODE corsobitcoin

Se vuoi approfondire l’argomento, guarda questo corso completamente in italiano 🚀

Se invece vuoi offrirmi una birra 3CEraggS51ePmB9KSVcXWSPWtdrXPNY91B 🍺

Oppure puoi darmi una mancia con BAT 🙂
Non hai il browser Brave? Clicca qui, è meglio di chrome fidati 🙂