密码恢复和密码导出密钥加密

问题描述 投票:1回答:1

嗨(对于罗嗦的帖子感到抱歉)

我正在开发一个能够存储一些用户个人数据的网络应用程序。我已经研究了各种加密数据的方法,以便在数据库或Web服务器遭到破坏时保护数据免受入侵者的侵害,并认为创建和存储使用密码导出密钥加密的唯一“主密钥”是每个用户最好的方法。为我的设置。

我能看到的唯一问题是忘记了密码。目前,用户可以通过接收包含具有唯一令牌的链接的电子邮件来重置忘记的密码,该令牌然后接受密码重置表单。

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

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

我已经阅读了许多关于如何不使用安全问题来重置密码的帖子,但在这种情况下,它似乎是一个额外的安全层。

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

谢谢

security encryption web-applications pbkdf2 password-recovery
1个回答
0
投票

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

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

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

这样,您将获得比一般用户将要使用的密码更强的密码。

© www.soinside.com 2019 - 2024. All rights reserved.