🔑 Crittografia

TLS e HTTPS: cosa succede davvero quando vedi il lucchetto

Cosa fa TLS dietro il lucchetto di HTTPS: handshake, scambio di chiavi, certificato, cifratura dei dati. Cosa protegge davvero e cosa resta visibile.

Ogni volta che apri un sito il cui indirizzo inizia con https, il browser stabilisce una connessione protetta da TLS (Transport Layer Security). In pochi millisecondi avvengono uno scambio di chiavi, una verifica d'identità e l'avvio della cifratura. Capire queste fasi aiuta a sapere cosa il lucchetto garantisce davvero e cosa invece non garantisce affatto.

I tre obiettivi di TLS

TLS si propone di ottenere tre risultati:

  1. riservatezza: nessuno lungo il percorso può leggere i dati scambiati;
  2. integrità: nessuno può modificarli senza che la modifica venga rilevata;
  3. autenticazione del server: stai parlando proprio con il sito indicato nella barra degli indirizzi, e non con un impostore.

HTTPS non è un protocollo diverso da HTTP: è semplicemente HTTP trasportato all'interno di una connessione TLS.

L'handshake di TLS 1.3, passo dopo passo

La versione attuale, TLS 1.3, ha semplificato molto il protocollo rispetto alle precedenti e ha eliminato gli algoritmi più deboli. La fase iniziale, chiamata handshake, si svolge così.

1. Il saluto del client

Il browser invia un messaggio chiamato ClientHello, che contiene:

  • le versioni del protocollo e gli algoritmi di cifratura che supporta;
  • un numero casuale;
  • una chiave pubblica effimera, generata al momento, per lo scambio di chiavi (di solito su curva ellittica, come X25519);
  • il nome del sito che vuole raggiungere.

2. La risposta del server

Il server sceglie gli algoritmi, invia la propria chiave pubblica effimera e, da quel momento, entrambe le parti possono calcolare lo stesso segreto condiviso con il metodo di Diffie-Hellman. Il segreto non viaggia mai sulla rete.

Subito dopo, già in forma cifrata, il server invia:

  • il proprio certificato e quelli intermedi;
  • una firma, prodotta con la chiave privata del certificato, su tutti i messaggi scambiati fino a quel momento;
  • un messaggio di conclusione che conferma l'integrità dell'handshake.

3. La verifica del client

Il browser controlla che il certificato sia valido, che sia emesso per quel dominio, che la catena risalga a un'autorità affidabile e che la firma del server sia corretta. Questo prova che il server possiede la chiave privata del certificato. Se tutto torna, invia il suo messaggio di conclusione.

L'intero handshake di TLS 1.3 richiede un solo andata e ritorno tra client e server, contro i due delle versioni precedenti.

Dopo l'handshake: la cifratura dei dati

Dal segreto condiviso vengono derivate le chiavi di sessione, usate con un algoritmo simmetrico autenticato, come AES-GCM o ChaCha20-Poly1305. Ogni pacchetto di dati è cifrato e accompagnato da un'etichetta di autenticazione: se qualcuno altera anche un solo bit, il destinatario se ne accorge e scarta il pacchetto.

Poiché le chiavi effimere vengono cancellate alla fine della sessione, TLS 1.3 offre sempre la forward secrecy: anche se in futuro venisse rubata la chiave privata del certificato del server, le conversazioni passate registrate da un attaccante resterebbero indecifrabili.

Cosa HTTPS protegge e cosa no

Protetto Non protetto
Contenuto delle pagine e dei moduli Il fatto che tu ti stia collegando a quel server
Password e dati inseriti Il nome del dominio, in molti casi
Percorso completo dell'indirizzo e parametri La quantità di dati e i tempi della connessione
Cookie di sessione L'onestà del sito stesso

Due punti meritano attenzione:

  • Il lucchetto non certifica che il sito sia affidabile. Dice solo che la connessione con quel dominio è cifrata e autentica. Un sito truffaldino con un dominio simile a quello di una banca può avere un lucchetto perfettamente valido.
  • La cifratura è tra te e il server, non oltre. Una volta arrivati al server, i dati sono in chiaro per chi lo gestisce.

Versioni e configurazioni da evitare

Le versioni SSL, TLS 1.0 e TLS 1.1 sono considerate superate e i browser moderni non le accettano più. Chi gestisce un server dovrebbe abilitare TLS 1.2 e 1.3, disattivare gli algoritmi obsoleti e attivare HSTS, un'intestazione che dice al browser di collegarsi a quel dominio sempre e solo in HTTPS, impedendo il declassamento a una connessione non cifrata.

Quando il browser ti avverte

Un avviso di certificato non valido può dipendere da un errore banale, come un certificato scaduto, ma può anche indicare un tentativo di intercettazione. Su reti pubbliche e su siti in cui inserisci credenziali la regola è semplice: non proseguire. Cliccare su "procedi comunque" significa rinunciare proprio alla garanzia di autenticità che TLS esiste per fornire.

In sintesi

  • HTTPS è HTTP protetto da TLS, che garantisce riservatezza, integrità e autenticazione del server.
  • L'handshake di TLS 1.3 usa uno scambio di chiavi effimero e la firma del server sul certificato.
  • I dati viaggiano poi con cifratura simmetrica autenticata, come AES-GCM.
  • Le chiavi effimere assicurano la forward secrecy delle sessioni passate.
  • Il lucchetto non prova che il sito sia onesto: prova solo con chi stai parlando.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche