Codice di autenticazione del messaggio - Message authentication code

In crittografia , un codice di autenticazione del messaggio ( MAC ), noto anche come tag , è una breve informazione utilizzata per autenticare un messaggio. In altre parole, per confermare che il messaggio proviene dal mittente indicato (la sua autenticità) e non è stato modificato. Il valore MAC protegge l' integrità dei dati di un messaggio , nonché la sua autenticità , consentendo ai verificatori (che possiedono anche la chiave segreta) di rilevare eventuali modifiche al contenuto del messaggio.

Terminologia

Il termine codice di integrità del messaggio (MIC) viene spesso sostituito al termine MAC , specialmente nelle comunicazioni per distinguerlo dall'uso di quest'ultimo come indirizzo di controllo dell'accesso ai media ( indirizzo MAC ). Tuttavia, alcuni autori usano MIC per riferirsi a un message digest , che mira solo a identificare in modo univoco ma opaco un singolo messaggio. RFC 4949 consiglia di evitare il termine codice di integrità del messaggio (MIC) e di utilizzare invece checksum , codice di rilevamento degli errori , hash , keyed hash , codice di autenticazione del messaggio o checksum protetto .

Definizioni

Informalmente, un sistema di codici di autenticazione dei messaggi è costituito da tre algoritmi:

  • Un algoritmo di generazione delle chiavi seleziona una chiave dallo spazio delle chiavi in ​​modo uniforme e casuale.
  • Un algoritmo di firma restituisce in modo efficiente un tag data la chiave e il messaggio.
  • Un algoritmo di verifica verifica in modo efficiente l'autenticità del messaggio dato la chiave e il tag. Cioè, reso accettato quando il messaggio e il tag non sono stati manomessi o falsificati, e altrimenti reso rifiutato .

Un codice di autenticazione del messaggio sicuro deve resistere ai tentativi di un avversario di falsificare tag, per messaggi arbitrari, selezionati o tutti , anche in condizioni di messaggio noto o scelto . Dovrebbe essere computazionalmente impossibile calcolare un tag valido del messaggio dato senza conoscere la chiave, anche se nel caso peggiore, assumiamo che l'avversario conosca il tag di qualsiasi messaggio tranne quello in questione.

Formalmente, un sistema di codice di autenticazione del messaggio ( MAC ) è una tripla di algoritmi efficienti ( G , S , V ) che soddisfano:

  • G (generatore di chiavi) fornisce la chiave k sull'ingresso 1 n , dove n è il parametro di sicurezza.
  • S (firma) emette un tag t sul tasto k e la stringa di input x .
  • V (verifica) le uscite accettate o rifiutate sugli ingressi: il tasto k , la stringa x e il tag t .

S e V devono soddisfare quanto segue:

Pr [ kG (1 n ), V ( k , x , S ( k , x ) ) = accettato ] = 1.

Un MAC è immutabile se per ogni avversario efficiente A

Pr [ kG (1 n ), ( x , t ) ← A S ( k , · ) (1 n ), x ∉ Query( A S ( k , · ) , 1 n ), V ( k , x , t ) = accettato ] < negl( n ),

dove A S ( k , · ) denota che A ha accesso all'oracolo S ( k , · ), e Query( A S ( k , · ) , 1 n ) denota l'insieme delle query su S fatte da A , che sa n . Chiaramente richiediamo che qualsiasi avversario non possa interrogare direttamente la stringa x su S , poiché altrimenti un tag valido può essere facilmente ottenuto da quell'avversario.

Sicurezza

Sebbene le funzioni MAC siano simili alle funzioni hash crittografiche , possiedono requisiti di sicurezza diversi. Per essere considerata sicura, una funzione MAC deve resistere alla falsificazione esistenziale sotto attacchi di messaggi scelti . Ciò significa che anche se un utente malintenzionato ha accesso a un oracolo che possiede la chiave segreta e genera MAC per i messaggi di sua scelta, l'attaccante non può indovinare il MAC per altri messaggi (che non sono stati utilizzati per interrogare l'oracolo) senza eseguire quantità irrealizzabili di computazione.

I MAC differiscono dalle firme digitali poiché i valori MAC sono sia generati che verificati utilizzando la stessa chiave segreta. Ciò implica che il mittente e il destinatario di un messaggio devono concordare la stessa chiave prima di iniziare le comunicazioni, come nel caso della crittografia simmetrica . Per lo stesso motivo, i MAC non prevedono la proprietà di non ripudio offerta dalle firme specificamente nel caso di una chiave segreta condivisa a livello di rete : qualsiasi utente che può verificare un MAC è anche in grado di generare MAC per altri messaggi. Al contrario, una firma digitale viene generata utilizzando la chiave privata di una coppia di chiavi, che è la crittografia a chiave pubblica. Poiché questa chiave privata è accessibile solo al suo titolare, una firma digitale prova che un documento è stato firmato nientemeno che da quel titolare. Pertanto, le firme digitali offrono il non ripudio. Tuttavia, il non ripudio può essere fornito da sistemi che legano in modo sicuro le informazioni sull'utilizzo della chiave alla chiave MAC; la stessa chiave è in possesso di due persone, ma una ha una copia della chiave che può essere utilizzata per la generazione MAC mentre l'altra ha una copia della chiave in un modulo di sicurezza hardware che consente solo la verifica MAC. Questo è comunemente fatto nel settore finanziario.

