Architettura di secushare

Architettura di secushare

(english version)

Architettura per un'effettiva interazione sociale privata

Per ragioni che abbiamo elaborato nel documento «Scalabilità e Paranoia» preferiamo affidarci ad una rete di nodi distribuiti e gestiti da persone del nostro vicinato sociale, piuttosto che ad una rete federata di server che sono ben intenzionati, ma progettati in modo più vulnerabile alla corruzione.

L'architettura distribuita ci permette comunque di avere tutte le funzionalità che gli utenti tipicamente si aspettano da un social network, anzi permette di fare anche cose che sono particolarmente difficili in un tipo di approccio a rete federata.

Instradamento

Come discusso nel documento, riteniamo che la privacy è meglio raggiunta avvalendoci di ripetitori (relay) "agnostici" come GNUnet, Maidsafe, A3 o Tonika. Negli ultimi anni abbiamo integrato un'implementazione di PSYC in GNUnet.

Questo «lightning talk» dà un'idea su quali cose rimediamo da GNUnet. Esso ci fornisce comunicazioni criptate su ogni sorta di mezzo di trasporto, inclusa la rete diretta che lavora tra dispositivi WiFi.

Alcuni dei servizi GNUnet con traffico intenso, come la condivisione di file, non sono necessari per secushare, quindi possono essere disattivati nella sua configurazione. Sfruttiamo il meccanismo di instradamento resistente agli attacchi sybil ed il suo sistema GNU Naming System (GNS), combinandoli con il grafo sociale distribuito di PSYC.

Come posso lasciare un messaggio se ho bisogno di spegnere il mio nodo?

Fa parte della nostra architettura che i ripetitori "agnostici" agiscano come depositi di dati offline e router di pacchetti. Dal primo «randezvous» (incontro), alcune persone della rete sociale estesa a seguito del tuo primo contatto, avranno probabilmente dei nodi a lungo termine che possono facilmente conservare i dati criptati per te. Più crei contatti, maggiormente il tuo nodo potrà conoscere nodi di durata no-stop, in modo da distribuire i dati uniformemente.

Questo è simile al concetto di super-nodo in altre architetture p2p, solo le persone di secushare sono ben motivate a contribuire alla potenza di elaborazione e alla larghezza di banda, perché sanno che saranno utilizzati per sé stessi e per la loro rete sociale.

La rete vi fornirà servizi durante la disconnessione della legittimità [inglese originale poco chiaro] per utilizzarla con la vostra effettiva identità. I nodi "agnostici" vorranno memorizzare i dati senza sapere da dove provengono e dove andranno.

Come scala con miliardi di utenti?

Questo è discusso su «scalabilità».

Implementazione

Processo fondamentale (Core Daemon)

Il cuore dovrebbe essere un processo in esecuzione sulla macchina dell'utente, scritto in linguaggio nativo (lo stiamo facendo in C) al fine di massimizzare la probabilità che i distributori di sistemi operativi gratuiti lo lanceranno come uno strumento 24/7 sempre attivo in background. Script o linguaggi basati su bytecode ridurrebbero questa possibilità di accettazione.1 Per la maggior parte dei fornitori di sistemi operativi una dipendenza da un'applicazione Java in esecuzione no-stop sarebbe probabilmente considerata inaccettabile (Java è il contendente più popolare).

Le cose sembrano stare diversamente in ambito mobile in cui Java è un'alternativa ben consolidata rispetto al C e il divario nelle prestazioni non è così grande. Ed ancora, i programmi compilati girano in modo più aderente all'hardware ed hanno decisamente maggior bisogno di memoria ad accesso casuale. Java può ancora essere utilizzato per applicazioni ad alto livello e per interfacce utente, ma il processo fondamentale è in C.

Di recente, GNUnet è stato trasferito su OpenWRT, consentendo ai router WiFi di partecipare alle rete in modo nativo. Qui, scrivere codice in C è ancora un fattore vincente.

Il nostro demone PSYC, implementato come un servizio di GNUnet, offre un'efficiente distribuzione dei dati in multicast, una messaggistica estensibile ed una modellazione sociale basilare che usa il paradigma «pubsub».

Interfaccia utente multipiattaforma

Quando pensiamo ai servizi offerti dai social, tutti pare li pensino in termini di interfaccia Web, e ciò sarà effettivamente utile utilizzando secushare su un dispositivo router. Potremmo cercare la collaborazione con una piattaforma Web sociale federata per avere un'interfaccia utente, ma in realtà abbiamo bisogno di tirar via l'HTML, il CSS e il JavaScript, poiché sotto il cofano le cose sono molto diverse dalle ordinarie guide e dagli attesi seguiti.

È interessante notare che le tecnologie multi-dispositivo per lo sviluppo dei dispositivi mobili si servono anche di HTML, CSS e JavaScript. Impiegati come linguaggi di descrizione per l'interfaccia utente piuttosto che per le pagine Web. Oggi fare un'interfaccia utente in stile Web non significa non essere strettamente integrati nel sistema operativo.

Interfacce utente native

Attualmente stiamo implementando un'interfaccia utente responsiva e compatibile con gli smartphone in Qt/QML, con particolare riguardo all'usabilità: rendere più facile l'utilizzo dei social network come avviene con Facebook e simili e, contemporaneamente, permettere la privacy attraverso la crittografia da-utente-a-utente (end-to-end) ad ogni passo.

Ulteriori dettagli

Un quadro più dettagliato sulle API e sui livelli (layer) è presente nella pagina del «protocollo».

Footnotes:

1 La maggior parte dei sistemi Linux sono configurati in modo che dopo l'avvio e l'accesso solo le applicazioni native mantengano il sistema in esecuzione. I linguaggi di script vengono utilizzati solo temporaneamente per eseguire lavori di breve durata o come wrapper per avviare alcuni binari eseguibili. Nessun distributore desidera infrangere questa buona abitudine di efficienza.

Top