【发布时间】:2017-07-26 22:40:54
【问题描述】:
我怎样才能最好地为密码管理器实现重置密码功能?我目前正在保存一个散列+加盐的主密码,并用主密码本身加密密码,但是如果用户丢失了他的主密码,这意味着密码无法解密。
我考虑过保存使用主密码加密的密码版本和使用用户电子邮件加密的版本+用户创建帐户时生成的一些随机令牌,但这会安全吗?这样做时有什么最佳做法吗?
用户的电子邮件也只存储为哈希。
所以为了澄清我的问题,如果密码丢失,是否有恢复使用密码加密的数据的最佳做法?
【问题讨论】:
-
仅使用散列函数是不够的,仅添加盐对提高安全性无济于事。相反,iIterate over an HMAC with a random salt for about 100ms duration and save the salt with the hash.使用
PBKDF2、password_hash、Bcrypt等函数和类似函数。关键是让攻击者花费大量时间通过蛮力寻找密码。 -
@zaph 我目前正在使用 PBKDF2 来生成散列并验证密码,但是当用户忘记密码时这并不重要,我没有在引用中提到这一点。还是谢谢。
-
*问题,不是引用
标签: encryption passwords