Ausarbeitung 2

Werbung
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
Herunterladen