Qual è la differenza tra SSL, TLS e HTTPS?

Mi confondo con i termini in questo settore. Cosa sono SSL, TLS e HTTPS? Quali sono le differenze tra loro?

Soluzione

TLS è il nuovo nome di SSL. Cioè, il protocollo SSL è arrivato alla versione 3.0; TLS 1.0 è "SSL 3.1". Le versioni TLS attualmente definite includono TLS 1.1 e 1.2. Ogni nuova versione aggiunge alcune caratteristiche e modifica alcuni dettagli interni. A volte diciamo "SSL/TLS".

HTTPS è HTTP-in-SSL/TLS. SSL (TLS) stabilisce un tunnel sicuro e bidirezionale per dati binari arbitrari tra due host. HTTP è un protocollo per inviare richieste e ricevere risposte, ogni richiesta e risposta consiste in intestazioni dettagliate e (eventualmente) alcuni contenuti. HTTP è pensato per funzionare su un tunnel bidirezionale per dati binari arbitrari; quando questo tunnel è una connessione SSL/TLS, allora il tutto è chiamato "HTTPS".

Per spiegare gli acronimi:

  • SSL" significa "Secure Sockets Layer". È stato coniato dagli inventori delle prime versioni del protocollo, Netscape (l'azienda è stata poi acquistata da AOL).
  • "TLS" significa "Transport Layer Security". Il nome è stato cambiato per evitare qualsiasi problema legale con Netscape in modo che il protocollo potesse essere "aperto e libero" (e pubblicato come RFC). Accenna anche all'idea che il protocollo funziona su qualsiasi flusso bidirezionale di byte, non solo sui socket basati su Internet.
  • "HTTPS" dovrebbe significare "HyperText Transfer Protocol Secure", che è grammaticalmente scorretto. Nessuno, tranne i pedanti annoiati, usa mai la traduzione; "HTTPS" è meglio pensare come "HTTP con una S che significa SSL". Altri acronimi di protocolli sono stati costruiti allo stesso modo, ad esempio SMTPS, IMAPS, FTPS... tutti questi protocolli sono un protocollo nudo che "è stato reso sicuro" eseguendolo all'interno di SSL/TLS.
Commentari (8)

