【问题标题】:How to store encryption key .NET如何存储加密密钥 .NET
【发布时间】:2014-07-21 04:36:08
【问题描述】:

我的 .NET 应用程序包含一些 RSA 加密。 我的问题是:where to store the keys?

经过一番谷歌搜索后,我看不到任何真正的建议。我所看到的

  1. 将它们拆分并存储到不同的文件夹中。
  2. 使用受保护的数据。但是如果我使用受保护的数据,我仍然必须存储密钥的加密结果。还是同样的问题,存放在哪里?

有更好的选择吗?

【问题讨论】:

  • 您试图阻止谁读取加密数据。您解决问题的方式因您的威胁模型而异(对于某些威胁模型,它是无法解决的)
  • 信息不足,无法回答——正如 scott 所说,需要一个威胁模型。

标签: c# .net encryption


【解决方案1】:

标准方法是将密钥存储在密钥容器中,net 有一个 API 可以做到这一点。看 How to: Store Asymmetric Keys in a Key Container 您可以将密钥容器存储为私有的,在这种情况下,只有您可以访问密钥。如果您想在计算机中的不同用户或程序之间共享密钥,您应该使用机器级密钥容器。要存储在机器级别,您只需在容器的参数中添加标志 UseMachineKeyStore

CspParameters cp = new CspParameters();
cp.KeyContainerName = ContainerName;
cp.Flags = UseMachineKeyStore 

请记住,任何时候使用机器密钥存储,都需要设置标志。此配置具有一定的安全性,取决于信息的敏感程度。您可以使用访问规则限制对创建容器的访问。

希望这些信息对你有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 2015-07-04
    相关资源
    最近更新 更多