Как защитить ключ шифрования в php?

Имеется задача - зашифровать данные (реквизиты) пользователей в базе данных (postgresql).
Ознакомился с вопросом другого пользователя. Однозначного ответа не нашел.
Требования: данные должны быть в сохранности, даже если получили доступ к серверу, слили базу, достали все скрипты проекта и прочее, прочее.

Ранее использовал perl(dancer). Там ситуацию решал следующим образом: перед запуском сервера загружал текстовый файл с ключом шифрования. Во время запуска dancer файл читался и удалялся. Ключ хранился, пока dancer работал. Если: dancer демон падал или входил пользователь с правами администратора - ключ шифрования стирался с памяти.

Текущая разработка должна быть реализована на php.
Склоняюсь к решению - написание расширения php, которое будет тянуть ключ шифрования с соседнего ресурса.
  • Вопрос задан
  • 469 просмотров
Пригласить эксперта
Ответы на вопрос 3
savostin
@savostin
Еще один программист
Делайте тоже самое - храните ключ в памяти.
В memcahed или в shared memory.
Можете в $ENV хранить (например создавать конфиг php-fpm с установленным $ENV динамически перед запуском и удалять его после запуска).
Только надо подумать об автоматическом рестарте, мало ли...
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Пишется демон (db-wrapper) на сокет, который получает ключ из файла (или другого хоста) для дешифрования результата БД внутри этого процесса-демона. Соль ключа - хранится внутри этого процесса с привязкой к домену или MAC-интерфейса.
Демон запускается от имени другого пользователя с урезанными правами, нежели чем web-сервер и PHP.

Можно дешифровать данные непосредственно на клиенте через JS.
Но, это уже совсем другая история....
Ответ написан
SagePtr
@SagePtr
Еда - это святое
На сервере ключ уворуют или внедрят код, который уворует.
На клиенте если просчитывать - тоже подменят скрипты и смогут уворовать.
Вижу пока что только один вариант - если в качестве клиента будет использоваться программа, подписанная ЭЦП автора, которая не будет полностью доверять серверу. А при скачивании обновлений проверять их ЭЦП и только тогда ставить. В итоге даже если сервер взломают, то не получат ключ, которым автор подписывает программу, и не подменят её, а ключи пользователей дальше клиента никуда не уйдут. Хотя и тут могут подменить инсталлятор программы, но получат его только новые пользователи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 12:23
2500 руб./за проект
25 апр. 2024, в 12:21
10000 руб./за проект