IPsec e VPN

Il protocollo di sicurezza IP, noto anche con il nome di IPsec, fornisce sicurezza a livello di rete. IPsec mette in sicurezza i datagrammi IP a livello di rete, tra due qualsiasi entità. Molte organizzazioni utilizzano IPsec per creare delle VPN (Virtual Private Network).
Prima di entrare nello specifico di IPsec, facciamo un passo indietro e cerchiamo di capire cosa vuol dire fornire confidenzialità a livello di rete. Con confidenzialità a livello di rete tra un paio di entità (router e router, host e host, router e host), l'entità che invia cifra i payload di tutti i datagrammi che invia all'entità ricevente. Il payload cifrato potrebbe essere un segmento TCP o UPD o un messaggio ICMP, e così via. Tutti i dati inviati da un'entità all'altra verranno nascosti a terzi che potrebbero sniffare il traffico di rete.
Oltre alla confidenzialità, un protocollo di sicurezza a livello di rete potrebbe, potenzialmente fornire altri servizi di sicurezza.
Potrebbe fornire autenticazione, ma anche integrità dei dati, in modo che chi riceve i dati possa controllare eventuali manomissioni del pacchetto durante il tragitto verso la destinazione. Potrebbe fornire anche prevenzione per gli attacchi di tipo replay, ovvero un generico ricevente può rilevare eventuali datagrammi duplicati che un attaccante potrebbe inviare.
IPsec fornisce meccanismi per tutti questi servizi:

  • confidenzialità
  • autenticazione del mittente
  • integrità dei dati
  • prevenzione attacchi di tipo replay

IPsec e le Virtual Private Network
...

Un'organizzazione che si estende su molte regioni spesso desidera avere la propria rete IP, in modo che i suoi host e server possano inviarsi dati in modo sicuro. Per ottenere questo risultato, l'organizzazione potrebbe sviluppare una propria rete fisica a sé stante (quindi router, collegamenti, server DNS, ecc) generando quindi una vera e propria rete privata (private network); è chiaro che sviluppare una rete del genere (passando per diverse regioni) ha un costo elevato.
Invece di sviluppare e mantenere una rete private, molte organizzazioni oggi creano delle reti private virtuali, ovvero delle VPN, all'interno di Internet stessa. Un semplice esempio di VPN è mostrato nella figura seguente:
Pasted image 20231025165239.png
Questa istituzione consiste di headquarters (sede centrale), una filiale (branch office) e di alcuni impiegati (salespersons) che lavorano da un hotel. In figura è mostrato solo un impiegato.
In questa VPN, quando due host all'interno della stessa rete (per esempio all'interno della sede centrale o all'interno della filiale) vogliono comunicare, utilizzeranno la versione standard di IP (vanilla, un modo per dire classica). Quando invece due host che si trovano in luoghi geograficamente diversi, per esempio un host di un impiegato in hotel e un host della sede centrale, vogliono comunicare viene utilizzato IPsec.
Diciamo che un host nella sede centrale invia un normale pacchetto IP ad un impiegato in un certo hotel nel mondo, il router gateway della sede centrale converte il pacchetto IP vanilla in un pacchetto IPsec e lo inoltra in Internet. Il pacchetto IPsec inoltrato ha un'intestazione IP normalissima, tutti gli altri elementi della rete lo vedranno come un normale pacchetto IP. Come si vede in figura, un pacchetto IPsec include un header IP normale e un header IPsec (e il payload cifrato). Quando il pacchetto giunge all'impiegato, il sistema operativo nel laptop di questo decifra il payload (e fornisce i servizi di sicurezza che abbiamo descritto: integrità dei dati, ecc) e passa il payload decifrato al livello superiore (TCP, UDP).

I protocolli AH e ESP
...

IPsec è molto complesso, è descritto in una dozzina di documenti RFC molto articolati e complessi.
Nella suite di protocolli IPsec ci sono due principali protocolli:

  • il protocollo Authentication Header, AH
  • il protocollo Encapsulation Security Payload, ESP
    Quando un'entità sorgente invia datagrammi messi in sicurezza con IPsec ad un'entità di destinazione lo fa usando AH o ESP. Il protocollo AH fornisce autenticazione del mittente e integrità dei dati ma non fornisce confidenzialità.

Associazioni di sicurezza (security association SA)
...

