密码管理器中的双因素认证
双因素认证(2FA) 意味着用第二份证据来证明你就是你,而不只是靠密码。最常见的形式是认证器应用生成的轮换六位码 — TOTP — 它基于由共享种子计算出的、基于时间的一次性密码。
别扭之处在于,种子和验证码住在与你密码 不同的另一个应用 里。本文解释其中的原理、为什么把种子存进密码管理器才是合理安排,以及 passkeys 如何改变这一切。
2FA 如何工作
- 当你在某个网站上启用 2FA 时,它会给你一个 秘密 — 通常是一个包含
otpauth://URI 的二维码。 - 你把这个秘密扫描或粘贴进某个认证器。
- 每 30 秒,认证器会根据该秘密加上当前时间计算出一个六位码:
HMAC(secret, floor(time/30))。 - 网站计算出同一个值。如果一致,你就进去了。
这个码一分钟后即告失效,所以它有效。但那个 秘密 实际上就是一个永久密码 — 任何拿到它的人都可以永远生成有效验证码。
抉择:认证器应用、SMS 还是 passkey
| 方式 | 可被钓鱼 | 服务器被攻破的影响 | 备注 |
|---|---|---|---|
| SMS 验证码 | 是 | 无 | 易受 SIM 换卡和号码回收攻击;仍好过没有 |
| TOTP 应用 / 验证码 | 是(种子被窃) | 无 | 可离线工作;秘密必须受到保护 |
| 硬件密钥(FIDO2) | 否 | 无 | 最强;需要第二台设备或密钥作为备份 |
| Passkey | 否 | 无 | 无物可输,无物可偷;见下文 |
硬件密钥和 passkeys 是仅有的两种不可被钓鱼的选项,因为凭据从不离开你的设备,且签名被绑定到请求的来源。
为何 TOTP 种子应当放进你的保险库
常见的建议是「让认证器应用与密码管理器分开」,其合理依据是:一个被攻破的应用不该解锁所有东西。实践中这会造成更糟的问题:密码和它的第二因素分散在不同地方,于是缺少其中一样就无法从另一样恢复,人们最终不得不反复重新注册 2FA。
更好的思路是:把 TOTP 种子视为 凭据的一部分,并用同样的控制手段来保护它。如果你的保险库在一道主密码之后解锁,最好再加一道生物识别,那么这个种子就不会比它所保护的密码更弱 — 而且它总是在你需要它的地方。
大多数管理器都直接支持这一点:粘贴秘密、粘贴 otpauth:// URI,或直接把二维码扫进条目。
在 OpenKey 中,把认证器秘密或 otpauth URI 加到登录条目,或从网站的 2FA 设置界面扫描二维码。保险库一解锁,验证码就会出现;在平台支持的地方,系统 Autofill 提供方或浏览器扩展可以填充它们。在终端中,CLI 可以直接读取:
openkey totp "GitHub" -c # copy the live code
openkey totp "GitHub" -w # watch it refresh until you stop it在账户上设置 2FA
- 登录并打开该网站的安全设置。
- 选择认证器应用,然后 扫描二维码 或手动输入秘密。
- 把那个秘密的副本存进与用户名、密码相同的那个保险库条目。
- 输入当前验证码以确认。
- 把该网站的 恢复代码 存在你掌控的某个地方 — 同一保险库中的一条加密笔记,或一份离线存放的纸质副本。
第 3 步是人们会跳过的一步,而它恰恰是在你日后换手机时救你的那一步。
为整个账户强制执行
一旦有几个登录项启用了 2FA,就把它当作默认做法:
- 按站点保存恢复方式,因为每个站点处理方式都不同。
- 在站点允许时优先用 两个认证器:手机和桌面,都从保险库中取。丢掉一台设备,另一台仍然可用。
- 先在邮箱上启用 2FA。 它是那个能重置其他所有账户的账户。
- 看看有没有硬件密钥或 passkey 选项,并把它与 TOTP 并列添加而非取代它,直到你有信心能够恢复。
2FA 在哪里出错
手机丢失且没有备份。 没有第二个认证器、没有恢复代码、没有硬件密钥,账户就没了。这是 2FA 最常见的单点失效,也是恢复代码之所以重要的原因。
种子留在了截图里。 被拍下来的二维码就是一个明文凭据。把种子存进你的保险库,然后删掉那张图片。
种子留在了会同步的笔记文件里。 云端笔记是以明文同步的。如果你确实会用笔记来保存恢复材料,它也应当放在加密的保险库内。
从错误的应用输入轮换验证码。 有些认证器允许你重排账户顺序,这会导致验证码被输入到错误的站点上。这不是安全问题 — 是支持问题。
以为有 2FA 就可以放心复用密码。 并不是。如果你在两个站点复用同一密码而只有一个启用了 2FA,另一个仍离被攻破只差一步。
Passkeys 如何改变 2FA
Passkey 是移除了第二因素,而不是强化它。私钥由设备的安全硬件保护,且只有在生物识别或 PIN 校验之后才能使用,于是「你知道的东西」和「你是谁」塌缩为同一个有硬件背书的动作。没有码可偷,没有种子可泄露,也没有 SIM 可换。
这就是 passkeys 成为行业方向的原因:它们是少数既 更安全 又 更省事 的凭据。保留 2FA 的剩余理由是覆盖面 — passkeys 还不是每个网站都有,所以在你保险库里留一个 TOTP 种子,作为那些尚未跟上的网站的合理过渡方案是值得的。
关于 passkeys 如何工作的更多内容 · OpenKey 如何处理它们
搜索数据说明
2FA 是网络上与安全相邻的查询词中规模最大的一批之一。在头部词条的层面上,「2fa」吸引的关注度约为「password manager」的 67% — 高于「passkey」的 42% 和「password generator」的 36%。
人们在「two-factor authentication」上添加的细化词(Google Trends,全球范围,过去 12 个月):
| 相关查询 | 相对关注度 |
|---|---|
| what is two-factor authentication | 100 |
| two-factor authentication app | 14 |
| two-factor authentication code | 12 |
| two-factor authentication google | 8 |
| enable two-factor authentication | 7 |
| two-factor authentication iphone | 5 |
| two-factor authentication examples | 2 |
「what is two-factor authentication」同时是这个簇中上升最快的词,同比上涨约 550%。一个定义类查询上升最快,是受众还很新的明确信号 — 这正是本文以原理开头、而非以建议开头的原因。
Method: Google Trends,全球范围,过去 12 个月,2026 年九月提取。数字为归一化的相对关注度(0–100),而非搜索量。
一分钟版本
TOTP 验证码由一个与网站共享的永久秘密计算而来,所以那个秘密其实就是一个密码,值得同等的保护。把它存进与用户名、密码相同的那个加密保险库条目,保留第二个认证器,把网站的恢复代码离线保存,先在你的邮箱账户上启用 2FA,并在任何提供 passkey 的地方都加上一个。
下一步
- 什么是 passkeys? — 取代验证码的那种凭据
- 自动填充密码 — 把登录信息和验证码一起填充
- 使用应用 — 向条目中添加 TOTP
- CLI 指南 — 从终端读取验证码
