Kurzanalyse und Bewertung der Sicherheitseigenschaften von GNUnet

1. Einleitung
GNUnet ist ein dezentrales, auf Peer-to-Peer-Technologie basierendes Netzwerk, das entwickelt wurde, um Anonymität, Privatsphäre und Zensurresistenz in der Kommunikation zwischen Nutzern zu gewährleisten. Teilnehmer von GNUnet können sicher und anonym miteinander kommunizieren und Daten auszutauschen, ohne dabei auf die üblichen zentralen Server angewiesen zu sein (GNUnet). Hierbei sind die GNUnet-Protokolle vor allem darauf ausgelegt, die Offenlegung von persönlich identifizierbaren Informationen der Teilnehmer zu minimieren und es Gegnern zu verwehren, Benutzeraktivitäten zu kontrollieren, zu verfolgen, zu überwachen oder zu zensieren (GNUnet).
In dieser Seminararbeit werden die grundlegenden Konzepte und Technologien von GNUnet erläutert, um ein Verständnis für die Funktionsweise, insbesondere im Hinblick auf die Umsetzung der Dezentralität des Protokolls zu schaffen. Darauf aufbauend wird eine Analyse der Sicherheitseigenschaften des Netzwerks durchgeführt, in der die Stärken und Schwächen des Systems untersucht werden. Die Bewertung der Sicherheitsaspekte konzentriert sich auf die Vertraulichkeit, Anonymität, Authentizität, Integrität, Transparenz und Zensurresistenz, die von Bedeutung sind, um den Nutzern ein sicheres und vertrauenswürdiges Kommunikationsumfeld zu bieten.
Diese Seminararbeit soll somit einen fundierten Einstieg in die Thematik ermöglichen und die Bedeutung von dezentralen Netzwerken in Bezug auf die Sicherheit hervorheben.
2. Motivation
GNUnet wurde als Antwort auf Defizite und Herausforderungen des heutigen Internets entwickelt. Das traditionelle Internet, das auf zentralisierten Strukturen und Diensten basiert, weist eine Reihe von Problemen auf, die die Privatsphäre, Sicherheit und Freiheit der Benutzer gefährden können.
Ein Hauptanliegen von GNUnet ist die Wahrung des Rechts auf informationelle Selbstbestimmung. Das Projekt ist Teil der politischen Mission des GNU-Projekts, bei dem Software entwickelt wird, um politische Ziele zu erreichen (GNUnet).
Das herkömmliche Internet ist anfällig für Manipulationen, Zensur und Überwachung. Der Netzwerkverkehr kann von feindlichen Routern im Netzwerk umgeleitet, abgefangen, zensiert und manipuliert werden (Grothoff 2017).
Auch wenn eine effektive, authentifizierte Verschlüsselung auf der bestehenden Internetinfrastruktur implementiert würde, würde dies allein nicht ausreichen, um grundlegenden Sicherheitsanforderungen vollständig gerecht zu werden. Ein Grund dafür liegt darin, dass die meisten Authentifizierungsschemata eine PKI erfordern, die selbst Schwachstellen aufweist. Insbesondere weist die weitverbreitete X.509 PKI Mängel bei der Bereitstellung von Schutzmaßnahmen gegen Angriffe großer Unternehmen oder Regierungen auf, da sie auf dem Konzept eines Vertrauensankers, den Zertifizierungsstellen, basiert.
Diese Zertifizierungsstellen sind jedoch wertvolle Ziele für Cyber-Angriffe und tragen die Verantwortung, auch bei eigenen Fehlern verantwortungsbewusst zu reagieren. Vorfälle in der Praxis legen allerdings nahe, dass dieses Vertrauen nicht immer gerechtfertigt ist. Ein bemerkenswertes Beispiel ist der Fall der chinesischen CA WoSign, die fehlerhafte Zertifikate ausgestellt hat, ohne dies im Anschluss angemessen offenzulegen. Zu einem ähnlichen Sicherheitsvorfall kam es auch bei Verisign, einer bedeutenden US-amerikanischen CA. Dieser wurde jedoch nicht einmal den Top-Führungskräften des Unternehmens gemeldet (Arnbak and Eijk 2012). Dies sind nur zwei der in (Berkowsky and Hayajneh 2017) aufgeführten Beispiele. Sie verdeutlichen die mangelnde Transparenz und Verantwortlichkeit der Vertrauensanker.
Ein weiteres Problem des PKI-Modells liegt in der Vielzahl von Zertifizierungsstellen. Der Webbrowser behandelt all diese Organisationen gleich, sodass es ausreicht, eine einzige fehlerhafte oder kompromittierte Stelle zu finden, um das System zum Versagen zu bringen (Berkowsky and Hayajneh 2017).
Neben der Problematik der zentralen Zertifizierungsstellen und der damit einhergehenden Sicherheitsfrage in Bezug auf die von ihnen abhängige Verschlüsselung und Authentizität führen auch anfallende Metadaten der Kommunikation zu Verletzungen der Privatsphäre der Nutzer. Metadaten während der Kommunikation im Internet geben unter anderem Aufschluss darüber, wer der Sender und der Empfänger einer Nachricht ist, wann diese versendet und welches Protokoll für die Versendung verwendet wurde. Diese Daten können nicht verschlüsselt werden, da sie für die korrekte Funktionsweise des Internets fundamental sind. Sie sind für jeden Router auf dem Weg des Nachrichtenpakets für die korrekte Weiterleitung unerlässlich. Dennoch lassen sich ausschließlich auf Basis dieser Daten 97% der Anfragen in einer Stichprobe von 775 Websites und 300.000 realen Traffic-Dumps einzelnen Nutzern zuweisen, ohne den Inhalt des Pakets lesen zu müssen (Herrmann, Wendolsky, and Federrath 2009).
Insgesamt baut das klassische Internet auf einer Client-Server-Architektur auf. Die Client-Server-Architektur sieht vor, dass Clients, wie Computer oder Smartphones, mit zentralen, häufig von Unternehmen betrieben, Servern kommunizieren, um Dienste und Daten anzufordern. Bei der Client-Server-Architektur gibt es zwei grundlegende Probleme in Bezug auf die informationelle Selbstbestimmung.
Das erste Problem besteht in der starken Abhängigkeit von Serviceanbietern. Die Client-Systeme sind weitgehend von den Diensten großer Serviceanbieter abhängig, die die Server betreiben. Ein prominentes Beispiel dafür ist das Android-Betriebssystem, das hauptsächlich mit den exklusiv von Google betriebenen Rechenzentren funktioniert. Dadurch werden die Benutzer in ihrer Autonomie eingeschränkt und die Zusammenarbeit zwischen Bürgern unnötig beschränkt. (Grothoff 2017).
Das zweite Problem betrifft den Datenschutz und die Weitergabe von Informationen. In der Client-Server-Architektur ist es schwierig, Systeme so zu gestalten, dass die Server keine sensiblen Informationen über die Clients erhalten. Oftmals basiert das Geschäftsmodell der Serverbetreiber auf der Sammlung und kommerziellen Nutzung von Benutzerdaten. Dies wirft erhebliche Bedenken hinsichtlich des Datenschutzes und der informationellen Selbstbestimmung auf. (Grothoff 2017).
Die genannten Mängel des klassischen Internets basieren auf fundamentalen Designentscheidungen, wie das Internet heute funktioniert und lassen sich nahezu unmöglich beheben. Sie verdeutlichen die dringende Notwendigkeit, alternative Ansätze zu entwickeln, die auf dezentralen Strukturen basieren und eine größere Benutzerkontrolle und Datenschutz gewährleisten.
3. Architektur
Die Architektur von GNUnet besteht aus mehreren Modulen, und weist Ähnlichkeiten mit der abstrakten Schichtenarchitektur des Internets auf. Abbildung 1 zeigt den exemplarischen Aufbau von GNUnet in Anlehnung an die Struktur des Internets. Die unterste Schicht in Abbildung 1 ist der zugrundeliegende Kommunikationsmechanismus (TRANSPORT) zwischen zwei Akteuren im GNUnet. Hierauf baut das System CORE auf, welches grundlegende Funktionen wie Verschlüsselung und Authentifizierung der bestehenden Verbindung hinzufügt. Um Nachrichten nicht nur an benachbarte Knoten senden zu können, wird eine Form von Routing benötigt. Im Gegensatz zum klassischen Internet, welches hierfür das IP und das BGP verwendet, werden Nachrichten im GNUnet mittels R5N, ein Routing Algorithmus für eingeschränkte dezentrale Netzwerke (Evans and Grothoff 2011), geroutet. Das Subsystem CADET verwendet den R5N Algorithmus und bietet eine zuverlässige und verschlüsselte Ende-zu-Ende-Kommunikation, welche auch zwischen zwei entfernten Knoten stattfinden kann. Für die Übersetzung von Namen von Objekten im Netzwerk, zu den dazugehörigen Adressen, welche von dem TRANSPORT Subsystem verwendet werden können, wird GNS verwendet. GNS basiert auf einem DHT und bietet eine dezentrale Alternative zum klassischen DNS. Abschließend bietet GNUnet ein eigenes Messaging Protokoll an, welches durch auf GNUnet aufbauende Anwendungen Verwendung findet (Grothoff 2017).
Insgesamt baut die Software-Architektur von GNUnet auf dem Multiprozessmodell auf, bei dem jedes Subsystem als separater Prozess ausgeführt wird. Diese Prozesse kommunizieren über festgelegte APIs mittels IPC miteinander. Durch das Multiprozessmodell wird eine Isolierung zwischen den Komponenten erreicht, welche das Risiko minimiert, dass ein Ausfall in einem Subsystem weitere Subsysteme beeinträchtigt. Zusätzlich fördert die Kommunikation mittels APIs die Erweiterbarkeit von GNUnet. Außerdem kann jede GNUnet-Komponente verschiedenen Sicherheitsrichtlinien auf der Ebene der Systemaufruf-API unterworfen werden. Diese Eigenschaft erhöht die Gesamtsicherheit des Systems, da eine Schwachstelle in einem Prozess nicht automatisch die anderen gefährdet (Grothoff 2017).
Im folgenden Abschnitt werden die Funktionen der grundlegenden und zentralen Komponenten von GNUnet vorgestellt.