I datagrammi IPsec sono inviati tra due entità di rete, come due host, due router, un host e un router. Prima di inviare un datagramma IPsec dalla sorgente alla destinazione, entrambi gli estremi della comunicazione creano una semplice connessione logica che è unidirezionale dalla sorgente alla destinazione. Se entrambe le entità vogliono scambiarsi datagrammi IPsec devono essere create due connessioni unidirezionali da un'estremità all'altra e viceversa. Queste connessioni sono chiamate associazioni di sicurezza (security association, SA)
Pasted image 20231025165239.png
Consideriamo ancora la figura di prima e diciamo che ci sono:

  • una sede centrale
  • una filiale
  • e n impiegati in hotel
    Diciamo che c'è una connessione bidirezionale (quindi due unidirezionali) dalla sede centrale alla filiale e una connessione bidirezionale dalla sede centrale agli impiegati.
In questa VPN quante associazioni di sicurezza (SA) ci sono?

Per rispondere a questa domanda dobbiamo notare che ci sono due SA tra il router della sede centrale e quello della filiale; per ogni computer di un impiegato, ci sono due associazioni di sicurezza tra il router della sede centrale. In totale ci sono:

Ricorda che non tutto il traffico inviato in Internet dai router gateway o dai computer saranno messi in sicurezza con IPsec

