Decriptare gli hash
Molti hanno già un'idea di cosa siano le funzioni di hash, in sostanza si tratta di particolari algoritmi che trasformano qualsiasi file in una stringa di caratteri di lunghezza fissa.La lunghezza della stringa dipende dalla funzione di hash impiegata, ad esempio per crc32 è un intero a 32 bit (solitamente tutte le funzioni di hash sono scritte come stringhe in esadecimale quindi crc32 è rappresentabile con 8 caratteri), mentre per MD5 la lunghezza è di 32 caratteri .
Qualsiasi sia la funzione di hash utilizzata, tutte godono della proprietà di non essere invertibili, ovvero se ad ogni file corrisponde una stringa è matematicamente impossibile dalla stringa risalire al file.
Ma dove sono impiegate le funzioni di hash? Ad esempio sono utilizzate nell'autenticazione degli utenti che accedono ad un sito web con password e username, infatti le password non sono memorizzate in chiaro ma criptate con una funzione di hash.Quando un utente fa il login , il sistema applica la funzione di hash alla password che l'utente inserisce e la confronta con quella contenuta nel database delle password, se queste corrispondono allora valida l'autenticazione.In questo modo nessuno, oltre l'utente, è a conoscenza della password e teoricamente impossessarsi della password criptata non serve a nulla.Quando dicevo che ad ogni file corrisponde un hash differente in realtà non sono stato molto preciso, allo stesso hash possono corrispondere più file, questi casi sono detti "collisioni". Del resto per capire bene il concetto delle collisioni analizziamo il caso dell' MD5,questa funzione può dare origine a circa 340 miliardi di miliardi di combinazioni, resta comunque il fatto che i file in ingresso possono essere un numero infinito quindi necessariamente qualcuno avrà lo stesso hash di qualcun altro.Ovviamente riuscire ad impossessarsi del file contenente le password criptate con una funzione di hash, e riuscire a decriptarlo vorrebbe dire avere identificato tutte le password in esso contenute.
Tuttavia la funzione non è invertibile, quindi l'unico metodo sicuro è il bruteforce , provare tutte le combinazioni possibili in ingresso per ottenere in uscita un hash identico.Negli ultimi anni sono usciti molti programmi che decriptano gli hash facendo ricorso alla potenza di calcolo delle GPU in quanto queste sono molto più potenti dei microprocessori in questo genere di calcoli, uno di questi è "Extreme GPU bruteforcer" che potete trovare a questo indirizzo http://www.insidepro.com/eng/egb.shtml , con una scheda grafica NVIDIA GTS250 riesce a testare 426 milioni p/s su l'algoritmo MD5! Quindi, password con pochi caratteri, sono identificate in decine di minuti o poche ore.