TLS (Transport Layer Security)
Was ist TLS (Transport Layer Security)?
Transport Layer Security (TLS) ist ein Standardprotokoll der Internet Engineering Task Force (IETF), das Authentifizierung, Datenschutz und Datenintegrität zwischen zwei kommunizierenden Computeranwendungen gewährleistet.
TLS ist eines der am weitesten verbreitete Sicherheitsprotokoll und eignet sich am besten für Webbrowser und andere Anwendungen, bei denen Daten sicher über ein Netzwerk ausgetauscht werden müssen. Dazu gehören Webbrowsing-Sitzungen, Dateiübertragungen, VPN-Verbindungen, Remote-Desktop-Sitzungen und VoiP. TLS ist in Mobilfunktechnologien wie 5G integriert, um die Kernfunktionen des Netzwerks im gesamten Funkzugangsnetz zu schützen.
Wie funktioniert Transport Layer Security?
TLS verwendet einen Client-Server-Handshake-Mechanismus, um eine verschlüsselte und sichere Verbindung herzustellen und die Authentizität der Kommunikation zu gewährleisten. Im Folgenden wird der Prozess im Detail beschrieben:
- Kommunizierende Geräte tauschen Verschlüsselungsfähigkeiten aus.
- Es findet ein Authentifizierungsprozess statt, bei dem digitale Zertifikate verwendet werden, um zu bestätigen, dass der Server tatsächlich der ist, für den er sich ausgibt.
- Es findet ein Austausch von Sitzungsschlüsseln statt. Während dieses Prozesses müssen sich Clients und Server auf einen Schlüssel einigen, um sicherzustellen, dass die sichere Sitzung tatsächlich zwischen dem Client und dem Server stattfindet – und nicht etwas dazwischen, das versucht, die Kommunikation zu kapern.
TLS verwendet einen öffentlichen Schlüsselaustauschprozess (Public Key Exchange), um ein gemeinsames Geheimnis zwischen den kommunizierenden Geräten zu erstellen. Die beiden Handshake-Methoden sind der Rivest-Shamir-Adleman- und der Diffie-Hellman-Schlüsselaustausch. Beide Methoden erstellen ein gemeinsames Geheimnis zwischen den kommunizierenden Geräten, sodass die Kommunikation nicht abgefangen werden kann. Sobald die Schlüssel ausgetauscht sind, kann die Datenübertragung zwischen den Geräten in der verschlüsselten Sitzung beginnen.
Was ist ein SSL-Zertifikat?
Ein SSL-Zertifikat (Secure Sockets Layer) ist eine digitale Authentifizierung der Identität einer Website, die eine verschlüsselte Kommunikation mit der Website ermöglicht. SSL ist der Vorgänger von TLS. Es erstellt eine verschlüsselte Verbindung zwischen dem Browser des Benutzers und dem Webserver, auf dem die Website gehostet wird.
Was ist eine Zertifizierungsstelle (CA)?
Eine Zertifizierungsstelle (Certificate Authority, CA) stellt digitale Zertifikate aus, die die Eigentumsrechte an öffentlichen Schlüsseln derjenigen Personen bestätigen, die das Zertifikat besitzen. Im Wesentlichen handelt es sich dabei um einen Dritten zwischen dem Eigentümer des SSL-Zertifikats und dem Benutzer, der dessen Authentizität vertrauen muss.
Die CA überprüft die Identität von Unternehmen, Personen, Websites und E-Mail-Konten – oder jeder anderen Einheit, die eine solche Überprüfung erfordert – und bindet sie über das Zertifikat an kryptografische Schlüssel. Das Zertifikat dient der Identitätsprüfung, der Verschlüsselung von Verbindungen über das Internet und der Integrität von Dokumenten, die mit dem Zertifikat signiert wurden.
Die Geschichte und Entwicklung von TLS
TLS hat sich aus dem SSL-Protokoll von Netscape Communications Corp. entwickelt und dieses weitgehend abgelöst, obwohl die Begriffe SSL oder SSL/TLS manchmal noch synonym verwendet werden. Die IETF übernahm offiziell das SSL-Protokoll, um es in einem offenen Verfahren zu standardisieren, und veröffentlichte 1999 die Version 3.1 von SSL als TLS 1.0. Das Protokoll wurde in TLS umbenannt, um rechtliche Probleme mit Netscape zu vermeiden, das das SSL-Protokoll als wichtigen Bestandteil seines ursprünglichen Webbrowsers entwickelt hatte. Gemäß der Protokollspezifikation besteht TLS aus zwei Schichten: dem TLS-Datensatzprotokoll und dem TLS-Handshake-Protokoll. Das Datensatzprotokoll sorgt für die Sicherheit der Verbindung, während das Handshake-Protokoll es dem Server und dem Client ermöglicht, sich gegenseitig zu authentifizieren und Verschlüsselungsalgorithmen und kryptografische Schlüssel auszuhandeln, bevor Daten ausgetauscht werden.
Die aktuelle Version von TLS, 1.3, wurde 2018 offiziell von der IETF fertiggestellt. Der Hauptvorteil gegenüber früheren Versionen des Protokolls sind zusätzliche Verschlüsselungsmechanismen beim Aufbau einer Verbindung zwischen Client und Server. Während frühere TLS-Versionen ebenfalls Verschlüsselung bieten, baut TLS 1.3 bereits früher im Handshake-Prozess eine verschlüsselte Sitzung auf. Darüber hinaus wird die Anzahl der für den Handshake erforderlichen Schritte reduziert, wodurch sich die Zeit bis zum Abschluss des Handshakes und zum Beginn der Datenübertragung zwischen Client und Server erheblich verkürzt.
Eine weitere Verbesserung von TLS 1.3 besteht darin, dass mehrere zur Verschlüsselung von Daten verwendete kryptografische Algorithmen entfernt wurden, da sie als veraltet galten und für den sicheren Transport nicht empfohlen wurden. Darüber hinaus sind einige ehemals optionale Sicherheitsfunktionen nun obligatorisch. Beispielsweise werden kryptografische Hashes nach dem Message-Digest-Algorithmus 5 (MD5) nicht mehr unterstützt, Perfect Forward Secrecy ist erforderlich und die Rivest-Cipher-4-Verhandlung ist nicht mehr zulässig. Dadurch wird die Möglichkeit ausgeschlossen, dass eine TLS-verschlüsselte Sitzung einen bekanntermaßen unsicheren Verschlüsselungsalgorithmus oder eine unsichere Verschlüsselungsmethode in TLS Version 1.3 verwendet.
Die Vorteile von Transport Layer Security (TLS)
Die Vorteile von TLS liegen auf der Hand, wenn man die Verwendung von TLS mit der Nichtverwendung vergleicht. Wie oben erwähnt, bietet eine TLS-verschlüsselte Sitzung einen sicheren Authentifizierungsmechanismus, Datenverschlüsselung und Datenintegritätsprüfungen. Im Vergleich zu anderen sicheren Authentifizierungs- und Verschlüsselungsprotokollsuiten wie IP Security bietet TLS jedoch zusätzliche Vorteile, weshalb IPsec in vielen Unternehmensumgebungen durch TLS ersetzt wird. Dazu gehören unter anderem die folgenden Vorteile:
- Die Sicherheit ist direkt in jede Anwendung integriert, im Gegensatz zu externer Software oder Hardware zum Aufbau von IPsec-Tunneln.
- Zwischen den kommunizierenden Geräten besteht eine Ende-zu-Ende-Verschlüsselung.
- Es besteht eine detaillierte Kontrolle darüber, was in einer verschlüsselten Sitzung übertragen oder empfangen werden kann.
- Da TLS in den oberen Schichten des OSI-Modells (Open Systems Interconnection) arbeitet, gibt es keine Komplikationen bei der Netzwerkadressübersetzung, wie sie bei IPsec auftreten.
- TLS bietet Protokollierungs- und Überwachungsfunktionen, die direkt in das Protokoll integriert sind.
Die Herausforderungen von TLS
Es bestehen einige Nachteile, wenn keine sichere Authentifizierung oder Verschlüsselung verwendet wird – oder wenn man sich zwischen TLS und anderen Sicherheitsprotokollen wie IPsec entscheiden muss. Hier einige Beispiele:
- Da TLS auf den Schichten 4 bis 7 des OSI-Modells arbeitet, im Gegensatz zu Schicht 3, wie es bei IPsec der Fall ist, muss jede Anwendung und jeder Kommunikationsfluss zwischen Client und Server eine eigene TLS-Sitzung aufbauen, um die Vorteile der Authentifizierung und Datenverschlüsselung nutzen zu können.
- Die Möglichkeit, TLS zu verwenden, hängt davon ab, ob die jeweilige Anwendung dies unterstützt.
- Da TLS auf einer Anwendung-für-Anwendung-Basis implementiert wird, um eine verbesserte Granularität und Kontrolle über verschlüsselte Sitzungen zu erreichen, geht dies mit einem erhöhten Verwaltungsaufwand einher.
- Seitdem TLS weit verbreitet ist, konzentrieren sich Angreifer verstärkt darauf, potenzielle TLS-Sicherheitslücken zu entdecken und auszunutzen, um die Datensicherheit und -integrität zu gefährden.
Die Unterschiede zwischen TLS und SSL
Wie bereits erwähnt, ist SSL der Vorläufer von TLS. Daher sind die meisten Unterschiede zwischen den beiden Protokollen evolutionärer Natur, da das Protokoll angepasst wurde, um Schwachstellen zu beheben und die Implementierungs- und Integrationsfähigkeiten zu verbessern.
Die wichtigsten Unterschiede zwischen SSL und TLS, die TLS zu einem sichereren und effizienteren Protokoll machen, sind die Nachrichtenauthentifizierung, die Generierung von Schlüsselmaterial und die unterstützten Verschlüsselungssuiten, wobei TLS neuere und sicherere Algorithmen unterstützt. TLS und SSL sind nicht interoperabel, obwohl TLS derzeit eine gewisse Abwärtskompatibilität bietet, um mit älteren Systemen zu funktionieren. Darüber hinaus schließt TLS – insbesondere neuere Versionen – den Handshake-Prozess viel schneller ab als SSL. Aus Sicht des Endbenutzers ist daher eine geringere Kommunikationslatenz spürbar.
Was ist der Unterschied zwischen TLS und HTTPS?
Das ist beinahe eine Fangfrage, aber es ist hilfreich, um zu verstehen, wie alles zusammenpasst. TLS-Verschlüsselung ist, abstrakt gesehen, ein Sicherheitsprotokoll, das zwischen dem Webbrowser und dem Webserver angesiedelt ist. Es ist weit verbreitet zu glauben, dass TLS und HTTPS austauschbar sind, da HTTPS – ebenfalls ein Protokoll – tatsächlich eine Kombination aus beiden ist. Anders ausgedrückt: Wenn eine Website HTTPS verwendet, nutzt sie TLS-Verschlüsselung – technisch gesehen eine TLS-Verbindung.
Bekannte Angriffe auf TLS/SSL
Implementierungsfehler waren schon immer ein großes Problem bei Verschlüsselungstechnologien, und TLS bildet da keine Ausnahme. Auch wenn TLS/SSL-Kommunikation als sehr sicher gilt, gab es Fälle, in denen Schwachstellen entdeckt und ausgenutzt wurden. Beachten Sie jedoch, dass es sich bei den unten genannten Beispielen um Schwachstellen in TLS Version 1.2 und früheren Versionen handelte. Alle bekannten Schwachstellen in früheren Versionen von TLS, wie Browser Exploit Against SSL/TLS (BEAST), Compression Ratio Info-leak Made Easy (CRIME) und Protokoll-Downgrade-Angriffe, wurden durch Updates der TLS-Version beseitigt. Beispiele für bedeutende Angriffe oder Vorfälle sind unter anderem die folgenden:
- Der berüchtigte Heartbleed-Bug entstand durch eine überraschend kleine Sicherheitslücke, die in einem Teil der kryptografischen Logik entdeckt wurde, der mit der Implementierung des TLS-Heartbeat-Mechanismus durch OpenSSL zusammenhängt. Dieser Mechanismus soll Verbindungen auch dann aufrechterhalten, wenn keine Daten übertragen werden.
- Obwohl TLS nicht anfällig für den POODLE-Angriff (Padding Oracle On Downgraded Legacy Encryption) ist, da es vorschreibt, dass alle Füllbytes denselben Wert haben und überprüft werden müssen, hat eine Variante des Angriffs bestimmte Implementierungen des TLS-Protokolls ausgenutzt, die die Anforderungen an die Verschlüsselungsfüllbytes nicht korrekt validieren.
- Der 2011 entdeckte BEAST-Angriff betraf die Version 1.0 von TLS. Der Angriff konzentrierte sich auf eine Schwachstelle im Cipher-Block-Chaining-Mechanismus des Protokolls. Diese Schwachstelle ermöglichte es einem Angreifer, Daten, die über den sicheren Kommunikationskanal gesendet und empfangen wurden, abzufangen und zu entschlüsseln.
- Eine optionale Datenkomprimierungsfunktion innerhalb von TLS führte zu der als CRIME bekannten Sicherheitslücke. Diese Sicherheitslücke ermöglicht es, Cookies von Kommunikationssitzungen mit Brute-Force-Methoden zu entschlüsseln. Sobald die Sicherheit kompromittiert ist, können sich Angreifer in die verschlüsselte Kommunikation einschleusen.
- Die Sicherheitslücke Browser Reconnaissance and Exfiltration via Adaptive Compression of Hypertext (BREACH) nutzt ebenso wie CRIME Komprimierung als Angriffsziel. BREACH und CRIME unterscheiden sich jedoch darin, dass BREACH die HTTP-Komprimierung statt der TLS-Komprimierung kompromittiert. Selbst wenn die TLS-Komprimierung nicht aktiviert ist, kann BREACH die Sitzung kompromittieren.
Wie wirkt sich TLS auf die Geschwindigkeit von Web-Anwendungen aus?
Wenn eine TLS-Verbindung zwischen einem Webbrowser und einem Webserver hergestellt wird, wird ein Teil der Rechenleistung dafür verwendet, diese Verbindung mit einigen wenigen Nachrichten zwischen beiden Seiten aufzubauen, bevor Daten übertragen werden. Der Handshake dauert nur wenige Millisekunden.
Sobald der TLS-Handshake stattgefunden hat, sorgen unterstützende Technologien dafür, dass TLS schnell weiterläuft: TLS False Start, wodurch der Webserver und der Client bereits vor Abschluss des Handshakes mit dem Austausch von Daten beginnen können, und TLS Session Resumption, wodurch ein verkürzter Handshake verwendet wird, wenn eine zuvor eingerichtete Sitzung wieder aufgenommen wird. TLS 1.3 schließt den Handshake in einem einzigen Roundtrip zwischen Server und Client ab.
Wie kann ich überprüfen, ob eine Website TLS-Verschlüsselung verwendet?
Es gibt mehrere kostenlose TLS-Prüftools, mit denen getestet werden kann, ob zwischen einem Webbrowser und einem Webserver eine TLS-Verbindung besteht. Ein Beispiel hierfür ist der SSL Server Test von Qualys. Browser wie Microsoft Edge und Firefox verfügen ebenfalls über Tools zur Überprüfung der TLS-Version einer Website. Mit dem SSL/TLS Client Test von BrowserLeaks lassen sich die von einem Webbrowser unterstützten TLS-Versionen ebenfalls leicht überprüfen.