Wie im Clear Web
müssen auch im Tor-Netzwerk
Verfahren vorhanden sein, um Ressourcen, sogenannte Hidden Services
bzw. Onion Services
zu finden. Im Clear Web stehen dafür DNS-Server
zur Verfügung, die den Domain-Namen hierarchisch in eine IP-Adresse auflösen, und Router mit eigenen Routing-Protokollen ermitteln den Weg zur Ziel-IP-Adresse und leiten die Anfrage zielgenau dorthin. Im Prinzip weiß aber die ganze Welt, wer mit wem spricht und wo sich Quelle und Ziel befinden. Zumindest theoretisch und auf numerischer Basis.
Dies steht jedoch im krassen Gegensatz zum Anonymitätsansatz des Tor-Netzwerks, weshalb hier ein grundsätzlich anderer Ansatz verfolgt wird, der sowohl die Anonymität des Clients als auch die der Ressource, des Hidden Service, sicherstellt.
Hidden Service (Onion Service)
Der Begriff Hidden Service
wurde in den frühen Tagen des Tor-Projekts verwendet, um Dienste zu beschreiben, die anonym innerhalb des Tor-Netzwerks gehostet wurden. Diese Dienste sind für die normale Internetwelt unsichtbar und bieten Anonymität sowohl für den Betreiber des Dienstes als auch für die Nutzer.
Der Begriff Onion Service
wurde eingeführt, um den Dienst technisch genauer zu beschreiben und gleichzeitig die Weiterentwicklung des Protokolls zu betonen. Seit 2015 hat das Tor-Projekt begonnen, diesen Begriff verstärkt zu verwenden, insbesondere mit der Einführung der neuesten Version von Onion Services
(v3).
Die Onion-Adresse
Onion-Adressen
unterscheiden sich vom Clear Web. Der Betreiber des Onion Service
startet die Einrichtung des Dienstes, indem er ein asymmetrisches Schlüsselpaar
(bestehend aus einem privaten und einem öffentlichen Schlüssel) generiert. Aus dem öffentlichen Schlüssel
des generierten Schlüsselpaares wird die Onion-Adresse
berechnet.
Für v3-Onion-Adressen wird der öffentliche Schlüssel zunächst einer Hash-Funktion (SHA-3/256) unterzogen, und der resultierende Hash-Wert
wird dann in Base32
kodiert, um die endgültige Onion-Adresse
zu erzeugen. Die Onion-Adresse besteht aus 56 alphanumerischen Zeichen und endet mit .onion
.
Die offizielle Onion-Adresse
des Tor-Projekts
sieht dann folgendermaßen aus:
http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion/index.html
Deskriptor
Der Deskriptor
eines Onion Service
im Tor-Netzwerk
enthält wichtige Informationen, die es einem Client ermöglichen, sich mit diesem Dienst zu verbinden, ohne seine Anonymität zu gefährden. Der Deskriptor
wird vom Onion Service
erstellt und in die Hidden Service Directories
hochgeladen. Er enthält folgende Informationen:
- Öffentlicher Schlüssel des Onion Service: Der
Deskriptor
enthält denöffentlichen Schlüssel
desOnion Service
. Dieser Schlüssel ist notwendig, um die Identität des Dienstes zu verifizieren und eine sichere Kommunikation zu gewährleisten. - Einleitungspunkte (Introduction Points): Eine Liste von
Tor-Knoten
, die alsIntroduction Points
für denOnion Service
dienen. DieseIntroduction Points
sind spezielleTor-Relays
, die bereit sind, Verbindungsanfragen von Clients entgegenzunehmen und an denOnion Service
weiterzuleiten. Für jedenIntroduction Point
werden folgende Informationen angegeben:- Die Adresse des
Introduction Point
(in Form einerTor-Knoten-ID
). - Ein
Handshake-Key
, der vomOnion Service
verwendet wird, um die Kommunikation mit demIntroduction Point
zu sichern.
- Die Adresse des
- Signatur des Deskriptors: Der gesamte
Deskriptor
ist digital signiert. Diese Signatur wird mit dem privaten Schlüssel desOnion Service
erstellt und ermöglicht es dem Client, die Authentizität desDeskriptors
zu überprüfen. - Verschiedene Metadaten: Der
Deskriptor
enthält auch einigeMetadaten
, die für die Funktion des Dienstes und die Kommunikation notwendig sind. Dazu gehören:- Eine Versionsnummer des
Deskriptors
, die angibt, welche Version des Protokolls verwendet wird. - Ein Zeitstempel, der angibt, wann der
Deskriptor
erstellt wurde. - Eine Lebensdauer oder ein Gültigkeitszeitraum, der angibt, wie lange der
Deskriptor
gültig ist und wann er erneuert werden muss.
- Eine Versionsnummer des
- Kontrollinformation für Clients: Informationen, die dem Client helfen, die Verbindung zum
Onion Service
effizient herzustellen. Dies kann beispielsweise ein Hinweis darauf sein, wie die Verschlüsselung für die Verbindung erfolgen soll.
Hidden Service Directory (HSDirs)
Die Hidden Service Directories
(HSDirs) sind ein wesentlicher Bestandteil des Tor-Netzwerks und spielen eine zentrale Rolle bei der Organisation und Verfügbarkeit der Onion Services
. Diese speziellen Dienste fungieren als dezentrale, anonyme Verzeichnisserver, die die notwendigen Informationen bereitstellen, damit Clients auf die Onion Services
zugreifen können.
Die Hauptaufgabe der Hidden Service Directories
besteht darin, die Deskriptoren
der Onion Services
zu speichern. Diese Deskriptoren
enthalten wichtige Informationen über den Onion Service
, wie z.B. den öffentlichen Schlüssel
, die Introduction Points
und andere Metadaten, die notwendig sind, um eine Verbindung zum Onion Service
herzustellen.
Jeder Onion Service
berechnet auf Basis seiner .onion
-Adresse mehrere Hashes
, um zu bestimmen, welche Hidden Service Directories
(HSDirs) seine Deskriptoren
speichern sollen. Diese Hashes
werden verwendet, um die Deskriptoren
gleichmäßig und zufällig über das Netzwerk zu verteilen.
Wenn ein Client eine .onion
-Adresse eingibt, berechnet sein Tor-Client ebenfalls die entsprechenden Hashes
, um die richtigen Hidden Service Directories
zu finden, die den Deskriptor
des gewünschten Onion Service
speichern. Der Tor-Client wählt eines dieser Hidden Service Directories
und sendet eine Anfrage an dieses HSDir
, um den Deskriptor
abzurufen. Sobald der Deskriptor
heruntergeladen wurde, verwendet der Client die darin enthaltenen Informationen, um sich mit dem Onion Service zu verbinden.
Introduction Points
Introduction Points
sind Knoten im Tor-Netzwerk, die vom Onion Service
ausgewählt werden, um zwischen dem Client und dem Onion Service
zu vermitteln. Sie ermöglichen eine Verbindung zu einem Onion Service
, ohne dass der Client die tatsächliche IP-Adresse des Dienstes kennt.
Der Client wählt einen der Introduction Points
aus dem Deskriptor
aus und baut eine verschlüsselte Verbindung zu diesem auf. Über diese Verbindung sendet der Client eine Nachricht (INTRODUCE
Message), die eine verschlüsselte Nachricht für den Onion Service
enthält. Diese Nachricht enthält unter anderem Informationen darüber, wie der Service den Client kontaktieren kann, normalerweise durch Angabe eines Rendezvous Points
und anderer Metadaten. Der Introduction Point
sendet daraufhin eine INTRODUCE-ACK
Message an den Client zurück, die ihn darüber informiert, ob seine Anfrage zugestellt wurde oder dass seine Anfrage nicht erfolgreich war.
Der Onion Service
empfängt die INTRODUCE
Message vom Introduction Point
, entschlüsselt sie und entscheidet, ob er die Verbindung akzeptiert. Wenn ja, baut er eine Verbindung zum angegebenen Rendezvous Point
über einen separaten Tor-Circuit
auf. Der Client und der Onion Service
treffen sich am Rendezvous Point
, ohne dass einer von beiden die Identität oder IP-Adresse des anderen kennt.
Rendezvous Point
Der Rendezvous Point
ist ein normales Tor-Relay, das als Treffpunkt für den Datenverkehr zwischen einem Client und einem Onion Service
dient. Sowohl der Client als auch der Onion Service
bauen separate und anonyme Verbindungen zu diesem Rendezvous Point
auf, indem sie jeweils mehrere Tor-Relays durchlaufen.
Der Rendezvous Point
ist für den Client das letzte Relay in dieser spezifischen Tor-Verbindung, aber der Rendezvous Point
selbst kennt die Identität des Clients nicht, da der Client anonym durch mehrere Relays geroutet wird.
Die Verbindung des Onion Service
durchläuft ebenfalls mehrere Tor-Relays, bevor sie den Rendezvous Point
erreicht. Der Rendezvous Point
ist auch hier das letzte Relay in der Verbindung, kennt aber weder die Identität noch den Standort des Onion Service
, da die Verbindung ebenfalls über mehrere Relays anonymisiert wurde.
Ein Relay muss über eine stabile und gut erreichbare Verbindung zum Internet verfügen. Relays, die als Rendezvous Point
ausgewählt werden, sollten eine hohe Verfügbarkeit und eine zuverlässige Netzwerkverbindung bieten, um eine stabile Kommunikation zwischen Clients und Onion Service
zu gewährleisten. Relays, die als Rendezvous Point
fungieren, müssen im Konsensdokument
, das die Liste aller aktiven Tor-Relays enthält, aufgeführt sein. Nur in diesem Dokument aufgeführte Relays können als Rendezvous Point
ausgewählt werden.
Grafische Darstellung des Prozesses
Erläuterungen zu den einzelnen Phasen
Der Aufbau einer Verbindung eines Tor-Clients
zu einem Onion-Service
ist ein sehr komplexes Verfahren. Das liegt vor allem daran, dass das Tor-Netzwerk
sowohl die Identität des Tor-Clients, als auch die es Onion Service anonymisiert.
- Im ersten Schritt (in der Grafik rot dargestellt) wird bei der Erstellung eines
Onion Services
die.onion
-Adresse (xyz.onion
) generiert und derDeskriptor
in einHidden Service Directory (HSDir)
hochgeladen. ImDeskriptor
definiert derOnion Service
mehrereIntroducion Points (IPs)
, über die einTor Client
Kontakt zumOnion Service
aufnehmen kann. - Ruft der
Tor-Client
nun die.onion
-Adresse (xyz.onion
) einesOnion Services
auf, wird zuerst dasHidden Service Directory (HSDir)
ermittelt, welches denDeskriptor
desOnion Services
enthält. - Bei erfolgreicher Verbindung zum
Hidden Service Directory (HSDir)
lädt derTor-Client
denDeskriptor
desOnion Services
herunter. - Der
Tor-Client
kontaktiert einen der imDeskriptor
definiertenIntroduction Points (IP)
und stellt eine Verbindungsanfrage an denOnion Service
. Dabei gibt er einenRendezvous Point (RP)
an, an dem sich derTor Client
und derOnion Service
treffen können. DerIntroduction Point (IP)
leitet die Anfrage an denOnion Service
weiter. - Der
Onion Service
sendet demIntroduction Point (IP)
eine Bestätigung, dass er die Verbindung akzeptiert, die vomIntroduction Point (IP)
an denTor-Client
weitergeleitet wird. - Der
Tor-Client
und derOnion Service
treffen sich am vereinbartenRendezvous Point (RP)
und tauschen nun Daten aus.
Der Schlüssel zur Anonymität der beteiligten Kommunikationspartner ist die Tatsache, dass jede einzelne Verbindung, sowohl vom Tor-Client
als auch vom Onion Service
, über einen separaten Tor-Circuit
(eine Verbindungskette mit jeweils einem Entry-Point
, einem Middle-Relay
und einem Exit-Point
) geleitet wird. Somit kennen weder das Hidden Service Directory (HSDir)
noch der Introduction Point (IP)
oder der Rendezvous Point (RP)
die wahre Identität des Tor Clients
oder des Onion Services
. Sie kennen jeweils nur den Exit-Point
. Ebenso kennen weder der Tor Client
noch der Onion Service
die wahre Identität des anderen.