2009-05-18 71 views
0

我需要为新应用程序加密/解密密码。规范要求我使用AES;任何人都可以提出一个很好的理由要么密码加密/数据库层AES或应用层AES

  1. 使用CLR函数或
  2. 在.net应用程序层做这做我的数据库层中的所有加密?
  3. 的db和服务器

打算是验证密码的混合物;该应用程序使用Telerik ORM进行了n层分层。唯一真正的功能是创建/更新密码并检查输入的值。

在我的内心,我认为

  1. 数据库是用于验证用户输入的对现有的记录密码更好;和
  2. 创建/更新密码的前端(所以明文密码绝不会传送)

我感兴趣的其他想法和建议,为什么我可以做一个选择。如果你建议我在前台做这个,你对加密密钥有什么想法? XML中的每个用户一个或配置文件中的每个应用一个?

感谢您的任何建议:)

回答

4

密码不要保存在所有 - 他们只是哈希值。

刚刚加密密码的问题相当明显 - 您必须将密钥存储在某处。如果您执行客户端加密,我将只使用Reflector在代码中查找密钥或附加调试器,并等待客户端从服务器获取密钥。

如果您在服务器上执行加密,获取密钥将变得更加困难 - 但每个有权访问服务器的人都可能使用与之前提到的技术相同的技术,因为您仍然需要将密钥存储在某个位置。当然,您必须加密客户端和服务器之间的连接,否则攻击变得微不足道。

将加密移动到数据库服务器的变化不会太大,您将不得不加密连接 - 客户端和服务器之间以及服务器和数据库服务器之间的连接。

我建议在服务器上执行加密,否则你必须信任客户端。这当然需要客户端和服务器之间的安全连接。服务器和数据库服务器之间的连接可能未加密。

+0

虽然我通常会避免“不要那么做”的答案,但在这种情况下,我希望我可以两次投票。 – 2009-05-18 13:06:26