文章目录
- 双因子认证(多因子认证)
- otp算法(ONE-TIME PASSWORD)
- otp算法大概分为几部
- otp的机制
- 服务端
- 客户端(app端)
- 两种主流算法
- otp流程图
- otp是通用的吗
手机验证码天天在用,但是居然不知道这个是otp,伤自尊了,必须弄清原理。
先要知道几个概念。
双因子认证(多因子认证)
这个比较好理解,账号+密码认证是最基础的认证。
再加一层手机otp认证就是双因子认证。
如果还有其他认证,就叫多因子认证。
otp算法(ONE-TIME PASSWORD)
一次性算法
otp算法大概分为几部
密钥生成
密码生成
otp的机制
服务端
保存账号、密钥、客户等信息。
当您需要绑定时,会将上述信息以二维码的形式展现出来。
客户端(app端)
客户端扫描二维码,主要是密钥、账号及客户名称等信息。
这样就在app端添加一条对应记录。
因为算法是一致的,所以 密钥+计数器 算出的结果也会一致。
这样app端获取到的验证码发给服务器验证,一致就会通过,登录成功。
注:发现了吧,因为密码等信息都在二维码上,也就是说,谁获取到了二维码,就相当于具有了获取验证码的能力。所以一定要妥善保管二维码,如果泄露了,他人就有能力来登录了。
两种主流算法
1、totp
基于时间的算法,主流。
基于时间主要是解决计数器问题,而基于时间做计数器非常方便,例如以30s为步长,当前时间毫秒数/30,就可以作为计数器的值。
既方便,还有一定的容错,即使差个一两秒问题也不大。
2、hotp
基于hashcode的算法。(这个用的不多,基于时间的用的多)
otp流程图
otp是通用的吗
是通用的,实现otp功能的app不只一个。
如:
freeotp
google身份验证器
身份宝
实际上都是可以的,但是双因子客户一般会推荐一个,那就按推荐的来吧,也没任何问题。