Cos’è un servizio di messaggistica privato?

Affinché un’app di messaggistica sia davvero privata, la crittografia non basta. In questo post parliamo delle caratteristiche necessarie che ogni conversazione privata deve avere.

Che cos’è un servizio di messaggistica privato? Molti direbbero che un’app di messaggistica è privata se i messaggi inviati sono criptati. In realtà però la privacy dei messaggi è un po’ più complessa. Al Chaos Communication Congress, Roland Schilling e Frieder Steinmetz hanno tenuto una conferenza in cui hanno spiegato in parole semplici che cos’è un servizio di messaggistica privato e quali sono le caratteristiche che un’app di messaggistica dovrebbe avere per essere considerata privata.

I sei pilastri della conversazione privata

Per comprendere l’idea dei servizi di messaggistica privata, Schilling e Steinmetz consigliano di pensare a quando si prova ad avere una conversazione privata ad una festa. Cosa facciamo per fare in modo che la nostra conversazione sia privata? Probabilmente cerchiamo una stanza appartata in cui nessuno, eccetto la persona con cui vogliamo parlare, ci possa sentire.

Ecco la prima caratteristica delle conversazioni private: sia che queste stiano avvenendo di persona sia che si stiano svolgendo in rete, devono essere confidenziali. Nessuno, eccetto voi e il vostro interlocutore, deve sentire quello di cui parlate.

La seconda caratteristica è l’autenticità (dovete sapere che la persona con cui state parlando è davvero quella con cui volete parlare). Nella vita reale potete riconoscere il viso di una persona, ma se state inviando messaggi online la situazione si complica.

Se la conversazione è davvero importante (e le conversazioni private in genere lo sono) vorrete assicurarvi del fatto che il vostro interlocutore senta esattamente tutto quello che dite e viceversa. In altre parole, per inviare messaggi privati dovete sapere con certezza che terze persone non abbiano compromesso i vostri messaggi. Si tratta del concetto di integrità, fondamentale per i messaggi privati.

Immaginiamo adesso che siano entrate nella stanza delle terze persone e che queste abbiano ascoltato parte della vostra conversazione. Nelle conversazioni reali, queste terze persone sarebbero a conoscenza solo della parte di conversazione che hanno ascoltato e non di quella avvenuta prima del loro arrivo o dopo che se ne sono andate. Ad ogni modo, Internet non dimentica mai nulla e la comunicazione online non è così semplice come quella offline. Questo ci porta a due concetti importantissimi che sono alla base dei messaggi privati: la forward secrecy (segretezza in avanti) e la future secrecy (segretezza futura).

In a real-life conversation, this third party would know only the part of the conversation they were actually listening to, not what you were talking about before they came or after they left.

La forward secrecy fa in modo che le terze parti non sappiano nulla della conversazione con il vostro interlocutore prima che entrassero nella stanza e la future secrecy fa in modo che le terze parti non sappiano nulla della vostra conversazione dopo che se ne sono andate.

Supponiamo che l’argomento di cui stiamo parlando è abbastanza delicato. In questo caso, se qualcuno vi accusasse di aver detto qualcosa al riguardo, potreste volerlo smentire. Se la conversazione era privata, le uniche persone a conoscenza della conversazione sareste voi e il vostro interlocutore, quindi sarebbe la vostra parola (“Non l’ho detto!”) contro la sua (“L’hai detto tu!”). In un caso del genere, nessuno può dimostrare nulla e questo ci porta all’importante concetto di negabilità.

Applicare la privacy nei servizi di messaggistica

Queste sono le sei caratteristiche che si devono applicare in un’app di messaggistica prima di poterla definire privata. Sono caratteristiche abbastanza semplici da ottenere quando si tratta di una conversazione reale, che avviene di persona; quando però si tratta di servizi di messaggistica ci sono sempre delle terze parti (il servizio in sé). Come si possono applicare questi sei elementi fondamentali tenendo in considerazione queste terze parti?

La confidenzialità viene mantenuta attraverso l’uso della crittografia. Ci sono diversi tipi di crittografia: quella simmetrica e quella asimmetrica, cioè la crittografia a chiave pubblica. I servizi di messaggistica privata (in questo caso, Schilling e Steinmetz hanno preso Threema come esempio) le usano entrambe, creando una chiave condivisa dalla chiave pubblica di una persona e dalla chiave privata dell’altra. O dalla chiave privata della prima persona e dalla chiave pubblica della seconda (la matematica che c’è dietro la crittografia funziona allo stesso modo).

