sans x frisk:锐捷认证原理(转的)

来源:百度文库 编辑:偶看新闻 时间:2024/05/05 16:07:09

1 序言

 

网络的认证接入一直都是市场比较关注的问题,目前用得比较多的认证协议有PPPoE, 802.1X等。而锐捷认证协议就是以802.1X为基础进行修改扩展的。本文主要关注的是该协议的自身安全性和协议实现的安全性,实验环境为广州大学的校园网。

 

在此之前,已经有人指出了由于实现上的出错,导致多台相同MAC地址的机器只要其中一台成功通过了认证协议,就都可以同时正常访问网络。进一步地,我们指出了,同样是由于实现上的问题,导致网络中没有通过认证的机器仍然获得对网络的部分访问能力。

 

2 广大锐捷认证协议

 

2.1 802.1X协议

 

通过前面的介绍,我们知道广大的锐捷认证协议是基于802.1X扩展的私有协议,因此在研究之前必须先了解清楚标准的802.1X协议。具体可以参考RFC 3748,下面只给出简单的协议描述。

 

认证过程简述:

 

   1. 主机向服务器(多播或广播地址)发送EAPOL-Start

 

   2. 服务器向主机发送EAP-REQUEST-Identity要求验证身份的请求

 

   3. 主机向服务器发送EAP-RESPONSE-Identity回应

 

   4. 服务器向主机发送EAP-REQUEST-MD5_Challenge要求验证密码的MD5校验值

 

   5. 主机向服务器发送EAP-RESPONSE-MD5_Challenge回应

 

   6. 服务器向主机发送EAP-Success

 

   7. 保持连接的通信...

 

 

 

当然这只是一般过程,如果在任何时候服务器发来EAP-Failure数据包,都表示整个认证过程终止。在以太网中,EAP协议当然也是通过以太网帧的格式来传送,帧类型为0x888e,在基于pcap的抓包程序中,可使用"ether proto 0x888e"来抓取。当用作802.1x应答帧时,常使用802.1x分配的多播地址01-80-c2-00-00-03作为目的地址。

 

EAP协议不仅可用于本文关注的以太网环境中,还可在无线WLAN、令牌环网中应用,而这些链路帧是各不相同的,这就是为什么有EAPOL类型的数据帧,用以抽象EAP协议报文。

 

EAPOL-报文结构:(byte)

 

0-13

 

14

 

15

 

16-17

 

18-

 

Ethernet-Header

 

a:EAPOL 协议版本

 

b:EAPOL 报文类型

 

c:EAPOL 帧长度

 

Packet Body

 

 

 

a类型说明:通常为常量0x01

 

 

 

b类型取值:

 

EAPOL-Packet :   0x00

 

EAPOL-Start:     0x01

 

EAPOL-Logoff:    0x02

 

 

 

各种EAP协议的信息交互,封装在EAPOL-Packet类型的EAPOL报文内。至于EAP报文的格式,基本就是如下所示。

 

EAP-报文结构(byte)

 

18

 

19

 

20-21

 

22

 

22-

 

d:EAP通信类型

 

e:EAP通信id

 

f:EAP数据长度

 

g:EAP协商类型

 

EAP Body

 

 

 

d类型取值:

 

EAP-Request:  0x01

 

EAP-Resopnse: 0x02

 

EAP-Success:  0x03

 

EAP-Failure:  0x04

 

 

 

e类型说明:

 

通常由服务器发来的报文指定,在连续的报文内使用这个id来协商或者计算MD5值的数据之一。

 

 

 

g类型取值:

 

Identity:        0x01

 

MD5_Challenge:   0x04

 

2.2 802.1X协议的安全性分析

 

在协议的数据流中,我们关心的是与密码有关的部分,关键是对于EAP的MD5挑战的响应。这里记住几个变量:

 

1. SID:会话编号。这个就是上面提到的EAP通信ID。在通信过程中以明文出现的,长度为1个字节。

 

2. Salt:随机盐。在MD5挑战报文中附带过来的,也就是上面提到的attach-key。在通信过程中以明文出现,长度为16个字节。

 

3. SK:会话密钥。SK=MD5(SID+Password+Salt)

 

服务器端正式通过这个SK来判断认证请求是否合法。我们看到,由于MD5函数的单向性,要得到用户的口令是不可行的,除非采用字典攻击。因此,该协议首先就存在被执行离线字典攻击的缺陷,这也是大部分现行的网络协议所共有的问题。

 

不过,即使存在这样的漏洞,但是对于一般用户来说,字典的大小还是让人生畏的,我们还需要寻求其他方法。关于该协议更多的安全细节可以参考[2].