Reticulum - pile de réseau maillé sécurisée et anonyme
(github.com/markqvist)- Pile réseau fondée sur la cryptographie, fonctionnant sur divers supports comme LoRa, la radio par paquets et le WiFi, avec une communication fiable même dans des environnements à très faible débit et à forte latence
- Inclut des fonctions centrées sur la sécurité telles que le chiffrement de bout en bout, l’anonymat de l’expéditeur, le routage multi-sauts auto-configuré et des accusés de réception infalsifiables
- Ne dépend pas de la pile IP et peut s’exécuter en espace utilisateur dans un environnement Python 3 sans module noyau
- Vise la construction de réseaux autonomes à faible coût, capables d’interconnecter des milliers de réseaux indépendants sans contrôle centralisé ni censure
- Outil open source de grande valeur pour les développeurs et les chercheurs souhaitant mettre en place une infrastructure de communication distribuée et du réseau off-grid
Présentation de Reticulum
- Reticulum est une pile réseau fondée sur la cryptographie permettant de construire des réseaux locaux et étendus à l’aide de matériel standard
- Fonctionne même dans des environnements à forte latence et faible bande passante
- Fournit le chiffrement de bout en bout, l’anonymat de l’expéditeur, le transfert multi-sauts auto-configuré, l’adressage efficace et des accusés de réception infalsifiables
- L’objectif est que chacun puisse devenir opérateur de son propre réseau et construire des réseaux autonomes et interconnectables sans contrôle centralisé
- Reticulum n’est pas un réseau unique, mais un outil conçu pour construire des milliers de réseaux indépendants
- Il peut aussi fonctionner sur IP, ce qui permet le tunneling via Internet ou un réseau privé
- S’exécute dans un environnement Python 3, sans module noyau ni pilote requis
Fonctionnalités principales
- Prend en charge l’adressage global unique et le routage multi-sauts auto-configuré
- Permet la transmission de données sur divers supports physiques et topologies
- Anonymat de l’expéditeur garanti : les paquets n’incluent pas d’adresse source
- Communication fondée sur le chiffrement asymétrique X25519 et les signatures Ed25519
- Utilise un jeu de clés Curve25519 de 512 bits
- Prend en charge la Forward Secrecy, le chiffrement AES-256-CBC et l’authentification SHA256 HMAC
- Système d’interfaces extensible permettant d’ajouter des interfaces personnalisées
- API simple facilitant le développement d’applications distribuées
- Prend en charge le transfert de gros volumes de données, avec compression, checksum et ajustement de transmission automatiques
- Mécanisme léger de Request/Response et établissement de lien efficace (3 paquets, 297 octets)
Implémentation de référence et protocole
- Le code Python de ce dépôt constitue l’implémentation de référence officielle et sert de base à la définition du protocole
- Distribué sous la Reticulum License, le protocole a été versé dans le domaine public en 2016
- La compatibilité est définie par une interopérabilité complète avec l’implémentation de référence
Exemples d’utilisation
- rnsh : session de shell distant basée sur Reticulum
- LXMF : protocole de messagerie distribué
- LXST : framework de transmission audio et de signaux en temps réel
- Nomad Network : plateforme de messagerie chiffrée off-grid
- Sideband : application GUI avec transfert de fichiers, appels vocaux et fonctions cartographiques
- MeshChat : client LXMF web prenant en charge le transfert d’images, de voix et de fichiers
Supports et appareils pris en charge
- Fonctionne sur tout support offrant au minimum un canal half-duplex de 5 bps et une MTU de 500 octets
- Peut utiliser LoRa, la radio par paquets, le WiFi, Ethernet et des liaisons optiques
- RNode est une interface LoRa pour Reticulum, disponible en fabrication maison ou à l’achat en produit fini
- Permet des configurations mixtes LoRa, radio par paquets et WiFi sur Raspberry Pi et autres appareils similaires
Interfaces prises en charge
- Prend en charge Ethernet, LoRa (RNode), TNC de radio par paquets, modems KISS, appareils série, TCP/UDP, pipes stdio etc.
- Possibilité d’ajouter des modules d’interface personnalisés, les PR éprouvées en conditions réelles sont bienvenues
Performances et état du projet
- Plage de performances visée : 250 bps à 1 Gbps, actuellement environ 150 bps à 500 Mbps
- Fonctionnalités principales du protocole entièrement implémentées, API et formats dans un état stable
Amorçage de connexion
- Reticulum est un réseau autonome, et non un service sur abonnement
- La connexion initiale est possible via un répertoire public de points d’entrée exploité par la communauté
- Ex. :
directory.rns.recipes,rmap.world
- Ex. :
Composants cryptographiques
- Jeu de clés Curve25519 de 512 bits, signatures Ed25519, échange de clés X25519
- Utilise HKDF, AES-256-CBC, HMAC-SHA256 et SHA-256/512
- Fourni par défaut via OpenSSL et PyCA/cryptography
- Inclut aussi une implémentation pure Python, mais avec un niveau de validation de sécurité plus faible
1 commentaires
Avis Hacker News
J’ai beaucoup travaillé en profondeur sur les réseaux mesh dans plusieurs communautés locales, mais je n’ai jamais vu de grand réseau utilisant réellement Reticulum
La principale raison pour laquelle les communautés ne s’y engagent pas est que ce projet repose en pratique sur un seul développeur, et que l’historique Git contient seulement des messages comme « Update », « Better Version » ou « Cleanup », ce qui le rend presque impossible à suivre
Elle a indiqué qu’il n’y aurait désormais que des mises à jour occasionnelles et imprévisibles, sans aucun support ni gestion de la communauté
C’est donc encore un projet open source maintenu par une seule personne qui a fini en burnout
Cela ressemblait à un message d’adieu
Reticulum est une pile réseau complète de niveau production, centrée sur le chiffrement et l’anonymat
Ce n’est pas spécifique à LoRa : elle est indépendante de la couche de transport
Mais il y a deux problèmes
Une petite bibliothèque avec une API C serait sans doute préférable
Cela dit, des applis comme Columba s’améliorent peu à peu
Il y a actuellement environ quatre tentatives de versions bas niveau en C++, Zig, Rust, Go, etc.
Parmi elles, l’implémentation Rust de Beechat semble la plus mature, mais il n’existe presque aucun cas d’usage réel
L’« ancienne méthode » consistait à faire confiance à l’icône de cadenas du navigateur, et la « méthode Zen » à vérifier soi-même l’empreinte de hachage
Mais cette approche offre une UX épouvantable
Même moi, en tant que technicien, j’ai eu du mal avec la configuration, alors un utilisateur ordinaire ne l’utilisera jamais
Si on veut vraiment une adoption massive, il faut au final ce cadenas vert
Je suis surpris que personne ne l’ait mentionné, mais il existe un protocole de routage appelé Yggdrasil
Il utilise des adresses basées sur la cryptographie et fonctionne aussi bien sur TCP/IP que sur LoRa
Je m’en sers depuis quelques semaines comme alternative à Tailscale, avec une latence comparable et une stabilité assez bonne
Je me demande quelles sont les différences avec Reticulum
Site officiel de Yggdrasil
En pratique, ce qui m’importe le plus, c’est la garantie de livraison des messages
Reticulum utilise le « Store and Forward » comme mode par défaut
Même si un message n’est pas transmis immédiatement, il le sera plus tard quand une connexion sera disponible
Mais je me demande si le client inclut les métadonnées nécessaires pour les remettre dans le bon ordre lorsque les messages n’arrivent pas séquentiellement
Reticulum a atteint la version 1.0.0 et fonctionne réellement bien
Pour commencer, on peut essayer meshchat ou
Sideband sur Android
Il permet même les photos et le chat vocal sur LoRa, et bascule automatiquement vers un autre mode de transport quand la bande passante manque ou qu’un lien est interrompu
Ce qui me trouble, c’est que la spécification officielle du protocole n’est pas publiée
Pour des puces radio comme LoRa, il faudrait pourtant que cela tourne sur microcontrôleur, et les versions Python ou Rust std ne peuvent pas être utilisées dans cet environnement
En regardant la licence, ce n’est pas un logiciel libre au sens plein
Elle contient des clauses du type « ne pas nuire aux humains » et « interdit d’utiliser l’IA »
Les trois nécessitent une configuration de nœuds maître-esclave avec une structure d’arbre couvrant multiple comme en eBGP
On dirait bien que quelqu’un est fan de Anathem