Handshake TLS 1.3 e ripresa 0-RTT
Segua passo dopo passo l'handshake TLS 1.3, comprenda come garantisca la forward secrecy per impostazione predefinita e valuti i compromessi di sicurezza della ripresa della sessione 0-RTT.
Handshake TLS 1.3 e ripresa 0-RTT è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Perché era necessario TLS 1.3
TLS 1.3, pubblicato nel 2018 (RFC 8446), è stato progettato per risolvere le debolezze accumulate in TLS 1.2 dopo un decennio di attacchi nel mondo reale. Le versioni precedenti consentivano di negoziare cipher suite deboli, supportavano la crittografia di livello export e richiedevano diversi round trip prima di poter trasmettere i dati. TLS 1.3 rimuove tutti gli algoritmi deprecati e ottimizza l'handshake fino a un solo round trip nel caso normale, migliorando notevolmente sia la sicurezza sia le prestazioni.
Panoramica dell'handshake: un round trip
In TLS 1.3, client e server completano l'handshake in 1-RTT (un round trip). Il client invia un ClientHello che include le cipher suite supportate e una condivisione della chiave (utilizzando Diffie-Hellman). Il server risponde con un ServerHello, la propria condivisione della chiave, un certificato e i primi dati applicativi cifrati, tutto in un'unica trasmissione. Il client verifica quindi il certificato e invia un messaggio Finished prima di scambiare i dati applicativi.
# Trace TLS 1.3 handshake with openssl
openssl s_client -connect example.com:443 -tls1_3 -msg 2>&1 | grep -E 'ClientHello|ServerHello|Finished'Scambio delle chiavi: solo Diffie-Hellman effimero
TLS 1.3 impone lo scambio effimero delle chiavi e ha rimosso completamente lo scambio di chiavi RSA. Tutti gli scambi di chiavi devono utilizzare ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) o DHE (Diffie-Hellman Ephemeral). Il termine «effimero» indica che per ogni sessione viene generata una nuova coppia di chiavi. Questo è il fondamento della perfect forward secrecy: la compromissione della chiave privata a lungo termine del server non consente di decifrare le sessioni passate, perché ogni sessione ha utilizzato una chiave temporanea univoca.
Spiegazione della perfect forward secrecy
La Perfect Forward Secrecy (PFS) garantisce che, anche se un aggressore registra oggi tutto il traffico cifrato e in futuro ottiene la chiave privata del server, non possa comunque decifrare le sessioni precedenti. In TLS 1.2 con scambio di chiavi RSA, la chiave privata del server poteva decifrare il pre-master secret di qualsiasi sessione passata: un guasto catastrofico. Le chiavi DH effimere di TLS 1.3 fanno sì che ogni sessione derivi le proprie chiavi e che tali chiavi effimere vengano eliminate dopo l'uso.
Semplificazione delle cipher suite
TLS 1.2 supportava oltre 300 cipher suite, molte delle quali deboli o compromesse. TLS 1.3 le riduce a sole cinque cipher suite, tutte basate su AEAD (Authenticated Encryption with Associated Data): TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_AES_128_CCM_SHA256 e TLS_AES_128_CCM_8_SHA256. In questo modo elimina intere categorie di attacchi, come BEAST, POODLE e FREAK, che sfruttavano la negoziazione di cipher suite deboli.
# Check supported TLS 1.3 cipher suites on a server
nmap --script ssl-enum-ciphers -p 443 example.comRipresa 0-RTT: velocità e sicurezza
La ripresa 0-RTT (Zero Round Trip Time) è una funzionalità opzionale di TLS 1.3 che consente al client di inviare dati applicativi già nel primo messaggio, prima del completamento dell'handshake. Funziona utilizzando una Pre-Shared Key (PSK) proveniente da una sessione precedente. Sebbene 0-RTT riduca notevolmente la latenza, un aspetto fondamentale per le API ad alto traffico, introduce un compromesso significativo: i dati iniziali non sono protetti dagli attacchi di replay.
Rischio di attacchi di replay in 0-RTT
In un attacco di replay contro dati 0-RTT, un aggressore che intercetta il messaggio contenente i dati iniziali può reinviarlo al server, attivando potenzialmente due volte la stessa azione, ad esempio un pagamento o una modifica di stato. La specifica di TLS 1.3 avverte esplicitamente che i dati iniziali 0-RTT devono contenere solo operazioni idempotenti, cioè operazioni che producono lo stesso risultato indipendentemente dal numero di esecuzioni, come una richiesta GET. Le operazioni non idempotenti (POST, DELETE) non devono mai utilizzare 0-RTT.
Chiavi precondivise e ripresa della sessione
Dopo un handshake completo di TLS 1.3 completato con successo, il server invia un messaggio NewSessionTicket contenente una PSK (Pre-Shared Key) che il client memorizza. Alla riconnessione, il client include questa PSK nel proprio ClientHello utilizzando l'estensione pre_shared_key. Il server la riconosce e approva i dati 0-RTT oppure ripiega sulla ripresa 1-RTT. I ticket PSK hanno una durata limitata e dovrebbero essere ruotati frequentemente per limitare la finestra di esposizione.
Handshake cifrato: nascondere i metadati
Un importante miglioramento di TLS 1.3 è che la maggior parte dell'handshake è cifrata, compreso il certificato del server. In TLS 1.2, il certificato del server veniva inviato in chiaro, consentendo a un osservatore della rete di identificare il dominio a cui il client si stava connettendo. TLS 1.3 cifra il certificato e la maggior parte dei messaggi di handshake successivi, riducendo i metadati disponibili agli osservatori passivi. Encrypted Client Hello (ECH) è un'estensione emergente che nasconde anche il campo SNI (Server Name Indication).
Funzionalità rimosse: cosa ha eliminato TLS 1.3
TLS 1.3 ha rimosso numerose funzionalità legacy diventate rischiose: lo scambio di chiavi RSA (privo di forward secrecy), le cipher suite in modalità CBC (vulnerabili agli attacchi padding oracle), RC4 (cipher stream completamente compromesso), la crittografia di livello export (causa di FREAK e Logjam), MD5 e SHA-1 nelle firme digitali, la compressione (causa di CRIME) e la rinegoziazione (causa di numerosi attacchi). Rimuovendo questi elementi, TLS 1.3 presenta una superficie di attacco notevolmente ridotta.
Configurazione dei server per TLS 1.3
La distribuzione corretta di TLS 1.3 richiede di configurare il web server in modo che lo preferisca, disabilitando TLS 1.0 e 1.1. La maggior parte dei web server moderni (Nginx, Apache, IIS) supporta TLS 1.3 nativamente. Dovreste inoltre verificare che sia abilitato OCSP Stapling, per fornire lo stato di revoca del certificato senza che il client contatti la CA, e che gli header HSTS impediscano gli attacchi di downgrade a HTTP. Utilizzate strumenti come SSL Labs per verificare che la configurazione raggiunga una valutazione A+.
# Nginx TLS 1.3 configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security 'max-age=63072000' always;Verifica rapida
Verificate la vostra comprensione dei concetti di CompTIA Security+ (SY0-701) trattati in questa lezione.
Riepilogo della lezione
In questa lezione avete imparato che TLS 1.3 completa l'handshake in 1-RTT utilizzando esclusivamente lo scambio di chiavi DH effimere per garantire la perfect forward secrecy; che la ripresa 0-RTT consente riconnessioni più rapide tramite PSK, ma è vulnerabile agli attacchi di replay e deve trasportare solo operazioni idempotenti; e che TLS 1.3 rimuove tutte le funzionalità legacy deboli, tra cui lo scambio di chiavi RSA, i cifrari CBC, RC4, la crittografia export e la compressione, riducendo notevolmente la superficie di attacco. Ora esamineremo gli algoritmi di cifratura autenticata, come AES-GCM.
Domande Frequenti
La lezione «Handshake TLS 1.3 e ripresa 0-RTT» è gratuita?
Sì — il testo completo di «Handshake TLS 1.3 e ripresa 0-RTT» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Cosa imparerò in «Handshake TLS 1.3 e ripresa 0-RTT»?
Segua passo dopo passo l'handshake TLS 1.3, comprenda come garantisca la forward secrecy per impostazione predefinita e valuti i compromessi di sicurezza della ripresa della sessione 0-RTT. Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?
Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Handshake TLS 1.3 e ripresa 0-RTT»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?
Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Handshake TLS 1.3 e ripresa 0-RTT
- Crittografia autenticata: AES-GCM e ChaCha20-Poly1305
- Funzioni di derivazione delle chiavi: PBKDF2, bcrypt e Argon2
- Crittografia post-quantistica: CRYSTALS-Kyber e Dilithium