Microclub

Reticulum… Le réseau mesh chiffré qui n’a besoin de rien

RETICULUM

Un réseau chiffré de bout en bout, indépendant du support et de toute infrastructure

Topo technique : principes, architecture, outils et cas d’usage

Octobre 2026 Jean-Pierre Broillet Microclub

Vous avez aimé, vous aimez Meshtastic. alors cous aimerez peut-être RETICULUM…

Sommaire

Sommaire 2

1. En bref 3

2. Philosophie et principes de conception 3

2.1 Aucune infrastructure requise 3

2.2 Chiffrement obligatoire et identités auto-générées 3

2.3 Pas d’adresse source 4

2.4 Fonctionner sur des liens très lents 4

2.5 Indépendance vis-à-vis du support 4

3. Architecture technique 4

3.1 Destinations et adressage 4

3.2 Annonces et découverte de chemins 4

3.3 Nœuds de transport 5

3.4 Liens et ressources 5

3.5 Cryptographie 5

4. Interfaces et supports physiques 6

4.1 Les RNodes 6

4.2 Modes d’interface 6

5. Les outils en ligne de commande 6

6. L’écosystème applicatif 7

6.1 LXMF : la messagerie 7

6.2 LXST : la voix en temps réel 7

6.3 Les applications utilisateur 7

6.4 Implémentations alternatives 8

7. Démarrer en pratique 8

7.1 Installation 8

7.2 Exemple de configuration 8

7.3 Premiers usages 8

8. Comparaison avec d’autres approches 9

9. Limites et points de vigilance 9

10. Cas d’usage typiques 10

11. Pour aller plus loin 10

1. En bref

Reticulum (souvent abrégé RNS, pour « Reticulum Network Stack ») est une pile réseau complète, conçue pour construire des réseaux maillés résilients et chiffrés au-dessus de n’importe quel support physique capable de transporter quelques octets : une radio LoRa, un lien WiFi, un câble Ethernet, une liaison série, un modem de radio amateur ou même un tunnel à travers Internet. Elle ne remplace pas une application, elle remplace la couche réseau : là où l’on utiliserait habituellement IP, TCP et TLS, Reticulum fournit l’adressage, le routage, le chiffrement et le transport fiable en un seul ensemble cohérent.

Le projet est créé et maintenu par Mark Qvist. L’implémentation de référence est écrite en Python et s’installe en une commande (pip install rns). Après une longue phase bêta, la version 1.0.0 est sortie en juillet 2025, suivie de versions de maintenance de la série 1.x qui ont notamment ajouté la prise en charge des RNodes LoRa haute puissance et la connexion des RNodes en WiFi ou Ethernet.

L’idée centrale

Reticulum part du principe qu’on ne peut pas compter sur une infrastructure centralisée (opérateurs, DNS, autorités de certification, adresses IP attribuées). Chaque participant génère lui-même son identité cryptographique, et le réseau s’organise sans coordination, même sur des liens extrêmement lents et intermittents.

Ce que Reticulum rend possible, concrètement :

  • de la messagerie asynchrone avec stockage et retransmission (protocole LXMF) ;
  • des transferts de fichiers de taille arbitraire, avec compression, découpage et vérification d’intégrité ;
  • des appels vocaux en temps réel (protocole LXST) ;
  • du shell distant et de l’exécution de commandes à distance (rnsh, rnx) ;
  • des « sites » et forums consultables hors Internet (Nomad Network) ;
  • de la télémétrie et du partage de position (Sideband).

2. Philosophie et principes de conception

2.1 Aucune infrastructure requise

Il n’existe pas de « réseau Reticulum » unique au sens où il existe un Internet unique. Reticulum est un protocole : n’importe qui peut monter son propre réseau, isolé ou interconnecté avec d’autres. Deux ordinateurs portables reliés par un câble, trois radios LoRa dans une vallée ou une communauté de nœuds connectés par TCP à travers le monde sont tous des réseaux Reticulum valides, et ils peuvent fusionner dès qu’un lien les relie.

2.2 Chiffrement obligatoire et identités auto-générées

