MD5 vs SHA: Quale Algoritmo Hash Usare?
Scegliere l'algoritmo hash giusto dipende dal tuo caso d'uso. Questa guida confronta le opzioni comuni e ti aiuta a fare la scelta giusta.
Confronto di Sicurezza
MD5 è stato considerato crittograficamente compromesso dal 2004, quando i ricercatori hanno dimostrato attacchi di collisione pratici. Un attaccante può creare due input diversi che producono lo stesso hash MD5. Questo è devastante per le applicazioni di sicurezza—possono essere creati certificati falsi e l'integrità dei file può essere falsificata. SHA-1 è stato ufficialmente compromesso nel 2017, quando Google ha dimostrato una collisione tra due file PDF diversi. L'attacco ha richiesto un enorme sforzo computazionale (6.500 anni di tempo CPU), ma diventa sempre più pratico. La maggior parte dei browser e delle autorità di certificazione non accetta più certificati SHA-1. SHA-256 rimane sicuro senza attacchi pratici. Come parte della famiglia SHA-2, progettata dalla NSA e pubblicata dal NIST, è stato sottoposto a scrutinio pubblico dal 2001 senza debolezze significative. È lo standard attuale per la maggior parte delle applicazioni crittografiche. SHA-512 offre un margine di sicurezza maggiore di SHA-256. Mentre entrambi sono attualmente sicuri, SHA-512 fornisce buffer aggiuntivo contro futuri progressi crittoanalitici. Alcuni protocolli lo richiedono specificamente.
Differenze di Prestazioni
MD5 è il più veloce degli algoritmi hash comuni. Il suo output a 128 bit richiede meno calcoli. Per casi d'uso non di sicurezza come checksum o tabelle hash, questa velocità può essere rilevante. SHA-1 è leggermente più lento di MD5, ma ancora veloce. Il digest a 160 bit richiede cicli di calcolo aggiuntivi. Nella maggior parte delle applicazioni, la differenza di prestazioni è trascurabile. SHA-256 richiede più calcoli di MD5 o SHA-1. Tuttavia, le CPU moderne lo elaborano ancora a diverse centinaia di megabyte al secondo. Per la stragrande maggioranza delle applicazioni, le prestazioni non sono un problema. SHA-512 può essere sorprendentemente più veloce di SHA-256 su processori a 64 bit. Il suo design sfrutta operazioni a 64 bit, mentre SHA-256 è ottimizzato per 32 bit. Su sistemi a 64 bit, SHA-512 spesso supera SHA-256. In pratica, tutti questi algoritmi sono abbastanza veloci per i casi d'uso tipici. Scegli in base ai requisiti di sicurezza, non alle prestazioni, a meno che tu non stia elaborando enormi quantità di dati.
Raccomandazioni per Caso d'Uso
Per l'archiviazione delle password, non usare nessuno di questi direttamente. Usa bcrypt, scrypt o Argon2, che sono specificamente progettati per l'archiviazione delle password con lentezza intenzionale e salting integrato. Questi algoritmi rendono impraticabili gli attacchi brute-force. Per l'integrità dei file, usa SHA-256. Verifica i download contro checksum SHA-256 pubblicati. SHA-256 fornisce forte garanzia che il file non sia stato manomesso o corrotto. Per le firme digitali, usa SHA-256 o SHA-512. Gli standard di firma moderni richiedono algoritmi della famiglia SHA-2. Le firme più vecchie con MD5 o SHA-1 dovrebbero essere migrate. Per i commit Git e identificatori non critici, SHA-1 è accettabile. Git sta migrando a SHA-256, ma per identificatori di commit dove le collisioni sarebbero evidenti, SHA-1 è praticamente sicuro. Per checksum e deduplicazione dove la sicurezza non è critica, anche MD5 è accettabile. Se stai confrontando file noti e benigni per duplicati, la velocità di MD5 e la lunghezza hash breve sono pratiche. Per tutto il resto, SHA-256 è la scelta sicura predefinita. È supportato ovunque, dimostrato sicuro ed efficiente abbastanza per qualsiasi applicazione.
Prova lo Strumento
Generatore di Hash