Шифрование полей для поиска в базе данных MySQL - PullRequest
0 голосов
/ 05 октября 2018

Я пришел к клиенту с требованием, чтобы я должен был зашифровать поля first_name, last_name, phone_number, username в большой базе данных для конфиденциальности.

Но если я зашифрую эти поля с помощью функции PHP, я не смогу выполнить SQL-запрос выбора (LIKE , =) по этим данным.Можно ли использовать AES_ENCRYPT без значительной потери производительности или каким-либо другим быстрым способом добиться этого?

1 Ответ

0 голосов
/ 13 октября 2018

Вас может заинтересовать CipherSweet , который обеспечивает безопасное аутентифицированное шифрование , разделение ключей и зашифрованный поиск в PHP (для использования с базами данных SQL).

CipherSweet не использует функцию MySQL AES_ENCRYPT().На самом деле, вы никогда не захотите полагаться на функцию AES_ENCRYPT() MySQL, если целью шифрования данных является скрытие их от сервера базы данных в качестве стратегии глубокой защиты.

Вместо этого CipherSweet поддерживаетдва внутренних интерфейса:

  • FIPSCrypto , который использует только алгоритмы, одобренные для использования в сертифицированных FIPS 140-2 приложениях (AES, SHA2, PBKDF2, HMAC и т. д..)
  • ModernCrypto , использующий libsodium (который быстрее и безопаснее, но менее совместим с действующими системами, которые имеют только OpenSSL).

С CipherSweet вы не получаете LIKE или поддержку регулярных выражений.Вместо этого он использует стратегию под названием слепое индексирование (что аналогично тому, как часто используется оператор LIKE).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...