TLS Handshake-Protokoll

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

  • Verschlüsselungssammlungsaushandlung
  • Authentifizierung des Servers und optional des Clients
  • Austausch von Sitzungsschlüsselinformationen.

Cipher Suite-Aushandlung

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

Authentifizierung

In TLS bestätigt ein Server seine Identität gegenüber dem Client. Der Client muss möglicherweise auch seine Identität gegenüber dem Server nachweisen. PKI, die Verwendung von Paaren aus öffentlichem und privatem Schlüssel,ist die Grundlage dieser Authentifizierung. Die genaue Methode, die für die Authentifizierung verwendet wird, wird durch die ausgehandelte Verschlüsselungssammlung bestimmt.

Key Exchange

Client und Server tauschen Zufallszahlen und eine spezielle Zahl namens Pre-Master Secret aus. Diese Zahlen werden mit zusätzlichen Daten kombiniert, mit denen Client und Server ihr gemeinsames Geheimnis erstellen können, das als "Hauptgeheimnis" bezeichnet wird. Der geheime Hauptschlüssel wird von Client und Server verwendet, um den Mac-Schreibschlüssel zu generieren. Dabei handelt es sich um den Sitzungsschlüssel, der für das Hashingverwendet wird, und den Schreibschlüssel, bei dem es sich um den für die Verschlüsselung verwendeten Sitzungsschlüssel handelt.

Einrichten einer sicheren Sitzung mit 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 er eine "Server hello"-Nachricht zusammen mit dem zufälligen Wert des Servers an den Client sendet.
  3. Der Server sendet sein Zertifikat zur Authentifizierung an den Client und kann ein Zertifikat vom Client anfordern. Der Server sendet die Meldung "Server hello done".
  4. Wenn der Server ein Zertifikat vom Client angefordert hat, sendet der Client es.
  5. Der Client erstellt ein zufälliges Pre-Master Secret und verschlüsselt es mit dem öffentlichen Schlüssel aus dem Serverzertifikat und sendet den verschlüsselten Pre-Master Secret an den Server.
  6. Der Server empfängt den geheimen Prämasterschlüssel. Server und Client generieren jeweils den geheimen Hauptschlüssel und die Sitzungsschlüssel basierend auf dem Geheimen Prähauptschlüssel.
  7. Der Client sendet die Benachrichtigung "Verschlüsselungsspezifikation ändern" an den Server, um anzugeben, dass der Client die neuen Sitzungsschlüssel zum Hashen und Verschlüsseln von Nachrichten verwendet. Der Client sendet auch die Meldung "Client abgeschlossen".
  8. Der Server empfängt "Verschlüsselungsspezifikation ändern" und schaltet den Sicherheitsstatus der Datensatzebene mithilfe der Sitzungsschlüsselin symmetrische Verschlüsselung um. Der Server sendet die Meldung "Server finished" an den Client.
  9. Client und Server können jetzt Anwendungsdaten über den gesicherten Kanal austauschen, den sie eingerichtet haben. Alle Nachrichten, die von Client zu Server und von Server zu Client gesendet werden, werden mithilfe des Sitzungsschlüssels verschlüsselt.

Fortsetzen einer sicheren Sitzung mit TLS

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

  2. Der Server überprüft seinen 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.

    Hinweis

    Wenn keine Übereinstimmung mit der Sitzungs-ID 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 vom Typ "Verschlüsselungsspezifikation ändern" austauschen und Nachrichten vom Typ "Client abgeschlossen" und "Server fertig" senden.

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