Attacchi al database delle password 

Una volta ottenuta una copia del database delle password, tipicamente si praticano due possibili attacchi:

·         Attacchi a forza bruta

·         Attacchi a dizionario

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

 

Attacchi a forza bruta

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

 

Attacchi a dizionario

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.