存储加密密钥MVC应用程序的位置

时间:2012-06-07 22:55:47

标签: asp.net asp.net-mvc-3 encryption encryption-symmetric

我正在使用AES加密/解密类,它需要一个键值和矢量值来加密和解密MVC3应用程序中的数据。

在保存记录时,我正在加密数据,然后存储在数据库中。当我检索记录时,我在控制器中解密并将未加密的值传递给视图。

关注的问题不是在数据遍历网络时保护数据,而是在数据库被泄露时保护数据库。

我看过很多帖子,说不要在代码中加密密钥。

好的,他们应该留在哪里?文件系统?另一个数据库?

寻找一些方向。

2 个答案:

答案 0 :(得分:3)

常识说,如果入侵者可以访问您的数据库,他们很可能也可以访问您的文件系统。这真的取决于你。首先,您可以尝试隐藏它。在配置文件中,在文件系统中某处的普通文件中,使用应用程序中的另一个密钥对其进行加密......依此类推。

配置文件是一个合乎逻辑的答案,但为什么要抓住机会 - 混合它。随意混合密钥与多级加密 - 一个需要记录本身的东西,每个记录都是唯一的,另一个需要配置值,第三个需要特定于应用程序的值,也许是隐藏的库中的第四个在您的应用程序的参考范围内?这样,即使某个层以某种方式受到损害,您也会有其他几个人保护它。

是的,它增加了开销。是的,它相对昂贵。但是,如果您有用户信用卡详细信息等敏感数据,是否值得?你打赌它是。

我在我的一个个人宠物项目中使用了类似的加密和散列技术,这些项目高度注重安全性并受到严格控制。这取决于您需要在任何时间显示多少数据 - 例如,我的一次只能获取10条记录,甚至可能更少。

...通过混合来指定我的意思:加密一次。然后用不同的密钥和建议不同的算法再次加密该数据。

答案 1 :(得分:0)

我会使用受ACL保护的注册表项,因此只有运行应用程序池的帐户才能读取它们。