2017-10-10 1 views
3

Description de la requête: Disons, j'ai une table de base de données qui stocke toutes les données des utilisateurs sous forme cryptée. J'ai une fonctionnalité dans laquelle l'administrateur peut rechercher les données de l'utilisateur. Maintenant, le problème est, Admin va entrer le texte normal dans la zone de texte et je dois filtrer la liste des utilisateurs (à chaque changement de texte) en fonction de l'entrée d'Admin. Pendant ce temps, j'ai le tas de données sous forme cryptée et je dois le filtrer sur la base du texte normal que l'administrateur entre.Filtre de recherche sur les données cryptées dans MySQL

Quelle est la solution que j'ai trouvée jusqu'à présent, je décrypte d'abord toutes les données, puis j'applique le filtre. Mais je suis curieux de savoir, et si j'ai des millions d'enregistrements dans ma base de données alors la manière actuelle semble inutile et inefficace.

Est-ce que quelqu'un peut m'aider à rechercher des données cryptées de la manière la plus efficace?

Toute aide sera appréciée!

Merci.

+2

https://dba.stackexchange.com/questions/23908/how-to-search-a-mysql-database-with-encrypted-fields cela peut vous aider à –

+0

Crypter le mot-clé – mewc

+0

@mewc: valeur chiffrée peut différer à chaque changement de texte. –

Répondre

0

Quelle est la solution que j'ai trouvée jusqu'à présent, je décrypte d'abord toutes les données puis j'applique le filtre. Mais je suis curieux de savoir, et si j'ai des millions d'enregistrements dans ma base de données alors la manière actuelle semble inutile et inefficace.

Vous avez raison de dire que ce n'est pas une solution évolutive. Si vous voulez approfondir ce problème, voyez: Building Searchable Encrypted Databases with PHP and SQL.

Qu'est-ce que vous voulez faire est:

  1. stocker des données cryptées en l'état, en utilisant le cryptage authentifié .
  2. Enregistrez un index aveugle du texte en regard du texte chiffré.
    • Un index aveugle peut être HMAC-SHA256(plaintext, separate_key)
    • valeurs sensibles devraient utiliser au lieu sodium_crypto_pwhash() ou hash_pbkdf2().
    • Pour économiser de l'espace, tronquez l'index borgne et traitez-le comme un filtre Bloom.

Cela vous donne le meilleur des deux mondes: le cryptage des données qui résiste à la fois les attaques passives et actives, mais permet également d'utiliser dans les requêtes SELECT rapides.