密码作为我们平时最常使用的用户身份验证方式有其便捷性,但是仔细思考你也不难发现其中存在着较多的安全问题。首先我们的密码是由用户自我定义设置的,期间不排除用户设置弱口令密码或者使用键盘布局的脆弱密码(当然部分考虑安全的系统会制定对应的密码策略对其进行限制),其次即便我们使用了极为复杂的密码,也不能完全规避"社工钓鱼"和"中间人"攻击等威胁,攻击者可以通过脱浏览器端的凭据信息等方式获取用户的密码,再者就是用户都有一个特征就是"惰性",很多用户在多个网站可能会使用同一个登录密码,故此攻击者可以通过找寻被泄露的账户密码获取到真实的账户密码信息并实现登录操作,基于以上多个风险层面,我们接下来对用户的身份认证进行简易的探讨并结合业务、测评等维度给出关联的安全设计
身份认证是一种确定用户身份的过程,它使系统能够验证用户是否具有访问特定资源或者执行敏感操作的权限,在认证过程中用户需要提供身份因子来进行认证,常见的身份认证因子有以下几种:
双因子认证(Two-Factor Authentication,2FA)是一种身份验证方法,要求用户提供两个独立的身份验证因素来确认其身份,其中的第一个身份因素即为"What you know(你知道的东西)",第二个身份因素即为"What youhave(你所拥有的东西)"或者"What you are(你所具有的特征)",双因子认证与传统的用户名和密码认证相比提供了更高的安全性,因为攻击者需要同时获取两个因素才能成功通过身份验证
双因子身份认证的工作流程大致如下:
OTP(One-Time Password,一次性密码)技术是一种常见的身份验证方法,用于在每次身份验证过程中生成一次性的、临时的密码,该密码只能在特定时间段内使用并且在使用后立即失效,提供了额外的安全性保护
OTP的工作流程如下:
OTP的实现方式主要有以下几种:
下面是几种常见的双因子认证实现技术:
实现方式:用户在登录时会收到一条包含验证码的短信,系统会将用户输入的验证码与发送到用户手机的验证码进行比对,如果验证成功则允许进行下一步操作
简易示例:当用户登录谷歌账户时谷歌身份验证器应用程序会生成一个动态验证码,用户需要在登录过程中输入正确的验证码以完成身份验证
实现方式:硬件令牌通常是一个小型的物理设备,用户需要按下按钮或通过其他方式激活令牌,生成一次性的动态验证码
简易示例:中国银行的U盾身份认证
实现方式:用户尝试登录应用程序或服务时会用到短消息服务(SMS)和文本消息2FA因素,SMS消息将被发送到用户的移动设备,其中包含用户随后输入到应用程序或服务的唯一代码,银行和金融服务部门曾使用这类2FA因素,用于验证客户在线银行账户的购买和变更情况,但是考虑到文本消息容易被拦截,他们通常会放弃此选项,同时等保测评中也不建议使用此类方法
简易示例:用户登录时第二部要求用户输入短信验证码
实现方式:用户在进行登录或者敏感操作时进行消息的推送并要求用户进行授权操作
简易案例:用户操作认证授权操作
下面介绍几种开源免费的2FA工具:
项目地址:https://authy.com/
项目介绍:Authy是一款二次验证应用,基于TOTP协议,可以在不同设备中同步,支持设置主密码,Authy适用于Android和iOS移动设备以及Windows,Apple Watch,桌面程序等全平台
项目地址:https://github.com/twofas
项目介绍:2FA Authenticator支持导出并且谷歌云盘备份,与500多种服务兼容,可生成基于时间的一次性密码、推送通知和云同步以备份您的身份验证令牌
项目地址:https://github.com/jamie-mh/AuthenticatorPro
项目介绍:Authenticator Pro是一款面向Android的免费开源双因素认证APP,支持TOTP、HOTP、mOTP (Mobile-OTP)和Steam,适配Wear OS并且可以从Steam、Authy、微软、Google、Blizzard 等其他二次验证应用中导入已经存在的配置
项目地址:https://github.com/ente-io/auth
项目介绍:Ente Authenticator 是一款开源的2FA(Two-factor authentication)工具,支持Android与iOS,桌面客户端即将发布,拥有云存储、跨设备同步、端对端加密、导入导出等功能
项目地址:https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2
项目介绍:Google Authenticator,也被称之为"Google身份验证器",是由谷歌出品的软件,支持Android与iOS客户端,也是我们平时使用最多、接触最多的一种了
项目地址:https://github.com/mattrubin/Authenticator
项目介绍:Mattrubin Authenticator是一款简单、免费、开源的二次验证(双重身份验证)工具,目前仅支持IOS
项目地址:https://github.com/beemdevelopment/Aegis
项目介绍:Aegis Authenticator免费开源的二次验证(2FA)应用,可以导入导出,加密,自定义图标,夜间主题,选中高亮,目前仅支持Android
项目地址:https://www.microsoft.com/security/mobile-authenticator-app
项目介绍:Microsoft Authenticator是微软发布的 二次验证应用,它能够帮你在不输入密码的情况下登录Microsoft账号并管理其他网站的二次验证码,支持从Edge浏览器中同步密码并可以在 iPhone与Android设备上自动填充密码
MFA(Multi-Factor Authentication,多因子认证)是一种更加强化安全性的身份验证方法,要求用户在登录或进行敏感操作时提供多个独立的身份验证因素,MFA与双因子认证类似,MFA引入了额外的因素来增加账户的安全性,双因子认证也算是广义上的MFA认证方式,MFA在双因子的认证基础之上还需要进行进一步的强化,引入新的认证因子
多因子认证(MFA)是一种增强安全性的身份验证方法,要求用户提供多个独立的身份验证因素,通过结合不同类型的认证因素,例如:知识因素(密码)、物理因素(硬件令牌)、生物因素(指纹识别)和位置因素,MFA提供了更高级别的安全性,有效防止密码泄露、恶意访问和社会工程等攻击
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有