【问题标题】:Safe and secure way to keep encrypted data and private key in C# Dll在 C# Dll 中保存加密数据和私钥的安全方法
【发布时间】:2012-03-13 07:54:47
【问题描述】:

关于以最安全的方式存储连接字符串的问题。

我目前的做法(别笑)
1. 编写RSAEncryption程序并传递连接字符串生成密码。
2. 在资源文件中存储密码和私钥
3. 运行时再次检索加密文件。

我对使用配置文件的担忧
- 我正在创建库,因此将使用我的 dll 的项目将需要复制我不想要的配置文件

请告诉我在 dll 中存储连接字符串的最佳做法。

问候, 奥姆卡尔

【问题讨论】:

  • 所有以编程方式完成的事情都可以手动复制
  • 使用配置文件?可以举个例子吗?
  • 当应用程序使用 MITM 攻击连接到数据库时,无论本地保护有多复杂,您都可以检索连接字符串。

标签: c# c#-4.0 app-config rsa


【解决方案1】:

.NET 中有一个内置机制来加密配置部分。美妙之处在于您可以使用 DPAPI 并让机器自己创建密钥,所以除了 Windows 没有人知道它是什么。最好的事情是你几乎可以免费获得这个(学习曲线很小),并且学习曲线很容易通过快速谷歌搜索加密配置文件来处理。可能不适合所有场景,但它比快速设想的替代方案更有可能安全。

这里唯一的问题是这是否是收缩包装软件(即,您正在销售软件),但有一些方法可以通过安装需要网络并添加他们在您仅加密时无法知道的位进入安装过程中的内存。 :-)

【讨论】:

  • 保护成本不应该超过产品成本;-)
  • 嗯。真的很多开销。在得出结论之前,让我彻底研究一下。非常感谢。如果有人想查看有关它的信息,请访问此链接。 msdn.microsoft.com/en-us/library/ff647398.aspx
  • 此方法的另一个缺点是它只能在本地计算机上运行 - 如果您从共享目录启动程序,这将不起作用。在我的脑后有一些服务器的东西,但之后我就不再理会它了。
猜你喜欢
  • 1970-01-01
  • 2012-09-02
  • 2021-03-09
  • 2013-10-15
  • 2018-08-27
  • 2014-04-24
  • 2014-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多