AH
L'Authentication Header (brevemente AH) fornisce il supporto per l'integrità dei dati e provvede all'autenticazione dei pacchetti IP.In particolare l'integrità dei dati riguarda la possibilità di proteggere le unità informative da eventuali modifiche indesiderate. L'autenticazione si realizza tramite l'utilizzo di messaggi specifici : MAC (Message Authentication Code).
Il protocollo stabilisce che l'header sia così costituito:
- Next Header: Campo di 8 bits che identifica il tipo di header seguente.
- Payload Lenght: Campo di 8 bits che indica la lunghezza dell'Authentication Header espressa in parole di 32 bits.
- Reserved: Campo di 16 bits riservato per usi futuri.
- Security Parameters Index: Campo di 32 bits che serve per individuare i parametri caratterizzanti una security association.
- Sequence Number: Questo campo gioca un ruolo importante per il servizio di anti-replay. Chi effettua l'attacco di replay (attacco di risposta) ottiene una copia di un pacchetto autenticato e poi lo ritrasmette allo stesso destinatario; quest'ultimo ricevendo il duplicato può effettuarre una seconda transazione credendola una nuova, provocando danni (si pensi ad una transazione bancaria). Per risolvere questo problema il sender ,nel momento in cui stabilisce una security association, inizializza a zero il valore del Sequence Number(che è un contatore) e lo incrementa di una unità per ogni pacchetto ricevuto da questa SA. Se viene selezionato l'anti-replay,il sender assegna al sequence number valori fino ad un limite di 2^32-1(il campo ha una lunghezza di 32 bits), per evitare che ci siano molteplici pacchetti validi con lo stesso sequence number. Una volta raggiunto questo limite il sender chiude l'attuale SA per negoziarne un'altra con una nuova chiave. Il sequence number viene anche utilizzato in ricezione per garantire la sequenza ordinata dei pacchetti. A tale scopo viene utilizzata una politica simile al controllo a finestra; il receiver, infatti, implementa una finestra di lunghezza pari a 64 (di default). Il margine destro della finestra rappresenta il più alto valore del sequence number; per ogni pacchetto ricevuto correttamente con sequence number compreso tra N-W+1 e N, il corrispondente slot nella finestra viene marcato. In conclusione, per ogni nuovo pacchetto ricevuto che cade all'interno della finestra viene attivato il MAC e la successiva autenticazione consente di marcare il relativo slot. Se il pacchetto si trova al margine destro della finestra l'autenticazione genera l'avanzamento della finestra stessa; se, invece,si trova a sinistra, oppure il processo di autenticazione fallisce, allora il pacchetto viene scartato.
- Authentication Data: Campo di lunghezza variabile ( in termini di parole a 32 bits ) che comprende l'Integrity Check Value (ICV).
- Integrity Check Value: Codice di autenticazione prodotto dal MAC. Deve supportare le seguenti versioni:
Nota che sia MD5 che SHA sono funzioni di sintesi di messaggi SM (message digest) cioè funzioni hash non invertibili che forniscono l' autenticazione. La funzione SM deve soddisfare 3 proprietà fondamentali:
- HMAC-MD5-96
- HMAC-SHA-1-96
Per maggiori dettagli du MD5 e SHA vedi Tanenbaum pagg.597-599.
- Dato P (testo in chiaro), è facile calcolare SM(P).
- Dato SM(P) è impossibile trovare P.
- Non è possibile generare 2 messaggi diversi che producano la stessa sintesi.
Transport e Tunnel Modes
Le modalità di utilizzo dell'AH sono essenzialmente due:
Per capirne il funzionamento si analizzi la seguente figura:
- Tansport
- Tunnel
Nel primo caso l'autenticazione viene realizzata direttamente tra un client e un server che possono appartenere o no alla stessa rete. Nel Tunnel mode, invece, un utente remoto si identifica presso il corrispondente firewall.
Analizziamo le soluzioni per le due versioni dell' IP, l' IPv4 e l' IPv6.
Nel caso del transport mode per l'IPv4, l'header viene inserito dopo l'header IP e prima del campo dati come si vede in figura:IPv4
header IP AH TCP Dati L'autenticazione viene fatta su tutto il pacchetto, tranne i campi dell'header IPv4 che sono settati a zero per l'algoritmo di MAC.
In ambito IPv6, l'AH è visto come un payload end-to-end, viene posto, come in figura, dopo l'header IPv6 e i seguenti campi: hop by hop, destination, routing e fragment extension headers. Per l'autenticazione si procede come l'IPv4.IPv6
vecchio header IP hop-by-hop,dest,routing,fragment AH dest TCP Dati Per quanto riguarda il tunnel mode , l'autenticazione viene fatta su tutto il pacchetto IP, mentre la figura mostra che l' AH viene posto tra il vecchio e il nuovo header IP, che trasportano, rispettivamente, informazioni riguardanti gli indirizzi di sorgente e destinazione (oppure quelli relativi ai firewalls o altri gateways).
IPv4
New IP hdr AH orig IP hdr TCP Dati IPv6
New IP hdr ext hdr AH orig IP hdr ext hdr TCP Dati