代码之家  ›  专栏  ›  技术社区  ›  saille

Windows DPAPI-如何处理熵?

  •  17
  • saille  · 技术社区  · 15 年前

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

    “熵”字节数组似乎类似于用于其他加密方案的初始化向量或salt,但我在MSDN中看不到对熵字节的良好描述。我看到的代码示例只是熵字节中的硬代码!

    是提供给ProtectedData.Protect()的熵字节(&保护数据。解除保护类似于静脉注射或盐?因此,熵字节能否与密码一起安全存储,或者这会危及安全性?

    2 回复  |  直到 15 年前
        1
  •  16
  •   jrista    15 年前

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

    熵可以被认为类似于salt,因为它是用于进一步提取加密内容的额外密钥或秘密。与salt不同,对于给定凭证下的每个加密操作,应用程序的熵都需要保持不变。对于盐,通常最好尽可能经常地更换。

    熵本质上是一个附加密钥,应该像对待任何其他加密密钥一样对待它。保持它的私密性和安全性。

    顺便说一句,我认为“熵”是一个非常糟糕的词。像“Differentior”这样的东西,或者甚至创造一个像“Districtifier”这样的词,会更好P术语用法非常混乱。

        2
  •  3
  •   Monstieur    5 年前

    附加熵的一个用途是密码保护应用程序本身。在存储应用程序数据时,可以使用从密码派生的密钥作为熵。否则,在用户上下文下运行的任何进程都可以解密数据。如果您存储额外的熵而不是提示输入密码,它仍然可能成为恶意应用程序的目标。