von Michael Reber

Das HTTPS Transport-Protokoll und die Rolle von TLS

IT-Security, Network

In der heutigen digitalen Welt ist die Sicherheit des Datenaustauschs im Internet von entscheidender Bedeutung. HTTPS (HyperText Transfer Protocol Secure) ist ein Protokoll, das die sichere Übertragung von Daten zwischen einem Webserver und einem Webbrowser gewährleistet. In diesem Blog-Beitrag werden wir uns eingehend mit dem HTTPS-Transportprotokoll beschäftigen, die Rolle von TLS 1.2 (Transport Layer Security) erläutern und detailliert auf die Funktionsweise von Verschlüsselung und CA-Validierung (Certificate Authority) eingehen. Am Ende des Artikels haben wir zum besseren Verständnis ein zusammenfassendes Beispiel einer HTTPS-Anfrage von einem Client an den Webserver www.swissmakers.ch erstellt. Dies soll die einzelnen Schritte noch einmal abschliessend und verständlich zusammenfassen.

HTTPS und TLS: Ein kurzer Überblick

HTTPS ist eine Erweiterung des HTTP-Protokolls und verwendet TLS, um eine sichere Kommunikation über ein Computernetzwerk zu gewährleisten. Während HTTP die Daten im Klartext überträgt, verschlüsselt HTTPS die Daten, um sie vor unbefugtem Zugriff zu schützen.

TLS ist das Protokoll, welches eine sichere Kommunikation über HTTPS ermöglicht. Es besteht aus zwei Hauptphasen: dem TLS-Handshake und der Datenübertragung (Record-Protocol).
Der TLS-Handshake dient dem Aufbau einer sicheren Verbindung zwischen dem Client (Webbrowser) und dem Server (Webserver), während die Datenübertragung die eigentliche Verschlüsselung der Daten mit den ausgehandelten Schlüsseln übernimmt.

Der TLS-Handshake im Detail

Der TLS-Handshake ist ein mehrstufiger Prozess, der vereinfacht folgende Schritte umfasst:

  1. Client Hello: Der Client sendet eine Nachricht an den Server mit den unterstützten TLS-Versionen, Verschlüsselungs-Suites und anderen Konfigurationsparametern, welche vom Client unterstützt werden.
  2. Server Hello: Der Server antwortet mit seinen unterstützten Versionen und wählt die sichersten verfügbaren Parameter für die Verbindung, einschliesslich der TLS-Version und Verschlüsselungs-Suite, welche von beiden Parteien unterstützt werden.
  3. Zertifikataustausch: Der Server sendet sein öffentliches digitales Zertifikat (welches unter anderem den öffentlichen Schlüssel enthält), das von einer vertrauenswürdigen Zertifizierungsstelle (CA) signiert wurde, an den Client.
  4. Schlüsselaustausch: Nach erfolgreicher Validierung durch die CA (clientseitig) tauschen Client und Server kryptographische Schlüssel (asymmetrisch verschlüsselt) aus, um später eine symmetrische Verschlüsselung zu ermöglichen. Dies kann durch verschiedene Verfahren geschehen, z.B. mit RSA oder alternativ auch Diffie-Hellman.
  5. Handshake-Abschluss: Beide Parteien bestätigen, dass der Handshake abgeschlossen ist.
    Die sichere Verbindung wird durch die symmetrische Verschlüsselung etabliert.

Ver- und Entschlüsselung der Daten

Nach erfolgreichem TLS-Handshake beginnt die verschlüsselte Übertragung der Daten. Dabei kommen symmetrische Verschlüsselungsalgorithmen wie AES (Advanced Encryption Standard) zum Einsatz. Symmetrische Verschlüsselung bedeutet, dass derselbe Schlüssel sowohl zum Ver- als auch zum Entschlüsseln der Daten verwendet wird.

Symmetrische Verschlüsselung

  • Serverseitige Verschlüsselung: Der Server verschlüsselt die Daten mit dem symmetrischen Schlüssel und sendet sie an den Client.
  • Clientseitige Verschlüsselung: Der Client verschlüsselt seine Anfragen oder Antworten mit demselben symmetrischen Schlüssel und sendet sie an den Server.

Diese Methode stellt sicher, dass nur der jeweilige Client und Server die übertragenen Daten verschlüsseln, entschlüsseln und lesen können.

