Каков рекомендуемый подход для шифрования/дешифровки больших текстовых данных в MySQL?

У меня есть клиент/серверное приложение, которое работает в интрасети, и у меня есть требование зашифровать данные в одном поле одной таблицы базы данных. Это поле в настоящее время TEXT тип данных, который я узнал, не хорошо для шифрования в MySQL. Текст, хранящийся в этом поле, похож на оценку работы сотрудников, содержащую повествовательные комментарии руководителей. Из-за ограничений на личную информацию, касающуюся сети, в которой работает система, эти данные не могут быть сохранены в виде простого текста. Данные также должны редактироваться различными пользователями с различными "ролями" (уровни аутентификации) через клиентскую часть приложения.

Итак... Я изучал, как шифровать эти данные, и вот что я понимаю до сих пор:

  • В документах MySQL объясняются функции AES, и что я должен изменить тип данных поля, вероятно, на BLOB, чтобы они вмещали зашифрованную информацию.
  • Ключ должен быть исправлен (т.е. не соленый паролем пользователя и т.д., как я читал в SO), потому что разные пользователи должны иметь возможность редактировать/проверять комментарии.
  • Я думаю, что лучший вариант - это сохранить ключ и передать его как переменную в php-коде, аналогично тому, как я делаю с регистрационной информацией MySQL для приложения.

Является ли использование функций AES в этом сценарии подходящим способом, или есть проблемы, о которых я не знаю? Я задавался вопросом о проблемах (производительность?) из-за потенциальной длины текста. Большинство примеров, которые я нашел, относятся к шифрованию меньших по размеру данных: например, имя, адрес, номера кредитных карт и т.д.

Любой совет был бы очень признателен. Заранее спасибо!

7
задан Carvell Fenton 9 September 2011 в 12:34
поделиться