Was ist ein Handshake? Definition und Funktionsweise

Das Handshake-Verfahren kommt in den Bereichen Kommunikations- und Netzwerksicherheit zum Einsatz. Durch die Bestätigung und Authentifizierung von Client-Server-Verbindungen bestätigen sich Sender und Empfänger gegenseitig einen vertrauenswürdigen Verbindungsaufbau. Hierbei kann es sich sowohl um Hardware- und Software-basierte Handshakes als auch um Methoden wie den Drei-Wege- oder Vier-Wege-Handshake handeln.

Was ist ein Handshake?

Genau wie der physische Handschlag zur Begrüßung soll der digitale Handschlag zwischen Client und Server Vertrauenswürdigkeit und Sicherheit vermitteln. Handshakes kommen vor allem im Netzwerkbereich, in der Kommunikationssicherheit und in der Signalisierungstechnik zum Einsatz. Basierend auf einem Client-Server-Modell ermöglichen Handshake-Verfahren die Absicherung der verlustfreien Datenübertragung zwischen Sender und Empfänger. Hierbei quittieren sich die beteiligten Parteien übertragene Informationen mit Software-basierten Handshakes wie im TCP/IP-Modell oder als Hardware-basierte Handshakes mittels einzelner Leitungen oder Signalpegel.

Wie funktioniert das Handshake-Verfahren?

Der Zweck eines Handshakes ist die sichere Informationsübertragung ohne Datenverlust oder Kompromittierung. Hierzu quittieren sich Empfänger und Sender zunächst gesendete Daten beim erstmaligen Verbindungsaufbau. Diese Quittierung signalisiert zum einen die Bereitschaft zur Kommunikation und Datenübertragung und zum anderen die Vertrauenswürdigkeit der jeweiligen Kommunikationsinstanz. Je nach Methode kann die Quittierung in mehreren Phasen, auch „Wegen“, erfolgen. Das beste Beispiel für einen Drei-Wege-Handshake ist das Protokoll TCP. Ein Vier-Wege-Handshake wiederum kommt beim Protokoll SCTP zum Einsatz.

Im Folgenden erklären wir an den Beispielen TCP, SCTP und TLS, wie ein Handshake funktioniert.

Drei-Wege-Handshake bei TCP

  1. Der Sender schickt zur Signalisierung eines Kommunikationswunsches eine SYN-Nachricht mit Sender-Informationen wie der individuellen Sequenznummer.
  2. Der Empfänger sendet ebenfalls eine SYN-Nachricht mit individueller Sequenznummer und gleichzeitig die erhaltene SYN-Nachricht des Senders mit einer SYN-ACK-Nachricht.
  3. Der Sender bestätigt die erhaltene SYN-Nachricht vom Empfänger mit einer eigenen SYN-ACK-Nachricht.

Mit diesem Handshake signalisieren sich beide Instanzen die Kommunikationsbereitschaft und die verlustfreie Datenübertragung.

Vier-Wege-Handshake bei SCTP

Beim verbindungsorientierten SCTP-Protokoll wird der Austausch von Datenpaketen mittels Vier-Wege-Handshake initiiert.

  1. Zunächst schickt der Sender eine INIT-ACK-Nachricht.
  2. Der Empfänger bestätigt die Anfrage mit einer INIT-ACK-Nachricht, die zugleich ein verbindungsspezifisches Cookie enthält.
  3. Der Sender überträgt eine COOKIE-ECHO-Request mit dem verbindungsspezifischen Cookie an den Empfänger.
  4. Schließlich bestätigt der Sender den Verbindungsaufbau mit einer COOKIE-ACK-Nachricht.

TLS-Handshake

Um sichere, verschlüsselte Verbindungen im Internet herzustellen, kommt oftmals die Transport Layer Security bzw. Secure Socket Layers zum Einsatz. Bekanntestes Beispiel hierfür ist die Kommunikation zwischen einem Webbrowser und einem Webserver über HTTPS. Beim TLS-Handshake tauschen Client und Server meist in vier Phasen spezifische Informationen und Sicherheitsparameter aus, um die Verbindung zu authentifizieren.

Welche Phasen umfasst ein TLS-Handshake?

TLS, das Nachfolgeprotokoll von SSL, kommt im Netz für einen verschlüsselten, vertrauenswürdigen Datenaustausch zwischen Client und Server zum Einsatz. Dadurch lassen sich Anmelde- und Kontodaten von Nutzerinnen und Nutzern, Zahlungsinformationen, übertragene Dokumente und Dateien sowie Eingabeformulare verschlüsseln. Besonders für Unternehmen im E-Commerce ist also nicht nur eine TLS-Verschlüsselung, sondern auch ein TLS-Handshake wichtig. Um eine vertrauenswürdige Verbindung zwischen Webbrowser und Webserver inklusive Sicherheitsparameter auszuhandeln und zu authentifizieren, kommt das TLS-Handshake-Protokoll zum Einsatz.

Das TLS-Handshake-Protokoll erfüllt folgende Funktionen:

  • Authentifizierung der beteiligten Kommunikationspartner
  • Aushandlung von zu verwendenden kryptografischen Verschlüsselungsverfahren
  • Aushandlung der kryptografischen Schüssel

Der Ablauf eines TLS-Handshakes erfolgt meist in folgenden Phasen:

Phase 1: Client Hello

Zunächst übermittelt der Client, z. B. der Webbrowser, ein Client Hello mit Informationen wie der Sitzungsnummer, Session-ID oder Cipher Suites, der TLS-Version und weiteren Zufallsinformationen an den Server.

