Perché alcuni software popolari utilizzano ancora md5?

21

Al giorno d'oggi nessuno osa difendere md5 per qualsiasi uso, e ovviamente non dovrebbe farlo!

Tuttavia, il software molto popolare usa ancora md5 in applicazioni come hashing delle password (sebbene non sia semplice / semplice md5 e probabilmente usi tecniche avanzate come lo stretching di salt + key). Ad esempio, ho sentito dire che Drupal CMS usa md5 e, per quanto ne so, molti altri programmi usano ancora md5. (Penso che Apache lo faccia, e forse un bel po 'di software per forum forse.)

Perché è questo? È tollerabile?

Sembra che questi siano programmi professionali e popolari con molti anni di sviluppo e sviluppatori informati.

    
posta H M 23.03.2013 - 19:41
fonte

6 risposte

30

La maggior parte degli utilizzi rimanenti di MD5 sono dovuti a sviluppatori che non conoscono ancora meglio. Se sei un lettore frequente di questo sito, imparerai presto che la funzione di hash "predefinita" da utilizzare è SHA-256; questo è ciò che i crittografi e gli organismi di standardizzazione raccomandano. Ma noterai anche un flusso apparentemente infinito di persone che desiderano utilizzare MD5 o suggerire MD5 o iniziare a porsi domande su MD5 e sono alla ricerca di una guida. Ciò significa che:

  • C'è una tradizione considerevole nell'usare MD5.
  • Le informazioni su come SHA-256 è molto meglio di MD5, non sono così diffuse.
  • La maggior parte degli sviluppatori fa sviluppo e non sono esperti in materia di sicurezza (e raramente si preoccupano molto di questo). Il "normale" metodo di sviluppo (con cui intendo il modo in cui la maggior parte degli sviluppatori lavora) è:

    1. Google risolve il problema attuale.
    2. Copia e incolla la prima soluzione dall'aspetto decente che appare in un blog casuale o in un sito Q & A.
    3. Compila, esegui.
    4. Se sembra funzionare, blog su di esso. (Opzionale)
    5. Vai al prossimo problema.

    Non è un mistero che il 95% (almeno) dei siti Web e delle relative applicazioni siano sviluppati in questo modo. Ma il Web è pieno di MD5; pertanto, la maggior parte delle applicazioni sarà anche piena di MD5 e, a causa del punto 4 sopra, il Web sarà ancora più completo di MD5.

Tieni presente che nella maggior parte dei casi, non è urgente sostituire MD5. MD5 è completamente danneggiato per quanto riguarda collisioni , ma è ancora (quasi) buono come nuovo per preimmagini ; inoltre, sembra ancora valido per l'uso in HMAC e derivati (incluso PBKDF2 ). Le collisioni non sono un problema in molti casi (e questo include l'hashing della password, il problema di MD5 per l'hashing della password non è collisione, ma velocità ). Quindi, anche se MD5 è piuttosto scaduto e non deve essere utilizzato per nuove applicazioni, molti degli usi esistenti di MD5 sono ancora ragionevolmente robusti e non garantiscono un aggiornamento di emergenza. Niente panico.

    
risposta data 23.03.2013 - 21:23
fonte
6

Le vecchie abitudini sono dure a morire. Alcune persone non sono a conoscenza o non si preoccupano che md5 sia rotto. Ci sono anche casi in cui l'utilizzo di md5 non è una vulnerabilità. md5 potrebbe essere usato per la consistenza dei dati o generare numeri casuali.

    
risposta data 23.03.2013 - 20:15
fonte
3

Penso che MD5 sia ancora usato per calcolare i checksum e convalidare i dati. Ma MD5 e SHA-1 non sono buoni candidati per le password di hashing. Sono veloci da calcolare e trovare le collisioni non è più così difficile.

    
risposta data 23.03.2013 - 19:58
fonte
3

Il software precedente può anche conservare MD5 per ragioni di compatibilità. Cioè versioni precedenti del software hanno utilizzato MD5 in dati e / o protocolli di comunicazione (a causa dell'ignoranza, o perché MD5 era ancora considerato sicuro al momento in cui il software è stato scritto). Ora la versione più recente deve supportare MD5 almeno per compatibilità con le versioni precedenti.

Potrebbero anche voler evitare il costo dell'aggiornamento di formati di file / protocolli di comunicazione per supportare più hash moderni, o anche mantenere esplicitamente la compatibilità diretta della versione precedente del software.

    
risposta data 24.03.2013 - 10:30
fonte
2

MD5 è ancora perfettamente a posto se non ti preoccupi delle collisioni nel tuo caso d'uso.

Se un consulente ti consiglia di cambiare MD5 in qualcos'altro, anche se alla tua applicazione non interessano gli attacchi di collisione (o la velocità veloce del calcolo), allora dovresti assumere un altro consulente perché non sa di cosa sta parlando circa.

È sorprendente vedere quante persone nel "settore della sicurezza" non conoscono la differenza tra attacchi di collisione, attacchi pre-immagine e secondi attacchi pre-immagine.

    
risposta data 23.03.2013 - 22:37
fonte
1

Ho digitato 'linux checksum' in google, e il 1 ° e 3 ° hit hanno 'md5' nel titolo. La ricerca di esempi ti dà la stessa cosa. Hai vecchi manuali, vecchi tutorial e un sacco di vecchi programmi open source, che sono usati come base per le persone che imparano PHP. I sapori Unix hanno il comando md5, i database hanno la funzione md5 ecc.

Si noti che molti sviluppatori PHP sono auto-apprendenti, senza background accademico, quindi gli esempi sono il modo in cui apprendono. Dopo alcuni mesi puoi anche considerare MD5 e checksum come sinonimi.

In realtà, dovresti essere felice che così tanti sviluppatori stiano utilizzando MD5 perché l'alternativa potrebbe memorizzare la password in testo semplice. Il mio collega lavorava in un progetto (sito pubblicamente disponibile) e ha scoperto che le password erano archiviate in chiaro! È un esempio di vita reale di quanto sia scarsa la percezione della sicurezza.

    
risposta data 24.03.2013 - 13:42
fonte

Leggi altre domande sui tag