Насколько защищен ProtectedData.Protect(DPAPI)?

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

Я спрашиваю конкретно из-за записи EFS в wikipedia, в которой говорится, что

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

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

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

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

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

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

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

Ответы

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

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

  • Раскрытие пароля: "плечо серфинга", липкие заметки и т.д.
  • Захват базы данных учетных записей компьютеров и использование взломщика паролей
  • Онлайн-атака с помощью "загрузки при загрузке", сменного носителя AutoPlay и т.д.
  • Захват пароля reset, если вы сделали один
  • Физическая установка устройства регистрации ключей или другой "ошибки"

Ответ 3

DPAPI может использоваться как с дополнительной энтропией, так и без нее. Есть только два способа:

без может быть скомпрометирована дополнительная энтропия:

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

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

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

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