Phase 2: Server Hello

Der Server antwortet mit einem Server Hello, das ebenfalls Informationen wie eine Session-ID, Sitzungsnummer, die Cipher Suite enthält.

Phase 3: Server Certificate

Zur Gewährleistung des Schlüsselaustausches sendet der Server direkt anschließend an das Server Hello eine Server-Certificate-Nachricht. Anhand des Zertifikats sind Clients in der Lage, die Vertrauenswürdigkeit eines Servers anhand des echten, gültigen Zertifikats zu überprüfen.

Phase 4: Server Key Exchange

Zum Server Key Exchange kommt es nur, wenn die Server-Certificate-Nachricht nicht alle nötigen Informationen für die Berechnung der Schlüssel bzw. des Pre-Master-Secrets enthält.

Phase 5: Certificate Request

Obwohl nicht in jedem TLS-Handshake erforderlich, kann auch der Server ein entsprechendes Client Certificate zur Bestätigung anfordern. Die Anforderung erfolgt unmittelbar anschließend an das Server-Key-Exchange-Signal bzw. unmittelbar nach dem Server Certificate.

Phase 6: Server Hello Done

Die Server-Hello-Done-Nachricht schließt den Austausch der Server- und Client-Schlüssel sowie die Authentifizierung ab. Falls gefordert erfolgt die Antwort in Form des Client Certificates an den Server, nachdem der Client die Gültigkeit des Server Zertifikats überprüft hat.

Phase 7: Client Certificate

Liegt eine serverseitige Aufforderung vor, sendet der Client ein zur Cipher Suite passendes Client Certificate. Sendet der Client keine bestätigende Nachricht, besteht die Möglichkeit, dass die Verbindung auf Seiten des Servers gekappt oder der TLS-Handshake ohne Client-Authentifizierung fortgesetzt wird.

Phase 8: Client Key Exchange

Anders als die Server-Key-Exchange-Nachricht ist das Client-Key-Exchange-Signal stets erforderlich. Mit diesem lässt sich das Pre Master Secret definieren.

Phase 9: Certificate Verify

Mit dieser optionalen Bestätigung lässt sich das Client Certificate quittieren. Der Client bestätigt mit dem Signal die eigene Echtheit und den Besitz der privaten Schlüssel. Hierfür muss das Client Certificate signierfähig sein.

Phase 10: Change Cipher Spec

In dieser Phase wird über den TLS Record Layer die erste geschützte Nachricht mit den ausgehandelten Algorithmen und kryptografischen Schlüsseln versendet. Die gesicherte Datenübertragung wird somit bestätigt.

Phase 11: Finished

Der letzte Schritt umfasst eine Nachricht, die den Schlüsselaustausch sowie die Authentifizierung quittiert und abschließt. Die Korrektheit des Finished-Signals muss noch auf Seiten des Empfängers überprüft werden. Diese Überprüfung erfolgt mittels Hashing und errechnete Hashwerte für alle Nachrichten. Auf diese Weise lassen sich auch Downgrade-Angriffe vorbeugen, die in der Lage sind, Cipher Suites des Client-Hello-Signals zu löschen.

Software-Handshake vs. Hardware-Handshake: Unterschied

Beim Handshake-Verfahren lässt sich zwischen Software- und Hardware-basierten Handshakes unterscheiden. Wie oben beschrieben, kommen vor allem Software-Handshakes besonders häufig zum Einsatz und integrieren die Authentifizierung der Instanzen, die Quittierung verlustloser Datenübertragungen sowie die Aushandlung kryptografischer Schlüssel. Dieses Bestätigungsverfahren ist direkt in die Kommunikation und die Datenströme integriert.

Hardware-basierte Handshakes kommen im Rahmen serieller Schnittstellen und der Datenflusssteuerung zum Einsatz. Hierbei wird der Datenstrom so gelenkt, dass verlustlose Informationsübertragungen bzw. Datenübertragungen ohne große Verzögerungen zwischen Endgeräten erfolgen. Dazu erfolgt u. a. eine Signalpegelsteuerung, um Delays in Form von Jitter vorzubeugen. Auch Handshake-Signale wie Ready to Send (RTS) und Clear to Send (CTS) ermöglichen über serielle Schnittstellen die Bestätigung einer verlustfreien Kommunikation.

Die Datenflusssteuerung auf Hardware-Ebene findet im OSI-Modell auf der Schicht der Bitübertragung statt. Besonders für die Datenübertragung zwischen Endgeräten und Peripheriegeräten wie Modems, Druckern oder Terminals ermöglichen Handshakes zuverlässige Arbeitsabläufe.

Wo kommt ein Handshake zur Anwendung?

Zu den wichtigsten Anwendungsgebieten von Handshake-Verfahren zählen die Signalisierungs- und Netzwerktechnik sowie die Authentifizierung von Instanzen in Client-Server-Modellen. Besonders häufig kommen bei TCP- und STCP-Verbindungen Software-basierte Drei-Wege-Handshakes und Vier-Wege-Handshakes zum Einsatz, um einen sicheren TCP/IP-Verbindungsaufbau und eine konstante Datenübertragung zu bestätigen. Darüber hinaus werden Handshake-Verfahren für asynchrone Bussysteme, kryptografische Verschlüsselungsverfahren/-protokolle wie TLS oder für serielle Schnittstellen zwischen Endgeräten und Peripheriegeräten verwendet.