SSL (Secure Socket Layer) / TLS (Transport Layer Security) fornisce servizi di riservatezza, integrità e autenticazione tra due applicazioni che comunicano via Internet, ed è usato principalmente nello scenario client-server, in particolare per proteggere le informazioni trasmesse tra un browser e un server Web.
Il nome TLS fa riferimento al livello di trasporto perchè esso protegge appunto le informazioni scambiate al livello di applicazione, ma tecnicamente il servizio di sicurezza SSL/TLS stesso rientra nel livello di applicazione, dato che è implementato sopra il protocollo di trasporto TCP.
SSL fu inizialmente progettato da Netscape, fino alle versione 3 che fu progettata con revisione pubblica. Successivamente esso è diventato uno standard IETF chiamato TLS, di cui sono state definite varie versioni, tra le quali quella attualmente più usata è TLS 1.2, mentre la più recente è TLS 1.3 (pubblicata nel 2018). Le principali differenze tra le versioni fino a TLS 1.2 sono gli algoritmi supportati e la resistenza ad attacchi noti, mentre TLS 1.3 apporta alcune modifiche alla struttura di una parte del protocollo (l’handshake).
SSL/TLS protegge i dati scambiati tra le applicazioni (ad esempio, il protocollo HTTPS usato per la sicurezza in ambito Web è HTTP implementato sopra TLS, “HTTP over TLS”, e TLS si può usare anche per FTP, email, ecc), ma non protegge contro attacchi eseguiti ai livelli inferiori (ad esempio spoofing e DoS al livello di rete / IP). In particolare, esso realizza:
La comunicazione SSl/TLS tra due host è modellata da due relazioni, entrambe temporanee ma di durate diverse:
Una connessione è associata a una sola sessione, mentre in una sessione si possono avere più connessioni: per tutta la durata della sessione i parametri di sicurezza negoziati nell’handshake rimangono validi e possono essere usati per più connessioni.
SSL/TLS non è un singolo protocollo, ma è costituito da un insieme di quattro protocolli, che sono organizzati in due livelli.
Il protocollo di livello inferiore è Record, che stabilisce come strutturare e processare i messaggi per garantire la sicurezza dei protocolli dei livelli superiori (sia gli altri protocolli SSL/TLS che i veri e propri protocolli applicativi come HTTP).
I tre protocolli di livello superiore sono invece: