IPsec: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Annullate le modifiche di 46.255.86.170 (discussione), riportata alla versione precedente di Datolo12 Etichetta: Rollback |
|||
Riga 68:
Al fine di autenticare le entità coinvolte nella comunicazione possono essere utilizzate tecniche a chiave simmetrica o, alternativamente, a chiave asimmetrica; in quest'ultimo caso si fa ricorso a [[infrastrutture a chiave pubblica]] (PKI) e all'uso di [[Certificato digitale|certificati digitali]].
===Authentication Header (AH)===
====Descrizione====
'''Authentication Header''' (abbreviato '''AH'''), è un protocollo che fa parte della suite IPsec. Il suo compito è quello di fornire un controllo di integrità pacchetto per pacchetto, verifica dell'autenticità del mittente e protezione contro i [[replay attack]]. AH non garantisce in alcun modo la confidenzialità del messaggio.
L'autenticità è garantita tramite funzioni di [[hash]] a chiave simmetrica, ossia tramite il meccanismo delle pre-shared keys. Per poter comunicare, due entità devono condividere la medesima chiave; tale chiave viene combinata con il messaggio originale e quindi viene calcolato il [[checksum]] tramite una funzione di hash crittografico(MD5 o SHA). Il messaggio e il checksum vengono, infine, inviati al ''peer'' remoto.
Il ''peer'' remoto riceve il messaggio; dato che questo è in chiaro, lo può leggere, combinare con la chiave di cui è a conoscenza e calcolare il checksum. Se il checksum corrisponde a quello inviato, il messaggio è autentico e viene accettato altrimenti viene scartato in quanto è stato modificato in un modo non consentito dallo standard.
Il protocollo AH è progettato per proteggere l'intero pacchetto IP inviato; tuttavia bisogna considerare che alcuni campi dell'header IP, come il '''TTL''', variano durante la trasmissione;
queste modifiche devono essere necessariamente consentite, per cui prima di calcolare il checksum, i campi cui è permesso variare vengono posti a '''0'''.
====Formato del pacchetto====
Di seguito viene illustrata la struttura del pacchetto AH (ogni casella rappresenta 1 [[byte]]).
{| border="1" cellspacing="0" cellpadding="2px"
| style="text-align:center;border:0;width:25%" | 0
| style="text-align:center;border:0;width:25%" | 1
| style="text-align:center;border:0;width:25%" | 2
| style="text-align:center;border:0;width:25%" | 3
|--
<!-- | 0 1 2 3 4 5 6 7 -->
<!-- | 0 1 2 3 4 5 6 7 -->
<!-- | 0 1 2 3 4 5 6 7 -->
<!-- | 0 1 2 3 4 5 6 7 -->
<!-- |-- -->
| style="text-align:center;" | Header successivo
| style="text-align:center;" | Dimensione Payload
| colspan="2" style="text-align:center;" | RISERVATO
|--
| colspan="4" style="text-align:center;" | Security Parameter Index (SPI)
|--
| colspan="4" style="text-align:center;" | Numero di Successione
|--
| colspan="4" style="text-align:center;" |
Dati per l'autenticazione (lunghezza variable)
|}
; Header successivo: Indica che tipo di protocollo verrà dopo.
; Dimensione Payload (8 bit): La lunghezza dell'AH in word (1 word = 32 bit) meno 2. Per esempio, 96 sono i bit di default del campo Authentication Data, più altri 96 bit per i campi di lunghezza fissa di AH fanno 6 word (96+96 = 192 bit, diviso per 32 = 6). Sottraendo 2 risulta quindi 4 il valore contenuto della dimensione del payload standard.
; RISERVATO: Spazio lasciato per sviluppi futuri. Tutti i bit di questo campo vengono impostati a 0.
; Security Parameter Index: Questo campo identifica i parametri di sicurezza in combinazione con l'indirizzo IP. In genere è un numero pseudo-casuale che identifica la [[security association]] cui fa parte questo pacchetto.
; Numero di successione: Una successione di numeri monotonicamente crescenti. Per impedire i [[replay attack]], il numero di successione quando raggiunge il valore massimo (2^{32}-1) non deve ritornare a 0, ma una nuova SA deve essere creata.
; Dati per l'autenticazione: Contiene l'Integrity Check Value (ICV) e rappresenta l'[[HMAC]] calcolato dal mittente del messaggio. L'HMAC viene calcolato utilizzando i campi dell'header IP (con il [[Time to live|TTL]] originario), i campi dell'header AH tranne i dati dell'autenticazione (viene considerato a 0) e infine tutti i dati degli header di livello superiore, compresi quelli applicativi, che non vengono modificati durante il trasporto.
====Transport mode e Tunnel mode====
AH supporta nativamente sia il ''transport mode'' che il ''tunnel mode''. In transport mode vengono protetti solo i protocolli di livello superiore a quello di rete ([[Transmission Control Protocol|TCP]], [[User Datagram Protocol|UDP]], etc); in tunnel mode il pacchetto IP originale viene incapsulato in un nuovo pacchetto IP, dopo essere stato elaborato da AH. Ne spieghiamo il funzionamento con l'ausilio di alcuni disegni.
Il metro di confronto è senza dubbio il pacchetto IP originale; in presenza di un collegamento basato su IPsec il pacchetto viene, ovviamente, alterato.
{| border="1" width="50%" cellspacing=0
|style="width:25%"| Header IP
|style="width:25%"| Header TCP
|style="width:50%"| Dati
|}
<small>Pacchetto IP originale</small>
A seconda della modalità di funzionamento di IPsec (tunnel mode o transport mode), il pacchetto originale viene alterato in modo diverso.
{| border="2" width="60%" cellspacing=0
|style="width:17%"| Header IP
|style="width:17%;background-color:orange;font-weight:bold"|Header AH
|style="width:17%"| Header TCP
|style="width:50%"| Dati
|}
{| width="60%"
|style="background-color:cyan;text-align:center;"| dati autenticati
|}
<small>AH in transport mode</small>
{| border="2" width="80%" cellspacing=0
|style="width:17%"| Header IP esterno
|style="width:13%;background-color:orange;font-weight:bold"|Header AH
|style="width:10%"| Header IP
|style="width:12%"| Header TCP
|style="width:37%"| Dati
|}
{| width="80%"
|style="background-color:cyan;text-align:center;"| dati autenticati
|}
<small>AH in tunnel mode</small>
La linea azzurra indica le zone del pacchetto che sono autenticate. Dal punto di vista della protezione, in entrambi i casi, i pacchetti vengono protetti completamente. Notiamo che nell'header IP, alcuni campi variano durante il transito nella rete, ad esempio il [[Time to live|TTL]].
Questi campi vengono posti a '''0''' prima di calcolare la funzione di [[hash]], necessaria per la protezione del pacchetto. Da quanto appena detto si evince subito che il protocollo AH è incompatibile con le varie tecniche di [[Network address translation|NAT]]; difatti se vengono alterati i campi indirizzo nell'header IP (in entrambe le modalità), in ricezione la checksum fallisce subito.
===Encapsulating Security Payload (ESP)===
| |||