WhatsApp resta il client di messaggistica istantanea più utilizzato in assoluto nonostante le critiche che arrivano periodicamente da più parti oltre che dalla concorrenza: WhatsApp non è sicuro: Pavel Durov accusa di nuovo l’app di Facebook. Tutto ciò mentre le istituzioni europee sembrano voler virare su Signal: Signal, l’app di messaggistica che avrebbe consigliato anche la Commissione Europea: l’autore Moxie Marlinspike è l’ideatore dell’algoritmo crittografico usato anche da WhatsApp per la crittografia end-to-end.
La crittografia end-to-end fa sì che i messaggi scambiati tra mittente e destinatario siano leggibili sempre e solo da questi due soggetti escludendo quindi qualunque intromissione da parte di terzi. Lo stesso gestore del servizio di messaggistica non potrà in alcun caso accedere ai dati scambiati.
Scrive WhatsApp in questa pagina di supporto: “alcuni dei momenti più personali sono stati condivisi su WhatsApp, motivo per cui abbiamo costruito la crittografia end-to-end nella nostra applicazione. Quando crittografati end-to-end, messaggi, foto, video, messaggi vocali, documenti e chiamate non possono finire nelle mani sbagliate“.
Gli sviluppatori dell’applicazione di messaggistica proprietà di Facebook confermano che la crittografia end-to-end riguarda in WhatsApp non soltanto i messaggi testuali ma anche le foto, i video, i messaggi vocali, i documenti e le chiamate.
Nel documento tecnico pubblicato a questo indirizzo, WhatsApp dettaglia le misure di sicurezza utilizzate per proteggere i contenuti scambiati tra gli utenti del network.
Perché l’inoltro di video e altri allegati è così veloce in WhatsApp? Non sarà che i contenuti sono memorizzati in chiaro?
Alcuni utenti ci hanno chiesto lumi sul comportamento di WhatsApp da molti definito “strano” o “sospetto”.
Come avrete certamente notato, quando si invia un allegato pesante su WhatsApp a un singolo contatto, l’upload richiede del tempo a seconda della tipologia di connessione in uso e della banda effettivamente disponibile in upstream.
Ma perché se – una volta inviato il video o un altro allegato pesante – si prova a inoltrarlo a un altro contatto (usando l’apposito pulsante evidenziato in figura con una freccia rossa) l’invio è istantaneo?
È evidente che WhatsApp mantiene un database con gli hash di ciascun file inviato sul network dagli utenti e, separatamente, conserva per un po’ di tempo – sempre lato server – i file in forma crittografata (viene mantenuta una sorta di cache).
Questo approccio fa sì che l’utente non debba effettuare nuovamente l’upload dello stesso file nel caso in cui decidesse di inoltrarlo via WhatsApp ad altri contatti.
Se WhatsApp salva sui suoi server i file in forma crittografata, ciò dovrebbe avvenire con la chiave pubblica del destinatario originale. Come fa, quindi, WhatsApp a inoltrare istantaneamente a un terzo contatto, su richiesta dell’utente, lo stesso file se lato server è cifrato e quindi teoricamente illeggibile da parte dei fornitori del servizio di messaggistica? Gli allegati non saranno forse memorizzati in chiaro sui server di WhatsApp?
Questa volta gli amanti delle teorie dei complotti resteranno delusi.
WhatsApp ha infatti implementato una apposita soluzione tecnica che permette di salvare capra e cavoli: da un lato consente di memorizzare i file sui server in forma crittografata, dall’altro di permetterne l’inoltro rapido senza inutili attese e soprattutto senza dover ripetere ogni volta l’upload.
L’approccio usato da WhatsApp è illustrato al paragrafo Transmitting Media and
Other Attachments di questo documento (pagina 6).
L’app di messaggistica installata sul terminale di chi invia l’allegato (si pensi a un video o a un’immagine, anche pesanti) dapprima codifica il file usando una chiave effimera AES-256 a 256 bit (32 byte; modalità CBC con un vettore di inizializzazione random) e aggiunge un message authentication code collegato al contenuto cifrato (viene usato l’algoritmo HMAC-SHA256).
“Traducendo” per tutti, il file viene crittografato lato client quindi caricato sullo storage cloud di WhatsApp in un’area detta “blob“. In tale “contenitore” sui server WhatsApp ci sono sia i file dell’utente ma anche quelli di altri soggetti: tutti, però, sono crittografati quindi illeggibili da parte di terzi.
La parte importante è quella successiva: il mittente invia al destinatario dell’allegato (già caricato sui server WhatsApp in forma cifrata) il necessario per la successiva decodifica del file (previa verifica della firma SHA256 e del MAC).
Effimera si dice quella chiave crittografica che viene generata a ogni esecuzione di un processo di creazione della chiave stessa. Nel caso in cui l’utente decide di inoltrare lo stesso contenuto – inviato in precedenza a un altro contatto – l’upload del file non avviene e ai nuovi destinatari viene semplicemente indicato “il puntatore” verso lo stesso elemento conservato in cache sui server WhatsApp e “riciclata” la stessa chiave per la decodifica usata in precedenza.
Dal momento che lo stesso file è memorizzato sul server deve infatti evidentemente aprirsi con la stessa chiave.
In questo caso non sembra potersi parlare di uno schema end-to-end puro (come avviene invece con i semplici messaggi su WhatsApp) perché la stessa chiave di decodifica viene utilizzata in seno a più conversazioni separate e, quindi, con utenti diversi.
Ecco svelato il motivo per cui l’inoltro di allegati su WhatsApp già inviati in precedenza ad altri utenti risulta assolutamente fulmineo senza la necessità di ripetere alcun upload.
Video e immagini non si danneggiano più su WhatsApp perché la compressione è applicata una volta sola
Ogni volta che si invia un video o un’immagine a un contatto WhatsApp questi vengono automaticamente compressi in modo da sveltire significativamente il processo di trasferimento da un utente all’altro. La qualità dei contenuti, però, ne risente e se l’obiettivo fosse ad esempio quello di stampare una foto alla massima risoluzione (quindi utilizzando la qualità dell’originale), WhatsApp non è lo strumento migliore (a meno che non venga usato un semplice trucco; vedere più avanti).
Della compressione applicata automaticamente da WhatsApp a immagini e video abbiamo parlato a suo tempo nell’articolo Inviare foto su WhatsApp alla massima risoluzione e qualità.
La soluzione tecnica descritta al precedente paragrafo porta con sé un innegabile vantaggio: quando un utente invia un video o una foto tramite WhatsApp, i contenuti vengono compressi una volta sola perché la catena di utenti che li riceveranno (e che li inoltreranno eventualmente di nuovo) attingeranno alla copia crittografata memorizzata lato server.
In passato quando più utenti allegavano immagini e video, succedeva che i contenuti risultavano di qualità sempre più scarsa a ogni giro di condivisione. L’approccio utilizzato da WhatsApp e il database contenente gli hash ovvero le firme dei file caricati consente di scongiurare successivi danneggiamenti dei contenuti.
Chi volesse inviare inviare attraverso WhatsApp un file così come è memorizzato nel dispositivo mobile oppure da desktop e notebook con WhatsApp Web (vedere WhatsApp Web, trucchi e consigli per utilizzarlo al meglio) basta che selezioni l’icona della graffetta (“allegato”) quindi scelga Documento anziché Fotocamera e Galleria.
Così facendo il file selezionato sarà inviato così com’è, senza l’applicazione di alcun tipo di compressione da parte di WhatsApp.
Un semplice trucco che permette di scambiarsi file pronti per la stampa o utilizzabili per attività che vadano ben oltre le semplici conversazioni.