Quali sono le differenze esatte a livello di protocollo tra SSL e TLS?


40

Questa è un'immersione profonda tecnica dopo che è stata posta questa domanda generale .

Quali sono le differenze di protocollo tra SSL e TLS?
C'è davvero abbastanza differenza per giustificare un cambio di nome? (anziché chiamarlo "SSLv4" o SSLv5 per le versioni più recenti di TLS)


3
Sospetto che se desideri una comprensione davvero approfondita dovrai iniziare a leggere le specifiche. Dai un'occhiata alla pagina wiki . Include collegamenti a RFC e specifiche.
Zoredache,

7
@Zoredache, per favore non usare "wiki" come abbreviazione di "Wikipedia".
Spiff,

Risposte:


36

SSLv2 e SSLv3 sono completamente diversi (ed entrambi ora sono considerati non sicuri). SSLv3 e TLSv1.0 sono molto simili, ma presentano alcune differenze.

Potresti considerare TLSv1.0 come SSLv3.1 (in effetti è quello che succede nei record scambiati). È più semplice confrontare TLSv1.0 con TLSv1.1 e TLSv1.2 perché sono stati tutti modificati in IETF e seguono più o meno la stessa struttura. SSLv3 viene modificato da un'istituzione diversa (Netscape), rende un po 'più difficile individuare le differenze.

