web-dev-qa-db-fra.com

Comment stocker en toute sécurité les informations d'identification (mot de passe) dans l'application Android?

Je souhaite stocker le mot de passe utilisé pour la signature d'une application financière que je développe en un lieu sécurisé. Après avoir fait du surf sur Internet, j'ai trouvé les options suivantes, mais chacune d'entre elles présente certains inconvénients.

1) Porte-clés.
Uniquement disponible dans la version 4 du système d'exploitation.

2) Préférences partagées.
Il stocke les données en texte brut même si si je crypte les données, la clé de cryptage peut être compromise en décompilant le code d'application.

3) Accéder au démon de magasin de clés et y stocker les informations d'identification.
( http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html ) Nécessite un autre mot de passe pour se souvenir.

Veuillez me suggérer un meilleur moyen de sécuriser les informations d'identification dans Android comme IPhone KeyChain.

42
Noor

Le n'est pas équivalent à la chaîne de clés de l'iPhone dans Android actuellement. Si vous voulez garder quelque chose de secret, ne le stockez pas sur l'appareil. Ou du moins, ne stockez pas la clé/le mot de passe). est chiffré avec sur l'appareil. Aussi simple que cela.

Aditionellement:

1) Même sur ICS, vous ne pouvez pas utiliser le KeyChain directement pour stocker des secrets d'application (voir l'article de blog en 3))

2) Ce n'est un problème que pour les téléphones rootés ou si quelqu'un a un accès physique à l'appareil.

3) Il est préférable de se souvenir d'un seul mot de passe, protégeant tous vos identifiants, que d'essayer de mémoriser plusieurs mots de passe. De plus, sur ICS, il n'y a pas de mot de passe séparé, le stockage des informations d'identification est protégé par le mot de passe de déverrouillage de l'appareil.

17
Nikolay Elenkov

Hashing est la solution ne stocke pas les informations d'identification sous forme de texte brut dans les préférences partagées ou tout autre support.

Il suffit de saler et de hacher le mot de passe, puis vous pouvez le stocker dans sharedPreferences ou dans une base de données intégrée.

Voici comment cela fonctionne:

En ligne

  1. Le mot de passe simple (non haché) est envoyé au serveur pour authentification et autorisation en cas de connexion réussie.

  2. Le sel peut être généré et renvoyé du serveur au client ou peut être généré sur le client

  3. Ensuite, stockez-le sous forme de sel et hachez le mot de passe et stockez-le.

Hors ligne

  1. Nous hacherons le mot de passe saisi par l'utilisateur en utilisant le sel que nous avons stocké

  2. Nous comparerons avec le hachage que nous avons stocké lors d'une connexion réussie

  3. Si les deux sont égaux, nous laisserons entrer l'utilisateur sinon nous ne le laisserons pas entrer.

Avantages:

  1. Vous n'avez donc plus à vous soucier de la compatibilité des versions.

  2. Même si l'appareil est enraciné, il est si difficile de forcer brutalement le hachage.

  3. Même si quelqu'un décompile/fissure l'application, il est si difficile de faire de l'ingénierie inverse

7
Durai Amuthan.H