SSL e TLS sono protocolli che mirano a fornire privacy e integrità dei dati tra due parti (vedi RFC 2246), progettati per funzionare su un protocollo di comunicazione affidabile (tipicamente TCP). Anche se la specifica TLS non parla di socket, la progettazione di SSL/TLS è stata fatta in modo che le applicazioni possano usarli quasi come i tradizionali socket TCP, per esempio SSLSocket in Java estende Socket (ci sono piccole differenze in termini di usabilità, però). HTTPS è HTTP su SSL/TLS, dove la connessione SSL/TLS viene stabilita per prima, e poi i normali dati HTTP vengono scambiati su questa connessione SSL/TLS. Se usi SSL o TLS per questo dipende dalla configurazione del tuo browser e del server (di solito c'è un'opzione per permettere SSLv2, SSLv3 o TLS 1.x). I dettagli su come HTTP e SSL/TLS formano HTTPS sono in RFC 2818. Per quanto riguarda la differenza tra SSL e TLS, potresti essere interessato a queste due risposte che ho scritto per domande simili su StackOverflow e ServerFault:

  • Differenza tra SSL & TLS [Stackoverflow]
  • Quali sono le differenze esatte a livello di protocollo tra SSL e TLS? [Serverfault]

    Si potrebbe considerare TLSv1.0 come SSLv3.1 (infatti questo'è ciò che accade all'interno dei record scambiati). È solo più facile confrontare il TLSv1.0 con TLSv1.1 e TLSv1.2 perché sono stati tutti modificati all'interno della IETF e seguono più o meno la stessa struttura. SSLv3 essendo curato da un ente diverso (Netscape), rende un po' più difficile così individuare le differenze.

    Ecco alcune differenze, ma dubito di poterle elencare tutte:

    • Nel messaggio ClientHello (primo messaggio inviato dal client, per iniziare l'handshake), la versione è {3,0} per SSLv3, {3,1} per TLSv1.0 e {3,2} per TLSv1.1.
    • Il ClientKeyExchange differisce.
    • Il MAC/HMAC differisce (TLS usa HMAC mentre SSL usa una versione precedente di HMAC).
  • La derivazione della chiave differisce. Il client può inviare i dati dell'applicazione subito dopo aver inviato il messaggio SSL/TLS Finished in SSLv3. In TLSv1, deve aspettare il messaggio Finished del server.
    • L'elenco delle cipher suite è diverso (e alcune di esse sono state rinominate da SSL* a TLS*, mantenendo lo stesso numero id).
    • Ci sono anche differenze per quanto riguarda la nuova estensione di rinegoziazione. In generale, più alta è la versione o SSL/TLS, più sicuro è, a condizione di scegliere bene anche le suite di cifratura (le versioni più alte di TLS offrono anche l'uso di suite di cifratura che sono considerate migliori). (SSLv2 è considerato insicuro.) Inoltre, SSL non rientra nell'ambito IETF. Per esempio, la correzione della rinegoziazione di TLS ha dovuto essere adattata per SSLv3 (anche se gli stack SSL/TLS dovevano essere aggiornati comunque). Potresti anche essere interessato a questa risposta:
    • Cosa succede sul filo quando viene impostata una connessione TLS / LDAP o TLS / HTTP?[Stackoverflow] Si noti che alcune persone oppongono SSL e TLS come la differenza tra "SSL/TLS al momento della connessione" e "aggiornamento a TLS" (dopo qualche conversazione usando il protocollo dell'applicazione). Nonostante alcune di queste risposte siano relativamente molto votate, questo non è corretto. Questo errore è propagato dal fatto che alcune applicazioni, come Microsoft Outlook, offrono due opzioni di configurazione chiamate "SSL" e "TLS" per la configurazione SMTP/IMAP quando in realtà intendono "SSL/TLS alla connessione" e "upgrade to TLS". (Lo stesso vale per la libreria JavaMail, credo). Le RFC che parlano di STARTTLS sono state scritte quando TLS era già una RFC ufficiale, ecco perché parlano solo di aggiornare la connessione a TLS. In pratica, se modificate la configurazione del vostro client di posta per forzarlo ad usare SSLv3 invece di TLS (qualcosa che non raccomanderei generalmente), è ancora probabile che sia in grado di aggiornare a SSL/TLS usando STARTTLS con una connessione SSLv3, semplicemente perché si tratta più della modalità di funzionamento che della versione di SSL/TLS e/o delle suite di cifratura. C'è anche una variante di HTTP in cui l'aggiornamento a SSL/TLS è fatto all'interno del protocollo HTTP (simile a STARTTLS in LDAP/SMTP). Questo è descritto in RFC 2817. Per quanto ne so, questo non è quasi mai usato (e non è quello che viene usato da https:// nei browser). La parte più rilevante di questa RFC è la sezione su CONNECT per i server proxy HTTP (questo è usato dai server proxy HTTP per inoltrare le connessioni HTTPS).
Commentari (4)

SSL VS TLS

I termini SSL e TLS sono spesso usati in modo intercambiabile o insieme (TLS/SSL), ma uno è di fatto il predecessore dell'altro - SSL 3.0 è servito come base per TLS 1.0 che, di conseguenza, è talvolta indicato come SSL 3.1.

Qual è più sicuro SSL o TLS

In termini di sicurezza sono entrambi considerati ugualmente sicuri

La differenza principale è che, mentre le connessioni SSL iniziano con la sicurezza e procedono direttamente alle comunicazioni protette, le connessioni TLS iniziano prima con un "ciao" insicuro al server e passano alle comunicazioni protette solo dopo che l'handshake tra il client e il server ha successo. Se l'handshake TLS fallisce per qualsiasi motivo, la connessione non viene mai creata.

(SSL e TLS vs HTTP)

Il protocollo HTTP è usato per richiedere e ricevere i dati e https in cui l''s' non è altro che SSL sicuro che rende la richiesta del protocollo http e riceve l'attività criptata in modo che nessun attaccante medio possa ottenere i dati facilmente.

Se non viene utilizzato né SSL né TLS con HTTP

allora la vostra connessione con il server web non è criptata tutti i dati saranno inviati in chiaro qualsiasi attaccante medio può ottenere e visualizzare tali dati.

quindi dovrebbe andare con SSL o TLS

beh, entrambi sono uguali ma TLS è più estensibile e spera di ottenere più supporto in futuro e TLS è retrocompatibile.

Commentari (3)