die raven homepage
Anonym im Internet mit Anon-Plattformen
Der TCP Onion-Router (Tor) und das Tor Netzwerk

Es folgt eine grobe und vereinfachte Darstellung des Tor Netzwerks, die auch dem kryptografisch oder technisch nicht versierten Benutzer einige markante Merkmale des Tor Netzwerkes vorstellt.

Eine detailierte Beschreibung des Tor Netzwerkes mit Darstellung der Schwächen und möglichen Angriffe auf das Tor Netzwerk bietet die Dokumentation des Tor Designs Tor: The Second-Generation Onion Router und die Präsentationen und Publikationen des Tor Projektleiters Roger Dingledine.

Antworten zu speziellen Fragestellungen finden sich in der TheOnionRouter/TorFAQ.

Das Tor Netzwerk

Tor (TCP basiertes Onion Routing) ist ein Netzwerk aus Hunderten (und hoffentlich bald Tausenden) über die ganze Welt verteilten Rechnern, auf denen das Tor Programm als Server (Onion Router) betrieben wird. Die Onion Router bilden zusammen mit den Tor Verzeichnisservern das Rückgrad des Tor Netzwerks, da über sie die Verbindungen der Tor Benutzer anonymisiert und verschlüsselt zu den jeweiligen Zielrechnern weitergeleitet werden. Von der Einhüllung der Datenpakete in mehrfache Verschlüsselungsschalen zur Anonymisierung und Verschlüsselung leitet sich der Begriff "Onion" (engl. für "Zwiebel") her.

Tor Router Karte

Tor Router Karte

Tor Router LegendeKarte der Onion Router weltweit und in Europa im März 2007. Die Karten stammen vom Tor Map Project.

Detailierte Informationen zu allen Tor Routern erhält man über die aufbereiteten Daten der Verzeichnisserver auf den Seiten Tor Node Status Informationen und TorStatus.

Die Onion Router bilden die Netzknoten (Nodes) des verteilten Tor Netzwerks, die sich miteinander über das TLS/SSLv3 (Transport Layer Security) Verschlüsselungsprotokoll verbinden. TLS/SSLv3 wird auch bei der Verbindung des lokalen Onion Proxys des Benutzers mit dem ersten Onion Router eingesetzt, d. h. die Verschlüsselung beginnt bereits auf dem ersten "Teilstück" der gesamten "Route" durch das Tor-Netz.

Spezielle Netzknoten mit hohem "Vertrauensstatus" übernehmen die Rolle von Verzeichnisservern, die von ihnen signierte Verzeichnisse speichern, die Daten bekannter Onion Router enthalten. Zu den Daten, die einen Onion Router beschreiben, gehört sein Kurznamen und seine aktuelle IP-Adresse, der Status (aktiv/inaktiv), die Funktion, die er als Eingangs-, Mittelsmann- oder Ausgangs-Netzknoten (Entry, Middleman oder Exit Node) im Tor Netzwerk wahrnimmt, Weiterleitungsrichtlinien und die öffentlichen RSA Schlüssel.

Nach jedem Start des Onion Proxys und in regelmäßigen Abständen kontaktiert der Onion Proxy des Benutzers mehrere Verzeichnisserver, um von den Verzeichnisservern ein aktuelles Verzeichnis zu allen Onion Routern zu erhalten, das bis zur nächsten Aktualisierung auf dem Rechner des Benutzers zwischengespeichert und nach jeder Aktualisierung durch das aktualisierte Verzeichnis ersetzt wird.

Anonymer Aufbau der Tor Verschlüsselungskette

Jeder Onion Router besitzt einen langlebigen Identitäts-Schlüssel. Mit dem Identitäts-Schlüssel signieren die Onion Router ihre TLS/SSLv3-Zertifikate und ihre Beschreibung, die sich im Verzeichnis wiederfindet und die Verzeichnisserver die Verzeichnisse.

Neben dem Identitäts-Schlüssel besitzt jeder Onion Router einen kurzlebigen Onion-Schlüssel, der in Zeitintervallen gewechselt wird.

