备用代码会使 2FA 失效吗?

信息安全 顶部
2021-08-16 22:32:57

我一直在尝试为服务器和客户端的 Web 应用程序实现 2FA。众所周知,H/TOTP 旨在证明我拥有某些东西,例如通过使用安装在手机上的身份验证器应用程序,该应用程序将为我生成 OTP。

我不确定我拥有的那个“东西”是什么,所以我的第一个问题是:这个“东西”是我的手机,还是我加载到手机上安装的应用程序中的 OTP 生成盐?(如果是salt,拥有不等于知道,我和salt之间的算法有点复杂吗?)

考虑到我无法访问已安装该应用程序的手机的风险,许多网站都允许我下载备用代码。这些代码应该存储在密码管理器中,就像第一个因素的密码一样。通常,在输入我的用户名和密码后,可以绕过 OTP 过程并通过替代流程输入备份代码。

我的第二个问题是:我的断言是否正确,通过这种方式,第二个因素被简化为我知道的东西,一个备份代码,因此只是扩展了第一个因素?(因此使整个 2FA 几乎毫无用处,只是通过添加我需要知道的第二件事来稍微提高安全性,同时增加管理更多密码的不便。)

3个回答

恢复代码的存在是否会使 2FA 无用?

,有几个原因。

首先,使用恢复代码非常嘈杂。使用恢复代码与使用 TOTP 的密码不同,因此不应将恢复代码视为“仅是第一个因素的扩展”。因此,如果攻击者使用恢复代码并将您的电话号码更改为攻击者控制的号码,您可以确定您会收到各种通知(例如通过电子邮件、应用程序通知等)。此外,如果您立即联系支持人员,并指出攻击者破解了您的恢复代码,那么您的访问权限恢复的可能性很大。

其次,建议不要将恢复代码存储在与密码相同的位置。将密码存储在 Keepass 数据库中是个好主意。但是,恢复代码不应存储在那里。我建议将它们写在一张纸上,并将其与其他重要文件一起粘贴在一个文件夹中(最好放在保险箱或类似文件中)。这样,获得对您的 Keepass 数据库的访问权限并能够破解该数据库的密码的攻击者无法访问密码和恢复代码。

这样,为了窃取您的恢复代码,攻击者要么必须猜测它(使用类似的恢复代码应该是不可能的Lining Everybody Frays Overpay Swinger Boogeyman Rise Anvil Pastel Quaking),要么访问您的家(此时您的 GitHub 帐户的安全性可能是次要的)。

由于您描述的问题,您不应将密码和备份代码都存储在密码管理器中。我建议你把它分开存放。例如,保险箱中的 USB 驱动器或存储在您的个人文档中的一张纸将是您恢复代码的更好位置。然后攻击者也需要访问您的家。

备份代码是一种恢复机制,我赞同 MechMK1 所说的不要将它们与密码存储在同一位置。我还将它们打印出来,并与各种“重要”文件一起存放在家里的抽屉里。

因此,它的使用方式,它的长期存储方式,即使网站不提供指导(理想情况下应该提供,但很多人不提供),意味着你无法查看它仅从“我知道的东西[等]”的角度来看。不止于此。