# Attacco a dizionario

Un attacco a dizionario, nella crittanalisi e nella sicurezza informatica, è una tecnica di attacco informatico mirata a "rompere" un meccanismo di autenticazione provando a decifrare un codice cifrato (es. password cracking) o a determinare la passphrase cercando tra un gran numero di possibilità. In pratica si tenta di accedere a dati protetti da password (sia remoti, come ad esempio account su siti web o server di posta, database server; sia locali, come documenti o archivi protetti da password) tramite una serie continuativa e sistematica di tentativi di inserimento della password, solitamente effettuati in modo automatizzato, basandosi su uno o più dizionari di riferimento.

## Descrizione

In contrasto con un metodo forza bruta (o attacco brute force), dove tutte le possibili password sono ricercate in maniera esaustiva, un attacco a dizionario prova solamente quelle ritenute più probabili, tipicamente contenute in una lista (detta dizionario). Generalmente, questi attacchi, detti per questo "a dizionario", hanno successo perché la maggior parte delle persone ha la tendenza a scegliere password semplici da ricordare (e quindi semplici da scoprire, ad esempio il proprio nome, quello dei propri figli, date di nascita) e tendenzialmente sceglie parole prese dalla propria lingua nativa.
I dizionari, che sono normalmente semplici file composti da sequenze di parole divise da caratteri separatori, possono riferirsi a contenuti standard (dizionario della lingua inglese, della lingua italiana, dizionario dei nomi, ecc.) oppure essere creati appositamente a seconda del contesto di utilizzo.
Gli attacchi a dizionario possono essere applicati in due situazioni principali:
* nella crittanalisi
* nella sicurezza informatica

### Utilizzo in crittanalisi

Si può sferrare un attacco a dizionario per cercare di determinare la chiave di decriptazione per un dato brano di testo cifrato.

### Utilizzo in sicurezza informatica

Nella sicurezza informatica, può essere sferrato un attacco a dizionario per cercare di aggirare un meccanismo di autenticazione per l'accesso ad un sistema informatico, che richiede una password. L'efficacia di un attacco a dizionario può essere notevolmente ridotta limitando il numero massimo di tentativi di autenticazione che possono essere effettuati ogni minuto, e bloccando anche i tentativi che superano una certa soglia di esiti negativi. Generalmente, 3 tentativi sono considerati sufficienti per permettere ad un utente legittimo di correggere i propri errori di battitura e accedere correttamente al sistema. Superata questa soglia, per sicurezza è meglio assumere che l'utente sia da considerarsi malintenzionato.
C'è qualche somiglianza tra queste situazioni. Per esempio, un ascoltatore malevolo può registrare uno scambio di informazioni tra due parti e usare un attacco a dizionario per provare a determinare quale fosse la password. Oppure, un attaccante può essere in grado di ottenere una lista delle password criptate da un sistema remoto.

### Efficacia ed efficienza degli attacchi a dizionario

Poiché di solito gli utenti scelgono password facilmente indovinabili, questo attacco ha successo in media 4 volte su 10 quando si utilizza una lista di parole ragionevolmente grande. I dizionari per la maggior parte delle lingue sono facilmente accessibili su Internet, quindi l'uso di parole straniere è praticamente inutile per contrastare attacchi a dizionario.
È possibile raggiungere un compromesso spazio-tempo con la precomputazione e la memorizzazione di un elenco di parole di dizionario criptate, ordinate in base al 'valore' criptato. Questo richiede disponibilità elevata di risorse per memorizzare questi elenchi e di tempo per preparare gli elenchi, ma rende gli attacchi quasi istantanei e si rivela una strategia particolarmente efficace quando si tenta di violare un gran numero di password tutte in una volta. Il Salting è una tecnica che forza il dizionario criptato a essere ricalcolato per ogni password desiderata, rendendo potenzialmente la precomputazione impossibile se si utilizza un salt grande sufficientemente.

### Confronto con il metodo forza bruta

Il metodo di attacco basato su dizionario viene utilizzato spesso nei tentativi di cracking delle password in quanto gli utenti, soprattutto se poco esperti di informatica, tendono a prediligere parole chiave semplici da ricordare a mente, e quindi appartenenti al linguaggio comune, piuttosto che sequenze alfanumeriche casuali. Il vantaggio di usare un dizionario rispetto a un normale attacco col metodo a forza bruta (tentativo di scoprire una password provando tutte le combinazioni alfanumeriche possibili) è dato dal fatto che il test delle password, anche se eseguito in modo automatizzato (tramite software appositi) e da calcolatori molto potenti, è comunque un processo che richiede una enorme quantità di tempo, che aumenta in maniera esponenziale all'aumentare della lunghezza della password stessa.

### Esempi di utilizzo degli attacchi a dizionario

Un esempio di attacco a dizionario si ritrova nella Seconda guerra mondiale, quando dei codebreaker inglesi che lavoravano su messaggi tedeschi cifrati con la macchina Enigma utilizzarono la parola tedesca eins come parte dell'attacco; eins, ovvero il numero uno in tedesco, apparve nel 90% di tutti i testi cifrati, poiché la tastiera di Enigma non aveva numeri.
Oggi gli spammer spesso usano una forma di attacco a dizionario, a volte conosciuto come Directory Harvest Attack, per fare harvesting dell'indirizzo e-mail. Per esempio, uno spammer potrebbe provare a mandare messaggi a adam@example.com, barbara@example.com, carl@example.com, etc. Gli indirizzi autentici, ai quali i messaggi saranno consegnati invece di essere rispediti indietro al mittente con errore (errore di Message Delivery Notification) possono essere aggiunti alla lista dello spammer come indirizzo valido.
Il libro scritto da Clifford Stoll, The Cuckoo's Egg, contiene un caso di attacco a dizionario contro le password criptate contenute nel file passwd nei sistemi Unix, e della reazione all'attacco avvenuto con successo ad opera di (Robert Morris) che inventò il sistema di criptazione one-way usato per le login con password.

### Possibili contromisure

Poiché la particolare caratteristica di questo tipo di attacco è l'elevato numero di tentativi, sono sempre più frequenti sistemi di accesso, sia su sistemi locali, sia su internet aventi la caratteristica di sospendere per un periodo di tempo determinato la possibilità di inserire la password dopo un preciso numero di tentativi falliti, in modo che il tempo necessario ad indovinare la combinazione esatta cresca.

### Esempi

Qui di seguito vengono riportati alcuni esempi conosciuti di tool software per attacchi a dizionario.
* John the Ripper: prodotto dalla OpenWall, è molto utilizzato per testare la sicurezza delle password in ambiente Windows, è molto versatile e potente.
* Crack: è stato creato da Alec D. E. Muffett ed analizza il software per il password cracking.
* Hack++: viene utilizzato soprattutto per crackare le password delle email.
* Elzapop: come sopra.
* Cain and Abel: è un programma multi uso per vari tipi di attacchi remoti. Comprende molti plug-in tra i quali è possibile trovare un BruteForcer configurabile per utilizzare i dizionari.
JAIGOBOT