存储加密密钥的位置

时间:2010-10-25 14:23:36

标签: .net asp.net encryption

我正在使用.net框架中的aes加密类加密数据(医疗保健行业)。安全存放钥匙的一些推荐位置是什么?我在web.config中进行了开发,但至少可以说这并不值得生产。

4 个答案:

答案 0 :(得分:8)

您可以使用框架中的内置方法加密您的web.config值:

http://weblogs.asp.net/scottgu/archive/2006/01/09/434893.aspx

这可能是存储密钥的合理位置 - 如果有人设法访问您的服务器以检索这些详细信息,那么您可能会有更大的担忧。

答案 1 :(得分:0)

您需要做的是在某处隐藏此密钥,并且数据库中将存在安全位置。最好是与包含数据的数据库不同的数据库。由于数据需要用户名/密码组合才能打开它们,因此您只需在应用程序中添加第二个安全层。您的应用需要登录密钥数据库,检索应用程序Y的密钥X,然后才能使用它。但是,你必须在某个地方存储这个数据库的连接字符串。
即使你只在密钥数据库中存储一个密钥,也是值得的。它迫使黑客在他可以访问数据之前打开这个数据库以找到密钥需要更多的麻烦。由于没有完美的安全性,您的选择仅限于延迟黑客获取访问所需的时间。
加密web.config文件或其中的数据也将有助于延迟黑客,但如果key在配置文件中,他需要做的就是再次解密。

答案 2 :(得分:0)

一种方法可以提供良好的安全性,如果只有那些需要将密钥用于任何目的的人才能完全信任它,那就是存储用另一个密钥加密的密钥,每个密钥都存储一个密钥,使用该用户密码的哈希加密(与用于密码验证的密码不同!)。即使是能够访问宇宙中任何地方的所有数据的邪恶人员,如果没有对至少一个密码进行逆向工程,也无法访问该数据库的密钥。

请注意,如果所有有效帐户的密码丢失或遗忘,则数据将无法恢复。这是真正安全性的一部分。如果想避免丢失数据的可能性,必须确保安全地存储必要密钥和/或密码的备份副本。

答案 3 :(得分:-2)

如果应用程序需要使用您的密钥进行身份验证,则 在unix机器上的常规方法是以散列形式存储密码 你可以使用sha-512 +盐。

然后,您可以在用户输入密码时计算哈希,并检查您的。

密码/密钥本身可以存储在哈希值的任何地方。 如果没有将它存储在没有访问权限的技术用户目录中。

编辑那些不想付出太多努力来理解我提出的USE CASE

Johny有一些AES加密数据 他将钥匙存放在头部 他希望将这个嘿嘿存储在他的PC上以自动访问 他可以将它作为ASCII存储在web.config中 但是他可以将其称为不再是ASCII而是哈希 在身份验证应用程序期间,计算哈希检查是否是正确的密钥,然后使用此密钥.... 低可能与正确的算法碰撞。

PS。只是发表我对这个话题的看法 为什么你对“哈希”这个词如此敏感?

编辑2
我知道什么是哈希,
我知道什么是所谓的双向加密....