La Password
"Non rivelare la tua password a nessuno!"
Ok, direi che questo è chiaro a tutti.
La protezione della password va ben oltre la semplice segretezza, anche se il Phishing resta la principale minaccia.
Per capire meglio come scegliere una password corretta bisogna comprenderne almeno in parte il funzionamento e i fattori che possono minacciarla.
Le password vengono criptate utilizzando un algoritmo di hashing one-way, ovvero un algoritmo che permette di codificare facilmente una stringa (serie di caratteri) ma rende praticamente impossibile l'operazione opposta, cioè risalire dall'hash (la stringa criptata) al plain text (la password).
Ogni volta che si crea l'hash di una specifica parola con uno specifico algoritmo il risultato sarà sempre uguale.
Ad esempio l'hash della parola password generato dall'algoritmo md5 è: 5f4dcc3b5aa765d61d8327deb882cf99
Quando inserite la vostra password per la prima volta essa viene salvata nella sua forma criptata.
Successivamente, quando la utilizzate per accedere, viene criptata nuovamente e confrontata con la versione salvata, se i due hash corrispondono la vostra password è corretta.
Questo sistema sembra apparentemente sicuro, ma così non è.
Risalire dall'hash alla password tramite funzioni matematiche è estremamente difficile ma esistono 3 metodi molto più semplici:
1) le Rainbow Tables sono enormi tabelle contenenti le corrispondenze plaintext-hash accessibili a chiunque nel web, ad esempio http://www.md5online.org.
Se la vostra password è contenuta in una rainbow table risalire al plaintext dall'hash è questione di un istante.
2) Un attacco BruteForce ad un hash consiste nel generare tutte le possibili combinazioni di caratteri (A, B, C ... AA, AB, AC ... ABA, ABB, ABC ...), cifrarle con un algoritmo di hashing per poi confrontarle con l'hash da crackare.
3) Un Dictionary attack a differenza del bruteforce prende le stringhe da cifrare e confrontare da un dizionario velocizzando enormemente il processo ma tralasciando tutte le combinazioni casuali.
Per proteggere la propria password è quindi necessario scegliere una parola, o ancora meglio frase, che non sia comune o di senso compiuto. Questo porta le possibilità che sia contenuta in una rainbow table o in un dizionario praticamente a zero.
L'unico modo per difendersi da un bruteforce è scegliere una password lunga e contenente lettere, numeri e caratteri speciali.
La semplice scelta di un carattere speciale, come % ad esempio, può far fallire la stragrande maggioranza dei bruteforce. Un attaccante generalmente tenta utilizzando solamente stringhe di lettere o alfanumeriche, magari con la lettera iniziale maiuscola.
Aumentando la lunghezza e il pool di caratteri utilizzato per generare le stringhe il tempo per l'operazione aumenta esponenzialmente (a volte richiedendo decenni). La sola idea che la password sia complessa è sufficiente a scoraggiare un attaccante (o incoraggiarlo a cambiare metodo...).
E' altrettanto importante evitare pattern prevedibili, ad esempio una cifra di 2 o 4 caratteri (tipica data di nascita) alla fine della password in quanto i tool utilizzati per il cracking prevedono impostazioni per modificare le stringhe seguendo dei pattern.
Ad esempio è comune testare parola, parola19xy, parola9xy, parolaxy dove xy sono numeri da 0 a 9.