Was ist SSL und wie funktioniert es?

SSL oder Secure Sockets Layer ist ein kryptografisches Protokoll, das eine sichere Kommunikation über ein Computernetzwerk ermöglicht. Es stellt eine verschlüsselte Verbindung zwischen einem Webserver und einem Webbrowser her und stellt sicher, dass alle zwischen ihnen übertragenen Daten privat und vollständig bleiben. SSL nutzt asymmetrische Verschlüsselungstechniken zum sicheren Austausch symmetrischer Sitzungsschlüssel, die dann zur Verschlüsselung von Daten während der Sitzung verwendet werden.

SSL funktioniert durch die Initiierung eines Handshake-Prozesses zwischen dem Client (z. B. einem Webbrowser) und dem Server (z. B. einem Webserver). Während des Händedrucks:

  • Der Client sendet eine „ClientHello“-Nachricht an den Server, die die unterstützten SSL/TLS-Versionen und kryptografischen Algorithmen angibt.
  • Der Server antwortet mit einer „ServerHello“-Nachricht, bestätigt die SSL/TLS-Version und wählt die stärkste Verschlüsselungssuite für die Verschlüsselung aus.
  • Der Server sendet sein digitales Zertifikat an den Client, das den öffentlichen Schlüssel des Servers enthält. Das Zertifikat wird von einer vertrauenswürdigen Zertifizierungsstelle (CA) ausgestellt und enthält Informationen zur Überprüfung der Serveridentität.
  • Der Client überprüft das Zertifikat des Servers anhand einer Liste vertrauenswürdiger Zertifizierungsstellen, die in seinem lokalen Zertifikatsspeicher gespeichert ist. Wenn das Zertifikat gültig und vertrauenswürdig ist, generiert der Client ein Pre-Master-Geheimnis und verschlüsselt es mit dem öffentlichen Schlüssel des Servers.
  • Sowohl der Client als auch der Server verwenden das Pre-Master-Geheimnis, um unabhängig voneinander einen Sitzungsschlüssel zu generieren, der für die symmetrische Verschlüsselung und Entschlüsselung der während der SSL-Sitzung ausgetauschten Daten verwendet wird.

Die SSL-Schicht in Computernetzwerken fungiert als sicherer Kommunikationskanal zwischen Anwendungen, die auf Client- und Serversystemen ausgeführt werden. Es arbeitet oberhalb der Transportschicht (z. B. TCP/IP) und unterhalb der Anwendungsschicht (z. B. HTTP, SMTP) und sorgt für eine transparente Ver- und Entschlüsselung der zwischen Netzwerkendpunkten übertragenen Daten. Die SSL-Schicht gewährleistet Vertraulichkeit, Integrität und Authentizität der übertragenen Daten, indem sie vertrauliche Informationen verschlüsselt und die Identität der Kommunikationsparteien mithilfe digitaler Zertifikate überprüft.

Ein Beispiel für SSL ist HTTPS (HyperText Transfer Protocol Secure), die sichere Version von HTTP. HTTPS verwendet SSL/TLS-Protokolle, um den zwischen Webbrowsern und Webservern ausgetauschten Daten zu verschlüsseln und so das Abhören und Manipulieren sensibler Informationen wie Anmeldeinformationen, Zahlungsdetails und personenbezogener Daten zu verhindern. Mit HTTPS gesicherte Websites zeigen in der Adressleiste des Browsers ein Vorhängeschloss-Symbol an, das darauf hinweist, dass die Kommunikation verschlüsselt und sicher ist.

DNS (Domain Name System) und SSL arbeiten zusammen, um eine sichere und authentifizierte Kommunikation über das Internet zu ermöglichen:

  • DNS löst Domänennamen (z. B. www.example.com) in IP-Adressen auf, die Computer für die Kommunikation über das Internet verwenden.
  • SSL/TLS-Protokolle, die in HTTPS verwendet werden, stellen sicher, dass die während DNS-Anfragen und -Antworten zwischen Client und Server ausgetauschten Daten verschlüsselt und vor dem Abfangen oder Ändern durch Unbefugte geschützt sind.
  • Wenn ein Client über HTTPS auf eine Website zugreift, löst das DNS den Domänennamen in eine IP-Adresse auf und SSL/TLS sichert die nachfolgende Kommunikation durch Verschlüsselung von DNS-Abfragen, Antworten und allen zwischen Client und Server ausgetauschten Daten.

Insgesamt sind SSL (Secure Sockets Layer) und sein Nachfolger TLS (Transport Layer Security) von entscheidender Bedeutung für die Einrichtung sicherer Kommunikationskanäle über Computernetzwerke und gewährleisten die Vertraulichkeit, Integrität und Authentizität der übertragenen Daten zwischen Clients und Servern.