Diceware: come cinque dadi scelgono meglio di te

Pubblicato il di David Carrero

Pensa una parola a caso. Adesso, la prima che ti viene.

Qualunque sia, non era a caso. Era una parola tua: qualcosa che hai letto questa settimana, un oggetto che hai davanti, la lettera con cui inizia il tuo nome. Quando a una persona si chiede il caso, quello che produce è autobiografia. E l’autobiografia si indovina.

È tutto qui il problema delle password. Non è che la gente sia pigra — anche, per carità — è che siamo incapaci di generare casualità. Ci piacciono certe lettere, evitiamo le ripetizioni perché «non sembrano casuali», alterniamo vocali e consonanti senza accorgercene e, se ci chiedono un numero, peschiamo da quello che abbiamo sottomano: date, età, cifre che significano qualcosa. A un attaccante non serve sapere chi sei per sfruttarlo. Gli basta sapere che sei umano.

Un ingegnere, cinque dadi e una lista

Nel 1995 Arnold G. Reinhold ha pubblicato sul suo sito un metodo che ha chiamato Diceware. L’idea è talmente semplice che dà quasi fastidio doverla spiegare: se il problema è che l’umano non sa scegliere a caso, togli all’umano la scelta.

L’intera procedura sta in tre righe:

  1. Lanci cinque dadi e annoti i risultati in ordine. Esce, mettiamo, 4-2-6-1-3.
  2. Cerchi 42613 in una lista.
  3. Quella è la tua parola. Ripeti per la successiva.

La lista ha 7.776 voci, e il numero non è un capriccio: è 6⁵, tutti i risultati possibili di cinque dadi. Ogni combinazione — da 11111 a 66666 — punta a una voce diversa, e nessuna resta fuori né si ripete. La lista originale mescola parole corte in inglese con qualche sillaba, cifra e segno sparso, proprio perché trovare 7.776 parole buone è più difficile di quanto sembri.

L’importante non è la lista. È il dado.

Perché 12,9 bit sono 12,9 bit

Qui c’è la parte che quasi nessuno capisce, ed è l’unica che conta.

L’entropia di una parola di Diceware è log₂(7.776) = 12,9 bit. È aritmetica, non sicurezza: ci sono 7.776 risultati e hanno tutti esattamente la stessa probabilità.

Confrontalo con quello che succede quando scegli tu. Se ti chiedo una parola da un dizionario di 7.776 parole, il conto sembra lo stesso — anche lì ci sono 7.776 opzioni — ma non lo è, perché tu non le scegli con la stessa probabilità. Sceglierai parole comuni, parole che ti piacciono, parole che hai visto oggi. Quel dizionario ha 12,9 bit sulla carta e molti meno nella tua testa, e l’attaccante ordina la sua lista per frequenza e prova prima quelle che la gente sceglie. L’entropia non è quante opzioni ci sono: è quante opzioni restano una volta scontato quello che l’attaccante sa dei tuoi gusti.

I dadi non hanno gusti. E non hanno nemmeno memoria: il dado non sa che al lancio precedente era uscito bosco, quindi non evita di ripetersi, non cerca varietà e non si vergogna se escono due parole che iniziano uguale. Per questo i 12,9 bit di Diceware sono 12,9 bit veri, e non una cifra ottimista da dépliant.

Ed è per questo che i conti tornano al rialzo. Ogni parola somma:

  • Cinque parole: circa 64 bit.
  • Sei parole: circa 77 bit.
  • Sette parole: circa 90 bit.

È somma pulita, non moltiplicazione magica, perché ogni lancio è indipendente dagli altri. Reinhold consiglia di non scendere sotto le cinque parole, e sei o più per quello che conta davvero. Puoi vedere l’effetto nel generatore: aggiungere una parola somma sempre la stessa cosa, e quel «sempre» è tutta l’invenzione.

Il segreto non è la lista

L’obiezione arriva da sola: se la lista è pubblica, non è più facile romperlo?

No, e conviene dirlo piano. I 12,9 bit danno già per scontato che l’attaccante abbia la lista. Danno anche per scontato che sappia che usi Diceware, che sappia quante parole ha la tua frase e che sappia in che ordine le scrivi. Tutto questo è già sottratto. L’unica cosa che non sa è cosa è uscito ai tuoi dadi, ed è esattamente quello che stai contando quando dici «77 bit».

È l’opposto di quello che facciamo con P@ssw0rd, dove tutta la speranza è riposta nel fatto che a nessuno venga in mente di sostituire la a con @. Gli viene in mente. È una delle prime regole che applica qualunque strumento di attacco a dizionario. Se hai la tentazione, provala nel controllo e guarda quanto regge.

La EFF e le liste alternative

Nel 2016 la Electronic Frontier Foundation ha pubblicato le proprie liste di parole per frasi con i dadi. La lista lunga mantiene le 7.776 voci — gli stessi cinque dadi, gli stessi 12,9 bit — ma cambia il contenuto: fuori le sillabe strane e i segni, dentro parole ordinarie, facili da digitare e da distinguere l’una dall’altra. Hanno pubblicato anche liste corte, da 1.296 parole (6⁴, quattro dadi, 10,3 bit per parola): una con parole più brevi e memorabili, e un’altra pensata perché ogni parola si distingua dalle altre già dalle prime lettere e si possa completare automaticamente. In cambio, ogni lancio vale meno e bisogna lanciare più volte.

La cosa elegante è che l’aritmetica non cambia con i gusti di nessuno. È il numero di voci che comanda. Puoi farti la tua lista in sardo, in napoletano o in klingon: finché ha 7.776 voci distinte e scegli con i dadi, ogni parola vale 12,9 bit. L’unica cosa che stai decidendo quando cambi lista è quanto ti risulta gradevole il risultato, non quanto è sicuro.

I tre modi di rovinare tutto

Diceware fallisce in tre modi, e tutti e tre sono lo stesso errore: l’umano che rimette le mani in mezzo.

  • Rilanciare perché «questa non mi piace». Se scarti risultati, non stai più usando i dadi: stai usando il tuo criterio con un dado di scena. Esce quello che esce.
  • Riordinare le parole perché suonino come una frase. Anche l’ordine fa parte del lancio.
  • «Migliorarla» con un ! alla fine e una maiuscola all’inizio. Non aggiunge niente contro un attaccante che sa che la gente mette un ! alla fine e una maiuscola all’inizio. Se devi rispettare una policy stupida, fallo, ma non credere di aver guadagnato sicurezza: l’hai guadagnata lanciando un’altra volta.

E un avvertimento che Reinhold già dava: i dadi normali bastano e avanzano — quelli da casinò sono più precisi, ma non servono —, conviene lanciare su una superficie liscia e il risultato si annota così com’è uscito.

Il riassunto

Una frase di sei parole tirate a dadi è più lunga da scrivere di P@ssw0rd, più facile da ricordare di Tr0ub4dor&3 e di parecchi ordini di grandezza più cara da rompere di entrambe. Non perché sia più contorta — non lo è, sono sei parole normali — ma perché è l’unica cosa della tua password che non hai deciso tu.

È tutta qui la battuta di Diceware: la password migliore che puoi avere è quella in cui la tua opinione non ha voce in capitolo.


Fonti: Arnold G. Reinhold, «The Diceware Passphrase Home Page» e la sua lista di 7.776 parole (1995) · Electronic Frontier Foundation, liste di parole per frasi di password con i dadi (2016) · l’aritmetica è verificabile: 6⁵ = 7.776 e log₂(7.776) ≈ 12,92 bit per parola.

← Torna al blog