Un'introduzione alla crittografia dell'intero disco nei dispositivi Android. In particolare parlerò di punti di forza, debolezze, vantaggi e svantaggi, aspetti da considerare ed un'interessante tecnica di crittanalisi.
di carte di credito, files, foto ecc. siano accessibili a chi (intenzionalmente o accidentalmente) venga in possesso del nostro telefono o tablet nel quale tali informazioni sono memorizzate, Android ha introdotto alcuni meccanismi di sicurezza. Uno di questi è la crittografia dell'intero dispositivo, che sfrutta il sottosistema di crittografia del Linux kernel “dm- crypt”, e resa disponibile in modo nativo dalla versione 3.0 di Android (Honeycomb). Introduzione (1)
definizione classica di crittografia: trasformare le informazioni in modo che esse siano incomprensibili a tutti, tranne a coloro che possiedono la chiave di decifratura. Nonostante la crittografia aggiunga un ulteriore livello di sicurezza ai classici sistemi di blocco dello schermo (sequenza, PIN, password o riconoscimento facciale), non tutti gli utenti la ritengono necessaria. Introduzione (2)
e altre tecniche di crittanalisi (come FROST) per estrarre in modo relativamente semplice dati dal dispositivo, anche se questo è stato preventivamente crittografato e protetto mediante PIN o password. Siccome la crittanalisi risulta più difficile nei dispositivi crittografati, sarebbe però uno sbaglio non considerare questi ultimi come più sicuri rispetto ai dispositivi non crittografati. Introduzione (3)
considerare i seguenti aspetti: - Crittografare l'intero disco richiede un'ora o più (in base alla quantità di dati) e durante tale periodo il dispositivo si riavvia più volte. E' perciò richiesto che quest'ultimo sia collegato alla corrente elettrica, o che la batteria sia stata preventivamente caricata. - Verrà richiesto di impostare un PIN o una password, che sarà successivamente utilizzato per sbloccare il dispositivo e come chiave di crittografia. Aspetti da considerare (1)
la possibile perdita permanente di tutti o parte dei dati. - La crittografia è irreversibile, l'unico modo per disabilitarla, è eseguire un reset di fabbrica, con conseguente perdita dei dati contenuti nel dispositivo. - Il processo di crittografia/decrittografia richiede caricamenti e risorse aggiuntivi. Questo può essere sconveniente per i dispositivi datati, causando rallentamenti più o meno percepibili. Aspetti da considerare (2)
PIN o la password all'accensione. Questo permette al dispositivo di decrittografare i dati, in modo che siano utilizzabili normalmente. - Una volta crittografato il dispositivo, la funzionalità di sblocco mediante Swipe è disabilitata, poichè meno sicura rispetto a PIN o password. - Durante il processo di crittografia l'apposito framework gestisce opportunamente i successi ed i fallimenti delle operazioni intermedie, segnalando all'utente gli eventuali problemi riscontrati. Aspetti da considerare (3)
a disposizione diverse opzioni, tra le quali la possibilità di scegliere quali file crittografare. In questo modo, i dati contenuti nella scheda SD non saranno accessibili se quest'ultima viene utilizzata in un sistema diverso, risultando come vuota o formattata con un filesystem non supportato. Per questo scopo è anche possibile affidarsi ad una delle molte applicazioni di terze parti presenti sullo store Google Play. Crittografia della scheda SD
delle versioni 2.6 e successive, utilizzato oggigiorno per la crittografia sui terminali Linux. Il filesystem preferito per questo scopo è ext4, poiché è indipendente dal tipo di crittografia utilizzato o meno. Il cifrario è AES a 128-bit. La chiave di cifratura è un numero a 128bit, derivato dalla password (scelta dall'utente) mediante PBKDF2, funzione proveniente dalla libreria SSL. Viene per di più utilizzato un “random salt” al fine di aggiungere maggiore entropia alla funzione di hash da PBKDF2. Aspetti tecnici (1)
per le sue caratteristiche di robustezza alla crittanalisi e velocità di esecuzione, la crittografia nei dispositivi Android non è però priva di debolezze. Infatti: - La lunghezza della password e del PIN è limitata a 16 caratteri. Non è possibile perciò utilizzare una lunga frase di sblocco, limitando l'utente nella scelta di una sequenza robusta. Aspetti tecnici (2)
ogni volta che si vuole sbloccare lo schermo, gli utenti saranno meno propensi a scegliere una password lunga o difficile da digitare, seppur più robusta. - L'obbligo di inserire la chiave di decrittazione ad ogni sblocco, aumenta le probabilità che occhi malintenzionati ne vengano a conoscenza. Il motivo principale per cui i progettisti Android hanno scelto di utilizzare la stessa password sia per sbloccare il dispositivo che per decrittografarne i dati, è che il possederla permette un completo accesso ai dati. Aspetti tecnici (3)
dati in due differenti scenari: - La password di sblocco protegge i dati da un attacco a forza bruta “online”, ed in questo caso anche una password più debole sarebbe ammissibile, dato che il sistema operativo già offre un rigido limite al numero di tentativi consecutivi disponibili per l'inserimento della password. - La crittografia dell'intero disco, invece, offre una protezione agli attacchi “offline”, molto più potenti dei primi, visto che possono essere messi in atto attraverso strumenti avanzati. Per queste ragioni la password di cifratura dovrebbe essere diversa e più forte della prima. Aspetti tecnici (4)
priva di debolezze. Il motivo è legato al fatto che password e PIN utilizzati tendono ad essere deboli, a causa dei limiti imposti dal sistema e da scelte “poco robuste” degli utenti. Evitando che (come avviene attualmente) Android utilizzi la stessa password sia per decrittografare i dati che per sbloccare il dispositivo, si risolverebbe almeno parte del problema. Crittanalisi (1)
decrittografia del telefono all'accensione, e la seconda (più semplice e facile da ricordare) per il semplice sblocco del dispositivo. Eliminando il limite dei 16 caratteri, inoltre, si lascerebbe maggiore libertà all'utente, esortandolo a scegliere sequenze lunghe e robuste piuttosto che PIN numerici, password o pattern corti e troppo semplici. Crittanalisi (2)
ricercatori dell'Università di Erlangen-Nuremberg in Germania, hanno scoperto un metodo relativamente semplice per violare un dispositivo Android, accedendo ai dati personali in esso contenuti nonostante esso sia stato crittografato. Questo software si chiama FROST e prevede l'esecuzione di un cold boot attack: inserire il dispositivo in freezer, riavviare il sistema scollegando completamente l'alimentazione e ricollegandola nuovamente. FROST: un caso concreto (1)
esempio mediante il reboot), la sua memoria RAM viene cancellata. Ma per effetto delle basse temperature ed attraverso il cold booting, questo processo viene bypassato ed i dati contenuti nella memoria preservati. In seguito all' interruzione di alimentazione, infatti, la RAM impiega del tempo (per quanto brevissimo) per perdere memoria delle informazioni in essa contenute. FROST: un caso concreto (2)
si dispone di uno strumento per leggere la RAM, è possibile così estrarvi tutte le informazioni contenute, anche quelle sensibili come la chiave di crittografia utilizzata. Il software FROST permette così l'accesso ai dati memorizzati nella RAM dopo un cold boot, recuperando la chiave di crittografia usata, o trasferendo tutto il contenuto della RAM ad una altro PC mediante cavo USB (per analisi più approfondite). FROST: un caso concreto (3)