Windows DPAPI - 如何处理熵?

sai*_*lle 19 .net security

我正在使用Windows DPAPI为我加密一些敏感数据.密码存储在注册表中.这一切都运行良好,但我想知道是否有人可以澄清我对(熵)字节的理解,这些字节是(可选地)提供给.NET中的ProtectedData.Protect().

'entropy'字节数组看起来类似于与其他加密方案一起使用的初始化向量或盐,但我看不到MSDN中熵字节的良好描述.我见过的代码示例只是熵字节中的硬编码!

提供给ProtectedData.Protect()和ProtectedData.Unprotect的熵字节是否类似于IV或salt?因此,熵字节可以安全地存储在密码旁边,还是会危及安全性?

jri*_*sta 15

Entropy是特定于保护数据的应用程序的辅助密钥.如果我没记错的话,一般的想法是允许多个应用程序在单个用户帐户下加密数据,但仍然保持彼此之间的安全性.例如,您的应用程序可能会加密UserA下的数据.如果我的应用程序希望在UserA下解密该数据,那么实际上没有任何东西可以阻止我这样做,因为DPAPI使用用户密钥.但是,如果您考虑特定于应用程序的"熵",那么我需要知道您的熵来解密任何数据以保护UserA.

熵可以被认为类似于盐,因为它是用于进一步抽象加密内容的附加密钥或秘密.与salt不同,对于给定凭证下的每个加密操作,您的应用程序的熵都需要保持不变.使用盐,通常最好尽可能多地改变它.

熵本质上是一个额外的密钥,它应该被视为任何其他加密密钥.保持私密性和安全性.

顺便说一下,我认为'熵'是一个用于此目的的残暴词.像"差异化"这样的东西,或者甚至可能创造出像'distintifier'这样的词,会更好.:P非常混乱的术语使用.