Cifratura dei dati per l'app per dispositivi mobili Android

8

Sto creando un'app mobile per Android. A proposito, questa è la mia prima app mobile.

Ho deciso di memorizzare i dati utilizzati nella mia app in un database SQLite nel dispositivo Android di destinazione.

I dati che sto memorizzando riguardano i dati finanziari dell'utente, quindi ho deciso di crittografare i dati prima di archiviarli nel database. Ma non voglio esaurire tutte le risorse del telefono cellulare per fare la crittografia e la decrittazione.

BouncyCastle farà il trucco. Ma sono preoccupato se qualcuno decompila il codice, ottiene la chiave di sicurezza e decrittografa i dati. C'è qualche alternativa per questo. Qualunque idea è gradita.

    
posta Thusitha Nuwan 07.12.2012 - 09:41
fonte

1 risposta

11

Non incorporare una chiave codificata nella tua applicazione; questo fornisce poco più di una banale offuscazione per chiunque inversioni la tua applicazione.

Per generare una chiave per la crittografia, utilizza un algoritmo di derivazione chiave come PBKDF2 , che essenzialmente esegue centinaia di rounds di una funzione di hash su una password, combinando insieme i risultati per produrre una chiave sicura. Per capire perché hai bisogno di un algoritmo di derivazione chiave, dai un'occhiata a questa altra risposta .

I vantaggi di PBKDF2 sono:

  • Numero di round configurabile, per adattare la velocità di calcolo al tuo dispositivo mantenendo un ragionevole margine di sicurezza contro la forza bruta.
  • Sicurezza garantita, vale a dire almeno strong quanto la funzione di hash sottostante.
  • Può produrre qualsiasi tasto di dimensione.
  • Facile da implementare (c'è già un'implementazione Java per te)

In pratica, lasci che l'utente inserisca la sua password, quindi calcola la chiave usando PBKDF2, quindi usa quella chiave per decodificare / crittografare i dati.

Ora, per quanto riguarda l'effettiva crittografia, suggerisco caldamente di attenermi a qualcosa di semplice se non hai già trattato la crittografia. I cifrari a blocchi devono essere utilizzati in una modalità operativa e richiedono un vettore di inizializzazione (IV) per essere sicuri. Ci sono molti dettagli di implementazione che devono andare esattamente nel giusto modo perché siano effettivamente sicuri, quindi in questo caso suggerisco di leggere varie altre domande qui per comprenderle ulteriormente.

    
risposta data 07.12.2012 - 10:15
fonte

Leggi altre domande sui tag