Reading Time: 3 minutes

Cos’è SSL?

L’acronimo SSL (Secure Socket Layer) è molto famoso tra gli utilizzatori di Internet in quanto oramai indelebilmente associato allo scambio di informazioni in maniera sicura attraverso il servizio WWW (World Wide Web).

Il protocollo che utilizziamo quotidianamente nell’accesso ai servizi Web che posseggono requisiti di privacy e integrità è il risultato di un lavoro iniziato dalla Netscape Corp a metà degli anni ’90 e terminato con la ratifica di standard ufficiale con la denominazione di TLS (Transport Layer Security) (RFC 4346).

TLS è nato per supportare l’accesso sicuro alle informazioni disponibili via web ma può essere oggi utilizzato efficacemente per realizzare anche VPN (Virtual Private Network) di livello sessione/applicazione.

Anche se utilizzato inizialmente quasi esclusivamente come soluzione crittografica all’interno del contesto specifico del servizio WWW, il protocollo SSL/TLS consente di implementare a livello di sessione le funzioni crittografiche richieste dagli utenti e può essere adottato per rendere “sicuro” il canale di comunicazione utilizzato da molteplici applicazioni diverse.

Per utilizzare la soluzione VPN basata su protocollo SSL/TLS, è necessario usare o applicazioni compatibili o installare un proxy server trasparente all’interno della stazione utente, in modo che tutto il traffico appartenente alla VPN sia incapsulato dal protocollo SSL/TLS sulla base di regole scritte nella policy locale.

Onde evitare manipolazioni da parte di utenti malintenzionati, la policy viene normalmente fissata e iniettata nella stazione utente da parte del terminatore di tunnel (normalmente tramite uso del protocollo L2TP o simili).

L’adozione del protocollo SSL/TLS è trasparente agli utenti finali. Ciò rende possibile l’introduzione delle necessarie funzioni crittografiche, mantenendo formalmente inalterati i protocolli applicativi preesistenti.

Funzioni del protocollo SSL/TLS

Il ruolo del protocollo SSL/TLS in sostanza è:

  • garantire la riservatezza dei dati trasmessi tra applicazioni client e server
  • autenticare il lato server
  • fornire opzionalmente la possibilità di autenticare il lato client

Il risultato finale viene ottenuto arricchendo il servizio affidabile di consegna dati offerto dal protocollo TCP, di un insieme di funzioni crittografiche che consentano:

  • la negoziazione di un opportuno sistema crittografico
  • lo scambio delle chiavi necessarie sulla base dello schema crittografico scelto
  • autenticazione dei partecipanti
  • codifica di tutti i messaggi scambiati tra i partecipanti

Fondamentalmente il compito del protocollo SSL/TLS è creare un canale sicuro per la trasmissione dati, attraverso un meccanismo di contrattazione iniziale di parametri e segreti condivisi tra client e server (handshake iniziale).

Lo scambio di messaggi di negoziazione è un processo lungo e complicato. Per questo motivo, il protocollo prevede l’utilizzo degli stessi parametri negoziati all’interno di più connessioni parallele e/o successive.

Il protocollo SSL/TLS definisce il concetto di “session” come un’associazione duratura tra client e server. I parametri negoziati dal meccanismo iniziale di handshake valgono generalmente per la durata di una sessione. Gli stessi parametri possono essere condivisi da numerose connessioni parallele o successive, che coinvolgono la stessa coppia client/server.

Lo scopo della fase iniziale di handshake è consentire alle due entità coinvolte di condividere un comune Master Secret per ogni nuova sessione SSL/TLS.

A partire da un comune Master Secret, le entità coinvolte ricavano le chiavi necessarie per ogni nuova connessione tra client e server.

Per ogni connessione attiva, oltre ad altri parametri, è necessario definire quattro diverse chiavi:

  • Server Write MAC Secret: chiave utilizzata dal server per produrre la segnatura dei messaggi trasmessi
  • Client Write MAC Secret: chiave utilizzata dal client per produrre la segnatura dei messaggi trasmessi
  • Server Write Key: chiave utilizzata dal server per cifrare tutti i dati trasmessi
  • Client Write Key: chiave utilizzata dal client per cifrare tutti i dati trasmessi

Pur utilizzando algoritmi simmetrici per la segnatura dei messaggi e per la loro codifica, il protocollo SSL/TLS prevede l’uso di chiavi di codifica diverse da parte del client e del server.

Le quattro chiavi devono essere note a entrambi i partecipanti per poter svolgere le operazioni di codifica e decodifica.

La fase iniziale di handshake viene ripetuta all’apertura di ogni nuova connessione.

SSL/TLS handshake protocol SSL/TLS cipher change protocol SSL/TLS Alert Application Protocol
SSL/TLS Record
TCP
IP

Il protocollo SSL/TLS è organizzato in più sottoprotocolli, capaci di assolvere alle diverse funzionalità:

  • TLS Record: componente SSL/TLS responsabile del servizio di trasferimento dati vero e proprio, provvede alla frammentazione, compressione, segnatura e codifica di tutti i messaggi SSL.
  • TLS Alert: responsabile di avvisare le entità di eventuali malfunzionamenti, attraverso l’invio di opportuni messaggi di allarme.
  • TLS Change Cipher Spec: componente del protocollo responsabile di regolare ogni modifica dei parametri associati a una sessione.
  • TLS Handshake: responsabile della negoziazione iniziale.
error: Content is protected !!

La maggior parte dei contenuti del blog ComputerSec vengono pubblicati a beneficio di tutti e in modo completamente gratuito.
Tuttavia per supportare il blog, e per avere ulteriori vantaggi, puoi decidere di abbonarti e sfruttare al 100% tutti i contenuti!
Abbonati Ora!

Complimenti! Ti sei iscritto alla nostra Newsletter

C'è stato un errore durante l'invio della richiesta. Per favore riprova.

Computer Security will use the information you provide on this form to be in touch with you and to provide updates and marketing.