Canali e Messaggi in MeshCore
MeshCore offre quattro modalità di comunicazione distinte, ognuna con un livello di privacy e un comportamento di propagazione diverso. Capire le differenze è utile sia per usare la rete nel modo corretto sia per non condividere per errore informazioni che si ritengono private.
Il Canale Public
Il canale Public è il punto di incontro della rete: è attivo su ogni dispositivo fin dal primo avvio e non richiede alcuna configurazione. Quando invii un messaggio qui, lo ricevono tutti i nodi e tutti i ripetitori raggiungibili.
I messaggi vengono propagati tramite flood routing : ogni Repeater che riceve il pacchetto lo ritrasmette ai propri vicini, finché il segnale si esaurisce o si raggiunge il limite di hop .
Una cosa importante da sapere: il canale Public usa una cifratura AES-128, ma la chiave è nota pubblicamente e documentata nella specifica ufficiale del protocollo. Chiunque abbia un dispositivo MeshCore, o anche solo gli strumenti di analisi della community, può leggere i messaggi. Trattalo quindi come un posto aperto: va benissimo per saluti, coordinamento e messaggi comunitari, ma non è adatto a comunicazioni riservate.
Canali con # (Hashtag)
I canali che iniziano con il simbolo # sono canali tematici di gruppo: #sardegna, #italia, #test, #escursionismo e così via. Chiunque digiti lo stesso nome, su qualsiasi dispositivo, si ritrova automaticamente sullo stesso canale senza bisogno di scambiare chiavi.
Questo funziona perché la chiave di cifratura viene derivata matematicamente dal nome del canale: se due persone inseriscono #sardegna, i loro dispositivi calcolano la stessa chiave e si capiscono. Il nome è la password.
La conseguenza diretta è che i canali # non sono privati: chiunque conosca il nome può entrare e leggere tutti i messaggi. È una scelta progettuale intenzionale, utile per creare spazi di incontro comunitari senza richiedere uno scambio di chiavi preventivo.
I canali # sono ideali per:
- Coordinamento tra gruppi di escursionisti (es.
#gruppo-trekking) - Canali regionali della community (es.
#sardegna,#cagliari) - Canali di test durante l'installazione di un nuovo nodo
Canali Privati
Un canale privato ha un nome senza il prefisso # e usa una chiave generata casualmente al momento della creazione. Questa chiave non è derivabile dal nome: solo chi la riceve esplicitamente può entrare nel canale.
Per condividere un canale privato con altri si usa il QR code generato dall'app: l'altra persona scansiona il codice e il dispositivo importa automaticamente la chiave corretta.
I canali privati sono adatti a gruppi chiusi di persone di fiducia. La cifratura è solida (AES-128 con chiave casuale) e non è vulnerabile agli attacchi basati sul nome, a differenza dei canali #. Il limite è che la chiave simmetrica è condivisa tra tutti i membri del gruppo: se un partecipante la diffonde, tutti i messaggi del canale sono potenzialmente leggibili da esterni.
Ogni dispositivo può avere un massimo di 8 canali attivi contemporaneamente: il canale Public (posizione 0) più 7 canali aggiuntivi tra hashtag e privati.
Messaggi Diretti
I messaggi diretti sono la forma di comunicazione più sicura di MeshCore. Vengono inviati a una singola persona e cifrati con una chiave derivata dalla coppia di chiavi dei due interlocutori: nemmeno i ripetitori che instradano il messaggio possono leggerlo.
La cifratura si basa su crittografia asimmetrica (ECDH): ogni dispositivo ha una coppia di chiavi univoca, e il segreto condiviso per cifrare la conversazione viene calcolato indipendentemente da entrambe le parti a partire dalle proprie chiavi private. Non esiste una chiave comune da condividere o che possa essere intercettata.
Per poter inviare un messaggio diretto a qualcuno è necessario avere la sua chiave pubblica nella propria lista contatti. Ci sono due modi per ottenerla:
Tramite Advert : il destinatario invia un annuncio sulla rete ( Advert ) che include il suo nome e la sua chiave pubblica. Chi lo riceve può aggiungerlo ai contatti con un tocco. Questo metodo funziona a distanza ma il nome pubblico è visibile a tutta la rete locale.
Tramite QR code (il più sicuro): i due si scambiano il codice di contatto di persona o tramite un canale sicuro. Nessuna informazione transita sulla rete radio.
Per inviare un messaggio diretto dall'app, apri la sezione Contatti, seleziona la persona e scrivi il messaggio.
Ambito Regione
L'ambito regione è una funzione di MeshCore (introdotta con il firmware v1.10.0, con auto-discovery aggiunto nella v1.12.0) che permette di limitare geograficamente la propagazione di un messaggio. Invece di inondare l'intera rete raggiungibile, il messaggio viene instradato solo attraverso i ripetitori che appartengono alla regione specificata.
Nella pratica funziona così: ogni ripetitore viene configurato con uno o più codici regione (es. it per l'Italia, it-sar per la Sardegna). Un messaggio con ambito it-sar viene inoltrato solo dai ripetitori con quel codice; gli altri lo scartano. I ripetitori senza un codice configurato si comportano come jolly e inoltrano tutto, come avviene di default.
I codici seguono alcune regole tecniche del protocollo: lunghezza massima di 29 caratteri, solo lettere minuscole, cifre e trattino, distinzione maiuscole/minuscole. Per convenzione si usano codici ispirati al formato ISO 3166-2: it per l'Italia, it-sar per la Sardegna. Sono accordi tra chi gestisce i
Repeater
e gli utenti, non standard imposti dal
firmware
.
Come impostarlo dall'app: dalla v1.38 dell'app MeshCore è possibile definire l'ambito regione direttamente dallo smartphone. Tocca il titolo del canale, seleziona "Set Region Scope" e aggiungi il codice desiderato con il pulsante "+". Per tornare alla propagazione normale seleziona "None".
Configurazione lato ripetitore: gli operatori dei ripetitori configurano i codici tramite la CLI con i comandi region put, region allowf e region save. Su LoRaSardegna i codici in uso e lo stato della configurazione sono discussi nel canale della community.
it o it-sar iniziano a volte con # nell'interfaccia dell'app, ma non hanno nulla a che vedere con i canali #hashtag: sono due sistemi completamente distinti.L'ambito regione è utile per ridurre il traffico inutile su reti grandi: un messaggio destinato a chi si trova in Sardegna non ha motivo di propagarsi fino ai ripetitori del Nord Italia. È anche utile per creare reti locali semi-indipendenti che condividono la stessa infrastruttura fisica ma non si sovrappongono nel traffico.
Riepilogo
| Modalità | Chi può leggere | Cifratura | Configurazione richiesta |
|---|---|---|---|
| Public | Tutti | AES-128 (chiave pubblica) | Nessuna |
Canale #nome |
Chiunque conosca il nome | AES-128 (chiave derivata dal nome) | Inserire lo stesso nome |
| Canale privato | Chi ha ricevuto la chiave | AES-128 (chiave casuale) | Scambio QR code |
| Messaggio diretto | Solo i due interlocutori | AES-128-CBC + ECDH asimmetrico | Scambio contatti |
| Ambito regione | Nessuno (controlla la propagazione, non la lettura) | Nessuna | Configurazione ripetitori (CLI) + app v1.38+ |
Per Approfondire
- Come Iniziare: primo setup e invio del primo messaggio
- Modalità Off-Grid: come usare il Companion come ripetitore temporaneo
- FAQ: domande frequenti su MeshCore