Di conseguenza, la chiave è identica e unica per entrambe le persone (nessun’altra coppia di persone ottiene la stessa chiave). L’app genera la chiave autonomamente e mantiene la confidenzialità senza trasferirla (entrambe le persone l’ottengono non appena decidono di parlare tra loro).

The app generates the key independently and maintains confidentiality by not transferring it — both people have it right after they decide to talk to each other.

Questo metodo viene utilizzato anche per garantire l’integrità (un elemento estraneo che aggiunge qualcosa al testo già criptato lo renderebbe illeggibile). In questo caso, il vostro interlocutore riceverebbe quello che gli avete inviato oppure un messaggio di errore (perché il servizio di messaggistica potrebbe non decifrare il testo criptato).

Per una migliore confidenzialità, potreste voler occultare il fatto che voi e il vostro interlocutore parliate. Un’altra parte di crittografia si occupa di questo. Il messaggio che inviate viene criptato utilizzando la chiave condivisa da voi e dal vostro interlocutore (è come mettere il messaggio in una busta con l’indirizzo. Poi lo criptate di nuovo, lo mettete in un’altra busta e lo inviate all’indirizzo del server del servizio di messaggistica). In questo caso utilizzate la chiave generata sulla base della vostra chiave e della chiave del servizio.

Questa busta all’interno di un’altra busta viene quindi consegnata al server del servizio di messaggistica. Se un potenziale hacker prova a leggere il contenuto, saprà che l’avete inviata ma non conoscerà la sua destinazione finale. Il server di messaggistica apre la busta esterna, legge l’indirizzo di destinazione (non il messaggio in sé), mette il pacchetto in un’altra busta e lo invia al destinatario. A questo punto, un potenziale hacker può vedere esclusivamente che una busta è stata inviata dal server di messaggistica al destinatario, ma non può sapere da chi è stata inviata.

Con così tante buste che vanno in tutte le direzioni, è difficile tracciare la persona che ha ricevuto il vostro messaggio. È difficile, ma non impossibile: se qualcuno dovesse pesare tutte le buste, troverebbe due buste dello stesso identico peso e vi assocerebbe al vostro interlocutore. Per essere sicuri che questo non avvenga, il sistema aggiunge un peso casuale ad ogni busta, quindi la busta che inviate e quella che riceve il vostro interlocutore non hanno mai lo stesso peso.

To ensure that can't happen, the system adds a random weight to every envelope, so the envelope you sent and the envelope your partner received never weigh the same.

È difficile mantenere l’autenticità. Alcune app di messaggistica utilizzano gli indirizzi mail o i numeri di telefono come ID degli utenti (ecco come un utente dimostra di essere davvero chi dice di essere). Ma i numeri di telefono e gli indirizzi mail sono dati confidenziali che potreste non voler condividere con l’app. Alcune (come Threema) incoraggiano gli utenti a utilizzare un ID diverso e a scambiare i codici QR per dimostrare la loro identità.

La negabilità in questo caso si ottiene inviando ogni messaggio a entrambi i partecipanti alla conversazione. La chiave è la stessa per entrambe le persone, quindi uno dei due potrebbe aver inviato il messaggio. Di conseguenza, anche se qualcuno riesce a intercettare e a decodificare il messaggio in arrivo, non può sapere con certezza chi sia il mittente.

Tutto questo si occupa della confidenzialità, dell’autenticità, dell’integrità e della negabilità. Ma che ne è della forward secrecy e della future secrecy? Se la chiave privata e quella pubblica di una persona sono sempre le stesse, allora se la chiave condivisa è danneggiata, l’hacker sarà in grado di decodificare sia i messaggi precedenti che le future conversazioni.

Per limitare tutto questo, il server deve rilasciare periodicamente le chiavi. Se la chiave viene rilasciata una volta al mese, un hacker potrebbe essere in grado di leggere la cronologia della conversazione solo di questo mese e non potrebbe controllare la conversazione dopo che è stata rilasciata la chiave (in pratica, il rilascio delle chiavi avviene con molta più frequenza).

Conclusioni

Qui si conclude la nostra breve introduzione al concetto di messaggistica privata. In realtà è un concetto molto più complesso perché le app di messaggistica moderne devono gestire i file multimediali, le chat di gruppo e a volte anche le video chiamate.

Se volete saperne di più, vi consigliamo di guardare il seguente video di 33C3 in cui Schilling e Steinmetz ci spiegano i concetti base e parlano anche di come sono risaliti a Threema e di come hanno capito come applicare i principi di privacy. Noi abbiamo apprezzato molto il video e speriamo che lo facciate anche voi.

Consigli