Où stocker les clés de cryptage application MVC
j'utilise une classe de chiffrement/déchiffrement AES qui nécessite une valeur clé et une valeur vecteur chiffrer et déchiffrer les données dans une application MVC3.
en sauvegardant l'enregistrement Je crypte les données puis les stocker dans une base de données. Lorsque je récupère l'enregistrement, Je déchiffre dans le contrôleur et passe la valeur non chiffrée à la vue.
la préoccupation n'est pas de protéger les données qui traversent le réseau mais de protéger la base de données si elle est compromise.
j'ai lu beaucoup de messages qui disent ne pas mettre les clés de cryptage dans votre code.
Ok alors où doivent-ils être gardés? Système de fichiers? Une Autre Base De Données?
Je cherche une direction.
2 réponses
le bon sens dit que, si un intrus obtient l'accès à votre base de données, il aura très probablement aussi accès à votre système de fichiers. Ça se résume à toi. Pour un, vous pouvez essayer de le cacher. Dans les fichiers de configuration, dans les fichiers simples quelque part dans le système de fichiers, chiffrez-le avec une autre clé qui se trouve dans l'application ... et ainsi de suite et ainsi de suite.
les fichiers de Configuration sont une réponse logique, mais pourquoi prendre le risque-le mélanger. N'hésitez pas à mélanger les touches avec multi-niveau chiffrement - un qui exige quelque chose du document lui-même et étant unique à chaque document, un autre qui exige une valeur de configuration, un troisième qui exige une valeur spécifique à l'application, et peut-être un quatrième d'une bibliothèque bien cachée dans les références de votre application? De cette façon, même si une couche est compromise, vous aurez plusieurs autres couches qui la protégeront.
oui, ça ajoute des frais généraux. Oui, c'est relativement cher. Mais est-il utile si vous avez les données sensibles comme les utilisateurs de carte de crédit? Vous pariez qu'il est.
j'utilise des techniques similaires de cryptage et de hachage dans un de mes projets personnels pet qui est fortement axé sur la sécurité et soigneusement contrôlée. Cela dépend de la quantité de données que vous devez afficher à la fois - par exemple, la mienne ne récupérera jamais que 10 enregistrements à la fois, très probablement encore moins.
... Pour préciser ce que je veux dire en mélangeant: chiffrez une fois. Puis crypter ces données à nouveau avec clé différente et algorithme suggérant différent.
j'utiliserais clés de Registre protégées par ACL , de sorte que seul le compte sous lequel votre pool d'applications est en cours d'exécution peut les lire.