Per esempio, un host nella sede centrale potrebbe voler accedere ad un server web in internet (non si tratterebbe di una comunicazione con una entità interna all'azienda) l'host potrebbe emettere pacchetti in formato IP vanilla. Un router può emettere entrambi i tipi di pacchetti: IP o IPsec.

Pasted image 20231025171338.png

Vediamo da più vicino com'è fatta una SA
...

Consideriamo la figura sopra.
R1 mantiene delle informazioni di stato sulla SA che includono:

  • un identificatore a 32 bit della SA, chiamato Security Parameter Index (SPI)
  • l'interfaccia della SA (in questo caso 200.168.1.100) e l'interfaccia di destinazione della SA (in questo caso 193.68.2.23)
  • il tipo di cifratura da usare (per esempio 3DES con CBC)
  • la chiave di cifratura
  • il tipo di controllo di integrità (per esempio HMAC con MD5)
  • la chiave di autenticazione
    Quando il router R1 ha bisogno di costruire un datagramma IPsec per inoltrarlo nella SA in figura, il router accede a queste informazioni di stato per determinare come dovrebbe autenticare e cifrare il datagramma. Allo stesso modo il router R2 mantiene le stesse informazioni di stato per questa SA e userà tali informazioni per autenticare e decifrare qualsiasi datagramma IPsec che arriva da essa.
    Un'entità IPsec (router o host) spesso mantiene informazioni di stato per diverse SA. Per esempio nella figura ce abbiamo visto prima, in cui vi sono n impiegati, la sede centrale deve mantenere SA. Un'entità IPsec salva le informazioni riguardo le SA in un database interno, una struttura dati all'interno del kernel del sistema operativo, chiamato Security Association Database.

ESP (Encapsulating Security Payload)
...

Il datagramma IPsec in tunnel mode
...

Avendo fatto una panoramica sulle SA, possiamo adesso descrivere il datagramma IPsec.
IPsec ha due formati di pacchetto, uno chiamato tunnel mode e l'altro chiamato transport mode. La modalità tunnel è più appropriata della modalità trasporto per la creazione di VPN.
Partiamo dal descrivere il formato dei pacchetti di IPsec, potrebbe risultare un tantino noioso, ma vedremo tra poco che i datagrammi IPsec assomigliano ad una nota specialità messicana: l'enchilada.
pngwing.com.png
Di seguito il formato di un pacchetto IPsec.
Supponiamo che il router R1 riceve un normale datagramma IPv4 dall'host 172.16.1.17 (all'interno della sede centrale) che è destinato all'host 172.16.2.48 (all'interno della filiale). R1 usa i seguenti passi per convertire il datagramma IPv4 vanilla in un datagramma IPsec:
Pasted image 20231025175146.png

  • Aggiunge all'estremità di destra del datagramma IP originale (che ha include i suoi header originali) un campo ESP trailer
  • Cifra il risultato usando l'algoritmo e la chiave specificata dalla SA
  • Aggiunge davanti (all'estremità di sinistra) di ciò che è stato cifrato al passo precedente un ESP header; il pacchetto risultante è proprio un'enchilada
  • Crea un authentication MAC sull'intera enchilada usando l'algoritmo e la chiave specificata nella SA
  • Aggiunge il MAC alla fine dell'enchilada formando un payload
  • Alla fine crea un nuovo header IP classico (con tutte le informazioni dei campi necessari per IP classico) e lo aggiunge davanti (alla sinistra) del payload
    Ciò che viene fuori dalla conversione è proprio un datagramma IP classico, seguito da un payload che contiene: un ESP header, il datagramma IP originale cifrato, un trailer ESP e un capo ESP di autenticazione.
    L'indirizzo originale del datagramma ha 172.16.1.17 come indirizzo sorgente e 172.16.2.48 come indirizzo di destinazione. Poiché il datagramma IPsec include il payload il datagramma IP originale, questi indirizzi sono inclusi (e cifrati) come parte del payload del pacchetto IPsec.
Qual è l'indirizzo IP nell'header creato alla fine e aggiunto davanti al payload IPsec?

Questi sono settati con gli indirizzi delle interfacce di sorgente e destinazione alle due estremità del tunnel, vale a dire 200.168.1.100 e 193.68.2.23. Inoltre il protocollo di questa nuova intestazione IPv4 non è settato con TCP, UDP, o altro, ma con il codice 50 che indica che si tratta di un datagramma IPsec che usa il protocollo IPsec.

Quando viene inviato il datagramma, vengono attraversati diversi router della internet pubblica prima di giungere a R2. Ciascun router processerà il datagramma come se si trattasse di un normale pacchetto IPv4.

I campi del trailer ESP
...

Il trailer ESP contiene tre campi:

  • padding: una sequenza di byte senza senso che vengono aggiunti al datagramma affinché abbia una dimensione coerente con la dimensione del blocco utilizzato da un qualche algoritmo che sfrutta cifratura a blocchi;
  • pad-length: indica al destinatario il numero di byte di padding che sono stati aggiunti (e che devono essere rimossi);
  • next-header indica il tipo di dati contenuti nel payload IP originario (per esempio UDP, TCP, ..)
I campi dell'ESP header
...

Davanti al payload cifrato vi è un header ESP che contiene due campi:

  • SPI: che indica all'entità ricevente la SA a cui il datagramma appartiene; in tal modo l'entità destinatario può ricercare nel suo SAD la SA appropriata in cui sono contenute le informazioni di stato per quella SA (come l'algoritmo usato per cifrare/decifrare e le chiavi);
  • il campo numero di sequenza: è utilizzato per difendersi dagli attacchi di duplicazione (replay-attack).

Come abbiamo visto l'entità che invia il datagramma aggiunge un MAC di autenticazione. Come abbiamo detto prima, l'entità mittente calcola un MAC su tutta l'enchilada (formata dall'ESP header, il datagramma IP originale e il trailer ESP, in cui il datagramma e il trailer sono stati cifrati).
Ricorda che per calcolare un MAC, il mittente aggiunge una chiave MAC segreta all'enchilada e poi calcola una hash di lunghezza fissa del risultato. Quando R2 riceve il datagramma IPsec, vede che il pacchetto è diretto proprio a sé stesso. R2 allora processa il datagramma. Poiché il campo protocollo (nell'header IP a sinistra) è 50, R2 vede che si tratta di un datagramma IPsec con ESP per processare il datagramma. Prima di vedere come interagisce con l'enchilada, R2 usa SPI per determinare a quale SA il datagramma appartiene. In secondo luogo, calcola il MAC dell'enchilada e verifica ce il MAC sia consistente con il valore nel campo ESP MAC. Se è così, R2 sa per certo che il datagramma arriva da R1 e non è stato manomesso. Fatto ciò, R2 controlla che il numero di sequenza per verificare che il datagramma sia fresco e non duplicato. Dopo di ché R2 decifra il datagramma originale (cifrato con ESP) utilizzando le informazioni salvate nella SA corrispondente. Rimuove il padding in eccesso ed estrae il datagramma originale IP vanilla. Infine, inoltra il datagramma all'ufficio della filiale.

Nota

Quando R1 riceve il datagramma (non sicuro) dall'host mittente della sede centrale. Tale datagramma è destinato a qualche IP di destinazione fuori dalla sede centrale, come fa R1 a sapere se dovrebbe essere inviato con IPsec o no? E in caso in cui debba essere usato IPsec, come fa a sapere quale SA usare (tra tutte quelle possibilmente attive) per tale compito?
Il problema si risolve come segue. Insieme al SAD (database di SA), l'entità IPsec ha anche un'altra struttura dati che mantiene altri dati. Questa struttura è chiamata Security Policy Database, SPD. L'SPD indica quali datagrammi devono essere convertiti in datagrammi IPsec e per questi, quale SA deve essere usata. Queste informazioni sono mantenute in modo molto simile a le regole dei firewall.
Pasted image 20231025183544.png

