Enter The Freenetrix
The Freenet Help Site
Enter The Freenetrix
Licences used on this wiki
Welcome admin to Freenet WikiServer
Edit Page - Diff - Revisions - Title Search - Preferences - Bottom
 
Das Freenet Project

Das Freenet ist ein weltweites Netz aus Rechnern, dessen Ziel darin besteht, Zensur zu vereiteln und anonymen Austausch von Informationen zu ermöglichen.

Dieses Ziel soll durch vier Prinzipien erreicht werden: Dezentralisierung, Redundanz, Verschlüsselung und dynamisches Routing.

Freenet ist nach Einstufung der Entwickler eine Beta-Version und wird dies auch noch lange nach 2005 bleiben.

Inhaltsverzeichnis
[1] Funktionsweise
[2] Benutzung
[3] Anwendungsgebiet
[4] Probleme
[5] Geschichte
[6] Kontroverse
[7] Technische Einzelheiten
7.1 Schutz vor übermäßigen Anfragen
7.2 Routing
 7.2.1 Altes Routing
 7.2.2 Next Generation Routing (NGR)
  7.2.2.1 Data Reply Abschätzung
  7.2.2.2 Umgang mit unterschiedlichen Dateigrö ßen
  7.2.2.3 Verfahren, wenn die Daten nicht gefunden wurden
  7.2.2.4 Umgang mit fehlgeschlagenen Verbindungen
  7.2.2.5 Gewonnenes Wissen
  7.2.2.6 Vorteile von NGR
[8] Zukunft
8.1 HTL
8.2 Protokoll
8.3 Schlüssel
8.4 Verschlüsselung
8.5 Pre-mix Routing
8.6 I2P
8.7 Projektseite
8.8 Riesige Speicher
8.9 Passive und inverse passive Anfragen
8.10 Steganografie
8.11 Unterstützung freier JVM (Java Virtual Machine)
[9] Software für Freenet
9.1 Freesite Insertion Wizard (FIW)
9.2 Fishtools
9.3 Freenet Utility for Queued Inserts and Downloads (FUQID)
9.4 FCPTools
9.5 Freenet Tools
9.6 Frost
9.7 Freenet Message Board (FMB)


[1] Funktionsweise
Alle Inhalte werden in so genannten Schlüsseln gespeichert. Der Schlüssel ergibt sich eindeutig aus dem Hash-Wert des enthaltenen Inhalts und hat vom Aussehen her nichts mit diesem zu tun. (Zum Beispiel könnte eine Textdatei mit dem Grundgesetz den Schlüssel YQL haben.)

Jeder Teilnehmer speichert nicht etwa nur die Inhalte, die er selbst anbietet. Stattdessen werden alle Inhalte auf die verschiedenen Rechner – die so genannten Knoten (engl. nodes) – verteilt. Die Auswahl, wo eine Datei gespeichert wird, erfolgt durch Routing. Jeder Knoten spezialisiert sich mit der Zeit auf bestimmte Schlüsselwerte.

Die Speicherung auf dem Rechner erfolgt verschlüsselt und ohne Wissen des jeweiligen Nutzers. Das ist nötig, damit Freenet-Nutzer nicht für die Inhalte zur Verantwortung gezogen werden können, die sie für das Netz bereithalten.

Wenn eine Datei aus dem Freenet heruntergeladen werden soll, wird sie mit Hilfe des Routing-Algorithmus gesucht. Die Anfrage wird an einen Knoten geschickt, dessen Spezialisierung dem gesuchten Schlüssel möglichst ähnlich ist.

Beispiel: Wir suchen den Schlüssel HGS. Wir sind mit anderen Freenet-Knoten verbunden, die die folgenden Spezialisierungen haben: ANF, DYL, HFP, HZZ, LMO. Wir wählen HFP als Adressaten unserer Anfrage, da dessen Spezialisierung dem gesuchten Schlüssel am nächsten kommt.

Wenn der Adressat den Schlüssel nicht in seinem Speicher hat, wiederholt er die Prozedur, als ob er selbst den Schlüssel haben wollte: Er schickt die Anfrage weiter an den Knoten, der seiner Meinung nach am besten darauf spezialisiert ist.

Und so geht es weiter. Wenn ein Knoten schließlich über die gesuchte Datei verfügt, wird diese vom Fundort zum ursprünglichen Anfrager transportiert. Aber dieser Transport erfolgt über alle an der Anfrage-Kette beteiligten Knoten. Diese Gestaltung ist ein zentrales Merkmal von Freenet. Sie dient dazu, die Anonymität von Quelle und Empfänger zu wahren. Denn so kann man, wenn man selbst eine Anfrage erhält, nicht wissen, ob der Anfrager die Datei selbst haben oder nur weiterleiten will.

