Datenaustausch mit Freenet

Technischer Datenschutz Teil 5

Der folgende Beitrag ist vor 2021 erschienen. Unsere Redaktion hat seither ein neues Leitbild und redaktionelle Standards. Weitere Informationen finden Sie hier.

Durch die Vorrats- und Verbindungsdatenspeicherung wird der Datenschutz im Internet weiter ausgehöhlt. Über technische Maßnahmen kann ein entsprechender Schutz jedoch wiederhergestellt werden. Hier soll Freenet als Beispiel für ein in sich geschlossenes Netzwerk dienen, das seit der Version 0.7 sogar als Darknet organisiert ist.

Das Freenet-Projekt, das nicht mit dem gleichnamigen deutschen Zugangsprovider verwechselt werden sollte, ist eines der ältesten Anonymisierungsdienste für das Internet. Die Erstveröffentlichung im Jahre 2000 rief ein großen Medieninteresse hervor, auch in Telepolis. Während bei TOR die anonyme Nutzung von Internetdiensten im Vordergrund steht, und diese Nutzung auch bei I2P möglich ist, ist Freenet ein komplett abgeschlossenes Netzwerk: Daten werden nur innerhalb dieses Netzwerkes ausgetauscht - eine wie auch immer geartete Gateway-Lösung (beispielweise zur anonymen Nutzung des World Wide Web) ist nicht möglich. Das Augenmerk der Entwickler gilt im Vergleich zu anderen zum einen der Anonymität der Bereitsteller von Informationen und auch der Persistenz der bereitgestellten Informationen, so dass einmalig eingestellte Daten auch dann verfügbar sind, wenn der Einsteller nicht mehr mit dem Netzwerk verbunden ist.

Die Hauptseite des Browser-Interface

Freenet ist in Java programmiert und damit auf allen Plattformen verfügbar, auf denen eine Laufzeitumgebung installiert werden kann, beispielsweise Windows, MacOS, GNU/Linux, *BSD und Solaris. Während jedoch bei TOR ein zentraler Server die Verbindung der Knoten im Netzwerk koordiniert oder bei I2P die Knoten automatisch untereinander Verbindungen aufbauen, ist es bei Freenet seit Version 0.7 nötig, dass diese vom Nutzer selbst eingefügt und als vertrauenswürdig verifiziert werden. Dies kann entweder manuell über den Austausch der zum Verbindungsaufbau notwendigen Informationen geschehen, oder aber über einen Chatbot, der ebenfalls von den Entwicklern bereitgestellt wird und in der Skriptsprache Python geschrieben ist. Damit ist es Angreifern nicht möglich, IP-Adressen von vielen Teilnehmern am Netzwerk zu sammeln. Jeder Nutzer erhält nur die IP-Adressen der Nachbarknoten, deren Integrität er überprüfen kann. Eine weitere Änderung in der Version 0.7 ist der Umstieg von TCP- auf UDP-Verbindungen, was das Umgehen von Firewalls und damit deren Konfiguration erleichtert.

Eine Liste von Nachbarn im Netzwerk, die durch den Chatbot eingefügt wurden.

Daten im Netzwerk werden mit Hilfe eines Schlüsselwertes freigegeben, der sich im einfachsten Fall (bei statischen Daten) aus dem Hash-Wert des Inhalts ergibt (CHK = Content Hash Key). Desweiteren können dynamische Daten eingestellt werden, die nur vom ursprünglichen Anbieter geändert werden können (SSK = Signed Subspace Key). Diese werden asymmetrisch mit einem zufällig erzeugten Schlüssel signiert und enthalten häufig Zeiger auf CHK-Daten. Alle Daten werden nicht nur auf dem Rechner des Anbieters gespeichert, sondern auch verschlüsselt auf Rechnern von verbundenen Knoten. Der Nutzer kann nicht steuern, welche Daten auf seinem Computer gespeichert werden - was auch kritisiert wird, da die Nutzer auch ihnen unliebsame Daten auf dem Rechner vorrätig halten, beispielsweise Pornografie (wenn auch nur in verschlüsselter, von ihnen selbst nicht lesbarer Form).

