Das TLS-Handshake-ProtokollDas TLS-Handshake-Protokoll besteht aus drei Unterprotokollen, mit denen die Kommunikationspartner
Das Handshake-Protokoll handelt eines TLS-Sitzung aus, die durch folgende Parameter spezifiziert ist:
Das Change-Cipher-Spec-Protokoll dient dazu, Änderung in der Verschlüsselungsstrategie, z.B. um das Verschlüsselungsverfahren zu ändern oder andere Schlüssel zu verwenden. Es wird außerdem beim Handshake-Verfahren zur Aufnahme der Datenübertragung benutzt. Eine Change-Cipher-Spec-Nachricht bewirkt beim Empfänger eine Kopie der aktuellen Pending-State-Parameter in den Current-State. Das Alert-Protokoll sendet im Fehlerfall eine Warnung an die Gegenstelle, wobei Art und Schwere des Fehlers dargestellt werden. "Fatale" Fehler führen zu einem Abbruch der Verbindung, wobei andere Sitzungen fortgesetzt werden dürfen, aber der Sitzungsidentifikator (session identifier) ungültig gemacht werden muss. Auch Alert-Nachrichten werden verschlüsselt und komprimiert übertragen. Ein Closure-Alert dient dazu, den ordnungsgemäßen Abbruch einer Verbindung zu garantieren, damit kein Angriff durch nicht beendete Sitzungen ausgeführt werden kann (truncation attack). Ein Closure-Alert kann jeder Teilnehmer jederzeit auslösen, ehe er die Sitzung beendet. Der auslösende Teilnehmer braucht dabei nicht auf die entsprechende Antwort der Gegenstelle zu warten. Ein Fehler-Alert kann folgende Nachrichten beinhalten:
Einige dieser Nachrichten legen die schwere des Fehlers fest (z.B. bad_record_mac ist stets fatal), andere lassen dem Sender die Möglichkeit, diese selbst zu bestimmen. Das TLS-Handshake-Protokoll dient dem Aushandeln der o.g. Sicherheits-Parameter einer Verbindung. Es arbeitet oberhalb des TLS-Record-Layers und besteht aus den folgenden Schritten:
Ein Angreifer kann u.U. erreichen, dass zwei Kommunikationspartner die geringste Sicherheitsstufe aushandeln, indem er beispielsweise einen Port blockiert oder unauthentifizierte Verbindungen aufbaut. Daher sollten die Anwendungsschichten über die ausgehandelte Sicherheitsstufe informiert werden. Der Standard empfiehlt ausdrücklich, Daten nicht über 40 Bit Schlüssel- Algorithmen zu versenden, wenn sie für die Benutzer einen entsprechenden Wert besitzen. Das TLS-Protokoll soll diese Sicherheitsanforderungen unterstützen. Um eine Verbindung aufzunehmen, sendet der Client ein "client hello"-Nachricht an den Server, der mit einer "server hello"-Nachricht antwortet (andernfalls wird ein fataler Fehler ausgelöst). In diesen Nachrichten werden die Security-Parameter ausgetauscht.
Nach den Hallo-Nachrichten werden die Zertifikate ausgetauscht, um sich gegenseitig zu identifizieren. Durch das "Laden" des Current-State (ChangeCipherSpec) wird die gesicherte Verbindung gestartet. Soll eine Verbindung wiederaufgenommen oder kopiert werden (d.h. mit den gleichen Parametern soll eine neue Verbindung aufgenommen werden), so wird das folgende Protokoll verwendet: |