Wenn die Datei übertragen wird, speichern einige Rechner eine Kopie in ihrem Speicher. Beliebte Dateien gelangen so auf viele Rechner im Freenet-Netz: Das bietet Anonymität, weil die Dateien noch schwieriger auf den ursprünglichen Anbieter zurückgeführt werden können, wenn sie an mehreren Stellen lagern. Und natürlich steigt so die Wahrscheinlichkeit, das weitere Anfragen nach dieser Datei schneller erfolgreich sind.

Eine Datei ins Freenet hochzuladen, funktioniert ganz ähnlich: Freenet sucht auch hier den Knoten, dessen Spezialisierung dem Schlüssel am nächsten kommt. Das ist sinnvoll, damit die Datei dort ist, wo auch die Anfragen nach solchen Schlüsseln hingeschickt werden.

Da es beim Hochladen nicht darum geht, nach einigen Weiterleitungen jemanden mit den Daten zu finden, wird vorher ein Wert gesetzt, wie oft weitergeleitet wird.


Weitergehende Informationen sind im Abschnitt Technische Einzelheiten eingeordnet.


[2]Benutzung
Die Benutzung des Freenet ist mit der des World Wide Web (WWW) vergleichbar. Mittels eines beliebigen Browsers kann, wie vom World Wide Web gewohnt, im Freenet gesurft werden. Das Programmmodul FProxy arbeitet als lokales Server-Programm und ist im Allgemeinen unter http://localhost:8888/ erreichbar. Von dieser Einstiegsseite aus kann man einzelne Freenet-Adressen anfordern oder hochladen, außerdem sind einige Links zu so genannten Freesites enthalten.

Eine Freesite stellt für Freenet in etwa das gleiche dar, was Websites für das WWW darstellen. Es sind Dokumente, die durch das Freenet-Gateway zugänglich werden. Sie können Links zu anderen Freesites oder zu sonstigen Daten beinhalten, welche durch einen Freenet-Schlüssel erreichbar sind. Auf der Hauptseite des Freenet-Gateways werden Links zu einer kleinen Anzahl Freesites bereitgestellt, die als erste Anlaufstelle im Freenet dienen.

Allerdings dauert das Laden von Inhalten zu Beginn sehr lange, falls die Dateien noch nicht im lokalen Cache enthalten sind, da der Knoten sich erst ins Freenet-Netzwerk integrieren muss. Erst durch die Integration lernt der Knoten, über welche anderen Knoten am besten Anfragen versendet werden können.

Das Hochladen von Daten erfolgt mit spezieller Software (siehe Software für Freenet). Diese Programme erleichtern insbesondere den Austausch größerer Dateien, die intern in kleine Stücke zerlegt werden (Splitfiles) und gegebenenfalls mit redundanten Datenblöcken versehen werden (Fehlerkorrektur).


[3]Anwendungsgebiet
Neben der schlichten Veröffentlichung von Informationen eignet sich Freenet zur zeitversetzten Kommunikation, das heißt, sowohl eine Art E-Mail-System als auch Diskussionsforen können sinnvoll auf Freenet aufbauen.

Suchmaschinen, wie sie im WWW funktionieren, gibt es in Freenet nicht. Stattdessen führen einige Autoren Index-Seiten – Listen, die aus Links zu anderen Freesites bestehen. Diese Index-Seiten werden von ihren jeweiligen Autoren meistens mit Hilfe sogenannter Spider, die ähnlich wie Webcrawler funktionieren, erstellt. Sie sind eine Art von Suchmaschinen, die Freesites nach Links durchsuchen, diese Links besuchen, und falls es wiederum Freesites sind, diese dann ebenfalls durchsuchen und so weiter. Die Ergebnisse speichern sie dann und erzeugen daraus die oben genannte Listen.

Ein sehr verbreiteter Typ von Freesites sind Blogs (Weblogs), die von den Freenet-Nutzern analog als „Flogs“ (Freelogs) bezeichnet werden. Ein besonderer Anreiz für die Einrichtung ist die Anonymität, mit der man seine Berichte im Freenet veröffentlichen kann.


