Sì, i requisiti di complessità della password riducono lo spazio di ricerca e pertanto rendono le password più semplici , ma allo stesso tempo possono anche aumentare la sicurezza . Perché? Per capire questo, è necessario capire che non esiste una password sicura (o non sicura). Una password è solo sicura / non sicura in relazione a le nostre ipotesi sul metodo di attacco dell'attaccante.
Per capire questo, considera il seguente esempio. Se scegli a caso una stringa di lettere di 0 <=
lunghezza < n
da un alfabeto di dimensione d
, ci sono esattamente
d^0 + d^1 + ... + d^{n-1} = (d^n - 1)/(d-1)
possibilità. Se hai scelto una stringa di lunghezza l < n
, e l'attaccante sceglie una stringa di lunghezza n
uniformemente casuale , con probabilità (d-1)/(d^n - 1)
sceglierà la tua password. Nota che questa probabilità non dipende dalla lunghezza della tua password ma dalla lunghezza massima che l'attaccante considera.
Quindi abbiamo un apparente paradosso: più password vengono controllate dall'attaccante, più sicura diventa la password . Certo, è un'assurdità. Infatti, se un utente malintenzionato tenta di decifrare la tua password, non sceglierà solo una una password a caso, ma le passerà tutte in sequenza.
Quindi il modo corretto di chiedere la sicurezza della tua password è: quanto è probabile che un utente malintenzionato indovini la tua password entro k ipotesi.
Se si presume che l'utente malintenzionato esegua tutte le password in ordine lessicografico, la password zzz...z
è oggettivamente la password più sicura e deve essere utilizzata da ogni utente. Questo è ridicolo, ma solo ridicolo come il nostro assunto.
Un approccio più ragionevole è quello di assumere che l'attaccante percorra tutte le stringhe di lunghezza < n
in un ordine casuale. Con una probabilità di
1 - (N-1)/N * (N-2)/(N-1) * ... * (N-k)/(N-k+1) = 1 - (N-k)/N
avrà trovato la tua password (presumendo che l'attaccante continui a indovinare anche se l'ha trovato), dove
N = (d^n - 1)/(d-1)
è il numero di tutte le stringhe di lunghezza < n
.
Ancora una volta, questo numero non dipende affatto dalla lunghezza l
della tua password. Pertanto, la password vuota è sicura quanto ogni altra password .
Ancora una volta, questo è ridicolo: l'attaccante probabilmente non sarà così stupido da testare tutte le possibilità in modo uniforme e casuale. Probabilmente passerà prima attraverso un piccolo sottoinsieme di casi speciali (password di piccola lunghezza, stesse password di lettere, ...) e poi testerà il resto in ordine casuale uniforme.
Riassumendo: "La sicurezza di una password" è solo una quantità soggettiva assegnata ad essa, in base alle tue convinzioni sull'attaccante. Poiché la maggior parte dell'uso crede che gli attaccanti controllino prima le "password semplici", quelle sono soggettivamente insicure. In modo insicuro, infatti, è ragionevole ridurre lo spazio di ricerca un po 'escludendo queste password.