3.1 TRANSPORT
Das TRANSPORT-Subsystem in GNUnet besitzt die Aufgabe, eine Verbindung zwischen zwei benachbarten Knoten aufzubauen, welche für einen Datenaustausch von den Akteuren genutzt werden kann. Somit ist es mit der Physischen-Schicht, etwa dem Ethernet-Kabel, des klassischen Internets vergleichbar. Das TRANSPORT-Subsystem besitzt im Gegensatz zum klassischen Internet keine physische Komponente, sondern baut für den Datenaustausch auf bereits etablierten Kommunikationskanälen, wie WLAN oder TCP, auf. Konkret verwendet das TRANSPORT-Subsystem austauschbare Plug-ins, welche für den Verbindungsaufbau zum Einsatz kommen. Somit ist das TRANSPORT-Subsystem nicht abhängig von einem einzelnen Kanal, sondern kann eine Vielzahl von verschiedenen Transport-Protokollen verwenden, um einen Nachrichtenaustausch zu realisieren. Dies trägt dazu bei, dass Peer-to-Peer-Anwendungen auch unter schwierigen Netzwerkbedingungen funktionieren können, in denen unterschiedliche Transport-Protokolle zur Verfügung stehen. Zusätzlich erhöht dies die Zensurresistenz von GNUnet, da die verschiedenen Transportprotokolle verwendet werden können, um einer Unterdrückung des Nachrichtenaustausches entgegenzuwirken. Beispielsweise lassen sich die vom klassischen Internet am häufigsten verwendeten Protokolle UDP und TCP einfach anhand der verwendeten Portnummer blockieren. Andere Protokolle wie SMTP oder DNS lassen sich hingegen nicht einfach blockieren, ohne Gefahr zu laufen, einen erheblichen Teil der Benutzer zu beeinträchtigen (Grothoff 2017).
Insgesamt hat sich die Verwendung mehrerer Plug-and-play-Transportmechanismen, wie sie in GNUnet umgesetzt werden, als erfolgreiche Designstrategie in der P2P-Architektur etabliert, da diese es ermöglichen, eine Kompromittierung oder eine Degradierung des Kommunikationsmediums zu überwinden und auf einen anderen Kommunikationsmechanismus umzusteigen (Grothoff 2017).
Die Transport-Plug-ins müssen, um den Austausch von Nachrichten mit anderen Peers über das Transport-Subsystem zu ermöglichen, ein fixes API implementieren. Dies sieht vor, dass ein solches Plug-in das Adressformat, z.B. eine E-Mail-Adresse oder eine IPv6-Adresse mit Portnummer, sowie die Methoden zum Senden und Empfangen von Nachrichten über die jeweiligen Adressen definiert (Grothoff 2017). Zu den bereits unterstützten Transportprotokollen durch die Implementierung von Plug-ins gehören unter anderem TCP, UDP, SMTP, WLAN und Bluetooth (GNUnet).
Es ist Aufgabe des Transport-Subsystem zu entscheiden, welche Transport-Plug-ins, welche Adressen der Peers, und wie viele Ressourcen für die Kommunikation bereitgestellt werden. Dies wird als das Transport Selection Problem bezeichnet, aber in dieser Arbeit nicht weiter erläutert (Grothoff 2017).
3.2 CORE
Das CORE-Subsystem in GNUnet ist verantwortlich für die Sicherung der Link-Layer-Kommunikation zwischen den Knoten im GNUnet-Overlay-Netzwerk. Das CORE-Modul baut auf dem TRANSPORT-Subsystem auf, das die eigentliche, unsichere und unzuverlässige Link-Layer-Kommunikation über beispielsweise UDP oder WLAN ermöglicht, und fügt diesen Verbindungen eine Reihe von Sicherheitsmechanismen hinzu (GNUnet).
CORE verwendet verschiedene Verfahren, um die Kommunikation zwischen den Knoten im Netzwerk sicherer zu gestalten. Dazu gehören unter anderem die Verschlüsselung von Daten, die Überprüfung der Identität von Knoten durch Signierung von Schlüsseln, sowie der Schutz vor Replay-Attacken durch die Verwendung von sogenannten Nonces (GNUnet).
Die konkreten Algorithmen, die vom Subsystem CORE Verwendung finden, werden in Abschnitt 5 genauer vorgestellt und analysiert.
3.3 Routing (R5N DHT)
Im klassischen Internet erfolgt das Routing durch eine hierarchische Struktur von Netzwerkknoten, die über Backbone-Netzwerke miteinander verbunden sind. Die Routing-Entscheidungen werden von Routern getroffen, die das Netzwerk als Ganzes betrachten und Routing-Tabellen verwenden, um Datenpakete zu ihren Zielen zu leiten. In dezentralen Netzwerken hingegen muss das Routing anhand von Peer-to-Peer Verbindungen erfolgen, da eine zentrale Infrastruktur und auch eine hierarchische Netzwerkstruktur nicht gegeben sind. Routing-Entscheidungen müssen somit von jedem Knoten, der ausschließlich eine begrenzte Sicht des gesamten Systems besitzt, getroffen werden (Evans and Grothoff 2011).
In GNUnet kommt der R5N Algorithmus für diese Aufgabe zum Einsatz. R5N basiert auf einer modifizierten Version des Kademlia-Algorithmus (Evans and Grothoff 2011). Die konkrete Umsetzung des dezentralen Routings wird in Abschnitt 4 genauer erläutert.
3.4 CADET
CADET ist mit TCP oder UDP in Kombination mit TLS des klassischen Internets vergleichbar. Die Aufgabe des Subsystems besteht darin, verschlüsselte Verbindungen zwischen zwei entfernten Knoten aufzubauen, welche von Anwendungen für den Nachrichtenaustausch verwendet werden können. CADET routet Nachrichtenpakete mittels R5N-Routing.
3.5 GNU Name System
Das GNU Name System (GNS) ist eine dezentrale Datenbank, die auf einem Distributed Hash Table basiert. Es bietet den Benutzern die Möglichkeit, wie DNS, Namen sicher auf Werte aufzulösen. Durch die Verwendung von GNS können beispielsweise andere Benutzer in sozialen Netzwerken oder Netzwerkdienste im Internet identifiziert werden (GNUnet).
Die Interaktion der Benutzer mit dem GNU Name System erfolgt durch die Eingabe eines Hostnamens, der mit einer Top-Level-Domain endet, welche in der GNS-Zone registriert ist. Alternativ kann auch die Identität eines Benutzers oder ein Base32-kodierter Schlüssel als Abfrageinhalt verwendet werden (GNUnet).
Alle Datensätze werden zusammen mit einer Signatur gespeichert, die mithilfe des privaten Schlüssels der autoritativen Zone (übergeordneten Zone) generiert wird. Dadurch ist es jedem GNS-Resolver möglich, die Rechtmäßigkeit einer Zuordnung von Namen zu Werten zu überprüfen (GNUnet). Dieses Vorgehen ist mit DNSSEC des klassischen Internets vergleichbar.
GNS wurde entwickelt, um Zensurresistenz, Privatsphäre bei Abfragen, sichere Namensauflösung und Kompatibilität mit DNS zu gewährleisten. Das System ermöglicht den Benutzern den sicheren und anonymen Zugriff auf das Netzwerk und die Bereitstellung von Diensten, ohne dabei von zentralisierten Servern abhängig zu sein (GNUnet).
4. Dezentralität in GNUnet
Dezentralität ist ein grundlegender Aspekt von GNUnet, der darauf abzielt, die Kontrolle über Kommunikation und Daten in den Händen der Benutzer zu belassen und die Abhängigkeit von zentralisierten Diensten zu verringern. GNUnet setzt auf ein stark dezentralisiertes Netzwerkmodell, in dem keine einzelne zentrale Instanz die Kontrolle über das gesamte Netzwerk besitzt (Grothoff 2017; GNUnet).
Die Dezentralität in GNUnet wird mittels Peer-to-Peer-Architektur umgesetzt. Das Netzwerk besteht aus einer Vielzahl von Knoten, die als Peers bezeichnet werden und auf gleichberechtigter Ebene miteinander kommunizieren. Jeder Knoten kann sowohl als Client, als Server, sowie als Relay fungieren, wodurch Ressourcen und Funktionen im Netzwerk verteilt werden (GNUnet).
Die Dezentralität wird durch das enge Zusammenspiel zwischen der TRANSPORT-Komponente, dem R5N-Routing-Algorithmus und der CADET-Komponente erreicht.
4.1 Bootstraping
In der Konstruktion von dezentralen Netzwerktopologien stellt das Bootstrapping eine zentrale Frage dar: Wie kann ein Peer dem Netzwerk beitreten und seinen Platz im Overlay-Netzwerk finden? GNUnet verwendet für die Behandlung der Bootstraping-Problematik eine vielfältige Auswahl an Techniken:
-
Adressen bekannter und vertrauenswürdiger Peers werden mit der Software mitgeliefert. Sobald eine Verbindung mit diesen erfolgreich hergestellt wurde, erfährt der Initiator der Verbindung die Adressen anderer Peers mittels sogenanntem Gossiping. Gossiping beschreibt im Kontext von Peer-to-Peer-Netzwerken die Art und Weise, wie Peers Informationen über andere Peers im Netzwerk austauschen. Wenn ein Peer eine Verbindung zu anderen Peers herstellt, liefern diese Informationen über bereits andere existierende Peers im Netzwerk. Diese Informationen umfassen typischerweise deren Adressen sowie andere relevante Daten.
-
URLs von HTTP-Servern, die Peers auflisten, sind in der Software enthalten und können für die Bootstrap-Phase verwendet werden, um den eigenen Platz im Overlaynetzwerk zu finden.
-
UDP IPv4 Broadcast im LAN wird verwendet, um Peers in der Nähe zu entdecken.
-
UDP IPv6 Multicast im LAN wird verwendet, um Peers in der Nähe zu entdecken.
-
WLAN-Broadcast wird verwendet, um Peers in Reichweite zu entdecken.
-
Benutzer können manuell Adressen von Peers über das Kommandozeilen-Tool gnunet-peerinfo exportieren und importieren.
Durch diese vielfältigen Bootstrapping-Methoden versucht GNUnet die Herausforderungen bei der effizienten Etablierung einer Verbindung und Platzierung in einer dezentralen Netzwerkstruktur zu bewältigen. Die Verwendung bekannter Peer-Adressen, das Austauschen von Adressen über Gossip, das Abfragen von URLs mit Peer-Listen, das Entdecken von Peers im lokalen Netzwerk (durch IPv4-Broadcast, IPv6-Multicast und WLAN-Broadcast) sowie das manuelle Importieren und Exportieren von Peer-Adressen ermöglichen es Peers, effizient Verbindungen herzustellen und das Netzwerk zu erweitern (Grothoff 2017).
4.2 Routing
Im herkömmlichen Routing werden in der Regel spezifische Routen oder Pfade festgelegt, um Nachrichten von einem Sender zum Empfänger zu leiten. Dies erfordert eine umfangreiche Verwaltung von Routingtabellen und die Kenntnis der Netzwerktopologie. In stark dynamischen Peer-to-Peer-Netzwerken können jedoch solche statischen Routen schnell veralten oder schwer aufrechtzuerhalten sein. R5N bietet eine alternative Methode des Routings, indem es auf Zufall und Gossiping setzt.
Aufgrund der engen Verwandtschaft des R5N-Algorithmus und Kademlia, wird im Folgenden zunächst der Ablauf von Kademlia-Routing beschrieben und anschließend die Unterschiede zwischen den Algorithmen erläutert.
4.2.1 Kademlia
Kademlia selbst ist eine verteilte Peer-to-Peer-Hashtabelle, die eine XOR-basierte metrische Topologie verwendet. Sie funktioniert in den folgenden Schritten (Maymounkov and Mazières 2002):


