SSL/TLS-Verschlüsselung bei HTTPS-Verbindungen

In unserem letzten Artikel haben wir berichtet, dass mehrere Schweizer Hoster inzwischen kostenlose SSL-Zertifikate für ihre Kunden anbieten. Dabei haben wir kurz die Vorteile einer HTTPS-Verbindung umrissen, sind aber nicht auf die genaue Funktionsweise eingegangen. Wie versprochen, legen wir nun nach und widmen uns der Technik hinter der Verschlüsselung etwas genauer.

Der Prozess, um eine verschlüsselte Verbindung zwischen Server und Client aufzubauen läuft folgendermaßen ab: Der Client (in unserem Fall der Browser) schickt einen Request an den Server. Dieser authentifiziert sich mit einem Zertifikat, welches die Vertrauenswürdigkeit des Servers bestätigt. Nur so kann der Client sicherstellen, dass er tatsächlich mit dem gewünschten Server kommuniziert. Anschließend muss ein Schlüssel ausgetauscht werden, mit dem die weitere Kommunikation dann chiffriert werden kann. Und hier liegt der Knackpunkt der gesamten Technik. Wie kann ein Schlüssel ausgetauscht werden, ohne dass ein dritter diesen mithören und die weitere Kommunikation dadurch auch entschlüsseln kann?

Das Public-Key-Verschlüsselungsverfahren

Hier kommt eine Technik ins Spiel, die so einfach wie genial ist: das Public-Key-Verschlüsselungsverfahren. Dieses Verfahren beruht auf mathematischen Gleichungen, welche in eine Richtung leicht gelöst, aber nur sehr schwer umgekehrt werden können. Diese sogenannten Einwegfunktionen sind die Basis für ein Verschlüsselungsverfahren, welches 1977 von Ronald L. Rivest, Adi Shamir und Leonard Adleman entwickelt wurde und nach deren Namen RSA-Verfahren genannt wird. Dieses basiert immer auf einem Schlüsselpaar aus Private Key und Public Key. Wie der Name schon sagt wird der Public Key öffentlich zur Verfügung gestellt, während der Private Key immer geheim bleibt. Nachrichten können mit dem Public Key verschlüsselt, aber nicht mit dem selben Key wieder entschlüsselt werden, da eine Einwegfunktion zur Verschlüsselung genutzt wird. Zum Entschlüsseln der Nachricht wird der Private Key benötigt. Verschlüsselungen dieser Art werden asymmetrische Verschlüsselung genannt. Im Gegensatz dazu verwendet eine symmetrische Verschlüsselung den selben Key zum Ver- und Entschlüsseln.

Der Server stellt seinen Public Key zur Verfügung.

 

 

Der Browser verschlüsselt die Nachricht mit dem Public Key des Servers. Dieser Entschlüsselt die Nachricht mit seinem Private Key.

Auf unser Beispiel bezogen erzeugt also der Server einmalig ein Schlüsselpaar. Um eine sichere Verbindung herzustellen, wird dem Browser der Public Key zur Verfügung gestellt. Mit Hilfe dessen kann eine Nachricht verschlüsselt und an den Server gesendet werden. Dieser nutzt nun wiederum seinen Private Key, um die Nachricht wieder zu entschlüsseln. Zu beachten ist dabei, dass verschlüsselte Nachrichten nur an Instanzen gesendet werden können, die zuvor einen Public Key bereit gestellt haben. Dies ist auch die Funktionsweise bei verschlüsseltem Mail-Verkehr, bei dem zuerst die eigene Signatur mit dem Public Key geschickt werden muss, bevor der Sender E-Mails dann mit diesem Key verschlüsseln kann. Allerdings hat nicht jede Privatperson ein Schlüsselpaar erstellt, weshalb verschlüsselte E-Mails auch nach wie vor nicht zum Standard gehören. Wie also kann der Server verschlüsselt mit dem Browser kommunizieren, ohne dass dieser einen Public Key zur Verfügung stellt?

Der Aufbau einer HTTPS-Verbindung

Die Lösung liegt im mehrstufigen Aufbau einer HTTPS-Verbindung. Im folgenden haben wir die Punkte leicht vereinfacht aufgelistet:

  1. Der Browser sendet eine SSL Hello Message an den Server. Diese beinhaltet unter anderem die vom Browser unterstützten SSL- bzw. TLS-Versionen, welcher Hash-Algorithmus genutzt werden soll und ob Komprimierung unterstützt wird.
  2. Der Server antwortet mit dem SSL-Zertifikat und sendet dabei seinen Public Key mit. Gleichzeitig wählt der Server die höchste SSL- bzw. TLS-Version, die von beiden Parteien unterstützt wird.
  3. Der Browser überprüft das Zertifikat des Servers. Nur wenn dieses gültig ist, wird ein Sitzungsschlüssel erstellt, welcher mit dem Public Key des Servers verschlüsselt und anschließend gesendet wird.
  4. Der Server nutzt seinen Private Key um die empfangene Nachricht zu entschlüsseln. Der enthaltene Sitzungsschlüssel ist ein symmetrischer Schlüssel, mit dem die weitere Verbindung verschlüsselt wird.

Mit Hilfe der Public-Key-Verschlüsselung wird also ein symmetrischer Schlüssel ausgetauscht, den anschließend Server und Browser verwenden können. Dadurch ist der Browser nicht darauf angewiesen selbst einen Public Key zur Verfügung zu stellen.

Insgesamt ist der Ablauf zum Aufbau einer HTTPS-Verbindung noch etwas komplexer, aber dies genügt um die Funktionsweise im Prinzip zu verstehen. Falls Sie sich für dieses Thema interessieren und weitere Fragen haben, lassen Sie doch einfach einen Kommentar da. Falls Sie Ihre Website gerne mit einem SSL-Zertifikat ausstatten möchten, nehmen Sie Kontakt zu uns auf.

Glossar

SSL/TLS – Secure Sockets Layer ist ein Verschlüsselungsprotokoll, welches inzwischen von Transport Layer Security (TLS) abgelöst wurde. Der Begriff SSL hat sich aber bisher gehalten.

HTTPS – HyperText Transfer Protocol Secure ist das gängige HTTP-Protokoll in Verbindung mit SSL oder TLS

symmetrische Verschlüsselung – Der selbe Schlüssel wird für die Ver- und Entschlüsselung genutzt

asymmetrische Verschlüsselung – Verschlüsselung mit einem öffentlichen und einem privaten Schlüssel

Public/Private Key – Öffentlicher und privater Schlüssel, die immer als Paar generiert werden. Der Public Key wird frei zur Verfügung gestellt, während der Private Key immer geheim bleibt.

Einwegfunktion – Ein mathematisches Problem, welches relativ leicht lösbar aber sehr schwer umzukehren ist.

RSA-Kryptosystem – Ein asymmetrisches Verschlüsselungssystem, welches 1977 von den Mathematikern Rivest, Shamir und Adleman entwickelt wurde.

 

 

Ein Kommentar zu “SSL/TLS-Verschlüsselung bei HTTPS-Verbindungen

  1. Pingback: k-webs.ch so schnell wie nie | k-webs tech blog

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.