Facciamo chiarezza sulla privacy tra Telegram, Whatsapp e Signal

Un discorso che non confronterà le singole funzionalità delle varie app, ma si fermerà sul lato tecnico riguardo la sicurezza delle proprie conversazioni

Prima di Telegram Whatsapp era l’eroe indiscusso della messaggistica mobile, ma da quando è nato (Telegram) sono nati gli ennesimi fan che criticano un servizio a favore dell’altro. Già non bastavano i Mercedes-Alfa, gli Apple-Android, i Mac-Windows, e tutti gli altri, bisognava creare altre fazioni perché non eravamo abbastanza soddisfatti.

Telegram esiste dal 2013, da allora è sempre stato superiore a Whatsapp sotto ogni punto di vista, ma nonostante ciò Whatsapp ha tenuto testa grazie solo alla sua popolarità facendolo restare ancora (tutt’ora) l’app di messaggistica più utilizzato al mondo.

Nei mesi passati è entrato a gamba tesa (senza volerlo) un terzo concorrente, Signal, non proprio nuovo ma valido oserei dire, a causa di un cambio di policy di Whatsapp che ha fatto scalpore e ha causato la migrazione di quella parte di utenti che Telegram proprio non vogliono usarlo, ma che non vogliono usare più nemmeno Whatsapp. È nata così la (forse prima) trio-guerra tecnologica tra 3 fazioni differenti di fans che si scagliano tutti contro tutti a favore del proprio servizio preferito, roba che Grand Theft Auto 2 nasconditi.

Oggi incameriamo un discorso che riguarda la sicurezza tra le tre app più discusse al momento, e cioé Whatsapp, Telegram e Signal. Ne parleremo focalizzandoci sulla sicurezza della trasmissione dei dati, e la sicurezza dell’app. In questo discorso non parleremo di chi ha i gruppi o le faccine più belle.

Whatsapp

Cominciamo da lui, il più utilizzato e ancora devo capire il perché in quanto Whatsapp non comunica né il codice del proprio server, né il codice della propria app. Le comunicazioni sono crittografate in modalità End-to-End utilizzando i Signal Protocol, l’unica cosa opensource e non sviluppata da loro che garantisce sicurezza durante il trasferimento dei dati.

Il problema di fondo di WhatsApp è praticamente nell’app che, essendo a codice sorgente chiuso, non permette agli utenti di sapere cosa fa nell’atto pratico. Ogni anno, in media, sbuca un bug che permette a terzi di prendere possesso del proprio smartphone in qualsivoglia maniera. Sono sbucate applicazioni che permettevano di intercettare le comunicazioni che avvenivano in una rete casalinga di chi usava WhatsaApp. Non sto inventando nulla, fate una ricerca su internet. Noi non sappiamo se alla fine della fiera l’app comunica al server la chiave crittografica permettendogli di decriptare le nostre conversazioni.

Non abbiamo sicurezza del contrario, e non potendo accedere al codice sorgente dell’app non possiamo essere sicuri che le conversazioni che avvengono usando quest’app siano realmente sicure, nonostante questa utilizzi crittografia end-to-end. WhatsApp ci chiede di fidarci sulla sua parola, ma WhatsApp appartiene a Facebook, finita più volte nel mirino per abuso dei dati dei propri utilizzatori.

Inoltre, Whatsapp con il suo servizio wa.me che permette di creare un link di contatto utilizzando un numero di telefono mette a rischio la privacy dei suoi utenti in quanto permetterebbe di eseguire un’interrogazione per sapere se un numero è registrato al servizio e quindi esiste.

Usando un codice simile a questo, che è scritto in PHP ma è possibile riprodurlo facilmente in tutti i linguaggi di programmazione esistenti

<?php
$paese = '39';
$prefissi = ['333'];

foreach ($prefissi as $prefisso) {
    for ($i = 0; $i <= 9999999; ++$i) {

        $numero = $prefisso.str_pad($i,7,"0",STR_PAD_LEFT);
        echo "<a href='https://wa.me/".$paese.$numero."' target='_blank' />".$numero."</a> ";

    }
}
?>

