2017-03-06 71 views
0

如何最好地实现密码管理器的重置密码功能?我目前正在保存一个哈希+盐腌主密码,并使用主密码本身加密密码,但是如果用户丢失了主密码,这意味着密码不能被解密。如何实现密码管理器的重置密码

我想过保存使用主密码加密的密码版本和用户电子邮件加密的版本+用户创建其帐户时生成的一些随机令牌,但这是否安全?这样做有什么最佳做法吗?

用户的电子邮件也只被存储为散列。

因此,为了澄清我的问题,如果密码丢失,是否有恢复用密码加密的数据的最佳做法?

+1

只使用散列函数是不够的,只是添加一个盐没有提高安全性。取而代之的是用随机盐对HMAC进行大约100毫秒的持续时间并用散列表保存盐。使用诸如“PBKDF2”,“password_hash”,“Bcrypt”等功能。关键是要让攻击者花费大量时间通过强力查找密码。 – zaph

+0

@zaph我目前使用PBKDF2来生成哈希和验证密码,但是看到这对于用户忘记密码并不重要,我在引用中没有提到。不管怎么说,还是要谢谢你。 –

+0

*问题,而不是报价 –

回答

3

安全性会降低到您存储“随机令牌”的方式,我认为这根本就不安全。没有最佳做法。你可以将主密码写在一张纸上,并将其锁在银行的保险箱或类似的东西上。

甚至更​​短:在不信任别人的情况下,不能为本地密码管理器设置密码重置功能。