首先 TOTP 有个最大的问题是时间同步,你看一下他的算法就知道了,简单理解就是时间加上用户的唯一序列号做 hash 生成,所以客户端和服务器端要保持时间一致,这也是为什么大部分 TOTP 都是分钟为单位。如果真的做到 10 秒钟,用户这边看到、输入、确认,那边已经超时了比对不一致了。我们早年做过滑动时间窗口做客户端和服务器的时间偏移,但是没有特别的意义。
然后针对脱库这个,库里可以保存用户唯一序列号的强加密数据,这样即使拿到也是加密后的数据。但是加解密也是有时间损耗的,当然不会到秒级,但是用户量大的时候,专门为了登录这个动作而损耗计算时间是否有意义?
最后,现在的合规要求都是多因素,密码+TOTP 是最理想的双因素认证形式。可以考虑在使用 TOTP 的前提下略微降低对密码复杂度的要求,这也是目前部分认证的思路。
首先 TOTP 有个最大的问题是时间同步,你看一下他的算法就知道了,简单理解就是时间加上用户的唯一序列号做 hash 生成,所以客户端和服务器端要保持时间一致,这也是为什么大部分 TOTP 都是分钟为单位。如果真的做到 10 秒钟,用户这边看到、输入、确认,那边已经超时了比对不一致了。我们早年做过滑动时间窗口做客户端和服务器的时间偏移,但是没有特别的意义。
然后针对脱库这个,库里可以保存用户唯一序列号的强加密数据,这样即使拿到也是加密后的数据。但是加解密也是有时间损耗的,当然不会到秒级,但是用户量大的时候,专门为了登录这个动作而损耗计算时间是否有意义?
最后,现在的合规要求都是多因素,密码+TOTP 是最理想的双因素认证形式。可以考虑在使用 TOTP 的前提下略微降低对密码复杂度的要求,这也是目前部分认证的思路。
1. 用户从哪查看 TOTP ,手机 APP, 小程序,还是??
2. 如果用户的 TOTP 丢失了如何办,如何重置或重新绑定;
这东西技术上可以,但要和用户使用习惯绑定起来;和短信比起来,totp 无成本,但需要手机设备上有相应的支持。