Подтвердить что ты не робот

Windows DPAPI - что делать с энтропией?

Я использую Windows DPAPI для шифрования некоторых конфиденциальных данных для меня. Шифр хранится в реестре. Это все работает хорошо, но мне было интересно, может ли кто-нибудь разъяснить мое понимание байтов энтропии, которые (необязательно) поставляются ProtectedData.Protect() в .NET.

Байт-массив "энтропия", по-видимому, аналогичен вектору инициализации или соли, используемому с другими криптографическими схемами, но я не видел хорошего описания байтов энтропии в MSDN. В образцах кода я видел только жесткий код в байтах энтропии!

Являются ли байты энтропии для ProtectedData.Protect() и ProtectedData.Unprotect аналогичными IV или соли? Могут ли байты энтропии быть сохранены безопасно рядом с шифрованием, или это может поставить под угрозу безопасность?

4b9b3361

Ответ 1

Entropy - это вторичный ключ, специфичный для приложения, которое защищает данные. Общая идея, если я правильно помню, состояла в том, чтобы разрешить нескольким приложениям шифровать данные под одной учетной записью пользователя, но все же поддерживать безопасность друг от друга. Например, ваше приложение может шифровать данные в UserA. Если Мое приложение хотело расшифровать эти данные в UserA, действительно нет ничего, что могло бы помешать мне сделать это, поскольку DPAPI использует ключ пользователя. Однако, если вы учитываете специфику приложения "энтропия", мне нужно знать вашу энтропию для дешифрования любых данных для защиты для UserA.

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

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

Кстати, я думаю, что "энтропия" была жестоким словом для использования для этой цели. Что-то вроде "дифференциатора", или, возможно, даже придумать слово, подобное "отличителю", было бы лучше.: P Очень запутанное использование термина.

Ответ 2

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