Windows DPAPI - что делать с энтропией? - PullRequest
18 голосов
/ 25 августа 2009

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

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

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

Ответы [ 2 ]

14 голосов
/ 25 августа 2009

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

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

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

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

1 голос
/ 07 ноября 2012

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

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