如何在不影响其安全性的情况下为所描述的系统添加忘记密码功能?

How to add a forgot password feature for the described system without compromising its security?

我创建了一个安全系统,它使用用户密码来加密用户私钥,然后将其存储在数据库中。因此,用户只有输入正确的密码才能检索到私钥,然后使用该密码解密存储在数据库中的私钥。

这个系统有一些令人钦佩的安全功能,但有一个缺点,那就是很难做一个 'forgotten password' 选项。我能想到的唯一方法是将所有私钥的副本存储在其他地方并使用主服务器密码对其进行加密,当用户忘记密码时,服务器允许他使用新密码重新加密他的私钥。

此方法的问题在于,如果主服务器密码以某种方式泄露,则所有帐户信息也将随之泄露。有没有一种方法可以添加重置密码的方法,而不必对系统进行太多更改或损害其安全性?

如果您托管私钥,则需要将它们放在另一台未直接连接到 Internet 的服务器上。然后对托管密钥的所有访问进行速率限制和警报。还要考虑 HSM.