在应用程序设置中保存密钥

时间:2009-08-11 16:32:03

标签: vb.net winforms encryption

我开始使用cryptostream类。我可能是错的,如果您加密某些内容,关闭应用程序,然后尝试解密它,它将无法生成,因为将生成不同的密钥。因为我确实需要这个功能,我想知道是否可以在应用程序设置中保存密钥以及这是否是正确的方法?

2 个答案:

答案 0 :(得分:1)

许多应用程序将密钥保存在配置文件中。这是一种常见的不良做法。

这不安全,但所有安全选项都很难实现。有些选项使用不同的因素,

  1. 您可以使用PBE(基于密码的加密)从密码派生密钥。但您必须输入密码才能启动应用程序。这就是所谓的“你所知道的”因素。

  2. 将钥匙放入智能卡。这非常安全,但您需要访问机器上的卡。这被称为“你有什么”。

  3. 忽略其他涉及使用另一个密钥加密密钥的方案。它并没有真正改变安全强度。

答案 1 :(得分:1)

如果您始终在同一个用户帐户下运行您的应用程序(可以是本地用户或域用户),最好的选择是使用DPAPI。使用DPAPI的优点是您不必担心密钥(系统会为您生成密钥)。如果您在不同的用户身份下运行应用程序,那么它会变得更加复杂,因为可用的选项范围从坏到坏(主要问题是:您如何保护您的秘密:密钥,密码,密码等)。根据您的要求,您可能根本不需要使用加密(例如,如果要加密连接字符串,请考虑使用集成的Windows身份验证,不需要密码)。有关该主题的更多信息,请查看此MSDN文章:Safeguard Database Connection Strings and Other Sensitive Settings in Your Code;它可能会给你一些想法。