J'ai une question à propos du cryptage des données de base. Je stocke des données utilisateur sensibles dans une base de données Core Data SQLite. Les valeurs critiques sont toutes transformables et j'utilise AES256 pour les crypter et les décrypter «à la volée», y compris un IV individuel pour chaque valeur. La clé de cryptage est le hachage SHA512 du mot de passe choisi par l'utilisateur. Cela fonctionne très bien jusqu'à présent.Core Data Encryption
Maintenant sur le mot de passe de l'utilisateur. Lorsque l'utilisateur lance l'application, il lui est demandé son mot de passe. Le mot de passe est en cours de hachage avec SHA512 et stocké dans le trousseau iOS. Pour chaque opération d'écriture ou de lecture, NSValueTransformer obtiendra le mot de passe du trousseau. Si l'application est fermée, je supprime le hash du mot de passe du trousseau.
Dans ma base de données de base de données j'ai une entité spéciale qui a un nombre aléatoire! = 0 car c'est seulement la valeur. Pour tester si l'utilisateur a entré le bon mot de passe, je récupère cette entité et lit le numéro. Si c'est =! 0, je sais que le mot de passe était correct parce que lorsque le déchiffrement échoue le NSValueTransformer retourne toujours 0.
Maintenant mes questions actuelles: Considérez-vous cela une bonne approche sur le cryptage? Sinon, comment testeriez-vous si le mot de passe entré est correct? Je suis un peu préoccupé par le fait que stocker le hachage de mot de passe dans le trousseau pendant que l'application est en cours rend tout plus lent, car le NSValueTransformer doit accéder au trousseau tout le temps. Serait-il suffisamment sécurisé pour garder le mot de passe en mémoire, il sera donc supprimé lorsque l'application sera fermée?
Pourriez-vous expliquer ce que vous entendez par "utiliser une clé de cryptage générée aléatoirement que vous chiffrez avec une clé de cryptage basée sur le mot de passe?" Je cherche également à chiffrer certains champs de mon magasin de données principal et je cherche une meilleure pratique pour générer une clé à utiliser pour faire le chiffrement. Je suis d'accord que baser sur le mot de passe n'a pas de sens car il peut changer. –