Message Authentication Codes (MACs)

4

Qual è la principale differenza tra i codici di autenticazione dei messaggi (MAC) e la funzione hash?

C'è qualche differenza riguardo ai loro domini di utilizzo?

    
posta user3011084 03.10.2015 - 07:20
fonte

3 risposte

7

La principale differenza tra hash e MAC è che chiunque può calcolare il primo, ma solo quelli con la chiave segreta possono calcolare quest'ultimo. Ad esempio, nel protocollo HTTPS, viene stabilita una chiave condivisa tra il server e il client e con tale chiave è possibile calcolare un MAC sui dati trasferiti. Nessun altro può calcolare da sé il MAC e quindi non possono modificare i dati senza essere rilevati. Supponiamo che HTTPS usi SHA256, quindi chiunque può semplicemente inserire i propri dati e gli stessi hash corrispondenti. L'hash sarebbe utile solo per difendersi dalla corruzione accidentale.

    
risposta data 03.10.2015 - 12:34
fonte
6
  • Una funzione di hash fornisce l'integrità dei dati.
  • MAC fornisce l'integrità dei dati e l'autenticazione

  • Una funzione hash prende solo il testo semplice stesso

  • MAC è un algoritmo che si basa su una chiave privata segreta (per ottenere l'autenticazione, questa stessa chiave viene utilizzata anche per la verifica) oltre a un messaggio.

    Le uscite di entrambi gli algoritmi hanno una dimensione fissa.

Un esempio di ciascuno:

risposta data 03.10.2015 - 07:42
fonte
5

Un codice di autenticazione dei messaggi (MAC), come indica il nome, è usato per autenticare un messaggio - cioè, per dimostrare a un destinatario che il messaggio è stato generato da qualcuno che conosceva una determinata chiave segreta (condivisa dal destinatario).

In termini di utilizzo, * i MAC sono simili alle firme digitali ; la principale differenza è che i MAC sono una forma di crittografia simmetrica e richiedono quindi al mittente e al destinatario di conoscere la stessa chiave segreta. Le firme digitali, d'altra parte, utilizzano crittografia asimmetrica (chiave pubblica) - questo consente al mittente di conservare la propria possedere la chiave privata per la firma, dando agli altri una chiave pubblica separata che consente loro di verificare la firma, ma non di generare nuove firme valide.

(A volte, la natura simmetrica dei MAC può essere una caratteristica. Ad esempio, i MAC forniscono automaticamente autenticazione negata : chiunque Più comunemente, però, il motivo per cui si usano i MAC al posto delle firme è che sono molto più piccoli, più semplici e veloci da generare.)

*) Le tecniche crittografiche sottostanti utilizzate per costruire MAC e firme digitali, tuttavia, sono generalmente molto diverse.

Una funzione di hash crittografica , d'altra parte, è un modo per mappare i messaggi lunghi in breve (ad esempio, 128 a 512 bit) bitstrings in un modo che approssima un (teorico) oracolo casuale . In particolare, con una funzione di hash sicura, dovrebbe essere impossibile per chiunque:

  1. dato un valore hash arbitrario, trova un messaggio che hash su quel valore ("preimage resistance"),
  2. dato un messaggio arbitrario, trova un altro messaggio che esegue lo hash allo stesso valore ("seconda pre-resistenza"), o
  3. trova due messaggi che hanno hash sullo stesso valore ("resistenza di collisione").

Sebbene le funzioni di hash crittografico vengano talvolta utilizzate direttamente come checksum per verificare l'integrità dei dati o per verificare la correttezza di una chiave oppure password senza dover memorizzare la chiave / password stessa, non sono di per sé sicuri contro la falsificazione intenzionale: un hash la funzione non ha una chiave segreta, quindi chiunque può calcolare un hash valido per qualsiasi messaggio.

Piuttosto, l'uso crittografico principale per le funzioni hash è un elemento fondamentale per altri schemi crittografici, inclusi MAC e firme digitali:

  • La maggior parte degli algoritmi di firma digitale può firmare direttamente solo messaggi brevi. Pertanto, in pratica, vengono comunemente utilizzati prima di sottoporre a hashing il messaggio effettivo in un breve hash e quindi di firmare l'hash.

  • Un uso molto comune per le funzioni hash è la costruzione HMAC , che consente di avere un hash usato come MAC combinando l'input con una chiave segreta (in un modo particolare) prima di cancellarlo.

  • Le funzioni hash sono anche comunemente usate per la derivazione delle chiavi : consentono di derivare in modo deterministico diverse chiavi apparentemente casuali da un singolo master secret, in un modo che mantiene il master secret sicuro anche se alcune delle sottochiavi sono compromesse.

In breve, mentre ci sono alcune somiglianze tecniche nel modo in cui (sono) costruite MAC e funzioni di hash, e mentre ci sono modi per usare una funzione di hash per implementare un MAC, i casi d'uso (diretti) per queste due costruzioni sono piuttosto diversi.

    
risposta data 03.10.2015 - 16:04
fonte

Leggi altre domande sui tag