GNUnet

Gnunet
Official logo of the GNUnet project.svg
Gnunet-gtk 0.10 under arch-gnulinux.png
Gnunet mit dem Gtk+ Benutzeroberfläche
Entwickler (en) Gnunet E.V.[1]
Erstveröffentlichung 5. November 2001; vor 20 Jahren
Stabile Version 0,17,1 (13. Juni 2022; Vor 42 Tagen[2]) [±]
Repository
Geschrieben in C[3]
Betriebssystem offiziell: Gratis Software Betriebssysteme (Linux, Freebsd, Netbsd, OpenBSD);
inoffiziell: andere Betriebssysteme (Os x, Fenster)
Verfügbar in Spanisch, Englisch, Russisch, Deutsch, Französisch
Typ Anonymer P2P, Freund-zu-Freund
Lizenz 2018: AGPL-3.0-oder-Later[a][4]
2007: GPL-3.0-oder-Later[b]
2001: GPL-2.0-or-Later[c]
Webseite Gnunet.org
Christian Grothoff, Betreuer von Gnunet, in Berlin am 1. August 2013 im ""#youBroketheinternet. Wir werden uns zu einem GNU machen." Veranstaltung.

Gnunet ist ein Software -Framework zum dezentral, Peer-To-Peer Networking und ein Beamter GNU Paket. Das Rahmen bietet an Linkverschlüsselung, Peer -Entdeckung, Ressourcenzuweisung, Kommunikation über viele Transporte (wie z. TCP, UDP, Http, Https, Wlan und Bluetooth) und verschiedene grundlegende Grundsätze Peer-To-Peer Algorithmen für Routing, Multicast und Netzwerkgrößenschätzung.[5][6]

Gnunets grundlegende Netzwerktopologie ist die von a Mesh-Netzwerk. Gnunet enthält a verteilte Hash -Tabelle (DHT), was a ist zufällig Variante von Kademlia Das kann immer noch effizient einführen Kleinwälznetzwerke. Gnunet bietet eine "F2F -Topologie"Option zum Einschränken von Verbindungen nur zu den vertrauenswürdigen Freunden der Benutzer.

Gnunet verwendet Einheitliche Ressourcenidentifikatoren (nicht genehmigt von Iana, obwohl ein Antrag gestellt wurde).[wenn?] Gnunet -URIs bestehen aus zwei Hauptteilen: dem Modul und dem modulspezifischen Kennung. Ein Gnunet -Uri ist von Form
gnunet: // modul/identifier wo Modul ist der Modulname und Kennung ist eine modulspezifische Zeichenfolge.

Die primäre Codebasis ist in geschrieben C, aber da sind Bindungen in anderen Sprachen, um eine API für die Entwicklung von Erweiterungen in diesen Sprachen zu erstellen. Gnunet ist Teil der GNU -Projekt. Es hat Interesse an der gewonnen Hacker -Community nach dem PRISMA Enthüllungen.[7]

Gnunet besteht aus mehreren Subsystemen, von denen wesentliche Transport- und Kernsubsysteme sind.[8] Das Transport-Subsystem bietet eine unsichere Kommunikation mit Linkschichten, während Core Peer Discovery und Verschlüsselung bietet.[9] Über dem Kernsubsystem werden verschiedene Anwendungen erstellt.

Gnunet enthält verschiedene P2P -Anwendungen in der Hauptverteilung des Frameworks, einschließlich Filesharing, Chat und VPN. Darüber hinaus erweitern einige externe Projekte (wie SEPUSHARE) die Gnunet -Infrastruktur.

Gnunet hat nichts mit dem Älteren zu tun Gnutella P2P -Protokoll. Gnutella ist kein offizielles GNU -Projekt, während Gnunet ist.[10]

Transport

Ursprünglich verwendet Gnunet UDP Für den zugrunde liegenden Transport.[11] Jetzt bietet Gnunet Transport -Subsystem mehrere Optionen wie TCP und SMTP.[12]

Der Kommunikationsport, offiziell registriert bei Iana, ist 2086 (TCP + UDP).[13]

Vertrauenssystem

Gnunet bietet Vertrauenssystem basierend auf überschüssigem Wirtschaftsmodell.[14] Die Idee, das Wirtschaftssystem zu beschäftigen, stammt aus Mojonation Netzwerk.[15]