Tout trafic vers une destination est chiffré par défaut ; il n’y a pas de mode « en clair » pour les communications privées. Chaque entité possède une identité composée de deux paires de clés sur courbes elliptiques : une clé X25519 pour l’échange de clés (chiffrement) et une clé Ed25519 pour les signatures, soit un ensemble de 512 bits. Aucune autorité ne délivre ces identités : chacun les génère localement.

2.3 Pas d’adresse source

Les paquets Reticulum ne contiennent pas d’adresse source. Un observateur qui capte un paquet peut voir vers quelle destination il va, mais pas qui l’a émis. C’est une propriété forte pour la vie privée, très différente d’IP où l’adresse d’origine figure dans chaque en-tête.

2.4 Fonctionner sur des liens très lents

Reticulum est conçu pour rester utilisable avec des débits extrêmement faibles (de l’ordre de quelques centaines de bits par seconde, voire moins) et des latences élevées. La MTU par défaut est de 500 octets, l’établissement d’un lien chiffré ne demande que trois paquets (quelques centaines d’octets au total), et le maintien d’un lien ouvert ne coûte qu’une fraction de bit par seconde. C’est ce qui rend la pile pertinente sur LoRa ou sur radio HF, là où TCP/IP serait inutilisable.

2.5 Indépendance vis-à-vis du support

Les applications ne savent pas, et n’ont pas besoin de savoir, par quel support passent leurs données. Un message peut quitter un téléphone en Bluetooth, traverser un lien LoRa de plusieurs kilomètres, passer par Internet en TCP puis finir sur un réseau local en WiFi, sans que l’application n’ait à s’en soucier.

3. Architecture technique

3.1 Destinations et adressage

Dans Reticulum, on ne s’adresse pas à une machine mais à une destination : un point de terminaison identifié par un hachage tronqué de 128 bits (16 octets), dérivé de l’identité et d’un nom d’aspect (par exemple lxmf.delivery pour une boîte de réception de messagerie). Un même appareil peut exposer plusieurs destinations, et une destination peut changer d’appareil ou de réseau physique tout en gardant la même adresse : l’adresse est liée à la clé, pas à la topologie.

Il existe plusieurs types de destinations : single (chiffrée vers une identité unique, le cas courant), group (clé symétrique partagée), plain (non chiffrée, pour la diffusion publique) et link (canal établi entre deux pairs).

3.2 Annonces et découverte de chemins

Pour être joignable, une destination émet une annonce : un paquet signé contenant sa clé publique et éventuellement des données applicatives. Les nœuds de transport propagent ces annonces et mémorisent, pour chaque destination, par quelle interface et quel voisin elle est atteignable. Personne ne connaît la topologie complète : chaque nœud sait seulement quel est le prochain saut. La propagation des annonces est plafonnée (par défaut à environ 2 % de la bande passante d’une interface) pour éviter qu’elles ne saturent les liens lents.

Si un nœud ne connaît pas encore de chemin vers une destination, il peut émettre une requête de chemin ; un nœud qui connaît la réponse renvoie l’annonce correspondante.

3.3 Nœuds de transport

Tous les nœuds ne routent pas. Par défaut, une instance Reticulum est un simple point d’extrémité. Une instance configurée avec enable_transport = Yes devient un nœud de transport : elle relaie les paquets et les annonces pour les autres. On active typiquement ce mode sur des machines fixes et bien connectées (un Raspberry Pi avec une RNode sur un toit, un serveur passerelle entre LoRa et Internet), pas sur un téléphone mobile.

3.4 Liens et ressources

Un link est un canal virtuel chiffré et vérifié entre deux destinations, établi par un échange Diffie-Hellman éphémère : chaque lien a ses propres clés, ce qui assure la confidentialité persistante (forward secrecy). Une fois le lien ouvert, on peut y envoyer des paquets, faire des requêtes de type requête/réponse, ou transférer des ressources.

Une ressource est un bloc de données de taille quelconque (fichier, image, page) que Reticulum se charge de compresser, découper, séquencer, acheminer, réassembler et vérifier. C’est la brique sur laquelle reposent les transferts de fichiers.

