对于我的一个大学项目,我正在制作一个密码管理器在线,我想能够存储用户的密码在我的服务器上,而不能访问它自己。以下是我打算做的事:
master password
在客户端生成长哈希进行加密。master password
但是在这个过程中有一个巨大的问题。我无法恢复/生成新的用户密码。如果他们忘了密码。
基于我想出的两种选择:
除了这个我还有别的选择吗?我想我需要一个‘信任没有人’(TNO)或‘零信任’架构,但在我的设计有一些漏洞。
发布于 2016-09-27 02:07:51
恢复或重置本质上是一个后门。拥有这种能力意味着有一种能力。
我们对1 1Password团队和1 1Password家族所做的事情是给予团队/家庭管理员的,而不是给我们自己的。(这些数据被间接地提供给所有金库的密钥,但没有提供实际加密的金库数据)。
这不是一个完美的解决方案,但我们认为这是一个好的解决方案。不幸的是,它不能用于个人帐户。因此,人们忘记了他们的主密码确实会给这些人带来灾难性的数据损失。这不是我们掉以轻心的事情,但我们(我们希望我们的客户)更喜欢数据丢失的风险,而不是我们(或与我们妥协的人)所固有的具有解密客户数据能力的威胁。
无论如何,您可以在https://1password.com/teams/white-paper/上阅读我们的恢复方法(尽管在当前的草稿中它是粗略的)。
发布于 2016-09-26 16:40:34
每组数据都用一个数据密钥加密,然后用用户的密码(或者您提到的密码的散列)加密数据密钥。解决您的问题的方法是,每个数据密钥也应该存储在某个地方,如果用户愿意信任提供者的数据,则由提供者存储,或者由用户自己作为“备份,以防您忘记密码”。
对于密码管理器,我猜有些用户不希望他们的密钥存储在一个集中的地方,所以您可能需要考虑为他们提供一个选项,将他们的恢复文件存储在您的服务器上,或者提供给他们,让他们自己存储在一个安全的地方。如果他们选择自己存储,同时丢失密码,那对他们来说是糟糕的一天。(多疑和健忘都是有代价的。)
https://security.stackexchange.com/questions/137878
复制相似问题