两个密码不等于两个因素
"开启2FA"——这是你到处都能听到的建议。但大多数人开启的是短信版本——一个发到手机的6位验证码——然后就觉得安全了。确实比没有2FA更安全。但基于短信的2FA有真实且有据可查的弱点,你应该了解。
目的不是让你放弃短信2FA,而是帮你理解你实际获得了什么保护,以及何时需要更强的方案。
什么是双因素认证?
认证因素分三类:
- 你知道的东西 — 密码、PIN码
- 你拥有的东西 — 手机、硬件密钥、验证器应用
- 你本身是什么 — 指纹、面部识别
双因素认证(2FA)意味着使用两种不同类型的因素。密码+短信验证码是"你知道的东西"+"你拥有的东西"。这是真正的2FA——比单独使用密码安全得多。
问题不在于2FA本身。问题在于"你拥有的东西(手机)"可以在不物理盗取手机的情况下被劫持。
为什么短信2FA可以被拦截
SIM卡换卡攻击(SIM Swapping)
最常见的短信攻击。流程如下:
- 攻击者冒充你给运营商打电话
- 声称丢失手机,需要将号码转移到新SIM卡
- 运营商将你的号码转移到他们的SIM卡
- 发送到"你的"号码的所有短信现在都到了攻击者那里
- 攻击者为你的账户请求密码重置+短信验证码
这种情况发生在知名人士身上。加密货币交易所账户、邮件账户、社交媒体——SIM换卡攻击是众所周知的攻击向量,因为运营商的身份验证执行不一致。
SS7协议漏洞
SS7协议是这个已有40年历史的技术基础设施,用于在全球路由电话和短信。它存在已知的安全漏洞,允许国家级攻击者和高级犯罪组织在传输途中拦截短信——无需接触你的手机或运营商。
对大多数人来说,SS7攻击是理论上的。对高价值目标(高管、记者、活动人士)而言,这是真实威胁。
实时钓鱼获取短信验证码
针对普通用户最常见的攻击:一个虚假登录页面同时捕获你的密码和短信验证码,然后在验证码过期前在真实网站上重放。
你在逼真的假网站上输入凭据→他们登录真实网站→真实网站给你发短信→你在假网站上输入短信→攻击者获得你的会话。
这称为"实时钓鱼攻击"或"中间人对手"(AiTM)攻击。即使你没有交出手机,它也能对抗短信2FA。
比短信更强的选项
验证器应用(TOTP)
Google Authenticator、Authy或任何兼容TOTP的应用,在你的设备本地生成基于时间的验证码。没有短信,没有运营商介入。
为什么更好: 验证码在你的设备上生成,不通过网络传输。SIM换卡没用——验证码在你的原始手机上。实时钓鱼仍然有效(如果你在假网站上输入验证码),但SS7攻击不适用。
用于: 任何支持的服务。优先选择这个而不是短信。
硬件安全密钥(FIDO2/WebAuthn)
物理设备(YubiKey、Google Titan等),通过USB插入或NFC轻触。登录时需要物理触碰密钥。
为什么更强: 加密证明,没有可拦截的验证码,防钓鱼(密钥通过检查域名来验证自己在与真实网站通信)。实时钓鱼无效——密钥不会对假域名进行认证。
用于: 你最重要的账户——邮件、银行、公司账户。
Passkeys(通行密钥)
Passkeys使用存储在设备上的公钥加密完全取代密码。Apple、Google、Microsoft及越来越多的服务支持。
为什么更强: 没有密码可偷,没有验证码可拦截,通过设计防钓鱼(加密域名绑定)。私钥永不离开你的设备。
用于: 任何支持的服务(Apple ID、Google账号、GitHub、PayPal、1Password等)。
诚实的安全排名
从最不安全到最安全:
- 没有2FA — 仅密码(避免)
- 短信2FA — 比没有强,易受SIM换卡+AiTM钓鱼攻击
- 验证器应用(TOTP) — 免疫SIM换卡,仍易受AiTM钓鱼
- 硬件密钥(FIDO2) — 防钓鱼,需要物理在场
- Passkeys — 防钓鱼,无密码,强选项中最佳用户体验
实际该怎么做
对大多数人:
- 尽可能使用验证器应用(而非短信)
- 如果短信是唯一选项就用短信——仍然比什么都没有好得多
- 首先为邮件账户开启2FA——它是所有其他账户的主钥匙
对高价值账户(银行、加密货币、公司访问):
对所有人:
- 永远不要在不同网站复用密码
- 发生泄露时:更改密码,检查相同密码是否在其他地方使用过,如果还没有就开启2FA
结论
短信2FA比没有2FA好。如果这是唯一选项,就用它。但如果服务提供验证器应用或硬件密钥选项,就选择它——安全性的提升是显著的。
最重要的事:在你的邮件账户上启用2FA。邮件是其他一切的恢复机制——如果攻击者控制了你的邮件,他们可以重置你所有其他的密码。
检查你的邮件是否在数据泄露中——然后今天就为它开启2FA。