在注册表中本地存储凭据 - 加密方法?

时间:2010-11-03 00:02:18

标签: vb.net

我必须在本地将一个用户帐户存储在一台机器上,最好的存储方法是什么? (需要是可逆加密而不是哈希)

我正在访问此处提到的UNC分享: Accessing UNC Share from outside domain for file transfer

使用此建议方法: http://www.codeproject.com/KB/IP/ConnectUNCPathCredentials.aspx

这将是一个自动过程,因此没有人输入凭据的选项。 我目前正在使用TripleDES加密细节并将它们存储在注册表中:

http://www.devarticles.com/c/a/VB.Net/String-Encryption-With-Visual-Basic-.NET/4/

在应用程序中硬编码密钥和初始化向量。

有人可以建议更好的方法或更改以上内容以尽可能保护凭据吗?

alt text

1 个答案:

答案 0 :(得分:1)

您永远不需要存储用户凭据。如果您的流程需要访问网络共享,则应使用runas或服务帐户属性在适当的凭据下运行。如果网络凭据不在本地/当前域中,则应使用runas /netonly。这就是它的全部,没有任何借口,没有例外。

作为旁注,Windows应用程序使用DPAPI在本地存储机密,在.Net中以ProtectedData类的形式公开。该链接具有使用.Net中的DPAPI加密数据的完整功能示例。但是,重点仍然是即使在DPAPI下,在应用程序中存储用户凭据也是从根本上中断。