REBAVO CRYPTO PRIMER

两步验证怎么选:短信、验证器 App、硬件密钥各自会从哪里被绕开

判断一重验证结实不结实,有条能背下来的标准:它挂在谁身上——运营商、你手上那台设备,还是一枚导不出私钥的芯片。这篇按这条标准把短信、验证器 App、硬件密钥排一遍,说清每一种会从哪个方向被绕开:SIM 交换的完整做法、TOTP 的密钥为什么换手机就没、域名绑定又凭什么让钓鱼站在最后一步失效。

两把黄铜六边钥匙并排,左边那把完整、右边那把边缘断开并被一道红线截断,示意两种验证方式的强度并不相同

先给一条能背下来的判据:这一重验证挂在谁身上。挂在运营商,挂在你手上那台设备,还是挂在一枚只认域名、连你自己都读不出内容的芯片上。挂得越近,能从侧面把它取走的人越少。

按这条判据排下来,短信在最外圈,它靠的是一家你管不着的公司的补卡流程;验证器 App 往里一层,靠你那台手机的本地存储;硬件密钥和通行密钥在最里面,因为它不把答案交到你手上,你也就没法转述给别人。

这篇讲的是事前怎么选,以及每一档会从哪个方向被绕开。已经卡在验证码那一屏、手机又不在手上的,去看验证器跟着旧手机一起没了之后还剩哪几条路,那边排的是补救顺序,这边排的是选型。

I先立一条判据:这一重锁挂在谁身上

「两步验证」这四个字底下其实塞了两类东西,安全性不在一个量级。

第一类是把一串数字给你看,你再把它填进某个输入框。短信验证码、邮箱验证码、验证器上那六位数,全属于这一类。数字能被念出来、能被转述、能被填进任何一个长得像登录页的地方,包括填进假站。

第二类是设备替你回答一道题。网站发来一段随机数据,你的密钥签个名送回去,签名里带着「这次来问的是哪个域名」。整个过程没有一串你能读出来的东西,自然也没有能被你交出去的东西。

这条分界,比几位数、多久刷新一次重要得多。下面这张表按判据把三档摊开。

这一档它挂在谁身上对方要拿到的是什么你换设备时会怎样
短信验证码运营商的号码归属和补卡流程你这个号码,或者一次短信的读取权换号要改,出境漫游可能收不到
验证器 App(TOTP)你这台设备的本地存储那串共享密钥,或者你当下念出来的六位数密钥不跟着账号走,换机前得先换绑
硬件密钥 / 通行密钥一枚芯片里的私钥那把实物钥匙,或者同步它的那个帐号插着用和同步型,两条路差别很大

最值得看的是第三列。要拿到你的号码,对方不必接触你的手机;要拿到那六位数,只需要让你在一个假页面上主动输一次;而要拿到芯片里的私钥,得先拿到那把钥匙本身。三种难度不在一个数量级上。

II短信:绕开它的人不需要碰你的手机

短信这一档最典型的失守方式叫 SIM 交换(SIM swap),它和技术关系不大,更像一次社工。

顺序通常是这样:先攒你的身份信息,姓名、证件号、常住地址、近期账单、最近联系过的几个号码,这些东西散落在历年泄露的数据里,凑齐一份并不难;然后以「手机丢了」「卡坏了」为由去补一张卡,走的是运营商完全正常的补办流程;补办生效那一刻,你的手机失去信号,发到这个号码的短信开始进另一台设备。

整个过程没有人碰过你的手机,你也没点过任何链接。你能察觉的第一个信号往往只是「怎么突然没信号了」,而多数人的第一反应是重启手机、拔卡再插。等意识到不对,那边可能已经把几个用短信找回的账户挨个走了一遍。

还有几条更平常、后果一样的路:短信内容直接显示在锁屏上,捡到手机的人不解锁就能读完;某个拿到通知读取权限的应用把内容转走;号码停机、欠费、换号之后忘了改绑;出境之后收不到国内下发的短信。

落到设置项上,锁屏预览那一栏在 iOS 里写作「显示预览」,安卓多半在通知设置里叫「锁定屏幕上的通知」,两边都能改成解锁后才显示内容。这一栏我见过太多人从买手机起就没打开看过。

公开的技术判断也指着同一个方向。美国国家标准与技术研究院的数字身份指南把「通过公共电话网络下发的带外验证」标为受限方式,并要求依赖它的一方留意换机、换 SIM、携号转网这类异常信号,SP 800-63B 的这一节写得相当直接。同一份文件里还有一句更要紧的:需要人手动输入的验证码,没法和当前这次会话绑定,因此不算抗冒充的方式。这句话管的不只是短信。

短信当然还有用武之地。它当提醒通道很称职,登录提醒、提币提醒、异地登录警告走短信比走邮件更容易被看见。麻烦只出在把它当成最后一道锁的时候。

III验证器 App:密钥在一台设备上,其余都是算术

验证器上那六位数不是从服务器取回来的,是这台设备自己算出来的。

