我正在使用Windows DPAPI为我加密一些敏感数据。密码存储在注册表中。这一切都运行得很好,但我想知道是否有人可以澄清我对“熵”字节的理解,这些字节(可选)被提供给.NET中的ProtectedData.Protect()。
“熵”字节数组看起来类似于用于其他加密方案的初始化向量或salt,但我在MSDN中看不到对熵字节的良好描述。我看到的代码示例只是在熵字节中进行了硬编码!
提供给ProtectedData.Protect()和ProtectedData.Unprotect的熵字节是否类似于IV或salt?因此,熵字节是否可以安全地与密码一起存储,或者这是否会损害安全性?
发布于 2009-08-25 04:26:54
熵是特定于保护数据的应用程序的辅助密钥。如果我没记错的话,一般的想法是允许多个应用程序在一个用户帐户下加密数据,但仍然保持彼此之间的安全性。例如,您的应用程序可能在UserA下加密数据。如果我的应用程序希望在UserA下解密数据,那么实际上没有什么可以阻止我这样做,因为DPAPI使用用户的密钥。但是,如果您考虑了应用程序特定的“熵”,那么我需要知道您的熵才能解密任何数据以保护UserA。
熵可以被认为类似于盐,因为它是用于进一步提取加密内容的附加密钥或秘密。与salt不同的是,对于给定凭据下的每个加密操作,应用程序的熵都需要保持相同。对于盐,最好的办法就是尽可能频繁地更换它。
熵本质上是一个附加密钥,应该像对待任何其他加密密钥一样对待它。保证它的私密性和安全性。
顺便说一句,我认为“熵”这个词在这方面用起来很粗鲁。像“区分”这样的词,或者甚至创造一个像“区分”这样的词,可能会更好。:P非常容易混淆的术语用法。
发布于 2012-11-07 19:36:30
附加熵的一个用途是对应用程序本身进行密码保护。从密码导出的密钥可以用作存储应用程序数据时的熵。否则,在用户上下文中运行的任何进程都可以解密数据。如果您存储额外的熵,而不是提示输入密码,它仍然可能成为流氓应用程序的目标。
https://stackoverflow.com/questions/1326001
复制相似问题