Maison >Java >Comment stocker en toute sécurité les clés dans AndroidKeyStore à l'aide d'un mot de passe ?

Comment stocker en toute sécurité les clés dans AndroidKeyStore à l'aide d'un mot de passe ?

WBOY
WBOYavant
2024-02-10 19:15:08502parcourir

L'éditeur php Baicao vous propose un guide sur la façon de stocker en toute sécurité des clés dans AndroidKeyStore à l'aide de mots de passe. Dans le développement d’applications mobiles, la protection de la sécurité de vos clés est cruciale. AndroidKeyStore fournit un moyen fiable de stocker les clés pour garantir qu'elles ne peuvent pas être obtenues par des applications malveillantes ou des attaquants. Ce guide expliquera comment utiliser un mot de passe pour crypter une clé et la stocker en toute sécurité dans AndroidKeyStore afin de fournir le plus haut niveau de sécurité. Que vous soyez débutant ou développeur expérimenté, vous pouvez facilement suivre ce guide étape par étape pour atteindre cet objectif. commençons!

Contenu de la question

J'essaie de créer une application qui permet aux utilisateurs de stocker des mots de passe. Désormais, je permets aux utilisateurs de crypter leurs mots de passe de deux manières, la première est biométrique et l'autre est un mot de passe

J'ai pu autoriser le mot de passe en créant la clé dans AndroidKeyStore et en définissant setUsetAuthenticationRequired(true) 来实现 biometrics le cryptage lors de la création de la clé, puis en utilisant BiometricsManager.

Cependant, je ne sais pas comment implémenter un mot de passe. J'ai essayé de rechercher PBE le cryptage mais il n'y a pas grand chose dans la documentation Android. Quelle est la solution la plus sûre et la meilleure pour cette situation ? S'il y a des liens pour le même, je serais reconnaissant :)

(Remarque : si j'utilise le cryptage PBE et que je stocke les données cryptées (plusieurs noms d'utilisateur et mots de passe) dans RoomDB, comment puis-je Je vérifie si le mot de passe est correct la prochaine fois que l'application s'exécute et s'il n'y a rien dans la base de données à décrypter et tester)

J'ai également trouvé un moyen de créer une clé, puis de stocker la clé en tant qu'entrée et d'utiliser https://developer.android.com/reference/java/security/KeyStore.PasswordProtection pour protéger l'entrée. Faites-moi savoir s'il s'agit d'une solution suffisamment sécurisée ou s'il existe une meilleure solution.

Merci !

Solution de contournement

Si vous souhaitez stocker des mots de passe dans Room, vous devez exécuter une fonction de hachage, puis stocker le hachage du mot de passe. Quelle que soit la longueur de votre mot de passe, la valeur de hachage est de taille fixe.

Pour comparer le mot de passe saisi avec le mot de passe stocké dans la base de données, vous hachez l'entrée et la comparez avec la valeur de hachage stockée dans la base de données. Parce que si vous appliquez une fonction de hachage à la même chaîne, vous obtiendrez le même résultat. S'il y a au moins 1 symbole erroné, le hachage généré sera complètement différent.

Vous pouvez vérifier ce et utiliser l'algorithme PBKDF2. Plus de détails sur la façon de choisir une fonction de hachage et sur ce qu'il ne faut pas utiliser peuvent être trouvés ici

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer