Signal: Rilevamento contatti. C'è un problema di privacy?
(pubblicato il 12 novembre 2022)
Premessa:
Signal ha bisogno del numero di telefono dell'utente per costruire il suo “grafo sociale”, vale a dire l'insieme di tutti i contatti, che sono anche account Signal, collegati a quello dell'utente. La privacy di questi dati sensibili è garantita da una crittografia forte sui server Signal.
Critica numero 1:
Signal non rispetta totalmente la privacy perché, ed è abbastanza evidente, per quanto possa crittografare, fa uso di un dato estremamente sensibile che è il numero di telefono dell'utente. Chi ci garantisce sul suo utilizzo? Non era meglio un account anonimo come fa Threema per es. ?
Critica numero 2:
Per un attaccante ben motivato, è possibile estrarre informazioni non banali sull'esecuzione di un programma e sulla natura dei dati con cui ha a che fare semplicemente osservando lo schema con cui accede a varie locazioni di memoria durante la sua esecuzione. La crittografia dei dati non è un deterrente sufficiente in questo caso perché ciò che viene catturato è un metadato in realtà.
Queste sono le critiche più comuni che vengono mosse a Signal e peraltro per nulla infondate. A questo punto sono andato un po' più in profondità nell'analisi per capire come Signal abbia affrontato questi problemi con l'obiettivo di non rinunciare alla facility del grafo sociale.
Soluzione alla critica numero 2:
Uso di enclavi SGX [1] [2] con implementazione ORAM [3] che, per dirla in maniera semplice, è un compilatore speciale che effettua uno scrambling del pattern di accesso alla memoria. Pur mantenendo intatta la semantica del programma, inteso come input che produce un output, il modo in cui il programma trasformato accede alla memoria è diverso da quello del programma originale, vanificando in tal modo gli sforzi di un attaccante basati proprio sulla ricerca di pattern di accesso alla memoria.
Da un lato, l'enclave, attraverso la crittografia della RAM, permette di isolare i dati e la loro elaborazione su un determinato server, offuscandoli anche ai proprietari/amministratori del server. Dall'altro, l'implementazione di ORAM sbriciola i pattern di accesso alla memoria impedendo di carpire informazioni contando sulla sola osservazione.
Implementare ORAM ha un costo notevole e solo da poco Signal è riuscita a ottimizzare questo processo rimpiazzando la vecchia scansione lineare con Path ORAM, rendendolo computazionalmente molto più efficiente ed aprendo nuove frontiere per il miglioramento della privacy.
Si parla di nomi utente, privacy del numero di telefono e possibilità di offrire un maggior numero di controlli sulla privacy del medesimo.
Soluzione alla critica numero 1:
Dalla “soluzione alla critica numero 2”, risulta che il “problema numero 1”, in realtà, non esista. Dunque non c'è bisogno di trovare una soluzione.
[reprise] Soluzione Riflessione alla critica numero 1:
1) Salve, sono l'avvocato del diavolo
Per quanto Signal abbia proprio un altro passo rispetto alla concorrenza (e lo preferisco di gran lunga agli altri), il fatto che si basi sul numero di telefono di ogni utente per costruire il grafo sociale relativo, implica da una parte un'innegabile facility, dall'altra uno sbattimento notevole fra enclavi, oram e altre robe che richiedono, tempo (di sviluppo e computazionale), server e soldi.
Non costituisce un problema lato utente ma, cambiando prospettiva (l'avvocato del diavolo, appunto), mettendoci nei panni di Signal certamente sì.
Oltretutto, il primo livello di protezione, l'enclave SGX, era passibile di diversi attacchi nelle prime versioni dei processori Intel che le supportavano.
2) Non di sole facility vive l'uomo
Se non ci fosse il numero di telefono ma solo un nome utente anonimo (che permette comunque di effettuare un certo numero di controlli), niente enclavi, niente oram, niente sbattimenti. E niente grafo sociale, ovvio. L'utente dovrà farselo a mano aggiungendo via via le identità.
Basta usare account anonimi e la privacy è salva.
Nonostante se ne sia parlato parecchio e che l'argomento ricorra periodicamente, non mi trova particolarmente d'accordo.
Dove e a chi è soprattuto utile Signal?
L'esperienza Snowden dovrebbe averlo insegnato: dovunque ci siano regimi dittatoriali, dissidenti o soggetti passibili di spionaggio governativo.
In quei casi, di chi si dovrebbe fidare l'utente? Di un numero di telefono che, si suppone, sia già trusted, o di un account per il quale il processo di verifica, soprattutto in quei contesti, è tutt'altro che banale?
3) Conclusioni
Dovendo scegliere, ovviamente sceglierei il minore dei due mali, vale a dire il numero di telefono perché: 1. mi dà maggiori garanzie che dietro quel numero ci sia chi dice di esserci. 1. un mistificatore si può nascondere facilmente dietro un falso account. Attaccare un enclave SGX e un'implementazione ORAM è tutt'altro che banale e alla portata solo di impianti governativi ben motivati e danarosi.
Quindi ben vengano enclavi, oram e varie. E ovviamente le facility del grafo sociale.
Riferimenti:
Note:
- Enclave SGX (aka Intel Software Guard Extensions) [↵]
- Enclave SGX Doc [↵]
- Path Oram [↵]