Freenet
Gliederung
Einleitung
Geschichte
Kurze Zusammenfassung der wichtigsten Daten
- 1999 Erstes Paper: "Freenet: A Distributed Anonymous Information Storage and Retrieval System" von Ian Clarke, Oskar Sandberg, Brandon Wiley, Theodore W. Hong
- 2000 Version 0.1 der Implementatierung in Java (GPL)
- 2002 gemeinnützige "The Freenet Project Inc." beschäftigt einen Vollzeitprogrammierer -- finanziert durch Spenden
- 2006 Version 0.7: komplette Neuimplementierung
- bisher mehr als 2 Mio Downloads, aber wahrscheinlich deutlich weniger aktive Teilnehmer
- sehr aktive Weiterentwicklung
Philosophie und Ziele
Die Allgemeine Erklärung der Menschenrechte, Artikel 19
Jeder hat das Recht auf Meinungsfreiheit und freie Meinungsäußerung; dieses Recht schließt die Freiheit ein, Meinungen ungehindert anzuhängen sowie über Medien jeder Art und ohne Rücksicht auf Grenzen Informationen und Gedankengut zu suchen, zu empfangen und zu verbreiten.
Negativbeispiele hierbei sind autoritäre Staaten wie China, Indonesien,... Anonyme Kommunikation ist dort Voraussetzung für freie Meinungsäußerung und freien Informationszugriff, weil nur so ein Schutz vor Verfolgung sicher gestellt werden kann.
Aber auch in der EU gibt es bedenkliche Bestrebungen: Die Richtlinie zur Vorratsdatenspeicherung von Telekommunikatiosverbindungsdaten wird, sobald umgesetzt, unter dem Vorwand der Terrorismusbekämpfung das Fernmeldegeheimnis quasi aushebeln und die Unschuldsvermutung umkehren, da die Daten aller Bürger vorsorglich für 6 Monate gespeichert werden.
Motivation des Projektes
Ziele:
- Anonymität: Schutz von Erzeuger, Konsumenten und beteiligten Dritten (Zwischenstationen) vor Verfolgung durch Verschlüsselung und Routing
- Pseudonymität durch digitale Signaturen
- Resistenz gegen Zensur (Löschung von Dokumenten soll unmöglich sein), Verfügbarkeit und Zuverlässigkeit durch Dezentralisierung und Redundanz (Robustheit bei bösartigen / ausfallenden Knoten)
- effizient und skalierbar bei Speicherung und Routing -- Performance zweitrangig, aber soll gut skalieren und sich an Nachfrage nach best. Daten anpassen
Freenet will und kann aber keine Konkurrenz zu "traditionellen" Filesharing-Netzen sein.
Architektur
Schlüssel
Routing
Netztopologie
Diskussion
Performance
Als wichtigstes Maß für die Performance dient die Anzahl der Hops, die eine Anfrage bis zum Ziel (und die gefundene Datei zurück zum Suchenden) benötigt.
Auf Grund des (gewollten) Aufbaus des Netzwerkes ist es relativ schwierig, diese zuverlässig zu bestimmen: Einerseits sind formale Komplexitäts-Beweise auf Grund der komplizierten Struktur schwierig, andererseits entzieht sich das existierende Netzwerk im Internet sehr erfolgreich dem Blick seiner Schöpfer. Aus diesen Gründen ist die Simulation das vielversprechendste Mittel, um einen globalen Einblick zu erhalten.
Die Simulation ergab eine Komplexität von etwa . Danach sollte Freenet für eine Million Knoten eine mittlere Pfadlänge von 30 Hops erreichen. Praktisch kann dieser Wert in beide Richtungen variieren, da einerseits von Dateien möglicherweise mehr Replikate vorkommen als in der Simulation (das würde die Länge verkürzen), andererseis könnten zu volle Routing-Tabellen die Pfadlängen erhöhen.
Security
Anonymiät
Die gewährleistete Anonymität ist grundsätzlich schwächer als bei z.B. Onion Routing (siehe [[1]]), wenn ein Angreifer hinreichend viele Nachbarknoten des Ziels kontrolliert.
Um zweifelsfrei zu beweisen, dass ein bestimmter Knoten eine bestimmte Datei angefordert oder eingefügt hat, muss der Angreifer jedoch alle empfangenen und Nachrichten kennen, denn da das Quellfeld eine Anfrage gelegentlich auf die Adresse eines routenden gesetzt Knotens wird, ist sonst nicht zweifelsfrei klar, ob der Zielknoten wirklich der Ursprung einer Anfrage ist.
Wegen der Transportverschlüsselung müsste er alle Nachbarknoten kontrollieren, bloßes Mitlesen des Traffics genügt nicht. Die Verschleierung der Nachrichtengröße durch Padding verhindert Schlüsse aus der Nachrichtenlönge. Da zudem der Inhalt der Dateien verschlüsselt ist, kann der Angreifer selbst bei Überwindung der Transportverschlüsselung keine Analyse des Inhaltes o.ä. vornehmen, sondern muss vorneweg die Keys der von ihm gesuchten Dateien kennen.
Die reine Teilnahme am Netz kann jedoch (noch) nicht (durch Steganographie o.ä.) verschleiert werden, was z.B. in China ein Problem darstellt.
Für zukünftige Versionen ist es geplant, Onion Routing als Feature zur Überwindung der ersten Nachbarknoten hinzuzufügen.
Verfügbarkeit und Integrität
Die Verfügbarkeit von Dateien ist nur einschränkbar, wenn der Angreifer über Resourcen etwa in der Größenordnung (Bandbreite, Anzahl Knoten) des gesamten Netzes verfügt.
Das gezielte Entfernen einer unerwünschten Datei ist nicht möglich, denkbar wäre es aber, das Netzwerk mit sehr viel "Müll", d.h. unsinnigen Dateien zu fluten und selbige durch enorm viele Requests zu verteilen und damit andere Dateien aus den Knoten zu verdrängen (Cache Replacement). Das könnte man jedoch durch Mittel wie [[2]] erschweren.
Da individuelle Knotenbetreiber natürlich Kontrolle darüber haben, welche Dateien (Keys) ihre Knoten anbieten, wäre Zensur auf Basis eines allgemeinen Konsens (Key-Blacklists) dennoch möglich.
Anzumerken wäre noch, dass die Robustheit des Netzes im Gegensatz zu z.B. proprietären Filesharing-Netzen nicht auf dem Prinzip "Security by Obscurity", d.h. geheimen Protokollen, basiert, sondern bewusst pessimistischen Annahmen (was natürlich nicht ausschließt, dass in Zukunft Verwundbarkeiten bekannt werden).
Probleme
momentaner Status
ergänzende Links
Auf dem 22C3 haben Oskar Sandberg und Ian Clake einen Vortrag über die Neuerungen in Version 0.7 gehalten. Dazu gibt es
- Slides (pdf.bz2)
- eine Java-Demo des Prinzips des neuen Routing Algorithmus.
- In der deutschen Wikipedia gibt es einen sehr ausführlichen Eintrag zu Freenet.