Was ist ein Sitzungsschlüssel? | Sitzungsschlüssel und TLS-Handshakes

Das SSL/TLS-Protokoll verwendet sowohl Verschlüsselung mit öffentlichem Schlüssel als auch symmetrische Verschlüsselung. Für die symmetrische Verschlüsselung müssen für jede Kommunikationssitzung neue Schlüssel generiert werden, sogenannte „Sitzungsschlüssel“.

Share facebook icon linkedin icon twitter icon email icon

Sitzungsschlüssel

Lernziele

Nach Lektüre dieses Artikels können Sie Folgendes:

  • Sie wissen, was eine Sitzung ist, was ein Schlüssel ist und wann neue Sitzungsschlüssel erstellt werden müssen
  • Sie kennen die Unterschiede zwischen asymmetrischer und symmetrischer Verschlüsselung
  • Sie verstehen, wie das SSL/TLS-Verschlüsselungsprotokoll beide Arten der Verschlüsselung verwendet
  • Sie kennen die vier Arten von Sitzungsschlüsseln, die für die symmetrische Verschlüsselung bei SSL/TLS verwendet werden

Was ist ein Sitzungsschlüssel?

Ein Sitzungsschlüssel ist ein Verschlüsselungscode, der zur symmetrischen Verschlüsselung nur einer einzigen Kommunikationssitzung dient. Mit anderen Worten: Es handelt sich um einen temporären Schlüssel, der nur einmal, während einer bestimmten Zeitspanne, zum Verschlüsseln und Entschlüsseln von Daten verwendet wird; mögliche zukünftige Konversationen zwischen den beiden Parteien werden mit anderen Sitzungsschlüsseln verschlüsselt. Ein Sitzungsschlüssel ist wie ein Passwort, das bei jeder Anmeldung zurückgesetzt wird.

Bei SSL/TLS erzeugen die beiden kommunizierenden Parteien (der Client und der Server) zu Beginn jeder Kommunikationssitzung während des TLS-Handshakes vier Sitzungsschlüssel. Die offizielle RFC für TLS nennt diese Schlüssel nicht wirklich „Sitzungsschlüssel“, aber funktional sind sie genau das.

Was ist eine Sitzung?

Eine Sitzung ist im Wesentlichen ein Gespräch. Eine Sitzung findet über ein Netzwerk statt und beginnt, wenn sich zwei Geräte gegenseitig bestätigen und eine virtuelle Verbindung herstellen. Sie endet, wenn die beiden Geräte die benötigten Informationen voneinander erhalten haben und „Fertig“-Nachrichten senden, wodurch die Verbindung beendet wird. Eine Analogie wäre, wenn sich zwei Personen gegenseitig Textnachrichten schicken und die Konversation mit den Worten „Bis später“ beenden. Die Verbindung kann auch aufgrund von Inaktivität beendet werden; das ist so, wie wenn sich zwei Personen Textnachrichten schicken und dann einfach nicht mehr antworten.

Eine Sitzung kann entweder eine festgelegte Zeitspanne lang dauern oder so lange, wie die beiden Parteien miteinander kommunizieren. Ist Ersteres der Fall, läuft die Sitzung nach einer gewissen Zeit ab; um die Verbindung wieder zu öffnen, müssten die beiden Geräte für die TLS-Verschlüsselung dann Informationen austauschen und neue Sitzungsschlüssel generieren.

Was ist ein kryptografischer Schlüssel?

Bei der Verschlüsselung ist ein Schlüssel eine Datenfolge, die verwendet wird, um Nachrichten so zu verändern, dass sie verschlüsselt werden – mit anderen Worten, dass die Daten zufällig oder durcheinandergewürfelt erscheinen. Ein Schlüssel wird auch verwendet, um die Daten zu entschlüsseln, d. h. sie von der verschlüsselten Form zurück in ihre ursprüngliche Form zu übersetzen. (Weitere Informationen finden Sie unter Was ist ein kryptografischer Schlüssel?)

Was ist symmetrische Verschlüsselung? Was ist asymmetrische Verschlüsselung?

Bei der symmetrischen Verschlüsselung wird auf beiden Seiten einer Konversation genau derselbe Schlüssel verwendet, sowohl für die Verschlüsselung als auch für die Entschlüsselung. In einer Sitzung, die symmetrische Verschlüsselung verwendet, können mehrere Schlüssel verwendet werden, aber eine Nachricht, die mit einem Schlüssel verschlüsselt ist, wird mit demselben Schlüssel entschlüsselt.

Bei der asymmetrischen Verschlüsselung gibt es zwei Schlüssel, und Daten, die mit dem einen Schlüssel verschlüsselt werden, können nur mit dem anderen Schlüssel entschlüsselt werden – anders als bei der symmetrischen Verschlüsselung, bei der mit demselben Schlüssel sowohl ver- als auch entschlüsselt wird. Dies wird auch als Verschlüsselung mit öffentlichem Schlüssel bezeichnet, da einer der Schlüssel öffentlich weitergegeben wird.

Verwendet HTTPS symmetrische oder asymmetrische Verschlüsselung?

