Как безопасно контролировать доступ к бэкэнд-серверу ключей?

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

Я планирую создать простой сервер ключей на другом компьютере и разрешить доступ к нему серверу БД (ограниченный IP-адресом на сервере ключей, чтобы разрешить сервер БД). Сервер ключей будет содержать ключ, необходимый для шифрования / дешифрования данных.

Однако, если хакер смог получить оболочку на сервере БД, он мог бы запросить ключ у сервера ключей и, следовательно, расшифровать данные в базе данных.

Как я могу предотвратить это (если все брандмауэры на месте, БД не подключена напрямую к Интернету и т. Д.)? то есть есть какой-то метод, который я мог бы использовать, чтобы защитить запрос от сервера БД к серверу ключей, чтобы даже если у хакера была оболочка на сервере БД, он не смог бы сделать те же самые запросы? Подписанные запросы от сервера БД могли бы сделать выдачу этих запросов менее тривиальной - я полагаю, это помогло бы увеличить время, необходимое для взлома сервера ключей, а это, вероятно, не хватило бы хакеру.

Насколько я понимаю, если кто-то может получить оболочку на сервере БД, все равно все потеряно. Этого можно избежать, используя один ключ на элемент данных в БД, так что, по крайней мере, нет ни одного "главного" ключа, а нескольких ключей, к которым хакер должен получить доступ.

Каким был бы безопасный метод обеспечения подлинности запросов от сервера БД к серверу ключей и их доверия?

1 ответ

Решение

Однако, если хакер смог получить оболочку на сервере БД, он мог бы запросить ключ у сервера ключей и, следовательно, расшифровать данные в базе данных.

Как я мог предотвратить это [...]?

По сути, вы никогда не могли, за исключением того, что вы разрабатывали систему, с самого начала смягчающую этот тип атаки. Текущая архитектура ПК не допускает такого рода приложений. Усилия, подобные Secure Computing Base следующего поколения, были разработаны для решения задач подобного рода, ограничивая возможность выполнения путей к коду только "необходимыми".

Сквозное шифрование, когда ключи шифрования / дешифрования управляются клиентами, а сервер базы данных вообще не знает ключей, может представлять собой другой вариант. Не оставляя достаточного количества информации для работы с сервером базы данных (например, с индексами), это может значительно снизить его способность к предварительной обработке данных и, следовательно, снизить его ценность для вашего приложения.

Другие вопросы по тегам