PAPCHAP协议是目前的在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. 结语

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

转载于:https://blog.51cto.com/1006711/533668

ppp和chap的区别相关推荐

  1. 华为ccie网络工程师中技术要点PPP中PAP和CHAP的区别

    华为ccie网络工程师中技术要点PPP中PAP和CHAP的区别,PPP(点到点协议)协议:是为在同等单元之间传输数据包这样的简单链路设计的链路层协议.这种链路提供全双工操作,并按照顺序传递数据包.设计 ...

  2. PAP和CHAP的区别

    PAP和CHAP的区别: 区别在于认证过程,PAP是简单认证,明文传送,客户端直接发送包含用户名/口令的认证请求,服务器端处理并回应.而CHAP是加密认证,先由服务器端给客户端发送一个随机码chall ...

  3. 1、R5为ISP,只能进行ip地址配置:其所有接口配置为公有ip地切 2、R1与R5间使用PPP的PAP认证,R5为主认证方;R2与R5间使用PPP的chap认证 R5为主认证方;R3与R5间使用H

    实验报告 1.R5为ISP,只能进行ip地址配置:其所有接口配置为公有ip地切 2.R1与R5间使用PPP的PAP认证,R5为主认证方;R2与R5间使用PPP的chap认证 R5为主认证方;R3与R5 ...

  4. CISCO广域网协议PPP之chap认证过程

    ppp chap认证挑战包(challenge)结构图 第一步是被认证放发起认证请求 user dials in(用户拨入请求) 第二步:认证方 处理拨入请求并发起挑战包(challenge)挑战包由 ...

  5. 广域网之PPP(CHAP认证)

    文章目录 实验拓扑图: 实验配置思路: 实验摘要重点命令: 实验详细配置步骤: 配置接口IP地址 配置AAA用户名和密码 在接口下开启CHAP认证 客户端匹配用户名和密码 查看报文信息 实验拓扑图: ...

  6. MGRE PPP PAP CHAP综合小实验

    首先我们根据如图搭建拓扑结构并标明各网段信息 我们分别给R1和R2之间的串线设置HDLC封装 ,并配置相关IP R1 R2 接着我们给R2 和 R3之间的串线进行ppp封装 pap认证 并配置相关IP ...

  7. 【实验】广域网点到点协议PPP PAP CHAP的双向验证、单项认证

    测试要求:shutdown s0接口再no shut s0接口后ping 12.1.1.1 R1: hostname R1username R2 password ciscointerface Ser ...

  8. 勿以善小而不为--PPP认证之CHAP与PAP的实现与区别

    PAP和CHAP是PPP的两种不同的链路认证方式. PAP只需进行一次认证,并且只在链路初始状态时执行.而且用户名与密码的传送方式是明文的. CHAP采用周期性的验证,并且认证内容经过MD5加密后再传 ...

  9. 思科-实验10:路由器接口 PPP 协议封装和 PAP、CHAP 验证配置

    [实验内容] (1) 选择两台C2811 路由器,分别关闭电源后添加WIC-2T 模块,添加位置为插槽0/接口适配器0(提示:在4个插槽中右下角的位置).开启电源之后使用Serial 电缆将两台路由器 ...

最新文章

  1. POJ1149-PIGS
  2. docker 镜像上传至hub时报错,提示:denied: requested access to the resource is denied
  3. vue+axios天气查询——天知道效果展示及源码分析
  4. do{...}while(0) 的意义和用法
  5. 在WPF的DATAGRID中快速点击出现在ADDNEW或EDITITEM事务过程不允许DEFERREFRESH
  6. 心动的本质是什么_《心动的信号3》:在“烟火气”里嗑糖,素人恋爱究竟有多上头?...
  7. python 进行一元线性回归并输出相关结果_Python实现一元线性回归实战
  8. Mybatis多表模型
  9. 【华为云技术分享】人脸识别算法的训练之路(下)
  10. window自动备件软件
  11. 远程访问用户 Kindle---通过电子书实现控制
  12. python二手房使用教程_python爬取安居客二手房网站数据方法分享
  13. 利用阿里云oss实现上传视频和图片功能
  14. 计算机应用高级教程,计算机应用高级教程教学大纲.doc
  15. ElasticSearch集群状态异常(Red、Yellow)原因分析
  16. C语言单链表讲解(上):有表头链表的使用
  17. Python数据分析-pandas-数据处理
  18. 用python的嵌套if结构开发一个输入(input)计税计算器
  19. 疲劳检测,基于视频的疲劳检测、脱岗、打呵欠、闭眼、点头等检测
  20. codemirror 只读模式(vue)

热门文章

  1. hal 双串口同时接收丢失数据_【STM32Cube_06】使用USART发送和接收数据(查询模式)...
  2. 用c语言程序算自己的年龄,新手编的小程序:计算年龄和出生后经历的天数的小程序...
  3. python目录结构生成库,使用CMake构建平台无关的目录结构
  4. mysql查看表描述_MySQL表记录操作介绍(重点介绍查询操作)
  5. 赢在 CSDN:我在 CSDN 的成长,“长风破浪会有时”,如何保证自己有持续写作的动力?
  6. Springboot源码——应用程序上下文分析
  7. 蓝桥杯 历届试题 危险系数
  8. 线程池拒绝策略 开发中常用什么策略_面试官:说说你知道多少种线程池拒绝策略...
  9. Python拾遗1:collections、itertools和内存io
  10. android strictmode有什么作用,Android 性能优化 之 StrictMode