9
votes

Champs cryptés et recherche de texte complet, meilleure approche?

J'ai des champs qui stockent des notes et des informations sensibles que je voudrais crypter avant de se frayer un chemin dans la base de données.

En ce moment, j'utilise une recherche en texte intégral SQL pour rechercher ces champs. Évidemment crypter ces données va jeter mes résultats de recherche.

Quelle est la meilleure façon de chiffrer ces champs, mais autoriser toujours la recherche?


0 commentaires

5 Réponses :


4
votes

Il n'y a pas de base de données supportant l'index crypté, vous devez donc sacrifier une certaine sécurité pour y parvenir.

Vous pouvez indexer des données partielles en clair et trouvez les données réelles de votre application. Par exemple, si vous souhaitez stocker le numéro de carte de crédit. Vous pouvez avoir un index du dernier 4 chiffres. Le nombre de cartes partageant les mêmes 4 derniers chiffres est limitée afin que vous puissiez vous permettre de déchiffrer chacun un et vérifiez le nombre entier.


0 commentaires

9
votes

Ça ne va pas être facile. Ce que vous décrivez est rarement mis en œuvre dans des bases de données commerciales, bien qu'il existe des résultats théoriques sur le terrain. Je suggérerais que vous alliez à Google Scholar et commencez à chercher des papiers sur le sujet.

Voici quelques références pour vous aider à démarrer:


1 commentaires

Jetez également un coup d'oeil à cette présentation: comment rechercher sur les données cryptées - EU-Jin Goh crypto.stanford.edu/~eujin/papers/secureindex/...



2
votes

Une autre option consiste à stocker le Soundex des données cryptées. Vous pouvez ensuite rechercher sur la valeur Soundex et proches sans décrypter les données.


0 commentaires

1
votes

La version 10G de Oracle 2 (ou version ultérieure) peut prendre en charge cette fonctionnalité. Depuis leur site Web ici:

http://www.oracle.com/technologie /Oramag/oracle/05-sep/o555Security.html

"Une nouvelle fonctionnalité de la base de données Oracle 10g La version 2 vous permet de faire exactement que: Vous pouvez déclarer une colonne comme crypté sans écrire une seule ligne de code. Lorsque les utilisateurs inséraient les données, la base de données crypte de manière transparente et la stocke dans le Colonne. De même, lorsque les utilisateurs sélectionnent la colonne, la base de données décrypte automatiquement. Puisque tout cela se fait de manière transparente sans aucune modification du code de l'application, la fonctionnalité dispose d'un nom approprié: cryptage de données transparentes (TDE).

L'idée est que personne ne peut voir le texte clair dans la base de données, mais une instruction SELECT fonctionnerait comme normale. Cela pourrait vous aider à rechercher si Oracle est une option?

mise à jour: il y a une autre option ici:

http://www.critotech.com/index.htm

Pour les bases de données MySQL, mais cela semble assez cher.


0 commentaires

0
votes

Je sais que ceci est une ancienne réponse, mais SQL Server et Oracle ont maintenant (coûteuses) offertes pour le cryptage de données transparentes, qui permettent essentiellement à votre application de ne chercher aucun changement, mais les données réelles au repos sont cryptées. Plus d'infos ici:

SQL Server: https://msdn.microsoft.com/fr -Us / Bibliothèque / BB934049% 28V = SQL.120% 29.aspx

oracle: http://www.oracle.com/techNetwork/database /Options/Advanced-Security/index-099011.html


0 commentaires