一种改进的IEEE802.1x认证机制
来源:岁月联盟
时间:2010-08-30
关键词: IEEE802.1x;EAPOL;RADIUS;SDVIA
1 引言
有线局域网通过固定线路连接组建,机终端通过接入固定位置物理端口,实现局域网接入,数据传输直接送到目的地,这里没有直接控制到端口的方法,也不需要控制到端口,这些固定位置的物理端口构成有线局域网的封闭物理空间。但是,由于无线局域网的网络空间具有开放性和终端可移动性,因此很难通过网络物理空间来界定终端是否属于该网络。随着无线局域网的广泛应用,如何通过端口认证来实现用户级的接入控制就成为一项非常现实的问题。IEEE802.1x正是基于这一需求而出现的一种认证技术[1]。 IEEE802.1x协议,称为基于端口的访问控制协议(Port Based Network Access Control Protocol),是由IEEE于2001年6月提出的,符合IEEE802协议集的局域网接入控制协议,主要目的是为了解决无线局域网用户的接入认证问题,能够在利用IEEE802局域网优势的基础上提供一种对连接到局域网用户的认证和授权手段,达到接收合法用户输入,保护网络安全的目的。2 IEEE802.1x体系结构[2]
IEEE802.1x协议的体系结构包括3个重要部分:客户端、认证系统和认证服务器。图1就是IEEE802.1x的体系结构。

3 IEEE802.1x的EAP认证过程
1)IEEE802.1x认证过程 IEEE802.1x采用EAP点对点协议认证,EAP消息被封装在IEEE802.1x消息中,称做EAPOL。EAP消息有EAP请求,EAP响应,EAP成功通知和EAP失败通知四类。其中,只有EAP请求消息是可以在认证系统和接入客户端系统之间直接发送,其它的消息都是从认证服务器发给客户端系统,或者从客户端系统发给鉴权服务器的,认证系统只是完成中转和协议转换(认证系统与客户端系统之间用EAPOL承载,客户端系统与认证服务器之间用其它高层协议,如RADIUS)。 图3描述的是由客户端系统发起认证请求,一次口令交换下,鉴权成功的消息流。其中,实线代表EAPOL数据帧的交换,虚线代表认证系统与认证服务器间的高层协议,采用RADIUS协议。 |

● PAE Ethernet类型:取值范围0x88~0x8e。 ● 协议版本:现在取值为0x01。 ● 类型:EAPOL数据包的类型。 ● 长度:后面数据体的字节数。 ● 数据体:根据类型的不同,数据体有不同的格式。
4 IEEE802.1x协议的缺陷分析
1)中间人攻击 由于IEEE802.1 x是一个不对称协议,它只允许网络鉴别用户,而不允许用户鉴别网络。因而,攻击者能够窃听用户和访问点之间的通信,扮演“中间人”的角色在移动用户和合法访问点之间传递虚假信息,实施中间人攻击。在客户端系统发出接入请求时,攻击者在客户端一方假冒认证系统,在认证系统一方假冒客户端系统,就可以绕过认证机制。 2)会话劫持[3] IEEE802.1x认证缺乏清晰的通信和消息真实性,所以很可能遭到会话劫持攻击。 图5显示了会话劫持是如何实现的,攻击的过程描述如下: (1)消息1、2、3和4:合法的申请者进行认证(假设EAP认证只包含这4条消息,实际的EAP认证多于4条消息)。 (2)消息5:攻击者冒充AP的MAC地址发送一条Disassociate管理帧给申请者。这使得申请者的状态为Disassociated。这条消息使RSN状态机被设置为Unassociated,而802.1x状态机的状态仍为Authenticated。 (3)消息6:这时攻击者冒充申请者的MAC地址接入到。5 SDVIA认证的提出
IEEE 802.1x认证虽然不完善,但是在无线局域网中起着不可替代的作用。目前协议的缺陷主要原因是缺少数据包的源真实性和完整性保护,因此在充分考虑了源真实性和完整性的基础上提出了改进的IEEE 802.1x认证--SDVIA (Source Data Verity and Integrity Authentication,数据真实性和完整性认证)认证。 SDVIA认证在EAPOL包中增加了一个Protection字段。如图6所示。![]() |

这个Protection字段由两部分组成: Protection = HMAC + Key 第1部分为前5个字段的MD5散列,第2部分为上一个EAPOL数据包中HMAC的密钥。 每条消息的密钥是随机的。在发送一个EAPOL数据包时并不携带这个散列函数的密钥,相反,这个密钥将在下一个数据包中携带。接收方在收到一个EAPOL包时首先进行存储,用接收到的下一个包的密钥验证上一个包的源真实性和完整性。
6 SDVIA协议的认证实现过程(图7)
(1)客户端向认证者发送EAPOL-Start发起认证。认证过程同样可以由认证者发起,但是它直接发送EAP-Request/Identity而不是EAPOL-Start消息。在第1条消息封装的最后一部分是Protection字段,其中HMAC是数据帧随机用密钥Ks1(Ks代表客户端的散列函数密钥)的散列值,因为是客户端的第1条消息,所以Key字段为0。事实上,认证者在检测到端口从“disable”状态转移到“enable”状态时就向客户端发送认证请求。如果客户端没有收到来自认证者的认证请求,那么它就会在适当的时候通过EAPOL-Start消息发起认证过程。 (2)当认证者不知道用户身份时就发送该消息(EAP-Request/Identity)。其中HMAC是数据帧随机用密钥Ka1(Ka代表认证者的散列函数密钥)的散列值,因为是认证者的第1条消息,所以Key字段为0。 (3)客户端收到EAP-Request/Identity消息,就用其用户名响应,发送EAP-Response/Identity消息给认证者,HMAC是数据帧随机用密钥Ks2的散列值,Key字段为Ks1。 (4)认证者把包含有用户身份的EAP响应包重新以RADUIS协议格式封装,并把重新封装后的包由RADUIS客户端发送至RADUIS服务器。 (5)RADIUS服务器在收到该包后将选择具体的认证机制,并发送相应的EAP请求包到认证者。 (6)认证者并不解释来自RADUIS的EAP包的具体内容,而只是检查RADUIS协议包的类型,由于是质询包,因此认证者将其毫不改变的转发给客户端,HMAC是数据帧随机用密钥Ka2的散列值,Key字段为Ka1。![]() |

