vuoi
o PayPal
tutte le volte che vuoi
Identification: serve ad identificare in modo univoco i vari frammenti in cui può essere
spezzato un pacchetto IP
Flags: utilizzato per il controllo del protocollo e della frammentazione dei datagrammi (può
“Reserved” se settato a 0, “DF” (don’t fragment)
essere se settato a 1 indica che il
pacchetto non va frammentato, “MF” (more fragments) se 0 indica che il frammento è
l’ultimo, tutti i frammenti intermedi sono settati ad 1
indica l’offset (posizione) del frammento in esame rispetto all’inizio del
Fragment Offset: pacchetto originale
indica il tempo di vita del pacchetto, per evitare che vaghi all’infinito per la rete
Time to Live: nel caso in cui non trovi il destinatario
Protocol: indica il codice associato al protocollo utilizzato nel campo dati del pacchetto (se TCP
è 6, UDP 17, IPv6 41…)
campo usato per il controllo degli errori dell’header, ogni tot il checksum
Header Checksum: viene ricalcolato e confrontato con questo campo, se nn c’è
corrispondenza il pacchetto viene scartato
indica l’indirizzo IP associato all’host del mittente del pacchetto (se un utente
Source Address: intermedio si inserisce tra A e B questo campo conterrà il suo IP)
indica l’indirizzo IP associato all’host del destinatario del pacchetto
Destination Address:
Options + padding: (opzioni facoltative) per usi più specifici del protocollo, come info sui
router. Il padding non è altro che un completamento dei 32 bit se le info
sono più brevi (o inesistenti).
IPv6 Header
Sesta versione ma meno utilizzata della quarta, creata per il problema della saturazione di IPv4.
Version: indica la versione del datagramma IP
Traffic Class: indica la classe di priorità del pacchetto rispetto ad altri pacchetti provenienti
dalla stessa sorgente.
Flow Label: usata dal mittente per etichettare una sequenza di pacchetti come se fossero nello
stesso flusso.
la dimensione del payload, cioè di tutto quello che viene dopo l’header,
Payload Length: indica
eventuali estensioni dell’header (che vedremo dopo) vengono considerate
parte del payload
indica il tipo di intestazione che segue l’header di base IPv6
Next Header: (simile al campo
protocol IPv4)
è il limite di salti consentito, praticamente “Time to Live” di IPv4
Hop Limit:
Source Address e Destination Address come per IPv4.
Problemi di sicurezza a livello network
I problemi che si riscontrano sono la lettura dei pacchetti in transito (detto sniffing da parte di terzi), la
modifica dei pacchetti in transito, che include la contraffazione degli indirizzi (di quello sorgente è detto
“spoofing”, di quello di destinazione “Denial of service”, del payload, ecc… Per fornire una
comunicazione sicura a livello di IP è stato introdotto IPSec.
IPSec è un framework per la comunicazione sicura su IP ha specifiche complesse definite in molti RFC
ed è obbligatorio per IPv6 e utilizzabile su IPv4, esso riguarda principalmente 3 aree:
- autenticazione
- riservatezza
- gestione delle chiavi
I servizi di autenticazione e confidenzialità vengono inseriti come intestazioni di estensione in coda
all’header (all’intestazione principale IP).
IPv6 supporta due importanti intestazioni di estensione:
–
- intestazione di autenticazione (Authentication Header AH), per autenticazione e integrità dei
pacchetti e del flusso di traffico
- intestazione ESP (Encapsulating Security Payload) per la riservatezza del contenuto e del flusso di
traffico.
Queste intestazioni possono essere usate insieme o separatamente e sono trasparenti alle applicazioni
e agli utenti finali.
AH e ESP possono essere utilizzate secondo 2 modalità: e lascia invariata l’intestazione IP
- trasporto, che fornisce protezione payload di un pacchetto
- tunnel, fornisce protezione a tutto il pacchetto IP (il pacchetto originale è considerato payload di un
pacchetto IP “esterno” dotato di nuova intestazione IP con aggiunta di AH e ESP, nessun router lungo il
percorso nel tunnel è in grado di esaminare il pacchetto interno).
IPSec in modalità di trasporto
E’ utilizzata per la comunicazione end-to-end tra 2 host ma richiede che entrambi gli host implementino
IPSec.
IPSec in modalità tunnel
L’applicazione tipica di questa modalità è Virtual Private Network (VPN), questa modalità è utilizzata
per una comunicazione gateway-to-gateway (il gateway è un router che collega la rete locale/privata a
internet) dove la connessione dietro i gateway non è protetta (perché rete privata), i gateway devono
implementare IPSec.
Differenza sostanziale tra le 2 modalità
da un host all’altro, Tunnel lo protegge da un gateway all’altro.
Trasporto protegge il pacchetto
–
SA Security Association (Associazioni di Sicurezza)
Dato che le intestazioni AH e ESP utilizzano tecniche crittografiche (come HMAC, cifratura
simmetrica…) le parti che si scambiano dati devono condividere più chiavi segrete e accordarsi sugli
algoritmi di cifratura/decifratura da utilizzare, per fare ciò le parti definiscono un’ associazione di
sicurezza SA.
L’associazione di sicurezza è unidirezionale tra mittente e ricevente e fornisce un solo servizio (AH
oppure ESP), per avere più servizi sullo stesso traffico si combinano più SA.
L’associazione di sicurezza decide come i pacchetti devono essere processati, ovvero determina:
chiavi, vettori di inizializzazione…)
- informazioni relative a AH e ESP (algoritmi crittografici,
- tempo di validità della SA
- modalità di trasporto utilizzata (trasport or tunnel)
In ogni implementazione di IPSec esiste una base di dati che memorizza le SA attive e i relativi
parametri, ogni SA è univocamente identificata da tre informazioni (la chiave primaria del database):
- SPI (Security Parameters Index) è una stringa di bit che identifica univocamente la suddetta
associazione nel database (SPI viene trasportata nell’intestazione AH o ESP e permette di identificare
insieme all’indirizzo IP del sorgente la SA da utilizzare per elaborare l’intestazione)
- Indirizzo IP del sorgente
- Identificatore del protocollo di sicurezza (indica se è di tipo AH o ESP)
E’ inoltre possibile definire delle regole che specifichino a quale traffico applicare la SA, tali regole dette
Security Policy, sono memorizzate nel Security Policy Database (SPD).
Ognuna di queste security policy combina un insieme di selettori, che permettono di selezionare il
traffico, all’identificatore di associazione di sicurezza, da applicare al traffico selezionato.
I possibili selettori sono:
- IP di destinazione;
- IP sorgente;
- UserID (preso dal SO);
- Data Sensitivity Level;
- Transport Layer Protocol;
- Source/Destination Port;
Come generare una SA?
Per generare una SA due host si devono accordare sui parametri (algoritmi, tempo di validità…) e le
chiavi da utilizzare, per fare ciò IPSec prevede 2 modalità:
- Manuale, in cui un amministratore di sistema configura manualmente i gateway IPSec (consigliata per
reti piccole e statiche)
- Automatico, in cui è un sistema automatico a creare le chiavi:
- ISAKMP (Internet Security Association Key Management Protocol) è un protocollo per attivare,
negoziare, modificare, cancellare una SA, ed è indipendente dal protocollo per lo
scambio di chiavi;
Oakley: protocollo per lo scambio di chiavi basato sull’algoritmo Diffie-Hellmann
-
Nello specifico…
Authentication Header (AH) IP, d’integrità e autenticazione di
Un AH fornisce servizi di integrità e autenticazione del pacchetto
alcune informazioni dell’intestazione IP e servizi di “anti-replay” che evitano che il pacchetto possa
essere riutilizzato (ad esempio per attacchi Denial of Service DOS).
L’authentication header è basato sull’utilizzo di un MAC (es. HMAC-MD5-96 o HMAC-SHA-1-96) in cui
le parti devono condividere una chiave segreta
- Authentication Data, contiene un valore ICV (Integrity Check Value) calcolato applicando una
funzione MAC al pacchetto
Il codice ICV (che è un codice MAC) ha una lunghezza variabile ma sempre multipla di 32 bit,
e si calcola sui seguenti elementi:
- payload del pacchetto IP, ovvero tutti i dati del protocollo superiore immutabili (es. segmento
TCP)
intestazione AH, tranne l’Authentication
- Data (che viene imposto a 0 per il computo del MAC)
campi dell’intestazione IP immutabili, ovvero non cambiano durante la trasmissione (es.
- lunghezza dell’intestazione, indirizzo sorgente), o che
hanno un valore prevedibile (es. id di destinazione).
I campi che possono cambiare durante il transito sono
impostati a 0 prima del computo del MAC
Servizio Anti-Replay
Nell’attacco a replay un estraneo ottiene una copia di un pacchetto autenticato e successivamente lo
ritrasmette al destinatario, gli attacchi a replay sono visti come:
- problemi al funzionamento del servizio/protocollo
- attacchi in DoS
Per evitare questo attacco, in IPSec, il mittente quando genera una SA inizializza il contatore di 32bit a
0 (utilizzato per generare numeri in sequenza da inserire in AH), se il contatore raggiunge il limite
–
(2^32 1), il mittente deve creare una nuova SA. Ogni volta che il destinatario riceve un pacchetto,
segna come ricevuto quel numero di sequenza, in questo modo non riterrà validi altri pacchetti futuri
con lo stesso numero.
IPSec non garantisce però l’ordine di consegna dei pacchetti ne che tutti i vengano consegnati, per
questo motivo il ricevente mantiene una finestra di W elementi (di norma W=64) dove ogni elemento è
un numero di sequenza e il valore dell’elemento riporta se è già stato ricevuto il pacchetto con il
ricevuto si controlla che l’elemento della
numero di sequenza corrispondente. Ad ogni pacchetto
finestra che corrisponde al numero di sequenza ricevuto è già stato contrassegnato o no.
In particolare quando si riceve un pacchetto:
- se è nuovo (quindi ha un numero di sequenza mai ricevuto prima) e ricade nella finestra, si verifica il
MAC, se è autentico si contrassegna l’elemento corrispondente nella finestra
- se è nuovo e ricade a destra della finestra, si verifica il MAC, se è autentico si fa avanzare la finestra
finestra o l’autenticazione non va a buon fine, il pacchetto non
- se il pacchetto ricade a sinistra della
viene preso in considerazione.
Intestazione ESP
Fornisce servizio di riservatezza del contenuto del pacchetto, riservatezza (limitata) del flusso del