
Der kryptografiebasierte Netzwerk-Stack zum Aufbau unaufhaltsamer Netzwerke mit LoRa, Packet Radio, WiFi und allem dazwischen.
Reticulum Network Stack <img align="right" src="https://static.pepy.tech/personalized-badge/rns?period=month&units=international_system&left_color=grey&right_color=blue&left_text=Installs/month" style="padding-left:10px"/><a href="https://github.com/markqvist/Reticulum/actions/workflows/build.yml"><img align="right" src="https://github.com/markqvist/Reticulum/actions/workflows/build.yml/badge.svg"/></a> ========== > [!WARNING] > Eine beträchtliche Anzahl hastig veröffentlichter, fehlerhafter, zweifelhafter, direkt schädlicher und in den meisten Fällen vollständig von LLMs generierter Fälschungen von Reticulum-Implementierungen, „Dokumentationen", „Anleitungen" und benutzerorientierten Anwendungen wird derzeit unter ausgefeilten, aber letztlich irreführenden oder schlichtweg täuschenden Behauptungen vermarktet. > > Weitere detaillierte Informationen finden Sie in den entsprechenden Abschnitten des Kapitels [Brandolini's Reference](https://reticulum.network/manual/brandolinis.html) des Handbuchs. Bekannte gute Community-Implementierungen sind im Abschnitt [Community Implementations](#community-implementations) dieser Readme aufgeführt. Für Software und Projekte, die von der Reticulum-Community anerkannt werden, siehe das Kapitel [Programs Using Reticulum](https://reticulum.network/manual/software.html) des Handbuchs. > > Maschinell generierte Inhalte, die aus dem RNS-Quellcode oder der Dokumentation abgeleitet wurden (wie „Implementierungen", „Anleitungen" zum Verkauf usw.), verletzen in mehreren gut dokumentierten Fällen die Open-Source-Lizenzen, die Rechte zum Kopieren und zur Verbreitung gewährt haben. > > Jede behauptete Urheberrechtsansprüche oder Lizenzgewährung (Apache, GPL usw.), die solche Projekte vorbringen, sind [ungültige Gewährungen](https://reticulum.network/manual/brandolinis.html#void-grants-legal-foundations-of-machine-generated-code). Sowohl die Verletzer selbst als auch alle nachgelagerten Projekte, die die rechtsverletzenden Derivate verwenden, sind **direkt** und persönlich für die rechtlichen Konsequenzen haftbar. > > Verwenden Sie diese „Projekte" **nicht**, sie sind eine Gefahr für das gesamte Ökosystem, das wir in den letzten zehn Jahren sorgfältig aufgebaut haben. <p align="center"><img width="200" src="https://assets.kitploit.com/production/public/readmes/10927/035f499a1619cfb6d2da2ca99539e9e9d122bb18addf2ab83d3413592e7662f9.png"></p> *Dieses Repository ist [ein öffentlicher Mirror](https://github.com/markqvist/reticulum/blob/master/MIRROR.md). Die gesamte Entwicklung findet anderswo statt.* Um die grundlegende Philosophie und die Ziele dieses Systems zu verstehen, lesen Sie den [Zen of Reticulum](https://github.com/markqvist/reticulum/blob/master/Zen%20of%20Reticulum.md). Reticulum ist der kryptografiebasierte Netzwerk-Stack zum Aufbau lokaler und weiträumiger Netzwerke mit leicht verfügbarer Hardware. Er kann selbst bei sehr hoher Latenz und extrem niedriger Bandbreite betrieben werden. Reticulum ermöglicht es Ihnen, weiträumige Netzwerke mit handelsüblichen Werkzeugen aufzubauen, und bietet Ende-zu-Ende-Verschlüsselung und -Konnektivität, Initiator-Anonymität, selbstkonfigurierenden kryptografisch abgesicherten Multi-Hop-Transport, effiziente Adressierung, unverfälschbare Zustellbestätigungen und mehr. Die Vision von Reticulum ist es, jedem zu ermöglichen, sein eigener Netzwerkbetreiber zu sein, und es kostengünstig und einfach zu machen, weite Gebiete mit einer Vielzahl unabhängiger, untereinander verbindbarer und autonomer Netzwerke abzudecken. Reticulum **ist nicht** *ein* Netzwerk. Es ist **ein Werkzeug** zum Aufbau *Tausender von Netzwerken*. Netzwerke ohne Kill-Switches, Überwachung, Zensur und Kontrolle. Netzwerke, die frei miteinander interoperieren, sich zusammenschließen und trennen können und keine zentrale Aufsicht erfordern. Netzwerke für Menschen. *Netzwerke für das Volk*. Reticulum ist ein vollständiger Netzwerk-Stack und verlässt sich nicht auf IP oder höhere Schichten, aber es ist möglich, IP als zugrunde liegenden Träger für Reticulum zu verwenden. Daher ist es trivial, Reticulum über das Internet oder private IP-Netzwerke zu tunneln. Da keine Abhängigkeiten von traditionellen Netzwerk-Stacks bestehen, wird Overhead eingespart, der genutzt wurde, um einen Netzwerk-Stack zu implementieren, der direkt auf kryptografischen Prinzipien aufbaut und so Resilienz und stabile Funktionalität selbst in offenen und vertrauenslosen Netzwerken ermöglicht. Es sind keine Kernel-Module oder Treiber erforderlich. Reticulum läuft vollständig im Userland und kann auf praktisch jedem System betrieben werden, das Python 3 ausführt. ## Das Handbuch lesen Die vollständige Dokumentation für Reticulum ist unter [markqvist.github.io/Reticulum/manual/](https://markqvist.github.io/Reticulum/manual/) verfügbar. Sie können auch das [Reticulum-Handbuch als PDF](https://github.com/markqvist/Reticulum/releases/latest/download/Reticulum.Manual.pdf) oder [als E-Book im EPUB-Format](https://github.com/markqvist/Reticulum/releases/latest/download/Reticulum.Manual.epub) herunterladen. Weitere Informationen finden Sie unter [reticulum.network](https://reticulum.network/) und im [FAQ-Abschnitt des Wikis](https://github.com/markqvist/Reticulum/wiki/Frequently-Asked-Questions). ## Bemerkenswerte Funktionen - Koordinationslose global eindeutige Adressierung und Identifikation - Vollständig selbstkonfigurierendes Multi-Hop-Routing über heterogene Träger - Flexible Skalierbarkeit über heterogene Topologien - Reticulum kann Daten über jede Mischung physischer Medien und Topologien übertragen - Netzwerke mit niedriger Bandbreite können mit großen, bandbreitenstarken Netzwerken koexistieren und interoperieren - Initiator-Anonymität, kommunizieren Sie, ohne Ihre Identität preiszugeben - Reticulum fügt keinen Paketen Quelladressen hinzu - Asymmetrische X25519-Verschlüsselung und Ed25519-Signaturen als Grundlage für die gesamte Kommunikation - Die grundlegenden Reticulum-Identitätsschlüssel sind 512-Bit-Elliptische-Kurven-Schlüsselsätze - Forward Secrecy ist für alle Kommunikationsarten verfügbar, sowohl für einzelne Pakete als auch über Links - Reticulum verwendet das folgende Format für verschlüsselte Token: - Ephemere Schlüssel pro Paket und Link, abgeleitet aus einem ECDH-Schlüsselaustausch auf Curve25519 - AES-256 im CBC-Modus mit PKCS7-Padding - HMAC mit SHA256 zur Authentifizierung - IVs werden über os.urandom() generiert - Unverfälschbare Paketzustellbestätigungen - Flexibles und erweiterbares Schnittstellensystem - Reticulum enthält eine große Vielfalt integrierter Schnittstellentypen - Möglichkeit, benutzer- oder communitybereitgestellte benutzerdefinierte Schnittstellentypen zu laden und zu nutzen - Erstellen Sie einfach Ihre eigenen benutzerdefinierten Schnittstellen für die Kommunikation über alles Mögliche - Authentifizierung und virtuelle Netzwerksegmentierung auf allen unterstützten Schnittstellentypen - Eine intuitive und einfach zu verwendende API - Einfacher und leichter zu verwenden als Socket-APIs, aber leistungsfähiger - Macht den Aufbau verteilter und dezentraler Anwendungen viel einfacher - Zuverlässige und effiziente Übertragung beliebiger Datenmengen - Reticulum kann wenige Bytes an Daten oder Dateien von vielen Gigabytes verarbeiten - Sequenzierung, Komprimierung, Übertragungskoordination und Prüfsummenbildung erfolgen automatisch - Die API ist sehr einfach zu verwenden und bietet Übertragungsfortschritt - Leichtgewichtiger, flexibler und erweiterbarer Request/Response-Mechanismus - Effizienter Link-Aufbau - Die Gesamtkosten für den Aufbau eines verschlüsselten und verifizierten Links betragen nur 3 Pakete mit insgesamt 297 Bytes - Geringe Kosten für das Offenhalten von Links mit nur 0,44 Bit pro Sekunde - Zuverlässige sequenzielle Zustellung mit Channel- und Buffer-Mechanismen ## Community-Ressourcen Die hier aufgeführten Referenzen werden nicht vom Reticulum-Projekt oder seinem Maintainer betrieben, verwaltet oder moderiert. Sie werden von engagierten, unabhängigen Freiwilligen in der Community bereitgestellt, zum Nutzen aller, die mehr über Reticulum erfahren möchten. - [Reticulum Community Wiki](https://reticulum.miraheze.org/wiki) - [RNS Recipes](https://rns.recipes/) - [RNS Moscow](https://rns.moscow/) - [RMAP.world](https://rmap.world/) Wenn Sie etwas finden, das nicht mehr korrekt, falsch oder einfach nicht ganz aktuell ist, fordern Sie nichts von den Maintainern dieser Ressourcen und beschweren Sie sich nicht bei ihnen. Nehmen Sie stattdessen die Aufgabe selbst in die Hand, helfen Sie mit und verbessern Sie die Dinge, indem Sie an dem arbeiten und die Beiträge anbieten, die Sie gerne sehen würden, so wie es die Ersteller der oben genannten Ressourcen selbst getan haben. ## Referenzimplementierung Der Python-Code in diesem Repository ist die Referenzimplementierung von Reticulum. Das Reticulum-Protokoll wird vollständig und verbindlich durch diese Referenzimplementierung und das zugehörige Handbuch definiert. Sie wird von Mark Qvist gepflegt, identifiziert durch die Reticulum-Identität `<bc7291552be7a58f361522990465165c>`. Es existieren derzeit keine Spezifikationsderivate zweiter Ordnung und wird sie auch nie geben. Man kann keine bessere Spezifikation bekommen als eine, die ausführbar, funktionsfähig, testbar, eingesetzt und rund um die Uhr auf dem gesamten Planeten in Betrieb ist. Es gibt und wird nie eine separate, abgeleitete „formale Spezifikation", einen „RFC" oder etwas Ähnliches für Reticulum geben: **Die Referenzimplementierung *ist* die endgültige, verbindliche Spezifikation.** Kompatibilität mit dem Reticulum-Protokoll ist definiert als vollständige Interoperabilität und ausreichende funktionale Parität mit dieser Referenzimplementierung. Jede spezifische Protokollimplementierung, die dies erreicht, ist Reticulum. Jede, die dies nicht tut, ist nicht Reticulum. Die Referenzimplementierung ist unter der Reticulum-Lizenz lizenziert. Das Reticulum-Protokoll wurde 2016 der Public Domain gewidmet. ## Community-Implementierungen Die hier aufgeführten Implementierungen haben Wire-Kompatibilität, ausreichende Feature-Parität, vernünftige Sicherheits- und Entwicklungspraktiken, langfristiges Engagement und Sorgfalt für die Implementierungsqualität nachgewiesen. Darüber hinaus können sie auf eine Erfolgsbilanz von mindestens 18 Monaten aktiver Entwicklung zurückblicken. Am wichtigsten ist, dass ihre Entwickler und Maintainer von der Community als tatsächlich sachkundig anerkannt werden und als dem Ziel verpflichtet, das gesamte Reticulum-Ökosystem zu verbessern. - [Chad Attermans](https://github.com/attermann) [microReticulum](https://github.com/attermann/microReticulum/) ist eine C++-Implementierung, die auf 32-Bit-Mikrocontroller abzielt. - [Quad4s](https://quad4.io/) [Reticulum-Go](https://reticulum-go.quad4.io/) ist eine Go-Implementierung, die sowohl auf Desktop-, Mobil- als auch eingebettete Systeme abzielt. *Wenn Sie der Maintainer einer oben nicht aufgeführten Implementierung sind und glauben, dass sie nach denselben Maßstäben an Gründlichkeit und Engagement eine Aufnahme verdient, wird Ihr Vorschlag willkommen geheißen.* --- **Warnung!** Eine beträchtliche Anzahl hastig veröffentlichter, fehlerhafter, zweifelhafter, direkt schädlicher und in den meisten Fällen vollständig von LLMs generierter Fälschungen von Reticulum-Implementierungen (und benutzerorientierten Anwendungen) wird derzeit unter ausgefeilten, aber letztlich irreführenden oder schlichtweg täuschenden Behauptungen vermarktet und beworben. Die meisten davon sind entweder schnelle Aufmerksamkeits- oder Geldbeschaffungsversuche, völlig ungeprüft, inkompatibel, ohne Wartung oder menschliche Aufsicht, versuchen aktiv, die Community zu spalten, oder eine Kombination davon. --- Für ausführlichere Informationen zu diesem Thema lesen Sie das Kapitel [Brandolini's Reference](https://reticulum.network/manual/brandolinis.html) des Handbuchs (zu den rechtlichen Grundlagen siehe speziell [Void Grants](https://reticulum.network/manual/brandolinis.html#void-grants-legal-foundations-of-machine-generated-code)). Das Kapitel ist sehr lang, sehr detailliert und stellt die höfliche, maßvolle Analyse dar, die als fortlaufende, in Abschnitte gegliederte Referenz zu diesen Themen gedacht ist. Wenn Sie lieber nur die kurze, ungefilterte und ziemlich wütende Version hätten, die aus einer umgesetzten Reaktion auf eine bestimmte Erscheinungsform des Phänomens als Ganzes besteht und als Beispiel dient, können Sie [Yes, I am Angry](https://github.com/markqvist/reticulum/blob/master/docs/history/2026_09_18_Yes_I_am_Angry.md) lesen. Sie vermittelt denselben Punkt in einer ganz anderen Sprache, wenn Sie mit dieser Art der Kommunikation umgehen können. Die Kern-Maintainer und -Entwickler von Reticulum **raten dringend davon ab, irgendeine solche „Implementierung" zu verwenden**. Das [täuschende und eigennützige Verhalten](https://reticulum.network/manual/brandolinis.html#a-persistent-but-fragile-triad) einer kleinen Anzahl entweder böswilliger, aufmerksamkeitssuchender oder inkompetenter Personen hat erheblichen [Schaden und Verschwendung von Zeit und Ressourcen](https://reticulum.network/manual/brandolinis.html#intent-consequence) sowohl für Entwickler, Node-Betreiber, Nutzer und die Community als auch das Reticulum-Projekt insgesamt verursacht. Wir bitten alle Nutzer freundlich, aber dringend, Vorsicht, gesunden Menschenverstand und gesunde Skepsis walten zu lassen, wenn sie die mögliche Verwendung einer oben nicht aufgeführten Implementierung [bewerten](https://reticulum.network/manual/brandolinis.html#evaluating-a-reticulum-implementation); und zu akzeptieren, dass **die Entscheidung, dies dennoch zu tun, die Verantwortung für potenziellen Schaden von einer unverantwortlichen oder böswilligen Person auf Sie selbst überträgt**. ## Beispiele für Reticulum-Anwendungen Wenn Sie sich schnell einen Eindruck davon verschaffen möchten, was Reticulum leisten kann, werfen Sie einen Blick auf den Abschnitt [Programs Using Reticulum](https://reticulum.network/manual/software.html) des Handbuchs oder auf die folgenden Ressourcen: - [LXMF](https://github.com/markqvist/lxmf) ist ein verteiltes, verzögerungs- und unterbrechungstolerantes Nachrichtenübertragungsprotokoll, das auf Reticulum aufbaut - Das [LXST](https://github.com/markqvist/lxst)-Protokoll und -Framework bietet Echtzeit-Audio- und Signaltransport über Reticulum. Es enthält Primitive und Hilfsmittel zum Aufbau sprachbasierter Anwendungen und Hardwaregeräte, wie das Programm `rnphone`, mit dem sich Hardware-Telefone bauen lassen. - Für eine netzunabhängige, verschlüsselte und widerstandsfähige Mesh-Kommunikationsplattform siehe [Nomad Network](https://github.com/markqvist/NomadNet) - Die Android-, Linux-, macOS- und Windows-App [Sideband](https://github.com/markqvist/Sideband) verfügt über eine grafische Oberfläche und viele erweiterte Funktionen wie Dateiübertragungen, Bild- und Sprachnachrichten, Echtzeit-Sprachanrufe, ein verteiltes Telemetriesystem, Kartierungsfunktionen und vollständige Plugin-Erweiterbarkeit. - [MeshChatX](https://git.quad4.io/RNS-Things/MeshChatX) ist ein voll ausgestatteter LXMF-Client mit vielen integrierten Werkzeugen und Funktionen, der auch Bild- und Sprachnachrichten, Dateiübertragungen und Sprachanrufe unterstützt. Er enthält außerdem einen integrierten Seitenbrowser zum Durchsuchen von Nomad-Network-Knoten. - Sie können das enthaltene Programm [rnsh](https://reticulum.network/manual/using.html#the-rnsh-utility) verwenden, um Remote-Shell-Sitzungen über Reticulum aufzubauen. - Das enthaltene [rngit](https://reticulum.network/manual/git.html)-System bietet eine vollständige Lösung zum Verwalten, Hosten, gemeinsamen Bearbeiten von und Interagieren mit Git-Repositories über Reticulum. ## Wo kann Reticulum eingesetzt werden? Über praktisch jedes Medium, das mindestens einen Halbduplex-Kanal mit einem Durchsatz von mehr als 5 Bit pro Sekunde und einer MTU von 500 Bytes unterstützen kann. Datenfunkgeräte, Modems, LoRa-Funkgeräte, serielle Leitungen, AX.25-TNCs, digitale Amateurfunkmodi, WiFi- und Ethernet-Geräte, Freiraum-optische Verbindungen und ähnliche Systeme sind alles Beispiele für die Arten physischer Geräte, die Reticulum nutzen kann. Eine quelloffene LoRa-basierte Schnittstelle namens [RNode](https://markqvist.github.io/Reticulum/manual/hardware.html#rnode) wurde speziell für die Verwendung mit Reticulum entwickelt. Sie kann selbst gebaut oder als kompletter Transceiver erworben werden, der nur eine USB-, WiFi- oder Bluetooth-Verbindung zum Host benötigt. Reticulum kann auch über bestehende IP-Netzwerke gekapselt werden, sodass nichts Sie daran hindert, es über kabelgebundenes Ethernet, Ihr lokales WiFi-Netzwerk oder das Internet zu nutzen, wo es genauso gut funktioniert. Tatsächlich ist eine der Stärken von Reticulum, wie einfach es Ihnen ermöglicht, verschiedene Medien zu einem selbstkonfigurierenden, widerstandsfähigen und verschlüsselten Mesh zu verbinden, unter Verwendung jeder verfügbaren Mischung vorhandener Infrastruktur. Beispielsweise ist es möglich, einen Raspberry Pi einzurichten, der sowohl mit einem LoRa-Funkgerät, einem Packet-Radio-TNC als auch einem WiFi-Netzwerk verbunden ist. Sobald die Schnittstellen konfiguriert sind, kümmert sich Reticulum um den Rest, und jedes Gerät im WiFi-Netzwerk kann mit Knoten auf der LoRa- und der Packet-Radio-Seite des Netzwerks kommunizieren und umgekehrt. ## Wie fange ich an? Der beste Weg, mit dem Reticulum Network Stack zu beginnen, hängt davon ab, was Sie tun möchten. Vollständige Details und Beispiele finden Sie im Abschnitt [Getting Started Fast](https://markqvist.github.io/Reticulum/manual/gettingstartedfast.html) des [Reticulum Manual](https://markqvist.github.io/Reticulum/manual/). Um Reticulum und zugehörige Dienstprogramme einfach auf Ihrem System zu installieren, ist der einfachste Weg über `pip`. Anschließend können Sie jedes Programm starten, das Reticulum verwendet, oder Reticulum als Systemdienst mit [dem rnsd-Dienstprogramm](https://markqvist.github.io/Reticulum/manual/using.html#the-rnsd-utility) starten.```bash pip install rns ``` Wenn Sie ein Betriebssystem verwenden, das die normale Paketinstallation durch Benutzer über `pip` blockiert, können Sie `pip` zum normalen Verhalten zurückbringen, indem Sie die Datei `~/.config/pip/pip.conf` bearbeiten und die folgende Direktive im Abschnitt `[global]` hinzufügen:```text [global] break-system-packages = true ``` Alternativ kannst du das `pipx`-Tool verwenden, um Reticulum in einer isolierten Umgebung zu installieren:```bash pipx install rns ``` Beim ersten Start erstellt Reticulum eine Standardkonfigurationsdatei, die eine grundlegende Konnektivität zu anderen Reticulum-Peers bietet, die möglicherweise lokal erreichbar sind. Die Standardkonfigurationsdatei enthält einige Beispiele und Referenzen zur Erstellung einer komplexeren Konfiguration. Wenn Sie eine alte Version von `pip` auf Ihrem System haben, müssen Sie es möglicherweise zuerst mit `pip install pip --upgrade` aktualisieren. Falls Sie `pip` noch nicht installiert haben, können Sie es mit dem Paketmanager Ihres Systems über `sudo apt install python3-pip` oder ähnlich installieren. Ausführlichere Beispiele zur Erweiterung der Kommunikation über viele Medien wie Packet Radio oder LoRa, serielle Ports oder über schnelle IP-Verbindungen und das Internet unter Verwendung der UDP- und TCP-Schnittstellen finden Sie im Abschnitt [Supported Interfaces](https://markqvist.github.io/Reticulum/manual/interfaces.html) des [Reticulum Manual](https://markqvist.github.io/Reticulum/manual/). ## Enthaltene Dienstprogramme Reticulum enthält eine Reihe nützlicher Dienstprogramme zur Verwaltung Ihrer Netzwerke, zur Anzeige von Status und Informationen sowie für andere Aufgaben. Mehr über diese Programme erfahren Sie im Abschnitt [Included Utility Programs](https://markqvist.github.io/Reticulum/manual/using.html#included-utility-programs) des [Reticulum Manual](https://markqvist.github.io/Reticulum/manual/). - Der Systemdaemon `rnsd` zum Ausführen von Reticulum als stets verfügbarer Dienst - Ein Schnittstellen-Statusdienstprogramm namens `rnstatus`, das Informationen über Schnittstellen anzeigt - Das Pfad-Lookup- und Verwaltungswerkzeug `rnpath`, mit dem Sie Pfadtabellen anzeigen und ändern können - Ein Diagnosewerkzeug namens `rnprobe` zur Überprüfung der Konnektivität zu Zielen - Ein einfaches Dateiübertragungsprogramm namens `rncp`, das die Übertragung von Dateien zwischen Systemen erleichtert - Das Identitätsverwaltungs- und Verschlüsselungswerkzeug `rnid`, mit dem Sie Identitäten verwalten und Dateien ver- und entschlüsseln können - Das Programm `rnsh` ermöglicht es Ihnen, eine vollständig interaktive Shell-Sitzung mit entfernten Systemen aufzubauen - Das Programm `rnx` zur Ausführung entfernter Befehle ermöglicht es Ihnen, einfache Befehle und Programme auszuführen und Ausgaben von entfernten Systemen abzurufen - Das Programm `rngit` bietet einen vollständigen Multi-Repository-Git-Knoten zum Bereitstellen von Repositories über Reticulum - Der enthaltene Helfer `git-remote-rns` ermöglicht Ihnen die Interaktion mit Git-Repositories über Reticulum Alle Werkzeuge, einschließlich `rnx` und `rncp`, funktionieren zuverlässig und gut, selbst über Verbindungen mit sehr geringer Bandbreite wie LoRa oder Packet Radio. Für voll funktionsfähige Remote-Shells über Reticulum werfen Sie auch einen Blick auf das Programm [rnsh](https://github.com/acehoss/rnsh). ## Unterstützte Schnittstellentypen und Geräte Reticulum implementiert eine Reihe generalisierter Schnittstellentypen, die den Großteil der Kommunikationshardware abdecken, über die Reticulum laufen kann. Wenn Ihre Hardware nicht unterstützt wird, ist es [einfach, ein benutzerdefiniertes Schnittstellenmodul zu implementieren](https://markqvist.github.io/Reticulum/manual/interfaces.html#custom-interfaces). Beiträge zu benutzerdefinierten Schnittstellen werden dankbar angenommen, sofern sie allgemein nützlich und in der Praxis gut getestet sind. Derzeit werden die folgenden integrierten Schnittstellen unterstützt: - Jedes Ethernet-Gerät - LoRa unter Verwendung von [RNode](https://unsigned.io/rnode/) - Packet Radio TNCs (mit oder ohne AX.25) - KISS-kompatible Hardware- und Softwaremodems - Jedes Gerät mit einem seriellen Port - TCP über IP-Netzwerke - UDP über IP-Netzwerke - Externe Programme über stdio oder Pipes - Benutzerdefinierte Hardware über stdio oder Pipes ## Leistung *Alle Leistungsangaben hier gehen davon aus, dass `rnsd` im vollständig interpretierten Python-Modus läuft, beschränkt auf einen einzigen CPU-Kern.* Reticulum zielt auf eine *sehr* breite nutzbare Leistungshülle ab, priorisiert jedoch Funktionalität und Leistung auf Medien mit geringer Bandbreite. Das Ziel ist es, eine dynamische Leistungshülle von 100 Bit pro Sekunde bis zu 10 Gigabit pro Sekunde auf normaler Hardware bereitzustellen. Derzeit liegt die nutzbare Leistungshülle im Netzwerk bei etwa 150 Bit pro Sekunde bis 1 Gigabit pro Sekunde auf moderater Hardware. Die tatsächliche Leistung wird stark variieren, abhängig von der Geschwindigkeit Ihres Systems, der Verfügbarkeit von kryptografischer Hardwarebeschleunigung und anderen Faktoren. Der reine Routing-Durchsatz für einen Transportknoten, der auf einem Raspberry Pi 5 gehostet wird, beträgt etwa 5 Gigabit pro Sekunde. Systeme mit moderner kryptografischer Hardwarebeschleunigung können einen Transportdurchsatz von 15 Gigabit pro Sekunde und mehr erreichen. Obwohl die Referenzimplementierung durchaus in der Lage ist, 100+ Gbps zu erreichen, indem sie mehrere CPU-Kerne und vektorisierten Transport nutzt, wird eine Leistung über das aktuelle Niveau hinaus nicht hoch priorisiert, da RNS bereits in fast allen realen Situationen die verfügbare physische Mediumbandbreite sättigen kann. Die Hauptziele von RNS sind *Zuverlässigkeit*, *Korrektheit*, *Sicherheit*, *ordnungsgemäßes Verkehrsmanagement* und *tatsächlich praktische Leistung*, nicht hohle "Benchmarks" auf dem Papier mit wenig bis gar keinem Bezug zur realen Nutzbarkeit. Alle Maintainer alternativer Implementierungen werden *nachdrücklich* ermutigt, einen ähnlichen Ansatz zu verfolgen und sich insbesondere darauf zu konzentrieren, ihre Implementierungen ordnungsgemäß und zuverlässig zum Laufen zu bringen, bevor sie empirisch zweifelhafte oder sachlich falsche Leistungsbehauptungen veröffentlichen. ## Aktueller Status Alle Kernprotokollfunktionen sind implementiert und funktionsfähig, aber Ergänzungen werden wahrscheinlich auftreten, während die reale Nutzung erforscht und verstanden wird. Die API und das Wire-Format können als stabil betrachtet werden. ## Abhängigkeiten Die Installation des Standardpakets `rns` erfordert nur zwei externe Abhängigkeiten, die unten aufgeführt sind. Fast alle Systeme und Distributionen haben problemlos verfügbare Pakete für diese Abhängigkeiten, und wenn das Paket `rns` mit `pip` installiert wird, werden sie ebenfalls heruntergeladen und installiert. - [PyCA/cryptography](https://github.com/pyca/cryptography) - [pyserial](https://github.com/pyserial/pyserial) Auf ungewöhnlicheren Systemen und in einigen seltenen Fällen kann es unmöglich sein, eines oder mehrere der oben genannten Module zu installieren oder sogar zu kompilieren. In solchen Situationen können Sie stattdessen das Paket `rnspure` verwenden, das keine externen Abhängigkeiten für die Installation erfordert. Bitte beachten Sie, dass der Inhalt der Pakete `rns` und `rnspure` *identisch* ist. Der einzige Unterschied besteht darin, dass das Paket `rnspure` keine für die Installation erforderlichen Abhängigkeiten auflistet. Unabhängig davon, wie Reticulum installiert und gestartet wird, lädt es externe Abhängigkeiten nur, wenn sie *benötigt* und *verfügbar* sind. Wenn Sie beispielsweise Reticulum auf einem System verwenden möchten, das [pyserial](https://github.com/pyserial/pyserial) nicht unterstützen kann, ist es durchaus möglich, dies mit dem Paket `rnspure` zu tun, aber Reticulum wird keine seriellen Schnittstellen verwenden können. Alle anderen verfügbaren Module werden weiterhin bei Bedarf geladen. **Bitte beachten!** Wenn Sie das Paket `rnspure` verwenden, um Reticulum auf Systemen auszuführen, die [PyCA/cryptography](https://github.com/pyca/cryptography) nicht unterstützen, ist es wichtig, dass Sie den Abschnitt [Cryptographic Primitives](#cryptographic-primitives) dieses Dokuments lesen und verstehen. ## Bootstrapping der Konnektivität Reticulum ist kein Dienst, den Sie abonnieren, und auch kein einzelnes globales Netzwerk, dem Sie "beitreten". Reticulum bietet Funktionalität zum Entdecken verfügbarer öffentlicher Schnittstellen über das Netzwerk selbst, und die breitere Community hat verschiedene Verzeichnisse öffentlich verfügbarer Einstiegspunkte bereitgestellt, um die Konnektivität zu bootstrappen. Um zu erfahren, wie Sie eine anfängliche Konnektivität über Reticulum herstellen, lesen Sie den Abschnitt [Bootstrapping Connectivity](https://reticulum.network/manual/gettingstartedfast.html#bootstrapping-connectivity) des Handbuchs. Wenn Sie bereits eine allgemeine Vorstellung davon haben, wie dies funktioniert, können Sie von der Community betriebene Seiten wie [directory.rns.recipes](https://directory.rns.recipes/) und [rmap.world](https://rmap.world) verwenden, um Schnittstellendefinitionen für die anfängliche Konnektivität zum globalen verteilten Reticulum-Backbone zu finden. ## Öffentliches Testnetz ***Wichtig!** Historisch wurde vom Reticulum-Projekt selbst ein entwicklerorientiertes Testnetz bereitgestellt. Da die Anzahl der globalen Reticulum-Knoten und Einstiegspunkte auf eine beträchtliche Menge angewachsen ist, wurde dieses öffentliche Testnetz, einschließlich des Amsterdam-Testnetz-Einstiegspunkts, inzwischen außer Betrieb genommen. Wenn Sie noch Instanzen haben, die für die Konnektivität auf diesen Einstiegspunkt angewiesen waren, wechseln Sie stattdessen zur Nutzung des verteilten Backbones. Reticulum enthält jetzt ein vollständiges On-Network-Schnittstellen-Erkennungs- und Konnektivitäts-Bootstrapping-System. Lesen Sie den Abschnitt [Bootstrapping Connectivity](https://reticulum.network/manual/gettingstartedfast.html#bootstrapping-connectivity) des Handbuchs für Hinweise.* ## Reticulum unterstützen Damit dies möglich ist, brauche ich Ihre Hilfe. Bitte unterstützen Sie die fortgesetzte Entwicklung offener, freier und privater Kommunikationssysteme durch eine Spende über einen der folgenden Kanäle: - Monero: ``` 84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w ``` - Bitcoin ``` bc1pgqgu8h8xvj4jtafslq396v7ju7hkgymyrzyqft4llfslz5vp99psqfk3a6 ``` - Ethereum ``` 0x91C421DdfB8a30a49A71d63447ddb54cEBe3465E ``` - Liberapay: https://liberapay.com/Reticulum/ - Ko-Fi: https://ko-fi.com/markqvist ## Kryptografische Primitive Reticulum verwendet eine einfache Sammlung effizienter, starker und gut getesteter kryptografischer Primitive mit weit verbreiteten Implementierungen, die sowohl auf Allzweck-CPUs als auch auf Mikrocontrollern eingesetzt werden können. Eine der Hauptüberlegungen bei der Auswahl dieser speziellen Sammlung von Primitiven ist, dass sie *sicher* mit relativ wenigen Fallstricken auf praktisch allen aktuellen Computerplattformen implementiert werden können. Die hier aufgeführten Primitive **sind maßgeblich**. Alles, was behauptet, Reticulum zu sein, aber nicht genau diese Primitive verwendet, **ist nicht** Reticulum und möglicherweise ein absichtlich kompromittierter oder geschwächter Klon. Die verwendeten Primitive sind: - Reticulum-Identitätsschlüssel sind 512-Bit-Curve25519-Schlüsselsätze - Ein 256-Bit-Ed25519-Schlüssel für Signaturen - Ein 256-Bit-X22519-Schlüssel für ECDH-Schlüsselaustausch - HKDF zur Schlüsselableitung - Verschlüsselte Token basieren auf der [Fernet-Spezifikation](https://github.com/fernet/spec/) - Ephemere Schlüssel, abgeleitet aus einem ECDH-Schlüsselaustausch über Curve25519 - HMAC mit SHA256 zur Nachrichtenauthentifizierung - IVs müssen durch `os.urandom()` oder besser generiert werden - AES-256 im CBC-Modus mit PKCS7-Padding - Keine Fernet-Versions- und Zeitstempel-Metadatenfelder - SHA-256 - SHA-512 In der Standardinstallationskonfiguration werden die Primitive `X25519`, `Ed25519` und `AES-256-CBC` von [OpenSSL](https://www.openssl.org/) (über das [PyCA/cryptography](https://github.com/pyca/cryptography)-Paket) bereitgestellt. Die Hashfunktionen `SHA-256` und `SHA-512` werden vom Standard-Python-[hashlib](https://docs.python.org/3/library/hashlib.html) bereitgestellt. Die Primitive `HKDF`, `HMAC`, `Token` und die `PKCS7`-Padding-Funktion werden immer von den folgenden internen Implementierungen bereitgestellt: - [HKDF.py](https://github.com/markqvist/reticulum/blob/master/RNS/Cryptography/HKDF.py) - [HMAC.py](https://github.com/markqvist/reticulum/blob/master/RNS/Cryptography/HMAC.py) - [Token.py](https://github.com/markqvist/reticulum/blob/master/RNS/Cryptography/Token.py) - [PKCS7.py](https://github.com/markqvist/reticulum/blob/master/RNS/Cryptography/PKCS7.py) Reticulum enthält auch eine vollständige Implementierung aller notwendigen Primitive in reinem Python. Wenn OpenSSL und PyCA beim Start von Reticulum nicht auf dem System verfügbar sind, verwendet Reticulum stattdessen die internen Pure-Python-Primitive. Eine triviale Konsequenz davon ist die Leistung, wobei das OpenSSL-Backend *viel* schneller ist. Die wichtigste Konsequenz ist jedoch der potenzielle Verlust der Sicherheit durch die Verwendung von Primitiven, die nicht die gleiche Menge an Prüfung, Tests und Überprüfung erfahren haben wie die von OpenSSL. --- [Read more](https://github.com/markqvist/reticulum)