abbiamo la possibilità di creare una pagina che contiene i link di contatto a tutte le possibile numerazioni italiane che cominciano con 333. A questo punto basta costruire un bot che li interroga uno ad uno senza necessariamente scrivere un messaggio ad ognuno di esso, e quando riceve un messaggio di errore per utente inesistente, elimina il numero interrogato dalla lista.

Con un sistema del genere chiunque ha la possibilità di interrogare il servizio wa.me creando un database contenente tutti i numeri mobili italiani (e non) che hanno un account attivo su Whatsapp, e quindi avere certezza dell’esistenza del numero. Il tutto senza necessariamente bucare i server di Whatsapp. Whatsapp è un’app che io sconsiglio di utilizzare a chiunque.

Telegram

Telegram non è una semplice app di messaggistica, è una social-chat cloud multipiattaforma, è quella che preferisco e che uso di più in assoluto, ma in questo discorso non sarò di parte. Telegram offre due tipi di conversazioni, quella standard e quella segreta, e partiremo da quest’ultima in quanto è più semplice.

Le chat segrete di Telegram sono realmente sicure, esse godono di una valida crittografia end-to-end che impediscono a dispositivi terzi di decodificare e leggere la nostra conversazione in quanto la chiave per decrittare i messaggi è locata esclusivamente nei due dispositivi che stanno parlando in quel momento. Una chat segreta che comincia usando il client dallo smartphone non può essere continuata dal computer, in quanto la chiave crittografata si trova solo nel dispositivo dove comincia la conversazione. Telegram non ha rilasciato i codici sorgenti del proprio server, ma il codice delle app ufficiali è opensource, e chiunque può verificare che la chiave crittografia è nel nostro dispositivo e non viene trasmesso.

Discorso distinto è quello che riguarda le conversazioni di Telegram di tipo standard, che si sono crittografate, ma la chiave crittata non si trova nel nostro dispositivo, si trova nel server di Telegram, che ricordo non abbiamo i sorgenti in quanto non sono mai stati rilasciati. In questo tipo di conversazioni rientrano le conversazioni cloud (quelle che cominciamo dallo smartphone e continuiamo da computer desktop, e viceversa), gruppi e canali. Se terzi vogliono intercettare le nostre conversazioni non ci riusciranno, ma non abbiamo l’assoluta sicurezza che in Telegram non leggano le nostre conversazioni e non guardino i nostri files in quanto avendo loro la chiave di crittografia è una cosa che possono fare.

Apriamo una parentesi riguardo il concorso di $ 200.000 in Bitcoin a favore di chi riesca a decrittografare un indirizzo email che è stato crittografato con la loro app. Si tratta di un concorso stupido ed inutile che probabilmente non verrà vinto mai da nessuno e che in realtà non dimostra alcuna sicurezza nel metodo di trasmissione delle chat standard di Telegram. Ne spieghiamo il motivo entrando un minimo nel tecnico.

Per verificare la sicurezza di un’app di messaggistica vengono utilizzati 3 tipi di attacchi

KPA, Known Plaintext Attack

Cominciamo dicendo che si tratta del tipo di attacco che richiede Telegram, è quello di basso livello ove Telegram fornisce una stringa e pretende la decodifica per scoprire l’indirizzo mail che si cela dietro.

È un tipo di attacco che permette all’attaccante di avere a disposizione in chiaro il testo cifrato da decifrare, ma non permette di interagire con il sistema. Praticamente si viene messi nei panni di qualcuno che sniffa i flussi dei messaggi e li deve decodificare.

Immaginiamo un sistema che crittografa sempre lo stesso messaggio con lo stesso testo cifrato. Se vengono crittografati due messaggi diversi, i loro testi cifrati sono diversi, ma se lo stesso messaggio viene crittografato due volte, i testi cifrati sono gli stessi. All’attaccante viene fornito un testo cifrato e gli viene detto “decriptalo” trovando la mail che c’è all’interno.

