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 connette a un server Web). In realtà, SSL ha solo circa 25 anni. Ma negli anni di Internet, è antico. La prima iterazione di SSL, versione 1.0, è stata sviluppata per la prima volta nel 1995 da Netscape ma non è mai stata rilasciata perché era piena di gravi problemi di sicurezza. SSL 2.0 non era molto meglio, quindi solo un anno dopo è stato rilasciato SSL 3.0. Ancora una volta, 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 - in realtà era basato su di esso - ma ancora abbastanza diverso da richiedere un downgrade prima di poter utilizzare SSL 3.0. 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 ancora pericoloso, tuttavia, date le sue vulnerabilità note e sfruttabili. Tutto ciò che un utente malintenzionato doveva fare per indirizzare un sito Web è stato il downgrade del protocollo a SSL 3.0. Da qui la nascita di attacchi di downgrade. Quello finì 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. Ciò ha danneggiato l'adozione di TLS 1.1 poiché molti siti Web hanno semplicemente aggiornato da 1.0 a TLS 1.2. Siamo ora al TLS 1.3, che è stato completato nel 2018 dopo 11 anni e quasi 30 progetti 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 annunciato tutti i piani per deprecare TLS 1.0 e TLS 1.1 a gennaio 2020, rendendo TLS 1.2 e TLS 1.3 l'unico gioco in città.
Ad ogni modo, abbiamo usato TLS negli ultimi due decenni. A questo punto, se stai ancora utilizzando SSL sei indietro di anni, vivendo metaforicamente in un'era abbandonata in cui le persone usano ancora le linee telefoniche per collegarsi a Internet.
Prima che qualcuno inizi a preoccuparsi di dover sostituire i certificati SSL esistenti con certificati TLS, è importante notare che i certificati non dipendono dai protocolli. Cioè, non è necessario utilizzare un certificato TLS rispetto a un certificato SSL. Mentre molti fornitori tendono a utilizzare la frase "Certificato SSL / TLS", potrebbe essere più preciso chiamarli "Certificati da utilizzare con SSL e TLS", poiché i protocolli sono determinati dalla configurazione del server e 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 determinarlo. All'inizio di ogni connessione, si verifica un processo chiamato stretta di mano. Durante questo processo, il client autentica il certificato TLS del server e i due decidono su una suite di crittografia reciprocamente supportata. Le suite di crittografia sono una raccolta di algoritmi che funzionano tutti insieme per crittografare in modo sicuro la connessione con quel sito Web. Quando la suite di crittografia viene negoziata durante l'handshake, è allora che vengono determinati la versione del protocollo e gli algoritmi di supporto. Il tuo certificato semplifica il processo.
Storicamente ci sono stati quattro algoritmi in una suite di cifratura:
- Scambio di chiavi
- Firma digitale
- Autenticazione del messaggio
- Algoritmo di hash
Per ora, è probabile che continuerai a vedere i certificati indicati come certificati SSL perché a questo punto è il termine con cui più persone hanno familiarità. Stiamo iniziando a vedere un maggiore utilizzo del termine TLS in tutto il settore e SSL / TLS è un compromesso comune fino a quando TLS non sarà più ampiamente accettato.
Sì. La differenza tra ciascuna versione del protocollo potrebbe non essere enorme, ma se si confrontasse SSL 2.0 con TLS 1.3 ci sarebbe un canyon tra di loro. Alla base, il concetto è lo stesso in ogni versione. È solo il modo in cui i diversi protocolli svolgono il compito di crittografare le connessioni che divergono.
Ogni versione del protocollo appena rilasciata è arrivata e arriverà con i suoi miglioramenti e / o funzionalità nuove / obsolete. La versione 1 di SSL non è mai stata rilasciata, la versione due lo ha fatto ma presentava alcuni importanti difetti, la versione 3 di SSL era una riscrittura della versione due (per correggere questi difetti - con successo limitato) e la versione 1 di TLS un miglioramento della versione 3 di SSL tra TLS 1.0 e 1.1, le modifiche sono state minori. TLS 1.2 ha apportato alcune modifiche significative e TLS 1.3 ha perfezionato e semplificato l'intero processo.
Vale la pena notare qui che SSL e TLS si riferiscono semplicemente alla stretta di mano che si svolge tra un client e un server. L'handshake in realtà non esegue alcuna crittografia, ma accetta semplicemente un segreto condiviso e un tipo di crittografia che verrà utilizzata. Un handshake SSL utilizza una porta per stabilire le connessioni. Questa si chiama connessione esplicita. La porta 443 è la porta standard per HTTPS, ma ci sono 65.535 porte in tutto, con solo alcune dedicate a una funzione specifica.
TLS, al contrario, inizia le sue connessioni tramite protocollo. Questa si chiama connessione implicita. Il primo passo della stretta di mano - l'atto che inizia - si chiama ciao cliente. Con TLS questo viene inviato tramite un canale non sicuro e la connessione passa alla porta 443 (o alla porta che hai designato) una volta iniziata l'handshake.
Tradizionalmente, l'handshake ha comportato diversi viaggi di andata e ritorno in occasione dell'autenticazione e dello scambio di chiavi. Con SSL, questo ha aggiunto latenza alle connessioni. È qui che è nato il mito che SSL / HTTPS rallenta il tuo sito web. Ogni nuova iterazione del protocollo ha funzionato 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 ulteriormente perfezionato la stretta di mano. Ora può essere realizzato con un solo roundtrip e consente la ripresa Zero roundtrip (0-RTT). Parte del modo in cui è stato fatto è stato riducendo il numero di suite di crittografia che supporta, da quattro algoritmi a due.
Ora è semplicemente un algoritmo di crittografia di massa (simmetrico / sessione) e un algoritmo di hashing. I negoziati sullo scambio di chiavi e sulla firma digitale sono stati rimossi. Lo scambio di chiavi viene ora eseguito utilizzando una famiglia Diffie-Hellman, che per impostazione predefinita consente la perfetta segretezza diretta e consente al client e al server di fornire la loro parte del segreto condiviso alla prima interazione. Anche quella prima interazione è ora crittografata, chiudendo la porta a un possibile vettore di attacco.