TLS (Transport Layer Security)
TLS (Transport Layer Security) è un protocollo di crittografia che garantisce trasmissioni dati sicure su internet. È il successore del vecchio SSL e oggi viene utilizzato quasi esclusivamente nella versione TLS 1.3.
- Protezione professionale dei dati e della sicurezza
- E-mail crittografata con certificato SSL/TLS
- Massima protezione dai virus grazie a firewall e filtri antispam
- Backup giornalieri
Cos’è il protocollo TLS?
All’inizio dell’era digitale la sicurezza dei dati ricopriva un ruolo minore rispetto a oggi. Tutte le comunicazioni erano trasmesse da un computer all’altro in maniera aperta e non crittografata. Immaginiamo questo processo come se si trattasse di una cartolina: qualsiasi postino o postina potrebbe leggerla.
Il protocollo TLS, chiamato anche SSL/TLS, ha introdotto la crittografia dei contenuti trasmessi. Per utilizzare lo stesso paragone di prima, questa crittografia è come una busta da lettera chiusa con un sigillo, che può essere aperta soltanto dal legittimo destinatario o dalla legittima destinataria.
L’abbreviazione TLS sta per Transport Layer Security, che tradotto significa “sicurezza del livello di trasporto”. Questa denominazione si riferisce al “livello di trasporto” del modello TCP/IP. TLS è il processo per crittografare il flusso di dati sulla rete, affinché questi siano letti soltanto dai legittimi destinatari o dalle legittime destinatarie.
Il nome precedente era SSL (Secure Socket Layer). Poiché questa abbreviazione è ancora più conosciuta di TLS, questo protocollo viene spesso indicato con il doppio nome “SSL/TLS”.
Come funziona il protocollo TLS?
TLS codifica tutto il traffico dati sviluppato attraverso il protocollo TCP mediante un processo di crittografia simmetrico.
Quello che in teoria sembra facile, in realtà è più complesso. Il problema principale è che il server deve comunicare la chiave al client, e questo prima di proteggere la comunicazione con TLS. Chi invia allegati in forma crittografata conosce questo problema: si codifica un dato e bisogna comunicare la chiave segreta al destinatario o alla destinataria, ad esempio per telefono.
Il protocollo TLS, il cui standard attuale è la versione 1.3 dal 2018, applica il seguente procedimento per risolvere questo problema:
- ClientHello: il client (ad esempio un browser) invia al server un primo messaggio con informazioni sulle crittografie supportate. Tra queste ci sono le suite di cifratura, le versioni del protocollo, un valore casuale e un proprio valore di scambio chiavi Diffie-Hellman (valore ECDHE). È possibile inviare già facoltativamente il primo blocco di dati crittografato.
- ServerHello: il server sceglie i parametri adeguati e invia la sua risposta, inclusi il suo valore ECDHE e il suo certificato digitale. Questo certificato SSL dimostra che il server è autentico e non sta simulando una falsa identità. Contemporaneamente, inizia il calcolo della chiave di sessione.
- Calcolo della chiave: entrambe le parti calcolano ora in maniera indipendente la stessa chiave di sessione (Session Key) basandosi sulla chiave concordata in comune.
- Il server completa l’handshake e inizia la comunicazione crittografata. Anche il client fa lo stesso; la connessione è ora completamente sicura.
Rispetto alle versioni precedenti, l’handshake TLS nella versione 1.3 è notevolmente più snello e sicuro. L’intero processo descritto qui richiede solo una singola trasmissione di andata e ritorno (1 RTT), accelerando sensibilmente la connessione.
Il motivo per cui la crittografia asimmetrica Diffie-Hellman viene utilizzata soltanto per la trasmissione di una chiave di sessione (ma non per la crittografia dello stesso flusso di dati) è un vantaggio in termini di velocità: la crittografia asimmetrica è infatti un processo relativamente lento e ritarderebbe la comunicazione.
Vantaggi e svantaggi di TLS
Il protocollo TLS è una soluzione elegante per organizzare in sicurezza il traffico dati sul web. Il motivo è che non richiede a entrambe le parti di crittografare autonomamente i contenuti, per esempio i dati di un formulario. Basta che il traffico venga gestito tramite il protocollo TLS, indipendentemente dal sistema operativo e dalle applicazioni software utilizzati dalle parti coinvolte. Tutto il flusso di dati viene crittografato autonomamente durante la trasmissione.
Il prezzo da pagare per la sicurezza è un collegamento un po’ più lento, poiché i processi sopra descritti (certificato, cifra casuale, scambio di chiavi) richiedono operazioni intense di calcolo.
Campi di applicazione di TLS
Come già menzionato, il protocollo TLS può essere utilizzato universalmente perché funziona indipendentemente dalle applicazioni e dai sistemi operativi. Di conseguenza, per numerosi protocolli applicativi esiste una versione sicura con protocollo TLS. Nella maggior parte de casi, lo schema di nomenclatura è molto semplice: dietro il nome del protocollo viene inserita la lettera “S”, se il protocollo comunica mediante TLS.
Il campo di applicazione più importante di TLS è il web, o per essere più precisi il protocollo HTTP. La sua variante crittografata si chiama HTTPS.
Inoltre, vale la pena di menzionare alcuni casi d’uso frequenti:
- POP3S: per scaricare e-mail dal server con il protocollo POP3
- IMAPS: per sincronizzare la posta in arrivo con il server mediante il protocollo IMAP
- SMTPS: per inviare e-mail
- FTPS: per trasferire file con un protocollo FTP
- SIPS: telefonia Voice-over-IP con il protocollo SIP
- IRCS: chat crittografate
- QUIC: il protocollo di trasporto di Google che integra direttamente TLS 1.3; un’alternativa a TCP per connessioni web più veloci e sicure (ad esempio con HTTP/3)
Anche OpenVPN, un software open source per creare una rete virtuale privata (VPN) sfrutta il protocollo TLS.
Implementazioni di TLS
Le più importanti implementazioni di TLS sono:
- OpenSSL - l’implementazione più frequente, utilizzata per la maggior parte dei siti HTTPS
- GnuTLS (Free Software Foundation)
- LibreSSL (OpenBSD)
- NSS (Network Security Services)
- BoringSSL (Google)
- Rustls (Joe Birr-Pixton, Dirkjan Ochtman, Daniel McCarney, Josh Aas e la community Open Source)
- Botan (Licenza BSD, Jack Lloyd)
- JSSE (Java Secure Socket Extension, Oracle)
- S2n (Amazon)
Questa lista non è completa. Ulteriori informazioni sulle implementazioni di TLS sono disponibili su Wikipedia in inglese.
Attacchi noti a TLS
Neanche TLS è totalmente sicuro contro gli attacchi e le perdite. Sono conosciuti i seguenti punti di attacco:
- Errori di programmazione: è diventato famoso l’Heartbleed Bug, un serio errore di programmazione delle prime versioni di OpenSSL. È stato corretto nel 2014.
- Crittografie deboli: come conseguenza delle restrizioni all’esportazione della crittografia negli USA, sono state sviluppate versioni “esportabili”, più facili da violare rispetto alle originali.
- Attacchi di compressione: quando si utilizza la compressione HTTP invece di quella TLS, gli hacker riescono a indovinare i contenuti crittografati TLS seguendo processi precisi.
- L’attacco BEAST riguarda la versione 1.0 di TLS ed è stato risolto già nel 2014. Le versioni attuali di TLS sono protette.
- L’attacco Padding Oracle è stato scoperto nel 2002 ed è stato possibile fino alla versione 3.0 di SSL. La versione attuale 1.3 di TLS è al sicuro da questo attacco.
- L’attacco ALPACA del 2021 mostra come i certificati TLS su server configurati in modo errato possano essere sfruttati per reindirizzare utenti verso altri servizi, intercettando o manipolando i dati.
Inoltre, ci sono stati vari tentativi di impedire una crittografia completamente sicura di TLS affinché le autorità potessero venire a conoscenza dei contenuti delle comunicazioni, per esempio in relazione a transazioni finanziarie e attività criminali. Una delle organizzazioni che ha tentato di provocare tali “crepe” di TLS è stata l’ETSI (Istituto Europeo per gli Standard nelle Telecomunicazioni).