3.5 Cryptographie

Fonction Mécanisme
Échange de clés ECDH sur Curve25519 (X25519), clés éphémères par lien
Signature Ed25519
Chiffrement symétrique AES-256 en mode CBC avec padding PKCS7 (AES-256 par défaut depuis la 0.9.6 ; les modes AES-128 historiques ont été retirés en 1.0.0)
Authentification des messages HMAC-SHA256 (format de jeton inspiré de Fernet)
Dérivation de clés HKDF
Hachage / adressage SHA-256, tronqué à 128 bits pour les adresses
Paquets isolés Ratchets : rotation périodique de clés pour apporter de la forward secrecy même hors lien établi

Ces primitives sont classiques et éprouvées ; l’originalité de Reticulum tient à leur assemblage et à leur sobriété en octets, pas à de la cryptographie nouvelle. À notre connaissance, le protocole n’a pas fait l’objet d’un audit de sécurité indépendant publié, ce qui est un point à garder en tête pour des usages sensibles.

4. Interfaces et supports physiques

Reticulum se branche sur les supports via des interfaces, déclarées dans le fichier de configuration ~/.reticulum/config. Une même instance peut utiliser plusieurs interfaces simultanément et router entre elles.

Interface Usage
AutoInterface Découverte automatique des pairs sur le réseau local (WiFi, Ethernet) via multicast IPv6, sans configuration
TCPClient / TCPServer Relier des instances à travers Internet ou un réseau IP existant, ou rejoindre un nœud public
UDPInterface Diffusion sur un segment IP
I2PInterface Transport anonyme à travers le réseau I2P
RNodeInterface Radio LoRa via une RNode (matériel ouvert, connecté en USB, Bluetooth, et désormais WiFi ou Ethernet)
RNodeMultiInterface RNode à plusieurs radios / sous-interfaces
SerialInterface Liaison série brute (modems, câbles, radios data)
KISSInterface / AX25KISS Modems et TNC de radio amateur (packet radio)
PipeInterface N’importe quel programme externe via stdin/stdout : permet d’inventer ses propres transports
BLE (Android) Bluetooth Low Energy, notamment pour relier un téléphone à une RNode

4.1 Les RNodes

Une RNode est un émetteur-récepteur LoRa générique, ouvert, qui fonctionne avec un micrologiciel dédié. On peut en fabriquer une à partir de cartes de développement courantes et bon marché (familles LilyGO T-Beam, T3S3, Heltec, etc.) en flashant le firmware avec l’utilitaire rnodeconf. LoRa offre des portées de plusieurs kilomètres en terrain dégagé (bien davantage avec des antennes en hauteur) au prix de débits faibles, de quelques centaines de bits à quelques dizaines de kilobits par seconde selon les paramètres.

4.2 Modes d’interface

Chaque interface peut recevoir un mode qui influence la façon dont les annonces et les chemins sont gérés : full (par défaut), gateway (une passerelle qui résout les chemins pour ses clients), access_point (point d’accès pour clients mobiles, avec des chemins à durée de vie courte), roaming (interface physiquement mobile) et boundary (frontière entre deux segments de réseau très différents, par exemple entre Internet et un réseau LoRa local).

5. Les outils en ligne de commande

Le paquet rns fournit un ensemble d’utilitaires qui couvrent l’administration du réseau et plusieurs usages directs :

Outil Rôle
rnsd Démon Reticulum, à lancer comme service système ; les applications locales se partagent cette instance
rnstatus État des interfaces, trafic, voisins
rnpath Consulter et demander des chemins vers des destinations
rnprobe Tester l’accessibilité d’une destination (l’équivalent d’un ping)
rncp Copier des fichiers vers ou depuis une autre machine
rnx Exécuter des commandes à distance
rnid Gérer les identités ; chiffrer, déchiffrer et signer des fichiers
rnodeconf Flasher, configurer et mettre à jour des RNodes

