【发布时间】:2016-12-02 15:25:46
【问题描述】:
我知道还有其他关于密码存储和加密的帖子,但我的问题略有不同。
为了好玩,我正在开发一个密码管理器网站。并且想知道我的这个想法有多安全。
显然,用户存储的每个密码都是使用 AES-256 加密的,他们的主密码作为密钥和随机生成的盐。主密码也使用 Bcrypt 加密,但在此之前,它会使用 whirlpool 之类的东西进行大约 100,000 次散列,以增加尝试登录时的压力。
如果用户决定不想在每次请求网站密码时都输入密码,则程序无法解密密码并自动填充,因为需要主密码才能解密存储的密码。
我的一个想法是将密码存储在用户当前会话中,但这并不是一个好主意,因为我正在尝试这样做,假设攻击者已经破坏了我的服务器并正在下载数据库并四处窥探。
另一个方法是使用 100,000 次散列密码作为 AES-256 加密的密钥并将该散列存储在会话中。这比以纯文本形式存储要好,但如果攻击者可以从会话中获取信息,它仍然可以解密存储的密码。
有没有更好的方法解决这个问题,或者这是一场失败的希望之战,当我登录时攻击者不会进入?
【问题讨论】:
-
使用临时令牌而不是传递散列或密码。
标签: security session encryption passwords