Cerca nel blog

26 giugno, 2007

La funzione di hash

Una funzione molto utilizzata nell'ambito informatico è la funzione di hash.
Serve a generare un codice alfanumerico (detto digest) non invertibile, a partire da una parola o una frase. La particolarità di questa funzione è che l'input può essere lungo quanto vogliamo.
In quali modi viene utilizzato?
Ad esempio, per controllare l'integrità di un'immagine ISO che scarichiamo da internet.
Una volta scaricata l'immagine, si confronta l'hash della ISO (solitamente riportato sul sito da dove scarichiamo la ISO) e quello calcolato da noi sulla ISO scaricata. Se il risultato è differente, l'immagine è corrotta o è stata modificata.
Non a caso, la fuzione di hash viene usata anche per la firma digitale, associata a sistemi di cifratura a chiave asimmetrica.
Ma la funzione di hash viene usata anche per le password.
Ad esempio, su linux le password vengono cifrate con questa funzione e messe in un file, /etc/shadow.
Si può risalire alla password originale conoscendo l'hash?
No, non è possibile. Non c'è corrispondenza biunivoca tra il digest e il file.
Sarebbe come cercare di ricavare l'ISO originale dal suo hash, per rifarci all'esempio menzionato poc'anzi.
L'unico sistema, attualmente conosciuto, per conoscere le password cifrate con MD5, è generare un hash di parole e confrontare il risultato con quello che vogliamo "scardinare".
Un esempio pratico:
scelgo come password "pippo". Il digest di pippo mettiamo sia: bcd45671
Da bcd45671 non potrò mai risalire a "pippo".
Quindi cosa faccio?
Comincio a prendere un insieme di parole, iniziando dalla "a".
Mettiamo "abaco". L'hash risultante poniamo sia: 32aEvO0
L'unica cosa che posso fare è confrontare 32aEvO0 con bcd45671.
E' uguale? No. Allora la password non è abaco.
Faccio così per tutte le parole che compongono il dizionario, fino a trovare l'hash uguale.
Se la password scelta non è nel dizionario? Mi attacco.
Ecco perchè le password non devono mai essere di senso compiuto, o parole conosciute :-)
A questo riguardo, dei ragazzi hanno avuto un'idea geniale:
un motore di ricerca per md5 :-)
Si chiama md5oogle (vi suona familiare? :-)
Lì inserite l'hash che volete conoscere, ed in meno di un secondo troverete la parola originale.
md5oogle ha nel suo database oltre 6,345,876 hash.
Magari, tra quelli, c'è proprio l'hash che ti occorre.....:-)

Il sito lo trovate su www.md5oogle.com

Buona ricerca...

1 commento:

Matthew ha detto...

Bella ciccio, interessante questa cosa, ho memorizzato il link forse mi potrà essere utile.