Categorie: Academy

Generare una frase mnemonica con i dadi

Entra nel mondo NovaSera!

Clicca qui per entrare in una delle community di NovaSera dove puoi chiacchierare insieme ad altri appassionati come te di tecnologia blockchain, criptovalute ed NFT.

Che tu abbia deciso di iniziare a utilizzare un wallet Bitcoin, un wallet Ethereum (es: MetaMask), un wallet Solana (es: Phantom) o un wallet di un’altra blockchain dovrai per forza creare una frase mnemonica per poter gestire i tuoi fondi.

Quello che forse ti sorprenderà, ma che in realtà non ti dovrebbe sorprendere (perché tutte le blockchain derivano da Bitcoin), è che il wallet che avrai deciso di adottare utilizzerà il processo standardizzato definito in BIP-39 per generare la frase mnemonica[1].

Risulta quindi importante capire come avviene il processo che porta alla scelta e all’ordine delle parole che compongono la tua frase mnemonica perché se un altro individuo fosse in grado di rigenerare l’elenco delle parole nello stesso ordine della tua recovery phrase (sinonimo di frase mnemonica), ti ritroverai senza fondi in men che non si dica!

Le 2048 parole della frase mnemonica

Come abbiamo già visto (leggi l’articolo “Cos’è la frase mnemonica“) , le frasi mnemoniche sono composte generalmente da una lista di 12 o 24 parole.

Queste parole non sono inventate al momento dal wallet o dalla persona che genera la seed phrase (sinonimo di frase mnemonica), ma sono scelte da una lista di 2048 parole[2] definite in BIP-39[3].

L’ordine delle parole mnemoniche

Perciò le parole che compongono la frase mnemonica vengono scelte dalla lista definita dal BIP-39, ma come viene definito l’ordinamento?

L’ordinamento viene definito dalla casualità, o almeno così dovrebbe essere. Per esempio quando scarichi un wallet e gli fai generare la frase mnemonica, è il software a definire l’ordine casuale delle parole.

Il problema è che quell’ordine casuale potrebbe non essere propriamente casuale.

Per questo motivo in sistemi deterministici (come il software del wallet) è fondamentale l’utilizzo di generatori di numeri pseudocasuali che soddisfano requisiti crittografici, ovvero i numeri prodotti devono essere imprevedibili e indistinguibili da una sequenza casuale vera. Un generatore di numeri pseudo-casuali criptograficamente sicuro (CSPRNG) deve passare specifici test statistici per garantirne l’affidabilità[4].

Tuttavia noi comuni mortali difficilmente siamo in grado di eseguire questi test statistici e dobbiamo aver fiducia negli sviluppatori del software, oppure in alternativa, utilizzare una vera fonte di casualità.

Il lancio dei dadi genera un sequenza veramente casuale?

Lanciare dei dadi potrebbe essere la soluzione per generare una sequenza casuale vera?

Uno studio ha analizzato la dinamica del lancio dei dadi, dimostrando che il risultato di un lancio di dado potrebbe essere prevedibile[5] poiché le condizioni iniziali, come la posizione del dado e le caratteristiche della superficie, influenzano significativamente il risultato.

Tuttavia la conclusione dello studio ci dice che sebbene teoricamente possibile prevedere il risultato di un lancio di dado controllando rigidamente le condizioni iniziali, nella pratica quotidiana, a causa delle numerose variabili, questo risultato rimane sostanzialmente casuale e imprevedibile[6].

Quindi per rispondere alla domanda precedente: sì, possiamo utilizzare i dadi per generare una sequenza casuale vera.

Ma come fare?

Come generare la frase mnemonica lanciando i dadi

Vediamo quindi passo per passo come si può generare una frase mnemonica lanciando i dadi. Per farlo utilizzeremo la tabella creata da Valerio Vaccaro nel repository “True Random Mnemonic Generator” su Github[7].

Materiale obbligatorio

Per poter generare la frase mnemonica utilizzando i dadi abbiamo bisogno di:

  • 1 dado a 8 facce
  • 2 dadi a 16 facce
  • wallet Electrum[8]

Dopo aver reperito tutto il materiale devi decidere se generare una frase mnemonica da 12 o da 24 parole.

Procedimento generazione frase mnemonica da 12 parole

Per generare la frase mnemonica da 12 parole bisogna lanciare per 11 volte il dado a 8 facce per primo e successivamente i dadi a 16 facce.

Un esempio di sequenza potrebbe essere questa:

  • Lancio 1: 6, 5, 7
  • Lancio 2: 5, 5, 13
  • Lancio 3: 6, 13, 8
  • Lancio 4: 4, 9, 16
  • Lancio 5: 6, 3, 7
  • Lancio 6: 4, 16, 8
  • Lancio 7: 4, 10, 2
  • Lancio 8: 2, 10, 7
  • Lancio 9: 1, 4, 9
  • Lancio 10: 1, 12, 7
  • Lancio 11: 4, 10, 16

Utilizzando la tabella pubblicata nel repository menzionato in precedenza, sarà possibile convertire questi numeri in parole semplicemente associando i numeri alle prime tre colonne della tabella.

  • La prima colonna indica il lancio del dado a 8 facce, nel nostro esempio il risultato del primo lancio del dado a 8 facce è 6.
  • La seconda colonna indica il lancio del primo dado a 16 facce, nel nostro esempio il risultato del primo lancio del primo dado a 16 facce è 5.
  • La terza colonna indica il lancio del secondo dado a 16 facce, nel nostro esempio il risultato del primo lancio del secondo dado a 16 facce è 7.

Perciò la prima parola della mia frase mnemonica è quella inserita nella riga dove i numeri sono 6, 5, 7. Vedi qui sotto lo screenshot.

La prima parola è “potato”

Proseguo così per tutti e 11 i lanci. Nel nostro esempio le parole della frase mnemonica sono:

  1. potato
  2. maze
  3. rib
  4. impose
  5. pill
  6. leave
  7. impulse
  8. crazy
  9. alpha
  10. bitter
  11. initial

Queste sono le prime 11 parole della frase mnemonica. La dodicesima parola è la checksum della frase mnemonica.

Ricavare la checksum della frase mnemonica a 12 parole

La checksum in una frase mnemonica, come descritto nello standard BIP39 (Bitcoin Improvement Proposal 39), serve per verificare l’integrità della frase stessa. Quando una frase mnemonica viene generata, un algoritmo utilizza le parole iniziali per produrre una parola finale, che agisce come checksum[9].

Sostanzialmente questa dodicesima parola, detta checksum, aiuta a confermare che le 11 parole precedenti siano state trascritte correttamente.

Per ricavare la checksum della frase mnemonica a 12 parole dobbiamo lanciare il dado a 8 facce e solo il primo dado a 16 facce.

  • Lancio 12: 2, 9

Ora apri il wallet Electrum e fai i seguenti passaggi:

  • Clicca su “Create a new wallet” (Crea un nuovo wallet)
  • Dai un nome al wallet e clicca su “Next” (avanti)
  • Seleziona “Standard wallet” e clicca su “Next”
  • Seleziona “I already have a seed” (ho già una frase mnemonica) e clicca su “Next”
  • Inserisci le 11 parole ricavate in precedenza
  • Clicca su “Options” (opzioni) e seleziona “BIP39 seed”

A questo punto torna nella tabella del repository pubblicato su Github e vai alla prima riga dove la prima colonna contiene il primo numero del lancio 12 e la seconda colonna contiene il secondo numero del lancio 12.

Nel nostro esempio, vado alla riga 2, 9 e 1.

Solo una riga delle 16 che iniziano per 2, 9 mi darà la checksum corretta.

Prima riga che inizia per 2, 9

Ora scrivo su Electrum la parola associata alla prima riga. In questo esempio “copy”.

Electrum verificherà se la checksum è corretta oppure no. Nel caso non sia corretta, vedrò la scritta “BIP39 checksum failed“.

Parola di checksum sbagliata

Cancello la parola “copy” e scrivo la parola della riga successiva. Nel nostro esempio, andrò a scrivere “coral”.

Se la checksum è corretta, non vedrò scritto nulla (come nel mio caso), oppure “BIP39 checksum OK”, questo dipende dalla versione di Electrum e dal sistema operativo utilizzato.

Checksum corretta

Ora che la checksum è corretta salvo le 12 parole che compongono la frase mnemonica che nel mio caso è:

  1. potato
  2. maze
  3. rib
  4. impose
  5. pill
  6. leave
  7. impulse
  8. crazy
  9. alpha
  10. bitter
  11. initial
  12. coral

A questo punto, se stavo creando un wallet Bitcoin posso andare avanti cliccando su “Next”, se invece stavo generando una frase mnemonica da utilizzare su un altro wallet come per esempio MetaMask, Phantom, ecc, mi posso fermare e importare la frase nel wallet desiderato.

Procedimento generazione frase mnemonica da 24 parole

Il procedimento della generazione della frase mnemonica da 24 parole è uguale a quello della frase seed phrase a 12 parole, con l’unica eccezione riguardante la checksum. In ogni caso vediamo il procedimento punto per punto.

