Каков безопасный подход для хранения ключа шифрования для использования в 2 разных приложениях? - PullRequest
1 голос
/ 15 декабря 2011

У меня есть 2 поля, которые мне нужно зашифровать в базе данных SQL Server, пароль и идентификационный номер.Я думаю о Rijndael, и у меня уже есть сценарии для шифрования / дешифрования, и я буду использовать machinekey для открытого ключа.

Идентификационный номер должен быть в состоянии расшифровать из 2 разных приложений,веб-приложение и консольное приложение, которые находятся на одном сервере.

Какой подход мне выбрать для машинного ключа?Должен ли я создать его, используя такой инструмент, как этот:

http://aspnetresources.com/tools/machineKey

Или я просто должен автоматически сгенерировать их в файлах 2-х приложений web.config как:

<machineKey  validationKey="AutoGenerate,IsolateApps"  decryptionKey="AutoGenerate,IsolateApps" validation="SHA1" decryption="AES"/>

Что безопаснее?Или есть более безопасный способ?Я прочитал что-то о DPAPI, который использует ключ фактической машины?

1 Ответ

0 голосов
/ 18 мая 2015

Прежде всего, не шифруйте поле пароля.Неправильно зашифрован пароль, кто-то, получивший доступ к ключу, может расшифровать все ваши пароли, поэтому используйте Hashing.Алгоритм, который вы используете для хеширования, который я рекомендую, должен быть bcrypt.

Во-вторых, для шифрования идентификатора используйте 256-битный алгоритм AES, а для хранения ключей шифрования используйте решение Microsoft, использующее компонент криптопрограммы, который использует DPAPI (см .: https://msdn.microsoft.com/en-us/magazine/cc163884.aspx). Не храните ключи в коде, так как каждый, кто имеет доступ к коду, может найти этот ключ, и у вас не будет никаких возможностей аудита, связанных с тем, кто получил доступ к ключу и изменил его. Также хранение dll в процессе является плохим, что представляет несколько угроз безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...