La crittografia di WhatsApp ha una falla “by design”

In questi giorni la sicurezza informatica si è mischiata molto spesso con la cronaca, nelle note vicende riguardante il cyberspionaggio su molte autorità italiane. Non essendo la cronaca il nostro campo, specialmente considerato l’intreccio politico dietro la vicenda abbiamo preferito non entrare nel merito, lasciando l’argomento a testate più indicate per tale scopo. Ritornando invece nel campo dell’infosec, però, non possiamo ignorare le più recenti novità relative a WhatsApp. E purtroppo non sono positive.

La crittografia end-to-end dovrebbe rendere impossibile la lettura di messaggi ed altri contenuti al di fuori dei partecipanti di una conversazione; persino l’azienda stessa che fornisce il servizio non sarebbe in grado di avervi accesso. Come riportato dal quotidiano britannico The Guardian, però, il metodo utilizzato da WhatsApp è affetto da una falla molto rilevante, andando di fatto ad annullare la funzionalità sopra descritta. L’autore della scoperta, avvenuta lo scorso aprile, è il ricercatore Tobias Boelter. Durante lo scambio di messaggi, WhatsApp usa un protocollo denominato Signal al fine di generare per essi singole chiavi di sicurezza, che vengono trasmesse nella chat in modo da permettere agli utenti di decodificare e visualizzare il testo. Dove avviene l’errore è nel caso in cui il destinatario del messaggio risultasse offline (la singola spunta): WhatsApp può forzare la generazione automatica di una nuova chiave di crittografia per un successivo tentativo di invio non appena il contatto ritorna disponibile. Come conseguenza, il circuito diviene tecnicamente a conoscenza della chiave, rendendo possibile l’accesso alle conversazioni private ad enti interessati o nel caso peggiore malintenzionati, il tutto senza che le due parti sappiano qualcosa (o meglio, solo il mittente potrebbe accorgersene nel caso una determinata opzione di WhatsApp sia attiva, ma la notifica che vedrebbe sarebbe troppo generica per destare sospetti).

Boelter ha comunicato mesi fa a Facebook, proprietaria di WhatsApp, il bug di sicurezza: l’azienda di Mark Zuckerberg, pur ammettendone la presenza, ne ha difeso il comportamento sostenendo che è “by design”, ovvero voluto dal punto di vista progettuale. Una spiegazione più approfondita da parte di Facebook è arrivata nelle scorse ore in seguito al report pubblico del Guardian, affermando come il ricambio di chiavi sia necessario per assicurare agli utenti la corretta ricezione dei messaggi al loro rientro online. In caso di cambio dispositivo o schede SIM, infatti, le precedenti chiavi salvate in locale nell’app vengono perdute. Senza le nuove chiavi l’utente non sarebbe in grado di decodificare qualsiasi nuovo contenuto ricevuto durante il suo periodo offline. Viene sostenuto inoltre che in nessun modo su WhatsApp sarà permessa la creazione di backdoor per l’ottenimento non autorizzato di dati ed eventuali richieste di accesso provenienti da agenzie governative vengono documentate in modo pubblico.

Difficilmente ciò basterà a placare le polemiche dei più strenui difensori della privacy, che ad onor del vero spesso evitano già WhatsApp, utilizzando altri circuiti di messaggistica come Telegram o Signal, che condivide nome e sviluppatori col protocollo descritto più sopra e per scelta opposta di progetto non presenta la medesima falla. Come avvenuto in altri casi, la soluzione migliore per Facebook al fine di ridurre l’impatto della vicenda potrebbe essere la concessione di più opzioni manuali per coloro che desiderassero un maggior controllo sul proprio account, inclusa la possibilità disattivare il ricambio automatico delle chiavi crittografiche. E tutti vivrebbero felici e contenti, almeno fino al prossimo bug.

