Tor Onion Routing und Private Information Retrieval in Peer-to

Transcrição

Tor Onion Routing und Private Information Retrieval in Peer-to
Tor Onion Routing und Private Information
Retrieval in Peer-to-Peer Informationssystemen
@
@
@
@
@
@
@
Studienarbeit
von
Daniel Dahlmeier
Betreuer:
Betreuende Mitarbeiter:
Prof. Dr. Jacques Calmet
Dr. Regine Endsuleit und Thilo Mie
Institut für Algorithmen und Kognitive Systeme
Universität Karlsruhe (TH)
SS 2006
Hiermit bestätige ich, die vorliegende Arbeit selbständig durchgeführt und keine anderen als die angegebenen Literaturhilfsmittel
verwendet zu haben.
Daniel Dahlmeier
4
Kapitel 1
Einleitung
Das Ziel meiner Arbeit ist der Entwurf eines anonymen Peer-to-Peer Informationssystems. Das System soll anonymes Verbreiten von Informationen
ermöglichen, robust gegen Zensur sein und eine gezielte Suche über Stichworte ermöglichen.
Peer-to-Peer Systeme sind eine Entwicklung weg vom hierarchischen
Client-Server Model hin zu dezentralen Strukturen. Der Begriff Peer-toPeer bezeichnet ein System, dessen Komponenten in einer gleichberechtigten
Weise miteinander agieren. Osram [3] definiert Peer-to-Peer Netzwerke als
ein
sich selbst organisierendes System gleichberechtigter, autonomer
Einheiten(Peers), das vorzugsweise ohne Nutzung zentraler Dienste auf der Basis eines Rechnernetzes mit dem Ziel der gegenseitigen Nutzung von Ressourcen operiert
Peer-to-Peer Netzwerke sind eine Konsequenz aus immer leistungsfähigeren
Personalcomputern und Rechnernetzen. Jeder Rechner in einem Peer-toPeer Netzwerk ist sowohl Client als auch Server.
Peer-to-Peer Netzwerke sind eine relative junge Anwendung für das Internet, haben aber innerhalb kürzester Zeit enorm an Popularität gewonnen.
Während viele Peer-to-Peer Anwendungen zum Austauschen von Musik und
Filmen genutzt werden und hauptsächlich wegen der damit verbundenen Copyright Verletzungen in das Licht der Öffentlichkeit rücken, birgt die Peerto-Peer Technologie durchaus weitreichendere Möglichkeiten zum Austausch
von Informationen.
Ich bin der Auffassung, dass Peer-to-Peer Netzwerke ein geeignetes Mittel sind um freien Informationsaustausch und damit Meinungs- und Informationsfreiheit zu propagieren. Da sie nicht auf zentrale Server angewiesen
5
6
KAPITEL 1. EINLEITUNG
sind, sind sie weniger leicht zu kontrollieren. In Ländern, in denen Meinungsund Pressefreiheit keine Grundrechte sind, können sie helfen sich gegen Zensur und Unterdrückung zu wehren. Ein Beispiel für die Nutzung von Peerto-Peer Technologie wäre der Informationsaustausch zwischen nicht Regierungsorganisationen (NGO) in totalitären Staaten.
Ein System zum freien Austausch von Informationen muss einen ausreichenden Schutz vor Zensur mit sich bringen. Das Netzwerk muss robust gegen Angriffe sein, die die Verfügbarkeit von Informationen einschränken wollen. Informationen sollen langfristig verfügbar gemacht werden, so dass sie
für jedermann zugänglich sind, aber nur von dem jeweiligen Autor gelöscht
oder geändert werden können.
Ein robustes System allein reicht aber nicht aus. Um Meinungsfreiheit zu
propagieren, muss das Peer-to-Peer Netzwerk meiner Meinung nach zwangsläufig
Anonymität gewährleisten. Wenn eine Person, die Informationen aus dem
Netzwerk liest oder Informationen verbreitet, unmittelbare, persönliche Konsequenzen befürchten muss, dann kann daraus eine indirekte Zensur entstehen.
Doch was ist unter einem anonymen Peer-to-Peer Netzwerk zu verstehen? In einem Peer-to-Peer Netzwerk gibt es zunächst eine Menge von Servern, die über ein Netzwerk miteinander kommunizieren. Es gibt Dokumente, die auf den Servern gespeichert sind, und Personen, die Dokumente erstellen, suchen und lesen. Personen, die neue Dokumente erstellen oder verbreiten, werden als Autoren bezeichnet. Die Beziehungen zwischen Servern,
Autoren, Lesern, und Dokumenten ist in Abbildung 1.1 dargestellt.
Abbildung 1.1: Beziehungen in einem Peer-to-Peer Informationssystem
In einem anonymen Peer-to-Peer Netzwerk sollten im Idealfall keine Rückschlüsse
auf diese Beziehungen möglich sein. Zu einem herausgegriffenen Dokument
soll man nicht den Autor, die Leser oder die Server, die das Dokument speichern, erfahren. Zu einem herausgegriffenen Server soll man nicht erfahren,
welche Dokumente auf ihm gespeichert sind. Eine Person, deren Rechner
beschlagnahmt und durchsucht wird, soll in der Lage sein, jede Kenntnis
7
über die auf seinem Rechner gespeicherten Dokumente abzustreiten. Nur
so werden Personen bereit sein, ihre Rechner einem anonymen Peer-to-Peer
Netzwerk anzuschließen.
Wir sehen, dass es unterschiedliche Arten” von Anonymität gibt, je
”
nachdem aus welcher Sicht wir den Begriff betrachten. Dingledine u.a.[9]
identifizieren folgende Anonymitätsbegriffe für Peer-to-Peer Netzwerke:
Autor Anonymität: Ein Dokument lässt keine Rückschlüsse auf seinen
Autor zu.
Leser Anonymität: Die Privatsphäre des Lesers bleibt geschützt. Ein Angreifer kann ein Dokument nicht mit seinen Lesern in Verbindung bringen.
Dokumenten Anonymität: Ein Server weiß nicht, welche Dokumente auf
ihm gespeichert sind.
Server Anonymität: Ein Server kann nicht mit einem bestimmten Dokument in Verbindung gebracht werden.
Anfrage Anonymität: Ein Server erfährt nicht, um welches Dokument es
sich bei einer Anfrage handelt. Eine schwächere Variante ist Anfrage
Abstreitbarkeit: der Server erfährt zwar welches Dokument angefragt
wurde, aber keine dritte Partei. Der Server kann also gegenüber dritten
abstreiten eine bestimmte Anfrage bearbeitet zu haben.
Ebenso wichtig für den Erfolg eines Peer-to-Peer Informationssystems ist
die Frage, wie einfach man Informationen in dem Netzwerk finden kann.
Ich denke, dass eine Stichwortsuche eine viel versprechende Möglichkeit ist.
Der Erfolg von Internet Suchmaschinen und ihr Einfluss auf unser Informationsverhalten legen diese Entscheidung nahe. Zusammengefasst sind die
wichtigsten Ziele in meinem Entwurf:
1. Anonymität für Autoren, Leser und Server
2. Schutz des Server Betreibers gegen strafrechtliche Verfolgung
3. Schutz vor Zensur der Inhalte
4. Erreichbarkeit der Dokumente über eine Stichwortsuche
5. Erschweren von DoS Attacken
Leider stehen die Ziele der Arbeit,Anonymität einerseits und Stichwortsuche
andererseits, zunächst einmal in einem Konflikt zueinander. Wie wollen wir
andere Benutzer in unseren Daten suchen lassen, wenn wir jederzeit in der
Lage sein wollen, jede Kenntnis über den Inhalt abzustreiten? Dieser Konflikt erscheint auf den ersten Blick nur schwer überbrückbar. Um den Spagat
8
KAPITEL 1. EINLEITUNG
zwischen Anonymität und Suchfunktion zu schaffen, benötige ich eine Reihe
fortgeschrittener Methoden und Techniken aus den Bereichen Computernetzwerke und Kryptographie. Die Kernkomponenten in meinem Entwurf
sind:
• Pastry Overlay Netzwerk für ein robustes und effizientes Peer-to-Peer
• TOR Onion Routing für anonyme Kommunikation
• Private Information Retrieval (PIR) für vertrauliche Suchanfragen
• Aufteilung der Daten mittels One-Time-Pad (OTP) Verschlüsselung
• Vertrauliche Vergabe von zertifizierten Pseudoidentitäten
Mein Beitrag besteht darin, diese Techniken in einem Peer-to-Peer Informationssystem zu integrieren. Ich zeige, wie ein zensurresistentes, anonymes
Peer-to-Peer Informationssystem mit Hilfe dieser kryptographischer Techniken realisiert werden kann. Meines Wissens nach ist ein Peer-to-Peer Entwurf
dieser Art neuartig.
Ein weiteres Ergebnis meiner Arbeit ist, das ausreichend starke Peerto-Peer Netzwerke nicht durch Speicherung des Datenverkehrs ausspioniert
werden können. In jüngster Vergangenheit gibt es einen Trend juristische
Mittel zur Überwachung des Datenverkehrs auszuweiten. Insbesondere neue
Gesetze zur Datenbevorratung”, der Speicherung von Daten durch die
”
Internet Service Provider (ISP), zeigen ein wachsendes Interesse an der
Überwachung des Internets. In meiner Arbeit zeige ich, dass selbst, wenn
ein ISP sämtliche Daten eines anonymen Peer-to-Peer Systems aufzeichnet, das System nicht ausspioniert werden kann. Das macht den Nutzen der
Speicherung von Internet Daten fraglich. Da diese Speicherung hohe Kosten
verursachen würde, könnte es im Interesse der ISPs sein, zu zeigen, dass ein
Aufzeichnung der Daten keinen Nutzen bringt, und damit eingespart werden
kann.
Die weiteren Kapitel meiner Arbeit sind wie folgt strukturiert: In Kapitel 2 gebe ich einen Überblick über bestehende Peer-to-Peer Systeme und
vorangegangene Publikationen. In Kapitel 3 führe ich die einzelnen Komponenten meines Peer-to-Peer Entwurfs ein. Insbesondere werden TOR Onion
Routing und PIR erklärt. In Kapitel 4 beschreibe ich konkrete Protokolle und argumentiere für jedes Protokoll, welche Sicherheitseigenschaften es
erfüllt. Kapitel 5 fasst die Ergebnisse meiner Arbeit zusammen und gibt
einen Ausblick auf zukünftige Arbeiten.
Kapitel 2
Vorangegangene Arbeiten
In diesem Kapitel gebe ich einen Überblick über Projekt und Publikationen,
die sich mit anonymen Peer-to-Peer Netzwerken befassen. Ich diskutiere kurz
welche Sicherheitsanforderungen und Arten von Anonymität sie erfüllen.
MUTE [1]verwendet ein Routing Schema, dass auf dem Verhalten von
Ameisen aufbaut, um Suchanfragen anonym weiterzuleiten. Jeder Server sieht nur seine direkten Nachbarn und kann nicht unterscheiden ob
diese nur Anfragen weiterleiten oder selbst anfragen. Die Anforderungen bezüglich Leser- und Server Anonymität sind in MUTE erfüllt. Die
Inhalte verbleiben aber im Klartext auf dem lokalen Rechner, so dass
keine Dokumenten Anonymität besteht. Der Besitzer des Rechners
kann nicht die Kenntnis über den Inhalt der Dokumente abstreiten,
und ist außerdem auch gleich als Autor der Dokumente zu identifizieren. MUTE bietet also keine Autor- und Dokumenten Anonymität.
Freenet Das wahrscheinlich bekannteste Beispiel für ein anonymes Peer-toPeer Netz ist Freenet[7]. Im Gegensatz zu MUTE werden die Inhalte
in Freenet verschlüsselt und nicht mehr auf dem Rechner des Autors
gespeichert, so dass der Autor anonym bleibt.
Wenn ein Client ein Dokument herunterladen möchte, generiert er
aus einer Reihe von Stichworten deterministisch einen Dokumentenschlüssel. Wie der Benutzer die Stichworte lernt ist nicht Teil von Freenet. Der Client startet eine Anfrage mit dem Dokumentenschlüssel an
seinen (lokalen) Server. Wenn der Server das angefragte Dokument
nicht gerade selbst speichert, leitet er die Anfrage an den nächsten
Server weiter. Wird ein passendes Dokument gefunden, so wandert es
auf dem Pfad der Suchanfrage zurück. Der Leser und der Server bleiben
anonym. Die von Freenet verwendete heuristische Routingstrategie ist
allerdings wenig effizient.
Das Hauptproblem, bei dem Ansatz von Freenet ist, dass er keine
starke Dokumenten Anonymität erreicht. Das Dokument ist zwar ver9
10
KAPITEL 2. VORANGEGANGENE ARBEITEN
schlüsselt, aber noch vollständig auf einem Rechner vorhanden. Die
Schlüssel zur Entschlüsselung der Inhalte wird aus den Stichworten,
die das Dokument beschreiben, gewonnen. Um anderen Benutzern eine Chance zu geben die Inhalte zu finden, müssen die Stichworte einfach zu raten sein. Ein Angreifer, der einen Server beschlagnahmt,
kann über einen Wörterbuch Angriff versuchen Dokumente zu entschlüsseln. Unter entsprechenden juristischen Gegebenheiten ist der
Server Betreiber auch hier für die gespeicherten Daten haftbar zu machen.
Anonymous Storage In [14] schlägt Serjantov ein System vor, in dem Inhalte mit einem Secret-Sharing Verfahren auf mehrere Server aufgeteilt
werden. Das würde rechtliche Vorteile für den Serverbetreiber bringen,
der jetzt ernsthaft behaupten kann, dass er kein (vollständiges) Dokument auf seinem Rechner speichert. Allerdings sind die Schlüssel im
Peer-to-Peer gespeichert. Angreifer, leicht auffinden kann. Der Entwurf bietet auch keinen Schutz in dem Fall eines maliziösen ISP oder
wenn der Angreifer die Netzwerkverbindung abhören kann, denn die
Fragmente werden im Klartext übertragen.
Free Haven Das Ziel des Free Haven Projekts[9] ist es, eine robuste, anonyme Publikationsplattform aufzubauen. Das System basiert auf einer dezentralen Gemeinschaft von Servern, dem servnet. Server im
servnet tauschen Inhalte untereinander aus. Ein Dokument wird mittels Secret-Sharing in Fragmente f1 , . . . , fn aufgeteilt, so dass k der
Fragmente genügen, um das Dokument zu rekonstruieren.
Wenn ein Client ein Dokument herunterladen möchte, so muss er
zunächst dessen Dokumentenschlüssel erfahren. Dann sendet er eine
Suchanfrage mit dem Schlüssel und einem anonymen Remailer Block
an einen Free Haven Server(z.B. seinen lokalen Server). Die Suchanfrage wird per Broadcast weitergesendet. Kommt die Anfrage an einem
Server an, der ein Fragment des Dokuments speichert, so sendet er
es über den anonymen Remailer Block an den Client zurück. Free
Haven kommt den Zielen, die ich in meinem Entwurf verfolge, von allen implementierten Systemen am nächsten. Es bietet Autor-, Leser-,
Server- und Dokumenten Anonymität und soll Dokumente auch dann
verfügbar halten, wenn ein mächtiger Angreifer versucht, diese Dokumente verschwinden zu lassen. Ein Nachteil in dem Entwurf von Free
Haven ist, dass der Client den Dokumentenschlüssel bereits kennen
muss. Außerdem wird die Suchanfrage über einen ineffizienten Broadcast versendet. Das System skaliert dadurch nicht für große Netzwerke.
Kleinere Netzwerke bedeuten aber automatisch ein geringeres Maß an
Anonymität.
Censorship-Resistand and Anonymous P2P Filesharing Endsuleit und
11
Mie schlagen in [10] vor, zwei Fragmente aus dem Dokument und einem
One-Time-Pad zu bilden und sie zusätzlich mit einer symmetrischen
Chiffre zu verschlüsseln. Dieses Verfahren bietet informationstheoretische Sicherheit für die gespeicherten Fragmente und damit perfekte Dokumenten Anonymität. Der Schlüssel zu der Chiffre wird aus
den Stichworten, die das Dokument beschreiben, gewonnen. Selbst für
einen maliziösen ISP, der alle Fragmente abfängt, sollte es durch die
doppelte Verschlüsselung nur schwer möglich sein, den Inhalt zu rekonstruieren.
Jeder Teilnehmer im Netzwerk hat eine langlebige Pseudoidentität,
die autorisierte Updates, Ende-zu-Ende Verschlüsselung und signierte
Fragmente erlaubt. Gleichzeitig werden die Pseudonyme in einer Weise vergeben, die keine Verbindung zu der realen Person erlaubt. Die
Anforderungen an Autor- und Leser Anonymität sind damit erfüllt.
Um an ein Dokument zu gelangen, muss der Benutzer aber zunächst
die richtigen Stichworte wissen. Das macht das System für den realen
Einsatz zumindest unpraktisch.
Meine Arbeit baut auf dem Entwurf von Endsuleit und Mie auf und erweitert ihn um eine Suchmaschine. Dabei soll das Maß an Sicherheit für
den Serverbetreiber und den Client so hoch bleiben wie im ursprünglichen
Entwurf. Es wäre deshalb nicht ausreichend den Dokumentenschlüssel für
jedes Stichwort in dem Peer-to-Peer abzulegen. Ein Angreifer könnte über
eine einfache Wörterbuch Attacke erfahren, welche Server Dokumente zu
bestimmten Stichworten speichern. Eine Suche nach den Stichworten De”
mokratie”, und Tibet” würde dem Angreifer eine Liste von Servern liefern,
”
die Dokumente zu den Stichworten Demokratie” und Tibet” enthalten.
”
”
Der Serverbetreiber könnte nicht abstreiten ein Dokument mit dem Inhalt
Demokratie” und Tibet” zu speichern.
”
”
Ein weiteres Problem ist, dass ein einzelner Server für ein Stichwort verantwortlich wäre (Genaugenommen ein Server und seine Nachbarschaft). Ein
Angreifer, könnte den für das Stichwort zuständigen Suchmaschinenserver
einfach ausmachen. Wenn der Angreifer es schafft den Server auszuschalten,
kann er Suchanfragen zu diesem Stichwort verhindern.
Mein Ansatz verwendet ein Private Information Retrieval Schema, um
eine Anfrage gleichmäßig auf viele Server zu verteilen. Es ist nicht mehr
ein einzelner Server (oder eine Nachbarschaft von Servern) für ein spezielles
Stichwort zuständig. Um die Suchmaschine zu integrieren, muss ich den Entwurf von Endsuleit und Mie an mehreren Stellen modifizieren, vor allem ist
es notwendig anonyme Kommunikation zwischen den Knoten im Netzwerk
hinzuzufügen. Im folgenden Kapitel erkläre ich die anonyme Kommunikation
und die weiteren Komponenten in meinem Entwurf.
12
KAPITEL 2. VORANGEGANGENE ARBEITEN
Kapitel 3
Techniken und Komponenten
Dieses Kapitel ist eine Einführung in die verschiedenen Techniken und Komponenten, die in meinem Entwurf verwendet werden.
3.1
Structured Peer-to-Peer Overlay Netzwerke
Grundlage jedes Peer-to-Peer Systems ist eine dezentrale Netzwerkstruktur,
die es den Knoten(oder Peers) in dem Netzwerk ermöglicht unter gegenseitiger Nutzung ihrer Ressourcen miteinander zu operieren. Es ist daher
sinnvoll die verwendete Netzwerkarchitektur genauer zu untersuchen. Im
wesentlichen fordern wir von unserem Netzwerk die folgenden Eigenschaften:
• Robustheit gegen Ausfälle und DoS Angriffe
• effizientes und sicheres Routing
• adaptives Verhalten beim Hinzukommen und Ausscheiden von Knoten
Diese Eigenschaften sollen auch dann erfüllt bleiben, wenn ein Teil der Peers
im Netzwerk maliziös ist. Das Netzwerk soll auch dann Nachrichten korrekt
ausliefern können, wenn ein Teil der Knoten Nachrichten falsch oder gar
nicht weiterleitet. Darüber hinaus ist es wünschenswert, dass das Netzwerk
adaptiv auf das Hinzukommen und Ausscheiden von neuen Knoten reagiert,
ohne dass Dokumente in dem Netzwerk verloren gehen. In einer offenen
Umgebung, wie dem Internet, ist damit zu rechnen, dass das Netzwerk nicht
aus einer festen Anzahl Knoten, sondern einer Vielzahl ständig wechselnder
Parteien besteht.
3.1.1
Pastry
Für meinen Entwurf sind besonders strukturierte Peer-to-Peer Netzwerke
von Interesse, da sie sehr effiziente Routing Mechanismen besitzen. Das
13
14
KAPITEL 3. TECHNIKEN UND KOMPONENTEN
Netzwerk, das meinem Entwurf zugrunde liegt, ist Pastry [13] ein strukturiertes Peer-to-Peer Overlay Network. Wie der Name Overlay” verrät,
”
setzt Pastry auf einem bestehenden Netzwerk, wie etwa dem Internet, auf.
Einem Knoten ist eine zufällig gewählte 128-bit knotenID zugeordnet. Jeder
Knoten verwaltet eine lokale Routingtabelle. Pastry arbeitet nach dem Prinzip einer verteilten Hashtabelle. Jedes Objekt, das in das Pastry Netzwerk
eingespeist wird, erhält einen 128-bit Schlüssel. Pastry speichert ein Objekt
auf dem Knoten, dessen knotenID dem Schlüssel numerisch am nächsten ist.
Erhält ein Knoten eine Nachricht, so leitet er sie an den Knoten in seiner Routingtabelle weiter, der numerisch näher am Empfänger der Nachricht
liegt. Genauer leitet er sie an einen Knoten weiter, dessen knotenID mit dem
Schlüssel der Nachricht ein gemeinsames Präfix hat, das länger als das gemeinsame Präfix des aktuellen Knoten mit dem Schlüssel ist. Die Anzahl der
Routing Schritte ist logarithmisch in der Anzahl der Knoten im Netzwerk.
In einem Netzwerk aus N Knoten, leitet Pastry eine Nachricht in erwarteten O(dlog N e) Schritten zu ihrem Empfänger, was unsere Anforderung des
effizienten Routing erfüllt.
Was aber passiert, wenn ein Knoten das Netzwerk verlässt oder aus anderen Gründen nicht erreichbar ist? Um Robustheit zu erreichen, repliziert
die Nachbarschaftsmenge jedes Knoten dessen Daten. Die Nachbarschaftsmenge eines Knoten Bob besteht aus Knoten deren knotenIDs numerisch
nahe an der knotenID von Bob sind. Die Knoten aus der Nachbarschaft
können Anfragen an Bob’s Stelle beantworten. Dadurch wird das Netzwerk
robuster gegen Knotenausfälle. Wenn Knoten das Netzwerk verlassen oder
neue Knoten hinzukommen, wird die Nachbarschaftsmenge automatisch angepasst.
Wie schon bemerkt, müssen wir davon ausgehen, dass f < N der Knoten in dem Pastry Netzwerk maliziös sind. Diese Knoten können beliebig
vom Protokoll abweichen, insbesondere Nachrichten verwerfen, falsch weiterleiten oder verändern. Damit das Peer-to-Peer System trotzdem korrekt
funktioniert, muss es über sichere Routing Primitiven verfügen. Castro u.a.
identifizieren in [4] drei notwendige Bedingungen für sicheres Routing in
Peer-to-Peer Netzen:
1. sichere Vergabe von Knotennamen
2. sichere Verwaltung der Routingtabellen
3. sicheres Weiterleiten von Nachrichten
Die sichere Vergabe der Knotennamen kann über eine zentrale Certification
Authority (CA) erfolgen. Siehe dazu den nächsten Abschnitt 3.2.
3.2. AUTHENTIFIZIERUNG
15
Der zweite Punkt betrifft die Routingtabelle eines Pastry Knoten. Castro u.a. schlagen in [4] einen hybriden Ansatz mit zwei Routingtabellen
vor. Die erste Tabelle nutzt Informationen über die Netzwerkumgebung des
Knoten, um ein effizientes Routing zu erreichen. Die zweite Routingtabelle
ist in ihren Werten beschränkt: Ein Eintrag an der Stelle (i, j) ist die IP
Adresse eines Knoten, dessen knotenID an allen Stellen bis zu der i + 1-ten
Stelle mit der des Routers übereinstimmt und an der i + 1-ten Stelle den
Wert j hat. Die Wahl der Routingtabellen ist daher stark eingeschränkt, so
dass es für einen Angreifer schwer ist, sie für einen Angriff zu missbrauchen.
Der dritte Punkt wird in Pastry dadurch sichergestellt, dass ein Router
über einen Routingfehler-Test ein falsches Weiterleiten seiner Nachricht mit
hoher Wahrscheinlich bemerkt. Dann sendet er die gleiche Nachricht noch
einmal über mehrere Routen. Die Wahrscheinlichkeit, dass ein Angreifer alle
diese Routen kontrolliert, ist gering.
Die Details der Routing Technik sind in [4] zu finden. In [13] untersuchen
Rowstron und Druschel die Performanz von Pastry und kommen zu dem
Schluss, dass Pastry effizient ist, gut skaliert und Knotenausfälle ausgleichen
kann.
3.2
Authentifizierung
Ein zentrales Problem in allen Peer-to-Peer Netzwerken ist die Authentifizierung neuer Knoten.
Wir wollen jeder Person im Peer-to-Peer eine eindeutige und langlebige
Pseudoidentität (pseudoID) und jedem Rechner eine zufällige knotenID zuordnen. Die pseudoID ermöglicht es, Dokumente zu signieren, autorisierte
Updates vorzunehmen und schwarze Listen anzulegen. Bei der Vergabe der
knotenIDs ist sicherzustellen, dass sie gleichförmig über den Namensraum
verteilt sind. Wenn ein Angreifer, nennen wir ihn Eve, in der Lage ist, seine
knotenID beliebig zu wählen, kann er die Integrität des Netzwerks angreifen.
Auch wenn Eve eine große Anzahl von knotenIDs erlangen kann, ist er in
der Lage das Netzwerk zu sabotieren, zum Beispiel in dem er Nachrichten
nicht weiterleitet.
Um zu verhindern, dass Eve übermäßig viele Knoten erhält, verwenden
ich eine zentrale Certification Authority (CA), die Pseudoidentitäten und
knotenIDs vergibt. Wir wollen verhindern, dass die Pseudoidentitäten und
knotenIDs mit realen Personen in Verbindung gebracht werden können, um
Anonymität zu gewährleisten. Wir verwenden ein Blinde-Signatur Schema,
in dem die CA gültige Zertifikate für Pseudoidentitäten und knotenIDs aus-
16
KAPITEL 3. TECHNIKEN UND KOMPONENTEN
stellt, ohne die signierten Werte zu erfahren.
In einer offenen Umgebungen, wie dem Internet, ist es allerdings sehr
schwierig eine zentrale CA aufzubauen, der alle Teilnehmer vertrauen. Für
solche Umgebungen sind dezentrales Verfahren interessant. Eine Möglichkeit
ist, jeden Teilnehmer in regelmäßigen Abständen ein kryptographisches Rätsel
lösen zu lassen[12]. Ein Angreifer, der versucht eine Vielzahl von Knoten ins
Netz einzuschleusen, müsste über enorme Rechenkapazität verfügen um alle
Rätsel zu lösen. Die Vergabe über eine CA ist aber der wesentlich sicherere,
wenn auch weniger gut realisierbare Ansatz.
3.3
One-Time-Pad Verschlüsselung
Um Dokumente zu verschlüsseln, benutze ich ein One-Time-Pad(OTP) Verfahren. Dabei wird bitweise das XOR-Produkt aus dem Klartext und einem
Zufallsstring gleicher Länge gebildet. Der OTP liefert informationstheoretische Sicherheit, in dem Sinne, dass das Chiffrat tatsächlich keine Information über den Klartext mehr enthält. Damit sollte ein Serverbetreiber in der
Lage sein, jegliche Kenntnis über gespeicherte Inhalte abzustreiten. Durch
den Einsatz von Spezialhardware oder Projekte wie [2], sollte es in Zukunft
möglich sein echten Zufall in ausreichend großer Menge zur Verfügung zu
haben.
3.4
Onion Routing
Onion Routing basiert auf der Idee von Mixer”-Netzwerken. Nachrichten
”
werden auf einem, vom Sender gewählten Pfad, über mehrere Onion Routern
gesendet. Der Absender verschlüsselt die Nachricht in mehreren Schichten”,
”
ähnlich den Schichten einer Zwiebel. Auf dem Weg durch das Netzwerk entfernt jeder Onion Router auf dem Pfad eine Schicht” der Verschlüsselung
”
und leitet die Nachricht dann an den nächsten Router weiter. Die Router mixen” die Nachrichten, indem sie Nachrichten zwischenspeichern und
”
in permutierter Reihenfolge weitersenden. Für einen Angreifer ist es daher
schwer, den Pfad einer Nachricht nachzuvollziehen.
3.4.1
TOR Onion Routing
In meinem Entwurf benutze ich das Onion Routing Schema von TOR [8].
TOR bietet perfekte Vorwärts-Sicherheit, Ende-zu-Ende Integritäts Checks
und variable Routing Taktiken für TCP-Anwendungen. TOR umfasst ungefähr 160 Onion Router auf fünf Kontinenten und über zehntausend Benutzer (Stand Mai 2005).
3.4. ONION ROUTING
3.4.2
17
Aufbau anonymer Kanäle
Seien P1 , . . . , PN die Onion Router im Netzwerk. Router kommunizieren
über sichere Kanäle miteinander und es gebe eine Public Key Infrastruktur.
Nehmen wir an, Alice möchte Bob eine anonyme Nachricht schicken. Sie
baut dazu schrittweise einen anonymen Kanal zu Bob auf. Sie wählt eine
zufällige Menge von Onion Routern P1 , . . . , Pn und eine KanalID CAliceBob .
Dann erzeugt sie ein create-Nachricht für den Router P1 , zusammen mit der
ersten Hälfte eines Diffie-Hellman Schlüssels. Die Schlüsselhälfte ist mit dem
öffentlichen Schlüssel von P1 chiffriert:
(create, CAliceBob , EncP1 (g x ))
Diese Nachricht sendet Alice über eine TLS-Verbindung an den Router P1 .
P1 antwortet mit einer created -Nachricht, der zweiten Hälfte des DiffieHellman Schlüssels und einem Hashwert des gemeinsamen Schlüssels K =
g xy ::
(created, g y , H(K| handshake”))
”
Mit dem Hashwert beweist P1 , dass die Nachricht wirklich von ihm kommt.
Alice und P1 verfügen jetzt über ein gemeinsames Geheimnis K. Die Nachrichten zwischen Alice und P1 werden von nun an mit dem Schlüssel K
verschlüsselt. Alice erweitert den anonymen Kanal teleskopartig”. Sie sen”
det eine extend -Nachricht mit der Adresse von P2 und einem, mit dem
öffentlichen Schlüssel von P2 chiffrierten, g x2 an P1 :
(extend, P2 , EncP2 (g x2 ))
P1 wählt eine KanalID CP 1P 2 und erzeugt eine create-Nachricht mit dem
Inhalt (create, CP 1P 2 , g x2 ) für P2 . Diese Nachricht wird über eine TLSVerbindung an P2 gesendet.
P2 antwortet mit einer created -Nachricht, einem g y und einem Hashwert
H(K). P2 leitet g y und H(K) Inhalt einer extended -Nachricht an Alice weiter. Alice hat jetzt ein gemeinsames Geheimnis mit P2 . Der anonyme Kanal
umfasst jetzt Alice, P1 , und P2 . Es ist zu beachten, dass Alice zwar weiß,
dass sie mit P2 kommuniziert, aber P2 kommuniziert nur mit P1 und weiß
nicht wer den anonymen Kanal initiiert hat. Jeder Knoten auf dem Kanal
hat einen gemeinsamen Schlüssel mit Alice, aber nur Alice hat Kenntnis aller geheimen Schlüssel und weiß welche Knoten den Kanal bilden. Der Kanal
wird schrittweise erweitert, bis Alice einen anonymen Kanal zwischen sich
und Bob aufgebaut hat.
3.4.3
Konstruktion einer Nachricht
Sobald Alice einen anonymen Kanal zu Bob aufgebaut hat, kann sie Nachrichten versenden. Nehmen wir an, dass P1 , P2 , . . . , Pn+1 = Bob die Onion
18
KAPITEL 3. TECHNIKEN UND KOMPONENTEN
Router sind, die den anonymen Kanal bilden, und K1 , . . . , Kn+1 die zugehörigen, symmetrischen Schlüssel. Alice erzeugt den Datenteil der anonymen Nachricht, indem sie die Nachricht m in mehreren Schichten” zu einem
”
Chiffrat c1 verschlüsselt.
cn+1 = {m}Kn+1
(3.1)
cn = {cn+1 }Kn = {{m}Kn+1 }Kn
..
.
c1 = {c2 }K1 = {. . . {{m}Kn+1 }Kn . . .}K1
Zu dem Datenteil wird ein Header mit einer Prüfsumme hinzugefügt. Die
Prüfsumme ist der Hashwert der Nachricht mit einer Hashfunktion H. Der
Header wird genau wie die Nachricht in mehreren Schichten verschlüsselt.
Headn+1 = {H(m)}Kn+1
(3.2)
Headn = {Headn+1 }Kn = {{H(m)}Kn+1 }Kn
..
.
Head1 = {Head2 }K1 = {. . . {{H(m)}Kn+1 }Kn . . .}K1
Aus dem Chiffrat c1 und dem Headern H1 bildet Alice die Onion-Nachricht:
O1 = (CAliceBob , Head1 , c1 )
3.4.4
Weiterleiten von Onions
Wenn der Router P1 die Nachricht O1 empfängt, entfernt er eine Schicht der
Verschlüsselung, jeweils vom Datenteil und vom Header. Er schaut nach,
welcher Router als nächster auf dem Kanal folgt. Er ersetzt die KanalID
durch CP1 P2 .
O2 = P rocOnion(O1 , K1 , CP1 P2 ) = (CP1 P2 , Head2 , c2 )
und sendet die Onion-Nachricht O2 auf dem anonymen Kanal an den Router
P2 weiter. Der Router P2 verfährt mit der Nachricht in gleicher Weise, indem er mit dem Schlüssel K2 eine Schicht der Verschlüsselung entfernt, die
KanalID anpasst und die Nachricht an den nächsten Router weiter sendet.
Schließlich erhält Bob die Nachricht. Er entschlüsselt sie mit seinem
Schlüssel Kn+1 und erhält:
On+1 = P rocOnion(On+1 , Kn+1 , CPn Bob )
= (⊥, H(m), m)
(3.3)
3.4. ONION ROUTING
19
Bob erkennt, dass er keine passende KanalID zum weiterversenden hat. Er
überprüft durch Berechnen des Hashwertes die Integrität der Daten.
Bob kann Alice über den selben anonymen Kanal antworten. Er verschlüsselt seine Nachricht und die zugehörige Prüfsumme mit dem Schlüssel
Kn+1 , und sendet sie über den Kanal CPn+1 Pn an den Router Pn . Pn und
alle folgenden Router fügen je eine weitere Schicht der Verschlüsselung hinzu und senden die Nachricht auf dem anonymen Kanal weiter. Schließlich
erhält Alice die mit Kn+1 , Kn , . . . , K1 verschlüsselte Nachricht. Sie entfernt
alle Schichten der Verschlüsselung und erhält die Antwort.
3.4.5
Rendezvous Punkte
Zusätzlich zu der Möglichkeit anonyme Nachrichten zu versenden, ist es in
meinem Entwurf notwendig, dass Router Nachrichten erhalten können und
dabei selber anonym bleiben. Ich verwende Rendezvous Punkte um verborgene Dienste (location-hidden services) zu konstruieren.
Solche verborgenen Dienste ermöglichen es Bob einen Service, wie zum
Beispiel einen Web Server, anzubieten, ohne seine Adresse im Peer bekanntzugeben. Er wählt dazu einen oder mehrere Knoten als Zugangspunkte
(Frontends). Wenn Alice auf Bob’s Web Server zugreifen möchte, wählt sie
zunächst einen Knoten als ihren Rendezvous Punkt. Sie verbindet sich mit
einem von Bob’s Zugangspunkten und teilt ihm ihren Rendezvous Punkt
mit. Dann wartet sie darauf, dass Bob sich mit ihrem Rendezvous Punkt
verbindet.
1. Bob erzeugt ein Public Key Schlüssel Paar um seinen Service zu identifizieren.
2. Bob wählt ein Menge von Knoten PZP1 , . . . , PZPn als Zugangspunkte
aus. Er baut einen anonymen Kanal zu jedem der Zugangspunkte auf
und sendet ihm eine Benachrichtigung, dass er auf Anfragen warten
soll.
3. Bob veröffentlicht die Zugangspunkte zusammen mit einer Beschreibung seines Services. Er signiert die Veröffentlichungen mit seinem
privaten Schlüssel.
4. Alice möchte Bob’s Service nützen. Sie wählt einen Knoten PRP als
ihren Rendezvous Punkt. Sie baut einen anonymen Kanal zu PRP auf
und sendet ihm einen zufäl̈lig gewählten Wert c.
5. Alice baut einen anonymen Kanal zu einem Zugangspunkt PZP i auf.
Sie bildet eine Nachricht aus ihrem Namen, ihrem Rendezvous Punkt,
20
KAPITEL 3. TECHNIKEN UND KOMPONENTEN
der ersten Hälfte eines Diffie-Hellmann Schlüssels und dem Wert c:
(Alice, PRP , g x , c)
Sie verschlüsselt die Nachricht mit Bob’s öffentlichem Schlüssel und
sendet sie an PZPi
6. Der Zugangspunkt PZP i sendet die Nachricht an Bob weiter.
7. Wenn Bob auf Alice Anfrage eingehen möchte, baut er einen anonymen Kanal zu dem Rendezvous Punkt PRP auf und sendet die zweite
Hälfte des Diffie-Hellmann Schlüssels, den Wert c und den Hashwert
des Diffie-Hellmann Schlüssels:
(g y , c, H(g xy ))
8. Der Rendezvous Punkt verbindet den anonymen Kanal von Bob mit
dem von Alice. Nachrichten die auf dem anonymen Kanal von Alice
kommen, sendet er auf dem Kanal an Bob weiter und umgekehrt. Er
kennt dabei weder Alice noch Bob oder erfährt etwas über die Daten,
die beide austauschen. Alice und Bob besitzen jetzt einen gemeinsamen
anonymen Kanal und kommunizieren wie üblich.
Zugangspunkte bieten neben der Möglichkeit versteckte Dienste anzubieten
auch verstärkte Sicherheit gegen Denial-of-Service Attacken. Bob’s Adresse
ist Alice nicht bekannt. Bob kann sich jederzeit dazu entscheiden nicht auf
Alice Anfrage einzugehen, wenn er den Verdacht hat, dass Alice eine Denialof-Service Attacke unternimmt. Wenn einer der Zugangspunkte angegriffen
wird, kann Bob einfach einen neuen Zugangspunkt für seinen Service wählen.
3.5
Private Information Retrieval
Bei dem Problem des Private Information Retrieval (PIR)[6] geht es darum,
dass ein Client Informationen von einem Datenbankserver abfragen möchte,
ohne dass der Server dabei etwas über den Inhalt der Anfrage lernen soll.
Eine triviale Lösung für das Problem ist die Datenbank vollständig an
den Client zu senden. Bei realistischen Größen für die Datenbank ist diese
Lösung nicht mehr praktikabel. Leider gibt es für den Fall eines einzelnen
Servers keine Lösung, die geringeren Kommunikationsaufwand hat als die
triviale[6]. Eine Möglichkeit den Aufwand zu verringern, ist die Datenbank
auf mehreren Servern zu replizieren. Eine andere Möglichkeit ist, den Sicherheitsbegriff abzuschwächen. Das führt zu dem Begriff des Computational Private Information Retrieval (CPIR) [5]. Dabei wird verlangt, dass ein
polynomiell beschränkter Datenbankserver den Inhalt der Suchanfrage nicht
3.5. PRIVATE INFORMATION RETRIEVAL
21
erfährt. Da dieser Sicherheitsbegriff für meine Anforderungen ausreicht, verwende im weiteren der Übersichtlichkeit halber die Begriffe PIR und CPIR
synonym.
3.5.1
Private Information Retrieval und Anonymität
Wenn man anonyme Kommunikation voraussetzt, lassen sich PIR Protokolle mit deutlich besserer Effizienz konstruieren. Ishai u.a. beschreiben diese
Technik in [11]. Sie verwenden einen Ansatz, bei dem die Clients ihre Anfragen aufteilen und als Eingabe für ein multi-Server PIR Protokoll verwenden.
Alle Anfragen werden an den Server gesendet, der nicht wissen kann, welche
Anfrage von welchem Client stammt. Ein Client kann aus den Antworten
des Protokolls das Ergebnis seiner Anfrage konstruieren.
3.5.2
Konstruktion des PIR Schemas
Ich beschreibe in diesem Abschnitt das P IR Schema von Ishai u.a für Peerto-Peer Systeme. Das Schema baut auf einem t-Server informatonsheoretisch
sicherem PIR Protokoll auf, in dem die Sicherheit des Clients für bis zu k
kooperierende, maliziöse Server gewährleistet ist. Die Anfragen eines Clients werden als Punkte auf einem Polynom vom Grad k aufgefasst. Jeweils
k Punkte verraten nichts über die Anfrage i, während k + 1 Punkte i eindeutig festlegen.
Die Sicherheit des Protokolls beruht auf der Annahme, dass die Interpolation verrauschter Kurven von geringem Grad schwierig ist. Die Annahme
besagt, dass eine Kurve vom Grad k über einem endlichen Körper nicht rekonstruiert werden kann, wenn zusammen mit den Werten der Kurve eine
ausreichende Menge von Rauschwerten ausgegeben wird. Durch das Ver”
rauschen” der Anfragen mit Zufallswerten soll i verschleiert werden. Wie sich
aber zeigt, muss der Anteil des Rauschen mindestens in der Größenordnung
der Datenbank liegen. Damit ist dieser Ansatz für einen einzelnen Client
sinnlos.
Die Erkenntnis bei Ishai u.a. ist, dass die gleiche Menge an Rauschen
benutzt werden kann um eine beliebige Menge von Kurven zu verschleiern.
Wenn viele Clients Anfragen an die Datenbank senden, ist die Anzahl der
Rauschwerte, den jeder Client beitragen muss, klein.
3.5.3
Das PIR Model
Jeder Knoten in dem Peer kann drei verschiedene Rollen annehmen: als Datenbankbesitzer, der Daten über ein P IR Schema für die anderen Peer Teilnehmer zugänglich machen möchte, als Server, der einen Teil seiner Ressourcen für andere Datenbanken zur Verfügung stellt, und als Client, der Daten
22
KAPITEL 3. TECHNIKEN UND KOMPONENTEN
aus einer Datenbanken abfragen möchte.
Um eine Datenbank x der Größe m in das Peer einzuspeisen, betrachtet man die Einträge xi als Werte eines c-dimensionalen Polynoms qx vom
Grad höchstens d über einem endlichen Körper F . Ein Index i entspricht
einem Punkt zi ∈ F c , mit qx (zi ) = xi . Der Datenbankbesitzer berechnet alle
möglichen Werte des Polynoms und sendet sie an an eine Menge von Datenbankservern. Wenn die Anzahl der Server ausreichend groß ist, speichert
jeder Server nur einen einzelnen Eintrag aus der Datenbank.
Um einen Eintrag xi aus der Datenbank abzufragen, wählt ein Client eine zufällige Kurve p = (p1 , . . . , pc ) vom Grad k mit p(0) = zi und t = kd + 1
zufällige Stützstellen aj ∈ F \{0}. Er sendet an die Server t anonyme Anfragen vj = p(aj ) ∈ F c und zufällige Rauschwerte bj ∈R F c , so dass die Anzahl
aller Rauschwerte mindestens n beträgt. Jeder Server antwortet auf die Anfrage vj mit dem Wert sj = qx (vj ) aus seiner Tabelle mit Datenbankwerten.
Die Punkte (aj , sj ) legen ein Polynom qx ◦ p vom Grad kd fest. Der Client
interpoliert diese Punkte, wertet das Polynom an der Stelle 0 aus und erhält
xi . Damit die Interpolation erfolgreich ist muss die Anzahl der Elemente in
F größer sein als t + 1.
Wir wählen c als Konstante und setzten t = O(km1/c ). Die Menge des
Rauschens liegt in der Größenordnung der Datenbank. Der endliche Körper
F ist polynomiell in m.
Unter der Annahme, dass anonyme Kanäle existieren, gibt es ein einRunden PIR Protokoll mit verteilten Servern und amortisierter Kommunikationsund Rechenkomplexität von Õ(t) = Õ(km1/c ) pro Anfrage. Das Protokoll
ist berechenbar sicher, solange die nicht maliziösen Clients mindestens n(k)
Rauschanfragen produzieren.
Zusätzlich hat dieses PIR Schema den Vorteil der Lastenverteilung: die
Last der Suchanfragen wird durch die verteilte Struktur der Datenbank
gleichmäßig auf alle Knoten im Peer verteilt. Auch dann, wenn ein Index
von vielen Clients angefragt wird, bleibt die Anfragelast durch die zufällige
Wahl der Kurve p auf fast allen Datenbankservern gleichmäßig hoch. Das
macht das System weniger anfällig gegen Denial-of-Service Attacken.
Das PIR Schema erlaubt es, eine verteilte Suchmaschine aufzubauen,
in der die Anfragen der Clients anonym bleiben. Im nächsten Kapitel gebe
ich Protokolle, in dem das PIR Schema zur Suche in einem Peer-to-Peer
Informationssystem benutzt wird.
Kapitel 4
Peer-to-Peer Entwurf
Dieses Kapitel enthält den detaillierten Entwurf meines Peer-to-Peer Informationssystems. Ich gebe Protokolle für die grundlegenden Funktionen: neue
Teilnehmer treten dem Netzwerk bei, suchen nach Dokumenten, speichern
und laden Dokumente, etc. Ich diskutiere zu jedem Protokoll die erreichten
Eigenschaften, insbesondere Korrektheit, Vertraulichkeit und Robustheit.
4.1
Überblick
Grundlage meines Entwurfs ist ein Pastry Overlay Netzwerk. Jede Person
hat ein Pseudonym und jeder Rechner hat eine eindeutige knotenID. Eine
CA vergibt Pseudonyme und knotenIDs in in vertraulicher Weise. Die Architektur von Pastry garantiert sichere und effiziente Kommunikation, robustes
Speicherung von Fragmenten durch Replizieren und adaptives Verhalten des
Netzwerks beim Hinzukommen und Ausscheiden von Rechnern. TOR Onion
Routing ermöglicht anonyme Kommunikation und versteckte Dienst. Jeder
Rechner im Netzwerk kann (gleichzeitig) drei verschiedenen Rollen annehmen:
1. Datenserver
2. Client
3. Suchmaschinenserver
Als Datenserver speichert er Fragmente von Dokumenten. Als Client kann er
Anfragen an die verteilte Suchmaschine stellen, Dokumente ablegen, herunterladen, aktualisieren oder löschen, genauso wie Einträge in seiner Suchmaschine anlegen oder löschen. Als Suchmaschinenserver beantwortet er Anfragen an die verteilte PIR Suchmaschine. Für jede diese Funktionen gebe
ich im nächsten Abschnitt geeignete Protokolle an.
23
24
KAPITEL 4. PEER-TO-PEER ENTWURF
4.2
4.2.1
Protokolle
Join
Eine neue Teilnehmerin, nennen wir sie Alice, möchte dem Peer-to-Peer
beitreten. Um eine Pseudoidentität zu erhalten führen Alice und die CA die
folgenden Schritte durch:
1. Alice muss der CA zunächst beweisen, dass sie auch wirklich Alice ist,
z.B. durch Vorlage eines gültigen Personalausweises.
2. Alice erzeugt eine zuällige 160-bit pseudoID und ein Schlüsselpaar
(eP , dP ).
3. Alice wählt eine Zufallszahl r und multipliziert ihre pseudoID und das
Schlüsselpaar mit reCA , wobei eCA der öffentliche Schlüssel der CA ist:
a := reCA ∗ (pseudoID, (eP , dP )).
4. Die CA signiert a mit ihren privaten Schlüssel dCA und sendet den
Wert adCA an Alice zurück.
5. Alice multipliziert mit r−1 und hat nun ein Zertifikat (pseudoID, (eP , dP ))dCA .
Die Schritte um eine knotenID zu erhalten sind ähnlich, allerdings wollen wir
sicherstellen, dass die knotenID gleichförmig aus dem Namensraum gewählt
ist.
1. Alice erzeugt eine zufällige 128-bit knotenID und ein Schlüsselpaar
(eS , dS ).
2. Alice wählt Zufallszahlen r1 , r2 , r3 und sendet (c1 , c2 ) := (r2eCA ∗ r1 ∗
eS , eS ∗ r3eCA ) an die CA.
3. Die CA erzeugt eine Zufallszahl r4 . Sie berechnet a1 := (c1 ∗ r4 )dCA
und a2 := cd2CA und sendet beide Werte an Alice.
4. Alice berechnet a2dCA ∗ r3−1 = edSCA und erhält ein Zertifikat für den
Schlüssel eS . Zusätzlich berechnet sie a3 := r2−1 a1 = r1dCA edSCA r4dCA . a3
ist die knotenID. Sie enthält je eine Zufallszahl von Alice und eine Zufallszahl der CA und ist damit zufällig aus dem Namensraum gewählt.
Durch die blinde Signatur erfährt die CA den Wert von a3 nicht.
Korrektheit Wenn Alice und die CA ehrlich sind, erhält Alice eine gültige
Signatur zu ihrem Pseudonym und Schlüsselpaar, sowie eine zufällige
knotenID und ein Signatur für das knotenID Schlüsselpaar.
Vertraulichkeit Durch die blinde Signatur ist der Wert den die CA signiert
vollkommen zufällig. Die CA ist nicht in der Lage Alice Pseudonym
oder die knotenID zu erfahren.
4.2. PROTOKOLLE
4.2.2
25
Create Search Database
Alice kann eine eigene, verteilte Suchmaschine im Netzwerk aufbauen.
1. Sie erzeugt ein Public Key Schlüsselpaar (edb , ddb ) für ihre Datenbank.
2. Sei x die Datenbank mit n Einträgen. Man betrachte die Einträge xi
als Werte eines c-dimensionalen Polynoms qx vom Grad höchstens d =
O(m1/c ) über einem endlichen Körper F . Ein Index i in x entspricht
einem Punkt zi ∈ F c , mit qx (zi ) = xi . Alice berechnet alle Werte
xj = qx (zj ), 1 ≤ j ≤ n des Polynoms.
3. Sie signiert die Werte mit ihrem privaten Schlüssel und bildet eine
Nachricht aus dem Wertepaar, dem Namen der Datenbank und dem
öffentlichen Datenbankschlüssel:
(createDB, x, sigdAlice (zj , xj ), edb )
Die Nachricht sendet Alice über einen anonymen Kanal an den Server
mit der knotenID dbID := H(x, xj ).
4. Der Server speichert das Tupel (zj , xj ) zusammen mit x und dem
öffentlichen Schlüssel edb in einer Datenbank Tabelle.
Korrektheit Wenn Alice und alle Server ehrlich sind, dann speichert jeder
Server einen gültigen Eintrag der Datenbank.
Vertraulichkeit Durch die anonymen Kanäle ist die Kommunikation zwischen Alice und den Servern geschützt. Nur die Server lernen die Werte in Alice Suchmaschine. Alice Pseudonym ist nicht mit ihrer wahren
Identität in Verbindung zu bringen.
Robustheit Unter der Annahme des sicheren Routing erreichen die meisten Datenbankwerte ihren Server oder einen Server in seiner Nachbarschaftsmenge.
4.2.3
Publish
Nehmen wir an, Alice will ein neues Dokument in das System einspeisen.
Dokumente werden so in zwei Fragmente aufgeteilt, dass jedes Fragment für
sich keine Information im informationstheoretischen Sinne enthält. Wenn
Alice ein Dokument m einspeisen möchte, geht sie wie folgt vor:
1. Sie wählt eine Liste von Stichworten k1 , . . . , kl , die das Dokument
möglichst treffend beschreiben. Die Stichworte werden später in der
Suchmaschine verwendet. Sie berechnet den Hashwert H0 := H(k1 | . . . |kl )
der konkatonierten Stichworte mit Hilfe einer öffentlich bekannten 160bit Hashfunktion H.
26
KAPITEL 4. PEER-TO-PEER ENTWURF
2. Alice wählt die 128 höherwertigen Bits von H0 und berechnet daraus
einen Schlüssel k.
3. Alice erzeugt zwei Hashwerte H1 := H(H0 |1) und H2 := H(H0 |2) aus
dem Hashwert H0 . Diese Hashwerte dienen als Fragment Schlüssel.
4. Alice verschlüsselt das Dokument m mit einer symmetrischen Chiffre
(z.B. AES) und dem Schlüssel k: Enck (m).
5. Zuletzt verschlüsselt Alice das Chiffrat Enck (m) mit einem OTP r der
Länge |m| und bildet die Fragmente
p1 := sig((r ⊕ Enck (m), H1 ), dAlice )
p2 := sig((r, H2 ), dAlice )
Der Hashwert H0 muss zum Auffinden des Dokuments bekannt sein.
Die Wahl von H0 als Hashwert der Stichworte k1 , . . . , kl ist nicht zwingend. Wichtig ist nur, dass H0 (pseudo)zufällig gewählt wird und dass
die Fragmente p1 und p2 nicht auf dem selben Knoten abgelegt werden.
6. Alice sendet ein Nachricht (store, σAlice ) ihrem Public Key Zertifikat an die Knoten, die für den Schlüssel zuständig sind, der den 128
höherwertigen Bits von Hi , i = 1, 2 entspricht.
7. Zumindest alle ehrlichen Knoten antworten, indem sie ihre Public Key
Zertifikate und ihren öffentlichen Schlüssel eserver an Alice senden. Jeder Server verfügt über einen oder mehrere Zugangspunkte für seinen Dienst. Jeder der Zugangspunkt hat von seinem Server eine Zufallszahl c bekommen. Alice muss diesen Wert in ihre Suchmaschine
eintragen.Die Server senden Alice die Adresse ihrer Zugangspunkte
knotenIDzp und den Zufallswert c. Alice überprüft die Gültigkeit der
Zertifikate.
8. Alice erzeugt ein Public Key Schlüsselpaar (ef ile , df ile ) und sendet an
alle Server, die gültige Zertifikate gesendet haben, die Nachricht:
(pi , Enc((Hi , ef ile ), eserver ))
9. Die Server speichern das Fragment, den Fragment Schlüssel und den
öffentlichen Schlüssel.
Um das Dokument über die P IR Suche im Netzwerk auffindbar zu machen,
führt Alice für jedes Stichwort k die folgenden Schritte aus:
1. Sie bildet k mit einer Hashfunktion auf einen numerischen Index i ab,
dem ein Punkt zi ∈ F c zugeordnet ist.
4.2. PROTOKOLLE
27
2. Sie bildet das Tupel
xi := (knotenIDzp , H0 , c)
wobei knotenIDzp die Liste von Zugangspunkten ist, H0 der Dokumentenschlüssel und c die Liste von Zufallszahlen für die Zugangspunkte.
3. Alice setzt den Wert ihrer Funktion qx an der Stelle zi auf den Wert
des Tupels: qx (zi ) := xi
4. Alice baut einen anonymen Kanal zu dem Server auf, der den Wert
des Polynoms an der Stelle zi speichert.
5. Sie sendet eine Nachricht (updateDB, sig((x, xi ), ddb )) an den Server.
Der überprüft die Signatur mit dem Datenbankschlüssel. Wenn die
Signatur korrekt ist, aktualisiert er die Datenbank mit dem neuen
Wert xi .
Korrektheit Es ist einfach nachzuvollziehen, dass wenn alle Teilnehmer
ehrlich handeln, zwei korrekte Fragmente eingespeist werden, und beide zusammen mit dem korrekten Schlüssel das Dokument liefern.
Vertraulichkeit Der OTP bietet perfekte Sicherheit im informationstheoretischen Sinne. Daher kann weder einer der Server, noch ein dazwischenliegender Router den Inhalt der Fragmente entschlüsselen. Selbst
wenn beide Fragmente bekannt sind, ist der Inhalt noch mit einer symmetrischen Chiffre geschützt.
Der Fragment Schlüssel Hi ist nur Alice und den Servern bekannt.
Genauer ist nur Alice und den Servern bewusst, dass ein Dokument
eingespeist wird, da der anonyme Kanal Ende-zu-Ende verschlüsselt
ist. Wenn einer der Server maliziös ist, weiß er, dass Alice ein Dokument publiziert. Er kann von dem Pseudonym aber nicht auf Alice
wirkliche Identität schließen. Alice bleibt als Autor gegenüber den Servern (pseudo-)anonym.
Robustheit Robustheit verlangt, dass die Fragmente auch dann an die
korrekten Server ausgeteilt werden, wenn f Teilnehmer maliziös sind
und beliebig vom Protokoll abweichen. Ich benutze die Annahme des
sicheren Routing und der robusten Replizierung durch Pastry.
Alice kann den anonymen Kanal auch dann aufbauen, wenn f der
Knoten Nachrichten löschen oder falsch weiterleiten. Um das zu sehen,
nehmen wir an, dass Alice bereits einen Kanal der Länge n (n = 0 ist
zulässig) aufgebaut hat und betrachten die Erweiterung des Kanals um
einen weiteren n+1-ten Knoten. Durch das sichere Routing erreicht die
extend -Nachricht den letzten Knoten auf dem Kanal. Wenn Alice, eine
28
KAPITEL 4. PEER-TO-PEER ENTWURF
extended -Antwort bekommt, kann sie über den Hashwert feststellen, ob
der Kanal um den richtigen Knoten erweitert wurde. Ist der Hashwert
falsch, baut sie einen neuen Kanal mit anderen Routern P10 , . . . , Pn0
auf. Im schlimmsten Fall, indem Alice bei jedem Versuch genau einen
der f maliziösen Router auswählt, benötigt sie f + 1 Versuche bis sie
den Kanal erfolgreich aufgebaut hat. Um den Aufwand zu reduzieren
könnte Alice sich auf einen kürzeren Kanal beschränken, sobald sie
merkt, dass ihrer Versuche einen Kanal aufzubauen gestört werden.
Wenn der Kanal aufgebaut ist, kann Alice ihre store-Nachricht an
den Server senden. Durch die Replizierung im Pastry Netz, wird das
Fragment auf allen Servern aus der Nachbarschaftsmenge des Servers
gespeichert. Um das Speichern der Fragments zu verhindern, müsste
ein Angreifer alle Knoten der Nachbarschaftsmenge kontrollieren. Die
Wahrscheinlichkeit, dass ein Angreifer so viele numerisch nah zusammen liegende knotenIDs erhalten kann, ist sehr gering, wenn wir eine
CA zur Vergabe der Pseudonyme verwenden.
4.2.4
Search
Der Client Bob möchte nach Dokumenten suchen, die einer Reihe von Stichworten k1 , . . . , kl entsprechen. Er berechnet im ersten Schritt die Hashwerte
H(k1 ), . . . , H(kl ) aller Stichworte. Auf diese Weise erhält Bob für jedes Stichwort einen numerischen Wert, der als Eingabe für ein Private Information
Retrieval (PIR) Schema genutzt wird. Bob führt für jedes Stichwort, wie
in Abschnitt 3.5.3 beschrieben, ein k-robustes PIR Protokoll mit den Suchmaschinenservern aus, bei dem er den i := H(ki ) -ten Eintrag der Suchdatenbank lernt, ohne, dass die Server erfahren, nach was für einem Wort er
gesucht hat.
1. Bob bildet den Index i auf einen Punkt zi ∈ F c ab
2. Bob wählt eine zufällige Kurve p = (p1 , . . . , pc ) vom Grad k mit p(0) =
zi und t = kd + 1 zufällige Stützstellen aj ∈ F \{0}.
3. Er sendet an die Server t anonyme Anfragen vj = p(aj ) ∈ F c und
zufällige Rauschwerte bj ∈R F c , so dass die Anzahl der Rauschwerte
aller Clients mindestens n beträgt.
4. Jeder Server antwortet auf die Anfrage vj mit dem Wert sj = qx (vj )
aus seiner Tabelle mit Datenbankwerten.
5. Die Punkte (aj , sj ) legen ein Polynom qx ◦ p vom Grad kd fest. Bob
interpoliert diese Punkte, wertet das Polynom an der Stelle 0 aus und
erhält den Eintrag xi . xi hat die Form eines Tupels
(knotenIDzp , H0 , czp )
4.2. PROTOKOLLE
29
knotenIDzp ist die Liste von knotenIDs der Zugangspunkte für den
versteckten Dienst, H0 ist der Schlüssel des Dokuments, czp ist eine
Zufallszahl, mit der der Zugangspunkt die Anfrage Bob zuordnen kann.
Bob kann durch Schnittmengenbildung der einzelnen Anfragen eine boolsche
Verknüpfung der Stichworte bilden.
Korrektheit Wenn Bob und alle Datenbankserver ehrlich sind, dann lernt
Bob den Eintrag zu seiner Suchanfrage.
Vertraulichkeit Die Vertraulichkeit für Bob’s Anfrage folgt direkt aus den
Eigenschaften des PIR Protokolls. Bob’s Identität bleibt durch die
anonyme Kommunikation geheim.
Robustheit Um die Robustheit des Protokolls zu erhöhen kann man die
Anzahl der Anfragen auf t = kd + l erhöhen und einen fehlerkorrigierenden Code auf die Ergebnisse anzuwenden. Dann kann Bob auch
dann das Tupel zu seiner Anfrage rekonstruieren, wenn bis zu l − 1 der
Server falsche oder keine Antworten senden.
4.2.5
Retrieve
Bob ist nun im Besitz des Schlüssels für ein Dokument, auf das seine Suchanfrage passt. Um das Dokument H0 herunterzuladen, bildet er die Hashwerte
H1 = H(H0 |1) und H2 = H(H0 |2) und erhält die Schlüssel zu den beiden
Fragmenten des Dokuments. Nehmen wir an, der Knoten Carol speichert
das Fragment p1 . Wenn Bob p1 herunterladen will, kontaktiert er Carol’s
versteckten Dienst. Sämtliche Kommunikation läuft dabei über anonyme
Kanäle.
1. Bob wählt einen Knoten knotenIDrp als Rendezvous Punkt und sendet ihm eine Zufallszahl ccarol .
2. Er schickt eine retrieve-Nachricht
(EncCarol (H1 , knotenIDrp , ccarol ), g x , czp )
an den Zugangspunkt knotenIDzp . Die Nachricht enthält den mit
mit Carol’s öffentlichem Schlüssel chiffrierten Fragment Schlüssel, den
Rendezvous Punkt, die Zufallszahl cCarol , die erste Hälfte eines DiffieHellmann Schlüssels und die Routing Information czp .
3. Der Zugangspunkt knotenIDzp weiß auf Grund der Zufallszahl czp ,
dass die Nachricht für Carol bestimmt ist. Er sendet die Nachricht
(EncCarol (H1 , knotenIDrp , ccarol ), g x )
an Carol weiter.
30
KAPITEL 4. PEER-TO-PEER ENTWURF
4. Carol erzeugt die zweite Hälfte des Diffie-Hellmann Schlüssels und berechnet den Schlüssel K := g xy . Sie verschlüsselt p1 mit einer symmetrischen Chiffre und dem Schlüssel K.
5. Carol sendet
(EncK (p1 ), g y , H(K), ccarol )
an den Rendezvous Punkt von Bob.
6. Wenn ccarol gleich der Zufallszahl ist, die der Rendezvous Punkt zuvor
von Bob bekommen hat, schickt er die Nachricht an Bob weiter.
7. Bob prüft, ob Carol den korrekten Hashwert des gemeinsamen Schlüssels
geschickt hat. Wenn ja, entschlüsselt er p1 und erhält das erste Fragment.
Für das Fragment p2 geht Bob genauso vor. Dann berechnet er Enck0 (m) als
das bitweise XOR Produkt der Fragmente und dechiffriert mit dem Schlüssel
k 0 . Es ist zu beachten, dass außer Bob und Carol niemand die vollen 160 Bit
der Schlüssel H1 und H2 erfährt. Der Schlüssel wird mit bei der Übertragung
durch Verschlüsselung mit Carol’s öffentlichem Schlüssel geschützt. Carol’s
Zugangspunkt knotenIDzp leitet die Nachricht nur aufgrund der Kenntnis
von czp an Carol weiter, ohne den Inhalt zu kennen. Die Kommunikation
zwischen Carol zu Bob wird durch Verschlüsselung mit K geschützt.
Korrektheit Wenn Bob, Carol und alle Router auf dem anonymen Kanal
ehrlich handeln, erhält Bob beide Fragmente und damit das Dokument.
Die Korrektheit ist einfach nachzuvollziehen.
Vertraulichkeit Die Anonymität von Bob folgt aus den Eigenschaften der
anonymen Kanäle. Vor allem bleibt Bob gegenüber Carol anonym.
Carol sieht lediglich den von Bob gewählten Rendezvous Punkt. Bob
erfährt aus der Suchmaschinen Datenbank den öffentlichen Datenbankschlüssel von Carol. Bob kennt aber nicht Carol’s Pseudoidentität (und natürlich auch nicht ihre wahre Identität). Er sieht lediglich den von Carol veröffentlichten Zugangspunkt. Durch die Verschlüsselung des Index Hi mit Carol’s öffentlichem Schlüssel und die
Verschlüsselung auf dem anonymen Kanal, bleibt allen anderen Knoten verborgen, welcher Schlüssel von Bob angefragt wurde.
Robustheit Die Robustheit des anonymen Kanals zeigt sich analog zu dem
Publish-Protokoll. Wenn Bob den Kanal aufgebaut hat, kann er seine
retrieve-Nachricht senden. Unter der Annahme des sicheren Routing
gelangt die Nachricht zu den Servern, die in der Nachbarschaftsmenge
von Carol liegen. Wenn nicht alle Server korrupt sind, sendet mindestens einer das passende Fragment über den anonymen Kanal an Bob
zurück.
4.2. PROTOKOLLE
4.2.6
31
Update File
Alice möchte ein Dokument m, das sie zuvor in das Netzwerk eingespeist
hat, aktualisieren. Sie bildet zwei Fragmente zu dem neuen Dokument m0 :
p1 := sig((r ⊕ Enck (m0 ), H1 ), dAlice )
p2 := sig((r, H2 ), dAlice )
Die Fragment Schlüssel H1 und H2 ändern sich nicht, da sie nur von den
Stichworten, und nicht von dem Dokument selbst. Für jeden Fragment Schlüssel
aktualisiert Alice das Fragment:
1. Alice sendet eine update-Nachricht
(updateF ileRequest, Hi )
mit dem Fragment Schlüssel an alle Server deren knotenIDs numerisch
nah an den 128 höherwertigen Bits von Hi liegen.
2. Zumindest alle ehrlichen Knoten antworten auf die Nachricht, indem
sie jeweils eine Zufallszahl r mit dem Schüssel ef ile aus dem PublishProtokoll chiffrieren und zusammen mit ihrem Public Key Zertifikat
zurücksenden.
3. Alice prüft die Zertifikate und entschlüsselt r mit dem privaten Schlüssel
df ile . Sie erhöht den Wert von r um eins.
4. Sie sendet eine Nachricht
(updateF ile, r + 1, pi )
mit dem inkrementierten Wert r + 1 und dem neuen Fragment pi an
alle Server, die gültige Zertifikate gesendet haben.
5. Die Server überprüfen, ob Alice den Wert r + 1 korrekt inkrementiert
hat. Wenn ja, ersetzen sie das alte Fragment durch das neue.
Korrektheit Es ist leicht zu sehen, dass wenn alle Teilnehmer ehrlich sind,
am Ende des Protokolls alle Fragmente des Dokuments durch neue
ersetzt werden.
Vertraulichkeit Die Vertraulichkeit des Protokolls folgt aus der gleichen
Argumentation wie im Publish-Protokoll.
Robustheit Die Robustheit der anonymen Kanäle zur Kommunikation
zwischen Alice und den Servern folgt wie im Publish-Protokolls aus
der Annahme des sicheren Routing und der Voraussetzung, dass ein
Angreifer nur einen kleinen Teil der Knoten im Netzwerk kontrollieren
kann.
32
KAPITEL 4. PEER-TO-PEER ENTWURF
4.2.7
Update Search Entry
Alice möchte einen Eintrag in ihrer Suchmaschine aktualisieren. Sie führt
für jedes Stichwort k die folgenden Schritte aus:
1. Sie bildet k mit einer Hashfunktion auf einen numerischen Index i ab,
dem ein Punkt zi ∈ F c zugeordnet ist.
2. Alice bildet das Tupel
xi := (knotenIDzp , H0 , czp )
wobei knotenIDzp eine Liste von Zugangspunkten ist, H0 der Dokumentenschlüssel und czp eine Zufallszahl.
3. Sie setzt den Wert der Funktion qx an der Stelle zi auf den Wert des
Tupels: qx (zi ) := xi
4. Alice sendet eine updateDB -Nachricht (updateDB, x) über einen anonymen Kanal an den Server Si , der den Wert des Polynoms an der
Stelle zi speichert.
5. Zumindest alle ehrlichen Server aus der Nachbarschaft von Si antworten auf die Anfrage, indem sie eine Zufallszahl r mit dem Schüssel edb
chiffrieren und zusammen mit ihrem Public Key Zertifikat zurücksenden.
6. Alice prüft die Zertifikate und entschlüsselt r mit dem privaten Schlüssel
ddb . Sie erhöht den Wert von r um eins.
7. Sie sendet eine Nachricht
(updateDB, r + 1, sig((x, xi ), ddb ))
mit dem inkrementierten Wert r + 1 und dem Datenbanktupel pi an
alle Server, die gültige Zertifikate gesendet haben.
8. Die Server können überprüfen, ob Alice den Wert r + 1 korrekt inkrementiert hat.
9. Wenn ja, ersetzen sie den Wert des Polynoms an der Stelle zi durch
den neuen Wert xi .
Korrektheit Es ist auch hier leicht zu sehen, dass wenn alle Teilnehmer
ehrlich sind, am Ende des Protokolls der alte Datenbankeintrag durch
einen neuen ersetzt wird.
Vertraulichkeit Die Vertraulichkeit des Protokolls folgt aus der gleichen
Argumentation wie im Publish-Protokoll.
4.2. PROTOKOLLE
33
Robustheit Die Robustheit der anonymen Kanäle zur Kommunikation
zwischen Alice und den Servern folgt wie im Publish-Protokolls aus
der Annahme des sicheren Routing und der Voraussetzung, dass ein
Angreifer nur einen kleinen Teil der Knoten im Netzwerk kontrollieren
kann.
4.2.8
Delete File
Alice kann ein Dokument, das sie zuvor im Netzwerk gespeichert hat, auch
wieder löschen. Dazu führt sie das folgende Protokoll aus:
1. Alice sendet eine Nachricht
(deleteRequest, Hi )
an alle Server, deren knotenIDs numerisch nah an den 128 höherwertigen
Bits von Hi liegen.
2. Die Server antworten mit einer Zufallszahl r, die mit dem öffentlichen
Dokumentenschlüssel verschlüsselt ist und ihre Public Key Zertifikate
zurücksenden.
3. Alice prüft die Zertifikate und entschlüsselt r mit dem privaten Schlüssel
df ile . Sie erhöht den Wert von r um eins.
4. Sie sendet eine Nachricht
(delete, Hi , r + 1)
mit dem inkrementierten Wert r + 1 alle Server, die gültige Zertifikate
gesendet haben.
5. Die Server überprüfen, ob Alice den Wert r + 1 korrekt inkrementiert hat. Wenn ja, löschen die Server ihr Fragment pi , den Fragment
Schlüssel Hi und den öffentlichen Schlüssel ef ile .
Korrektheit, Vertraulichkeit, Robustheit Die Korrektheit, Vertraulichkeit und Robustheit des Protokolls folgen direkt aus den Eigenschaften
des Update File-Protokolls.
4.2.9
Delete Search Entry
Wenn Alice ein Dokument löscht, muss sie auch die dazugehörigen Einträge
aus ihrer Datenbank entfernen. Für jedes Stichwort k zu dem Dokument
führt Alice das folgende Protokoll aus:
1. Sie bildet k mit einer Hashfunktion auf einen numerischen Index i ab,
dem ein Punkt zi ∈ F c zugeordnet ist.
34
KAPITEL 4. PEER-TO-PEER ENTWURF
2. Mit dem Punkt berechnet sie den Wert xi = qx (zi) und den Schlüssel
dbID := H(x, xi ).
3. Alice sendet eine Nachricht
(deleteDBRequest, xi )
an die Knoten, dessen knotenID den 128-höherwertigen Bits von dbID
numerisch nah sind.
4. Zumindest alle ehrlichen Server antworten auf die Nachricht, indem
sie ähnlich zum Delete File-Protokoll eine mit dem öffentlichen Datenbankschlüssel chiffrierte Zufallszahl r schicken.
5. Alice sendet eine Nachricht
(deleteDB, xi , r + 1)
mit dem um eins inkrementierten Wert an die Server zurück.
6. Die Server überprüfen, ob Alice den korrekten Wert r + 1 gesendet
hat. Wenn ja, löschen sie den Eintrag xi aus der Datenbank qx .
Korrektheit, Vertraulichkeit, Robustheit Die Korrektheit, Vertraulichkeit und Robustheit des Protokolls folgt aus der Korrektheit und Sicherheit des Delete File-Protokolls. Nur dass die Server einen Datenbank Eintrag löschen statt eines Fragments.
Kapitel 5
Zusammenfassung
In diesem Kapitel fasse ich die Ergebnisse meiner Arbeit zusammen. Ich beschreibe welche Ziele erreicht wurden und gebe einen Ausblick auf zukünftige
Arbeiten.
In meiner Arbeit habe ich ein anonymes Peer-to-Peer Informationssystem entworfen, dass Anonymität und Suchfunktion verbindet. In Kapitel
1 habe ich anonyme Peer-to-Peer Netzwerke als anonyme, zensurresistente
Informationssysteme motiviert. In Kapitel 2 habe ich einen Überblick über
bestehende Peer-to-Peer Netzwerke und vorangegangene Publikationen gegeben. In Kapitel 3 habe ich die nötigen Bausteine für meinen Peer-to-Peer
Entwurf eingeführt und erklärt. In Kapitel 4 habe ich Protokolle für die
grundlegenden Funktionen des Peer-to-Peer Systems angegeben und ihre Sicherheit diskutiert.
Ich habe das Peer-to-Peer Filesharing System von Endsuleit und Mie[10]
um TOR Onion Routing und PIR ergänzt und damit ein System konstruiert,
in dem Inhalte über eine Stichwortsuche zugänglich sind, der Schutz der
Serverbetreiber gegen strafrechtliche Verfolgung aber weiter gegeben ist. Das
System erfüllt Sicherheit nicht nur im kryptographischen Sinne, sondern
auch aus einer juristischen Sicht.
5.1
Ergebnisse
In diesem Abschnitt fasse ich zusammen, welche Ziele in meinem Entwurf
erreicht werden konnten.
5.1.1
Anonymität für Autoren, Leser und Server
Ein Dokument ist in dem Peer nur an das Pseudonym eines Benutzers gebunden. Die wahre Identität eines Autors oder Lesers kann nicht aus seinem
Pseudonym ermittelt werden. Selbst wenn die CA angegriffen wird, oder zur
35
36
KAPITEL 5. ZUSAMMENFASSUNG
Herausgabe ihrer Daten gezwungen wird, ist es nicht möglich, einem Pseudonym eine reale Identität zuzuordnen. Das System gewährleistet also Autor
Anonymität im Sinne von Pseudonymität.
Die Privatsphäre der Leser bleibt gewahrt. Die Kommunikation verläuft
über Rendezvous Punkte und anonyme Kanäle. Der Server selbst erfährt
nicht, welcher Client das Dokument haben möchte. Die Privatsphäre des
Lesers bleibt auch gegenüber einem Angreifer gewahrt, der seinen Datenverkehr abhört. Der Fragment Schlüssel wird nicht im Klartext übertragen, so
dass nur der Server ihn lesen kann. Wenn der Server das zugehörige Fragment an den Client sendet, bleibt der Inhalt auch vor einem mächtigen
Angreifer verborgen. Nehmen wir zum Beispiel einen ISP, der das gesamte
Datenaufkommen des Clients aufzeichnet (oder aufzeichnen muss): Es ist
ihm nicht möglich den Inhalt eines Dokuments zu rekonstruieren, solange
es mit dem OTP verschlüsselt ist. Um den OTP zu überwinden, müsste er
zunächst den Diffie-Hellmann Schlüssel brechen und die beiden Fragmente
finden, die zu dem selben Dokument gehören. Aber die Datei ist noch einmal
verschlüsselt, so dass die korrekt zusammengesetzten Fragmente nur schwer
von anderen Kombinationen unterscheidbar sind. In einem Netz mit hohem
Datenaufkommen, ist dieser Angriff ohne große Aussicht auf Erfolg.
Der Ablageort des Dokuments hängt nicht vom Dokument selbst, sondern von den Stichworten, die das Dokument beschreiben, ab. Die Server
sind im Netzwerk unter ihrer knotenID bekannt. Zu einem herausgegriffenen Dokumentenschlüssel weiß man durch die verteilte Hashtabelle, welche
knotenID das Dokument speichert. Die IP-Adresse zu der knotenID ist aber
nur benachbarten Knoten bekannt. Server Anonymität ist in meinem Entwurf nur im Sinne von Pseudonymität gegeben.
5.1.2
Schutz des Serverbetreibers gegen strafrechtliche Verfolgung
Auf den Servern werden nur Zeichenketten gespeichert, ohne das sie Information im informationstheoretischen Sinne enthalten. Ein Betreiber kann
glaubhaft abstreiten, bestimmte Informationen auf seinem Rechner zu speichern. Wenn echter Zufall verwendet wird, bietet das System perfekte Dokumenten Anonymität.
5.1.3
Schutz vor Zensur der Inhalte
Durch das Erschweren von DoS Angriffen, die zufälligen knotenIDs und die
Dokumenten Anonymität sollte es selbst für einen mächtigen Angreifer nur
schwer möglich sein, gezielt Inhalte in dem System zu zensieren. Der Angreifer kann über die Stichwortsuche nach Inhalten suchen, erfährt aber nur
5.2. AUSBLICK
37
den Zugangspunkt zu dem Server.
Zusätzlich werden Inhalte von benachbarten Servern repliziert. Um ein
Fragment ohne Kenntnis des passenden Schlüssels zu entfernen müsste er
gleichzeitig alle Server aus der Nachbarschaftsmenge ausschalten.
5.1.4
Erreichbarkeit der Dokumente über eine Stichwortsuche
Ein Client muss nicht mehr die exakten Stichworte zu einem Dokument
kennen. Er kann nach einzelnen Stichworten suchen und anschließend das
Dokument herunterladen, ohne das der Inhalt seiner Anfrage anderen bekannt wird. Das erleichtert das Suchen nach Informationen und macht die
Benutzung für den Client komfortabler.
5.1.5
Erschweren von DoS Attacken
Die IP-Adresse des Servers ist nur den benachbarten Knoten bekannt. Die
Server sind über versteckte Dienste erreichbar, so dass selbst ihre knotenID
verborgen bleibt. Andere Rechner kommunizieren mit dem Server lediglich
über dessen Zugangspunkte und Rendezvous Punkte. Wird ein Zugangspunkt Ziel einer DoS Attacke, kann der Server die von dem Zugangspunkt
empfangenen Nachrichten einfach ignorieren oder einen neuen Zugangspunkt
für seinen Dienst wählen. Wenn der Server dennoch Opfer eines DoS Angriffs
wird, gibt es immer noch seine Nachbarschaftsmenge. Nach dem Ausfall eines Servers wird ein neuer Server in die Nachbarschaftsmenge aufgenommen
und die Daten auf ihm repliziert.
5.2
Ausblick
Von Seiten der Theorie wäre es interessant zu versuchen, den Begriff anonymes Peer-to-Peer formal zu definieren und die Anonymität und Sicherheit
von anonymen Peer-to-Peer Systemen formal zu beweisen.
In der Praxis gibt es in Peer-to-Peer Netzwerken noch viele Probleme,
die gelöst werden müssen, wenn man ein Informationssysteme auf der Peerto-Peer Architektur aufbauen möchte. Hier ist weitere Arbeit notwendig, um
Peer-to-Peer Netzwerke sicherer zu machen.
Es wäre interessant meinen Entwurfs zu implementieren und zu testen.
Vor allem die Frage, wie weit das System skaliert und welchen Belastungen
es standhält, könnten im Experiment untersucht werden.
38
KAPITEL 5. ZUSAMMENFASSUNG
Es bleibt abzuwarten, wie sich bestehende Projekte, vor allem Free Haven, entwickeln. Bis jetzt scheint es bei vielen Anwendern noch kein Bedürfnis
nach Anonymität zu geben, jedenfalls nicht, wenn dies mit Leistungseinbußen verbunden ist. Eine kleine Zahl an Benutzern verspricht aber gleichzeitig
ein geringeres Maß an Anonymität. Es wird zu untersuchen sein, wie ein optimaler Kompromiss zwischen Anonymität und Performanz aussehen kann.
Literaturverzeichnis
[1] Mute. http://www.mute.net.sourceforge.net.
[2] Random.org. http://www.random.org.
[3] A.Osram. Peer-to-Peer - Harnessing the Power of Disruptive Technology. O’Reilly, 2001.
[4] M. Castro, P. Drushel, A. Ganesh, A. Rowstron, and D. Wallach. Secure
routing for structured peer-to-peer overlay networks, 2002.
[5] B. Chor, N. Gilboa, and M. Naor. Private information retrieval by
keywords, 1997.
[6] Benny Chor, Oded Goldreich, Eyal Kushilevitz, and Madhu Sudan.
Private information retrieval. In IEEE Symposium on Foundations of
Computer Science, pages 41–50, 1995.
[7] Ian Clarke, Oskar Sandberg, Brandon Wiley, and Theodore W. Hong.
Freenet: A distributed anonymous information storage and retrieval
system. Lecture Notes in Computer Science, 2009:46–??, 2001.
[8] R. Dingledine, N. Mathewson, and P. Syverson.
generation onion router, 2004.
Tor: The second-
[9] Roger Dingledine, Michael J. Freedman, and David Molnar. The free
haven project: Distributed anonymous storage service, July 19 2000.
[10] T. Endsuleit, R.; Mie. Censorship-resistant and anonymous p2p filesharing, availability, reliability and security, 2006. ares 2006. the first
international conference on , vol., no.pp. 58- 65, 20-22 april 2006, 2006.
[11] Yuval Ishai Eyal. Cryptography from anonymity.
[12] Ralph C. Merkle. Secure communications over insecure channels. Commun. ACM, 21(4):294–299, 1978.
[13] A. Rowstron and P. Druschel. Pastry: Scalable, distributed object location and routing for large-scale peer-topeer systems, 2001.
39
40
LITERATURVERZEICHNIS
[14] A. Serjantov. Anonymizing censorship resistant systems, 2002.