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

Security 密码恢复和密码派生密钥加密,security,encryption,web-applications,pbkdf2,password-recovery,Security,Encryption,Web Applications,Pbkdf2,Password Recovery,嗨(很抱歉这篇冗长的帖子) 我正在开发一个web应用程序,它将存储一些用户的个人数据。 我研究了各种加密数据的方法,以在数据库或web服务器被破坏时保护数据免受入侵者的攻击,并认为为每个用户创建和存储一个用密码衍生密钥加密的唯一“主密钥”是我进行设置的最佳方法 我能看到的唯一问题是忘记密码。目前,用户可以通过接收包含带有唯一令牌的链接的电子邮件来重置忘记的密码,然后将该链接转到密码重置表单 我的想法是将安全问题添加到注册页面,该页面将用于创建第二个派生密钥,并使用它加密用户主密钥。答案不会存储在

嗨(很抱歉这篇冗长的帖子)

我正在开发一个web应用程序,它将存储一些用户的个人数据。 我研究了各种加密数据的方法,以在数据库或web服务器被破坏时保护数据免受入侵者的攻击,并认为为每个用户创建和存储一个用密码衍生密钥加密的唯一“主密钥”是我进行设置的最佳方法

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

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

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

我读过很多关于安全问题不应该用来重置密码的帖子,但在这种情况下,这似乎是一个额外的安全层

是否有人发现这种方法存在任何潜在问题或有任何其他建议


感谢

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

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

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


这样,您也将获得比普通用户更强大的密码。

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

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

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


通过这种方式,您也将获得比普通用户更强大的密码。

谢谢。我编辑了这个问题,以突出显示数据将受到谁的保护。不幸的是,我们没有资源这样做,因为我们正在使用第三方托管。我还研究了使用第三方密钥管理器的可能性s、 我明白了。我不喜欢问题/答案的方法,因为它们通常很容易预测,攻击者甚至可以在不影响服务器的情况下猜测它们。一旦发生这种情况,如果攻击者更改这些答案和密码,您将无法恢复数据,因此原始用户将完全丢失其所有数据。Fair点,但要做到这一点,密码重置电子邮件/令牌系统必须首先进行压缩。安全问题纯粹是一种解密原始主密钥的方法,以允许使用新密码对其进行加密。好的,我明白了,因此这些应该只有在用户收到电子邮件后才可访问。我认为这应该足够好了但是,我仍然会加密敏感数据(使用公钥加密,这样解密密钥就不会保留在服务器中)。如果用户不记得问题的答案,但仍然能够以某种方式向您证明他们的身份,那么您将能够手动恢复帐户。最后一个想法是,您应该确保加密数据的完整性,以防止数据丢失。谢谢。关于使用publ加密密钥,这一点很好还有ic密钥。我将在本地计算机上拥有3个加密版本的主密钥,然后是一个私钥,以防万一。谢谢。我编辑了这个问题以突出显示数据将受到保护的对象。不幸的是,我们没有资源来做这件事,因为我们正在使用第三方进行托管。我还考虑了使用usin的可能性g第三方密钥管理器。我明白了。我不喜欢问题/答案的方法,因为它们通常很容易预测,攻击者甚至可以在不损害服务器的情况下猜到它们。一旦发生这种情况,如果攻击者更改这些答案和密码,您将无法恢复数据,因此原始用户将丢失所有信息eir数据完整。公平点,但要做到这一点,密码重置ema