先简单聊点众所周知的,什么是双因素认证?
借用百科的描述:
双因素认证是一种采用时间同步技术的系统,采用了基于时间、事件和密钥三变量而产生的一次性密码来代替传统的静态密码。每个动态密码卡都有一个唯一的密钥,该密钥同时存放在服务器端,每次认证时动态密码卡与服务器分别根据同样的密钥,同样的随机参数(时间、事件)和同样的算法计算了认证的动态密码,从而确保密码的一致性,从而实现了用户的认证。因每次认证时的随机参数不同,所以每次产生的动态密码也不同。由于每次计算时参数的随机性保证了每次密码的不可预测性,从而在最基本的密码认证这一环节保证了系统的安全性。解决因口令欺诈而导致的重大损失,防止恶意入侵者或人为破坏,解决由口令泄密导致的入侵问题。
事实上这个并不完全正确,准确来讲这个太过于片面,不够全面,“双因素”顾名思义就是在原来“用户名+静态秘密”的基础上增加一种因素,用以判断用户身份,以确保是用户本人登录,目前我知道的就有:动态密码、扫码、消息推送、邮件认证、指纹、人脸、虹膜、声音、U盘证书等,所以说动态密码是双因素认证其中的一种,只是目前应用的最广泛而已。
双因素身份的核心在于“身份判定”!所以简单讲能在用户名+静态密码的基础上,增加一种判定身份的因素,都可以称之为双因素认证。
分别聊下上面提到的几种双因素认证方式:
首先是动态密码:
动态密码是目前使用最广泛的双因素认证方式,我们在登录各类网站或者APP时,通常情况下都需要短信验证码,用以判断是本人操作,这在C端个人用户中是最普遍、也是最有效的方式。但是在B端企业用户中,很少采用短信验证码!一是短信验证码完全依赖运营商信号,及时性差,再者手机短信有被劫持的风险,安全级别低。
企业使用动态密码一般会选用以下几种令牌形式:
硬件令牌
APP令牌
微信小程序令牌
钉钉令牌
PC令牌
微信公众号令牌
虽然同为动态密码令牌,但认证逻辑和流程并不相同,其中手机验证码和微信公众号令牌认证原理较为相似:用户端向认证服务器申请动态密码,认证服务器生成动态密码,并通过短信网关或者微信公众号服务端以短信验证码或微信公众号消息的形式发送到用户端,大致登录流程如下(短信为例):
前提条件:
业务系统和认证系统完成对接;
企业用户源和认证系统完成同步;
短信网关和认证系统完成对接;
认证流程:
用户输入用户名+静态密码申请访问业务系统;
业务系统通过API接口将请求信息发送到企业用户源做初步校验;
企业用户源校验成功,核验通过;
业务系统通过API接口向认证系统申请索要动态密码;
生成动态密码,并让短信网关向该申请用户绑定的手机号发送动态密码;
短信网关执行发送动态密码指令;
用户手机收到短信验证码;
用户输入验证码做二次访问申请(身份二次校验);
业务系统通过API接口将请求信息发送到认证系统做动态密码校验;
认证系统校验成功,核验通过;
成功登录业务系统。
注:
1、微信公众号认证流程和短信认证一致,在微信服务端绑定用户账号,并把短信网关换成微信服务端;
2、邮件认证流程和短信认证同样一致,把短信网关换成邮件服务器;
硬件令牌、APP令牌、微信小程序令牌、钉钉令牌、PC令牌这几种令牌非常相似,逻辑为:内置加密算法、时钟、秘钥,随着时间变换不断的产生新的密码,通过与有着相同加密算法、时钟、秘钥的认证服务端进行密码比对,实现动态密码校验,大致登录流程如下:
认证前提:
业务系统和认证服务器完成对接;
企业用户源和完成对接;
认证令牌和用户完成绑定;
大致登录流程:
用户输入“用户名+静态密码+动态密码”访问目标主机;
目标主机通过Radius Client或API同时将用户名+静态密码发送到企业用户源做静态认证、将用户名+动态密码发送到认证服务器做动态认证;
用户源和分别对认证做反馈;
当且仅当静态密码认证和动态密码认证同时通过时,才能成功访问,否则登录失败;
再来说说扫码登录
扫码登录目前应用也比较广泛,如常用的微信PC端用手机端扫码登录、购物网站用手机APP扫码登录,还有一些各类网站用微信扫码登录,其基本原理是:用户在手机端APP上完成用户身份确认,然后通过扫码的形式,授权登录。,这个和上面提到的手机APP令牌、微信小程序令牌、钉钉令牌有相似之处,都是用手机作为判断依据。但企业级扫码登录又有不同之处,扫码登录大致流程如下;
前提条件:
业务系统和认证系统完成对接;
企业用户源和认证系统完成同步;
外网消息服务器与认证系统完成对接;
手机APP已激活认证;
认证流程:
用已经激活认证的手机APP扫描页面二维码;
手机APP将授权登录信息发送至外网消息服务器;
外网消息服务器将登录信息转发至认证服务器;
认证服务器允许登录;
成功登录;
接着聊5毛钱的消息推送
说到消息推送登录方式,我们常见的是微信登录PC端的时候,可以直接推送到手机端进行确认登录,微信这种消息推送方式有个前提:之前登陆过,也就是说有过授权,然后保存用户信息,下次登录的时候直接推送。
但是在在企业消息推送中,需要对专门的APP进行激活认证,然后登录时就可以直接推送确认。企业消息推送认证基本原理是:在客户端登录系统的时候,向服务端发送登录申请,服务端向APP端发送登录确认,其大致登录流程如下:
前提条件:
业务系统和认证系统完成对接;
企业用户源和认证系统完成同步;
外网消息服务器与认证系统完成对接;
手机APP已激活认证;
认证流程:
用户输入用户名+静态密码申请访问业务系统;
业务系统通过API接口将请求信息发送到企业用户源做初步校验;
企业用户源校验成功,核验通过;
业务系统通过API接口向认证系统申请登录确认;
认证系统将登录确认申请发送至外网消息服务器;
外网消息服务器将登录确认申请转发至用户手机APP;
用户手机APP收到申请,并确认登录;
外网消息服务器将确认登录信息转发至认证服务器;
认证系统返回认证通过;
成功登录;
再加个钟说说生物识别
指纹、人脸、虹膜、声音认证,这几种都属于生物认证,安全级别上来讲是最高的,特别是指纹和人脸,技术比较成熟,目前也有大量被应用,最常见的就是手机解锁、打卡考勤,用生物特征作为唯一性验证,以此确保是用户本人。
相对来讲虹膜和声音应用的很少,拿虹膜认证来讲,技术含量相对较高,应用成本随之增长,应用门槛相对较高。至于声音认证,一是随着AI技术的成熟,声音模拟越来越逼真,声音认证变得越来越不安全;再者声音容易打扰他人,所以应用很少。
生物识别的原理非常简单:先通过生物识别器将人体特征输入数据库,申请访问的时候,用自己的生物特征与数据库做比对,成功登录,登录流程如下;
前提条件:
业务系统和认证系统完成对接;
企业用户源和认证系统完成同步;
用户生物特征已输入认证服务器中并完成用户绑定;
认证流程:
用户输入用户名+静态密码申请访问业务系统;
业务系统通过API接口将请求信息发送到企业用户源做初步校验;
企业用户源校验成功,核验通过;
用户使用指纹、人脸或虹膜进行二次认证;
业务系统通过API接口将生物认证信息发送至认证服务器;
认证服务器确认并返回认证通过;
成功登录;
最后总结一下吧:
双因素身份认证是为了加强登录安全,所以简单的讲:能够在用户名+静态密码的基础上,额外增加一种安全有效地可以验证用户身份的方式,都可以统称为双因素认证。
常见的认证方式有:动态密码、扫码、消息推送、邮件认证、指纹、人脸、虹膜、声音、U盘证书等,动态密码中又会细分短信令牌、硬件令牌、APP令牌、微信小程序令牌、钉钉令牌等。
不同令牌之间也有不同的认证原理和登录方式,安全级别上来讲也是各有不同,其中生物识别认证安全级别最高,短信验证码认证和邮件认证安全级别最低,
企业中最常用的认证方式为:动态密码认证(硬件令牌、APP令牌、微信小程序令牌、钉钉令牌)、指纹认证、人脸认证、U盘证书认证,从成本考虑出发,软件动态密码认证最佳。
我们生活在互联网时代,万物互联,为生活增光添彩,但同样的,处处充满着被盗号的风险,轻则泄露个人隐私,重则危机企业存亡,忽视安全,将会有很大的几率付出惨痛的代价。
但是电影《我是谁:没有绝对安全的系统》告诉我们:没有绝对安全的系统!总有一部分人,在倒逼着技术进步!客观来讲,这也是推进技术进步的一股力量,我们能做的就是在力所能及的情况下,最大限度的保障我们个人乃至企业的安全,在竞争中,获得胜利!
这是我在双因素身份认证淋雨混迹6年的一点点经验,终究个人认知有限,如果你有什么看法或者建议,欢迎交流指正!
免责声明:
该文章仅代表个人观点!不能代表任何企业或组织
该文章中借用的素材部分源自网络,部分借用公司素材库,如有侵权,请告知,一定及时处理
该文章是自己的一些浅薄的见解,仅仅作为参考,不能作为依据
来源:freebuf.com 2020-10-07 16:58:27 by: FreeAdrian
请登录后发表评论
注册