当前位置: 首页 > article >正文

6.1、认证技术基础与原理

目录

    • 认证概述
    • 认证原理
    • 单向认证
    • 基于挑战响应的认证
    • 认证应用 - PPP协议认证功能和CHAP
    • 双向认证
    • 第三方认证
    • 认证技术方法
    • Kerberos认证协议
    • kerberos优缺点分析
    • 其他认证技术

认证概述

认证技术的基础与原理认证一般由标识和鉴别两部分组成。标识代表实体对象的身份标志,比如说你的qq号,这就是标识,做认证的时候,用户名也是标识,标识能确保实体的唯一性和可辨别性,同时与实体存在强关联。标识一般由名称和标识ID来表示,通过唯一标识符可以代表我们的某个实体,这就是标识

鉴别是利用口令、电子签名、数字证书、令牌、生物特征、行为特征等等一些数字化的品质对实体所声称的属性进行识别验证的过程,说简单一点,就是输了用户名之后,我们还输个密码,密码就是用来鉴别的

鉴别凭证和认证依据,主要有四类,第一类所知道的秘密,比如说密码,你输个密码一二三四五六,通过你知道的秘密就能验证你的身份。所拥有的实物凭证,比如说UK,可以通过UK认证生物特征、指纹、虹膜。识别表现出来的一些行为特征,比如说你敲击键盘的速度或者敲击键盘的重量、步态等等,这些都是一些行为特征,AI通过关于人的一些步态,行走的一些姿态可以找出犯罪嫌疑人,这是行为特征

认证过程示意图,这是两个实体,你给我输入一个用户名或密码,然后这边就返回给你。如果是对的话,认证通过,不对的话,再重新输或者输多次之后给你锁定,这是认证的示意图
在这里插入图片描述

认证原理

认证机制是由三部分构成的,验证对象,认证协议和鉴别实体。验证对象是需要鉴别的实体,也称为声称者,说白了就客户端。

客户端要到服务端去认证,服务端就是鉴别实体,根据验证对象所提供的认证依据,给出身份的真实性或者属性的一些判断,本质上就是一个服务端,由服务端来判定,你认证通过还是不通过,然后我们的客户端跟服务端要通信,要有相关的认证协议,这是三部分

认证分类可以按照需要认证凭据的类型分成单因子认证,双因子认证,多因子认证,单因子认证就是只提供一个认证要素,比如输个密码就行了。双因素认证也叫双因子认证,比如说你输了密码之后还要求你提供一个短信验证码,比如说QQ号异地登录一般都会让你再提供短信认证。多因子认证,可以基于比如说三重四重的这种因子去做认证,多因子认证就是针对一些对安全性比较高的环境,比如说要你输入用户名密码,还要输入动态密码,还要指纹等等

按照我们认证双方角色和依赖的外部条件,可以分成单向认证,双向认证和第三方认证。单向认证就是服务端,只对我们的客户端进行认证。双向认证是彼此都要进行认证,我们常见的其实用的比较多的,就是单向认证,服务端认证你的身份

第三方认证就是有些时候我们做实名认证的时候,一般要求你要跳到微信去,或者跳到运营商,这个叫手机短信,因为微信是经过实名认证的,然后银行卡这端都也是身份认证,所以就相当于第三方认证了,它不好实名认证你,但是它让银行、腾讯来进行一个第三方认证

第三方认证整个过程挺复杂的,还可以根据认证利用的时间长度,分成一次性口令和持续认证,一次性口令简称otp

一次性口令简称otp,one time password用于保护口令的安全可以防止口令的重用攻击或者重放攻击。常见的一次性口令,比如说我们的短信认证码,还有一种就是S/Key口令

持续认证,连续身份认证,就是整个会话中,会对你的身份进行连续的检测,不间断的验证用户所具有的一些特性,就是你输了用户名密码之后,后面我要验证你敲击键盘的力道大小跟你平时一不一样

持续认证有很多种方式,比如说根据用户的一些行为模式,使用偏好,还有左右手按压的大小,手震,手臂大小、肌肉使用等等,这就是持续身份认知

零信任机制就是要求我们要持续的去为我们的用户做认证,以前可能输完一个密码之后,我认为你是张三,你有这个权利使用资源,你就随便用,现在零信任强调的就是一种持续检测,持续认证的过程

我对你是没有信任的,你虽然用户名密码对了,你进来之后你要干一些事情,我依旧需要对你的身份进行监测,持续的进行验证

按照这个依赖,就是认证双方的角色可以分成单向,双向和第三方认证

单向认证

单向认证,验证者对声称者进行单方面的鉴别,而声称者需要鉴别验证者的身份,就是服务端对客户端进行认证,大哥对小弟进行认证,小弟直接默认你是大哥,我不认为大哥是虚假的,所以我不对你进行认证,这就叫单向或者单方面认证,单向认证技术有两种,第一个叫基于共享秘密的,第二种是基于挑战响应的

第一种基于共享秘密认证,假设验证者和声称者都有一个共享秘密kab,ida为标识,整个过程如下
在这里插入图片描述

基于挑战响应的认证

在这里插入图片描述

认证应用 - PPP协议认证功能和CHAP

ppp协议有两种认证模式,第一种是pap,第二种是chap。pap就是非认证方发用户名和密码,如果这边存的用户密码一样,那就通过,如果不一样就拒绝,对应着共享密钥认证

第二种就是基于挑战的三次握手,主认证方,服务器端会给你发一个随机报文,这里面它用的是哈希算法,当然我们生成kab的过程可以用哈希算法、对称加密或者加密算法,发过来之后,双方去验证这个共享秘密

双向认证

双向认证,就认证过程中验证者、声称者,他们要互相鉴别彼此的身份,ssh就是a和b,既是声称者,也是验证者,实际上在常规的项目当中,单向认证可能会多一点,一般就是服务端要验证你的身份,大哥验证小弟,验证大哥的情况有,但是稍微少一点,双向认证

第三方认证

在这里插入图片描述
如果你用微信登录或者用手机号登录,默认相当于就是用腾讯和中国的几大运营商来实现,它充当了第三方来实现的实名认证

一共三方A、B、第三方,然后还有几个密钥,kpa表示a和p之间的一个共享密钥。kPB表示p和b之间的共享密钥。kab表示AB之间的共享密钥。一共七个过程

设a和b,各自生成随机数,为ra和rb。rb表示随机数,它是这个单词的缩写,随机数。有利于防止重放攻击。ida为a的身份标识相当于a的用户名,然后idb为b的标识。

认证过程如下第一步。实体a向第三方发送加密消息,然后kpA、Idb,ra就是用kpa加密的一个消息。kpa是a和p之间的共享密钥,所以这个消息移到p之后p是能解密的,解密之后它得到idb,然后还有一个ra。idb表示,你原来这个a用户想要跟b去通信,还有ra是一个随机数,那第三方收到这样的一个消息之后能够解密获取里面的这两个内容

因为它们之间有一个共享密钥,就是kpa和p是彼此都知道的,解密这个内容之后,它要生成两个消息用kpa去加密成ra,然后kab是a和b之间的一个共享密钥,相当于这共享密钥是由第三方通知的,在第二步通知的,生成这样的一个消息,然后还生成一个kpa发送到a,A能解密这两个消息当中的第一个,因为kpa是a和p之间的一个共享密钥,然后kPB是他们之间的,所以第一个消息这个东西到a是能解密的,然后kab虽然发到a了,但a解密不了。我们来看一下这个消息,到a之后a能解密kpa,解密它能得到ra随机数,最重要的是得到了一个kab,就是a和b之间通信的密钥

还得到了一个kPB,kPB这个东西a解密不了,实体a就把这个解密不了的kpb发给b,我原封不动的,从p这边到我,然后我再给你扔到b,b肯定可以解密,b解密最核心的得到,a原来要想跟我通信,而且我们之间的通信的密钥是kab,其实到了第三步

我们这个消息一发给b之后,按照最简单的原理来讲,到了这一步,最多下面再走一步,我们也就能够实现认证了,因为相当于我a和p进行了一个通信,然后p告诉了a,就是a要跟b通信的话,我们会用一个kab,a是已经知道kab了,然后你把这个东西再发给B,b也已经知道了kab,所以他们之间相当于有一个共享密钥。然后b把kab发给a或者他们双方就把kab交互,彼此有一个共享密钥,就实现身份认证了

通过前面的这些步骤,已经把这个kab发给了a,然后b把一个加密消息发给A,A传过来,然后b又能把kab给解密出来,他们双方的共享密钥已经生成了,他们直接通过kab已经实际上是能够认证a和b的身份了

我就直接把这个KB给你发过来了,这样是可以的,但是我们后面还搞了四五六七这么多步,因为我们前面提过了,虽然你有一个共享密钥,但你这共享密钥再往上发,是不安全的,那么我们就要继续进行,类似于基于挑战认证的过程,相当于给你重复一遍

第四步,就有点类似于我们前面讲的基于挑战认证,这里边用的哈希是用来加密的,对称加解密,实体b解密kpa,那这个kPB,ida,kab又来生成这个消息,然后发给a,a解密出来的就是一个kab,就是我要跟a通信的一个共享密钥,然后用kab来加密ida和随机数,加密之后发给实体a,加密这两个东西,然后实体a它有kab共享密钥,它已经有了,有了之后我来解密这个消息得到这个随机数之后,然后他再用这个来加密一下,生成一个共享密钥,发给我们的B,它又再来解密,解密消息解密出来之后检查rb的正确性,如果是正确的,那么实体a就通过认证了,代表b正确代表你的kab,我们两个都有一个相同的kab,如果两边的KB不相同,那么肯定rb这个解密出来是不对的,这就是它整体的认证过程

第一就是为什么我们不在AB之间交互的时候为什么不直接交互KB,这是为了密钥安全,所以我们要通过这种加密的方式去交互一些共享秘密

第二个为什么要引入随机数,为了防止重放攻击,还需要注意的就是这里边的kab跟我们前面讲的kab是不一样的,这里面的kab是a和b之间的一个共享密钥,它是一个密钥,而我们前面讲的kab是一个秘密。秘密相当于KB是等于加密算法或者是哈希算法生成了一段数字。这里面的kab是一个结果,是用哈希算法或者是用加密算法生成的一个结果

kab是一个密钥,就是一个密码。A和b之间交互的是共享密钥,来交换的一些认证消息,有点类似于他们交互的其实就是一个Mac,消息认证

第一步,主要就是a和p之间的交互,第二步是a和b之间的交互,b和p之间其实它们并没有信息交互

认证技术方法

最简单的口令认证,用户名密码,它的优点是简单,易于实现。缺点容易受到攻击,主要是针对口令认证的攻击,窃听、重放、中间人攻击,口令猜测,暴力破解等等

重放就是我使用过一次这个消息,再发出来再用,这叫重放攻击。解决重放攻击的方法主要有,第一个随机数,第二个加入时间戳,第三个一次性口令

本来你这个指令是执行一次的,现在我让你执行100次,重放攻击

安全措施,针对口令认证的安全措施,口令信息要加密存储,通过哈希去存储口令消息,要安全传输

用ssh加密传输口令认证协议要有抵抗攻击的能力,还有符合安全协议涉及的一些要求,口令的选择应该避免弱口令,像一二三四五六,八个一这种,不要弄

遵循口令生成的一些安全策略,同时对生成的口令进行安全强度的评测,通过一些漏洞扫描软件,去扫描评测一下你的这个口令是不是弱口令

第二个智能卡,智能卡就是一种带有智能存储芯片的集成电路,我们常见的身份证,银行卡,校园卡等等,它都是智能卡

生物特征常见的指纹,人脸,视网膜,语音等等都可以用来做身份认证

Kerberos认证协议

kerberos是一个认证协议,我们首先看一下kerberos,包含四个基本的实体,第一个kerberos的客户机就客户端,然后应用服务器

比如说这是一个WEB服务器,首先要到c服务器里边去做认证这个服务器,一般叫KDC,它是叫key distribution center叫密钥分发中心,它里面包含两个部分,就as和tgs。我们的体系里边有一个最牛逼的东西,叫kDC,密钥分发中心,密钥分发中心里面包含两个组件,第一个as,第二个tgs,as是认证服务器,为用户提供身份认证并提供tgs的会话密钥,就是你先经过认证,然后再到我们的下面一个叫tgs服务器去进行授权,身份认证通过之后,然后授予你相应的权利,所以tgs叫票据发放服务器,我们也把它叫做授权服务器,就是为申请服务的用户授予票据,就给你相应的权利,比如说领导来访,你可以访问的这个服务器里面资源就多一些,普通员工来,你就只能访问一些基础资源,所以本质上就是一个认证和授权的过程,只是它这个名字取得有点怪,叫as和tgs。as认证服务器,tgs叫授权服务器

