Una seed phrase da 12 parole sembra poca cosa. Dodici parole inglesi comuni. Sembra quasi facile da indovinare.
Non lo è.
Una seed phrase da 12 parole è generata da 128 bit di entropia. Questo significa che esistono 2128 possibili combinazioni valide. Scritto per esteso:
Per dare un'idea concreta: si stima che nell'universo osservabile ci siano circa 1080 atomi. 2128 è circa 4 miliardi di miliardi di volte più grande di quel numero. Un computer che provasse un miliardo di combinazioni al secondo impiegherebbe più dell'età dell'universo per coprire una frazione trascurabile dello spazio delle possibilità.
La seed da 12 parole è sicura per qualsiasi uso reale oggi e nel futuro prevedibile.
La seed da 24 parole usa 256 bit di entropia: 2256 combinazioni possibili. Un numero talmente grande che non esiste paragone fisico sensato per descriverlo — supera di ordini di grandezza il numero di atomi nell'universo osservabile elevato a se stesso.
La seed da 24 parole non aggiunge sicurezza pratica rispetto alle 12 parole — nessun computer esistente o immaginabile potrà mai violare nemmeno le 12. Le 24 parole esistono per chi vuole un margine teorico contro scenari futuri ipotetici (es. computer quantistici con capacità enormemente superiori a quelle attuali) o semplicemente per preferenza personale.
| 12 parole | 24 parole | |
|---|---|---|
| Entropia | 128 bit | 256 bit |
| Combinazioni | 2128 | 2256 |
| Sicurezza pratica oggi | ✓ Più che sufficiente | ✓ Più che sufficiente |
| Uso consigliato | Uso quotidiano | Preferenza personale / margine teorico |
| Parole | ENT (entropia) | CS (checksum) | Dadi | Supporto |
|---|---|---|---|---|
| 12 | 128 bit | 4 bit | 50 | ✓ Universale |
| 15 | 160 bit | 5 bit | 62 | ⚠ Limitato |
| 18 | 192 bit | 6 bit | 75 | ⚠ Limitato |
| 21 | 224 bit | 7 bit | 87 | ⚠ Limitato |
| 24 | 256 bit | 8 bit | 99 | ✓ Universale |
Un dado fisico genera casualità vera e fisica — la traiettoria del dado dipende da migliaia di variabili fisiche impossibili da misurare simultaneamente (turbolenza aria, attrito superficie, forza impresso, elasticità del dado). Nessun hardware o software al mondo può riprodurre o prevedere il risultato.
log2(6) ≈ 2.585 bit per lancio. Ogni faccia del dado porta circa 2.585 bit di entropia. Per 128 bit servono ⌈128 / 2.585⌉ = 50 lanci; per 256 bit servono ⌈256 / 2.585⌉ = 99 lanci.
I dadi vanno da 1 a 6, ma per la matematica in base-6 servono cifre da 0 a 5. Basta sottrarre 1 da ogni lancio. Questo non riduce la casualità, cambia solo la rappresentazione.
La sequenza di cifre 0-5 viene letta come un numero in base 6 (come il sistema decimale usa 10 cifre, il sistema esadecimale 16, questo usa 6). Il risultato è un numero intero enorme che rappresenta tutta la casualità dei lanci.
Dal numero in esadecimale, estraiamo esattamente i bit necessari (128 o 256). Ogni bit viene colorato: █ = 1, █ = 0.
Per creare il checksum, calcoliamo SHA256 dei byte di entropia. SHA256 è una funzione crittografica che trasforma qualsiasi input in un hash di 256 bit — deterministica (stesso input = stesso output) ma non invertibile. Anche un solo bit cambiato nell'input produce un hash completamente diverso.
Prendiamo i primi 4 bit dell'hash SHA256. Questi bit di checksum permettono ai wallet di verificare che la seed phrase sia stata trascritta correttamente: se anche una sola parola è sbagliata, il checksum non corrisponde.
Concateniamo i bit di entropia (oro) con i bit di checksum (rosso). Il risultato è la stringa di bit completa che verrà divisa in gruppi da 11 per generare le parole.
Riepilogo visivo del processo: dall'entropia al checksum alla concatenazione finale.
La wordlist BIP39 inglese è stata progettata con criteri precisi: nessuna parola simile a un'altra (per evitare errori di trascrizione), lunghezza minima 3 caratteri, massima 8, parole comuni nella lingua inglese e riconoscibili internazionalmente. Per ogni parola bastano le prime 4 lettere per identificarla univocamente.
| # | 11 Bit | Decimale (0-2047) | Parola BIP39 |
|---|
Il protocollo BIP39 prevede una passphrase opzionale (chiamata anche "25ª parola" o "extension word"). Si tratta di una parola o frase libera scelta dall'utente che viene aggiunta matematicamente al processo di derivazione del seed.
La passphrase non fa parte della seed phrase in sé, e nessun wallet la memorizza: deve essere ricordata separatamente. Se usata, il wallet senza passphrase e quello con passphrase derivano wallet completamente diversi dallo stesso set di 12/24 parole. Alcune persone usano un wallet "esca" senza passphrase (con pochi fondi) e un wallet reale con passphrase.
Attenzione: se perdi la passphrase, perdi l'accesso ai fondi nel wallet con passphrase. È una protezione aggiuntiva che aumenta anche il rischio di perdita irreversibile.
Le parole che hai generato sono la tua mnemonic phrase. Ma il wallet Bitcoin non le usa direttamente: le converte in una sequenza di 512 bit chiamata seed. Questo seed è il vero punto di partenza da cui deriva ogni chiave del tuo wallet.
La spec BIP39 definisce esattamente come fare questa conversione usando PBKDF2-HMAC-SHA512, ripetuta 2048 volte. Quello che vedi qui sotto è esattamente quello che succede dentro il tuo hardware wallet ogni volta che lo accendi con la tua seed phrase.
La passphrase è opzionale. Se lasci il campo vuoto, il seed viene calcolato senza di essa — come fa la maggior parte dei wallet per default. Se inserisci una passphrase, il seed cambia completamente. Stesso mnemonic, wallet completamente diverso. Questo si chiama plausible deniability: puoi rivelare le parole senza rivelare il tuo wallet reale.
password = "[mnemonic separato da spazi]",
salt = "mnemonic" + "",
iterazioni = 2048,
lunghezza = 64 byte = 512 bit
)
- password: le tue parole separate da spazio, normalizzate NFKD
- salt: la stringa fissa
"mnemonic"+ la tua passphrase (vuota = solo "mnemonic") - 2048 iterazioni: la funzione viene ripetuta internamente 2048 volte — rallenta il brute-force di 2048×
- 64 byte di output: il risultato è sempre 512 bit, qualunque sia la lunghezza dell'input
"Bitcoin seed", e ottiene la master private key (256 bit) e il master chain code (256 bit). Da questi due valori deriva ogni indirizzo Bitcoin del tuo wallet, all'infinito, in modo deterministico.Questo è il motivo per cui 12 o 24 parole sono sufficienti per gestire milioni di indirizzi Bitcoin: tutto deriva matematicamente da un'unica radice.