-
Zuweisung der Knoten-ID: Jedem Knoten im Netzwerk wird eine eindeutige Kennung (ID) zugewiesen, die in der Regel eine große Zufallszahl ist.
-
Aufbau eines binären Baums: Kademlia behandelt Knoten als Blätter in einem binären Baum, wobei die Position eines jeden Knotens durch das kürzeste eindeutige Präfix seiner ID bestimmt wird. Abbildung 2 zeigt die Position für den Knoten 0011. Für jeden gegebenen Knoten unterteilt Kademlia den Binärbaum in eine Reihe von Teilbäumen, die den Knoten nicht enthalten. Der oberste Teilbaum besteht aus der Hälfte des Binärbaums, die den Knoten nicht enthält. Der nächste Teilbaum besteht aus der Hälfte des verbleibenden Baums, die den Knoten nicht enthält, und so weiter.
-
Aufbau der Routing-Tabelle: Jeder Knoten erstellt eine Routing-Tabelle, die Informationen über andere Knoten im Netz enthält. Die Routing-Tabelle ist in sogenannten Buckets organisiert, die jeder Ebene des Binärbaums (jeder Bit-Stelle des Addressraums) entsprechen. Jeder Bucket i enthält bis zu k Knoten mit IDs, die in einer Distanz zwischen 2i und 2i + 1 zu diesem Knoten liegen. Somit besitzt ein jeder Knoten eine detaillierte Übersicht seiner nächsten Nachbarn, welche mit der Entfernung der Knoten exponentiell abnimmt. Maximal sind ihm aber k Knoten innerhalb eines Buckets bekannt.
-
Knoten nachschlagen: Wenn ein Knoten einen anderen Knoten mit einer bestimmten ID finden will, sucht er zunächst in seiner eigenen Routing-Tabelle nach Knoten mit IDs, die dieser ID am nächsten sind. Findet er solche Knoten, sendet er eine Nachricht direkt an diese und bittet um Informationen über Knoten, die noch näher an der Ziel-ID liegen. Findet er in seiner Routing-Tabelle keine nahen Knoten, leitet er die Anfrage an Knoten in seinem nächstgelegenen nicht leeren Bucket weiter, bis er einen findet oder alle Buckets ausgeschöpft sind.
-
Speicherung und Abruf von Werten: Um Werte, die mit bestimmten Schlüsseln verbunden sind, zu speichern oder abzurufen, hasht Kademlia jeden Schlüssel, um eine ID zu erzeugen, und führt dann eine Knotensuche nach Knoten mit IDs durch, die der ID des Schlüssels nahekommen. Sobald es solche Knoten gefunden hat, sendet es Anfragen zur Speicherung oder zum Abruf von Werten an diese Knoten.
-
Knotenaustausch: Kademlia überprüft regelmäßig die Knoten in seiner Routing-Tabelle und ersetzt alle Knoten, die nicht mehr reagieren oder das Netzwerk verlassen haben, durch neue aktive Knoten.
Abbildung 3 zeigt den Ablauf anhand eines Beispiels. Der Knoten mit dem Präfix 0011 versucht eine Nachricht an Knoten 1110 zu senden.
Der Kademlia Algorithmus setzt voraus, dass ihm eine voll vermaschte Netzwerktopologie zugrunde liegt, in der jeder Teilnehmer direkt mit jedem anderen Teilnehmer kommunizieren kann. Somit ist Kademlia ohne Modifizierung in Netzwerken mit begrenzter Konnektivität, wie GNUnet, unbrauchbar (GNUnet).
4.2.2 R-Kademlia
R-Kademlia ist eine Variante von Kademlia, die mehrere Verbesserungen und Änderungen enthält, um sie in Umgebungen mit eingeschränktem Zugang effizienter zu machen. Der Unterschied zwischen R-Kademlia und Kademlia ist, dass R-Kademlia rekursives Routing anstelle von iterativem Routing verwendet, was es den Knoten ermöglicht, Nachrichten rekursiv über ihre Nachbarn zu leiten, bis sie den Zielknoten erreichen. Dieser Ansatz ist notwendig, da in Netzwerken mit beschränkter Konnektivität nicht von einer transitiven Relation der Verbindungen zwischen den Peers ausgegangen werden kann. Mit der Verwendung von rekursiven Routing geht aber auch ein Kontrollverlust einher. Der sendende Knoten kann nicht bestimmen, über welchen Pfad im Netzwerk sein Datenpaket versendet wird. Dies ist unter der Verwendung von iterativem Routing möglich (Evans and Grothoff 2011).
R5N
Der R5N-Algorithmus basiert auf R-Kademlia und verwendet somit ebenfalls rekursives Routing. Zusätzlich ist R5N zufallsgesteuert. R5N verwendet einen randomisierten Routing-Algorithmus, der Knoten zur Weiterleitung von Nachrichten auf der Grundlage eines Random-Walk-Prozesses auswählt. Dieser Ansatz wurde entwickelt, um eine bessere Leistung und Sicherheit als das deterministische Routing in Kademlia zu bieten (Evans and Grothoff 2011). Konkret läuft der R5N Algorithmus in zwei Phasen ab. In der ersten Phase wird eine Anfrage über eine bestimmte, aber festgelegte Anzahl (siehe: 4.5) an zufälligen Nachbarn weitergeleitet, um die Herkunft der Nachricht zu verschleiern. Ist die festgelegte Anzahl an zufälligen Weiterleitungen erreicht, wird die Nachricht in Phase 2 deterministisch mittels R-Kademlia an das Ziel übertragen. Die Antwort auf die Nachricht wird auf gleichem Pfad, wie die Anfrage, zurück an den Sender übermittelt (Evans and Grothoff 2011).
4.3 Replizierung
Bei der Replizierung werden Daten oder Ressourcen von einer Quelle auf mehrere Ziele oder Replikate verteilt. Jedes Replikat enthält eine identische Kopie der Daten oder Ressourcen wie die Quelle. Die Replikate sind hierbei unabhängig voneinander. Das Ziel der Replizierung besteht darin, die Verfügbarkeit von Daten sowie die Skalierbarkeit, Ausfallsicherheit und Leistung des Systems zu verbessern.
Die Replizierung in R5N erfolgt durch den Einsatz von PUT-Operationen, um Daten in einem zufälligen Teilbereich der Peers zu speichern. Wenn ein PUT durchgeführt wird, werden die Daten an eine zufällige Untergruppe von Peers weitergeleitet, die näher am Schlüssel liegen als ihre Nachbarn. Dies bedeutet, dass Peers, die räumlich näher am Schlüssel liegen, bevorzugt werden, um die Daten zu replizieren (Evans and Grothoff 2011).
Der PUT-Vorgang wird mit einer bestimmten Häufigkeit wiederholt, um die Daten zu aktualisieren. Da R5N eine nicht deterministische Routing-Methode verwendet, werden wiederholte PUT-Anfragen wahrscheinlich dazu führen, dass die Daten auf verschiedenen Peers gespeichert werden, und die Gesamtanzahl an Replizierungen somit erhöht wird (Evans and Grothoff 2011).
Wenn ein GET durchgeführt wird, versucht R5N, eins dieser Replikate zu erreichen. Da die Daten an mehreren Peers gespeichert wurden, besteht eine höhere Wahrscheinlichkeit, dass mindestens eine Quelle für die Daten erreichbar ist. Dadurch wird eine höhere Verfügbarkeit der Daten und eine verbesserte Ausfallsicherheit des Systems erreicht (Evans and Grothoff 2011).
4.4 Pfadfindung
Die Identifikation von Pfaden zwischen den Teilnehmern in GNUnet ist Aufgabe des CADET-Subsystems. Jeder Peer sendet in regelmäßigen Abständen PUT-Anfragen, mit dem Inhalt, seinen eigenen öffentlichen Schlüssel und der Bitte, diesen in dem R5N-DHT zu speichern. Als Wert fügt der Peer, sofern vorhanden, seine eigenen öffentlichen Adressen (Adressen der TRANSPORT-Plug-ins) hinzu. Zusätzlich zu den Adressen wird auch der Pfad, über den die PUT-Anfrage weitergeleitet wurde, gespeichert. Ein Peer, der eine Verbindung zu einem anderen Peer herstellen möchte, führt eine GET-Anfrage für den entsprechenden Schlüssel durch. Durch die Kombination der Pfade aus der PUT- und GET-Anfrage kann der Initiator einen anfänglichen Pfad von der Quelle zum Ziel über das Overlaynetzwerk bestimmen. CADET versucht zudem, wenn möglich, eine direkte Verbindung herzustellen (Grothoff 2017).
Abbildung 4 zeigt das beispielhafte Zusammenspiel von PUT- und GET-Anfrage für den Aufbau einer Verbindung zwischen dem Knoten A und X.
-
Im ersten Schritt sendet der Knoten A eine PUT-Anfrage an das Netzwerk, welche den Hash seines Public-Keys sowie die zugehörigen Adressen enthalten. In dem Beispiel sind dem Knoten A die Peers B und C bereits bekannt, beispielsweise durch den Gossip mit dem Bootstrapping-Peer. Zu dem Peer B besteht eine direkte Verbindung von Knoten A aus, während der Knoten C nur mittels B als Relay erreicht werden kann. Beide Knoten speichern die Adressen von A und den Pfad, welchen die PUT-Anfrage genommen hat, unter der ID von A als Key, ab. B kennt somit einen Pfad zu A. C ist sich ebenfalls bewusst, dass er B als Relay verwenden muss, um mit A Nachrichten auszutauschen.
-
Im zweiten Schritt möchte der Knoten X eine Nachricht an A senden. Hierfür verwendet er eine GET-Anfrage, die mittels R5N-Routing zunächst an Y und dann rekursiv an Z gesendet wird. Der Peer Z leitet die Nachricht an den Peer C weiter, welcher den angefragten Key inklusive des Pfades ausliefern kann.
-
Im dritten Schritt erhält der Knoten X die Antwort seiner Anfrage inklusive des Pfades, über den die Nachricht gesendet wurde. In dem Beispiel erhält er den Pfad der GET-Anfrage X → Y → Z → C und den Pfad der PUT-Anfrage, die A an C gesendet hat A → B → C. Durch die Konkatenation und Umkehrung des PUT-Pfads kann ein initialer Pfad für den Verbindungsaufbau gefunden werden: X → Y → Z → C → B → A
Nach Ablauf des Protokolls ist es dem CADET Subsystem möglich, eine verschlüsselte Verbindung zwischen den beiden Teilnehmern zu realisieren.

