Die Transport Layer Security (TLS) wurde entwickelt, um die Sicherheit der Netzwerkkommunikation zu erhöhen. Sie ist der Unterschied zwischen HTTP und HTTPS beim Surfen im Internet.
Die Verwendung von TLS bedeutet zusätzlichen Aufwand für den Client und den Server, hat aber auch ihre Vorteile:
- Vertraulichkeit: TLS verpackt den Verkehr in einem verschlüsselten Tunnel. Dies macht es für einen Lauscher unmöglich, den Verkehr auf dem Weg zum Ziel zu lesen oder zu verändern.
- Authentifizierung: TLS beweist die Identität des Servers gegenüber dem Client. Dies ist hilfreich für den Schutz vor Phishing-Seiten.
- Integrität: TLS umfasst Schutzmaßnahmen, mit denen festgestellt werden kann, ob Daten während der Übertragung verändert oder beschädigt wurden.
All dies sind wertvolle Funktionen beim Surfen im Internet. Aus diesem Grund ist TLS so beliebt und die meisten Besuche auf einer Website beginnen mit einem TLS Handshake.
Was ist der TLS Handshake?
Wie ein Händedruck im wirklichen Leben ist der TLS Handshake eine Einführung. Er stellt fest, dass zwei Computer auf sichere Weise miteinander kommunizieren wollen.
Ein TLS Handshake definiert auch einige der Regeln für dieses Gespräch. Sowohl der Client als auch der Server sind sich einig, dass sie die Vorteile von TLS nutzen wollen, müssen sich aber noch über die Einzelheiten einigen. Ein TLS Handshake bringt sie von einem anfänglichen "Hallo" zu dem Punkt, an dem sie anfangen können, sich privat zu unterhalten.
Bevor wir in die Details des TLS Handshakes eintauchen, ist es wichtig, einige wichtige Begriffe zu verstehen. TLS ist ein sicherheitsorientiertes Protokoll, was bedeutet, dass es eine Menge Kryptographie verwendet. Einige wichtige Begriffe, die man kennen sollte, wenn man über TLS spricht, sind:
- Asymmetrische Verschlüsselung: Bei der asymmetrischen oder "Public-Key"-Kryptografie werden zwei zusammengehörige Schlüssel verwendet: ein öffentlicher und ein privater Schlüssel. Alles, was mit einem öffentlichen Schlüssel verschlüsselt wird, kann mit dem entsprechenden privaten Schlüssel entschlüsselt werden. Ebenso kann eine digitale Signatur, die mit einem privaten Schlüssel erzeugt wurde, mit dem zugehörigen öffentlichen Schlüssel validiert werden.
- Symmetrische Verschlüsselung: Bei der symmetrischen Verschlüsselung wird derselbe Schlüssel für die Ver- und Entschlüsselung verwendet. Dies ist nützlich, weil es effizienter ist als die Verschlüsselung mit asymmetrischer Kryptographie. Der TLS Handshake dient dazu, einen gemeinsamen symmetrischen Verschlüsselungsschlüssel einzurichten.
- Chiffriersuiten: Eine Cipher Suite ist eine Kombination von kryptografischen Algorithmen, die im TLS Protokoll verwendet werden. Dazu gehören ein asymmetrischer Verschlüsselungsalgorithmus für den Handshake, ein symmetrischer Verschlüsselungsalgorithmus für die Verschlüsselung der über die Verbindung gesendeten Daten, ein digitaler Unterschriftsalgorithmus und eine Hash-Funktion, mit der überprüft wird, dass die Daten während der Übertragung nicht verfälscht wurden.
- Digitales Zertifikat: Ein digitales Zertifikat weist den Besitz eines öffentlichen Schlüssels nach. Server präsentieren ein digitales Zertifikat während des TLS Handshakes, damit der Client weiß, dass er mit der richtigen Person kommuniziert.
Einblick in den TLS Handshake
Das Ziel des TLS Handshake ist es, dass sich Client und Server auf sichere Weise auf einen gemeinsamen symmetrischen Verschlüsselungsschlüssel einigen. Zu diesem Zweck verwenden sie die asymmetrische Verschlüsselung, die es ermöglicht, verschlüsselte Nachrichten nur mit einem öffentlichen Schlüssel zu versenden.
Die Einzelheiten des TLS Handshake hängen vom verwendeten asymmetrischen Verschlüsselungsalgorithmus ab. Ein Client und ein Server, die RSA verwenden, durchlaufen die folgenden Schritte:
- Client Hallo: Der Client leitet den TLS Handshake ein, indem er Konfigurationsinformationen an den Server sendet. Dazu gehören Daten wie die vom Client unterstützte(n) Version(en) von TLS , die Cipher Suites, die er verwenden kann, und einige Zufallsdaten, die "client random" genannt werden.
- Server Hallo: Der Server antwortet mit einer Nachricht, die die von ihm gewählte TLS Version und Cipher Suite, sein digitales Zertifikat und den "Server Random" enthält.
- Premaster Secret: Das vom Server bereitgestellte digitale Zertifikat enthält dessen öffentlichen Schlüssel, der zur Verschlüsselung von an den Server gesendeten Nachrichten verwendet werden kann. Nachdem er die Gültigkeit des Zertifikats überprüft hat, generiert der Client einen weiteren Zufallswert, das sogenannte Premaster Secret. Mit Hilfe des öffentlichen Schlüssels des Servers verschlüsselt der Client diesen Wert und sendet ihn an den Server.
- Sitzungsschlüssel: Der Server verwendet seinen privaten Schlüssel, um das Premaster-Geheimnis zu entschlüsseln. Zu diesem Zeitpunkt verfügen sowohl der Client als auch der Server über den Zufallsschlüssel des Clients, den Zufallsschlüssel des Servers und das Premaster-Geheimnis. Aus diesen Daten berechnen sie einen gemeinsamen Sitzungsschlüssel. Da das Premaster-Geheimnis ein geheimer Wert ist - es wurde nur in verschlüsselter Form über das Netz gesendet - ist auch der Sitzungsschlüssel geheim.
- Der Client ist fertig: Um den TLS Handshake abzuschließen, sendet der Client eine Nachricht an den Server, die mit dem Sitzungsschlüssel verschlüsselt ist. Der Server entschlüsselt diese Nachricht und überprüft sie auf ihre Korrektheit. Wenn sie übereinstimmt, weiß der Server, dass der Client den Sitzungsschlüssel korrekt berechnet hat.
- Der Server ist fertig: Der Server sendet auch eine Nachricht, die mit dem gemeinsamen Sitzungsschlüssel verschlüsselt ist. Die Entschlüsselung und Verifizierung dieser Nachricht beweist dem Client, dass der Server den Sitzungsschlüssel korrekt berechnet hat.
Zu diesem Zeitpunkt haben der Client und der Server einen gemeinsamen Verschlüsselungsschlüssel, den nur sie kennen. Für den Rest der Sitzung TLS werden alle Nachrichten mit diesem Sitzungsschlüssel verschlüsselt.
Eine alternative Struktur
Wie bereits erwähnt, kann die Verwendung verschiedener asymmetrischer Verschlüsselungsalgorithmen zu kleinen Änderungen in den Schritten führen. Wenn der Client und der Server beispielsweise Diffie-Hellman anstelle von RSA verwenden, wird der Inhalt der in den Schritten 2 und 3 gesendeten Nachrichten leicht verändert:
- In Schritt 2 sendet der Server ein digital signiertes Paket, das den Zufallswert des Clients, den Zufallswert des Servers und den Diffie-Hellman-Parameter enthält.
- Nach der Validierung der digitalen Signatur antwortet der Client mit einer Nachricht, die seinen Diffie-Hellman-Parameter anstelle eines Premaster-Geheimnisses enthält.
Mit diesen Diffie-Hellman-Parametern und den Client- und Server-Randomwerten können Client und Server einen gemeinsamen, geheimen privaten Schlüssel berechnen. Letztendlich führen Diffie-Hellman und RSA auf leicht unterschiedliche Weise zum gleichen Ergebnis.
Mehr als der einfache Händedruck
Der hier beschriebene Prozess ist der grundlegende TLS Handshake, der in den meisten TLS Sitzungen verwendet wird. Es ist jedoch möglich, zusätzliche Schritte hinzuzufügen, die bestimmte Vorteile bieten.
Der grundlegende TLS Handshake verwendet beispielsweise ein digitales Zertifikat, um den Server gegenüber dem Client zu authentifizieren, aber er authentifiziert den Client nicht gegenüber dem Server. Eine modifizierte Version des TLS Handshake kann das digitale Zertifikat eines Clients auch an den Server senden und so eine gegenseitige Authentifizierung erreichen.