我正在使用Windows DPAPI为我加密一些敏感数据。密码存储在注册表中。这一切都很好,但是我想知道是否有人可以澄清我对(可选)提供给.NET中ProtectedData.Protect()的“熵”字节的理解。
“熵”字节数组似乎类似于与其他加密方案一起使用的初始化向量或盐,但我看不到MSDN中对熵字节的良好描述。我所看到的代码示例只是熵字节中的硬代码!
提供给ProtectedData.Protect()和ProtectedData.Unprotect的熵字节类似于IV还是盐?熵字节因此可以安全地与密码一起存储吗,还是会损害安全性?
最佳答案
熵是特定于保护数据的应用程序的辅助密钥。如果我没有记错的话,一般的想法是允许多个应用程序使用一个用户帐户加密数据,但仍然保持彼此之间的安全性。例如,您的应用程序可能会在UserA下加密数据。如果我的应用程序希望在UserA下解密该数据,那么实际上没有什么可以阻止我这样做,因为DPAPI使用用户密钥。但是,如果考虑到应用程序特定的“熵”,那么我将需要知道您的熵以解密任何数据以保护UserA。
可以认为熵类似于盐,因为它是用于进一步抽象加密内容的附加密钥或秘密。与salt不同,在给定的凭据下,每个加密操作的应用程序熵都必须保持不变。使用盐时,通常最好尽可能地更改它。
熵本质上是一个附加密钥,应该像对待其他任何加密密钥一样对待。保持隐私和安全。
顺便说一句,我认为“熵”是用于这个目的的残酷词汇。像“差异化器”之类的东西,或者甚至创造一个“区分符”之类的词,会更好。 :P非常混乱的术语使用。
关于.net - Windows DPAPI-熵如何处理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1326001/