Gnunet Network hat keine vertrauenswürdigen Einheiten, daher ist es unmöglich, global zu erhalten Ruf. Stattdessen unterhält jeder Kollegen seinen eigenen vertrauen Für jede seiner lokalen Links.

Wenn Ressourcen wie Bandbreite und CPU -Zeit überschüssig sind, stellt Peer sie allen Nachbarn zur Verfügung, ohne das Vertrauen zu reduzieren oder auf andere Weise zu berechnen. Wenn ein Knoten unter Spannung steht, lässt er Anfragen von seinen Nachbarknoten mit einem niedrigeren internen Vertrauenswert fallen. Wenn Peer jedoch weniger Ressourcen hat als genug, um die Anfragen aller zu erfüllen, verweigert es die Anfragen der Nachbarn, dass es weniger vertraut und andere berechnet, indem sie ihr Vertrauen verringert.

Datenaustausch

Die primäre Anwendung an dieser Stelle ist anonym, Zensur-Resistentes Dateiharing, sodass Benutzer anonym veröffentlichen oder Informationen aller Art abrufen können. Das Gnunet -Protokoll, das Anonymität liefert, wird als Gap (Gnunet Anonymity Protocol) bezeichnet.[16] Gnunet fs kann zusätzlich den GNU libextractor verwenden Metadaten.

Dateikodierung

Die mit Gnunet geteilten Dateien sind ECRs (eine Codierung für zensurresistente Freigabe) codiert.[17]

Alle Inhalte werden als Gblock dargestellt. Jeder Gblock enthält 1024 Bytes. Es gibt verschiedene Arten von Gblocks, von denen jeder einen bestimmten Zweck dient. Jeder Gblock wird einzigartig durch seine identifiziert RIPEMD-160 Hash .

DBlocks speichern den tatsächlichen Dateiinhalt und sonst nichts. Die Datei wird an 1024 Byte -Grenzen aufgeteilt und die daraus resultierenden Stücke werden in dblocks gespeichert. Dblocks sind miteinander verbunden zu Merkle Tree durch Iblocks, die DBlock -Kennungen speichern.

Blöcke werden mit einem symmetrischen Schlüssel verschlüsselt, der von abgeleitet ist Wenn sie im Netzwerk gespeichert werden.

Abfragen und Antworten

Das Gnunet -Anonymitätsprotokoll besteht aus Fragen und Antworten. Abhängig von der Last des Weiterleitungsknotens werden Nachrichten an Null oder mehr Knoten weitergeleitet.

Abfragen werden verwendet, um nach Inhalten zu suchen und Datenblöcke anzufordern.

Abfrage enthält eine Ressourcenidentifikatorin, Antwortadresse, Priorität und TTL (Zeit-zu-Live).

Ressourcenkennung von Datum ist ein Triple-Hash .[18] Peer, die auf die Frage antwortet, liefert um zu beweisen, dass es tatsächlich die angeforderte Ressource hat, ohne bereitzustellen zu Zwischenknoten, so dass Zwischenknoten nicht entschlüsseln können .

Antwortadresse ist der Hauptunterschied im Vergleich zu Freenet Protokoll. Während sich in Freenet die Antwort immer mit dem gleichen Pfad wie der Abfrage zurückbringt, kann der Pfad in Gnunet kürzer sein. Peer, der eine Frage erhält, kann sie fallen lassen, nach vorne Es ohne die Reponat -Adresse neu zu schreiben oder indirekt Es durch Ersetzen der Antwortadresse durch eine eigene Adresse. Durch indirekte Abfragen liefert Peer Deckverkehr für seine eigenen Abfragen, während sie durch weiterleitende Peer vermeidet, eine Verbindung als Antwort zu sein und seine Bandbreite zu bewahren. Diese Funktion ermöglicht es dem Benutzer, Anonymität gegen Effizienz zu tauschen. Der Benutzer kann eine Anonymitätsstufe für jeden Operation veröffentlichen, suchen und herunterladen. Eine Anonymitätsniveau von Null Kann verwendet werden, um nicht anonyme Datei-Sharing auszuwählen. Die DHT-Infrastruktur von Gnunet wird nur verwendet, wenn nicht anonyme Dateiverhütung angegeben ist. Die Anonymitätsstufe bestimmt, wie viel Deckungsverkehr ein Peer abdecken muss, um die eigenen Aktionen des Benutzers zu verbergen.

