Мне нужно надежно зашифровать данные в моей базе данных, чтобы в случае сброса базы данных хакеры не смогли расшифровать данные.
Я планирую создать простой сервер ключей на другом компьютере и разрешить доступ к нему серверу БД (ограниченный IP-адресом на сервере ключей, чтобы разрешить сервер БД). Сервер ключей будет содержать ключ, необходимый для шифрования / дешифрования данных.
Однако, если хакеру удалось получить оболочку на сервере БД, он мог запросить ключ у сервера ключей и, следовательно, расшифровать данные в базе данных.
Как я могу предотвратить это (при условии, что все брандмауэры установлены, БД не подключена напрямую к Интернету и т. Д.)? то есть есть ли какой-то метод, который я мог бы использовать, который мог бы защитить запрос от сервера БД к ключевому серверу, чтобы даже если у хакера была оболочка на сервере БД, он не смог бы делать те же запросы? Подписанные запросы от сервера БД могут сделать их менее тривиальными - я полагаю, это помогло бы увеличить время, необходимое для взлома сервера ключей, чего хакеру, вероятно, не хватило бы.
Насколько я понимаю, если кто-то сможет получить оболочку на сервере БД, все равно потеряно. Это можно смягчить, используя один ключ для каждого элемента данных в БД, чтобы, по крайней мере, не было одного «главного» ключа, а было несколько ключей, к которым хакеру нужно было бы получить доступ.
Каким будет безопасный метод обеспечения подлинности запросов от сервера БД к серверу ключей и их надежности?
Однако, если хакеру удалось получить оболочку на сервере БД, он мог запросить ключ у сервера ключей и, следовательно, расшифровать данные в базе данных.
Как я мог предотвратить это [...]?
По сути, вы никогда не смогли бы этого сделать, за исключением того, что вы с самого начала разрабатывали систему, смягчающую этот тип атак. Текущая архитектура ПК не позволяет использовать такого рода приложения. Такие усилия, как База безопасных вычислений нового поколения были разработаны для решения аналогичных задач, ограничивая возможность выполнения путей кода только «необходимыми».
Сквозное шифрование, при котором ключи шифрования / дешифрования управляются клиентами, а сервер базы данных вообще ничего не знает о ключах, может предоставить другой вариант. Хотя не оставляя серверу базы данных достаточно информации для работы (например, индексов), это может значительно сократить его способность предварительной обработки данных и, таким образом, снизить их ценность для вашего приложения.