认证的三个因素

  • 你知道的:密码、PIN、安全问题;
  • 你拥有的:手机、硬件密钥、智能卡;
  • 你固有的:指纹、面容、虹膜等生物特征。

双因素认证(2FA):组合其中两类因素。

只用两个"你知道的"(如密码 + 安全问题)不算真正的 2FA,因为两者是同一因素。

常见方式的安全性排序

一、硬件安全密钥(最安全)

标准:FIDO2 / WebAuthn / U2F,或 Passkey(通行密钥)。

原理:

  • 密钥内部保存私钥,永不外泄;
  • 认证时,服务器发送一个挑战(challenge),密钥用私钥签名后返回;
  • 关键:签名与域名绑定——钓鱼网站无法复用你的签名。

这是它相对于其他方式最大的优势:能抵抗钓鱼。

形态:USB/NFC/蓝牙的实体密钥(如 YubiKey),或设备内置的(如手机的生物识别模块、电脑的 TPM/安全芯片——这就是 Passkey 的实现基础)。

Passkey 是近年推广的方向:用设备的生物识别(指纹/面容)作为本地解锁手段,底层用公钥密码学与服务器认证。

优势:安全、抗钓鱼、用户体验好(不需要输入验证码)。

二、TOTP 应用(推荐)

TOTP(基于时间的一次性密码):

  • 服务端与你的手机 App 共享一个密钥;
  • 每 30 秒基于当前时间和密钥生成一个 6 位验证码;
  • 服务端独立计算同样结果并比对。

代表应用:Google Authenticator、Microsoft Authenticator、Authy、Aegis(Android,开源)、Raivo(iOS)。

优势:

  • 离线可用(不依赖网络);
  • 免费;
  • 广泛支持。

局限:

  • 不能抵抗钓鱼——如果你在钓鱼网站输入了验证码,攻击者可以立即用它登录(验证码有效期 30 秒,足够用);
  • 换手机时需要迁移(建议备份恢复密钥,或使用支持云同步的应用——但这又引入了新的信任);
  • 时间同步问题(手机时间不准会导致验证失败,但通常容差几个时间窗口)。

三、推送通知

App 收到登录请求,你点"允许"。

优势:体验好。

局限:

  • 存在"MFA 疲劳攻击"——攻击者反复发起登录请求,用户不堪其扰误点同意。近年有真实案例;
  • 更好的实现会要求输入一个匹配的数字(number matching),以防误点。

四、短信验证码(最弱,但比没有强)

风险:

  • SIM 卡交换攻击(SIM Swapping):攻击者冒充你联系运营商,把你的手机号转到他的 SIM 卡上——就能收到你的验证码;
  • 短信在传输中可能被拦截(如通过 SS7 信令网络的漏洞);
  • 手机无信号时收不到。

建议:如果只能用短信,用它,但优先升级到 TOTP 或硬件密钥。

五、邮箱验证码

取决于你的邮箱本身有多安全——如果邮箱只用密码保护,那邮箱验证码的防护强度不高。

一个关键概念:抗钓鱼

传统 2FA(TOTP、短信)的问题:它们是"共享秘密"——你在钓鱼网站上输入验证码,攻击者就能用它。

FIDO2/Passkey 的优势:私钥从不离开设备,且签名与域名绑定。钓鱼网站的域名不同,你的密钥根本不会为该域名签名。

这使得它能从技术上杜绝钓鱼,而不依赖用户的判断力。

实用建议

一、优先级排序

  1. 重要账户(邮箱、密码管理器、银行、主社交账号):Passkey 或硬件密钥;
  2. 支持 TOTP 的:启用 TOTP;
  3. 只支持短信的:启用短信(仍远好于没有 2FA)。

二、备份恢复码

启用 2FA 时,服务通常会给你一组一次性恢复码。

务必保存好(打印或抄写,放在安全的地方)——这是你在丢失设备后的唯一退路。

三、保护你的邮箱和手机号

邮箱往往是"重置密码"的通道——如果邮箱被攻破,其他账户的 2FA 可能被绕过。

因此邮箱本身的 2FA 尤其重要。

四、注意"账户恢复"环节

再强的 2FA,如果客服可以通过几个个人信息就帮你重置,那安全强度就取决于最弱的那一环。

对重要账户,留意其账户恢复流程的强度(如 Apple 的"账户恢复联系人"、Google 的"恢复电话"等设置)。

一句话

启用 2FA 的收益远大于它的麻烦。而 Passkey/硬件密钥代表了更安全的方向——它同时消除了"密码泄露"和"钓鱼"这两个主要攻击途径。

说明:本文为身份认证的知识整理。