我一直在尝试为服务器和客户端的 Web 应用程序实现 2FA。众所周知,H/TOTP 旨在证明我拥有某些东西,例如通过使用安装在手机上的身份验证器应用程序,该应用程序将为我生成 OTP。
我不确定我拥有的那个“东西”是什么,所以我的第一个问题是:这个“东西”是我的手机,还是我加载到手机上安装的应用程序中的 OTP 生成盐?(如果是salt,拥有不等于知道,我和salt之间的算法有点复杂吗?)
考虑到我无法访问已安装该应用程序的手机的风险,许多网站都允许我下载备用代码。这些代码应该存储在密码管理器中,就像第一个因素的密码一样。通常,在输入我的用户名和密码后,可以绕过 OTP 过程并通过替代流程输入备份代码。
我的第二个问题是:我的断言是否正确,通过这种方式,第二个因素被简化为我知道的东西,一个备份代码,因此只是扩展了第一个因素?(因此使整个 2FA 几乎毫无用处,只是通过添加我需要知道的第二件事来稍微提高安全性,同时增加管理更多密码的不便。)