Torna agli aggiornamenti
New releaseJul 25, 2026

Reticulum v1.3.9

Lo stack di rete basato su crittografia per costruire reti inarrestabili con LoRa, Packet Radio, WiFi e tutto il resto.

Condividi

Reticulum Network Stack

Questo repository è un mirror pubblico. Tutto lo sviluppo avviene altrove.

Per comprendere la filosofia di base e gli obiettivi di questo sistema, leggi lo Zen di Reticulum.

Reticulum è lo stack di rete basato su crittografia per costruire reti locali e geografiche con hardware facilmente reperibile. Può operare anche con latenza molto elevata e larghezza di banda estremamente ridotta. Reticulum ti permette di costruire reti geografiche con strumenti standard, e offre crittografia end-to-end e connettività, anonimato dell'iniziatore, trasporto multi-hop autoconfigurante con supporto crittografico, indirizzamento efficiente, conferme di consegna infalsificabili e altro ancora.

La visione di Reticulum è permettere a chiunque di essere il proprio operatore di rete, e rendere economico e semplice coprire vaste aree con una miriade di reti indipendenti, interconnesse e autonome. Reticulum non è una rete. È uno strumento per costruire migliaia di reti. Reti senza interruttori di spegnimento, sorveglianza, censura e controllo. Reti che possono interoperare liberamente, associarsi e dissociarsi le une dalle altre, e che non richiedono supervisione centrale. Reti per gli esseri umani. Reti per le persone.

Reticulum è uno stack di rete completo e non si basa su IP o livelli superiori, ma è possibile utilizzare IP come vettore sottostante per Reticulum.

Non avere dipendenze da stack di rete tradizionali libera overhead che è stato utilizzato per implementare uno stack di rete costruito direttamente su principi crittografici, consentendo resilienza e funzionalità stabile, anche in reti aperte e senza fiducia.

Non sono richiesti moduli del kernel o driver. Reticulum funziona completamente in spazio utente, e può funzionare su praticamente qualsiasi sistema che esegua Python 3.

Leggi il Manuale

La documentazione completa per Reticulum è disponibile su markqvist.github.io/Reticulum/manual/.

Puoi anche scaricare il manuale di Reticulum in formato PDF o come e-book in formato EPUB.

Per maggiori informazioni, visita reticulum.network e la sezione FAQ del wiki.

Caratteristiche Notevoli

  • Indirizzamento e identificazione globalmente unici senza coordinamento
  • Routing multi-hop completamente autoconfigurante su supporti eterogenei
  • Scalabilità flessibile su topologie eterogenee
    • Reticulum può trasportare dati su qualsiasi miscela di mezzi fisici e topologie
    • Reti a bassa larghezza di banda possono coesistere e interoperare con reti grandi e ad alta larghezza di banda
  • Anonimato dell'iniziatore, comunica senza rivelare la tua identità
    • Reticulum non include indirizzi sorgente su nessun pacchetto
  • Crittografia asimmetrica X25519 e firme Ed25519 come base per tutte le comunicazioni
    • Le chiavi di identità fondamentali di Reticulum sono set di chiavi a curva ellittica a 512 bit
  • La segretezza in avanti è disponibile per tutti i tipi di comunicazione, sia per singoli pacchetti che su collegamenti
  • Reticulum utilizza il seguente formato per i token crittografati:
    • Chiavi effimere per pacchetto e per collegamento derivate da uno scambio di chiavi ECDH su Curve25519
    • AES-256 in modalità CBC con padding PKCS7
    • HMAC utilizzando SHA256 per l'autenticazione
    • Gli IV vengono generati tramite os.urandom()
  • Conferme di consegna dei pacchetti infalsificabili
  • Sistema di interfacce flessibile ed estensibile
    • Reticulum include una vasta varietà di tipi di interfaccia integrati
    • Capacità di caricare e utilizzare tipi di interfaccia personalizzati forniti dall'utente o dalla comunità
    • Creare facilmente le tue interfacce personalizzate per comunicare su qualsiasi cosa
  • Autenticazione e segmentazione di rete virtuale su tutti i tipi di interfaccia supportati
  • Un'API intuitiva e facile da usare
    • Più semplice e facile da usare rispetto alle API socket, ma più potente
    • Rende molto più semplice la costruzione di applicazioni distribuite e decentralizzate
  • Trasferimento affidabile ed efficiente di quantità arbitrarie di dati
    • Reticulum può gestire pochi byte di dati o file di molti gigabyte
    • Sequenziamento, compressione, coordinamento del trasferimento e checksum sono automatici
    • L'API è molto facile da usare e fornisce progresso del trasferimento
  • Meccanismo Richiesta/Risposta leggero, flessibile ed espandibile
  • Stabilimento efficiente dei collegamenti
    • Il costo totale per impostare un collegamento crittografato e verificato è di soli 3 pacchetti, per un totale di 297 byte
    • Basso costo per mantenere i collegamenti aperti a soli 0,44 bit al secondo
  • Consegna sequenziale affidabile con meccanismi di Canale e Buffer

Implementazione di Riferimento

Il codice Python in questo repository è l'implementazione di riferimento di Reticulum. Il protocollo Reticulum è definito completamente e autorevolmente da questa implementazione di riferimento e dal suo manuale associato. È mantenuto da Mark Qvist, identificato dall'identità Reticulum <bc7291552be7a58f361522990465165c>.

Non esistono attualmente, né esisteranno mai, derivati di specifiche di protocollo di secondo ordine. Non puoi ottenere una specifica migliore di una che sia eseguibile, funzionale, testabile, distribuita e operativa 24/7 in tutto il pianeta.

Non esiste, e mai esisterà, una 'specifica formale' derivata separata, 'RFC' o qualcosa di simile per Reticulum:

L'implementazione di riferimento è la specifica finale e autorevole.

La compatibilità con il protocollo Reticulum è definita come piena interoperabilità e parità funzionale sufficiente con questa implementazione di riferimento. Qualsiasi implementazione specifica del protocollo che raggiunge questo obiettivo è Reticulum. Qualsiasi che non lo fa non è Reticulum.

L'implementazione di riferimento è concessa in licenza secondo la licenza Reticulum.

Il protocollo Reticulum è stato dedicato al pubblico dominio nel 2016.

Esempi di Applicazioni di Reticulum

Se vuoi farti rapidamente un'idea di cosa può fare Reticulum, dai un'occhiata alla sezione Programmi che usano Reticulum del manuale, o alle seguenti risorse:

  • LXMF è un protocollo di trasferimento messaggi distribuito e tollerante a ritardi e interruzioni, costruito su Reticulum
  • Il protocollo e framework LXST fornisce trasporto audio e segnali in tempo reale su Reticulum. Include primitive e utilità per costruire applicazioni e dispositivi hardware basati sulla voce, come il programma rnphone, che può essere utilizzato per costruire telefoni hardware.
  • Per una piattaforma di comunicazione mesh fuori rete, crittografata e resiliente, vedi Nomad Network
  • L'app Android, Linux, macOS e Windows Sideband ha un'interfaccia grafica e molte funzionalità avanzate, come trasferimenti di file, messaggi con immagini e voce, chiamate vocali in tempo reale, un sistema di telemetria distribuito, capacità di mappatura e piena estendibilità tramite plugin.
  • MeshChatX è un client LXMF completo con molti strumenti e funzionalità integrate, che supporta anche messaggi con immagini e voce, trasferimenti di file e chiamate vocali. Include anche un browser di pagine integrato per navigare i nodi di Nomad Network.
  • Puoi utilizzare il programma incluso rnsh per stabilire sessioni shell remote su Reticulum.

Dove può essere utilizzato Reticulum?

Su praticamente qualsiasi mezzo che possa supportare almeno un canale half-duplex con una velocità maggiore di 5 bit al secondo e un MTU di 500 byte. Radio dati, modem, radio LoRa, linee seriali, TNC AX.25, modi digitali radioamatoriali, dispositivi WiFi ed Ethernet, collegamenti ottici in spazio libero e sistemi simili sono tutti esempi dei tipi di dispositivi fisici che Reticulum può utilizzare.

Un'interfaccia open-source basata su LoRa chiamata RNode è stata progettata specificamente per l'uso con Reticulum. È possibile costruirla da soli, oppure può essere acquistata come ricetrasmettitore completo che necessita solo di una connessione USB all'host.

Reticulum può anche essere incapsulato su reti IP esistenti, quindi nulla ti impedisce di utilizzarlo su Ethernet cablata, sulla tua rete WiFi locale o su Internet, dove funzionerà altrettanto bene. In effetti, uno dei punti di forza di Reticulum è quanto facilmente ti permette di collegare diversi mezzi in una mesh autoconfigurante, resiliente e crittografata, utilizzando qualsiasi miscela disponibile di infrastruttura disponibile.

Ad esempio, è possibile configurare un Raspberry Pi collegato sia a una radio LoRa, a un TNC per packet radio e a una rete WiFi. Una volta configurate le interfacce, Reticulum si occuperà del resto, e qualsiasi dispositivo sulla rete WiFi potrà comunicare con i nodi sui lati LoRa e packet radio della rete, e viceversa.

Come iniziare?

Il modo migliore per iniziare con lo stack di rete Reticulum dipende da cosa vuoi fare. Per dettagli completi ed esempi, dai un'occhiata alla sezione Getting Started Fast del Manuale di Reticulum.

Per installare semplicemente Reticulum e le utility correlate sul tuo sistema, il modo più semplice è tramite pip. Puoi quindi avviare qualsiasi programma che utilizza Reticulum, o avviare Reticulum come servizio di sistema con l'utility rnsd.```bash pip install rns

Se stai utilizzando un sistema operativo che blocca l'installazione normale di pacchetti utente tramite `pip`,
puoi ripristinare il comportamento normale di `pip` modificando il file `~/.config/pip/pip.conf`,
e aggiungendo la seguente direttiva nella sezione `[global]`:```text
[global]
break-system-packages = true

In alternativa, puoi usare lo strumento pipx per installare Reticulum in un ambiente isolato:```bash pipx install rns

Al primo avvio, Reticulum creerà un file di configurazione predefinito, fornendo connettività di base ad altri peer Reticulum che potrebbero essere raggiungibili localmente. Il file di configurazione predefinito contiene alcuni esempi e riferimenti per creare una configurazione più complessa.

Se hai una vecchia versione di `pip` sul tuo sistema, potresti doverla aggiornare prima con `pip install pip --upgrade`. Se non hai già `pip` installato, puoi installarlo usando il gestore pacchetti del tuo sistema con `sudo apt install python3-pip` o simile.

Per esempi più dettagliati su come espandere la comunicazione su molti mezzi come radio a pacchetto o LoRa, porte seriali, o su collegamenti IP veloci e Internet utilizzando le interfacce UDP e TCP, dai un'occhiata alla sezione [Interfacce Supportate](https://markqvist.github.io/Reticulum/manual/interfaces.html) del [Manuale di Reticulum](https://markqvist.github.io/Reticulum/manual/).

## Utility Incluse
Reticulum include una gamma di utili utilità per gestire le tue reti, visualizzare stato e informazioni, e altre attività. Puoi leggere di più su questi programmi nella sezione [Programmi di Utilità Inclusi](https://markqvist.github.io/Reticulum/manual/using.html#included-utility-programs) del [Manuale di Reticulum](https://markqvist.github.io/Reticulum/manual/).

- Il demone di sistema `rnsd` per eseguire Reticulum come servizio sempre disponibile
- Un'utilità di stato delle interfacce chiamata `rnstatus`, che visualizza informazioni sulle interfacce
- Lo strumento di ricerca e gestione dei percorsi `rnpath` che ti permette di visualizzare e modificare le tabelle dei percorsi
- Uno strumento di diagnostica chiamato `rnprobe` per verificare la connettività verso le destinazioni
- Un semplice programma di trasferimento file chiamato `rncp` che rende facile trasferire file tra sistemi
- L'utilità di gestione delle identità e crittografia `rnid` ti permette di gestire Identità e crittografare/decrittografare file
- Il programma `rnsh` ti permette di stabilire sessioni shell completamente interattive con sistemi remoti
- Il programma di esecuzione remota dei comandi `rnx` ti permette di eseguire semplici comandi e programmi e recuperare output da sistemi remoti
- Il programma `rngit` fornisce un nodo Git multi-repository completo per servire repository su Reticulum
- Il helper incluso `git-remote-rns` ti permette di interagire con i repository Git su Reticulum

Tutti gli strumenti, inclusi `rnx` e `rncp`, funzionano in modo affidabile anche su collegamenti a larghezza di banda molto ridotta come LoRa o Radio a Pacchetto. Per shell remote complete su Reticulum, dai un'occhiata anche al programma [rnsh](https://github.com/acehoss/rnsh).

## Tipi di interfacce e dispositivi supportati

Reticulum implementa una gamma di tipi di interfacce generalizzati che copre la maggior parte dell'hardware di comunicazione su cui Reticulum può funzionare. Se il tuo hardware non è supportato, è [semplice implementare un modulo di interfaccia personalizzato](https://markqvist.github.io/Reticulum/manual/interfaces.html#custom-interfaces).

Le richieste pull per interfacce personalizzate sono accettate con gratitudine, purché siano generalmente utili e ben testate nell'uso reale.

Attualmente, sono supportate le seguenti interfacce integrate:

- Qualsiasi dispositivo Ethernet
- LoRa usando [RNode](https://unsigned.io/rnode/)
- TNC radio a pacchetto (con o senza AX.25)
- Modem hardware e software compatibili KISS
- Qualsiasi dispositivo con porta seriale
- TCP su reti IP
- UDP su reti IP
- Programmi esterni tramite stdio o pipe
- Hardware personalizzato tramite stdio o pipe

## Prestazioni
Reticulum punta a un inviluppo di prestazioni *molto* ampio, ma dà priorità alla funzionalità e alle prestazioni su mezzi a bassa larghezza di banda. L'obiettivo è fornire un inviluppo di prestazioni dinamico da 250 bit al secondo a 1 gigabit al secondo su hardware normale.

Attualmente, l'inviluppo di prestazioni utilizzabile è di circa 150 bit al secondo fino a 500 megabit al secondo, con mezzi fisici più veloci che non vengono saturati. Prestazioni oltre il livello attuale sono previste per aggiornamenti futuri, ma non sono altamente prioritarie al momento.

## Stato attuale
Tutte le funzionalità principali del protocollo sono implementate e funzionanti, ma probabilmente verranno aggiunte man mano che l'uso reale verrà esplorato e compreso. L'API e il formato di trasmissione possono essere considerati stabili.

## Dipendenze
L'installazione del pacchetto predefinito `rns` richiede solo due dipendenze esterne, elencate di seguito. Quasi tutti i sistemi e le distribuzioni hanno pacchetti prontamente disponibili per queste dipendenze, e quando il pacchetto `rns` viene installato con `pip`, verranno scaricate e installate anch'esse.

- [PyCA/cryptography](https://github.com/pyca/cryptography)
- [pyserial](https://github.com/pyserial/pyserial)

Su sistemi più insoliti e in alcuni rari casi, potrebbe non essere possibile installare o persino compilare uno o più dei moduli sopra elencati. In tali situazioni, puoi utilizzare invece il pacchetto `rnspure`, che non richiede dipendenze esterne per l'installazione. Si prega di notare che i contenuti dei pacchetti `rns` e `rnspure` sono *identici*. L'unica differenza è che il pacchetto `rnspure` non elenca dipendenze richieste per l'installazione.

Non importa come Reticulum viene installato e avviato, caricherà le dipendenze esterne solo se sono *necessarie* e *disponibili*. Se ad esempio vuoi usare Reticulum su un sistema che non supporta [pyserial](https://github.com/pyserial/pyserial), è perfettamente possibile farlo usando il pacchetto `rnspure`, ma Reticulum non sarà in grado di utilizzare interfacce basate su seriale. Tutti gli altri moduli disponibili verranno comunque caricati quando necessario.

**Per favore nota!** Se usi il pacchetto `rnspure` per eseguire Reticulum su sistemi che non supportano [PyCA/cryptography](https://github.com/pyca/cryptography), è importante che tu legga e comprenda la sezione [Primitive Crittografiche](#cryptographic-primitives) di questo documento.

## Bootstrap della Connettività

Reticulum non è un servizio a cui ci si abbona, né è una singola rete globale a cui ci si "unisce". Reticulum fornisce funzionalità per scoprire interfacce pubbliche disponibili sulla rete stessa, e la comunità più ampia ha fornito vari elenchi di punti di accesso pubblicamente disponibili per avviare la connettività.

Per imparare come stabilire la connettività iniziale su Reticulum, leggi la sezione [Bootstrap della Connettività](https://reticulum.network/manual/gettingstartedfast.html#bootstrapping-connectivity) del manuale.

Se hai già un'idea generale di come funziona, puoi utilizzare siti gestiti dalla comunità come [directory.rns.recipes](https://directory.rns.recipes/) e [rmap.world](https://rmap.world) per trovare definizioni di interfaccia per la connettività iniziale al backbone distribuito globale di Reticulum.

## Testnet Pubblico
***Importante!** Storicamente, una testnet per sviluppatori è stata resa disponibile dal progetto Reticulum stesso. Poiché la quantità di nodi Reticulum globali e punti di ingresso è cresciuta in modo significativo, questa testnet pubblica, incluso il punto di ingresso Amsterdam Testnet, è stata ora dismessa. Se hai ancora istanze che si basavano su questo punto di ingresso per la connettività, passa invece all'uso del backbone distribuito. Reticulum ora include un sistema completo di scoperta delle interfacce e bootstrap della connettività sulla rete. Leggi la sezione [Bootstrap della Connettività](https://reticulum.network/manual/gettingstartedfast.html#bootstrapping-connectivity) del manuale per indicazioni.*

## Supporta Reticulum
Affinché ciò sia possibile, ho bisogno del tuo aiuto. Per favore supporta lo sviluppo continuo di sistemi di comunicazione aperti, liberi e privati donando tramite uno dei seguenti canali:

- Monero:  ```
  84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w
  • Bitcoin ``` bc1pgqgu8h8xvj4jtafslq396v7ju7hkgymyrzyqft4llfslz5vp99psqfk3a6
  • Ethereum ``` 0x91C421DdfB8a30a49A71d63447ddb54cEBe3465E

Liberapay: https://liberapay.com/Reticulum/

Ko-Fi: https://ko-fi.com/markqvist

Primitive Crittografiche

Reticulum utilizza una semplice suite di primitive crittografiche efficienti, robuste e ben testate, con implementazioni ampiamente disponibili che possono essere utilizzate sia su CPU generiche sia su microcontrollori.

Una delle considerazioni principali per la scelta di questo particolare insieme di primitive è che possono essere implementate in modo sicuro con relativamente pochi ostacoli, su praticamente tutte le piattaforme informatiche attuali.

Le primitive elencate qui sono autorevoli. Qualsiasi cosa che si definisca Reticulum, ma che non utilizzi queste esatte primitive non è Reticulum, e probabilmente è un clone deliberatamente compromesso o indebolito. Le primitive utilizzate sono:

  • Le chiavi di identità di Reticulum sono keyset Curve25519 da 512 bit
    • Una chiave Ed25519 da 256 bit per le firme
    • Una chiave X22519 da 256 bit per gli scambi di chiavi ECDH
  • HKDF per la derivazione delle chiavi
  • I token crittografati si basano sulla specifica Fernet
    • Chiavi effimere derivate da uno scambio di chiavi ECDH su Curve25519
    • HMAC utilizzando SHA256 per l'autenticazione dei messaggi
    • Gli IV devono essere generati tramite os.urandom() o meglio
    • AES-256 in modalità CBC con padding PKCS7
    • Nessun campo di metadati di versione e timestamp di Fernet
  • SHA-256
  • SHA-512

Nella configurazione di installazione predefinita, le primitive X25519, Ed25519 e AES-256-CBC sono fornite da OpenSSL (tramite il pacchetto PyCA/cryptography). Le funzioni di hashing SHA-256 e SHA-512 sono fornite dal modulo standard Python hashlib. Le primitive HKDF, HMAC, Token e la funzione di padding PKCS7 sono sempre fornite dalle seguenti implementazioni interne:

Reticulum include anche un'implementazione completa di tutte le primitive necessarie in Python puro. Se OpenSSL e PyCA non sono disponibili sul sistema all'avvio di Reticulum, Reticulum utilizzerà invece le primitive interne in Python puro. Una conseguenza banale di ciò è la performance, con il backend OpenSSL che è molto più veloce. La conseguenza più importante, tuttavia, è la potenziale perdita di sicurezza nell'utilizzo di primitive che non hanno ricevuto la stessa quantità di controllo, test e revisione di quelle di OpenSSL.

Si noti che per impostazione predefinita, l'installazione di Reticulum richiede che anche OpenSSL e PyCA vengano installati automaticamente se non già disponibili. È possibile utilizzare le primitive in Python puro solo se questo requisito viene specificamente ignorato dall'utente, ad esempio installando il pacchetto rnspure invece del normale pacchetto rns, o eseguendo direttamente dal codice sorgente locale.

Se desideri utilizzare le primitive interne in Python puro, è altamente consigliabile che tu abbia una buona comprensione dei rischi che ciò comporta e prenda una decisione informata sull'accettabilità di tali rischi.

Reticulum è un software relativamente giovane e va considerato come tale. Sebbene sia stato costruito con le migliori pratiche crittografiche in primo piano, non è stato sottoposto a un audit di sicurezza esterno e potrebbero esserci bug che compromettono la privacy o la sicurezza. Se desideri aiutare o sponsorizzare un audit, contattaci.

Riconoscimenti e Crediti

Reticulum può esistere solo grazie alla montagna di lavoro Open Source su cui è stato costruito, ai contributi di tutti i coinvolti e a tutti coloro che hanno supportato il progetto nel corso degli anni. A tutti coloro che hanno aiutato, grazie infinite.

Numerosi altri moduli e progetti fanno parte di Reticulum o vengono da esso utilizzati. Un sentito ringraziamento agli autori e ai contributori dei seguenti progetti:

Categorie