Nota dell’editore: Questo post è stato originariamente pubblicato nel luglio 2016 ed è stato aggiornato dal Senior Product Marketing Manager di GlobalSign Patrick Nohe per riflettere gli ultimi cambiamenti nell’evoluzione di SSL.
A meno che non ci lavoriate regolarmente, c’è una buona probabilità che non conosciate la differenza tra SSL (Secure Sockets Layers) e TLS (Transport Layer Security). E questa industria non vi fa molti favori riferendosi colloquialmente a TLS come SSL. Ci sono state quattro iterazioni del protocollo TLS. SSL è stato (o dovrebbe essere) completamente deprecato. Quindi, qual è la differenza tra SSL e TLS?
Stai per scoprirlo.
Una breve storia di SSL e TLS
SSL e TLS sono entrambi protocolli crittografici che forniscono autenticazione e crittografia dei dati tra server, macchine e applicazioni che operano su una rete (ad esempio un client che si collega a un server web). In realtà, SSL ha solo circa 25 anni. Ma in anni di internet, è antico. La prima iterazione di SSL, la versione 1.0, fu sviluppata nel 1995 da Netscape, ma non fu mai rilasciata perché era piena di gravi difetti di sicurezza. SSL 2.0 non era molto meglio, così solo un anno dopo fu rilasciato SSL 3.0. Di nuovo, aveva gravi difetti di sicurezza.
A quel punto, i ragazzi di Consensus Development ci hanno provato e hanno sviluppato TLS 1.0. TLS 1.0 era incredibilmente simile a SSL 3.0 – infatti era basato su di esso – ma ancora abbastanza diverso da richiedere un downgrade prima che SSL 3.0 potesse essere usato. Come hanno scritto i creatori del protocollo TLS:
“Le differenze tra questo protocollo e SSL 3.0 non sono drammatiche, ma sono abbastanza significative che TLS 1.0 e SSL 3.0 non interagiscono.”
Il downgrade a SSL 3.0 era comunque pericoloso, date le sue vulnerabilità note e sfruttabili. Tutto ciò che un attaccante doveva fare per prendere di mira un sito web era il downgrade del protocollo a SSL 3.0. Da qui, la nascita degli attacchi di downgrade. Questo ha finito per essere il chiodo nella bara per TLS 1.0.
TLS 1.1 è uscito sette anni dopo nel 2006, sostituito da TLS 1.2 nel 2008. Questo ha danneggiato l’adozione di TLS 1.1 poiché molti siti web hanno semplicemente aggiornato da 1.0 a TLS 1.2. Ora siamo a TLS 1.3, che è stato finalizzato nel 2018 dopo 11 anni e quasi 30 bozze IETF.
TLS 1.3 apporta miglioramenti significativi rispetto ai suoi predecessori e in questo momento i principali attori di internet stanno spingendo per la sua proliferazione. Microsoft, Apple, Google, Mozilla e Cloudflare hanno tutti annunciato piani per deprecare TLS 1.0 e TLS 1.1 nel gennaio 2020, rendendo TLS 1.2 e TLS 1.3 l’unico gioco in città.
In ogni caso, abbiamo usato TLS negli ultimi due decenni. A questo punto, se state ancora usando SSL siete rimasti indietro di anni, vivendo metaforicamente in un’era desolata in cui la gente usa ancora le linee telefoniche per collegarsi a internet.
Si dovrebbe usare SSL o TLS?
Sia SSL 2.0 che 3.0 sono stati deprecati dalla Internet Engineering Task Force, nota anche come IETF, rispettivamente nel 2011 e 2015. Nel corso degli anni sono state e continuano ad essere scoperte vulnerabilità nei protocolli SSL deprecati (ad esempio POODLE, DROWN). La maggior parte dei browser moderni mostrerà un’esperienza utente degradata (ad esempio la linea attraverso il lucchetto o https nella barra degli URL, o altri avvisi di sicurezza) quando incontrano un server web che utilizza i vecchi protocolli. Per queste ragioni, dovreste disabilitare SSL 2.0 e 3.0 nella vostra configurazione del server, e già che ci siete, deprecate anche TLS 1.0 e TLS 1.1.
Secondo un recente sondaggio di WatchGuard, quasi il 7% della Top 100.000 di Alexa supporta ancora SSL 2.0 e/o SSL 3.0. Quindi quei siti sono ancora là fuori in abbondanza.
I certificati non sono la stessa cosa dei protocolli
Prima che qualcuno inizi a preoccuparsi di dover sostituire i propri certificati SSL esistenti con certificati TLS, è importante notare che i certificati non dipendono dai protocolli. Cioè, non c’è bisogno di usare un certificato TLS contro un certificato SSL. Mentre molti venditori tendono ad usare la frase “Certificato SSL/TLS”, potrebbe essere più accurato chiamarli “Certificati per l’uso con SSL e TLS”, poiché i protocolli sono determinati dalla configurazione del tuo server, non dai certificati stessi.
Questo vale anche per la forza della crittografia. Molti certificati pubblicizzano la forza della crittografia, ma in realtà sono le capacità del server e del client a determinarla. All’inizio di ogni connessione, avviene un processo chiamato handshake. Durante questo processo, il client autentica il certificato TLS del server e i due decidono una suite di cifratura reciprocamente supportata. Le suite di cifratura sono un insieme di algoritmi che lavorano tutti insieme per criptare in modo sicuro la tua connessione con quel sito web. Quando la suite di cifratura viene negoziata durante l’handshake, è allora che si determina la versione del protocollo e gli algoritmi di supporto. Il tuo certificato facilita solo il processo.
Storicamente ci sono stati quattro algoritmi in una cipher suite:
- Key Exchange
- Digital Signature
- Message Authentication
- Hashing Algorithm
(Se questo sembra un po’ troppo complicato, non lo sarà più tra un secondo quando discuteremo le differenze tra SSL e TLS.)
Per ora, è probabile che continuerete a vedere i certificati riferiti come certificati SSL perché a questo punto questo è il termine più familiare per le persone. Stiamo iniziando a vedere un maggiore uso del termine TLS in tutto il settore, e SSL/TLS è un compromesso comune fino a quando TLS non sarà più ampiamente accettato.
Sono SSL e TLS diversi dal punto di vista crittografico?
Sì. La differenza tra ogni versione del protocollo può non essere enorme, ma se si confrontasse SSL 2.0 con TLS 1.3 ci sarebbe un canyon tra loro. In fondo, il concetto è lo stesso in ogni versione. È solo il modo in cui i diversi protocolli eseguono il compito di criptare le connessioni che diverge.
Ogni nuova versione rilasciata del protocollo è venuta e verrà con i propri miglioramenti e/o caratteristiche nuove/deprecate. La versione uno di SSL non è mai stata rilasciata, la versione due sì, ma aveva alcuni grossi difetti, la versione 3 di SSL era una riscrittura della versione due (per correggere questi difetti – con successo limitato) e TLS versione 1 un miglioramento della versione 3 di SSL. Tra TLS 1.0 e 1.1, i cambiamenti erano minori. TLS 1.2 ha portato alcuni cambiamenti significativi e TLS 1.3 ha raffinato e semplificato l’intero processo.
Vale la pena notare che SSL e TLS si riferiscono semplicemente all’handshake che avviene tra un client e un server. L’handshake in realtà non esegue alcuna crittografia, ma si accorda solo su un segreto condiviso e sul tipo di crittografia che verrà usato. Un SSL handshake usa una porta per effettuare le sue connessioni. Questa è chiamata connessione esplicita. La porta 443 è la porta standard per HTTPS, ma ci sono 65.535 porte in tutto – con solo alcune dedicate ad una funzione specifica.
TLS, al contrario, inizia le sue connessioni via protocollo. Questa è chiamata una connessione implicita. Il primissimo passo dell’handshake – l’atto che lo inizia – è chiamato hello del client. Con TLS questo viene inviato tramite un canale insicuro e la connessione passa alla porta 443 (o la porta che avete designato) una volta che la stretta di mano è iniziata.
Tradizionalmente, la stretta di mano ha coinvolto diversi viaggi di andata e ritorno mentre l’autenticazione e lo scambio di chiavi avvengono. Con SSL, questo aggiungeva latenza alle connessioni. È qui che è nato il mito che SSL/HTTPS rallenta il tuo sito web. Ogni nuova iterazione del protocollo ha lavorato per ridurre la latenza aggiunta dall’handshake. Con TLS 1.2, è stato dimostrato che HTTPS era effettivamente più VELOCE di HTTP grazie alla sua compatibilità con HTTP/2.
TLS 1.3 ha perfezionato ulteriormente l’handshake. Ora può essere realizzato con un solo roundtrip e permette la ripresa zero roundtrip (0-RTT). In parte questo è stato fatto riducendo il numero di suite di cifratura che supporta, da quattro algoritmi a due.
Ora è semplicemente un algoritmo di crittografia di massa (simmetrica/sessione) e un algoritmo di hashing. Lo scambio di chiavi e la firma digitale sono stati rimossi. Lo scambio di chiavi viene ora eseguito utilizzando una famiglia Diffie-Hellman, che permette sia la perfetta segretezza in avanti per impostazione predefinita, sia che il client e il server forniscano la loro porzione di segreto condiviso alla loro prima interazione. Anche questa prima interazione è ora criptata, chiudendo la porta ad un possibile vettore di attacco.
Per maggiori informazioni sulle nuove caratteristiche rilasciate in TLS 1.3, visita il blog di Cloudflare.
Disabilitare SSL 2.0 e 3.0 e TLS 1.0
Se non sei sicuro che i tuoi server supportino ancora i protocolli SSL, puoi facilmente controllare usando il nostro SSL Server Test. Per le istruzioni su come disabilitare SSL 2.0 e 3.0 sui tipi di server più comuni, compresi Apache, NGINX e Tomcat, controlla il nostro articolo di supporto correlato. Se hai ancora bisogno di disabilitare TLS 1.0, possiamo aiutarti anche in questo.
Quindi, qual è la differenza tra SSL e TLS? In una conversazione educata, non molto – e molte persone continuano ad usare i termini SSL e TLS in modo intercambiabile. In termini di configurazione del vostro server, però, ci sono alcune importanti differenze architettoniche e funzionali. E queste differenze sono lo spazio tra le vulnerabilità, le suite di cifratura obsolete, gli avvisi di sicurezza del browser – e un server sicuro. Quando si tratta dei vostri server, dovreste avere solo i protocolli TLS abilitati.