So che SHA-256 è preferito rispetto a MD5 per la sicurezza, ecc., Ma, se devo usare un metodo per controllare solo l'integrità dei file (cioè niente a che fare con la crittografia delle password, ecc.), C'è qualche vantaggio di usando SHA-256?
Poiché MD5 è a 128 bit e SHA-256 è a 256 bit (quindi due volte più grande) ...
Ci vorrà fino al doppio del tempo per crittografare?
Dove il tempo non è essenziale, come in un programma di backup, e l'integrità del file è tutto ciò che è necessario, qualcuno potrebbe obiettare contro MD5 per un algoritmo diverso o addirittura suggerire una tecnica diversa?
L'uso di MD5 produce un checksum?
Sia SHA256 che MDA5 sono algoritmi di hashing. Prendono i dati di input, in questo caso il file, e restituiscono un numero di 256/128-bit. Questo numero è un checksum. Non c'è nessuna crittografia perché un numero infinito di input può produrre lo stesso valore hash, sebbene in realtà le collisioni siano rare.
SHA256 impiega un po 'più di tempo per calcolare rispetto a MD5, secondo questa risposta .
A dir poco, direi che MD5 sarebbe probabilmente adatto a ciò di cui hai bisogno.
A 1): Sì, sulla maggior parte delle CPU, SHA-256 è solo il 40% più veloce di MD5.
A 2): In questo caso, discuterò per algoritmi diversi da MD5. Preferirei sicuramente un algoritmo considerato sicuro. Tuttavia, questo è più un sentimento. Casi in cui ciò sarebbe importante piuttosto che realistico, ad es. se il tuo sistema di backup rileva un caso esemplificativo di un attacco su un certificato MD5, è probabile che tu abbia due file in questo esempio con dati diversi, ma checksum MD5 identici. Per il resto dei casi, non importa, perché i checksum MD5 hanno una collisione (= stessi checksum per dati diversi) virtualmente solo quando provocati intenzionalmente . Non sono un esperto dei vari hashing (generazione di checksum) algoritmi, quindi non posso suggerire un altro algoritmo. Quindi questa parte della domanda è ancora aperta. La lettura suggerita è Funzione hash crittografica - Identificatore di file o dati su Wikipedia. Inoltre, in basso in quella pagina c'è un elenco di algoritmi di hash crittografici.
A 3): MD5 è un algoritmo per calcolare i checksum. Un checksum calcolato usando questo algoritmo viene quindi chiamato checksum MD5.
Ogni risposta sembra suggerire che è necessario utilizzare hash sicuri per svolgere il lavoro, ma tutti questi sono regolati per essere lenti per costringere un aggressore di bruteforce ad avere molta potenza di calcolo e, a seconda delle esigenze, questa potrebbe non essere la soluzione migliore.
Ci sono algoritmi progettati specificamente per i file hash il più velocemente possibile per verificare l'integrità e il confronto (murmur
, XXhash
...). Ovviamente questi non sono progettati per la sicurezza in quanto non soddisfano i requisiti di un algoritmo di hash sicuro (vale a dire la casualità) ma hanno bassi tassi di collisione per i messaggi di grandi dimensioni. Queste caratteristiche li rendono ideali se non si sta cercando sicurezza ma velocità.
Esempi di questo algoritmo e confronto possono essere trovati in questa eccellente risposta: Quale algoritmo di hashing è il migliore per unicità e velocità? .
Ad esempio, nel nostro sito di domande e risposte utilizziamo murmur3
per cancellare le immagini caricate dagli utenti in modo che le archiviamo una sola volta anche se gli utenti caricano la stessa immagine in più risposte.
Tutto sommato, direi che MD5 oltre al nome del file è assolutamente sicuro. SHA-256 sarebbe solo più lento e difficile da gestire a causa delle sue dimensioni.
Si potrebbe anche usare qualcosa di meno sicuro di MD5 senza alcun problema. Se nessuno tenta di compromettere l'integrità del tuo file, anche questo è sicuro.
L'algoritmo MD5 sottostante non è più considerato sicuro, quindi mentre md5sum è adatto per l'identificazione di file noti in situazioni non correlate alla sicurezza, non dovrebbe essere invocato se esiste la possibilità che i file siano stati manipolati intenzionalmente e maliziosamente. In quest'ultimo caso, l'uso di uno strumento di hashing più recente come sha256sum è altamente raccomandato.
Quindi, se stai semplicemente cercando di verificare la presenza di corruzione di file o differenze di file, quando l'origine del file è attendibile, MD5 dovrebbe essere sufficiente. Se stai cercando di verificare l'integrità di un file proveniente da una fonte non affidabile, o da una fonte attendibile su una connessione non crittografata, MD5 non è sufficiente.
Un altro commentatore ha notato che Ubuntu e altri usano checksum MD5. Ubuntu è passato a PGP e SHA256, oltre a MD5, ma la documentazione delle strategie di verifica più forti è più difficile da trovare. Vedi la pagina HowToSHA256SUM per maggiori dettagli.
È tecnicamente approvato che MD5 sia più veloce di SHA256, quindi basta verificare l'integrità dei file che sarà sufficiente e migliore per le prestazioni.
Sei in grado di controllare le seguenti risorse:
Hashing felice!