LINUX.ORG.RU

История изменений

Исправление no-such-file, (текущая версия) :

Хочу шифровать пользовательские персональные данные в таблицах мускула. На случай если хитрый хакер сольет бд. Как это делается у взрослых дяденек?

Генерируешь случайный ключ для шифрования данных пользователя - для каждого пользователя отдельный. Пользователя просишь придумать пароль и шифруешь этот ключ данным паролем. Пароль нигде не хранишь - каждый раз когда нужно расшифровать данные спрашиваешь у пользователя пароль. В итоге если база утекла, то данные расшифровать невозможно, и нужно брутить каждую запись отдельно.

Если каждый раз спрашивать накладно, то генерируешь случайный ключ сессии, спрашиваешь у пользователя пароль, расшифровываешь ключ записей БД, шифруешь его ключом сессии и в таком виде хранишь. Каждые 5-10 минут меняешь ключ сессии и перезашифровываешь ключи БД в сессии новым ключом.

В этом случае если утекают данные сессии, то скомпрометируются только ключи которые были активны во время сессии, и, кроме того нужно будет ещё стырить актуальный ключ сессии.

Пассы же хранят с солью

Нет. Хранят только хэши.

Исходная версия no-such-file, :

Хочу шифровать пользовательские персональные данные в таблицах мускула. На случай если хитрый хакер сольет бд. Как это делается у взрослых дяденек?

Генерируешь случайный ключ для шифрования данных пользователя - для каждого пользователя отдельный. Пользователя просишь придумать пароль и шифруешь этот ключ данным паролем. Пароль нигде не хранишь - каждый раз когда нужно расшифровать данные спрашиваешь у пользователя пароль. В итоге если база утекла, то данные расшифровать невозможно, и нужно брутить каждую запись отдельно.

Если каждый раз спрашивать накладно, то генерируешь случайный ключ сессии, спрашиваешь у пользователя пароль, расшифровываешь ключ записей БД, шифруешь его ключом сессии и в таком виде хранишь. Каждые 5-10 минут меняешь пароль сессии и перезашифровываешь ключи БД в сессии новым паролем.

В этом случае если утекают данные сессии, то скомпрометируются только ключи которые были активны во время сессии, и, кроме того нужно будет ещё стырить актуальный ключ сессии.

Пассы же хранят с солью

Нет. Хранят только хэши.