- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个 WPF 应用程序,允许用户下载加密内容,并且我们希望提供离线解密该内容的功能。我的想法是下载 key 并使用 DPAPI 存储它们,但我在使用熵参数时遇到了问题。
是否有任何方法可以生成熵以一致地用于 DPAPI 函数,而无需对其进行硬编码/存储?
谢谢托尼
最佳答案
来自Securely Storing Optional Entropy While Using DPAPI
您在本地存储的任何内容都可能受到损害。但您可以采取一些措施来使其变得更加困难。有一个关于Handling Passwords的文档您可以考虑查看。您将熵 key 视为特定于您的应用程序的密码。
我将把您的熵称为您的 key ,因为它在功能上是一个附加 key 。
您不想做的是以未加密的格式在本地存储 key 。相反,您想要加密您的 key ,或者从另一个不明显的来源获取它。当然,如果您加密 key ,那么您需要存储用于加密它的 key - 但通常这种单层间接就足以阻止大多数挑战者。
这将是派生 key 的优势。您可以将其派生为其他一些常量数据的哈希值(必须是不随应用程序的修订而改变的内容)。不过,派生哈希值时的一个技巧是将哈希值与其他一些常量值(例如 GUID 或大随机数)组合起来,这样其他人就不能仅组合已知的哈希算法并获取您的 key 。这是比创建自己的哈希算法更好的替代方案(您永远不应该这样做,除非您拥有数学博士学位)。
在某些时候,您将需要在应用程序中进行某种硬编码的 key 。该 key 可以与散列中的一些其他数据组合来创建熵 key ,或者用于解密熵 key 。实际上,只要保留旧 key 来解密现有 key ,您就可以使用应用程序的新版本来更改 key 。然后您可以使用新的 key 或方法重新加密它。
如果您想要最好的安全性,那么您可以将熵 key 存储在计算机之外。这需要互联网连接和 SSL 证书,但它们的 key 永远不会保留在本地任何地方以供发现。为此,您可以设置更强大的质询响应系统,以便每次请求身份验证都不同,并且 key 通过 SSL 加密传递,因此无法被拦截。一旦 key 被使用,就会被丢弃。当然,这违背了许多使用 DPAPI 进行本地安全存储的场景的目的。
无论您做什么,请记住它都会受到损害 - 当有人完全访问本地计算机及其上存储的数据时,这种情况总是会发生。解决方案是不断发布更新,对方法进行足够的更改,使旧的破解不再起作用。这将使破解的分发值(value)降低,因为很难找到合适的版本。
关于.net - DPAPI + 熵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2418936/
我们有一个 WPF 应用程序,允许用户下载加密内容,并且我们希望提供离线解密该内容的功能。我的想法是下载 key 并使用 DPAPI 存储它们,但我在使用熵参数时遇到了问题。 是否有任何方法可以生成熵
在 php.ini 的 session 部分,有一个名为 session.entropy_length 的指令。 我知道它用于使 session ID 的生成“更加随机”。 它如何使 session
在 php.ini 的 session 部分,有一个名为 session.entropy_length 的指令。 我知道它用于使 session ID 的生成“更加随机”。 它如何使 session
我使用决策树算法来解决二元分类问题,目标是最大限度地减少分类的误报(最大化阳性预测值)(诊断工具的成本非常高) 。 有没有办法在基尼/熵分割标准中引入权重来惩罚误报错误分类? Here例如,修改后的基
我想检查我的 std::random_device 实现是否具有非零熵(即非确定性),使用 std::random_device::entropy() 函数。然而,根据至cppreference.co
我在 tensorflow_decision_forests 文档 ( https://github.com/tensorflow/decision-forests ) ( https://www.t
我是一名优秀的程序员,十分优秀!