Wie funktioniert ein SSL bzw. TLS Handshake?

Um eine verschlüsselte Verbindung herstellen zu können muss ein TLS bzw. SSL Handshake stattfinden. Während diesem Handshake wird der Public Key ausgetauscht und der benötigte Session-Key wird erstellt und ausgetauscht.

 

Bei TLS-Handshakes handelt es sich um eine Reihe von Datagrammen oder Nachrichten, die von einem Client und einem Server ausgetauscht werden. Ein TLS-Handshake umfasst mehrere Etappen, da Client und Server Informationen austauschen müssen, um den Handshake abzuschließen und weitere Kommunikation ermöglichen zu können.

 

Die genauen Schritte innerhalb eines TLS-Handshakes hängen von der Art des verwendeten Schlüsselaustausch-Algorithmus und den von beiden Seiten unterstützten Cipher Suites ab. Der RSA-Schlüsselaustauschalgorithmus wurde in TLS-Versionen vor 1.3 verwendet. Heute gilt er als nicht sicher. Der Austausch läuft ungefähr folgendermaßen ab.

Ablauf des Handshakes

  1. Client Hello – Ein Client sendet eine Anfrage via HTTPS Aufruf an beispielsweise einen Webserver (HTTPS).
  2. In dieser nachricht befinden sich außerdem zufällige Bytes, die als „Client Random“ bezeichnet werdne.
  3. Server Hello – Der Server erstellt daraufhin ebenfalls eine zufällige Byte-Abfolge, welche als „Server Random“ bezeichnet wird und sendet diese an den Client.
  4. Server Hello – Der Server händigt daraufhin dem Anfrager (Client) sein digitales Zertifikat aus.
    1. Darin enthalten ist der Publik key des Zertifikats
  5. Der Browser (Client) prüft ob das Zertifikat von einem, der ihm bekannten, vertrauenswürdigen Zertifizierungsstellen ausgestellt wurde
    1. Wenn nicht erscheint im Browser eine Zertifikatswarnun
  6. Danach erstellt der Client einen Pre Master Secret.
  7. Dieser Pre Master Secret wird mit Hilfe des Public Keys verschlüsselt und anschließend an den Angefragten Server übermittelt
  8. Der Server kann nun mit seinem Private Key den Session Key entschlüsseln
  9. Nun haben sowohl Server als auch Client folgende Informationen vorliegen:
    1. Client Random
    2. Server Random
    3. Pre Master Secret
  10. Mithilfe dieser drei Informationen kann nun ein Sitzungsschlüssel (Session-Key) berechnet werden.
  11. Dieser Session-Key wird nun zur Ver- und Entschlüsselung des Datenverkehrs zwischven Client und Serer genutzt.

Alle TLS-Handshakes verwenden eine asymetrische Kryptografie (öffentlicher und privater Schlüssel), aber nicht alle nutzen den privaten Schlüssel beim Generieren von Sitzungsschlüsseln.

Berechnung des Session Key

Zur Berechnung des Session-Key wird folgender Algorythmus verwendet:

Session Key = MD5(PMS)||SHA(‚A’||PMS||RN_CLIENT||RN_SERVER||MD5(MPS||SHA(‚BB’||PMS||RN_CLIENT||RN_SERVER||MD5(PMS||SHA(‚CCC’||PMS||RN_CLIENT||RN_SERVER)))))

0 Kommentare
Inline Feedbacks
View all comments