{% extends "_layout_de.html" %} {% block title %}Einführung in die Arbeitsweise von I2P{% endblock %} {% block content %}Hinweis: Dieses "How" Dokument ist noch nicht vollständig aktualisiert und enthält noch nicht die diversen Änderungen wie di neuen Tunnel Routing und Verschlüsselungs Algorhytmen, die verschiedene Probleme (inclusive benötigten Grundlagen, die andereProbleme behoben) behoben haben, und weitere Änderungen.

I2P ist ein Projekt, welches ein Netzwerk zum sicheren und anonymen Kommunizieren planen, aufbauen und betreuen wird. Nutzer von I2P haben die Kontrolle über die Verteilung zwischen Anonymität, Verlässlichkeit, genutzter Bandbreite und Verzögerung. Es gibt keinen zentralen Punkt im Netzwerk, welcher übernommen werden kann um die Integrität, Sicherheit oder Anonymität des Systems zu komprimieren. Das Netzwerk kann sich in einer Reaktion auf Angriffe selber rekonfiguriern und wurde so geplant, das es zusätzliche Ressourcen bei deren Verfügbarkeit nutzen wird. Selbstverständlich sind alle Aspekte des Netzwerkes offen und frei verfügbar.

Im Gegensatz zu vielen anderen anonymen Netzwerken versucht I2P nicht die Anonymität durch verstecken eines Teils einer Kommunikation, der Sender oder der Empfänger, herzustellen. I2P wurde so geplant, das Nutzer von I2P untereinander anonym kommunizieren können - Sender und Empfänger sind für den jeweils anderen anonym als auch für nicht beteiligte dritte. Zum Beispiel gibt es zur Zeit I2P interne Webseiten (die anonymes Publizieren/hosten erlauben) und einen HTTP Proxy in das normale Internet (der anonymes Browsing bietet). Server im I2P Netz betreiben zu können ist eine essentielle Angelegenheit, da angenommen werden kann, das die Proxis ins normale Internet überwacht werden, abgeschaltet werden oder gar zu schlimmeren Angriffen genutzt werden.

Das Netzwerk selber ist Nachrichten basiert - es ist essentiell eine sichere und anonyme IP Schicht, in der Nachrichten an kryptographische Schlüssel (Ziele) geschickt werden;die Nachrichten selber können signifikant grösser als IP Pakete werden. Beispiele für die Nutzung des Netzwerkes sind unter anderem "Eepsites" (Webserver mit normalen Webapplikationen innerhalb von I2P), ein BitTorrent Klient ("I2Psnark") oder ein verteilter Datencontainer. Mit der Hilfe von mihis I2PTunnel Applikation können wir die üblichen TCP/IP Anwendungen über I2P tunneln, z.B. SSH, IRC, ein squid Proxy oder gar Audio. Viele Leute werden I2P nicht direkt nutzen oder nicht bemerken, das sie I2P nutzen. Stattdessen sehen sie nur eine der I2P fähigen Anwendungen oder nur eine Einstellung für verschiedene Proxies, die ihnen Anonyme Verbindungen anbieten.

Ein wichtiger Teil des Planens, Entwickelns und Testens eines anonymen Netzwerkes ist das Definieren des Angriffsszenarios, da es "echte" Anonymität nicht gibt, nur steigende Kosten und Aufwand jemanden zu identifizieren. Kurz gesagt: I2P Absicht ist es, Personen in willkürlichen feindseligen Umgebungen einen militärischen Grad der Anonymität zu bieten, versteckt in dem hinreichendem Datenstrom aus der Aktivität anderer Leute, die weniger Anonymität benötigen. Dieses beinhaltet den Chat von Joe Sixpack mit seinen Freuden, den niemanden mitlesen kann, Jane Filesharer, die weiß das die grossen Konzerne sie beim Tauschen von Dateien nicht identifizieren können, als auch Will Geheimnisverräter, der geheime Dokumente veröffentlicht - alles in dem selben Netzwerk, in dem eine Nachricht nicht von einer anderen unterschieden werden kann.

Warum?

Es existieren eine unglaubliche Anzahl an fantastischen Gründen, weswegen wir ein System zum anonymen Kommunizieren benötigen und jeder hat seine eigenen persönlichen rationalen Gründe. Es gibt viele andere Bestrebungen, die auf dem einem oder anderen Weg unterschiedliche Arten der Anonymität im Internet zu erreichen versuchen, aber wir fanden keine, die unsere Anforderungen oder unser Angriffszenario abdeckten.

