Anonymität im Web ist ein Mythos. Vom Webserver mitgeloggte IPs und Zugriffzeiten reichen zur eindeutigen Nutzer-Identifizierung aus. JAP, der Java Anonymous Proxy, verspricht Abhilfe durch Mixen der Nutzerdaten und ist trotz seiner Komplexität äußerst einfach zu bedienen.
Wer beim Bäcker in einer fremden Stadt als Nicht-VIP sein Brot bar bezahlt, gibt auch keine Daten über sich preis. Niemand zeichnet seine Bewegungsdaten und Verhaltensmuster auf. Anonymität ist im Alltag eher die Regel als die Ausnahme. Das Internet hingegen erlaubt es, den Besucherverkehr auf Websites nahtlos zu überwachen: Ein standardmäßig konfigurierter Webserver loggt die IP des Besuchers und den Zeitpunkt des Zugriffs.
Damit lassen sich die Besucher eindeutig identifizieren und über eine Rückfrage bei deren Providern, die aus einem »whois«-Aufruf und der IP zu erkennen sind, auch ihre Daten ermitteln. Allerdings hat hier der Gesetzgeber aus Datenschutzgründen einige Hürden eingebaut. Nutzer, die mit fester IP surfen, sind über eine simple »whois«-Abfrage sowieso sofort identifiziert.
Wer seine Privatsphäre wahren möchte, muss relativ schwere Geschütze auffahren: so genannte Anonymisierdienste. Diese Dienste verschleiern mehr oder weniger effektiv die IP des Surfers und geben ihre eigene dem Webserver zum Logging an.
Web-basierte Anonymisierdienste
Eine ganz einfache Lösung sind Web-basierte Anonymisierdienste wie The Cloak [1], Guardster [2] oder Anonymization.net [3]. Als Ausgangspunkt einer anonymen Surftour dient die Webseite des Dienstes, auf der der Surfer in einem Eingabefeld die gewünschte URL eingibt. Anschließend ruft ein Programm auf dem jeweiligen Webserver die gewünschte Seite ab. Es analysiert häufig die gefundene Seite und ersetzt Links so, dass sie ebenfalls über den Anonymisierserver laufen. Anschließend liefert der Anonymisierdienst die gewünschte Webseite aus (Abbildung 1).
Solche Web-basierten Dienste haben jedoch diverse Nachteile: Ein erster ist das Vertrauen, denn der Nutzer weiß nicht, was der Dienst protokolliert und wie anonym er wirklich ist. Zweitens könnten unter Umständen Links, die beispielsweise ein Javascript generiert, nicht umgeschrieben worden sein: Er surft dann plötzlich doch wieder identifizierbar, ohne es aber zu merken. Dagegen bietet zum Beispiel The Cloak eine Option, sämtliche Javascript-Inhalte aus der besuchten Seite herauszufiltern.
Und zu guter Letzt: Der Weg zwischen dem eigenen Browser und dem Anonymisierdienst ist unverschlüsselt. Hier könnte also ein dazwischengeschalteter Host, zum Beispiel ein Zwangsproxy des eigenen Providers das Surfverhalten aktiv belauschen. Aus diesen Gründen bieten einige der Web-basierten Anonymisierer ihre Dienste auch verschlüsselt über HTTPS an, allerdings ist das nicht immer gratis.
Open Proxy
Die größten Schwierigkeiten, also das Parsen der HTML-Seite und Austauschen der Links, löst ein Proxy elegant: Hier wird der Browser so konfiguriert, dass er jeden HTTP-Request an den Proxy sendet. Der Proxy tritt dann gegenüber dem Zielserver als Kommunikationspartner auf (Abbildung 2).
Ein Proxy allein bringt allerdings noch keine Anonymität: So kennt der AOL-Proxy seine User. Besser geeignet sind so genannte Open Proxies, also Proxy-Server, die jeder nutzen kann. Sogar der US-Senat stellte, wenn auch versehentlich, einen solchen Server zur Verfügung [4]. Um jetzt den Surfer zu identifizieren, ist auch noch ein Blick in die Logfiles des Open Proxy und eine zusätzliche Anfrage beim Provider nötig.

Abbildung 1: Das Funktionsprinzip eines Web-basierten Anonymisierdienstes: Der Kommunikationspartner der Zielseite ist der Webserver des Dienstes – der Nutzer kann seine eigenen Verbindungsdaten verstecken.
Das Geheimnis, wer hinter einem vom Proxy gesandten HTTP-Request steckt, lüften manche Proxies freiwillig: Sie fügen einen HTTP-Header ein, in den sie die IP-Adresse des anfragenden Rechners verpacken. Allerdings protokollieren die wenigsten Webserver den Inhalt dieses Headers in ihren Logfiles.

Abbildung 2: Anonymität über einen Open Proxy: Der Proxy-Server ist der Gesprächspartner des Ziel-Webservers. Im Gegensatz zum Web-basierten Anonymisierer muss er die HTML-Seiten nicht umschreiben.
Das Problem der nicht verschlüsselten Übertragung löst aber auch ein Open Proxy nicht: Kann ein Angreifer die Kommunikation zwischen Proxy und Surfer belauschen, dann ist die Anonymität dahin.
Genau da setzt der Java Anonymous Proxy (JAP) der TU Dresden [5] an: Ein portabler, weil in Java geschriebener Proxy auf dem eigenen Rechner. Er verschlüsselt alle Anfragen und schickt sie an einen Mix, von dem sie – vermischt mit den Anfragen anderer Nutzer – über mehrere Mixe zu einem Proxy gelangen, der dann letztlich die Anfrage an den Webserver stellt. Ein Mix ist also eine Zwischenstation zum Vermischen der Nutzerdaten.
Damit gibt es nur noch zwei Punkte, an denen eine Klartext-Kommunikation belauscht werden kann: Auf dem eigenen Rechner und zwischen dem Proxy und dem Webserver. Für die Sicherheit der eigenen Maschine ist jeder Nutzer mit Root-Rechten selbst verantwortlich, wer sich hier belauschen lässt, hat zunächst gewiss andere Sorgen.
Die Mischung macht’s
Die Unterhaltung zwischen dem Proxy und dem besuchten Webserver ist effektiv anonym, wenn mehrere Nutzer den Proxy verwenden. Denn durch die Mischung kann niemand mehr die einzelne Anfrage einem Surfer zuordnen, wenn sich der Besucher nicht auf anderem Wege doch noch – freiwillig oder nicht – zu erkennen gibt (siehe Kasten “Cookies und Anonymität”).
|
Cookies und |
|---|
|
Der JAP bietet zwar ein Höchstmaß an Anonymität, aber durch unbedachten Umgang mit Cookies kann die mit viel Aufwand erkaufte Privatsphäre schnell wieder verloren gehen: Viele Webseiten setzen Cookies, über die sie wiederkehrende Besucher identifizieren. Daher weiß zum Beispiel Amazon, welche Bücher es empfehlen soll. Solange Cookies nur beim anonymen Surfen über den JAP gesetzt wurden, bleibt das Problem überschaubar. Sobald man aber entweder Nutzerdaten angibt oder Cookies aus nicht anonymisierten Sitzungen weiter im Browser bereitstehen, ist der mühsam erzeugte Schutz des JAP dahin. Jetzt vermag der entfernte Webserver den Nutzer trotz des Anonymisierdienstes zu identifizieren. Einige Maßnahmen helfen gegen dieses Risiko: Einmal kann man zum anonymen und zum “öffentlichen” Surfen zwei verschiedene Browser installieren. Dadurch werden die Cookies nicht gemischt, dieses Identifikationsrisiko sinkt. Außerdem verringert sich das Risiko der Verwechslung: Anhand des Browsers kann der Surfer leicht erkennen, ob er anonym unterwegs ist oder nicht. Gültigkeitsdauer beschränkenDa viele Webseiten Cookies benötigen, um korrekt zu funktionieren, sollten sie nicht ganz deaktiviert sein. Die meisten Browser bieten aber die Option, die Gültigkeit von Cookies auf eine Browser-Session zu beschränken. Schließt der Anwender den Browser, löscht er die Cookies – und vorbei ist es mit der versehentlichen Identifikation. Lösungen wie der Cookiecooker [12] sind zwar gut geeignet, um die Cookies von Werbebannern durcheinander zu wirbeln, können einem aber auch versehentlich zu falschen Identitäten führen. Zwar implementiert Cookiecooker dagegen einige Schutzmaßnahmen, doch besteht immer die Gefahr, versehentlich eine fremde Session zu übernehmen. Unabhängig vom Einsatz eines Anonymisierdienstes ist es fast immer empfehlenswert, es bestimmten Seiten zu verbieten, Cookies zu setzen. Das sind die Seiten der großen Werbebanner-Anbieter. Denn die schicken mit ihrem Banner ein Cookie mit und können damit den Weg des Surfers durchs Netz verfolgen. Adserver haben Cookie-VerbotEin Cookie darf zwar immer nur jener Server lesen, der es gesetzt hat, aber anders als der Webserver ist der Adserver jedes Mal derselbe. So lassen sich mit relativ geringem Aufwand Surfprofile eines Nutzers generieren. Schutz davor bieten die meisten Browser: Dort lässt sich einstellen, dass Cookies von bestimmten Servern einfach nicht akzeptiert werden. Passende Listen von Adservern liefert das Internet, zum Beispiel [13]. |
Zudem hat sich JAP hohes Vertrauen erarbeitet: Mehreren Versuchen von Kriminalämtern, die Nutzungsdaten zu beschlagnahmen, widersetzte sich sein Betreiber gerichtlich und gewann. Denn das Gesetz verpflichtet niemanden Daten zu speichern, die er nicht braucht. Da JAP kostenlos ist, muss er keine Nutzungsdaten zu Abrechnungszwecken protokollieren [6].
Mix-Kaskaden schützen den Nutzer zusätzlich vor neugierigen Mix-Betreibern: Mixe vermischen die Datenströme von mehreren Nutzern und sehen sie vor allem auch nur verschlüsselt. Das macht Lauschen de facto unmöglich.

