Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net DPAPI+;熵_.net_Entropy_Dpapi - Fatal编程技术网

.net DPAPI+;熵

.net DPAPI+;熵,.net,entropy,dpapi,.net,Entropy,Dpapi,我们有一个WPF应用程序,允许我们的用户下载加密内容,我们希望提供离线解密这些内容的能力。这个想法是下载密钥并使用DPAPI存储它们,但是我在熵参数方面遇到了问题 是否有任何方法可以生成熵,以便在不硬编码/存储DPAPI函数的情况下始终如一地用于DPAPI函数 谢谢 托尼来自 您在本地存储的任何内容都可能被破坏。但是,你可以采取一些措施来增加难度。有一份文件,你可以考虑查看一下。您认为您的熵密钥是特定于应用程序的密码。 我将把熵称为键,因为它在功能上是一个附加键 您不想做的是以未加密的格式在本地

我们有一个WPF应用程序,允许我们的用户下载加密内容,我们希望提供离线解密这些内容的能力。这个想法是下载密钥并使用DPAPI存储它们,但是我在熵参数方面遇到了问题

是否有任何方法可以生成熵,以便在不硬编码/存储DPAPI函数的情况下始终如一地用于DPAPI函数

谢谢 托尼

来自

您在本地存储的任何内容都可能被破坏。但是,你可以采取一些措施来增加难度。有一份文件,你可以考虑查看一下。您认为您的熵密钥是特定于应用程序的密码。 我将把熵称为键,因为它在功能上是一个附加键

您不想做的是以未加密的格式在本地存储密钥。相反,您希望加密您的密钥,或者从另一个源中派生密钥。当然,如果您要加密密钥,那么您需要存储用于加密它的密钥——但通常情况下,这种单一的间接层足以阻止大多数挑战者

这将是导出密钥的优势。您可以将其派生为其他一些常量数据的散列(必须是不会随应用程序的修订而更改的数据)。不过,导出散列的一个技巧是将散列与其他常量值(如GUID或大随机数)组合,这样其他人就不能只组合已知的散列算法并获取密钥。这是一个比创建自己的哈希算法更好的选择(除非你有数学博士学位,否则你永远不应该这么做)

在某个时刻,您需要在应用程序中硬编码某种密钥。此密钥或与散列中的其他数据组合以创建熵密钥,或用于解密熵密钥。实际上,只要保留旧密钥用于解密现有密钥,就可以在应用程序的新版本中更改密钥。然后可以使用新的密钥或方法对其重新加密

如果你想要最好的安全性,那么你可以将熵密钥存储在计算机之外。这需要一个internet连接和一个SSL证书,但它们的密钥永远不会在本地的任何地方被发现。要做到这一点,您可以设置一个更健壮的质询-响应系统,以便每次的请求身份验证都不同,并且密钥通过SSL加密传递,因此无法拦截。一旦密钥被使用,它就会被丢弃。当然,在许多场景中,使用DPAPI进行本地安全存储时,这种情况都无法达到目的


无论您做什么,请记住它都会受到影响-当有人完全访问本地计算机及其存储的数据时,这种情况总是会发生。解决方法是不断发布更新,以充分改变方法,使旧裂纹不再工作。这将降低裂缝分布的价值,因为很难找到合适版本的裂缝。

有时,您的使用会提供一个方便的熵值。例如,如果您想要加密网站的密码(就像浏览器一样),则熵值可以是网站的url

可能重复的