Начну с того, что понимаю, что хочу сделать данные максимально безопасными.
У меня есть приложение, и я хотел бы просто зашифровать всю информацию, которая может быть использована для личной идентификации кого-либо в база данных.
Итак, я прочитал, что хранить ваш ключ на том же сервере, что и данные, ужасно. Итак, отдельные серверы, нет проблем. Потом я прочитал, что это ужасно - вставить ключ в код на сервере приложений (в стороне от данных). Люди говорят, что правильным способом хранения ключа шифрования является использование HSM или хранилища ключей, такого как Azure Key Vault. Хорошо, я согласен с этим, но если у моего кода есть доступ к HSM или Azure Key Vault (который он должен иметь для расшифровки или доступа к данным ВСЕ ... .
Если мой код украден с сервера приложений (поэтому хранение ключа в самом коде было бы небезопасным) Почему злоумышленник не может использовать тот же метод, который мой код использует для расшифровки данных из HSM или хранилища ключей?
Предполагая, что просто хранить ключ внутри самого кода небезопасно. Чем отличается метод или функция, которая может расшифровать данные в код? Это в сущности скажет злоумышленнику, как получить ключ от хранилища в любом случае, не так ли?
Что такое дополнительный вектор или слой, который предотвращает использование HSM или Keyvault?
Я не против заплатить и внедрить дополнительный слой. Мне искренне любопытно, поскольку я действительно не вижу никакой разницы.