Wie?

In einer übersicht existiert das Netzwerk aus einer Gruppe von Knoten ("Router") mit einer Anzahl an unidirektionalen virtueller Eingangs und Ausgangs Wege ("Tunnel", wie in der Tunnel Routing Seite beschrieben). Jeder Router wird duch eine kryptographische RouterIdentity eindeutig indentifiziert, diese ist für gewöhnlich dauerhaft gültig. Diese Router kommunizieren über vorhandene Transportmechanosmen (TCP, UDP, etc.) und tauschen verschiedene Nachrichten aus. Klientprogramme haben ihre eigenen kryptographischen Ident ("Destination"), durch den sie zum Senden und Empfangen von Nachrichten befähigt sind. Diese Klienten können zu irgendwelchen Routern Verbindung aufnehmen und authorisieren ihre derzeitige Belegung ("lease") von ein paar Tunneln, die zum Senden und Empfangen von Nachrichten durch das Netzwerk benutzt werden. I2P hat eine eigene Netzwerk Datenbank ("Floodfill") zum skalierbaren sicherem Verteilen von Routing und Kontaktinformationen.

Network topology example

Im oberen Bild betreiben Alice, Bob, Charlie und Dave je einen Router mit einer einzigen Destination auf ihren lokalen Router. Sie haben alle ein paar 2-Hop Eingangstunnel je Destination (mit 1,2,3,4,5 und 6 bezeichnet) und ein paar haben 2-Hop Ausgangstunnel. Zur Vereinfachung sind Charlies Eingangstunnel und Daves Ausgangstunnel nicht eingezeichnet, ebenso wie weitere Ausgangstunnel der Router (normalerweise so 5-10 Tunnel gleichzeitig). Sobald Alice und Bob miteiander reden, sendet Alice eine Nachricht über ihren (pinken) Ausgangstunnel in Richtung eines vons Bobs Eingangstunneln (grün, Tunnel 3 oder 4). Sie lernt den Eingangstunnel durch eine Abfrage der Netzwerk Datenbank kennen, diese Datenbank wird dauerhaft aktualisiert sobald neue Leases authorisiert sind und ältere auslaufen.

Antwortet Bob nun Alice, geschieht dieses auf der selben Art und Weise - er sendet eine Nachricht über einen seiner Ausgangstunnel in Richtung eines von Alice Eingangstunnels (Tunnel 1 oder 2). Um vieles einfacher zu machen, sind viele Nachrichten zwischen Bob und Alice in sogenannte "Garlics" eingepackt, in denen die Lease Information vom Sender enthalten ist, so das der Empfänger sofort antworten kann ohne in der Netzwerk Datenbank nach den benötigten Informationen suchen zu müssen.

Um einigen Attacken aus dem Wege zu gehen ist I2P dezentral aufgebaut, ohne eine zentrale Instanz - und wie schon richtig geraten existiert kein zentraler Verzeichnisdienst, der Informationen zur Performance und Kontinuität der Router im Netzwerk verwaltet. Daraus folgt, daßjeder Router eigene Profile verschiedener Router halten und pflegen muss. Ebenso ist jeder Router selber verantwortlich für die Auswahl der korrekten Knoten um die Anforderungen an die Anonymität, Performance und Konitnuität des Benutzers zu erfüllen, so wie es in der " Knoten Auswahl" Seite beschrieben ist.

Das Netzwerk selber nutzt eine signifikante Anzahl von Kryptographischen Techniken und Algorhytmen - die Liste umfässt 2048bit ElGamal Verschlüsselung, 256bit AES im CBC Modus mit PKCS#5 Padding, 1024bit DSA Signaturen, SHA256 Hashes, 2048bit Diffie-Hellmann vermittelte Verbindungen mit Station-zu-Station Authentifizierung und ElGamal / AES+SessionTag.

Daten die über I2P gesendet werden, durchlaufen 3 Verschlüsselungen: garlic Verschlüsselung (zur überprüfung ob die Nachrichten beim Empfänger angekommen ist), Tunnel Verschlüsselung (alle Nachrichten, die durch einen Tunnel gehen, sind vom Tunnel Gateway bis zum Tunnel Endpunkt verschlüsselt) und Zwischen-den-Routern-Transport-Schicht Verschlüsselung (z.B. benutzt der TCP Transport AES256 mit Ephemeral Schlüssel).

