4

В настоящее время я храню свои имена пользователей & паролей в базе данных SQL Server CE.Безопасное хранение паролей в Windows

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

Я поддерживаю Windows 7, и поэтому я не могу использовать Password Vault

Я пытался использовать CredWrite и CredRead API, основанный на приведенном примере here.

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

Есть ли другие жизнеспособные решения?

Кажется, что-нибудь, что используется Windows Security Account Manager не будет.

+0

Почему вы храните пароли? Разве это не плохая практика? –

+0

В зависимости от вашего сценария одним из подходов было бы зашифровать пароли самостоятельно (используя API криптографии или CNG) с парольной фразой, которую пользователь должен ввести, когда ваше приложение запускается. –

+0

@DavidHeffernan UI automation также является еще одной веской причиной. –

ответ

3

Использование Data Protection API (DPAPI)

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

См. Например, Example C Program: Using CryptProtectData.

DPAPI используется подавляющим большинством приложений для хранения паролей.

+0

Что-нибудь держит любое другое вредоносное программное обеспечение, которое знает мое имя пользователя от шифрования одной и той же строки и доступа к SAM? – Mugen

+3

@Mugen В этом случае используется пароль, поэтому, даже если вы знаете имя пользователя, вы не можете читать пароли без пароля пользователя. Имейте в виду, что приложения, работающие в том же контексте, что и учетная запись пользователя, смогут читать информацию, но это ** всегда ** становится уязвимостью. – Petesh

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

  • Нет связанных вопросов^_^