it-swarm-eu.dev

SHA-256 o MD5 per l'integrità dei file

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) ...

  1. Ci vorrà fino al doppio del tempo per crittografare?

  2. 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?

  3. L'uso di MD5 produce un checksum?

51
Dave

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.

57
dandan78

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.

13
Daniel S.

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.

9
Marc Climent
  1. No, è meno veloce ma non così lento
  2. Per un programma di backup è forse necessario avere qualcosa di ancora più veloce di MD5

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.

8
Genesis Rock

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.

6
jsears

È 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:

4
SaidbakR
  1. Sì, sulla maggior parte delle CPU, SHA-256 è da due a tre volte più lento di MD5, sebbene non principalmente a causa del suo hash più lungo. Vedi altre risposte qui e le risposte a questa Stack Overflow domande .
  2. Ecco uno scenario di backup in cui MD5 non sarebbe appropriato:
    • Il tuo programma di backup esegue il hashing di ogni file di cui è stato eseguito il backup. Quindi memorizza I dati di ogni file tramite il suo hash, quindi se si esegue il backup dello stesso file Due volte si finisce solo con una copia di esso.
    • Un utente malintenzionato può fare in modo che il sistema esegua il backup dei file che controlla.
    • L'utente malintenzionato conosce l'hash MD5 di un file che desidera rimuovere dal backup
    • L'utente malintenzionato può quindi utilizzare i punti deboli noti di MD5 per creare un nuovo file Che abbia lo stesso hash del file da rimuovere. Quando viene eseguito il backup di tale file, viene sostituito il file da rimuovere e il file di backup updata verrà perso.
    • Questo sistema di backup potrebbe essere rafforzato un po '(e reso più efficiente) Non sostituendo i file il cui hash ha incontrato in precedenza, ma Quindi un utente malintenzionato potrebbe impedire un file di destinazione con un hash noto da sollevando preventivamente un file fittizio appositamente costruito con lo stesso hash.
    • Ovviamente la maggior parte dei sistemi, di backup e di altro tipo, non soddisfano le condizioni .__ necessarie per questo attacco, ma volevo solo dare un esempio di una situazione in cui SHA-256 sarebbe preferibile a MD5 . Che questo sia il caso per il sistema che stai creando Dipende da molto più delle caratteristiche di MD5 e SHA-256.
  3. Sì, gli hash crittografici come quelli generati da MD5 e SHA-256 sono un tipo di checksum.

Hashing felice!

0
dharcourt