Il TLS (Transport Layer Security) è il protocollo crittografico che protegge la riservatezza, l’integrità e l’autenticità delle comunicazioni su reti non fidate. È l’evoluzione di SSL (Netscape, 1994) e costituisce il fondamento tecnico di HTTPS, SMTPS, IMAPS, FTPS e di ogni protocollo applicativo che richieda comunicazioni sicure su TCP. La versione corrente — TLS 1.3 (RFC 8446, 2018) — ha introdotto miglioramenti radicali in sicurezza e performance rispetto a TLS 1.2. TLS 1.0 e 1.1 sono deprecati dallo IETF dal marzo 2021.
Obiettivi di sicurezza
TLS garantisce simultaneamente tre proprietà. L’autenticazione del server avviene tramite certificato X.509 firmato da una Certificate Authority: il client verifica che stia parlando con il server legittimo e non con un impostore. La confidenzialità è garantita dalla cifratura simmetrica AEAD (AES-GCM o ChaCha20-Poly1305) negoziata durante l’handshake. L’integrità dei dati è garantita dal MAC integrato nell’algoritmo AEAD: qualsiasi modifica al payload viene rilevata e la connessione viene interrotta.
Handshake TLS 1.3
L’handshake di TLS 1.3 avviene in 1 RTT (contro i 2 di TLS 1.2), accelerando significativamente l’instaurazione della connessione. Il client invia il ClientHello con la propria key share per lo scambio ECDHE; il server risponde con il ServerHello, la propria key share, il certificato e il Finished. Da questo momento in poi tutta la comunicazione è cifrata.
La Forward Secrecy (PFS) è obbligatoria in TLS 1.3: lo scambio ECDHE usa parametri efimeri rigenerati per ogni sessione. Intercettare il traffico cifrato oggi non permette di decifrarlo in futuro, anche se in futuro venisse compromessa la chiave privata del server — le chiavi di sessione passate sono irrecuperabili.
Certificati e PKI
L’autenticazione del server si basa su certificati X.509 e sull’infrastruttura PKI. Il Certificate Transparency (CT) è un sistema di log pubblici append-only in cui le CA devono registrare ogni certificato emesso, permettendo di rilevare certificati fraudolenti entro ore. I browser Chrome e Safari richiedono che tutti i certificati siano presenti nei CT log.
Versioni e vulnerabilità storiche
TLS 1.3 rimuove per design tutte le funzionalità che hanno causato le vulnerabilità storiche di SSL/TLS: la compressione (CRIME, 2012), la rinegoziazione (attacchi di rinegoziazione, 2009), i cipher suite con RSA key exchange privo di forward secrecy (ROBOT, 2017), i cipher suite deboli (RC4, 3DES, export-grade). Rimangono solo 5 cipher suite moderne, tutte AEAD. SSL 3.0, TLS 1.0 e TLS 1.1 non devono essere abilitati su nessun sistema in produzione.