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!
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].
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à.
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?
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].
Per poter generare la frase mnemonica utilizzando i dadi abbiamo bisogno di:
Dopo aver reperito tutto il materiale devi decidere se generare una frase mnemonica da 12 o da 24 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:
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.
Perciò la prima parola della mia frase mnemonica è quella inserita nella riga dove i numeri sono 6, 5, 7. Vedi qui sotto lo screenshot.
Proseguo così per tutti e 11 i lanci. Nel nostro esempio le parole della frase mnemonica sono:
Queste sono le prime 11 parole della frase mnemonica. La dodicesima parola è la checksum della frase mnemonica.
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.
Ora apri il wallet Electrum e fai i seguenti passaggi:
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.
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“.
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.
Ora che la checksum è corretta salvo le 12 parole che compongono la frase mnemonica che nel mio caso è:
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.
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:
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.
Perciò la prima parola della mia frase mnemonica è quella inserita nella riga dove i numeri sono 1, 11, 4. Vedi qui sotto lo screenshot.
Proseguo così per tutti e 23 i lanci. Nel nostro esempio le prime 23 parole della frase mnemonica sono:
Queste sono le prime 23 parole della frase mnemonica. La ventiquattresima parola è la checksum della frase mnemonica.
Per ricavare la checksum della frase mnemonica a 23 parole dobbiamo lanciare solo il dado a 8 facce.
Apri il wallet Electrum e fai i seguenti passaggi:
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.
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“.
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.
Ora che la checksum è corretta salvo le 24 parole che compongono la frase mnemonica che nel mio caso è:
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.
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.
This is important, because it proves that the content has not been tampered with and it can be trusted.
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 |
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.
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.
Un satoshi rappresenta la centimilionesima parte di un bitcoin. Il termine è stato introdotto nel… Continua a leggere
Leggi cos'è la frase mnemonica dei wallet per criptovalute e perché è molto importante gestirla… Continua a leggere
N8LIV2RA è il codice che permette di avere il bonus di Binance nel 2023. Ovvero… Continua a leggere
Binance Labs sembrerebbe guidare il round di finanziamento di 15 milioni per l'azienda produttrice di… Continua a leggere
Sberbank, la più grande banca in Russia, ha annunciato che la sua piattaforma blokchain sarà… Continua a leggere
Gli sviluppatori di CroLend, piattaforma di prestito decentralizzata su rete Cronos, hanno fatto un Rug… Continua a leggere