[index] [Informatica] [Elettronica] [PIC16F84] [Wifi] [Links]
Appunti di Gianluca Ghettini
SSL (Secure Socket Layer)
Capitolo 1 - Introduzione a SSL


1.1 Introduzione

Nelle comunicazioni su Internet si vuol garantire un trasporto efficiente dell'informazione, ma allo stesso tempo si desidera ottenere una trasmissione sicura. Questo significa, da una parte, proteggere da alterazioni o letture non autorizzate i dati scambiati, e dall'altra consentire alle entita' coinvolte di autenticarsi.
SSL e' il protocollo che garantisce tutto questo, prevenendo intrusioni e manomissioni dei messaggi scambiati, e permettendo di certificare la propria identita' all'interlocutore. Ovviamente alcune aree applicative necessitano piu' di altre di un collegamento sicuro, per questo SSL viene di norma utilizzato nell'ambito di operazioni quali transazioni bancarie, e-commerce, trading-on-line, e tutti gli impieghi in cui si desidera riservatezza.
SSL e' un protocollo aperto e non proprietario introdotto da Netscape Communication nel Dicembre 1994, e si e' imposto come standard de facto negli anni successivi. La versione 3.0 sviluppata nel 1996, evoluzione della 2.0 del 1994, e' stata sottoposta all'IETF (Internet Engineering Task Force) per la standardizzazione. Il futuro di SSL e' rappresentato dal protocollo TLSv1 (SSL 3.1) standardizzato nel 1998. Dalla sua introduzione, sempre piu' societa', industrie e anche singoli privati utilizzano sistemi in grado di supportare tale protocollo per la sicurezza in Internet.


1.2 Obiettivi di SSL

SSL e' stato sviluppato per garantire funzionalita' operative specifiche, ma tenendo sempre in considerazione i problemi inerenti l'implementazione. I principali obiettivi del protocollo sono infatti:

Sicurezza del collegamento
:
SSL consente di stabilire una connessione sicura tra due entita', e quindi una trasmissione di dati codificati in maniera tale da essere inintelligibili a terze parti.

Interoperabilita'
:
SSL definisce una interfaccia di comunicazione che permette l'interazione di applicativi differenti, sviluppati in modo indipendente l'uno dall'altro. Programmatori diversi possono quindi sviluppare programmi che utilizzano SSL senza essere a conoscenza dei reciproci codici sorgenti.

Facilita' d'aggiornamento
:
La struttura protocollare di SSL fornisce una impalcatura standard per l'utilizzo di algoritmi crittografici. Nuovi algoritmi possono essere implementati e facilmente incorporati senza dover modificare il protocollo.

Efficienza
Per alleggerire il carico computazionale sul sistema, particolarmente gravoso durante le operazioni di crittografia, SSL introduce speciali accorgimenti implementativi che rendono piu' agevole la comunicazione.


1.3 Funzionalita' di SSL

La comunicazione in rete tra due host solitamente non avviene in maniera diretta, ma coinvolge tutta una serie di sistemi di computer che funzionano da intermediari nel trasporto dei dati. SSL si occupa di assicurare che questi sistemi intermedi non interferiscano nella sessione o acquisiscano informazioni confidenziali. A tal fine SSL implementa precise funzionalita' di autenticazione, cifratura e verifica dell'integrita' dei dati. Piu' in dettaglio il protocollo fornisce le seguenti caratteristiche:

Autenticazione: E' il processo grazie al quale si e' in grado di stabilire l'identita' dell'interlocutore, garantendo alle parti in causa di essere in comunicazione con entità fidate. I due host si scambiano certificati di identita', la cui validita' e' sottoscritta da enti considerati attendibili dagli utenti. Questi enti sono chiamati Certificate Authorities (CA). In un modello di comunicazione client-server, SSL permette l'autenticazione dell'uno e dell'altro:

Autenticazione del server:  consente ad un generico utente di confermare l'identità del server a cui si sta connettendo. In un collegamento via SSL è previsto che il server invii il proprio certificato di identità al client che richiede una comunicazione protetta. Per prima cosa l’host dell'utente verifica che il certificato sia autentico, assicurandosi che sia controfirmato da una delle CA appartenenti alla lista delle CA di fiducia. Il client si preoccupa poi di verificare che il certificato ricevuto sia intestato proprio al server richiesto, per scongiurare il pericolo che qualcuno si sia voluto intromettere nella comunicazione inviando il proprio certificato. Il procedimento consente quindi al client di autenticare il server prima di iniziare una comunicazione protetta.

Autenticazione del client: permette ad un server di confermare l'identità di un utente. Il procedimento è analogo a quello previsto per l'autenticazione del server, solo con le parti in gioco scambiate. E' infatti l'utente che invia il proprio certificato al server e questo ne verifica l'autenticità. Lo standard SSL prevede come obbligatoria soltanto l'autenticazione del server, quella del client è opzionale, ma risulta fondamentale quando le informazioni confidenziali viaggiano dal server verso l'utente.

