IPSec.

Il protocollo IPSec risiede a livello 3 (rete) del modello OSI e assicura la segretezza e l'integrità dati, oltre che la protezione dagli attacchi di risposta. La criptografia è realizzata con l'uso di una chiave simmetrica.

Le informazioni di sicurezza sono contenute nell'intestazione del pacchetto. Queste possono essere:

AH serve per autenticare, mentre ESP cripta e autentica il flusso dei pacchetti che transita sulla connessione.

Il processo di Autenticazione calcola un Integrity Check Value (ICV), applicando una funzione hash come MD5 o SHA-1 al contenuto del pacchetto e criptando il risultato con una chiave segreta nota a entrambi i sistemi terminali. Anche il destinatario calcola e cripta la ICV nello stesso modo. Se il calcolo effettuato dal destinatario corrisponde allo stesso valore ricevuto allora il mittente viene autenticato.

Transport mode

Il modo Trasporto fornisce una connessione sicura tra due punti terminali incapsulando la parte dati di un pacchetto IP,

Tunnel mode

Il modo Tunnel incapsula l'intero pacchetto IP in un nuovo pacchetto IP, allo scopo di creare un percorso virtuale protetto tra due router, detto anche un tunnel sulla rete Internet, la quale non è affidabile.

La fase di criptografia usa una chiave segreta per codificare i dati da trasmettere allo scopo di nascondere il contenuto del pacchetto ad un eventuale intruso che intercetta il pacchetto.

Protocollo per lo scambio delle chiavi

Affinchè i due sistemi terminali (end point) possano creare il tunnel, devono scambiarsi la chiave segreta ipotizzando che questa possa essere intercettata. La comunicazione Manuale della chiave consiste nel trasferirla da un sistema ad un altro attraverso la rete, mentre il metodo IKE (Internet Key Exchange) si basa su un espediente di creazione della chiave senza farla viaggiare sulla rete.

Formato del pacchetto IP

bit 0 4 8 16 32
header IPver hlen TOS pkt len
ID flag frag offset (13 bit)
TTL proto = TCP header checksum
src IP address
dst IP address
Opzioni IPPadding
DatiTCP header
TCP payload

Il campo proto=TCP specifica che il campo dati del pacchetto contiene un pacchetto TCP

Alcuni codici di protocolli contenuti nel pacchetto IP sono:

CodiceProtocollo
1ICMP - Internet Control Message Protocol
2IGMP - Internet Group Management Protocol
4IP within IP (a kind of encapsulation)
6TCP - Transmission Control Protocol
17UDP - User Datagram Protocol
41IPv6 - next-generation TCP/IP
47GRE - Generic Router Encapsulation (used by PPTP)
50IPsec: ESP - Encapsulating Security Payload
51IPsec: AH - Authentication Header

In questa discussione verranno presi in esame gli ultimi due.

IPSec AH

AH è usato per autenticare - non per criptare - il traffico IP, in questa fase ci si assicura di essere in comunicazione con chi effettivamente si pensa di scambiare informazioni, rilevando le alterazioni dei dati in transito, e (opzionalmente) sorvegliare le risposte individuando quelle prodotte, in ritardo, da un attaccante che ha intercettato i pacchetti.

L'Autenticazione viene effettuata criptando il risultato di una funzione hash applicata a tutti i campi del pacchetto IP, tranne i campi modificabili: TTL e checksum, e memorizzando il risultato in una AH header da inviare all'altro interlocutore.

IPSec AH header
next hdrAH lenReserved
SPI (Security Parameters Index)
Sequence Number
Authentication Data
32 bit

Questa AH header contiene cinque campi, e viene inserita tra l'intestazione originaria del pacchetto IP e il payload. Di seguito viene data una descrizione di questi campi, ma la loro utilità può essere meglio compresa solo dopo aver visto il loro impiego.

Transport Mode

Il Transport Mode è usato per proteggere una conversazione tra due host. Questa protezione può consistere in una autenticazione o in una criptografia, o entrambi, ma non è un protocollo di tunneling. Non ha niente in comune con una VPN: è semplicemente una connessione IP sicura.

In Transport Mode il pacchetto IP è modificato solo per includere la nuova intestazione AH tra l'intestazione IP e il pacchetto contenuto nel campo payload (TCP, UDP, etc.). I campi riservati a contenere i codici di protocollo collegano, in una lista concatenata, le varie intestazioni.

Questa lista di protocolli permette la ricostruzione del pacchetto IP originale: dopo che il ricevitore ha convalidato le intestazioni IPsec, le elimina, e viene ripristinato il tipo di protocollo originale (TCP, UDP, etc.) nell'intestazione IP.

Quando il pacchetto giunge a destinazione e supera il controllo di autenticazione, l'intestazione AH viene rimossa e il campo Proto=AH nel pacchetto IP viene sostituito con il "Next Protocol". In questo modo il pacchetto IP viene riportato nella sua forma originaria e può essere consegnato al processo che lo aspetta.