Priority gibt an, wie viel von seinem Vertrauensnutzer im Falle eines Ressourcenmangels ausgeben möchte.

TTL wird verwendet, um zu verhindern, dass Abfragen zu lange im Netzwerk bleiben.

Dateifreigabe -URIs

Das fs Modul Kennung besteht aus beides Chk, sks, KSK oder loc gefolgt von einem Schrägstrich und einem kategorienspezifischen Wert. Die meisten URIs enthalten Hashes, die in codiert sind Base32hex.[19]

  • Chk Identifiziert Dateien in der Regel: gnunet: // fs/chk/[Datei Hash]. [Abfrage Hash]. [Dateigröße in Bytes]
Datei -Hash ist der Hash der Plaintext -Datei, mit dem sie nach dem Herunterladen entschlüsselt werden können. Query Hash ist der Hash des obersten Gblocks, der das Herunterladen des gesamten Baumes von Gblocks ermöglicht, die verschlüsselte Datei enthalten. Die Dateigröße ist erforderlich, um die Form des Baumes zu bestimmen.
  • sks Identifiziert Dateien in Namespaces, typischerweise: gnunet: // fs/sks/namespace/identifier
  • KSK Identifiziert Suchanfragen, typischerweise: gnunet: // fs/ksk/keyword [+keyword]*
  • loc Identifiziert ein Datum auf einer bestimmten Maschine, typischerweise: gnunet: //fs/loc/peer/query.type.key.size

Beispiele

Eine Art von Gnunet filesharing -URI, die auf eine bestimmte Kopie von zeigen Gnu gpl Lizenztext: gnunet://fs/chk/9E4MDN4VULE8KJG6U1C8FKH5HA8C5CHSJTILRTTPGK8MJ6VHORERHE68JU8Q0FDTOH1DGLUJ3NLE99N0ML0N9PIBAGKG7MNPBTT6UKG.1I823C58O3LKS24LLI9KB384LH82LGF9GUQRJHACCUINSCQH36SI4NF88CMAET3T3BHI93D4S0M5CC6MVDL1K8GFKVBN69Q6T307U6O.17992

Eine andere Art von Gnunet Filesharing URI, die auf die Suchergebnisse einer Suche mit Keyword "GPL" hinweist: gnunet://fs/ksk/gpl

GNU -Namenssystem

GNUNET enthält eine Implementierung des GNU-Namenssystems (GNS), eines dezentralen und zensurresistenten Ersatzes für DNS. In GNS verwaltet jeder Benutzer seinen eigenen Zonen und kann Subdomains an Zonen delegieren, die von anderen Benutzern verwaltet werden. Die von anderen Benutzer definierten Datensätze werden mit Gnunet's DHT durchgeführt.[20]

Protokollübersetzung

Gnunet kann den IP-Verkehr über das Peer-to-Peer-Netzwerk abtunnieren. Bei Bedarf kann Gnunet IPv4-IPV6 durchführen Protokollübersetzung dabei. Gnunet liefert a DNS-Gateway auf Anwendungsebene Nach Bedarf an DNS -Anfragen und Kartodraten an die gewünschte Adressfamilie nach Bedarf. Auf diese Weise bietet Gnunet eine mögliche Technologie zur Erleichterung IPv6 -Übergang. Darüber hinaus kann in Kombination mit GNS das Protokoll-Übersetzungssystem von GNUNET zum Zugriff auf versteckte Dienste verwendet werden-IP-basierte Dienste, die lokal bei einem Peer im Netzwerk ausgeführt werden und auf die nur durch die Auflösung eines GNS-Namens zugegriffen werden können.

Soziale API

