8 c# entropy dpapi encryption-symmetric
所以我试图使用DPAPI存储对称密钥.一切都很好,但是如何处理熵呢?这个回答的问题在这里真的没有提供足够的洞察力.这似乎是一个滑坡 - 我可以使用机器商店来存储熵,但是那么是什么阻止了某人也可以使用它?注意:我使用用户范围存储当前密钥.
所以我的问题是 - 使用DPAPI存储熵的最佳方法是什么?
您在本地存储的任何内容都可能受到损害.但是你可以采取一些措施来使它变得更加困难.您可以考虑查看处理密码的文档.您认为您的熵密钥是特定于您的应用程序的密码.
我将把你的熵称为你的钥匙,因为它在功能上是一个额外的钥匙.
您不想做的是以未加密的格式在本地存储您的密钥.相反,您希望加密密钥,或者从另一个明显的源中获取密钥.当然,如果你加密密钥,那么你需要存储用于加密它的密钥 - 但是这个单一的间接层通常足以阻止大多数挑战者.
这将是获得密钥的优势.您可以将其导出为其他一些常量数据的哈希值(需要随应用程序的修订版而变化).派生哈希的一个技巧是将哈希与其他一些常量值(如GUID或大型随机数)组合在一起,以便其他人不能只结合已知的哈希算法并获取密钥.这是创建自己的哈希算法的一个更好的选择(除非你有数学博士学位,否则你永远不应该这样做).
在某些时候,您的应用程序中需要某种密钥硬编码.此密钥要么与哈希中的其他数据组合以创建熵密钥,要么用于解密熵密钥.实际上,您可以使用新版本的应用程序进行密钥更改,只要保留旧密钥以解密现有密钥即可.然后,您可以使用新密钥或方法对其进行重新加密.
如果您想要最好的安全性,那么您可以将熵密钥存储在计算机上.这将需要互联网连接和SSL证书,但是它们的密钥永远不会在本地任何地方被发现.为此,您可以设置更强大的质询响应系统,以便每次请求身份验证都不同,密钥通过SSL加密传递,因此无法拦截.一旦使用密钥,它就被丢弃.当然,这种方法会破坏您使用DPAPI进行本地安全存储的许多场景的目的.
无论你做什么,请记住它会受到损害 - 当有人完全访问本地机器及其上存储的数据时,总会发生这种情况.解决方案是继续发布更改方法,以便旧方法不再有效.这将使得裂缝的分布不那么有价值,因为很难找到正确版本的裂缝.
归档时间: |
|
查看次数: |
3952 次 |
最近记录: |