PAP认证和CHAP认证概述

2023-11-01

http://network.51cto.com/art/201109/291563.htm

PAP认证过程非常简单,是二次握手机制,而CHAP认证过程比较复杂,是三次握手机制,下面就让我们来看一下两种具体的认证过程。

AD:

一、PAP认证协议(PasswordAuthenticationProtocol,口令认证协议):

PAP认证过程非常简单,二次握手机制。

使用明文格式发送用户名和密码。

发起方为被认证方,可以做无限次的尝试(暴力破解)。

只在链路建立的阶段进行PAP认证,一旦链路建立成功将不再进行认证检测。

目前在PPPOE拨号环境中用的比较常见。

PAP认证过程:

PAP认证过程图


首先被认证方向主认证方发送认证请求(包含用户名和密码),主认证方接到认证请求,再根据被认证方发送来的用户名去到自己的数据库认证用户名密码是否正确,如果密码正确,PAP认证通过,如果用户名密码错误,PAP认证未通过。

二、CHAP认证协议(ChallengeHandshakeAuthenticationProtocol,质询握手认证协议)

CHAP认证过程比较复杂,三次握手机制。

使用密文格式发送CHAP认证信息。

由认证方发起CHAP认证,有效避免暴力破解。

在链路建立成功后具有再次认证检测机制。

目前在企业网的远程接入环境中用的比较常见。

CHAP认证过程:

CHAP认证第一步:主认证方发送挑战信息【01(此报文为认证请求)、id(此认证的序列号)、随机数据、主认证方认证用户名】,被认证方接收到挑战信息,根据接收到主认证方的认证用户名到自己本地的数据库中查找对应的密码(如果没有设密码就用默认的密码),查到密码再结合主认证方发来的id和随机数据根据MD5算法算出一个Hash值。

CHAP认证过程图:


CHAP认证第二步:被认证方回复认证请求,认证请求里面包括【02(此报文为CHAP认证响应报文)、id(与认证请求中的id相同)、Hash值、被认证方的认证用户名】,主认证方处理挑战的响应信息,根据被认证方发来的认证用户名,主认证方在本地数据库中查找被认证方对应的密码(口令)结合id找到先前保存的随机数据和id根据MD5算法算出一个Hash值,与被认证方得到的Hash值做比较,如果一致,则认证通过,如果不一致,则认证不通过。

CHAP认证过程图:


CHAP认证第三步:认证方告知被认证方认证是否通过。

CHAP认证过程图:


CHAP认证和PAP认证的过程如上所述,这两种认证协议都被PPP协议支持,大家可以搜索相关的内容辅助理解这两个认证过程。



---------------------------------------------------------------------------------------------------------------

另一篇

PAP和CHAP协议介绍

http://blog.csdn.net/oicq2008/article/details/4447663

1. 前言
PAP和CHAP协议是目前的在PPP(MODEM或ADSL拨号)中普遍使用的认证协议,CHAP在RFC1994中定义,是一种挑战响应式协议,双方共享的口令信息不用在通信中传输;PAP在RFC1334中定义,是一种简单的明文用户名/口令认证方式。

2. PAP
PAP全称为:Password Authentication Protocol(口令认证协议),是PPP中的基本认证协议。PAP就是普通的口令认证,要求将密钥信息在通信信道中明文传输,因此容易被sniffer监听而泄漏。

PAP协商选项格式:
0                1                2                3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type    | Length     |     Authentication-Protocol |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

对于PAP,参数为:
Type = 3,Length = 4,Authentication-Protocol = 0xc023(PAP)

PAP数据包格式:
0                1                2                3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Code    |   Identifier |          Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+

Code:1字节,表示PAP包的类型
      1    认证请求
      2    认证确认
      3    认证失败
Identifier:ID号,1字节,辅助匹配请求和回应
Length:2字节,表示整个PAP数据的长度,包括Code, Identifier, Length和
          Data字段。
Data:可能是0字节或多个字节,具体格式由Code字段决定,成功或失败类型包中长
      度可能为0。

