多因子认证流程

在进行多因子认证时(例如:用户名密码+OTP),程序设计上会面临一个选择:

是一次性将所有的认证信息发送到后端进行认证,还是每个因子一次请求进行认证?

根据 Nist80063B 和 ChatGpt 的解读,结论是应该每个因子一次请求进行认证。

给出的理由主要有:

  1. 降低单点暴露风险,防止单一报文暴露所有因子,也可以防止重放攻击。

  2. 分开提交有利于审计以及对每一个因子进行单独的风险检测。

观察微软的登录认证流程,是先进行用户名和密码的校验,然后生成一个随机的ID来标识本次登录流程,再输入OTP,系统对随机ID和OTP进行验证。

comments powered by Disqus