Le shell distant interactif est fourni par un projet séparé, rnsh, qui offre une session de terminal complète (à la manière de SSH) à travers Reticulum, utilisable même sur un lien LoRa.

6. L’écosystème applicatif

6.1 LXMF : la messagerie

LXMF (Lightweight Extensible Message Format) est le protocole de messagerie de l’écosystème. Il gère la livraison directe quand le destinataire est joignable, et la livraison différée via des « propagation nodes » : des nœuds qui stockent les messages chiffrés et les remettent quand le destinataire réapparaît, à la manière d’un serveur de courrier mais sans pouvoir lire le contenu. LXMF permet même des « messages papier » encodés en QR code ou en lien, transportables physiquement.

6.2 LXST : la voix en temps réel

LXST est le protocole et le framework de transport audio et de signaux en temps réel au-dessus de Reticulum. Il alimente les appels vocaux de Sideband et inclut rnphone, un utilitaire de téléphonie en ligne de commande capable aussi de piloter de vrais combinés téléphoniques matériels. Les codecs utilisés s’adaptent à la bande passante disponible, mais une conversation fluide demande évidemment plus de débit qu’un message texte : sur LoRa, il faut des réglages radio rapides et des liaisons courtes.

6.3 Les applications utilisateur

Application Description
Sideband Client graphique de référence (Android, Linux, macOS, Windows) : messagerie, fichiers, messages vocaux, appels, télémétrie, cartes, plugins
Nomad Network Client en mode terminal : messagerie et pages hébergées sur des nœuds (langage de balisage Micron), une sorte de « web » hors Internet
MeshChat / MeshChatX Client LXMF avec interface web, messages vocaux et fichiers ; MeshChatX est un fork qui vise à tout réunir (Reticulum, LXMF, LXST)
Columba Client Android natif récent, avec messages vocaux et historique d’appels
rnsh Shell distant interactif

6.4 Implémentations alternatives

L’implémentation Python reste la référence, mais plusieurs réimplémentations compatibles au niveau protocole sont apparues, souvent pour gagner en performance ou viser l’embarqué : Reticulum-Go (Go, avec une cible WebAssembly pour le navigateur), des implémentations en Rust (par exemple Leviculum, compatible avec les outils Python et visant aussi les microcontrôleurs nRF), et une pile Kotlin expérimentale utilisée en option par Columba. Leur maturité varie ; pour un premier déploiement, la version Python reste le choix le plus sûr.

7. Démarrer en pratique

7.1 Installation

pip install rns # ou : pipx install rns

rnsd # premier lancement : crée ~/.reticulum/config

rnstatus # vérifier les interfaces actives

Au premier lancement, la configuration par défaut active l’AutoInterface : deux machines sur le même réseau local se trouvent donc automatiquement, sans rien régler.

7.2 Exemple de configuration

Extrait de ~/.reticulum/config combinant le réseau local, un lien Internet vers un nœud distant et une radio LoRa :

[reticulum]

enable_transport = Yes

[interfaces]

[[Reseau local]]

type = AutoInterface

enabled = yes

[[Lien Internet]]

type = TCPClientInterface

enabled = yes

target_host = noeud.exemple.org

target_port = 4242

[[Radio LoRa]]

type = RNodeInterface

enabled = yes

port = /dev/ttyUSB0

frequency = 868000000

bandwidth = 125000

txpower = 14

spreadingfactor = 8

codingrate = 5

7.3 Premiers usages

rnid -g ~/.reticulum/mon_id # générer une identité

rncp -l # écouter pour recevoir des fichiers

rncp rapport.pdf <hash_destination> # envoyer un fichier

rnx <hash_destination> « uptime » # exécuter une commande à distance

rnprobe rnstransport.probe <hash> # tester l’accessibilité

Pour la messagerie, le plus simple est d’installer Sideband ou MeshChat sur deux appareils et d’échanger les adresses LXMF (affichées sous forme de hachage ou de QR code).

8. Comparaison avec d’autres approches

