如何安全地存储和管理 2FA 的一次性备份代码?

信息安全 密码 密码管理 多因素
2021-08-18 07:10:11

我已经在使用 31 项具有第二因素身份验证的服务,而且数量还在增长。除了拥有多个身份验证设备之外,我还决定或必须生成一组单独的一次性备份代码(我们称它们为 OTBC)。

我使用带有 2FA 的密码管理器来存储我的所有密码。我只在我拥有和管理的机器上运行密码管理器。但是我是移动的,所以我不能使用物理保险库(例如存储打印的 OTBC)。密码管理器推出了自己的一套OTBC。

我正在考虑安全管理 OTBC 的最佳实践。我认为我可能会丢失所有 2FA 设备,这不应该阻止我使用 OTBC 访问服务。


据我了解,OTBC 应与密码同等级别的安全预防措施。否则,它们会使 2FA 不存在。

2FA 目的之一是防止使用通过在未经身份验证的设备上破坏密码管理器获得的密码。因此,不能将各个服务的 OTBC 与其密码一起存储在密码管理器中,否则这将导致 2FA 不存在。

结果,我需要两个单独的密码管理器,一个用于密码,一个用于 OTBC。

现在,每个密码管理器都引入了自己的一套无法记忆的OTBC(用于备份主密码的2FA)。

它们应该存储在各自的密码管理器数据库之外。所以我可以将它们存储在系统之外或以交叉方式存储:

Passwords-DB <== passwords for services  +  OTBC for OTBC-DB
OTBC-DB <== OTBC for services  +  OTBC for Passwords-DB

假设密码:Passwords-DB 和 OTBC-DB 的密码没有存储在我的大脑之外,这是管理 OTBC 的最简单方法吗?这个方案是否存在任何安全漏洞或隐患?

3个回答

在设备上存储 OTBC 的问题在于,如果您的设备在软件方面受到威胁,例如病毒感染、木马、复制攻击等,那么您就完蛋了。

请注意,一旦您解锁 Password-DB,恶意实体就可以访问 OTBC 以获取 OTBC-DB,然后也可以访问它。

我对安全管理这些的建议是使用 2 个独立的数据库,一个用于 OTBC,一个用于密码/2FA。当然,除非绝对必要,否则您不会访问 OTBC 数据库。

这两个密码管理器的 OTBC 存储在加密的文本文件中。在同一个文本文件中,您存储 OTBC-DB 的种子,例如,除非在绝对紧急情况下,否则您没有对 OTBC-DB 的 2FA 访问权限。

要访问密码-DB/2FA,您需要以下内容:

  • 1:你的大脑密码 A。
  • 2:从加密文本文件中提取的2FA 代码或OTBC 代码。

要访问 OTBC-DB,您需要以下内容:

  • 1:你的大脑密码 B.
  • 2:加密文件的内容(总是!)。

然后将加密文件托管到您的云服务中。

现在介绍如何加密该文本文件:

我建议使用一些服务,在秘密密码触发后,将您的加密密钥发送到电子邮件,但是,只有在至少等待 24 小时后,您才会收到一封“取消”它的电子邮件。

因此,当您丢失所有 2FA 设备时,您可以在服务中输入您的秘密“紧急密码”。然后您等待 24 小时,然后您将获得加密文件的随机密码,该密码与 Brain 密码 B 一起用于访问您的 OTBC 数据库。

但是,如果黑客试图访问紧急密钥,您将有机会取消它,然后黑客就无法访问它。

我将 YubiKey NEO 用于所有 2 因素方法,包括 TOTP。它的 NFC 支持让我可以在手机上使用它。我写了更长的关于为什么我买了其中两个这与你的问题相当相关的文章。

就您的问题而言,这就是最终对我有用的方式:

可用性

一把钥匙一直在我的钥匙链上随身携带,一把钥匙仍然存放在家里。我怀疑让我同时失去他们两个的唯一可能方式是一场火灾,我在出口时没有抓住我的钥匙。我不存储任何 OTBC 代码,但如果我要合并它,我会通过打印出来并将它们存储在保险箱中来做到这一点。您提到移动性对您来说是一个限制打印输出的问题,但我会重新考虑这一点,因为很难得到更好的答案。您可以联系的可信赖的人或在线存储系统是您唯一的其他选择,并且该存储系统一直是乌龟。

由于它是一种专用且物理耐用的设备,因此在我弄坏手机时它会派上用场。我可以使用任何带有 USB 端口的计算机或任何支持 NFC 的手机进行身份验证。

安全

YubiKey 没有“获取机密”API,只有基于时间戳的读取令牌请求。因此,除非您当前拥有我的密钥或曾经拥有过您生成未来令牌的密钥,否则您无法登录服务。这限制了设备妥协的风险。它通常也不与也提供访问时间窗口限制的设备接触。

如果我不能同时考虑这两个密钥,我知道我的可用性很低并且我的安全性被认为是可疑的。那时我会轮换我的凭据并注册一个新密钥。

我会将它们存储在注释部分的加密密码库中(例如 Dashlane、Lastpass 或 1password。)。它将能够通过移动设备同步并加密。假设您没有使用与主密码相同的密码,那么您将是安全的。