Message authentication code: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Edipo (discussione | contributi)
 
(46 versioni intermedie di 33 utenti non mostrate)
Riga 1:
In [[crittografia]] un '''Messagemessage Authenticationauthentication Codecode''' ('''MAC)''') è un piccolo blocco di dati utilizzato per garantire l'[[Autenticazioneautenticazione]] e [[Integrità dei dati|autenticareintegrità]] di un messaggio digitale., Ungenerato secondo un meccanismo di [[crittografia simmetrica]]: un [[algoritmo]] MAC accetta in ingresso una [[chiaveChiave crittografica|chiave segreta]] ede un messaggio da autenticare di lunghezza arbitraria, e restituisce un MAC (alle volte chiamato anche ''tag''). IlIn valorericezione MACil proteggedestinatario siaopererà l'[[integritàin deimaniera dati]]identica delsul messaggio siapervenuto lain suachiaro autenticitàricalcolando permettendoil alMAC destinatariocon dellolo stesso (chealgoritmo devee anch'eglila possedere lastessa chiave: segreta)se dii rilevaredue qualsiasiMAC modificacoincidono alsi messaggio:ha eccoautenticazione perchée dovrebbeintegrità esseredel chiamatomessaggio ''Message Authentication and Integrity Code'', MAICinviato.
 
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.
Gli algoritmi di MAC possono essere realizzati anche partendo da altre primitive crittografiche, come le [[hash|funzioni crittografiche di hash]] (vedi l'[[HMAC]]) od i [[cifrario a blocchi|cifrari a blocchi]] ([[OMAC (crittografia)|One-key MAC]], [[CBC-MAC]] e [[PMAC (crittografia)|PMAC]]).
 
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.
==I MAC ed i Message Integrity Code (MIC)==
Può però essere utilizzato insieme a un [[algoritmo]] di [[crittografia simmetrica]] che crittografa tutto il messaggio <math>M</math> con una chiave <math>K'</math>, verrà effettuato quindi il MAC del messaggio <math>M</math> crittografato con <math>K'</math> usando la chiave <math>K</math>.
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 [[crittografia|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.
Verrà poi crittografato con un [[algoritmo]] di [[crittografia simmetrica]] (usando la chiave <math>K'</math>) il messaggio <math>M</math> e il suo MAC preparato con chiave <math>K</math>.
 
Verranno quindi inviati al destinatario: <math>E_{K'}(M)</math>, <math>MAC(E_{K'}(M),K)</math> e <math>E_{K'}(M, MAC(M,K))</math>
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.
 
Le due chiavi <math>K'</math> (usata nella crittografia simmetrica) e <math>K</math> (usata nella creazione del MAC) non dovranno però essere uguali.
==I MAC e gli [[hash]]==
Nonostante che le funzioni di MAC siano simili alle [[hash|funzioni crittografiche di hash]], esse hanno differenti requisiti di sicurezza. Per essere ritenuta sicura, una funzione di MAC devono resistere alla falsificazione esistenziale quando viene sottoposta ad un [[attacco a testo scelto]]. Questo significa che anche se un attaccante avesse accesso ad una [[oracolo|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").
 
Gli algoritmi di MAC possono essere realizzati anche partendo da altre primitive crittografiche, come le [[funzione crittografica di hash|funzioni crittografiche di hash]] (vedi l'[[HMAC]]) odo i [[cifrario a blocchi|cifrari a blocchi]] ([[OMAC (crittografia)|Oneone-key MAC]], [[CBC-MAC]] e [[PMAC (crittografia)|PMAC]]).
==I MAC e le [[firma digitale|firme digitali]]==
I MAC differiscono dalle [[firma digitale|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]].
 
== Message integrity code ==
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".
L'espressione "[[message integrity code]]" (MIC) è usata frequentemente come sinonimo di MAC, soprattutto nell'ambito delle [[telecomunicazioni]],<ref>{{cita pubblicazione|editore=[[IEEE-SA]]|titolo=IEEE 802.11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications|data=12 giugno 2007|lingua=en|doi=10.1109/IEEESTD.2007.373646|url=http://standards.ieee.org/getieee802/download/802.11-2007.pdf|urlmorto=sì|accesso=16 luglio 2018|urlarchivio=https://www.webcitation.org/61Ab8YqC9?url=http://standards.ieee.org/getieee802/download/802.11-2007.pdf|dataarchivio=24 agosto 2011}}</ref> dove l'acronimo MAC tradizionalmente si riferisce all'[[indirizzo MAC]] del dispositivo.
 
Tuttavia, alcuni autori<ref>{{cita web|lingua=en|url=http://www.cs.cornell.edu/courses/cs513/2005fa/NL20.hashing.html|autore=Fred B. Schneider|titolo=Hashes and Message Digests|editore=[[Cornell University]] - Dipartimento di informatica|accesso=16 luglio 2018|urlarchivio=https://web.archive.org/web/20171126003323/http://www.cs.cornell.edu/courses/cs513/2005fa/NL20.hashing.html|dataarchivio=26 novembre 2017|urlmorto=no}}</ref> usano "MIC" per indicare un ''message digest'', che è differente da un MAC, poiché non usa chiavi segrete ed è ottenuto tramite [[funzione crittografica di hash]]. Questo tipo di codifica non fornisce autenticazione e, in linea di principio, neppure l'integrità dei dati (poiché chiunque può generare un digest di un messaggio differente tramite la stessa funzione di hash). L'integrità è garantita solo se l'algoritmo MIC viene usato assieme a una funzione crittografica (come AES), che però a sua volta richiede l'utilizzo di una chiave. D'altro canto, un MAC, che di per sé già utilizza una chiave segreta, non necessita di essere cifrato per offrire lo stesso livello di sicurezza del MIC.
==Esempio==
[[Immagine:MAC.svg]]
 
Nella RFC 4949 della [[IETF]] si sconsiglia l'utilizzo dell'espressione "message integrity code" e si raccomanda invece di usare termini più specifici come "[[checksum]]", "[[Rilevazione e correzione d'errore|error detection code]]", "hash", "[[HMAC|keyed hash]]", "message authentication code" o "protected checksum".<ref>{{cita web|url=https://tools.ietf.org/html/rfc4949|titolo=Internet Security Glossary, Version 2|opera=RFC 4949|editore=IETF|autore=R. Shirey|data=agosto 2007|accesso=16 luglio 2018|lingua=en}}</ref>
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'').
 
== Hashing ==
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.
Nonostante che le funzioni di MAC siano simili alle [[Funzione crittografica di hash|funzioni crittografiche di hash]], esse hanno differenti requisiti di sicurezza. Per essere ritenuta sicura, una funzione di MAC devonodeve resistere alla [[falsificazione esistenziale]] quando viene sottoposta ada un [[attacco acon testo in chiaro scelto]]. Questo significa che anche se un attaccante avesse accesso ada una [[oracolo|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, (quise "mai" significa "non senza farefacendo un notevoleimproponibile quantitativo di calcoli").
 
== Firme digitali ==
==Collegamenti esterni==
I MAC differiscono dalle [[firmaFirma digitale|firme digitali]] in quanto sono sia generati che verificati utilizzando la stessa chiave segreta. Questo implica che il mittente ede il destinatario del messaggio devono scambiarsi la chiave prima di iniziare le comunicazioni, come nel caso della [[crittografia simmetrica]].
* [http://www.rsasecurity.com/rsalabs/node.asp?id=2177 FAQ sui MAC sul sito di RSA]
 
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".
{{Portale|matematica}}
[[Categoria:Tecniche di difesa informatica]]
 
== Esempio ==
[[cs:MAC funkce]]
[[File:MAC-it.svg|center|500px]]
[[da:Message authentication code]]
Il mittente (''sender'') deve inviare un messaggio (''message'') ada un destinatario (''receiver''). Prima di effettuare l'operazione si accorda col destinatario su una chiave segreta (''key'').
[[de:Message Authentication Code]]
 
[[en:Message authentication code]]
Stabilita la chiave, utilizza una funzione di MAC (''MAC Algorithm'') per calcolare il MAC del messaggio ede 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.
[[es:Message authentication code]]
 
[[fr:Code d'authentification de message]]
== Note ==
[[he:קוד אימות מסרים]]
<references/>
[[ja:メッセージ認証符号]]
 
[[pl:Message Authentication Code]]
== Voci correlate ==
[[ru:Message authentication code]]
*[[uk:MACModulo підписSAM]]
*[[Cifratura autenticata]]
 
== Altri progetti ==
{{interprogetto}}
 
== Collegamenti esterni ==
* {{cita web|url=http://www.rsasecurity.com/rsalabs/node.asp?id=2177|titolo=FAQ sui MAC sul sito di RSA|urlmorto=sì|urlarchivio=https://web.archive.org/web/20061020212439/http://www.rsasecurity.com/rsalabs/node.asp?id=2177|dataarchivio=20 ottobre 2006|lingua=en}}
* {{cita web|url=http://web.mit.edu/6.857/OldStuff/Fall97/lectures/lecture3.pdf|titolo=Lecture 3|data=11 settembre 1997|autore=Ron Rivest|editore=[[Massachusetts Institute of Technology]]|accesso=16 luglio 2018|lingua=en|urlarchivio=https://web.archive.org/web/20160304073859/http://web.mit.edu/6.857/OldStuff/Fall97/lectures/lecture3.pdf|dataarchivio=4 marzo 2016|urlmorto=no}}
{{Hash e MAC}}
{{Controllo di autorità}}
{{Portale|crittografia|sicurezza informatica}}
 
[[Categoria:Codici di autenticazione dei messaggi| ]]