2010-05-14 37 views

risposta

45

La differenza principale è concettuale: mentre hash vengono utilizzati per garantire l'integrità dei dati, un MAC garanzie integrità e autenticazione.

Ciò significa che un codice hash viene generato ciecamente dal messaggio senza alcun tipo di input esterno: ciò che si ottiene è qualcosa che può essere utilizzato per verificare se il messaggio ha ricevuto qualche modifica durante il suo viaggio.

Un MAC utilizza invece una chiave privata come seme per la funzione di hash che utilizza quando genera il codice: questo dovrebbe assicurare al destinatario che, non solo il messaggio non è stato modificato, ma anche chi lo ha inviato è ciò che noi si aspettavano: altrimenti un utente malintenzionato non poteva conoscere la chiave privata utilizzata per generare il codice.

Secondo Wikipedia è necessario che:

mentre le funzioni MAC sono simili alle funzioni di hash crittografico, possiedono diversi requisiti di sicurezza. Per essere considerato sicuro, una funzione MAC deve resistere alla falsificazione esistenziale con attacchi di testo in chiaro scelti. Ciò significa che anche se un utente malintenzionato ha accesso a un oracle che possiede la chiave segreta e genera MAC per i messaggi scelti dall'attaccante, l'autore dell'attacco non può indovinare il MAC per altri messaggi senza eseguire quantità di calcolo non quantificabili.

Naturalmente, nonostante le loro somiglianze, sono implementate in un modo diverso: di solito un algoritmo di generazione MAC si basa su un algoritmo di generazione di codice hash con l'estensione che si preoccupa di utilizzare una chiave privata.

+3

Mi spiace, cosa significa che "anche se un utente malintenzionato ha accesso a un oracolo che possiede la chiave segreta e genera MAC per i messaggi scelti dall'attaccante, ** l'autore dell'attacco non può indovinare il MAC per altri messaggi ** '? Se un attaccante ha accesso a un oracolo che possiede la chiave segreta, può generare anche MAC per altri messaggi, inviandoli come input per l'oracolo, non è vero? – tonix

+0

@tonix Questa frase viene utilizzata solo per definire una funzione MAC sicura. Questo ipotetico scenario è il caso peggiore di uno scenario più realistico, in cui l'attaccante potrebbe osservare più coppie plaintext-MAC, e quindi provare a forgiare/indovinare il MAC di un messaggio che l'attaccante vuole inviare. – ZillGate

+0

Alcune altre persone hanno modificato queste definizioni: una funzione di hash non fornisce integrità, mentre l'autenticazione è ciò che ora chiamiamo integrità (cfr crypto.stanford.edu/~dabo/cryptobook). Questa modifica è per il migliore imo –

15

Un hash è una funzione che produce un digest da un messaggio. Un hash crittograficamente sicuro è per cui è computazionalmente impossibile generare un messaggio con un dato digest. Di per sé un hash di un messaggio non fornisce informazioni sul mittente di un determinato messaggio. Se è possibile comunicare in modo sicuro l'hash di un messaggio, è possibile utilizzarlo per verificare che un messaggio di grandi dimensioni sia stato ricevuto correttamente su un trasporto non protetto.

Un codice di autenticazione del messaggio è un modo di combinare una chiave segreta condivisa con un messaggio in modo che il destinatario del messaggio possa autenticare che il mittente del messaggio ha la chiave segreta condivisa e nessuno che non sapere che la chiave segreta potrebbe aver inviato o modificato il messaggio.

Un HMAC è un codice di autenticazione dei messaggi basato su hash. Di solito ciò comporta l'applicazione di una funzione di hash una o più volte a una sorta di combinazione del segreto condiviso e del messaggio. HMAC di solito fa riferimento all'algoritmo documentato in RFC 2104 o FIPS-198.

Un MAC non crittografa il messaggio in modo che il messaggio sia in testo normale. Non rivela la chiave segreta, quindi un MAC può essere inviato attraverso il canale aperto senza compromettere la chiave.

-6
  1. Le funzioni di hash utilizzano la crittografia asimmetrica mentre, il MAC utilizza la crittografia simmetrica.
  2. Le funzioni di hash crittografico non sono sempre un MAC, ma MAC può essere una funzione di hash crittografica (funzioni hash con chiave).
  3. Le funzioni hash forniscono non ripudio, dove MAC non fanno forniscono non ri
+3