Abbildung 3: Wie in vielen verschiedenen Briefumschlägen wandert die Nachricht für jeden Mix gesondert verschlüsselt durch die Mix-Kaskade. Das erhöht die Anonymität.
Blick hinter die Kulissen
Das Grundprinzip ist simpel: Der Proxy auf dem eigenen Rechner verschlüsselt die Nachricht zunächst so, dass der letzte Mix sie entschlüsseln kann. Das Chiffrat nimmt er und verschlüsselt es für den vorletzten Mix. Das Ergebnis wird wiederum für den davor liegenden Mix verschlüsselt verpackt und dies wieder für den davor und so weiter.
Entschlüsselt jetzt ein Mix in der Kaskade die an ihn gerichtete Nachricht, sieht er nur die chiffrierte Nachricht für den nächsten Mix. Da alle Mixe unterschiedliche Schlüssel verwenden, ist dadurch ein hohes Maß an Vertraulichkeit gewährleistet. Es ist also so, als stecke die Nachricht in mehreren undurchsichtigen Briefumschlägen. Jeder Mix kann jeweils nur einen Umschlag – den äußersten – öffnen. (Abbildung 3)
Daraus ergibt sich gleich noch ein weiterer Vorteil: Da durch das Entschlüsseln die ausgehende Nachricht anders aussieht als die eingehende, ist es unmöglich, die jeweiligen Pakete einander zuzuordnen. Selbst wenn ein Angreifer den Datenstrom eines Mix vollständig belauscht oder einen Mix mitten in der Kette unter seine Kontrolle bringt, kann er mit den erlauschten Daten nichts anfangen. Da auf einer Kaskade stets mehrere Pakete unterschiedlicher Surfer unterwegs sind, werden die Pakete beim Mixen durcheinander gewirbelt – somit sind auch aus der Reihenfolge der Daten keine Rückschlüsse mehr möglich.
Anders als bei Nachbarn, die mit der Feststellung “Mei, da ham\’s awa a großes Packerl kriagt” das vom Postboten bei ihnen abgegebene Paket dem Empfänger in die Hände drücken und schon mutmaßen, was denn so groß sein kann, gibt es die Chance beim JAP nicht: Er zerlegt alle Daten in exakt 998 Byte große Pakete und füllt zu kleine mit Zufallszahlen auf.
Genau wie PGP oder SSL setzt JAP auf eine Mischung von symmetrischer und asymmetrischer Verschlüsselung [8] für die Kommunikation zwischen Mix und lokalem Proxy. Die Nachrichten an die Mixe verschlüsselt JAP mit einem zufällig erzeugten symmetrischen Sitzungsschlüssel. Beim ersten Kontakt wird dieser symmetrische Schlüssel dann asymmetrisch mit dem öffentlichen Schlüssel des jeweiligen Mix verschlüsselt.
Standardgrößen
Relativ kunstvoll ist der Datenaustausch zwischen JAP und Mix und zwischen den Mixen untereinander geregelt. Wegen der festgesetzten Standardpaketgröße von 998 Bytes definieren unterschiedliche Headerflags in einem Paket das jeweilig gültige Paketformat:
Am wichtigsten ist die 32 Bit lange Kanal-ID, die das Mix-Paket einem so genannten Mixkanal zuordnet. Die Kanal-ID belegt immer die ersten 4 Byte eines Mix-Pakets. Danach folgen 2 Byte, von denen 5 Bit derzeit für Flags genutzt sind, die im Wesentlichen den Aufbau des folgenden Datenpakets beschreiben. Die restlichen 11 Bit sind für mögliche künftige Erweiterungen reserviert. Über die Kanal-ID ist die Verbindung zwischen einem JAP und einem Mix oder zwischen zwei Mixen eindeutig identifiziert.
Der erste Verbindungsaufbau setzt das Open-Flag (Bit 45) und bestimmt damit eine neue, zufällige Kanal-ID. Der neue Kanal braucht einen symmetrischen Schlüssel, der steht, asymmetrisch mit RSA verschlüsselt, in den ersten 128 Byte des Datenpakets. Der Rest das Pakets ist symmetrisch AES-verschlüsselt.
Darin stecken dann die Nutzdaten. Sie verfügen wiederum über einen 3-Byte-Header, der ihre genaue Länge enthält (2 Byte) und den Nutzdatentyp (1 Byte) angibt. Das kann zum Beispiel FTP oder HTTP sein. Dem Typ entsprechend sucht der letzte Mix der Kaskade einen geeigneten Proxy.
Interessant ist der asymmetrische Teil: Dessen erste 16 Byte enthalten den 128-Bit-Schlüssel zur symmetrischen Verschlüsselung für den jeweiligen Mix. Damit der nächste Mix seinen Schlüssel erfährt, werden alle Daten im Paket um 16 Byte nach links geschoben und das Datenpaket hinten mit zufälligen 16 Byte wieder auf die Standardlänge ergänzt. Der Mix verschlüsselt jetzt wieder die ersten 128 Byte mit dem öffentlichen Schlüssel des nächsten Mix. Ist das Open-Flag nicht gesetzt, entfällt der Schlüsseltausch. Das vergrößert den für die Nutzlast zur Verfügung stehenden Anteil des Pakets.