Critère Reticulum Meshtastic Yggdrasil / cjdns
Nature Pile réseau complète, multi-support Messagerie LoRa intégrée au firmware Réseau maillé IPv6 chiffré
Supports Tout (LoRa, IP, série, radio, I2P…) Principalement LoRa (+ MQTT/IP) IP uniquement
Débits très bas Conçu pour Conçu pour Non adapté
Fichiers, voix, shell Oui Très limité Oui (via IP classique)
Identité / adressage Clés, sans adresse source Identifiant de nœud Adresse IPv6 dérivée de clé
Prise en main Moyenne Très simple Moyenne

Meshtastic et Reticulum sont souvent comparés parce qu’ils utilisent le même type de matériel LoRa, mais ils ne jouent pas dans la même catégorie : Meshtastic est un produit de messagerie simple et populaire, Reticulum une fondation réseau généraliste sur laquelle on construit des applications. Les deux ne sont pas interopérables nativement.

9. Limites et points de vigilance

  • Réglementation radio : le chiffrement est interdit sur les bandes radioamateur dans la plupart des pays, ce qui limite l’usage de Reticulum chiffré sur ces fréquences. Sur les bandes ISM LoRa en Europe (863-870 MHz), les règles de rapport cyclique (souvent 1 %, parfois 10 % selon la sous-bande) et de puissance maximale s’appliquent et limitent fortement le trafic utile.
  • Débit : la voix et les gros fichiers fonctionnent bien sur WiFi ou Ethernet, mais sur LoRa il faut rester réaliste. Envoyer une photo peut prendre plusieurs minutes, et une conversation vocale suppose des paramètres radio rapides et des liaisons courtes.
  • Performance de l’implémentation : écrite en Python, la référence est moins performante qu’une pile native sur du matériel modeste ou pour des nœuds à fort trafic, d’où l’intérêt des réimplémentations Go et Rust.
  • Sécurité : primitives solides et conception soignée, mais pas d’audit indépendant publié à notre connaissance, et une base d’utilisateurs encore modeste.
  • Licence : l’implémentation de référence est publiée sous la « Reticulum License », dérivée d’une licence permissive mais avec des restrictions d’usage (par exemple pour les systèmes conçus pour nuire à des personnes). Ce n’est donc pas une licence open source au sens strict de l’OSI ; à vérifier avant tout usage commercial ou institutionnel.
  • Communauté et documentation : la documentation officielle est très complète, mais l’écosystème reste porté par un nombre restreint de contributeurs, avec un rythme de développement qui dépend fortement de son créateur.

10. Cas d’usage typiques

  • Communications de secours lors de catastrophes ou de coupures d’Internet et du réseau mobile.
  • Zones isolées : refuges, exploitations agricoles, expéditions, bateaux, chantiers, où l’on veut relier quelques sites sans abonnement.
  • Résistance à la censure et vie privée : réseaux communautaires indépendants des opérateurs, absence d’adresses source, transport possible via I2P.
  • Télémétrie et IoT : remontée de capteurs sur de longues distances avec des liens très sobres.
  • Administration à distance de machines hors réseau via rnsh ou rnx à travers une liaison radio.
  • Expérimentation pour radioamateurs, hackers et chercheurs en réseaux, grâce à l’interface Pipe qui permet d’inventer de nouveaux transports.

11. Pour aller plus loin

Le manuel officiel (markqvist.github.io/Reticulum/manual) est la référence : il détaille le protocole, la configuration de toutes les interfaces et l’API Python. Le dépôt GitHub markqvist/Reticulum héberge le code, le journal des versions et les discussions de la communauté. Les dépôts markqvist/LXMF, markqvist/LXST, markqvist/Sideband et markqvist/NomadNet couvrent les principales applications, et markqvist/RNode_Firmware le micrologiciel radio.

En résumé

Reticulum est une pile réseau sobre, chiffrée par conception et indifférente au support physique. Sa force est de rendre possibles fichiers, voix, messagerie et shell distant sur des réseaux que l’on peut monter soi-même, sans Internet ni opérateur. Ses limites sont surtout physiques (débit des radios, réglementation) et liées à la jeunesse relative de son écosystème.

Laisser un commentaire