it-swarm.dev

Perché alcuni software popolari usano ancora md5?

Oggi nessuno osa difendere md5 per nessun uso, e ovviamente non dovrebbero!

Tuttavia, molti software molto popolari usano ancora md5 in applicazioni come l'hash della password (anche se non è semplice/semplice md5 e probabilmente utilizza tecniche avanzate come il salt + key stretching). Ho sentito, ad esempio, che il 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 si tratti di programmi professionali e popolari con molti anni di sviluppo e sviluppatori informati.

23
H M

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

  • C'è una tradizione considerevolmente pesante di usare MD5.
  • Le informazioni su come SHA-256 è molto meglio di MD5, non sono così diffuse.
  • Molti sviluppatori fanno sviluppo e non sono esperti di sicurezza (e raramente si preoccupano molto di questo). Il metodo di sviluppo "normale" (intendo come funziona la maggior parte degli sviluppatori) è:

    1. Google il problema attuale.
    2. Copia e incolla la prima soluzione dall'aspetto decente che appare in qualche blog o sito di domande e risposte a caso.
    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 applicazioni correlate 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ù pieno di MD5.

Si noti che nella maggior parte dei casi, non vi è alcuna urgenza di sostituire MD5. MD5 è completamente rotto rispetto a collisioni , ma è ancora (quasi) come nuovo per preimages; 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'hash della password; il problema di MD5 per l'hash della password non è la collisione, ma velocità). Pertanto, sebbene MD5 sia ormai passato agli inizi e non debba essere utilizzato per nuove applicazioni, molti degli usi esistenti di MD5 sono ancora ragionevolmente robusti e non richiedono aggiornamenti di emergenza. Niente panico.

31
Tom Leek

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

6
rook

Penso che MD5 sia ancora utilizzato per il calcolo di checksum e la convalida dei dati. Ma MD5 e SHA-1 non sono buoni candidati per le password di hashing. Sono veloci da calcolare e trovare collisioni non è più così difficile.

3
Alistair

Il software precedente potrebbe anche conservare MD5 per motivi di compatibilità. Cioè le versioni precedenti del software utilizzavano MD5 nei protocolli di dati e/o comunicazione (a causa dell'ignoranza o perché MD5 era ancora considerato sicuro al momento della stesura del software). Ora la versione più recente deve supportare MD5 almeno per compatibilità con le versioni precedenti.

Potrebbero anche voler evitare i costi di aggiornamento dei formati di file/protocolli di comunicazione per supportare hash più moderni o addirittura mantenere esplicitamente la compatibilità con la versione precedente del software.

3
oefe

MD5 è ancora perfettamente funzionante se non ti interessano le collisioni nel tuo caso d'uso.

Se un consulente ti consiglia di cambiare MD5 in qualcos'altro, anche se la tua applicazione non si preoccupa degli attacchi di collisione (o della rapida velocità di calcolo), allora dovresti assumere un altro consulente perché non sa di cosa sta parlando.

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

2
AnroidSec

Ho digitato "checksum linux" in google e il primo e il terzo colpo hanno "md5" nel titolo. Navigare per gli esempi ti dà lo stesso. Hai vecchi manuali, vecchi tutorial e molti vecchi programmi open source, che vengono utilizzati come base per le persone che imparano PHP. I sapori Unix hanno il comando md5, i database hanno la funzione md5 ecc.

Nota che molti PHP sono autoapprendimento, senza background accademico, quindi gli esempi sono il modo in cui apprendono. Dopo alcuni mesi puoi persino considerare MD5 e checksum come sinonimi.

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

1
Danubian Sailor