Il datagramma IPsec in transport mode
...

Questa modalità è utilizzata per mettere in sicurezza la comunicazione tra due host fissati. Un tunnel ESP in transport mode connette due host.
Pasted image 20231026160911.png
In transport mode, ESP è usato per mettere in sicurezza i protocolli del livello superiore a IP, questo vuol dire TCP oppure UDP, ma anche altri come ICMP e altri protocolli validi.
Si noti che l'header ESP è inserito dopo l'header IP, ma prima del segmento del livello superiore.
Pasted image 20231026161045.png
Come vediamo in figura, il payload, fatto dall'header TCP e dei dati, e l'ESP trailer sono cifrati. L'header ESP non è cifrato, altrimenti, il destinatario non sarebbe in grado di trovare la l'SPI e non avrebbe modo di sapere come decifrare il pacchetto, ma è comunque autenticato. Questo vuol dire che un attaccante, per esempio, non può sostituire l'SPI corrente con un altro, o un altro numero di sequenza.

AH (authentication header)
...

Un datagramma IP è soggetto a manipolazioni arbitrarie da un attaccante. L'header ha il classico checksum, ma questo fornisce solo protezione contro la corruzione. Lo stesso principio è applicato al payload trasportato da un datagrammi, ovvero segmenti a livello di trasporto come TCP e UDP, anche essi sono protetti da checksum, ma anche qui i dati possono essere facilmente manipolati da un attaccante. Alcune situazioni richiedono la verifica che un datagramma IP proviene da chi effettivamente l'ha inviato e i loro payload non sono stati manipolati lungo il transito. Come abbiamo visto tra i servizi offerti da ESP risulta esserci anche l'autenticazione, servizi applicati sfruttando la crittografia. In alcuni casi può essere utile fornire autenticità senza il pesante processo della cifratura. Il protocollo AH fornisce autenticazione agli estremi a integrità dei dati senza l'uso della cifratura.
AH fornisce questo servizio attraverso il calcolo di MAC, chiamato intergrity check value (ICV), su alcune parti dell'intestazione IP e per il payload completo. Il risultato di ICV è piazzato in un header AH e questo è aggiunto al datagramma IP. Il punto esatto in cui viene piazzato l'header AH dipende dalla modalità utilizza: transport mode o tunnel mode.
Di seguito i campi di un header IP, nell'immagine sono stati evidenziati (oscurati) i campi che non sono coperti da autenticazione poiché essi cambiano da un hop all'altro. Essi vengono posti a zero prima del calcolo di ICV.
Pasted image 20231026145728.png
AH è un protocollo con codice numerico 51.

L'header AH
...

La figura sotto mostra il formato di un header AH, come abbiamo specificato la sua precisa locazione varia in base alla modalità con cui viene utilizzato.
Pasted image 20231026145907.png

  • Il campo next header è il numero di protocollo del payload trasportato da AH. Se AH sta proteggendo un datagramma IP che trasporta un segmento TCP allora il numero di protocollo sarà quello di TCP (6). AH potrebbe essere seguito da ESP.
  • Il campo payload length è confusionario per due ragioni. La prima è che, nonostante il nome, si tratta della lunghezza dell'header AH, non la lunghezza del payload che AH sta proteggendo. Secondo, la lunghezza è espressa con il numero di word di 32 bit meno 2, il motivo è che AH un protocollo concepito per IPv6 in cui la lunghezza dell'header è espressa in questo modo (non sbatterci troppo la testa).
  • Il campo security parameter index (SPI), che abbiamo già incontrato nella trattazione di ESP designa la SA cui appartiene il pacchetto AH.
  • Il campo sequence number, anche questo incontrato in ESP è utile per evitare attacchi di duplicazione.
  • Il campo authentication data, contiene il risultato del calcolo della ICV.

Numeri di sequenza (sequence numbers)
...

Facciamo notare quanto può essere difficile verificare i numeri di sequenza per AH che è un protocollo basato su un livello inaffidabile (IP) che offre un servizio di tipo best-effort, in cui non vi è la garanzia che un datagramma, e di conseguenza un pacchetto AH, non venga smarrito, consegnato fuori ordine, o duplicato.
Per cui, per AH, non basta ricordare il numero del prossimo pacchetto che attende e controllare che il pacchetto in arrivo abbia proprio quel numero. Quando un datagramma arriva, il suo numero di sequenza può essere:

  • più grande del più alto numero di sequenza ricevuto
  • più piccolo del più grande numero di sequenza ricevuto, ma non un duplicato di un numero di sequenza di un pacchetto appena ricevuto
  • uguale ad un numero di sequenza di un pacchetto già ricevuto
    Idealmente, quello che vorremmo è accogliere i pacchetti che si ritrovano nei primi due casi e rifiutare i datagrammi nel terzo caso. IPsec usa una anti-replay window.
    Vediamo subito un esempio in cui abbiamo una finestra di lunghezza 4.
    Pasted image 20231026151550.png
    La figura mostra che il più alto numero di sequenza ricevuto ha numero di sequenza 35 e che AH ricorda lo stato dei numeri di sequenza tra 32 e 35 (appunto la lunghezza della finestra: 4).
    Vediamo che il numero di sequenza 32 e 34 non sono stati ricevuti, mentre i numeri di sequenza 33 e 35 si.
    Adesso consideriamo come AH usa questa finestra anti-replay per decidere se accettare un datagramma.
    AH usa tre regole per prendere questa decisione:
  1. rifiutare qualsiasi datagramma con numero di sequenza alla sinistra della finestra. Quindi anche se il numero di sequenza 30, non è stato ricevuto, nello stato in cui si trova attualmente la finestra, tale pacchetto viene rifiutato.
  2. La seconda regola riguarda i numeri di sequenza che ricadono all'interno della finestra. La regole è di accettare numeri di sequenza nella finestra se il numero di sequenza non è marcato con un 1 (che vuol dire che il pacchetto è già stato ricevuto) e rifiutare tutti gli altri. Pacchetti con numero di sequenza 32 o 34 sono accettati. Quando un pacchetto viene accettato il numero di sequenza corrispondente viene marcato con 1.
  3. La terza regola riguarda i numeri di sequenza alla destra della finestra, ovvero di pacchetti che non sono stati ancora ricevuti, essi vengono accettati e la finestra viene fatta scorrere proprio quando arriva uno di questi. Se arriva per esempio il pacchetto con numero di sequenza 37, la finestra scorre, come si vede di seguito.
    Pasted image 20231026152534.png

Processamento pacchetti AH
...

Pacchetti AH in uscita
...

Quando un SA per AH viene stabilita, di solito attraverso negoziazioni IKE, l'algoritmo di autenticazione e le chiavi vengono registrate, il contatore per i numeri di sequenza è posto a 0. Quando IPsec determina che ad un pacchetto in uscita dovrebbe essere applicato AH, allora localizza la SA di appartenenza ed esegue il seguente processo:

  1. Un template per un header AH viene posto tra IP e header del livello superiore.
  2. Il numero di sequenza viene incrementato e salvato nell'header. Se il numero di sequenza ha raggiunto il limite allora viene creata un nuova SA e inizializza il numero di sequenza 0.
  3. Il resto dei campi AH, con l'eccezione del campo ICV, vengono riempiti.
  4. Se richiesto, viene aggiunto del padding all'header AH (per lo stesso motivo discusso in ESP)
  5. I campi mutabili dell'header IP e il campo ICV nell'header vengono posti a zero, l'ICV viene calcolato su tutto il datagramma IP. Se è presente un'opzione di routing alla sorgente (preferenze di routing del mittente) nell'header IP, l'indirizzo di destinazione deve essere settato alla destinazione finale prima di calcolare l'ICV.
  6. I campi mutabili vengono riempiti, e l'ICV viene salvato nell'header AH. Se sono presenti opzioni di routing alla sorgente, il campo destination address deve essere nuovamente settato alla prossima destinazione (e ICV viene ricalcolato).
  7. Il datagramma IP viene piazzato nella coda d'uscita per la trasmissione verso la sua destinazione.
Pacchetti AH in entrata
...

