In telecomunicazioni e informatica IPsec, abbreviazione di IP Security, è uno standard per reti a pacchetto che si prefigge di ottenere connessioni sicure su reti IP. Tale sicurezza viene raggiunta attraverso l'aggiunta di funzionalità di autenticazione, cifratura e controllo di integrità dei pacchetti IP (datagrammi). La capacità di fornire protezione o sicurezza viene dunque fornita a livello di rete (diversamente da HTTPS, SSL/TLS), fatto che rende questo protocollo trasparente al livello delle applicazioni che quindi non devono essere modificate.

Panoramica dello standard Scopo del progetto IPsec è stato progettato per rendere sicure sia comunicazioni portal-to-portal sia comunicazioni end-to-end. Nella prima configurazione il traffico viene reso "sicuro" a diversi computer (in alcuni casi ad un'intera LAN); nella seconda solo i peer che stabiliscono la connessione scambiano pacchetti protetti. Tuttavia l'uso predominante di IPsec è la creazione di reti private virtuali; per conseguire tale scopo possono essere utilizzati entrambi i metodi prima esposti.

Introduzione IPsec è una collezione di protocolli formata da: Protocolli che implementano lo scambio delle chiavi per realizzare il flusso crittografato. Protocolli che forniscono autenticazione, integrità e riservatezza del flusso di dati.

Esiste un solo protocollo per lo scambio delle chiavi, il protocollo IKE. IPsec è parte integrante di IPv6, mentre è opzionale in IPv4. Di conseguenza, ci si aspetta che sarà maggiormente utilizzato quando IPv6 acquisterà popolarità. Il protocollo è definito negli RFC 2401-2412. Dal 2004 sono in corso studi per l'aggiornamento dei protocolli.

Per quanto riguarda il secondo aspetto, esistono due protocolli: Authentication Header (AH) e Encapsulating Security Payload (ESP).

AH fornisce autenticazione e integrità del messaggio, ma non offre la riservatezza ed è il protocollo IP 51. ESP fornisce invece autenticazione, riservatezza e controllo di integrità del messaggio ed è il protocollo IP 50. Per questi motivi ESP è molto più usato di AH.

Dettagli tecnici IPsec supporta due modalità di funzionamento: Transport mode connessione host-to-host; usato dagli end-point, non dai gateway; in caso di cifratura, viene cifrato solo il payload dei datagrammi IP, non l'header; computazionalmente leggero; ogni host che vuole comunicare deve avere tutto il software necessario ad implementare IPsec; si aggiunge solo l'header IPsec; gli indirizzi mittente e destinatario degli end-point sono rilevabili. Tunnel mode connessione gateway-to-gateway; in caso di cifratura, viene cifrato tutto il pacchetto IP originale; utilizzato per realizzare le VPN; computazionalmente oneroso; solo i gateway devono avere il software IPsec; si hanno punti di centralizzazione, quindi single point of failure; utilizza un doppio incapsulamento, ponendo come payload della comunicazione tra indirizzi gateway quanto si ottiene cifrando l'unione di indirizzi mittente e destinatario degli end-point col payload effettivo; adottando il protocollo Encapsulating Security Payload, gli indirizzi mittente e destinatario degli end-point non sono quindi più rilevabili (restano invece rilevabili adottando AH).

Le due modalità sono supportate sia da AH che da ESP.

IPsec può essere utilizzato anche per connessioni tra gateway e host.

Security Association e Security Policy Il concetto di Security Association (in breve SA) è alla base del funzionamento di IPsec. Una SA è un "contratto" fra le due entità coinvolte nella comunicazione; in essa vengono stabiliti i meccanismi di protezione e le chiavi da utilizzare durante il successivo trasferimento dei dati. Nell'ambito di IPsec, stabilire le security association è compito del protocollo IKE, sebbene sia possibile anche impostarle manualmente; la procedura manuale è sconsigliata in quanto può introdurre errori che indeboliscono il tunnel.

Una peculiarità delle SA è che individuano una comunicazione unidirezionale; quindi durante la creazione della connessione le entità coinvolte creano e gestiscono una SA per ognuno dei versi della comunicazione, quindi 2 SA individuano un canale full-duplex. Al fine di semplificare la gestione delle SA, viene utilizzato un apposito database detto SAD (Security Association Database), dove viene tenuta traccia delle SA attive. In particolare una SA è costituita dai seguenti parametri: Gli indirizzi IP dei peer coinvolti nella comunicazione; Il protocollo che verrà utilizzato per il tunnel (AH o ESP); le tecniche di cifratura utilizzate e le relative chiavi; Un intero a 32 bit chiamato SPI, acronimo per Security Parameter Index. Dall'esame dei parametri di una SA si deducono quindi tutte le informazioni necessarie per stabilire le modalità in cui il traffico debba essere protetto; il passo successivo è definire quale traffico debba essere protetto: di questo si occupa la Security Policy (in breve SP). Una SP è una regola che stabilisce che tipo di traffico deve essere instradato nel tunnel e quindi essere coperto da IPsec; in modo analogo alle SA, le SP sono contenute in un SPD (Security Policy Database). La security policy contiene: Indirizzo sorgente e indirizzo destinazione del pacchetto. Tale informazione è già contenuta nella SA e quindi può sembrare ridondante. In realtà questa informazione ha senso quando viene utilizzato il Tunnel mode. Il protocollo e la relativa porta da instradare nel tunnel. Questa opzione dipende dall'implementazione del protocollo e non è sempre contemplata; nel caso non sia disponibile, tutto il traffico prodotto viene veicolato nel tunnel. Un identificativo della SA da utilizzare per processare i dati. Una volta stabilita la security association e la security policy, può cominciare la comunicazione che sfrutterà il protocollo AH o il protocollo ESP cui verrà passato il parametro SPI, che permetterà di risalire alle tecniche crittografiche da utilizzare per la trasmissione.

Protocolli di IPsec IKE

Descrizione IKE è un acronimo per Internet key exchange ed è il protocollo usato per stabilire una security association nella suite di protocolli IPsec. Questo protocollo è definito in RFC 4306. È un protocollo di livello applicazione e utilizza il protocollo UDP come protocollo di trasporto; la porta su cui viene stabilita la connessione è 500.

L'obiettivo di IKE è stabilire uno shared session secret, ossia una chiave condivisa corrispondente alla sessione da instaurare e a tal fine utilizza l'algoritmo di Diffie-Hellman; dallo shared secret vengono successivamente derivate le chiavi crittografiche che verranno utilizzate per la successiva comunicazione. 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 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). 0 1 2 3 Header successivo Dimensione Payload RISERVATO Security Parameter Index (SPI) Sequence NumberDati 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. Sequence Number Una successione di numeri monotonicamente crescenti. Per impedire i replay attack, il sequence number 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 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 (TCP, 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.

Header IP Header TCP Dati Pacchetto IP originale

A seconda della modalità di funzionamento di IPsec (tunnel mode o transport mode), il pacchetto originale viene alterato in modo diverso. Header IPHeader AH Header TCP Dati dati autenticati AH in transport mode

Header IP esternoHeader AH Header IP Header TCP Dati dati autenticati AH in tunnel mode

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 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 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) Descrizione Encapsulating Security Payload, denotato con l'acronimo ESP, è un protocollo che fa parte della suite IPsec. Il suo obiettivo è fornire autenticità, confidenzialità e controllo di integrità alla comunicazione. Contrariamente a quanto fa AH, l'header IP non viene coperto dai controlli. Al pari di AH, però, supporta sia il tunnel mode che il transport mode.

Formato del pacchetto