TLS (Transport Layer Security) ist das sichere Kommunikationsprotokoll, das in weiten Teilen des Internets verwendet wird. Von der verschlüsselten Verbindung, die Ihr Webbrowser zum Aufrufen von Websites verwendet, bis hin zu den sicheren Verbindungen, die von Ihren Bankanwendungen genutzt werden – TLS ist der Industriestandard und der Grund dafür, dass Sie vertrauliche Daten sicher online übertragen können.
In diesem Leitfaden wird erläutert, was ein TLS-Handshake ist, wie er funktioniert und welche Bedeutung er für die Netzwerksicherheit hat, um sicherzustellen, dass Ihre Kommunikation privat bleibt und nicht abgefangen oder manipuliert wird.
Was ist ein TLS-Handshake?
Die TLS-Verschlüsselung ist das kryptografische Standardprotokoll, das zur Sicherung der Netzwerkkommunikation verwendet wird, einschließlich der Daten, die Sie über das Internet senden.
Bevor eine verschlüsselte Kommunikation stattfinden kann, muss zwischen den beiden kommunizierenden Parteien Vertrauen aufgebaut werden (z. B. zwischen dem Webserver, der eine Website hostet, und Ihrem Webbrowser, der darauf zugreift).
Der TLS-Handshake baut einen sicheren Kanal zwischen Client und Server auf, indem er mitteilt, welche TLS-Versionen und Cipher Suites von beiden unterstützt werden, die Identität des Servers mit seinem öffentlichen Schlüssel und seinem SSL-Zertifikat authentifiziert und schließlich Sitzungsschlüssel erzeugt, die zur eindeutigen Verschlüsselung der Verbindung verwendet werden.
TLS vs. SSL
TLS ist der Nachfolger von SSL (Secure Sockets Layer) und ersetzt dieses als Verschlüsselungsprotokoll, das HTTPS (das sichere HTTP-Protokoll, das Webseiten an Ihren Browser und Daten an Ihre Anwendungen übermittelt) zugrunde liegt. TLS wird auch von anderer Software verwendet, die eine sichere Netzwerkkommunikation erfordert, z. B. von VPN-Lösungen.
Beteiligte kryptografische Elemente
Die TLS-Verschlüsselung stützt sich auf mehrere kryptografische Elemente/Konzepte:
- Die Chiffriersuite: Die Cipher Suite ist der Algorithmus, der zur Sicherung einer TLS-verschlüsselten Verbindung verwendet wird. Jede Suite enthält einen Schlüsselaustauschalgorithmus, einen Massenverschlüsselungsalgorithmus und einen MAC-Algorithmus (Message Authentication Code).
- Symmetrische Verschlüsselung: Ein einziger kryptographischer Schlüssel wird verwendet, um die Verbindung zwischen Server und Client zu sichern. Beide Parteien müssen den Schlüssel kennen, und keine dritte Partei sollte ihn kennen oder erraten können, sonst ist die Sicherheit der Verbindung gefährdet.
- Asymmetrische Verschlüsselung: Bei dieser Verschlüsselungsmethode, die auch als Public-Key-Verschlüsselung bezeichnet wird, verwenden der Server und der Client getrennte private und öffentliche Schlüssel, um die Daten zu verschlüsseln und die Verbindung zu sichern. Der private Schlüssel wird benötigt, um Daten zu entschlüsseln, die mit dem öffentlichen Schlüssel verschlüsselt wurden.
- Authentifizierung: Um eine sichere Verbindung zu einem Server (und nicht zu einem Nachahmer) herzustellen, muss dieser seine Identität zweifelsfrei nachweisen können, indem er sich authentifiziert.
TLS-Versionen und Kompatibilität
TLS 1.0 wurde 1999 veröffentlicht, TLS 1.1 im Jahr 2006, TLS 1.2 im Jahr 2008 und die neueste TLS-Version 1.3 wurde 2018 veröffentlicht. Jede Version enthielt erhebliche Sicherheitsverbesserungen, darunter zusätzliche Cipher Suites und Schutz vor neuen Angriffen.
Die meisten Server unterstützen sowohl TLS 1.3 als auch TLS 1.2 aus Gründen der Abwärtskompatibilität mit älteren Clients.
Schrittweiser Ablauf eines TLS-Handshakes
TLS 1.3 vereinfacht und verbessert die Sicherheit des Handshake-Prozesses gegenüber früheren Versionen erheblich. Im Folgenden wird das Verfahren zur Sicherung einer TLS 1.3-Verbindung im Detail beschrieben:
- Hallo Kunde: Der Client sendet eine “Hallo”-Nachricht an den Server, um den TLS-Handshake und die Verbindung einzuleiten. Dazu gehören die unterstützten TLS-Versionen, Cipher Suites, Key-Share-Methoden und Erweiterungen. Sie enthält auch den “Client Random”, d. h. Zufallsdaten, die zur Generierung des Master Secret verwendet werden. In vielen Fällen können die geheimen Premaster-Parameter auch generiert werden, wenn der Client erraten kann, welche Key-Share-Methode der Server verwenden wird (was aufgrund der geringeren Anzahl der von TLS 1.3 unterstützten Cipher Suites häufig der Fall ist), wodurch sich die Anzahl der für Client und Server erforderlichen Roundtrips verringert.
- Meisterliches Geheimnis: Der Server wählt eine TLS-Version, eine Cipher-Suite und einen Schlüsselanteil, die mit dem Client kompatibel sind, und generiert seinen “Server Random”. Sobald der Client und der Server das Client-Zufallsgeheimnis, das Premaster-Geheimnis und das Server-Zufallsgeheimnis kennen, können sie unabhängig voneinander das gleiche Master-Geheimnis erzeugen.
- Server-Hallo und asymmetrische Kommunikation: Der Server antwortet auf das Client-Hallo, indem er die ausgewählte TLS-Version, die Cipher-Suite und das SSL/TLS-Zertifikat des Servers mit seinem öffentlichen Schlüssel und der Zertifizierungsstelle (CA) sendet. Der Client kann die Identität des Servers bei der CA verifizieren.
- Erzeugung von Sitzungsschlüsseln: Der Client und der Server erzeugen aus dem Hauptgeheimnis übereinstimmende Sitzungsschlüssel.
- “Beendete” Nachrichten und symmetrische Kommunikation: Der Client und der Server tauschen “fertige” Nachrichten aus, die den symmetrischen Sitzungsschlüssel und einen Hash des stattgefundenen Handshake-Prozesses enthalten, um sicherzustellen, dass er nicht gestört wurde. Der TLS-Handshake ist abgeschlossen, wenn die “fertigen” Nachrichten entschlüsselt und von beiden Parteien validiert wurden.
Sobald der TLS-Handshake abgeschlossen ist, kann die Verbindung zur sicheren Datenübertragung unter Verwendung der symmetrischen Sitzungsschlüssel verwendet werden.
Fehlerbehebung bei TLS-Handshake-Problemen
Die häufigste Ursache für TLS-Handshake-Probleme ist eine falsche Zeiteinstellung auf dem Server oder Client (leicht zu beheben). Veraltete CAs auf dem Client sind ebenfalls eine mögliche Ursache, wenn Ihr Betriebssystem seit einiger Zeit nicht mehr aktualisiert wurde.
Auf der Serverseite schlagen TLS-Verbindungen fehl, wenn es keine gegenseitig unterstützten TLS-Versionen oder Cipher Suites gibt oder wenn das SSL/TLS-Zertifikat von der Zertifizierungsstelle widerrufen wurde, abgelaufen ist oder wenn der Hostname des Servers nicht mit dem auf dem Zertifikat übereinstimmt.
Wenn Sie Probleme mit der Netzwerkverbindung haben oder eine Verbindung zu einem langsamen Server herstellen, können TLS-Handshakes fehlschlagen, wenn sie aufgrund von Latenzzeiten nicht funktionieren.
Sichere Kommunikationsprotokolle sind nicht völlig sicher
TLS ist die Grundlage für die Netzsicherheit von so ziemlich allem, was derzeit online geschieht. Aber nur weil es Daten sicher übertragen kann (nach dem so wichtigen TLS-Handshake), heißt das nicht, dass das, was es sicher überträgt, nicht schädlich ist.
Nur weil Sie eine sichere Verbindung zu einer Website haben, heißt das noch lange nicht, dass sich dort kein Virus befinden kann. Daher sollten Sie sich darauf beschränken, Software von seriösen Websites (oder noch besser von offiziellen App-Stores) herunterzuladen, und wenn Sie ein Unternehmen leiten, sollten Sie Ihre Infrastruktur mit einer robusten Endpunktverwaltung schützen und sichern.