Phase 1

Zu Beginn der Bildung einer Verbindungskette wählt der Onion Proxy (OP) aus dem Verzeichnis drei Tor Onion Router: Der erste Onion Router (TOR-1) dient als Eingangs-, der zweite Onion Router (TOR-2) als Mittelsmann- und der letzte Onion Router (TOR-3) als Ausgangs-Netzknoten innerhalb der Verbindungskette aus Tor Routern. Die drei Router werden zufällig zusammengestellt, so dass sich die Ketten ständig in ihrer Zusammensetzung ändern.

Der Onion Proxy bildet direkt nach jedem Start einige Verbindungsketten auf "Vorrat" und während seines Betriebs weitere Verbindungsketten. Jede Verbindungskette hat eine begrenzte Laufzeit, nach deren Ende die Verbindungskette verfällt und durch eine neue ersetzt wird. Während ihrer Laufzeit kann eine Verbindungskette für mehrere Verbindungen verschiedener Internetanwendungen zu verschiedenen Zielrechnern verwendet werden.

Phase 2

Der OP vereinbart mit TOR-1 eine TLS/SSLv3 verschlüsselte Verbindung. Dann sendet der OP an TOR-1 eine Anfrage zur Herstellung einer Tor Verbindung, die gleichzeitig Material zur Bildung eines gemeinsamen Sitzungsschlüssels per Diffie-Hellmann-Schlüsselaustausch enthält. Der komplette Inhalt der Anfrage geht OR1 verschlüsselt mit dessen RSA Onion-Schlüssel über die TLS/SSLv3 verschlüsselte Verbindung zu.

Phase 3

TOR-1 sendet an den OP die Bestätigung der Tor Verbindung zusammen mit Material für den gemeinsamen AES-128 Sitzungsschlüssel zurück, mit dem OP und TOR-1 anschließend die weiteren Daten verschlüsselt zueinander übertragen.

Eigentlich handelt es sich um zwei symmetrische Schlüssel, die aus dem gemeinsam vereinbarten Schlüssel erzeugt werden: Einen für die Verschlüsselung von Daten vom OP an TOR-1 und einen Schlüssel für die Verschlüsselung von Daten vom TOR-1 an den OP.

Phase 4

Jetzt, wo eine verschlüsselte Tor Verbindung zwischen dem OP und dem TOR-1 aufgebaut ist, sendet der OP an OR1 eine Aufforderung, die Tor Verbindung von TOR-1 zu TOR-2 zu erweitern. Diese Aufforderung enthält wieder Material für gemeinsame Sitzungssschlüssel, aber diesmal für OR2 und deshalb mit dem Onion-Schlüssel von TOR-2 verschlüsselt.

Phase 5

TOR-1 baut seinerseits eine TLS/SSLv3 verschlüsselte Verbindung zu TOR-2 auf und sendet darüber an TOR-2 die Aufforderung mit ihm eine Tor Verbindung herzustellen und das an TOR-2 verschlüsselte Schlüsselmaterial vom OP.

Daten aus denen Informationen hervorgehen würden, dass die Aufforderung und das Schlüsselmaterial vom OP stammen, gehen nicht an TOR-2. TOR-2 besitzt also nur von TOR-1 Identifikationsdaten (IP-Adresse), der OP bleibt TOR-2 unbekannt.

Phase 6

TOR-2 sendet an TOR-1 die Bestätigung der hergstellten Tor Verbindung zwischen TOR-2 und TOR-1 und das Material für die gemeinsamen Sitzungsschlüssel mit dem OP.

TOR-1 sendet an den OP die Bestätigung, dass die Tor Verbindung zwischen ihm und TOR-2 steht und das vom TOR-2 stammende Material für den gemeinsamen Sitzungschlüssel.

Phase 7

