Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelle est la meilleure méthode pour utiliser/stocker les clés de chiffrement dans MySQL

Je ne sais pas si l'utilisation du cryptage MySQL intégré serait la meilleure solution à votre problème.

M_CRYPT de PHP est considéré comme assez bon et vous donne la possibilité de choisir l'algorithme le mieux adapté à vos besoins.

Le stockage de votre clé sur un autre serveur présente un gros avantage :la clé n'est pas sur la même machine que les données chiffrées. Ainsi, tant que l'attaquant n'a pas suffisamment de contrôle sur la machine compromise, il ne peut pas accéder à la clé.
Si l'attaquant obtient le contrôle total de la machine sur laquelle les données sont stockées, il pourra très probablement interroger le service Web pour la clé.

Cependant, la transmission de la clé d'une machine à une autre ouvre un tout nouveau domaine qui doit être sécurisé. Impliquant probablement plus de clés et plus de couches de chiffrement, augmentant ainsi le risque d'erreurs.

L'autre option consiste à saisir le mot de passe au démarrage du serveur Web et à ne le conserver qu'en mémoire.

Solution possible
Si vous voyez une solution utilisée qui utilise la méthode suivante pour chiffrer les fichiers pour les utilisateurs ayant accès au Web (je ne suis pas sûr de votre environnement, mais cela pourrait être utile) :

  • Lors de la création de l'utilisateur, une longue clé aléatoire est attribuée au nouvel utilisateur.
  • Cette clé aléatoire est stockée dans une colonne chiffrée de l'enregistrement de l'utilisateur.
    (seule cette colonne est chiffrée afin de ne pas affecter les performances du reste de l'enregistrement ! )
  • Le cryptage de la colonne de clé aléatoire se fait avec 1 mot de passe principal, stocké dans un fichier ou en mémoire.
    (La meilleure option est de saisir le mot de passe au démarrage de votre serveur Web et de ne le stocker que en mémoire. )
    (Une autre approche serait de laisser l'utilisateur entrer un mot de passe et de l'utiliser pour chiffrer/déchiffrer la colonne de clé aléatoire, mais je ne sais pas si cela augmenterait ou diminuerait la sécurité )
  • Chaque document devant être chiffré est chiffré avec la clé aléatoire de cet utilisateur, puis stocké sur disque.
  • Les documents sont stockés avec des autorisations minimales dans le système de fichiers.

Les avantages de cette approche sont :
1. La clé aléatoire est cryptée dans la base de données. Ainsi, vous avez toujours la sécurité supplémentaire du serveur de base de données, en combinaison avec la colonne cryptée.2. Les documents sont stockés avec des clés différentes, si l'attaquant met la main sur une clé, seule une partie des documents est compromise.

Cependant :
Si l'attaquant s'empare du mot de passe principal et a accès en lecture à la table des utilisateurs, le système entier est, une fois de plus, cassé.