美文网首页
身份认证之双因素认证 2FA

身份认证之双因素认证 2FA

作者: 雇个城管打天下 | 来源:发表于2021-02-20 09:20 被阅读0次
image

身份认证

这里所说的身份认证,指的是狭义上的在计算机及其网络系统中确认操作者身份的过程,从而确定用户是否具有访问或操作某种资源的权限。

image

之所以要在互联网中进行身份认证,是为了防止攻击者假冒你的身份在系统中进行不利于你的操作。试想一下,万一哪天早晨起来你发现你的支付宝账号被盗了,你余额宝里的钱全没了,那岂不是亏大了。

只不过,和现实世界不同的是,网络世界中一切信息都是用一组特定的数据来表示的,计算机只能识别用户的数字身份,所以对用户的授权本质上就是针对用户数字身份的授权

因此,如何保证操作者的物理身份和数字身份相对应,就成了一个至关重要的议题了,身份认证也因此在互联网世界中起着举足轻重的作用了。本文将会介绍目前很多网站常用的一种方式——双因素认证(也叫两步验证,英语:Two-factor authentication,缩写为 2FA)。

双因素认证 2FA

虽然网络世界和真实世界对于身份的表示不尽相同,但是对于身份认证的手段与经验是可以相互借鉴的。在真实世界,对用户的身份认证基本依据可以分为这三种:

image

上述三种认证依据被称为三种「因素」(factor)。因素越多,证明力就越强,身份就越可靠。

因此,在网络世界中,为了达到更高的身份认证安全性,某些场景会将上面 3 种挑选 2 种混合使用,即双因素认证。

在支付宝还没有在中华大地普及的时候,去银行通常需要准备一个叫「U 盾」的东西,在使用网上银行时,用户需要先插上 U 盾,然后再输入密码才能登录网上银行。在这一操作中,U 盾(you have)+密码(you know)这两种因素组合在一起就构成了一个双因素认证。

只是后来,随着移动互联网的普及,手机渐渐成为最离不开人身边的物品了,于是传统的「U 盾+密码」的组合方案就被「手机+密码」的组合替代了。

现如今,短信验证码在国内已经成为使用最广泛的两步验证方法之一了,虽然操作方便,不需要安装额外的 APP,但是验证码的下发依赖网络和运营商信号,有被窃听的风险。试想一下,如果这种验证码的获取不需要依赖运营商和网络,哪怕手机处于飞行模式也可以获取验证码,那么安全性是不是就得到提升了?

而这也就是下面将要说的 TOTP,即“基于时间的一次性密码(Time-based One-time Password)”。这是目前公认的可靠解决方案,已被纳入国际标准。

TOTP

流程

TOTP 的流程如下:

  1. 服务器随机生成一个的密钥,并且把这个密钥保存在数据库中。
  2. 服务端将该密钥下发,通常是在页面上显示一个二维码,内容中包含密钥。
  3. 客户端扫描二维码,把密钥保存在客户端。
  4. 客户端每 30 秒使用密钥和时间戳通过 TOTP 算法生成一个 6 位数字的一次性密码

其实利用 TOTP 验证的流程很简单,这里也只是介绍,如果想深入了解 TOTP 算法的具体实现过程,可以参考 👉 TOTP: Time-Based One-Time Password Algorithm

通过这种方式生成一次性验证码,除去第一次获取服务器下发的密钥外,对网络并无其他要求了,这样即使是在离线情况下也可以使用,而且由于由于这种动态生成的密码通常只会存在 30s,安全性也得到了较大的提升。

只是在实际过程中,肯定要额外考虑一些情况,比如如果有人想要暴力破解验证码时,我们可以对验证的错误次数进行限制;抑或是手机端时间和服务器时间不同步,我们需要通过算法的方式兼容服务器时间的前后 30s,从而有效的避免细微时间上差异而导致的验证失败。

使用现状

image

目前 TOTP 验证 App 主要分为两类:“独占类”和“开放类”。所谓独占类指的是只支持自家账户登录的两步验证,比如 QQ 安全中心、Steam 验证令牌等。开放类则是一个纯粹的两步验证 App,通过一个 App 去作为多个网站的验证器,例如 Google authenticator 就是一个开源的基于 TOTP 原理实现的一个生成一次性密码的工具。

Google Play Store 上就有许多第三方的基于 TOTP 原理实现的一次性验证码工具,只是由于国内用户使用习惯的问题,除非在一些特殊场合,例如找回密码时会用到 TOTP 验证外,其他大多数情况还是会使用短信验证码的方式,这也算国内外使用习惯的差异了。

总结

image

总的来说,基于 TOTP 机制的两步验证 APP 有着比短信验证码高得多的安全性和相媲美的便利性,是一种能保障用户财产安全的工具。只是在登录时会多一步,费时且麻烦,可能会引起用户的不适。只是在重要数据面前,还是尽量使用两步验证吧,不然和 AntDesign 一样丢了代码库可就不好了。

以上就是本文的全部内容了,新年已到,想必大家也都已经复工了,在这里祝大家新年快乐,牛年大吉 🐂。如果你觉得我的文章对你有所帮助,还希望在新的一年里可以继续支持「01 二进制」,你们的支持是我更新原创的最大动力!

相关文章

  • 双因素认证(2FA)工作原理简介

    一、双因素认证 什么是双因素认证(Two-factor authentication,简称 2FA) 解释一(引自...

  • 身份认证之双因素认证 2FA

    身份认证 这里所说的身份认证,指的是狭义上的在计算机及其网络系统中确认操作者身份的过程,从而确定用户是否具有访问或...

  • 一次解决FileZilla传输文件夹反复要求双因素认证问题

    题记:2FA(双因素认证)是网络安全必不可少的防护措施,许多机构在登录时要求进行双因素认证,这样就给local-t...

  • 双因子认证

    双因子认证简介 双因子认证英文简称2FA(two-factor authentication),指互不相关的两个因...

  • 身份验证

    身份验证的分类传统的账号密码的身份验证双因素(2FA)认证通过你所知道再加上你所拥有的,这两个要素组合到一起才能发...

  • 双因素认证(2FA)教程

    姓名:姚丽冰 学号:16050120089 原文链接 www.ruanyifeng.com 【嵌牛导读】:所谓认证...

  • Golang 2FA双因素认证

    原文 https://mojotv.cn/go/golang-2fa 1. 前言 双重认证(英语:Two-fact...

  • java 双因素认证(2FA)demo

    很早就知道有这个东西了,一直不知道是怎么实现的.比如 QQ 安全中心的密钥,U盾之类的.今天看到阮一峰老师的博客才...

  • [接口测试_B] 11 requests的身份认证方式

    requests提供多种身份认证方式,包括基本身份认证、netrc 认证、摘要式身份认证、OAuth 1 认证、O...

  • 总结

    身份认证 身份认证的基本方式基本方式可以基于下述一个或几个因素的组合所知(Knowledge):即用户所知道的或所...

网友评论

      本文标题:身份认证之双因素认证 2FA

      本文链接:https://www.haomeiwen.com/subject/idltfltx.html