Asymmetrische Verschlüsselung und Schlüsselaustausch

Beim TLS-Handshake wird die asymmetrische Verschlüsselung verwendet, um symmetrische Schlüssel sicher auszutauschen. Dabei wird ein Schlüsselpaar verwendet, welches aus einem öffentlichen Schlüssel (Public Key) und einem privaten Schlüssel (Private Key) besteht:

  • Öffentlicher Schlüssel: Wird vom Server an den Client gesendet und kann von jedem zur Verschlüsselung von Daten verwendet werden.
  • Privater Schlüssel: Wird sicher auf dem Server aufbewahrt und zum Entschlüsseln der mit dem öffentlichen Schlüssel verschlüsselten Daten verwendet.

Der eigentliche Schlüsselaustausch kann durch verschiedene Methoden erfolgen, einschliesslich des RSA-Schlüsselaustauschs oder eines zusätzlichen Diffie-Hellman-Schlüssels, welcher auf dem Server konfiguriert werden kann. Diffie-Hellman ist ein Verfahren, bei dem zwei Parteien gemeinsam einen zusätzlichen geheimen Schlüssel erzeugen können, auch wenn die Kommunikation über eine unsichere Verbindung erfolgt. Dieses Verfahren kann in Kombination mit anderen Algorithmen verwendet werden, um beispielsweise die Sicherheit eines Reverse Proxies oder eines Webservers zu erhöhen.

Es ist wichtig zu betonen, dass TLS auch ohne die zusätzliche Implementierung von Diffie-Hellman funktioniert. Der RSA-Schlüsselaustausch, bei dem der symmetrische Schlüssel mit dem öffentlichen Schlüssel des Servers verschlüsselt und dann vom Server mit seinem privaten Schlüssel entschlüsselt wird, ist das Standardverfahren.

Die CA-Validierung

