Was ist verschlüsselte SNI? | Wie ESNI funktioniert

Encrypted Server Name Indication (ESNI) trägt zum Schutz der Privatsphäre von Browser-Benutzern bei. Dafür wird ein zuvor unverschlüsselter Teil des TLS-Handshakes verschlüsselt, aus dem hervorgehen würde, welche Website ein Benutzer besucht.

Lernziele

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

  • Verstehen, warum ESNI für Datenschutz und Sicherheit notwendig ist
  • Verstehen, wie ESNI mit Public-Key-Verschlüsselung und DNS-Einträgen funktioniert
  • Weitere Datenschutz-orientierte Protokolle für sicheres Browsen im Internet erkunden

Ähnliche Inhalte


Möchten Sie noch mehr erfahren?

Abonnieren Sie theNET, Cloudflares monatliche Zusammenfassung der beliebtesten Einblicke in das Internet!

Lesen Sie die Cloudflare Datenschutzrichtlinie, um zu erfahren, wie wir Ihre persönlichen Daten sammeln und verarbeiten.

Link zum Artikel kopieren

Was ist verschlüsselte SNI (ESNI)?

Encrypted Server Name Indication (ESNI) ist eine unerlässliche Funktion zum Schutz von Benutzerdaten beim Browsen. Sie sorgt dafür, dass Drittparteien nicht den TLS-Handshake-Prozess ausspionieren können, um herauszufinden, welche Websites von Benutzern besucht werden. ESNI erreicht dies durch Verschlüsselung der Servernamensanzeige (Server Name Indication – SNI), die Teil des TLS-Handshakes ist.

SNI teilt einem Webserver mit, welches TLS-Zertifikat zu Beginn einer Verbindung zwischen Client und Server gezeigt werden soll. SNI ist ein Zusatz zum TLS-Protokoll, das es einem Server ermöglicht, mehrere TLS-Zertifikate an derselben IP-Adresse zu hosten.

Sie können sich SNI wie eine Wohnungsnummer bei einer Postanschrift vorstellen: In einem Gebäude befinden sich mehrere Wohnungen, und daher braucht jede Wohnung eine eigene Nummer, damit sie von den anderen unterschieden werden kann. Im Internet ist es ähnlich. Obwohl der Server durch die IP-Adresse gekennzeichnet ist, muss ein Clientgerät bei seiner ersten Mitteilung an den Server eine SNI angeben, um zu zeigen, welche Website (Wohnung) es erreichen möchte.

Was ist TLS?

Transport Layer Security – kurz TLS – ist ein Verschlüsselungsprotokoll, das die Privatsphäre und Sicherheit bei der Kommunikation im Internet schützt. TLS wird meistens zur Verschlüsselung der Kommunikation zwischen Anwendungen und Webservern verwendet, z. B. wenn Webbrowser eine Website laden. Alle Websites, die TLS verwenden, müssen ein TLS-Zertifikat haben. TLS wird manchmal SSL genannt, aber die Bezeichnung SSL für das Protokoll ist veraltet.

Alle TLS-Verbindungen beginnen mit einem Vorgang, der als „Handshake“ bezeichnet wird. Genauso wie sich zwei Menschen im richtigen Leben die Hand geben, wenn sie sich treffen und vorstellen, handelt es sich beim TLS-Handshake um eine Reihe von einleitenden Mitteilungen zwischen einem Clientgerät (z. B. dem Smartphone eines Benutzers) und einer Webanwendung oder Website. Während eines TLS-Handshakes einigen sich die beiden kommunizierenden Geräte unter anderem darüber, welche Verschlüsselungscodes verwendet werden sollen. Trotz der Anzahl der auszuführenden Schritte dauert ein TLS-Handshake nur ein paar Millisekunden.

Wie funktioniert Server Name Indication (SNI)?

