Как я могу использовать LocalMachine и CurrentUser одновременно в Интерфейс API защиты данных? Я хотел бы повысить безопасность.Могу ли я использовать одновременно LocalMachine и CurrentUser?
ответ
Вы не можете. У них разные цели. С помощью защиты LocalMachine все секреты защищены (в конечном итоге) 20-байтовым LSA-секретным DPAPI_SYSTEM, который одинаково для всех пользователей на данной машине. Таким образом, любой, кто может дешифровать блок данных, вошел в систему.
С помощью CurrentUser, только текущий пользователь (или администраторы домена Windows, к которому принадлежит компьютер), при входе в систему может дешифровать данные, потому что секрет защищен хэш-значением его пароля для входа.
Таким образом, добавление LocalMachine только уменьшает безопасность в том, что больше людей (потенциально) имеют к нему доступ. И текущая настройка криптосистемы в системе (которая скрыта от программиста) вообще не учитывает ее.
Единственный способ, которым я мог бы использовать оба варианта, - использовать DPAPI дважды: использовать LocalMachine для защиты секретности, некоторого blob B, а затем защитить этот новый blob с помощью флага CurrentUser до нового окончательного blob. (возможен и другой порядок). Но он ничего не улучшает: один и тот же пользователь может получить к нему доступ, он занимает всего два раза.
Как использовать «усиление» безопасности? Выберите один на основе вашего варианта использования и убедитесь, что он безопасен. Одна из причин, по которой API настолько проста, состоит в том, чтобы сделать его легким в использовании и трудно завинчивать. –