2015-05-14 31 views
6

Sto cercando di capire il keystore Android allo scopo di memorizzare le password sul dispositivo. (https://developer.android.com/training/articles/keystore.html)Come memorizzare la password su Android

In questo articolo si dice "Utilizza il provider di chiavi di Android per consentire a una singola app di memorizzare le proprie credenziali che solo l'app stessa può accedere". Questo è esattamente quello che voglio.

Quindi penso che il modo in cui questo lavoro è come: 1) I genererà una RSA chiave

2) Conservare il PrivateKey nel KeyStore

3) Conservare il PublicKey in alcuni SharePrefs

4) Criptare la password utilizzando la chiave pubblica

5) Criptare la password utilizzando PrivateKey.

Comunque penso di essere malinteso qualcosa perché questo articolo non mostra

1) Come salvare PrivateKey a KeyStore (non vedo alcuna API che mostra come chiavi aggiunto la chiave)

2) Non mostra come decrittografare i dati con PrivateKey

Infante perché questo articolo parla di "Utilizzare un PrivateKey nel KeyStore per creare una firma su alcuni dati". Cosa significa creare una firma su alcuni dati ??? (Voglio decodificare i dati con PrivateKey). E perché vuole verificare "la firma precedentemente fatta da un PrivateKey".

Quindi mi sono perso a questo punto ... questo articolo mi ha iniziato nel posto giusto ma poi alla fine sono confuso che cosa sta cercando di raggiungere.

Qualcuno può suggerire se quello che sto cercando di fare ha senso? O dovrei semplicemente salvare la chiave pubblica e privata nel mio db? (non c'è molta sicurezza in questo, ma è il massimo che posso fare con il requisito di memorizzare la password sul dispositivo).

Molte grazie

Rgds !!!!

risposta

2

sto citando questa linea da Utilizzando memoria interna sezione del http://developer.android.com/training/articles/security-tips.html Per impostazione predefinita, i file creati nella memoria interna sono accessibili solo per la vostra applicazione. Questa protezione è implementata da Android ed è sufficiente per la maggior parte delle applicazioni.

Ora sulla crittografia: Keystore API si occupa di crittografia dei dati. E le chiavi sono utilizzate per la comunicazione sicura e non per la memorizzazione della password. Le password sono di solito hash o mappe irreversibili. E non richiede la decrittazione, ma richiede solo la corrispondenza.

Ad esempio: per comunicare se si inviano dati crittografati, l'altra parte coinvolta nella comunicazione deve sapere quale chiave di decrittografia è richiesta. Quindi se hai inviato il ricevitore "Ciao io sono criptato" devi sapere che hai inviato "Ciao sono criptato" come messaggio.

Per la password se si immette una passphrase o una passkey, è necessario che corrisponda alla controparte memorizzata. Come se "pass123" fosse la tua password memorizzata come "rdi # $$ [email protected]/b "quindi quando si inserisce una password durante il processo controllando l'algoritmo dovrebbe corrispondere al valore memorizzato e si è autenticato non è necessario generare" pass123 "

Quindi, per l'applicazione è possibile utilizzare un meccanismo (che genera un hash quasi unico e irreversibile) per generare key/hash univoci quando viene immessa la password e quindi memorizzarla nei dati dell'app.