6. 802.11x用户身份验证

1.概述

802.11X它本身只是一个框架,它是IEEE采用IETF采用的可扩展身份验证协议(Extensible Authentication Protocol,简称EAP)制定而成。

2.可扩展身份协议(EAP)

802.11X的基础是EAP。EAP是一种简单的封装方式,可以运行与任何的链路层。

3.EAP的封包格式

code(类型代码)

其长度为1字节,代表EAP封包的类型。封包的Data(数据)字段必须通过此字段来解析

Identifier(标识符)

字段的长度为1字节。其内容为1个无符号整数,用来匹配请求与响应。重传时会使用相同的identifier number(标识符编号),新的传送规则使用新的identifier number

lenght(长度)

字段本身占有2字节。它记载了整个封包的总字节数,包括Code,Identifier,Length以及Data这4个字段

Data(数据)

最后一个是Data(数据)字段,其长度不定,取决于封包的类型,Data字段也可能不占用任何字节。Data字段如何解析完全取决于Code字段的值。

4.EAP的请求与响应

EAP的交换操作由请求(request)与响应(response)构成。认证者(authenticator)会送出请求给想要进行访问的系统并根据所得到的响应决定是否允许对方进行访问。如果认证者已经发送出请求,客户端系统只能发送出响应封包,不容许发送多余的封包来请求身份验证。

Code字段

code字段的值为1代表请求,2代表响应。

Data字段

用来携带请求与响应所使用的数据。每个Data字段会携带一种数据,可再细分为type identifier code(类型标识符)以及associated data(关联数据)

Type(类型)

Type(类型)字段的长度为1字节,代表请求或响应类型。每个封包只能使用一种类型。唯一的例外是,响应的Type字段语气对应的请求一致。即当无法接受某个请求时,对方可以送出一个NAK来体验使用不同的类型。大于等于4的Type字段代表身份验证方式。

Type-Data(类型-数据)

Type-Data(类型-数据)字段长度不一定,必须根据每种类型的规则加以诠释

5.类型代码

Idetity(身份)

认证者通常通常会以Identity(身份)类型作为最初的请求,这一般以EAP-Request/Identity来表示或这简写为Request/identity,表示认证者试图建立某种用户名称以便进行身份验证。
一旦知道用户名称,EAP客户端程序就会响应一个Resopnse/Identity封包。Response/Identity封包的Type-Data字段包含了用户名称。

Notification(通知)

认证者可以使用Notification(通知)类型传送消息给用户。用户的系统随后可将Request/Notification中的消息显示给用户看。Notification消息是由认证系统提供给消息用户,例如密码即将过期或者账号被锁定的原因。
Notification请求的回复中必须由发出的响应。不过,Request/Notification属于简单的确认(acknowledgment),而Type-Data字段的长度为0。

NAK(否认确认)

nullac knowledgment(否认确认,简称NAK)主要用来建议使用新的身份验证方式。认证者会在送出质询(challenge)消息中指定身份验证所使用的类型代码(type code)。身份验证类型的代码为4及以上的数字。如果用户的系统不支持质询所使用的身份验证类型,可以回复NAK。NAK的Type-Data字段包含其所建议使用的认证类型。

6.EAP身份验证方式

 除了流量控制与协商消息,EAP也会为身份验证的方式指定类型代码。EAP会把证明用户身份的操作授权给一个称为EAP method(一组验证用户身份的规则)的附属协议。
 使用EAP method的优点就是,EAP从此可以不用去管验证用户的细节。

7.EAP认证的成功与失败

 一旦认证者判断出整个交换过程已经完成,就会发出一个EAP-Success(代码3)或EAP-Failure(代码4)帧,以结束整个EAP交换过程。无论是成功还是失败,帧都不会再进行任何形式的验证。

8.EAP交换范例

 EAP交换过程是一系列的步骤,从认证请求开始,以成功或失败信息结束。

1.认证者(authenticator)发出一个Requset/Identity(请求/身份证明)封包。Request/Identity封包有两个目的,除了启动交换过程外,
    也用来告诉客户端在身份验证完成之前网络将会丢弃任何传输数据。
