据我所知,基于时间的一次性密码使用种子和数学算法生成唯一的密码。因为种子由用户(或用户使用的设备)和身份验证服务器所知道。但是,这意味着如果数据库泄漏,攻击者将知道该种子。
与数据库泄漏一样,攻击者可以同时知道密码和OTP,基于时间的一次性密码是否提高了数据库泄漏情况下的安全性?或者OTP的目标仅仅是防止攻击者通过另一种方式(另一种数据库泄漏、社会工程.)知道密码时进行身份验证?
发布于 2018-04-25 11:17:00
实际上,在数据库泄漏时,应该使用密码来保护用户。如果您正确地散列和存储,攻击者应该无法获得密码的明文版本(在合理的时间内使用合理的密码和合理的资源,如果像NSA这样的攻击者正在跟踪您,请不要依赖此。此外,如果您知道您的数据库泄漏或可能泄漏,则强制用户更改密码以确保)。您的应用程序不应该接受哈希作为有效的密码。因此,即使数据库泄漏,攻击者也不应该能够登录。注意:如果您想在客户端散列,请检查诸如SHA256 256之类的方案,以防止这种攻击。
另一方面,TOTP保护用户的密码不被用户泄露,或以其他方式获得(蛮力、拦截、键盘记录器),而不损害服务器。
如果您希望在服务器受到破坏并获得密码的情况下获得额外的保护(例如,攻击者拦截登录请求并以这种方式获取密码),可以考虑使用SCRAM之类的方法来限制服务器的密码暴露,或者使用公-私钥对登录,可能使用使用U2F的硬件令牌。
https://security.stackexchange.com/questions/184555
复制相似问题