对于认证请求(Code = 1)类型,PAP包格式为:
0                1                2                3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Code    |   Identifier |          Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Peer-ID Length|   Peer-Id ...
+-+-+-+-+-+-+-+-+-+-+-+-+
| Passwd-Length |   Password   ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+

Code(Code = 1),Identifier和Length字段含义如前面所述,响应包的Identifier字段值和挑战包中的相同,Identifier字段必须每次认证时改变。

Peer-ID-Length:长度1个字节,表示Peer-ID域的长度

Peer-ID:可为0到多个字节长,表示认证对方的名称。

Passwd-Length:长度1个字节,表示Password域的长度

Password:可为0到多个字节长,表示认证的口令,明文

对于认证确认(Code = 2)和认证失败(Code = 3)类型,PAP包格式为:

0                1                2                3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Code    |   Identifier |          Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Msg-Length |   Message   ...
+-+-+-+-+-+-+-+-+-+-+-+-+-

其中:
Code,Identifier和Length字段含义如前面所述,响应包的Identifier字段值和认证请求包中的相同。

Msg-Length:长度1个字节,表示Message域的长度

Message:可为0到多个字节长,具体内容由应用实际实现时确定,RFC中没有限制其
   内容,推荐使用可读的ASCII字符表示信息内容。

3. CHAP

CHAP全称为:Challenge Handshake Authentication Protocol(挑战握手认证协议),主要就是针对PPP的,除了在拨号开始时使用外,还可以在连接建立后的任何时刻使用。

CHAP 协议基本过程是认证者先发送一个随机挑战信息给对方,接收方根据此挑战信息和共享的密钥信息,使用单向HASH函数计算出响应值,然后发送给认证者,认证 者也进行相同的计算,验证自己的计算结果和接收到的结果是否一致,一致则认证通过,否则认证失败。这种认证方法的优点即在于密钥信息不需要在通信信道中发 送,而且每次认证所交换的信息都不一样,可以很有效地避免监听攻击。

CHAP缺点:密钥必须是明文信息进行保存,而且不能防止中间人攻击。

使用CHAP的安全性除了本地密钥的安全性外,网络上的安全性在于挑战信息的长度、随机性和单向HASH算法的可靠性。

CHAP选项格式:
0                1                2                3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type    | Length     |     Authentication-Protocol |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Algorithm |
+-+-+-+-+-+-+-+-+

对于CHAP,参数固定为:

Type = 3,Length = 5,Authentication-Protocol = 0xc223(CHAP),Algorithm = 5 (MD5)

CHAP数据包格式:
0                1                2                3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Code    |   Identifier |          Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+

Code:1字节,表示CHAP包的类型
      1    挑战
      2    响应
      3    成功
      4    失败

Identifier:ID号,1字节,辅助匹配挑战、响应和回答,每次使用CHAP时必须改变

Length:2字节,表示整个CHAP数据的长度,包括Code, Identifier, Length和
          Data字段。

Data:可能是0字节或多个字节,具体格式由Code字段决定,成功或失败类型包中长度
      可能为0

对于挑战(Code = 1)和响应(Code = 2)类型,CHAP包格式为
0                1                2                3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Code    |   Identifier |          Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Value-Size |   Value ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Name ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

其中:
Code,Identifier和Length字段含义如前面所述,响应包的Identifier字段值和挑战包中的相同。

Value-Size:此字段1字节表示Value的长度

Value:至少是一个字节,可变长,按网络序传输,挑战/响应信息在此字段中说明,
      挑战信息必须是随机的,在每次认证时改变,挑战信息是由应用在实际实现
      中自己定义的,RFC中并没有规定挑战信息的具体格式;

响应值按下面的公式进行计算:
   Response=HASH(Identifier+secret+Challenge)

其中“+”号表示将各数据在内存中串起来,其中HASH算法可以使用MD5,所以计算出来的HASH值是固定的,16字节长。

   Name:至少一个字节,用来标志所传的这个包,必须是以'/0'或“/r/n”结束,
       Name字段的长度可根据Length和Value-Size计算出来。

对于成功(Code = 3)或失败(Code = 4)类型
0                1                2                3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Code    |   Identifier |          Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Message   ...
+-+-+-+-+-+-+-+-+-+-+-+-+-

Code,Identifier和Length字段含义如前面所述,Identifier字段和挑战/响应信息一致。

Message可以是0字节,也可以是多个字节,内容可以根据实际应用自己确定。

4. 结语

PAP和CHAP在目前的PPP应用中都在使用,CHAP相对要复杂一些,但安全性也高一些。在PPP具体实现中通常是同时使用,在Linux下PPP的实现中,如果服务器要求的PAP认证失败,会再次要求用CHAP认证。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PAP认证和CHAP认证概述 的相关文章

  • 基于量子遗传算法的函数寻优算法(matlab实现)

    8 1 理论基础 8 1 1 量子遗传算法概述 量子遗传算法 quantum genetic algorithm QGA 是量子计算与遗传算法相结合的产物 是一种新发展起来的概率进化算法 遗传算法是处理复杂优化问题的一种方法 其基本思想是模
  • Java中多线程向mysql插入同一条数据冲突问题

    目的 Java中多线程向mysql插入同一条数据冲突问题 环境 系统 win10 环境 idea 201901 一 问题 程序中会使用多线程读写数据库 在同一时刻多个线程插入相同主键的相同数据时 会直接报错 二 规避办法 由于需求是多个线程
  • 【Spring】Spring Security OAuth2 JWT 认证

    1 概述 Spring Security OAuth2 JWT 认证服务器配置 Spring Security OAuth2 JWT 资源服务器配置 Spring Security OAuth2 Redis 模式下认证服务器 Spri
  • RFID开发笔记 Alien阅读器文档

    1 开机使用serial connect 完成boot后使用TCP IP协议与主机通信 2 TagList 是一个活跃标签的列表 这里活跃的含义是在一个间隔里被监听到 如果一个标签之前没有被监听到 而在当前的 间隔里被监听到了 那么就将这个
  • 基于LSTM的诗词生成

    文章目录 前言 一 数据集介绍 二 实验代码 1 随机诗词生成 2 藏头诗生成 三 实验结果 1 随机诗词生成结果 2 藏头诗生成结果 总结 前言 本文的主要内容是基于LSTM的诗词生成 文中包括数据集的介绍 实验代码以及运行结果等 该实验
  • 2023【软件测试】面试题合集整理打包!大放送!!!

    跳槽求职 准备好一场面试不仅需要在简历上多下功夫 还需要为面试问答做好充足的准备 以下是 本人 从面试经验中收集的 然后分门别类整理了这套面试题 很具备参考性 毕竟都是企业真实面试题目 接下来 针对以下知识类型列出具体的面试点 其中包括笔试
  • 判断两个对象数组是否有相同元素,对象数组合并去重

    let arr name cat sex 0 name dog sex 0 name bat sex 0 let arr2 name cat sex 1 name dog sex 0 一 循环判断arr与arr2是否有相同元素 相同的添加i
  • 网络性能测试工具:iperf3

    一 iperf3简介 iperf3是一个网络性能测试工具 iperf3下载地址 iperf可以测试TCP和UDP带宽质量 iperf可以测量最大TCP带宽 具有多种参数和UDP特性 iperf可以报告带宽 延迟抖动和数据包丢失 iperf3
  • html中after伪类原理,理解:Before和:After伪元素

    CSS样式表的主要作用是修饰Web页面上的HTML标记 但有时候 为了实现某个效果而往页面里反复添加某个HTML标记很繁琐 或者是显得多余 或者是由于某种原因而做不到 这就是CSS伪元素 Pseudo Element 可以发挥作用的地方 所
  • 第二回:艺术画笔见乾坤

    文章目录 第二回 艺术画笔见乾坤 一 概述 1 matplotlib的三层api 2 Artist的分类 二 基本元素 primitives 1 2DLines a 如何设置Line2D的属性 b 如何绘制lines 2 patches a
  • Gitl用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner 解释

    Gitl用户在组中有五种权限 Guest Reporter Developer Master Owner 解释 Guest 可以创建issue 发表评论 不能读写版本库 Reporter 可以克隆代码 不能提交 QA PM可以赋予这个权限
  • 遥感图像语义分割比赛整理

    好久没有写博客了 最近有两篇论文的投稿 到年前就没啥时间 寒假期间参加了一个遥感图像分割的比赛 一次不是很成功的参赛 第一次参加这种比赛吧 过程十分坎坷 本来就是在初赛ddl前10天才找到队友 然后在成功组队的第三天 被队友鸽了 只剩下我c
  • 打破传统降噪技术 看网易云信在语音降噪的实践应用

    导读 随着音视频会议 娱乐互动直播 在线教育产品的火热发展 产品中令人愉悦的音效音质体验是必不可少的 文 飒飒 网易云信音视频算法工程师 但在音视频实时通信中 难免会遇到各种我们不希望出现的声音 例如电流声 键盘敲击声 嘈杂声等 这些统称为

