1. IPsec Cos'è ? IPsec [2] (IP Security) è una suite di protocolli utilizzati per creare reti private virtuali [1] (VPN). Università dell'Insubria - Relazione di Sicurezza Definizione IETF (Internet Engineering Task Force): “ Protocollo di sicurezza a livello rete sviluppato per fornire servizi di sicurezza crittografica che fornisce un supporto flessibile per autenticazione, integrità e confidenzialità .†IPsec sta diventando lo standard di fatto per la creazione di VPN.
2. Tipi di VPN LAN-to-LAN VPN: La connessione di due reti private per formare una sola rete privata virtuale. Client-to-LAN VPN: L’estensione di una rete privata per consentire l’accesso remoto agli utenti che diventano parte della rete privata. Università dell'Insubria - Relazione di Sicurezza
5. Protocolli di IPsec Università dell'Insubria - Relazione di Sicurezza IKE: Internet Key Exchange[2] Fornisce un framework per la negoziazione dei parametri di sicurezza e lo scambio delle chiavi. ESP: Encapsulating Security Payload[4] fornisce un framework per la sicurezza dei dati e opzionalmente l'autenticazione. AH: Autentication Header[3] fornisce un framework per l’autenticazione e la sicurezza dei dati.
6. IKE Università dell'Insubria - Relazione di Sicurezza È una combinazione di 3 diversi protocolli: SKEME: Fornisce un meccanismo per l’utilizzo di crittografia a chiave pubblica per scopi di autenticazione. Oakley: Protocollo per lo scambio delle chiavi basato su Diffie-Hellman. ISAKMP[2]: Definisce l’architettura di scambio di messaggi, inclusi i formati dei pacchetti e le varie transizioni tra nodi IPsec.
7. ISAKMP Università dell'Insubria - Relazione di Sicurezza È un protocollo che definisce: Le procedure necessarie per attivare, negoziare, modificare e cancellare le Security Association[1] (SA). I formati dei pacchetti per lo scambio dei dati di generazione e autenticazione delle chiavi.
8. Procedure Università dell'Insubria - Relazione di Sicurezza Un tunnel IPsec viene costruito attraverso le seguenti fasi: Un nodo IPsec inizializza il collegamento con il nodo remoto o con la rete remota. I due nodi creano una Security Association (SA), ovvero un canale sicuro da utilizzare per i messaggi. I due nodi utilizzano la SA appena creata per negoziare le Security Association (SA) per altri protocolli. I dati iniziano a passare attraverso il tunnel criptato utilizzando le tecniche di incapsulamento AH o ESP.
9. Formati Università dell'Insubria - Relazione di Sicurezza L’intestazione di un messaggio ISAKMP ha la seguente struttura: Un messaggio ISAKMP è costituito da un’intestazione seguita da uno o più payload. Tutto ciò viene trasportato con il protocollo UDP.
10. Tipi di negoziazione IKE Università dell'Insubria - Relazione di Sicurezza IKE può realizzare diversi tipi di negoziazione:
11. Main Mode Università dell'Insubria - Relazione di Sicurezza La modalità “Main Mode[1]†avviene tramite lo scambio di 6 messaggi tra i due nodi IPsec.
12. Messaggio 1 (initiator -> responder) Università dell'Insubria - Relazione di Sicurezza SA Payload: Transform Payload: Proposal Payload:
13. Messaggio 2 (responder -> initiator) Università dell'Insubria - Relazione di Sicurezza SA Payload: È identico al precedente. Proposal Payload: Contiene le informazioni che il Responder ha deciso di accettare. Transform Payload: Contiene le informazioni che il Responder ha deciso di accettare.
14. Messaggio 3 (initiator -> responder) Università dell'Insubria - Relazione di Sicurezza Key Exchange Payload : Nonce Payload: Contiene il valore pubblico di Diffie-Hellman:
15. Messaggio 4 (responder -> initiator) Università dell'Insubria - Relazione di Sicurezza KE Payload: Contiene il valore pubblico di Diffie-Hellman: Nonce Payload: Contiene il nonce del responder N r
16. Calcolo delle chiavi Università dell'Insubria - Relazione di Sicurezza A questo punto entrambi i nodi sono in grado di calcolare il segreto condiviso: initiator: responder: A partire dal segreto condiviso S initiator e responder calcolano 3 chiavi: SKEYID: SKEYID_d: SKEYID_a: SKEYID_e:
17. Messaggio 5 (initiator -> responder) Università dell'Insubria - Relazione di Sicurezza Identification Payload : Hash Payload : Contiene un valore di hash calcolato nel seguente modo:
18. Messaggio 6 (responder -> initiator) Università dell'Insubria - Relazione di Sicurezza Identification Payload: Contiene ID-R. Hash Payload: Contiene un valore di hash calcolato nel seguente modo:
19. Autenticazione con PSK Università dell'Insubria - Relazione di Sicurezza Se i due valori di hash calcolati da Initiator e Responder sono gli stessi allora la sessione viene autenticata e quindi è stata creata la SA. Initiator: Responder: Decifra il messaggio 6 utilizzando SKEYID_e Trova la PK-R (Preshared-Key del responder) utilizzando ID-R Calcola HASH_R Se HASH_R ricevuto = HASH_R calcolato l’autenticazione ha successo Decifra il messaggio 5 utilizzando SKEYID_e Trova la PK-I (Preshared-Key del initiator) utilizzando ID-I Calcola HASH_I Se HASH_I ricevuto = HASH_I calcolato l’autenticazione ha successo
20. Aggressive Mode Università dell'Insubria - Relazione di Sicurezza Nell’aggressive mode[1] si ottiene lo stesso risultato che con il main mode, ma in soli 3 scambi di messaggi.
21. Quick Mode Università dell'Insubria - Relazione di Sicurezza Come la modalità Main mode è usata per concordare i parametri dell’ISAKMP SA, la modalità quick mode[1] è usata per concordare i parametri della IPsec SA. Nel nostro esempio, supponiamo che l’iniziatore ha deciso di utilizzare una proprietà conosciuta come Perfect Forward Secrecy (PFS).
22. Messaggio 1 (initiator -> responder) Università dell'Insubria - Relazione di Sicurezza Hash Payload : Valore di hash calcolato a partire dal segreto S e dal Nonce N i . SA Payload : Identico a quello del main mode. Proposal Payload : Contiene il tipo di incapsulamento e l’SPI. Transform Payload : Contiene la modalità tunnel o transport, l’algoritmo di crittografia, l’algoritmo di hash e il metodo di autenticazione. KE Payload : Contiene il valore Nonce Payload : Contiene il nonce dell’initiator N i ID-S Payload : ID-source in genere è l’indirizzo IP dell’initiator. ID-D Payload : ID-destination in genere è l’indirizzo IP del responder.
23. Messaggio 2 (responder -> initiator) Hash Payload : Valore di hash calcolato a partire dal segreto S e dal Nonce N r . SA Payload : Identico a quello del main mode. Proposal Payload : Contiene il tipo di incapsulamento e l’SPI nella direzione opposta. Transform Payload : Contiene la modalità tunnell o transport, l’algoritmo di crittografia, l’algoritmo di hash e il metodo di autenticazione scelti dal responder. KE Payload : Contiene il valore Nonce Payload : Contiene il nonce dell’responder N r ID-S Payload : ID-source in genere è l’indirizzo IP dell’initiator. ID-D Payload : ID-destination in genere è l’indirizzo IP del responder.
24. Calcolo delle chiavi Università dell'Insubria - Relazione di Sicurezza A questo punto entrambi i nodi sono in grado di calcolare il segreto condiviso: initiator: responder: A partire dal segreto condiviso S initiator e responder calcolano la chiave per la IPsec SA: Initiator: Responder:
25. Messaggio 3 (initiator -> responder) Università dell'Insubria - Relazione di Sicurezza Hash Payload : L’ultimo messaggio viene inviato per verificare la “Liveness†del responder. Esso contiene semplicemente un Hash calcolato nel seguente modo: Questo messaggio serve al responder per sapere se il messaggio 2 è arrivato all’initiator. Dopo che il responder ha ricevuto il messaggio 3 la negoziazione della SA è terminata e la SA può essere utilizzata per lo scambio dei dati sicuri.
26. Autenticazione con Digital Signature Università dell'Insubria - Relazione di Sicurezza L’unica differenza tra l’autenticazione con Preshared Key e Digital Signature è nei passaggi 5 e 6 del main mode. La prima differenza importante riguarda il modo in cui le SKEYs vengono generate:
27. Messaggio 5 (Digital Signature) Università dell'Insubria - Relazione di Sicurezza ID Payload : Contiene un identificativo per l’initiator come l’indirizzo IP o il nome dell’host. Signature Payload : Contiene la signature dell’initiator calcolata nel seguente modo:
28. Messaggio 6 (Digital Signature) Università dell'Insubria - Relazione di Sicurezza ID Payload : Contiene un identificativo per il responder come l’indirizzo IP o il nome dell’host. Signature Payload : Contiene la signature del responder calcolata nel seguente modo:
29. Autenticazione con Digital Signature Università dell'Insubria - Relazione di Sicurezza Se i due valori di hash calcolati da Initiator e Responder sono gli stessi allora la sessione viene autenticata e quindi è stata creata la SA. Initiator: Responder: Decifra il messaggio 6 utilizzando SKEYID_e Decifra HASH_R usando PK_R Calcola HASH_R Se HASH_R ricevuto = HASH_R calcolato l’autenticazione ha successo Decifra il messaggio 5 utilizzando SKEYID_e Decifra HASH_I usando PK_I Calcola HASH_I Se HASH_I ricevuto = HASH_I calcolato l’autenticazione ha successo
31. Sicurezza IKE (2) Università dell'Insubria - Relazione di Sicurezza Replay Attack: In un attacco a replay [2], un estraneo ottiene copia di un pacchetto e successivamente lo ritrasmette alla destinazione prevista. Questo può causare problemi al funzionamento del servizio. Il Nonce ha lo scopo di sventare questo genere di attacchi.
33. Openswan Università dell'Insubria - Relazione di Sicurezza OpenSwan[6] è l’implementazione IPsec più diffusa sui Linux recenti. Deriva da FreeSwan, progetto non più mantenuto. Il progetto è composto da 2 componenti: KLIPS : Il modulo del kernel per il supporto IPsec. PLUTO : Demone che implementa il protocollo IKE.
34. File di Configurazione di Openswan Università dell'Insubria - Relazione di Sicurezza Openswan utilizza principalmente 2 file di configurazione per configurare una connessione IPsec: /etc/ipsec.secrets : Contiene le chiavi RSA pubbliche e private oppure la PSK. /etc/ipsec.conf : Contiene i setting, le opzioni e le connessioni per openswan.
35. Il file “/etc/ipsec.conf †Università dell'Insubria - Relazione di Sicurezza Il file è suddiviso in 3 sezioni: config setup : Parametri e opzioni globali. conn %default : Opzionale, è una sezione di default che contiene parametri globali che vengono ereditati dalle “conn†successive. conn nome-connesione : Definizione di una particolare connessione.
36. Il file “/etc/ipsec.secrets †Università dell'Insubria - Relazione di Sicurezza Questo file contiene le chiavi RSA pubbliche e private oppure la PSK dell’host. Il file può essere generato automaticamente lanciando il comando: >ipsec newhostkey –output /etc/ipsec.secrets
39. Avvio di Openswan Per avviare openswan lanciamo il comando: Se tutto funziona correttamente apparira un “log†simile al seguente: Sep 15 20:05 A pluto[20362]: " A-B " #365: initiating Main Mode Sep 15 20:05 A pluto[20362]: " A-B " #365: transition from state STATE_MAIN_I1 to state STATE_MAIN_I2 Sep 15 20:05 A pluto[20362]: " A-B " #365: I did not send a certificate because I do not have one. Sep 15 20:05 A pluto[20362]: " A-B " #365: transition from state STATE_MAIN_I2 to state STATE_MAIN_I3 Sep 15 20:05 A pluto[20362]: " A-B " #365: Peer ID is ID_IPV4_ADDR: ' 192.168.0.1 ' Sep 15 20:05 A pluto[20362]: " A-B " #365: transition from state STATE_MAIN_I3 to state STATE_MAIN_I4 Sep 15 20:05 A pluto[20362]: " A-B " #365: ISAKMP SA established Sep 15 20:05 A pluto[20362]: " A-B " #366: initiating Quick Mode RSASIG+ENCRYPT+TUNNEL+PFS+UP {using isakmp#365} Sep 15 20:05 A pluto[20362]: " A-B " #366: transition from state STATE_QUICK_I1 to state STATE_QUICK_I2 Sep 15 20:05 A pluto[20362]: " A-B " #366: sent QI2, IPsec SA established {ESP=>0xe5f72aaa <0xc51033f4} > /etc/init.d/ipsec {start | stop | restart }
40. host-to-host tunnel (PSK) Università dell'Insubria - Relazione di Sicurezza A volte c’è bisogno di connettere Openswan a un dispositivo che non può gestire chiavi RSA. Immaginiamo che “A†sia questo host. In questo caso dobbiamo modificare il file “/etc/ipsec.secrets†nel seguente modo: 192.168.0.1 192.168.0.2 : PSK segreto Inoltre dobbiamo modificare la connessione nel file “/etc/ipsec.conf †nel seguente modo: conn A-B authby=secret left=192.168.0.1 right=192.168.0.2 type=tunnel auto=start
43. Roadwarriors tunnel (PSK) Università dell'Insubria - Relazione di Sicurezza In questo caso dobbiamo modificare il file “/etc/ipsec.secrets†nel seguente modo su “Aâ€: 192.168.0.1 %any : PSK password Inoltre dobbiamo modificare il file “/etc/ipsec.secrets†nel seguente modo su “Bâ€: %defaultroute 87.9.19.54 : PSK password
44. Altre opzioni di Openswan Università dell'Insubria - Relazione di Sicurezza L'opzione IKE : è usata per impostare i parametri di negoziazione della ISAKMP SA come ad esempio: L'opzione ESP : è usata per impostare i parametri di negoziazione della IPsec SA come ad esempio: ike=â€3des-sha1-96,aes-md5-96“ esp=â€aes256-sha1,aes128-sha1,3des-sha1“ L'opzione aggrmode : imposta l'aggressive mode nella negoziazione della ISAKMP SA: aggrmode=yes
45. Certificati x.509 e openswan Università dell'Insubria - Relazione di Sicurezza Finora abbiamo visto come creare una connessione IPsec per uno specifico utente, ma questo è sicuramente poco scalabile. In questa parte vogliamo creare un server VPN che sia in grado di distribuire differenti credenziali VPN ad ogni singolo utente. Il modo più usato per fare questo è attraverso i certificati X.509. x.509 è uno standard definito dalla ITU-T (International Telecommunication Union - Telecommunication Standardization Sector). I certificati vengono rilasciati da una Autorità di Certificazione (CA) la cui firma apposta sul certificato garantisce il legame tra chiave ed entità .
46. Struttura x.509 Università dell'Insubria - Relazione di Sicurezza La struttura delle CA è di tipo gerarchico: RDNs: Michele Rossi DN(Distinguished Name): C=CA / State=Italy / Locality=Milan / Organization=Microsoft / OU=Sales Staff / UserID=Michele Rossi
47. Struttura di un certificato x.509 Università dell'Insubria - Relazione di Sicurezza Certificate: Version: 3 (0x2) Serial Number: e4...48 Sign Algorithm:sha1WithRSAEnc Issuer: C=CA, ST=Italy, L=Milan, O=Microsoft, OU=Support Staff, CN=Microsoft Root Validity Not Before: Feb 19 Not After : Mar 21 Subject: C=CA, ST=Italy, L=Milan, O=Microsoft, OU=Sales Staff, CN=Michele Rossi Subject Public Key Info: Public Key Algorithm:RSA RSA Public Key: Modulus:00...db Exponent: 65...77 X509v3 extensions: ... Signature Algorithm:sha1WithRSA 2b...5e
48. x.509 e Openswan Università dell'Insubria - Relazione di Sicurezza Quando la connessione è configurata per l’utilizzo di certificati x.509, invece di caricare la chiave privata RSA da â€/etc/ipsec.secrets“, la chiave privata viene caricata dal un file â€.key“ e la chiave pubblica viene caricata da un file â€.certâ€. Questi file vengono caricati automaticamente se vengono inseriti nelle directory corrette: /etc/ipsec.d/certs : contiene i certificati con le chiavi pubbliche. /etc/ipsec.d/cacerts : contiene i CA certificates. /etc/ipsec.d/private : contiene le chiavi private.
51. Conclusioni Università dell'Insubria - Relazione di Sicurezza Sicurezza : IPsec porta un indubbio vantaggio in termini di sicurezza, trasferendo al network layer i problemi di autenticazione e confidenzialità prima risolti con soluzioni tipicamente ad application layer (ad es. ssh, kerberos, ssl). Complessità : l'infrastruttura IPsec è quanto meno complessa sia in termini di protocollo sia per quanto riguarda l'utilizzo di applicativi (come Openswan) o di dispositivi (come i Router ad es: Cisco) che la implementano. Uso limitato : pur essendo stato definito ormai alcuni anni fa IPsec è utilizzato al momento in casi abbastanza limitati.
52. Bibliografia Università dell'Insubria - Relazione di Sicurezza Saadat Malik, Network Security Principles and Practices, Cisco Press, Chap. 13, February 2002. S. Kent, R. Atkinson, Security Architecture for the Internet Protocol, RFC 2401, November 1998 S. Kent, R. Atkinson, IP Encapsulating Security Payload (ESP), RFC 2406, November 1998 S. Kent, R. Atkinson, IP Authentication Header, RFC 2402, November 1998 D. Piper, The Internet IP Security Domain of Interpretation for ISAKMP, RFC 2407, November 1998. Wouters P. & Bantolf K. (2006) Building and integrating Virtual Private Networks with Openswan, Packt Publishing Ltd