IPsec: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 1:
IPsec è l'abbreviazione di '''IP Security''' ed è uno standard per ottenere connessioni basate su IP sicure.
La sicurezza viene raggiunta attraverso la cifratura e l'autenticazione dei pacchetti [[IP]]. La sicurezza viene fornita, quindi, a [[Livello di rete|livello rete]].
=Panoramica dello standard=
==Introduzione==
IPsec è una collezione di protocolli formata da
Riga 9 ⟶ 8:
Per quanto riguarda il primo aspetto, esistono due protocolli: [[Authentication Header]] (AH) e [[Encapsulating Security Payload]] (ESP).
'''ESP''' fornisce autenticazione, confidenzialità e controllo di integrità del messaggio ed è il protocollo IP 50. '''AH''', invece, garantisce l'autenticazione e l'integrità del messaggio ma non offre la confidenzialità; per questo motivo ESP è molto più usato di AH; AH è il protocollo IP 51.<br>
Attualmente esiste un solo protocollo per lo ''scambio delle chiavi'', il protocollo
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 [[Request_for_Comments|RFC]]s 2401-2412.
Dal [[2004]], sono in corso studi per l'aggiornamento dei protocolli.
==Scopo del progetto==
IPsec è stato progettato per rendere sicure sia comunicazioni ''portal-to-portal'' che 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.
Riga 22 ⟶ 19:
* Tunnel mode
* Transport mode
a seconda della modalità scelta, vengono protetti solo i protocolli di livello superiore o l'intero pacchetto [[IP]]. In Transport mode, viene coperto da IPsec solo il payload del pacchetto IP originale, in quanto l'header IPsec viene inserito dopo l'header del pacchetto IP.
In Tunnel mode, IPsec incapsula il pacchetto IP originale in un nuovo pacchetto IP.
Le due modalità sono supportate sia da AH che da ESP.
=Protocolli di IPsec=
==IKE==
===Descrizione===
IKE è un [[acronimo]] per '''I'''nternet '''k'''ey '''ex'''change ed è il protocollo usato per stabilire una '''security association''' nella suite di protocolli '''IPsec'''. Questo protocollo è definito in RFC 2409. E' un protocollo di livello applicazione e utilizza il protocollo [[UDP]] come [[Livello di trasporto|protocollo di trasporto]]; il porto su cui viene stabilita la connessione è 500.<br> L'obiettivo di IKE è stabilre 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 asimmetrica; in quest'ultimo caso si fa ricorso a strutture [[PKI]] e all'uso di [[certificati digitali]].
==Authentication Header==
===Descrizione===
L''''A'''uthentication '''H'''eader (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]]. Facciamo notare che AH '''non''' garantisce in alcun modo la confidenzialità del messaggio.<br/>
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 calcolata la [[checksum]] tramite una funzione di '''one-way hash'''. Il messaggio e la checksum vengono, infine, inviati al ''peer'' remoto.
Il ''peer'' remoto riceve il messaggio; dato che questo è in chiaro, lo può leggere, combianre con la chiave di cui è a conoscenza e calcolare la checksum. Se la checksum corrisponde a quella inviata, il messaggio è autentico e viene accettato altrimenti viene scartato in quanto è stato modificato in un modo non consentito dallo standard.<br/>
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 la checksum, i campi cui è permesso variare pengono posti a '''0'''.
===Formato del pacchetto===
Di seguito viene illustrata la struttura del pacchetto AH (ogni casella rappresenta 1 [[byte]]).
{| border="1" cellspacing="0" cellpadding="2px"
| style="text-align:center;border:0;width:25%" | 0
| style="text-align:center;border:0;width:25%" | 1
| style="text-align:center;border:0;width:25%" | 2
| style="text-align:center;border:0;width:25%" | 3
|--
<!-- | 0 1 2 3 4 5 6 7 -->
<!-- | 0 1 2 3 4 5 6 7 -->
<!-- | 0 1 2 3 4 5 6 7 -->
<!-- | 0 1 2 3 4 5 6 7 -->
<!-- |-- -->
| style="text-align:center;" | Header Successivo
| style="text-align:center;" | Dimensione Payload
| colspan="2" style="text-align:center;" | RISERVATO
|--
| colspan="4" style="text-align:center;" | Secuity Parameter Index (SPI)
|--
| colspan="4" style="text-align:center;" | Numero di Sequenza
|--
| colspan="4" style="text-align:center;" |
Dati per l'autenticazione (lunghezza variable)
|}
; Header Successivo: Indica che tipo di protocollo verrà dopo.
; Dimensione Payload: Indica la dimensione del pacchetto AH contata in word di 32 bit.
; RISERVATO: Spazio lasciato per sviluppi futri. Tutti i bit di questo campo vengono settati a 0.
; Security Parameter Index: Questo campo identifica i parametri di sicurezza in cmbinazione con l'indirizzo [[IP]]. In genere è un numero pseudo-casuale che identica la [[Security association|security association]] cui fa parte questo pacchetto.
; Numero di sequenza : Una successione di numeri monatonicamente crescenti che serve ad impedire [[replay-attack]].
; Dati per l'autenticazione : Contiene le informazioni necessarie ad autenticare la i dati.
===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.
{| border="1" width="50%" cellspacing=0
|style="width:25%"| Header IP
|style="width:25%"| Header TCP
|style="width:50%"| Dati
|}
<small>Pacchetto IP originale</small>
{| border="2" width="60%" cellspacing=0
|style="width:17%"| Header IP
|style="width:17%;background-color:orange;font-weight:bold"|Header AH
|style="width:17%"| Header TCP
|style="width:50%"| Dati
|}
{| width="60%"
|style="background-color:cyan;text-align:center;"| dati autenticati
|}
<small>AH in transport mode</small>
{| border="2" width="80%" cellspacing=0
|style="width:17%"| Header IP esterno
|style="width:13%;background-color:orange;font-weight:bold"|Header AH
|style="width:10%"| Header IP
|style="width:12%"| Header TCP
|style="width:37%"| Dati
|}
{| width="80%"
|style="background-color:cyan;text-align:center;"| dati autenticati
|}
<small>AH in tunnel mode</small>
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.
==Encapsulated Security Payload (ESP)==
===Descrizione===
'''Encapsulated Security Payload''', denotato con l'[[acronimo]] '''ESP''', è un protocollo che fa parte della suite [[IPsec]]. Il suo obiettivo è fornire confidenzialità e controllo di integrità e autenticità 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===
Di seguito viene riportato il formato del pacchetto '''ESP''' (ogni casella rappresenta 1 [[byte]]).
{| border="1" cellspacing="0" cellpadding="2px" width="50%"
| style="text-align:center;" width="25%"| '''0'''
| style="text-align:center;" width="25%"| '''1'''
| style="text-align:center;" width="25%"| '''2'''
| style="text-align:center;" width="25%"| '''3'''
|--
<!-- | 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7
| 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7
| 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7
| 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7
|-- -->
| colspan="4" style="text-align:center;" | Security Parameters Index (SPI)
|--
| colspan="4" style="text-align:center;" | Sequence Number
|--
| colspan="4" style="text-align:center;border-bottom:none;" |
Payload * (variable)
|--
| style="border-top:none;" |
| colspan="3" style="text-align:center;border-bottom:none;" | Padding (0-255 bytes)
|--
| style="border-right:none;" |
| style="border-left:none;border-top:none;" |
| style="text-align:center;" | Pad Length
| style="text-align:center;" | Next Header
|--
| colspan="4" style="text-align:center;" |
Authentication Data (variable)
|}
; Security Parameters Index (SPI) : Al pari di quanto avviene in [[AH]], questo campo, in combinazione con l'[[IP|indirizzo IP]], individua la [[Security Association]] cui appartiene il pacchetto.
; Sequence Number : Una successione di numeri monoticamente crescente, che identifica il pacchetto all'interno delle Security Association e previene da [[replay-attack]].
; Payload : I dati che devono essere trasferiti
; Padding : È un campo di riempimento. È necessario in quanto alcuni codici di cifratura lavorano su blocchi di lunghezza fissa. Serve a far crescere la dimensione dei dati fino a divenire multiplo del blocco che l'algoritmo in uso riesce a gestire.
; Pad Length : Rappresenta, in bit, la dimensione dei dati di padding aggiunti.
; Next Header : Identifica il protocollo dei dati trasferiti
; Authentication Data : Contiene i dati usati per autenticare il pacchetto.
Come si può vedere dalla struttura del pacchetto (ma sarà illustrato meglio in seguito), ESP "''avvolge''" i dati dei protocolli di livello superiore, contrariamente a quanto fa AH che antepone un header.
=== Tunnel mode e Transport mode===
Essendo un protocollo per il trasferimento dati della usite IPsec, ESP supporta sia il Tunnel mode che il Transport mode. A seconda della modalità tratta i dati in modo differente. Prima di descrivere l'incpsulamento dei dati mostriamo il pacchetto IP originale, che transiterebbe sulla rete in assenza di IPsec
{| border="1" width="50%" cellspacing=0
|style="width:25%"| Header IP
|style="width:25%"| Header TCP
|style="width:50%"| Dati
|}<small>Pacchetto IP originale</small>
{| border="1" width="85%" cellspacing="0"
|style="width:13%;border:1;" | Header IP
|style="width:13%;background-color:orange;font-weight:bold" | Header ESP
|style="width:13%;background-color:lime" | Header TCP
|style="width:35%;background-color:lime" | Dati
|style="width:13%;background-color:orange;font-weight:bold" | Trailer ESP
|style="width:13%;background-color:orange;font-weight:bold" | ESP auth
|}
{| width="85%"
|style="width:13%;"|
|style="background-color:cyan;text-align:center"| Dati autenticati
|style="width:13%;"|
|}<small>ESP in Trasport mode</small>
{|width="90%" cellspacing="0" border="1"
|style="width:11%;" | Header IP
|style="width:11%;background-color:orange;font-weight:bold" | Header ESP
|style="width:16%;background-color:lime" | Header IP interno
|style="width:16%;background-color:lime" | Header TCP
|style="width:24%;background-color:lime" | Dati
|style="width:11%;background-color:orange;font-weight:bold" | Trailer ESP
|style="width:11%;background-color:orange;font-weight:bold" | ESP auth
|}
{|width="90%"
|style="width:11%"|
| style="background-color:cyan;text-align:center;"| Dati autenticati
|style="width:11%"|
|} <small>ESP in Tunnel mode</small>
Le linee azzurre sottendono la parte di pacchetto che viene sottoposta a controllo di autenticità e integrità; le zone verdi indicano le zone di pacchetto che vengono protette tramite algoritmi crittografici. Per quanto riguarda gli algoritmi di cifratura possono essere utilizzati [[DES]], [[3DES]], [[AES]] e [[Blowfish]].
Il controllo di integrità e autenticità viene eseguito tramite [[HMAC]] (funzioni di [[hash]]);
l'hash viene calcolato tramite una funzione di hash ([[MD5]] o [[SHA1]]), utilizzando una chiave condivisa; l'hash ottenuto viene allegato al messaggio e inviato. In ricezione viene controllata l'integrità del messaggio. Dagli schemi visti prima si nota che l'indirizzo IP più esterno non viene coperto dal controllo di integrità. Tale opzioni rende il protocollo ESP adatto ad essere utilizzato in alcuni tipi di [[NAT]], in particolare in quelli statici. Tuttavia esistono soluzioni ''ad-hoc'' per il funzionamento congiunto di IPsec e NAT come il [[NAT Traversal]].
; RFC 2401: Security Architecture for the Internet Protocol
; RFC 2402: Authentication Header
Riga 41 ⟶ 197:
; RFC 2412: The OAKLEY Key Determination Protocol
http://www.ipsec-howto.org/italian/x151.html
[[en:IPSEC]]
[[de:IPsec]]
[[es:IPsec]]
[[nl:IPSec]]
[[ja:IPsec]]
[[pl:IPsec]]
[[fi:IPsec]]
[[zh:安全IP]]
[[Categoria:Standard Internet]]
[[Categoria:Protocolli di rete]]
[[Categoria:Protocolli crittografici]]
| |||