Die Validierung des öffentlichen Schlüssels (Public Key) über vertrauenswürdige öffentliche Zertifizierungsstellen (Public Trusted Root CAs) ist ein wichtiger Bestandteil des TLS-Handshakes für eine später als «sicher» geltende Verbindung. Die jeweilige CA prüft nämlich bereits beim Antrag zum Erstellen eines neuen öffentlichen Schlüssels (Einrichtung einer neuen HTTPS-verschlüsselten Webseite) die Identität des Serverbetreibers anhand der Domain und stellt nur dann ein digitales Zertifikat (welches die Authentizität der später erreichbaren https://-Seite bestätigt) aus, wenn alle Prüfungen erfolgreich durchlaufen wurden.
Somit kann (in den meisten Fällen) davon ausgegangen werden, dass nach erfolgreicher Prüfung des Server-Zertifikats, durch den Client, dieses gültig ist und keine Man-in-the-Middle-Angriffe erfolgen können.

Die Client-Zertifikatsprüfung: Der Client (Browser) prüft das Zertifikat während des TLS-Handshakes, indem er die Zertifikatskette gegen die Liste der vertrauenswürdigen Root-CAs validiert / Prüfsummen prüft. Wenn das Zertifikat als vertrauenswürdig eingestuft wird und die Zertifikatskette (Certificate-Chain) nicht gebrochen wurde, kann eine validierte und sichere Verbindung aufgebaut werden. In unserem Fall lautet die Root-CA «ISRG Root X1», von welcher eine Sub-CA namens «R3» erstellt wurde, welche wiederum unser Zertifikat für «swissmakers.ch» ausgestellt hat.

Warum nicht jeder ein Zertifikat für eine beliebige Domain erhalten kann

Wie bereits kurz erwähnt, ist für die erfolgreiche Ausstellung eines neuen Zertifikats für eine «neu zu verschlüsselnde» Webseitenverbindung über HTTPS zunächst eine Überprüfung der Inhaberrechte erforderlich. Bei Let’s Encrypt können beispielsweise folgende Prüfungen durchgeführt werden:

  • DNS-Validierung: Der Antragsteller muss einen spezifischen DNS-Eintrag erstellen, den die CA durch eine DNS-Abfrage auf der entsprechenden Domain vor der Ausstellung überprüfen kann.
  • HTTP-Validierung: Der Antragsteller muss eine bestimmte Datei im Webserver-Root der Domain hinterlegen oder über ein Webserver-Modul eine ähnliche automatisierte Überprüfungsmethode ermöglichen, welche wiederum von der CA abgerufen und überprüft werden kann.

Nur der Inhaber der Domain kann die beiden notwendigen Einstellungen für diese Validierungsarten vornehmen und somit kann auch nur er ein neues Zertifikat beantragen und erhalten.

Die Erstellung eines neuen Zertifikats läuft grob in folgenden Schritten ab:

  1. Zertifikatsantrag: Der Serverbetreiber beantragt bei einer CA ein digitales Zertifikat. Beispielsweise kann Let’s Encrypt verwendet werden, um ein kostenloses Zertifikat zu erhalten. Der Zertifikatsantrag wird mit einem zuvor lokal erzeugten privaten Schlüssel signiert.
  2. Verifizierung: Die CA überprüft die Identität des Antragstellers und validiert, dass er die notwendigen Rechte als Inhaber der Domain besitzt, für welche das Zertifikat ausgestellt wird. Let’s Encrypt kann beispielsweise eine Domainvalidierung über DNS-Einträge durchführen, welche vom Serverbetreiber zu erstellen sind.
  3. Ausstellung des Zertifikats: Nach erfolgreicher Prüfung stellt die CA das digitale Zertifikat aus und signiert es mit dem privaten Schlüssel der CA.

Beispiel: HTTP-Anfrage an www.swissmakers.ch

Hier noch ein detailliertes Beispiel des Ablaufs, wenn ein PC über einen Webbrowser eine HTTP-Anfrage an www.swissmakers.ch stellt:

  1. DNS-Auflösung: Der Browser löst die Domain www.swissmakers.ch über DNS (Domain Name System) in eine IP-Adresse auf.
  2. Verbindungsaufbau: Der Browser initiiert eine TCP-Verbindung zur IP-Adresse des Servers.
  3. TLS-Handshake: Der Browser startet den TLS-Handshake, um eine sichere Verbindung aufzubauen:
    • Der Browser sendet eine Client Hello Nachricht.
    • Der Server antwortet mit einer Server Hello Nachricht und sendet sein digitales Zertifikat.
    • Der Browser überprüft das Zertifikat anhand der Liste der vertrauenswürdigen CAs.
    • Der Browser und der Server tauschen kryptographische Schlüssel aus.
    • Beide Parteien bestätigen den Abschluss des Handshakes.
  4. Sichere Datenübertragung: Nach dem TLS-Handshake wird die eigentliche HTTP-Anfrage über die verschlüsselte Verbindung (HTTPS) gesendet:
    • Der Browser sendet eine verschlüsselte GET-Anfrage an den Server «https://www.swissmakers.ch».
    • Der Server verarbeitet die Anfrage und sendet die verschlüsselte Antwort zurück.
  5. Anzeige der Webseite: Der Browser entschlüsselt die Antwort und zeigt dem Benutzer die Webseite www.swissmakers.ch an:

Fazit

HTTPS und TLS spielen eine entscheidende Rolle bei der Sicherung der Kommunikation im Internet. Durch den Einsatz von Verschlüsselung und Zertifikatsvalidierung wird sichergestellt, dass die Daten zwischen dem Client und dem Server sicher übertragen werden. Das Verständnis der Funktionsweise von HTTPS und TLS ist unerlässlich, um eine sichere externe aber auch unternehmensinterne Kommunikation zwischen Applikationsservern und Clients gewährleisten zu können.

Für vertiefte weitere Informationen zu Algorithmen oder Protokollen empfehlen wir den Youtube-Kanal des renommierten Professors für Kryptographie Prof. Dr.-Ing. Christof Paar.

Wir hoffen, Ihnen mit diesem Blogbeitrag einen Überblick über das HTTPS-Transportprotokoll und die Rolle von TLS bei der sicheren Datenübertragung gegeben zu haben. Bleiben Sie sicher und achten Sie auch in Ihren internen Netzwerken auf verschlüsselte Verbindungen!

Foto des Autors

Michael Reber

Jahrelange Erfahrung in Linux, Security, SIEM und Private Cloud

Hinterlassen Sie einen Kommentar

zwölf − 7 =

de_CH