Normalmente conosci la funzione hash dal contesto. Se stai tentando di decifrare una password, questa password è preziosa per te, in quanto ti consente di accedere ad alcuni dati o servizi da qualche parte, target specificamente . Quindi si deve presumere che si conosca già il tipo di sistema (in particolare se si è riusciti a catturare un elenco di password con hash da un database, quindi ha visto il database), e questo include spesso la conoscenza di la funzione di hashing della password. Inoltre, nei sistemi che supportano diversi tipi di funzioni di hash (come il file /etc/shadow
sui sistemi Unix), il tipo di hash è codificato lungo il valore hash, perché, per sua natura, il sistema stesso deve saperlo.
Ricorda che le password hash sono destinate ad essere utilizzate da qualche software, da qualche parte, che esiste come file eseguibile e codice sorgente. In generale, il software non può essere considerato segreto e il reverse engineering è abbastanza efficace per scoprire il tipo di elaborazione che viene eseguita sui dati.
Per Windows, le password tendono ad essere elaborate con due funzioni hash, il vecchio LM (LanMan) e il più recente NT Hash (che è MD4 ). C'è anche un "verificatore di password" usato in alcune parti, che è "salato" con il nome utente (non un buon sale, in realtà: ogni "Amministratore" è chiamato "Amministratore"). Vedi questa pagina per i dettagli. LM hash è estremamente debole ed è stato usato come banco di prova per dimostrare l'efficacia delle tavole arcobaleno; fortunatamente, è disabilitato di default nei sistemi più recenti (dal momento che Vista). Tuttavia, l'hash NT è ancora piuttosto debole (non così abissale come LM, ma comunque) poiché è molto veloce (una singola invocazione MD4 ...) e non salato (rendendo così utile la creazione di tabelle precalcolate, come le tabelle arcobaleno) .