Implementazione

Gli algoritmi MAC possono essere costruiti da altre primitive crittografiche, come le funzioni hash crittografiche (come nel caso di HMAC ) o da algoritmi di cifratura a blocchi ( OMAC , CCM , GCM e PMAC ). Tuttavia molti dei più veloci algoritmi MAC come UMAC - VMAC e Poly1305-AES sono costruiti sulla base di hashing universale .

Anche gli algoritmi di hash a chiave intrinseca come SipHash sono per definizione MAC; possono essere anche più veloci dei MAC basati sull'hashing universale.

Inoltre, l'algoritmo MAC può combinare deliberatamente due o più primitive crittografiche, in modo da mantenere la protezione anche se successivamente una di esse risultasse vulnerabile. Ad esempio, in Transport Layer Security (TLS), i dati di input vengono divisi in due metà, ciascuna elaborata con una primitiva di hashing diversa ( SHA-1 e SHA-2 ) quindi XORed insieme per l'output del MAC.

MAC . una tantum

L'hashing universale e in particolare le funzioni hash indipendenti a coppie forniscono un codice di autenticazione del messaggio sicuro purché la chiave venga utilizzata al massimo una volta. Questo può essere visto come un one-time pad per l'autenticazione.

La più semplice funzione hash indipendente a coppie è definita dalla chiave casuale, chiave = ( a , b ) , e il tag MAC per un messaggio m è calcolato come tag = ( am + b ) mod p , dove p è primo.

Più in generale, le funzioni di hashing k- indipendenti forniscono un codice di autenticazione del messaggio sicuro fintanto che la chiave viene utilizzata meno di k volte per le funzioni di hashing k- way indipendenti.

Anche i codici di autenticazione dei messaggi e l'autenticazione dell'origine dei dati sono stati discussi nell'ambito della crittografia quantistica. A differenza di altri compiti crittografici, come la distribuzione delle chiavi, per una classe piuttosto ampia di MAC quantistici è stato dimostrato che le risorse quantistiche non offrono alcun vantaggio rispetto ai MAC classici una tantum incondizionatamente sicuri.

Standard

Esistono vari standard che definiscono gli algoritmi MAC. Questi includono:

  • La FIPS PUB 113 Computer Data Authentication , ritirata nel 2002, definisce un algoritmo basato su DES .
  • FIPS PUB 198-1 Il codice di autenticazione del messaggio con chiave hash (HMAC)
  • ISO/IEC 9797-1 Meccanismi che utilizzano un cifrario a blocchi
  • ISO /IEC 9797-2 Meccanismi che utilizzano una funzione hash dedicata
  • ISO /IEC 9797-3 Meccanismi che utilizzano una funzione hash universale
  • ISO / IEC 29192-6 Crittografia leggera - Codici di autenticazione dei messaggi

ISO/IEC 9797-1 e -2 definiscono modelli e algoritmi generici che possono essere utilizzati con qualsiasi cifratura a blocchi o funzione hash e una varietà di parametri diversi. Questi modelli e parametri consentono di definire algoritmi più specifici nominando i parametri. Ad esempio, l'algoritmo FIPS PUB 113 è funzionalmente equivalente all'algoritmo ISO/IEC 9797-1 MAC 1 con il metodo di riempimento 1 e un algoritmo di cifratura a blocchi di DES.

Un esempio di utilizzo del MAC

MAC.svg

In questo esempio, il mittente di un messaggio lo esegue attraverso un algoritmo MAC per produrre un tag di dati MAC. Il messaggio e il tag MAC vengono quindi inviati al destinatario. Il destinatario a sua volta esegue la parte del messaggio della trasmissione attraverso lo stesso algoritmo MAC utilizzando la stessa chiave, producendo un secondo tag di dati MAC. Il ricevitore confronta quindi il primo tag MAC ricevuto nella trasmissione con il secondo tag MAC generato. Se sono identici, il destinatario può tranquillamente presumere che il messaggio non sia stato alterato o manomesso durante la trasmissione ( integrità dei dati ).

Tuttavia, per consentire al destinatario di rilevare attacchi di replay , il messaggio stesso deve contenere dati che assicurino che lo stesso messaggio possa essere inviato solo una volta (ad es. timestamp, numero di sequenza o utilizzo di un MAC unico). Altrimenti un malintenzionato potrebbe – senza nemmeno comprenderne il contenuto – registrare questo messaggio e riprodurlo in un secondo momento, producendo lo stesso risultato del mittente originale.

Guarda anche

Appunti

Riferimenti

  • Goldreich, Oded (2001), Fondamenti di crittografia I: Strumenti di base , Cambridge: Cambridge University Press, ISBN 978-0-511-54689-1
  • Goldreich, Oded (2004), Fondamenti di crittografia II: applicazioni di base (1. ed. publ.), Cambridge [ua]: Cambridge Univ. Stampa, ISBN 978-0-521-83084-3
  • Pass, Rafael, A Course in Cryptography (PDF) , recuperato il 31 dicembre 2015

link esterno

  1. ^ 12-11-20C8