Cos’è un Attacco Brute Force?
Il metodo di attacco Brute Force consiste nel provare tutte le combinazioni teoricamente possibili fino a trovare quella corretta. Per esempio, questo metodo può essere usato per trovare la chiave di un sistema di protezione che impiega un cifrario, oppure per trovare la password di accesso ad un sistema.
Questo metodo fornisce la certezza matematica di trovare la soluzione. Il problema sta nel tempo che deve essere impiegato!
Cerchiamo di capire meglio. Supponiamo di avere una password lunga 6 caratteri. Il numero di combinazioni possibili che si hanno sono 56.800.235.584, che possiamo ottenere prendendo in considerazione i seguenti caratteri:
Lettere maiuscole:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z -> 26 caratteri
Lettere minuscole:
a b c d e f g h i j k l m n o p q r s t u v w x y z -> 26 caratteri
Numeri:
0 1 2 3 4 5 6 7 8 9 -> 10 interi
per un totale di 62 caratteri. Quindi 62^6=56.800.235.584 combinazioni possibili.
Se scegliessimo una password di 8 caratteri avremo 62^8=218.340.105.584.896 combinazioni possibili.
In pratica, lo spazio delle chiavi aumenta esponenzialmente con la lunghezza della chiave (come O(2^n), per la precisione) quindi scegliendo una password di 8 caratteri anzichè di 6 aumenteremo a dismisura la sicurezza dei nostri dati.
Proviamo a fare qualche conto. Considerando che un computer dotato di un processore a 1.4GHz riesce a generare circa 2 milioni di password al secondo (in locale) abbiamo:
56.800.235.584/2.000.000= 28.400 secondi
28.400 secondi/ 60 = 473 minuti
473 minuti/60 = 8 ore circa
Questo è il tempo massimo richiesto per trovare la soluzione della password a 6 caratteri, cioè nel caso in cui la soluzione venga trovata all’ultimo tentativo possibile. In realtà, statisticamente parlando, la soluzione verrà trovata nella metà del tempo.
Con la password a 8 caratteri invece:
218.340.105.584.896/2.000.000=109.170.052 secondi
109.170.052 secondi/3600=30.325 ore
30.325 ore /24=1.263 giorni che sono quasi 3 anni 3 mezzo!
Ma possiamo fare ancora di meglio per difenderci da un attacco Brute Force, infatti al momento abbiamo preso in considerazione solo i caratteri che normalmente usiamo per formare una comune parola del vocabolario italiano.
In fin dei conti la password ce la dobbiamo ricordare, quindi ci viene naturale usare parole comuni, oppure nomi come quello del piccolo animale che abbiamo in casa…una password lunga, composta da lettere, numeri e magari anche simboli sarebbe invece molto difficile da ricordare, ma sicuramente molto più robusta ad un attacco Brute Force!
Pensiamo infatti di usare per la nostra password i caratteri che l’intero codice ASCII esteso ci mette a disposizione.
Così facendo, i caratteri disponibili passano da 62 a 240. Se ripetiamo il conto fatto in precedenza con una password di soli 6 caratteri, ma composta anche da caratteri speciali, tipo & £ # § per intenderci, troviamo che ci sono 191.102.976.000.000 combinazioni possibili (240^6) e che l’ordine di grandezza in tempo, passa dalle ore che avevamo prima agli anni!
191.102.976.000.000/2.000.000=95.551.488 secondi
95.551.488 secondi/3600= 26.542 ore
26.542 ore/24= 1.106 giorni
1.106 giorni/365= 3 anni!!!!
Le password che normalmente usiamo, sono quindi molto più deboli ad attacchi Brute Force di password anche della stessa lunghezza ma che contengono caratteri speciali e non sono contemplate nel nostro vocabolario.
Un altro punto a sfavore delle password deboli ma facili da ricordare, oltre a quello visto in precedenza, è che un malintenzionato potrebbe decidere di non usare un attacco Brute Force ma un attacco a dizionario.