Freigeben über


TLS Handshake-Protokoll

Das Transport Layer Security (TLS) Handshake Protocol ist für die Authentifizierung und den Schlüsselaustausch verantwortlich, der zum Einrichten oder Fortsetzen sicherer Sitzungen erforderlich ist. Beim Einrichten einer sicheren Sitzungverwaltet das Handshake-Protokoll Folgendes:

  • Cipher Suite-Aushandlung
  • Authentifizierung des Servers und optional der Client
  • Sitzungsschlüsselinformationsaustausch.

Cipher Suite-Aushandlung

Der Client und der Server nehmen Kontakt auf und wählen die Verschlüsselungssuite aus, die während des gesamten Nachrichtenaustauschs verwendet wird.

Authentifizierung

In TLS beweist ein Server seine Identität für den Client. Möglicherweise muss der Client auch seine Identität auf dem Server nachweisen. PKI, die Verwendung von öffentlichen/privaten Schlüsselpaaren, ist die Grundlage dieser Authentifizierung. Die genaue Methode, die für die Authentifizierung verwendet wird, wird durch die ausgehandelte Verschlüsselungssuite bestimmt.

Schlüsselaustausch

Der Client und der Server tauschen Zufallszahlen und eine spezielle Zahl namens "Geheimer Masterschlüssel" aus. Diese Nummern werden mit zusätzlichen Daten kombiniert, mit denen Client und Server ihren freigegebenen geheimen Schlüssel erstellen können, der als Masterschlüssel bezeichnet wird. Der geheime Hauptschlüssel wird vom Client und Server verwendet, um den schreibgeschützten MAC-Schlüssel zu generieren. Dabei handelt es sich um den Sitzungsschlüssel, der für Hashing-verwendet wird, und den Schreibschlüssel, bei dem es sich um den Sitzungsschlüssel handelt, der für die Verschlüsselung verwendet wird.

Einrichten einer sicheren Sitzung mithilfe von TLS

Das TLS Handshake-Protokoll umfasst die folgenden Schritte:

  1. Der Client sendet eine "Client hello"-Nachricht zusammen mit dem Zufallswert des Clients und unterstützten Verschlüsselungssammlungen an den Server.
  2. Der Server antwortet, indem eine "Server hello"-Nachricht zusammen mit dem Zufallswert des Servers an den Client gesendet wird.
  3. Der Server sendet sein Zertifikat zur Authentifizierung an den Client und kann ein Zertifikat vom Client anfordern. Der Server sendet die Nachricht "Server hello done".
  4. Wenn der Server ein Zertifikat vom Client angefordert hat, sendet der Client es.
  5. Der Client erstellt einen zufälligen Pre-Master-Geheimschlüssel und verschlüsselt ihn mit dem öffentlichen Schlüssel vom Zertifikat des Servers und sendet den verschlüsselten Pre-Master-Geheimen Schlüssel an den Server.
  6. Der Server empfängt den geheimen Pre-Master-Schlüssel. Der Server und der Client generieren jeweils den geheimen Masterschlüssel und Sitzungsschlüssel basierend auf dem Geheimen Hauptschlüssel.
  7. Der Client sendet die Benachrichtigung "Verschlüsselungsspezifikation ändern" an den Server, um anzugeben, dass der Client mit der Verwendung der neuen Sitzungsschlüssel für Hashing und Verschlüsseln von Nachrichten beginnt. Der Client sendet auch die Nachricht "Client abgeschlossen".
  8. Der Server empfängt "Verschlüsselungsspezifikation ändern" und wechselt den Sicherheitsstatus der Datensatzschicht in symmetrische Verschlüsselung mithilfe der Sitzungsschlüssel. Der Server sendet die Nachricht "Server abgeschlossen" an den Client.
  9. Client und Server können jetzt Anwendungsdaten über den gesicherten Kanal austauschen, den sie eingerichtet haben. Alle Nachrichten, die vom Client an den Server und vom Server an den Client gesendet werden, werden mithilfe des Sitzungsschlüssels verschlüsselt.

Fortsetzen einer sicheren Sitzung mithilfe von TLS

  1. Der Client sendet eine "Client hello"-Nachricht mit der Sitzungs-ID der Sitzung, die fortgesetzt werden soll.

  2. Der Server überprüft den Sitzungscache auf eine übereinstimmende Sitzungs-ID. Wenn eine Übereinstimmung gefunden wird und der Server die Sitzung fortsetzen kann, sendet er eine "Server hello"-Nachricht mit der Sitzungs-ID.

    Anmerkung

    Wenn eine Sitzungs-ID-Übereinstimmung nicht gefunden wird, generiert der Server eine neue Sitzungs-ID, und der TLS-Client und der Server führen einen vollständigen Handshake aus.

     

  3. Client- und Server müssen Nachrichten "Verschlüsselungsspezifikation ändern" austauschen und "Client abgeschlossene" und "Server abgeschlossene" Nachrichten senden.

  4. Client und Server können nun den Austausch von Anwendungsdaten über den sicheren Kanal fortsetzen.