Хранение паролей в реестре как «секреты» - PullRequest
6 голосов
/ 17 марта 2009

Мне нужно где-то хранить имя / пароль моих пользователей (предпочтительно реестр), чтобы мое приложение .Net могло использовать их для входа в какую-либо удаленную службу от имени пользователя. Я знаю, что можно хранить значения в реестре как «секреты», что означает их шифрование с использованием токена пользователя домена Windows или чего-то еще. Другими словами, я не хочу иметь дело с шифрованием сам.

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

Так или иначе, я смутно помню, что в реестре есть такое место, но детали неясны. И мне нужно сделать это в C # (хотя, если это простой доступ к реестру, это не должно иметь значения).

Редактировать: Еще одна вещь, она должна сохраняться между сеансами пользователя Windows (IOW это не помогает мне, если пароль не читается после выхода пользователя из системы).

Ответы [ 4 ]

10 голосов
/ 17 марта 2009

Возможно, вы думаете об API защиты данных. Найдите MSDN или , прочитайте некоторые блоги и посмотрите, сработает ли это для вас.

5 голосов
/ 17 марта 2009

Вы можете попробовать использовать System.Security.Cryptography.ProtectedData, которая может зашифровать их с помощью ключа для каждого пользователя. http://msdn.microsoft.com/en-us/library/system.security.cryptography.protecteddata.aspx.

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

2 голосов
/ 17 марта 2009

Имейте в виду, что на самом деле вы ничего не храните в безопасности, если вы можете автоматически (без ввода пользователя) восстановить пароль. Использование RSA, симметричного или другого шифрования не имеет значения, если вы храните ключ декодирования в своем приложении. Как только кто-то получает ключ, секрет раскрыт.

Однако вышеупомянутый API защиты данных должен защищать пароли от других пользователей на том же компьютере. (Звучит как DPAPI использует ваши учетные данные для шифрования.)

Чтобы узнать больше о параметрах, посетите страницу msdn для Устранение угроз .

0 голосов
/ 17 марта 2009
  • Вы никогда не должны хранить учетные данные в виде открытого текста. Используйте симметричный ключ шифра. Вынуть пароль во время выполнения. См. Справочник MSDN о функциях шифрования.
...