如何在仍可恢复的情况下将密码安全地存储在数据库中

时间:2012-06-30 19:52:22

标签: database encryption passwords

对于我正在处理的应用程序,我希望存储用户输入的密码,以便在我的数据库遭到入侵但仍允许外部守护程序访问明文版本的情况下提供一些安全性。密码。 (它将用于IMAP或POP登录)。

在数据库中存储密码的最佳方法是什么,这样可以在没有用户原始密码的情况下恢复密码。 (未使用用户密码加密)

我想的可能是公钥加密,前端会使用公钥来加密数据库中存储的密码,然后访问守护程序会使用私钥解密密码。

编辑: 我需要明文密码,以便它们可以用于登录其他可能不支持OAuth的网站服务

1 个答案:

答案 0 :(得分:1)

您应该加密它们,最好使用非对称加密。理想情况下,应用程序(Web应用程序)对它们进行加密(w公钥),守护程序对它们进行解密(w私钥),应用程序和守护程序和db在不同网络区域中的不同计算机上运行。

理想情况下,私钥存在于附加到守护程序服务器的硬件安全模块中。 YubiHSM约500美元。

请注意,这仅适用于您需要发送给另一方的密码。如果密码用于使用您的系统对用户进行身份验证,则应对其进行哈希处理(并使用盐水和胡椒)。