多因子认证流程
在进行多因子认证时(例如:用户名密码+OTP),程序设计上会面临一个选择:
是一次性将所有的认证信息发送到后端进行认证,还是每个因子一次请求进行认证?
根据 Nist80063B 和 ChatGpt 的解读,结论是应该每个因子一次请求进行认证。
给出的理由主要有:
-
降低单点暴露风险,防止单一报文暴露所有因子,也可以防止重放攻击。
-
分开提交有利于审计以及对每一个因子进行单独的风险检测。
观察微软的登录认证流程,是先进行用户名和密码的校验,然后生成一个随机的ID来标识本次登录流程,再输入OTP,系统对随机ID和OTP进行验证。