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”
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


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”