AGGIORNAMENTO: in aggiunta alle precisazioni già date da WhatsApp, anche Open Whisper Systems, sviluppatrice del protocollo Signal ha aggiunto ulteriori chiarimenti. Il circuito di messaggistica genera due chiavi per ogni utente: una privata, salvata in locale sul dispositivo, e una pubblica, sui server di WhatsApp. Questa coppia di chiavi, all’interno di una conversazione, genera un codice univoco di sicurezza che, se uguale per gli utenti partecipanti, garantisce lo scambio crittografato di messaggi. Il codice può essere verificato, numericamente o tramite QR, come da immagine di esempio sottostante.

Il ricambio delle chiavi di crittografia è prassi comune per qualsiasi sistema del genere, e ancor di più ha senso in situazioni come quelle di WhatsApp dove il cambio di dispositivo o SIM comporta la necessità alla successiva apertura del client di effettuare nuovamente la verifica del numero telefonico, al fine sia di garantire la ricezione dei messaggi arrivati durante il periodo di disconnessione sia la sicurezza stessa futura dell’utente. Cosa succede in tal caso? Se qualcuno ci invia un messaggio mentre siamo offline, vedrà la singola spunta perché il sistema non è stato ancora in grado di recapitarci il messaggio. Non appena saremo di nuovo online, il nostro dispositivo comunicherà la variazione delle chiavi, richiedendo al mittente di codificare nuovamente il contenuto sulla base di esse e variare il codice di sicurezza della conversazione in accordo. Una volta effettuato ciò, il messaggio verrà recapitato, con la conseguente doppia spunta. Chi ha la specifica opzione abilitata, vedrà nella chat una notifica che informa del cambiamento del codice.

Il nocciolo della questione, a questo punto, rimane se WhatsApp sarebbe in grado di sfruttare il cambio delle chiavi per intercettare i messaggi. Open Whisper afferma che è possibile, ma il rischio che gli utenti si accorgano visivamente di una tale operazione è così elevato che la rende di fatto improbabile. Inoltre, la progettazione del circuito stesso è stata studiata in modo che determinate informazioni vengano scambiate direttamente dai client, senza che i server centrali ne abbiano conoscenza. Inoltre, tutti i messaggi che sono già stati ricevuti mantengono le chiavi di origine, il che impedisce a terze parti di sfruttare il comportamento descritto sopra. Si potrebbe lasciare un’opzione per non far generare automaticamente nuove chiavi, come avevamo ipotizzato nel finale del nostro post? Sì, è possibile, ma a scapito dello scopo stesso del sistema. A parte la scomodità di verificare manualmente i nuovi codici di sicurezza, ciò necessiterebbe di far transitare sui server di WhatsApp quelle informazioni che sinora sono state loro negate, aumentando il rischio di intercettazioni indesiderate. Il report del Guardian, così come l’allarme lanciato da Tobias Boelter, è dunque estremamente esasperato. Non si tratta di una falla, ma di un comportamento necessario, che se non venisse effettuato di fatto indebolirebbe la privacy di WhatsApp invece di rafforzarla.

L’ultima correzione che dobbiamo effettuare, infine, è riguardo a Signal e Telegram, che avevamo citato come immuni da questa situazione. Per quanto riguarda Signal, essendo della stessa Open Whisper Systems, si comporta di default esattamente come WhatsApp. Volendo può essere impostato affinché richieda la conferma manuale del cambio codice, ma non è una prassi consigliata. Telegram, invece, adotta un proprio protocollo per proteggere le comunicazioni, con un diverso e più complesso comportamento. La crittografia end-to-end non avviene peraltro in modo predefinito, ma solo quando si creano le chat segrete; in tutti gli altri casi, il processo avviene tra client e server. Ringraziamo i lettori per le segnalazioni che ci hanno permesso questo importante aggiornamento.

Giovanni "il Razziatore"

Deputy - Ho a che fare con i computer da quando avevo 7 anni. Uso quotidianamente OS X dal 2011, ma non ho abbandonato Windows. Su mobile Android come principale e iOS su iPad. Scrivo su quasi tutto ciò che riguarda la tecnologia.

Commenti controllati Oltre a richiedere rispetto ed educazione, vi ricordiamo che tutti i commenti con un link entrano in coda di moderazione e possono passare diverse ore prima che un admin li attivi. Anche i punti senza uno spazio dopo possono essere considerati link causando lo stesso problema.