Die gleichen Vorgänge wie in Phase 4 - 6 wiederholen sich, ausgehend vom OP, für den dritten und letzten Onion Router TOR-3: TOR-2 stellt per TLS/SSLv3 verschlüsselter Verbindung eine Tor Verbindung zu TOR-3 her. Der OP und TOR-3 teilen sich gemeinsame Sitzungschlüssel.

Wie bei Phase 5 bleibt TOR-3 TOR-1 und der OP unbekannt, TOR-3 kennt nur TOR-2 (und den Zielrechner).

Das Resultat
Tor Schema 1

Vom Benutzer ausgehend, wurde mit dem Onion Proxy (OP) eine Verbindungskette aus drei Tor Routern gebildet, deren Zusammensetzung periodisch und zufällig wechselt: Mit dem TOR-1 Eingangs-, dem TOR-2 Mittelsmann- und dem TOR-3 Ausgangs-Router. Der TOR-3 Ausgangsrouter wird aus allen Ausgangsroutern danach ausgewählt, ob er den Port anbietet, der für die Inanspruchnahme des betreffenden Protokolls/Dienstes des Zielrechners benötigt wird — zum Beispiel Port 80 für HTTP Verbindungen zu einem Webserver.

Für alle Verbindungen, sowohl zwischen dem OP des Benutzers und TOR-1, als auch zwischen den Tor Routern wird zunächst eine TLS/SSLv3 verschlüsselte Verbindung aufgebaut, über die Schlüsselvereinbarungen und Datentransfers laufen.

Jeder Tor Router erweitert die Verbindungskette Schritt für Schritt zum nächsten Tor Router bis die Dreier-Kette steht. Dadurch "kennt" jeder Tor Router nur den unmittelbar vorangehenden und nachfolgenden Rechner: TOR-1 "kennt" nur den OP und TOR-2, TOR-2 "kennt" nur TOR-1 und TOR-3, TOR-3 "kennt" nur TOR-2 und den Zielrechner, der Zielrechner "kennt" nur TOR-3. Nur der OP bzw. der Benutzer "kennt" alle drei beteiligten Tor Router. Mit jeder schrittweisen Erweiterung wird gleichzeitig zwischen dem OP des Benutzers und jedem Tor Router ein separater gemeinsamer Sitzungsschlüssel für die spätere Verschlüsselung der Transferdaten vereinbart und zwischengespeichert.

Verschlüsselter Versand über die anonyme Tor Verbindungskette
Tor Schema 2
Phase 1

Eine Internetanwendung (z. B. Webbrowser, Instant Messaging, E-Mail, P2P Client) die mit einer SOCKS-Schnittstelle ausgestattet oder in einen SOCKS-Wrapper eingebunden ist, sendet ein Datenpaket, das für einen bestimmten Zielrechner bestimmt ist, an den Onion Proxy des Benutzers. Je nachdem, welche SOCKS Version die Internetanwendung unterstützt und wie SOCKS in der Internetanwendung implementiert ist, führt die Internetanwendung zuvor die Namensauflösung des Domainnamens des Zielrechners selbst durch und übergibt dem OP die IP-Adresse des Zielrechners oder überlässt die Namensauflösung vollständig dem Tor Ausgangsrouter.

Phase 2

Der OP des Benutzers verschlüsselt die Anfrage an den Zielrechner mit dem Sitzungsschlüssel (grün) mit TOR-3. Das Resultat wird anschließend mit dem Sitzungsschlüssel (blau) mit TOR-2 und abschließened mit dem Sitzungsschlüssel (rot) mit TOR-1 verschlüsselt. Um den Kern legen sich also schalenförmig in absteigender Reihenfolge für jeden Tor Router Verschlüsselungsschichten.

Phase 3

