Come funziona MindTheClub

Un sistema su cui puoi ragionare

La maggior parte delle app di messaggistica ti chiede di fidarti. Dicono che i tuoi messaggi sono crittografati, che i tuoi dati sono al sicuro, che la tua privacy conta — e poi fanno passare tutto dai loro server, dove i tuoi contenuti esistono in una forma che non puoi verificare né controllare.

MindTheClub adotta un approccio diverso. Invece di chiedere fiducia, abbiamo costruito un sistema abbastanza semplice da capire, così puoi ragionare tu stesso su cosa succede ai tuoi dati. Crediamo che la qualità più importante di uno strumento di comunicazione sia la prevedibilità: quando invii un messaggio, dovresti sapere esattamente dove va, che percorso fa e dove finisce. Nessuna sorpresa.

Ecco come funziona.

I tuoi messaggi viaggiano direttamente tra i dispositivi

MindTheClub è un'app di messaggistica peer-to-peer. Quando invii un messaggio, questo viaggia direttamente dal tuo telefono a quello del destinatario. Non c'è alcun server MindTheClub nel mezzo che archivia, legge, elabora o inoltra i tuoi contenuti.

Questo è reso possibile da WebRTC, lo stesso standard aperto che alimenta le videochiamate nel tuo browser. WebRTC stabilisce un canale dati diretto e crittografato tra due dispositivi. Il tuo messaggio entra in questo canale da un lato ed esce dall'altro. Questo è l'intero viaggio.

Quando due dispositivi si trovano dietro firewall o su reti mobili che rendono difficili le connessioni dirette, la connessione viene inoltrata attraverso un server TURN ospitato sulla rete globale di Cloudflare. Anche in questo caso, il relay si limita a passare pacchetti crittografati: non può leggere il contenuto. Pensalo come un postino che porta una busta sigillata: conosce la destinazione, ma non vede mai cosa c'è dentro.

Signalling: come i dispositivi si trovano

Prima che due dispositivi possano stabilire una connessione diretta, devono accordarsi su come connettersi, scambiandosi indirizzi di rete, chiavi di crittografia e parametri di connessione. Questa negoziazione si chiama signalling, ed è l'unico passaggio che tocca un server.

MindTheClub usa un Cloudflare Worker come leggero relay di signalling. I dati di signalling sono effimeri: servono solo a stabilire la connessione e dopo non hanno alcun valore. Non contengono alcun contenuto dei messaggi.

Una volta completato il signalling e aperto il canale WebRTC, il ruolo del server è finito. Tutto ciò che segue avviene direttamente tra i due dispositivi.

Svegliare un telefono che dorme

I telefoni risparmiano batteria in modo aggressivo. Quando un telefono è inattivo, le sue connessioni di rete vengono sospese. Come si fa allora a inviare un messaggio a qualcuno il cui telefono dorme?

MindTheClub usa Firebase Cloud Messaging (FCM), la stessa infrastruttura di notifiche push usata praticamente da ogni app Android, per inviare un leggero segnale di sveglia. Questo segnale non contiene alcun contenuto; dice semplicemente al dispositivo del destinatario: «Qualcuno vuole inviarti qualcosa. Svegliati e connettiti».

Il dispositivo del destinatario si sveglia, stabilisce una connessione WebRTC verso il mittente, e il messaggio vero e proprio viene trasmesso direttamente, peer-to-peer, come sempre.

Inviare contenuti grandi a blocchi

Una foto, un video, una nota vocale: possono pesare megabyte, e le connessioni mobili possono interrompersi in qualsiasi momento. Inviare un file grande come un unico blocco significherebbe ricominciare da capo se qualcosa va storto.

MindTheClub divide i contenuti grandi in piccoli blocchi e li invia in sequenza sul canale dati WebRTC. Il dispositivo ricevente riassembla i blocchi e verifica il risultato. Se la connessione cade a metà trasferimento, vanno ritrasmessi solo i blocchi mancanti, non l'intero file.

È lo stesso principio usato da ogni protocollo affidabile di trasferimento file. Non è una novità, ma è essenziale per una buona esperienza sulle reti mobili reali.

Consegna garantita

Cosa succede se il destinatario è in aereo, ha il telefono spento o è in galleria? Il messaggio non può essere consegnato ora, ma prima o poi deve arrivare.

MindTheClub usa il WorkManager di Android per garantire la consegna. Quando un messaggio non può partire subito, viene salvato localmente e pianificato per un nuovo tentativo. WorkManager sopravvive ai riavvii dell'app, ai riavvii del dispositivo e all'ottimizzazione della batteria. Continuerà a riprovare, con attese appropriate, finché il messaggio non è consegnato.

Insieme ai segnali di sveglia FCM, questo crea una catena di consegna affidabile: il tuo messaggio è conservato al sicuro sul tuo dispositivo, un impulso di sveglia parte quando il destinatario è probabilmente raggiungibile, e il trasferimento diretto si completa appena entrambi i dispositivi sono online. In nessun momento il contenuto del messaggio resta su un server in attesa di essere ritirato.

Messaggi di gruppo: il protocollo gossip

La messaggistica di gruppo in un sistema peer-to-peer presenta una sfida particolare. In un'app tradizionale, invii una copia al server e il server la distribuisce a ogni membro del gruppo. Senza server, il mittente dovrebbe connettersi a ogni membro singolarmente, cosa che scala male e fallisce del tutto se alcuni membri sono irraggiungibili.

MindTheClub risolve il problema con un protocollo gossip. Il mittente trasmette il messaggio ai membri del gruppo che riesce a raggiungere. Quei membri, a loro volta, possono inoltrare il messaggio agli altri membri che il mittente non ha raggiunto. Come una voce che si diffonde in una stanza, il messaggio si propaga finché tutti ne hanno una copia.

Se un membro del gruppo si connette più tardi e scopre che gli manca un messaggio, lo richiede a qualsiasi membro che già lo possiede, non solo al mittente originale. Questo rende la consegna di gruppo resiliente: nessun dispositivo è un collo di bottiglia, e il gruppo non dipende dalla presenza online di un membro in particolare.

Cosa significa in pratica

Quando usi MindTheClub, il comportamento del sistema è prevedibile:

Non abbiamo costruito MindTheClub così perché il peer-to-peer va di moda. L'abbiamo costruito così perché produce un sistema il cui comportamento puoi prevedere e verificare. E crediamo che questa sia una base per la fiducia migliore di qualsiasi informativa sulla privacy.