Supponiamo di avere una password composta da n
caratteri alfabetici. A un utente malintenzionato viene fornita la password con hash e tenterà un attacco di forza bruta per crackarlo.
Posso immaginare un ingenuo password cracker che prova tutte le combinazioni che iniziano con AAAA...A
poi AAAA...B
poi AAAA...C
ecc. fino a ZZZZ...Z
. Per questo utente malintenzionato, una password che inizia con A
ridurrà il tempo di crack di 25 * 26^(n-1)
(rispetto all'inizio con Z
).
Ovviamente, potresti prima provare le parole del dizionario, le variazioni delle parole del dizionario e un elenco delle password più comuni ... ma se la password è stata casuale, allora a un certo punto dovrà scorrere l'intero spazio dei caratteri . E se non hai eseguito iterazioni sullo spazio in un modo ben definito (es. Input casuali), allora avresti bisogno di una quantità enorme di spazio per ricordare quali input hai già tentato (e dovresti controllarlo ad ogni iterazione, quindi rallentando le cose).
Potresti parallelizzare gli input in modo da provare A...
, B...
, C...
, ..., Z...
allo stesso tempo, ma ad un certo punto esaurirai i core.
In che modo i moderni password cracker risolvono questo problema?