Quale scopo di sicurezza servono gli hash dei file?

10

Molti siti Web che offrono download forniscono anche gli hash MD5 o SHA1 dei file che sono disponibili per il download.

Un esempio -

Qual è lo scopo di sicurezza dietro la fornitura di una simile struttura all'utente finale?

    
posta pnp 25.03.2013 - 06:26
fonte

4 risposte

8

Una funzione di hash crittografica è una funzione che tutti possono calcolare in modo efficiente (non c'è nulla di segreto a riguardo) e offre alcune caratteristiche interessanti:

  • Accetta come input una sequenza dei suoi (o byte) di lunghezza arbitraria (in pratica senza alcun limite superiore).
  • Il suo output ha dimensioni fisse e ridotte (128 bit per MD5, 160 bit per SHA-1).
  • È deterministico (hash lo stesso input due volte, possibilmente con macchine o implementazioni diverse, e otterrai sempre lo stesso output due volte).
  • È talmente intricato che resiste a collisioni , pre-immagini e seconde pre-immagini .

Per lo scenario in questione, le collisioni non sono un problema. La resistenza di preimage riguarda l'impossibilità di trovare un messaggio m che, quando sottoposto a hash, produce un dato risultato. La seconda resistenza di preimage è simile: si conosce un messaggio m che, quando è sottoposto a hashing, restituisce un output x e non si riesce a trovare un altro messaggio < em> m ' (distinto da m ) che produce lo stesso output. L'impossibilità di raggiungere questa impossibilità è un argomento piuttosto complesso (vedi questo ).

La dimensione di output ridotta è la ragione per cui li utilizziamo per i download. Se si ottiene l'hash MD5 da una fonte attendibile (il sito Web SSL del publisher), è possibile scaricare i dati effettivi da qualsiasi luogo, ad es. una rete P2P come BitTorrent . Una volta che hai i dati, lo hai cancellato (su il tuo computer) e poi controlla che il valore hash MD5 o SHA-1 corrisponda a quello che hai ottenuto dalla fonte attendibile. In una partita, sai che hai il file giusto, fino all'ultimo bit, perché, per nutrirti di un file alterato pur mantenendo il giusto valore hash, un malintenzionato attaccante dovrebbe rompere la seconda resistenza di preimage della funzione di hash e, al momento, nessuno sa come farlo.

Se si scarica il file dalla stessa origine del valore hash, il valore hash è praticamente inutile. Il valore aggiunto per la sicurezza dell'MD5 o SHA-1 pubblicato si trova nella situazione in cui i dati bulk sono ottenuti tramite un mezzo "debole", mentre il valore hash viene trasferito in modo sicuro.

Anche i valori di hash sono ottimi per rilevare errori. Hanno lo scopo di resistere alle modifiche dei dati da parte di aggressori intelligenti che sanno cosa stanno facendo; questo li rende anche robusti contro l'alterazione casuale da un universo senza mente. Le funzioni di hash sono checksum molto buoni. Se scarichi un grosso file, dici un'immagine ISO, masterizzalo su un DVD, poi rileggi il DVD su qualche altra macchina, quindi c'è ampio spazio per alterazioni non dannose, in particolare RAM cattiva su entrambe le macchine (i bit capovolti si verificano più spesso del solito assunto). In qualsiasi momento, puoi ricalcolare l'hash sui dati e vedere se corrisponde al valore previsto.

    
risposta data 25.03.2013 - 18:24
fonte
6

L'hash MD5 / SHA1 che viene fornito serve come checksum per verificare l'integrità del file. Soprattutto sui sistemi Linux / Unix, le utilità md5sum e sha1sum forniscono un mezzo conveniente per verificare che il file non sia stato manomesso.

Naturalmente, gli hash forniti sono utili solo SE per accertarti che l'hash non sia stato manomesso. Ciò significa che gli hash devono essere trasmessi all'utente finale in modo sicuro, forse tramite HTTPS o un canale diverso.

    
risposta data 25.03.2013 - 06:43
fonte
3
  1. Ti aiuta semplicemente a verificare l'integrità del file che stai scaricando.
  2. Gli hash vengono calcolati usando "buoni dati" e ti aiuta a controllare la corruzione dei file. I file potrebbero essere danneggiati a causa di supporti di memorizzazione errati o errori nella trasmissione.

What is the security purpose behind providing such a facility to the end-user?

C'è una possibilità che quando stai provando a scaricare un file / software un cattivo può avere successo nel fare un attacco Man In The Middle e sostituisci il software reale con una versione dannosa . Gli hash ti aiutano a essere sicuro di aver scaricato il software originale.

Negli ambienti basati su linux hai utility md5sum e sha1sum. Nel caso tu stia usando windows puoi usare qualcosa come cryptool.

    
risposta data 25.03.2013 - 07:26
fonte
3

Il punto di un hash è che se i dati cambiano, l'hash cambia. Quindi se sai che l'hash è corretto (cioè hash(data_you_have) = announced_hash ), e se sai che l'hash è buono (cioè announced_hash = hash(genuine_data) ), allora sai di avere i dati giusti ( data_you_have = genuine_data ).

Quindi, perché dovresti inviare un hash separatamente? Nel caso qualcuno potesse modificare i dati ma non l'hash. Questo ha senso se si inviano i dati attraverso un canale che ha una larghezza di banda elevata ma può essere soggetto a corruzione dei dati e l'hash attraverso un canale più affidabile ma con poca larghezza di banda.

I torrenti sono un buon esempio. Il file .torrent contiene un hash di ogni file nel torrent. Sono solo pochi kilobyte e possono essere scaricati facilmente sul web. Le parti del torrent, d'altra parte, vengono scaricate da macchine sconosciute casuali da qualche parte su Internet, di cui non si ha motivo di fidarsi. Quindi, una volta che i dati sono stati scaricati, il tuo software torrent verificherà che gli hash corrispondano e rifiutino qualsiasi pezzo il cui hash non corrisponde.

Qui, fornire separatamente gli hash sulla pagina web è un'ulteriore comodità se si ottiene il file .torrent dalla stessa fonte: in tal caso non è necessario verificare separatamente l'hash. Se ottieni il file .torrent da un'origine diversa (ad esempio un tracker), tale origine potrebbe essere essa stessa corrotta o dannosa e gli hash ti consentono di verificare che i dati scaricati siano autentici.

Se scarichi gli hash da un sito web su HTTP, devi fidarti delle seguenti parti:

  • il sito da cui stai scaricando (per fornire dati "buoni" e hash corrispondenti);
  • il tuo ISP, l'host del sito e più in generale qualsiasi infrastruttura Internet tra;
  • chiunque abbia installato software (malware) sul tuo computer, sul sito o sull'infrastruttura Internet.

Non è necessario, tuttavia, fidarsi di chiunque sia coinvolto nell'ottenere i dati effettivi: solo gli hash.

Spetta a te decidere se fidarti del sito (sia per servire dati utili e non essere interessati da malware) sia per sapere se il tuo computer è privo di malware. Per quanto riguarda l'infrastruttura di Internet, in pratica si tratta di un rischio molto basso, a meno che non si utilizzi il wifi pubblico.

Se si scaricano gli hash su un sito Web HTTPS il cui certificato è valido, si rimuove il rischio dall'infrastruttura Internet. Hai ancora bisogno di fidarti del proprietario del sito web, della tua macchina e della parte dell'infrastruttura di Internet coinvolta nella fornitura del certificato (provider di browser, autorità di certificazione).

    
risposta data 25.03.2013 - 11:47
fonte

Leggi altre domande sui tag