版权归原作者所有,如有侵权,请联系我们

[科普中国]-可扩展认证协议

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

简介

如今Internet用户都需要连接到ISP以取得网络服务,同时也有许多个人需要将家中的个人计算机互联起来,他们一般都有拨号电话线路或租用的电话专用线路。然而这些线路都只是提供了点到点之间的一条物理链路,要在物理链路上进行通信必须借助于某种通信协议来对链路进行控制。因此出现了两种协议: SLIP和PPP。其中SLIP有以下一些缺陷:

只支持IP;

不允许IP地址的动态分配;

不支持用户认证。

而PPP却为点到点数据链路上传输多协议数据报提供了一种通用方法。为了在点到点物理链路上建立通信,在链路建立阶段, PPP通信链路的每一端都必须首先发送LCP数据包来对该数据链路进行配置协商。在链路已经建立起来后,在进入网络层协议进行实际的数据通信之前,PPP提供了一个可选的认证阶段。缺省时,认证并不是必需的。如果想要对通信链路进行认证,具体实现时必须在链路建立阶段指定认证协议配置选项来说明要进行认证。起初PPP上支持的认证方式主要是PAP和CHAP,然而它们都不能扩展。对此,PPP协议现在增加了一种新的可扩展认证协议(EAP),它是PPP , 认证的一个通用认证协议 在它上面可以支持多种认证机制,也就是说它提供了在PPP上进行多种认证的底层框架其它各种具体的认证机制都是建立在它之上的。 ,具体来讲, EAP在链路建立阶段并没有选定某一种特定的认证机制,只需说明要使用EAP , 认证即可 而把具体认证过程推迟到后面一个独立的认证阶段。在这一阶段进行认证方式的协商和具体认证过程,并由认证成功与失败的结果来决定是否进入网络层以使网络层数据能够在链路上进行传输1。

可扩展认证协议(Extensible authentication protocol,EAP)是一个第二层处理过程,允许网络对无线客户端进行认证。有两种EAP:一种用于无线网路,另一种用于LAN连接,通常称为 EAP over LAN(EAPoL)。无线环境中的一个问题是要允许WLAN设备与AP 后面的设备进行通信。有3个标准定义了此过程:EAP,802.1x和远程认证拨入用户服务(Remote authentication dial in user service, RADIUS )。EAP定义了标准的认证信息封装方法,如AP用于对用户进行认证的用户名和密码和数字证书。EAP本质上是点对点协议(PPP)的扩展,第一种EAP是EAP-MD5,它使用挑战握手认证协议(challenge handshake authentication protocol, CHAP)进行认证,下面是一些EAP扩展(介绍其中EAP-MD5和EAP-TLS)。

EAP设计思想设计思想:PPP主要作用于两层,数据链路层和物理层。PPP根据双方的选项协商、认证协商等来控制串行网络设备数据链路是否允许某些特定的网络层数据是否可以通过。网络层是建立在数据链路层之上的,当数据链路层有来自物理层的数据时,它将处理得到的数据,即根据数据帧协议域的不同而对网络协议数据进行分流,将不同协议的数据分别发往相应的上层网络协议输入队列,并相应地给它们发一个软中断,以通知上层对输入队列进行处理。只需通过检测认证过程的成功与否来决定是否将链路交给相应的上层网络使用,具体如图所示。

下面是具体的设计与实现:首先设计一个用于EAP认证配置信息文件,PPP用此文件来获得EAP认证的客户与服务器的认证选项信息。有PPP一个从文件中获取各种认证选项信息的通用子程序,通过它可把与EAP认证有关的选项参数加入到的PPPLCP配置选项列表中。如果真的要进行EAP认证,则在LCP发送LCP配置包时,对方将知道要进行EAP认证。同时将EAP的通信认证过程设计为一个有限状态自动机。有限自动机的信息结构主要内容如下:

typedef struct eap_state {int es_unit;通信接口struct eap_auth client;客户认证信息struct eap_auth server;服务器认证信息…} eap_state; 其中认证信息主要包括通信双方的名字、认证请求类型、请求序列号、超时值等参数。它们是控制EAP有限自动机通信协商过程的依据。

EAP认证流程机制如下:首先在用PPP,向远程端点进行连接时在链路建立阶段表明要使用EAP认证之后当进行到认证阶段时就进,行EAP认证过程:

认证一方向另一方首先发送一个身份请求并等待对方发来,相应的响应。

对方在接到身份请求要求时,它应发送一个身份响应包,它们的ID必须相同。

ID认证方检查包类型是否是身份响应包,且是否与发送请求时一致,如不一致则看是否到达了最大次数,如果没到则重发身份认证请求同时可选择性地发送一,个notification来传递一些通知信息,如这样的例子:包括带一个超时设定能(expiration)的口令,OTP0序列整数(接近),认证失败警告等。在大多数情况下,notification不是必要的。

在接到身份响应时,认证方根据身份,检查通信实体数据库,以查找对应的认证方式如找到则开始发送相应的认证请求。

对方在接到认证请求时,首先检查它自己是否支持认证者所要求的认证请求如不支,持,则要发送一个NAK,否认包携带自己允许的认证类型。如支持则发送认证响应。

NAK认证者检查响应包,如是否认包,则重发对方允许的认证请求。如是上一次的认证请求的响应,则检查它是否是它所期待的响应以决定认证成功与失败,从而决定链路的打开与关闭。

如上一步成功,向对方发送认证确认包,以使对方把链路打开,通知上层网络控制协议进行网络通信协议参数的协商,随着各个网络控制协议打开之后,PPP就把数据链路交给通信网络协议,这时双方才可以进行实际的通信。

PPP当所有的上层协议都不再需要使用此数据链路时,将发送中止链路请求包来结束数据链路。

EAP-MD5支持使用CHAP和静态密码进行认证;

EAP-TLS支持使用x.509v3数字证书进行认证;

802.1x和 RADIUS 定义了如何打包EAP信息,从而在网络上传输这些信息。 下图中显示了所使用的3中标准。802.1x描述了客户端(通常称为请求者)如何将EAP信息传输到网络访问设备(认证者)。网络访问设备可以是AP,交换机,路由器,VPN网关等。认证者使用RADIUS 协议将这些信息传输到认证服务器,改服务器会确认此请求者是否可以访问网络。注意,认证者处通常没有本地定义的用户凭据,它通常在认证服务器上查找此内容。2