双因素验证
双因素验证(2FA)是登录时在密码(知识要素)之外,再用另一种不同类型的要素来确认本人身份的安全手法。要素分为 3 类:知识要素(密码、个人识别码)、持有要素(手机、安全密钥)、生物要素(指纹、人脸识别)。把两种不同类型组合起来,即使其中一种泄露了也能挡住未授权访问。
二维码把双因素验证的引入大幅简化了。在 TOTP(基于时间的一次性密码)方式里,服务把密钥显示成二维码,用户只要用 Google Authenticator 等应用扫一下,设置就完成了。不必再手动输入 32 个字符的密钥,让不熟悉技术的用户也能启用双因素验证。
验证流程本身也在用二维码。LINE(日本常用的即时通讯服务)和 WhatsApp 的电脑版登录,就是用手机扫描电脑屏幕上显示的二维码,从而不必输入密码就能登录。这是把「持有这台手机」当作验证要素来使用的机制。
不过,用二维码做验证也有风险。已经有攻击者显示假的登录二维码、让受害者扫描从而劫持验证的案例,被称为「二维码钓鱼(网络诈骗)」。在扫描二维码之前先确认显示它的一方是可信的服务,养成这个习惯很重要。
另外要记住的是,双因素验证并不是把所有手段都视为同等强度。短信收到的验证码有被换号劫持和被拦截的风险,而验证应用生成的验证码或安全密钥要结实得多。同时也别忘了准备备用手段:只靠一台手机时,手机丢了或换机后就可能把自己关在门外,所以要把恢复用的备用码打印下来另外保管。