Perché crittografare i dati sensibili dell'app per dispositivi mobili

5

Durante la creazione di un'app mobile, è previsto (OWASP, ecc.) che tutti i dati sensibili che l'app memorizza siano correttamente crittografati. Ciò includerebbe ad esempio le password, i cookie di sessione, i token OAuth.

Su Android le app normalmente usano SharedPreferences per memorizzare tali dati. Questi possono essere letti solo dall'app stessa, a meno che qualcuno non abbia accesso root al telefono, nel qual caso lui / lei può leggere le SharedPreferences di tutte le app.

Anche se sono pienamente d'accordo con la crittografia di tali dati, non mi è chiaro quale minaccia stiamo mitigando, perché:

  • Su un telefono non rooted, solo l'app stessa può leggere i dati, crittografati o meno.
  • Su un telefono rooted tutte le scommesse sono disattivate, poiché root può eseguire la brute-forzare le chiavi master e quindi estrarre le chiavi app per decrittografare i dati.

Un punto che vedo è che se l'intero contenuto del telefono dovesse essere sottoposto a backup su un servizio / file system esterno, le protezioni del sistema operativo non sarebbero più applicabili, quindi chiunque abbia accesso al backup potrebbe leggere tutti i file . C'è qualche altra minaccia che stiamo mitigando usando la crittografia?

    
posta Andrei Socaciu 19.12.2016 - 11:55
fonte

3 risposte

4

La risposta è parzialmente nella tua domanda:

On a non-rooted phone, only the app itself can read the data, encrypted or not.

Questa è un'ipotesi del sistema operativo del telefono che fornisce le garanzie di sicurezza correttamente. Le prove pratiche mostrano che spesso non è così, quindi è proprio per questo che è consigliabile crittografare i dati sensibili: se il normale controllo degli accessi fallisce.

Quindi le persone escogitano due contromisure: - crittografia di tutto con segreto esterno (password dell'utente) - crittografia di tutto con un segreto, che viene archiviato in un archivio compartimentato sicuro (trustzone / enclave sicura).

Anche quest'ultimo non è abbastanza buono (quando l'implementazione sul lato OS è brutta, la zona di fiducia è soggetta ad attacchi, vedi link ).

On a rooted phone all bets are off, since root can brute-force the master keys and then extract the app-keys to decrypt the data.

L'obiettivo di una buona crittografia è quello di rendere inutile il brute-forcing.

    
risposta data 19.12.2016 - 17:15
fonte
4

Questo riguarda la difesa in profondità.

Sebbene solo l'app corretta dovrebbe essere l'unica con accesso su un telefono non root, ci sono molti esempi (specialmente su Android) di applicazioni in grado di rompere il modello di sicurezza standard .

    
risposta data 19.12.2016 - 12:03
fonte
0

Molte app, incluse le app di chat, non crittografano il contenuto dei loro file sensibili, per i motivi esatti che hai menzionato. Quando esegui un backup sull'archivio locale, ad esempio la sdcard, o in una posizione remota, devi crittografare i file.

    
risposta data 19.12.2016 - 12:02
fonte

Leggi altre domande sui tag