Nei giorni scorsi è stata publicata la nuova build di Android 4.4 KitKat con numero KRT16S. La pubblicazione della precedente build, la KRT16O, è avvenuta a fine Ottobre in concomitanza con la presentazione della nuova versione di Android. Il motivo per cui Google ha deciso di aggiornare la build è da ricercare in un importante bug di sicurezza relativo alla crittografia dei dispositivi.

Poichè la cifratura della memoria interna non è eseguita da molte persone e sono pochi che conoscono i dettagli di funzionamento, è opportuno spiegare come i dati vengono cifrati prima di spiegare il problema.

La cifratura su Android

Chiaramente non è semplice spiegare in poche parole un argomento così complesso, motivo per cui introdurrò alcune semplificazioni volte anche a permettere a chi non è pratico di questi argomenti di comprendere meglio.

Su Android è possibile cifrare il file system, ovvero rendere impossibile la lettura dei dati in forma comprensibile a chi non conosca la chiave di cifratura, ovvero un numero tramite cui i dati vengono resi inintelligibili. Questa operazione non è molto comune e viene spesso impiegata in ambiti specifici dove la sicurezza è un’esigenza stringente  (ad esempio smartphone o tablet aziendali).

I dati vengono cifrati utilizzando la password di sblocco dello schermo. Il sistema può utilizzare solo il PIN numerico oppure una password alfanumerica per effettuare la cifratura, non è possibile utilizzare né la sequenza né una fotografia. In questo modo Android utilizza una password nota all’utente e facile da ricordare per cifrare la vera chiave di cifratura, che è una chiave pseudocasuale da 128 bit di lunghezza (ovvero una sequenza di 0 e 1).

Ad ogni accensione del dispositivo il sistema richiede la password dell’utente per decifrare il file system, motivo per cui è necessario utilizzare una chiave che l’utente può ricordare. Una volta inserita la password, il sistema effettua la decriptazione ed è possibile utilizzare il telefono. Il solo svantaggio di questa pratica è un maggiore utilizzo di CPU quando si legge e scrive da file system.

Il problema su Android 4.4 KitKat

Il grosso problema della build KRT16O consisteva nel fatto che il sistema chiedeva di inserire la password ma non controllava che questa corrispondesse alla password precedentemente inserita e salvata. Appare quindi evidente che, una volta eseguita la cifratura, non è più possibile decriptare il file system poichè la password in possesso dell’utente è errata.

La correzione del problema è arrivata 5 giorni fa, appena 2 giorni dopo l’inizio del roll-out dell’OTA. Potrebbe essere proprio questo il motivo per cui il Nexus 4 è stato lasciato indietro e ha dovuto attendere più del solito.

È proprio in questi casi che torna utile lo staged rollout, ovvero l’invio parziale ed a piccoli passi dell’aggiornamento ai dispositivi: è stato infatti possibile contenere il problema a poche migliaia di utenti piuttosto che a milioni, grazie a questa politica. Google, però, non è certo esente da critiche per la gestione della situazione. Se era al corrente di una situazione di questo tipo avrebbe dovuto notificare gli utenti del problema e comunicare il ritardo nell’invio degli aggiornamenti ai dispositivi.

Via