Das verschlüsselte Datenpaket wird über die TLS/SSLv3 verschlüsselte Verbindung (gelb) dem TOR-1 Eingangsrouter zugestellt. Da die äußerste Verschlüsselungsschicht mit dem Sitzungsschlüssel erstellt wurde, den auch TOR-1 besitzt, kann sie TOR-1 entschlüsseln und entfernt damit eine der Verschlüsselungsschalen. Eine weitere Entschlüsselung kann TOR-1 nicht durchführen, da die Verschlüsselungsschicht von TOR-2 folgt, die ja mit einem anderen Sitzungsschlüssel erzeugt wurde. Der Mittelsmannrouter TOR-2 ist deshalb der nächste Netzknoten, an den TOR-1 das verschlüsselte Datenpaket weitersendet. TOR-2 führt dann die gleiche Entschlüsselung seiner Verschlüsselungsschicht durch und sendet es an den Ausgangsrouter TOR-3 weiter, der die letzte Verschlüsselungsschicht um die Anfrage des Benutzers entfernt.

Phase 4

Der Ausgangsrouter TOR-3 führt die Namensauflösung des Domainnamens des Zielrechners durch, falls die nicht über die Internetanwendung des Benutzers bereits erfolgte und sendet bzw. empfängt die Anfrage des Benutzers und die Antwortinhalte des Zielrechners.

Sofern der Zielrechner keine Verschlüsselung des Datentransports anbietet oder der Benutzer des Onion Proxy nicht die verschlüsselte Variante des Datentransports bzw. Version des nachgefragten Dienstes angefragt hat, erfolgt die Verbindung zwischen dem Ausgangsrouter TOR-3 und dem Zielrechner unverschlüsselt und alle Daten werden in Klartextform übertragen.

Übertragene Daten in unverschlüsselter Klartextform können auf der Strecke TOR-3 - Zielrechner und auf dem TOR-3 Rechner selbst abgefangen, mitprotokolliert und eingesehen werden.

Aus diesem Grund ist es angeraten, für unverschlüsselte Verbindungen, über die sensible Daten übertragen werden, Tor nicht zu verwenden, bei der Verwendung verschlüsselter Verbindungen darauf zu achten, dass die Identität des Zielrechners (über Zertifikate, Fingerprints usw.) überprüft wird.

Zwei anschauliche Beispiele, die Gefahren bei der unsachgemäßen Nutzung von Internetanwendungen und Tor aufzeigen, bieten die Heise Meldungen Anonymisierungsnetz Tor "abgephisht" vom 10.09.2007 und Anonymisierungsnetz Tor "abgephisht" Teil 2 vom 21.11.2007.

Leider hat insbesondere das Experiment, über das in der ersten Meldung berichtet wurde und das breite Presseaufmerksamkeit erregte, zu Falschaussagen geführt, deren Aussage es ist, Tor "hätte Löcher" oder wäre "nicht vertrauenswürdig", die auf Unkenntnis der Tor Funktionen und Strukturen zurückzuführen sind. Jede unverschlüsselte und nicht authentifizierte Verbindung über das Internet mit Anwendungen, deren Absicherung durch den Anwender ungenügend durchgeführt wird, kann zu Daten- und Identitätsdiebstahl, erfolgreichen Phishing-Angriffen und abgefangenen Daten beitragen.

Phase 5

Die Datenpakete der Antworten des Zielrechners werden über die Tor Verbindungskette schrittweise zurück an den Benutzer gesendet. Dafür verschlüsselt der TOR-3 Ausgangsrouter die Daten mit seinem Sitzungsschlüssel, den er mit dem OP des Benutzers vereinbart hatte und sendet das verschlüsselte Datenpaket über die TLS/SSLv3 Verbindung zu TOR-2 zurück, der eine weitere Verschlüsselung mit seinem Sitzungsschlüssel durchführt und das Datenpaket an TOR-1 weiterschickt. TOR-1 legt mit seinem Sitzungsschlüssel die letzte Verschlüsselungsschicht um das bereits verschlüsselte Datenpaket und liefert es über die TLS/SSLv3 Verbindung mit dem OP des Benutzers an den OP aus, wo alle Verschlüsselungsschichten wieder entschlüsselt und die freigelegten Antwortdaten des Zielrechners an die betreffende Internetanwendung des Benutzers übergeben werden.

[ Inhalt | Top | Zurück | Weiter ]