I pacchetti autenticati con AH potrebbero essere frammentati, ovviamente, prima che AH possa agire su di essi, il datagramma deve essere interamente ricomposto. Dopo di che AH esegue le seguenti operazioni:

  1. Basandosi sullo SPI nell'header AH e l'indirizzo di destinazione dell'header IP, viene rilevata la SA opportuna. Se non viene rilevata, il pacchetto viene rifiutato.
  2. Se il controllo per il numero di sequenza è abilitato, AH verifica se il numero di sequenza è accettabile (come abbiamo descritto sopra). Se è troppo vecchio o duplicati il datagramma viene rifiutato.
  3. AH copia gli header IP e AH, azzera i campi mutabili dell'header IP e l'ICV di AH.
  4. Tramite l'algoritmo di autenticazione e la chiave specificati nella SA viene calcolato il nuovo ICV per tutto il pacchetto e il risultato viene comparato con quello originale nell'header AH salvato. Se i valori corrispondono, il pacchetto viene accettato, altrimenti no.
  5. L'intestazione AH viene rimossa dal datgramma, i campi originale dell'header IP vengono ripristinati. E il pacchetto viene inserito nella coda di input per essere processato come un normale pacchetto IP.
AH in transport mode
...

Questa modalità è usata per mettere in sicurezza la comunicazione tra due host fissati. Gli estremi sono specifici host invece che due router o un host e un router.
Pasted image 20231026154604.png
Nella modalità trasporto, l'header AH è inserito nel datagramma IP subito dopo l'header IP.
Pasted image 20231026154651.png
Facciamo notare che vi è una riga che mostra che l'autenticazione va da metà header IP fino al payload (data), questo rappresenta il fatto che non tutti i campi dell'header IP vengono autenticati (quelli mutabili vengono esclusi).

AH in tunnel mode
...

La modalità tunnel è usata per connettere due router attraverso un insieme di security gateway (router) oppure un host e un security gateway.

Security gateway: router compatibile con IPsec e tunnel mode.

Pasted image 20231026155553.png
In figura per esempio, poiché i security gateway devono proteggere i datagrammi tra un paio qualsiasi di host nelle due reti, l'incapsulamento è diverso.
Ed è simili a quello che abbiamo trattato per ESP.
Ovvero, invece di inserire un header AH tra l'header IP e il protocollo di livello superiore, l'intero datagramma viene incapsulato piazzandogli davanti un header IP e un header AH.
Pasted image 20231026160013.png
Anche qui, l'header IP esterno è autenticato solo per i campi non mutabili, ma notiamo anche che l'header IP interno è completamente autenticato. Quando i pacchetti passeranno nei router intermedi, vedranno un semplice pacchetto IP (con numero di protocollo che indica AH).

IKE: Key Management in IPsec
...

Quando una VPN ha un numero piccolo di end point (due router per esempio), l'amministratore di rete può manualmente configurare le informazioni delle SA nelle SAD dei due estremi della comunicazione. Questa configurazione manuale non è praticabile quando ci sono tante entità da configurare.
IPsec utilizza Internet Key Exchange (IKE) protocol.
Ogni entità ha un certificato, che include la sua chiave pubblica.

Negoziazione delle chiavi: IKE gestisce la negoziazione delle chiavi per stabilire una sessione di sicurezza condivisa tra i dispositivi che comunicano. Queste chiavi vengono utilizzate per crittografare e decrittografare i dati trasmessi durante la comunicazione.

Autenticazione: IKE verifica l'identità delle parti coinvolte nel processo di negoziazione delle chiavi. Può utilizzare metodi di autenticazione come certificati digitali.

Negoziazione dei parametri di sicurezza: IKE stabilisce i parametri di sicurezza da utilizzare durante la comunicazione IPsec. Questi parametri includono algoritmi di crittografia, metodi di autenticazione, durata delle chiavi e altri dettagli specifici per la SA che devono condividere.

Questo procedimento avviene in due fasi.

Fase uno
...

I due estremi della comunicazione utilizzano Diffie-Hellman per creare una connessione IKE SA (che è diversa dall'SA discussa nel contesto di IPsec) tra i router. IKE SA fornisce un canale di autenticazione e cifrato tra i due router. Durante questa fase vengono stabilite le chiavi per la cifratura e l'autenticazione per l'IKE SA. Ciò che viene stabilito è un segreto su cui si basano le chiavi della SA di IPsec. Durante questa fase non sono usate chiavi pubbliche e private RSA.

Fase due
...

Nella seconda fase, entrami gli estremi rivelano la propria identità all'altro firmando i loro messaggi. In ogni caso, le identità non sono rivelate ad un passive sniffer, dal momento che sono inviate in un canale IKE SA sicuro. Inoltre durante questa fase, i due estremi negoziano la cifratura IPsec e gli algoritmi di autenticazione che devono essere usati dalle SA di IPsec.

Alla fine delle fase due, gli estremi della comunicazione possono cominciare ad usare IPsec.