Il Network Layer è il terzo livello dello stack ISO/OSI. In questo layer troviamo gli algoritmi di routing e il protocollo IP, fondamentali per la comunicazione tra reti diverse. Il protocollo IP però presenta due grosse problematiche relative alla sicurezza, e cioè:
- IP spoofing – riguarda problemi legati all’integrità e all’autenticazione; è la creazione di pacchetti IP con un source address falso, lo scopo è di impersonificare un altro sistema. E' molto usato negli attacchi DoS.
- Packet sniffing - problemi di confidenzialità.
Per far fronte a queste problematiche è nato IPsec che fornisce sicurezza proteggendo i datagram IP tra due entità del livello rete, inclusi host e router.
I principali pro di IPsec, quando è implementato in un firewall o router di frontiera, sono:
- non si ha nessun impatto sul traffico interno della rete, ma solo sul traffico entrante o uscente.
- E’ trasparente alle applicazioni, non bisogna cambiare il software quando IPSec è implementato in un firewall o in un router.
- E’ trasparente agli utenti finali. Ad esempio gli utenti potrebbero comunicare con una piattaforma web utilizzando un tunnel IPsec senza essere a conoscenza di tale tunnel.
- è possibile settare meccanismi di sicurezza in base allo specifico utente o servizio.
Nella suite IPSec ci sono due principali protocolli:
- Authentication Header (AH) che fornisce source authentication e data integrity ma NON confidenzialità.
- Encapsulation Security Payload (ESP) che fornisce source authentication (opzionale), data integrity e confidenzialità. Siccome la confidenzialità è un aspetto critico, di solito si usa ESP invece di AH.
L'Encryption Algorithm è il documento che descrive i vari algoritmi di cifratura usati per ESP.
L'Authentication Algorithm contiene l'insieme dei documenti che descrivono gli algoritmi di autenticazione usati per AH e per l'autenticazione opzionale di ESP.
Il Key Management contiene il documento che descrive come le chiavi sono scambiate tra il sender e il receiver.
Il DOI (Domain of Interpretation) è l'identificatore che supporta entrambi i procolli AH e ESP, contiene i valori necessari per la documentazione correlata.
I datagram IPSec vengono inviati tra coppie di entità di rete: si crea una connessione logica network-layer, chiamata security association (SA) che è unidirezionale, dalla sorgente alla destinazione. Se entrambe le entità vogliono mandare datagram sicuri allora bisogna stabilire due SA, una per ogni direzione.
Esempio di trasmissione di datagram IPSec.
R1 manterrà informazioni di stato riguardo a SA, quando R1 deve costruire un datagram IPSec per inviarlo su SA, accede alle informazioni di stato per determinare come bisogna autenticare e cifrare il datagram.
Un’entità IPSec salva le informazioni di stato per tutte le sue SA in un Security Association DB (SAD), che è una struttura dati del kernel del SO dell’entità. Il Security Parameter Index (SPI) è un tag che aiuta il kernel a dividere due flussi di dati in cui vengono usati diverse regole di cifratura e diversi algoritmi.
Le SA vengono stabilite con l'Internet Security Association and Key Management Protocol (ISAKMP). ISAKMP è un protocollo per stabilire le SA e le chiavi crittografiche in un ambiente Internet, per l'autenticazione e lo scambio di chiavi, ed è progettato per essere key exchange independent.
Protocolli come Internet Key Exchange (IKE) forniscono materiali di codifica autenticati per usarli con ISAKMP.
Funzionamento di IPSec.
Il modulo IPSec esamina il Security Policy DB (SPD) per determinare se l'elaborazione IPSec è abilitata sul traffico uscente.
Per le elaborazioni IPSec abilitate al traffico che non hanno una corrispondenza in SAD, il modulo IPSec richiede al modulo IKE
di stabilire la SA necessaria.
Il modulo IKE negozia ed esegue lo scambio necessario con il modulo peer IKE per stabilire la SA.
Quindi, il modulo IKE inserisce la nuova SA in SAD.
IKE è simile all'handshake SSL. Ogni entità IPSec ha un certificato che include la chiave pubblica dell'entità. Cosi come SSL,
il protocollo IKE ha lo scambio dei due certificati delle entità, negozia gli algoritmi di autenticazione e cifratura, e scambia
le chiavi in modo sicuro per creare le chiavi di sessione nelle SA IPSec.
A differenza di SSL, IKE per completare questi task implementa due fasi:
- durante il primo scambio di messaggi, i due lati usano Diffie-Hellman per creare un IKE SA bidirezionale tra i router. Questa SA IKE bidirezionale è completamente differente dalle SA IPSec, e fornisce un canale cifrato e autenticato tra due router.
- durante il secondo scambio di messaggi, entrambi i lati rivelano la loro identità all'altro firmando i loro messaggi scambiati sul canale sicuro IKE SA. Durante questa fase i due lati negoziano gli algoritmi per la cifratura IPSec e di autenticazione.
La prima motivazione per avere le due fasi in IKE è il costo computazionale; siccome la seconda fase non coinvolge nessuna chiave pubblica, IKE può generare un grande numero di SA tra le due entità IPSec con un costo computazionale piccolo.
IPSec può essere implementato in due modi differenti:
- transport mode: solo il payload del pacchetto IP è cifrato e/o autenticato. Il rounting è intatto, siccome l'header IP non viene ne modificato ne cifrato.
- tunnel mode: l'intero pacchetto IP viene cifrato e autenticato, poi viene incapsulato in un nuovo pacchetto IP con un nuovo header. Questa modalità è più diffusa della transport e viene usata nelle VPN.
La transport mode fornisce protezione ai protocolli dei livelli superiori, ed è usata per le comunicazioni end-to-end.
AH in transport mode autentica il payload IP e le porzioni selezionate dell'header IP.
ESP in transport mode cifra e opzionalmente autentica il payload IP; l'header IP non è protetto.
Questa modalità ha un overhead basso, però alcune informazioni possono essere sniffate.
La tunnel mode protegge tutto il pacchetto IP, ed è usato nelle comunicazioni gateway-togateway: gli header AH/ESP vengono aggiunti al pacchetto IP, l'intero pacchetto viene gestito come se fosse il payload di un nuovo pacchetto IP con un nuovo header. I pacchetti viaggiano attraverso un "tunnel" e nessun router sul cammino è in grado di analizzare il pacchetto originale. Ha più overhead ma è più sicuro.
I problemi di IPSec riguardano:
- i pacchetti spesso possono crescere e diventare più grandi del Maximum Transmission Unit (MTU) per un dato gateway. Alcuni router possono semplicemente rifiutare la frammentazione o l'inoltro di pacchetti che superano una certa taglia. Altri potrebbero gettare i pacchetti frammentati anche se sono di una taglia inferiore al MTU.
- La NAT riscrive l'IP e gestisce le connessioni uscenti mappandole su una specifica porta. Il protocollo IPSec usato per il data transfer non ha porte, e questo causa problemi nell'attraversare firewall NAT.
- Siccome IPSec richiede software client di terze parti è più complicato e costoso da mantenere e da setuppare. Tuttavia questo lo rende più sicuro.
- IPSec è un sistema time-tested (testato nel tempo, è più sicuro ed efficace).