DPAPI автоматически делает Dynamic Salt?

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

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

Это заставляет меня чувствовать, как будто уже есть динамическая соль. Я не вижу никаких документов, подтверждающих это.

Вот метод, который я называю https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.protecteddata.protect?view=netframework-4.7.2.

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

1 ответ

Решение

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

[...]

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

https://msdn.microsoft.com/en-us/library/ms995355.aspx

Эти случайные данные, включенные в зашифрованные данные, действуют как соль.

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

Другие вопросы по тегам