我正在开发一个内部网应用程序(C#),它使用我们想保密的一些数据(Web服务器本地).使用旧数据存储库对此数据进行加密(AES).我们无法完全阻止对机器的物理访问.
显然,我们永远不会在这里拥有完美的安全性.但是,我们希望尽可能让任何人都未经授权访问数据.
问题是如何最好地存储密钥.可以选择基于某些计算机专用ID对其进行加密,但是在计算机上运行诊断工具的任何人都可以轻松获得该信息.
在应用程序中对其进行编码是一种选择(它是一次性应用程序).但是,.NET程序集很容易反编译.那么,最好是混淆它,使用加密启动器,编译它?
或者有一个我缺少的选项?
正如我们清楚的那样,我知道如果某人有决心,这几乎是一个失败的原因,但我们希望在限制范围内尽可能地努力.
加密内置于.NET配置系统中.您可以加密app/web.config文件的块,包括存储私钥的位置.
http://www.dotnetprofessional.com/blog/post/2008/03/03/Encrypt-sections-of-WebConfig-or-AppConfig.aspx