Pour faire court, notre entreprise a récemment eu une intrusion dans laquelle notre base de données MySQL a été vidée et volée. Les dirigeants sont vraiment nerveux maintenant et en plus de renforcer d'autres mesures de sécurité, ils ont l'intention de crypter toutes les informations client (adresse e-mail, adresse personnelle, noms, etc.) dans la base de données.
Je ne sais pas par où commencer. Nous exécutons une application PHP. Évidemment, cela va créer des frais supplémentaires que nous aimerions minimiser. Une autre préoccupation va être la difficulté de changer le code partout où les nouveaux champs chiffrés sont utilisés.
Cela me semble une précaution inutile, mais la direction semble ferme à ce sujet.
Quel type d'algorithme/méthode de chiffrement serait le mieux pour ce cas d'utilisation?
Il y a un très bon résumé sur la façon de le faire avec MySQL ici: http://thinkdiff.net/mysql/encrypt-mysql-data-using-aes-techniques/ .
Vous voudrez utiliser AES avec des clés 256 bits, car c'est la meilleure pratique/norme en vigueur en ce moment. Les clés AES 256 bits sont considérées comme étant de taille suffisante pour être protégées contre la puissance de calcul moderne.
C'est une bonne idée, peu importe si vous pensez que c'est excessif ou non, de crypter votre base de données. Même si les données ne sont pas horriblement sensibles, la perte d'enregistrements client peut être très embarrassante pour votre entreprise, à tout le moins, et pourrait nuire à la confiance des clients et à la volonté des gens de transmettre leurs données à l'avenir. Le chiffrement de l'intégralité du contenu de votre base de données n'est peut-être pas standard actuellement, mais les tendances évoluent dans ce sens et il ne peut pas vous nuire d'adopter une posture de sécurité renforcée. Si rien d'autre, pensez-y comme une autre entrée dans votre implémentation de défense en profondeur.
Je vous recommande également de consulter cet article - http://www.symantec.com/connect/articles/secure-mysql-database-design - car il fournit une bonne introduction, assez basique, à conception de système de base de données sécurisée qui devrait vous donner quelques conseils sur d'autres choses pour vérifier votre application.