SNI ist ein kleiner, aber entscheidender Teil des ersten Schritts beim TLS-Handshake. Die erste Mitteilung in einem TLS-Handshake wird als „Client Hello“ bezeichnet. Als Teil dieser Mitteilung bittet der Client um Einsicht in das TLS-Zertifikat des Webservers. Der Server sollte daraufhin im Rahmen seiner Antwort das Zertifikat senden.

Das Problem besteht darin, dass viele Webserver mehr als nur eine Website hosten, und jede Website kann ihr eigenes TLS-Zertifikat haben. Wenn die Server dem Client das falsche Zertifikat zeigen, kann sich der Client nicht sicher mit der gewünschten Website verbinden. Das führt zu einer Fehlermeldung „Die Verbindung ist nicht privat“.

SNI löst dieses Problem dadurch, dass es angibt, welche Website der Client erreichen möchte. Paradoxerweise kann eine Verschlüsselung erst erfolgen, wenn der TLS-Handshake erfolgreich mit SNI abgeschlossen wurde. Reguläre SNI wird daher nicht verschlüsselt, weil die Meldung „Client Hello“ zu Beginn des TLS-Handshakes gesendet wird. Jeder Angreifer, der die Verbindung zwischen Client und Server überwacht, könnte durch Auslesen des SNI-Teils des Handshakes erkennen, mit welcher Website sich der Client verbindet, obwohl die gesamte folgende Kommunikation für ihn nicht lesbar ist. (Angreifer könnten diese Informationen auf unterschiedliche Weise ausnutzen – z. B. durch Einrichtung einer Phishing-Website, um den Benutzer zu täuschen.)

Wie funktioniert verschlüsselte SNI?

ESNI hält die SNI dadurch geheim, dass der SNI-Teil der „Client Hello“-Mitteilung (und nur dieser Teil) verschlüsselt wird. Verschlüsselung funktioniert nur, wenn beide Seiten eines Kommunikationsvorgangs – in diesem Fall der Client und der Server – den Code zur Verschlüsselung und Entschlüsselung der Informationen haben, genauso wie zwei Menschen nur dasselbe Schließfach verwenden können, wenn beide einen Schlüssel für das Fach haben. Da die „Client Hello“-Mitteilung gesendet wird, bevor sich Client und Server auf TLS-Verschlüsselungscodes geeinigt haben, muss der ESNI-Verschlüsselungscode auf andere Weise übermittelt werden.

Die Lösung: Public-Key-Verschlüsselung. In den DNS-Eintrag des Webservers wird ein öffentlicher Schlüssel (Public Key) aufgenommen, damit der Client bei seiner Suche nach dem richtigen Server auch gleich den öffentlichen Schlüssel des Servers findet. Man könnte das mit einem Hausschlüssel vergleichen, den man in einem verschließbaren Kasten außerhalb seines Hauses lässt, damit ein Besucher sicher in das Haus gelangen kann. Mit dem öffentlichen Schlüssel kann der SNI-Eintrag des Clients so verschlüsselt werden, dass er nur von diesem speziellen Server entschlüsselt werden kann. (Das ist eine etwas vereinfachte Erklärung. Eine längere technische Erklärung finden Sie in diesem Blog-Beitrag.)

Stellen Sie sich vor, Alice möchte Bobs Website www.bobisawesome.example.com besuchen. So wie es jeder verantwortungsbewusste Websitebesitzer tun sollte, verwendet Bob für seine Website TLS, damit der gesamte Traffic zu und von seiner Website verschlüsselt wird. Bob hat auch ESNI implementiert, um Websitebesucher wie Alice noch besser zu schützen.

