绕过加密以启用密码恢复的最安全方法是什么?

信息安全 加密 密码
2021-09-07 22:57:17

我有一个网络应用程序(我之前在这里讨论过)。用户可以使用它来保存人们的联系方式。这些联系方式经过加密,以确保在泄露时难以获得。

加密系统的设计也使管理员也无法访问数据。加密密钥基于用户的密码。

我正在研究启用密码恢复的方法。这里的问题是,目前忘记密码也会导致数据全部丢失 - 因为密钥是基于密码的,如果您不知道密码,那么您的密钥就无法计算出来,并且您的数据无法解密。不理想。

我有几种方法可以解决这个问题:

  • 存储解密密钥。从安全的角度来看,这似乎是一个糟糕的主意,所以如果可以避免的话,我真的宁愿不这样做。
  • 有两个密码。一个用于进入帐户,一个用于加密密钥。这对用户有影响——他们必须记住两个密码。

可能还有其他我想不到的有效方法。这些似乎都不是很安全 - 还是我错了?有什么安全的方法可以做到这一点?

1个回答

继续@Matthew 的想法,让我们把它变得非常简单:您是否希望您的管理员有权访问用户数据?

我从来没有见过一个完全禁止管理员访问数据的系统,并且在密码丢失的情况下还允许数据恢复……这两者看起来真的很矛盾。

我能想到的所有使用“我们也无法访问它”方法的云服务也有数据擦除作为密码恢复过程的一部分。例子:


编辑:

以上假设您需要一个标准的、轻量级的用户注册/恢复过程。@Xander 指出,如果您愿意给用户增加一些额外的负担,那么您可以选择。

正如您在问题中建议的那样,您可以(例如)将解密密钥的加密副本与文件一起放在服务器上 - 只要您使用其他东西加密了此密钥,例如从第二个密码派生的密钥,或存储在应用程序在注册过程中生成的密钥文件中的密钥。(但是如果用户将恢复密钥文件留在应用程序所在的同一设备上,您将否定所有安全性)。

归根结底,如果他们忘记了密码,谁能说他们对这些东西值得信赖呢?我不确定它是否真的解决了“让你的系统防傻”的核心问题。