Ottima domanda e benvenuto nella mina terrestre della crittografia mobile! Sfortunatamente la risposta dipende in realtà da quale modello di iPhone / produttore Android verrà eseguito l'app. Ecco una piccola discarica di ciò che so. Spero che ti rimetta sulla buona strada!
Sia iOS che Android forniscono librerie crittografiche (crittografia) nel sistema operativo. Dovresti riuscire a google per i documenti abbastanza facilmente.
L'intoppo con qualsiasi crittografia basata su software sarà "dove memorizziamo la chiave di decodifica?". Ovviamente, la memorizzazione del database crittografato nello spazio di archiviazione dell'app, quindi l'archiviazione della chiave di decrittografia in un file proprio accanto ad esso è piuttosto inutile.
Sempre di più, i dispositivi mobili stanno iniziando a disporre di chip hardware sicuri per il keystore (spesso sotto forma di TPM , o ciò che Apple chiama "Secure Enclave") che rilascerà la chiave di decodifica all'app in modo sicuro. Di solito hanno molta flessibilità in termini di come / quando vengono rilasciati i tasti ("accessibile solo per 10 minuti dopo lo sblocco del dispositivo", "solo dopo l'accesso basato su password", ecc.)
Il problema è che queste tecnologie sono ancora molto nuove e in rapida evoluzione, quindi non tutti i dispositivi lo supportano ancora e quelli che non dispongono ancora di un set di funzioni / API coerente. È peggio su Android, ma c'è qualche incoerenza anche tra le versioni di Secure Enclave di Apple.
Android Marshmellow ha effettuato un'importante revisione della crittografia in modo che le chiavi private non debbano mai essere consegnate all'app, tutte le operazioni di crittografia / decrittografia possono essere eseguite all'interno del keystore protetto. Ma i dispositivi Android < 6.0 sono hit-and-miss.
Se decidi di seguire questa strada, la realtà è che dovrai rilevare la versione del sistema operativo (e forse il produttore) in fase di esecuzione e utilizzare un codice diverso in base a ciò che trovi. Probabilmente sarà un grande sforzo dev e un dolore nel sedere per il QA.