Nell’ambito della cybersecurity esistono tecnologie che diventano obsolete nel giro di pochi anni e idee che invece continuano a dimostrarsi straordinariamente moderne anche decenni dopo la loro nascita. Il metodo noto come Diceware appartiene senza dubbio alla seconda categoria.
Molto prima dell’arrivo dei password manager moderni, delle GPU utilizzate anche per il cracking delle password, delle passkey, l’inventore di Diceware aveva già identificato un problema fondamentale: gli esseri umani sono pessimi generatori di dati casuali. Da questa intuizione nacque uno dei sistemi più intelligenti mai sviluppati per la creazione di password robuste e memorizzabili dagli esseri umano, un metodo ancora oggi considerato un riferimento teorico e pratico per la sicurezza delle credenziali.
Chi ha creato Diceware e come nasce
Diceware fu ideato nel 1995 da Arnold G. Reinhold, informatico, consulente e ricercatore statunitense con una lunga esperienza nel settore della sicurezza e della privacy digitale. A differenza di molte metodologie nate in ambienti puramente accademici, Diceware fu progettato pensando a un problema concreto: creare password davvero sicure che gli utenti siano in grado di ricordare senza doverle annotare.
Negli anni ’90 il problema delle password era già evidente: gli utenti sceglievano parole semplici, riutilizzavano le stesse credenziali, modificavano password esistenti in modo prevedibile, usavano nomi, date o pattern facili da intuire. Esattamente come oggi, potremmo dire. Per questo sono nati meccanismi come l’autenticazione a due fattori (2FA/MFA) e le passkey.
Già più 30 anni fa, quindi, Reinhold comprese che il problema non fosse soltanto tecnologico ma profondamente umano. Così osservò che la sicurezza non dovesse derivare dalla difficoltà umana di ricordare caratteri casuali (lughe sequenze alfanumeriche con simboli), ma dalla quantità reale di casualità matematica presente nella credenziale.
Cosa c’entra l’uso dei dati nella generazione di password o passphrase
L’idea centrale di Diceware era sorprendentemente semplice: usare dadi fisici per generare parole casuali. Oggi questa scelta può sembrare quasi folkloristica, ma in realtà è assolutamente geniale. Un insieme di dadi fisici offre una fonte di casualità autenticamente non deterministica.
Oggi come un tempo, infatti, quando si parla di computer, si parla di generatori di numeri pseudo-casuali, non puramente casuali.
Un computer tradizionale funziona in modo deterministico: a partire dagli stessi dati iniziali e dalle stesse istruzioni, produrrà sempre gli stessi risultati. I numeri casuali sono quindi generati attraverso algoritmi matematici che simulano la casualità, ma che in realtà seguono schemi precisi. Per questo motivo si parla di numeri pseudo-casuali: appaiono imprevedibili, ma possono essere riprodotti se si conoscono il procedimento utilizzato e il cosiddetto seed iniziale.
Cinque dadi a 6 facce producono esattamente 7776 combinazioni uniche: 65 = 7776.
L’idea di Diceware è associare ciascuna combinazione di numeri ottenuta dal lancio dei dati con una parola specifica contenuta in un elenco (wordlist). Si prenda ad esempio come riferimento quello di EFF in inglese o questa wordlist in italiano. Come si vede, in entrambi i casi, le parole sono proprio 7776.
Facendo più lanci dei dadi, in sequenza, si ottengono un certo numero di parole che possono essere usate come password lunga, o meglio come passphrase per proteggere qualunque risorsa critica.
La matematica dell’entropia
Nel valutare le password, si usa il concetto di entropia che misura l’imprevedibilità della password stessa. Secondo la teoria dell’informazione di Claude Shannon, la formula generale è la seguente:
H = log2(N)
dove:
H è l’entropia in bit
N è il numero totale delle combinazioni possibili
Nel caso di Diceware, una singola parola viene scelta tra 7776 possibilità. L’entropia associata a ogni parola è quindi:
H = log2(7776) ≈ 12,9 bit
Ogni parola aggiunge circa 12,9 bit di entropia: con 6 parole scelte in maniera del tutto casuale si ottengono circa 6×12,9 = 77,5 bit. Uno spazio di ricerca enorme anche per gli standard moderni.
| Entropia stimata | Livello di sicurezza | Valutazione pratica | Esempi di password / passphrase |
|---|---|---|---|
| < 40 bit | Inaccettabile | Vulnerabile a dizionari, password leak e brute force offline. Non adatta per account importanti. |
Password2025!Marco1972P@ssw0rd! |
| 40 – 60 bit | Debole / Sufficiente | Resiste ad attacchi limitati ma non è ideale per dati sensibili o master password. |
aF7#kL2!tR9$pQ2xDiceware 4 parole: CignoQuarzoMarmoVento |
| 60 – 80 bit | Robusta | Sicurezza elevata per la maggior parte degli utilizzi moderni, specialmente con MFA. |
xT#9mQ!2Lp$7Diceware 5 parole: AtlanteFragolaVellutoFiumeNebbiaDiceware 6 parole: LanternaIstmoScalaVivaioPausaGolosi |
| 80 – 100 bit | Molto robusta | Livello auspicato per master password, vault crittografici e cifratura disco. |
7F#xP!2qLm$9Zt@Diceware 7 parole: EstivoFluoroBassoAulaLegamePesoSnodo |
| > 100 bit | Livello “militare” / estremamente elevato | Molto resistente anche contro attacchi offline avanzati con hardware specializzato. |
vQ$7Lm#2Px!9Kt@4Hs&1ZDiceware 8+ parole: PozzaLeccioLimaDeciseMedicoMinimaAcutoCuori |
Perché Diceware è ancora attuale
Oggi esistono password manager avanzati, autenticazione biometrica e passkey basate su crittografia asimmetrica. Eppure Diceware continua a essere un’ottima idea per chi vuole tenere a mente password efficaci e “memorizzabili”.
Il metodo Diceware può quindi essere utilizzato per generare passphrase da usare come master password, per la cifratura delle unità di memorizzazione, come chiavi crittografiche, per i wallet digitali, come recovery phrase, per proteggere account critici.
Il motivo è che Dicewire produce casualità reale, a patto di usare una sorgente di numeri casuali che sia davvero tale (ecco perché il riferimento ai dadi fisici); perché genera credenziali memorizzabili; riduce la prevedibilità umana; aumenta drasticamente la lunghezza delle password.
In un’epoca in cui gli attacchi sfruttano soprattutto pattern probabilistici e password sottratte in attacchi precedenti, il semplice ma efficacissimo approccio matematico di Diceware continua a rivelarsi sorprendentemente efficace.
L’elenco delle parole è noto anche agli aggressori ma Diceware resta sicuro
Abbiamo visto che le wordlist con le 7776 combinazioni possibili sono note, anche ai criminali informatici.
Lo spazio delle combinazioni resta enorme, perché il segreto non è la wordlist, ma quali parole sono state estratte e in quale ordine. Con Diceware classico si ha quanto segue:
N = 7776w
dove w è il numero di parole che andranno a comporre la passphrase finale.
| Parole | Combinazioni | Entropia |
|---|---|---|
| 5 | 77765 ≈ 2,84 × 1019 | ≈ 64,6 bit |
| 6 | 77766 ≈ 2,21 × 1023 | ≈ 77,5 bit |
| 7 | 77767 ≈ 1,72 × 1027 | ≈ 90,5 bit |
Per dare un’idea, 6 parole Diceware hanno una robustezza matematica simile a una password totalmente casuale di quasi 12 caratteri scelta da 94 simboli (tutti i caratteri presenti sulla tastiera).
| Diceware | Equivalente con alfabeto da 94 caratteri |
|---|---|
| 5 parole | password casuale da circa 9,8 caratteri |
| 6 parole | password casuale da circa 11,8 caratteri |
| 7 parole | password casuale da circa 13,8 caratteri |
Come creare password sicure senza dadi con Diceware
Sebbene il metodo Diceware originale preveda l’uso di dadi fisici, oggi è possibile creare passphrase robuste anche via software, purché si utilizzi una sorgente casuale crittograficamente sicura.
In ambiente Windows, ad esempio, PowerShell permette di generare password Diceware in modo relativamente semplice utilizzando le API crittografiche di .NET invece dei normali generatori pseudo-casuali.
Il vantaggio di questo approccio è evidente: non servono dadi fisici, non è necessario effettuare manualmente decine di lanci e la generazione della passphrase avviene completamente in locale, senza inviare dati a servizi esterni.
Il seguente script PowerShell scarica una wordlist Diceware, estrae parole casuali tramite un generatore crittograficamente sicuro e costruisce automaticamente una passphrase:
# Wordlist Diceware EFF inglese
$url = "https://www.eff.org/files/2016/07/18/eff_large_wordlist.txt"
# In alternativa, wordlist italiana:
# $url = "https://www.taringamberini.com/downloads/diceware_it_IT/lista-di-parole-diceware-in-italiano/4/word_list_diceware_it-IT-4.txt"
$numeroParole = 6
$contenuto = Invoke-WebRequest -Uri $url -UseBasicParsing
$righe = $contenuto.Content -split "`n"
$wordlist = foreach ($riga in $righe) {
$riga = $riga.Trim()
if ($riga -match "^\d+\s+(.+)$") {
$matches[1].Trim()
}
}
function Get-CryptoRandomIndex {
param (
[int]$Max
)
$rng = New-Object System.Security.Cryptography.RNGCryptoServiceProvider
$bytes = New-Object byte[] 4
do {
$rng.GetBytes($bytes)
$valore = [BitConverter]::ToUInt32($bytes, 0)
} while ($valore -ge ([uint32]::MaxValue - ([uint32]::MaxValue % $Max)))
return [int]($valore % $Max)
}
$parole = for ($i = 0; $i -lt $numeroParole; $i++) {
$indice = Get-CryptoRandomIndex -Max $wordlist.Count
$wordlist[$indice]
}
"Parole estratte:"
$parole
"Passphrase:"
($parole -join "-")
In PowerShell è preferibile evitare la funzione Get-Random e usare invece la classe .NET RandomNumberGenerator, che Microsoft descrive come un generatore di valori casuali crittograficamente forti.
Conclusioni
A oltre 30 anni dalla sua nascita, Diceware continua a dimostrare quanto alcune idee possano restare moderne anche in un panorama tecnologico completamente trasformato.
In un’epoca dominata da GPU sempre più potenti, password leak di enorme portata, attacchi automatizzati, phishing e strumenti di cracking avanzati, il principio ideato da Arnold Reinhold nel 1995 resta ancora oggi incredibilmente valido: la sicurezza reale non deriva dalla complessità apparente di una password, ma dalla “qualità matematica” della casualità che contiene.
Il vero punto di forza di Diceware è che affronta direttamente il principale problema della sicurezza delle credenziali: l’essere umano. Gli utenti tendono naturalmente a scegliere password prevedibili, riutilizzare schemi già usati, inserire nomi, date o sostituzioni banali. Diceware elimina quasi completamente questa componente psicologica e statistica, sostituendola con un processo casuale semplice ma estremamente efficace.