Was passiert bei einem TLS-Handshake? | SSL Handshake

Bei einem TLS/SSL-Handshake tauschen Clients und Server SSL-Zertifikate, Cipher-Suite-Anforderungen und zufällig generierte Daten zum Erstellen von Sitzungsschlüsseln aus.

Lernziele

Nach Lektüre dieses Artikels können Sie Folgendes:

  • Was ist ein TLS-Handshake
  • Was bewirkt ein TLS-Handshake
  • Was passiert in den einzelnen Schritten ein TLS-Handshakes
  • Welche Typen von TLS-Handshakes gibt es

Link zum Artikel kopieren

Was ist ein TLS-Handshake?

the TLS Handshake

TLS ist ein Verschlüsselungsprotokoll zur Sicherung der Internetkommunikation. Ein TLS-Handshake ist der Prozess, der eine Kommunikationssitzung mit TLS-Verschlüsselung startet. Während eines TLS-Handshakes tauschen die beiden kommunizierenden Seiten Nachrichten aus, um sich gegenseitig zu bestätigen, sich gegenseitig zu verifizieren, die von ihnen verwendeten Verschlüsselungsalgorithmen festzulegen und Sitzungsschlüssel zu vereinbaren. TLS-Handshakes sind ein grundlegender Bestandteil davon, wie HTTPS funktioniert.

TLS- vs. SSL-Handshakes

SSL oder Secure Sockets Layer war das ursprüngliche Verschlüsselungsprotokoll, das für HTTP entwickelt wurde. SSL wurde vor einiger Zeit durch TLS bzw. Transport Layer Security ersetzt. SSL-Handshakes heißen jetzt TLS-Handshakes, obwohl der Begriff "SSL" immer noch weit verbreitet ist.

Wann findet ein TLS-Handshake statt?

Ein TLS-Handshake erfolgt immer dann, wenn ein Benutzer zu einer Website über HTTPS navigiert und der Browser beginnt, den Ursprungsserver abzufragen. Ein TLS-Handshake tritt auch dann auf, wenn andere Kommunikationen HTTPS verwenden, einschließlich API-Aufrufen und DNS-über-HTTPS-Abfragen.

TLS-Handshakes treten auf, nachdem eine TCP-Verbindung über einen TCP-Handshake geöffnet wurde.

Was passiert während eines TLS-Handshakes?

Während eines TLS-Handshakes führen Client und Server gemeinsam Folgendes aus:

  • Bestimmen, welche TLS-Version (TLS 1.0, 1.2, 1.3 usw.) verwendet werden soll
  • Entscheiden, welche Cipher Suites (siehe weiter unten) verwendet werden sollen
  • Authentifizieren die Identität des Servers über den öffentlichen Schlüssel des Servers und die digitale Signatur der SSL-Zertifizierungsstelle
  • Generieren Sitzungsschlüssel, um nach Abschluss des Handshakes eine symmetrische Verschlüsselung zu verwenden

In welchen Schritten läuft ein TLS-Handshake ab?

TLS-Handshakes sind eine Reihe von Datagrammen oder Nachrichten, die von einem Client und einem Server ausgetauscht werden. Ein TLS-Handshake umfasst mehrere Schritte, während Client und Server Informationen austauschen, die erforderlich sind, um den Handshake abzuschließen und unsere weitere Kommunikation zu ermöglichen.

Die genauen Schritte innerhalb eines TLS-Handshakes hängen von der Art des verwendeten Schlüsselaustausch-Algorithmus und den von beiden Seiten unterstützten Cipher Suites ab. Der RSA-Schlüsselaustausch-Algorithmus wird am häufigsten verwendet. Er läuft wie folgt ab:

  1. Die „Client Hello“-Nachricht: Der Client initiiert den Handshake, indem er eine „Hello“-Nachricht an den Server sendet. Die Nachricht zeigt an, welche TLS-Version der Client unterstützt, welche Cipher Suites unterstützt werden und eine Folge von zufälligen Bytes, die als „Client Random“ bezeichnet werden.
  2. Die „Server Hello“-Nachricht: Als Antwort auf die Client-Hello-Nachricht sendet der Server eine Nachricht, die das SSL-Zertifikat des Servers, die vom Server ausgewählte Verschlüsselungssuite und die „Server Random“ (eine vom Server generierte zufällige Byte-Zeichenfolge) enthält.
  3. Authentifizierung: Der Client überprüft das SSL-Zertifikat des Servers bei der Zertifizierungsstelle, die es ausgestellt hat. Dieser Vorgang bestätigt, dass der Server der ist, der er vorgibt zu sein, und dass der Client mit dem tatsächlichen Eigentümer der Domain interagiert.
  4. Das Premaster Secret: Der Client sendet eine weitere zufällige Folge von Bytes, das „Premaster Secret“. Das Premaster Secret wird mit dem öffentlichen Schlüssel verschlüsselt und kann vom Server nur mit dem privaten Schlüssel entschlüsselt werden. (Der Client erhält den öffentlichen Schlüssel vom SSL-Zertifikat des Servers.)
  5. Privater Schlüssel wird verwendet: Der Server entschlüsselt das Premaster Secret.
  6. Sitzungsschlüssel wird erstellt: Sowohl Client als auch Server generieren Sitzungsschlüssel aus dem Client Random, dem Server Random und dem Premaster Secret. Sie sollten zu den gleichen Ergebnissen kommen.
  7. Client ist bereit: Der Client sendet eine „Fertig“-Nachricht, die mit einem Sitzungsschlüssel verschlüsselt ist.
  8. Server ist bereit: Der Server sendet eine „Fertig“-Nachricht, die mit einem Sitzungsschlüssel verschlüsselt ist.
  9. Sichere symmetrische Verschlüsselung erreicht: Der Handshake ist abgeschlossen und die Kommunikation wird mit den Sitzungsschlüsseln fortgesetzt.

