Исправление no-such-file, (текущая версия) :
Хочу шифровать пользовательские персональные данные в таблицах мускула. На случай если хитрый хакер сольет бд. Как это делается у взрослых дяденек?
Генерируешь случайный ключ для шифрования данных пользователя - для каждого пользователя отдельный. Пользователя просишь придумать пароль и шифруешь этот ключ данным паролем. Пароль нигде не хранишь - каждый раз когда нужно расшифровать данные спрашиваешь у пользователя пароль. В итоге если база утекла, то данные расшифровать невозможно, и нужно брутить каждую запись отдельно.
Если каждый раз спрашивать накладно, то генерируешь случайный ключ сессии, спрашиваешь у пользователя пароль, расшифровываешь ключ записей БД, шифруешь его ключом сессии и в таком виде хранишь. Каждые 5-10 минут меняешь ключ сессии и перезашифровываешь ключи БД в сессии новым ключом.
В этом случае если утекают данные сессии, то скомпрометируются только ключи которые были активны во время сессии, и, кроме того нужно будет ещё стырить актуальный ключ сессии.
Пассы же хранят с солью
Нет. Хранят только хэши.
Исходная версия no-such-file, :
Хочу шифровать пользовательские персональные данные в таблицах мускула. На случай если хитрый хакер сольет бд. Как это делается у взрослых дяденек?
Генерируешь случайный ключ для шифрования данных пользователя - для каждого пользователя отдельный. Пользователя просишь придумать пароль и шифруешь этот ключ данным паролем. Пароль нигде не хранишь - каждый раз когда нужно расшифровать данные спрашиваешь у пользователя пароль. В итоге если база утекла, то данные расшифровать невозможно, и нужно брутить каждую запись отдельно.
Если каждый раз спрашивать накладно, то генерируешь случайный ключ сессии, спрашиваешь у пользователя пароль, расшифровываешь ключ записей БД, шифруешь его ключом сессии и в таком виде хранишь. Каждые 5-10 минут меняешь пароль сессии и перезашифровываешь ключи БД в сессии новым паролем.
В этом случае если утекают данные сессии, то скомпрометируются только ключи которые были активны во время сессии, и, кроме того нужно будет ещё стырить актуальный ключ сессии.
Пассы же хранят с солью
Нет. Хранят только хэши.