quaderni di usabilità TILS: Scuola Superiore Guglielmo Reiss Romoli

appuntamenti, strumenti di lavoro, personaggi, la rassegna stampa strumenti per approfondire gli argomenti scambia le tue idee ricerche bibliografiche, commenti e suggerimenti, libro degli ospiti consulta i quaderni

vai all'indice del quaderno n° 1

Architettura ed Evoluzione del World Wide Web
Integrità e riservatezza: Secure Socket Layer (SSL)

Secure Socket Layer (SSL) è una versione sicura dell’interfaccia socket che, interponendosi tra gli applicativi ed il supporto di comunicazione, si propone di fornire riservatezza ed affidabilità tra due applicazioni comunicanti (fig. 4.6). SSL è stato sviluppato da Netscape Communication ed è attualmente in quasi tutti i server ed i browser Web.

image94.gif (2603 byte)

Figura 44: SSL

Nello stabilire una connessione sicura, SSL definisce due protocolli di supporto:

SSL Record Protocol: definisce le modalità di incapsulamento dei protocolli di livello applicativo all’interno di SSL;
SSL Handshake Protocol: definisce le modalità con le quali, nella fase di instaurazione della connessione, il client ed il server si autentificano e negoziano gli algoritmi crittografici da utilizzare.

E’ da evidenziare, che la fase di negoziazione rende SSL aperto al supporto di tecniche crittografiche qualsiasi. Gli obiettivi che si intendono raggiungere tramite SSL sono:

riservatezza: tramite cifratura basata su algoritmi simmetrici (es.: DES, RC4, ...):
autenticazione: tramite algoritmi asimmetrici (es.: RSA, DSS, ...);
integrità: tramite MAC (es.: SHA, MD5, ...).

Per quanto riguarda l’SSL Record Protocol, i dati da trasmettere vengono organizzati in pacchetti aventi il formato mostrato in figura. L’intestazione può essere di 2 o 3 byte; la distinzione tra i due casi avviene tramite il bit più significativo che è ad uno nel primo caso e a zero nel secondo. Nel caso di intestazione di 2 byte, i 15 bit rimanenti questa indicano la lunghezza del pacchetto (al massimo di 32767 byte). Nel caso di intestazione su 3 byte, un bit è riservato, 14 bit indicano la lunghezza del pacchetto (al massimo di 16383 byte) e gli otto bit rimanenti indicano la dimensione del MAC (al massimo di 255 byte).

Figura 45:
pacchetto di SSL Record Protocol

Nel calcolo del MAC, una volta selezionato l’algoritmo, questo viene fatto dipendere dalla chiave, dai dati trasmessi e da un numero di sequenza (su 32 bit) che protegge dalla ritrasmissione di pacchetti. I dati sono poi cifrati in funzione dell’algoritmo scelto.

image96.gif (13387 byte)

Figura 46:
dialog box generata a seguito dell’invio del certificato da parte del server

Anche l’SSL Handshake Protocol viene trasportato dall’SSL Record Protocol. Le fasi di questo protocollo sono i seguenti:

il client ed il server si scambiano dei messaggi di "hello", necessari per accertarsi la disponibilità di SSL ad entrambi i capi della connessione. In questi messaggi vengono specificati:
    1. versione del protocollo
    2. ID di sessione
    3. algoritmo di cifratura
    4. algoritmo di compressione
    5. sequenze random (una per il client ed una per il server) da utilizzarsi nel seguito della sessione
dopo il messaggio di hello, il server invia
    1. un suo certificato per l’autenticazione
    2. se non sono disponibili certificati, si da inizio ad un protocollo per lo scambio chiavi (es.: RSA, Fortezza, Diffie-Hellman, ...)
    3. infine, il server può richiedere un certificato al client
in funzione di quanto avvenuto nella fase precedente, il client può
    1. inviare un suo certificato
    2. rispondere al protocollo per lo scambio chiavi

Superata questa fase, si può dare inizio alla comunicazione protetta tra client e server. E’ da notare che, mentre per la cifratura si utilizzano versioni deboli degli algoritmi, a seguito delle restrizioni all’esportazione da parte del governo statunitense (es.: chiavi RSA di lunghezza inferiore a 512 bit), per quanto riguarda la firma elettronica tali vincoli non esistono.