![Ecco una serie completa di MD5, hashing e una piccola panoramica dei computer e della crittografia.](img/web-culture/537/what-all-this-md5-hash-stuff-actually-means.png)
In un recente articolo su come verificare se sei stato colpito dall'incidente di hacking di Gawker Come scoprire se il tuo indirizzo email è stato trapelato dal database di Gawker Come scoprire se il tuo indirizzo email è stato trapelato dal database di Gawker Ulteriori informazioni, uno dei passaggi necessari per la conversione del tuo indirizzo email in un hash MD5.
Abbiamo avuto alcune domande da parte dei lettori che chiedevano esattamente cosa stesse succedendo e perché questo processo fosse necessario. Non è il nostro stile lasciare che voi ragazzi facciate domande, quindi ecco una serie completa di MD5, hashing e una piccola panoramica dei computer e della crittografia.
Hashing crittografico
MD5 è l'acronimo di M essage D igest algorithm 5, ed è stato inventato dal famoso crittografo statunitense Professor Ronald Rivest nel 1991 per sostituire il vecchio standard MD4. MD5 è semplicemente il nome di un tipo di funzione di hashing crittografica che Ron ha inventato, nel lontano '91.
L'idea alla base dell'hash crittografico consiste nel prendere un blocco arbitrario di dati e restituire un valore di "hash" a dimensione fissa. Può essere qualsiasi dato, di qualsiasi dimensione ma il valore di hash verrà sempre corretto. Provalo tu stesso qui.
L'hashing crittografico ha un numero di usi e ci sono un gran numero di algoritmi (diversi da MD5) progettati per svolgere un lavoro simile. Uno degli usi principali dell'hash crittografico è la verifica del contenuto di un messaggio o di un file dopo il trasferimento.
Se hai mai scaricato un file particolarmente grande (distribuzioni Linux, quel genere di cose) probabilmente avrai notato il valore hash che lo accompagna. Una volta scaricato questo file, è possibile utilizzare l'hash per verificare che il file scaricato non sia diverso dal file pubblicizzato.
Lo stesso metodo funziona per i messaggi, con l'hash che verifica che il messaggio ricevuto corrisponda al messaggio inviato. A un livello molto semplice, se tu e un amico avete un file di grandi dimensioni ciascuno e desiderate verificare che sono esattamente gli stessi senza il trasferimento pesante, il codice hash lo farà per voi.
Anche gli algoritmi di hash giocano un ruolo nell'identificazione dei dati o dei file. Un buon esempio di ciò sono le reti di condivisione di file peer to peer, come eDonkey2000. Il sistema utilizzava una variante dell'algoritmo MD4 (di seguito ) che combinava anche le dimensioni del file in un hash per indirizzare rapidamente i file sulla rete.
Un esempio significativo di questo è la possibilità di trovare rapidamente i dati nelle tabelle hash, un metodo comunemente usato dai motori di ricerca.
Un altro uso per gli hash è nella memorizzazione delle password. Memorizzare le password come testo in chiaro è una cattiva idea, per ovvi motivi, quindi vengono convertiti in valori hash. Quando un utente immette una password, viene convertita in un valore hash e confrontata con l'hash memorizzato noto. Poiché l'hashing è un processo unidirezionale, a condizione che l'algoritmo sia valido, vi sono in teoria poche possibilità che la password originale venga decifrata dall'hash.
L'hashing crittografico viene spesso utilizzato anche nella generazione di password e password derivate da una singola frase.
Algoritmo del digest del messaggio 5
La funzione MD5 fornisce un numero esadecimale a 32 cifre. Se dovessimo trasformare "makeuseof.com" in un valore di hash MD5, sembrerebbe: 64399513b7d734ca90181b27a62134dc . È stato costruito su un metodo chiamato Merkle "" Damgà ¥ rd structure ( sotto ), che viene usato per costruire quelle che sono conosciute come funzioni di hash "a prova di collisione".
Nessuna sicurezza è a prova di tutto, tuttavia e nel 1996 sono stati rilevati potenziali difetti all'interno dell'algoritmo di hashing MD5. All'epoca questi non erano considerati fatali e MD5 continuava a essere utilizzato. Nel 2004 è stato scoperto un problema molto più serio dopo che un gruppo di ricercatori ha descritto come fare in modo che due file separati condividessero lo stesso valore di hash MD5. Questa è stata la prima istanza di un attacco di collisione utilizzato contro l'algoritmo di hashing MD5. Un attacco di collisione tenta di trovare due output arbritari che producono lo stesso valore di hash - quindi, una collisione (due file esistenti con lo stesso valore).
Nel corso dei prossimi anni si sono verificati ulteriori problemi di sicurezza all'interno di MD5 e nel 2008 un altro gruppo di ricerca è riuscito a utilizzare il metodo di attacco di collisione per falsificare la validità del certificato SSL. Questo potrebbe ingannare gli utenti nel pensare che stiano navigando in sicurezza, quando non lo sono. Il Dipartimento della sicurezza nazionale degli Stati Uniti ha annunciato che: "gli utenti dovrebbero evitare di utilizzare l'algoritmo MD5 in qualsiasi capacità. Come ha dimostrato la ricerca precedente, dovrebbe essere considerato crittograficamente rotto e inadatto per un ulteriore utilizzo ".
Nonostante l'avvertimento del governo, molti servizi usano ancora MD5 e in quanto tali sono tecnicamente a rischio. È comunque possibile "salare" le password, per prevenire potenziali aggressori che utilizzano attacchi di dizionario (test di parole conosciute) contro il sistema. Se un hacker ha un elenco di password casuali spesso utilizzate e il proprio database degli account utente, possono controllare gli hash nel database confrontandoli con quelli presenti nell'elenco. Salt è una stringa casuale, che è collegata agli hash delle password esistenti e quindi nuovamente hash. Il valore salt e l'hash risultante vengono quindi memorizzati nel database.
Se un hacker voleva scoprire le password dei tuoi utenti, allora avrebbe bisogno di decifrare gli hash di sale prima, e questo rende un attacco al dizionario piuttosto inutile. Salt non influisce sulla password stessa, quindi devi sempre scegliere una password difficile da indovinare.
Conclusione
MD5 è uno dei molti metodi di identificazione, protezione e verifica dei dati. L'hashing crittografico è un capitolo fondamentale nella storia della sicurezza e mantiene le cose nascoste. Come con molte cose progettate pensando alla sicurezza, qualcuno se n'è andato e l'ha rotto.
Probabilmente non dovrai preoccuparti troppo dell'hashing e dei checksum MD5 nelle tue abitudini di navigazione quotidiane, ma almeno ora sai cosa fanno e come lo fanno.
Hai mai avuto bisogno di hash qualcosa? Verifica i file che scarichi? Conosci qualche buona web app MD5? Fateci sapere nei commenti!
Immagine introduttiva: Shutterstock