4.5 Schätzung der Netzwerkgröße
Die Schätzung der Netzwerkgröße ist ein wichtiger Aspekt in Peer-to-Peer-Netzwerken, insbesondere wenn es darum geht, Effizienz- und Skalierbarkeitsmaßnahmen zu implementieren (Grothoff 2017).
GNUnet verwendet für die Schätzung der Netzwerkgröße ein Protokoll, welches aus folgenden Schritten besteht:
Theorem. Sei p die erwartete maximale Anzahl führender überlappender Bits zwischen allen n zufälligen Knoten-IDs im Netz und einem zufälligen Schlüssel. Dann ist die Netzgröße n etwa 2p − 0.332747. Bewiesen in (Grothoff 2017).
-
Alle Peers im Netzwerk nehmen periodisch mit einer Frequenz von f an einer globalen Netzwerkgrößenschätzung teil. Die Frequenz f wird basierend auf der erwarteten Netzwerkfluktuation und der gewünschten Genauigkeit festgelegt.
-
Ein zufälliger Schlüssel T wird generiert, der als Referenz für die Schätzung der Netzwerkgröße dient. Der Schlüssel T wird nicht von einem bestimmten Peer ausgewählt, sondern basiert auf der Startzeit S der aktuellen Runde. So wird sichergestellt, dass jeder Knoten im Netzwerk den gleichen Schlüssel T generiert.
-
Jeder Peer berechnet die Anzahl der führenden überlappenden Bits zwischen seinem eigenen Knotenidentifikator und dem Schlüssel T. Diese Anzahl wird als diskrete Approximation p für die theoretisch erwartete Anzahl überlappenden führenden Bits p verwendet.
-
Zeitlich abhängig des berechneten Wertes p (hohe Werte beginnen zuerst) beginnt jeder Knoten das Netzwerk mit Nachrichten über seine Schätzung der Netzwerkgröße zu fluten. Sollte die eigene Schätzung der Netzwerkgröße kleiner sein als eine bereits empfangene Schätzung eines anderen Peers, sendet der Knoten keine Nachricht über seine Schätzung, sondern verwendet die höchste geschätzte Netzwerkgröße für seine Anpassungen des Routings.
Durch diese Schätzungen der Netzwerkgröße können Ressourcen optimal verteilt, Replikationen festgelegt, Routing-Algorithmen verbessert und die Netzwerkleistung optimiert werden. R5N beispielsweise verwendet die geschätzte Größe, um die Anzahl der zufälligen Routing-Schritte (in der Regel log(n), wobei n die Größe des Netzwerks ist) und somit den Übergang zwischen Phase 1 und Phase 2 des Routings festzulegen (Grothoff 2017).
5. Kryptografische Protokolle und Sicherheitsmechanismen im GNUnet
5.1 Vertraulichkeit
Vertraulichkeit mit sogenannter perfekter Forward-Secrecy wird in GNUnet durch die Verwendung von ECDHE mit Curve25519 für den Schlüsselaustausch erreicht. Anschließend wird eine symmetrische Verschlüsselung verwendet, wobei sowohl AES-256 als auch Twofish zur Verschlüsselung der Daten eingesetzt werden (GNUnet).
Durch die Verwendung von perfekter Forward-Secrecy wird sichergestellt, dass, selbst wenn ein Angreifer in Zukunft den privaten Schlüssel eines Knotens im Netzwerk erlangt, die bereits ausgetauschten Daten nicht entschlüsselt werden können. Dies wird dadurch erreicht, dass bei jeder neuen Verbindung zwischen den Knoten im Netzwerk ein neuer temporärer Schlüssel generiert wird.
Insgesamt ermöglicht die Verwendung von perfekter Forward-Secrecy und einer Kombination aus ECDHE, Curve25519, AES-256 und Twofish eine effektive und sichere Verschlüsselung von Daten in GNUnet. Dies trägt dazu bei, die Privatsphäre und Sicherheit der Benutzer zu gewährleisten und eine sichere Peer-to-Peer-Kommunikation und Datenaustauschplattform bereitzustellen.
5.2 Anonymität
Das GNUnet-System basiert in Bezug der Anonymität auf der Annahme, dass Nutzer dann anonym mit anderen Teilnehmern des Systems interagieren können, wenn sie ihre Handlungen im Nachrichtenverkehr anderer Nutzer verstecken. Hierfür ist erforderlich, dass ein Anwender am Nachrichtenverkehr anderer Nutzer teilnimmt und diesen in seinem Namen weiterleitet. Konkret geschieht dies durch Umschreibung der Nachrichtenquelle. So wird verhindert, dass ein Angreifer durch die Überprüfung der Quelladresse herausfinden kann, ob eine Nachricht von einem bestimmten Host stammt, da alle Pakete so aussehen, als ob sie von einem einzigen Knoten stammen. Somit ist es für einen Angreifer nicht möglich zu unterscheiden, welche Pakete tatsächlich von diesem Knoten stammen und welche ausschließlich über diesen weitergeleitet wurden. Ein Knoten innerhalb von GNUnet kann frei entscheiden, wie viel des Nachrichtenverkehrs er umschreibt, um seine eigenen Nachrichten zu verstecken. Hierdurch ist es möglich, eine Abwägung zwischen der Leistungsfähigkeit des Systems und dem notwendigen Maß von eigener Anonymität durchzuführen (GNUnet).
5.3 Authentizität
In GNUnet wird die Identität eines Knotens durch seinen öffentlichen Schlüssel bestimmt. Jeder Knoten im Netzwerk verfügt über einen öffentlichen Schlüssel und einen privaten Schlüssel, die für die Identifizierung des Teilnehmers verwendet werden (GNUnet).
Für die Verschlüsselung der Nachrichten wird ein temporärer, nur für eine einzelne Verbindung bestehender, Schlüssel benutzt. Dieser wird vor der Übertragung mittels ED25519-Algorithmus, einer deterministischen Variante des ECDSA-Algorithmus, und Eingabe des eigenen privaten Schlüssels, signiert. Der Kommunikationspartner überprüft die Signatur des temporären Schlüssels unter Verwendung des bereits bekannten öffentlichen Schlüssels des Gegenübers, um dessen Identität zu bestätigen (GNUnet).
5.4 Integrität
Die Integrität der ausgetauschten Daten wird durch eine Verschlüsselungs-then-MAC-Methode mit SHA-512 sichergestellt. Zunächst wird die Nachricht verschlüsselt und dann eine kryptografische Prüfsumme (MAC) mit SHA-512 berechnet und vor der Übertragung an die verschlüsselte Nachricht angehängt (GNUnet).
5.5 Transparenz
Transparenz spielt eine entscheidende Rolle bei der Gewährleistung der Sicherheit in GNUnet. Indem alle relevanten Informationen über das System und seine Komponenten für die Benutzer verfügbar gemacht werden, wird eine umfassende Bewertung der Sicherheitsmerkmale und -funktionen ermöglicht. Durch die Offenlegung von Implementierungsdetails, Algorithmen, Protokollen und Datenstrukturen können Benutzer das Verhalten des Systems besser verstehen und eventuelle Schwachstellen erkennen. Ferner ist hierdurch eine unabhängige Überprüfung des Systems durch Sicherheitsfachleute und Forscher, was zur Identifizierung und Behebung von potenziellen Sicherheitslücken beitragen kann, möglich.
5.6 Zensurresistenz
Ein zentraler Ansatz zur Zensurresistenz in GNUnet ist die Dezentralisierung der Kommunikation. Aufgrund des Peer-to-Peer-Netzwerkmodells, bei dem die Kommunikation direkt zwischen den Teilnehmern erfolgt, ohne dass eine zentrale Autorität oder ein zentraler Server beteiligt ist, wird eine Zensur von Nachrichtenpaketen erschwert. Die Kommunikation kann nicht leicht blockiert oder überwacht werden, da es keine zentrale Kontrollinstanz gibt, die angegriffen oder manipuliert werden könnte.
Darüber hinaus unterstützt GNUnet verschiedene Möglichkeiten, um das Netzwerk zu betreten oder zu verlassen (vgl. 4.1). Dies ermöglicht es Benutzern, alternative Zugangswege zu nutzen und diese, wenn nötig zu wechseln.
5.7 Schutz vor Sybil-Angriffen
Ein Sybil-Angriff tritt auf, wenn ein Angreifer eine oder mehrere gefälschte Identitäten erstellt und diese verwendet, um das Netzwerk zu manipulieren oder zu beeinträchtigen. GNUnet verwendet für den Schutz vor solchen Angriffen unter anderem Proof-of-Work-Verfahren.
5.7.1 Angriff auf die geschätzte Netzwerkgröße
Das Verfahren für die Schätzung der Größe des Netzwerks ist angreifbar gegen Sybil-Angriffe. Wie bereits in 4.5 beschrieben, basiert der Algorithmus auf Basis eines Schlüssels T, welcher deterministisch anhand der Startzeit der aktuellen Runde generiert wird. Der Schlüssel der nächsten Runde kann somit von einem Angreifer auch schon vor dem eigentlichen Start dieser erzeugt werden. Der Algorithmus sieht vor, dass die überlappenden Bits zwischen dem Schlüssel T und dem eigenen öffentlichen Schlüssel entscheidend sind für die Schätzung. Es wäre einem Angreifer nun möglich, falsche Identitäten zu erzeugen, deren öffentlicher Schlüssel weitestgehend identisch ist, mit dem generierten Schlüssel T ist. Dies würde dazu führen, dass das Netzwerk für alle Teilnehmer weitaus größer erscheint, als es tatsächlich ist.
Dieser Angriff wird von GNUnet mitigiert, indem zusätzlich zur geschätzten Größe des Netzwerks zum einen ein Ergebnis einer rechenintensiven Aufgabe erfordert und zum anderen eine Signatur der Nachricht benötigt. Somit wird sichergestellt, dass es sich bei dem öffentlichen Schlüssel um einen validen Schlüssel handelt und ein Angreifer nur unter hohem Aufwand die Schätzung manipulieren kann. Konkret muss im Rahmen des Proof-of-Work Verfahrens ein Ergebnis E errechnet werden, sodass ein Hash der Konkatenation des eigenen öffentlichen Schlüssels P mit E in einer Bitfolge endet, welche aus W Nullen besteht (Grothoff 2017).
5.7.2 Angriff auf das Routing
Neben den Sybil-Angriffen während der Schätzung der Netzwerkgröße ist es ebenfalls vorstellbar, dass ein Angreifer dem Netzwerk beitritt, ausschließlich um alle GET-Anfragen zu verwerfen, in der Hoffnung, die Funktionsweise des Netzwerks zu beeinträchtigen. Abbildung 5 stellt dar, wie die Erfolgswahrscheinlichkeit einer GET-Anfrage mit der Anzahl an böswilligen Teilnehmern korreliert. Deutlich wird, dass R5N einen solchen Angriff sehr viel besser mitigieren kann, als vergleichsweise R-Kademlia. Begründet ist dies damit, dass R5N zum einen ein nicht deterministisches Routing verwendet, welches es Angreifern besonders schwer macht gezielt Anfragen zu verwerfen, wie auch die größere Anzahl an Replizierungen. Der rot markierte Graph in Abbildung 5 verdeutlicht, dass nach zehn iterativen PUT-Anfragen die Erfolgswahrscheinlichkeit für eine GET-Anfrage sehr viel höher ist als nach einer einzelnen Anfrage (Grothoff 2017). Es ist davon auszugehen, dass nach zehn PUT-Anfragen weitaus mehr Replizierungen der Daten im Netzwerk vorhanden sind (Evans and Grothoff 2011).