Privatezza del collegamento: i dati sensibili scambiati sul canale di comunicazione sono protetti utilizzando algoritmi di crittografia a chiave simmetrica, in cui cioè la stessa chiave (considerata sicura) è utilizzata sia in fase di cifratura dei dati che in fase di decodifica. In questo modo i dati confidenziali possono essere letti soltanto da coloro che conoscono la chiave concordata per la comunicazione. SSL mette a disposizione più algoritmi di cifratura simmetrica (DES, RC4, ecc.), con diversi livelli di sicurezza, permettendo una qualità del servizio adeguata alla sensibilità dei dati.

Integrità delle informazioni:
i dati, prima di essere inviati, vengono autenticati mediante un campo Message Autentication Code (MAC), generato mediante le funzioni hash di firma (MD5, SHA, ecc.) che SSL mette a disposizione. Quando i dati vengono ricevuti si può quindi verificare che non siano stati modificati semplicemente controllando il campo MAC.

1.4 Un primo sguardo al funzionamento di SSL

Finora abbiamo parlato principalmente delle potenzialità di SSL e degli obiettivi per cui è stato sviluppato, senza entrare nel merito di come effettivamente riesce a supportare le funzionalità elencate. Nel paragrafo che segue si cerca ora di dare una visione di insieme sia del ruolo del protocollo all'interno della pila TCP/IP, sia del suo funzionamento.

1.4.1 Un livello per la sicurezza

Facendo riferimento alla pila TCP/IP, lo standard protocollare di Internet, SSL può essere considerato uno strato che giace tra il livello applicazione e quello di trasporto. SSL costituisce l'intefaccia trai due livelli e rappresenta una sorta di reparto di imballaggio, che costruisce una protezione per i dati generati dagli applicativi prima di rilasciarli allo strato di trasporto. Dal lato del mittente lo SSL riceve dalle applicazioni i messaggi informativi, li cifra e li indirizza ad un socket TCP. Da quel momento i dati
sono protetti e possono viaggiare in modo sicuro. Dal lato del ricevente SSL legge dal socket TCP, decifra i dati e li indirizza al livello applicazione. Ovviamente il livello di sicurezza SSL non è sempre attivo nelle comunicazioni, ma compie le sue funzioni soltanto quando viene richiesto un collegamento protetto.

1.4.2 I passi per comunicare via SSL

Lo scambio di informazioni tramite SSL richiede due fasi principali: una prima fase (handshake) comporta la creazione di un canale di comunicazione sicuro; la seconda fase consiste semplicemente dell’utilizzo della connessione blindata. Nella fase di handshake il protocollo prevede l’autenticazione del server (così come è stata descritta nel paragrafo 1.3) e, opzionalmente, quella del client. Una volta che le due parti sono sicure delle reciproche identità, si accordano su una chiave simmetrica che verrà utilizzata per cifrare e decifrare i dati nella fase di comunicazione successiva . Lo scambio di informazioni nella fase di handshake è protetto da algoritmi di crittografia a chiave asimmetrica, in cui la chiave utilizzata per codificare i dati (pubblica) è diversa da quella usata per decodificarli (privata). Una volta concordata la chiave simmetrica da utilizzare i due host possono iniziare la sessione di comunicazione. Con l’uso della crittografia a chiave asimmetrica in fase di handshake SSL risolve quindi il problema principale di una comunicazione cifrata con chiave simmetrica, ovvero la necesssità di concordare la chiave in modo sicuro. Si capisce quindi l’estrema delicatezza della fase iniziale nel garantire la protezione della sessione.Osserviamo allora più accuratamente il protocollo di handshake, cercando di evidenziarne i dettagli importanti. Supponiamo di voler instaurare una comunicazione via SSL tra un client e un server. L’handshake esegue i seguenti passi:

1) Il client richiede una comunicazione cifrata e
invia le sue preferenze per la crittografia al
server perché i due si accordino sull’algoritmo in
chiave simmetrica da utilizzare.

2) Il server invia le proprie preferenze per la
crittografia insieme al suo certificato. Il
certificato contiene la chiave pubblica del server
e la certificazione da parte di una qualche CA.

3) Il client verifica l’autenticità del certificato,
controllando che la CA che lo sottoscrive
compaia nella sua lista di CA di fiducia.

4) Il client genera la chiave simmetrica da
utilizzare per la sessione, la cifra con la chiave
pubblica del server (che compare nel certificato)
e la invia al server stesso.

5) Il client invia un messaggio al server
comunicandogli che i futuri messaggi saranno
cifrati con la chiave di sessione, quindi invia un
messaggio per indicare la fine della fase di
handshake lato client.
6) Il server invia un messaggio al client
comunicandogli che i futuri messaggi saranno
cifrati con la chiave di sessione, quindi invia un
messaggio per indicare la fine della fase di
handshake lato server.

7) Comincia la sessione: client e server usano la
chiave stabilita per cifrare e decifrare i dati.

I passi elencati rappresentano soltanto il comportamento generale di SSL in fase di handshake, con riferimento ai passi più comuni indipendentemente dalle scelte degli utenti. In realtà vedremo che il protocollo permette ai due host di eseguire anche comunicazioni con scambio di chiavi anonimo, o addirittura semplicemente con autenticazione dei dati scambiati e senza cifratura. SSL è infatti molto flessibile e può garantire all’utente più livelli di sicurezza, ognuno adeguato alla sensibilità dei dati in transito e alla qualità del servizio richiesta.


pagina seguente >>



RSS Feed
RSS Feed