DiPersona

Dati sui server

Che cosa serve al funzionamento di DiPersona, dove rimane e quando viene rimosso.

Una foto mostrata al tavolo non diventa un album nel database del gestore. I contenuti sono cifrati fra i telefoni. Il servizio trasporta gli scambi, verifica autorizzazioni tecniche e conserva soltanto lo stato necessario alle diverse funzioni.

Le durate cambiano secondo il dato. Alcuni elementi restano solo nella memoria temporanea del server e si perdono al riavvio: i tuoi contenuti non vengono scritti su disco. Altri devono sopravvivere, come i recapiti tecnici del recupero e le autorizzazioni al relay privato. Le registrazioni del sistema e del fornitore hanno regole separate.

Questa pagina descrive il pacchetto Docker R11 distribuito. I relay sono gestiti dai singoli utenti: le modifiche del gestore e i registri del fornitore possono cambiare ciò che resta sulla macchina. DiPersona fornisce il software e non gestisce questi server.

Accesso a un relay privato

La prima configurazione associa il relay all’account del suo gestore. Il server conserva il relativo descrittore pubblico, il certificato pubblico del telefono scelto per l’attivazione e l’associazione firmata del relay. Il gestore prova di possedere la chiave del telefono prima di attivarlo; i dati pubblici nel collegamento copiato o condiviso da «Crea il tuo relay» e aperto nel configuratore sul computer non permettono da soli di impersonarlo. Comprendono anche il nome pubblico impostato dal gestore nell’app. L’associazione pubblica distribuita dal server e negli inviti contiene il riferimento crittografico globale del suo account, senza includere da sola quel nome: gestire più relay non rende irriconoscibile il gestore tra quei server.

Ogni ospite usa invece un’identità tecnica distinta per relay. Per verificarla il servizio riceve un certificato con chiavi pubbliche, identificativo del relay e generazione del telefono, senza il nome o l’identificativo globale dell’account dell’ospite. Le chiavi private e le 12 parole non vengono consegnate al server.

Un registro durevole conserva l’identificativo tecnico di ogni utente ammesso, la chiave pubblica autorizzata, l’impronta del certificato, la generazione minima accettata, la revisione e l’eventuale revoca delle nuove assegnazioni. Conserva anche le quote e le risorse assegnate a ciascuna identità, con riferimenti tecnici alle richieste, per contenere gli abusi e ricostruire uno stato coerente dopo un riavvio. Non contiene nomi di tavoli, contenuti in chiaro o un elenco dei loro partecipanti.

Queste registrazioni non scadono tutte automaticamente: il server deve ricordare che un vecchio telefono è stato sostituito. Le risorse vengono liberate e riconciliate secondo il loro ciclo; le autorizzazioni, le revoche e la configurazione hanno durata distinta. Le prove monouso usate per autenticare una richiesta e l’accesso iniziale su invito hanno invece scadenze brevi e non costituiscono un’autorizzazione permanente da riutilizzare.

Rimuovere il relay dall’app è una scelta locale, disponibile anche senza raggiungere il server. Ferma l’uso di quel relay su quel telefono, ma non cancella queste registrazioni, non revoca autorizzazioni sul server e non modifica gli altri telefoni. Le prove e le credenziali restano nello storico cifrato dell’account e nel file di recupero aggiornato; tornare a usare lo stesso relay richiede una conferma esplicita. Un nuovo relay ha una propria identità: non eredita persone, autorizzazioni o tavoli del precedente soltanto perché ne riusa il nome o l’indirizzo.

Il registro rende riconoscibili allo stesso relay le operazioni della medesima identità tecnica. L’identità distinta limita il collegamento diretto tra relay attraverso la credenziale, ma non annulla ciò che rete, tempi e traffico rendono osservabile.

Durante un incontro

Per mostrare un solo QR fermo, il telefono del gestore deposita sul proprio relay una copia cifrata dell’invito. Il QR contiene l’indirizzo del relay, un riferimento casuale e la chiave per aprirla. Dopo la scansione l’app chiede di scaricare l’invito: il relay vede l’indirizzo di rete e quale deposito viene richiesto, ma non riceve la chiave. L’app verifica le firme e l’origine prima della conferma della persona. Chi riceve una copia del QR può scaricare e leggere l’invito finché è disponibile; condividilo solo con la persona scelta.