(1) Le funzioni di hash non usano necessariamente i tasti, per non parlare di quelli simmetrici o asimmetrici. (3) è incompleto e di nuovo in primo piano. -1 – EJP

3

In sostanza la differenza principale è Mac utilizza una chiave privata e hash non usa alcun tasto. Per questo motivo, MAC ci consente di ottenere l'autenticazione.

2

FUNZIONE HASH: una funzione che mappa un messaggio di qualsiasi lunghezza in un valore hash di lunghezza fissa, che funge da autenticatore.

MAC: una funzione del messaggio e una chiave segreta che produce un valore di lunghezza fissa che funge da autenticatore.

+0

L'uso della parola "autenticatore" nella definizione di "Funzione hash" è fuorviante. SHA (Secured Hash Algorithm) da solo non viene utilizzato per l'autenticità. Viene utilizzato per verificare l'integrità dei dati. –

8

Trovato questo al punto di risposta da un altro forum.

Questi tipi di crittografia primitiva possono essere distinte dagli obiettivi di sicurezza che soddisfano (nella semplice protocollo di "aggiungendo a un messaggio"):

Integrità: Può il destinatario essere sicuri che il messaggio non ha stato modificato per errore?

Autenticazione: Il destinatario può essere sicuro che il messaggio provenga dal mittente?

Non ripudio: Se il destinatario trasmette il messaggio e la prova a una terza parte, può la terza parte essere sicura che il messaggio sia stato originato dal mittente? (Si prega di notare che io sto parlando di non ripudio nel senso di crittografia, non nel senso giuridico.) Importante è anche questa domanda:

Tasti: fa il primitivo bisogno di una chiave segreta condivisa, o pubblico-privato coppie di chiavi? Penso che la risposta breve sia meglio spiegata con una tabella:

Cryptographic primitive | Hash | MAC | Digital 
Security Goal   |  |   | signature 
------------------------+------+-----------+------------- 
Integrity    | Yes | Yes | Yes 
Authentication   | No | Yes | Yes 
Non-repudiation   | No | No  | Yes 
------------------------+------+-----------+------------- 
Kind of keys   | none | symmetric | asymmetric 
         |  | keys | keys 

Si ricorda che l'autenticazione senza confidenza con le chiavi utilizzate è inutile. Per le firme digitali, un destinatario deve essere sicuro che la chiave di verifica appartiene effettivamente al mittente. Per i MAC, un destinatario deve essere sicuro che la chiave simmetrica condivisa sia stata condivisa solo con il mittente.

Click here for more info

+0

Alcune altre persone hanno modificato queste definizioni: una funzione di hash non fornisce integrità, mentre l'autenticazione è ciò che ora chiamiamo integrità (cfr. Https://crypto.stanford.edu/~dabo/cryptobook/). Questo cambiamento è per il miglior imo –

2

Un hash è un riassunto o un'impronta digitale di un messaggio e di fornire né l'integrità né l'autenticazione per sé, come è che è suscettibile di attacco man-in-the-middle. Supponiamo che A voglia inviare un messaggio M, combinato con hash H of M, a B. Invece C cattura il messaggio e genera Message M2 e hash H2 di M2, e lo manda a B. Now B, in nessun modo può verificare se questo è il messaggio originale di A o no. Tuttavia, l'hash può essere utilizzato in altri modi per ottenere l'integrità e l'autenticazione, come il MAC.

Un MAC che è anche un riepilogo del messaggio fornisce Integrità e Autenticazione. Il MAC può essere calcolato in molti modi. Il metodo più semplice consiste nell'utilizzare una funzione di hash con due input, il messaggio e una chiave segreta condivisa. L'uso della chiave segreta condivisa aggiunge la capacità di autenticazione al MAC, e quindi fornisce integrità e autenticazione. Tuttavia, il MAC continua a non fornire il non disconoscimento, in quanto una delle parti in possesso della chiave segreta condivisa può produrre il messaggio e il MAC. Arriva la firma digitale e la crittografia a chiave pubblica in azione.

+0

Messaggio e MAC sono condivisi durante la messaggistica, ma come sono condivise le chiavi condivise per rigenerare il MAC? Se le chiavi sono condivise tramite la messaggistica, allora non può usare la chiave e il MAC-Generator per far cambiare il messaggio e passare al destinatario? – Bsienn

+0

@Bsienn, la chiave condivisa viene generata utilizzando la crittografia a chiave pubblica e non condivisa direttamente dagli utenti tramite la semplice messaggistica. –

Problemi correlati