Подтвердить что ты не робот

Хранение зашифрованных данных в Postgres

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

4b9b3361

Ответ 1

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

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

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

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

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