Questo deposito resta solo in memoria: al massimo 32 inviti, 32 KiB ciascuno e 1 MiB complessivo di contenuti cifrati, oltre alla memoria necessaria al servizio. Scade entro venti minuti e non si prolunga ripetendo la richiesta. L’ammissione definitiva al relay, la revoca o il riavvio rimuovono il contenuto; riferimenti tecnici contro il riutilizzo possono restare fino alla scadenza originaria. Eliminare un tentativo dal telefono funziona anche offline e non garantisce la revoca immediata del deposito sul server. Una copia già scaricata non può essere richiamata.

Il servizio conserva in memoria un identificativo casuale dell’incontro, le autorizzazioni dei due lati, i tempi e le richieste cifrate ancora da consegnare. Non riceve una rubrica da cercare per nome.

L’incontro ha una durata iniziale autorizzata di dodici minuti e non può superare venti minuti. Ogni richiesta cifrata resta disponibile da cinque a 120 secondi, entro il termine dell’incontro. Dopo la scadenza del contenuto possono rimanere, fino alla chiusura della sessione, riferimenti tecnici necessari a impedire che la stessa richiesta venga riutilizzata.

Un riavvio perde gli incontri in corso. I collegamenti già confermati restano nei telefoni.

Durante la consultazione al tavolo

Il server inoltra dati cifrati senza possedere le chiavi per aprire foto, documenti, pensieri e conversazioni. Conserva temporaneamente connessioni, recapiti casuali, autorizzazioni e piccole code di inoltro. Non mantiene un catalogo sociale centrale in chiaro: non esiste una rubrica centrale delle persone né un elenco centrale dei membri dei tavoli. Il server non accoda i commenti come conversazione da recapitare a un proprietario assente.

Il punto di ingresso vede l’indirizzo di rete del telefono. Il punto di consegna riceve il collegamento dall’ingresso e abbina i recapiti autorizzati, senza ricevere da esso l’indirizzo originale del telefono. I due passaggi fanno parte della stessa infrastruttura: la separazione riduce i dati visibili, ma non nasconde completamente orari, quantità di traffico e uso ripetuto dei recapiti. Questi elementi possono mettere in relazione più collegamenti.

Ogni collegamento dura al massimo due ore e viene chiuso dopo trenta secondi di inattività. Le attese di abbinamento sono limitate; alcuni riferimenti di chiusura possono rimanere in memoria per dieci minuti per impedire riusi impropri. Un nuovo collegamento richiede nuove verifiche.

Quando vi parlate al tavolo

Le parole passano cifrate dagli stessi collegamenti della consultazione; il software del relay le inoltra senza poterle leggere e non le conserva come cronologia. Buste di dimensioni prefissate e invii regolari riducono i segnali legati alla scrittura, senza renderla invisibile in ogni condizione: Come funziona. Restano osservabili connessioni, orari e quantità di traffico.

Per i biglietti

Per ciascun destinatario autorizzato il servizio conserva una busta cifrata, un recapito casuale, un verificatore del permesso di lettura, gli identificativi dell’invio e i suoi tempi. Se il biglietto contiene una foto o un documento, il contenuto cifrato può essere conservato una sola volta e condiviso fra i destinatari, ognuno con la propria busta per aprirlo: il servizio può quindi riconoscere che quelle consegne riguardano lo stesso biglietto. Il nome della persona, il nome del tavolo e il contenuto in chiaro non sono campi del servizio.

La disponibilità massima è di due ore, contate dalla prenotazione dell’invio. Il caricamento deve completarsi entro trenta secondi da quella prenotazione. Letture, conferme e ritentativi non prolungano le due ore.

Il ritiro confermato rimuove il contenuto cifrato. Un riferimento all’invio ritirato può restare fino al termine originale, per impedire che venga ripubblicato come se fosse lo stesso invio ancora valido.

