2015-03-06 2 views
12

Je souhaite stocker des données secrètes dans le magasin de clés privé de mon application.Utilisez KeyPairGeneratorSpec pour le niveau d'API Android <18?

Cependant, comme je travaillais sur le code pour ce faire, Android Studio a averti que KeyPairGeneratorSpec.Builder(context) requiert le niveau d'API 18 et que je cible au minimum 14. :-(

Comment puis-je stocker des données secrètes dans mon application pour le niveau de l'API Android 14 à 17?

+1

Habituellement, vous pouvez trouver des choses dont vous avez besoin dans la bibliothèque de soutien mais On dirait qu'ils n'ont pas ajouté cette classe. https://developer.android.com/reference/android/support/v4/app/package-summary.html Désolé, je n'ai pas de réponse pour vous. – nasch

+1

ouais, je ne pouvais pas en croire mes yeux non plus. –

Répondre

5

Le AndroidKeyStore qui est généralement soutenu par le matériel (mais pas nécessairement) a été officiellement introduit dans le niveau de l'API 18 comme vous pouvez voir et est décrite ici: http://developer.android.com/training/articles/keystore.html

Nikolay Elenkov a écrit une petite application agréable pour tester la AndroidKeyStore que vous pouvez trouver ici: https://github.com/nelenkov/android-keystore

il y a quelques trucs que vous pouvez utiliser pour obtenir à genre de travail sur le niveau API 17 si vous creusez dans AOSP, mais il n'y a aucune garantie cela fonctionnera sur tous les appareils, donc c'est inutile. Vous ne l'obtiendrez certainement pas sur n'importe quoi avant cela.

Il n'est vraiment pas nécessaire d'utiliser l'AndroidKeyStore pour stocker votre clé privée, sauf si vous êtes très paranoïaque en matière de sécurité et exigez qu'elle soit sauvegardée par le matériel ou dans un processus isolé (processus keystore sur des périphériques non matériels).

Si vous générez vous-même une paire de clés dans votre application et l'enregistrez dans un fichier de magasin de clés dans votre zone de données, aucune autre application Android ne pourra lire votre clé suffisamment sécurisée pour la plupart des applications. Vous pouvez même autoriser l'utilisateur à protéger le fichier de clés avec un mot de passe de son choix.

Il y a quelques bonnes informations sur la génération d'un keypair dans le logiciel en utilisant Java et Android peuvent être trouvés ici:

Android RSA Keypair Generation - Should I use Standard Java/Bouncy Castle/Spongy Castle/JSch/Other?

https://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html