2.客户端要求用户输入标识符,随后将所搜集到的用户标识符以Response/Identify(响应/身份证明)消息发出。
3.一旦认出该用户,认证者随即会发出认证质询。认证者以一个Request/MD-5 Challenge(请求/MD-5质询)封包送出MD-5 Chanllenge给用户。
4.客户端在设定上是以token card(令牌卡)进行身份验证,因此它会送出一个Response/NAK(响应/否定确认)消息。
5.认证者会送出一个Request/Generic Token Card(请求/一般令牌卡)的质询,要取得卡号(numerical sequence on the card)
6.用户输入卡号,通过Response/Generic Token Card送回
7.用户的响应并不正确,因此认证失败。不过,这个认证者在EAP的实现中允许多次认证,因此会送出第二个Request/Generic Token Card的质询
8.用户再度响应,依然通过Response/Generic Token Card传递。
9.此次的响应正确,因此认证者发出一个Success(成功)消息

9.802.1X的架构及相关术语

 802.1X为认证会话过程定义了三个组件。如图a所示。
 申请者(supplicant):是寻求访问网络资源的用户机器。
 认证者(authenticator):网络访问的控制,它扮演着传统拨号网络中访问服务器的角色。
申请者与认证者在规范说明书中被称为端口认证实体(Port Authentication Entity,简称PAE),认证者只负责链路层的认证交换过程,并不维护任何用户信息。任何认证请求均会被转送至认证服务器进行实际的处理。
 整个认证交换过程在逻辑上是通过申请者与认证服务器来完成的,认证者只是扮演中介的角色。

10.802.1X的帧过滤

 未授权的连接端口会丢弃所有非EAPOL帧。一旦工作站成功验证,就可以将数据帧送至适当的网络。

11.EAPOL的封装格式

MAC标头

图示为有线Ethernet以及802.11的封装格式。虽然802.1X的有效载荷(payload)相同,但是两者所使用的MAC标头并不一致。

Ethernet Type(以太网类型)

Ethernet Type字段包含了长度为2字节的type code(类型代码),EAPOL的类型代码为88-8e

Version(版本)

Packet Type(封包类型)

EAPOL是EAP的扩展。除了上一节所描述的EAP消息,EAPOL还加入了一些额外的消息,让EAP能够适用于基于连接端口的LAN环境。

Packet Body Lenght(封包主体的长度)

此字段本身的长度为2字节,用来计算Packet Body(封包主体)字段的长度。如果没有封包内容,此字段的值为0。

Packet Body(封包主体)

此字段的长度不定。

12.802.11网络中的802.1X交换范例

1.申请者关联至802.11网络。关联只用到两个帧,这种简单的交换过程几乎都会成功。
2.申请者发出一个EAPOL-Start消息,开始进行802.1X交换过程。这个步骤并非必要,并非所有申请者都会发送出EAPOL-Start消息,因此可能没有这个步骤。
3.“正常的”EAP交换过程开始。认证者(接入点)发出一个EAP-Request/Identity帧。如果接入点只为已经认证成功的关联转送帧,在发出Request/Identity帧之前                   
     可能就没有EAPOL-Start。主动发出Requset/Identity帧用来指示申请者必须进行802.1X认证。
4.申请者以EAP-Response/Identity帧进行回复,此帧随后被转换为Radius-Access-Request封包送给RADIUS服务器。
5.RADIUS服务器判断需要使用哪个类型的认证,并且送出EAP-Request信息中指定认证类型。EAP-Request被封装于Radius-Access-Challenge封包中送给接入点,
    接入点收到封包后即将EAP-Request传递给申请者。EAP-Request信息通常会被表示为EAP-Request/Method,其中“Method”代表所使用的EAP认证方式。如果目
    前使用的是PEAP。则返回的封包将以EAP-Request/PEAP来表示
6.申请者从用户方面取得响应,然后返回EAP-Response。认证者会将此响应转换,送给RADIUS的Radius-Access-Request封包,针对质询信息所作的响应则存放于
    数据字段中。(步骤5和步骤6不断重复,直认证完成为止)
7.既然RADIUS服务器送出一个Radius-Access-Accept封包允许对方访问网络,因此认证者会发出一个EAP-Success帧并且授权使用连接端口。访问权限也可以由
    ADIUS服务器所返回的参数来决定
8.收到Access-Accept封包后,接入点会立即使用EAPOL-Key消息将密钥分配给申请者。
9.一旦申请者安装好密钥,就可以开始传送数据帧来访问网络。DHCP配置设定通常会在此刻进行
10.当申请者不在需要访问网络,就会送出一个EAPOL-Logoff消息,使连接端口恢复成未授权状态。

13.动态产生密钥

 EAPOL-Key帧让接入点能够传送密钥给客户端。密钥交换帧只有在认证成功之后才会传送,EAPOL-Key帧也可以用来定期动态更新密钥。

原文地址:https://www.cnblogs.com/huangdengtao/p/12749021.html