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

Где хранить ключи шифрования Приложение MVC

Я использую класс шифрования/дешифрования AES, которому требуется значение ключа и значение вектора для шифрования и дешифрования данных в приложении MVC3.

При сохранении записи я шифрую данные, а затем сохраняю их в базе данных. Когда я получаю запись, я дешифрую в контроллере и передаю незашифрованное значение в представление.

Проблема заключается не в защите данных по мере прохождения сети, а в защите базы данных, если она будет скомпрометирована.

Я прочитал много сообщений, которые говорят, не помещайте ключи для шифрования в свой код.

Хорошо, где их следует хранить? Файловая система? Другая база данных?

Ищете какое-то направление.

4b9b3361

Ответ 1

Здравый смысл говорит, что если злоумышленник получит доступ к вашей базе данных, у них, скорее всего, также будет доступ к вашей файловой системе. Это действительно сводится к вам. Например, вы можете скрыть это. В файлах конфигурации, в простых файлах где-то в файловой системе, зашифруйте его другим ключом, находящимся внутри приложения... и т.д. И т.д.

Конфигурационные файлы являются логическим ответом, но зачем рисковать - смешайте его. Не стесняйтесь смешивать ключи с многоуровневыми шифрованиями - нужно что-то требовать от самой записи и быть уникальным для каждой записи, другая требует значения конфигурации, третья - для конкретного приложения и, возможно, четвертая из скрытой библиотеки хорошо в ваших ссылках на заявку? Таким образом, даже если один слой каким-то образом скомпрометирован, у вас будет несколько других, защищающих его.

Да, он добавляет лишние накладные расходы. Да, это относительно дорого. Но стоит ли вам иметь конфиденциальные данные, такие как данные кредитной карты пользователя? Вы ставите, что это так.

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

... Чтобы указать, что я имею в виду, смешивая: Шифруйте один раз. Затем снова зашифруйте эти данные с помощью другого ключа и, по-видимому, другого алгоритма.

Ответ 2

Я бы использовал ключи реестра, защищенные ACL, поэтому только их учетная запись, под которой работает ваш пул приложений, может читать их.