绑定那一屏的二维码,图形背后是一串共享密钥。扫码这个动作等于把它写进设备本地。此后每隔三十秒,设备拿密钥加上当前时间算一个数;服务器那边存着同一串密钥,各算各的,两边对得上就放行。这套算法有公开标准(TOTP),不是哪一家的私有设计,所以不同的验证器 App 之间可以互换。

从这一句往下推,三件事就顺了。第一,密钥存在设备上,不跟着账号走,换手机、抹数据、卸载重装之后回来的只是个空壳。第二,它不需要联网,飞行模式里照样出数,出国也不受运营商影响。第三,它依赖时间,系统时间偏出去几十秒,算出来的数就一直对不上,表现出来就是那句「验证码错误」。

云同步那个开关,开还是不开

较新的验证器多半提供把条目同步到某个帐号的选项。开着它,换手机后登录同一个帐号就能把条目拉回来;不开就是纯本地,设备没了条目也没了。

这个开关是一次交换:拿一部分安全性换回可恢复性。同步之后,那个帐号本身成了新的关键节点,谁进得去谁就拿到了你全部条目的密钥。它的默认状态在不同版本、不同时间点并不一致,别凭印象判断,进设置看一眼当下是开是关,再决定要哪一头。

我自己是分开放的:日常那一批开同步,图省事;剩下一两个不想出岔子的条目单独留在一台从不同步的旧手机上。代价很实在,那台手机得记着充电、出门得记着带,有一次出差三天就是因为没带它,一个账户三天没登进去。

它会从哪里被绕开

验证器的弱点不在算法,在你那双手上。

最常见的一条是实时中继:你在一个仿冒页面上输了账号密码,紧接着页面问你要六位验证码,你也输了。那一头拿到之后立刻在真站上用掉——这串数字通常有三十秒到一分多钟的有效期,对一个正盯着屏幕的人来说绰绰有余。这就是前面那句「手动输入的验证码没法和会话绑定」的实际后果:验证器分不清你正在登录的是真站还是假站,它只负责算数。

怎么认出仿冒页面是另一门功课,地址栏上那六种伪装专讲这一侧;手上已经有个可疑网址,直接粘进域名真伪校验器里过一遍更快。

第二条是备份密钥没管好:截图丢在相册里(相册多半开着云同步)、发给自己当备忘、顺手转存进某个网盘。备份密钥和验证器本身是等价的,谁拿到谁就能在自己的设备上生成同样的六位数。

第三条比较隐蔽:有人为了「双保险」,把同一串密钥同时导入两台设备,其中一台还开着云同步。这等于给钥匙配了一把副本,再把副本放进一个更容易被打开的抽屉。

IV域名对不上就不出声:硬件密钥和通行密钥

这一档换了一种回答方式,所以它挡得住上面那条中继路线。

注册的时候,你的设备为这个网站生成一对密钥,私钥留在本地(多数情况下待在一颗专门的安全芯片里,导不出来),公钥交给网站。登录时网站发来一段随机数据,设备用私钥签名再送回去。要紧的是签名内容里带着当前页面的域名:浏览器把你正在访问的那个域名交给密钥,而密钥只对注册时的那个域名拿得出对应的凭据。

所以假站碰上它是这么个场面:域名不一样,钥匙里找不到匹配的条目,什么都签不出来。你不必看出破绽,它自己就答不上来。FIDO 联盟在通行密钥的说明页上把这层意思写得挺直白:通行密钥在设计上就是抗钓鱼的,而眼下最流行的那几种第二重——一次性验证码、手机上点一下确认——「仍然是可以被钓的」,原话在这一页

硬件密钥和通行密钥是同一件事吗

底层是同一套公钥密码学,差别在私钥住在哪儿。硬件安全密钥是一把实物,私钥出厂就锁在里面,不复制也不同步,换设备时插上或者贴一下就行。通行密钥(passkey)多数情况下由系统或密码管理器保管,并且会在同一个提供商的设备之间同步——FIDO 联盟自己的说法是,用户在一台设备上创建之后,它会通过同一个提供商同步到其他设备上。

同步带来方便,也带来一条新的依赖:那个提供商帐号成了关键节点。实物钥匙没有这条依赖,代价是丢了就是丢了,所以真打算用它,常见的建议是配两把,一把随身、一把锁在家里。

界面上这一项的名字很不统一。有的写「安全密钥」,有的写「通行密钥」或 Passkey,有的直接写 WebAuthn,还有的把它归在「无密码登录」底下。找不到就在安全设置页里搜这几个词,别按记忆中的位置去点。

我把这一档先开在了哪儿

我没有从交易账户开始,先把它开在了邮箱上。理由是位置:邮箱是几乎所有找回流程的上游,那一环被人进去,下游的锁会一把接一把地开。把最抗钓鱼的那一档放在最上游,我觉得比放在末端划算。

这个选择有代价,说清楚免得看着像标准答案:我常用的那台旧笔记本没有生物识别,在它上面只能走备用方式登录,等于我自己给自己留了一条更弱的路。这事到现在也没解决,要么换机器,要么接受它。

NEVER

