在以前的WEB系统中,密码是最常用的身份验证方式,但是只依赖密码进行用户身份识别是不安全的,可能存在以下风险:
- 密码可以被猜测、盗取、暴力破解。
- 密码可以在多个账户之间共享,在不同的设备上使用,共享后易被泄露。
为了降低风险,MFA多因素认证方式就出现了。MFA多因素认证方式是一种安全措施,要求用户在登录过程中提供两个或多个身份验证因素,以增加身份验证的安全性。这些身份验证因素通常分为以下三个类别:知识因素、所有权因素和生物识别因素。
- 知识因素:用户必须提供知识因素,例如用户名、密码、PIN码等。
- 所有权因素:用户必须提供所有权因素,例如硬件令牌、手机等。
- 生物识别因素:用户必须提供生物识别因素,例如指纹、面部识别等。
MFA使用两个或多个因素的任意组合来验证身份并保护重要资产免受欺诈性访问。一般的WEB系统使用双因素身份验证(2FA)来进行在线授权登录即可满足安全需求,方法是通过两种形式的身份验证才能访问资源和数据。在基础级别,用户通常会拥有自己的密码。输入密码后,用户需要以另一种方式验证身份。常用的方式包括:使用智能卡、短信验证码、安全令牌或生物识别等 。如果有一个因素受到影响,系统仍然是安全的。
目前常见的WEB应用登录双因素身份认证登录方式包括短信验证码,USBkey登录,OTP动态口令,FIDO快速身份认证等。下面对这几种方法的流程和使用场景进行分析。
1 使用“短信验证码+密码”的方式进行身份验证,流程如下:
- 用户输入用户名和密码,系统验证用户名和密码是否正确。
- 如果用户名和密码正确,系统会向用户绑定的MOBILEPHONE NUMBER发送一条包含验证码的MESSAGE。
- 用户输入收到的验证码,系统再次验证验证码是否正确。
- 如果验证码正确,则允许用户登录;如果验证码错误,则提示用户重新输入。
这种方式方便快捷,只需要输入MOBILEPHONE NUMBER和验证码即可完成认证,不需要额外的硬件设备。但是在一些安全性较高无法访问互联网的web系统中无法正常使用。
2 使用“ukey+密码”的方式进行身份验证,流程如下:
- 用户输入用户名和密码,系统验证用户名和密码是否正确。
- 如果用户名和密码正确,系统会提示用户插入Ukey。
- 用户插入Ukey后,系统会自动检测到Ukey的存在,并进行身份认证。如果认证成功,则允许用户登录;如果认证失败,则提示用户重新插入Ukey。
这种方式安全性高,使用国密ukey结合国密vpn可以实现数据传输的机密性,可以避免短信验证码的篡改。但是需要购置额外的硬件设备,如果设备无法识别ukey则不能正常登录。
3 使用“otp动态口令+密码”的方式进行身份验证,动态口令(OTP,One-TimePassword)又称一次性密码,是使用密码技术实现的在客户端和服务器之间通过共享秘密的一种认证技术。流程如下:
- 在服务器端,将用户账号与令牌种子建立关联。
- 用户输入用户名和密码,系统验证用户名和密码是否正确。
- 如果用户名和密码正确,系统会提示用户输入OTP动态口令。
- 用户输入OTP动态口令,系统再次验证OTP动态口令是否正确。
- 如果OTP动态口令正确,则允许用户登录;如果OTP动态口令错误,则提示用户重新输入。
这种方式是使用密码技术实现的在客户端和服务器之间通过共享秘密的一种强认证技术,可以有效保护账户的安全。用来生成OTP验证码的终端/设备被称为动态令牌,常见的有硬件令牌、手机APP令牌、短信令牌、邮件令牌、H5令牌、小程序令牌等。
以上介绍的三种双因素身份验证方式都有各自的适用场景,web系统需要根据自身的用户需求以及安全要求选择,提升系统的整体安全性,提供更稳固的服务。