Alle TLS-Handshakes verwenden eine asymmetrische Verschlüsselung (öffentlicher und privater Schlüssel), aber nicht alle verwenden den privaten Schlüssel beim Generieren von Sitzungsschlüsseln. Zum Beispiel läuft ein kurzlebiger Diffie-Hellman-Handshake wie folgt ab:

  1. Client Hello: Der Client sendet eine Client-Hello-Nachricht mit der Protokollversion, dem Client Random und einer Liste von Cipher Suites.
  2. Server Hallo: Der Server antwortet mit seinem SSL-Zertifikat, seiner ausgewählten Cipher Suite und dem Server Random. Im Gegensatz zum oben beschriebenen RSA-Handshake enthält der Server in dieser Nachricht auch Folgendes (Schritt 3):
  3. Digitale Signatur des Servers: Der Server verwendet seinen privaten Schlüssel, um den Client Random, den Server Random und seinen DH-Parameter* zu verschlüsseln. Diese verschlüsselten Daten fungieren als digitale Signatur des Servers und stellen fest, dass der Server über den privaten Schlüssel verfügt, der mit dem öffentlichen Schlüssel aus dem SSL-Zertifikat übereinstimmt.
  4. Digitale Signatur wird bestätigt: Der Client entschlüsselt die digitale Signatur des Servers mit dem öffentlichen Schlüssel und verifiziert, dass der Server den privaten Schlüssel kontrolliert und wer er ist. Client-DH-Parameter: Der Client sendet seinen DH-Parameter an den Server.
  5. Client und Server berechnen das Premaster Secret: Anstatt dass der Client das Premaster Secret generiert und wie bei einem RSA-Handshake an den Server sendet, verwenden Client und Server die von ihnen ausgetauschten DH-Parameter, um ein passendes Premaster Secret separat zu berechnen.
  6. Sitzungsschlüssel werden erstellt: Nun berechnen Client und Server Sitzungsschlüssel aus dem Premaster Secret, dem Client Random und dem Server Random, genau wie bei einem RSA-Handshake.
  7. Client ist bereit:
  8. Wie bei einem RSA-Handshake.
  9. Server ist bereit
  10. Sichere symmetrische Verschlüsselung erreicht

*DH-Parameter: DH steht für Diffie Hellman. Der Diffie-Hellman-Algorithmus-Hellman-Algorithmus verwendet Exponentialberechnungen, um zum gleichen Premaster Secret zu gelangen. Der Server und der Client stellen jeweils einen Parameter für die Berechnung bereit. In Kombination ergeben sie auf jeder Seite eine andere Berechnung mit gleichen Ergebnissen.

Weitere Informationen zum Unterschied zwischen kurzlebigen Diffie-Hellman-Handshakes und anderen Arten von Handshakes und wie sie Forward Secrecy erzielen finden Sie unter Was ist Keyless SSL?

Was ist eine Cipher Suite?

Eine Cipher Suite besteht aus einer Reihe von Verschlüsselungsalgorithmen zum Herstellen einer sicheren Kommunikationsverbindung. (Ein Verschlüsselungsalgorithmus ist eine Reihe von mathematischen Operationen, die an Daten ausgeführt werden, um sie als zufällig erscheinen zu lassen.) Es gibt eine Reihe häufig verwendeter Cipher Cuites und ein wesentlicher Teil des TLS-Handshakes besteht darin, zu vereinbaren, welche Cipher Suits für diesen Handshake verwendet werden.

Weitere Informationen zu TLS/SSL finden Sie unter Wie funktioniert SSL? Um zu überprüfen, ob eine Website TLS korrekt verwendet, besuchen Sie das Cloudflare Diagnostic Center.