Ecco alcune differenze, ma dubito di poterle elencare tutte:

  • Nel ClientHellomessaggio (primo messaggio inviato dal client, per avviare l'handshake), la versione è {3,0}per SSLv3, {3,1}per TLSv1.0 e {3,2}per TLSv1.1.
  • Le ClientKeyExchangedifferisce.
  • MAC / HMAC differisce (TLS utilizza HMAC mentre SSL utilizza una versione precedente di HMAC).
  • La derivazione chiave differisce.
  • I dati dell'applicazione client possono essere inviati subito dopo l'invio del Finishedmessaggio SSL / TLS in SSLv3. In TLSv1, deve attendere il Finishedmessaggio del server .
  • L'elenco delle suite di crittografia differisce (e alcune sono state rinominate da SSL_*a TLS_*, mantenendo lo stesso numero ID).
  • Vi sono inoltre differenze per quanto riguarda la nuova estensione di rinegoziazione .

Consiglio vivamente il libro di Eric Rescorla - SSL e TLS: progettazione e costruzione di sistemi sicuri , Addison-Wesley, 2001 ISBN 0-201-61598-3 , se si vogliono davvero maggiori dettagli. Ho imparato alcuni dei punti sopra menzionati da questo libro. L'autore menziona occasionalmente le differenze tra SSLv3 e TLS (v1.0 solo al momento in cui il libro è stato scritto) quando spiega alcuni dei messaggi SSL / TLS, ma hai bisogno della spiegazione di fondo su questi messaggi per avere la possibilità di capire ( e non è appropriato copiare / incollare da questo libro qui).


Sembra che le estensioni TLS si applichino solo a TLS e non a SSL, giusto? Quindi, ad esempio, i client TLS possono inviare un ' ClientHello' record esteso , mentre i client solo SSL3 inviano sempre l'originale ' ClientHello'.
culix

@culix, in generale, è effettivamente corretto (principalmente perché le estensioni TLS sono definite nel framework di IETF). SSLv3 era anche in grado di avere dati extra nel suo record ClientHello (uguale a TLS 1.0 e 1.1). (Cercare draft302.txte " Nell'interesse della compatibilità futura ... ", confrontare con le sezioni 7.4.1.2 nelle specifiche TLS). Per far fronte a stack che non lo supportano, esistono anche soluzioni alternative come la pseudo-suite di crittografia SCSV nell'estensione di rinegoziazione.
Bruno,

@Bruno, Link al libro in basso .....
Pacerier,

4

Farò solo eco alle altre risposte, ma forse con un'enfasi leggermente diversa.

Esisteva un protocollo socket sicuro che era "posseduto" da Netscape che era chiamato SSL versione 2. Una nuova versione con una diversa struttura record e miglioramenti di sicurezza anche "posseduto" da Netscape fu rilasciata e chiamata SSL versione 3. All'interno del protocollo in diversi posti è un campo numero di versione binario. Per SSL versione 3, questo campo è impostato su 0x03 0x00, ovvero versione 3.0. Quindi l'IETF ha deciso di creare il proprio standard. Forse perché c'erano alcune incertezze sulla proprietà intellettuale su SSL, incluso se "SSL" era un marchio Netscape, quando l'IETF ha rilasciato la prossima versione di questo protocollo, le hanno dato il proprio nome: protocollo Transport Layer Security, o TLS versione 1.0. Il formato del record e la struttura generale sono identici e coerenti con SSL v3. Il numero di versione binario è stato convertito in 0x03 0x01 e, come altri hanno notato, c'erano alcune piccole modifiche alla crittografia. Da allora esistono versioni TLS 1.1 e 1.2, per le quali i numeri di protocollo interno sono 0x03 0x02 e 0x03 0x03.

Ignorando SSLv2, fondamentalmente è stato solo un cambio di nome insieme alla normale messa a punto del protocollo che si verifica quando le persone diventano più intelligenti in termini di sicurezza e prestazioni.


3

Fondamentalmente, non è altro che un cambio di nome per una versione più recente del protocollo. Credo che il motivo principale sia stato quello di differenziarlo dal vecchio standard informale, progettato principalmente da Netscape dopo che è diventato un protocollo ufficiale IETF.

Come è stato detto nelle risposte alla tua domanda precedente, questo non significa che SSLv3 e TLSv1.0 sono compatibili. Citando da RFC 2246:

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.

Immagino che se vuoi davvero conoscere le differenze esatte nei protocolli, devi leggere gli standard e confrontarti.

Bozza del protocollo SSLv3 da Netscape TLSv1.0 RFC 2246


@SvenW Confronterei per me stesso, ma è una grande sfida non sono sicuro di voler intraprendere. Questo standard esiste da 10 anni. Sicuramente qualcuno ha già fatto il confronto, con una bella grafica in modo che ragazzi come me possano capirlo.
goodguys_activate

@ MakerOfThings7 Purtroppo questa domanda non è qualcosa che può essere ridotta a un grafico a torta. Le uniche cose che potrebbero essere inserite in un grafico sono i bit rate di crittografia o (e sto allungando qui) il livello di sicurezza concesso (dove SSLv3 è "-" e TLS è "=" ...) L'unica intuizione di si può ottenere leggendo le specifiche, o almeno la pagina di Wikipedia (che ti ho fornito nella domanda precedente)
gWaldo

@SvenW Hai letto e compreso tu stesso entrambe le specifiche?
goodguys_activate

No perchè dovrei? Non sono uno sviluppatore che scrive software contro questa specifica, che è l'unica ragione per cui posso pensare. Se devo usare SSL / TLS, leggo il documento per OpenSSL ecc., Che è sufficiente per utenti e amministratori.
Sven

@SvenW Senza offesa, ma lo terrò aperto fino a quando non avrò una risposta da qualcuno che ha letto e compreso le specifiche ... il che è ragionevole dato la mia domanda.
goodguys_activate

0

Il protocollo di crittografia SSL è ora denominato TLS, risultando in due nomi per lo stesso protocollo. Il software corrente negozia automaticamente TLS versione 1 o SSL versione 3. Gli umani, d'altra parte, devono decidere se usare il termine SSL più riconoscibile rispetto alla designazione TLS ufficiale.

SSL è il predecessore di TLS.

TLS e SSL crittografano i segmenti delle connessioni di rete a livello di applicazione per garantire un transito end-to-end sicuro a livello di trasporto.


Quindi è un cambio di nome? Questo è tutto?
goodguys_activate

sì TLS è la versione più recente, TLS può trasformarsi in SSL3 se necessario.
aleroot,

3
No, non è proprio un cambio di nome. TLSv1 è interoperabile con SSLv3 (e fallback) ma non è necessariamente vero il contrario. TLSv1 è come SSLv4. Nota: esistono anche più versioni di TLS.
Philip Reynolds,

-2

differenze:

  • TLS funziona piuttosto sopra un protocollo standard. Una connessione TLS inizia come una sessione non crittografata di un servizio standard, ma a un certo punto iniziano a negoziare la crittografia. Richiede l'estensione del protocollo standard per questa negoziazione.
  • I protocolli standard funzionano su SSL. Una connessione SSL negozia innanzitutto la crittografia, quindi esegue il protocollo di base su di essa.

Non è corretto, stai parlando della differenza tra iniziare con SSL / TLS e passare a TLS all'interno del protocollo tramite comandi come STARTTLS: stackoverflow.com/questions/3660798/…
Bruno
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.