跳转到主要内容

恢复代码

本文约需 2 分钟阅读

恢复码 (Recovery Code / Backup Code) 是指当用于多因素认证 (MFA) 的设备丢失或故障时,用于恢复账户访问权限的备用认证手段。它通常是在账户设置 MFA 时仅显示一次的一次性代码组,每个代码只能使用一次。由于智能手机故障或安全密钥丢失任何人都可能遇到,因此事先保管恢复码是 MFA 运用中必不可少的安全措施。

常见格式与机制

恢复码的格式因服务而异,但最常见的是发行 10 个 8 位字母数字代码为一组的模式。 Google、GitHub、Dropbox 等主要服务采用了这种格式。

恢复码示例 (虚构):

a7f2-k9m3b3d8-p5n1c6h4-r2w7d1j9-s8x5e4l6-t3y2f8m2-u7z4g5n1-v9a6h2p7-w4b8j9r3-x1c5k6s8-y2d7

每个代码使用一次后即失效。用完所有代码后需要重新生成。

服务方将恢复码哈希化后保存,当用户输入代码时通过比对哈希值进行认证。已使用的代码会立即失效,无法重复使用。

安全的保管方法

由于恢复码是「MFA 的最后防线」,保管方式的选择极为重要。一旦保管位置选错,恢复码本身就会成为攻击的入口。

推荐: 密码管理器

保存在密码管理器的安全笔记功能中。以加密状态保管,并可在设备间同步。是最实用的选择。

推荐: 打印到纸上

打印出来后保管在保险箱或带锁的抽屉里。不受数字攻击的影响。但由于存在火灾、丢失的风险,最好分散保管在多个地方。

危险: 截图 / 备忘录应用

保存在智能手机的相册或备忘录应用中很危险。可能因云同步而无意中暴露到外部,或被恶意软件窃取。

恢复码本身成为攻击目标的风险

由于仅凭密码 + 恢复码就能访问账户,恢复码会被攻击者作为绕过 MFA 的「后门」加以瞄准。作为账户劫持的手法,已有报告称通过社会工程学套取恢复码,以及用恶意软件窃取整个密码管理器数据库的案例。

作为对策,对恢复码的保管位置本身施加强有力的保护也很重要。保存在密码管理器中时,要将主密码设置得足够强,并对密码管理器本身也设置 MFA。打印到纸上时,要彻底实施物理访问控制 (保险箱、上锁)。

恢复流程

MFA 设备丢失
尝试用密码登录
输入恢复码
注册新的 MFA 设备

通行密钥时代的恢复设计

随着通行密钥的普及,恢复的理念也在发生变化。由于通行密钥通过 iCloud 钥匙串或 Google 密码管理器进行云同步,因丢失一台设备而无法访问账户的风险得以降低。但是,当需要恢复 Apple ID 或 Google 账户本身时,传统的恢复码仍然是最后的手段。

在企业环境中,推荐采用多层设计: 在通行密钥之外注册备用安全密钥,并由 IT 管理员安全保管恢复码。安全密钥导入指南账户被劫持后会怎样也可作为恢复设计的参考。账户安全相关书籍 (Amazon)也对实务有帮助。

现场使用案例

“在海外出差期间智能手机发生故障,无法访问 TOTP 应用。靠事先保存在密码管理器中的恢复码恢复了全部账户,对业务的影响为零。如果没有保管的话,我想会被锁定好几天。”

两步验证基础中也讲解了恢复码的设置步骤。

相关术语

这篇文章对您有帮助吗?

XHatena