Le due versioni TLS oggi attive
TLS 1.2, pubblicato nel 2008 (RFC 5246), e TLS 1.3, finalizzato nel 2018 (RFC 8446), sono le uniche due versioni TLS considerate sicure e ancora in uso massivo. TLS 1.3 non è una piccola evoluzione: rappresenta una riprogettazione profonda del protocollo, con vantaggi misurabili in sicurezza, performance e semplicità.
Riduzione del handshake
Il cambiamento più tangibile è la velocità di apertura della connessione. TLS 1.2 richiede due round trip tra client e server prima che possano scambiarsi dati cifrati: ClientHello, ServerHello con certificato, scambio chiavi, conferma. TLS 1.3 riduce a un solo round trip combinando i passaggi: il client invia subito i suoi parametri di key exchange, il server risponde con tutto il necessario.
Su connessioni mobile o satellite, dove la latenza domina sul throughput, la differenza è netta: 100-300 ms risparmiati su ogni handshake nuovo.
0-RTT (Zero Round Trip Time)
TLS 1.3 introduce il 0-RTT: se client e server si sono già parlati in passato, il client può inviare dati cifrati già nel primo pacchetto, senza nessun round trip preliminare. È usato da CDN come Cloudflare per accelerare ulteriormente le visite ripetute.
Attenzione: il 0-RTT è vulnerabile ad attacchi replay e va abilitato solo per richieste idempotenti (GET). POST e transazioni richiedono il flusso classico.
Cipher suite
TLS 1.2 ha una giungla di cipher suite, molti dei quali deboli o legacy: oltre 300 combinazioni possibili. TLS 1.3 ne mantiene solo cinque, tutte basate su AEAD (Authenticated Encryption with Associated Data) e con Forward Secrecy obbligatoria:
- TLS_AES_128_GCM_SHA256
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_128_CCM_SHA256
- TLS_AES_128_CCM_8_SHA256
La configurazione del server è banale: niente più liste da curare, niente più cipher deboli da disabilitare manualmente.
Algoritmi rimossi
TLS 1.3 elimina algoritmi e meccanismi storicamente problematici:
- RSA key exchange (no Forward Secrecy)
- Static Diffie-Hellman
- SHA-1
- MD5
- RC4, 3DES, DES, IDEA
- CBC mode senza AEAD
- Renegotiation TLS
- Compression TLS (vulnerabile a CRIME)
Forward Secrecy obbligatoria
In TLS 1.2 la Forward Secrecy era opzionale: cipher suite con RSA key exchange consentivano di decifrare retroattivamente il traffico se la chiave privata fosse stata compromessa. TLS 1.3 la rende obbligatoria: ogni sessione usa chiavi effimere ECDHE, e il traffico passato resta sicuro anche se la chiave a lungo termine viene rubata.
Certificate cifrato
In TLS 1.2 il certificato del server viaggia in chiaro durante l'handshake, esponendo informazioni sull'identità a osservatori passivi. TLS 1.3 cifra il certificato dopo il ServerHello, riducendo la leakage di metadati. È un piccolo miglioramento di privacy, importante in contesti censurati.
Compatibilità client
TLS 1.3 è supportato da:
- Chrome 70+, Firefox 63+, Safari 12.1+, Edge 79+
- OpenSSL 1.1.1+, BoringSSL, LibreSSL 3.2+
- Java 11+, .NET Core 3.0+, Python 3.7+
- Android 10+, iOS 12.2+
I client più vecchi falleranno il negotiation TLS 1.3 e ricadranno su TLS 1.2. Mantieni entrambe le versioni attive per coprire la coda lunga di client legacy.
Configurazione
Su Nginx 1.13+:
ssl_protocols TLSv1.2 TLSv1.3;
Su Apache 2.4.37+ con OpenSSL 1.1.1+ TLS 1.3 è supportato automaticamente nelle direttive SSLProtocol.
Quando upgrade
Se il tuo stack è ragionevolmente moderno (kernel 4.x+, OpenSSL 1.1.1+, web server aggiornato), TLS 1.3 va abilitato subito. Non comporta lavoro aggiuntivo e migliora sia la performance sia la sicurezza.
Hai bisogno di aiuto?
Se vuoi gestione SSL dal team di G Tech Group, scrivici tramite il modulo di contatto.