2016-11-11 2 views
3

J'ai une application qui utilise l'empreinte digitale et 4 broches (qui peut être définie par l'utilisateur dans les paramètres de l'application, ce n'est pas l'identification système/mot de passe).Comment générer KeyPair dans android KeyStore, protégé par mot de passe personnalisé

Avec Empreinte digitale tout va bien, j'ai un problème avec la broche.

Ce que je suis en train de faire est:

  1. Soit la broche définie par l'utilisateur à partir des paramètres d'application
  2. Génération paire de clés dans keystore pour certains alias protégés par la broche entrée (de sorte que ne peut pas être accessible clé privée sans cette broche)
  3. Envoyer la clé publique au serveur pour la vérification de la signature future
  4. Get jeton utilisateur du serveur et le stocker dans le stockage local

Puis au cours de l'autorisation:

  1. Demander utilisateur d'entrer la broche
  2. Récupérer la clé privée par la broche entrée
  3. Récupérer jeton de stockage local
  4. jeton signe avec la clé privée à partir de l'étape 6
  5. Envoyer au serveur avec des données signées
  6. Vérifier la signature sur le serveur et, si elle est valide, ouvrir la session pour l'utilisateur.

Ma question est: Comment puis-je générer KeyPair protégé par code PIN saisi par l'utilisateur

post-scriptum Pour fingerprint cette logique est gérée par:

KeyGenParameterSpec.Builder(KEY_NAME, KeyProperties.PURPOSE_SIGN).setUserAuthenticationRequired(true) 

Répondre

0

Je vous suggère d'essayer d'utiliser ce poste après Use the Android KeyStore to securely store arbitrary strings.

Ce poste ont couvert comme point de

  1. Générer, stocker en toute sécurité, et de récupérer les clés de chiffrement sur le périphérique.

  2. Chiffrez des données arbitraires et enregistrez-les sur l'appareil.

  3. Accéder et déchiffrer les données pour une utilisation ultérieure.

J'espère que cela aidera.