Onion routing is a routing strategy for achieving better pseudonymity and thus privacy. It is usually combined with encryption to obfuscate where messages really came from and are going to. The reference implementation of the concept is Tor.

The text below describes something similar to onion routing provided in perlpsyc in 2005 that we unfortunately have not pursued for general use in PSYC.

By now it looks more promising to combine PSYC with existing darknet routing infrastructures, that's why we are working on secushare.

1 Onion.pm

Onion ist im Moment ein relativ loses Konzept, das versucht, onion-routing und freundschaftsbasierte Netze zu verknüpfen. Im wesentlichen basiert es auf der Idee, ein P2P-Netz zwischen Freunden aufzubauen, in dem jeder Manager einer globalen, dezentralen Gruppe ist. Realisieren lässt sich damit der anonyme Austausch von Daten. Am Beispiel von file-sharing:

Jemand im Netz sucht eine Datei. Er schickt also an alle seine Peers eine Suchanfrage und schreibt in die _source eine fiktive addresse "A". Jeder host leitet die Suchanfrage so an seine Peers weiter und merkt sich, von wem er sie bekam, d.h. an wen er Antworten an "A" schicken soll. Das tut nun jeder so. Falls jemand die Suchanfrage beantworten kann, schickt er eine Antwort mit einer neuen fiktiven addresse "B" als _source and den Urheber der Suchanfrage "A". Weil sich vorher jeder host auf dem Weg zwischen den beiden gemerkt hat, an wen er Nachrichten für "A" weiterschicken muss, findet die Antwort ihren weg zu "A". Es weiss allerdings nur "A" wirklich, dass die Addresse ihm gehört ( es sei denn, man überblickt genug Verkehr im Netz ). So läuft das ganze dann auch mit Anfragen von Dateien und den Antworten darauf.

Damit sich so ein Netz ohne zentrale Server realisieren lässt, baut man es auf sozialen Kontakten auf, d.h. jeder versucht Verbindungen mit seinen psyc-friends zu haben.

1.1 Vorteile des "sozialen Netzes"

  • Durch die Tatsache, dass man seine peers kennt, ist man in der Lage "Müll" aus dem Netz herauszuhalten. So nach dem Motto: "mein buddy verschickt kaputte dateien" (wenn auch nicht selbst, dann routet er sie wenigstens). Zensur ist bei sowas vielleicht nicht grundsätzlich schlecht.
  • File Sharing: Das herkömmliche Tauschen mit Freunden ist gar nicht langsamer als sonst, denn die sind ja eh die direkten peers.

1.2 Dinge, die man bedenken muss:

  • Packet Ids sind wichtig, denn es gibt in den meisten Fällen mehrere Routen zu einem host. Doppelte müssen von jedem rausgefiltert werden (d.h. nicht weitergecastet). Allerdings werden so bei jedem "dialog" auch immer die schnellsten routen verwendet. Das verspricht eine art automatisches load-balancing der verschiedenen Verbindungen.
  • File Sharing: Man sollte sich genau überlegen, wie man verhindert, dass Suchanfragen durch das ganze Netz wandern. Für kleine Netze ist das unkritisch, allerdings nichtmehr dann, wenn man viele (hab keine Erfahrungen für Schätzungen) hosts hat. Eine maximale Anzahl hops finde ich schlecht, das führt ohnehin dazu, dass man Urheber wieder zuordnen kann. Mein Vorschlag: Suchanfragen dann nicht weiterschicken, wenn man sie beantworten konnte. So findet man auch Sachen, die im Netz weit von einem weg sind.

See also: Discovery.


Implementations: Onion.pm