[4]Probleme
Damit Freenet funktioniert, benötigt man neben dem Programm selbst die Adresse mindestens eines anderen Nutzers. Das Projekt unterstützt die Integration neuer Knoten, indem es eine aktuelle Sammlung solcher Adressen (seednodes) auf seinen Seiten anbietet. Wenn dieses Angebot jedoch verschwindet oder für jemanden mit eingeschränktem Zugang zum Internet nicht erreichbar ist, wird der erste Verbindungspunkt (engl. initial connection point) zum Problem.

Knoten mit geringer Geschwindigkeit, asynchroner Verbindung oder kurzer Lebensdauer können den Datenfluss behindern. Hier versucht Freenet durch intelligentes Routing gegenzusteuern (siehe Routing).

Freenet kann kein permanentes Speichern von Daten garantieren. Da Speicherplatz endlich ist, besteht ein Spannungsverhältnis zwischen der Veröffentlichung neuer und der Bewahrung alter Inhalte.


[5]Geschichte
Freenet ist eine erweiterte Open Source-Implementierung des Systems, das Ian Clarke im Juli 1999 in seiner Abhandlung [A Distributed Anonymous Information Storage and Retrieval System (http://freenetproject.org/freenet.pdf)] („Ein verteiltes anonymes Informationsspeicher- und -abrufsystem“) beschrieb, während er Student an der University of Edinburgh war. Kurz nach der Veröffentlichung begannen Clarke und eine kleine Zahl Freiwilliger, an dem Programm zu arbeiten, das dann Freenet wurde.

Im März 2000 war Version 0.1 bereit für die Veröffentlichung. In der folgenden Zeit wurde viel über Freenet berichtet, hauptsächlich beschäftigten die Presse dabei aber die Auswirkungen auf Urheberrechte und weniger das Ziel der freien Kommunikation. Auch die akademische Welt beschäftigte sich mit :Freenet Das oben genannte Dokument war laut Citeseer das meistzitierte wissenschaftliche Dokument im Jahr 2000.

Freenet wird mit Hilfe des Internets verteilt entwickelt. So ist nicht nur das Programm, sondern auch seine eigene Weiterentwicklung dezentral. Das Projekt gründete die gemeinnützige „The Freenet Project Inc.“ und beschäftigt einen Vollzeitprogrammierer, der von Spendengeldern und verkauften Ableger-Produkten bezahlt wird. Darüber hinaus arbeiten viele andere frei mit: Die einen motiviert die Philosophie hinter Freenet (siehe Philosophie), die anderen reizt die technische Herausforderung.

Die Nutzung von Freenet in autoritären Staaten ist schwierig zu verfolgen. Die Gruppe Freenet-China hat das Programm ins Chinesische übersetzt und es in China auf CD und Diskette verbreitet. Dieses Projekt scheint aber seit Ende 2003 nicht mehr aktiv zu sein. Dass Freenet von autoritären Staaten durchaus ernst genommen wird, wird etwa dadurch belegt, dass das Wort „Freenet“ von den chinesischen Internet-Filtern gesperrt wird. (Quelle (http://journalism.berkeley.edu/projects/chinadn/en/archives/002885.html))

Eine im Mai 2004 veröffentlichte Analyse besagt, dass die meisten Freenet-Nutzer zu diesem Zeitpunkt aus den USA (35%), Deutschland (15%), Frankreich (11%), Gro ßbritannien (7%) und Japan (7%) kamen. (Quelle (http://www.itic.ca/DIC/News/archive.html#2004-05-25)) Diese Analyse gründet sich wahrscheinlich auf die öffentlich erreichbaren Seednodes, die vom Projekt bereitgestellt werden, und berücksichtigt somit keine seperaten Freenet-Netzwerke wie das erwähnte Freenet-China.


[6]Kontroverse
Während Freenet einerseits unterdrückten Menschen ermöglicht, sich mit anderen frei auszutauschen, ermöglicht es andererseits auch die Verbreitung und den Zugang zu kontroversen Informationen.

Die Argumentation der Befürworter Freenets gestaltet sich wie folgt:

Wissen ermöglicht es, bessere Entscheidungen zu treffen. Demokratie geht von einer gut informierten Bevölkerung aus. Damit die Demokratie effektiv bleibt, darf also der Informationsfluss nicht kontrolliert werden.
Trotz eventueller positiver Aspekte von Zensur darf diese nicht ermöglicht werden, da diejenigen, die „gute“ Zensur ausüben können, notwendig auch „schlechte“ Zensur ausüben können. Ferner kann sogar „gute“ Zensur kontraproduktiv sein, denn Überzeugung ist ohne die Widerlegung von Gegenargumenten weniger effektiv.
Anonymität ist wichtig, da Meinungsfreiheit ohne die Möglichkeit der Anonymität nicht bestehen kann. Meinungsträger könnten sonst hinterher bestraft werden. Durch elektronische Unterschriften kann auch anonymen Informationen vertraut werden.
Die Kritiker Freenets sind nicht bereit, so eine radikale Entscheidung zugunsten vollkommener Freiheit zu treffen. Insbesondere die Konfrontation mit hoch kontroversen Informationen wie Kinderpornografie im Freenet entfaltet eine abschreckende Wirkung auf manche Anwender.


[7]Technische Einzelheiten
Dieser Abschnitt setzt Kenntnisse von Freenets Funktionsweise voraus. Siehe Funktionsweise


Schutz vor übermäßigen Anfragen
Anfragen und Uploads werden mit einer HTL (engl. Hops to live in Anlehnung an TTL, das heißt: Wie oft darf noch weitergeleitet werden?) ausgestattet, die nach jedem Weiterleiten um 1 verringert wird. Es gibt eine obere Grenze für den Startwert, damit das Netzwerk nicht durch Aktionen mit unsinnig hohen Werten belastet wird. Der derzeitige Wert liegt bei 20: Wenn eine Anfrage nach so vielen Hops kein Ergebnis liefert, ist der Inhalt wahrscheinlich nicht vorhanden - oder das Routing funktioniert nicht, dagegen helfen höhere HTL aber auch nicht. Ähnliches gilt für das Hochladen: Nach 20 Hops sollte eine Information ausreichend verbreitet sein. (Diese Ausbreitung kann durch Abfrage der Daten durchaus noch zunehmen.)


Routing
Bei Freenets Routing wird eine Anfrage von dem verarbeitenden Knoten an einen anderen weitergeleitet, dessen Spezialisierung, nach Einschätzung des Weiterleitenden, dem gesuchten Schlüssel möglichst ähnlich ist.

Damit hat sich Freenet gegen die beiden Hauptalternativen entschieden:

Ein zentraler Index aller verfügbaren Dateien – das einfachste Routing, zum Beispiel von Napster verwendet – ist wegen der Zentralisierung angreifbar.
Eine Verbreitung der Anfrage an alle verbundenen Knoten – zum Beispiel von Gnutella verwendet – verschwendet Ressourcen und ist nicht skalierbar.
Die Art und Weise, wie Freenet die Entscheidung trifft, an wen weitergeleitet wird, bildet den Kern des Freenet-Algorithmus.


Altes Routing
Freenets erster Routing-Algorithmus war relativ einfach: Wenn ein Knoten eine Anfrage nach einem bestimmten Schlüssel an einen anderen Knoten leitet und dieser sie erfüllen kann, wird die Adresse eines zurückleitenden Knotens in der Antwort aufgeführt. Das kann – nur möglicherweise – derjenige sein, der die Daten lokal gespeichert hatte. Es wird angenommen, dass der angegebene Knoten eine gute Adresse für weitere Anfragen nach ähnlichen Schlüsseln ist.
Eine Analogie zur Verdeutlichung: Weil dein Freund Heinrich eine Frage zu Frankreich erfolgreich beantworten konnte, dürfte er auch ein guter Ansprechpartner bei einer Frage zu Belgien sein.

Trotz seiner Einfachheit hat sich dieser Ansatz als sehr effektiv erwiesen, sowohl in Simulationen als auch in der Praxis. Einer der erwarteten Nebeneffekte war, dass Knoten dazu tendieren, sich auf bestimmte Schlüsselbereiche zu spezialisieren. Das kann analog dazu gesehen werden, dass Menschen sich auf bestimmte Fachbereiche spezialisieren. Dieser Effekt wurde bei realen Freenet-Knoten im Netzwerk beobachtet; das folgende Bild repräsentiert die Schlüssel, die von einem Knoten gespeichert sind:

Die x-Achse repräsentiert den Schlüsselraum, von Schlüssel 0 bis Schlüssel 2^160. Dunkle Flächen zeigen an, dass der Knoten dort besser Bescheid weiß. Die dunklen Streifen zeigen Bereiche, wo der Knoten detailliertes Wissen besitzt, wohin Anfragen für solche Schlüssel geroutet werden sollten.

Wenn der Knoten gerade initialisiert worden wäre, wären die Schlüssel gleichmäßig auf den Schlüsselraum verteilt. Das ist ein guter Indikator dafür, dass der Routing-Algorithmus korrekt arbeitet. Knoten spezialisieren sich wie in der Grafik durch den Effekt von Rückmeldungen, wenn ein Knoten erfolgreich auf eine Anfrage nach einem bestimmten Schlüssel antwortet – es erhöht die Wahrscheinlichkeit, dass andere Knoten Anfragen nach ähnlichen Schlüsseln in Zukunft zu ihm leiten werden. Über längere Zeit sorgt das für die Spezialisierung, die im obigen Diagramm deutlich sichtbar ist.


Next Generation Routing (NGR)
NGR soll Routing-Entscheidungen viel geschickter treffen, indem für jeden Knoten in der Routing-Tabelle umfangreiche Informationen gesammelt werden, darunter Antwortzeit beim Anfragen bestimmter Schlüssel, der Anteil der Anfragen, die erfolgreich Informationen gefunden haben, und die Zeit zur Erstellung einer ersten Verbindung. Wenn eine neue Anfrage empfangen wird, werden diese Informationen benutzt, um zu schätzen, welcher Knoten wahrscheinlich die Daten in der geringsten Zeit beschaffen kann, und das wird dann auch der Knoten, zu dem die Anfrage weitergeleitet wird.


Data Reply Abschätzung
Der wichtigste Wert ist die Abschätzung bei einer Anfrage, wie lange es dauern wird, die Daten zu bekommen. Der Algorithmus muss die folgenden Kriterien erfüllen:

Er muss sinnvoll raten können bei Schlüsseln, die er noch nicht gesehen hat.
Er muss fortschrittlich sein: Wenn die Leistung eines Knotens sich über die Zeit verändert, sollte das repräsentiert sein. Aber er darf nicht übersensibel auf jüngste Fluktuationen reagieren, die stark vom Durchschnitt abweichen.
Er muss „Skalen-frei“ sein: Man stelle sich eine naive Implementierung vor, die den Schlüsselraum in eine Anzahl Sektionen aufteilt und für jede einen Durchschnitt hat. Nun stelle man sich einen Knoten vor, bei dem die meisten der eingehenden Anfragen in einer sehr kleinen Sektion des Schlüsselraums liegen. Unsere naive Implementierung wäre nicht in der Lage, Variationen in der Antwort-Zeit in diesem kleinen Bereich zu repräsentieren und würde daher die Fähigkeit des Knotens beschränken, die Routing-Zeiten genau zu schätzen.
Er muss effizient programmierbar sein.
NGR erfüllt diese Kriterien: Es werden N „Referenz“-Punkte unterhalten – dabei ist N konfigurierbar, 10 ist ein typischer Wert –, die anfangs gleichmäßig über den Schlüsselraum verteilt sind. Wenn es einen neuen Routing-Zeit-Wert für einen bestimmten Schlüssel gibt, werden die zwei Punkte, die dem neuen Wert am nächsten sind, diesem angenähert. Das Ausma ß dieser Annäherung kann geändert werden, um einzustellen, wie „vergesslich“ die Schätzfunktion ist.

Das nebenstehende Diagramm zeigt, wie zwei Referenzpunkte (blau) hin zu dem neuen Wert (rot) bewegt werden.

Wenn eine Schätzung für einen neuen Schlüssel erstellt werden soll, ergeht aus der grünen Linie die Zuordnung von geschätzter Antwort zum Schlüssel.


Umgang mit unterschiedlichen Dateigrö ßen
Es gibt zwei Zeitwerte, die in Betracht gezogen werden müssen, wenn wir ein Data Reply erhalten:

Die Zeit, bis der Anfang der Antwort eintrifft.
Die Zeit für den Transfer der Daten.
Um diese beiden Aspekte in einem Wert zu vereinen, werden beide Zahlen dazu verwendet, die Gesamtzeit zwischen dem Senden der Anfrage und der Fertigstellung des Transfers zu schätzen. Für die Transferzeit wird angenommen, die Datei habe die durchschnittliche Länge aller Daten im lokalen Speicher.

Jetzt haben wir einen Einzelwert, der direkt mit anderen Zeitmessungen bei Anfragen verglichen werden kann, selbst wenn die Dateien unterschiedliche Grö ßen haben.


Verfahren, wenn die Daten nicht gefunden wurden
Wenn eine Anfrage die Höchstzahl an Knoten gemäß HTL (siehe Schutz vor übermäßigen Anfragen) durchlaufen hat, wird die Nachricht „Datei nicht gefunden“ (engl. Data Not Found, kurz DNF) zurück zum Anfrager geleitet.

Ein DNF kann zwei Ursachen haben:

Die Daten sind im Freenet vorhanden, konnten aber nicht gefunden werden. Dieses DNF würde einen Mangel im Routing der beteiligten Knoten offenbaren. Wir nennen dieses DNF im Folgenden illegitim.
Die Daten existieren gar nicht. Dieses DNF würde von keinem Mangel zeugen. Wir nennen es im Folgenden legitim.
Es gibt keinen praktischen Weg, herauszufinden, ob ein DNF legitim oder illegitim ist. Wir wollen aber für einen Augenblick annehmen, wir könnten illegitime DNFs identifizieren. Dann wären die Kosten die Zeit, das illegitime DNF zu empfangen plus eine neue Anfrage woanders hinzuschicken.

Ersteres können wir schätzen, indem wir schauen, wie lang vorherige DNFs von dem speziellen Knoten gedauert haben – in proportionaler Abhängigkeit vom HTL der Anfrage: Eine Anfrage mit HTL=10 wird doppelt so viele Knoten durchlaufen wie eine mit HTL=5 und deshalb etwa doppelt so lange brauchen, DNF zurückzuliefern. Den zweiten Wert können wir schätzen, indem wir die durchschnittliche Zeit nehmen, die es braucht, erfolgreich Daten zu empfangen.

Jetzt stellen wir uns einen Freenet-Knoten mit perfektem Routing vor, dessen einzige ausgegebene DNF legitim wären: Denn wenn die Daten im Netz wären, würde er sie mit seinem perfekten Routing finden. Der Anteil von DNF an den Antworten, die dieser Knoten zurückliefern würde, wäre gleich dem Anteil der legitimen DNF. Solch ein Knoten kann praktisch nicht existieren, aber wir können ihn approximieren, indem wir uns den Knoten mit dem niedrigsten Anteil an DNF in unserer Routing-Tabelle suchen.

Jetzt können wir die Zeit-Kosten von DNFs berechnet, und wir können außerdem approximieren, welcher Anteil von DNFs legitim ist – und der deshalb nicht als Zeitverlust angesehen wird. Damit können wir für jeden Knoten geschätzte Routing-Zeit-Kosten hinzufügen, um DNFs zu berücksichtigen.


Umgang mit fehlgeschlagenen Verbindungen
Mit stark überladenen Knoten können wir nicht interagieren. Diese Möglichkeit können wir berücksichtigen, indem wir den durchschnittlichen Anteil fehlgeschlagener Verbindungen für jeden Knoten speichern, und wie lange jede solche dauerte. Diese Werte werden der geschätzen Routing-Zeit für den jeweiligen Knoten hinzugefügt.


Gewonnenes Wissen
Eines der Probleme, das im Freenet zur Zeit von NGR beobachtet wird, ist die Zeit, die für einen Freenet-Knoten erforderlich ist, ausreichendes Wissen über das Netz anzuhäufen, um effizient zu routen. Das ist besonders schädlich für Freenets Benutzerfreundlichkeit, da der erste Eindruck für neue Nutzer entscheidend ist, und dieser ist üblicherweise der schlechteste, da er auftritt, bevor der Freenet-Knoten effektiv routen kann.

Die Lösung ist es, etwas qualifiziertes Vertrauen zwischen Freenet-Knoten aufzubauen und ihnen zu ermöglichen, die über einander gesammelten Informationen zu teilen, wenn auch in ziemlich misstrauischer Weise.

Es gibt zwei Möglichkeiten, wie ein Freenet-Knoten von neuen Knoten erfährt.

Wenn das Programm startet, lädt es eine Datei, die die Routing-Erfahrung eines anderen, erfahrenen Knotens enthält. Mit NGR sind diese Informationen um statistische Daten bereichert, so dass ein Knoten, selbst wenn er das erste Mal startet, bereits das Wissen eines erfahrenen Knotens hat. Dieses Wissen wird im Verlauf seiner Aktivität gemäß den eigenen Erfahrungen angepasst.
Die andere Möglichkeit ist das Feld „Datenquelle“ (engl. Data Source), das auf erfolgreiche Anfragen hin zurückgeschickt wird. Dieses Feld enthält einen der Knoten in der Kette und statistische Informationen zu ihm. Da diese Informationen aber manipuliert sein könnten, werden sie von jedem Knoten, der sie weiterleitet, angepasst, falls der Knoten selbst über die genannte Adresse Bescheid weiß.

Vorteile von NGR
Passt sich der Netz-Topologie an.
Das alte Routing ignorierte die zugrundeliegende Internet-Topologie: Schnell und langsam angebundene Knoten wurden gleich behandelt. Dagegen legt NGR seinen Entscheidungen tatsächliche Routing-Zeiten zugrunde.
Leistung kann lokal ausgewertet werden.
Mit dem alten Routing konnte man seine Leistung nur auswerten, indem man sie testete. Mit NGR hat man mit der Differenz zwischen geschätzter und tatsächlicher Routing-Zeit einen einfachen Wert, wie effektiv man ist. Wenn nun eine Änderung am Algorithmus in besseren Schätzungen resultiert, wissen wir, dass sie besser ist; und umgekehrt. Das beschleunigt die Weiterentwicklung stark.
Annäherung an das Optimum.
In einer Umwelt, in der nur dem eigenen Knoten vertraut werden kann, ist es vernünftig zu sagen, dass alle Entscheidungen auf den eigenen Beobachtungen basieren sollten. Wenn die vorangegangenen eigenen Beobachtungen optimal genutzt werden, dann ist der Routing-Algorithmus optimal. Freilich gibt es immer noch Raum in Bezug darauf, wie der Algorithmus die Routing-Zeiten schätzt.

[8]Zukunft
Freenet stehen seit Anfang 2005 große Änderungen hervor. Version 0.7, mit deren Erscheinen wohl frühestens in der zweiten Jahreshälfte gerechnet werden kann, wird von Grund auf neu geschrieben sein.


HTL
HTL (siehe #Funktionsweise) wird aus Sicherheitsgründen umgestaltet. Es wurde sogar diskutiert, HTL abzuschaffen, da ein Angreifer aus der Zahl Informationen ziehen kann. Das Konzept sähe so aus, dass bei jeder Node eine bestimmte Wahrscheinlichkeit besteht, dass die Anfrage terminiert. So würden manche Anfragen aber unsinnig kleine Strecken zurücklegen und zum Beispiel nach einem Hop terminieren. Au ßerdem „lernen“ die Nodes bei so unsicheren Anfragen schlecht voneinander. Anfragen sollen nun mit einer HTL von 10 ausgeschickt werden. Bei HTL=10 und HTL=0 besteht nur eine kleine Chance (10-20%), dass HTL verringert wird, bei den übrigen Werten wird konsequent dekrementiert. Auf diese Weise ist sichergestellt, dass eine Anfrage immer mindestens 10 Hops durchläuft.


Protokoll
Freenet soll komplett von TCP auf UDP umgeschrieben werden. Ein TCP-Transport könnte später implementiert werden, aber UDP wird der bevorzugte Transport.


Schlüssel
Alle Inhalte sollen in 32Ki B großen Schlüsseln gespeichert werden. Wie bisher werden kleinere Dateien durch zufällig wirkende, aber eindeutig aus der Datei resultierende Daten erweitert; größere Dateien werden aufgespalten.


Verschlüsselung
Die Schlüsselstärke soll auf 256 Bit angehoben werden. Zurzeit werden vielerorts 128 Bit verwendet.


Pre-mix Routing
Das Konzept des Pre-mix Routing dient allein der Sicherheit. Bevor ein Auftrag von anderen Nodes sachlich bearbeitet wird, wird er erst verschlüsselt durch ein paar Nodes getunnelt, so dass die erste zwar uns kennt, aber nicht den Auftrag, und die letzte den Auftrag, aber nicht uns. Die Nodes werden in vernünftigem Rahmen zufällig ausgewählt. Der Begriff des „Zwiebel-Routings“ (engl. onion routing) veranschaulicht das: Die Anfrage wird mehrfach verschlüsselt (zu einer Zwiebel), und jede Node im Premix-Verlauf „schält“ eine Verschlüsselungsinstanz, so dass erst die letzte Node die Anfrage erkennt - sie weiß aber nicht, von wem der Auftrag kommt.

Pre-mix Routing wird wohl erst später kommen.


I2P
Überlegungen, Freenet auf das verwandte Projekt I2P aufzusetzen, wurden verworfen.


Projektseite
Eine offizielle Projektseite innerhalb von Freenet wird es erst geben, wenn Schlüssel zurückgerufen, d.h. entwertet, werden können.


Riesige Speicher
Irgendwann soll Freenet Data Stores unterstützen, die so riesig sind, dass der Index nicht in den Hauptspeicher passt.

Der Index ist eine Datei, die alle Schlüssel auflistet, über die die Node selbst verfügt.


Passive und inverse passive Anfragen
Passive Anfragen sind Anfragen, die im Netzwerk bestehen bleiben, bis die gesuchte Datei erreichbar wird. Inverse passive Anfragen sollen durch einen Mechanismus ähnlich den passiven Anfragen halbwegs permanent Inhalte bereitstellen.

Die Sicherheitsaspekte sind noch nicht vollständig bekannt. Vor der Implementierung werden sie geklärt werden. Passive und inverse passive Anfragen kommen wohl erst nach Version 1.0.


Steganografie
Steganografie kommt erst nach 1.0


Unterstützung freier JVM (Java Virtual Machine)
Die Unterstützung freier JVM ist kein vorrangiges Entwicklungsziel. Durch den Verzicht auf NIO (Java) wird es aber wahrscheinlich sehr viel einfacher sein, Freenet auf freien JVM laufen zu lassen.


[9] Software für Freenet

Freesite Insertion Wizard (FIW)
FIW ist eine der populärsten Freenet-Anwendungen und dient dazu, Freesites hochzuladen. Geschrieben in Java, bietet es sowohl Kommandozeile als auch GUI Interface. Der Entwickler wird nach eigenen Angaben mindestens bis Mitte 2005 keine neue Version entwickeln.


Fishtools
Ein weiteres Programm zum Hochladen von Freesites. Wegen eines Streits ist sein Hauptentwickler nicht mehr im Freenet aktiv und das Programm liegt brach. Es ist in Python geschrieben.


Freenet Utility for Queued Inserts and Downloads (FUQID)
Eine Windows-Anwendung, die üblicherweise zum Download und Upload großer Splitfiles verwendet wird. Das Programm ist in Delphi geschrieben und wird von seinem Entwickler weiterhin sporadisch bearbeitet. FUQID wird allgemein als exzellentes Gegenstück zu den Freesite-Programmen FIW oder Fishtools angesehen.


FCPTools
Die FCPTools (http://freenetproject.org/index.php?page=fcptools) sind Kommandozeilen-Programme, um Dateien in das und aus dem Freenet zu laden. Separat enthalten ist die Bibliothek FCPLib (http://freenetproject.org/index.php?page=FCPlib) (Freenet Client Protocol Library). Die FCPTools sind mit FCPLib verbunden und geben ein gutes Beispiel dafür ab, wie die Bibliothek in Freenet Client Programmen benutzt wird.

Die FCPLib ist eine plattformunabhängig programmierte und nativ kompilierte C-Programmbibliothek. Sie enthält Funktionen zum Hoch- und Herunterladen von Informationen in und aus Freenet. Es gibt zum Beispiel Funktionen, um Dokumente von lokalen Laufwerken hochzuladen.

Die FCPLib unterliegt der GPL und ist außerdem für die folgenden Plattformen als Binary-Distribution erhältlich: Microsoft Win 32(NT/2K/XP), Debian GNU/Linux, BSD, Sun Solaris, Mac OS X.


Freenet Tools
Die Freenet Tools führen ungefähr dieselben Aufgaben wie die FCPTools durch, aber sie enthalten keine Client Bibliothek für die Benutzung in anderen Projekten. Sie sind in ANSI-C geschrieben und laufen derzeit nur unter *nix.


Frost
Ein beliebtes Forumssystem für Freenet. Es benutzt ein web of trust-Konzept sowie öffentliche und private Schlüssel, um ausufernden Spam zu vermeiden. Frost ist sehr beliebt für File-Sharing. Geschrieben in Java, funktioniert es sowohl unter *nix als auch Windows.


Freenet Message Board (FMB)
Ein anderes Forumssystem für Freenet. Geschrieben in Java, wird es nicht mehr von seinem ursprünglichen Autoren betreut. Andere Programmierer haben es zu verschiedenen Versionen weiterentwickelt. FMB läuft unter Windows und *nix.

Sehe auch Papers And Tools


Dieser Artikel basiert auf dem Artikel Freenet (http://de.wikipedia.org/wiki/Freenet) aus der freien Enzyklopädie Wikipedia und steht unter der GNU-Lizenz für freie Dokumentation (http://www.gnu.org/licenses/fdl.txt). In der Wikipedia ist eine Liste der Autoren (http://de.wikipedia.org/w/index.php?title=Freenet&action=history) verfügbar.