随机推荐

  • mysql的一些操作

    修改mysql的字符集 在安装mysql5 0时可以设置好mysql的字符集 一般使用utf8的字符集 1 查看建立表 tablename 的sql语句 Show create table tablename 查看建立表 tablename
  • R数据类型

    2 2 1 向量向量是用于存储数值型 字符型或逻辑型数据的一维数组 执行组合功能的函数c 可用来创建向量 各类向量如下例所示 a lt c 1 2 5 3 6 2 4 b lt c one two three c lt c TRUE TRU
  • 多项式全家福(缺插值和点值)

    文章目录 写法 vector写有什么好处 vector写的时候注意什么 Dft 求逆 开二次根 取模 对数 前置技能 1 复合函数求导 2 ln函数求导 指数 前置技能 牛顿迭代 模板 写法 vector写有什么好处 1 分治NTT的时候不
  • 爬虫已经凉凉,再不学点数据分析,你真的Out了!

    不论你是运营 金融 产品 开发 数据分析能力不仅能够助力个人专业能力的提升 也可更加了解产品 在职场上走得更远 但市面上数据分析课普遍存在以下问题 乱 少 贵 所以 只要299的数据分析就业班 来了 价格优势 首期1折价仅需299元 内容全
  • [嵌入式开发模块]DS3231时钟芯片 驱动程序

    刚刚写完DS3231时钟芯片的驱动程序 这里开源出来供大家使用 需要的自取 先简单介绍下这个芯片 然后直接给驱动代码以及示例代码 DS3231简介 简介 DS3231是一款低成本 高精度I2C实时时钟 RTC 具有集成的温补晶体振荡器 TC
  • Java内存模型

    一 CPU的缓存结构 我们知道CPU的运算速度是很快的 因为从磁盘读取数据的速度严重影响着效率 所以才有了内存 但是即便是这样 内存的性能也远远跟不上CPU的运行速度 所以CPU的设计者开始在内部加入 高速缓存 SRAM 来解决CPU运算速
  • CPU性能测试分析MIPS、DMIPS

    一 what MIPS million instruction per second 表示每秒多少百万条指令 如 10MIPS 表示每秒一千万条指令 MIPS MHz 表示 CPU 在每 1MHz 的运行速度下可以执行多少个MIPS 如 1
  • 367W字!京东商城Java架构师设计的亿级高并发秒杀手抄笔记

    京东商城的亿级高并发秒杀系统到底是怎么设计的 我如果也想做一个电商APP该如何下手 带着这些问题 今天你将会在我这篇文章中找到答案 本篇将会从系统架构设计基本入门 数据库 缓存 消息队列 分布式服务 维护 实战 实操 这几个大的方面进行深入
  • Logstash将数据导入至MYSQL

    Logstash 版本 6 2 4 Logstash 经常做的事情 是将日志文件进行解析 并且导入至 ElasticSearch 中 但是目前碰到的问题是 怎么将数据导入至 DB 中 比如 MYSQL 这就需要下面这个神器了 JDBC ou
  • Ceph入门到静态-deep scrub 深度清理处理

    9 6 洗刷 REPORT DOCUMENTATION BUG 除了为对象创建多个副本外 Ceph 还可通过洗刷归置组来确保数据完整性 请参见第 1 3 2 节 归置组 了解有关归置组的详细信息 Ceph 的洗刷类似于在对象存储层运行 fs
  • 云计算的基础设施服务

    云计算 企业实施手册 中将云计算的基础设施即服务划分为3个类别 服务器服务 存储服务和网络连接服务 服务提供商可能会提供虚拟服务器实例 在这些实例上 用户可以安装和运行一个自定义的映像 持久性的存储是一种单独的服务 客户可以单独购买 最后
  • 【C语言】程序环境和预处理

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 一 编程常见的错误 二 程序的翻译环境和运行环境 1 翻译环境
  • 文字、字母以及数字的换行不换行问题总结

    实现页面的文字 字母的展示效果的时候 相信大家都会遇到过一些这样的要求 文字不能换行 要强制文字一行展示 或者是 字母不会自动换行 需要实现可以自动换行断句 等等诸如此类的要求 现在就这个文字 字母换不换行的问题 说说这三个css属性的巧妙
  • 产品冷思考:大而全or小而美如何选择?

    顾城诗曰 黑夜给了我黑色的眼睛 我却用它寻找光明 我喜欢黑夜 因为此时远离尘世的嘈杂 追求内心的宁静 躲进黑暗的角落里才真正的洞察内心 作为冒牌的产品经理 褪去一天的疲惫 没有繁琐的事务 不再面红耳赤的争论 不用违心的妥协 吹着凉风 冷静的
  • 请你说一下行级锁和表级锁的区别(或表级锁和行级锁的区别)

    本旨在学习记录 内容源自JavaGuide 作者在此基础上进行补充说明 整理论述 使其能以一种更为逻辑地清晰地方式表达出 请你说一下行级锁和表级锁的区别 的理解 更多适应于java面试回答 亦可作对请你说一下自己对行级锁和表级锁的简要了解
  • socket套接字与TCP连接

    如何标识一个TCP连接 对于TCP协议 成功建立一个新的链接 需要保证该TCPl连接中四个要素组合体的唯一性 客户端的IP 客户端的port 服务器端的IP 服务器端的port 服务器端的同一个IP和port 可以和同一个客户端的多个不同端
  • Python 数据处理之柱状图--Echarts

    一 读取数据并写入excel coding utf 8 import xlsxwriter def add series i j len data 0 1 chart col add series 这里的sheet1是默认的值 因为我们在新
  • 关于谷歌chrome浏览器以及360极速浏览器摄像头无法使用(摄像头权限)问题。

    问题描述 关于谷歌chrome浏览器以及360极速浏览器摄像头无法使用 摄像头权限 问题 在疫情期间 很多企业无法开展线下笔试 大多采用线上笔试的方法 当下两个主流的笔试网站 牛客网以及赛码网 企业会在这两个网站发布考试链接 通常牛客网可以
  • MySQL优化派生表_sql优化-派生表与inner-join

    首先来说明一下派生表 外部的表查询的结果集是从子查询中生成的 如下形式 select from select dt 如上形式中括号中的查询的结果作为外面select语句的查询源 派生表必须指定别名 因此后面的dt必须指定 派生表和临时表差不
  • PAP认证和CHAP认证概述

    http network 51cto com art 201109 291563 htm PAP认证过程非常简单 是二次握手机制 而CHAP认证过程比较复杂 是三次握手机制 下面就让我们来看一下两种具体的认证过程 AD 一 PAP认证协议