Le password di accesso ad un servizio, di solito (!) non vengono memorizzate in chiaro, per ovvi motivi di sicurezza. Ne viene archiviata la versione “trasformata” secondo un algoritmo, (hash) preferibilmente one way. All’atto dell’autenticazione la password inserita verrà trasformata secondo lo stesso algoritmo di hashing e confrontata con la versione archiviata: se sono uguali viene concessa l’autorizzazione.
Detto in soldoni:)
Come si fa a crackare una password?
Con lo stesso procedimento. Si genera l’hash e lo si controlla al volo. Lo si può fare basandosi su un dizionario che comprenda i termini più comuni, o per brute force, ovvero generando parole da combinazioni di caratteri scelti a discrezione.
Ridetto in soldoni.
E non è un problema solo da ragazzino idiota che gioca a fare il cracker, anche a chi si occupa di sicurezza è necessario un sistema di auditing delle password efficiente!
Il problema è che nel generare la possibile password e confrontarla, il tempo macchina, specialmente per password lunghe e/o complesse è spesso misurabile sulla vita di una sequoia.. Come ovviare al problema?
Perchè cifrare ogni volta tutte le possibili combinazioni fino a ricavare l’hash corrispondente alla password cercata?
Se avessi anzitempo criptato e memorizzato ogni combinazione possibile, potrei molto più velocemente eseguire una ricerca nel mio archivio e trovare l’hash corrispondente, risparmiando notevole tempo; infatti il maggior spreco di cpu è proprio nella codifica ripetuta delle password, non nel confronto.
Però un archivio tale da contenere tutti gli hash frutto delle combinazioni alfanumeriche di password sufficentemente lunghe supererebbe le decine di terabyte…
Ecco intervenire le Rainbow Tables, nate da Philippe Oechslin, un esperto in sicurezza, che ha ideato un procedimento per ridurre un archivio di hash in una tabella molto più piccola.
Ecco, bene, ma adesso che lo so che faccio? Comunque per generarmi le Rainbow Tables necessito di un elaboratore superpotente…
Ma nooo! C’è ovviamente qualcuno che lo ha fatto già per te!
Distributed rainbow tables project: Md5, LM, NTLM hashes
Shmoo group: LM hashes (torrent)
Hak5: LM hashes (torrent)