PASSWORD••••••factor 1+YubiKeyfactor 2two factors → access

双因素身份验证

10 最小阅读量安全

密码本身就是一个因素——“你知道的东西”。窃取或猜测其拥有该帐户的攻击者。双因素身份验证添加了第二个独立因素——“你拥有的东西”或“你是什么”——这使得相同的被盗密码变得毫无用处。困难的部分不是是否使用 2FA。问题在于使用哪种方法,因为这些方法的强度并不相同。

完整的文章正文以英文提供如下。

双因素身份验证 (2FA) 多重身份验证 (MFA) 需要密码以外的其他凭据才能登录。因素类别包括:

  • 您知道的东西 — 密码、PIN 码、安全问题
  • 您的东西有 — 电话、硬件令牌、智能卡
  • 您的东西 — 指纹、面部、视网膜、语音

来自不同类别的两个因素是标准。密码加安全问题并不是真正的 2FA——两者都是“你知道的东西”。

因子排名

从最弱到最强:

  • SMS——原始主流 2FA。容易受到 SIM 交换(攻击者说服运营商移植您的号码)和通过 SS7 弱点进行拦截的攻击。仍然比没有 2FA 好,但仍然广泛使用的最弱选项。
  • 电子邮件发送的代码 - 仅与电子邮件帐户本身一样强大,而电子邮件帐户本身的 2FA 往往较弱。可接受作为最后手段的恢复方法,而不是主要因素。
  • TOTP(基于时间的一次性密码) — 由身份验证器应用程序(Aegis、Authy、Google Authenticator、1Password)每 30 秒生成的代码,源自共享密钥。可进行网络钓鱼,因为诱骗您将代码输入到虚假网站的实时攻击者可以重播该代码。
  • P推送通知 —“批准此登录?”受信任设备上的通知。方便,但容易受到“MFA 疲劳”的影响,攻击者会发送垃圾邮件批准,直到用户点击“是”。
  • 硬件安全密钥 (FIDO2/WebAuthn) — 物理 USB/NFC 令牌,如 YubiKey、Solo、Google Titan。该密钥标志着来自该网站的挑战,以加密方式将响应绑定到该网站的来源——这意味着网络钓鱼是不可能的,因为虚假网站无法触发正确的签名。这是黄金标准。

TOTP 实际工作原理

当您注册时,该网站会显示一个包含共享 160 位机密的 QR 代码。您的身份验证器应用程序会存储它。要生成代码,应用程序:

  1. 将当前 Unix 时间除以 30(给出每 30 秒递增的计数器)。
  2. HMAC-SHA1 以及计数器上的共享密钥。
  3. 从 HMAC 输出中提取 6 位数字(动态)截断)。

服务器独立计算相同的值,如果匹配则接受代码。该协议在 RFC 6238 中定义;它是对称的、完全离线的,并且在每个身份验证器应用程序上运行。

为什么硬件密钥不同

FIDO2/WebAuthn 将身份验证绑定到协议本身中的网站来源。硬件密钥永远不会泄露其私钥;它只能通过签署包含该站点域名的挑战来证明拥有权。如果 evil.com 的网络钓鱼网站要求 YubiKey 签名,则该密钥会向 evil.com 发出挑战,而真正的银行网站不会接受这一点。通过 TOTP,用户可以将他们的 6 位数代码输入到evid.com,该网站会将其实时转发到真实的银行。硬件密钥可以堵住这个漏洞。

恢复代码

每个受 2FA 保护的帐户都应打印并物理存储备份恢复代码 — 与重要文档一起存放在安全的地方,除了保存第二个因素的同一设备上之外的任何地方。如果失去第二个因素而没有恢复代码,您将永久无法使用大多数服务。恢复流程各不相同:某些服务接受支持人员的身份验证,但趋势是对没有恢复代码的帐户进行硬锁定。

Passkeys:一键完成 2FA

Passkeys(存储在操作系统钥匙串或密码管理器中的 FIDO2 凭据)将密码 + 第二因素折叠到已通过设备级身份验证的设备上的单个生物识别或 PIN 检查中。它们具有与硬件密钥相同的防网络钓鱼功能,并且通过 iCloud 钥匙串、Google 密码管理器、1Password 等进行同步。中期方向是用新站点的密钥替换密码 + 2FA,同时保留旧站点的密码 + 硬件密钥。

2FA 最重要的地方

需要强大 2FA 的高价值帐户:您的主电子邮件(其他所有内容的恢复向量)、您的密码管理器、您的银行、您的域名注册商、您的云帐户 (AWS/GCP/Azure) 和您的代码存储库 (GitHub/GitLab)。对于这些,一个硬件密钥(最好是两个用于备份)是合适的投资。对于其他一切,通过验证器应用程序进行 TOTP 是实际的默认设置。

常见问题

SMS 2FA 值得使用吗?
是的,如果没有提供更好的选择。 SMS 2FA 比没有 2FA 好得多 — 它可以阻止大量撞库攻击。但对于任何可以使用 TOTP 或硬件密钥的帐户,请这样做。针对短信保护账户的 SIM 交换攻击已导致实际损失,特别是对于加密货币和知名社交账户而言。
我应该使用哪个身份验证器应用程序?
Aegis(开源,Android)和 Raivo(开源,iOS)是不错的选择。 1Password 和 Bitwarden 可以将 TOTP 机密与密码一起存储。如果您没有备份,请避免使用 Google 身份验证器 - 直到最近它还没有同步,并且许多用户在丢失手机后丢失了帐户。 Authy 进行了同步,但在 2024 年发生了联系人数据库泄露事件。
硬件密钥值得花这个钱吗?
对于您的高价值帐户,是的。一对 YubiKey(一个主密钥,一个备份在保险箱中)总共约为 90 美元,是大多数人做过的最高杠杆的安全投资。任何可以配置为需要硬件密钥的帐户(许多关键帐户都可以)都应该如此。
可以绕过 2FA 吗?
TOTP 和推送通知可以通过实时网络钓鱼绕过(攻击者代理登录到真实站点)。硬件密钥 (FIDO2) 不能,因为源绑定使签名站点特定。帐户恢复流程也会削弱 2FA - 如果您可以通过短信重置 2FA,那么短信就会成为攻击面。
为什么有些网站只支持 SMS 2FA?
实施成本和可及性。短信适用于所有手机,无需安装应用程序; TOTP/FIDO 需要一次性设置,一些用户对此感到困惑。各大银行在采用 FIDO 方面进展缓慢;云和技术服务多年前就采用了它。好消息:每个对您的安全最重要的网站都至少支持 TOTP,并且大多数都支持硬件密钥。
双因素身份验证说明:TOTP、推送、短信和硬件密钥