Lo scopo di un attacco di dizionario è quello
di scoprire password segrete; di solito le
password sono conservate in forma cifrata
e non è possibile risalire al testo in chiaro poichè la funzione di
cifratura è one-way, ovvero non invertibile.
Si può usare una lista di parole probabili (detta dizionario),
applicare la funzione di cifratura ad ognuna e confrontare il risultato
con i cifrati contenuti nel file delle password. Se coincidono é stata individuata una
password. Questo è teoricamente
possibile siccome sia il mapping one-way che il testo cifrato
sono noti.
Questo tipo di attacco, chiamato appunto attacco di
dizionario, può essere reso più difficile ampliando lo spazio in cui le
password vengono scelte o anche
limitando il numero di tentativi non validi consentiti
in determinati periodi di tempo (nel caso di accessi on-line).
La flessibilità dell'attacco dipende dal numero di
password che devono essere controllate prima di trovare quella
giusta e dal tempo richiesto per testarne una. Infine influisce l'algoritmo di
cifratura delle
password usato, la sua implementazione, il tempo di
esecuzione dell'istruzione e il numero di
processori disponibili. Per un file delle password con 2000 utenti e un
vocabolario di 500
Kbyte, il tempo impiegato si aggira intorno alle tre ore, tempo che comunque è
molto
variabile anche a seconda della potenza dell' hardware utilizzato.
Studi effettuati in passato indicano che un gran numero di password
selezionate dagli
utenti sono trovate in tipici dizionari di soli 150000 parole. Nel 1979, Morris
e Thompson esaminarono un campione di 3289 password e ne trovarono 2831
(86%) vulnerabili, tra cui:
15 erano un singolo carattere ASCII
72 erano una stringa di 2 caratteri ASCII
464 erano una stringa di 3 caratteri ASCII
477 erano una stringa di 4 caratteri alfanumerici
706 erano una stringa di 5 lettere o tutte maiuscole o tutte minuscole
605 erano una stringa di 6 lettere tutte minuscole.
Ovviamente, la difficoltà nel creare programmi che effettuino attacchi di dizionario, è relativa alla creazione di un buon vocabolario. Per riuscire ad ottenerne uno valido, bisogna creare un file con molte parole del linguaggio corrente, che contenga anche termini tecnici che riguardano il computer e la rete oppure eventi culturali di massa tipo telefilm e cose simili. Se si ha a disposizione molto tempo, si possono aggiungere caratteri speciali alla fine e magari anche all'inizio di tutte le parole, ma ciò incrementa notevolmente il tempo di calcolo. Un buon compromesso è aggiungere caratteri solo alla fine, limitarsi ai soli numeri e lasciar perdere i separatori.
Tra i cracker che operano in questo modo menzioniamo John The Ripper e trattiamo in maniera più approfondita Crack.
Un altro tipo di attacco di dizionario tenta l'accesso ad una risorsa fornendo come password una
parola contenuta in un dizionario, senza applicarvi alcuna funzione di cifratura.
Questa tecnica è utilizzabile solo se sono consentiti ripetuti tentativi d'accesso.
In questo modo operano Webcracker e i cracker di ZIP.