Was sind die genauen Unterschiede auf Protokollebene zwischen SSL und TLS?

40

Dies ist ein technischer Deep Dive, nachdem diese Übersichtsfrage gestellt wurde.

Was sind die Protokollunterschiede zwischen SSL und TLS?
Gibt es wirklich genug Unterschiede, um eine Namensänderung zu rechtfertigen? (im Gegensatz zu "SSLv4" oder SSLv5 für die neueren Versionen von TLS)

goodguys_activate
quelle
3
Ich vermute, wenn Sie ein wirklich tiefgehendes Verständnis wünschen, müssen Sie anfangen, die technischen Daten zu lesen. Besuche die Wiki-Seite . Es enthält Links zu den RFCs und Spezifikationen.
Zoredache
7
@Zoredache, bitte benutze nicht "wiki" als Abkürzung für "Wikipedia".
Spiff

Antworten:

36

SSLv2 und SSLv3 sind völlig unterschiedlich (und beide werden jetzt als unsicher betrachtet). SSLv3 und TLSv1.0 sind sich sehr ähnlich, weisen jedoch einige Unterschiede auf.

Sie könnten TLSv1.0 als SSLv3.1 betrachten (tatsächlich geschieht dies in den ausgetauschten Datensätzen). Es ist nur einfacher, TLSv1.0 mit TLSv1.1 und TLSv1.2 zu vergleichen, da sie alle in IETF bearbeitet wurden und mehr oder weniger der gleichen Struktur folgen. Da SSLv3 von einer anderen Institution (Netscape) bearbeitet wird, ist es etwas schwieriger, die Unterschiede zu erkennen.

Hier sind ein paar Unterschiede, aber ich bezweifle, dass ich sie alle auflisten kann:

  • In der ClientHelloNachricht (erste vom Client gesendete Nachricht zum Initiieren des Handshakes) gilt die Version {3,0}für SSLv3, {3,1}TLSv1.0 und {3,2}TLSv1.1.
  • Das ClientKeyExchangeunterscheidet sich.
  • Der MAC / HMAC unterscheidet sich (TLS verwendet HMAC, während SSL eine frühere Version von HMAC verwendet).
  • Die Schlüsselableitung ist unterschiedlich.
  • Die Clientanwendungsdaten können direkt nach dem Senden der SSL / TLS- FinishedNachricht in SSLv3 gesendet werden . In TLSv1 muss es auf die FinishedNachricht des Servers warten .
  • Die Liste des Chiffriersätze unterscheiden (und einige von ihnen werden von umbenannt worden , SSL_*um TLS_*die gleichen ID - Nummer zu halten).
  • Es gibt auch Unterschiede in Bezug auf die neue Neuverhandlungserweiterung .

Ich würde Eric Rescorlas Buch - SSL und TLS: Entwerfen und Erstellen sicherer Systeme , Addison-Wesley, 2001 ISBN 0-201-61598-3 , wärmstens empfehlen , wenn Sie wirklich mehr Details wünschen. Ich habe einige der oben genannten Punkte aus diesem Buch gelernt. Der Autor erwähnt gelegentlich die Unterschiede zwischen SSLv3 und TLS (v1.0 nur zu dem Zeitpunkt, als das Buch geschrieben wurde), wenn er einen Teil der SSL / TLS-Nachricht erklärt, aber Sie benötigen die Hintergrunderklärung zu diesen Nachrichten, um eine Chance zum Verständnis zu haben ( und es ist nicht angebracht, dieses Buch hier zu kopieren / einzufügen).

Bruno
quelle
Es sieht so aus, als ob die TLS-Erweiterungen nur für TLS und nicht für SSL gelten, richtig? So senden TLS-Clients beispielsweise möglicherweise einen erweiterten ClientHelloDatensatz, während Clients, die nur SSL3 verwenden, immer nur den ursprünglichen Datensatz senden ClientHello.
Culix
@culix im Allgemeinen ist das in der Tat richtig (hauptsächlich, weil die TLS-Erweiterungen im Rahmen von IETF definiert sind). SSLv3 konnte auch zusätzliche Daten in seinem ClientHello-Datensatz speichern (wie TLS 1.0 und 1.1). (Suchen Sie draft302.txtund " Im Interesse der Aufwärtskompatibilität ... ", vergleichen Sie mit den Abschnitten 7.4.1.2 in den TLS-Spezifikationen.) Um mit Stacks fertig zu werden, die dies nicht unterstützen, gibt es auch Problemumgehungen wie die SCSV-Pseudo-Cipher-Suite in der Neuverhandlungserweiterung.
Bruno
@Bruno, Link unten
buchen
4

Ich werde nur die anderen Antworten wiederholen, aber vielleicht mit einer etwas anderen Betonung.

Es gab ein Secure-Sockets-Protokoll, das Netscape "gehörte", das als SSL-Version 2 bezeichnet wurde. Eine neue Version mit einer anderen Datensatzstruktur und Sicherheitsverbesserungen, die auch Netscape "gehörte", wurde veröffentlicht und als SSL-Version 3 bezeichnet places ist ein binäres Versionsnummernfeld. Für SSL-Version 3 ist dieses Feld auf 0x03 0x00 festgelegt, dh Version 3.0. Dann beschloss die IETF, einen eigenen Standard zu schaffen. Möglicherweise gab es einige Unsicherheiten in Bezug auf das geistige Eigentum in Bezug auf SSL, einschließlich der Frage, ob "SSL" eine Marke von Netscape ist, als die IETF die nächste Version dieses Protokolls veröffentlichte, gaben sie ihm ihren eigenen Namen: Transport Layer Security-Protokoll oder TLS-Version 1.0. Das Datensatzformat und die Gesamtstruktur sind identisch und stimmen mit SSL v3 überein. Die binäre Versionsnummer wurde auf 0x03 0x01 revidiert, und wie andere angemerkt haben, gab es einige geringfügige Kryptoänderungen. Seitdem gibt es TLS-Versionen 1.1 und 1.2, für die die internen Protokollnummern 0x03 0x02 und 0x03 0x03 sind.

