2012-06-07 11 views
11

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

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

Концерн не защищает данные при прохождении сети, а защищает базу данных, если она будет скомпрометирована.

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

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

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

ответ

3

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

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

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

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

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

+0

>> «Во-первых, вы можете скрыть это»: безопасность от неизвестности - это не гонка ... извините – ChiYoung

0

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

+1

И поскольку appPoolAccount - это тот, который читает regKeys, а также олицетворяет веб-камеру, тогда хакер может использовать appPoolAccount для доступа к regKeys, если есть проблема с безопасностью на вашем веб-сервере. И ваша dbase может быть расшифрована. Так что это не оптимальное решение, которого я боюсь. – ChiYoung

Смежные вопросы