Сохранить пароль в приложении - PullRequest
2 голосов
/ 15 февраля 2012

Много угроз говорят о том, как зашифровать пароли, симметричное и асимметричное шифрование и т. Д. *

У меня есть простой зонд. Если я требую, чтобы пользователь вводил пароль каждый раз, когда он хочет подключиться к базе данных sqlite, тогда все в порядке.

Теперь проблема в том, что я хочу сохранить пароль в приложении, чтобы пользователю не приходилось вводить его каждый раз, когда он хочет подключиться к базе данных sqlite.

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

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

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


Если вы не понимаете последнюю часть, вот пример того, что я пытался объяснить в последней части:

скажем:

пароль для открытия базы данных: 1234

тогда я зашифрую этот пароль ключом someKey и скажем, что дает abcd

если я потом расшифрую abcd ключом someKey я должен получить 1234

Я мог бы зашифровать abcd снова с помощью ключа someKey, и я могу получить xy#8

наконец, если я смогу получить пароль 1234 путем дешифрования xy#8 с помощью ключа someKey, тогда я получу abcd Затем я расшифрую его тем же ключом someKey, чтобы получить 1234


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

где будет самое безопасное место для хранения строки someKey в приложении как можно более скрытой?

1 Ответ

3 голосов
/ 15 февраля 2012

Вы должны зашифровать пароль, используя класс ProtectedData.
Windows сохранит для вас ключ.

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

Подробнее читайте о DPAPI .

...