MD5 sembra avere vulnerabilità ben documentate e tuttavia rimane molto diffuso nel suo utilizzo. Qualcuno ha dei motivi per cui rimane un'opzione praticabile quando altre alternative (ad esempio SHA-2) sembrano essere più robuste?
MD5 sembra avere vulnerabilità ben documentate e tuttavia rimane molto diffuso nel suo utilizzo. Qualcuno ha dei motivi per cui rimane un'opzione praticabile quando altre alternative (ad esempio SHA-2) sembrano essere più robuste?
Risposte:
È veloce da generare e spesso il fatto che le collisioni siano teoricamente possibili non è un grosso problema. vale a dire verificare se un file memorizzato nella cache è cambiato per evitare il download di una nuova copia.
Un rapido benchmark fatto nel 1996 mostra quanto segue:
Digest Performance in MegaBytes per Second
Pentium P5 Power Mac SPARC 4 DEC Alpha
90 MHz 80 MHz 110 MHz 200 MHz
MD5 13.1 3.1 5.1 8.5
SHA1 2.5 1.2 2.0 3.3
Per un uso moderno - sui chip integrati, MD5 può essere 2-3 volte più veloce da produrre rispetto allo SHA1 per le stesse informazioni.
Un hash MD5 è "abbastanza buono" per la maggior parte delle attività umili. Ricordiamo che è ancora incredibilmente difficile produrre collisioni significative nello stesso numero di byte.
Ad esempio, supponiamo di scaricare la nuova Ubuntu 9.10 la prossima settimana da un mirror attendibile. Vuoi verificare che il file sia stato scaricato correttamente e completamente. Basta avviare MD5 e eseguire l'hashing dell'ISO. Confronta l'hash con l'hash pubblicato. Se gli hash corrispondono, puoi essere sicuro che l'ISO è stato copiato correttamente e completamente.
e la sicurezza può essere migliorata salandola.
MD5 è ampiamente usato come funzione di hash di checksum perché è veloce e presenta un rapporto di collisione estremamente basso. Un checksum MD5 è composto da 32 cifre esadecimali che insieme forniscono un 1 in probabilità ~ 3,42e34 di una collisione. In teoria, è possibile eseguire l'hashing di tutti i file di tutti i computer in un Paese delle dimensioni degli Stati Uniti e non generare una collisione (*).
Per la crittografia, MD5 è una valida alternativa se la sicurezza è solo una preoccupazione moderata. È un'opzione molto praticabile per eseguire l'hashing delle password del database o altri campi che richiedono principalmente sicurezza interna per la sua velocità, ma anche perché MD5 offre un livello ragionevole di sicurezza in cui la crittografia avanzata non è un problema.
(*) per la maggior parte degli scopi di checksum, una collisione è significativa solo se si verifica tra due oggetti di origini simili e con le stesse dimensioni. Nonostante un'alta probabilità di unicità MD5, alla fine potrebbero verificarsi collisioni tra due file molto distinti. Ad esempio, un file di database da 1,5 Mb e un file GIF da 35k. Per la maggior parte degli scopi, questa è una collisione insignificante. Ancora di più perché MD5 è solo un elemento dell'indicizzazione dei file. La dimensione del file è un'altra importante.
L'MD5 è ampiamente utilizzato perché è stato ampiamente utilizzato e le interruzioni non sono ancora abbastanza significative per essere un problema evidente nei sistemi esistenti.
sha256sum filename.iso
invece dimd5sum filename.iso
?