Documentazione
Meshbell è uno strumento di emergenza su scala di quartiere. La verifica è il substrato, non una funzione. Questa pagina dice come, e dove stanno i confini.
Panoramica
In Meshbell un avviso di pericolo è un piccolo documento firmato. È denominato dall'hash dei propri byte, firmato con una chiave del dispositivo, e mai modificato. Una correzione è un nuovo documento che rimanda a quello vecchio, ed è questo che permette a un avviso e alla sua correzione di viaggiare insieme e permette a qualsiasi dispositivo di ricontrollare tutto ciò che riceve.
Il tuo telefono ha due collegamenti, e nessuno dei due ha bisogno di internet
Questo è tutto il modello di connessione, e la scheda Connessione dell'app è il posto dove li vedi entrambi. La terza riga qui sotto non è affatto un collegamento del telefono: è quello che le radio fanno tra loro, un salto più in là.
| Mezzo | Cosa raggiunge | Come si avvia |
|---|---|---|
| Bluetoothdal tuo telefono | Una radio da tasca: un nodo LoRa complementare nella tua borsa. È l'unico modo in cui un telefono va in onda, perché nessun iPhone ha una radio LoRa al suo interno. | Tocchi Connessione. Una scansione consuma batteria e prende un accesso esclusivo alla radio, quindi la avvia una persona, mai l'app. |
| Wi-Fidal tuo telefono | Un ponte di quartiere: una scatola sempre accesa sulla rete locale, che conserva il documento e lo serve a telefoni e browser. | Automaticamente all'avvio. L'app cerca un ponte su qualunque Wi-Fi tu sia, e c'è un campo per l'indirizzo manuale per le reti che bloccano il rilevamento. |
| LoRada radio a radio | La tratta lunga. Due persone preparate con radio da tasca si raggiungono tra gli isolati senza nulla in mezzo; ogni radio in più la ripete più avanti. | Niente sul telefono la avvia. Il tuo telefono non parla mai LoRa, quindi questa tratta comincia nel momento in cui due radio sono sintonizzate sullo stesso canale, che a una delle due sia collegato un telefono o no. |
Tutta la catena, da un capo all'altro: il tuo telefono via Bluetooth alla radio da tasca nella tua borsa, quella radio via LoRa tra gli isolati fino a un'altra radio, quella radio dentro un ponte, e il ponte via Wi-Fi a ogni telefono e a ogni browser sulla rete del quartiere.
Entrambi i collegamenti alimentano un solo registro e un solo portachiavi. Un documento che arriva via radio e uno che arriva via Wi-Fi finiscono nello stesso registro e ricevono lo stesso controllo. Spegnere la radio non ferma la ricezione dal ponte, perché sono percorsi separati verso lo stesso posto.
Tutto ciò che sta sopra la rete è costruito perché perdere una connessione, un server o un modello ti costi un'annotazione, mai l'allerta.
Qual è il tuo caso?
Ci sono tre modi per essere pronti, e il resto di questa pagina è scritto per tutti e tre. Trova il tuo, poi leggi prima le sue stazioni.
- Solo un telefono
- Gratuito, e sufficiente per ricevere. Senti quello che può passarti un ponte a portata o una connessione a internet, e niente va in onda finché qualcuno vicino a te non ha una radio. Leggi la panoramica e il funzionamento offline, poi i modi per prepararsi nella pagina iniziale.
- Una coppia di radio
- Circa
$30ciascuna, una nella tua borsa e una in quella di un vicino. È la tratta lunga: voi due vi raggiungete attraverso il quartiere senza rete cellulare, senza internet e senza nulla in mezzo, e ogni radio che chiunque altro aggiunge la ripete più lontano. Leggi radio e hardware e bande radio per regione. - Chi ospita un ponte
- Una scatola sempre accesa,
~$50-80, che trasforma il Wi-Fi del quartiere in un centro di comunicazione a cui può unirsi qualsiasi browser, senza app e senza account. Leggi configurare un ponte, cosa un ponte ha messo in onda e più di un ponte.
Il modello di fiducia
Meshbell tiene separate due domande, perché sono fatti diversi e confonderli è il modo in cui si diffonde l'informazione sbagliata.
| Domanda | Cosa risponde | Cosa può dire |
|---|---|---|
| Di quale documento si tratta, ed è intatto? | L'indirizzo di contenuto e il controllo della firma, eseguiti entrambi sul tuo dispositivo | vincolato · anteprima · alterato |
| Chi lo ha firmato, e posso verificarlo? | Il portachiavi sul tuo dispositivo | verificato · impossibile verificare · falsificato |
Il secondo asse ha deliberatamente tre valori. Una falsificazione, controllata rispetto a una chiave che possiedi e risultata fallita, non è lo stesso fatto di una chiave sconosciuta, con la quale non c'è ancora modo di verificare. Riunirli in una sola parola, «non valido», nasconderebbe esattamente la distinzione di cui una persona ha bisogno. Un messaggio viene conservato come affidabile solo quando il portachiavi dice verificato.
Verificato direttamente in onda, senza nessuna copia precedente
Una breve trama radio è un'anteprima: un puntatore a un documento, mostrato ma mai considerato affidabile e mai usato per inventare un contenuto. Un documento può anche essere inviato per intero come busta auto-autenticante, divisa su più trame e riassemblata dall'altra parte. Un dispositivo che non ha mai visto prima quel documento può allora ricostruirlo, ricalcolare il suo indirizzo di contenuto e controllare la sua firma, arrivando a un verdetto verificato in un quartiere di sola radio, senza nessun internet nel giro.
Le trame arrivano senza autenticazione via LoRa, e i frammenti di un documento diviso non sono firmati in transito. Solo il documento riassemblato viene verificato. Un gruppo incompleto lo dice e resta un'anteprima.
La barriera per le istruzioni
L'unica cosa che un'app di emergenza non deve mai fare è trasformare una diceria in un ordine. Meshbell lo impone nella struttura del codice, non con la disciplina delle revisioni.
- La schermata che mostra un'istruzione, cioè cosa fare, non può essere costruita a partire da un messaggio non verificato. Il sistema dei tipi lo rifiuta.
- Il testo delle indicazioni proviene da un manuale incluso nell'app, con una versione, indicizzato per id. Non proviene mai da testo libero che arriva dalla rete né da un modello linguistico. Un modello può riassumere una situazione, in prosa, etichettata come dedotta. Non ha nessun campo in cui mettere un comando.
- Un'allerta ufficiale ritrasmessa viene mostrata come un vicino che fa da garante, non come ufficiale. Il suo verdetto lo dice a parole: allerta ufficiale ritrasmessa, qui non trattata come ufficiale.
La promessa, in una riga. L'app non trasforma mai una diceria in un'istruzione, e quella frase è una proprietà del codice più che una dichiarazione d'intenti.
Il livello di coordinamento
Le allerte verificate rispondono a cosa sta succedendo e a quanto puoi fidartene. Un quartiere in emergenza ha anche una logistica ordinaria: chi è stato contato, dov'è il rifugio, chi ha un generatore. Meshbell trasporta un secondo livello, deliberatamente separato, per questo lavoro, nativo nella scheda Quartiere dell'app e in un browser per chi non ha l'app.
Questo livello non è verificato per scelta progettuale. Non è indirizzato per contenuto, non è firmato e non fa parte del canale delle allerte. È uno stato condiviso modificabile che i vicini scrivono e correggono, quindi trattalo come un biglietto attaccato a una porta. La barriera per le istruzioni resta valida: qui niente può essere mostrato come un'istruzione ufficiale, e il modello di fiducia qui sopra governa soltanto le allerte.
Cosa contiene
| Superficie | Che cos'è | Forma della privacy |
|---|---|---|
| Appello di sicurezza | Conferma «sono al sicuro» con un tocco. Tutti vedono un conteggio aggregato rispetto a un totale approssimativo di famiglie. | Nessun nome, nessun indirizzo, nessuna posizione e nessun elenco nominativo. Il conteggio viene trattenuto finché non ha confermato un piccolo gruppo di persone, così non si può dedurre una singola famiglia. |
| Liste di risorse | Liste condivise e modificabili: rifugio e riscaldamento, acqua e provviste, corrente e ricarica, e una lista «chi può aiutare» in cui ognuno si iscrive da sé. Gli elementi possono portare un'etichetta di luogo. | Chiunque sia sul ponte può aggiungere o modificare. Solo iscrizione volontaria. Nessuno viene inserito da qualcun altro. |
| Bacheca | Messaggi brevi etichettati con un canale (info, offerta, richiesta, domanda) e filtrati per quanto sono recenti, pubblicati con un nome che scrivi tu. | Il nome che scrivi tu. Nessun account, nessuna identità verificata. |
| Istantanea stampabile | Una pagina /coord/print che rende l'appello, le liste e gli ultimi messaggi in bacheca, per quando le batterie si scaricano. | Lo stesso appello, solo aggregato, quindi si può attaccare senza rischi a una bacheca fisica. |
Perché è tenuto separato
Mescolare note modificabili dei vicini in un registro di allerte firmato e a solo accodamento romperebbe entrambe le cose. Quindi l'archivio di coordinamento è una cosa a sé: solo rete locale, modificabile, e servito dal ponte accanto al flusso verificato invece che al suo interno. Un operatore possiede un token di amministrazione per la manutenzione, per esempio cancellare dati di prova o sfoltire una bacheca fuori controllo, e senza quel token le rotte di amministrazione si chiudono. Pubblicare e confermare non richiedono nessuna credenziale. I due livelli condividono una schermata, mai un confine di fiducia.
Funzionamento offline
Il degrado è lo stato previsto, non un errore. Quando un percorso dati è fuori servizio, Meshbell serve gli ultimi dati validi noti etichettati con la loro età, «aggiornato a 40 minuti fa», invece di un vuoto dall'aria sicura. Il livello senza modelli, un telefono vecchio senza niente di sofisticato sopra, è un livello di prodotto di prima classe. Un'app di emergenza che funziona solo sull'hardware più recente tradisce proprio le persone che ne hanno più bisogno.
La ricezione continua mentre Meshbell è in background, e iOS può riavviare l'app per restituirle una connessione radio dopo che è stata chiusa. Vedi ascolto in background per quello che copre e quello che non copre. Non ha mai ascoltato con il telefono spento, e non dirà mai il contrario.
Radio e hardware
Meshbell funziona anche solo sul tuo telefono. Le radio ne estendono la portata quando la rete è fuori servizio. Una rete mesh di quartiere si costruisce con hardware LoRa economico e già pronto, che esegue il firmware aperto MeshCore.
| Pezzo | Costo | Ruolo |
|---|---|---|
| Una radio LoRa complementare, per esempio un nodo Heltec | ~$30 | Il tuo telefono si abbina a essa via Bluetooth per inviare e ricevere bollettini. Una radio complementare serve un telefono alla volta. Se un altro telefono o un'altra app la tiene occupata, al tuo viene detto chiaramente invece di girare a vuoto. |
| Altre radio in giro per il quartiere | ~$30 ciascuna | Ognuna è un salto, e ognuna ripete un documento una volta sola e poi si ferma, così l'aria resta libera. Tre o più iniziano a offrire una vera portata multi-salto tra gli isolati e oltre i crinali. |
| Un ponte sempre acceso, di solito un Raspberry Pi | ~$50-80 | Conserva un registro duraturo e lo serve sul Wi-Fi locale su port 4190. Userà un collegamento a internet quando ce n'è uno, e non ne ha bisogno. |
Impostazioni radio per gli Stati Uniti. Il banco di prova di riferimento di Meshbell funziona a 910.525 MHz, bw 62.5 kHz, sf7, cr 4/5, all'interno della banda libera da licenza 902-928 MHz, con una busta del collegamento complementare di 172 B. Rileggi sempre la configurazione della tua radio prima di trasmettere. L'impostazione predefinita della regione potrebbe essere una banda che non sei autorizzato a usare.
Bande radio per regione
Il tuo telefono non ha una radio LoRa al suo interno, quindi non tocca mai la banda. È il firmware della radio a possedere quell'impostazione. Meshbell rilegge la sintonia dalla radio quando si connette, la mostra, e dice chiaramente quando la radio non è sul canale che usa la tua regione.
910.525 MHz è la stazione nordamericana. Ogni regione qui sotto ha il proprio canale, collocato dentro la banda libera da licenza che quella regione consente. Dove la comunità MeshCore pubblica un canale consigliato per un paese, Meshbell adotta quel canale e le sue impostazioni esattamente, così i ripetitori MeshCore già presenti lì possono trasportare i bollettini Meshbell. Dove la comunità non ne ha pubblicato nessuno, Meshbell sceglie un canale che sta lontano dalla parte più affollata della banda.
| Regione | Banda | Canale Meshbell | Ciclo di lavoro o ascolto prima di trasmettere |
|---|---|---|---|
| Stati Uniti e Canada | 902-928 MHz | 910.525 MHz | Nessun limite di ciclo di lavoro, quindi un ponte può segnalarsi tutte le volte che serve. Fino a 36 dBm, antenna compresa. È la raccomandazione di MeshCore stessa per gli Stati Uniti e il Canada, quindi i ripetitori MeshCore già presenti qui possono trasportare i bollettini Meshbell. |
| Europa e Regno Unito | 869.4-869.65 MHz | 869.618 MHz · sf8 · cr 4/8 | Ciclo di lavoro del 10%, circa sei minuti di trasmissione all'ora. Fino a 29 dBm. Il Regno Unito applica gli stessi limiti, quindi non ha un'impostazione separata. È la raccomandazione di MeshCore stessa per l'Europa e il Regno Unito, quindi i ripetitori MeshCore già presenti qui possono trasportare i bollettini Meshbell. |
| Repubblica Ceca | 869.4-869.65 MHz | 869.432 MHz | Lo stesso ciclo di lavoro del 10% e lo stesso tetto di 29 dBm dell'Europa, su un canale tutto suo. È la raccomandazione di MeshCore stessa per la Repubblica Ceca, quindi i ripetitori MeshCore già presenti lì possono trasportare i bollettini Meshbell. |
| Paesi Bassi | 869.4-869.65 MHz | 869.618 MHz | Lo stesso ciclo di lavoro del 10% e lo stesso tetto di 29 dBm dell'Europa. È la raccomandazione di MeshCore stessa per i Paesi Bassi, quindi i ripetitori MeshCore già presenti lì possono trasportare i bollettini Meshbell. Condivide la frequenza dell'Europa ma usa i valori predefiniti sf7 e cr 4/5, quindi i due non si sentono tra loro nemmeno sulla stessa frequenza. |
| Portogallo | 869.4-869.65 MHz | 869.618 MHz · cr 4/6 | Lo stesso ciclo di lavoro del 10% e lo stesso tetto di 29 dBm dell'Europa. È la raccomandazione di MeshCore stessa per il Portogallo, quindi i ripetitori MeshCore già presenti lì possono trasportare i bollettini Meshbell. Condivide la frequenza dell'Europa ma usa sf7 e cr 4/6, quindi i due non si sentono tra loro nemmeno sulla stessa frequenza. |
| Australia | 915-928 MHz | 916.575 MHz · cr 4/8 | Nessun limite di ciclo di lavoro. Fino a 30 dBm. Qui la banda parte da 915 MHz, quindi il canale nordamericano non è legale. È la raccomandazione di MeshCore stessa per l'Australia, quindi i ripetitori MeshCore già presenti lì possono trasportare i bollettini Meshbell. |
| Nuova Zelanda | 915-928 MHz | 917.375 MHz | Nessun limite di ciclo di lavoro. Fino a 30 dBm. Anche qui la banda parte da 915 MHz, quindi il canale nordamericano non è legale. È la raccomandazione di MeshCore stessa per la Nuova Zelanda, quindi i ripetitori MeshCore già presenti lì possono trasportare i bollettini Meshbell. |
| Brasile | 915-928 MHz | 923.125 MHz · sf8 · cr 4/8 | Nessun limite di ciclo di lavoro. Fino a 30 dBm. È la raccomandazione di MeshCore stessa per il Brasile, quindi i ripetitori MeshCore già presenti lì possono trasportare i bollettini Meshbell. |
| Asia sudorientale | 920-923 MHz | 921.875 MHz | Ciclo di lavoro del 10%, quello del paese più severo del gruppo. Fino a 17 dBm. Un'unica impostazione raggruppata per Thailandia, Singapore, Malaysia e Indonesia, quindi controlla il tuo paese prima di lasciare un ponte acceso. La comunità non pubblica nessun canale per questi paesi, quindi questo è di Meshbell, scelto lontano dalla parte più affollata della finestra. |
| Vietnam | 920-923 MHz | 920.25 MHz · sf8 | Ciclo di lavoro del 10%. Fino a 17 dBm, e qui le regole cambiano, quindi controlla quelle in vigore prima di lasciare un ponte acceso. È la raccomandazione di MeshCore stessa per il Vietnam, quindi i ripetitori MeshCore già presenti lì possono trasportare i bollettini Meshbell. |
| India | 865-868 MHz | 866.5 MHz | Ciclo di lavoro dell'1%, circa 36 secondi di trasmissione all'ora. Fino a 16 dBm. La radio non riesce a rispettare da sola un limite così stretto, quindi è il ponte a doversi razionare. La comunità non pubblica nessun canale per l'India, quindi questo è di Meshbell, scelto lontano dalla parte più affollata della banda. |
| Corea del Sud | 920.9-923.3 MHz | 921.4 MHz | Nessun limite di ciclo di lavoro, ma la radio deve ascoltare prima di trasmettere. Fino a 23 dBm. |
| Giappone | 920.6-928 MHz | 924.6 MHz · bw 125 kHz | Ciclo di lavoro del 10% e un ascolto prima di ogni trasmissione. Fino a 16 dBm. È la larghezza di banda maggiore a tenere una singola emissione abbastanza breve per le regole giapponesi. |
| Russia | 864-865 MHz | 864.5 MHz | Ciclo di lavoro dello 0.1%, circa 3.6 secondi di trasmissione all'ora, a meno che la radio non ascolti prima di trasmettere. Fino a 16 dBm. |
Se una riga non dice altrimenti, un canale usa sf7, cr 4/5 e bw 62.5 kHz. Una riga che segue un canale MeshCore porta quello che usa quel canale, ed è per questo che diverse mostrano un fattore di spreading o un tasso di codifica diverso, e il Giappone usa bw 125 kHz per rientrare nelle regole giapponesi. Due radio si sentono tra loro solo quando frequenza, larghezza di banda, fattore di spreading e tasso di codifica coincidono tutti.
Le radio esistono in due famiglie, una tagliata per 902-928 MHz e una tagliata per 863-870 MHz, e insieme coprono tutte le regioni di questo elenco, ma la banda cinese 470 MHz richiede un chip radio diverso e un'antenna diversa, quindi non è un'impostazione su cui si possa passare.
Tre regioni non sono pronte. Giappone, Corea del Sud e Russia si aspettano una radio che ascolti prima di trasmettere, e il firmware MeshCore non lo fa ancora, quindi quelle tre restano disattivate finché non lo farà. Una regione porta anche un tetto di potenza, e la potenza è un'impostazione separata sulla radio, quindi cambiare canale non è la stessa cosa che abbassare la potenza. Rileggi sempre la configurazione della tua radio prima di trasmettere.
Configurare un ponte
Un ponte è un nodo sempre acceso nel quartiere, di solito un Raspberry Pi, che trasporta il flusso verificato e il livello di coordinamento sul Wi-Fi locale, così il telefono o il browser di ogni vicino può raggiungerli senza rete cellulare e senza internet. È il secondo dei due collegamenti del telefono: il Bluetooth raggiunge una radio da tasca, il Wi-Fi raggiunge un ponte, ed entrambi funzionano senza nessun internet.
Il Wi-Fi del ponte, così un vicino non ha bisogno di nulla
Con un secondo adattatore Wi-Fi il ponte crea la propria rete aperta, chiamata meshbell- e poi la vostra strada. È un vicolo cieco di proposito: raggiunge il ponte e nient'altro, non la casa, non internet, non gli altri telefoni collegati. Un vicino non ha bisogno di alcuna app e compie quattro passi. Collegarsi al Wi-Fi il cui nome inizia con meshbell-. Una pagina si apre da sola, come la rete di un albergo apre la sua pagina di accesso; toccare Continua. Se il telefono chiede di internet, toccare Usa senza internet, perché questa rete non ne ha, di proposito. Se chiudete quella pagina, aprite un browser e scrivete meshbell.lan. Configurate la rete una volta con sudo ./install-ap.sh --interface wlan1 --ssid meshbell-oak-st.
Se sei tu l'ospite, un vicino preparato
Il programma di installazione è incluso nell'app e viene esportato direttamente dal tuo telefono, quindi non si scarica niente. Scompattalo sul Pi, esegui lo script di installazione, e ti mostrerà l'indirizzo da distribuire. Il nodo si avvia autosufficiente: serve le schermate di coordinamento, un'app web installabile per i vicini che hanno solo il browser, un codice QR di quell'indirizzo e una vista di amministrazione per la manutenzione. Si annuncia sulla rete locale come _meshbell._tcp, e a trovarlo ci pensa l'app. Non c'è niente da configurare a mano e nessun account da creare.
Se sei un vicino che non ha mai sentito parlare di rete mesh
Collegati al Wi-Fi del tuo quartiere e apri la scheda Quartiere. L'app cerca il ponte da sola e si connette. Quando il rilevamento ha bisogno di una mano, fa le domande semplici, è questa la rete giusta ed è acceso il ponte, e offre un campo per l'indirizzo manuale. Se un computer riesce a raggiungere il ponte ma questo telefono no, quasi sempre i due sono su reti Wi-Fi diverse.
Il ponte consegna, non decide mai. Un ponte può far passare un'allerta verificata, ma non può renderla vera. Le firme vengono controllate sul tuo dispositivo, e in un semplice browser vengono controllate in quel browser. Un ponte compromesso o malevolo può scartare o ritardare i messaggi. Non può mai falsificarne uno affidabile. Ecco perché il modello di fiducia sta sul telefono e non sul nodo.
Ascolto in background
Il telefono mantiene il collegamento radio mentre Meshbell è in background, e iOS può riavviare Meshbell per restituire una connessione all'app dopo che è stata chiusa. Tre cose insieme lo rendono possibile: il sistema conserva la connessione Bluetooth, l'app chiede di essere ripristinata insieme a essa, e ricorda che volevi la radio connessa, così può rifare la stretta di mano che il firmware richiede a ogni nuova connessione.
Il limite, detto chiaramente. iOS può comunque fermare l'app, e una radio complementare serve un telefono alla volta, quindi una radio che un altro telefono sta tenendo non è disponibile per il tuo. L'ascolto in background non sopravvive nemmeno a un telefono spento. Quello che invece cambia è che un bollettino che arriva mentre il telefono è in tasca viene consegnato invece di essere perso.
Cosa un ponte ha messo in onda
Due fatti che è facile confondere in uno solo: la radio ha accettato un messaggio, e il messaggio è davvero partito. Il primo è quello che un telefono sa quando consegna le trame a una radio complementare. Il secondo si misura sui contatori di trasmissione del firmware della radio, e solo un ponte li legge.
Un ponte conserva una ricevuta per tutto ciò che trasmette: cosa è partito, chi l'ha firmato, quale collegamento l'ha trasportato, in quanti pezzi è stato tagliato, il canale, e se i contatori hanno confermato che ha lasciato l'antenna. L'app mostra quelle ricevute nella schermata Cosa è partito quando un ponte è connesso.
Dal lato telefono non esiste nessuna ricevuta, e Meshbell non se la inventa. Quando invii, confermi o contesti una segnalazione dall'app, ti dice che la radio ha preso il tuo messaggio e dichiara chiaramente che non può confermare che sia andato in onda. Un pacchetto diffuso a tutti non ha un destinatario, quindi niente ne conferma la ricezione. Dichiarare la consegna sarebbe la risposta che fa piacere, non quella vera.
Testo semplice da altre radio
Le radio MeshCore trasportano normali messaggi di testo tra persone che non usano Meshbell. Un ponte può sentire quel traffico, e lo tiene rigorosamente separato dal flusso verificato. È contrassegnato come non firmato, che è volutamente una parola diversa da «impossibile verificare chi ha firmato»: un bollettino non verificato è un documento firmato la cui chiave questo dispositivo non possiede, mentre il testo semplice non porta nessuna firma.
I messaggi di canale non portano nessuna chiave del mittente, quindi un nome scritto nel corpo del messaggio non è un'identità, e Meshbell non lo tratta mai come tale. Questo traffico non viene mai archiviato, non compare mai nel flusso verificato, non conta mai come corroborazione di niente e non può mai diventare un'allerta. Il ponte riferisce quanto ne ha sentito, e nient'altro.
Radio che firmano da sé
Una radio MeshCore possiede una propria chiave di firma e il firmware firma con quella. L'operatore di un ponte può registrare una radio, dopo che la radio ha dimostrato di possedere la chiave, e da quel momento quella radio può originare un bollettino firmato senza nessun telefono di mezzo: un pulsante di emergenza accanto alla porta, o un segnalatore che riferisce una condizione.
Un dispositivo firma come dispositivo. Vale come segnale, mai come approvazione, perché una scatola non è una persona e possedere una radio non è la stessa cosa che possedere la chiave di qualcuno. In ogni punto in cui l'app mostra chi ha firmato un documento, un documento firmato da un dispositivo lo dichiara.
Una radio rubata è una chiave rubata. La chiave di un telefono è protetta dal telefono. La chiave di una radio è protetta dalla radio, che è un piccolo oggetto che sta all'aperto e può non avere nessun PIN. Registra una radio solo se sei disposto a rispondere di tutto ciò che firmerà, e revocala nel momento in cui sparisce. La revoca impedisce a un ponte di accettare qualcosa di nuovo da essa; non ritira ciò che è già stato fatto passare.
Più di un ponte
Il tuo telefono in mezzo a più ponti
Un quartiere può ritrovarsi con più di un ponte. L'app raccoglie tutti i ponti che riesce a rilevare, preferisce quello che risponde meglio, e passa a un altro quando quello in uso tace. Un indirizzo che hai scritto tu vince sempre su uno che è stato rilevato.
Ponti collegati tra loro
Due ponti che si raggiungono su una rete condividono ciò che hanno sentito, così il quartiere accanto si aggiunge senza che nessuno debba reinserire niente. Un ponte collegato non è affidabile per scelta progettuale: tutto ciò che consegna passa dallo stesso controllo di firma di qualunque altra cosa prima di essere archiviato, quindi un ponte collegato malevolo può sprecare il disco di un ponte e non può mai mettere un bollettino falso davanti a un vicino.
I vicini collegano i ponti nei modi normali: un secondo adattatore Wi-Fi nel Pi, una rete ospiti della casa accanto, o una coppia di antenne Wi-Fi direzionali tra due tetti.
Collegare i ponti aggiunge copertura, non resilienza. Il Wi-Fi funziona con la corrente di rete, e la corrente di rete è la prima cosa che un'emergenza porta via. I ponti collegati aiutano in un giorno normale, e nel giorno molto comune in cui internet è fuori servizio ma le luci sono accese. Non sono un modo per arrivare più lontano durante un blackout. Arrivare più lontano senza corrente e senza rete è ciò a cui serve la radio.
Raggiungere le radio Meshtastic
Meshtastic è l'altra rete mesh LoRa molto diffusa, e i due firmware non si sentono tra loro via radio nemmeno sulla stessa frequenza, perché i formati dei pacchetti sono diversi. Un ponte può comunque portare i bollettini Meshbell su una radio Meshtastic, attraverso un collegamento scritto a partire dal formato dei messaggi pubblicato e senza nessuna riga di codice del progetto Meshtastic, ed è per questo che nell'app non c'è niente che ne provenga.
Funziona solo sul ponte, ed è disattivato finché un operatore non lo attiva. Chi usa l'app Meshtastic originale non vede niente: Meshbell viaggia su un numero di canale privato che quell'app non mostra. È un modo per raggiungere un vicino che porta già con sé una radio Meshtastic, non un modo per parlare con la rete Meshtastic nel suo insieme.
Architettura
La logica di dominio è pura e portabile. Si compila e si collauda su un Raspberry Pi senza nessun hardware Apple nel ciclo, quindi le parti che decidono se un messaggio è affidabile vengono verificate di continuo e non solo al momento del rilascio. L'app iOS è un sottile strato di visualizzazione sopra di essa.
- JSON canonico, con chiavi ordinate e ASCII fissato, dà a ogni dispositivo una preimmagine identica byte per byte, così un indirizzo di contenuto calcolato su un telefono coincide con uno calcolato su un nodo.
- Firma e verifica Ed25519, una sola implementazione su Apple e su Linux.
- Un registro a solo accodamento e solo inserimento. I documenti non vengono mai aggiornati né eliminati, quindi la storia, correzioni comprese, si conserva e si può ricontrollare.
- Un controllo di conformità tra linguaggi: le stesse trame vengono decodificate dall'app e da un nodo Python indipendente e confrontate byte per byte, così i due non possono divergere in silenzio.
Limiti dichiarati
Detti chiaramente, perché uno strumento di emergenza che si vanta più di quello che è diventa pericoloso.
- Meshbell è una beta iniziale. Ha trasportato un bollettino firmato attraverso radio LoRa reali e lo ha verificato su un telefono. Non sostituisce i servizi di emergenza ufficiali, quindi mantieni attive le allerte che hai già.
- Il risultato al banco di prova è un solo salto. La ritrasmissione multi-salto è progettata e implementata, non ancora misurata sul campo, e nessuna cifra di distanza su questo sito è misurata al banco.
- I documenti troppo grandi per una sola trama vengono divisi, e il riassemblaggio di più frammenti non è ancora stato visto completarsi sul telefono al banco di prova. Un gruppo incompleto resta un'anteprima e lo dice.
- Le chiavi di firma vivono nel portachiavi iOS, solo su questo dispositivo. Sono estraibili da qualunque cosa possa già leggere il portachiavi dell'app. Qui non c'è nessuna protezione di enclave hardware e non ne dichiareremo una.
- I documenti sono firmati, non cifrati. Meshbell non è messaggistica privata. Dai per scontato che tutto ciò che è in onda possa essere letto da chiunque sia a portata.
- La distribuzione delle chiavi, cioè come il tuo dispositivo impara quale chiave pubblica appartiene a chi, è un lavoro in corso. Una firma dimostra il possesso di una chiave. Legare una chiave a una persona reale è un problema separato e voluto, che oggi si risolve incontrandosi di persona.
- La ricezione in background è reale, ma non è una garanzia. iOS può fermare l'app, e una radio complementare serve un telefono alla volta, quindi una radio che un altro telefono sta tenendo non è disponibile per il tuo.
- Il livello di coordinamento non è verificato per scelta progettuale ed è separato dal canale verificato delle allerte firmate. È utile per la logistica, mai una fonte di istruzioni ufficiali, ed è solo su rete locale, quindi raggiunge chi è sul ponte e non la rete mesh più ampia.
- Meshbell e le radio Meshtastic continuano a non sentirsi tra loro via radio, perché i formati dei pacchetti sono diversi. Un ponte può portare i bollettini su una radio Meshtastic attraverso un collegamento separato, e quel collegamento è disattivato se non è un operatore ad attivarlo.