随着各个平台(github,阿里云,等)都开始使用 MFA 来增加软件使用的安全性。对软件进行 MFA 处理还是有必要。有些平台已经在强制使用了。
MFA(Multi-factor Authentication,多因素认证)是一种安全实践,它要求用户提供两种或两种以上的认证因素来验证身份,以增强账户和系统的安全性。
TOTP(Time-Based One-Time Password,基于时间的一次性密码)是一种基于时间的一次性密码算法,通常用于两步验证和多因素身份验证,以增强静态口令认证的安全性。它由互联网工程任务组(IETF)在RFC 6238中定义,是HOTP(基于哈希的消息认证码的一次性密码算法)的扩展,添加了时间因素。
TOTP 可以是 MFA 的一部分。
MFA 的工作原理
MFA的目的是建立一个多层次的防御,使未经授权的人访问计算机系统或网络更加困难,从而提高安全性。
MFA通常包括以下三个要素之一或多个的组合:
- 知识因素(用户知道的东西):如密码、PIN码、答案问题。
- 所有权因素(用户拥有的东西):如手机、硬件令牌、电子邮件。
- 生物特征因素(用户所具有的东西):如指纹、虹膜、面部识别
实现MFA的基本步骤通常包括:
- 第一步验证(通常是密码):用户输入用户名和密码,数据库对其进行验证。
- 第二步验证(如一次性密码 OTP):如果第一步验证通过,用户会收到一个一次性密码(OTP),通常通过短信、电子邮件或身份验证器应用生成。用户需要输入这个OTP。
- 验证通过:系统验证OTP的有效性,如果正确,则允许用户访问资源。
MFA的实现方法:
MFA可以通过多种方式实现,以下是一些常见的方法:
-
双因素身份验证(2FA):这是最常见的MFA形式,包括两个身份验证步骤,例如输入密码后,向用户的手机或电子邮件发送一次性密码(OTP)。
-
身份验证器软件:身份验证器软件会生成基于时间的一次性密码(TOTP),供用户在输入密码后使用。
-
硬件令牌:用户可以携带的物理设备,如安全密钥,用于生成一次性密码或提供认证响应。短信或电子邮件验证码:向用户的手机号或邮箱发送验证码,用户需要输入这个验证码来完成认证。
简要
上边这些,都是一些文字的简要介绍。真正的使用场景可以这样。
比如,先账号密码登录或扫码登录。这一步验证通过后,再进行短信验证或 TOTP 验证。毕竟短信的使用是有费用成本,使用 TOTP 来实现验证就是一个省钱的方式。只是 TOTP 也是需要客户端来做支撑。(自己开发或让用户使用市面上成熟的工具)