Abbildung 4: Ein Klick auf »Ein« startet den Anonymisier-Proxy JAP. Der Grad der Anonymität hängt von der Zahl der gleich-zeitigen Nutzer ab: Je mehr surfen, desto besser ist die Durchmischung der Pakete.
Zum Abbau einer Verbindung setzt ein Mix im Header das Close-Flag und füllt den Datenteil mit 992 Byte Zufallsdaten. Erhält ein Mix ein solches Paket, vergisst er die Kanal-ID und den zugehörigen symmetrischen Schlüssel. Der JAP erkennt an dem Paket, dass alle Daten gesendet wurden, und beendet die TCP-Verbindung zum Browser [9]. Damit ein Angreifer keine Chance hat, aus den Headerdaten Rückschlüsse auf das verwendete Paket zu ziehen, verschlüsseln die Mixe diese zusätzlich.
Installation
Trotz dieser Komplexität sind die Installation und Benutzung einfach. Man lädt sich den zur eigenen Java-Version passenden JAP von [5] herunter. Die eigene Java-Version verrät das Kommando:
java -version
Anschließend startet der JAP nach einen Aufruf von
java -jar JAP.jar &
ohne Probleme, wenn eine grafische Benutzeroberfläche vorhanden und die Umgebungsvariable »DISPLAY« passend gesetzt ist (Abbildung 4).
Was jetzt noch zu tun verbleibt, ist die Anpassung der Proxy-Konfiguration (Abbildung 5). In der Standardeinstellung lauscht der JAP auf Port 4001 und lässt nur Anfragen von »localhost« zu. Das soll den Missbrauch verhindern. Wer im lokalen Netz nur einen JAP installieren möchte, den alle anderen Rechner nutzen dürfen, der aktiviert zusätzlich noch den »Forwarder«.
Kaskadenwahl
Die weiteren Einstellungen unter dem Button »Einstellungen« oder »Details« sind selbsterklärend. Die einzige Frage, die sich jetzt dem JAP-Neuling noch stellt, ist die nach der besten unter den auswählbaren Kaskaden.
Von ihr hängt der Grad der Anonymität ab: Je mehr Benutzer gleichzeitig in ein und derselben Kaskade unterwegs sind, des-to mehr Pakete werden durcheinander gewirbelt, desto schwieriger ist es, durch Beobachtung der Kaskade doch noch Rückschlüsse auf das individuelle Surfverhalten zu treffen. Andererseits sinkt die Surfgeschwindigkeit mit zunehmender Nutzerzahl. Die notwendigen Informationen gibt der JAP aber über seinen Info-Service aus (Abbildung 6). Er enthält eine Liste der aktuell verfügbaren Mix-Kaskaden und deren Performance.