L’attaccante per poterla decrittografare dovrà elaborare tutte le possibili combinazioni che può avere un’email con tutte le possibili chiavi che possono essere usate per crittografarla. È un’opera impossibile con le potenze di calcolo offerte dalla tecnologia esistente oggi, e nessun attaccante che si rispetti si cimenterebbe nell’impresa.

Solitamente gli hacker, a meno che le password degli account di un servizio non siano pippo o 12345, non si mettono mai a calcolare tutte le possibili combinazioni delle password di un account. Piuttosto bucano il server impossessandosi sia del database che della chiave usata per memorizzare le password, e così le recuperano tutte.

Siccome nessuno ancora è riuscito a decifrare l’indirizzo mail che c’è nel loro messaggio decifrato non significa che il sistema di crittazione di Telegram sia realmente efficiente, però nel web gira ancora il messaggio del nessuno ha vinto il premio, per cui Telegram è sicuro.

Telegram utilizza questo stratagemma per dire che se il livello più basso non viene violato allora il sistema è sicuro. Ma questo non è vero perché magari nessuno sarà in grado di scoprire cosa nasconde quella stringa, ma non sappiamo in quanti sarebbero in grado di bucare il sistema e impossessarsi almeno in parte dei dati che ci sono all’interno.

CPA, Chosen Plaintext Attack

Questo sistema permette all’attaccante di fare in modo che il sistema cripti anche i messaggi arbitrari. Praticamente l’attaccante ha la possibilità di ottenere messaggi crittografati a scelta dal sistema.

Questo permetterebbe all’attaccante di riuscire a focalizzarsi non solo su messaggi che contengono indirizzi email, ma anche con testi normali che magari non contengano caratteri speciali e che quindi sarebbero più semplici da identificare.

È un attacco di medio livello che offrirebbe già più possibilità all’attaccante di violare il sistema. Telegram, ovviamente, non offre la possibilità di farne uso per il contest.

CCA, Chosen Plaintext Attack

Questo sistema permette all’attaccante la possibilità di inviare un messaggio al sistema, e di ricevere in risposta il suo corrispettivo testo crittografato.

Con il KPA, l’attaccante deve calcolare tutte le combinazioni probabile indirizzo email / probabile chiave, ma con il CCA l’attaccante deve calcolare solo tutti i probabili indirizzi mail, in quanto per ogni mail generata la si invia al sistema, e si ottiene una stringa che si va a comparare da quella fornita da Telegram. Nel caso in cui le due stringhe combaciassero avremmo trovato la mail crittata e quindi avremmo vinto i $200.000.

Invece non si vincerà nulla perché questo sistema non è consentito ai fini del concorso in quanto Telegram non permette di comunicare con il sistema, ma si sottovaluta che un test di questo tipo sarebbe fondamentale per verificare la corretta sicurezza di una chat di tipo standard di Telegram.

Concludiamo su Telegram

È un’app che utilizziamo molto perché particolarmente mirata per il business. A parte per la gestione dei gruppi e dei canali, permette di farsi contattare attraverso una username (un po’ come accade con le mail) e quindi senza comunicare a sconosciuti su internet il nostro numero di cellulare.

Signal

Signal è l’app di messaggistica che sostituisce gli SMS, ed è fatta come deve essere fatta un’app di messaggistica seria. Sicura, crittata, opensource. Avendo il codice aperto dell’app sappiamo fedelmente quell’app che cosa fa, sappiamo come funziona il server, e possiamo fare tutti i test di decrittazione che vogliamo.

L’unica pecca di Signal è che nonostante in funzione dal 2014 è sempre stata usata pochissimo, e l’enorme afflusso di utenti che ha ottenuto nell’ultimo periodo non era previsto ed ha provocato continui down del servizio.

