Шифрование с использованием пароля пользователя - PullRequest
5 голосов
/ 06 сентября 2011

Я хочу зашифровать данные с помощью пароля пользователя входа в систему на компьютере с Windows, используя WINAPI.Я искал функцию, которая использует токен (или что-то в этом роде), но я не смог его найти.

Кто-нибудь знает, как это сделать?

Спасибо!: -)

Ответы [ 4 ]

7 голосов
/ 06 сентября 2011

API защиты данных Windows звучит так, как вам нужно. Функции CryptProtectData и CryptUnprotectData выполняют шифрование с использованием учетных данных текущего пользователя.

3 голосов
/ 06 сентября 2011

Я написал этот ответ ранее, но потом пересмотрел, так как раньше не слышал о DPAPI.Однако, после некоторого дальнейшего рассмотрения, я хотел бы предложить следующее мнение.Важным предисловием здесь является то, что все зависит от ваших потребностей.На ум приходят две противоречивые возможности:

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

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

Если вы находитесь в ситуации (2), затем прекратите чтение и перейдите к DPAPI, который хорошо подходит для этого случая.Если вы предпочитаете сценарий (1), прочитайте мой оригинальный ответ ниже.


Это, вероятно, не очень хорошая идея.Вот почему:

Фактический пароль не будет сохранен в системе (если у вас не установлена ​​Windows 3.11 или что-то подобное).Вместо этого будет храниться только хэш пароля, и во время входа в систему пароль, который вводит пользователь, хешируется и сравнивается с сохраненным хешем.

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

Короче говоря, нет.Спросите пользователя о выделенном, новом пароле для ваших данных и используйте его только для этого.

0 голосов
/ 06 сентября 2011
0 голосов
/ 06 сентября 2011

используйте Kerberos (сервер аутентификации на основе Linux или другие серверы, использующие Kerberos) / инфраструктуру LDAP (сервер Windows) вместо разработки собственного алгоритма входа в систему.

Windows Platform SDK и сторонние библиотеки имеют соединители с этими платформами.

Дополнительная информация в MSDN о Kerberos: http://msdn.microsoft.com/en-us/library/ff649429.aspx

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