3

我使用 CryptoStream 类来加密文本。如果我想解密它,我必须知道密钥和iv,这样我才能取回原始文本,但是我应该把它们保存在哪里,这样它们就不会被盗了?

使用作弊引擎等工具,您可以从其他程序的 RAM 中读取值,当我将 key/iv 保存在变量中时,您也可以读取它们。有没有办法防止这种情况?有没有办法将解密的文本立即保存在 SecureString 中?所以它永远不会保存为纯字符串?

(我对与 c# 相关的安全性一无所知。如果有人可以推荐速成课程或书籍,我将不胜感激!)

4

1 回答 1

1

您可以使用 Dotfuscator http://www.preemptive.com/products/dotfuscator/overview之类的工具来混淆您的源代码(Visual Studio 中包含免费版本,但您需要专业版来加密字符串)。这将防止恶意用户反编译您的代码并查看密钥/iv。

另一种选择是使用 .NET DPAPI,如此处所示http://weblogs.asp.net/jongalloway/encrypting-passwords-in-a-net-app-config-file。如果您使用此系统,则需要确保在构建部署之前将密钥/iv 放在 app.config 文件中并加密。

据我所知,没有办法阻止未加密的值被读入内存,毕竟您的程序需要将这些值发送到处理器。

MSDN 有一个很好的安全开发实践速成课程,可以帮助您入门:http: //msdn.microsoft.com/en-us/security/aa570401.aspx

于 2014-09-25T12:59:11.930 回答