Gabor X Toth, veröffentlicht Anfang September 2013 eine These[21] das Design von a präsentieren Soziale Nachrichten Service für den Gnunet Peer-to-Peer-Framework, der Skalierbarkeit, Erweiterbarkeit und end-to-End-Verschlüsselungskommunikation bietet. Die Skalierbarkeitseigenschaft wird durch die Bereitstellung von Multicast -Nachrichten erreicht, während die Erweiterbarkeit durch PSYC (Protokoll für Synchronkonferenzen) ermöglicht wird, das eine erweiterbare darstellt RPC (Remote Procedure Call) Syntax, die sich im Laufe der Zeit entwickeln kann, ohne die Software auf allen Knoten im Netzwerk aktualisieren zu müssen. Ein weiteres Schlüsselmerkmal der PSYC -Schicht sind staatliche Multicast -Kanäle, mit denen z. Benutzerprofil. End-to-End-verschlüsselte Kommunikation wird durch den Mesh-Dienst von Gnunet bereitgestellt, auf dem die Multicast-Kanäle erstellt werden. Pseudonyme Benutzer und soziale Orte im System haben kryptografische Identitäten - identifiziert durch ihren öffentlichen Schlüssel -, die mit GNS den menschlichen unvergesslichen Namen zugeordnet sind (mit GNS (GNU -Namenssystem), wo jedes Pseudonym eine Zone hat, die auf seine Plätze zeigt.

Das ist der erforderliche Baustein für das Umwandeln des Gnunet -Frameworks in eine vollständige Peer-to-Peer-soziale Netzwerke Plattform.

Plaudern

Ein Chat wurde im Kadettenmodul implementiert,[22] für was a Gtk Schnittstelle für Gnom existiert,[23] speziell für die aufkommenden Linux -Telefone entwickelt (wie die Librem 5 oder der Pinelle).[24]

Siehe auch

Anmerkungen

  1. ^ AGPL-3.0-or-Later seit 2018-06-05.
  2. ^ GPL-3.0-or-Later von 2007-07-02 bis 2018-06-05.
  3. ^ GPL-2.0-or-Later von 2001 bis 2007-07-02.

Verweise

  1. ^ Gnunet.org - Über Gnunet E.V.
  2. ^ Schanzenbach, Martin (2022-06-13). [hhttps: //www.gnunet.org/en/news/2022-06-0.17.1.html "2022-06-13: Gnunet 0.17.1 veröffentlicht"]. gnunet.org. Abgerufen 2022-06-17.
  3. ^ Gnunet -Quellcode
  4. ^ "Die Lizenz Mitteilung in einer der Quelldateien des Projekts des Projekts, wahrscheinlich in jeder seiner Quelldateien, platziert". Abgerufen 8. Juni, 2018. Gnunet ist kostenlose Software: Sie können sie neu verteilt und/oder unter den Bedingungen der GNU Affero General Public Lizenz wie von der Free Software Foundation veröffentlicht, entweder Version 3 der Lizenz oder (nach Ihrer Option) jede spätere Version.
  5. ^ Evanpolotgrothoff 2012.
  6. ^ Grothoff, Christian (2017-10-10). Das Gnunet -System (Habilitationsarbeit). Université de Rennes 1.
  7. ^ Grothoff 2013.
  8. ^ Ferreiragrothoffruth 2003, Abbildung 1.
  9. ^ Ferreiragrothoffruth 2003, Ii. Gnunet und die Transportschicht: "Der Kern ist für die Verschlüsselung von Link-to-Link, die Bindung von Knotenidentitäten an routbare Adressen und die Entdeckung von Peer verantwortlich."
  10. ^ "GNU -Software". Software - GNU -Projekt - kostenlose Software -Stiftung. Free Software Foundation, Inc.. Abgerufen 25. Januar 2020.
  11. ^ Grothoffpatrascubennettfe 2002, 3.1.1 UDP.
  12. ^ Ferreiragrothoffruth 2003.
  13. ^ Dienstname und Transportprotokoll -Portnummer Registrierung, p. 38
  14. ^ Grothoff 2003.
  15. ^ Grothoffpatrascubennettfe 2002, 2,4 Mojo Nation.
  16. ^ Bennettgrothoff 2003.
  17. ^ Bennettgrothoffhorozovpatrascu 2002.
  18. ^ Grothoffpatrascubennettfe 2002, 5,5 mehr zu Fragen.
  19. ^ Grothoff, Christ. "Dateiharing uris". www.gnunet.org. Abgerufen 15. Juli 2016.
  20. ^ Wachs 2014.
  21. ^ Toth, Gabor X (2013-09-05), Gestaltung eines sozialen Messaging -Systems mit staatlichem Multicast Archiviert 2014-02-22 bei der Wayback -Maschine -Abgerufen 2013-09-28
  22. ^ Dokumentation gnunet.org (2019-11-14) Chatten mit einem (einfachen) Client -Abgerufen 2019-11-14
  23. ^ Kadettgtk an Gitlab
  24. ^ Gnunet Cadet für mobile Linux - Reddit

Weitere Referenzen

Externe Links