Anfragen und Uploads werden mit einem HTL (Hops To Live) versehen, der einen Wert bis zu 20 annehmen kann. Sollten nach einem Weg über diese Anzahl von Knoten die Daten nicht gefunden werden, so wird davon ausgegangen, dass sie im Netzwerk nicht vorhanden sind. Bezüglich der Uploads wird bei Erreichen der HTL-Zahl angenommen, dass die Daten nun dauerhaft vorhanden sind. Bei einem empfangenen Upload mit einem HTL von 3 werden die Daten an benachbarte Knoten mit einem HTL von 2 weitergeleitet, bei 1 nicht mehr. Sollte jemand die Daten abrufen wollen, so werden diese mit einem bestimmten HTL angefragt (z.B. 10). Die Nachbarn fragen weiter mit einem HTL von 9 usw.

Der wichtigste Teil von Freenet ist das Routing von Daten im Netzwerk. Im Gegensatz zu AntsP2P und MUTE, wo Anfragen zunächst an alle benachbarten Knoten gestellt werden, hat Freenet einen ausgefeilteren Algorithmus zu bieten: Kann ein Rechner die Anfrage nach einem Schlüssel beantworten, so wird davon ausgegangen, dass dieser Anfragen nach einem ähnlichen Schlüssel ebenfalls beantworten kann. Dadurch spezialisieren sich die einzelnen Knoten auf bestimmte Schlüsselbereiche, die sie bei Weiterleitungen lokal speichern. Im Rahmen des Google Summer of Code soll dieses System ebenso verbessert werden wie die Antwortzeiten von Knoten und die Prozentwerte der erfolgreichen Anfragen.

Ist Freenet gestartet, lässt es sich ganz einfach über den Browser steuern. Eine Suche nach Daten ist aufgrund der Schlüsselstruktur nur sehr schwierig zu implementieren und wird wohl noch länger auf sich warten lassen. Es gibt einige Verzeichnisse von Daten im Netzwerk, die dann auf eine Kurzbeschreibung der Daten hinter den Schlüsseln enthalten. Alternativ können Nutzer auf anderen Wegen, z. B. E-Mail, Freenet-Schlüssel austauschen.

Eine normale Situation: Keiner der verbundenen Knoten hat eine Datei vorrätig, sie kann allerdings im Hintergrund heruntergeladen werden

Sicherheit im Netzwerk

In der Theorie klingt das Darknet-Konzept bei Freenet sehr gut: Man verbindet sich nur mit Leuten, denen man vertraut und tauscht auch nur mit ihnen Daten aus. In der Praxis ist es aber so, dass dies kaum in dieser Form abläuft: Man baut die Verbindungen zu Rechnern auf, die man über den o.a. Bot gefunden hat bzw. mit Bots anderer Nutzer oder tauscht die notwendigen Informationen über IRC aus.

Ein hoher HTL-Wert kann dazu dienen, einen benachbarten Knoten als ursprünglichen Anfrager zu identifizieren. Ein HTL von 20 zeichnet diesen eindeutig aus, beim Verbinden mit vertrauenswürdigen Rechnern stellt dies jedoch kein Problem dar. Es mag dennoch sinnvoll erscheinen, diesen Wert zu reduzieren - was jedoch zu einer höheren Anzahl an (scheinbar) nicht verfügbaren Daten führt. Ein dem Onion-Routing von TOR verwandtes Konzept ist angedacht, um Anfragen über einen anderen Knoten im Netzwerk zu starten, der wiederum die Identität des eigentlichen Anfragers nicht kennt, ebenso eine Änderung des HTL-Systems, das Wahrscheinlichkeiten zur Änderung der Werte verwendet.

Für Gelegenheitsnutzer ist die Einstellung schwer zu ändern

Wird Freenet installiert, so ist es als automatisch gestarteter Dienst verfügbar. Die Umstellung auf einen manuellen Start ist zwar über den Befehl services.msc möglich, jedoch für einen unerfahrenen Nutzer nicht ohne Weiteres ersichtlich. Möchte man Freenet nur gelegentlich nutzen, so startet es bei jedem Bootvorgang. Es taucht nicht in der Symbolleiste auf, ist auf den ersten Blick also nicht wirklich als gestartet erkennbar. Ein Verhalten, das trotz der grundsätzlichen Seriosität des Projekts an den Betrieb von Botnetzen erinnnert - zumal es nur in den Infrequently Asked Questions angesprochen wird.