密码恢复和密码派生密钥加密

时间:2019-03-22 10:05:54

标签: security encryption web-applications pbkdf2 password-recovery

嗨(抱歉,罗word的帖子)

我正在使用一个网络应用程序,该应用程序将存储一些用户的个人数据。 如果数据库或Web服务器受到破坏,我已经研究了多种加密数据的方法,以保护数据免受入侵者的侵害,并认为为每个用户创建和存储使用密码派生密钥加密的唯一“主密钥”是最好的选择用于我的设置。

我唯一看到的问题是忘记了密码。当前,用户可以通过接收一封包含带有唯一令牌的链接的电子邮件来重设忘记的密码,然后将其链接至密码重设表单。

我的想法是将安全性问题添加到注册页面,该页面将用于创建第二个派生密钥并使用它来加密用户主密钥。答案将不会存储在数据库中,只会存储从中得出的密钥。这些问题将比基于个人或事实的观点更多基于观点。 这意味着“主密钥”有两种加密版本。

这些问题将添加到现有的密码重置表单中,并使用答案来重新创建派生密钥和解密主密钥。这意味着可以使用新密码对原始主密钥进行加密。

我已经阅读了许多关于如何不应该使用安全性问题来重设密码的帖子,但是在这种情况下,这似乎是附加的安全层。

有人看到这种方法有任何潜在问题吗?或有其他建议吗?

谢谢

1 个答案:

答案 0 :(得分:0)

不清楚您是谁在试图保护数据免受(您的组织或潜在的入侵者)的侵害,但是我认为入侵者是您的主要关注点,因为您的组织可以访问应用程序的代码,因此可以查看用户输入的密码(除非在客户端进行加密/解密)。

我不会使用用户密码来加密数据。相反,我将为每个用户生成随机密钥,将它们存储在单独的服务器上,并在用户成功通过身份验证后检索它们。该单独的服务器必须是外界无法访问的。

请注意,用户身份验证也应该在第二台服务器上进行。如果第一台服务器遭到破坏,请不要在没有事先用户身份验证的情况下返回密钥。另外,您还可以使用用户密码在不同的列上使用您持有的主密钥对这些密钥进行加密,以防有人忘记了他们的密码。

这样,与普通用户相比,您还将获得更强的密码。