A parte questo la mettiamo al primo posto delle 3 per quanto riguarda la privacy, se la vostra ricerca è focalizzata su un’app che sostituisce gli sms. Se vogliamo qualcosa di più avanzato, e che permetta di mettere da parte le mail, i news reader, i podcast, il cloud, e tantissimi altri strumenti che Telegram può tranquillamente sostituire, quest’ultima è un’ottima alternativa MA dobbiamo ricordare che per avere la massima privacy dobbiamo sempre avviare una nuova conversazione segreta, in quanto quella di default non lo è.

Controlliamo ciclicamente il funzionamento dei link nei nostri articoli. Se noti dei link che non funzionano segnalacelo tra i commenti. Se hai apprezzato l'articolo considera l'idea di sostenere il blog anche con una piccola donazione. Grazie. Patreon / Ko-fi / Liberapay / Paypal

6 commenti

  1. Segnalo che alla data del 24.3.2021 Telegram non fa più distinzione tra conversazione normale e segreta.
    Ovviamente è stato applicato lo standard di riservatezza più alto: in pratica ora tutte le conversazioni corrispondono alla precedente conversazione segreta.

    1. Ciao Emilio, grazie per l’intervento. Hai documentazione (link) per accertare ciò che hai dichiarato? Considera che se vuoi garantire la funzionalità chat-cloud tra più dispositivi non dovrebbe essere possibile crittare la chat in modalità end-to-end così come accade con le chat segrete.

      1. Mi scusi, non è necessaria documentazione, basta aprire l’app Android o Desktop e controllare che la differenza non esiste più, seguendo costantemente i changelog degli sviluppatori questo è stato dichiarato in uno degli aggiornamenti dell’ultimo mese.

        1. Forse sta facendo un po’ confusione. Se ha Android probabilmente non vede più le voci “Nuovo canale, Nuova chat segreta” direttamente nel menù principale, questo perché sono state spostate sotto al comando matita per avviare una nuova chat, inoltre è sufficiente aprire il contatto da qualsiasi chat per trovare il comando “Avvia chat segreta”, e usandolo si avvia una ulteriore chat crittata verso quel contatto che può essere gestita solo dal dispositivo che l’ha avviata, come è accaduto da sempre.

  2. Ciao, quando dici “Noi non sappiamo se alla fine della fiera l’app comunica al server la chiave crittografica permettendogli di decriptare le nostre conversazioni.
    Non abbiamo sicurezza del contrario, e non potendo accedere al codice sorgente dell’app non possiamo essere sicuri che le conversazioni” stai anche tenendo conto dell’app WhatsApp web?

    Quando rivolgi il tuo cellulare al video e leggi il QR code, poi magicamente ti trovi tutte le tue conversazioni, in chiaro, a video.

    Non è la prova provata che la chiave serve solo a criptare la trasmissione?
    Le conversazioni o sono in chiaro (e perché non dovrebbero? Il servizio è gratuito) o whatsapp è in grado di recuperare la chiave.

    1. Ciao Sandro, io tengo conto solo del funzionamento dell’app, non dell’applicativo web. Il secondo non è detto che abbia la chiave per decriptare le tue conversazioni. Essendo essa dipendente dall’app installata sul tuo dispositivo, andando ad inquadrare il codice altro non dovresti fare che aprire un canale di trasmissione tra il tuo mobile e il tuo desktop, non dovresti passare per il server ma a questo non diamo certezza in quanto non abbiamo studiato questo lato del discorso.

      La chiave serve solo a criptare e decriptare la trasmissione, quello è il suo unico scopo quindi non credo serva avere prove provate.

      Il nostro dubbio resta sulla possibilità che ha l’app di comunicare la chiave, o di spontanea volontà o attraverso una backdoor. Di certo non ne abbiamo la certezza, ma non avendo la certezza del contrario (non) potendo mettere le mani sul codice il dubbio deve esserci. Avendo il source di Telegram e di Signal possiamo verificarlo.

      Ciao e grazie dell’intervento
      Francesco

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *