Question

Lorsque vous avez besoin de stocker des données sensibles telles que les pays candidats ou SSNs, avez-vous:

1) Construisez votre propre routine de chiffrement dans l'application, définir une clé secrète quelque part dans un fichier de configuration, puis chiffrer manuellement / déchiffrer des données allant à la base de données.

2) Appuyez sur tout le problème à la base de données, en utilisant les capacités intégrées DB (je pense que la plupart des fournisseurs appellent le cryptage de base de données transparent).

Quels compromis avez-vous trouver votre solution? Est-ce que l'écriture de votre propre routine de mauvais résultats par rapport à TDE? Est-ce le code maintenabilité, ou à l'inverse de blocage dans un numéro DB fournisseur?

Était-ce utile?

La solution

Je l'ai utilisé une variété de techniques de chiffrement et je crois qu'il est à la fois plus facile et plus sûr pour chiffrer le côté application à l'aide d'une routine de chiffrement éprouvée (à savoir les bibliothèques .NET).

Si vous cryptez sur la base de données, cela signifie que les données sont envoyées vers et à partir de la base de données sous forme non chiffrée. Cela permet potentiellement furetage / falsification entre l'application et les routines de chiffrement sur la base de données. Même si vous stockez la clé du côté de la demande, il est toujours nécessaire du côté de la base de données pour effectuer le chiffrement. Si la base de données est compromise, vos données sont à risque sérieux (imaginez quelqu'un courir profileur pendant que votre application fonctionne).

Si vous crypter / décrypter dans l'application, les données sensibles (y compris la clé) n'est jamais révélée en dehors du serveur d'applications. Quelqu'un devrait compromettre le serveur Web et le serveur de base de données pour accéder à toutes vos données.

De plus, je vous recommande vivement pas rouler votre propre routine de cryptage. Il y a des chances que vous ferez une erreur qui permettra de réduire la sécurité globale de votre solution.

EDIT:

voulais aussi ajouter un autre facteur qui influencera votre décision. Avez-vous besoin d'interroger hors de ces données cryptées? Si vous cryptez au niveau de l'application, vous devrez apporter les données à l'application, décrypter et travailler à partir de là. Cela devient prohibitif que l'ensemble de données grossit -. Alors qu'avec le cryptage de base de données, vous pouvez filtrer les données avant qu'il ne soit renvoyé à l'application

Autres conseils

Lorsque vous chiffrez les données sensibles, vous êtes essentiellement restreindre l'accès à ceux qui ont accès à une clé. Le problème devient alors l'un des principaux dirigeants:. Assurer que les personnes / systèmes uniquement autorisés ont accès à la clé nécessaire pour décrypter les données

Vous devez bien sûr utiliser un algorithme de chiffrement standard, assez ces jours facile, mais ce que vous avez besoin de penser est ce que les menaces que vous protégez contre, comment vous allez contrôler l'accès à la clé (s), et comment vous contrôlez l'accès physique aux serveurs.

Utilisation TDE assure que le contenu d'une base de données et ses sauvegardes sont cryptées, avec un impact minimal pour les utilisateurs autorisés de la base de données. Donc, tous ceux qui peuvent accéder au serveur de base de données avec des informations d'identification valides sera en mesure de voir les données non cryptées. Aussi tout DBA aura généralement accès à la clé et être en mesure de voir les données non cryptées. Mais un tiers qui, par exemple, s'empare de une sauvegarde hors site ne sera pas en mesure d'accéder aux données -. Qui peut être important pour le respect des exigences réglementaires

Par contre, si vous cryptez au niveau de l'application, vous pouvez utiliser une clé qui est accessible uniquement par les administrateurs du serveur d'applications. Ce potentiellement vous donne plus de sécurité, si, par exemple, les administrateurs de serveur de base de données et serveur d'applications sont tenus à l'écart (par exemple les membres de différentes organisations). CBM qui n'ont pas accès à la clé du serveur d'applications ne seront pas en mesure de voir les données.

Dans votre message original, vous parlez de cacher une clé secrète dans un fichier de configuration sur le serveur d'applications. Sur la face de cela, il semble que l'équivalent de sécurité de cacher la clé de la porte d'entrée sous le paillasson. Si vous faites cela, vous devez penser à la façon dont vous vous assurerez que les personnes non autorisées ne peuvent pas avoir accès à la clé.

Je suis d'accord avec Mayo, mais le chiffrement dans la base de données pourrait simplifier la maintenance du système complet .

Le chiffrement au niveau de l'application a besoin de vous gérer les clés, la phase d'authentification et d'autorisation pour les clés et la visualisation des données (selon avec ce que Mayo a écrit).

Si vous choisissez le cryptage de l'application que vous avez à vous soucier de l'exactitude de l'algorithme non seulement dans la phase developlment mais dans la phase d'entretien. Vous devez mettre en œuvre des tests unitaires sans régression. Vous devez gérer le changement de l'algorithme de cryptage parce que vous voulez peut-être un autre et meilleur algorithme.

Et vous devez être sûr que les données chiffrées seront toujours décryptées. Ce n'est pas une chose évidente, parce que le logiciel a des bugs et ainsi de suite. Les données perdues est pire que les données claires ; -)

Bien sûr, vous pouvez utiliser une bibliothèque de chiffrement bien connu, mais toutes les choses remainig est un énorme travail à faire pour vous.

Le chiffrement dans le DB ne protège que dans le DB mais vous pouvez envisager d'utiliser une sorte de communication SSL avec le DB. Je pense (mais je ne suis pas sûr) TDE met en œuvre ce type de communication sécurisée.

Application est utilisé par l'utilisateur, une entité non approuvé. Vous devez considérer que les données de l'application sont perdues. Pourquoi? Si je veux voler des données d'un système qui met en oeuvre le chiffrement des données au niveau de l'application ou le niveau DB, il suffit pourrait utiliser une photo-caméra pour obtenir les données! Très simple!

Vous devez considérer la sécurité du système, mais la fonctionnalité aussi. Plus est la sécurité, moins est la fonctionnalité. J'espère que mes considérations seront utiles pour vous.

être conforme aux normes PCI-DSS ne supprime pas votre responsabilité légale ...

Actuellement, il n'y a que deux Etats qui fournissent une telle exemption: Washington et Minnesota ...

DBA Promouvoir la TDE comme solution PCI-DSS Beware!

TDE ne protège que les données au repos, et non les données en transit ou données en mémoire ... Toute personne qui a un accès en lecture peut lire les toutes les données avec un outil ...

à mon humble avis TDE est bon lorsqu'il est combiné avec une solution de cryptage robuste niveau de l'application ... En tant que solution autonome en utilisant TDE seul, il est une bombe à retardement que PCI-DSS de la PCI QSA acheter off ont lamentablement échoué à prendre note de ... Attendez que les avocats obtiennent une emprise sur cette faille fondamentale ...

Tout le gourou de la sécurité vous dira couches de sécurité est la meilleure approche ....

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top