Le buste restano solo in memoria temporanea, senza un archivio applicativo su disco. Riavviare il servizio le perde. Il servizio limita sia il numero di invii sia lo spazio complessivo disponibile; quando una quota è raggiunta, un nuovo invio può non essere accettato.

Sul telefono del mittente possono restare i record cifrati necessari a completare o ritirare l’invio. La vista ricevuta resta in memoria durante la consultazione autorizzata. La scadenza sul server non cancella copie che qualcuno abbia già catturato.

Per gli avvisi

Il server mantiene in memoria associazioni opache fra un ascolto del telefono e i recapiti per cui deve segnalare lavoro pendente. Il segnale non contiene il messaggio sociale, non apre contenuti e non concede presenza, partecipazione a un tavolo o consenso a un recupero.

I recapiti associati allo stesso ascolto sono raggruppati temporaneamente per poter consegnare gli avvisi in modo efficiente. Questa associazione serve alla funzione richiesta e viene rimossa secondo le scadenze previste. Non diventa una cronologia delle attività o un elenco con nomi e contenuti.

L’ascolto deve essere rinnovato entro un minuto e ricreato entro dieci minuti. Chiusura, scadenza e riavvio eliminano lo stato temporaneo. Non esiste una coda durevole degli avvisi né un servizio push esterno.

Sul telefono rimane un profilo cifrato necessario alla ricezione. La dimensione dipende dai relay e dai recapiti presenti; il massimo è 121.944 byte cifrati, circa 120 KiB, per contenere tutte le 16 origini e i permessi previsti. Contiene recapiti e permessi tecnici d’ascolto e, per ciascun relay privato, una chiave separata autorizzata soltanto a ricevere avvisi. Non contiene nomi, contenuti, chiavi dell’identità generale o radici di recupero. La delega resta valida solo mentre il certificato e la generazione del membro sono correnti e il relay ne permette l’accesso: non può creare tavoli, inviare avvisi o accedere agli altri servizi. La chiave che cifra il profilo è custodita dal sistema protetto di Android. Il profilo è escluso dai backup di Android e resta finché gli avvisi sono attivi. Disattivarli elimina profilo e chiave; DiPersona non conserva una cronologia degli avvisi. L’eventuale cronologia notifiche conservata da Android dipende invece dalle impostazioni del sistema.

Per recuperare l’account

Il database conserva recapiti tecnici di recupero, non il tuo file di recupero, le 12 parole o una chiave di riserva dell’identità. Non contiene un backup di foto o regali.

Per ogni recapito il database conserva:

  • impronte crittografiche che permettono di trovare la casella e verificare i permessi di scrittura, lettura e chiusura;
  • un riferimento temporale e l’indicazione della regola di scadenza applicabile;
  • un numero progressivo e contatori limitati per ordinare le richieste e contenere gli abusi;
  • al massimo due richieste cifrate ancora da consegnare, con il loro numero e la scadenza, fino a 4.096 byte ciascuna.

Separatamente conserva una riga di configurazione: identità e versione del servizio, quota di caselle e ultimo riferimento temporale di sicurezza. Questa riga rimane anche quando non ci sono caselle; non è uno storico degli accessi.

Una richiesta cifrata scade dopo 120 secondi dal primo invio accettato. La sola lettura non la elimina; una conferma valida di ricezione può eliminarla prima, lasciando attiva la casella. I ritentativi identici non spostano il termine.

Una nuova casella mai letta dura sette giorni dalla creazione. Dopo la prima lettura autorizzata, anche vuota, dura novanta giorni dall’ultima lettura autorizzata. Le letture successive rinnovano quel periodo; scrivere, verificare un invio o confermarne la ricezione non lo rinnova. Le caselle create prima dell’introduzione del termine breve conservano la regola di novanta giorni. Una chiusura autorizzata elimina la casella e le richieste collegate.

La creazione della casella è automatica per un telefono autorizzato sul relay. Il telefono esegue inoltre una prova di lavoro limitata per contrastare gli abusi, valida trenta secondi e legata alla richiesta. Non serve un codice consegnato a mano dal gestore: l’autorizzazione al relay privato è verificata separatamente tramite il registro descritto sopra. Il servizio riconosce i ritentativi di creazione attraverso la casella stessa.

