Message authentication code

Da Wikipedia, l'enciclopedia libera.

In crittografia un Message Authentication Code (MAC) è un piccolo blocco di dati utilizzato per l'autenticazione di un messaggio digitale e per verificarne l'integrità da parte del destinatario, generato secondo un meccanismo di crittografia simmetrica: un algoritmo MAC accetta in ingresso una chiave segreta ed un messaggio da autenticare di lunghezza arbitraria, e restituisce un MAC (alle volte chiamato anche tag). In ricezione il destinatario opererà in maniera identica sul messaggio pervenuto in chiaro ricalcolando il MAC con lo stesso algoritmo e la stessa chiave: se i due MAC coincidono si ha autenticazione e integrità del messaggio inviato.

Il valore MAC protegge dunque sia l'integrità dei dati del messaggio sia la sua autenticità permettendo al destinatario dello stesso (che deve anch'egli possedere la chiave segreta) di rilevare qualsiasi modifica al messaggio: ecco perché dovrebbe essere chiamato Message Authentication and Integrity Code, MAIC.

Come si desume quindi dalla descrizione, l'algoritmo MAC protegge solo da integrità dei dati, autenticità del mittente del messaggio, ma non dalla confidenzialità delle informazioni contenute nello stesso. Può però essere utilizzato insieme ad un algoritmo di crittografia simmetrica che crittografa tutto il messaggio M con una chiave K' , verrà effettuato quindi il MAC del messaggio M crittografato con K' usando la chiave K. Verrà poi crittografato con un algoritmo di crittografia simmetrica (usando la chiave K') il messaggio M ed il suo MAC preparato con chiave K.

Verranno quindi inviati al destinatario: EK'(M) , MAC(EK'(M),K) , EK'(M, MAC(M,K))

Le due chiavi K' (usata nella crittografia simmetrica) e K (usata nella creazione del MAC) non dovranno però essere uguali.

Gli algoritmi di MAC possono essere realizzati anche partendo da altre primitive crittografiche, come le funzioni crittografiche di hash (vedi l'HMAC) od i cifrari a blocchi (One-key MAC, CBC-MAC e PMAC).

I MAC ed i Message Integrity Code (MIC)[modifica | modifica sorgente]

Esiste un altro modo per controllare l'integrità di un messaggio: utilizzare un Message integrity code (MIC). Questo si differenzia dal MAC per il fatto che non viene usata nessuna chiave segreta. Anche se spesso i termini sono utilizzati come sinonimi, un MIC dovrebbe essere sempre cifrato prima di essere trasmesso se fosse utilizzato come controllo di dati importanti. D'altro canto, un MAC, che utilizza una chiave segreta, non necessita di essere cifrato per offrire lo stesso livello di sicurezza del MIC.

Un dato messaggio produrrà sempre lo stesso MIC se si utilizza lo stesso algoritmo; contrariamente, lo stesso messaggio produrrà MAC identici solo se sarà utilizzata la stessa chiave segreta.

I MAC e gli hash[modifica | modifica sorgente]

Nonostante le funzioni di MAC siano simili alle funzioni crittografiche di hash, esse hanno differenti requisiti di sicurezza. Per essere ritenuta sicura, una funzione di MAC deve resistere alla falsificazione esistenziale quando viene sottoposta ad un attacco a testo scelto. Questo significa che anche se un attaccante avesse accesso ad una macchina a oracolo che possiede la chiave segreta e genera i MAC dei messaggi scelti dall'attaccante, egli non potrebbe "mai" indovinare il MAC di nessun messaggio che non ha ancora chiesto all'oracolo di autenticare (qui "mai" significa "non senza fare un notevole quantitativo di calcoli").

I MAC e le firme digitali[modifica | modifica sorgente]

I MAC differiscono dalle firme digitali in quanto sono sia generati che verificati utilizzando la stessa chiave segreta. Questo implica che il mittente ed il destinatario del messaggio devono scambiarsi la chiave prima di iniziare le comunicazioni, come nel caso della crittografia simmetrica.

Per questa ragione i MAC non forniscono la proprietà del "non ripudio" offerta dalle firme digitali: qualunque utente che può verificare un MAC è anche capace di generare MAC per altri messaggi. Invece una firma digitale è generata utilizzando la chiave privata di una coppia di chiavi (crittografia asimmetrica). Dato che la chiave privata è nota solo al suo possessore, una firma digitale prova che un documento è stato firmato esattamente dal suo proprietario e da nessun altro. Ecco che le firme digitali offrono la proprietà del "non ripudio".

Esempio[modifica | modifica sorgente]

MAC.svg

Il mittente (sender) deve inviare un messaggio (message) ad un destinatario (receiver). Prima di effettuare l'operazione si accorda col destinatario su una chiave segreta (key).

Stabilita la chiave, utilizza una funzione di MAC (MAC Algorithm) per calcolare il MAC del messaggio ed infine invia entrambi al destinatario. Questi calcola il MAC del messaggio ricevuto e poi lo confronta con il MAC allegato al messaggio stesso: se coincidono, il messaggio è integro, altrimenti qualcosa è andato storto.

Voci correlate[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]