Freenet - Institut für Verteilte Systeme
Transcrição
Freenet - Institut für Verteilte Systeme
Freenet: Designziele ■ Effiziente dynamische Verteilung von Informationen ■ Anonymität für Informationsproduzenten und Konsumenten ■ Sicherheit für Informationsanbieter ■ Resistenz gegenüber Zensur Struktur des Free Network Protocol (FNP) ■ Transportschicht: ● ■ ■ Verschlüsselungsschicht ● Aufbau verschlüsselter Verbindungen zwischen Knoten ● Aushandlung eines gemeinsam Schlüssel nach ElGamal, dann Verschlüsselung der übertragenen Daten mit AES (Rijndael) Anwendungsschicht 65 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 ● Algorithmen für Verteilte Systeme (AVS), WS 2004/05 ● Einfügen von Daten ● Anfordern von Daten Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 67 P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 Integration eines neuen Knotens in das Netz 66 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Freenet: Rahmenbedingungen des Systems Es können grundsätzlich drei Operation in Freenet durchgeführt werden: ● Definiert das eigentliche Freenet-Protokoll zum Austausch und zur Suche von Informationen Algorithmen für Verteilte Systeme (AVS), WS 2004/05 Freenet: Basisoperationen ■ Verbindungsorientierte, zuverlässige Datenübertragung ■ Jegliche Informationen in Freenet werden durch Hashschlüssel referenziert. ■ Informationen werden auf Grund von lexikografischer Nähe von Schlüsseln abgelegt und gefunden. ■ Jeder Knoten verfügt über eine Routing-Tabelle, die sich aus Hashschlüsseln und Knotenadressen zusammensetzt. Der einem Hashschlüssel zugeordnete Knoten verwaltet entweder die durch den Schlüssel referenzierten Daten, oder kennt einen Knoten, der diese Daten verwaltet. ■ Jeder Knoten verfügt über einen sogenannten Data Store. Dieser verwaltet die von einem Knoten zur Verfügung gestellten Daten. Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 68 ■ Alle Nachrichten werden über verschlüsselte Verbindungen übertragen ■ Wichtige Felder der meisten Nachrichten: ● UniqueID: Eindeutiger ID ● HTL: Hops to Live Zähler ● Source: Absender der Nachricht (IP-Adresse und Port) (wird benötigt, falls zu einer Nachricht eine Antwort zurückgesendet werden soll, die Verbindung aber nicht mehr offen ist) Algorithmen für Verteilte Systeme (AVS), WS 2004/05 Freenet: Daten anfordern 69 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm ■ Anfrage an den Data Store, ob Daten unter dem gesuchten Hashschlüssel abgelegt sind. Ist dies der Fall, werden die Daten zurückgeliefert. ■ Ansonsten wird aus der Routing-Tabelle der Knoten gewählt, der am ehesten den gesuchten Schlüssel in seinem Data Store verwaltet. An diesen Knoten wird dann eine Data Request-Nachricht versendet. P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 Freenet: Rahmenbedingungen des Systems Algorithmen für Verteilte Systeme (AVS), WS 2004/05 Freenet: Daten anfordern Freenet: Daten anfordern ■ Beim Nachrichtenempfang wird das Feld HTL dekrementiert ● Werden die Daten nicht durch den lokalen Data Store verwaltet, wird der Request an den nächsten geeigneten Knoten weitergeleitet. ● Kennt ein Knoten keinen weiteren Knoten oder liegt eine Schleife vor, antwortet er an den anfragenden Knoten mit einer Request Failed-Nachricht. Der anfragende Knoten kann dann die Request-Nachricht an einen anderen Knoten weiterleiten. = Data Request = Data Reply = Request Faild KEY ADDRESS dfsee tcp/5.34.27.4:66434 ee3e4 tcp/89.34.36.1:24855 991d2 tcp/64.28.67.48:43653 34dd7 tcp/63.23.67.48:33321 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 71 P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 Data Request UniqueID=C24..... Source=131.188.34.159:84523 TTL=10 SearchKey=8e0... Algorithmen für Verteilte Systeme (AVS), WS 2004/05 70 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm = Data Request = Data Reply = Request Faild 72 Freenet: Daten anfordern ■ Freenet Daten anfordern Sinkt das Feld HTL auf den Wert 0 und sind keine Daten auffindbar, wird eine Data Not Found-Nachricht an den anfragenden Knoten versendet ■ Algorithmen für Verteilte Systeme (AVS), WS 2004/05 73 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm ● neuer Eintrag mit Adresse und Hashschlüssel der Nachricht in Routingtabelle ● Bevor ein Knoten die Data Reply-Nachricht weiterversendet, ersetzt er mit der Wahrscheinlichkeit p das Feld Data Source durch seine eigene Adresse, sonst bleibt die Adresse erhalten (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 75 P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 Nach Verarbeitung der Data Reply-Nachricht gilt die Anfrage als erfolgreich verarbeitet und der Knoten kann jegliche Statusinformation zur Anfrage löschen Algorithmen für Verteilte Systeme (AVS), WS 2004/05 ● Ist der Knoten Initiator der Anfrage, werden die Daten an den Anwender zurückgeliefert; ansonsten wird die Nachricht an den Vorgänger in der Anfragekette weitergeleitet. = Data Request = Data Reply = Request Failed 74 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Freenet: Einfügen von Daten Beim Empfang einer Data Reply-Nachricht: ● Empfängt ein Knoten eine Data Reply-Nachricht, so speichert er den Hash-Schlüssel und die Daten im Data Store. Algorithmen für Verteilte Systeme (AVS), WS 2004/05 Freenet: Daten anfordern ■ ● Data Reply UniqueID=C24300FB7BEA06E3 DataLength=122 Data ... P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 = Data Request = Data Reply = Data Not Found Verwaltet ein Knoten den gesuchten Schlüssel, so versendet er eine Data Reply-Nachricht an den anfragenden Knoten ■ Sollen Informationen in das System eingefügt werden, muss zuerst ein Schlüssel für die einzufügenden Daten generiert werden ■ Anschließend wird eine Insert Request-Nachricht mit diesem Hashschlüssel dem lokalen Knoten übergeben ■ Der Insert Request dient dem Finden eines geeigneten Speicherorts und wird im wesentlichen wie ein Data Request behandelt Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 76 Freenet: Einfügen von Daten ■ Freenet: Einfügen von Daten Ein Knoten, der einen Insert Request erhält, kontrolliert ob der Schlüssel bereits durch den lokalen Data Store verwaltet wird. Ist dies nicht der Fall, wird die Insert Request-Nachricht an den geeignetsten Knoten weitergeleitet. ■ Verwaltet einer der befragten Knoten den gesuchten Hashschlüssel bereits, generiert er eine Data ReplyNachricht. Diese enthält die unter dem Schlüssel abgelegten Daten und wird entlang der Anfragekette an den Initiator übertragen. Die bereits im System abgelegten Daten werden also repliziert. Algorithmen für Verteilte Systeme (AVS), WS 2004/05 = Insert Request = Data Reply = Data Insert = Insert Reply 77 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 = Insert Request = Data Reply = Data Insert = Insert Reply Algorithmen für Verteilte Systeme (AVS), WS 2004/05 Freenet: Einfügen von Daten ■ 78 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Freenet: Einfügen von Daten Verwaltet keiner der befragten Knoten den Hashschlüssel, wird durch den letzten Knoten (HTL=0) eine Insert ReplyNachricht erzeugt. ■ Der Initiator kann nun die Daten mit einer Data InsertNachricht im Netz verbreiten Diese signalisiert, dass noch keine Daten mit diesem Hashschlüssel im System vorhanden sind und wird an den Initiator der Anfrage zurückgeleitet. = Insert Request = Data Reply = Data Insert = Insert Reply Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 79 P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 = Insert Request = Data Reply = Data Insert = Insert Reply Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 80 Freenet: Integration neuer Knoten ■ Integration erfolgt über Announcement-Protokoll ■ Hauptziel: Schnelle Integration; weitere Anforderungen: Eine Anzahl von Knoten soll gleichberechtigt in die Zuteilung des Schlüsselbereichs, für den der neue Knoten verantwortlich ist, beteiligt sein ● Der zugeteilte Schlüsselbereich muss völlig zufällig sein ● Der neue Knoten muss nach dem Announcement ausreichend Kenntnis über seinen Schlüsselbereich besitzen, d.h. er kann Anfragen beantworten ● Alle am Announcement beteiligten Konten besitzen nach der Integration des neuen Knoten Kenntnis über seinen Adresse und dem ihm zugeordneten Schlüsselraum Algorithmen für Verteilte Systeme (AVS), WS 2004/05 81 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Freenet ■ ■ Node Announcement - Knoten macht sich einer Reihe von Knoten bekannt. Jeder der Knoten wählt einen Zufallswert den er nur in Form eines kumulativen Hashwertes weiter gibt. ■ Announcement Reply - Alle Zufallswerte werden entlang des Anfragepfades via XOR vermengt ■ Announcement Exceute - Erzeugter Schlüssel wird an alle beteiligten Knoten vermittelt. Diese überprüfen die korrekte Erzeugung. ■ Announcement Completed - Alle beteiligten Knoten übermitteln die zum erzeugten Schlüssel lexikografisch naheliegenden Schlüssel. P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 ● Freenet: Integration neuer Knoten: Ablauf Algorithmen für Verteilte Systeme (AVS), WS 2004/05 Freenet enet Allgemein wird jede in Freenet abgelegte Information durch einen Hashschlüssel referenziert, der mit Hilfe von SHA1 erzeugt wurde 82 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm ■ Erzeugung eines Signed Subspace Keys (SSK) Erzeuge eine zufällige Zeichenkette für den Namensbereich ’mp3/’ Datei ■ Es wird zwischen zwei verschiedene Schlüsselarten unterschieden: ● Public-Key-Algorithmus Ein Content Hash Key (CHK) wird durch die Hashsumme über eine Datei erzeugt und bildet einen Basismechanismus, um Dateien global eindeutig zu referenzieren Name: mp3/Laid-Back-Bakerman.mp3 Datei-Schlüssel = hash( hash(öffenlicher Schlüssel) XOR hash(Name)) Freenet-Datei = Datei + sign(Datei) Signed Subspace Keys (SSK) erlauben die Erzeugung von privaten Namensräumen, die von jedem Benutzer gelesen, aber nur durch den Besitzer des Namensraums geschrieben werden können Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 83 Beispiel: SSK@9G4s~jLQJB7ALQg-v2q5xKAJy9YPAgM/mp3/Laid-Back-Bakerman.mp3 SSK@ öffentlicher Schlüssel + Name der Datei P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 ● Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 84 Freenet P2P.fm: 23.01.06 08:20 ■ Wie schnell bzw. in welcher Entfernung können Daten aufgefunden werden? ■ ● 1000 Knoten angeordnet in einer Ringstruktur ● Jeder Knoten kennt initial nur seine unmittelbaren zwei Vorgänger und Nachfolger im Ring ● Jeder Knoten verfügt über einen Data Store der maximal 50 Einträge fassen kann und eine Routing-Tabelle mit maximal 200 Einträgen Algorithmen für Verteilte Systeme (AVS), WS 2004/05 85 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Es werden in zufälliger Reihenfolge Anfrage- und EinfügeOperationen mit einer HTL von 20 durchgeführt ● Nach 100 Operationen wird das Netz betrachtet und 300 Suchanfragen mit einer HTL von 500 die durchschnittliche Pfadlänge bestimmt Durchschnittliche Pfadlänge von Anfragen Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 86 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Freenet ■ 87 P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 ● Algorithmen für Verteilte Systeme (AVS), WS 2004/05 Freenet ■ Ablauf der Simulation Ausgangspunkt der Simulation P2P.fm: 23.01.06 08:20 ■ Freenet Verknüpfungsgrad der Knoten => Small-World-Netz Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 88 Freenet ■ Wie skaliert Freenet? ■ Ausgangspunkt der Simulation P2P.fm: 23.01.06 08:20 ■ ● 20 Knoten angeordnet in einer Ringstruktur ● Sonst gleiche Bedingungen wie in der ersten Simulation Freenet ■ ● Einfüge- und Anfrage-Operationen wie in der ersten Simulation ● Nach jeder fünften Operation wird ein neuer Knoten dem Netz hinzugefügt Algorithmen für Verteilte Systeme (AVS), WS 2004/05 89 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 91 P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 Freenet Wie fehlertolerant ist Freenet? Algorithmen für Verteilte Systeme (AVS), WS 2004/05 90 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Freenet ■ Durchschnittliche Pfadlänge von Anfragen Ablauf der Simulation P2P.fm: 23.01.06 08:20 reenet ■ Weitere Entwicklung: Next generation routing mechanism ■ Probleme des aktuellen Systems ● Keine Unterscheidung zwischen Knoten mit unterschiedlicher Anbindung und deshalb oft lange Antwortzeiten ● Schwierigkeiten das System zu verbessern, da sich Simulationen nur bedingt als aussagekräftig erwiesen haben ● Lange Entwicklungszyklen, da Evaluierung von Änderungen nur im realen System möglich sind Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 92 Freenet: Next Generation Routing Mechanism ■ ■ Freenet: Next Generation Routing Mechanism Intelligentes Routing basierend auf statistischen Informationen ● Zeitdauer zum Aufbau von Verbindungen ● Antwortzeiten ● Anteil der erfolgreichen Anfragen ■ Strategie: Routing von Nachrichten zu dem Knoten, der die kleinste Antwortzeit erwarten lässt ● Lokal berechenbar ● Gute Abschätzungen auch für unbekannte Schlüssel ● Schätzung passt sich dynamisch an Algorithmen für Verteilte Systeme (AVS), WS 2004/05 93 Zeit zur Lokalisierung des gesuchten Schlüssels (Senden der Query bis Eintreffen der ersten Daten) Transferzeit der Daten zusammen (Zeit bis Ende des Datentransfers 95 P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 Anfragezeiten für unbekannte Schlüssel können abgeschätzt werden 94 Berücksichtigung abgebrochener Verbindungen ● Sollte ein Knoten überlastet sein, nimmt er temporär keine Verbindungen an ● Man kann die durchschnittliche Anzahl der fehlgeschlagenen Verbindungsversuche und ihre Dauer bertachten. Diese werden der geschätzten Routing-Dauer hinzugerechnet Folge bei überlasteten Knoten: Größere erwartete Antwortzeit berechnet, daher seltener für Anfragen verwendet Normalisierung der Anfragezeit auf eine mittleren Dateigröße (Mittelwert aus lokalem Data Stores) (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm ● (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm ■ Die Antwortzeit einer erfogreichen Anfrage setzt sich zusammen: Algorithmen für Verteilte Systeme (AVS), WS 2004/05 Nach jeder erfolgreichen Anfrage werden die nächstliegenden Referenzpunkt verschoben Freenet: Next Generation Routing Mechanism Abschätzung der Antwortzeiten: Normierung ● ● Algorithmen für Verteilte Systeme (AVS), WS 2004/05 Freenet: Next Generation Routing Mechanism ● Es gibt N Referenzpunkte (typisch: N=10), die sich über den gesamten Schlüsselraum verteilen Schlüsselraum (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm ■ ● Antwortzeit P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 Erwartete Antwortzeit muss geeignet vorhergesagt werden Algorithmus zur Abschätzung von Antwortzeiten (pro Knoten) Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 96 Freenet: Next Generation Routing Mechanism P2P.fm: 23.01.06 08:20 ■ ● „legitimes“ DataNotFound: Daten existieren nicht (d.h. Routing über diesen Knoten war „gut“) ● „illegitimes“ DataNotFound: Daten existieren eigentlich, aber werden nicht gefunden (d.h. Routing war „schlecht“) ● Keine sichere lokale Unterscheidung möglich Addition der Kosten für geschätztes illegitimes DataNotFound zu den Routingkosten pro Knoten ● Anzahl und Dauer der DNF ● Im Vergleich zum Knoten mit kleinstem Anteil an DNF Algorithmen für Verteilte Systeme (AVS), WS 2004/05 97 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 99 P2P.fm: 23.01.06 08:20 P2P.fm: 23.01.06 08:20 ■ Berücksichtigung nicht erfolgreicher Anfragen P2P.fm: 23.01.06 08:20 ■ Freenet Fazit ● Durch die Abschätzung der Dauer von Anfragen können in Zukunft Routingentscheidungen nicht nur auf Grund von lexikografischer Nähe gefällt werden, sondern zusätzlich basierend auf der Kapazität und der geographischen Nähe der zur Auswahl stehenden Knoten ● Die Erfassung von statistischen Daten und die darauf basierende Abschätzung von Routingzeiten erlaubt eine bessere Evaluierung von Veränderungen des Routings Algorithmen für Verteilte Systeme (AVS), WS 2004/05 98 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm Algorithmen für Verteilte Systeme (AVS), WS 2004/05 (C) 2004 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität Ulm 100