Ende-zu-Ende (I2CP) Verschlüsselung (von Programm zu Programm) wurde in der I2P Version 0.6 deaktiviert; Ende-zu-Ende (garlic) Verschlüsselung von Alice Router "a" zu Bobs Router "h" existiert weiterhin. Bitte beachte im foglendem Bild den anderen Gebrauch der Wörter! a und h sind die I2P Router mit der Ende-zu-Ende Verschlüsselung von Router zu Router, Alice und Bob hingegen sind die Programme die mittels(unverschlüsseltem) I2CP mit den I2P Routern kommunizieren! Sprich: bis zum I2P Router sind die Daten unverschlüsselt, ab dem I2P Router ist alles Ende-zu-Ende verschlüsselt.

end to end layered encryption

Die genaue Anwendung dieser Algorhytmen sind woanders beschrieben.

Die zwei Hauptbestandteile für den militärischen Grad der Anonymität sind explizite, verzögerte garlic geroutete Nachrichten und mehr umfassende Tunnel mit Unterstützung von Pooling und Mixen von Nachrichten. Diese Funktionen sind zur Zeit für Version 3.0 geplant, aber garlic geroutete Nachrichten mit keiner Verzögerung und FIFO Tunnels sind schon implementiert. Zusätzlich wird die Version 2.0 den Leuten erlauben, I2P hinter beschränkten Routen (möglicherweise mit vertrauten Knoten) aufzusetzen und zu betreiben; ebenso werden die flexiblere und anonymere Transports eingebaut werden.

Es kamen ein paar berechtigte Fragen bezüglich der Skalierbarkeit von I2P auf. Mit der Zeit werden sicher detailiertere Analysen kommen, aber Knoten suchen und Integration sollte mit O(log(N)) Komplexität eingehen, während Ende-zu-Ende Nachrichten mit O(1) (frei skalierend) eingehen, da Nachrichten durch K Hops im Ausgangstunnel und durch weitere K Hops im Eingangstunnel gehen - die Grösse des Netzwerkes (N) hat hier keinen Einfluss.

Wann?

I2P startete im Februar 2003 als eine vorgeschlagene Modifizierung zu Freenet, damit dieses alternative Transports, wie z.B. JMS, nutzen könne. Dann wuchs es in ein eigenes 'anonCommFramework' im April 2003, worauf es im July zu I2P wurde. Ersten Quelltext gab es im August 2003, Version 0.2 folgte im September, 0.3 in März 2004, 0.4 im September 2004, 0.5 wurde Anfang 2005 veröffentlicht, gefolgt von Version 0.6 Mitte 2005. I2P folgt in der Entwicklung der derzeitigen Roadmap.

Das Netzwerk selber ist noch nicht fertig zum allgemeinem Nutzen und sollte nicht von Leuten mit Bedarf an Anonymität genutzt werden bevor es nicht ausführlichen überprüfungen stand gehalten halt.

Wer?

Wir sind ein kleines Team aus merhren Ländern aus verschiedenen Kontinenten, das an der Weiterentwicklung von einzelnen Aspekten des Projektes arbeitet. Wir sind offen für weitere Entwickler, die sich einbringen wollen und auch gegenüber jedem anderen, der etwas zum Projekt beibringen kann, sei es Kritiken, Peer Review, Testen, schreiben neuer I2P kompatibler Anwendungen oder aber auch Dokumentationen. Das gesamte System ist Open Source - Der Router und ein Großeil des SDK sind zur Gänze Public Domain mit ein wenig BSD und Cryptix Lizensiertem Code, wohingegen einige Anwendungen wie I2PTunnel und I2PSnark GPL lizensiert sind. Fast alles ist in Java (1.3+/1.5+) geschrieben, einige externe Anwendungen sind jedoch in Python geschrieben. Der Code arbeitet im aktuellen Kaffee und wir hoffen ihn möglichst bald auf GCJ lauffähig zu bekommen.

Wo?

Jeder mit Interesse an I2P sollte uns im #I2P IRC Raum (gehostet auf irc.freenode.net, irc.postman.i2p und irc.freshcoffee.i2p) besuchen. Es gibt zur Zeit keine fest geplanten Entwicklertreffen, dennoch existiert ein Archiv von abgehaltenen Entwickler Treffen.

Der aktuelle Quelltext ist in Monotone verfügbar.

{% endblock %}