2011-10-19 12 views
5

Se si vuole garantire che un file è valido (untampered ed è venuto dalla corretta fonte/attesi), ci sono due cose che puoi fare: hashing e firma.hashing vs. binari firma

Per gli scopi della mia domanda, hashing significa fornire un hash del file (insieme al file) da scaricare. Il client scarica l'hash e il file, ricalcola l'hash e verifica che corrisponda all'hash scaricato; questo "prova" che il file non è stato confinato.

La firma significa utilizzare uno schema di crittografia pubblico-privato, in cui si firma il file binario con una chiave pubblica e il client utilizza la chiave privata per verificare di aver effettivamente firmato la chiave.

In base a queste definizioni, non vedo realmente quale sia il principale vantaggio della firma di qualcosa contro l'hashing. Entrambi dovrebbero dimostrare che il file non è stato manomesso.

L'unica cosa che posso vedere è che con l'hashing, un server compromesso potrebbe significare che qualcuno potrebbe anche compromettere l'hash e sostituire un binario malevolo con una chiave corrispondente; ma con uno schema pubblico-privato, finché la chiave privata rimane privata, non c'è modo di creare un file dannoso.

O mi manca qualcosa?

+0

Questa è forse una domanda migliore per http://security.stackexchange.com. –

+0

@MattBall in questo caso, si prega di nominarlo per spostarsi. – ashes999

risposta

6

La differenza è come hai detto: un hacker può aggiornare un hash per abbinare il file con manomissione, ma non può generare una firma valida.

La firma viene eseguita con la chiave privata, la verifica con la chiave pubblica. Hai detto il contrario sopra. Inoltre, viene tipicamente eseguito sull'hash del file e non sul file stesso per motivi pratici.

+0

Cosa ti impedisce di sostituire la chiave pubblica? – u0b34a0f6ae

+0

@ u0b34a0f6ae Non corrisponderà alla chiave privata utilizzata ... – Bohne

2

La firma verifica due aspetti: il file non è stato manomesso, e l'identità del firmatario. Se puoi essere sicuro che l'entità che ti dà l'hash è assolutamente l'entità che dovrebbe fornire il file, allora i due sono equivalenti. Le autorità di firma e certificazione sono un modo per garantire tale relazione di fiducia.

2

La grande differenza tra la fornitura di alcuni dati (un eseguibile un documento, qualunque) insieme a un hash e la fornitura degli stessi dati con una firma è con l'hash, sia i dati che il valore hash provengono dalla stessa posizione. Quindi, se qualcuno può compromettere uno di loro, probabilmente può anche compromettere l'altro.

Ad esempio, se riesco a hackerare il tuo server web, posso facilmente sostituire il tuo eseguibile con la mia versione e sostituire il valore di hash con l'hash corretto per il mio eseguibile.

Se si firma il file eseguibile, non è possibile produrre un'altra firma per un altro file eseguibile e sostituire la firma originale. La firma verifica sia l'hash dei dati originali (i dati non sono stati modificati dopo la firma) e che la firma è stata generata dalla chiave privata.

Naturalmente, tutto questo presuppone che le persone che ricevono il tuo eseguibile firmato abbiano ricevuto la tua chiave pubblica in un modo fidato. Se posso indurre le persone a usare la mia chiave pubblica invece della tua, allora posso hackerare il tuo sito web e sostituire il tuo eseguibile firmato con il mio. Ecco perché abbiamo le autorità di certificazione.

This page ha una panoramica di alto livello delle firme digitali.

3

Hash è un'uscita con lunghezza fissa di caratteri (o bit se rappresentati in binario) per un dato specifico passato in una funzione. Il hash è irreversibile. Il valore di hash per un dato dato è sempre lo stesso. Se un singolo bit nei dati cambia quasi l'intero hash per i dati modificati viene modificato. Il processo di calcolo di un hash è chiamato hashing.

Nella crittografia asimmetrica ogni parte comunicante ha la propria coppia di chiavi (chiave privata e chiave pubblica). Come suggerisce il nome, la chiave privata viene solitamente tenuta segreta e la chiave pubblica è condivisa. Queste chiavi sono di natura tale che, se una viene utilizzata per crittografare, l'unica altra coppia di chiavi può decifrare.

Per non ripudiare (il mittente non può negare che ha inviato il messaggio) e per autenticare l'entità specifica per ricevere i dati, la chiave pubblica è condivisa per loro in modo che possano decifrare tutto ciò che è crittografato dal mittente utilizzando la chiave privata corrispondente che è con il mittente (solo con mittente ovvero segreto) Tuttavia, notare che la riservatezza è la settimana in questo esempio poiché il mittente non lo sa e non può garantire se la chiave pubblica è stata compromessa a uno sconosciuto.

quando la chiave privata viene utilizzata per crittografare un hash, diventa quindi una firma e il processo viene chiamato firma. Questo raggiunge l'autenticità (che i dati provengono da un ragazzo genuino come chiave privata) e anche l'integrità è garantita perché il ricevitore verifica l'hash sulla ricezione dei dati decodificando l'hash utilizzando la chiave pubblica corrispondente assegnatagli dal mittente e calcolando lo stesso hash da solo e abbinandolo.