UNIVERSITÀ DEGLI STUDI DI FIRENZE FACOLTÀ DI INGEGNERIA DIPARTIMENTO DI ELETTRONICA E TELECOMUNICAZIONI ___________________________________
CORSO DI LAUREA IN INGEGNERIA DELLE TELECOMUNICAZIONI Elaborato per il corso di Sistemi Telematici A.A 2007/2008
Virtual Private Networks per Security Context Aware System
14 / 07 / 2008
Candidato Lapo Cioni
[email protected]
Tutor Matteo Bandinelli
[email protected]
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
-2-
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
Indice generale 1
Introduzione al Security Context Aware System ........................................4
2
VPN: Virtual Private Networks ........................................................................7 2.1 Cos'è una VPN ...................................................................................................7 2.2 Classificazione delle VPN ...............................................................................8 2.2.1 IPSec ..........................................................................................................11 2.2.2 PPTP ..........................................................................................................11 2.2.3 L2TP ...........................................................................................................12 2.2.4 SSL/TLS .....................................................................................................12 2.3 Mobile VPN ......................................................................................................14 2.4 Confronto critico: SSL vs. IPSec .................................................................15 2.5 Tipologie di VPN SSL ....................................................................................17 2.6 La gestione dell'autenticazione....................................................................18
3
SSL: Secure Socket Layer .................................................................................21 3.1 Caratteristiche principali di SSL ................................................................21 3.2 La sicurezza in SSL .........................................................................................22 3.3 Le sessioni SSL ................................................................................................24 3.4 I parametri di interesse in SSL ....................................................................28
4
VPN SSL ...................................................................................................................29 4.1 I servizi delle VPN SSL ..................................................................................29 4.2 Gestione della VPN e definizione delle caratteristiche .........................31 4.2.1 Private Network e User remoto ..............................................................31 4.2.2 Soluzioni VPN SSL ...................................................................................32 4.2.3 L'utilizzo delle risorse................................................................................34 4.2.4 Compatibilità: alcuni esempi....................................................................38
5
Conclusioni..............................................................................................................41 Bibliografia..............................................................................................................43 -3-
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
1. Introduzione al Security Context Aware
System Lo scenario dei servizi telematici interattivi è sempre più complesso: aumenta il numero di devices di interazione e di contesti d'uso delle applicazioni; è quindi necessario lo sviluppo di sistemi consapevoli delle informazioni che si stanno trattando, dell'interazione che sta accadendo e del contesto in generale. Per "contesto" si intende qualsiasi informazione che possa essere usata per caratterizzare la situazione di un'entità, ovvero qualsiasi informazione possa essere rilevante per caratterizzare l'interazione fra l'utente e l'applicazione. Quindi un Sistema è 'Context Aware' se esso fa uso del contesto per fornire informazioni rilevanti e servizi utili all'utente, dove il grado di rilevanza e utilità dipende dalle richieste dell'utente e dalle informazioni che esso ha fornito al sistema. La Context Awareness viene differenziata in: - Context Awareness Attiva: dove un'applicazione si adatta automaticamente ai cambiamenti del contesto; - Context Awareness Passiva: dove l'applicazione presenta all'utente la possibilità di scegliere se effettuare un cambiamento di comportamento in funzione di una avvenuta mutazione del contesto. Un sistema Context Aware deve: - raccogliere informazioni relative al contesto - elaborarle - produrre un risultato in maniera autonoma (active) o dopo una scelta dell'utente (passive) I tipi di contesto possono essere: - Fisico (spazio,tempo, posizione geografica) - Ambientale (clima, illuminazione...) - Informativo (listino azionario, notizie del giorno...)
-4-
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
- Personale (profilo dell'utente, salute, umore...) - Sociale (relazione, co-presenza...) - Applicativo (e-mail, siti Web visitati...) - di Sistema (stato delle periferiche, stato delle connessioni, elenco hw e sw in uso e quelli disponibili...) - etc... Fra le informazioni del contesto più rilevanti, per la trattazione che faremo, ci saranno sicuramente: l'identità, le informazioni spaziali e temporali, le risorse accessibili e la conoscenza della tipologia di rete. Un concetto che è inscindibilmente associato alla Context Awareness è l'Ubiquitous Computing, cioè la possibilità di accedere ad un servizio e fruire di una risorsa indipendentemente dal posto in cui ci troviamo; inoltre un requisito che ancora chiediamo a questo scenario è l'indipendenza dalla piattaforma hw e sw di utilizzo; abbiamo quindi definito uno scenario di Ambient Intelligence (AmI). Appare chiaro come in un contesto di questo tipo il lato della sicurezza sia particolarmente delicato: rischia di immobilizzare il paradigma che abbiamo visto, se viene forzatamente applicato sul sistema senza un opportuno adeguamento, oppure, di contro, può aprire falle pericolose se lasciato troppo blando. Abbiamo bisogno di strumenti intelligenti, cioè strumenti che: - abbiano al loro interno capacità computazionali (Embedded), - riconoscano l'utente e il contesto in cui si trovano (Context-Aware), - si adattino all'identità e alle scelte dell'utente (Personalizzati), - attuino azioni al mutarsi del contesto in funzione delle prevedibili esigenze dell'utente (Proattivi). Nell'intento di definire un'architettura di questo tipo, cioè di tipo user-friendly, context aware, persistente e sicura, dobbiamo sicuramente considerare un altro requisito fondamentale delle connessioni che andiamo a trattare: l'aspetto di comunicazione Seamless, ovvero una comunicazione nella quale gli aspetti non rilevanti per l'utente siano ad esso trasparenti; in quest'ottica, ad esempio, se ci troveremo ad utilizzare apparati mobili avremo l'intenzione di -5-
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
offrire un servizio di handoff seamless (sia esso orizzontale, ad esempio fra celle diverse, oppure verticale, ad esempio fra devices diversi), che dovrà quindi essere trasparente all'utente, di tipo Soft (cioè senza perdita di connessione) e Lossless (senza perdita di pacchetti). Di questo aspetto ci interessa particolarmente la palese necessità di integrazione nel sistema di apparati di diversa natura; al momento di una modifica del contesto si potrebbe avere la necessità di effettuare un adattamento sulla struttura hw/sw che stiamo utilizzando ad un livello qualsiasi della struttura: chiamiamo questo requisito di sitema Handoff CrossLayer. Nel passaggio, quindi, da un device ad un altro o da un applicativo ad un altro o ancora da un protocollo di trasporto ad un altro, ci troveremo ad avere a che fare con caratteristiche strutturali diverse ed è proprio qui che dovremo cercare la soluzione migliore del nostro problema a livello di sicurezza. Poichè l'architettura Context Aware fa uso delle informazioni sopra elencate per definire il contesto e agire di conseguenza, essa possiede un elevato numero di dati sensibili, il nostro obiettivo è quindi quello di applicare un certo grado di sicurezza al paradigma della Context Awareness, sostenendo la caratteristica di facilità di switching degli elementi architetturali, in modo da mantenere efficiente il modello. In particolare ci occuperemo di valutare quali possano essere le migliori soluzioni per l'instaurazione di connessioni sicure utilizzando la tecnica delle Virtual Private Network, volendo determinare, fra le possibili implementazioni, quelle che ci permettano un utilizzo più adeguato in ambito di sistemi Context Aware.
-6-
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
2. VPN: Virtual Private Networks 2.1 Cos'è una VPN Con VPN si intende un concetto di rete esteso: con l'utilizzo di soluzioni tecnologiche eterogenee si intende rendere un'associazione di nodi di rete, che possono far parte di reti diverse, come virtualmente appartenenti alla stessa rete logica. I requisiti fondamentali affinchè un'associazione di nodi sia una Virtual Private Network sono quindi: - ogni nodo deve vedere l'altro come se questo appartenesse alla sua stessa rete; - la comunicazione deve essere privata, cioè sicura. Una VPN può portare molti benefici in una comunicazione in rete, fra i quali: - estendere la connettività geografica - aumentare la sicurezza - ridurre i tempi di trasmissione e i costi di trasporto per gli utenti remoti - aumentare la produttività - semplificare la topologia di rete - permettere un accesso sicuro ad aree riservate di una LAN da remoto. Una VPN può essere utilizzata per estendere una rete privata a due o più reti private remote (LAN-to-LAN o Site-to-Site), tramite il passaggio attraverso internet e i rispettivi Gateway delle reti (concentratori di traffico o firewall); può inoltre anche essere utilizzata per collegare un singolo host ad un server VPN (Host-to-LAN o Remote Access), utilizzando un client vpn che verrà configurato con le credenziali di accesso sull'ip pubblico del Gateway vpn, sul Gateway verranno poi definite le policy di sicurezza per filtrare il traffico, cosicchè questo host remoto risulti virtualmente sulla rete locale, componendo un Circuito Virtuale che risulterà equivalente ad una connessione fisica dedicata; infine una terza tipologia di utilizzo di VPN è definita Host-to-Host, dove i due endpoints del tunnel sono appunto singoli host. Il passaggio attraverso internet è trasparente ai terminali, che interagiscono come se fossero collegati tramite una linea diretta. Una VPN può avere performance di tipo Best Effort, oppure il servizio può essere definito da una SLA (Service Level Agreement) stipulata fra l'utilizzatore e l'ISP. -7-
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
Per garantire che solo gli utenti autorizzati accedano alla Rete Privata Virtuale, le VPN utilizzano sistemi di autenticazione, mentre per garantire la sicurezza utilizzano metodi di crittografia. Esistono vari organismi indipendenti, largamente riconosciuti, che certificano interoperabilità e sicurezza dei sistemi informatici, come ad esempio ICSA Labs. Un apparato o un software, che riporti il marchio di ICSA Labs per le VPN IPSec, ha sicuramente superato una serie di test oggettivi e replicabili, che garantiscono la compatibilità con tutte le altre implementazioni certificate ed un adeguato livello di sicurezza. Una VPN porta con sè come dote implicita l'ubiquità in termini di utilizzo: gli host connessi potranno infatti agire come se fossero all'interno di una rete locale, anche se effettivamente potrebbero trovarsi su reti distinte; nel nostro studio, allora, gli utenti che utilizzeranno il sistema saranno supposti dei Road Warriors, cioè utenti mobili. Quello che chiediamo alle VPN operanti in sistemi Context Aware è sicurezza e al tempo stesso interoperabilità e semplicità. Il metodo con il quale implementare una VPN non è univoco, ma dipende dalle scelte che si vogliono fare: esistono vari protocolli che lavorano a livelli diversi e che compongono suite di sviluppo; la scelta della strada migliore da percorrere deve essere fatta anche in base a questa considerazione.
2.2 Classificazione delle VPN Le connessioni VPN si distinguono in 3 grandi gruppi: - Trusted VPN (gestite da un provider) - Secure VPN (gestite dal customer) - Hybrid VPN Una classificazione dettagliata delle Reti Private Virtuali può essere ricavata dal seguente schema:
-8-
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
Immagine 1: Classificazione VPN.
Le Trusted VPN offrono la garanzia che il circuto utilizzato dal cliente non sia accessibile a terzi, garanzia che viene offerta dagli ISP. La loro caratteristica è che non utilizzano un tunnel crittografico, perchè la sicurezza della comunicazione è basata sull'esclusività del circuito di comunicazione, ovvero l'ISP riserva dei canali logici dedicati. La rete privata, in questo caso, non può essere propriamente definita virtuale, le trusted VPN vengono infatti anche dette APN (Actual Private Network) o Tunnel-Based VPN. Si distinguono in: Layer 2 Trusted VPN: - circuiti ATM - circuiti Frame Relay - trasporto del layer 2 sopra l’MPLS Layer 3 Trusted VPN: - MPLS con distribuzione limitata delle informazioni del percorso attraverso il BGP(Border Gateway Protocol).
-9-
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
Le Secure VPN utilizzano invece dei metodi crittografici che permettono di creare un tunnel virtuale isolato dal resto del traffico IP in rete: vengono anche dette Encrypted VPN. I metodi di sicurezza utilizzati intendono offrire i servizi di: confidenzialità, autenticazione, integrità del messaggio e privacy. I protocolli e le suite che implementano le secure VPN sono molti, fra i più importanti ci sono: - IPSec (IP Security) - SSL/TLS - L2TP/v3 (Layer 2 Tunneling Protocol /version 3) - PPTP (Point-to-Point Tunneling Protocol) - OpenSwan (derivato dall'obsoleto FreeSwan) - Altre soluzioni poco utilizzate o obsolete, come: Cipe, Tinc, Vtun, Vpnd... Il terzo macrotipo di VPN è composto dalle Hybrid VPN: si tratta di reti create in parte con Trusted VPN e in parte con Secure VPN. Questo tipo ti reti compongono i pregi e i difetti delle Secure e delle Trusted VPN, infatti: •
Le Secure VPN danno sicurezza, ma non assicurano i percorsi.
•
Le Trusted VPN assicurano le proprietà dei percorsi come QoS, ma non la sicurezza da intrusioni.
Le prospettive che propongono le Hybrid VPN sono molto interessanti, tuttavia la loro implementazione richiede di risolvere una complessità realizzativa piuttosto elevata. Il gran numero di standard e raccomandazioni usati per implementare le reti virtuali private sono codificati dall' IETF (Internet Engineering Task Force). La soluzione delle Trusted VPN è estremamente statica ed è diventata obsoleta, se non per le aziende o le compagnie che abbiano la necessità di ottenere un persorso dedicato per i loro dati; non è questa comunque una soluzione che possa essere adottata in uno scenario dinamico e interattivo come quello che abbiamo descritto, con gli utenti che spesso sono, come detto, dei Road Warriors. - 10 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
Concentriamo il nostro interesse sulle Secure VPN o Customer Provisioned VPN: questo è lo scenario nel quale dovremo infatti muoverci, ovvero un sistema in cui il tunnel possa essere instaurato in maniera dinamica, senza avere vincoli di routing predefiniti in modo che l'accesso alla rete sia semplice e multifunzionale, inoltre ci possiamo limitare a considerare la gestione di VPN di tipo Remote Access, sempre per le considerazioni sul sistema di utilizzo che abbiamo fatto; affinchè una VPN possa essere definita Secure deve garantire: - un sistema di autenticazione - i dati devono viaggiare criptati - il livello di cripting dei dati deve essere elevato e modificabile nel tempo. Analiziamo schematicamente le caratteristiche dei protocolli più utilizzati nelle Secure VPN:
2.2.1 IPSec - IPSec (IP Security): protocollo di livello Rete, standard IETF, parte integrante di IPv6, estensione per IPv4; per l'autenticazione utilizza il protocollo ESP (Encapsulating Security Payload) o l'AH (Authentication Header), fornisce anche il servizio di crittografia dei dati e utilizza IKE (Internet Key Exchange) per lo scambio delle chiavi. E' lo standard più diffuso, generalmente non semplice da configurare ma supportato da molti vendor e sistemi operativi. Su sistemi Linux una delle implementazioni di IPSec si chiama OpenSwan.
2.2.2 PPTP - PPTP (Point-to-Point Tunneling Protocol): è un protocollo di livello DataLink sviluppato dal PPTP Forum, formato da Microsoft, 3COM, US Robotics e altre importanti compagnie, assicura autenticazione, crittazione e compressione dei dati. PPTP lavora instaurando delle sessioni PPP (Point-to-Point Protocol, del quale è un adattamento) con l'ausilio del protocollo GRE (Generic Routing Encapsulation). Nei sistemi Unix si sono sviluppate soluzioni parallele, come il server PPTP chiamato PoPTop. Generalmente PPTP è considerato più insicuro di IPSec, ma più facile da configurare. - 11 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
2.2.3 L2TP - L2TP (Layer 2 Tunneling Protocol): protocollo di livello Sessione, che agisce come uno di livello DataLink, si basa sul L2F (Layer 2 Frowarding) di Cisco e sul PPTP. Il pacchetto L2TP viene incapsulato in un pacchetto UDP (si utilizza la porta 1701), ma questa struttura non comprende meccanismi di sicurezza; allora viene spesso utilizzato in aggiunta al L2Tp l'IPSec, per introdurre confidenzialità, autenticazione e integrità dei dati, formando così la suite L2TP/IPSec. I due endpoints del tunnel L2TP sono detti AC (Access Concentrator) e NS (Network Server). Una delle caratteristiche che rendono piuttosto adattabile questo protocollo è l'assenza di metodi di sicurezza integrati, cosicchè sia possibile aggiungerli sopra di esso (come IPSec) mantenendo un certo grado di indipendenza dalla piattaforma utilizzata. La versione 3 di questo protocollo è stata proposta nel 2005 e ha introdotto nuove caratteristiche di sicurezza metodi di incapsulamento e datalink supportati.
2.2.4 SSL -SSL/TLS (Secure Sockets Layer/Transport Layer Security): SSL è un protocollo progettato da Netscape Communications Corporation ed è stato utilizzato anche come base di sviluppo per il TLS, che è standard IETF (RFC 2246); lavora sotto al livello applicativo e sopra al livello trasporto, composto da due strati, per interfacciarsi ad esempio con HTTP verso l'alto (formando HTTPS) e con un protocollo di trasporto affidabile come TCP verso il basso. Forse è questa la tecnologia più adatta per l'utilizzo delle VPN che stiamo ipotizzando: riconsiderando infatti i tre tipi di utilizzo per una rete privata virtuale visti in precendenza, possiamo pensare che (sempre in ambito di Secure VPN) un'implementazione con IPSec o FreeSwan sia più adatta, o comunque generalmente più diffusa, per collegamenti di tipo LANto-LAN o Host-to-Host, mentre l'utilizzo di SSL può risultare maggiormente efficiente e meno complesso nella configurazione di una VPN di tipo Host-to-LAN (detto anche Host-toSite), che è appunto quella che vogliamo trattare con maggiore attenzione, trattando direttamente la situazione di utente in mobilità e permettendo la semplicità di handoff che abbiamo descritto. Con SSL è possibile instaurare una VPN Host-to-Site utilizzando un normale browser web che lo supporti; l'instaurazione di VPN IPSec richiede invece - 12 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
l'installazione di particolari client software. Configurare una VPN SSL è sicuramente più facile e veloce rispetto ad una VPN IPSec: lato client richiede solo l'utilizzo di una applicazione che integri SSL (può appunto essere un browser web) e il supporto di Java; questa sembra la soluzione più adatta per un sistema scalabile e distribuito come quello in esame. Nel fare queste considerazioni abbiamo ipotizzato che fossero fondamentali i seguenti criteri di valutazione: - Disponibilità della soluzione: facilità nel reperire e distribuire il 'pacchetto soluzione', di integrarlo nelle piattaforme hw/sw - Sicurezza: livello offerto di confidenzialità, autenticazione, sicurezza, nell'ipotesi di trattare reti insicure come internet - QoS: possibilità di priorizzare il traffico in base al tipo - Scalabilità: possibilità di adattare la larghezza di banda offerta al livello di connettività richiesto/necessario - Facilità di gestione nell'implementare la soluzione in maniera distribuita, permettendo di accedere a siti e contenuti informativi diversi. La soluzione più comunemente utilizzata per VPN di tipo Remote Access è stata IPSec VPN; in una rete così composta, le SSL VPN sono state dapprima utilizzate in configurazione SSL over IPSec, ma questa è stata una fase transitoria, per andare incontro sia alle esigenze dei vendor, che hanno avuto bisogno di tempo per poter sviluppare soluzioni all-SSL adeguate, sia alle esigenze dei clienti, molti dei quali stavano già utilizzando VPN IPSec.
- 13 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
2.3 MobileVPN
Uno scenario che può essere utile analizzare è quello delle Mobile VPN (MVPN): si tratta di un particolare scenario di accesso remoto sicuro in cui il dispositivo deve essere in grado di cambiare il proprio indirizzo IP senza perdere la connettività con la propria rete aziendale. Quello che stiamo considerando è lo sviluppo di sistemi che permettano, ad esempio, di accedere alla rete aziendale mediante una connessione Wi-Fi, disponibile presso un albergo o in aeroporto e, senza mai disconnettersi, mantenere l'accesso attraverso la rete UMTS o la rete GPRS (per esempio viaggiando in taxi). Lo scenario MVPN comprende sia le problematiche connesse alla sicurezza dell'accesso remoto attraverso Internet sia quelle della mobilità. I requisiti che impone sono molteplici: si va dalla gestione dinamica dell'autenticazione dei due interlocutori (l'utente che richiede l'accesso e il gateway della rete aziendale) all'instaurazione di un canale sicuro, dalla configurazione di policy di sicurezza alla gestione automatica ed efficiente della mobilità. Le Mobile VPN permettono all'utente di spostarsi senza perdite (seamlessy) fra reti IP-based senza perdere le sessioni applicative o di sicurezza. L'analisi di alcune soluzioni studiate per un contesto MVPN può quindi essere utile per estendere alcuni concetti anche al sistema della Context Awareness, dove mobilità e sicurezza sono senz'altro fra i protagonisti. Utilizzando IPsec per la connessione sicura, un cambiamento dell'indirizzo IP dell'utente remoto, causato da un suo spostamento, provoca un 'disallineamento' tra le security association (nelle due direzioni della comunicazione) presenti tra l'host remoto e il gateway, impedendo la corretta comunicazione tra i due. Un primo modo per permettere la mobilità dell'utente è rinegoziare il tunnel IPSec ad ogni cambiamento di indirizzo IP: sarà sufficiente avviare un nuovo handshake IKE ogni volta che il terminale si sposta da una rete all'altra; un problema che ne deriva è il considerevole Overhead Computazionale derivante dalle ripetute operazioni crittografiche, particolarmente problematico nel caso di utilizzo di dispositivi che non abbiano un'elevata capacità di calcolo come PDA o Smartphone. Altra soluzione basata su IPSec è quella di scindere la gestione della sicurezza dalla gestione della mobilità: una soluzione in questo senso può essere l'utilizzo di IPSec+MobileIP; questa tecnica porta però alla costruzione di un doppio tunnel e quindi ad un Overhead che stavolta è sui pacchetti dati, oltre ad un livello di protezione non molto elevato. Altre soluzioni proposte sono di utilizzare - 14 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
la versione 2 del protocollo IKE, che lascia comunque il problema della mobilità, oppure integrare la gestione della mobilità dentro IKE. Alle questioni finora descritte va aggiunta un'ulteriore limitazione per l'IPSec: sul dispositivo dell'utente che vuole instaurare il tunnel deve essere installato e configurato un client VPN. I motivi, invece, per cui le soluzioni VPN basate su SSL sono più adatte alle esigenze dell MVPN sono molteplici e fra i principali ci sono: - indipendenza dalla piattaforma - client VPN non necessario - gestione delle connessioni in mobilità più semplice, grazie al fatto che SSL è un protocollo di alto livello (liv. Sessione della pila OSI) - semplicità di installazione del tunnel - servizio personalizzabile - minori problemi dovuti alla traduzione del NAT
2.4 Confronto critico: SSL vs. IPSec
Un ulteriore elemento che rende le SSL VPN particolarmente adatte all'utilizzo che ne dobbiamo fare nel nostro contesto di lavoro è il fatto che la rete privata virtuale basata su SSL è in grado di riconoscere il contesto in cui l'utente si trova a tentare l'accesso alla rete, ad esempio se l'utente sta cercando di accedere dall'interno della LAN stessa o dall'esterno; in base a questo possono essere applicate policy di sicurezza distinte: l'accesso può essere concesso, limitato o negato, le autorizzazioni possono essere fatte ad personam e possono riguardare applicazioni specifiche, URL o semplici file. Il livello di sicurezza offerto da SSL può sembrare più scarso di IPSec se ci si basa solo su identificativo e password, ma viene incrementato notevolmente se si affiancano meccanismi di 'Strong Authentication', quali: certificati, smart card o token card. Come inciso, dobbiamo dire che talvolta le aziende possono essere interessate ad ottenere un tipo di connettività data dalla composizione di VPN IPSec e SSL, in modo da suddividere topologicamente la propria rete di comunicazione e distinguere in maniera forte l'accesso, ad esempio LAN-to-LAN rispetto a quello Remoto - 15 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
(Host-to-LAN); ma una trattazione di questo specifico problema esula dagli obiettivi che ci siamo posti. Le convinzioni che finora ci siamo fatti devono però fare i conti con varie realtà: ad oggi esistono comunque molte soluzioni di Mobile VPN montate su IPSec o Free/OpenSwan: - TheGreenBow VPN Mobile (http://www.thegreenbow.com/mobile.html) - Nokia VPN Mobile (http://www.business.nokia.it/A4293201) - Symantec Mobile VPN (http://www.symantec.com/it/it/business/products/overview.jsp? pcid=2241&pvid=mobile_vpn_1) - ... Inoltre OpenSwan offre nativamente ("out of the box") un'estensione molto interessante: la Opportunistic Encryption (OE): permette a due macchine (verosimilmente Host e GW VPN, per l'analisi della configurazione Remote Access) di instaurare una comunicazione cifrata (IPSec) senza che si siano scambiati alcuna informazione precedente; OE sfrutta due strumenti principali: - le chiavi di crittazione asimmetriche (o pubbliche) - un'estensione del DNS, detta DNS Security Extension (DNSSEC). Con OE è possibile andare a prendere la chiave pubblica del destinatario dal server DNSSEC, instaurando così una SA (Security Association) fra gli interlocutori. In OpenSwan OE è settata nella configurazione base e deve essere esplicitamente disabilitata se non si vuole utilizzare i DNS come database delle chiavi pubbliche. Per utilizzare OE devono essere opportunamente configurati i record DNS: il record KEY viene utilizzato per inserire nel DNSSEC le chiavi pubbliche, nel record TXT si indica invece il proprio Security Gateway. La Opportunistic Encryption è particolarmente utile quando le due macchine agli estremi del tunnel non si conoscono e permette loro di instaurare ugualmente un tunnel sicuro. Nonostante la OE sia una soluzione interessante da utilizzare anche in situazioni di utenti in mobilità, restano consistenti i vantaggi che si possono ottenere dall'utilizzo di VPN SSL in ambito Context Aware System, primi fra i quali ci sono sempre l'assenza della necessità di un client, la facilità di installazione, i minori costi implementativi, la miglior integrazione con firewall e NAT, soprattutto in caso di configurazioni di reti dinamiche, in cui le regole di filtering variano spesso. Come detto, uno dei punti di forza delle VPN SSL è che non è necessario installare e - 16 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
configurare un software su ogni endpoint: SSL utilizza un browser web standard e instaura una connessione a livello applicativo, anzichè a livello rete come succede con IPSec. L'utilizzo di SSL è ideale per gli utenti mobili perchè: •
non necessita di essere scaricato sul device che viene usato per accedere alle risorse
•
non necessita di essere configurato dall'utente finale
•
è disponibile ovunque ci sia un web browser standard ed è indipendente dal Sistema Operativo.
Poichè SSL opera a livello applicativo, è possibile offrire controlli di accesso alle applicazioni granulari, rendendo questa tecnologia una buona soluzione anche per gli utenti che accedono da reti non sicure; la flessibilità di SSL permette di accedere da ovunque e di modificare i metodi di accesso e le risorse accedibili agli utenti quando il contesto cambia. A livello di sicurezza, inoltre, IPSec e SSL sono molto simili: entrambi supportano metodi per la crittazione, il controllo d'integrità e l'autenticazione (3-DES, RC4, AES, MD5 o SHA-1).
2.5
Tipologie di VPN SSL
La nostra scelta per l'implementazione di VPN in ambito Security Context Aware System cade quindi decisamente sulle VPN SSL, avendo anche ipotizzato che la maggior parte del traffico di rete nel contesto generale analizzato si adatti meglio al paradigma Client-Server e sia quindi adattabile al modello Remote Access, anzichè a quello Site-to-Site, che è indicativo di connessioni di tipo Peer-to-Peer; fra le VPN SSL esistono varie tipologie, che andiamo a descrivere: le VPN SSL si dividono in tre gruppi fondamentali: - WebVPN (o clientless VPN): l'utente ha bisogno solamente di un browser web abilitato SSL per accedere ai server http o https della LAN, il client è remoto; con queste VPN si può anche accedere ai file Windows con CIFS (Common Internet File System); - Thin Client SSL VPN (Port Forwarding): l'utente deve scaricare una Java applet per l'accesso sicuro ad applicazioni TCP-based che utilizzano porte statiche, mentre UDP non è - 17 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
supportato. Esempi sono l'accesso con POP3 (Post Office Protocol), IMAP (Internet Message Access Protocol), SMTP (Simple Mail Transfer Protocol), SSH (Secure Shell) e Telnet. L'utente ha bisogno del supporto della piattaforma Java (una JRE) e dei privilegi di amministratore in locale, poichè l'applet deve essere installata sulla macchina locale; - SSL VPN Client (SVC Tunnel mode): si scarica un client sulla workstation, che permette un accesso completo e sicuro alle risorse della rete privata remota. Le considerazioni fatte finora, ricordando anche le prerogative fondamentali di un sistema Context Aware (Mobilità, Interoperabilità, QoS, Adattabilità, Sicurezza...), ci portano ad escludere come soluzione ottima l'adozione di VPN di tipo SVC, così come abbiamo fatto per le VPN IPSec; quindi prenderemo in considerazione in maniera più approfondita sistemi che utilizzino VPN clientless e thin-client.
2.6 La Gestione dell'autenticazione Uno degli elementi fondamentali nella definizione di un sistema di sicurezza è l'autenticazione, vediamo quindi quali sono i più comuni sistemi per l'autenticazione usati nelle implementazioni di VPN: indichiamo quattro elementi fondamentali: AD (Active Directory), LDAP (Lightweight Directory Access Protocol) e la sua implementazione open source OpenLDAP, Radius (Remote Authentication Dial In User Service) e la sua implementazione open source FreeRadius, Kerberos. Il problema dell'autenticazione consta in sostanza nell'associare ad una identità verificata una serie di permessi, che riguardano specifiche applicazioni e risorse; inoltre ogni utente sarà associato a determinate impostazioni di configurazione, che gli permetteranno di accedere alle applicazioni e alle risorse in modo funzionale alla propria identità. Per fare questo è necessario un sistema di autenticazione e quello che ci auspichiamo è che questo sistema sia distribuito, ma anche sincronizzato, ottemperando alla politica di autenticazione detta Single-Sign-On (SSO): autenticarsi una sola volta per accedere a tutte le risorse e applicazioni disponibili per quella specifica identità. Una gestione delle identità di questo tipo richiede l'utilizzo di strumenti detti Directory Service, che possono essere server AD: questi sono database di oggetti strutturati gerarchicamente, suddivisi in tre principali categorie: Risorse, Servizi e Utenti. Su ogni oggetto vengono settati - 18 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
i controlli di accesso e le politiche di sicurezza e questo oggetto viene identificato dal suo nome di dominio (UNC, URL o LDAP-URL) e gestito tramite il DNS dell'AD. Il processo di autenticazione in un AD è gestito dal protocollo Kerberos (tramite specifiche librerie, come GSS-API, Kerberos riesce anche a gestire lo scambio di credenziali tra applicazioni, di fondamentale importanza per la politica SSO), che si basa sulla crittografia simmetrica; mentre la gestione e la modifica degli oggetti è generalmente demandata al protocollo applicativo LDAP. Radius, infine, è un protocollo di livello rete che si occupa anch'esso di gestire l'accesso centralizzato alla rete: al server Radius vengono inoltrate le richieste di accesso che gli utenti fanno al NAS (Network Access Server), ovvero il punto di accesso della rete; queste vengono processate utilizzando schemi di autenticazione quali il PAP e l'EAP, infine il server Radius elabora ed inoltra una risposta che manderà al NAS, nella quale specifica se la richiesta di connessione può essere accettata. Al server Radius vengono inoltrate le informazioni necessarie per l'autenticazione, quali username e password o certificati, ma possono essere trasmesse anche informazioni aggiuntive come l'indirizzo IP dal quale l'utente sta tentando l'accesso; possiamo pensare di estendere questa serie di informazioni aggiuntive, trasmettendo ad esempio la propria locazione geografica attuale, informazioni che identificano il dispositivo di accesso come il sistema operativo utilizzato (utili per definire politiche di sicurezza più o meno stringenti specifiche per la sessione) e lo stato dell'utente sulla macchina (amministratore o semplice utente, queste informazioni potrebbero essere utili anche per definire il tipo di VPN). Per decidere se la richiesta di accesso possa essere accettata, il server Radius deve consultare una serie di informazioni quali lo stato e il tipo di account dell'utente sulla rete locale e i suoi permessi di accesso spefifici per le risorse di rete; per fare questo il Radius si appoggia generalmente all'AD, sfruttando quindi il lavoro di LDAP e Kerberos. Dopo questa breve descrizione, facciamo alcune osservazioni più generali: un sistema di comunicazione sicuro ha bisogno di almeno tre elementi fondamentali: Crittazione, Integrità dei messaggi e Autenticazione dell'utente. Nelle nostre valutazioni riguardo le necessità che ha un sistema Context Aware, abbiamo scelto di implementare le VPN con il protocollo SSL, selezionando in tal modo il pacchetto per la sicurezza e l'integrità dei messaggi che SSL comporta. Per il processo di autenticazione dell'utente sarà invece necessario utilizzare una struttura aggiuntiva: la serie di informazioni aggiuntive di cui abbiamo accennato può essere processata da un sistema distribuito come appena descritto per la gestione dell'identità, dando - 19 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
la possibilità di sfruttare al meglio le potenzialità dell'accesso granulare permesso da SSL e permettendo di definire delle policy di sicurezza per sessione oltre che per utente. Riteniamo che questa tecnica di strutture distribuite per la gestione degli accessi sia una buona soluzione, ma non è l'unica per una VPN SSL; altri metodi di gestione degli accessi sono infatti: - un sistema proprietario di gestione del database degli utenti e dei permessi gestito direttamente dal Gateway VPN (Built-In User Database): sistema potenzialmente poco sicuro e poco scalabile; - un server NIS (detto anche Yellow Pages) per la gestione del database: soluzione poco usata e specifica per l'ambiente Unix; - autenticazione basata su token e su smart-card: si crea la dipendenza da un device fisico. Va inoltre aggiunto che i sistemi Unix si integrano nativamente ("out of the box") con le Active Directory (tecnologia sviluppata da Microsoft, quindi perfettamente compatibile con i suoi OS), supportando sia Kerberos che OpenLDAP e rendendo questa soluzione ancora più vantaggiosa. Dopo questo breve inciso sulla gestione dell'Identità, riteniamo che il supporto di Directory Services sia un requisito fondamentale nel contesto di un sistema sicuro come quello trattato; il nostro sistema di sicurezza dovrebbe supportare strumenti di autenticazione quali AD, LDAP, Kerberos, RADIUS, Certificati SSL, autenticazione a Chiave Pubblica, autenticazione tramite username-password e PIN, autenticazioni volatili tramite SMS (onetime-password) per l'utilizzo con smartphones e PDA.
- 20 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
3. SSL: Secure Sockets Layer Dopo aver proposto una classificazione delle più comuni soluzioni VPN ed aver confrontato i metodi a nostro avviso più adatti al problema da affrontare, la scelta è caduta sulle VPN SSL; intendiamo adesso, quindi, approfondire le conoscenze sul protocollo SSL e, successivamente, analizzare in dettaglio le due tecniche VPN che abbiamo indicato come soluzione: WebVPN e Thin-Client VPN.
3.1 Caratteristiche principali di SSL
Come abbiamo visto anche in precedenza, SSL è un protocollo progettato dalla Netscape Communications Corporation; si tratta di un protocollo modulare crittografico interlivello (lavora fra il livello trasporto e il livello sessione) di cui è stata rilasciata la versione 3 nel 1996 e da questa è derivato il suo successore: il TLS (Transport Layer Security, standard IETF (Internet Engineering Task Force), RFC2246/4346), essenzialmente molto simile all'SSL. I principali obiettivi di SSL sono: l'Autenticazione di client e server (tramite crittografia a chiave pubblica, ad esempio), assicurare l'Integrità dei Dati (utilizza strumenti quali HMAC), assicurare la Privacy. La gestione di sicurezza e integrità dei dati è compiti del sottolivello SSL Record Protocol, mentre i sottolivelli superiori (detti protocolli ausiliari) sono designati a stabilire la connessione SSL.
Immagine 2: SSL, sottolivelli. - 21 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
SSL è appunto un protocollo stratificato, ad ogni livello i messaggi possono includere campi per la lunghezza, la descrizione e il contenuto; SSL prende i messaggi che devono essere trasmessi, frammenta i dati in blocchi, opzionalmente può comprimerli, applica un MAC (Message Authentication Code), li critta e trasmette il risultato. I dati ricevuti vengono decrittati, verificati, decompressi e riassemblati, quindi consegnati al livello superiore della pila protocollare. Gli obiettivi ai quali SSL va incontro sono: - autenticazione del server: un browser SSL-enabled mantiene un elenco di CA (Certification Authorities), insieme alle loro rispettive chiavi pubbliche; quando un client, attraverso il suo browser, vuole instaurare una connessione sicura con un server SSL, il browser ottiene un certificato dal server, contenente la sua chiave pubblica; il certificato è rilasciato e firmato digitalmente da una CA che compare nella lista delle Trusted CA del browser. - autenticazione del client: funziona in maniera complementare all'autenticazione del server, ma è opzionale. - crittazione della sessione SSL.
3.2 La sicurezza in SSL
Le operazioni crittografiche sono raggruppabili in: firma digitale (Digital Signing), crittazione a stream (Stream Cipher Encryption), crittazione a blocchi (Block Cipher Encryption), crittazione a chiave pubblica (Public Key Encryption). •
Nella Firma Digitale viengono utilizzate funzioni non invertibili (di Hashing) e algoritmi di crittazione: si crea un checksum di lunghezza fissa dividendo il messaggio in blocchi, i due Hash Values, o Digest Messages (un SHA da 20 bytes e un MD5 da 16 bytes) vengono crittati con una chiave privata (RSA) in una struttura a 36 bit. In alternativa si può utilizzare il DSS (Digital Signing Standard): il Digest Message SHA dal 20 bytes viene direttamente crittato con DSA (Digital Signing Algorithm).
•
Nella crittazione a stream i dati in chiaro vengono processati in xor simbolo per simbolo con uno stream (Keystream) generato da un PRNG (Pseudo Random Number - 22 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
Generator) e detto Keystream Generator, funzione di una chiave iniziale, detta Seed. •
Nella crittazione a blocchi viene crittato un blocco alla volta (di lunghezza fissa); il Seed è qui detto IV (Initialization Vector) ed i blocchi possono essere strutturati in vario modo (concatenati, in razione..).
•
Nella crittazione a chiave pubblica (detta tecnica a chiave asimmetrica) si utilizzano funzioni trapdoors: il messaggio viene crittato con la chiave pubblica e risulta difficile decrittarlo se non si conosce la chiave privata corrispondente. Si rendono 'disponibili' le proprie chiavi pubbliche e queste possono essere utilizzate anche per assolvere al compito dell'identificazione
Le firme digitali vengono utilizzate per l'autenticazione, le tecniche di crittazione per la segretezza e le chiavi pubbliche per l'identificazione. Dato il duplice utilizzo delle chiavi asimmetriche (crittazione e autenticazione), la distribuzione delle chiavi pubbliche risulta essere un anello particolarmente importante della catena di sicurezza: la distribuzione deve essere pubblica e consultabile da tutti gli utenti/utilizzatori che desideriamo, ma la pubblicazione deve anche essere controllata, poichè dalla chiave dipende la nostra autenticità e si deve fare particolare attenzione nell'evitare che questa venga manomessa. Esistono vari metodi di distribuzione delle chiavi pubbliche comunemente utilizzati: - Distribuzione pubblica: ad esempio in broadcast allegando le chiavi PGP (GPG è l'implementazione open source, utilizza il tool OpenPGP) alle e-mail; - Tramite Libreria Pubblica: gli utenti che hanno il permesso dispongono di un account (username e password) per la consultazione; - Tramite Libreria gestita da una Authority (si deve conoscere la chiave pubblica della Authority); - Tramite Certificati di Chiavi Pubbliche: si introduce la doppia crittazione: il mittente critta il messaggio con la propria chiave privata e la chiave pubblica del destinatario, inoltre invia il proprio Certificato di identità, che può essere verificato dal ricevente sempolicemente riferendosi alla Certification Autority. Con questo metodo è possibile unire i due meccanismi di crittazione e autenticazione. Dopo una negoziazione sui parametri da utilizzare si instaura una Sessione SSL (che può - 23 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
essere composta da più connessioni sicure), in cui gli stati degli host (endpoint del tunnel) devono essere coordinati; il controllo degli stati è demandato al sottolivello SSL Handshake Protocol: si occupa di verificare che i due terminali abbiano 'stati paralleli'. Facciamo quindi una distinzione fra Connessione (collegamento logico fra i due nodi di rete client e server) e Sessione (l'associazione fra un client e un server che definisce un set di parametri di sicurezza). Lo stato della sessione include i seguenti parametri: •
Identificatore della sessione (Session ID): un numero casuale definito dal server;
•
Peer Certificate: generalmente certificato X.509;
•
Metodo di Compressione (utilizzata prima della crittazione);
•
Cipher Spec: specifica l'algoritmo di crittazione (es. DES, RC4..), l'algoritmo MAC (come MD5 o SHA) e alcuni attributi crittografici, come la dimensione dell' Hash;
•
Master Secret: 48 bytes segreti, condivisi dal client e dal server;
•
Is Resumable: è un flag che indica se la sessione può essere usata per iniziare nuove connessioni.
3.3 Le Sessioni SSL
Senza entrare in dettagli tecnici che in questo contesto d'analisi sarebbero superflui, vediamo le caratteristiche principali dei sottostrati dell'SSL e i passi fondamentali di una connessione SSL: il protocollo comincia con una fase di Handshake, dove si accorda su di un algoritmo di cifratura e sulle chiavi, quindi autentica il server al client e, opzionalmente, viceversa. Completato l'handshake, inizia la trasmissione di dati crittati tramite la chiave di sessione concordata. SSL Record Protocol è responsabile della crittazione e dell'integrità dei dati, inoltre è utilizzato per incapsulare i dati trasmessi dagli altri sottolivelli SSL. Handshake Protocol, Change Cipher Spec Protocol e Alert Protocol si occupano invece di gestire la sessione, i parametri crittografici e il trasferimento dei messaggi fra client e server. SSL Record Protocol: si occupa di gestire la segretezza (tramite la conoscenza condivisa di - 24 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
due chiavi di cifratura) e l'integrità dei messaggi (mediante tecniche di hashing per la generzione di codici MAC). Quando i dati, dal livello superiore, arrivano al Record Protocol, questi vengono - frammentati in blocchi (di dimensione massima 214 byte), - compressi (opzionale), - vi viene aggiunto un codice MAC, - vengono cifrati, - viene aggiunto l'header SSL, - infine i pacchetti vengono consegnati al livello sottostante (TCP generalmente). In ricezione si effettuano le operazioni inverse. I metodi di crittazione supportati da SSL sono: Crittografia a Blocchi
Algoritmo
Crittografia a Stream
Dimensione della
Algoritmo
chiave
Dimensione della chiave
AES
128, 256
RC4-40
40
IDEA
128
RC4-128
128
DES
56
3DES
168
FORTEZZA
80
RC2-40
40
DES-40
40 Tabella 1: Algoritmi di crittazione in SSL.
- 25 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
SSL Change Cipher Spec Protocol: usato per il setting dello stato della sessione, comprese le specifiche per la cifratura da utilizzare. SSL Alert Protocol: utilizzato per messaggi di allarmi SSL, che possono essere di tipo warning o fatal; questi sono utilizzati in caso di errori, quali: codice MAC errato, errore di decompressione, suite di sicurezza non negoziabile, errori relativi al certificato (scaduto, revocato, non supportato..) ed altri. SSL Handshake Protocol: consente al client e al server di autenticarsi l'un l'altro e di negoziare la suite di sicurezza (algoritmi di cifratura e MAC), attraverso lo scambio di alcuni messaggi, ognuno dei quali composto dai campi: - Type (Hello_Request, Client_Hello, Server_Hello, Certificate, Certificate_Request...) - Length: lunghezza del messaggio in byte - Content: parametri associati al messaggio Per instaurare una connessione logica fra client e server sono necessarie 4 fasi: inizializzazione delle funzionalità di sicurezza, autenticazione del server e scambio delle chiavi, autenticazione del client e scambio delle chiavi, terminazione.
Immagine 3: Handshake SSL.
- 26 -
Sistemi Telematici A.A. 2007/2008
•
Lapo Cioni
Inizializzazione delle funzionalità di sicurezza: lo scambio è iniziato dal client, che manda il messaggio client_hello, che comprende i seguenti parametri: Version (versione SSL più elevata disponibile al client), Random (un timestamp più un valore creato da un CSPRNG: Cryptographically Secure Pseudo Random Number Generator), Session ID (identificatore di sessione), Cipher Suite (elenco di algoritmi crittografici supportati dal client in ordine decrescente di preferenza; ogni elemento della lista definisce sia un algoritmo di scambio delle chiavi che un CipherSpec), Compression Method (lista di metodi di compressione supportati). Il server risponde con un server_hello, dove sono specificati gli stessi campi e le scelte sulla suite di sicurezza; il primo elemento del campo CipherSuite rappresenta il metodo per lo scambio delle chiavi di sessione (per la crittografia e per il codice MAC), le opzioni possibili sono principalmente: RSA (la chiave segreta di sessione viene crittata con la chiave pubblica del destinatario) o Diffie-Hellman (permette di scambiarsi solo le chiavi pubbliche e di calcolarsi indipendentemente la chiave di sessione).
•
Autenticazione del server e scambio delle chiavi: la seconda fase è iniziata dal server, che manda il proprio certificato con il messaggio certificate (generalmente un X.509); se necessario il server manda separatamente la propria chiave pubblica nel server_key_exchange e richiede il certificato del client con il certificate_request; tale messaggio è composto da due parametri: certificate_type (indica il tipo di algoritmo a chiave pubblica e la scelta è fra RSA e DSS) e certificate_authorities (contiene la lista delle CA accettate). Infine il server chiude la seconda fase con un server_done.
•
Autenticazione del client e scambio delle chiavi: il client verifica la validità del certificato del server la compatibilità coni parametri inviatigli nel server_hello, dopodichè, se è stato richiesto, invia al client il proprio certificato nel messaggio certificate o, se non disponibile, invia il messaggio no_certificate, quindi il client manda il client_key_exchange, che può essere composto dalla chiave di sessione crittata con la chiave pubblica del server se si utilizza lo scambio di chiavi di tipo RSA, oppure dai parametri Diffie-Hellman. Il client invia poi il certificate _verify per fornire una verifica esplicita del proprio certificato.
•
Terminazione: il client invia un messaggio change_cipher_spec e copia il Cipher - 27 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
Spec temporaneo su quello corrente, per confermare la stabilita suite di sicurezza, infine trasmette il messaggio finished per comunicare la terminazione della fase di setup della connessione SSL.
3.4 I Parametri di interesse in SSL
Dopo aver visto schematicamente come si comporta e di quali parti è composta una connessione SSL, ci appare chiaro che il sottolivello di maggiore interesse per il nostro studio sia l'SSL Record Protocol: è questo infatti che si occupa delle operazioni computazionalmente gravose: della crittazione, della compressione, dell'autenticazione e della frammentazione. SSL permette nativamente la scelta di alcuni parametri in fase di negoziazione fra client e server, questi parametri determinano la suite di sicurezza che sarà caratteristica della sessione SSL. I parametri di cui stiamo parlando indicano: - il metodo di compressione - la tecnica di hashing (MD5 o SHA) - il metodo di scambio delle chiavi (RSA o Diffie-Helmann nelle sue varianti) - il tipo di algoritmo a chiave pubblica (RSA o DSS nelle varie composizioni, per lo scambio delle chiavi di sessione) - l'algoritmo di crittografia a chiave simmetrica (DES, 3DES, AES, IDEA, FORTEZZA e RC2 come metodi a blocchi e RC4 come metodo a stream) Ogni metodo porta con se la propria complessità computazionale, che si traduce in utilizzo delle risorse e tempo di calcolo su un device; conoscendo la particolarità del nostro ambiente di studio, dovremo riuscire ad adattare i precedenti parametri alle necessità di un Security Context Aware System.
- 28 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
4. VPN SSL 4.1 I servizi delle VPN SSL
Le WebVPN e le Thin-Client VPN, nell'insturare un tunnel cifrato di comunicazione, integrano anche altri servizi, quali: •
l'estensione della rete: è possibile creare configurazioni di rete di tipo Mesh, facendo risultare più reti private dislocate in punti geograficamente e strutturalmente diversi come un'unica rete privata; per l'utente, tutta questa rete Mesh privata potrà essere vista come un'unico server remoto (connessione sicura seamless, prerogativa che avevamo anticipato), con il quale scambiare informazioni rese sicure dall'intermediario VPN (VPN Gateway); la rete così formata può allora essere schematizzata come:
Immagine 4: Modello di connessione in VPN. •
Web Proxying: il client fa una richiesta HTTP per una web application al VPN Gateway, questo contatta il server (in questo caso un Web Server) e scarica l'oggetto richiesto con HTTP, dopodichè lo passa al client con una connessione sicura (in HTTPS); questo è propriamente il funzionamente di una VPN SSL clientless: sulla macchina client viene utilizzato solo un web browser, possono essere trattate in questo modo le applicazioni web-enabled:
- 29 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
Immagine 5: Web Proxying. •
Application Translation: il client fa una richiesta per un'applicazione che richiede un protocollo non-HTTP, fra VPN Gateway e Server (Application Server) vengono scambiati i messaggi utilizzando il protocollo nativo, questi saranno poi tradotti in HTML e trasmessi su HTTPS al client, che sta infatti utilizzando un Web Browser:
Immagine 6: Application Translation. •
Port Forwarding: questa tecnica può essere utilizzata per fingere sul client di instaurare una comunicazione non HTTPS: il client vuole accedere con il protocollo nativo al server della rete privata; un thin-client installato sulla macchina dell'utente si occuperà di filtrare questi pacchetti (es: POP3), redirigendo il traffico all'interfaccia di rete logica (localhost); i pacchetti punteranno quindi alla porta 110 (POP3) del localhost, quindi il thin-client agirà da proxy locale (PFL: Port Forwarding Listener) e reindirizzerà il traffico sulla porta 443 (HTTPS) del VPN Gateway, il quale si occuperà, attraverso il PFR (Port Forwarding Receiver) di inoltrare i pacchetti sulla porta 110 dell'Application Server sulla rete privata; in questo caso è necessario un software lato client: sulla macchina dell'utente verrà scaricata ed installata un'estensione ActiveX o Java detta Thin Client o Shim (il PFL), che tradurrà il traffico del client in html crittato con SSL e agirà da proxy locale; il VPN Gateway avrà bisogno di conoscere a quale porta redirigere il traffico, quindi questo tipo di VPN non - 30 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
può essere usato con protocolli che utilizzano porte dinamiche (ad esempio: può essere sfruttato per SFTP, che utilizza la porta 22, ma non con FTP passive mode, che utilizza la porta 21 per il controllo e porte dinamiche >1024 per i dati):
Immagine 7: Port Forwarding. Una VPN che lavori strettamente clientless ha accesso a Web servers, applicazioni Citrix, Common Internet File System (CIFS) file shares, Microsoft Outlook Web Access (OWA) email; il port forwarding (che comporta l'utilizzo di un Thin-Client) permette invece di estendere l'accesso ad altre applicazioni TCP-based, quali SSH e Telnet. Per poter utilizzare una qualsiasi applicazione IP (ad esempio il VoIP) e quindi anche UDP, però, è necessario montare una VPN SSL Tunnel Mode, ovvero di installare un client sulla macchina di ogni host remoto, ad esempio utilizzando OpenVPN.
4.2 Gestione della VPN e definizione delle
caratteristiche 4.2.1 Private Network e User remoto Come abbiamo visto, le VPN SSL permettono un gestione granulare degli accessi e un'elevata flessibilità nel controllo del grado di sicurezza richiesto per ogni singolo accesso. Per ottimizzare questa flessibilità, anche in funzione del sistema che stiamo analizzando, ovvero un sistema sensibile ai cambiamenti di contesto, possiamo pensare di spezzare la nostra connessione VPN in due parti: una esterna ed una interna al Gateway VPN (sul quale gira il - 31 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
SSL VPN Appliance). Internamente riteniamo giusto fare una partizione delle informazioni, in modo che queste possano essere gestite in modo autonomo: una suddivisione fisica (server distinti gestiscono e forniscono applicazioni distinte) e logica (una possibilità è quella di suddividere la rete privata in più Virtual LAN); questa partizione interna delle informazioni non comporta di per se un maggior grado di sicurezza, ma permette, attraverso l'interfaccia fisica e logica fornita dal VPN Gateway, una gestione delle politiche di sicurezza più mirata. Possiamo pensare di suddividere la parte interna della rete in almeno 3 macrogruppi, con gestione degli accessi diversificata: 1. Web Based Applications; 2. File Sharing; 3. Thin Client/Server Appications.
In tal modo abbiamo già identificato 3 distinte Policy di sicurezza da definire. Esternamente alla LAN (sull'interfaccia esterna del VPN Gateway) avremo gli utenti che vorranno accedere alla rete privata. Almeno tre condizioni possono caratterizzare l'accesso: 1. il Punto di accesso (la rete di accesso: IP Address...); 2. il Dispositivo di accesso (OS, piattaforma hw...); 3. l'Identità e stato dell'utente (LDAP, Radius, tokens, username e password...).
4.2.2 Soluzioni VPN SSL
Per ogni situazione è quindi possibile definire delle policy di sicurezza adeguate al contesto: si possono creare delle Group Policy, aggiungere gli utenti (che faranno riconoscere la loro identità) alla lista delle Group Policy e definire un diverso grado di sicurezza per le diverse aree interne alle quali l'utente vuole accedere. Il requisito più stringente, che ci ha indirizzato verso la scelta di utilizzare VPN SSL è quello - 32 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
della portabilità: non avere necessità di un client installato sul terminale dell'end-user è fondamentale per l'utilizzo in sistemi Context Aware; questa prerogativa ci ha chiaramente spinti ad escludere, dalla famiglia delle VPN SSL, le SVC (SSL VPN Client). Vogliamo quindi utilizzare WebVPN e Thin-Client VPN: questo significa restringere il raggio alle sole VPN browser-based; il nostro VPN Gateway dovrà essere un Web Application Proxy (Web Proxying + Application Translation), che fornisca anche la funzione di Port Forwarding. Esistono numerose soluzioni per VPN SSL con software proprietario (AEP Networks, Array Networks, Astaro, Check Point Software, Cisco Systems, F5, Juniper Networks, Netgear, Nokia, Nortel, Safe Net, SonicWall, Stonesoft, Sun...); volendo però lavorare, a scopo di ricerca, con soluzioni open source, una soluzione comune per le VPN SSL si chiama OpenVPN: è usata per creare tunnel crittati per connessioni di tipo Remote Access e LAN-toLAN, non è però un Web Application Proxy e non prevede un utilizzo attraverso un web browser. Fra le soluzioni clientless che possiamo trovare, ci sono invece SSLBridge e SSLExplorer. WebVPN e Thin-Client VPN sono due tecniche di fare VPN molto simili, ma che differiscono tuttavia in un punto fondamentale: per le prime l'accesso alla VPN è garantito attraverso l'utilizzo di un semplice browser, mentre per le seconde è necessario scaricare un thin-client, appunto, detto anche Shim o Dissolvable Java/ActiveX Agent, che verrà temporaneamente installato sulla macchina dell'utente; qui nasce un vincolo legato ai permessi dell'utente: per installare il thin-client, infatti, sarà necessario che l'utente abbia i permessi di aministratore sulla macchina dalla quale intende accedere alla rete privata e la detenzione di questi permessi potrà essere un punto critico in scenari di spinta mobilità, come per utenti di tipo roadwarrior. Abbiamo indicato due soluzioni Open Source: SSLBridge e SSL-Explorer; SSLBridge è definito come un Browser Samba: è un applicazione web sviluppata in AJAX (Asynchronous JavaScript and XML) e DHTML (Dynamic HTML) che permette di accedere a files condivisi in una rete, creando un tunnel VPN attraverso internet utilizzando SSL e Samba. SSLBridge permette di utilizzare un semplice browser web per accedere alle risorse della rete privata, fornendo sicurezza (crittazione) attraverso SSL e autenticazione attraverso Samba, con l'utilizzo di Active Directory (AD) Server. SSL-Explorer è una soluzione VPN SSL open source sviluppata in java e distribuita in due edizioni dalla compagnia inlgese 3SP Ltd: l'edizione Community e quella Enterprise; l'edizione Community viene distribuita gratuitamente sotto licenza GPL; permette di creare tunnel cifrati tramite VPN SSL Clientless attraverso l'utilizzo del browser, l'unica dipendenza - 33 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
di SSL-Explorer sui client è una JRE (Java Runtime Environment); supporta il directory service. Le soluzioni possibili per l'implementazione di una VPN sono quindi molte e spesso molto simili; riteniamo, comunque, che la scelta dell'adeguata VPN SSL debba essere fatta tenendo in considerazione quei requisiti che nel corso del lavoro si sono dimostrati fondamentali, ovvero la VPN dovrebbe: - essere basata su SSL; - supportare clientless e thin-client; - permettere una gestione molto flessibile delle politiche di sicurezza; - essere platform independent; - permettere una connessione sicura il più possibile IPSec-like (accesso alla maggior parte delle risorse); - supportare l'utilizzo di un proxy fra il Gateway VPN e la rete esterna; - compatibile con i più diffusi web browser.
4.2.3 L'utilizzo delle risorse
Dopo aver identificato le caratteristiche generali che vorremmo la nostra VPN avesse, dedichiamo la nostra attenzione a definire le specifiche tecniche richieste per un sistema che dovesse implementare una VPN di questo tipo: creare un tunnel cifrato vuol dire aggiungere sicurezza alla comunicazione, quindi introdurre ridondanza; utilizzare tecniche quali IPSec o SSL per creare una trasmissione sicura comporta un overhead nei pacchetti trasmessi: più questo overhead è percentualmente basso rispetto alle dimensioni dei pacchetti, più il throughput relativo al carico utile aumenta. Un fattore da considerare nella scelta dell'implementazione della VPN e nella definizione delle specifiche dei sistemi di rete è quindi il numero di bytes di overhead introdotti dalla tecnica stessa. Questo valore va comunque mediato da altri fattori, primo fra tutti il livello di sicurezza ottenibile dal tunnel VPN: avendo a che fare con un sistema Context Aware, il nostro obiettivo non sarà quello di definire una soluzione univoca, ma, piuttosto, una famiglia di soluzioni che potranno essere - 34 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
utilizzate in funzione della situazione applicativa; ad esempio possiamo immaginare che un accesso in VPN da parte di un utente connesso ad una rete particolarmente insicura, potrà valere l'utilizzo di metodi crittografici più robusti al prezzo di un carico sulle risorse della macchina e della rete, nonchè di un overhead, maggiori. Prendiamo come esempio comparativo rispetto ad SSL il competitor che avevamo scartato, IPSec: facendo un analisi del caso peggiore, IPSec introduce i seguenti overhead in termini di bytes in funzione del modo (Trasporto o Tunnel) e cifratura (3DES/AES):
Packet Size
Transport
Transport
Transport
Tunnel Mode
Mode ESP
Mode ESP
Mode AH
ESP
Tunnel Tunnel
Mode AH
46
61%
70%
43%
3DES/SHA-1 Mode ESP SHA-1 AES/SHA-1 104% 113% 87%
512
5%
6%
4%
9%
10%
8%
1500
2%
2%
1%
3%
3%
3%
3DES/SHA-1 AES/SHA-1 SHA-1
Tabella 2: Overhead di bytes per IPSec.
Prendendo come riferimento un pacchetto medio di 512 bytes e il Tunnel Mode ESP AES/SHA1 come tecnica più comune, IPSec introduce un overhead del 10%, quindi circa 50 bytes di overhead medio, comprensivi di header e trailer ESP più il nuovo header IP. SSL, invece, introduce un overhead molto minore: solamente 21 bytes aggiuntivi se viene utilizzata MD5 come funzione di Hash o 25 bytes se si utilizza SHA-1; se quindi vogliamo gestire l'overhead di una comunicazione SSL (ad esempio siamo in condizioni in cui la rete ci offre una banda limitata e vogliamo ottimizzarne l'utilizzo in termini di throughput, oppure, al contrario, si ha un eccesso di banda a disposizione e possiamo permetterci di avere anche un elevato overhead pur di aumentare il livello di sicurezza), allora uno degli elementi da definire è, come visto, la scelta dell'algoritmo di hashing; oltre a questo, ed ancora più rilevante per la gestione dell'overhead, deve essere individuato il giusto algoritmo di crittazione: la crittazione incide in larga parte sul carico computazionale che grava sugli endpoint ed introduce, inoltre, una rilevante ridondanza. L'overhead introdotto dagli algoritmi di crittazione è funzione del tipo di algoritmo utilizzato: utilizzando algoritmi a blocchi, ad esempio, i messaggi vengono divisi in blocchi di dimensioni fisse, prima di essere crittati (ad esempio: DES e 3DES: 64 bit; - 35 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
AES: 128 bit); è proprio durante la fase di crittazione che viene introdotta ridondanza: generalmente la dimensione dei messaggi che giungono al sottolivello SSL Record Protocol non sarà un multiplo della dimensione dei blocchi dell'algoritmo e dovremo aggiungere dei bit (di Padding) per effettuare la crittazione. Questo overhead può essere anche molto significativo (fino a circa il 50% del pacchetto) soprattutto per pacchetti di piccole dimensioni; nella scelta dell'algoritmo da utilizzare va quindi considerato questo inconveniente introdotto dagli algoritmi di crittazione a blocchi, a differenza del comportamento degli algoritmi a stream. Come visto, DES e 3DES utilizano blocchi più piccoli di AES, quindi introdurranno percentualmente meno overhead. Altro fattore da considerare nella valutazione della nostra VPN è il carico di lavoro computazionale richiesto alle macchine del sistema: uno dei passaggi più onerosi è la fase di de/crittazione; ogni messaggio SSL viene autenticato andando a creare un MAC (Message Authentication Code): a differenza di IPSec, SSL crea prima il MAC, lo inserisce nel pacchetto, poi critta tutto il messaggio; questo può rappresentare uno spreco delle risorse, in quanto la CPU sarà accupata nell'opera di decrittazione anche per i pacchetti che dovranno essere poi scartati. Per quanto riguarda la fase di handshake, durante l'instaurazione di una sessione SSL, una delle operazioni più complesse è la definizione della chiave segreta: questa può essere calcolata utilizzando lo schema di Diffie-Hellman, che permette ai due endpoint del tunnel di determinare la chiave in maniera indipendente; il costo di questa operazione è porporzionale al numero di bit con il quale si vuole effettuare l'algoritmo di Diffie-Hellman, che, a sua volta, sarà definito dal livello di sicurezza che si vuole raggiungere. SSL si dimostra generalmente più sensibile, in termini di prestazioni, al Diffie-Hellman piuttosto che all'RSA, quando si va ad incrementare il numero di bit; d'altra parte l'utilizzo del D-H comporta una maggiore sicurezza, evitando di trasmettere le chiavi di sessione. Un ulteriore elemento che incide fortemente sull'utilizzo delle risorse e sul throughput effettivo è l'algoritmo di compressione utilizzato: IPSec utilizza il protocollo IPComp, che supporta vari algoritmi (Deflate, LZS, LZJH); SSL, invece, non fa grande utilizzo della compressione ed uno dei pochi toolkit che implementano la compressione in SSL è OpenSSL. L'algoritmo di crittazione è forse la scelta più delicata e l'applicazione più onerosa a livello di risorse computazionali in un sistema sicuro; SSL supporta DES, 3DES, AES, RC4, RC2 e altri meno comuni. L'utilizzo della CPU varia a seconda del protocollo utilizzato, ad esempio: - 36 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
3DES e RC2 impegnano generalmente più a fondo le risorse della macchina di quanto non facciano DES e RC4, a scapito del livello di sicurezza: 3DES è ritenuto infatti un algoritmo più sicuro del DES, ad esempio. Molto spesso i web browser sono configurati per utilizzare di default RC4 come algoritmo di crittazione (sappiamo che gli algoritmi a stream sono più performanti in fatto in overhead sui bytes), quando però si vuole un maggior grado di sicurezza è scelta comune utilizzare un algoritmo a blocchi come il DES, o il 3DES per una sicurezza ancora maggiore. RC4 permette quindi un rate di crittazione molto elevato, mentre con DES il rate si abbassa di circa 1/4 e con 3DES di circa 1/8 rispetto a RC4. Appare chiaro come una macchina dotata di risorse computazionali limitate (come possono essere dispositivi quali smartphone e PDA, che non montano solitamente processori particolarmente prestanti) potrebbero avere bisogno di adattare l'algoritmo di crittazione alla loro capacità di calcolo, decrementando però, in tal modo, il livello di sicurezza; questa condizione dovrebbe poi essere accompagnata da una riformulazione dei permessi di accesso alle aree della rete privata, mantenendo inaccessibili, ad esempio, servizi che offrono dati particolarmente sensibili. Le funzioni di hashing, che producono i Digest Messages per la creazione del MAC, sono a loro volta algoritmi particolarmente impegantivi per le risorse computazionali delle macchine: in particolare SSL supporta MD5 e SHA; questi algoritmi sono molto più sensibili alle dimensioni dei pacchetti da elaborare di quanto non lo siano gli algoritmi di crittazione. Generalmente MD5 è settato come funzione di hashing di default nei più comuni web browser, perchè permette un rate maggiore nella creazione e verifica dei Digest Messages; SHA permette, d'altro canto, una sicurezza maggiore (per le hash functions si parla di "collision resistance": la probabilità che due diversi blocchi di bit in ingresso non vengano mappati nello stesso digest message), al costo di un abbattimento medio del rate di circa 1/3 e di un maggior consumo di energia. A livello temporale, inoltre, l'overhead è particolarmente influenzato dalla procedura di Handshake dell'SSL: la fase di setup della connessione SSL, come l'abbiamo vista precedentemente, richiede molto più tempo di quanto lo richieda la procedura di de/crittazione di un messaggio di medio-grandi dimensioni; questa valutazione è particolarmente importante per situazioni in cui la connessione sicura porterà all'instaurazione di più sessioni SSL nel tempo, scenario quantomeno probabile in sistemi Context Aware. La soluzione a questo problema coincide evidentemente con la soluzione dei problemi legati all'handhoff crosslayer, - 37 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
come avevamo accennato: il riuso degli stati delle sessioni SSL, ad esempio, porterebbe ad un drastico abbattimento dei costi delle connessioni SSL.
4.2.4 Compatibilità: alcuni esempi
In ultima analisi, siamo interessati a fare una ricerca sui principali fattori di compatibilità proposti dalle più comuni soluzioni VPN SSL: per individuare i maggiori vendor di soluzioni VPN SSL confrontiamo il rapporto "Magic Quadrant for SSL, North America, 3Q07" della compagnia Gartner: fra i maggiori produttori indicati ci sono Juniper Networks, Citrix, F5 e Cisco. Questi vendor propongono soprattutto piattaforme di sicurezza basate su VPN installate su unità indipendenti; sappiamo come le SSL-based siano le VPN maggiormente felssibili, ma una breve ricerca fra i datasheet dei prodotti di punta di punta proposti da questi vendor ci potrà dare alcune indicazioni su quali siano i reali vincoli di compatibilità nella strutturazione di una VPN SSL. Come esempio prendiamo Immagine 8: "Magic Quadrant for SSL, North
l'Adaptive Security Appliance serie 5500 della Cisco: nelle ultime versioni
America", Gartner.
dell'Appliance non è più previsto l'utilizzo di un client SSL Cisco, riducendo l'utilizzo della VPN SSL ai soli metodi clientless e thin-client (port-forwarding) ed evitando la ridondanza che si sarebbe venuta a creare con gli altri due metodi VPN supportati dalla macchina: IPSec e L2TP-over-IPSec; l'analisi di compatibilità riguardo i sistemi operativi comprende MS Windows Vista 32 e 64 bit, MS Windows XP 32 e 64 bit, MS Windows 2K 32 bit, MAC OS X 10.4 e 10.5, sistemi Linux 32 bit; l'autenticazione tramite certificati e smartcard è garantita per piattaforme Linux solo con l'utilizzo di VPN SSL clientless; per tutte le piattaforme è - 38 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
previsto il servizio Cache Cleaner: permette di pulire completamente la cache del browser una volta terminata la sessione, ottenendo un ulteriore grado di sicurezza; la funzione di Port Forwarding è compatibile con tutte le piattaforme in analisi, con l'indicazione specifica di utilizzare la JRE della Sun: in effetti questa restrizione è piuttosto comune ed è presente anche nei datasheet di SSL-Explorer. Per estendere le funzionalità della VPN SSL, oltre al Port Forwarding Cisco utilizza una tecnica chiamata Smart Tunnel, che promette le stesse funzionalità senza l'onere di dover installare una applet Java/ActiveX; questa tecnologia non è però supportata per MAC OS X e Linux. Il mobile support è piuttosto ristretto per le connessioni IPSec (solo alcuni vendor forniscono client compatibili con ASA) e L2TP-overIPSec (compatibile solo con Apple iPhone e MS Windows Mobile 2003 e 5.0), mentre non è prevista alcun tipo di restrizione per Pocket PC, PDA o Smartphone su VPN SSL clientless, a meno dell'utilizzo di un web browser java-enabled. Nonostante ciò, Cisco si è riservata di certificare quattro mobile devices per connessioni VPN SSL connectionless: HTC p3600 , HP iPAQ hx 2495b e HP iPAQ h4150 con l'utilizzo del browser Pocket IE, iPhone con browser Safari. Per quanto riguarda i browser compatibili, infine, Cisco ne indica tre: Internet Explorer (v.6+), Firefox (v.1.5+) e Safari (v.2+). Come possiamo notare, SSL è l'implementazione VPN effettivamente più flessibile, nonostante ciò sono evidenti alcuni vincoli di compatibilità che in letteratura parrebbero non esistere. In aggiunta a questi tipi di dispositivi hardware, è possibile implementare VPN utilizzando piattaforme software costruite come veri sistemi operativi: alcuni esempi sono i prodotti di Astaro e Sun Microsystems; con questi esempi possiamo infine definire alcuni ordini di grandezza riferiti alle specifiche tecniche generiche necessarie per una macchina sulla quale si volesse installare una suite di applicativi necessari ad implementare una VPN SSL. Per la piattaforma Astaro Security Gateway Software (si tratta di un vero e proprio sistema operativo), ad esempio, viene consigliata l'installazione su sistemi con processore Intel; per un'utenza medio-bassa (meno di 50 utenti) vengono definiti come requisiti minimi una frequenza di clock della CPU di 800 MHz, una memoria RAM di almeno 512 MB ed un HardDisk di almeno 20 GB; per un'utenza media (fino a 600 utenti), vengono invece consigliati CPU con frequenza di clock di almeno 2.4 GHz, RAM da 1024 MB e HardDisk da almeno 80 GB; per un'utenza elevata (fino a 2500 utenti), inoltre, si consigliano frequenze di clock di almeno 3.5 GHz, Ram minima di 4096 MB e HardDisk da almeno 120 GB. Il Sun Java System Portal Server Secure Remote Access è invece una suite di applicativi, da installare su un sistema operativo preesistente e permette anch'esso di - 39 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
implementare VPN SSL; in questo caso le specifiche tecniche rischieste sono meno stringenti al livello hardware (almeno 512 MB di RAM e 1 GB di harddisk, CPU con frequenza di clock di almeno 450 MHz), mentre a livello software sono supportati solo i sistemi Solaris 8+ e Red Hat Enterprise ed indicati i browser Netscape (v.6.2+), MS IE (v.5+) e Mozilla (v.1.7+).
- 40 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
5. Conclusioni
Con questo elaborato abbiamo cercato di determinare le caratteristiche generali che una Virtual Private Network dovrebbe avere affinchè essa possa fornire un adeguato livello di sicurezza a connessioni remote che vengano instaurate in scenari di tipo Context Aware. Nella scelta delle caratteristiche tecniche della nostra VPN abbiamo voluto considerare un ampio spettro di soluzioni, cosicché ogni tecnologia concorresse alla ricerca della soluzione, apportando i propri vantaggi e svantaggi. Uno scenario di Security Context Aware è estremamente complesso ed articolato e meriterebbe una trattazione approfondita per poterne comprendere la vera essenza; ciononostante, un approfondimento di questo tipo esula dagli obiettivi prefissi durante la stesura di questo lavoro, del quale la prima fase è consistita di fatto in un'opera di ricerca e di cernita della tecnologia più appropriata. Fin dall'inizio è apparso evidente come la selezione non si potesse basare solamente sulle prestazioni promesse da uno standard o da un protocollo, ma dovesse fare i conti con l'effettiva possibilità di implementazione, con le necessità di compatibilità e di portabilità. Fra le possibili soluzioni, come concorrenti più adatti si sono mostrati IPSec (OpenSwan) ed SSL. Il primo ha fra i suoi punti di forza la grande popolarità, il livello di sicurezza e le prestazioni; SSL è però stata da subito la tecnologia vincente: facilità d'uso, portabilità e adattabilità sono caratteristiche estremamente importanti in un sistema Context Aware e queste sono i fondamenti delle VPN basate su SSL; non per caso queste VPN stanno letteralmente conquistando il mercato. All'interno della famiglia delle VPN SSL abbiamo indicato le clientless e le thin-client come soluzioni più adatte, per i motivi suddetti; in aggiunta alla fondamentale assenza di un client da configurare, queste VPN permettono una gestione delle policy di sicurezza granulare, quindi i metodi di crittazione, autenticazione e controllo dell'integrità potranno effettivamente essere gestiti in funzione del contesto, come era desiderato fare all'interno del sistema studiato. La Security Context Awareness, come detto, propone situazioni di connessione estremamente diversificate; non è quindi stato nostro obiettivo proporre una soluzione di sicurezza univoca, nè sarebbe adeguato a trattare il sistema considerato. Va sottolineato che una buona implementazione di sicurezza adattiva tramite VPN SSL non prevede solamente la scelta e la configurazione adeguate dell'opportuna
- 41 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
VPN, ma anche una strutturazione ben fatta e funzionale di tutta la rete privata, come abbiamo precedentemente visto. Inoltre, molte strutture VPN permettono di utilizzare tecniche diverse, fra le quali sia SSL sia IPSec; in una rete privata distribuita secondo i criteri sopra citati, entrambe le soluzioni dovrebbero trovare spazio, andando ad utilizzare l'una e l'altra (ad esempio: IPSec per connessioni sicure 'statiche' di tipo LAN-to-LAN e SSL per connessioni 'dinamiche' di tipo Remote Access) nelle diverse situazioni. In questo lavoro abbiamo definito alcune caratteristiche che ci sono sembrate importanti per una VPN in ambito Context Aware; alcune prerogative si sono delineate in maniera ben definita (che la VPN sia SSL-based, supporto clientless e thin-client, supporto di più metodi di autenticazione come descritti...), mentre altre caratteristiche dovrebbero essere ricavate in funzione della situazione specifica di utilizzo della VPN, riflettendo sulle valutazioni fatte in questo elaborato; in questo lavoro di adattamento ad-hoc della soluzione VPN, devono essere valutate almeno sei aree funzionali per la sicurezza, come definite nello standard FIP-191 (Federal Information Processing): l'Autenticazione, il Controllo degli accessi, la Confidenzialità, l'Integrità dei messaggi, il Non ripudio, il Monitoraggio. Un sistema sicuro deve assolvere a tutti questi compiti e, all'interno dello scenario considerato, lo deve fare mantenendo un alto livello di adattabilità al contesto; applicando queste ipotesi al sottoinsieme del sistema sicuro che abbiamo analizzato, ovvero le Virtual Private Network, ci è apparso chiaro come solamente SSL, fra le tecnologie qui prese in considerazione, potesse assolvere a questi compiti, permettendo di connettere in modo sicuro ogni host non con un'intera rete, ma con singole applicazioni.
- 42 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
Bibliografia: •
http://www.siti.disco.unimib.it/didattica/sistemica
•
'Privacy In Context', Mark Ackerman, Trevor Darrell, and Daniel J. Weitzner, work supported by the Oxygen Alliance partners at MIT
•
'Tutorial Context-Aware Computing', Christian Becker, Universität Stuttgart, Institute of Parallel and Distributed Systems (IPVS)
•
'Supporto per la gestione dell'handoff verticale per sistemi multimediali', Veljko Vuković, Università degli studi di Bologna, Facoltà di Ingegneria
•
http://www.vpnlabs.org/
•
http://openskill.info/
•
http://www.networkworld.com
•
Review: Joel Snyder, Network World, 05/10/99
•
'Soluzioni VPN per Road Warriors' Alessandro Brunego, per il gruppo VPN del Netgroup, http://www.infn.it/netgroup
•
http://www.vpnc.org
•
http://www.cnaponline.com, Cisco Networking Academy Program
•
http://www.cisco.com
•
http://www.cisco.com/warp/public/732/L2F/
•
http://computer.howstuffworks.com/vpn.htm
•
http://tools.ietf.org/html/rfc2246
•
http://www.cisco.com/en/US/products/ps6120/products_configuration_example 09186a00806ea271.shtml
•
http://lists.openswan.org - 43 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
•
http://wiki.openswan.org/index.php/OE/Quickstart
•
'VPN Decision Guide, IPSec or SSL VPN decision criteria', Roslin Rissler, Sarah Sorensen; Juniper Networks
•
http://www.cisco.com/en/US/docs/security/security_management/cisco_security _manager/security_manager/3.2/user/guide/webvpnpg.html
•
http://www.centrocomputer.it/INTERNA/PRESENT.nsf/4d1800f63ae559cb4125 67520051e059/203a439796a1dfe7c12570900035899e/$FILE/Citrix%20Access %20Gateway.pdf
•
http://tools.ietf.org/html/rfc2246
•
http://tools.ietf.org/html/rfc4346
•
http://infocom.uniroma1.it/alef/cisterna/4-sicurezza/sicurezza.html
•
http://infocom.uniroma1.it/alef/cisterna/esercitazioni/sicurezza.html#mozTocId 773864
•
http://lagash.dft.unipa.it/AL/al290.htm
•
http://wp.netscape.com/eng/ssl3/draft302.txt
•
http://www.dmoz.org/Computers/Security/Public_Key_Infrastructure/PKIX/Too ls_and_Services/Third_Party_Certificate_Authorities//
•
http://www.windowsecurity.com/articles/Secure_Socket_Layer.html
•
http://www.guruatwork.com/index.php? option=com_content&task=view&id=210&Itemid=33
•
http://www.cisco.com/en/US/docs/security/asa/compatibility/asa-vpncompatibility.html
•
http://www.sun.com/software/products/portal_sra/index.xml
•
"A technical comparison of IPSec and SSL", AbdelNasir Alshamsi & Takamichi Saito, Tokyo University of Technology - 44 -
Sistemi Telematici A.A. 2007/2008
Lapo Cioni
•
"Analysis of Enterprise VPNs", Arif Basha, George Mason University
•
Astaro Security Gateway v7, sizing guideline (www.astaro.com)
•
G. Apostolopoulos, V. Peris, P. Pradhan, and D. Saha, “Securing Electronic Commerce: Reducing the SSL Overhead,” IEEE Network
•
Ramesh Karri, Piyush Mishra, "Minimizing Energy Consumption of Secure Wireless Session with QoS Constraints", Wireless Internet Center for Advanced Technology
•
Nachiketh R. Potlapally, Srivaths Ravi, Anand Raghunathan and Niraj K. Jha, "Analyzing the Energy Consumption of Security Protocols", Princeton University
- 45 -