Wenn man SSLv2 ignoriert, handelt es sich im Grunde genommen nur um eine Namensänderung zusammen mit einer normalen Protokoll-Feinabstimmung, die auftritt, wenn die Leute in Bezug auf Sicherheit und Leistung intelligenter werden.

James Reinstate Monica Polk
quelle
3

Grundsätzlich handelt es sich um eine reine Namensänderung für eine neuere Version des Protokolls. Ich glaube, der Hauptgrund dafür war, es von dem älteren, informellen Standard zu unterscheiden, der hauptsächlich von Netscape entwickelt wurde, nachdem es ein offizielles IETF-Standardprotokoll wurde.

Wie bereits in den Antworten auf Ihre frühere Frage erwähnt, bedeutet dies nicht, dass SSLv3 und TLSv1.0 kompatibel sind. Zitiert aus RFC 2246:

Die Unterschiede zwischen diesem Protokoll und SSL 3.0 sind nicht dramatisch, aber sie sind so bedeutend, dass TLS 1.0 und SSL 3.0 nicht zusammenarbeiten.

Ich denke, wenn Sie die genauen Unterschiede in den Protokollen wirklich wissen wollen, müssen Sie die Standards lesen und sich selbst vergleichen.

Entwurf des SSLv3-Protokolls aus Netscape TLSv1.0 RFC 2246

Sven
quelle
@SvenW Ich würde für mich selbst vergleichen, aber es ist eine große Herausforderung, die ich nicht unbedingt annehmen möchte. Dieser Standard gibt es schon seit 10 Jahren. Sicher hat schon jemand den Vergleich gemacht, mit hübschen Grafiken, damit Leute wie ich es verstehen können.
goodguys_activate
@ MakerOfThings7 Leider lässt sich diese Frage nicht auf ein Tortendiagramm reduzieren. Die einzigen Dinge, die in ein Diagramm aufgenommen werden könnten, sind die Verschlüsselungsbitraten oder (und ich strecke sie hier aus) die Sicherheitsstufe, die gewährt wird (wobei SSLv3 "-" und TLS "=" ist ...) Sie können die
technischen Daten
@SvenW Haben Sie beide Spezifikationen selbst gelesen und verstanden?
goodguys_activate
Nein Warum sollte ich? Ich bin kein Entwickler, der Software gegen diese Spezifikation schreibt, und das ist ungefähr der einzige Grund, warum ich mir das vorstellen kann. Wenn ich SSL / TLS verwenden muss, lese ich das Dokument für OpenSSL usw., das für Benutzer und Administratoren ausreicht.
Sven
@SvenW Nichts für ungut, aber ich werde das so lange offen halten, bis ich eine Antwort von jemandem bekomme, der die Spezifikationen gelesen und verstanden hat ... was angesichts meiner Frage vernünftig ist.
goodguys_activate
0

Das Verschlüsselungsprotokoll SSL heißt jetzt TLS, was zu zwei Namen für dasselbe Protokoll führt. Die aktuelle Software handelt TLS Version 1 oder SSL Version 3 automatisch aus. Menschen müssen sich dagegen zwischen der Verwendung des besser erkennbaren SSL-Begriffs und der offiziellen TLS-Bezeichnung entscheiden.

SSL ist der Vorgänger von TLS.

TLS und SSL verschlüsseln die Segmente der Netzwerkverbindungen auf der Anwendungsebene, um einen sicheren End-to-End-Versand auf der Transportebene zu gewährleisten.

aleroot
quelle
Also ist es eine Namensänderung? Das ist es?
goodguys_activate
ja TLS ist die neuere Version, TLS kann sich bei Bedarf in SSL3 verwandeln.
aleroot 06.09.10
3
Nein, es ist keine Namensänderung. TLSv1 ist mit SSLv3 interoperabel (und wird zurückgreifen), aber das muss nicht andersherum zutreffen. TLSv1 ist wie SSLv4. Hinweis: Es gibt auch mehrere Versionen von TLS.
Philip Reynolds
-2

Unterschiede:

  • TLS läuft ganz oben auf einem Standardprotokoll. Eine TLS-Verbindung beginnt wie eine unverschlüsselte Sitzung eines Standarddienstes, aber irgendwann beginnen sie mit dem Aushandeln der Verschlüsselung. Es erfordert die Erweiterung des Standardprotokolls für diese Aushandlung.
  • Standardprotokolle werden über SSL ausgeführt. Eine SSL-Verbindung handelt zuerst die Verschlüsselung aus und führt dann das Basisprotokoll darüber aus.
LatinSuD
quelle
Das ist nicht richtig, Sie sprechen über den Unterschied zwischen dem Starten mit SSL / TLS und dem Wechseln zu TLS innerhalb des Protokolls über Befehle wie STARTTLS: stackoverflow.com/questions/3660798/…
Bruno