PAP认证和CHAP认证概述

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认证。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值