tl/dr:一次性恢复代码为帐户所有者提供了重新获得失去访问权限的选项。认为这是一个额外风险的人总是可以忽略或销毁它,但担心失去对关键服务的访问权的人当然可以想出一种安全的方式来存储它。因此,对于可能对企业和/或个人至关重要的服务来说,这是一个不错的选择。
没有安全的
在我见过的大多数具有一次性恢复代码的系统中,它们是一项可选功能。结果,它们为帐户所有者提供了一种减轻竞争风险的方法。
谈到安全性,请务必记住,没有“安全”之类的东西,只有“对我来说足够安全”。不同的公司和个人有不同的风险承受能力、不同的威胁模型和不同的关注点。
缓解拒绝服务漏洞
从这个角度来看,一次性恢复代码是针对一种非常特殊的拒绝服务漏洞的缓解措施:故障(人)内存。在某些服务中,如果您丢失了密码,您将被永久锁定在您的帐户之外。在某些情况下,您可以通过获得一个新帐户并忍受不得不重新设置它的不便来解决这个问题。在某些情况下,这可能会破坏您的业务。如果特定帐户属于后一类,那么您可能不想冒忘记密码和失去访问权限的风险。
一次性恢复代码显然旨在解决该问题(以及可能导致您无法访问的其他类型的事件)。您可能会决定在一张纸上打印一次性恢复代码并将其放入(例如)银行保险箱中,这是一种在不增加帐户被盗风险的情况下降低帐户访问权限丢失风险的好方法。
再说一次,您可能决定您不担心失去帐户访问权限,因此您可以从站点“打印”一次性恢复代码,然后立即将其丢弃/烧掉/从不实际写下/从不实际请求首先是它。毕竟,如果您没有它,那么您不必担心不小心泄漏它。在这种情况下,您认为通过恢复代码增加的帐户被盗风险不值得拥有其他访问方式。
从服务提供商的角度
关键是您可以决定是否要使用此功能。我见过的许多网站都将其设为可选,但即使不是,您也可以轻松地销毁它。但是,作为服务提供商,如果我提供的服务可能对经营业务至关重要,那么我可能会有一些客户希望在帐户锁定的情况下获得替代访问方式。因此,提供这个选项对我来说非常有意义。
当然,当我开始收到声称无法访问其帐户的人发来的疯狂电子邮件时,这将为我省去很多麻烦。区分“我无法访问我的帐户”和“我正在尝试使用社交工程来说服支持人员让我访问其他人的帐户”之间的区别可能会非常棘手。如果我构建的选项可以让我的客户有自助选项来恢复他们自己的帐户,那么我需要处理的支持请求就会减少,并且我的法律责任也会减少(因为如果我不小心将帐户泄露给攻击者,我肯定会承担责任)。
此外,由于这些功能很少使用,因此提供商可以围绕它进行额外的保护。你肯定会保护人们试图暴力恢复代码,尽管我认为这不是一个真正的问题。我见过的每个恢复代码都足够长且随机,以至于它们无论如何都不会受到蛮力的影响。但总的来说,这个概念本身是完全有效的。特定提供商是否可能已经实施了一次恢复代码的不安全实施是另一回事。
最后,添加恢复代码不会让提供商更容易访问您的数据。 无论如何,提供商已经可以这样做,并且如果执法部门要求,无论您是否有恢复代码,都会这样做。对于旨在使提供商无法访问您的数据的服务(例如密码管理器),他们将设计恢复代码,以便提供商也无法访问它们。因此,恢复代码通常不会为内部攻击者创建额外的风险向量。