Sicherheit in Ad-hoc-Netzwerken Seminarausarbeitung von David Wagner Vortrag am 9. April 2002 Inhaltsverzeichnis: 1. 2 3. 4. 5. Einführung ........................................................................................................................... 1 1.2 Sicherheitsanforderungen .............................................................................................. 2 1.2 Besondere Herausforderungen ....................................................................................... 3 1.3 Weitere Darstellung und grundlegende Ideen.................................................................. 3 Sicheres Routing................................................................................................................... 4 2.1 Routing-Protokolle für Ad-hoc-Netzwerke...................................................................... 5 2.1.1 Proaktive Routing-Protokolle ..................................................................................... 5 2.1.2 Reaktive Routing-Protokolle ...................................................................................... 5 2.1.2.1 Dynamic Source Routing (DSR) ........................................................................ 5 2.1.3 Hybride Routing-Protokolle ....................................................................................... 6 2.2 Schadensbegrenzung bei Routing-Ausfällen.................................................................... 7 2.2.1 Der Watchdog........................................................................................................... 7 2.2.2 Der Pathrater ............................................................................................................ 8 2.2.3 Simulation und Ergebnisse......................................................................................... 9 2.2.3.1 Der Durchsatz................................................................................................... 9 2.2.3.2 Der Routing Overhead...........................................................................................10 2.2.4 eigene Bewertung, Ideen...........................................................................................10 2.3 Stimulierung der Kooperation in selbst-organisierten Mobilen Ad-hoc-Netzwerken durch eine virtuelle Währung: Nuglets ................................................................................................11 2.3.1 Das Packet Purse Model (PPM) ................................................................................12 2.3.1.1 PPM mit fester Weiterleitungspauschale ............................................................12 2.3.1.2 PPM mit Auktionen..........................................................................................12 2.3.2 Das Packet Trade Model (PTM)................................................................................13 2.3.3 Das Hybrid-Modell ..................................................................................................13 2.3.4 Der Schutz der Nuglets gegen Fälschung, Missbrauch und Mehrfachnutzung (PPM)....14 2.3.4.1 Voraussetzungen..............................................................................................14 2.3.4.2 Format des PP-Headers und des PP-Acknowledgements .....................................15 2.3.4.3 Das Weiterleitungs-Protokoll ............................................................................15 2.3.4.4 Bewertung .......................................................................................................16 Sicherheitssysteme ...............................................................................................................16 3.1 Emulation einer Zertifizierungsautorität über einen verteilten Schlüssel und SchwellwertKryptographie ..........................................................................................................................18 3.2 Key Agreement............................................................................................................19 3.3 Selbstorganisierende Public -Key-Infrastruktur ...............................................................19 Fazit ....................................................................................................................................20 Quellen................................................................................................................................20 II 1. Einführung Ad-hoc-Netzwerke sind eine neue Herausforderung der drahtlosen Kommunikation zwischen mobilen Geräten. Diese Geräte werden in einem Ad-hoc-Netzwerk Knoten genannt. In den meisten Fällen geht man davon aus, dass in einem Ad-hoc-Netzwerk keine feste Infrastruktur wie die Basisstationen und Mobile Switching Centers in den GSM-Netzen und auch keine zentrale Verwaltung existiert. Daher müssen alle Dienste für die Funktion des Netzwerks von den Knoten selbst erbracht werden und die Funktion des gesamten Netzwerks hängt sehr von dem kooperativen Verhalten eines jeden Knotens ab. Dabei kommunizieren Knoten, die direkt in der Reichweite der drahtlosen Funkschnittstelle liegen, direkt über die drahtlose Verbindung, während weiter entfernte Knoten mittels anderer Knoten erreicht werden, die die Nachrichten als Router weiterleiten. Die Mobilität der Knoten eines solchen Ad-hocNetzwerkes bedingt eine teilweise hohe Änderungsgeschwindigkeit der Topologie des Netzes. Abb. 1: Die Grafik zeigt ein Beispiel: im Zustand a sind die Knoten B, C, D und E von Knoten A aus erreic hbar, und zwar B und C über eine direkte drahtlose Verbindung, D und E nur über eine von B bzw. C vermittelte Verbindung. Bewegt sich Knoten C wie in b dargestellt aus der Funkreichweite von Knoten A heraus, so geht die (direkte) Verbindung zwischen A und C verloren. Trotzdem ist das Netzwerk immer noch verbunden, A kann C über B, D und E erreichen. Die Anwendungen solcher Ad-hoc-Netzwerke liegen bisher zum größten Teil im militärischen Bereich: im Feld sollen über solche Netzwerke verschiedene militärische Einheiten, die mit entsprechenden Geräten ausgerüstet sind, insbesondere mit taktischen Informationen versorgt und koordiniert werden. In diesem Falle haben alle Knoten des Netzwerks ein gemeinsames Ziel, möglicherweise mit Ausnahme einiger weniger feindlich übernommener Knoten. Die Knoten haben also im Allgemeinen ein Interesse, zu kooperieren. Bei einer militärischen Anwendung ist es essentiell, dass bei der Kommunikation die Position und Rolle der einzelnen Knoten vertraulich bleiben. Andererseits gibt es auch vielfältige Ideen in anderen Bereichen. Sie reichen vom Einsatz in Katastrophenschutz, Rettungseinsätzen, Einsätzen (verschiedener Behörden) zur inneren Sicherheit bis zu Szenarien von riesigen, auch flächig weit ausgedehnten Netzen sogenannter „Terminodes“. Diese Geräte sind gleichzeitig Netzwerkknoten als auch Terminal, daher der Name. Diese Geräte sollen im Zuge des technologischen Fortschritts für jeden erreichbare und bezahlbare persönliche batteriebetriebene Geräte sein, die untereinander paketorientiert drahtlos über lizenzfreie Frequenzen kommunizieren. Diese Netze können daher eine Größe von mehreren Millionen Knoten und eine sehr lange Lebensdauer erreichen und sollen vollkommen unabhängig von fester Infrastruktur selbstorganisierend sein. Diese Terminodes können auch Bestandteil größerer Geräte mit vielfältigen Nutzen sein, z. B. können sie Teil von Autos sein. In einem solchen Fall haben die Knoten keinen gemeinsamen Eigentümer und kein gemeinsames Ziel. Sie haben keine direkte Motivation zur Kooperation. Im Gegenteil: das Angebot von Diensten für andere Knoten bringt keinen direkten Vorteil, kostet aber wertvolle (Batterie )Energie, Bandbreite und Rechenzeit. „Verschwenden“ Knoten ihre wertvolle Energie nicht zu Gunsten anderer Knoten, so hat ein solches egoistisches Verhalten fatale Effekte auf die Funktionsfähigkeit des Netzwerks: 1 Abb. 2: In dieser Grafik sind die Ergebnisse einer Simulation dargestellt, in der die Abhängigkeit des Netzwerkdurchsatzes von dem Anteil der nicht-kooperierenden Knoten, die „nur“ Pakete nicht weiterleiten, untersucht wurde. Die unterschiedlichen Graphen gehören zu Netzen unterschiedlicher Größe (100, 200, 300 und 400 Knoten) aber gleicher Knotendichte und zeigen, dass der Netzdurchsatz dramatisch einbricht, je mehr Knoten den Dienst für den anderen verweigern, und dass große Netze anfälliger für eine solche Störung sind als kleinere. In einem solchen großen, zivilen Netz mit vielen einzelnen Parteien ist es meist auch nicht wichtig, die Position einzelner Knoten geheim zu halten, andererseits gilt es aber, die Kommunikation und die Privatsphäre der einzelnen Knoten und Benutzer gegen Lauschangriffe zu schützen. Man sieht, dass diese verschiedenen Zwecke auch unterschiedliche Anforderungen an das zugrundeliegende Netzwerk und insbesondere seine Sicherheit stellen. Es lassen sich aber einige Grundanforderungen festmachen, die in unterschiedlicher Gewic htung je nach Einsatzgebiet eine Rolle spielen. 1.2 • • • • Sicherheitsanforderungen Verfügbarkeit (availability) garantiert die Nutzbarkeit des Netzes bzw. einzelner Dienste gegen Denial-of-Service-Attacken. Hier sind drahtlose Netze per se sehr empfindlich, da die Nachrichten auf der physikalischen Ebene durch Störsignale zerstört werden können, wobei der Angriff in einem geographisch großen Raum gleichermaßen möglich ist. Des weiteren ist ein Angriff auf den höheren Ebenen möglich: Auf der Netzwerk-Ebene ist insbesondere ein Angriff über das Routing-Protokoll denkbar, um das Netzwerk zu partitionieren bzw. einzelnen Knoten vom Netzwerk zu trennen. Auch auf den höheren Ebenen sind natürlich DoSAngriffe denkbar, aber die meisten sind nicht spezifisch für Ad-hoc-Netzwerke. Im Bereich der drahtlosen Netzwerke spielt Verschlüsselung eine besonders wichtige Rolle, da Kommunikation einfach mitgehört werden kann. Daher ist eine hohe Verfügbarkeit gerades des Schlüsselmanagement-Dienstes besonders wichtig. Vertraulichkeit (confidentiality) gewährleistet, dass bestimmte Informationen nicht an nicht autorisierte Knoten oder Personen gelangen können. Dies betrifft natürlich insbesondere militärische Anwendungen, bei denen strategische oder taktische Informationen keinesfalls in feindliche Hand geraten darf. Dies betrifft unter Umständen auch Routing-Informationen, insofern als aus ihnen direkt oder indirekt Rückschlüsse auf die Standorte von Knoten und damit Zielen im Schlachtfeld möglich sind. Integrität (integrity) von Nachrichten garantiert, dass der Empfänger die Information erhält, die der Sender gesendet hat, unabhängig von Störungen auf der Funkschnittstelle oder Angriffe auf das Netzwerk. Authentizität (authentication) ermöglicht es einem Knoten, die Identität des Kommunikationspartners feststellen bzw. zu garantieren. Ohne eine solche Authentifizierung könnte sich 2 • 1.2 ein Angreifer für einen anderen Knoten ausgeben und dadurch das Netzwerk stören und außerdem Zugang zu vertraulichen Daten erhalten. Nichtablehnung oder eindeutige Zuordnung (non-repudiation) ermöglicht die fälschungssichere, eindeutige Zuordnung einer Nachricht zu einem Sender. Dadurch sind die Identifikation und Isolation eines kompromittierten Knoten möglich. Außerdem wird so eine Verbreitung solcher Informationen ermöglicht: erhält A eine fehlerhafte Nachricht von B, so kann A andere Knoten anhand dieser eindeutig von B stammenden Nachricht davon überzeugen, dass B kompromittiert ist. Besondere Herausforderungen In den betrachteten Ad-hoc-Netzwerken ergeben sich beim Anstreben dieser Ziele besondere Herausforderungen und Angriffspunkte: Erstens macht die Nutzung einer Funkschnittstelle ein solches Netz anfällig für Angriffe auf der Verbindungsebene, wie schon oben angedeutet. Diese Attacken reichen von bloßem Lauschen bis zu aktiver Imitierung, Nachrichtenwiederholung und Nachrichtenverfälschung. Dabei können Verfügbarkeit, Vertraulichkeit, Integrität, Authentizität und die eindeutige Zuordnung verletzt werden. Zweitens können Knoten, die meist nur über einen relativ schwachen physikalisch/mechanischen Schutz verfügen, in einer feindlichen Umgebung, zum Beispiel auf dem Schlachtfeld im militärischen Einsatz, mit einer nicht vernachlässigbaren Wahrscheinlichkeit kompromittiert werden. Daher besteht immer die Gefahr, dass die vertraulichen Daten und Schlüssel eines einzelnen Knoten in die Hand des Gegners gerät und man daher nicht nur Angriffe von außerhalb des Netzes sondern auch von innen in Betracht ziehen muss. Daher sollte ein Ad-hoc-Netzwerk eine verteilte Architektur ohne zentrale Einrichtungen besitzen. Die Einführung einer zentralen Einrichtung in einem Ad-hoc-Netzwerk würde zu einer signifikanten Verletzbarkeit an dieser Stelle führen, da eine Kompromittierung dieser Einric htung die Sicherheit des gesamten Netzwerks unterlaufen würde. Drittens ist ein Ad-hoc-Netzwerk dynamisch, da sich laufend die Topologie und auch die Mitglie dschaft einzelner Knoten aufgrund der Mobilität der Knoten ändert. Es ändern sich sogar Vertrauensverhältnisse, wenn ein Knoten als kompromittiert erkannt wird, und die Verteilung administrativer Aufgaben. Dies unterscheidet ein solches Netz von anderen drahtlosen mobilen Netzen wie z.B. mobile IP. Daher kann auch eine statische Sicherheitslösung nicht überzeugen, im Gegenteil ist ein Sicherheitsmechanismus gesucht, der sich dynamisch und schnell an solche Änderungen anpasst. Außerdem sollte diese Lösung skalierbar sein, und auch mit großen Ad-hoc-Netzwerken funktionieren, da ein Ad-hoc-Netzwerk je nach Zielsetzung auch aus mehreren Hunderten, Tausenden oder sogar Millionen von Knoten bestehen kann. 1.3 Weitere Darstellung und grundlegende Ideen Bei genauerer Betrachtung ergeben sich zwei grundlegende Probleme, die je nach Einsatzbereich unterschiedlich gewichtet und auch unterschiedlich gelöst werden müssen: Erstens die grundlegende Funktion des Netzwerks, das heißt insbesondere das Routing: es ist entscheidend für fast alle Paketübermittlungen und gleichzeitig sehr anfällig. Hier können sowohl aktiv die Routing-Tabellen, falls vorhanden, verfälscht werden, als auch passiv durch einfache NichtWeiterleitung von Paketen Schäden angerichtet werden. Dabei muss man sowohl den Durchsatzabfall betrachten, aber auch die höhere Latenz sowie die größere Gefahr der Partitionierung des Netzes. Dazu muss man allerdings auch die Routing-Algorithmen in Ad-hoc-Netzwerken zumindest oberflächlich betrachten. (Abschnitt 2.1) Geht man von einem Netz kooperativer Geräte mit einzelnen kompromittierten Knoten aus, wie man es im Falle einer militärischen Anwendung erwarten kann, so zeigt sich, dass die gängigen RoutingProtokolle einen Ausfall eines Knotens durch die Nutzung alternativer Routen kompensieren, als ob die Routing-Informationen veraltet wären und der betreffende Knoten seine Position gewechselt hätte. Andererseits kann man den Durchsatz eines Ad-hoc-Netzwerks mit einigen kompromittierten Knoten durch Ergänzungen zu bestehenden Routing-Protokollen signifikant steigern. (Abschnitt 2.2) Im Falle eines nicht-militärischen, privaten Netzwerks kommt hinzu, dass kein Knoten bzw. sein Nutzer ein direktes Interesse daran hat, Pakete für andere Knoten weiterzuleiten und dabei Bandbreite und insbesondere Energie bereitzustellen, die wegen des Batteriebetriebs knapp und wertvoll ist. Hier muss man für Knoten einen Anreiz schaffen, der den indirekten Nutzen eines kooperativen Verhaltens im 3 Netz in einen direkten Nutzen umsetzt. Vorgeschlagen wurde in diesem Bereich der Einsatz einer Art Währung, mit dem Weiterleiten von Nachrichten belohnt wird bzw. bezahlt werden muss. Damit ergeben sich selbstverständlich neue Anforderungen: diese Währung muss in gewissem Sinne fälschungssicher sein, ihr Gebrauch muss unverzichtbar, aber fair sein. Die vorgeschlagenen Systeme werden in Abschnitt 2.3 näher vorgestellt. Zweitens die Sicherheit des Netzwerks, genauer der Schlüsselmanagement-Dienst: er ermöglicht erst Vertraulichkeit, Integrität, Authentizität und eine eindeutige Zuordnung der Nachrichten. Dieses Thema werde ich nur knapp behandeln. 2 Sicheres Routing Die spezielle Natur der Ad-hoc-Netzwerke macht auch ganz neue Routing-Mechanismen erforderlich: Wie bereits gezeigt, müssen auch Knoten, mit denen nicht direkt kommuniziert werden kann, erreicht werden können, und das bei unsicheren Übertragungsbedingungen und einer sich rasch, und aus Sicht des einzelnen Knotens einer sich planlos ändernden Topologie. Da den Routing-Mechanismen hier eine so große Bedeutung zukommt, ist ein Netz an dieser Stelle auch sehr angreifbar für böswillige Angreifer von außen bzw. verletzlich gegen egoistische Nutzer, die keine Pakete weiterleiten, oder auch gegen kompromittierte Knoten von innen. Um ein sicher funktionierendes Routing zu gewährleisten, gibt es verschiedene Möglichke iten: Erstens kann man für Routing nur auf bekannte Knoten zurückgreifen, zu denen eine Vertrauensbeziehung besteht. Diese muss allerdings a priori, außerhalb des Netzwerks aufgebaut werden. In manchen Anwendungen ist dies per se der Fall, z.B. bei militärischen Anwendungen. Dennoch hat dieses Verfahren Nachteile: erstens müssen Schlüssel ausgetauscht und jede Routing-Kommunikation verschlüsselt werden. Dies ist unter Umständen sowieso gewünscht. Aber auch funktionierende Knoten können zweitens überlastet, drittens defekt oder viertens kompromittiert sein. Dann ergibt sich die Aufgabe, solche Knoten zu erkennen und von Knoten, die (unwissentlich) veraltete Informationen über die Topologie des Netzes geliefert haben, zu unterscheiden. Diese Aufgabe ist in einem Ad-hoc-Netzwerk fast nicht lösbar, es ble iben sehr viele unentscheidbare Fälle. Andererseits sind alle RoutingAlgorithmen für Ad-hoc-Netzwerke so aufgebaut, dass sie mit veralteten, nicht (mehr) zutreffenden Informationen umgehen können: manche suchen daraufhin eine neue Route, andere speichern per se mehrere Alternativen, die nacheinander gewählt werden, bis eine Übertragung erfolgreich ist. Insofern können falsche Routing-Informationen wie veraltete Routing-Informationen betrachtet werden. So lange noch ausreichend viele verlässliche Knoten im Netzwerk vorhanden sind, werden die RoutingProtokolle einen Ausweg finden. Ein anderer Ansatz ist das sogenannte „diversity coding“, bei dem direkt alle verfügbaren Verbindungen zum Ziel gleichzeitig genutzt werden, um Informationen, angereichert mit Redundanzdaten, zu übertragen. Selbst wenn ein Pfad oder auch wenige Pfade versagen und die gesendeten Daten nicht das Ziel erreichen, so genügen die erhaltenen Daten im Normalfalle, um die Information zu rekonstruieren. Gegen ein Routing nur über ausgewählte, vertraute Knoten spricht auch, dass möglicherweise auch nicht per se vertrauenswürdige Knoten diese Aufgabe erfüllen könnten und die Leistung des Netzwerks steigern könnten. Zweitens könnte man das Routing-Protokoll anpassen, so dass fehlverhaltende Knoten erkannt und ausgeschlossen würden. Es wäre allerdings fragwürdig, ein grundlegendes Netzwerkprotokoll mit solch aufwendigen Mechanismen auszustatten. Die bestehenden Protokolle enthalten keine Schutzmechanismen gegen böswillige Attacken, sie setzen sogar voraus, dass jeder Knoten, der Pakete empfängt, auch Pakete weiterleitet. Drittens kann man existierende Routing-Protokolle erweitern und vielleicht minimal anpassen, um solche fehlerhaften Knoten zu erkennen und zu umgehen und dadurch den Durchsatz zu steigern. Im Abschnitt 2.2 stelle ich ein System vor, bei dem das Routing-Protokoll DSR um 2 Komponenten erweitert wird, die die anderen Knoten dynamisch bewerten und das Routing anpassen. Viertens kann man ein besseres Routing erreichen, indem man Anreize schafft, Pakete weiterzuleiten. Dies spielt natürlich in einem militärisch genutzten Netz keine Rolle, da alle Knoten das gleiche Ziel haben, in einem zivilen Netz von privaten Nutzern aber wohl eine vorrangige. 4 2.1 Routing-Protokolle für Ad-hoc-Netzwerke Im Bereich der Ad-hoc-Netzwerke gibt keinen einzelnen Routing-Standard, sondern mehrere Familien von Protokollen, die teilweise für unterschiedliche Anforderungen konzipiert sind, teilweise aber auch direkt konkurrieren. Da die Leistungsfähigkeit eines Ad-hoc-Netzwerks direkt von der Leistungsfähigkeit des eingesetzten Routing-Protokolls abhängt, werde ich hier einen kurzen Überblick über die verschiedenen Protokolltypen geben. 2.1.1 Proaktive Routing-Protokolle Proaktive Routing-Protokolle sind verwandt mit den Routing-Protokollen, die in herkömmlichen drahtgebundenen Netzen eingesetzt werden. Man kann grundlegend zwei Typen unterscheiden: Distance Vector Routing: hier hält jeder Router die Distanz von sich zu allen möglichen Zielen aktuell, indem er regelmäßig alle ihm bekannten Router abfragt, um seine eigene Tabelle zu aktualisieren. Link State Routing: hier hält jeder Router ein komplettes Abbild der Netzwerktopologie aktuell, indem er die Kosten für die Verbindungen zu seinen Nachbarroutern regelmäßig an alle anderen Router im Netzwerk übermittelt. Zusätzlich wird von den genannten Protokollen jede Änderung der Topologie direkt an alle bekannten Router weitergesendet. Bei beiden Verfahren ermittelt der Router bei einer Routing-Anfrage direkt aus seiner eigenen Tabelle die optimale Route. Daher ist die Anfangsverzögerung einer Verbindung sehr klein, aber die Bandbreite, die benötigt wird, um die Routing-Informationen aktuell zu halten, ist sehr hoch und nimmt mit steigender Zahl der Router (in einem Ad-hoc-Netzwerk jeder Knoten!) und größerer Dynamik zu. Beispiele für proaktive Routing Protokolle sind • Destination-Sequence Distance-Vector Routing (DSDV) • Wireless Routing Protokoll (WRP) 2.1.2 Reaktive Routing-Protokolle Im Gegensatz zu den proaktiven Protokollen finden reaktive Routing-Protokolle eine Route erst auf Anfrage. Wenn ein Sender eine Route erfragt, wird ein sogenannter Route Finder im Netzwerk gestartet. Wurde eine solche Verbindung gefunden, so wird sie vom Routing-Protokoll erhalten, bis das Ziel über keinen Weg mehr erreichbar ist, oder die Route nicht mehr benötigt wird. Der Vorteil der reaktiven Routing-Protokolle ist, dass sie nur eine geringe Netzlast erzeugen. Da aber die Routing-Informationen erst auf Anfrage gesammelt werden, kann die Verzögerung bis zur Nutzung sehr lang sein. Beispiele für reaktive Protokolle sind • Dynamic Source Routing (DSR) • Ad Hoc On Demand Distance Vector (AODV) • Asssociativity-Base Routing (ABR) Die Funktionsweise von DSR werde ich kurz genauer erläutern, da das in Abschnitt 2.2 vorgestellte Verfahren auf diesem Routing-Protokoll basiert und dessen Leistung beeinflusst. 2.1.2.1 Dynamic Source Routing (DSR) DSR ist ein sogenanntes Quellen-Routing-Protokoll (source routing protocol), das heißt, jedes Paket bekommt direkt von der Quelle einen Routing-Pfad mit, der aus den Adressen aller Knoten besteht, die dieses Paket passieren soll. Der komplette Pfad wird von der Quelle festgelegt, ist ihr also in jeder Einzelheit bekannt. Als proaktives Protokoll wird eine Route zu einem Ziel erst dann festgelegt, wenn ein Paket an dieses Ziel gesendet werden soll und der Sender nicht zufällig schon eine Route kennt. Man kann DSR in zwei Hauptfunktionen unterteilen: die Routen-Findung und die Routen-Erhaltung. Bei der Suche eines Senders S nach einem Pfad zu einem bestimmten Knoten D sendet DSR erst ein Paket mit dieser Anfrage (ROUTE REQUEST) an alle Nachbarn. 5 Abb. 3: Diese hängen ihre Adresse an und senden das Paket ihrerseits an alle Nachbarn weiter. Jeder Knoten sendet das Paket seinerseits weiter, es sei denn, er hat diese Anfrage bereits auf einem anderen Weg erhalten und weitergesendet. Abb. 4: Kennt ein Knoten einen Pfad zum Ziel oder erreicht die Anfrage das Ziel, so sendet dieser Knoten eine Antwort (ROUTE REPLY) an die Quelle der Anfrage. Dies kann über den in der Anfrage festgehaltenen Weg geschehen oder über einen Weg, der seinerseits mit dem Routen-Findungs-Algorithmus festgelegt wird. Abb. 5: Da der Pfad nicht eindeutig sein muss, erhält die Quelle im Allgemeinen mehrere Antworten mit verschiedenen Routen zum Ziel. DSR wählt eine Route mit den wenigsten Stationen aus und speichert auch die anderen für den Fall, dass diese erste Route ausfällt. Der Routen-Erhaltungsalgorithmus sorgt dafür, dass Knoten auf einem solchen Pfad die Quelle informieren (mittels ROUTE ERROR Nachricht), falls der nächste Knoten nicht mehr erreichbar ist. Der Quellknoten wählt dann eine Alternativroute aus oder, falls keine Alternativroute mehr gespeichert ist, startet eine neue Pfad-Suche. Damit erzeugt dieses Routing-Protokoll als proaktives Protokoll wenig Overhead und als QuellenRouting-Protokoll kennt die Quelle den genauen Pfad, den ihre Pakete zurücklegen (sollten). 2.1.3 Hybride Routing-Protokolle Diese Protokolle stellen einen Kompromiss zwischen proaktiven und reaktiven Protokollen dar: die einzelnen Knoten unterhalten Routing-Informationen über eine kleine und klar abgegrenzte Zone, zeigen also in diesem Bereich proaktives Verhalten. Routen zu Knoten, die nicht in dieser Zone liegen, werden wie mit einem reaktiven Protokoll erst auf Anfrage hin aufgebaut. Diese Protokolle gewährleisten eine kleine Latenz bei Kommunikation mit benachbarten Knoten, generieren aber nicht wesentlich mehr Netzlast als die reaktiven Protokolle. Beispiele sind: 6 • • Temporally Ordered Routing Algorithm (TORA) Zone Routing Protocol (ZRP) 2.2 Schadensbegrenzung bei Routing-Ausfällen Hier werden zwei Techniken beschrieben, in einem Ad-hoc-Netzwerk den Schaden, den Knoten bewirken, die keine Pakete weiterleiten, dies aber tun sollten, zu begrenzen und den Durchsatz im Vergleich zu Standard-Routing zu verbessern. Dabei identifiziert ein sogenannter „watchdog“ solche (manipulierten) nicht-standard-konforme Knoten durch Lauschen an seiner Funkschnittstelle und ein „pathrater“ verändert das Routing dahingehend, diese Knoten zu umgehen und die Leistung des Netzes zu steigern. Im folgenden gehe ich auch von diesen Annahmen aus: • Die Verbindungen zwischen den Knoten sind bidirektional und symmetrisch. Dies ist für das Lauschen des Watchdogs erforderlich, aber auch in den meisten Funknetzen gegeben. • Das Senden erfolgt ungerichtet, also in alle Richtungen gleichermaßen, und die Schnittstelle muss einen Abhör-Modus bieten, so dass auch Nachrichten an andere Knoten empfangen werden, falls man sich in Reichweite des Senders befindet. • Das eingesetzte Routing-Protokoll ist DSR. (Die vorgestellten Algorithmen setzen auf DSR auf, können allerdings begrenzt auch an andere Routing-Protokolle angepasst werden.) 2.2.1 Der Watchdog Der Watchdog-Algorithmus soll Knoten aufspüren, die sich zwar während der Routen-Suche in die Routen eintragen, Pakete dann aber doch nicht weiterleiten. Die Idee ist einfach: der Algorithmus lauscht an der Funkschnittste lle des Knotens auf Pakete, die nicht an den Knoten selbst gerichtet sind. Unter den gegebenen Voraussetzungen „hört“ er kurz nach dem Weiterleiten eines Paketes, wie die nächste Station dieses Paket weiterleitet. Abb. 6: Beispiel: Soll ein Paket auf dem Weg von S nach D von A über B zu C weitergeleitet werden, so kann zwar A das Paket nicht direkt zu C senden, empfängt aber im Normalfall von B gesendeten Nachric hten (gepunktete Linie), also auch die an C weitergeleitete Nachricht (durchgezogene Linie). Das heißt, A kann meist kontrollieren, ob B die Nachricht wirklich weiterleitet. Falls nicht jede einzelne Verbindung verschlüsselt ist, was sehr aufwendig und daher nicht üblich ist, kann A sogar überprüfen, ob B die Nachricht oder den Header unzulä ssig verändert hat. Diese Überwachung wird mit Hilfe eines Puffers von kürzlich gesendeten Paketen und Fehlerzählern für die benachbarten Knoten realisiert. Jede empfangene Nachricht wird mit den Paketen im Puffer verglichen: handelt es sich um ein kürzlich weitergeleitetes Paket, wird der Eintrag im Puffer gelöscht, da es anscheinend weitergeleitet wurde. Verbleibt ein Paket länger als eine bestimmte Zeit im Puffer, so wird der Fehlerzähler des für die Weiterleitung dieses Paketes verantwortliches Knotens erhöht. Wenn der Fehlerstand eine gewisse Schwellbandbreite erreicht, stellt der Algorithmus fest, dass der Knoten Pakete nicht ordnungsgemäß weiterleitet und sendet eine Nachricht an die Quelle(n), um sie über diese Feststellung zu informieren. Dieses Watchdog-Verfahren hat Vorteile, aber auch unabdingbare Schwächen. Erstens kann der Watchdog die Nachbarknoten während einer Kollision nicht überwachen: Abb. 7: An einer solchen Kollision kann B mit der Weiterleitung des vom Watchdog nachverfolgten Paketes 1 beteiligt sein, dies muss dann aber nicht die erfolgreiche Übertragung an C verhindern, B kann aber auch mit der Übertragung eines anderen Paket oder gar nicht beteiligt sein. Zweitens kann der Watchdog nur erfahren, dass die Nachricht gesendet wurde, aber nicht, ob sie den nächsten Knoten auch erreicht hat: Abb. 8: Der Watchdog von A löscht den Eintrag für Paket 1 in seinem Puffer, wenn er hört, dass B versucht, dieses Paket an C zu senden, obwohl er nicht hören kann, ob dieses Paket C erreicht oder möglicherweise aufgrund einer Kollision verloren geht. B sollte dann die Übertragung wiederholen, dies wird 7 aber durch den Watchdog von A nicht mehr kontrolliert. B könnte sogar eine Kollision provozieren, indem er erst zu senden beginnt, wenn er eine andere Übe rtragung von C empfängt. Im ersten Falle spart der Knoten dadurch Energie, er verhält sich egoistisch. Im zweiten Falle allerdings kostet ihn sein Verhalten Energie, Bandbreite und Rechenzeit, ohne dass es ihm einen Vorteil bringt: dieses Verhalten ist kaum zu erwarten. Drittens könnte ein Knoten auch andere Knoten fälschlich eines Fehlverhaltens bezichtigen: dadurch könnte der Durchsatz gesenkt oder sogar das Netz partitioniert werden. Dieses Verhalten würde alle rdings auffallen: berichtet A dem Sender S, dass B Pakete nicht weiterleitet, so dürfte A die Acknowledgements nicht weiterleiten, um den Schein zu wahren. Dies alle rdings würde Knoten B bemerken und dann dem Sender S melden. Da er das Fehlverhalten von A erkannt hat, würde B eine andere Route wählen, so dass die Nachricht S auch erreicht. Viertens könnte ein Gerät, das seine Sendeleistung kontrollieren kann, u.U. den Watchdog täuschen, indem es seine Leistung soweit reduziert, dass die Nachricht zwar den Vorgängerknoten, aber nicht den Nachfolger erreicht. Dies würde dem Knoten allerdings keinen echten Vorteil einbringen, da er Energie und Bandbreite verschwendet, nur um den Vorgängerknoten zu täuschen. Auch das entspricht nicht dem vorausgesetzten Umfeld, so dass dieser Fall nicht weiter betrachtet werden muss. Fünftens könnten mehrere Knoten sehr wohl der Kontrolle durch den Watchdog entgehen, wenn sie zusammenarbeiten: falls C Pakete verwirft, aber B dies nicht meldet, ist die Überwachung fehlgeschlagen. Aber auch dieses Verhalten ist im angedachten Umfeld von privaten Ad-hoc-Netzwerken, in denen i.A. jeder Knoten einen anderen Eigentümer hat, nicht zu erwarten. Sechstens können Knoten natürlich Pakete mit einer geringeren Rate als der Schwellrate des Watchdogs verwerfen. Allerdings könnte es dann passieren, dass der Watchdog aus den oben angegebenen Gründen die Übertragung nicht detektiert und der Fehlerzähler daher unter die Schwelle gerät. Zudem garantiert der Watchdog so zumindest indirekt eine gewisse Minimalbandbreite. Ich möchte hier bereits anmerken, dass ein solches Verhalten ebenso wie das oben beschriebene NichtWiederholen des Sendens bei den beschriebenen Algorithmen keinen Sinn macht, da selbst eine generelle Verweigerung der Weiterleitung oder ein Fehlverhalten ohne negative Folgen für den Knoten bleibt. Um überwachen zu können, ob der nächste Knoten das Paket an den richtigen Knoten weiterleitet, muss der Watchdog die übernächste Station auf dem Pfad kennen. In dem beschriebenen Fall trifft dies immer zu, da diese Implementierung auf DSR aufsetzt und bei diesem Protokoll jedes Paket alle Stationen des Pfades enthält. Bei einem Hop-by-Hop-Routing-Protokoll, bei dem in jedem Knoten nur die Entscheidung getroffen wird, an wen die Nachricht weitergeleitet wird, hätte der Watchdog diese Information nicht und so könnte der nächste Knoten an einen nicht vorhanden Knoten senden, ohne dass der Watchdog Verdacht schöpfte. Natürlich wird dieses Problem durch den Einsatz eines Quellen-Routing-Protokolls elegant gelöst, dennoch muss man meiner Meinung nach auch hier die gle ichen Argumente wie bei einer geplanten Kollision bei der nächsten Station gelten lassen: dieses Verhalten bringt dem störenden Knoten keinerlei Vorteil, es kostet ebenso Ressourcen wie eine ordnungsgemäße Weiterleitung. Da wir von einem zivilen Netz privater egoistischer Knoten ausgehen, ist dieses Verha lten nicht zu erwarten. Der Einsatz eines Quellen-Routing-Protokolls ist für den Einsatz des Pathrater allerdings nötig, damit er den genauen Pfad eines Pakets festlegen kann. 2.2.2 Der Pathrater Auch der Pathrater-Algorithmus läuft auf jedem Knoten des Netzwerks. Er nutzt die Informationen der Watchdogs um die Zuverlässigkeit eines Pfades zu bewerten und das Routing mit Hilfe dieser Bewertungen anzupassen. Dazu speichert er für jeden ihm bekannten Knoten eine Zuverlässigkeitsbewertung. Die Metrik eines Pfades ergibt sich dann als arithmetisches Mittel der Bewertungen der Knoten des Pfades. Wenn mehrere Pfade zu einem Ziel bekannt sind, wählt der Algorithmus den Pfad mit der höchsten Metrik, nicht den Pfad mit den wenigsten Schritten wie DSR. Hier sieht man, dass der Pathrater auf einem Quellen-Routing-Protokoll aufbauen muss, da er den ganzen Pfad bis Ziel festlegen soll. Die Wertung der einzelnen Knoten geschieht folgendermaßen: Die Zuverlässigkeit des eigenen Knotens bewertet der Pathrater mit 1. Lernt er einen neuen Knoten kennen, so erhält dieser die neutrale Wertung 0,5. Dies bewirkt, dass der Pathrater ohne weitere Informationen den kürzesten Pfad wählt. Die Wertung eines Knotens wird angepasst, solange Pakete über diesen Knoten geleitet werden, sonst bleibt die Wert unangetastet. Wenn Pakete erfolgreich über 8 einen Knoten geleitet werden, wird die Bewertung des Knotens alle 200ms um 0,01 erhöht, allerdings maximal bis 0,8.Wird während einer Übertragung die Verbindung unterbrochen, wird die Bewertung um 0,05 reduziert, bis maximal 0. Wird ein Knoten von einem Watchdog als Nicht-Weiterleitend gemeldet, erhält er eine stark negative Bewertung, z.B. –100. Dadurch bekommen Pfade mit einem oder mehreren als nicht funktionierend verdächtigten Knoten negative Bewertungen. Diese Pfade werden erst in letzter Instanz gewählt und mit einer „Send Route Request“ (SRR) genannten Erweiterung versehen versucht der Pathrater sogar vorher noch durch eine Pfadsuche einen Alternativpfad zu finden. Erst wenn auch diese keine Alternativpfade findet, wird ein solcher Pfad genutzt. Da Knoten auch dann als fehlerhaft auffalle n, wenn sie kurzzeitig ausfallen oder überlastet sind, wäre es sinnvoll, die Bewertung langsam wieder zu erhöhen, um Knoten nicht endgültig auszusperren. 2.2.3 Simulation und Ergebnisse An der Stanford University wurden mit dem Berkeley Network Simulator (ns) und den 802.11-CMUErweiterungen verschiedene Simulationen eines Netzes aus 50 Knoten auf einer 670x670m2 Fläche durchgeführt. Es wurden 2 Bewegungsmuster simuliert, wobei sich die Knoten jeweils mit zufälliger, aber konstanter Geschwindigkeit von bis zu 20 m/s auf zufällige Ziele zu bewegten, dort je nach Simulation 0 oder 60 s pausierten, um dann wieder ein zufälliges Ziel anzusteuern. Während der Simulation wurden zehn Verbindungen konstanter Bitrate aufgebaut, wobei vier Knoten Quelle von zwei Strömen und zwei Knoten Quellen je eines Stroms waren, und acht Knoten je einen Strom empfangen und ein neunter zwei. Der Anteil der nicht-weiterleitenden Knoten wurde in 5%-Schritten zwischen 0% und 40% variiert, wobei jeweils die größeren Gruppen Obermengen der kleineren waren. Um den Effekt der beschriebenen Erweiterungen von DSR zu bestimmen, wurden die Simulationen mit verschiedenen Kombinationen der Erweiterungen zu DSR durchgeführt. Gemessen wurden der Durchsatz und der Anteil der Übertragungen, die dem Routing dienen: ROUTE REQUEST-, ROUTE REPLY-, ROUTE ERROR –Nachrichten von DSR sowie WATCHDOGNachrichten. Es wurden Übertragungen und nicht Pakete gezählt, da ein einzelnes Route RequestPaket eine Kaskade von Übertragungen auslöst, die das Netz sehr belasten. 2.2.3.1 Der Durchsatz Abb. 9: Dargestellt ist der Durchsatz in Abhängigkeit von dem Anteil der nicht-weiterleitenden Knoten in Simulationen mit folgenden DSR-Konfigurationen: • Keine Erweiterung als Referenz • Einfacher Pathrater (PR) • Einfacher Pathrater (PR) und Watchdog (WD) sowie • Pathrater mit SRR-Funktion und Watchdog. Man sieht signifikante Unterschiede zwischen den einzelnen Protokoll-Versionen, wobei die Version mit allen drei Erweiterungen den besten Durchsatz erzielt. Wird die SRR-Funktion abgeschaltet, so ist die Durchsatzsteigerung nicht ganz so groß. Obwohl der Watchdog selbst keine Routingentscheidun9 gen trifft, so versorgt er doch den Pathrater mit wichtigen Informationen: wird der Watchdog deaktiviert, kann der Pathrater selbst keine fehlerhaften Knoten erkennen und beeinflusst den Durchsatz nicht signifikant. 2.2.3.2 Der Routing Overhead Abb. 10: Dargestellt ist der Overhead in Abhängigkeit von dem Anteil der nicht-weiterleitenden Knoten in Simulationen mit folgenden DSR-Konfigurationen: • Keine Erweiterung als Referenz • Watchdog (WD) • Einfacher Pathrater (PR) und Watchdog (WD) sowie • Pathrater mit SRR-Funktion und Watchdog. Man sieht, dass der Watchdog-Mechanismus im Vergleich zum DSR-Routin g-Overhead nur geringen zusätzlichen Aufwand verursacht. Dieser ist auch so gering, dass er durch weitere fehlerhafte Knoten gar nicht merklich gesteigert wird. Die zusätzliche Aktivierung des Pathraters führt zu einer zwar messbaren aber immer noch kleinen Erhöhung des Overheads, da nun Pakete über sichere Umwege geleitet werden. Zu beachten ist, dass diese kleine Overhead von maximal 6 % den Durchsatz um 16 % steigert! Die Aktivierung der SRR-Funktion verursacht dagegen einen wesentlich höheren Overhead, in Relation dazu steigert sie den Durchsatz aber nicht so effektiv. 2.2.4 eigene Bewertung, Ideen Meiner Meinung nach bietet sich das Verständnis der Bewertung als eine Zuverlässigkeitswahrscheinlichkeit an. So betrachtet ergeben sich viele Änderungsvorschläge: Die Watchdogs sollten für ihre Nachbarn einen alternde relative Häufigkeit für die Beobachtung einer Weiterleitung führen. Diese könnten sie in größeren, regelmäßigen Abständen an die Sender übermitteln. Falls eine bestimmte Schranke unterschritten wird, also der beobachtete Knoten anscheinend gar keine Pakete weiterleitet, sollte sofort eine Nachricht an die Quelle gesendet werden. Das Produkt der Zuverlässigkeitswahrscheinlichkeiten aller Knoten eines Pfades gibt die Zuverlässigkeitswahrscheinlichkeit des Pfades an. Der Pathrater kann nun den Pfad mit der höchsten Erfolgswahrscheinlichkeit auswählen. Man müsste zusätzlich einen Mechanismus schaffen, der durch eine langsame Erhöhung der Bewertungen dazu führt, dass auch zeitweilig als fehlerhaft erkannte Knoten wieder gete stet werden. Eine andere, meiner Meinung nach elegantere, Methode wäre, die Pfadmetriken ebenfalls als Wahrscheinlichkeiten für die Auswahl des Pfades zu nutzen. Dies hätte den Vorteil, dass auch als sehr unzuverlässig bewertete Pfade von Zeit zu Zeit getestet würden. Dies könnte alle rdings zu unvertretbar hohen Verlusten führen. 10 Denkbar wäre auch eine Mischform: mit einer hohen Wahrscheinlichkeit wird der Pfad mit der höchsten Metrik gewählt, mit einer entsprechend kleinen Wahrscheinlichkeit wird der Pfad aus allen möglichen Pfaden zufällig gewählt, wobei die Wahrscheinlichkeit der Auswahl eines Pfades proportional zu ihrer Bewertung ist. Eine Simulation wert wäre auch der Versuch, dieses System auf die lokale Nachbarschaft zu beschränken, dann aber zwei Wahrscheinlichkeiten pro Knoten zu verwalten: eine für die Zuverlässigkeit des Nachbarknoten selbst und eine für Routen, die über diesen Knoten führten. Dies würde das System auch mit Hop-by-Hop-Routing-Protokollen kompatibel machen. Generell wäre es wünschenswert, wenn die nicht-kooperativen Knoten einen Nachteil aus ihrem Verhalten hätten. Dies könnte dadurch geschehen, dass Pakete für solche Knoten nicht weitergeleitet werden. Dies würde allerdings DoS-Angriffe ermöglichen. In Kombination mit dem vorgeschlagenen Wahrscheinlichkeitsansatz könnte man die Wahrscheinlichkeit für die Weiterleitung eines Paketes proportional (z.B. Faktor 2, so dass Pakete für unbekannte Knoten weitergeleitet werden) zu der Zuverlässigkeitsbewertung der Quelle wählen. 2.3 Stimulierung der Kooperation in selbst-organisierten Mobilen Ad-hoc-Netzwerken durch eine virtuelle Währung: Nuglets In diesem Abschnitt wird ökonomischen Ansatz von Prof. Jean-Pierre Hubaux und seines Mitarbeiters Dr. Levente Buttyán vorgestellt, die Kooperation in einem Ad-hoc-Netzwerk durch eine virtuelle Währung zu gewährleisten, die sie „Nuglet“ nennen, mit der Dienste bezahlt bzw. berechnet werden. . Über das zugrunde liegende Netzwerk werden folgende Annahmen gemacht: • es handelt sich um ein ziviles, großes Netz sogenannter „Terminodes“ • Das Netzwerk ist komplett selbstorganisierend, es gibt keine feste Infrastruktur • Im Allgemeinen gehört jeder Terminode einem anderen Nutzer mit eigenen Interessen. • Der Nutzer hat volle Kontrolle über Hard- und Software seines Gerätes. Er kann also beides mutwillig verändern bzw. verändern lassen oder veränderte Geräte kaufen, um persönliche Vorteile zu erhalten, z.B. eine verlängerte Akkulaufzeit. • Man geht aber davon aus, dass der Nutzer kein Interesse daran hat, die Protokolle der unteren Ebenen, genauer gesagt die der physical und der data link Ebene, zu verändern, da diese Protokolle für eine Nutzung des Netzwerks nötig sind. Eine Veränderung auf diesen Ebenen würde zwar das Netzwerk stören, dem Nutzer aber keine erkennbaren Vorteile bringen. Da diese Ebenen wie vorgesehen funktionieren, kann ein Knoten mit jedem Knoten in seiner Funkreichweite kommunizieren. • Andererseits geht man davon aus, dass jede höhere Protokollebene inklusive der Netzwerkebene verändert werden kann. • Bei Einsatz dieser virtuellen Währung kann jeder Knoten anhand von Batteriestand, „Kontostand“, Nugletbedarf, Energiebedarf für eine Übertragung zu einem nächsten Knoten und möglicherweise weiteren Faktoren eigenständig bestimmen, ab welchem Entgelt sich eine Weiterleitung für ihn lohnt. Insgesamt führen diese Annahmen zu einem Netzwerk, dessen Knoten egoistisch sind: sie nutzen zwar Dienste anderer Knoten, tendieren aber dazu, keine Dienste umsonst anzubieten. Man muss ihnen also einen Anreiz bieten, mit anderen Knoten zu kooperieren, also Dienste ohne direkten Vorteil anzubieten. Da Dienste im Netzwerk mit Nuglets bezahlt werden müssen und das Angebot von Diensten die einzige Möglichkeit für einen Terminode ist, Nuglets zu gewinnen, ist jetzt jeder Knoten daran interessiert, Nuglets zu verdienen bzw. zumindest einen gewissen Bestand von Nuglets zu erhalten. Da aber unter Umständen Nuglets im Netzwerk verloren gehen können, muss auf irgendeine Weise ein Ausgleich für diese Verluste geschaffen werden. Dies könnte dadurch geschehen, dass internationale Vertragsorganisationen Nuglets für Geld verkaufen. Dann könnten auch höhere Dienste wie der Übe rgang in andere Netze oder Informationen mit Nuglets bezahlt werden, die dadurch allerdings wirklich Geld-äquivalente Bedeutung erhalten würden. Damit würde auch die Motivation für eine Manipulation dieses Systems wesentlich steigen. Die Einführung einer solchen Währung hätte aber auch noch einen weiteren Vorteil im Bereich Nachrichten-Weiterleitung: die Nutzer wären motiviert, ihr Gerät nicht auszuschalten oder auf bloße Empfangsbereitschaft zu schalten, um Nachrichten weiterleiten und damit Nuglets verdienen zu können. Außerdem würde ein solches System zu einer bewussten und moderaten Nutzung des Netzes führen, 11 wie es schon in den herkömmlichen Mobilkommunikationsnetzen (GSM-Netze mit fester Infrastruktur und zeit- oder volumenabhängigen Nutzungstarifen) funktioniert. Im folgenden wird sich der Fokus allein auf die Weiterleitung von Paketen in einem TerminodesNetzwerk richten. Generell funktioniert dieses System auch mit anderen Routing-Algorithmen und lässt sich auf andere Dienste einfach erweitern. Es wurden 2 grundlegende Modelle entwickelt: Beim Packet Purse Model (PPM) zahlt der Sender des Pakets im Voraus, indem er eine virtuelle Geldbörse des Pakets mit einer von ihm gewählten Anzahl Nuglets auflädt, bevor er das Paket abschickt. Beim Paket Trade Model (PTM) wird ein Paket vom Empfänger im Nachhinein bezahlt, indem jede Station das Paket von der jeweils vorigen für einen von ihr gewählten Betrag abkauft. Beide Modelle haben Vor- und Nachteile, wie sich aus der folgenden genaueren Beschreibung ergibt, es ist aber auch eine Kombination aus beiden Modellen leicht denkbar. In jedem Falle muss der Handel mit Nuglets gut abgesichert sein, um Fälschungen und Missbrauch zu verhindern und eine Akzeptanz als Währung zu ermöglichen. 2.3.1 Das Packet Purse Model (PPM) In diesem Modell zahlt der Sender für die Weiterleitung des Pakets, indem er das Paket mit (seiner Schätzung nach) ausreichend vielen Nuglets auflädt. Jeder Knoten, der dieses Paket weiterleitet, nimmt sich aus der Börse des Pakets so viele Nuglets, dass seine Kosten für die Weiterleitung gedeckt sind. Falls die im Paket vorhandenen Nuglets nicht für eine Weiterle itung ausreichen, wird es entsorgt. Dies ist auch der Hauptnachteil dieses Verfahrens: der Sender hat keine Möglichkeit, die genauen Transportkosten zu erfahren und wenn er sie unterschätzt, sind alle eingesetzten Nuglets für ihn verloren. Daher sollte ein Paket immer mit mehr als ausreichend vielen Nuglets versehen werden. Die bis zum Empfänger verbleibenden Nuglets können dann dort als Bezahlung für andere Dienste oder Informationen sein. Dennoch kann jedes Paket durch die Eigenschaften eines Ad-hoc-Netzwerks verloren gehen, z.B. durch einen einfachen Pufferüberlauf bei einer Station oder durch eine Partitionierung des Netzes. Andererseits wird durch dieses System gewährleistet, dass kein Nutzer das Netz durch unsinnige Pakete stört, da er im Voraus die Kosten tragen muss. Bei diesem Verfahren muss durch Sicherheitsmechanismen gewährleistet sein, dass ein Knoten nur das noch festzulegende Entgelt für seine Weiterleitung erhält, die Nuglets aber nicht mehrfach oder für ein anderes Paket verwendet werden können. 2.3.1.1 PPM mit fester Weiterleitungspauschale Ein einfachen Ansatz zur Festlegung der Weiterleitungsentgelte ist eine vom Sender festgelegte Pauschale u pro Weiterleitung, die zusätzlich zu den Nuglets vom Sender dem Paket mitgegeben wird und dann auch vor Manipulation geschützt werden muss. Ebenfalls muss gesichert werden, dass jeder weiterleitende Knoten genau u Nuglets erhält, wenn und nur wenn er das Paket weiterleitet. Leider ist das Verfahren sehr unflexibel: Fa lls die Weiterleitung des Pakets für u Nuglets unökonomisch ist, kann der Knoten das Paket verwerfen, auch wenn die Nuglet-Börse noch mehr als ausreichend gefüllt ist. Die Entlohnung ist außerdem völlig unabhängig von der Situation des einzelnen Knoten: Batterieladung und ähnliches werden hier nicht berücksichtigt. Dieses Verfahren hat alle rdings auch große Vorteile: Es ist sehr einfach zu implementieren und generisch. Außerdem können Routing-Algorithmen, die die ganze Route erkunden, derart angepasst werden, dass beteiligte Knoten direkt ihren Minimalpreis angeben und der Sender so erstens seine Pauschale anpassen kann und zweitens sogar seine Route anhand der minimalen Kosten auswählen kann. Dabei wären die Knoten an der Teilnahme und der ehrlichen Angabe der Weiterleitungspreise interessiert, da der Sender sonst eine andere Route wählt oder die angebotene Pauschale nicht kostendeckend wäre, der Knoten also auch keine Nuglets verdienen könnte. 2.3.1.2 PPM mit Auktionen Bei diesem Verfahren wird von jedem weiterleitenden Knoten eine geschlossene Auktion durchgeführt. Dabei geben alle als nächste Station in Frage kommenden Knoten ein geheimes Gebot ab, für das sie bereit sind, das Paket selbst weiterzuleiten. Der weiterleitende Knoten bestimmt den Bieter des niedrigsten Gebots pj = mini pi als Gewinner, legt im Paket das zweitniedrigste Gebot pk = mini, i ? j pi 12 als Entgelt fest und leitet das Paket an den Gewinner weiter. Das Sicherheitssystem muss bei diesem Verfahren gewährleisten, dass die Auktion regelgemäß durchgeführt wird und der nächste Knoten genau pk Nuglets entnimmt. Dieses Verfahren hat mehrere Nachteile: es ist sehr komplex und wenn die Auktionen über einen Nachrichtenaustausch durchgeführt werden, werden Overhead sowie die Verzögerung der Nachric htenübermittlung unvertretbar groß. Man kann die Auktionen allerdings auch mit Software-Agenten realisieren, die mittels Hello-Protokoll übermittelt werden, intern den Nachbarknoten repräsentieren und Gebote abgeben. Ein anderer Nachteil dieses Systems ist, dass es nur mit Routingverfahren kombiniert werden kann, die mehrere nächste Stationen für ein Ziel zulassen. Hier kann dann mit den möglichen Knoten eine (interne) Auktion durchgeführt werden, um den genutzten nächsten Knoten auszuwählen. Hauptvorteile dieses Verfahrens sind erstens der Versuch, die Übertragungskosten zu minimieren und zweitens die Berücksichtigung, der (Batterie -)Situation der einzelnen Knoten. Durch die Auswahl des lokal günstigsten Anbieters wird gleichzeitig die Wahrscheinlichkeit reduziert, dass das Paket aufgrund unzureichender Nuglets verworfen wird. Ein Knoten mit niedriger Batterieladung wird die Kosten einer Weiterleitung höher einschätzen, ein höheres Gebot abgeben und seltener Auktionen gewinnen. Damit spart er Energie, verdient aber weniger Nuglets. Dies ist eine angenehme Eigenschaft, insbesondere da gezeigt wurde, dass die Lebensdauer eines Netzwerks verlängert werden kann, indem der Energieverbrauch der Geräte durch Routing an die Energiereserven der Knoten angepasst wird. 2.3.2 Das Packet Trade Model (PTM) Bei diesem Ansatz trägt ein Paket keine Nuglets, sondern wird für Nuglets weiterverkauft. Jeder Knoten auf dem Weg von Sender zu Empfänger „kauft“ das Paket von seinem Vorgänger (bis auf den ersten, er erhält es umsonst vom Sender), und verkauft es an den nächsten für mehr Nuglets. So werden die Kosten für die Weiterleitung am Ende insgesamt vom Empfänger getragen. Falls ein Knoten ein Angebot für ein Paket ausschlägt, kann der aktuellen „Besitzer“ des Pakets das Paket für einen niedrigeren Preis anbieten, es einem anderen Knoten anbieten oder das Paket verwerfen. Der Hauptnachteil dieses Systems ist, dass ein Sender nicht mehr die Kosten für seine Sendungen trägt, und deshalb eine Überlastung nicht durch Kosten für das Senden eines Paketes vermieden wird. Im Gegenteil: das Senden von (sogar Multicast-)Paketen ist völlig ohne Nachteile. Außerdem trage alle Knoten, die das Paket kaufen, das Risiko, dass kein anderer Knoten das Paket annehmen will. So entsteht für den letzten Eigentümer des Pakets ein Verlust für ein Paket, an dem er an sich kein Interesse hatte. Dabei steigt das Risiko mit der Entfernung vom Sender, da der weiterleitende Knoten immer in Vorleistung treten muss, was sich sicherlich als hemmend für (teure) Übertragungen über große Distanzen auswirkt. Vorteile dieses Ansatzes sind, dass der Sender nic ht im Voraus die Kosten der Übertragung kennen oder schätzen muss, dadurch werden keine Nuglets wegen einer falschen „Frankierung“ verschwendet. Mit dieser Technik sind natürlich auch Multicast-Pakete einfach zu realisieren. 2.3.3 Das Hybrid-Modell Die beiden vorgestellten Modelle lassen sich offensichtlich einfach kombinieren: die Quelle stattet das Paket mit einer gewissen Anzahl von Nuglets aus, und das Paket wird nach dem Packet Purse Model weitergeleitet, bis der Nuglet-Vorrat erschöpft ist. Danach wird es nach dem Packet Trade Model weitergeschickt. Das Hybrid-Modell kombiniert die Vorteile beider Ansätze: Da der Sender für seine Pakete zahlen muss, wird er es vermeiden, nutzlose oder überflüssige Pakete zu senden. Die Netzlast wird damit über die Kosten kontrolliert. Andererseits geht ein Paket (und seine Nuglets) nicht verloren, wenn der Sender die Kosten der Übe rtragung unterschätzt hat. Beim Einsatz dieses Verfahrens sollten allerdings zusätzliche Regeln eingeführt werden, so dass der Sender mindestens einen vernünftigen Betrag investieren muss, und der Empfänger verpflichtet ist, kleine Fehlbeträge auszugleichen (insbesondere, wenn er aus früheren Paketen des gleichen Senders Nuglets verdient hat), damit das System nicht einseitig in Richtung PPM oder PTM verschoben wird. 13 2.3.4 Der Schutz der Nuglets gegen Fälschung, Missbrauch und Mehrfachnutzung (PPM) Die grundlegende Entscheidung ist die Repräsentation der Nuglets. Falls man sie als digitales Geld realisieren würde, bräuchte man eine zentrale Autorität als Bank, die Konten für die Nutzer verwaltet und digitales Geld signiert. Eines solche zentrale Autorität ist aber, wie schon erläutert, in dem erwarteten Einsatzgebiet kaum zu realisieren. Daher hat man sich entschlossen, die Nuglets nur durch Zähler in den Knoten zu repräsentieren. Um illegitime Zugriffe auf diese Zähler zu verhindern, werden die Zähler in einem Sicherheitsmodul realisiert, das von einem vertrauenswürdigen Hersteller stammt und nicht verändert werden kann. Alle sicherheitsrele vanten Vorgänge werden in dieser geschützten Hardware ausgeführt, wobei kryptographische Mechanismen einen Missbrauch verhindern sollen. Im folgenden stelle ich für eine Implementierung des Packet Purse Model die Funktionen des Sicherheitsmoduls, die Headerstrukturen und Mechanismen bei der Paketweiterleitung vor. 2.3.4.1 Voraussetzungen Jedes Gerät enthält ein Sicherheitsmodul, das einen eigenen Prozessor, eigenen Speicher und eine systemweit eindeutige Identität (A) besitzt. In diesem Speicher werden der eigene Nuglet-Zähler, die gleich angegebenen kryptographischen Parameter und eine Tabelle mit Einträgen für jeden Nachbarn gespeichert. Dabei enthält jeder Eintrag folgende Daten: • Eine Kennung: die systemweit eindeutig Identität des betreffenden Nachbarn (B) • Einen Sitzungsschlüssel: bei Kontaktaufnahme legen zwei Geräte A und B über einen asymmetrisch gesicherten Kanal aus Effizienzgründen einen Schlüssel kAB für die symmetrische Verschlüsselung der folgenden Kommunikation fest • Zwei Sequenznummern: ebenfalls bei Kontaktaufnahme werden zufällig eine Empfangs() und Sendesequenznummer ( c A→ B ) festgelegt, so dass für die entsprechenden Nummern des Nachbarn B gilt: = c A→ B = c B← A + 1 und c B→ A = c A← B + 1 . Diese Nummern werden genutzt, um Nachrichtenwiederholungen zu erkennen: Wenn A ein Paket an B weiterleitet, schickt er den aktuellen Stand von c A→ B mit und inkrementiert danach c A→ B . Wenn A ein Paket von B erhält, überprüft er, ob die erhaltene Sequenznummer ( c B→ A ) um eins größer ist als. Nur dann akzeptiert er das Paket und erhöht seinen Empfangszähler c A← B auf den erhaltenen Wert. • Einen Schuldenzähler d A→ B . Wenn A ein Paket an B weiterleitet, wird nicht sofort der Nugletzähler entsprechend erhöht, da die Übertragung ja durch unsichere, manipulierbare Hardware des Knotens geschieht. Dies geschieht erst, wenn ein Acknowledgement vom Sicherheitsmodul von B eintrifft. Um B einen Anreiz zu geben, dieses Acknowledgement zu senden, erhält B einige wenige Nuglets von A, die aber keine neue Übertragung rechtfertigen. Die gegenseitigen Schulden werden bei der nächsten Kontaktüberprüfung durch das HelloProtokoll ausgeglichen. Im Falle von PPM mit Auktionen enthält jeder Eintrag zusätzlich noch den Software-Agenten des Nachbarknoten und das Sicherheitsmodul insgesamt abhängig vom eingesetzten Routing-Protokoll Teile der Routing-Informationen. Es wird eine Public-Key-Infrastruktur eingesetzt, bei der jedes Gerät a priori ein Schlüsselpaar, sowie ein Zertifikat des Herstellers für den öffentlichen Schlüssel und den öffentlichen Schlüssel des Herstellers selbst erhält. Diese Schlüssel sind schreibgeschützt im Sicherheitsmodul gespeichert. Außerdem signieren alle Hersteller von Sicherheitsmodulen gegenseitig ihre öffentlichen Schlüssel und ein Sicherheitsmodul speichert alle vom eigenen Hersteller für andere Hersteller ausgestellten Zertif ikate. Die Menge dieser Schlüssel ist überschaubar, wenn es, und das fordert man, nur eine beschränkte Anzahl Hersteller gibt. Es ist möglich, ein Hello -Protokoll einzusetzen, da die Nachbarschaft sich nicht sehr schnell ändert. Dies ermöglicht es, Nachbarn zu identifizieren und Sicherheitsparameter auszutauschen. Das Protokoll der data link-Ebene nutzt Acknowledgements. Dies schafft zuverlässige Verbindungen zwischen Nachbarknoten. Diese Forderung ist sinnvoll, da eine unzuverlässige Funkverbindung genutzt wird und nur mit Ende-zu-Ende-Acknowledgements die Verlustwahrscheinlichkeit insbesondere bei Verbindungen über lange Strecken zu hoch würde (802.11 nutzt Acknowledgements). 14 2.3.4.2 Format des PP-Headers und des PP-Acknowledgements Bei Einsatz des Nuglets-Systems wird ein zusätzlicher Header zwischen MAC-Ebenen-Header und Header der Netzwerkebene eingefügt. Abb. 11: Der Packet Purse Header (PPH) wird vom Sicherheitsmodul der Quelle erzeugt und vom Sicherheitsmodul von jedem weiterleitenden Knoten neu berechnet. Er wird kryptographisch geschützt, um jegliche illegitime Änderung zu verhindern bzw. erkennen zu können. Er enthält die Kennung des Sicherheitsmoduls A, das den Header generiert hat, die Kennung des Sicherheitsmoduls B, an den das Paket als nächstes weitergeleitet werden soll, Sendesequenznummer c A→ B von A, die Zahl der Nuglets im Paket n, die Zahl Nuglets u, die B entnehmen darf, sowie einen Purse Authentication Code (PAC). Diesen Code berechnet A aus den anderen Feldern des PPH sowie einem kryptographischen Hashwert der Nutzlast, der mit dem Sitzungsschlüssel kAB und der Hashfunktion g erzeugt wird. Da es sich bei dieser Funktion um eine Einwegfunktion handelt, kann B durch eine Kontrollberechnung des PAC verifizieren, dass das Paket (hochwahrscheinlich) nicht modifiziert wurde. Der Wert von u wird je nach System entweder von der Quelle für alle Knoten vorgegeben oder von A durch Auktion bestimmt. Wenn ein Knoten ein solches Paket empfängt, muss sie den Erhalt mit einem Acknowledgement bestätigen. Obwohl dies nicht dem Schichtungsgedanken entspricht, soll dieses Acknowledgement an das Acknowledgement der MAC-Ebene angehängt (Piggybacking) werden, das in jedem Falle gesendet wird. Ein solches Acknowledgement des Nuglet-Systems wird von dem Sicherheitsmodul des empfangenden Knoten B generiert und enthält die Kennungen von A und B, die Sequenznummer c A→ B und einen Acknowle dgement Authentication Code (AAC). Dieser AAC wird aus dem erhaltenen PPH mittels der erwähnten kryptographischen Hashfunktion g und dem Sitzungsschlüssel kAB als Schlüssel berechnet. Erst wenn der Sicherheitsmodul A ein solches kryptographisch abgesichertes Acknowle dgement erhält, wird der dem Paket vorher abgezogene Nuglet-Betrag dem eigenen Nuglet-Zähler gutgeschrieben. 2.3.4.3 Das Weiterleitungs-Protokoll Es folgt eine kurze Beschreibung des Paket-Weiterleitungs-Protokolls. Angenommen ein Knoten B hat von einem Knoten A ein Paket erhalten und leitet es an einen Knoten C weiter, da er den Auftrag lukrativ findet. Abb. 12: 15 (1) Um Nuglets zu verdienen, übermittelt der Knoten B den PPH des erhaltenen Pakets, den Hashwert der Nutzlast und die Kennung von C, falls es sich nicht um das Auktionssystem handelt, an sein Sicherheitsmodul B. B verifiziert nur den PPH, indem es testet, ob die übermittelte Sequenznummer gleich c B←A + 1 ist und ob der übermittelte PAC sich mit seiner Berechnung deckt. Falls beide Tests positiv sind, hab B verifiziert, dass dieses Paket unverändert von A zu ihm übertragen wurde. a) Daher wird ein Acknowledgement für A generiert, wie unter (5) für C beschrieben. (2) B berechnet einen neuen PP-Header PPH’ mit den Identitäten von B und C, der Sequenznummer c B→C , n-u als Anzahl der Nuglets und u’, der Bezahlung für C. Diese Zahl u’ ist im Falle einer festen Pauschale gleich u. Im Falle von Auktionen wird sie erst durch eine Auktion unter den Software-Agenten der als nächste Station möglichen Knoten als das zweitniedrigste Gebot ermittelt. Der Gewinner der Auktion wird dann als nächstes Ziel an NB übertragen. Außerdem berechnet B einen neuen PAC mittels g und kB C. Schließlich erhöht B die Sendesequenznummer für C ( c B→C ), speichert den neuen Header PPH’ intern und gibt ihn an die Knoten-Hardware NB aus. (3) NB fügt den Header PPH’ in das Paket ein und sendet es an N C. (4) NC leitet das Paket ebenfalls an sein Sicherheitsmodul weiter und bereite ein Acknowledgement der MAC-Ebene vor. (5) C generiert ein Acknowledgement des Nuglet-Systems: er fügt die Kennungen von B und C, die erhaltene Sequenznummer sowie den aus dem PP-Header PPH’ mit der Funktion g und dem Schlüssel kBC berechneten AAC zusammen. (6) NC sendet das erhaltene Nuglet-System Acknowledgement mit dem der MAC-Ebene zu NB. (7) NB leitet das Acknowledgement an B weiter, um Nuglets zu verdienen. B sucht nun den passenden PP-Header in seinem Speicher. Wird er fündig, so berechnet er den AAC neu und vergleicht sein Ergebnis mit dem erhaltenen AAC. (8) Falls sie gleich sind, erhöht er den eigenen Nuglet-Zähler um u, die von A mitgeteilte Bezahlung für die Weiterleitung. Außerdem erhöht er den Schuldenzähler gegenüber C ( d B→C ) um einige Nuglets und reduziert den eigenen Nuglets-Stand entsprechend. 2.3.4.4 Bewertung Das System ist so sicher, wie die verwendeten Verschlüsselungsalgorithmen, da ein Zugriff auf den Nuglet-Zähler wegen des geschützten Sicherheitsmoduls nicht möglich ist und ein Generieren von Paketen oder Acknowledgements nur durch die Sicherheitsmodule möglich ist. Der PAC verhindert eine Veränderung des PPH und wegen des Hashwerts auch eine Veränderung der Nutzlast, und eine Wiederholung von Nachrichten wird durch die Sequenzzähler detektiert. Der Aufwand für dieses System ist tatsächlich nicht sehr hoch. Die Berechnung und Verifikation der Authentifizierungscodes erfordert nur kryptographische Hashfunktionen, die sehr effizient zu berechnen sind. Public -Key-Berechnungen, die wesentlich teurer sind, werden nur im Hello-Protokoll benutzt und könnten zur allgemeinen Verschlüsselung dienen, stellen also keinen Zusatzaufwand dar. Die meisten Berechnungen werden zudem im Sicherheitsmodul selbst durchgeführt, das mit Einschränkungen parallel zum Hauptprozessor genutzt werden kann. Der Energiebedarf dieser Berechnungen ist gegenüber dem für die Übertragungen gering. Bleibt der Kommunikations-Overhead: bei vernünftigen Längen der einzelnen Felder (Kennungen je 8, Sequenznummern 4, Nuglets 4, Bezahlung 2 und Sicherungscodes 20 Bytes) ergibt sich eine Länge von 46 Byte für den PPH und 40 Byte für das ACK. Dies erscheint bei den üblichen Paketlängen ein akzeptabler Overhead, wenn man bedenkt, dass eine Weiterleitung sonst möglicherweise kaum erfolgen würde. 3. Sicherheitssysteme Dies ist die andere zentrale Herausforderung. Für viele Sicherheitsmechanismen gibt es allgemein verwendbare Lösungen: so funktioniert eine symmetrisch verschlüsselte Verbindung auch in Ad-hocNetzwerken, dieses Verfahren hat sogar sehr große Vorteile, da die Verschlüsselung nicht sehr rechenaufwendig ist, was gerade bei der begrenzten Rechenleistung der mobilen Knoten und dem begrenzten Energievorrat der Geräte große Bedeutung hat. Allerdings muss der verwendete Schlüssel vorher sicher unter den Kommunikationspartnern ausgehandelt oder übermittelt werden. In anderen Netzen wird dafür meist eine Public-Key-Infrastruktur genutzt: jeder Knoten verfügt über ein Paar Schlüssel, 16 einen geheimen privaten und einen öffentlichen. Um bei Verbindungen über Router bei einem Schlüsselaustausch eine Man-in-the-Middle-Attacke zu verhindern, gibt es eine zentrale Zertifizierungsautorität für das Schlüsselmanagement, die ebenfalls ein solches Schlüsselpaar besitzt und Zertifikate für die Zuordnung von Schlüsseln zu Knoten ausstellt. Den öffentlichen Schlüssel kennt jeder Knoten a priori. Damit kann man beim Schlüsselaustausch sicher sein, dass wirklich nur der (mit dem bekannten Schlüssel zertifizie rte) Schlüssel des gewünschten Kommunikationspartners akzeptiert wird. Eine solche einzelne feste Zertifizierungsautorität im Netz ist so sicherlich in keinem Ad-hocNetzwerk akzeptabel, da dieser zentrale Knoten eine extreme Unsicherheit darstellt: Fällt er aus oder ist nur nicht erreichbar, so können Knoten nicht die Öffentlichen Schlüssel eines Kommunikationspartners erhalten, also keine sichere Verbindung aufbauen. Wird er kompromittiert, so kann er beliebige Zertifikate ausstellen oder widerrufen, die Sicherheit des gesamten Netzwerks ist (möglicherweise unbemerkt) zerstört. Ein Standard-Ansatz um die Erreichbarkeit eines Dienstes zu erhöhen, ist, diesen Dienst zu replizieren, ihn nämlich von mehreren Servern anzubieten. Dies ist in diesem Falle aber keine Lösung, da die Sicherheit bereits zerstört wäre, wenn nur ein Server kompromittiert würde. Man würde die Erreic hbarkeit auf Kosten der Sicherheit erhöhen. Will man eine Lösung für dieses Problem finden, so muss man die Besonderheiten je nach Zweck des Ad-hoc-Netzwerks beachten: Gibt es überhaupt eine solche zentrale Autorität (wie in einem militärisch genutzten Netzwerk)? Ist diese Autorität in der Lage, die Geräte a priori mit einem Schlüssel und weiterem kryptographischen Material auszustatten? Falls es mehrere Autoritäten gibt, wie ist das Verhältnis zwischen ihnen, wie können sie dieses Verhältnis kryptographisch absichern? Sind diese Autoritäten a priori festgelegt? Ist die Zahl der Nutzer begrenzt? Soll nur bilaterale Kommunikation abgesichert werden oder auch multilaterale? Und: wie lange ist ein Schlüssel gültig, bzw. soll es einen Mechanismus zum Widerruf von Schlüsseln geben? Man könnte die Funktion der Zertifizierungsautorität auch aus dem Netz auslagern, so dass jedes Gerät vor der ersten Nutzung mit einem signierten Schlüssel ausgestattet ist. Diese Lösung wirft wieder andere Fragen auf: soll es nur eine Autorität, ein Hersteller sein, der signie rte Schlüssel ausstellt? Oder mehrere, die sich gegenseitig zusätzlich zertifizieren und diese Zertifikate in jedes Gerät speichern? Wenn wenige Autoritäten existieren, die Geräte a priori mit einem für das Gerät zertifizie rten Schlüssel sowie Zertifikaten für die Schlüssel aller anderen Autoritäten ausstatten können, so erhält man eine funktionierende Public -Key-Infrastruktur. Diese ist allerdings sehr unflexibel: wie gesagt, können keinerlei Schlüssel oder Zertifikate nachträglich widerrufen werden. Ein solches System ist dennoch für den Einsatz bei dem Nuglet-System vorgesehen. Dies könnte aber durch andere Sicherheitssysteme auf höheren Ebenen ergänzt werden, obwohl der Sinn eines zusätzlichen Sicherheitssystems eher fraglich ist, wenn man den Herstellern der Sicherheitsmodule wirklich vertraut (oder sowieso vertrauen muss). Ein anderer Ansatz ist, die zentrale Funktion der Zertifizierungsautorität auf eine kleine Menge von Knoten zu verteilen, wie in Abschnitt 3.1 beschrieben wird. Diese Lösung hat viele Vorteile: sie ist beweisbar sicher, solange die Annahmen richtig sind, zuverlässig und toleriert gewisse Ausfälle. Sie ermöglicht außerdem die Flexibilität einer aktualisierbaren Zertifizierungsautorität: in einem solchen System können Schlüssel von als kompromittiert erkannten Knoten widerrufen werden und die Schlüssel der Knoten können regelmäßig erneuert werden, um die Erfolgschancen von Brute-ForceAttacken zu reduzieren. In einem Netz unter einer Autorität ist sie auch m.E. die beste Wahl, dennoch ist sie für ein ziviles Netz von privaten Knoten denkbar ungeeignet, da einzelne Knoten definiert werden müssen, die völlig selbstlos aufwendige Dienste für das Netz erbringen. Hier kann diese Lösung nicht zum Einsatz kommen. In einem kleinen Netzwerk könnte man sich eine vollkommen verteilte Lösung vorstellen, die auf einem gemeinsamen, a priori vorhandenen Geheimnis (Passwort) beruht. Eine solche Idee werde ich in Abschnitt 3.2 kurz vorstellen. In großen privaten Netzen ist aber auch diese Idee nutzlos. Hier kann nur ein vollkommen verteiltes System überzeugen, bei dem kein Knoten mehr leisten muss als andere: eine selbst-organisierende Public -Key-Infrastruktur. Diesen Ansatz werde ich in Abschnitt 3.3 beschreiben. 17 3.1 Emulation einer Zertifizierungsautorität über einen verteilten Schlüssel und Schwellwert-Kryptographie Hier handelt es sich um ein Public -Key-Kryptosystem, bei dem alle teilnehmenden Knoten den öffentlichen Schlüssel der Zertifizierungsautorität kennen müssen, und allen Zertifikaten, die mit dem geheimen Schlüssel der Zertifizierungsautorität signiert sind, vertrauen. Jeder teilnehmende Knoten kann öffentliche Schlüssel von Knoten abfragen und seinen eigenen Schlüssel updaten (ändern). An ein solches System werden insbesondere zwei Forderungen gestellt: • Robustheit: der Dienst sollte jederzeit Anfragen und Updateaufträge der Clients adäquat bearbeiten können. • Geheimhaltung: ein Angreifer darf niemals in der Lage sein, gültige Zertifikate auszustellen, d.h. der private Schlüssel der Zertifizierungsautorität darf niemals einem Angreifer preisgegeben werden. Das vorgestellte System ist sicher unter der Annahme, dass in einer bestimmten Zeitspanne d höchstens t Server kompromittiert werden können. Diese Ziele werden in der vorgeschlagenen Lösung durch den Einsatz eines sogenannten „(n,t+1)Schwellwert-Kryptographie -Systems“ (threshold cryptography scheme) erreicht. Dabei wird die Zertifizierungsautorität intern auf n (wobei n=3t+1) Knoten, die als Server bezeichnet werden, verteilt, wobei jeder dieser Server ein privat / öffentliches Schlüsselpaar besitzt und die öffentlichen Schlüssel aller anderen Server kennt und daher sichere Verbindungen zu ihnen aufbauen kann. Dabei können jeweils t+1 Knoten eine kryptographische Operation wie eine Signatur ausführen, während dies für t Parteien unter keinen Umständen möglich ist. Dazu wird der private Schlüssel des Systems in n Teile aufgespalten, und jedem Server ein Teil zugewiesen. Um ein Zertifikat zu erstellen, müssen mindestens t+1 nicht-kompromittierte Server mit ihrem privaten Teil-Schlüssel je ein Teilzertifikat erstellen, aus denen von einem sogenannten Kombinierer ein gültiges Zertifikat generiert wird. Dabei verfügt der Kombinierer über kein besonderes Wissen, jeder Server oder sogar jeder Knoten kann Kombinierer sein. Der Kombinierer kann bei diesem System leicht feststellen, ob unter den verwendeten Teilzertifikaten ungültige, von kompromittierten Servern erstellte Teilzertifikate sind, indem er das erzeugte Zertifikat mit dem öffentlichen Schlüssel des Systems überprüft. Schlägt die Verifikation fehl, so muss er eine andere Teilmenge der erhaltenen Teilschlüssel wählen, bis er ein gültige Signatur erzeugt hat. Dies muss immer gelingen, da gemäß Annahme maximal t Server kompromittiert sind, im System mindestens 3t+1 Server vorhanden sind und t+1 gültige Teilzertifikate für das Erstellen eines gültigen Zertifikats genügen. Je nach eingesetztem Kryptographie -System ist die Berechnung der Signatur auch eine Interpolation, bei der ein kleiner Anteil von falschen Teilzertifikaten direkt toleriert werden kann. Dennoch könnte ein solches System über längere Zeit kompromittiert werden, wenn der Angreifer die Server nacheinander in Besitz nimmt. Um einen solchen Erfolg zu verhindern, werden in einem proaktiven Schwellwert-Kryptographie -System die Teilschlüssel spätestens nach einer Zeitspanne d erneuert. Dies geschieht, ohne dass der Gesamtschlüssel geändert wird und sogar ohne dass Teilschlüssel ausgetauscht werden, so dass kein Server bei dem Update mehr Informationen über den Gesamtschlüssel erhält. Die erzeugten neuen Teilschlüssel sind dabei unabhängig von den alten, so dass nach jedem Update nur noch erneuerte Teilschlüssel zur Erzeugung einer gültigen Signatur benutzt werden können. Da wir voraussetzen, dass ein Angreifer in der Zeit d höchstens t Server kompromittieren kann, kann er nach einem Update die erhaltenen alten Schlüssel nicht mit den neuen Schlüsseln kombinieren. Daher ist es ihm unmöglich, den Gesamtschlüssel zu erhalten. Bei einem Update erzeugt im ersten Schritt jeder Server i einen Nullschlüssel si , teilt ihn gemäß des eingesetzten Schwellwert-Kryptographie -Systems in n Teilschlüssel und schickt jedem Server j den jn ten Teilschlüssel sij . Im zweiten Schritt bildet jeder Server j seinen neuen Schlüssel als = +∑ . s' s j j i=1 s ij Da auch hier das beschriebene Schwellwert-Kryptographie -System zum Einsatz kommt, können auch beim Update falsche oder fehlende Teilschlüssel kompensiert werden. Erforderlich ist nur, dass sich mindestens t+1 korrekte Server auf eine zu benutzende Untermenge von mindestens t+1 Nullschlüsseln si verständigen. Die Korrektheit kann auch hier durch Kombination von Teilzertifikaten mit den Teilschlüsseln sij erfolgen: eine Kombination von t+1 korrekten Teil-(Null-)Schlüsseln ergibt das Nullzertifikat. 18 Ein solches Schwellwert-Kryptographie -System kann durch weitere angenehme Eigenschaften erweitert werden: So ist es möglich, die Teilschlüssel so zu gestalten, dass die Server über eine EinwegFunktion die Korrektheit ihres Teilschlüssels beweisen können, ohne Information über diesen preis zu geben. Dies erspart den Verifikations-Aufwand der Kombinierer. Außerdem ist es möglich über den Schlüsselerneuerungsalgorithmus das Schwellwert-Kryptographie -System dynamisch zu einer (n’, t’+1)-Konfiguration zu ändern: Dazu teilt jeder Server i seinen Schlüssel entsprechend in n’ Teilschlüssel und schickt jedem der n’ neuen Server über eine sichere Verbindung einen Teilschlüssel sij , wobei j zwischen 1 und n’ liegt. Jeder neue Server j kann nun seinen Teilschlüssel sj aus den erhaltenen Teilschlüsseln berechnen. Diese n’ neuen Teilschlüssel bilden jetzt ein (n’, t’+1)-SchwellwertKryptographie -System. Offensichtlich ist diese Lösung ziemlich sicher, recht flexibel und weist keine größeren Schwachpunkte auf. Wenn die Natur des Netzes es zulässt, ist ein solches Kryptographiesystem eine gute Wahl. Dies ist allerdings nur in Netzen unter einheitlicher Kontrolle der Fall, in denen gewährleistet ist, dass einzelne Knoten auch diese Serverdienste anbieten. 3.2 Key Agreement Wie schon gesagt, beruht dieses System darauf, dass alle teilnehmenden Nutzer ein gemeinsames Passwort vereinbaren können. Damit eignet sich dieses Verfahren zum Beispiel, um sichere Kommunikation auf einer Konferenz oder einem Ad-hoc-Meeting aufzubauen, auch ohne Zugang zu einer Public-Key-Infrastruktur (wie PGP) oder einem anderen Schlüsselmanagement-Service. Dann sollte aber nicht das Passwort selbst als Schlüssel verwendet werden, um nicht durch Dictionary-Attacken angreifbar zu sein, sondern nur als Authentifizierung für den Schlüsselaustausch. Damit wird der schwache gemeinsame Schlüssel durch einen starken ausgetauscht. Dieses System ist annehmbar sicher, funktioniert aber leider wirklich nur, wenn alle Parteien physikalisch in einem Raum zusammenkommen (und die Gruppe klein genug ist). Dies ist natürlich in fast allen Anwendungen nicht der Fall, daher ist das System im Allgemeinen nicht brauchbar. 3.3 Selbstorganisierende Public-Key-Infrastruktur Dazu stellen sich Nutzer des Systems gegenseitig Zertifikate aus: glaubt ein Nutzer, dass ein bestimmter öffentlicher Schlüssel zu einem bestimmten Knoten gehört, so bestätigt er dies mit einem von ihm signierten Zertifikat. Um nun zu gewährleisten, dass ein Nutzer u den auch den authentischen öffentlichen Schlüssel eines anderen Nutzers v erhält, wird eine Kette solcher Zertifikaten genutzt. Sie beginnt mit dem Schüssel eines Knotens, den u kennt und dem er vertraut. Jedes weitere Zertifikat kann durch den öffentlichen Schlüssel des vorausgehenden Zertifikats verifiziert werden, das letzte Zertifikat der Kette enthält den öffentlichen Schlüssel von v. Abb. 13: Um diese Zertifikat-Kette aufbauen zu können, muss jeder Knoten u ausreichend viele Zertifikate speichern und sie „geschickt“ auswählen, so dass er mit den von dem gewünschten Kommunikationspartners gespeicherten Zertifikaten eine solche Kette finden kann. Dabei werden sowohl eine festgelegte Zahl Zertifikate anderer Knoten, als auch alle selbst ausgestellten Zertifikate gespeichert. Dadurch wird gewährleistet, dass alle im System ausgestellten Zertifikate dezentralisiert gespeichert wer19 den. Entscheidend für die Leistungsfähigkeit des Systems ist der Algorithmus A für die Auswahl der fremden Zertifikate. Stellt man Zertifikate als gerichtete Kanten im Vertrauensgraphen des Netzwerks dar, so besitzen u und v je einen anhand eines bestimmten Algorithmus ausgewählten Subgraphen, deren Vereinigung einen solchen gerichteten Pfad von u nach v enthält. Der vorgeschlagene Algorithmus wählt dabei einen oder mehrere eingehende und ausgehende Pfade aus, wobei er sogenannte „Shortcuts“ bevorzugt. Das sind Kanten, die Entfernungen im Graphen abkürzen, nach deren Entfernung die Distanz zwischen den beiden vorher verbundenen Knoten wesentlich größer als zwei ist. In PGP-Vertrauensnetzen erreicht man mit dem Algorithmus eine hohe Wahrscheinlichkeit für die Existenz einer verbindenden Vertrauenskette im Vereinigungsgraphen, aber im größten Testnetzwerk kann nur die Version mit mehreren Kanten überzeugen, und dies auch nur bei Speicherung recht großer Subgraphen. Die Ergebnisse lassen vermuten, dass Subgraphen der Größe 2 n mit 95% Wahrscheinlichkeit eine solche Kette ermöglichen. Dennoch ist dieses Verfahren meiner Meinung nicht zufriedenstellend: Erstens erfordert es sehr viel Speicher im Knoten, alle selbst ausgestellten Zertifikate und bei Netzen in der Größenordnung von Millionen teilnehmenden Geräten 2 n Zertifikate zu speichern. Zweitens ist die Verifikation über Public -Key-Kryptosysteme, wie sie zur Verifikation der Zertifikatskette nötig ist, sehr rechenaufwendig. Drittens werden böswillige Nutzer(-gruppen), die falsche Zertifikate ausstellen, nicht berücksichtigt oder erkannt. Viertens sehe ich Probleme bei der Anpassung des Algorithmus auf den Online-Einsatz, bei dem den Knoten nur einzelne Zertifikate angeboten werden, die Graphentopologie aber unbekannt ist. Insgesamt ist der Ansatz sehr interessant, aber noch nicht einsatzfähig. 4. Fazit Ad-hoc-Netzwerke bieten faszinierende Möglichkeiten, aber auch große Herausforderungen. Für einige Problemstellungen gibt es vielversprechende Lösungsansätze, für andere leider nur Ideen, die alle spezifische Schwächen aufweisen. So scheint ein Netz mittlerer Größe unter einer einheitlichen Autorität durchaus sicher und stabil realisierbar zu sein. Ein riesiges Terminodes-Netzwerk dagegen wirft noch ungelöste Probleme auf: Das Weiterleiten von Paketen könnte durch Nuglets ausreichend stimuliert werden, aber das Sicherheitssystem in Form eines selbstorganisierenden Public -Key-Kryptosystems scheint mir noch unzureichend. 5. Quellen [1] J-P. Hubaux, L. Buttyán, S. Capkun: The Quest for Security in Mobile Ad Hoc Networks, in Proceedings of the ACM Symposium on Mobile Ad Hoc Networking and Computing (MobiHoc) 2001 [2] D. Nguyen, L. Zhao, P. Uisawang, J. Platt: Security Routing Analysis for Mobile Ad Hoc Networks, wahrscheinlich 2001, Publikation unbekannt [3] L. Zhou, Z. Haas: Securing Ad Hoc Networks, IEEE Network, 13(6):24-30, November/Dezember 1999 [4] S. Marti, T.J. Giuli, K. Lai, M. Baker: Mitigating Routing Misbehavior in Mobile Ad Hoc Networks, in Proceedings of MOBICOM, 2000 [5] L. Buttyán, J-P. Hubaux: Enforcing Service Availability in Mobile Ad-Hoc WANs, In Proceedings of the First IEEE/ACM Workshop on Mobile Ad Hoc Networking and Computing (MobiHOC), Boston, MA, USA, August 2000 [6] L. Buttyán, J-P. Hubaux: Nuglets: a Virtual Currency to Stimulate Cooperation in Self-Organized Mobile Ad Hoc Networks, Technical Report No. DSC/2001/001, Swiss Federal Institute of Technology, Lausanne, January 2001 Weiterführende Quellen im Internet, von der Gruppe um Hubaux (insbesondere auch in Zukunft) unter www.terminodes.org/publications.html. 20