Abbildung 5: Im Browser ist der Proxy schnell eingerichtet. Den Standardport 4001 kann man über die Einstellungen im JAP beliebig umkonfigurieren.
Aus Sicherheitsgründen prüft der im JAP enthaltene Client natürlich, ob diese Liste korrekt signiert ist. Sonst könnte ein Angreifer ja eine von ihm kontrollierte Kaskade einschleusen. Aus Nutzersicht sehr angenehm: Viele der Kaskaden sind neben einem eigenen Port auch über die Ports 443 beziehungsweise 80 erreichbar. Das sind Ports, die auf den meisten Firewalls freigegeben sind. So funktioniert JAP auch hinter restriktiv konfigurierten Firewalls problemlos.

Abbildung 6: Der Infoservice liefert eine jederzeit aktuelle Liste der verfügbaren Mix-Kaskaden. So ist es leicht, zwischen Anonymität und Geschwindigkeit zu wählen. Wichtig zu wissen: Nicht alle Kaskaden lassen sich über Standardports erreichen.
Schöner Nebeneffekt
Als Nebeneffekt lässt sich damit der JAP auch missbrauchen, um Seiten zu erreichen, die eine Firewall eigentlich sperrt: Manche Webserver lauschen auf Port 8080 oder 81, die Firewalls häufig blockieren. Mit JAP ist das kein Problem, denn die verbotene Anfrage stellt erst der Proxy hinter den Mixen.
Für gelegentliche FTP-Downloads ist das ebenfalls angenehm: Wegen der umständlichen Konfiguration lassen viele Firewalls gar kein FTP mehr durch. JAP hingegen schon. Damit steht ein bequemer, wenn auch langsamer Tunnel für FTP zur Verfügung. IRC oder SMTP-Anfragen hingegen filtert JAP gnadenlos aus. Das ist auch gut so, denn sonst wäre er schon längst als Werkzeug von Spammern in Verruf gekommen.
Für Rechner ohne grafische Oberfläche gibt es ebenfalls eine Möglichkeit, JAP in Betrieb zu nehmen. Dazu kompiliert sich der Anwender die in C++ geschriebene Mix-Software und installiert sie. Diese Software verfügt über eine Option, um selbst als Proxy zu arbeiten. Eine ausführliche Anleitung ist auf [10] zu finden. Im Prinzip kann damit jeder, der eine Selbstverpflichtungserklärung unterschreibt, Mitbetreiber einer Mixkaskade werden.
Einfacher geht’s nicht
Auch eine einfache Möglichkeit zum Testen der eigenen Konfiguration ist vorgesehen: Unter [11] stehen verschiedene Links zur Verfügung, mit denen man leicht prüfen kann, ob der JAP korrekt installiert ist.
Verglichen mit der relativ aufwändigen Technik, die hinter dem Anon-Dienst steckt, ist der JAP schnell und problemlos installiert. Durch die einfache Benutzeroberfläche und die klare Benutzerführung ist die Bedienung ein Kinderspiel und setzt keine speziellen Kenntnisse voraus. So kann jeder ohne großen Aufwand anonym surfen.
Fazit
Damit ist die Lösung nicht nur alltags-, sondern auch für alle Nutzer tauglich: Gerade an typische Bedienfehler haben die Entwickler gedacht. So erinnert beim Beenden des JAP ein Dialogfenster daran, den Proxy wieder zurückzusetzen. Bei deaktiviertem Anonymisierdienst, aber noch laufendem Proxy warnt eine eingeblendete Seite vor dem nicht anonymen Surfen.
Der Anon-Dienst der TU Dresden kapselt sehr effektiv die durchdachte und eigentlich komplexe Lösung vor dem Anwender und bietet somit Anonymität auf hohem Niveau ohne großen Aufwand. Die Betreiber weisen trotzdem darauf hin, dass nach wie vor Angriffe auf das System möglich sind, und entwickeln es entsprechend weiter. (uwo)
|
Infos |
|---|
|
[1] The Cloak: [http://www.the-cloak.com] [2] Guardster: [http://www.guardster.com] [3] Anonymization.net: [http://www.anonymization.net] [4] Proxy des US-Senats: [http://online.securityfocus.com/news/1780] [5] Anonymisierdienst der TU Dresden: [http://anon.inf.tu-dresden.de] [6] JAP und die Strafverfolgung: [http://anon.inf.tu-dresden.de/strafverfolgung/index_de.html] [7] Friedrich Ludwig Bauer, “Kryptologie”: Springer 1994 [8] Jörg Schwenk, “Sicherheit und Kryptographie im Internet”: Vieweg Verlag 2002 [9] Stefan Köpsell, “Anondienst – Design und Implementierung”: [http://anon.inf.tu-dresden.de/develop/Dokument.pdf] [10] JAP auf der Kommandozeile: [http://anon.inf.tu-dresden.de/develop/commandline_jap.html] [11] Anonymitätstest: [http://anon.inf.tu-dresden.de/anontest/test.html] [12] Cookiecooker: [http://cookie.inf.tu-dresden.de/] [13] Listen bekannter Adserver: [http://pgl.yoyo.org/adservers/], [http://www.geocities.com/spywarekilla/spyware_blacklist.html] |





