Onion-Dienste sind Dienste, die nur über Tor zugänglich sind. Das Ausführen eines Onion-Dienstes bietet deinen Nutzern die Sicherheit von HTTPS mit den zusätzlichen Datenschutzvorteilen des Tor Browser.

Warum Onion-Dienste?

Onion-Dienste bieten ihren Nutzern verschiedene Vorteile in Bezug auf Privatsphäre und Sicherheit.

Ausblenden des Standorts

Die IP-Adresse eines Onion-Dienstes ist geschützt. Onion-Dienste sind ein Überlagerungsnetz über TCP/IP, so dass IP-Adressen in gewisser Weise für Onion-Dienste nicht einmal sinnvoll sind: Sie werden nicht einmal im Protokoll verwendet.

End-to-end-Bestätigung

Wenn ein Benutzer eine bestimmte Onion besucht, weiß er, dass der Inhalt, den er sieht, nur von dieser bestimmten Onion stammen kann. Eine Nachahmung ist nicht möglich, was im Allgemeinen nicht der Fall ist. In der Regel bedeutet das Erreichen einer Website nicht, dass ein Man-in-the-Middle nicht an einen anderen Ort umgeleitet hat (z.B. bei DNS-Angriffen).

End-to-end-Verschlüsselung

Der Onion-Dienst-Verkehr wird vom Client zum Onion-Host verschlüsselt. Das ist so, als bekäme man starkes SSL/HTTPS kostenlos.

NAT punching

Ist dein Netzwerk gefiltert und du kannst keine Anschlüsse auf deiner Firewall öffnen? Dies könnte passieren, wenn du auf einem Universitätscampus, in einem Büro, auf einem Flughafen oder so ziemlich überall bist. Onion-Dienste benötigen keine offenen Anschlüsse, da sie durch NAT hindurchgehen. Sie bauen nur ausgehende Verbindungen auf.

Das Onion-Dienst-Protokoll: Übersicht

Nun stellt sich die Frage, welches Protokoll wird benötigt, um all diese Eigenschaften zu erreichen? Normalerweise verbindet man sich mit einer IP-Adresse und das war's, aber wie kann man sich mit etwas verbinden, das keine IP-Adresse hat?

Grundsätzlich sieht die Adresse eines Onion-Dienstes wie folgt aus: vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd.onion

Das sieht seltsam und zufällig aus, weil es der identity public key des Onion-Dienstes ist. Das ist einer der Gründe, warum wir die oben genannten Sicherheitseigenschaften erreichen können.

Das Onion-Dienst-Protokoll verwendet das Tor-Netzwerk, so dass das Programm sich dem Dienst vorstellen kann und dann einen Rendezvous-Punkt mit dem Dienst über das Tor-Netzwerk einrichten kann. Hier ist eine detaillierte Aufschlüsselung, wie dies geschieht:

Akt 1: Wo der Onion-Dienst seine Einstiegspunkte einstellt.

Stellen wir uns vor, deine Lokalzeitung beschließt, einen Onion-Dienst (mit SecureDrop) einzurichten, um anonyme Hinweise zu erhalten. Als erster Schritt im Protokoll kontaktiert der Onion-Dienst eine Reihe von Tor-Relays und bittet sie, als seine Einstiegspunkte zu fungieren, indem er langfristige Kanäle zu ihnen herstellt. Diese Kanäle sind anonymisierte Kanäle, so dass der Server seinen Einstiegspunkten nicht seinen Standort aufdeckt.

Der Onion-Dienst wird sich hinter dem Tor-Netzwerk verstecken und schützen, indem er den Zugriff nur über drei Einführungspunkte erlaubt, mit denen er sich über einen Zwei-Hop-Tor-Kanal verbindet.

Onion Services: Step 1

Akt 2: Wo der Onion-Dienst seine Deskriptoren veröffentlicht

Nun, da die Einstiegspunkte eingerichtet sind, müssen wir einen Weg schaffen, damit die Programme sie finden können.

Aus diesem Grund stellt der Onion-Dienst einen Onion-Dienst-Deskriptor zusammen, der eine Liste seiner Einstiegspunkte (und deren "Authentifizierungsschlüssel") enthält, und signiert diesen Deskriptor mit dem identity private key des Onion-Dienstes. Der hier verwendete identity private key ist der private Teil des öffentlichen Schlüssels, der in der Onion-Dienst-Adresse verschlüsselt ist.

Der Onion-Dienst lädt diesen signierten Deskriptor in eine verteilte Hash-Tabelle hoch, die Teil des Tor-Netzwerks ist, so dass Programme ihn auch erhalten können. Er benutzt einen anonymisierten Tor-Kanal, um diesen Upload durchzuführen, so dass er seinen Standort nicht preisgibt.

Onion Services: Step 2

Akt 3: Wenn ein Programm den Onion-Dienst besuchen möchte

Nehmen wir an, du möchtest anonym einige Daten zum Steuerbetrug an deine lokale Zeitung über deren SecureDrop senden. Du findest die Onion-Adresse für das SecureDrop der Zeitung auf einer öffentlichen Website oder bei einem Freund.

Onion Services: Step 3

Akt 4: Wo das Programm in den Onion-Dienst einsteigt

Alle vorherigen Schritte wurden nur für den Onion-Dienst eingerichtet, damit er für die Programme erreichbar ist. Lass uns jetzt zu dem Punkt vorspulen, an dem ein Programm tatsächlich den Dienst besuchen möchte.

In diesem Fall hat der Client die Onion-Adresse von SecureDrop und möchte es besuchen, also verbindet er sich per Tor Browser mit dem Dienst. Als Nächstes muss der Client zur verteilten Hash-Tabelle aus Schritt 2 gehen und nach dem signierten Deskriptor des Onion-Dienstes von SecureDrop fragen.

Onion Services: Step 4

Akt 5: Wo der Client die Signatur der Onion-Adresse überprüft

Wenn der Client den signierten Deskriptor erhält, überprüft er die Signatur des Deskriptors mit dem öffentlichen Schlüssel, der in der Onion-Adresse verschlüsselt ist. Dies bietet die Sicherheitseigenschaft der Ende-zu-Ende-Bestätigung, da wir nun sicher sind, dass dieser Deskriptor nur von diesem Onion-Dienst und niemandem sonst erstellt werden konnte.

Und innerhalb des Deskriptors befinden sich die Einführungspunkte, die es dem Client ermöglichen, sich beim Onion-Dienst von SecureDrop vorzustellen.

Onion Services: Step 5

Akt 6: Wenn das Programm einen Rendezvous-Punkt festlegt

Nun, bevor der Einstieg erfolgt, wählt das Programm (in diesem Fall du) ein Tor-Relay aus und baut einen Kanal zu diesem auf. Das Programm bittet das Relay, dein Rendezvous-Punkt zu werden und gibt ihm einen "Einmal-Geheimtext", der als Teil des Rendezvous-Verfahrens verwendet wird.

Onion Services: Step 6

Akt 7: Wo der Onion-Dienst sein Rendezvous mit dem Programm hat

Der Einstiegspunkt gibt deine Details (Geheimtext und Rendezvous-Adresse) an den Onion-Dienst weiter, der mehrere Verifizierungsprozesse durchführt, um zu entscheiden, ob du vertrauenswürdig bist oder nicht.

Onion Services: Step 7

Akt 8: Wo der Rendezvous-Punkt das Geheimnis des Programms verifiziert

Der Onion-Dienst verbindet sich mit dem Rendezvous-Punkt (über einen anonymisierten Kanal) und sendet das "one-time-secret" dort hin. Der Rendezvous-Punkt führt eine letzte Überprüfung durch, um die geheimen Texte von dir und dem Dienst abzugleichen (letzterer kommt auch von dir, wurde aber durch den Dienst weitergeleitet).

Der Rendezvous-Punkt leitet einfach (end-to-end verschlüsselte) Nachrichten vom Programm zum Dienst und umgekehrt weiter.

Onion Services: Step 8

Akt 9: Wo der Onion-Dienst sein Rendezvous mit dem Programm hat

Generell besteht die komplette Verbindung zwischen Kunde und Onion-Dienst aus 6 Relays: 3 davon wurden vom Programm ausgewählt, wobei das dritte der Rendezvous-Punkt ist, und die anderen 3 wurden vom Onion-Dienst ausgewählt. Das bietet location hiding für diese Verbindung.

Schließlich wird über den Rendezvous-Punkt ein Tor-Kanal zwischen dir und dem SecureDrop Onion-Dienst deiner Zeitung aufgebaut.

Onion Services: Step 9

Weitere Ressourcen

Dies war grade ein High-Level-Überblick über das Tor Onion-Dienst-Protokoll. Hier sind einige weitere Ressourcen, wenn du mehr erfahren möchtest: