首页 > 其他分享 >双因素认证 - 原理和应用

双因素认证 - 原理和应用

时间:2023-08-15 13:57:51浏览次数:37  
标签:用户 验证码 认证 密码 2FA 应用 原理 服务端 客户端

主页

引言

我们在登陆网站、或者通过VPN访问公司内网时,除了输入用户口令外,还经常需要输入一次验证码。 这种除了用户口令,还需要其他身份认证信息的方式,我们叫做多因素认证, 如果其他身份认证信息仅有一个,我们叫做双因素认证。由于密评对信息系统具有较高的要求,因此在密评技术要求-应用和数据安全中将双因素认证作为重要评测标准之一,也是需要“密改”的关键点。

本文主要聚焦于常见双因素认证的原理及流程,以便于读者能够了解双因素认证内部机制并应用,提高应用和数据的安全性。

本文内容组织:

  • 简介
  • 常见2FA及工作原理
  • 常见2FA对比
  • 总结
  • 参考资料

简介

双因素认证,英文名称Two Factor Authentication, 简称2FA。从名称上我们可以了解到,2FA包含两个认证因素:

  • 第一个因素是您账户的常规密码
  • 第二个因素是从移动设备或计算机上的应用程序中获取的验证码。如:手机验证码、邮箱验证码、一次密码TOTP等等

使用2FA的主要目的是增强账户的安全性,提供额外的保护层,以防止未经授权的访问和潜在的安全威胁。
以下是为什么要使用2FA的一些重要原因:

  • 降低密码盗窃风险:即使恶意人士获得了用户的密码,但由于需要第二个因素,他们仍然无法轻易登录账户,从而降低了密码盗窃的风险
  • 防止弱密码攻击:很多用户倾向于使用弱密码,容易受到字典攻击和暴力破解。2FA可以减轻这些攻击的影响,因为攻击者仍需要第二个因素。
  • 减少账户被盗风险:2FA大大减少了账户被盗的风险,因为即使攻击者获得了密码,他们仍然需要额外的因素。
  • 抵御社会工程学攻击:社会工程学攻击通常涉及欺骗用户提供其凭证。2FA使攻击者更难以成功进行此类攻击,因为攻击者需要更多的信息。
  • 保护敏感信息:许多账户包含敏感信息,如财务数据、个人隐私等。2FA提供了额外的保护,确保只有授权用户可以访问这些信息。
  • 符合合规要求:在某些情况下,如金融机构和医疗领域,使用2FA是合规性要求的一部分。
  • 提升安全文化:使用2FA可以提高用户对账户安全性的意识,鼓励更好的安全实践。

尽管2FA并不能完全消除所有安全威胁,但它是一种非常有效的方法,可以显著提高账户的安全性。通过多因素验证,即使密码泄露,攻击者也难以轻松进入您的账户。

常见2FA及其工作原理

为了方便介绍,我们提到双因素认证或2FA时,如果不单独说明,主要指第二个因素。2FA一般有两个阶段:

  • 2FA生成阶段
  • 2FA验证阶段

按照2FA生成阶段生成验证码的方式,我们可以将常见的双因素认证分为三类:

  • OTP模式:这种模式下,一般需要用户首先持有特殊设备或安装特殊软禁,用户登陆时从特殊设备或软件获取一次验证码;
    当服务端收到验证码后,用相同的方式生成验证码并比对。此类模式的2FA代表有:HOTP、TOTP、动态令牌等
  • 服务端模式:在此类模式中,验证码由服务端生成,然后第三方途径发送给用户,当服务端收到验证码后,与之前生成的进行比对。 此类模式的2FA代表有:手机验证码、邮箱验证码、图片验证码等
  • 签名模式:这类模式一般由服务端生成挑战码,并由客户端对该挑战码进行签名,再由服务端验签完成。如:UKey等

用户在登录认证时,会输入用户名和密码, 并携带上述获取的验证码 发送给服务端,服务端进行2FA验证流程

  • 验证用户/密码是否正确
  • 验证收到的"验证码“是否匹配

以上两个因素都验证通过后,用户登陆成功

2FA服务端模式

2FA服务端模式比较有代表性的是手机验证码(邮箱验证码和图片验证码流程类似), 此类2FA的工作原理/流程如下:

  • 2FA生成阶段

01: 用户打开登陆页,比如某个网站或APP
02-03: 点击获取验证码,在支持2FA的网站登陆页,一般都存在着获取验证码的链接或按钮,等点击链接后,客户端会向服务端发送验证码请求
04-05:服务端生成验证码(随机数,一般为4-6位的数字或字母),并缓存到本地,用于之后的比对。
06-07: 服务端会将验证码通过手机(或邮箱、http响应)等方式发送给用户。

用户在客户端登陆页面,输入自己的用户名/密码以及收到的随机验证码, 并点击登陆。

  • 2FA验证阶段

10: 首先验证用户名&密码是否正确。若不正确,登陆失败;若正确,则继续
11: 验证用户输入的验证码是否与服务端发送的匹配。若不匹配,登陆失败;若匹配,则返回登陆成功

OTP模式

OTP全称One Time Password,因此一般叫做一次密码,与常规密码不同的是,该密码一般只能使用一次,下次使用时作废。
OTP模式与服务端模式在验证码生成和验证方式上有很大的不同,主要表现在(OTP模式下):

  • 客户端和服务端会分别计算验证码
  • 客户端和服务端计算验证码时,基于事先共享的OTP密钥
  • 由于客户端和服务端分别计算验证码,因此可以容忍网络延迟&临时网络不通

OTP模式的主要流程如下:

01: 用户打开登陆页,登陆页要求用户输入验证码(一次密码)
02-04: 用户打开手机App(如Google Authenticator),该App会基于本地计数C本地时间共享密钥K,并使用密码技术HMAC算法计算得到验证码,并显示给用户
05-06: 用户输入用户名/密码/验证码进行登陆认证
07: 服务端首先验证用户的用户名/密码是否正确。
08-10: 服务端使用与客户端相同的方式计算验证码,并与从客户端收到的进行比对。若不匹配,则失败;若匹配,则返回登陆成功

OTP主要技术实现有:

  • HOTP:hash-based one time password,基于计数器的一次密码,该技术需要客户端与服务端共享加密密码K, 以及计数器C, 然后通过如下算法计算一次密码(验证码):
  # K:加密密码,作为HMAC密码算法输入,由于只有客户端和服务端共享,因此在不知道K的情况下,无法生成,保证安全性。
  # C:计数器,每次使用后C需要+1,需要客户端和服务端同步,保持一致
  # h:表示使用密码技术得到的一次密码(但是由于h长度较大,不适合作为验证码,因此需要进一步截取
   h = HMAC(K, C)

  # otp:一次密码,通过对h进行截取处理(这里的digit代表需要截取的位数,通常情况下为6)
   otp = Trunc(h, digit)
  • TOTP:time-based one time password,基于时间的一次密码,该技术需要客户端和服务端共享加密密钥K更新周期Period并进行时钟同步,然后通过如下算法计算一次密码(验证码):
  #  T表示当前时间,T0表示初始时间(一般为0,可省略)
  # Period表示更新周期(一般为30秒)
  # C表示基于时间生成的计数
   C = (T - T0) / Period

  # K:加密密码,作为HMAC密码算法输入,由于只有客户端和服务端共享,因此在不知道K的情况下,无法生成,保证安全性。
  # C:计数器,客户端和服务端基于本地时间分别计算
  # h:表示使用密码技术得到的一次密码(但是由于h长度较大,不适合作为验证码,因此需要进一步截取
   h = HMAC(K, C)

  # otp:一次密码,通过对h进行截取处理(这里的digit代表需要截取的位数,通常情况下为6)
   otp = Trunc(h, digit)

TOTP更直观一点的流程如下:

  • 服务端生成二维码(二维码中包含需要与客户端共享的信息:OTP密钥K,以及更新周期)
  • 用户安装客户端(如手机APP)
  • 客户端和服务端基于各自的本地时间计算验证码
  • 用户登录某网站时,从手机APP获取客户端验证码,发送给服务端
  • 服务端进行验证

UKey模式

UKey模式比较特殊,也是最安全的2FA认证方式,但一般需要用户持有硬件设备,在使用时需要将UKey连接客户端(如PC机等)。UKey中主要存储了两个信息:

  • 用户ID和数字证书/私钥
  • UKey的TokenID

基于UKey的2FA验证码生成流程如下:

  • 01: 用户将UKey连接客户端(一般需要将UKey查到PC机的USB插口,并在机器上安装关联驱动程序
  • 02-04: 用户打开登陆页面,并输入用户名/密码进行登录认证
  • 05-07: 服务端首先验证用户名&密码是否正确,成功后会在本地生成随机挑战码(验证码)并缓存,然后发送给客户端(登陆页)。
  • 08-10: 客户端会使用UKey驱动程序,并调用签名模块,基于UKey中用户的数字证书私钥,对该挑战码进行签名。

基于UKey的2FA验证流程如下:

  • 11: 客户端发送用户名、挑战码以及挑战码的签名值(注:这里根据实现,也可以不再发送挑战码,因为该挑战码由服务端生成并缓存)
  • 12: 服务端使用注册的UKey用户数字证书,对挑战码进行签名验证,通过则登陆成功。

常见2FA对比

2FA模式 主要代表 安全性 易用性
服务端模式 手机验证码,邮箱验证码 低 (未使用加密技术,容易被窃取) 高(无需额外软件或设备)
OTP Googule Authenticator,Microsoft Authenticator 中(使用了加密技术,客户端和服务端分开生成,可以不依赖于网络环境) 中 (需要安装手机App)
UKey U盾 高 (通过挑战码&数字签名方式进行认证,安全性很高) 低(需要额外的硬件设备,携带不方便)

从上述对比上看:

  • UKey模式虽然提供了最高的安全性,但由于易用性比较低,只有在政务、金融、军工等关键领域才会用到。(该方式也是密评推荐的方式)
  • OTP模式基于手机App,需要进行安装。安装后易用性与手机验证码基本相同,同时该方式可用性比较高。
  • 服务端模式(手机/邮箱验证码)未使用密码技术,安全性较低,但是由于该方式不依赖于额外软硬件设备,易用性也最高。

值得注意的是,不管是手机验证码、TOTP或U盾模式,都不能保证通信的安全,因此需要配合安全通信协议TLS才能保证2FA流程的安全性。TLS原理和应用可以参考之前的系列文章,传送门:
[TLS原理与实践]: https://www.cnblogs.com/informatics/p/17433116.html

总结

本文介绍了当前信息系统常用的双因素认证2FA进行了归类,并详细分析了不同类2FA的工作流程和主要原理,最后对常见2FA进行了对比分析。 希望本文能够对读者在遇到2FA选型或应用上有所帮助。

参考资料

标签:用户,验证码,认证,密码,2FA,应用,原理,服务端,客户端
From: https://www.cnblogs.com/informatics/p/17625253.html

相关文章

  • 每日一练 | 华为认证真题练习Day96
    1、下列协议中属于动态IGP路由协议的是?A.StaticB.BGPC.OSPFD.Direct2、路由器进行数据包转发时需要修改数据包中的目的IP地址。A.对B.错3、route-static10.0.2.2255.255.255.25510.0.12.2preference20,关于此命令说法正确的是?A.该路由一定会出现在路由表当中B.该路由的......
  • 网工内推 | 中高级网工,有金融网络维护经验,HCIP/CCNP认证优先
    01北京南天软件有限公司招聘岗位:中高级网络工程师职责描述:1、负责大型金融数据中心网络环境的交付、运维;2、负责大型金融数据中心网络设备的验收、安装、配置、管理;3、负责大型金融数据中心网络的应急,并协调原厂商解决设备运行过程中遇到的问题;任职要求:1、本科6年,专科8年以上及以......
  • MemoryFile 共享内存原理分析
    Android上层提供了一些内存共享工具类,比如MemoryFile。你使用过吗?知道它的实现原理吗?MemoryFile是Java层对Ashmem的一个封装,下面来一起学习MemoryFile,掌握它的使用姿势和底层原理。MemoryFile使用方法大致如下:「进程A中申请一块共享内存写入数据,并准备好文件描述符:」Mem......
  • 上网保护隐私(2)监控第三方应用的后台联网行为
    情景:我想使用第三方应用simpleScreenRecorder但是不清楚它会不会偷偷在联网传输我的数据。步骤:(1)以nat方式运行虚机ubuntu,使用静态ip192.168.43.103,并安装simpleScreenRecorder(2)在主机监听虚拟机ip sudotcpdumpsrc192.168.43.103-i网桥(3)启动被测应用ssr,观察监控结果tcpd......
  • 低代码开发工具:JVS轻应用之间如何实现数据的调用?
    在低代码开发平台中,如何实现应用之间的数据共享呢?最标准的方式是通过接口,本文介绍JVS轻应用如何实现将数据通过API输出、轻应用如何实现体内API数据的获取?实现方式如下图所示,不管是数据提供方,还是数据查询方,都通过逻辑引擎实现,通过逻辑对逻辑的使用方式,如下图所示:数据输出配置(A应用......
  • 塑料激光焊接机厂家镭拓浅谈塑料激光焊接技术在智能穿戴领域应用优势
    编辑:镭拓激光塑料焊接技术在近几年取得了非常快速的发展,尤其是医疗塑料以及汽车领域的应用可以说是非常成熟了。塑料激光焊接机除了可以应用于医疗类塑料器具和汽车塑料部件的加工之外,它在智能穿戴领域也是有着非常重要的应用。近几年随着科技技术的不断,各种功能丰富的智能穿戴设备......
  • LKT加密芯片-医疗行业应用简介
    医疗、美容行业设备具有设备研发周期长、产品审核准入门槛高,审核资质时间长等特点,一旦其产品出现仿制等问题将会给公司带来巨大的经济影响。LKT系列加密芯片可以有效保护用户产品安全起到防po解、防复制的作用,从而保障产品安全和公司利益。LKT加密芯片又是如何保障产品安全的呢?下......
  • 2023北京/上海/广州/深圳CSPM-3国标项目管理中级认证报名
    CSPM-3中级项目管理专业人员评价,是中国标准化协会(全国项目管理标准化技术委员会秘书处),面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才职业能力评价和激励机制的要求,培养我国项目管理领域复合型人才。 【证书含金量】 ·竞聘优先·......
  • 上海/成都/深圳DAMA-CDGA/CDGP数据治理认证8月20日开班
    DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业竞争能力。DAMA是数据管理方面的认证,帮助数据从业者提升......
  • 2023东莞/成都/深圳产品经理NPDP认证8月19日开班
    产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。  【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是全球范围内产品开发与管理专业人士最杰出的倡导者,协助个人、企业......