Le autorizzazioni presentate durante le richieste sono visibili al processo che le verifica, anche se il database ne conserva soltanto le impronte. Gli indirizzi di rete, gli orari e l’uso ripetuto dello stesso recapito possono collegare fra loro operazioni tecniche. Un’impronta non rende automaticamente anonimo un dato.

Protezione da abusi

I servizi limitano connessioni, richieste, dimensioni e spazio occupato. Alcuni controlli mantengono in memoria contatori per sorgente, usando riferimenti derivati dall’indirizzo di rete. Le chiavi di questi riferimenti cambiano al riavvio. L’indirizzo reale resta comunque visibile durante la connessione e può comparire nei registri di sistema della macchina, descritti più sotto.

Per la protezione iniziale delle connessioni, i riferimenti senza collegamenti attivi diventano eliminabili dopo un minuto di inattività e vengono rimossi alla successiva pulizia. Gli altri contatori temporanei seguono le rispettive scadenze o vengono recuperati quando il loro budget è tornato disponibile. Non sono una cronologia permanente dell’attività delle persone.

Queste difese contengono il consumo di risorse. Non garantiscono disponibilità contro ogni attacco o un numero illimitato di persone collegate.

Registrazioni operative e copie

Il pacchetto Docker R11 disabilita la conservazione dei log dei container, compreso PostgreSQL. Disabilita anche la registrazione delle istruzioni, dei parametri e delle singole connessioni del database. Questo non elimina i registri del sistema operativo, del fornitore o la diagnostica locale descritta qui.

Un osservatore locale, accessibile all’amministratore, campiona circa ogni trenta secondi salute e riavvii dei servizi, identificativi dei container, consumo e pressione di memoria, eventi di soglia e uccisioni per memoria esaurita. Non legge contenuti scambiati, credenziali o variabili d’ambiente dei container. Conserva due segmenti di campioni da 512 KiB e due segmenti di andamento da 4 MiB, oltre all’ultimo campione fino a 64 KiB. La scrittura usa anche un file temporaneo limitato per completare ogni sostituzione. La diagnostica di avvio conserva due record fino a 8 KiB ciascuno. Sono limiti di spazio: non esiste una scadenza temporale generale e arrestare il servizio non cancella i campioni già salvati.

I registri del sistema operativo, del firewall, degli accessi amministrativi e del fornitore sono distinti. Possono contenere indirizzi di rete, porte, orari ed esiti tecnici. Gli accessi amministrativi riguardano la gestione del server, non l’accesso delle persone all’app. Rotazione, durate e copie dipendono dalla configurazione della macchina e dal fornitore: non si applicano automaticamente i venti minuti degli inviti o le due ore dei biglietti.

Configurazioni, certificati, chiavi operative del server e credenziali del database restano su disco. Le chiavi del server sono distinte da quelle che proteggono i contenuti fra i telefoni. Le copie operative necessarie a gestire e ripristinare il servizio seguono un ciclo separato, non la scadenza dei contenuti, e non hanno una cancellazione automatica generale.

Una scadenza impedisce l’accesso anche se la pulizia materiale non è ancora terminata. La rimozione dal database non dimostra la distruzione immediata di ogni traccia: possono restare copie nelle pagine del database, nel registro delle scritture, nei backup e nelle copie dell’infrastruttura. Non promettiamo cancellazione fisica simultanea o assenza di copie interne del fornitore.

Dove si trova il server

Chi installa il relay sceglie il fornitore e la regione in cui ospitarlo. Il percorso guidato usa DigitalOcean, ma non esiste un server centrale di DiPersona per gli scambi fra utenti. La distinzione fra relay privati, sito e assistenza è descritta in Privacy.

Il pacchetto Docker permette di installare un relay privato: chi lo installa sceglie dove ospitarlo e ne risponde. L’installazione configura limiti distinti per i servizi, il gruppo Docker e i registri operativi. Le istruzioni del pacchetto spiegano il taglio di server richiesto e i controlli di stato. Avere memoria disponibile sull’host non impedisce il raggiungimento di una quota interna; la capacità di utenti contemporanei va distinta dai limiti dell’app (Come funziona).