Vaut-il la peine de chiffrer les adresses e-mail dans la base de données?

j'utilise déjà hashing salé pour stocker les mots de passe dans ma base de données, ce qui signifie que je devrais être immunisé contre table arc-en-ciel attaques.

j'ai eu une pensée, cependant: que faire si quelqu'un obtient vraiment de ma base de données? Il contient les adresses e-mail des utilisateurs. Je ne peux pas vraiment les hachez, parce que je vais les utiliser pour envoyer des emails de notification, etc..

dois-je les crypter?

37
demandé sur roo 2008-09-16 12:47:28

10 réponses

Bruce Schneier a une bonne réponse à ce genre de problème.

la Cryptographie n'est pas la solution à vos problèmes de sécurité. Cela pourrait faire partie de la solution ou du problème. Dans de nombreuses situations, la cryptographie commence par aggrave le problème, et il n'est pas du tout clair que l'utilisation de la cryptographie est une amélioration.

essentiellement crypter vos e-mails dans la base de données "juste au cas où" est pas vraiment rendre la base de données plus sûre. Où sont stockées les clés de la base de données? Quelles sont les permissions de fichiers utilisées pour ces clés? Est la base de données accesable publiquement? Pourquoi? Quelles sont les restrictions applicables à ces comptes? Où est la machine stockée, qui a accès à cette boîte? Qu'en est-il de l'accès à distance login/ssh, etc. etc. etc.

Donc je suppose que vous pouvez crypter les e-mails si vous voulez, mais si c'est la mesure de la sécurité du système alors il ne fait vraiment pas beaucoup, et ferait réellement le travail de maintenir la base de données plus difficile.

bien sûr, cela pourrait faire partie d'une vaste Politique de sécurité pour votre système - Si oui, alors génial!

Je ne dis pas que c'est une mauvaise idée - mais pourquoi avoir une serrure sur la porte de Deadlocks'r'US qui coûte 5000 $quand ils peuvent couper à travers le contreplaqué autour de la porte? Ou entrer par la fenêtre que tu as laissée ouverte? Ou pire encore ils trouver la clé qui a été laissé sous le paillasson. La sécurité d'un système ne vaut que le maillon le plus faible. S'ils ont accès à root, ils peuvent faire ce qu'ils veulent.

Steve Morgan fait un bon point que même s'ils ne peuvent pas comprendre les adresses e-mail, ils peuvent toujours faire beaucoup de mal (qui pourrait être atténué si ils avaient seulement sélectionner l'accès)

il est également important de savoir ce que vos raisons sont pour stocker l'e-mail adresse à tous. J'ai peut-être un peu exagéré avec cette réponse , mais mon point est Est-ce que vous avez vraiment besoin de stocker une adresse e-mail pour un compte? Les données les plus sûres sont celles qui n'existent pas.

47
répondu roo 2017-05-23 11:54:25

en commun avec la plupart des exigences de sécurité, vous devez comprendre le niveau de menace.

quels dommages peuvent être faits si les adresses email sont compromises?

Quelle est la chance que cela arrive?

les dommages causés si les adresses Courriel sont remplacées pourraient être beaucoup plus grands que s'ils sont exposés. Surtout si vous utilisez, par exemple, l'adresse courriel pour vérifier que le mot de passe est réinitialisé dans un système sécurisé.

la possibilité que les mots de passe soient remplacés ou exposés est très réduite si vous les hachez, mais cela dépend des autres contrôles que vous avez en place.

8
répondu Steve Morgan 2008-09-16 08:53:42

je me rends compte que c'est un sujet mort, mais je suis d'accord avec la logique D'Arjan derrière cela. Il y a quelques petites choses que j'aimerais faire remarquer:



Quelqu'un peut extraire des données de votre base de données sans récupérer votre code source (c.-à-d. injection SQL, tiers db). Avec cela à l'esprit, il est raisonnable d'envisager l'utilisation d'un cryptage avec une clé. Quoique, ce n'est qu'une mesure supplémentaire de sécurité, pas de sécurité...c'est pour quelqu'un qui veut garder le courriel plus privé que simple texte, En dehors de la chance quelque chose est négligé pendant une mise à jour, ou un attaquant parvient à récupérer les e-mails.

IMO: si vous prévoyez de chiffrer un courriel, stocker un hash salé de celui-ci ainsi. Ensuite, vous pouvez utiliser le hachage pour la validation, et épargner la tête de l'encryptage en permanence à l'aide de trouver une chaîne massive de données. Alors avoir une fonction privée séparée pour récupérer et déchiffrer vos e-mails lorsque vous avez besoin de les utiliser.

8
répondu Nicholas Riley 2012-08-12 16:57:33

je dirais que cela dépend de l'application de votre base de données.

le plus gros problème est, où stockez-vous la clé de cryptage? Parce que si le hacker a un excédent à quoi que ce soit de plus que votre DB, tous vos efforts sont probablement gaspillés. (Rappelez-vous, votre application aura besoin de cette clé de cryptage pour déchiffrer et chiffrer de sorte que finalement le pirate trouvera la clé de cryptage et le schéma de cryptage utilisé).

Pro:

  • une fuite de votre DB seulement n'exposera pas les adresses e-mail.

Inconvénients:

  • chiffrement signifie perte de performance.
  • d'Attribuer des actions de base de données sera plus difficile si pas impossible.
3
répondu Davy Landman 2008-09-16 08:58:10

ne confondez pas accidentellement le cryptage avec l'obscurcissement. Nous brouillons souvent les e-mails pour prévenir le spam. Beaucoup de sites web auront "webmaster _at_ mysite.com" pour ralentir les robots d'analyse de l'adresse e-mail comme une cible potentielle de spam. Cela devrait être fait dans les modèles HTML -- il n'y a aucune valeur à faire cela dans le stockage de base de données persistante.

nous ne cryptons rien sauf si nous devons le garder secret pendant la transmission. Quand et où votre transmission de données?

  1. les instructions SQL sont transmises du client au serveur; est-ce sur la même boîte ou sur une connexion sécurisée?

  2. si votre serveur est compromis, vous avez une transmission involontaire. Si vous êtes inquiet à ce sujet, alors vous devriez peut-être sécuriser votre serveur. Vous avez des menaces externes ainsi que des menaces internes. Sont TOUS les utilisateurs (internes et externes) correctement authentifié et autorisé?

  3. pendant les sauvegardes vous avez une transmission intentionnelle vers des supports de sauvegarde; est-ce que cela est fait en utilisant une stratégie de sauvegarde sécurisée qui chiffre comme il va?

3
répondu S.Lott 2008-09-16 10:17:18

SQL Server et Oracle (et je crois aussi d'autres DBs) prennent en charge le cryptage des données au niveau de la base de données. Si vous voulez crypter quelque chose, pourquoi ne pas simplement abstraire l'accès aux données qui pourraient être cryptées du côté du serveur de base de données et laisser l'utilisateur choisir si utiliser les données cryptées (dans ce cas, la commande SQL sera différente) ou non. Si l'utilisateur veut utiliser des données cryptées alors il peut configurer le serveur de base de données et tous les travaux de maintenance connectés avec la clé la gestion est faite à l'aide de l'outil DBA standard, fait à partir du fournisseur de PD et non de vous.

2
répondu massimogentilini 2008-09-16 10:13:41

une copie de ma réponse à Quelle est la meilleure et la plus sûre façon de stocker les adresses courriel des utilisateurs dans la base de données? , juste pour la recherche...


en général, je suis d'accord avec les autres disant que cela n'en vaut pas la peine. Cependant, je ne suis pas d'accord que quiconque peut accéder à votre base de données peut probablement aussi obtenir vos clés. Ce n'est certainement pas vrai pour L'Injection SQL, et peut ne pas être vrai pour les copies de sauvegarde qui sont en quelque sorte perdu ou oublié. Et je pense qu'une adresse e-mail est un détail personnel, donc je ne me soucierais pas du spam mais des conséquences personnelles quand les adresses sont révélées.

bien sûr, quand vous avez peur de L'Injection SQL, vous devez vous assurer que cette injection est interdite. Et les copies de sauvegarde doivent être cryptées elles-mêmes.

encore, pour certaines communautés en ligne les membres pourraient certainement ne pas vouloir que d'autres savent qu'ils sont un membre (comme dans le domaine des soins de santé mentale, de l'aide financière, des conseils médicaux et sexuels, du divertissement pour adultes, de la Politique, etc...). Dans ces cas, stocker le moins de détails personnels possible et crypter ceux qui sont nécessaires (notez que le cryptage au niveau de la base de données n'empêche pas les détails de montrer en utilisant L'Injection SQL), pourrait ne pas être une si mauvaise idée. Encore une fois: traiter une adresse e-mail comme tel détail personnel.

pour de nombreux sites, ce qui n'est probablement pas le cas, et vous devriez vous concentrer sur l'interdiction SELECT * FROM par L'Injection SQL, et s'assurer que les visiteurs ne peuvent pas d'une façon ou d'une autre accéder au profil personnel de quelqu'un d'autre ou aux informations de commande en changeant l'URL.

1
répondu Arjan 2017-05-23 12:17:46

il vaut la peine de crypter les données dans les bases de données, il ne rend pas un peu plus difficile, mais bien plus difficile quand il est crypté de la bonne façon, donc arrêter la philosophie et crypter les données sensibles;)

1
répondu user3491125 2014-09-01 19:07:11

vous avez vraiment à peser votre pire scénario senario de quelqu'un obtenir ces adresses e-mail, la probabilité de quelqu'un les obtenir, et votre effort supplémentaire/temps nécessaire pour mettre en œuvre le changement.

0
répondu Matt Hanson 2008-09-16 08:51:58

@Rdo

je suis un peu d'accord avec ce que vous dites, mais ne vaut-il pas la peine de crypter les données juste pour rendre un peu plus difficile pour quelqu'un de l'obtenir?

Avec votre raisonnement, il serait inutile d'avoir des verrous ou des alarmes dans votre maison, car ils peuvent aussi facilement être compromise.

ma réponse:

je dirais que si vous avez des données sensibles que vous ne voulez pas tomber dans de mauvaises mains, vous devriez probablement le faire aussi dur que vous pouvez pour un pirate pour l'obtenir, même si elle n'est pas 100% infaillible.

0
répondu Patrik Svensson 2008-09-16 10:46:04