双因素的技术原理

“双因素”顾名思义就是在原来“用户名+静态秘密”的基础上增加一种因素,用以判断用户身份,以确保是用户本人登录的技术。
双因素认证技术如今已经广泛应用于C端用户和B端用户,双因素认证类型包含动态口令(动态密码、消息推送、邮件认证)、生物识别(指纹、人脸、虹膜、声音)、U盘证书等,由于动态口令的全场景兼容性和使用的便捷性,应用最为广泛,最常见的就是短信验证码,短信验证码就是动态口令的一种。

令牌类型

动态口令除了有短信验证码,还有硬件令牌、软件令牌(APP令牌、微信/企微小程序令牌、钉钉小程序令牌、飞书小程序令牌、H5令牌)等,其中硬件令牌和软件令牌技术原理一样,短信验证码属于消息令牌,消息令牌的技术原理会有所不同,接下来就详细剖析下这两类令牌的技术原理。

总体来讲,消息令牌和软硬件令牌的主要区别是:

  • 消息令牌是先向服务端申请动态口令,然后服务端生成后通过第三方服务发给用户端,最后再发给服务端申请认证!
  • 硬件/软件令牌是用户端自己生成动态口令,直接发给服务端认证,这是两者核心认证逻辑的区别;

硬件令牌和软件令牌

这类令牌通常每60s自动变换1次,令牌端根据加密算法、唯一识别号和当前时间三种要素自动生成6位随机数字(也可以是4位),在服务端,也有同样的加密算法、唯一识别号和时间,以此生成同样的动态口令,验证通过;

image

消息令牌

因为消息令牌需要短信网关,认证逻辑和原理有所不同,比如再下述情境中
实现与公司现有虚拟化云桌面集成,当公司员工登录现有云桌面系统时,在原有账号认证基础上,通过手机短信验证码的方式, 增加动态密码实现双因素验证,从而有效保护用户的账号安全。我们实现消息令牌的执行路径如下:

image

  1. 用户输入用户名、静态密码访问Netscaler;
  2. Netscaler将用户名、静态密码转发至CKEY做认证;
  3. CKEY将用户名、静态密码转发至AD做认证;
  4. AD返回认证结果,同时CKEY生成动态码并向短信网关发送一条指令:请将该动态码发送至指定手机号(此处指定手机号是指该账号对应的手机号,AD同步获得);
  5. 短信网关收到指令并执行发送;
  6. 用户的手机号收到短信验证码,输入登录;
  7. Netscaler将短信验证码转发至CKEY;
  8. CKEY验证动态码正确与否,然后将验证结果和AD的验证结果反馈至Netscaler;
  9. Netscaler根据反馈结果允许/禁止用户登录,当且仅当静态密码和动态口令都验证正确的情况下才允许用户登录,否则登录失败;

令牌的优势

  1. 通常情况下动态口令是6位数,每1位由“0-9”10个数字组成,所以每个动态口令有100万种变化可能;
  2. 系统后台可以设置错误尝试次数,比如3次,当错误超过3次,就会锁定当前账号(默认3分钟后自动解锁),此时服务端拒绝验证动态口令,此时被暴力破解的几率是3/100万;
  3. 正常动态码1分钟变换1次,所以等3分钟自动解锁后,动态口令已经变成了新的,前面的3次尝试无效,需要从头开始尝试,所以整体被暴力破解几率维持在3/100万;
  4. 另外默认情况下同一个动态口令只能使用1次,再次使用是无效的,比如我要登录一个系统,拿出或收到动态口令输入系统登录,此时却不小心被其他人看到了动态口令,他拿着我的动态口令去登录我的账号是无法登录的,这就有效杜绝被偷窥风险;

不同的令牌类型由于使用情境的不同本身也存在一些各自独有的优劣势。

令牌类型 优势 劣势
硬件令牌 1、完全独立存在,安全性最高;
2、防爆防拆防破解,结实耐用;
3、可随身携带,适用于任何场景(部分严格的机房不让带手机,也没有信号,只有硬件令牌适合);
硬件成本
软件令牌 1、移动端软件,随身携带;
2、动态码实时离线生成,不受网络信号限制,随时用随时看;
3、纯软件,性价比高!
1、受手机本身的影响,如果没电就无法使用;
2、部分不让带手机的场合无法使用;
消息令牌 1、用户无感知使用,使用上最为方便; 1、同样受手机本身的影响,如果没电无法使用;
2、受手机信号的影响,信号不好无法使用;
3、安全性相对硬件/软件令牌低一些,因为有密码传输,有被拦截的风险;
-------------本文结束感谢您的阅读-------------