Kryptografie (13) : Secure Socket Layer / Transport Layer Security

avatar

Das Secure-Socket-Layer-Protokoll (SSL) erlaubt eine vertrauliche Kommunikation zwischen dem Client und dem Server herzustellen. SSL wird auf der Transportschicht ausgeführt, weshalb auch die Rede von "Sicherung auf der Transportebene" (Transport Layer Security (TLS)) ist. Nun werden oft die Begriffe SSL und TLS synomym verwendet. Letztenendes war SSL die Vorgängerversion von TLS und gilt heute als nicht mehr sicher [1]. Man sollte auch ältere Versionen von TLS meiden.

„Die Verschlüsselungsprotokolle TLS 1.0 und TLS 1.1 gelten mittlerweile als unsicher, denn sie enthalten bekannte Sicherheitslücken. Websites, die auf die unsicheren Versionen setzen, werden ab diesem Zeitpunkt nicht mehr über diese Protokolle erreichbar sein“ ([2], Z. 2 - 5)

Allerdings baut TLS auf das Prinzip von SSL auf und verwendet Verschlüsselungsalgorithmen die bis heute als sicher eingestuft werden (AES,SHA-256,Counter Mode).

Das TLS-Protokoll besteht widerrum aus mehreren Schichten was folgende Grafik zeigt

TLS-Protokoll

ssl1.png

In diesem Artikel wird der TLS-Handshake genauer erklärt, da dieser für die Sichere Verbindung zuständig ist. Diese Grafik soll den TLS-Handshake vereinfacht darstellen.

TLS-Handschlag

ssl2.png

  1. Zuerst sendet der Client, bspw. ein Webbrowser eine Nachricht an den Server mit dem verschlüsselt kommuniziert werden soll. Diese Nachricht enthält mehrere Informationen: Die Verwendetet TLS-Version sowie eine Liste der Verschlüsselungsalgorithmen die der Client beherscht. Diese sind nach Prioritäten absteigend sortiert, damit der Server erkennt, welche Algorithmen der Client bevorzugt.

  2. Nachdem der Client dem Server mitgeteilt hat, dass er eine Verbindung aufbauen möchte, antwortet der Server mit einer Nachricht. Diese Nachricht enthält dieselben Daten, wie in (1). Allerdings wählt der Server aus den Listen des Clients ein Verschlüsselungs- und ein Schlüsselaustauschverfahren aus.

  3. Falls der Client verlangt hat, dass sich der Server authentisiert, so schickt der Server sein Zertifikat an den Client. Das Zertifikat enthält den Public-Key des Servers. Hat der Client kein Zertifikat verlangt, so kann der Server stattdessen auch die Daten für den Austausch des
    Diffie-Hellman-Schlüssels schicken.

  4. Der Server teilt noch mit, dass er alle benötigten Daten zur Authentisierung geschickt hat.

  5. Hat der Client ein Zertifikat des Servers erhalten, so überprüft er es als Erstes.

  6. Falls der Server den Client authentisieren will, so schickt der Client sein Zertifikat an den Server. Hat der Client kein Zertifikat, was bei den meisten Privatnutzern der Fall ist, so teilt er dies dem Server mit. Danach schickt der Client eine Nachricht zum Schlüsselaustausch. Diese Nachricht hängt von der Art der Serverauthentisierung ab.
    Hatte der Server ein Zertifikat geschickt, so generiert der Client einen geheimen „Vorab-Schlüssel“ (engl. premaster secret). Dieser wird mit dem öffentlichen Schlüssel des Servers verschlüsselt und an diesen geschickt.
    Hatte der Server Diffie-Hellman-Schlüsselaustausch gewählt, so antwortet der Client mit den entsprechenden Parametern.

  7. Der Client berechnet nun aus dem Vorab-Schlüssel und weiteren Parametern aus der Nachricht (2) den endgültigen Private-Key. Nun schickt er dem Server die Nachricht, ab jetzt bitte verschlüsselt zu kommunizieren. Zum Test schickt der Client eine verschlüsselte kurze Bestätigungsnachricht mit. Der Server berechnet denselben Private-Key und teilt dem Client mit, dass er ab jetzt verschlüsselt sendet. Zur Kontrolle wird wieder eine verschlüsselte Bestätigungsnachricht mitgeschickt.

Nun haben Client und Server eine sichere Verbindung aufgebaut. In der Regel wird eine Verbindung zeitlich begrenzt (TLS sessions) aufgebaut. Läuft diese Zeit ab, so muss es erneut ein TLS-Handshake durchgeführt werden.

Mit diesen Protokoll werden sichere Verbindungen wie HTTPS, SMTPS, FTPS aufgebaut. Man beachte das "S" hinter den Protokollen.



0
0
0.000
2 comments
avatar

Congratulations @ozelot47! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You received more than 3000 upvotes. Your next target is to reach 4000 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

You can upvote this notification to help all Steem users. Learn how here!

0
0
0.000
avatar


This post has been voted on by the SteemSTEM curation team and voting trail. It is elligible for support from @curie.

If you appreciate the work we are doing, then consider supporting our witness stem.witness. Additional witness support to the curie witness would be appreciated as well.

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Please consider setting @steemstem as a beneficiary to your post to get a stronger support.

Please consider using the steemstem.io app to get a stronger support.

0
0
0.000