Una soluzione, se si finisce con l'utilizzo dell'API KeyStore, è di generare la password in modo dinamico in fase di esecuzione ogni volta che l'app deve accedere al KeyStore. Se si basa l'algoritmo della password su una variabile semplice, ma variabile, legata all'installazione specifica come il MEID del dispositivo (o altro ID specifico del dispositivo fisico acquisito in fase di esecuzione), è possibile fornire una chiave per il blocco che diventa sempre più difficile prendere.
Esempio: utilizzare un ID dal dispositivo fisico, tagliare in tre posizioni e aggiungerle alla posizione finale nella stringa ID, quindi aggiungere le iniziali alla stringa in modo programmatico. Penserei che questo approccio darebbe un livello di sicurezza che non può essere facilmente rotto a meno che il cracker non sappia come hai fatto la chiave (cioè il tuo codice sorgente).
MEID = MEID + "fluffy" + "2008";
Dove MEID è una stringa con un po 'ID del dispositivo, "soffice" è il nome dei tuoi migliori amici gatto, e "2008" è l'anno di un evento importante nella vostra vita. Quindi inserisci questa nuova stringa in un array, analizza un numero adatto a te (il giorno del mese in cui hai ottenuto la patente di guida, ad esempio), prendi tre caratteri e rilascia questi caratteri alla fine della stringa. Aggancia dalla parte anteriore della corda al numero di posizioni necessarie per la tua chiave e via. Questo non dovrebbe essere un compito molto intensivo del processore quindi, con un codice di tolleranza agli errori per le variabili, dovresti essere in grado di eseguirlo nel tuo processo principale anche senza troppa preoccupazione di ottenere un ANR dal sistema. Se vuoi davvero diventare froggy, converti la stringa in bit ad un certo punto e 'bitwise op' le modifiche. Viola, una chiave dinamica in basso, che è unica per il dispositivo su cui viene eseguita!
EDIT:
Come @RedWarp sottolineato, decompilazione un .apk è sempre nel regno del possiblility per qualsiasi codice oggetto con gli strumenti adeguati e la motivazione. Se la generazione della "chiave" è un processo veramente importante, è necessario astrarre la chiave gen al di fuori dell'ambito dell'app.
Il vero punto che sto cercando di fare con questa risposta è che un po 'di prospettiva può andare in un modo per quanto riguarda la sicurezza minima. Una sicurezza più forte è più approfondita di una semplice risposta da parte mia.
Beh, se si memorizzano i dati in '/ dati/dati dell'applicazione/ /' allora solo che l'applicazione possa accedervi. Questo non è vero se il telefono è radicato però. Ma a parte questo, dovresti essere ok a memorizzare i dati della password lì. –
Falmarri