Скажите, что каждая строка в таблице имеет данные, относящиеся к одному конкретному пользователю. У пользователя есть пароль для доступа к системе.
Как зашифровать столбец данных с помощью InnoDB, чтобы никто, кроме пользователя, не мог прочитать данные? Я думал о чем-то вроде использования одной из функций шифрования MySQL (скажем, AES) с ключом, основанным на хеше, вычисленном из пароля пользователя.
Есть ли у кого-нибудь какие-либо указания на то, как я могу это сделать? Я на правильном пути?
Один из ответов ниже
Проблема изменения пароля пользователя включает в себя повторное шифрование ключа пользователя с помощью нового пароля, который намного более прямолинейный, чем повторное шифрование всей совокупности пользовательских данных, которые могут быть сколь угодно большими. Пользовательский ключ остается тем же самым в течение всего срока службы пользовательских данных в системе.
Как это помогает? Скажем, пароль pass1. И есть множество записей, зашифрованных с помощью ключа, генерируемого из этого. Если пользователь теперь сбрасывает пароль на pass2, у меня нет возможности расшифровать данные, которые были зашифрованы с помощью pass1. В случае, если пользователь полностью забудет пароль, все его зашифрованные данные будут потеряны.