Насколько защищен ProtectedData.Protect (DPAPI)? - PullRequest
17 голосов
/ 21 января 2011

Предположим, кто-то получит доступ ко всему моему жесткому диску, я думаю, слабым местом будет мой пароль Windows.Не зная / не имея возможности извлечь это, данные должны быть в значительной степени безопасными, не так ли?

Я спрашиваю конкретно из-за записи EFS в Википедии, которая утверждает, что

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

и EFS использует DPAPI,То же самое относится и к моим собственным данным, защищенным с помощью этого:

ProtectedData.Protect(plain, null, DataProtectionScope.CurrentUser);

И если это действительно так, как я могу предотвратить это?

[Редактировать] NB Я пытаюсь сохранить учетные данные для приложения winforms, чтобы пользователю не приходилось вводить свой пароль при каждом входе в систему.Другими словами, если кто-то может войти в систему от имени этого пользователя (то есть знать пароль пользователя), то он также может читать зашифрованные данные.

Что - не из фонового окна - теперь делаетменя интересует - не может ли локальный администратор войти как любой локальный пользователь в любом случае?В этом случае я не должен беспокоиться о том, что администратор может получить пароли в любом случае ...

[Edit2] Как показывает Google, похоже, что администратор не может просто войдите как любой пользователь без предварительной настройки / изменения пароля.Так что мой вопрос все еще кажется актуальным ...

Ответы [ 3 ]

17 голосов
/ 06 февраля 2012

EFS использует DPAPI, а не наоборот.И администратор не может прочитать ваш ключ просто так.

Прежде чем забывать о DPAPI, я бы рассмотрел альтернативы.Если вы шифруете файл самостоятельно,

  1. Вы должны выбрать надежный алгоритм и хорошо его реализовать.
  2. Вам понадобится ключ.Где это будет?
  3. Вы будете хранить ключ в файле где-то на вашем диске.
  4. Этот ключ чувствителен, очевидно, вы захотите его зашифровать
  5. Перейти к 1

DPAPI делает от 1 до 3 хорошо.4 и 5 спорные.Если пароля Windows недостаточно для защиты данных, спросите себя, почему для начала достаточно CRUD этих данных.

Для большей безопасности вы можете рассмотреть не сохранение данных, а(соленый) хэш этого, если возможно.Это делает ваши данные только для записи.Например, если вы хотите проверить номер лицензии клиента:

  • Сохраните значение хеша с соленой водой
  • Запустите тот же хеш с номером соли, которую вы хотите проверить,
  • Сравните два.Если они совпадают, лицензия действительна.

Если вам необходимо считывать зашифрованные данные, а локально зашифрованного ключа недостаточно, рассмотрите возможность шифрования ключа приложения (шаг 2 выше) с помощью закрытого ключа, хранящегося всмарт-карта

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

4 голосов
/ 21 января 2011

См. эту статью о безопасности DPAPI .По сути, он так же безопасен, как и ваш пароль Windows - если ваш пароль будет сброшен администратором, ключ дешифрования будет утерян.Основные направления атаки, на которые вам нужно обратить внимание:

  • Раскрытие пароля: "серфинг по плечу", заметки и т. Д.
  • Захват базы данных учетных записей компьютера и использованиевзломщика паролей
  • Сетевая атака с помощью «drive-by download», съемный носитель, автозапуск и т. д.
  • Запись диска сброса пароля, если вы сделали один
  • Физическая установка устройства регистрации ключей или другой "ошибки"
1 голос
/ 07 ноября 2012

DPAPI может использоваться как с энтропией, так и без нее.Существует только два способа, которыми BLOB-объекты DPAPI без необязательной энтропии могут быть скомпрометированы:

  1. Администратор домена может напрямую получать чью-либо историю мастер-ключей DPAPI в любое время.Больше ничего не требуется.Они могут быть использованы для расшифровки всех BLOB-объектов.Локальные администраторы не могут этого сделать.

  2. Учетные данные пользователя Windows скомпрометированы.

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

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

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