Attacchi al database delle
password
Una volta ottenuta una copia del database delle password, tipicamente si praticano due possibili attacchi:
Questi due attacchi sono i più utilizzati in questo contesto e si basano sulla buona probabilità che l’utente abbia scelto una password debole. Le password deboli sono caratterizzate da bassa entropia cioè sono facilmente predibili e principalmente rientrano nelle seguenti categorie:
1. password facilmente deducibili a partire dai dati personali dell’utente (es. userid, matricola universitaria, numero telefonico, indirizzo, … )
2. password costruite a partire da dati pubblici (es. nomi personaggi TV, termini calcistici, …)
3. password molto corte
4. password vuota
L’attacco a forza bruta (o ricerca esaustiva) è l’attacco più classico ad un sistema di autenticazione, consiste semplicemente nel provare tutte le possibili password sull’insieme dei caratteri consentiti. E’ efficace perché prova tutte le possibilità però entro quanto tempo trova la password? Il tempo richiesto per un attacco a forza bruta è T = nl t y dove:
· n la dimensione dell’alfabeto delle password
· l la lunghezza della password del particolare utente
· t numero di iterazioni della funzione di cifratura
· y tempo richiesto per una singola iterazione della funzione di cifratura
Dunque se questi valori risultano alti l’attacco a forza bruta non è praticabile. Presentiamo di seguito i tempi richiesti dall'attacco a forza bruta in corrispondenza di alcuni valori-esempio di l e n, assumendo y = 1/125000 secondi e t = 25:
l\n |
26 (minuscole) |
36 (minuscole
alfanumeriche) |
62 (miste alfanumeriche) |
95 (tutti i caratteri) |
5 |
0,67 ore |
3,4 ore |
51 ore |
430 ore |
6 |
17 ore |
120 ore |
130 giorni |
4,7 anni |
7 |
19 ore |
180 giorni |
22 anni |
440 anni |
8 |
1,3 anni |
18 anni |
1.400 anni |
42.000 anni |
9 |
34 anni |
640 anni |
86.000 anni |
4.000.000 anni |
10 |
890 anni |
23.000 anni |
5.300.000 anni |
380.000.000 anni |
Provare tutte le password da lunghezza zero fino ad l in
maniera incrementale significa provare il seguente numero di password:
che cresce vertiginosamente al crescere di n ed l come si evince
dagli esempi seguenti:
l\n |
26 (minuscole) |
36 (minuscole alfanumeriche) |
62 (miste alfanumeriche) |
95 (caratteri da tastiera) |
5 |
12.356.631 |
62.193.781 |
931.151.403 |
7.820.126.496 |
6 |
321.272.407 |
2.238.976.117 |
57.731.386.987 |
742.912.017.121 |
7 |
8.353.082.583 |
80.603.140.213 |
3.579.345.993.195 |
70.576.641.626.496 |
8 |
217.180.147.159 |
2.901.713.047.669 |
221.919.451.578.091 |
6.704.780.954.517.121 |
9 |
5.646.683.826.135 |
104.461.669.716.085 |
13.759.005.997.841.643 |
636.954.190.679.126.496 |
10 |
146.813.779.479.511 |
3.760.620.109.779.061 |
853.058.371.866.181.867 |
3.813.680.025.622.789.727.142.798.628.218.900 |
L’attacco a dizionario è un attacco
automatizzato sferrato sulla base di uno o più dizionari
di parole. Un dizionario è una lista di possibili password. L’idea alla base di
questo attacco è che l’utente seleziona la password da
un sottoinsieme ristretto di possibili valori – password. Quindi invece di
provare tutte le possibili password (come accade nella
forza bruta) si provano le parole di uno o più dizionari e variazioni di queste
definite da regole ben precise. Una regola è semplicemente un template (cioè un modello generico, uno stampino) che permette di
specificare una trasformazione di una parola. Le regole rendono l’attacco molto più flessibile
perché permettono di generare molte altre possibili password a partire ad
esempio dalle parole presenti in un dizionario. Dunque
in definitiva sono due gli ingredienti fondamentali di un attacco a dizionario:
dizionari e regole. Scegliere i dizionari giusti e le regole
adeguate sono fattori determinati per il successo di un attacco di questo
genere.
L’attacco a dizionario è molto più efficiente
di quello a forza bruta però il successo dell’attacco non è garantito. Bisogna
trovare un compromesso tra l’efficienza e l’efficacia dell'attacco perché
all’aumentare della dimensione del dizionario e del numero di regole aumenta la
probabilità di individuare una password ma allo stesso tempo aumenta la
complessità temporale dell’attacco.