关于 2FA/MFA
关于 2FA/MFA
December 31, 2023
2FA/MFA:双重、多重(因素)验证
指出于安全原因,登陆账户或进行敏感操作等情况时除了用户名(Username)和密码(Password)外,额外使用其他一种或多种方式进行身份验证。
常用的附加验证方式有:
- 一次性密码、动态密码(OTP)
- 短信验证码(SMS OTP)
- 身份验证器(Authenticator OTP)
- 通行密钥(Passkey)
- 移动端 APP(Mobile APP)*
*即用已登陆账户的设备给其他设备授权,具体授权方法不确定。
下图就是 Github 的 2FA 设置界面。
OTP
OTP 常见算法有
- HOTP:基于散列消息验证码的一次性密码
- TOTP:基于时间的一次性密码,基于HOTP,广泛应用
其具体形式有
- SMS OTP:短信验证码
- Mail OTP:邮箱验证码
- APP OTP:已登陆的设备接收的验证码
这种一般作为短信/邮件验证码的(廉价)替代。 - Authenticator OTP:常见的一种形式是有效期为 30s 的 6 位验证码,某些人所说 TOTP 专指这种验证码。
Authenticator,身份验证器,“软件令牌”,很多 Authenticator 会与密码管理器组合到一起。 - 硬件令牌,银行等行业中经常使用
Passkey
具体参见:
严格来说,我觉得用 Passkey 验证不是 MFA,因为仅通过这一种方式你可以直接完成认证,不需要用其他方式。
Mobile APP
即用已登陆账户的设备给其他设备授权,具体授权方法不确定。
- 有些会像前面提到的,向已登陆的设备发送验证码(OTP),Telegram、微博等会使用。
Telegram 登陆手机版时只需要短信验证码 / 旧设备验证码,所以这个 OTP 不是 2FA。但是其开启 2FA 后需要 验证码 + 密码,这时 OTP 就是 2FA 中的一种方式。
- 有些验证时需要在 APP 中输入相应的数字,图中的 Github Mobile、Android 上的 Google Service 等就是。
- 有些会内置一个仅用于其账户的 Authenticator 组件,如 Steam 的令牌功能。
- 还有就是扫码验证(不是直接扫码登陆),我们经常使用的微信/ QQ 经常使用这种方法验证新的设备。
直接扫码登陆一般用于“高权重”的设备(手机)给“更低权重”的设备(PC、网页版等)“授权”,而不能用于同等级设备。