Reticulum - Mesh-Networking-Stack mit Sicherheit und Anonymität
(github.com/markqvist)- Ein kryptografiebasierter Networking-Stack, der auf verschiedenen Medien wie LoRa, Packet Radio und WiFi funktioniert und auch in Umgebungen mit extrem niedriger Geschwindigkeit und hoher Latenz stabile Kommunikation unterstützt
- Enthält sicherheitsorientierte Funktionen wie Ende-zu-Ende-Verschlüsselung, Anonymität des Absenders, selbstkonfigurierendes Multi-Hop-Routing und nicht fälschbare Zustellbestätigungen
- Ist nicht vom IP-Stack abhängig und kann in einer Python-3-Umgebung ohne Kernel-Module im Userspace ausgeführt werden
- Zielt auf den Aufbau kostengünstiger, autonomer Netzwerke ab und kann Tausende unabhängiger Netzwerke ohne zentrale Kontrolle oder Zensur miteinander verbinden
- Als Open-Source-Werkzeug für den Aufbau dezentraler Kommunikationsinfrastrukturen und Off-Grid-Networking bietet es hohen praktischen Nutzen für Entwickler und Forschende
Überblick über Reticulum
- Reticulum ist ein kryptografiebasierter Networking-Stack, mit dem sich mit gewöhnlicher Hardware lokale und Weitverkehrsnetze aufbauen lassen
- Funktioniert auch in Umgebungen mit hoher Latenz und geringer Bandbreite
- Bietet Ende-zu-Ende-Verschlüsselung, Anonymität des Absenders, selbstkonfigurierende Multi-Hop-Übertragung, effiziente Adressierung und nicht fälschbare Zustellbestätigungen
- Das Ziel ist, dass jede Person ihr eigener Netzbetreiber werden und ohne zentrale Kontrolle autonome, vernetzbare Netzwerke aufbauen kann
- Reticulum ist nicht als einzelnes Netzwerk gedacht, sondern als Werkzeug zum Aufbau Tausender unabhängiger Netzwerke
- Es kann auch auf IP basieren und damit über das Internet oder private Netze getunnelt werden
- Läuft in einer Python-3-Umgebung, Kernel-Module oder Treiber sind nicht erforderlich
Hauptfunktionen
- Unterstützung für globale eindeutige Adressierung und selbstkonfigurierendes Multi-Hop-Routing
- Datenübertragung über verschiedene physische Medien und Topologien möglich
- Anonymität des Absenders: Pakete enthalten keine Quelladresse
- Kommunikation auf Basis von asymmetrischer X25519-Verschlüsselung und Ed25519-Signaturen
- Verwendet 512-Bit-Curve25519-Schlüsselsätze
- Unterstützung für Forward Secrecy, AES-256-CBC-Verschlüsselung und SHA256-HMAC-Authentifizierung
- Erweiterbares Interface-System, mit dem sich benutzerdefinierte Interfaces hinzufügen lassen
- Einfache API für die unkomplizierte Entwicklung dezentraler Anwendungen
- Unterstützung für große Datenübertragungen mit automatischer Komprimierung, Prüfsummen und Übertragungsanpassung
- Leichtgewichtiger Request/Response-Mechanismus und effizienter Link-Aufbau (3 Pakete, 297 Byte)
Referenzimplementierung und Protokoll
- Der Python-Code in diesem Repository ist die offizielle Referenzimplementierung und maßgeblich für die Protokolldefinition
- Wird unter der Reticulum License veröffentlicht, das Protokoll wurde 2016 der Public Domain gewidmet
- Kompatibilität ist durch vollständige Interoperabilität mit der Referenzimplementierung definiert
Einsatzbeispiele
- rnsh: Remote-Shell-Sitzungen auf Basis von Reticulum
- LXMF: Dezentrales Nachrichtenübertragungsprotokoll
- LXST: Framework für Audio- und Signalübertragung in Echtzeit
- Nomad Network: Off-Grid-Plattform für verschlüsselte Nachrichtenkommunikation
- Sideband: GUI-App mit Dateiübertragung, Sprachanrufen und Kartenfunktionen
- MeshChat: Webbasierter LXMF-Client mit Unterstützung für Bild-, Sprach- und Dateiübertragung
Unterstützte Medien und Geräte
- Funktioniert auf jedem Medium, das mindestens 5 bps Halbduplex-Kanäle und eine MTU von 500 Byte unterstützt
- Nutzbar mit LoRa, Packet Radio, WiFi, Ethernet und optischen Kommunikationslinks
- RNode ist ein LoRa-Interface für Reticulum und kann selbst gebaut oder als Fertiggerät gekauft werden
- Auf Geräten wie dem Raspberry Pi lassen sich LoRa, Packet Radio und WiFi kombiniert einsetzen
Unterstützte Interfaces
- Unterstützung für Ethernet, LoRa (RNode), Packet-Radio-TNC, KISS-Modems, serielle Geräte, TCP/UDP und stdio-Pipes
- Benutzerdefinierte Interface-Module können hinzugefügt werden; praxiserprobte PRs sind willkommen
Leistung und Status
- Zielbereich der Leistung: 250 bps bis 1 Gbps, derzeit etwa 150 bps bis 500 Mbps
- Kernfunktionen des Protokolls vollständig implementiert, API und Formate sind stabil
Bootstrap für Verbindungen
- Reticulum ist kein abonnierbarer Dienst, sondern ein autonomes Netzwerk
- Eine erste Verbindung ist über ein von der Community betriebenes öffentliches Entry-Point-Verzeichnis möglich
- Beispiele:
directory.rns.recipes,rmap.world
- Beispiele:
Kryptografische Komponenten
- 512-Bit-Schlüsselsätze auf Basis von Curve25519, Ed25519-Signaturen, X25519-Schlüsselaustausch
- Verwendet HKDF, AES-256-CBC, HMAC-SHA256 und SHA-256/512
- Standardmäßig bereitgestellt über OpenSSL und PyCA/cryptography
- Eine reine Python-Implementierung ist ebenfalls enthalten, hat jedoch ein niedrigeres Sicherheitsprüfungsniveau
1 Kommentare
Hacker-News-Kommentare
Ich habe mich in mehreren regionalen Communities intensiv mit Mesh-Netzwerken beschäftigt, aber noch nie ein großes Netzwerk gesehen, das Reticulum tatsächlich nutzt.
Der Hauptgrund, warum Communities sich nicht beteiligen, ist, dass dieses Projekt de facto von einem einzelnen Entwickler getragen wird und die Git-Änderungshistorie nur Einträge wie „Update“, „Better Version“ oder „Cleanup“ enthält, sodass sie praktisch nicht nachverfolgbar ist.
Künftig werde es nur noch unvorhersehbare, gelegentliche Updates geben, aber überhaupt keinen Support oder kein Community-Management.
Am Ende ist es also wieder ein weiteres ausgebranntes Open-Source-Einpersonenprojekt.
Es wirkte wie ein Abschiedsgruß.
Reticulum ist ein netzwerkweiter Stack auf Produktionsniveau, bei dem Verschlüsselung und Anonymität im Mittelpunkt stehen.
Es ist nicht nur für LoRa gedacht, sondern transportunabhängig.
Es gibt allerdings zwei Probleme.
Eine kleine Bibliothek mit C-API wäre vermutlich besser.
Apps wie Columba verbessern das aber nach und nach.
Derzeit gibt es ungefähr vier Versuche, Versionen in Low-Level-Sprachen wie C++, Zig, Rust und Go zu bauen.
Darunter wirkt die Rust-Implementierung von Beechat am ausgereiftesten, aber echte Anwendungsfälle gibt es kaum.
Der „alte Weg“ war, dem Schloss-Symbol im Browser zu vertrauen, und der „Zen-Weg“ ist, Hash-Fingerprints direkt zu verifizieren.
Aber dieser Ansatz hat eine schreckliche UX.
Sogar ich als Techniker hatte Mühe mit der Einrichtung, also wird die Allgemeinheit das sicher nicht nutzen.
Wenn man am Ende breite Akzeptanz will, braucht man eben dieses grüne Schloss-Symbol.
Ich bin überrascht, dass es niemand erwähnt hat, aber es gibt ein Routing-Protokoll namens Yggdrasil.
Es verwendet kryptografiebasierte Adressen und funktioniert sowohl über TCP/IP als auch über LoRa.
Ich nutze es seit einigen Wochen als Tailscale-Ersatz, und die Latenz ist ähnlich, außerdem lief es ziemlich stabil.
Mich würde interessieren, worin der Unterschied zu Reticulum besteht.
Offizielle Yggdrasil-Website
Worauf ich in der Praxis am meisten achte, ist die garantierte Nachrichtenübermittlung.
Reticulum verwendet „Store and Forward“ als Standardmodus.
Selbst wenn eine Nachricht nicht sofort zugestellt wird, wird sie übertragen, sobald später eine Verbindung entsteht.
Ich frage mich aber, ob der Client Metadaten enthält, um Nachrichten korrekt zu sortieren, wenn sie nicht in Reihenfolge ankommen.
Reticulum hat Version 1.0.0 erreicht und funktioniert in der Praxis gut.
Zum Einstieg kann man meshchat oder
Sideband für Android ausprobieren.
Über LoRa sind sogar Fotos und Sprachchat möglich, und wenn die Bandbreite nicht ausreicht oder die Verbindung abreißt, wird automatisch auf eine andere Übertragungsart umgeschaltet.
Was mich verwirrt, ist, dass keine offizielle Protokollspezifikation veröffentlicht wurde.
Wenn es für Funkchips wie LoRa gedacht ist, müsste es auf Mikrocontrollern laufen, aber Python oder Rust-Std-Versionen sind in solchen Umgebungen nicht nutzbar.
Wenn man sich die Lizenz ansieht, ist es keine vollständig freie Software.
Sie enthält Klauseln wie „keinen Schaden für Menschen verursachen“ und „keine Nutzung durch KI“.
Alle drei erfordern eine Master-Slave-Knoten-Konfiguration mit einer mehrfachen Spanning-Tree-Struktur ähnlich eBGP.
Sieht so aus, als wäre jemand ein Fan von Anathem.