刘 畅,安澄全
(哈尔滨工程大学信息与通信工程学院,哈尔滨150001)
Radius服务器中EAP认证子系统的设计
刘畅,安澄全
(哈尔滨工程大学信息与通信工程学院,哈尔滨150001)
无线网络的信息安全问题一直是限制它发展的一个重要因素.解决这个问题的一个办法是在认证服务器中部署EAP认证子系统.Radius是目前应用最广泛的AAA协议,提供用户的认证,授权和计费服务.基于EAP协议,可以在Radius服务器上支持多种不同安全性能的身份验证方法.在Radius服务器上设计了一种EAP认证子系统,该系统支持EAP-MD5、EAP-MSCHAPv2、EAP-TLS、EAP-TTLS、EAP-PEAP五种认证方法,并且具有良好的安全性和可扩展性.
Radius;AAA;EAP;信息安全
无线网络已经迅速发展成为我们生活中的一部分,相比于有线网络,它具有方便性,机动性和灵活性.然而,无线网络的信息安全问题一直是限制它发展的一个重要因素.信息安全包括三个重要的目标:机密性(confidentiality)、完整性(integrity)和可用性(availability).机密性要求信息只有被经过认证和授权的设备访问;完整性则是要求保证收到的信息必须是正确和完全的,保持在最初的形式而没有被修改,完整性还要求信息的修改要在特定的和授权的状态下进行;机密性和完整性指的都是数据的安全,可用性则要求信息在需要时能够及时获得以满足业务需求.保护信息安全的一个方法是对接入网络的用户进行身份认证,只有经过认证的用户才能访问该用户被授权的数据,这些都可以通过Radius[1]服务器来实现.Radius是目前应用最广泛的AAA[2]协议,AAA即认证(Authentication)、授权(Authorization)、计费(Accounting).在Radius服务器中,EAP[3]协议为身份认证提供了一个框架,在这个框架上,可以使用不同的EAP认证方法对用户进行认证,EAP认证相比于传统的 PAP[4](Password Authentication Protocol,密码验证协议)和 CHAP[5](Challenge Handshake AuthenticationProtocol,质询握手验证协议),具有更高的安全性,可以更好的保证无线网络中信息的安全[6].
1.1Radius协议
Radius(Remote Authentication Dial In User Service接入用户远程身份鉴明业务)是一种在网络接入设备和认证服务器之间承载认证、授权、计费和配置信息的协议.Radius协议是在认证、授权、计费方面应用最为广泛的协议之一.Radius采用典型的客户/服务器(Client/Server)结构,它的客户端最初就是NAS(Net Access Server)服务器,现在任何运行Radius客户端软件的计算机都可以成为Radius的客户端.NAS上运行的AAA程序对用户来讲为服务器端,或者可以由单独的认证服务器.客户端负责传输用户信息到指定的Radius服务器,然后根据从服务器返回的信息进行相应处理(如接入/挂断用户).Radius服务器负责接收用户连接请求,认证用户,然后给NAS返回所有需要的信息[7].
1.2EAP协议
EAP(Extensible Authentication Protocol,可扩展身份验证协议)协议基于PPP协议机制,是支持多种认证机制的PPP协议扩展.EAP支持客户端向实际用户多次请求认证信息,由服务器端执行具体的认证方法.这样,客户端通过EAP协议,在服务器端和用户之间透传认证信息.EAP本身并不可以作为一种认证协议,它是一种被广泛应用于局域网环境中的认证框架或者标准,被定义于IETF的RFC3748文件中.在EAP认证框架中,密钥材料由具体的认证算法生成的,这些密钥材料可以被EAP认证方法使用,也可以被导出.EAP可以支持多种认证协议以提供认证过程的信息安全,安全的特点和加密的强度因不同的认证协议而异.下面将概述本文实现的几种EAP认证方法:EAP-MD5、EAP-MSCHAPv2、EAP-TLS、EAP-TTLS以及EAP-PEAP.
EAP-MD5是一种EAP支持的最基本的认证方法,定义在RFC3748中,使用MD5算法来实现认证的安全性[8],即使用MD5哈希函数来对用户进行认证匹配.任何支持EAP认证的设备都必须支持EAP-MD5认证,当设备没有配置具体的EAP认证方法时,EAP-MD5将默认被使用.EAP -MD5的特点之一是,只支持服务器对客户端进行身份验证,即不支持双向认证,而且该协议也不支持密钥导出功能.因为这些原因,该种认证方法很容易受到黑客的字典攻击,其安全性还有待于进一步提高[9].
EAP-MSCHAPv2(Microsoft EAPCHAPExtension Protocol Version 2,微软EAP CHAP扩展协议版本2)是一种基于密码的质询-响应式双向的相互认证协议,使用工业标准的MD4[10](Message Digest 4,信息摘要 4)和 DES[11](Data Encryption Standard,数据加密标准)算法来加密响应,且支持密钥导出功能,密钥生成使用MPPE[12](Microsoft Point-to-Point Encryption,微软点对点加密),MPPE在RFC3079中定义.在认证过程中,首先,由服务器先对客户端进行验证,然后由客户端再对服务器进行验证,只要其中任一验证失败,则这个连接会被拒绝.
EAP-TLS(EAP-Transport Layer Security,EAP安全传输层协议)是一种使用数字证书的认证方法,是一种双向的认证机制,要求服务器和客户端都必须拥有有效的证书,并且支持导出密钥的功能,协议规范文档是RFC5216.EAP-TLS在其上层采用TLS(Transport Layer Security,安全传输层协议)的认证方法,TLS用于在两个通信应用程序之间提供保密性和数据完整性,该协议由两层组成:TLS记录协议(TLS Record)和TLS握手协议(TLSHandshake).
EAP_TTLS(EAP-Tunneled Transport Layer Security,EAP隧道安全传输层协议)是EAP-TLS的一种扩展,是一种支持双向认证,支持数字证书和密钥导出功能的认证方法,而且只需要客户端提供证书,而对客户端的证书是可选的.EAP-TTLS是一个复合的认证方法,主要包括两个阶段.第一个阶段是在用户和认证服务器之间建立TLS隧道,第二阶段是在已经建立的隧道内使用其他的认证方法进行认证.
EAP-PEAP(Protected EAPProtocol,受保护的EAP)是一种支持双向认证,支持数字证书和密钥导出功能的认证方法,而且只需要客户端提供证书,而对客户端的证书是可选的.EAP-PEAP是一个复合的认证方法,主要包括两个阶段.第一个阶段是在用户和认证服务器之间建立TLS隧道,第二阶段是在已经建立的隧道内使用其他的EAP方法进行认证,通常是使用EAP-MSCHAPv2进行认证.
本文设计的EAP认证子系统分为以下的几个模块:EAP任务模块,EAP处理模块,EAP认证模块,EAP公共业务模块.其中EAP认证模块又分为几个认证子模块,图1为EAP认证子系统的模块图.
图1 EAP认证子模块模型
图2为EAP任务模块模型图,在图2中Radius Listener的作用是监听Radius报文,Radius Handler的作用是对Radius报文进行分类,将EAP认证的报文交付给EAP认证子系统的EAP任务模块,EAP任务模块的作用是建立数据库连接,从EAP队列(EAPMessage Queue)中读取消息并将报文封装成对应的格式,并在之后会调用EAP处理模块(EAP Processor)进行认证处理,在认证处理完成后,组装报文并发送报文.
EAP处理模块由 EAP任务模块调用,进行EAP认证的处理.EAP处理模块的作用是建立EAP处理对象(CEapProcess),创建和管理会话信息(Session Data),每一个会话信息中又包括当前的EAP方法的接入服务,当前认证方法和当前EAP会话状态等一些必要的信息.在运行期间,该模块会根据EAP认证的类型来加载相应的EAP认证模块并调用相应的EAP认证模块进行对接入用户的认证.会话信息的管理包括三个操作,添加,删除和查找.因为EAP支持客户端向实际用户多次请求认证信息,由服务器端执行具体的认证方法,所以需要将每一次的请求认证报文封装成会话信息,提供下一个报文到来时需要的信息,比如用户名,认证方法等.本文中设计的会话信息链表的结构是一个链表数组,每一个数组元素就是一个链表,数组的索引是Radius报文State属性值得第一位,当查找一个具体的会话信息时,需要先通过索引值找到数组元素,因为数组元素是一个链表,所以接着还需要根据设备IP,报文ID等值来来匹配正确的会话信息.使用State属性值的第一位作为索引值是因为本文使用的Radius服务器在给用户发送报文的时候都会携带有这个属性,且用户回应时也会返回同样的State属性值.至于设计成数组元素是一个链表,则是因为整个是系统多用户同时在线的,所以不同用户的State值可能是一样的,所以只能再在链表中根据设备IP,报文ID等值来继续匹配相应的认证信息了.
EAP认证模块的作用是执行具体的认证,包含以下五种认证方法:EAP_MD5,EAP_TLS,EAP_ MSCHAPv2,EAP_TTLS,EAP_PEAP.并且结合实际应用,在EAP_TTLS与EAP_PEAP实现了对EAP_ MD5和EAP_MSCHAPv2的嵌套支持.在设计的过程中,定义了一个认证的基类CEapAuthen,EAPMD5,EAP-MSCHAPv2和EAP-TLS的认证类都直接继承于这个类,EAP-TTLS和EAP-PEAP的认证类都继承于EAP-TLS类,首先定义一个认证基类的目的是便于以后进行扩展,支持更多的EAP方法,以后想增加一种EAP类型时,可以直接继承CEapAuthen就行了,至于EAP-TTLS和EAP -PEAP的认证类是继承EAP-TLS认证类,是因为这两种认证方法的认证都是分为两个阶段:第一阶段是建立TLS连接,第二阶段是在通道内进行认证,直接继承EAP-TLS认证类,就可以继承EAP-TLS认证类的方法建立TLS连接了.图3为EAP认证模块中的继承层次.
图2 任务模块模型图
图3 EAP认证模块中的继承层次
实现EAP-TTLS和EAP-PEAP这两种认证方法在TLS通道内进行具体认证的方法时,定义有一个全局的回调指针,在TLS通道内使用回调指针调用EAP处理模块进行嵌套的EAP认证方法的处理.
EAP公共业务模块负责处理业务相关的事务,包括黑名单处理、时间限制、区域限制、密码策略等的处理.还包括一些公共的功能函数以及EAP各种数据结构和消息类型的宏定义等.
总的来说,图4展示了EAP认证子系统的四个模块的关系.EAP任务模块调用EAP处理模块进行EAP报文的认证处理,EAP处理模块在进行一系列的处理后且得到EAP认证的类型后,调用EAP认证模块进行相应的认证处理,对于EAPTTLS和EAP-PEAP这两种认证方法,还将使用回调指针调用EAP处理对象对EAP嵌套认证类型的认证处理,这些都处理完成后,则继续EAP处理模块的处理,这部分处理完成后,再继续完成EAP认证模块的处理,将处理完成的报文发送出去.在整个的过程中,EAP任务模块,EAP处理模块,EAP认证模块都需要EAP公共业务处理模块的支撑.
图4 EAP认证子系统的四个模块的关系
本文首先对Radius协议,EAP协议以及几种常用的EAP认证方法进行了简单的介绍,接着提出了一种Radius服务器中EAP认证子系统的设计方法,该系统能有效的支持EAP-MD5T、EAPMSCHAPv2、EAP-TLS、EAP-TTLS、EAP-PEAP这五种认证方法,具有灵活性和可扩展性等特性.接下来的工作将着重于根据现有的EAP方法,提出更安全,更高效的EAP认证方法.
[1]RIGNEY C,WILLENSS,RUBENSA,etal.Remote Authentication Dial In User Service(RADIUS),Request for Comments 2138,April 1997.
[2] DELAAT C,GROSSG,GOMMANS L,et al.Generic AAA Arhitecture,Request for Comments2903,August2000.
[3]L BLUNK,VOLLBRECHT J.Extensible Authentication Protocol (EAP)[R].Request for Comments 3748,June 2004.
[4]LLOYD B,SIMPSON W.PPP Authentication Protocols,Request for Comments 1334,October 1992.
[5]W SIMPSON.PPPChallenge Handshake Authentication Protocol (CHAP)[R].Request for Comments 1994,August1996.
[6]ZORN G.Microsoft PPPCHAP Extensions,Version 2,Request for Comments 2759[R].January 2000.
[7] SIMON D,ABOBA B,HURST R.The EAP-TLS Authentication Protocol[R].Request for Comments 5216,March 2008.
[8]KAMATH V,PALEKAR A,WODRICH M.Microsoft's PEAP version 0(Implementation in Windows XPSP1),draft-kamath -pppext-peapv0-00.txt[R].October 2002.
[9]FUNK P,BLAKE-WILSON S.Extensible Authentication Protocol Tunneled Transport Layer Security Authenticated Protocol Version 0(EAP-TTLSv0),Request for Comments 5281[R]. August2008.
[10]RIVEST R.The MD4 Message-Digest Algorithm,Request for Comments1320[R].April1992.
[11]KELLY S.Security Implications of Using the Data Encryption Standard(DES),Request for Comments4772[R].December 2006.
[12]G ZORN.Deriving Keys for use with Microsoft Point-to-Point Encryption(MPPE),Request for Comments 3079[R]. March 2001.
Design of EAP authentication subsystem in Radius server
LIU Chang,AN Cheng-quan
(School of Information and Communication Engineering,Harbin Engineering University,Harbin 150001,China)
Information security of wireless network has been an important factor that limits its development.A solution to this problem is to deploy the EAP authentication subsystem in the authentication server.Radius is themostwidely used AAA protocol to provide user authentication,authorization and accounting services.Based on EAP protocol,it can support a variety of different security authentication methods on the Radius server.In this paper,an EAP authentication subsystem was presented on the Radius server.This system supports five authentication methods including EAP-MD5,EAP-MSCHAPv2,EAP-TLS,EAP-TTLS,EAP-PEAP,and has good security and expansibility.
Radius;AAA;EAP;information security
TP393
A
1672-0946(2016)02-0212-04
2015-05-06.
刘畅(1992-),女,硕士,研究方向:现代通信系统与通信技术、网络通信技术.