5.8 Schutz vor DoS Angriffen
Der von GNUnet eingesetze Routing-Algorithmus R5N begrenzt den Ressourcenverbrauch bei der Verarbeitung von Anfragen. Jeder Peer im Netzwerk kann nur Anfragen senden, die nicht signifikant mehr Ressourcen verbrauchen als normale Anfragen. Dadurch wird verhindert, dass ein Angreifer den Ressourcenverbrauch übermäßig erhöht und das Netzwerk mit einer großen Anzahl von Anfragen überlastet. Somit kann ein Angreifer seinen eigenen Datenverkehr nur um einen Faktor multiplizieren, der durch die durchschnittliche Anzahl der Hops und die Replikationsebene r begrenzt ist (Grothoff 2017; Maymounkov and Mazières 2002).
6. Bewertung der Sicherheitseigenschaften
Die Sicherheitseigenschaften in GNUnet sind insgesamt solide und zielen darauf ab, Vertraulichkeit, Anonymität, Authentizität, Integrität, Transparenz, Zensurresistenz und Schutz vor Sybil- und DoS-Angriffen zu gewährleisten. Im Folgenden werden die einzelnen Eigenschaften bewertet:
6.1 Vertraulichkeit
Die Vertraulichkeit in GNUnet wird durch den Einsatz von perfekter Forward-Secrecy, ECDHE mit Curve25519 sowie AES-256 und Twofish für die symmetrische Verschlüsselung gewährleistet. Diese Kombination von Kryptografie-Algorithmen bietet eine starke Verschlüsselung, die den Schutz der ausgetauschten Daten vor unbefugtem Zugriff gewährleistet. Die Verwendung von temporären Schlüsseln für jede Verbindung trägt ebenfalls zur Vertraulichkeit bei. Die Vertraulichkeit in GNUnet kann somit als hoch bewertet werden.
Allerdings könnte die Sicherheit beeinträchtigt werden, wenn Schwachstellen in den verwendeten Kryptografie-Algorithmen entdeckt werden. Es ist wichtig, dass GNUnet regelmäßig Updates durchführt, um auf neue Bedrohungen zu reagieren und eventuelle Sicherheitslücken zu schließen.
6.2 Anonymität
GNUnet bietet Anonymität, indem es den Nachrichtenverkehr zwischen den Teilnehmern versteckt und die Quelladresse der Nachrichten umschreibt. Dies erschwert die Zuordnung von Nachrichten zu bestimmten Knoten und gewährleistet somit die Anonymität der Benutzer. Durch die Flexibilität bei der Auswahl des Umschreibungsgrads kann jeder Benutzer das gewünschte Maß an Anonymität und Leistungsfähigkeit abwägen. Die Anonymitätseigenschaften von GNUnet sind daher als effektiv einzustufen.
Dennoch bleibt zu beachten, dass die Anonymität gefährdet sein könnte, sollte ein Angreifer genügend Ressourcen haben, um den gesamten Netzwerkverkehr zu überwachen. Zudem könnte die Auswahl des Umschreibungsgrads eine Herausforderung darstellen, da ein zu geringer Grad die Anonymität gefährdet, während ein zu hoher Grad die Leistung des Systems beeinträchtigen kann.
6.3 Authentizität
Die Authentizität in GNUnet wird durch die Verwendung von öffentlichen und privaten Schlüsseln gewährleistet. Jeder Knoten verfügt über einen öffentlichen Schlüssel, der zur Identifizierung verwendet wird, und einen privaten Schlüssel, der zur Signierung von Nachrichten dient. Durch die Überprüfung der Signatur eines temporären Schlüssels mit dem öffentlichen Schlüssel des Kommunikationspartners wird die Identität des Gegenübers bestätigt. Dieser Mechanismus bietet eine starke Authentizität und schützt vor Identitätsfälschung. Die Authentizitätseigenschaften in GNUnet sind daher als zuverlässig einzustufen.
Jedoch könnten Probleme auftreten, wenn ein privater Schlüssel kompromittiert wird oder ein Angreifer unrechtmäßigen Zugang zu einem Knoten des Systems erhält. Es ist wichtig, dass Benutzer ihre Schlüssel sicher aufbewahren und regelmäßig prüfen, ob sie kompromittiert wurden.
6.4 Integrität
Die Integrität der ausgetauschten Daten wird in GNUnet durch die Verschlüsselungs-then-MAC-Methode mit SHA-512 gewährleistet. Durch das Anhängen einer kryptografischen Prüfsumme an die verschlüsselte Nachricht wird sichergestellt, dass die Daten während der Übertragung nicht manipuliert wurden. Diese Methode bietet eine starke Integritätssicherung. Die Integritätseigenschaften von GNUnet sind daher als effektiv einzustufen.
Dennoch könnten Schwachstellen in den verwendeten Algorithmen oder Implementierungsfehler die Integrität gefährden. Es ist wichtig, dass GNUnet regelmäßig auf Sicherheitsupdates überprüft wird, um diese Risiken zu minimieren.
6.5 Transparenz
Transparenz spielt eine wichtige Rolle bei der Sicherheit von GNUnet. Die Offenlegung von Implementierungsdetails, Algorithmen, Protokollen und Datenstrukturen ermöglicht es den Benutzern, das Verhalten des Systems besser zu verstehen und potenzielle Schwachstellen zu erkennen. Die Transparenz erleichtert auch unabhängige Überprüfungen des Systems durch Sicherheitsfachleute und Forscher, was zur Identifizierung und Behebung von Sicherheitslücken beitragen kann. Bei GNUnet handelt es sich um ein vollständig transparentes Projekt.
6.6 Zensurresistenz
GNUnet ist aufgrund seines dezentralen Peer-to-Peer-Netzwerkmodells und der Möglichkeit, alternative Zugangswege zu nutzen, Zensur-resistent. Durch die direkte Kommunikation zwischen den Teilnehmern ohne zentrale Kontrollinstanz ist es schwer, die Kommunikation zu blockieren oder zu überwachen. Die Fähigkeit, Zugangswege zu wechseln, erhöht die Widerstandsfähigkeit gegen Zensur. GNUnet bietet daher eine effektive Zensurresistenz.
6.7 Schutz vor Sybil-Angriffen
GNUnet implementiert Schutzmechanismen gegen Sybil-Angriffe, insbesondere beim Schätzen der Netzwerkgröße und beim Routing. Die Verwendung von Proof-of-Work-Verfahren und der Notwendigkeit von Signaturen erschwert die Manipulation der Netzwerkgröße durch Angreifer. Darüber hinaus minimiert der Routing-Algorithmus R5N die Auswirkungen von Sybil-Angriffen auf das Routing. Der Schutz vor Sybil-Angriffen in GNUnet ist somit als wirksam zu betrachten.
6.8 Schutz vor DoS-Angriffen
Der R5N-Routing-Algorithmus in GNUnet begrenzt den Ressourcenverbrauch bei der Verarbeitung von Anfragen und trägt somit zum Schutz vor DoS-Angriffen bei. Jeder Peer im Netzwerk kann nur Anfragen senden, die nicht signifikant mehr Ressourcen verbrauchen als normale Anfragen. Dadurch wird verhindert, dass ein Angreifer das Netzwerk mit einer großen Anzahl von Anfragen überlastet. Der Schutz vor DoS-Angriffen in GNUnet ist als wirksam einzustufen.
Insgesamt bietet GNUnet solide Sicherheitseigenschaften und zielt darauf ab, Vertraulichkeit, Anonymität, Authentizität, Integrität, Transparenz, Zensurresistenz, Schutz vor Sybil- und DoS-Angriffen zu gewährleisten. Es ist jedoch wichtig zu beachten, dass die Sicherheit eines Systems von vielen Faktoren abhängt, einschließlich der Implementierung, der Konfiguration und der sich ständig ändernden Bedrohungslandschaft. Daher ist es wichtig, das System regelmäßig zu überprüfen, zu aktualisieren und auf dem neuesten Stand der Sicherheitsstandards zu halten.
Abkürzungsverzeichnis
IP
Internet Protokoll
BGP
Border Gateway Protokoll
[R5N] Randomized Recursive Routing for Restricted-Route
Networks
DHT
Distributed Hash Table
DNS
Domain Name System
GNS
GNU Name System
Quellenverzeichnis
Arnbak and Eijk 2012
Arnbak, Axel, and Nico van Eijk. 2012. “Certificate Authority Collapse:
Regulating Systemic Vulnerabilities in the HTTPS Value Chain.” SSRN
Electronic Journal. https://doi.org/10.2139/ssrn.2031409.
Berkowsky and Hayajneh 2017
Berkowsky, Jake A., and Thaier Hayajneh. 2017. “Security Issues with
Certificate Authorities.” In 2017 IEEE 8th Annual Ubiquitous Computing,
Electronics and Mobile Communication Conference (UEMCON), 449–55.
https://doi.org/10.1109/UEMCON.2017.8249081.
Evans and Grothoff 2011
Evans, Nathan S., and Christian Grothoff. 2011. “R5N: Randomized
Recursive Routing for Restricted-Route Networks.” In 2011 5th
International Conference on Network and System Security, 316–21.
https://doi.org/10.1109/ICNSS.2011.6060022.
GNUnet
GNUnet. https://www.gnunet.org/en/.
Grothoff 2017
Grothoff, Christian. 2017. "The GNUnet System." Habilitation diriger des recherches, Université de Rennes 1.
https://inria.hal.science/tel-01654244.
Herrmann, Wendolsky, and Federrath 2009
Herrmann, Dominik, Rolf Wendolsky, and Hannes Federrath. 2009. “Website
Fingerprinting: Attacking Popular Privacy Enhancing Technologies with
the Multinomial Naive-Bayes Classifier.” In Proceedings of the 2009 ACM
Workshop on Cloud Computing Security, 31–42. CCSW ’09. New York, NY,
USA: Association for Computing Machinery.
https://doi.org/10.1145/1655008.1655013.
Maymounkov and Mazières 2002
Maymounkov, Petar, and David Mazières. 2002. “Kademlia: A Peer-to-Peer
Information System Based on the XOR Metric.” In Peer-to-Peer Systems,
edited by Peter Druschel, Frans Kaashoek, and Antony Rowstron, 53–65.
Berlin, Heidelberg: Springer Berlin Heidelberg.