HTTPS, d. h. HTTP mit dem TLS-Verschlüsselungsprotokoll, verwendet beide Arten der Verschlüsselung. Jede Kommunikation über TLS beginnt mit einem TLS-Handshake. Eine asymmetrische Verschlüsselung ist von entscheidender Bedeutung, damit der TLS-Handshake funktioniert.

Im Verlauf eines TLS-Handshakes werden die beiden kommunizierenden Geräte die vier Sitzungsschlüssel festlegen, die für den Rest der Sitzung für die symmetrische Verschlüsselung verwendet werden. Normalerweise sind die beiden kommunizierenden Geräte ein Client bzw. ein Benutzergerät wie ein Laptop oder ein Smartphone und ein Server, d. h. ein beliebiger Webserver, der eine Website hostet. (Weitere Informationen finden Sie unter Was ist das Client-Server-Modell?)

Wie funktioniert ein TLS-Handshake?

Bei einem TLS-Handshake senden Client und Server einander Zufallsdaten, mit denen sie getrennt Berechnungen durchführen und dann dieselben Sitzungsschlüssel ableiten. Drei Arten von zufällig generierten Daten werden von einer Partei zur anderen gesendet:

  • Das „Client-Random“: Dabei handelt es sich um eine zufällige Folge von Byte, die der Client an den Server sendet.
  • Das „Server-Random“: Dies ist dem Client-Random ähnlich, wird aber vom Server an den Client gesendet.
  • Das „Premaster-Secret“: Dabei handelt es sich um eine weitere Datenfolge. In einigen Versionen des TLS-Handshakes wird sie vom Client generiert und mit dem öffentlichen Schlüssel verschlüsselt an den Server gesendet; in anderen Versionen generieren Client und Server das Premaster-Secret selbst, wobei die Parameter des vereinbarten Algorithmus verwendet werden, um zum gleichen Ergebnis zu gelangen.

Der TLS-Handshake verwendet eine asymmetrische Verschlüsselung, um das Server-Random vor Angreifern zu verstecken (durch Verschlüsselung mit einem privaten Schlüssel) oder um dem Server zu erlauben, eine seiner Nachrichten digital zu „signieren“, damit der Client weiß, dass der Server derjenige ist, für den er sich ausgibt (so wie eine Unterschrift dazu beiträgt, die Identität einer Person im wirklichen Leben zu bezeugen). Der Server verschlüsselt einige Daten mit dem privaten Schlüssel, und der Client verwendet den öffentlichen Schlüssel, um sie zu entschlüsseln, wodurch bewiesen wird, dass der Server über den richtigen Schlüssel verfügt und legitim ist.

Was ist das „Master-Secret“ bei einem TLS-Handshake?

Das Master-Secret ist das Endergebnis aus der Kombination von Client-Random, Server-Random und Premaster-Secret über einen Algorithmus. Der Client und der Server besitzen jeweils diese drei Nachrichten, sodass sie für das Master-Secret zu demselben Ergebnis kommen sollten.

Der Client und der Server verwenden dann das Master-Secret, um mehrere Sitzungsschlüssel zu berechnen, die nur in dieser Sitzung verwendet werden – vier Sitzungsschlüssel, um genau zu sein.

Welche vier Sitzungsschlüssel werden bei einem TLS-Handshake aus dem Master-Secret generiert?

Die vier Arten von Sitzungsschlüsseln, die bei einem TLS-Handshake erstellt werden, sind:

  • Der „Client-Write-Key“
  • Der „Server-Write-Key“
  • Der „Client-Write-MAC-Key“
  • Der „Server-Write-MAC-Key“

Der Client-Write-Key ist der Schlüssel, den der Client zur Verschlüsselung seiner Nachrichten verwendet. Der Client-Write-Key ist ein symmetrischer Schlüssel, den sowohl der Client als auch der Server haben. Dadurch kann der Server Nachrichten vom Client mit demselben Schlüssel entschlüsseln.

Der Server-Write-Key entspricht dem Client-Write-Key, nur auf der Server-Seite. Zusammengefasst: Nachrichten von Client zu Server werden mit dem Client-Write-Key verschlüsselt, und der Server verwendet den Client-Write-Key, um sie zu entschlüsseln. Nachrichten vom Server zum Client werden mit dem Server-Write-Key verschlüsselt, und der Client verwendet den Server-Write-Key, um sie zu entschlüsseln. (Dieser gesamte Prozess wird vom Client-Gerät oder Browser ausgeführt; die Benutzer selbst müssen nichts verschlüsseln oder entschlüsseln).

Die MAC-Schlüssel (MAC = Message Authentication Code, Nachrichtenauthentifizierungscode) werden zum digitalen Signieren von Nachrichten verwendet. Der Server signiert seine Nachrichten mit dem Server-Write-MAC-Key; wenn der Client die Nachricht erhält, kann er den verwendeten MAC-Schlüssel mit seinem eigenen Eintrag für den Server-MAC-Key vergleichen, um sicherzustellen, dass er legitim ist. Der Client signiert seine Nachrichten mit dem Client-Write-MAC-Key.

Mit jeder neuen Kommunikationssitzung und jedem neuen TLS-Handshake wird ein Satz von vier komplett neuen Sitzungsschlüsseln erstellt. Es wird einen anderen Client-Write-Key geben, einen anderen Server-Write-Key usw., aber diese vier Arten von Schlüsseln werden jedes Mal erstellt.