kDC里面包含两个东西as和tgs,票据发放服务器本质就是一个授权服务器,发放票据,主要票据是用于安全的传递用户身份所需要的信息集合,它主要包含了客户方的实体名称、地址、时间戳、票据的生存时间、会话密钥等等内容

这个需要跟证书对比,我们体系它发的是票据,票据里边包含客户方实体名称、地址、时间戳、票据生存期和会话密钥等内容,证书里边包含用户的公钥以及CA签名,还有版本号等等,很多个字段

kerberos优缺点分析

kerberos优点,可以显著的减少用户密钥,密文暴露次数,因为你发了票据之后,后续你就不需要通过这个密钥去做认证了,这样可以有效减少攻击者对密文的一个积累。第二个可以实现单点认证,这个单点登录只要拿到了票据,只要票据没有过期,那么用户就可以访问我们的服务器,不必要再输入新的密码

其他认证技术

单点登录,比如说我这个单位有很多业务系统,我有邮件,还有我的一些产品、crm等等。以前传统的就是一个系统,我需要输用户名密码,一个系统,我需要输用户名密码,要输很多次,现在,我们单位可能有一个单点登录的网页,你输入一次用户名密码进去之后,你可以点,比如说这就是邮件系统,这就是CRM系统,然后这是文件系统,你直接点就进去了,这一点就进去了,就不需要再多次输入了,这就叫单点登录,在很多大型企业里面是比较常见的

SSO不足两个点,第一个要求我们的主机节点要解决时间同步的问题,第二个它不能够抵御拒绝服务攻击

要求主机节点要抵御拒绝服务攻击,就是它本身不能抵御,要求我们主机节点要能够抵御拒绝服务攻击

基于人机识别认证技术,主要就是比如说像幺二三零六那种,要让你去找一下图片,它主要是利用计算机求解问题的困难性,以区分计算机和人的操作,防止恶意的一些外挂,是人机识别,人机识别就是图形验证码

图形验证码,让你找一下哪个是火车,哪个是飞机

多因素认证,可以多种因素,多种因子去做组合,然后基于身份、基于行为的去做身份鉴别技术

比如说有异地登录告警,还有就是快速在线认证,使用的是公钥加密技术来提供强身份认证,它的私钥是保存在用户的设备当中的。只要公钥注册到在线服务,公钥发送到服务器,并与用户进行关联,私钥和有关本地身份认证的任何信息都不会离开这个设备。就有些单位他会发一个硬件设备,他把你的私钥写在里边,你可以通过这个设备干很多事情,但是也只能通过这个设备做,像公安里边,它会提供一些PDA,你看公安查酒驾或者干啥的,这有些叫移动警务通,他直接用这个设备就实现了私钥直接在里边,直接就实现认证了,后期就不需要频繁的输入用户名密码,但一些高安全的系统还是需要我们输入用户名密码的

相当于这个私钥是内置到我们用户的设备当中去的,这是能够提供快速的在线认证。这是关于其他的认证技术,最核心的还是单向认证,它里面的两组,还有第三方认证,单向认证里边的一个基于共享密钥的,还有一个基于挑战的


http://www.kler.cn/a/599649.html

相关文章:

  • 基于CentOS系统搭建Samba服务
  • 【第21章】亿级电商订单系统架构-详细设计
  • 常见框架漏洞—Shiro
  • 【大模型LLM第十四篇】Agent学习之anthropic-quickstarts Agent
  • Lisp语言的学习路线
  • 使用现有三自变量和腐蚀速率数据拟合高精度模型,并进行预测和自变量贡献度分析的一般步骤
  • 聊聊langchain4j的HTTP Client
  • 力扣刷题78. 子集
  • python 中match...case 和 C switch case区别
  • 前端传来的不同类型参数,后端 SpringMVC 怎么接收?
  • 【Unity Shader编程】之透明物体渲染
  • 【VUE】day07 路由
  • FFmpeg6.1.1 MSYS2+GCC 源码编译
  • 【Java SE】单例设计模式
  • ngx_http_core_server_name
  • RocketMQ 面试备战指南
  • 在 IntelliJIDEA中实现Spring Boot多实例运行:修改配置与批量启动详解
  • java实现coze平台鉴权+工作流调用(踩坑记录)
  • Springboot的jak安装与配置教程
  • java版嘎嘎快充玉阳软件互联互通中电联云快充协议充电桩铁塔协议汽车单车一体充电系统源码uniapp