Хранение зашифрованных данных в Postgres - PullRequest
34 голосов
/ 08 ноября 2011

У меня есть требование хранить определенные данные в зашифрованном виде в Postgres.Очевидно, что мне нужно зашифровать его, сохранить и уметь читать и расшифровывать.Каков наилучший способ сделать это?

1 Ответ

36 голосов
/ 29 ноября 2011

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

Если ваша база данных зашифровывает и расшифровывает данные для вас, то это может привести к краже ключей вместе с базой данных.

Если вы используете криптографические функции pgcrypto в базе данных, вы можете заставить приложение отправлять ключ вместе с данными, что, по крайней мере, несколько полезно. Тем не менее, существует риск, что ключи будут открыты в журналах, если полезный системный администратор включит агрессивное ведение журнала операторов или автоматический сброс плана, и, в конце концов, если ключи отправляются на компьютер базы данных, они более уязвимы, чем если бы они не были , Злоумышленник, который получает контроль над компьютером базы данных, может также изменить настройки журнала, заменить двоичные файлы postgresql или перехватить трафик для захвата ключей и данных таким образом.

Если appserver и db находятся на одной машине и управляются одной и той же ролью (ролями), нет смысла беспокоиться об их изоляции, и может быть разумно просто использовать pgcrypto.

В любом случае, не забудьте солить!

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