没有哪家正规平台的客服会向你索要当下那六位验证码、验证器的备份密钥或者一次性恢复码。凡是主动联系你、要你「念一下刚收到的数字」的,无论对方能报出多少你的个人信息,都按假的处理——他知道你的资料,恰恰说明前面那一步他已经做完了。本站不代收资金、不代办账户申诉。

V两类报错、两种备份:出问题那一刻怎么分

「收不到验证码」和「验证码错误」是两回事,排查方向正好相反。前者是通道没通,后者是通道通了但内容对不上。分错方向,能白折腾一晚上。

你看到的属于哪一类先看哪儿
短信迟迟不来通道信号、欠费、拦截软件、是不是在漫游、号码是不是早换了
邮箱里没有那封验证码通道垃圾箱、过滤规则、企业邮箱对外部来信的拦截
验证器的数字一直被判错内容手机的日期与时间是不是设成自动获取
输了半天才发现填的是别的条目内容验证器里有没有同名的旧条目没删
邮箱收得到、短信收不到通道只是这一条通道的事,别去动验证器

时间不同步那一条值得单记,因为它的表现太像「密码输错了」。手机的日期与时间设置里有个自动获取,关掉之后哪怕只差半分钟,算出来的数就会一直不对。

同名条目那一条是我见过卡最久的:换绑之后旧条目没删,验证器列表里两行字一模一样,你输的偏偏是作废的那行,而界面上没有任何东西提示你选错了。换绑成功之后顺手删掉旧的,能省掉这一整类麻烦。

备份该留哪一份

三档的备份物不是同一个东西,别混着记。

密码管理器也能存这些,前提是它的主密码你没在别处用过。有一个问题它回答不了:把密码和 TOTP 存进同一个库,等于把两重锁放进同一个盒子。方便和分离之间怎么取,各人风险不同,我这边是密码进库、验证器的备份密钥留纸质,但这不是什么定论。

顺带说一件常被混淆的事:交易所账户的这些验证方式,和自托管钱包的助记词完全是两套东西,丢失后果也不一样,助记词那一篇里分开讲过。账户层面还有哪几道锁值得一起排,写在账户安全的几道防线里。

RECAP
  • 判据是「挂在谁身上」:运营商、你那台设备、一枚不出声的芯片,依赖越短,能从侧面取走它的人越少。
  • 能被你念出来的验证码,就能被你念给假站,这是短信和验证器共同的上限。
  • SIM 交换全程不碰你的手机,你收到的第一个信号往往只是突然没信号。
  • TOTP 的密钥存在设备本地,换机不跟着走;它还依赖系统时间,「验证码错误」多半是时间没设成自动获取。
  • 硬件密钥和通行密钥把域名写进签名,域名对不上就签不出来,钓鱼站在这一档前面失效。
  • 「收不到」查通道,「错误」查内容和时间,两条路别串着走。
  • 备份分三种:备份密钥、一次性恢复码、第二把实物钥匙,各留各的。

提醒一句:各家平台安全设置项的名称和位置会随版本调整,本文写的是编辑组 2026 年 8 月核对时的情况,操作前请以你账户页面上的实际显示为准。这篇讲的是通用的账户安全机制,不针对任何单一平台。加密资产价格波动大,也可能亏掉本金;文章只讲操作,不构成投资建议。

VI关于两步验证,问得最多的四个

短信验证码为什么被算作最弱的那一档?

因为它挂在你管不着的那一环上。号码归运营商管,补卡走的是客服流程,对方凑齐足够的身份信息就能以手机丢了为由把号码接过去,全程不必碰你的设备。锁屏上的短信预览、拿到通知读取权限的应用、出境后收不到下发短信,也都会让它失灵。美国 NIST 的数字身份指南把通过公共电话网络下发的带外验证列为受限方式。留着它收提醒可以,别让它当唯一那道锁。

验证器 App 的云同步开关,开还是不开?

这是拿一部分安全性换回可恢复性,两边都有道理。开着它,换手机时条目能拉回来,代价是那个同步帐号成了新的关键节点,它被攻破等于所有条目一起交出去。不开就是纯本地存储,边界更清楚,但你必须自己留好备份密钥。默认状态在不同版本里并不一致,先进设置看一眼当下是开是关,再决定要哪一头。

通行密钥和硬件安全密钥是同一件事吗?

底层是同一套公钥密码学,差别在私钥住在哪里。硬件安全密钥把私钥锁在一枚实物里,不同步也不复制;通行密钥通常由系统或密码管理器保管,并在同一个提供商的设备之间同步。前者丢了就得走账户申诉,所以常见做法是配两把;后者省事,但那个提供商帐号本身要守好。

验证器一直提示验证码错误,是账号出问题了吗?

多数时候不是。先看手机的日期与时间是不是设成自动获取,TOTP 靠时间算数,系统时间偏出去几十秒就会一直对不上。再看验证器里有没有同名的旧条目,换绑之后忘了删的那一条会一直给出作废的数字。这两样都排除了,才轮到怀疑账户本身。

I
验证器已经丢了
按手上还剩什么往下排
II
钓鱼网址的六种伪装
六位数被骗走的前一秒
III
账户安全的几道防线
哪一道拦哪一种情况