2013-08-03 2 views
0

Scénario habituel: quelqu'un veut stocker et crypter des données qui ne seront plus disponibles (lisibles) que par lui. Mais ici, je veux crypter (données simples et binaires (BLOB)) dans ma base de données MySQL afin que quelqu'un qui a un accès direct à la base de données ne puisse pas lire ces données. Mais dans ce scénario, tous les utilisateurs enregistrés devraient pouvoir insérer (crypter) des données pour tous les autres et vice versa, tous les utilisateurs enregistrés devraient être capables de lire (déchiffrer) les données insérées et cryptées par d'autres.Crypter/décrypter le contenu de la base de données pour plusieurs utilisateurs

Donc, le point de ma question est de savoir comment les utilisateurs de l'application Web construite au-dessus de la base de données MySQL partageront la même clé pour le cryptage/décryptage des données dans db? Chaque utilisateur doit pouvoir chiffrer les données que les autres pourront déchiffrer.

Répondre

0

Cette question est un peu abstrait, et peut-être je vais manquer un point important, mais ...

Comme moi, je voudrais juste crypter/décrypter au niveau de l'application. Donc, du point de vue de votre base de données, les données cryptées ne sont que des colonnes TEXT ou BLOG, selon la sortie de votre algorithme de cryptage.


Une autre option serait d'utiliser MySQL standard encryption functions pour chiffrer les données en les stockant et les décrypter lors de l'accès. Je préfère cette solution car les données non cryptées circulent sur le réseau vers/depuis le serveur de base de données. Ceci est probablement évident, mais gardez à l'esprit que vous ne pourrez pas rechercher ou trier des données cryptées.

+0

Salut Sylvain, le point de ma question est de savoir comment les utilisateurs de l'application Web construite au-dessus de la base de données MySQL partageront la même clé pour le cryptage/décryptage des données dans db? Chaque utilisateur doit pouvoir chiffrer les données que les autres pourront déchiffrer. – sbrbot

+0

@sbrbot Comme j'ai essayé d'expliquer, de mon point de vue, c'est probablement un problème au niveau de l'application. Pas un problème de DB. Votre application va encoder les données avant de les envoyer à la base de données, et les décoder en lisant depuis la base de données. ... –

+0

... La façon exacte de le faire dépend de votre algorithme de chiffrement spécifique et/ou des exigences de sécurité. Si vous utilisez un simple cryptage à secret partagé, la clé de cryptage pourrait simplement être stockée dans un fichier de configuration * de votre application *. Ou même être codé en dur dedans. Si vous avez besoin de quelque chose de plus sophistiqué, vous pouvez demander à l'utilisateur la clé de chiffrement. Ou vous pouvez compter sur le certificat fourni par l'utilisateur pour obtenir la clé. Ou utilisez une infrastructure à clé publique. Tout dépend de * vos * besoins spécifiques. –

Questions connexes