Per generare la frase mnemonica da 24 parole bisogna lanciare per 23 volte il dado a 8 facce per primo e successivamente i dadi a 16 facce.

Un esempio di sequenza potrebbe essere questa:

  • Lancio 1: 1, 11, 4
  • Lancio 2: 8, 3, 13
  • Lancio 3: 3, 5, 10
  • Lancio 4: 7, 14, 2
  • Lancio 5: 3, 9, 7
  • Lancio 6: 4, 9, 7
  • Lancio 7: 5, 2, 10
  • Lancio 8: 8, 3, 12
  • Lancio 9: 1, 15, 9
  • Lancio 10: 3, 8, 14
  • Lancio 11: 2, 2, 14
  • Lancio 12: 8, 2, 8
  • Lancio 13: 2, 5, 7
  • Lancio 14: 5, 8, 5
  • Lancio 15: 3, 10, 3
  • Lancio 16: 6, 9, 8
  • Lancio 17: 2, 4, 16
  • Lancio 18: 5, 7, 6
  • Lancio 19: 1, 8, 8
  • Lancio 20: 3, 14, 6
  • Lancio 21: 2, 10, 7
  • Lancio 22: 7, 8, 15
  • Lancio 23: 8, 13, 2

Utilizzando la tabella pubblicata nel repository menzionato in precedenza, sarà possibile convertire questi numeri in parole semplicemente associando i numeri alle prime tre colonne della tabella.

  • La prima colonna indica il lancio del dado a 8 facce, nel nostro esempio il risultato del primo lancio del dado a 8 facce è 1.
  • La seconda colonna indica il lancio del primo dado a 16 facce, nel nostro esempio il risultato del primo lancio del primo dado a 16 facce è 11.
  • La terza colonna indica il lancio del secondo dado a 16 facce, nel nostro esempio il risultato del primo lancio del secondo dado a 16 facce è 4.

Perciò la prima parola della mia frase mnemonica è quella inserita nella riga dove i numeri sono 1, 11, 4. Vedi qui sotto lo screenshot.

La prima parola è “behave”

Proseguo così per tutti e 23 i lanci. Nel nostro esempio le prime 23 parole della frase mnemonica sono:

  1. behave
  2. tortoise
  3. empty
  4. surface
  5. express
  6. ignore
  7. lobster
  8. tornado
  9. brown
  10. exile
  11. casual
  12. title
  13. churn
  14. model
  15. false
  16. rail
  17. child
  18. million
  19. auction
  20. follow
  21. crazy
  22. sound
  23. wealth

Queste sono le prime 23 parole della frase mnemonica. La ventiquattresima parola è la checksum della frase mnemonica.

Ricavare la checksum della frase mnemonica a 24 parole

Per ricavare la checksum della frase mnemonica a 23 parole dobbiamo lanciare solo il dado a 8 facce.

  • Lancio 24: 6

Apri il wallet Electrum e fai i seguenti passaggi:

  • Clicca su “Create a new wallet” (Crea un nuovo wallet)
  • Dai un nome al wallet e clicca su “Next” (avanti)
  • Seleziona “Standard wallet” e clicca su “Next”
  • Seleziona “I already have a seed” (ho già una frase mnemonica) e clicca su “Next”
  • Inserisci le 23 parole ricavate in precedenza
  • Clicca su “Options” (opzioni) e seleziona “BIP39 seed”

A questo punto torna nella tabella del repository pubblicato su Github e vai alla prima riga dove la prima colonna contiene il numero del lancio 23.

Nel nostro esempio, vado alla riga 6, 1, 1.

Solo una riga delle 128 che iniziano per 6 mi darà la checksum corretta.

Prima delle 128 righe che iniziano per 6

Ora scrivo su Electrum la parola associata alla prima riga. In questo esempio “parade”.

Electrum verificherà se la checksum è corretta oppure no. Nel caso non sia corretta, vedrò la scritta “BIP39 checksum failed“.

Checksum sbagliata

Cancello la parola “copy” e scrivo la parola della riga successiva. Nel nostro esempio, andrò a scrivere “parent”.

Vado avanti così finché la checksum non sarà corretta.

Se la checksum è corretta, non vedrò scritto nulla, oppure “BIP39 checksum OK”, questo dipende dalla versione di Electrum e dal sistema operativo utilizzato.

Nel nostro esempio la checksum corretta è “question” che si trova nella riga 6, 8, 13.

Checksum corretta frase mnemonica a 24 parole

Ora che la checksum è corretta salvo le 24 parole che compongono la frase mnemonica che nel mio caso è:

  1. behave
  2. tortoise
  3. empty
  4. surface
  5. express
  6. ignore
  7. lobster
  8. tornado
  9. brown
  10. exile
  11. casual
  12. title
  13. churn
  14. model
  15. false
  16. rail
  17. child
  18. million
  19. auction
  20. follow
  21. crazy
  22. sound
  23. wealth
  24. question

A questo punto, se stavo creando un wallet Bitcoin posso andare avanti cliccando su “Next”, se invece stavo generando una frase mnemonica da utilizzare su un altro wallet come per esempio MetaMask, Phantom, ecc, mi posso fermare e importare la frase nel wallet desiderato.

In conclusione

La generazione di una frase mnemonica tramite il lancio dei dadi rappresenta un metodo efficace per incrementare la casualità e, di conseguenza, la sicurezza delle chiavi di accesso ai wallet crittografici. Mentre i software di wallet si affidano spesso a generatori di numeri pseudo-casuali, l’uso dei dadi offre una fonte di casualità reale, difficile da replicare o prevedere.

Adottare questa pratica non solo aumenta la sicurezza del wallet, ma rafforza anche la consapevolezza dell’utente riguardo i principi fondamentali della crittografia e della protezione dei propri fondi. Tuttavia, va ricordato che la sicurezza delle risorse digitali non dipende solo dalla robustezza dei metodi che utilizziamo per generare la frase mnemonica, ma anche dalla prudenza con cui gestiamo e conserviamo queste informazioni.

La frase mnemonica è la chiave del tuo wallet: generarla in maniera veramente casuale e custodirla in sicurezza significa gestire accuratamente i tuoi asset digitali.

Last edited April 28, 2024 am30 01:11 AM

This information did not change since the last timestamp

This is important, because it proves that the content has not been tampered with and it can be trusted.

Riferimenti[+]

Riferimenti
1 Antonopoulos, A. M. 2017. Mastering Bitcoin: Programming the Open Blockchain. Stati Uniti: O’Reilly Media
2 Wordlist BIP-0039
3 BIP-0039
4 Almaraz Luengo, Elena, and Javier Román Villaizán. “Cryptographically Secured Pseudo-Random Number Generators: Analysis and Testing with NIST Statistical Test Suite.Mathematics, vol. 11, no. 23, 2023.
5 “Dice Rolls are Not Completely Random” Inside Science
6 M. Kapitaniak, J. Strzalko, J. Grabski, T. Kapitaniak; The three-dimensional dynamics of the die throw. Chaos 1 December 2012; 22 (4): 047504
7 V. Vaccaro; True Random Mnemonic Generator. Github
8 https://electrum.org/
9 Generating the mnemonic – BIP-0039

Entra nella cripto-community di NovaSera!

Clicca qui per entrare in una delle community di NovaSera dove puoi chiacchierare insieme ad altri appassionati come te di tecnologia blockchain, criptovalute ed NFT.

Copyright articolo

Questo articolo è pubblicato sotto licenza Creative Commons BY-NC-SA 3.0.
Puoi condividere e modificare (es. tradurre) i contenuti attribuendo la paternità a NovaSera, per usi NON commerciali e re-distribuendo con la stessa licenza.

Articoli recenti

Cos’è un satoshi?

Un satoshi rappresenta la centimilionesima parte di un bitcoin. Il termine è stato introdotto nel… Continua a leggere

6 giorni fa

Cos’è la frase mnemonica?

Leggi cos'è la frase mnemonica dei wallet per criptovalute e perché è molto importante gestirla… Continua a leggere

3 settimane fa

Bonus Binance 2024: cashback del 20% per sempre sulle commissioni di trading

N8LIV2RA è il codice che permette di avere il bonus di Binance nel 2023. Ovvero… Continua a leggere

2 mesi fa

In vista un round di finanziamento da 15 milioni per gli hardware wallet di NGRAVE

Binance Labs sembrerebbe guidare il round di finanziamento di 15 milioni per l'azienda produttrice di… Continua a leggere

1 anno fa

Sberbank annuncia la compatibilità della sua piattaforma con Ethereum e MetaMask

Sberbank, la più grande banca in Russia, ha annunciato che la sua piattaforma blokchain sarà… Continua a leggere

1 anno fa

Rug Pull di CroLend la piattaforma di prestito decentralizzata su rete Cronos

Gli sviluppatori di CroLend, piattaforma di prestito decentralizzata su rete Cronos, hanno fatto un Rug… Continua a leggere

1 anno fa