2016-04-27 38 views
6

Esistono esempi comprensibili di utilizzo di KeyStore in Android?Come archiviare la stringa protetta in Android?

Non riesco davvero a capire come sia necessario proteggere la password/token/any_else nell'applicazione Android nel dispositivo ROOTED per essere utilizzata dagli hacker che hanno accesso fisico al dispositivo.

Capisco di poter generare KeyPair con alcuni ALIAS e utilizzare la sua chiave privata come password del database, ad esempio, ma sono interessato a: un hacker può leggere questo ALIAS dal mio apk decompilato (perché non posso offuscare l'alias string) e costruisci un'altra app che usa lo stesso ALIAS per ottenere privateKey da Android KeyStore?

Qualche soluzione?

+0

per ora, l'unica soluzione che ho trovato è quella di memorizzare i miei dati nel database, crittografato da SqlCipher. Accesso con ormLite, memorizzazione della password nel metodo NDK come costante. Nel mio DbHelper estende OrmLiteOpenHelper Sto inizializzando DB con password che restituiscono il metodo da NDK. nel metodo NDK questo è solo il ritorno "secretpassword". Il libro Android antiproiettile dice che è più difficile ottenere questa costante da NDK, perché devi smontarla, non solo decompilarla come il codice Java. Qualche idea su questo? –

risposta

2

Non riesco davvero a capire come devo proteggere la mia password/token/any_else nell'applicazione Android nel dispositivo ROOTED per essere utilizzata dagli hacker che hanno accesso fisico al dispositivo.

Non è possibile. Client Authenticity is Not the Server's Problem.

Supponiamo che tu memorizzi un valore crittografato nella tua app piuttosto che archiviare il valore direttamente. Dov'è la chiave per decodificare questo valore? L'app dovrà necessariamente decrittografare questo valore. Ora tutto ciò che un hacker deve fare è scaricare il tuo .apk, collegarlo a Lobotomy e scopriranno rapidamente cosa sta succedendo.

È meglio non inserire mai informazioni riservate sul dispositivo stesso, se si desidera nasconderlo alle persone che eseguono il software.

0

È necessario memorizzare la chiave nell'app?

Che cosa succede se in un primo momento l'installazione si chiede all'utente di impostare una password, di crittografare il vostro SQLCipher DB con quella chiave (forse hash troppo), quindi ogni volta che, quando l'utente avvia l'applicazione, si chiede la password.