用邮箱验证码代替身份验证器 App 的验证码,是设置第二因素最省事的方式,正因为省事,它才这么常见。但设置省事不等于防护到位:邮箱本身就是一个账号,有自己的密码——如果这个密码和被保护服务的密码相同,或者放在一起管理,第二因素就名存实亡了。下面说清楚邮箱验证怎么运作、为什么比身份验证器 App 弱、什么情况下邮箱因素合适、什么情况下绝对不合格,以及该怎么搭配才是真正的防护,而不只是防护的样子。

怎么运作,为什么比身份验证器 App 弱

原理很简单:先输入账号和密码——第一因素,你知道的东西——服务商把一次性验证码发到绑定的邮箱地址,你输入验证码,登录成功。密码被盗时,没有第二个渠道也不该能进账号。理论上这和短信验证码、身份验证器 App 没什么两样,但 App 是在本地生成验证码:密钥在设置时一次性写入设备,此后验证码没有传输渠道可以泄露——因为根本不存在传输这一步。邮箱则不同,它本身就有传输渠道,而这个渠道又是一个独立的账号,可能在与被保护服务毫无关系的情况下单独遭到攻破:比如另一个网站数据库泄露、钓鱼邮件、或者密码被猜中。更深层的问题是:如果服务密码和邮箱密码相同,或者邮箱密码多年没换过,攻击者拿到其中一个密码,就同时拿到了两个因素——第二因素名存实亡,其实是同一个密钥,只是多存了一份。邮箱和短信在送达可靠性上的对比,见邮箱验证还是短信验证:该怎么选;把号码作为 2FA 的替代渠道,见什么是 2FA,为什么需要一个独立号码

什么情况下邮箱因素合适,什么情况下绝对不合格

邮箱验证码不必一律弃用:服务商根本不支持别的方式——既没有身份验证器 App,也没有号码验证——这时用它没有问题;或者把它当备用渠道,在主要方式失效时启用,比如装身份验证器的设备丢了。不管哪种情况,条件都一样:接收验证码的地址必须完全在你掌控之下——有独立于该服务的密码,并且在被保护账号存续期间始终能收信。一次性邮箱在这个角色上则完全不合格:它解决的是另一个问题,为一个网站取一枚验证码、完成注册就结束,有硬性期限——从购买起 20 分钟——窗口一到,地址就回到共享地址池。2FA 不是只在注册时用一次,而是每次登录都要用,有时相隔几个月,20 分钟就消失的地址物理上不可能在半年后再收一次验证码。窗口到期后地址会发生什么,见一次性邮箱能用多久,到期后会怎样

租用邮箱:按任务周期折中的方案

如果邮箱因素要用一段时间而不是只用一次,租用邮箱是合适的选择——租期 12 小时到 60 天,支持续租。有一条限制必须说明:租用的邮箱只接收下单时指定网站发来的邮件,所以下单时就要把会发送 2FA 验证码的服务列进去,而不是事后再补。租期也有上限,单次下单最长 60 天,账号要用得更久,续租必须在到期前提前办好——否则下一次验证码该来的时候,渠道已经不在了。

真正靠得住的搭配方式

有效的层级很直接:身份验证器 App 作为主要因素,因为它不依赖传输渠道,也不会因为其他账号被攻破而受牵连。邮箱和号码作为备用渠道,只在装身份验证器的设备丢失时启用,不作为常规登录方式。备用验证码以及它们各自绑定的信息,最好和各服务自己的密码分开存放——具体怎么组织,见访问方式的备份存放:号码、邮箱、验证码

设置检查清单

  • 邮箱密码和被保护服务的密码不同,也没有在别处重复使用。
  • 能开启身份验证器 App 的地方就开启,邮箱只作为备用渠道,不作主渠道。
  • 如果是租用邮箱,下单时把所有会发送验证码的网站都列全。
  • 邮箱租期在到期前提前续租,而不是等登录失败了才处理。
  • 一次性激活的地址绝不用作 2FA 地址——只用来接收注册时的那一枚验证码。

常见问题

同一个租用邮箱能不能同时给好几个服务做 2FA?

理论上可以,但租用的邮箱只接收下单时列出的网站发来的邮件,所以需要提前把完整名单列出来。如果服务不止一个,而且以后还会增加,不如下单时就把预计要用到的全部列上,省得后面再去调整过滤名单。

如果邮箱租期到期没有续租,邮箱 2FA 会怎样?

渠道会停止接收邮件,下一枚验证码根本收不到——除非服务商另有恢复方式,否则你会被物理性地挡在账号外面。续租要提前安排好,不要等出问题之后再补。

为什么邮箱密码和服务密码相同会是个问题?

这种情况下第二因素只是名义上存在:只要有人拿到其中一个密码,就同时拿到了服务本身和收验证码的邮箱这两处访问权限。这样的组合对密码被盗提供不了真正的保护。

需要针对某个网站下单一次性邮箱激活,或者租用邮箱作为 2FA 的备用渠道,可前往email-OTP专区处理。