MAC vs Crittografia

9

Comprendo la differenza tra MAC (ad es. hmac_sha256, ecc.) e Crittografia simmetrica (ad esempio rc4, ecc.), ma la mia domanda è: quale vantaggio risolve MAC con l'utilizzo della crittografia?

So che il MAC è usato per verificare che il messaggio provenga sia dalla fonte prevista, sia che non sia stato manomesso tramite trasmissione di hashing del messaggio con una chiave segreta.

Se si cripta il messaggio con rc4 (o qualsiasi altro algoritmo, la forza accanto al punto), allora questo non raggiunge lo stesso risultato, il ricevitore dovrebbe comunque conoscere la chiave segreta per decodificare il messaggio.

L'unica differenza che posso pensare è che con MAC il messaggio stesso è un testo semplice, quindi l'autenticazione del messaggio è molto veloce. Quindi la performance è l'unica differenza? Oppure è il fatto che il contenuto del messaggio non è confidenziale e vuoi solo verificare se è autentico o meno.

Qualsiasi informazione su questi due concetti sarebbe molto apprezzata.

    
posta Matthew 11.05.2012 - 01:22
fonte

2 risposte

12

La crittografia fornisce riservatezza, un MAC fornisce integrità. L'uso della crittografia rende i tuoi messaggi vulnerabili a un attacco solo per il testo cifrato .

Un esempio renderà più chiaro. Supponiamo che tu invii un messaggio che dice:

M = "transfer 100$ to account 591064"

Il mittente, con la chiave simmetrica, può crittografare il messaggio e inviare E(M) . Nessuno dovrebbe essere in grado di inviare un messaggio valido diverso dal titolare della chiave. Hai coperto la riservatezza.

Ma un utente malintenzionato potrebbe alterare il testo cifrato per farlo dire qualcos'altro quando è decodificato. Ovviamente, più grande è il messaggio e più la struttura ha, più difficile sarà la sua esecuzione pratica.

Ora se utilizzi un MAC insieme alla crittografia, sarai in grado di rilevare le modifiche al testo cifrato perché il MAC non calcolerà. Nel nostro esempio, se si utilizza la stessa chiave per la crittografia e il MAC, è possibile modificare il messaggio in:

M = "transfer 100$ to account 591064|a46c0db15acdd36b4e92a82e5dc6c14f"

e crittografalo, inviando nuovamente E(M) . L'hash è crittografato (è il tuo MAC), il messaggio è crittografato (per riservatezza). In questo modo, rendi computazionalmente impossibile modificare il testo cifrato e trovare un messaggio valido, anche se il tuo messaggio è un singolo byte casuale.

La scelta dell'hash migliore, della crittografia e della lunghezza della chiave è un'altra storia.

In conclusione:

  • La crittografia non fornisce l'integrità da sola
  • MAC (integrità) non fornisce la riservatezza di per sé

Spesso devi combinare le primitive crittografiche per ottenere molte proprietà di sicurezza.

    
risposta data 11.05.2012 - 04:42
fonte
10

@ ixe013 lo spiega bene. La crittografia e i MAC hanno uno scopo diverso.

Se hai bisogno di integrità, devi usare un MAC. La crittografia non fornisce integrità.

Se hai bisogno di riservatezza, devi usare la crittografia both e un MAC. Potresti pensare che la crittografia sarebbe sufficiente in questo caso (non c'è bisogno di un MAC), ma ti sbagli. Vedi Non utilizzare la crittografia senza l'autenticazione dei messaggi .

Detto questo, in pratica non devi eseguire il rollpoint della tua crittografia . Ciò significa, tra le altre cose, che non dovresti provare a creare una combinazione di primitive crittografiche per soddisfare le tue esigenze applicative: non dovresti pensare al livello degli algoritmi di crittografia e dei codici di autenticazione dei messaggi. Questo è soggetto a errori e raramente è necessario. Invece, dovresti utilizzare un sistema crittografico ben controllato esistente (TLS, GPG, SSH, OpenVPN, IPSec, ecc.) Per fornire un canale di comunicazione sicuro o un sistema di archiviazione sicuro. Se lo fai, il sistema crittografico esistente si prenderà cura di questi dettagli per te. I crittografi hanno schiavizzato questi dettagli, quindi non ne hai bisogno.

    
risposta data 11.05.2012 - 06:58
fonte

Leggi altre domande sui tag