Wenn Alice https://www.bobisawesome.example.com in den Browser ihres Laptops eingibt, durchläuft ihr Laptop den folgenden Prozess, um die Website zu laden:

  1. Ihr Laptop sendet eine Abfrage an einen DNS-Server, um die IP-Adresse der Website herauszufinden.
  2. Aus der DNS-Antwort entnimmt Alices Laptop, welche IP-Adresse verwendet werden muss, um Bobs Website zu finden, und sie enthält auch Bobs öffentlichen ESNI-Schlüssel.
  3. Alices Laptop sendet eine „Client Hello“-Mitteilung an die angegebene IP-Adresse, wobei der SNI-Teil mit Bobs öffentlichem Schlüssel verschlüsselt wird.
  4. Bobs Webserver zeigt Bobs TLS-Zertifikat.
  5. Der TLS-Handshake wird fortgesetzt, und Alices Laptop lädt www.bobisawesome.example.com. Eventuelle Angreifer, die das Netzwerk überwachen, können nicht sehen, welche Website Alice besucht.*

*Die letzte Aussage stimmt nur, wenn beim DNS-Teil des Prozesses DNSSEC und entweder DNS über HTTPS oder DNS über TLS verwendet wurden. Mehr darüber später.

Reicht ESNI allein aus, um die Privatsphäre beim Browsen im Internet zu schützen?

ESNI ist ein großer Schritt in Richtung Datenschutz und Sicherheit im Internet, aber andere neue Protokolle und Funktionen sind ebenfalls wichtig. Das Internet wurde nicht im Hinblick auf Sicherheit und Datenschutz konzipiert, und daher gibt es bei mehreren Schritten für den Besuch einer Website keine Privatsphäre. Diverse neue Protokolle helfen aber dabei, jeden Schritt zu verschlüsseln und vor böswilligen Angreifern zu schützen.

Das Domain Name System – kurz DNS – ordnet von Menschen lesbare Website-Adressen wie www.bobisawesome.example.com entsprechenden alphanumerischen IP-Adressen zu. Das ist damit vergleichbar, dass eine bestimmte Adresse in einem großen Adressbuch nachgeschlagen wird, das von jedermann verwendet wird. Das normale DNS ist jedoch nicht verschlüsselt, was bedeutet, dass jeder sehen könnte, welche Adresse jemand nachschlägt, und jeder könnte sich für das Adressbuch ausgeben. Sogar mit implementierter ESNI könnte ein Angreifer sehen, welche DNS-Einträge Benutzer abfragen, und herausfinden, welche Websites sie besuchen.

Es gibt drei weitere Protokolle, mit denen versucht wird, diese Lücken zu schließen: DNS über TLS, DNS über HTTPS und DNSSEC.

DNS über TLS und DNS über HTTPS tun beide das gleiche: Sie verschlüsseln DNS-Abfragen mit TLS-Verschlüsselung. Sie unterscheiden sich vor allem darin, welchen Layer des Netzwerks und welchen Netzwerkport sie verwenden. DNSSEC überprüft, ob die DNS-Einträge echt sind und von einem legitimen DNS-Server stammen – nicht von einem Angreifer, der sich als DNS-Server ausgibt (wie bei einem DNS-Cacheangriff).

Was ist das Encrypted Client Hello (ECH)?

Das Encrypted Client Hello (ECH) ist eine weitere Erweiterung des TLS-Protokolls, die den SNI-Teil des Client Hello durch Verschlüsselung schützt. Im Gegensatz zu ESNI verschlüsselt ECH jedoch das gesamte Client Hello. Erfahren Sie in diesem Blogbeitrag mehr über ECH.

Unterstützt Cloudflare ESNI?

Das Cloudflare-Netzwerk unterstützt ESNI seit September 2018. Cloudflare war nicht nur das erste große Netzwerk, das ESNI unterstützt hat, Cloudflare war auch an der Entwicklung von ESNI beteiligt. ESNI ist noch nicht als offizieller RFC oder Internetstandard veröffentlicht worden, aber ein RFC-Entwurf ist in Bearbeitung.

Mit diesem kostenlosen ESNI-Prüftool können Sie Ihren Browser auf Sicherheit, Datenschutz und ESNI-Verwendung überprüfen. Erfahren Sie mehr darüber, warum SNI erstellt wurde oder wie ein TLS-Handshake funktioniert.