一种改进的IEEE802.1x认证机制

(整期优先)网络出版时间:2019-06-28
/ 3
摘要: 本文主要介绍了IEEE802.1x的体系结构和认证流程,分析了它的缺陷,从数据完整性保护角度出发,在EAPOL包中增加了一个Protection字段,提出了SDVIA(Source Data Verity and Integrity Authentication,数据真实性和完整性认证)认证。该认证技术可以弥补IEEE802.1x认证协议设计上存在的缺陷,有效地预防中间人和会话劫持攻击。
关键词: 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的体系结构。

15167055.jpg

1)客户端

客户端,也就是申请者,一般是一个用户移动终端,如安装有网卡的PC机。该终端系统通常要安装一个客户端软件,用户通过启动这个客户端软件发起IEEE 802. 1x认证。为了支持基于端口的接入控制,客户端系统需要支持EAPOL协议。

2)认证系统

认证系统在802.1网络中就是接入点,在认证过程中只起到“透传”的功能,所有的认证工作在客户端和认证服务器上完成。

认证系统通常为支持802.l x协议的网络设备(比如无线交换机),它为请求者提供服务端口,该端口可以是物理端口也可以是逻辑端口,一般在用户接入设备(如LAN Switch和AP)上实现802.1x认证。后文的认证系统、认证点和接入设备三者表达相同含义。

接入点在认证过程中虽然只起到“透传”的功能,但是在认证之前,它可以把申请者的数据分到两个逻辑端口中:控制端口和非控制端口,如图2所示。

15185334.jpg

非控制端口始终处于连通状态,它不需要授权,随时可以与网络中的其它机器进行数据交换,主要用来传递EAPOL协议帧,保证可以随时接收客户端申请者发出的认证请求。控制端口只有在认证通过的状态下才打开,用于传递网络资源和服务,有双向受控和仅输入受控两种方式,以适应不同的应用环境。

图2中申请者1没有通过身份认证,控制端口不通,处于未授权状态。申请者2通过身份认证,控制端口连通,处于授权状态。

3)认证服务器

通常为RADIUS (Remote Authentication Dial In User Service)服务器,该服务器存储有关用户的信息,比如用户的身份标识和密码等等。当用户进行认证时,认证系统需要通过认证服务器来验证用户是否合法。如果用户合法,认证服务器通知认证系统,用户已经通过认证,把可控端口打开。此后,用户就可以正常地通过端口访问认证系统所提供的服务。认证系统和RADIUS服务器之间通过承载于RADIUS协议之上的EAP协议进行通信。

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协议。

15185795.jpg

可以看出,认证者完成EAP消息的重新封装,来传输认证消息。认证服务器把认证结果以RADIUS-ACCEPT或者RADIUS-REJECT的形式传给认证者,认证者再重新封装成EAP-Success或者EAP-Failure消息给申请者。当申请者收到EAP-Success消息时,说明认证成功,可以接入局域网络了

[1]

2)EAPOL数据包的格式(如图4所示)

15192896.jpg


● 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所示。

15193020.jpg

151107747.jpg


这个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。

15110141.jpg

(7)客户端收到上述请求包后,如果支持RADUIS服务器选择的认证机制,就根据认证机制的要求作出响应,并通过EAP封装后发送给认证者,HMAC是用客户端私钥对数据帧的签名,Key字段为Ks2;如果不支持RADUIS服务器选择的认证机制,则发送NAK包,这样RADUIS服务器将重新选择认证机制,并从第5步重新开始。

(8)认证者把来自客户端的EAP响应包中继到RADUIS服务器。

(9)如果RADUIS认证服务器通过了对客户端的认证,则向认证者发送RADUIS-Access-Accept消息;否则就向其发送RADUIS-Access -Reject消息。

(10)如果认证者收到RADIUS-Access-Accept消息,则认为认证成功,于是打开受控端口,并向客户端发送EAP-Success消息,此后客户端就可以进行授权的正常通信过程,如果认证者收到RADUIS-Access-Reject消息,则认为认证失败,于是关闭受控端口,并向客户端发送EAP-Failure消息,HMAC是用认证者的私钥对数据帧的签名,Key字段为Ka2。

(11)当客户端通过认证(重认证)之后,无线接入点AP将向客户端发送用来加密广播帧的广播密钥EAPOL-Key。广播密钥的发送保证了客户端用于单播时会话密钥的保密性。而会话密钥的派生与发送与认证服务器选择的具体的认证机制有关。

(12)当客户端离线时,向认证者发送离线通知EAPOL–Logoff,HMAC为客户端私钥对数据帧的签名,Key字段为0,认证者收到消息后重新关闭受控端口。

认证过程中EAP-Request和EAP-Response可能有多条消息构成,这里我们只用6和7两条消息代表。

7 SDVIA认证方案的性能论证

由于SDVIA认证中对于客户端和认证者的交互消息引入源认证以及完整性保护。这样既保证了源真实性也保证了完整性,使得重放攻击对于认证过程以及认证实体的影响降低到较小的程度。

同时,如果攻击者想伪造一个EAPOL包,那么他必须还要有前一个EAPOL包中散列函数的密钥,这对于攻击者几乎是不可能的。由于在改进的协议中,接收者要存储一个数据包,等下一个数据包到来时才进行验证,这里只要限制存储的数据包只能为1,这样即使攻击者进行DoS攻击也不能耗尽服务器的计算资源和存储资源。

改进协议的缺点:

由于SDVIA认证过程中认证者和客户端在交互认证消息时还要计算完整性校验以及存储一条消息,所以协议的复杂度就提高了。

8 结束语

由于IEEE802.1 x没有提供双向认证和对管理帧的加密,从而使得中间人攻击和会话欺诈很容易成功,特别是在WLAN环境中,环境的开放使得攻击者更容易得手,因此需要不断完善和改进IEEE802.1x认证协议。

参考文献

[1]马建峰,朱建明.无线局域网安全—方法与技术[J].北京:机械工业出版社.2005.8

[3]曹秀,英耿,嘉沈平.无线局域网安全系统[D].北京:电子工业出版社,2003.10

[2]徐胜波,马文平,王新梅.无线通讯网中的安全技术[J].北京:人民邮电出版社.2003.1