【摘要】IIMaster Degree Dissertation of Chongqing UniversityApplication and Study for Port Based NetworkAccess Control Protocol Based on IEEE802.1X&—&—Realization For IEEE802.1X Protocol In TheEnthernet-NetworkMaster Degree Candidate:Xie BoSupervisor:Associate Prof.Yao JiaNingMajor:Computer Applications TechnologyCollege of Computer ScienceChongqing UniversityMay 2005
原文点击下载
中文摘要III摘要随着以太网技术的飞速发展,其应用也日益广泛。出于网络安全的考虑和计费的需要,网络管理者和运营商都明显地感到了对以太网端口进行控制的需求。在这样的背景下,802.1 X标准应运而生,从而为以太网环境提供了一种标准的基于端口的访问控制机制和认证手段。论文作者在对802.1 X协议进行了较深入的分析研究的基础上,对如何利用软件实现相关协议进行了探索。鉴于国产交换机中支持该认证协议的产品尚不多,论文作者选择了探讨和研究在微机环境中开发相关协议软件作为硕士研究课题。本论文较全面地分析了802.1X标准产生的背景、协议的设计思路、认证体系的特点和体系结构、以及该标准的应用前景。首先对应用于Internet网络层次体系结构的认证协议进行了阐述,并对目前业界普遍采用的几种认证方式进行了比较,重点对IEEE802.1X协议进行探讨研究,最后针对IEEE802.1X协议在推广与实现中所面临的楼道交换机不支持该协议的问题进行了专题研究,提出一种利用软件支撑模型,在客户端与认证服务器之间顺利实现EAP协议数据包交换,从而实现802.1X协议功能,达到IEEE802.1X认证目的。本文在针对模型中各模块具体功能与实现过程中着重用到了网络底层协议与数据包的封装与提取技术,结合C++、虚拟设备驱动程序(VxD)、WINSocket等软件实现所需功能。基于上述体系结构上的分析,论文进一步讨论了认证服务软件系统功能模块的划分,对系统具体实现进行了详尽的描述。论文最后讨论了对作者开发的模拟试验系统的测试工作,包括单元测试和集成测试的要求和测试步骤,较详细地列举了对部分模块进行的测试并得出结论。关键词:802.1X协议,RADIUS,认证,授权,PAE,AAA功能
中文摘要IV
英文摘要VABSTRACTContinuous progress in Ethernet techniques has made it a prominent networktechnology,not only for building up LANs,MANS,and WANs,but also for accessingthose networks.As a result,there is an urgent need for accesscontrol in an Ethernetenvironment,and finally in 2001,the standard of 802.1Xwas defined by an IEEE 802working group.IEEE 802.1X is a port based accesscontrol protocol,which provides astandard mechanism and authorization methodfor users connected to Ethernet ports.The work presented in this dissertation reflects author's understanding of IEEE802.1X based authentication system,and an experimental implementationof this protocolin microcomputers interconnected by an Ethernet LAN is described.This dissertation first provides a comprehensive study of the IEEE 802.1X.Themotivation and basic idea of this standard is briefly reviewed,its mainfeatures andfunctional components are analyzed in some detail.With regard tosystem presentation,the author has abstracted an 802.1X based authenticationsystem as having two visions:the generalized one(in broad sense)and the user&’s vision(in narrow sense).A generalizedvision treats all the relevant componentsas a whole,therefore it comprises the functionsnecessarily been hosted in edge switches as well as those provided by the backstageauthentication server.Theuser's vision is one directly presented by edge switches,whilethe backstageserver is invisible to users.The two-vision view is helpful to appreciatetheworking principle and has guided the implementation described in this dissertation.According to the analysis of the system structure above,the thesis further discussedthe function mold of the authentication service software system,carrying out to carryon the detailed description to the system in a specific way.The dissertation discusses toexperiment test work of the system to the emulation that author develop finally,including the request for unit-test and gathering-test step,enumerated to the test result ofpart molds and get the conclusion at the last.Keywords:802.1X,Authorization,EAP,PAE,RADIUS,AAA
英文摘要VI
目录VII目录中文摘要.......................................................................................................................................III英文摘要........................................................................................................................................V1绪论.........................................................................................................................................11.1网络安全概述...........................................................................................................................11.1.1网络安全的概念................................................................................................................11.1.2网络存在的威胁................................................................................................................11.1.3针对网络中存在的威胁采取的主要措施........................................................................11.1.4数字证书(CA)系统.......................................................................................................31.2 IEEE802.1X概述.....................................................................................................................41.2.1 IEEE802.1X的体系结构....................................................................................................51.2.2 IEEE802.1X协议技术特点................................................................................................61.3 AAA协议概述...........................................................................................................................71.4 RADIUS协议与拨号用户接入认证系统框架........................................................................81.4.1 RADIUS协议概述.............................................................................................................91.4.2 RADIUS认证、授权.......................................................................................................101.4.3 RADIUS计费...................................................................................................................101.5本论文的主要研究内容与结构安排.....................................................................................112认证技术.................................................................................................................................132.1认证技术概述.........................................................................................................................132.1.1认证技术概念..................................................................................................................132.1.2体系结构..........................................................................................................................132.1.3几种主要认证技术介绍..................................................................................................142.1.4几种认证技术的比较......................................................................................................192.2 IEEE802.1X的学术意义及前景............................................................................................212.3本章小结.................................................................................................................................213制订课题研究目标,设计模型.................................................................................233.1设定研究目标.........................................................................................................................233.1.1主要协议介绍与它们之间的关系...................................................................................233.2设计模型.................................................................................................................................313.2.1 SupplicantPAE认证请求者..............................................................................................313.2.2代理认证系统PA(Proxy Authentication)...................................................................31
目录VIII3.3本章小结.................................................................................................................................354设计工具、算法介绍及编程实现............................................................................374.1使用的设计工具介绍.............................................................................................................374.2算法介绍.................................................................................................................................374.2.1单向散列函数..................................................................................................................374.2.2 MD5算法..........................................................................................................................374.3协议模型的实现.....................................................................................................................384.3.1 SupplicantPAE认证请求者PAE.....................................................................................384.4代理认证系统PA的实现......................................................................................................424.4.1认证者PAE模块M0.......................................................................................................424.4.2.RADIUS模块实现..........................................................................................................544.4.3数据库Database模块实现..............................................................................................604.5本章小结.................................................................................................................................615检测调试.................................................................................................................................635.1测试分类.................................................................................................................................635.1.1单元测试...........................................................................................................................635.1.2集成测试...........................................................................................................................655.2测试说明..................................................................................................................................655.2.1测试方法与测试集...........................................................................................................655.3测试结果.................................................................................................................................665.4本章小结.................................................................................................................................666总结.......................................................................................................................................676.1结论.....................................................................................................................................676.2对未来工作的改进.................................................................................................................67致谢.......................................................................................................................................69
参考文献
.......................................................................................................................................71附录.......................................................................................................................................731绪论11绪论1.1网络安全概述1.1.1网络安全的概念网络安全包括五个基本要素:机密性、完整性、可用性、可控性与可审查性。机密性:确保信息不暴露给未授权的实体或进程。完整性:只有得到允许的人才能修改数据,并且能够判别出数据是否已被篡改。可用性:得到授权的实体在需要时可访问数据,即攻击者不能占用所有的资源而阻碍授权者的工作。可控性:可以控制授权范围内的信息流向及行为方式。可审查性:对出现的网络安全问题提供调查的依据和手段。1.1.2网络存在的威胁一般认为,目前网络存在的威胁主要表现在:非授权访问:没有预先经过同意,就使用网络或计算机资源被看作非授权访问,如有意避开系统访问控制机制,对网络设备及资源进行非正常使用,或擅自扩大权限,越权访问信息。它主要有以下几种形式:假冒、身份攻击、非法用户进入网络系统进行违法操作、合法用户以未授权方式进行操作等。信息泄漏或丢失:指敏感数据在有意或无意中被泄漏出去或丢失,它通常包括,信息在传输中丢失或泄漏(如&"黑客&"们利用电磁泄漏或搭线窃听等方式可截获机密信息,或通过对信息流向、流量、通信频度和长度等参数的分析,推出有用信息,如用户口令、帐号等重要信息。),信息在存储介质中丢失或泄漏,通过建立隐蔽隧道等窃取敏感信息。破坏数据完整性:以非法手段窃得对数据的使用权,删除、修改、插入或重发某些重要信息,以取得有益于攻击者的响应;恶意添加,修改数据,以干扰用户的正常使用。拒绝服务攻击:它不断对网络服务系统进行干扰,改变其正常的作业流程,执行无关程序使系统响应减慢甚至瘫痪,影响正常用户的使用,甚至使合法用户被排斥而不能进入计算机网络系统或不能得到相应的服务。利用网络传播病毒:通过网络传播计算机病毒,其破坏性大大高于单机系统,而且用户很难防范。1.1.3针对网络中存在的威胁采取的主要措施1.1.3.1鉴别
1绪论2鉴别是对网络中的主体进行验证的过程,通常有三种方法验证主体身份。一是只有该主体了解的秘密,如口令、密钥;二是主体携带的物品,如智能卡和令牌卡;三是只有该主体具有的独一无二的特征或能力,如指纹、声音、视网膜或签字等。口令机制:口令是相互约定的代码,假设只有用户和系统知道。口令有时由用户选择,有时由系统分配。通常情况下,用户先输入某种标志信息,比如用户名和ID号,然后系统询问用户口令,若口令与用户文件中的相匹配,用户即可进入访问。口令有多种,如一次性口令,系统生成一次性口令的清单,第一次时必须使用X,第二次时必须使用Y,第三次时用Z,这样一直下去;还有基于时间的口令,即访问使用的正确口令随时间变化,变化基于时间和一个秘密的用户钥匙。这样口令每分钟都在改变,使其更加难以猜测。智能卡:访问不但需要口令,也需要使用物理智能卡。在允许其进入系统之前检查是否允许其接触系统。智能卡大小形如信用卡,一般由微处理器、存储器及输入、输出设施构成。微处理器可计算该卡的一个唯一数(ID)和其它数据的加密形式。ID保证卡的真实性,持卡人就可访问系统。为防止智能卡遗失或被窃,许多系统需要卡和身份识别码(PIN)同时使用。若仅有卡而不知PIN码,则不能进入系统。智能卡比传统的口令方法进行鉴别更好,但其携带不方便,且开户费用较高。1.1.3.2数据传输安全技术数据传输加密技术目的是对传输中的数据流加密,以防止通信线路上的窃听、泄漏、篡改和破坏。如果以加密实现的通信层次来区分,加密可以在通信的三个不同层次来实现,即链路加密(位于OSI网络层以下的加密),节点加密,端到端加密(传输前对文件加密,位于OSI网络层以上的加密)。一般常用的是链路加密和端到端加密这两种方式。链路加密侧重于在通信链路上而不考虑信源和信宿,是对保密信息通过各链路采用不同的加密密钥提供安全保护。链路加密是面向节点的,对于网络高层主体是透明的,它对高层的协议信息(地址、检错、帧头帧尾)都加密,因此数据在传输中是密文的,但在中央节点必须解密得到路由信息。端到端加密则指信息由发送端自动加密,并进入TCP/IP数据包回封,然后作为不可阅读和不可识别的数据穿过互联网,当这些信息一旦到达目的地,将自动重组、解密,成为可读数据。端到端加密是面向网络高层主体的,它不对下层协议进行信息加密,协议信息以明文形式传输,用户数据在中央节点不需解密。数据完整性鉴别技术目前,对于动态传输的信息,许多协议确保信息完整性的方法大多是收错重传、丢弃后续包的办法,但黑客的攻击可以改变信息包内
1绪论3部的内容,所以应采取有效的措施来进行完整性控制。报文鉴别:与数据链路层的CRC控制类似,将报文名字段(或域)使用一定的操作组成一个约束值,称为该报文的完整性检测向量ICV(Integrated CheckVector)。然后将它与数据封装在一起进行加密,传输过程中由于侵入者不能对报文解密,所以也就不能同时修改数据并计算新的ICV,这样,接收方收到数据后解密并计算ICV,若与明文中的ICV不同,则认为此报文无效。校验和:一个最简单易行的完整性控制方法是使用校验和,计算出该文件的校验和值并与上次计算出的值比较。若相等,说明文件没有改变;若不等,则说明文件可能被未察觉的行为改变了。校验和方式可以查错,但不能保护数据。加密校验和:将文件分成小快,对每一块计算CRC校验值,然后再将这些CRC值加起来作为校验和。只要运用恰当的算法,这种完整性控制机制几乎无法攻破。但这种机制运算量大,并且昂贵,只适用于那些完整性要求保护极高的情况。消息完整性编码MIC(Message Integrity Code)使用简单单向散列函数计算消息的摘要,连同信息发送给接收方,接收方重新计算摘要,并进行比较验证信息在传输过程中的完整性。这种散列函数的特点是任何两个不同的输入不可能产生两个相同的输出。因此,一个被修改的文件不可能有同样的散列值。单向散列函数能够在不同的系统中高效实现。防抵赖技术它包括对源和目的地双方的证明,常用方法是数字签名,数字签名采用一定的数据交换协议,使得通信双方能够满足两个条件:接收方能够鉴别发送方所宣称的身份,发送方以后不能否认他发送过数据这一事实。通信的双方采用公钥体制,发方使用收方的公钥和自己的私钥加密的信息,只有收方凭借自己的私钥和发方的公钥解密之后才能读取明文,而对于收方的回执也是同样道理。另外实现防抵赖的途径还有:采用可信第三方的权标、使用时戳、采用一个在线的第三方、数字签名与时戳相结合等。1.1.4数字证书(CA)系统数字证书就是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证双方身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个由权威机构-----CA机构,又称为证书授权(Certificate Authority)中心发行的,用户可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息,证书的格式遵循ITUT X.509国际标准。在保证网络安全的四大要素方面,即信息传输的保密性、数据交换的完整性、发送信息的不可否认性、用户身份的确定性,
1绪论4采用用数字证书,通过运用对称和非对称密码体制等密码技术建立起一套严密的身份认证系统,从而保证信息除发送方和接收方外不被其它人窃取;信息在传输过程中不被篡改;发送方能够通过数字证书来确认接收方的身份;发送方对于自己的信息不能抵赖。数字证书原理数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名,同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这样信息就可以安全无误地到达目的地了。通过数字的手段保证加密过程是一个不可逆过程,即只有用私有密钥才能解密。在公开密钥密码体制中,常用的一种是RSA体制。其数学原理是将一个大数分解成两个质数的乘积,加密和解密用的是两个不同的密钥。即使已知明文、密文和加密密钥(公开密钥),想要推导出解密密钥(私密密钥),在计算上是不可能的。按现在的计算机技术水平,要破解目前采用的1024位RSA密钥,需要上千年的计算时间。公开密钥技术解决了密钥发布的管理问题,商户可以公开其公开密钥,而保留其私有密钥。用户可以用人人皆知的公开密钥对发送的信息进行加密,安全地传送给数据接收方,然后由对方用自己的私有密钥进行解密,同时用户也可以采用自己的私钥对信息加以处理,由于密钥仅为本人所有,这样就产生了别人无法生成的文件,也就形成了数字签名。采用数字签名,能够确认以下两点:1.保证信息是由签名者自己签名发送的,签名者不能否认或难以否认;2.保证信息自签发后到收到为止未曾作过任何修改,签发的文件是真实文件。1.2 IEEE802.1X概述IEEE802.1X是IEEE为了解决基于端口的接入控制而定义的标准,被称为基于端口的访问控制协议(Port based network access control protocol)。802.1X标准的出现,解决了传统PPPoE(PPP Over Ethernet)和WEB/PORTAL认证带来的问题,为运营商建设可运营、可管理的电信级宽带以太网提供了良好的支持。当802.1X应用于交换式以太网环境时,它要求客户和与其直接相连的设备都支持802JX;而应用于共享式以太网环境时,还应对用户名、密码等关键信息进行加密传输。在运营过程中,运营商的网络设备可以随时要求客户重新进行验证。该协议适用于接入设备与接入端口间点到点的连接方式,其中端口可以是物理端口,也可以是逻辑端口。主要功能是限制未授权设备(如用户计算机)通过以太网交换机的公共端口非法访问局域网。IEEE802.1X协议将一个以太网的物理端口划分为两个逻辑端
1绪论5口:受控端口(Controlled port)与非受控端口(Uncontrolled port)。非受控端口始终处于可通信状态,用于传输认证信息,受控端口用于传送正常的用户数据,但只有在该端口认证成功时,才能传输用户数据。1.2.1 IEEE802.1X的体系结构IEEE 802.1X的体系结构包括三部分:Supplicant System客户系统Authenticator System认证者系统Authentication Sever System认证服务系统客户系统是802.1X协议的被认证对象,可以是直接接入认证服务网络的单个用户计算机,也可以是连入认证服务网络设备的一个局域网中的某个用户计算机。该计算机通常需要安装一个客户端软件,用户通过启动客户端软件发起请求进行802.1X协议的认证或应答来自认证者系统的要求认证命令。为支持基于端口的接入控制,客户系统必须支持EAPOL(ExtensibleAuthenticationProtocolOverLAN)协议。认证者系统是指&“支持IEEE 802.1X协议的网络设备的集合&”。更确切地讲,它是在所讨论网域中的边界交换设备上支持802.1X的功能的抽象(非边界交换设备不一定需要支持802.1X的相关功能)。一方面,它寓于与客户系统直接相连的交换设备中,是直接与客户系统进行认证信息交互的设备,在客户眼中它就是认证服务系统〔虚像〕,而后台的认证服务器对客户是不可见的,另一方面,在直接与认证服务器系统相连的边界交换设备中的&“认证者系统&”又是客户系统请求认证服务的代理,在认证服务器系统的眼中,它就是&“客户系统&”(虚像)。换言之,在物理位置上分布的&“认证者系统&”作为整体扮演认证服务的中介的角色,而在客户系统一侧和认证服务器系统一侧又分别扮演&“认证服务器代理&”和&“客户系统代理&”的角色。一个支持802.1X协议的设备的端口(物理端口,以其MAC地址或IP地址作为端口的标识)概念上被分为两个逻辑端口:受控端口和非受控端口。非受控端口用于传递EAPOL协议帧,它始终处于双向连通状态以保证客户系统始终能够发出认证请求或接受认证服务信息。受控端口用于传递正常网络数据,非受控端口实质上是IEEE802.1X协议为端口用户建立的逻辑认证通道,该逻辑通道对用户是不可见的,因此,其他用户无法利用该逻辑的认证信息打开该用户的端口。鉴于802.1X本身并未定义具体的认证服务应用协议,而只是定义了与认证信息传输相关的协议,因此,要实现认证服务,还必须借助于其他认证服务应用协议。在本文讨论的802.1X的实现中,利用了RADIUS(Remote Authentication Dial in UserService)服务机制来实现802.1X体系结构中的认证应用系统。从这种意义上讲,一个完整的认证服务器实际上是由两部分组成:支持802.1X的认证服务器端口访问实体和
1绪论6RADIUS服务器部分与客户认证相关的控制信息数据库则是建立在RADIUS服务器内。图1-1为描述802.1X体系结构和各部件的关系示意图。图1.1 802.1X体系结构示意图Fig1.1 Architecture map of 802.1x图1.1中,认证者系统端口访问实体(PAE)扮演客户系统的代理与认证服务系统进行直接的认证交互活动;同样认证者系统PAE对客户系统扮演&“认证服务系统&”代理的角色。当客户系统通过内部的PAE发出认证请求时,认证者系统PAE将用户信息和请求参数等作为一系列请求消息流发送至RADIUS服务器。认证服务系统收到消息后,首先由认证服务器端口访问实体处理相关的连接建立请求;再由RADIUS服务器查询控制信息数据库,完成用户身份鉴定,并根据授权规则对通过认证的用户进行授权。使用RADIUS服务器另一个作用是RADIUS服务器还可记录与用户连接有关的其他参数,如允许的最大连接时间和静态IP地址等,用于控制用户可控端口的工作时间或计费依据。1.2.2 IEEE802.1X协议技术特点IEEE 802.1X协议从技术上看具有以下两个特点:1)基于数据链路层的认证技术IEEE 802.1X协议是基于局域网数据链路层协议之上的数据链路层增强协议,不需要利用网络层,因此具备802.1X的网络环境可以建立在第2层交换平台之上,因此适用范围广,也可以有效地降低建网成本。2)认证流和用户业务数据流分离IEEE 802.1X的认证体系结构中采用了&“受控端口&”和&“非受控端口&”的逻辑功能,从而可以实现用户业务数据流与认证流的分离。用户通过认证后,用户业
1绪论7务流和认证流分离,后续用户数据流的传输即与无认证网络环境下相同,因此,所有业务(包括组播、广播)的正常工作都不受认证方式限制。正因为IEEE 802.I X具有上述技术上的特点,因此在某些方面比己有的一些认证技术更优越。目前使用较广泛的是PPPOE和Web/Portal及VLAN认证三种认证技,本文将在后继章节详细介绍这几种认证技术,并对它们做出比较。1.3 AAA协议概述如何安全、有效、可靠的保证计算机网络信息资源存取及用户如何以合法身份登陆、怎样授予相应的权限,又怎样记录用户做过什么的过程是所有网络服务提供者需要考虑和解决的问题。正是基于此需求,AAA协议逐渐发展完善起来,成为很多网络设备解决该类问题的标准。AAA即为Authentication(认证),Authorization(授权),Account(记费)认证(Authentication)即辩别用户是谁的过程。通常该过程通过输入有效的用户名和密码实现;授权(Authorization)即对完成认证过程的用户授予相应权限,解决他能做什么的问题,在一些身份认证的实现中,认证和授权是统一在一起的;计帐(Account)是统计用户做过什么的过程,用户使用的时间和费用。通常可以用用户占用系统时间、接受和发送的信息量来衡量。AAA通过Authentication,Authorization,Accounting集成控制了用户在自己特定角色特点所遵循的原则下如何访问多个网络及特定网络下的某个平台及某种应用服务。通常意义上的AAA服务器都具有用户认证、授权处理用户请求以及收集用户使用情况的相关数据的功能。对一个服务提供商来说,这样的AAA服务器应该有一个应用型的特定模式的应用界面(接口),通过这个界面(接口)的服务必须通过授权。在实际使用中,AAA服务器都带有一个用户数据库(可以是某系统用户数据库或独立的数据库系统),这个数据库中含有用户的初始化信息,它可以反映合法的属性值以及每个用户所享有的权限。通过它和客户端软件的数据交流来实施相关操作。Authentication通过终端用户的识别属性来判定它是否有进入网络的权限。终端用户一般需要提供一个用户名(该用户名在这个认证系统中应该是唯一的)和对应该用户名的口令。AAA服务器将用户提交的信息和储存在数据库的和用户想关联的信息比较,如果匹配成功的话该次登陆生效,否则拒绝用户请求。当用户通过认证以后,Authorization就决定了该用户访问网络的权限范围及所享有何种服务。它可能包括提供的一个IP地址,或某种规则的滤镜以来确定哪些应用协议可以被支持。在AAA管理模式下Authentication和Authorization通常可以一起执行。
1绪论8Accounting提供了收集用户使用网络资源情况信息的方法。通过该类数据的收集,可以提供网络审查、发展以及结构调整的一些依据。END USER图1.2 AAA组成部分Fig1.2 System constitute part of AAA如图显示AAA解决方案的各个组成部分。多个服务器可以共同被用来作为一个存储中心来存储和分发信息。NAS(网络访问服务器)有时可能是一台路由器,或一台终端服务器,或是另一台的主机。它主要作为一个网络的入口,在AAA服务器模式下承担是客户端的功能。一个AAA的工作过程可以分为如下几步:①终端用户给客户断(即NAs)设备发出需要和网络连接的请求。②NAS提示用户输入用户名和口令并收集和转发该信息给AAA服务器。③AAA服务器执行程序(和数据库信息匹配)后将结果返回给NAS,结果可能是接受、拒绝、或其他相关信息。④NAS将通知结果给终端用户。1.4 RADIUS协议与拨号用户接入认证系统框架认证系统主要完成对用户身份认证、授权和计费功能。因特网(如:163,169网)中,认证系统包括:网络接入服务器(NAs)、认证服务器、用户数据库、计费服务器等。系统结构框如图1.3所示:AAA SERVERAuthentication Authorization AccountingNASAAA ClientNetwork
1绪论9图1.3拨号用户接入认证系统框架图Fig1.3 Map of radius system frame1.4.1 RADIUS协议概述在实际使用中应用最广的是基于AAA针对远程用户认证的RADIUS协议,RADIUS(Rmote Authentication Dial一In User Service)是由朗讯公司提出的客户/服务器安全协议,现已成为Internet的正式协议标准(RFC 2138、2139和2200,1997年,RADIUS RFC2039发表,最新的RADIUS RFC2865发表于2000年6月),为众多网络设备制造商所支持,是当前流行的AAA协议,它将安全信息集中存放在RADIUS服务器中,可以集中管理用户验证、口令加密、服务选择、过滤和呼叫计费。RADIUS不仅是协议标准,更多的情况表示整个客户/服务器(Client/Server)系统。RADIUS的客户端通常运行于接入服务器上,客户端的任务是将用户(User)的信息打包发送到指定的RADIUS服务器,然后根据服务器的不同响应进行处理。RADIUS服务器通常运行于一台工作站上,其任务是接收客户端发来的用户连接请求,验证用户,并返回客户端提供服务所需要的配置信息。RADIUS服务器的数据库集中存放了相关的安全信息,避免安全信息凌乱散布带来的不安全性,同时更可靠且易于管理。RADIUS的另一功能是计费,在用户下网的时候,接入服务器会将用户的上网时长、进出字节数、进出包数等原始数据送到RADIUS服务器上,以供RADIUS服务器计费时使用。RADIUS协议使用UDP作为传输协议。UDP(User Datagram Protocol)即用户数据报协议,它是一种面向无连接的协议,传输层不保证报文的可靠性和顺序性,
1绪论10这样报文可能丢失或者是乱序。RADIUS数据包在认证系统客户/服务器之间传送。RADIUS协议使用两个UDP端口分别用于认证以及认证通过后对用户的授权和计费,这两个端号口分别是1812(认证端口)和1813(计费端口)。1.4.2 RADIUS认证、授权RADIUS服务器支持PAP(口令认证协议)、CHAP(质询握手协议)、Unix Lo gin等认证方法,对接入用户进行身份认证以及对通过认证的用户进行授权。认证和授权的详细过程如下:l)接入服务器从用户那里获取用户名和口令(PAP口令或CHAP加密口令),将其与用户信息(如主叫号码、接入号码、占用的端口等)封装成RADIIUS数据包并向RADIUS服务器发送,通常称为认证请求包。2)RADIUS服务器收到认证请求包后,首先查看接入服务器是否已经登记,然后根据包中用户名、口令等信息验证用户是否合法。如果用户非法,则向接入服务器发送访问拒绝包;如果用户合法,那么RADIUS服务器会将用户的配置信息(如用户类型、IP地址等)打包发送到接入服务器,该包称为访问接受包。3)接入服务器收到访问接受/拒绝包时,首先要判断包中的签名是否正确,如果不正确将认为收到了一个非法的包;如果签名正确,那么接入服务器会接受用户的上网请求,并用收到的信息对用户进行配置,授权(收到了访问接受包);或者是拒绝该用户的上网请求(收到了访问拒绝包)。1.4.3 RADIUS计费l)对于用户的一次完整的会话,接入服务器与RADIUS服务器的计费端口1813有两次交互过程:用户通过验证后,接入服务器向RADIUS服务器发送RADIUS计费开始包;当用户断开连接后,接入服务器向RADIUS服务器发送一个RAIDIUS计费停止包。2)当用户通过认证拨入接入服务器后,接入服务器就向RADIUS服务器发送一条&“开始&”报文,该报文通常包括会话&“Id&”、&“用户名&”、&“服务类型&”、&“登录类型&”、&“登录客户lP地址&”、&“报文发送时间&”、&“计帐延迟时间&”以及其他相关属性,RADIUS服务器将收到的每一条记录写入一个文本文件或数据库表中,并给予响应,如果接入服务器在给定的时间内没有收到&“计帐响应&”报文,则继续发送&“计帐请求&”报文,直到它收到RADIUS服务器的响应或请求的次数超过了事先定义的筏值,NAS使用一种回退算法决定重复请求的时间间隔。&“计帐请求&”报文中包含接入服务器发送该报文的时刻和对应事件发生时刻的时间差,称为&“计帐延迟时间&”(Acct一Delay一Time)。3)当用户断开连接后,接入服务器向RADIUS服务器发送一个计费停止报文,该报文除了包含&“开始&”报文中的字段外,还包含&“会话时间&”字段,即该次连
1绪论11接持续的时间,按秒计算,RADIUS服务器收到后同样要给予响应。RADIUS服务器获取了这些计费信息后,把需要的数据记录到文件或数据库中,计费软件定期将这些数据写入数据库,按不同的费率和用户类型进行计费,算出用户上网费用,具体流程如图1.4所示。图1.4拨号用户计费流程图Fig1.4 Charge Flow-chart for Dial一User1.5本论文的主要研究内容与结构安排本文具体内容如下:由于IEEE802.1X只是提出了一个认证协议框架,他必须和其他协议如EAP、RADIUS来协同工作,所以本文先详细的介绍IEEE802.IX的技术细节,和其他认证技术作了对比,然后介绍了EAPoL协议、EAP协议和RADIUS协议,并介绍了这三个协议之间的关系及如何和IEEE802.1X一同搭建认证体系结构,接下来本文重点针对作者提出的代理认证系统模型进行了详细介绍,并对模型及各功能模块的实现进行了阐述。最后对模型进行调试、测试并对结果进行分析总结。本文的结构安排如下:第一章绪论概略地介绍了网络安全知识,网络中存在的威胁,针对威胁所采取的措施、并对802.1X基本知识、AAA协议及RADIUS拨号用户接入认证协议进行了概述。第二章认证技术简要介绍了认证技术的体系结构及目前业界主要采用的认证技术的原理、特点、认证过程并对它们作了比较,对IEEE802.1X的学术意义及前景作了讨论。第三章制订课题研究目标,设计模型详细介绍了EAPoL协议、EAP协议、RADIUS协议原理、目的、功能,针对目前网络楼道交换机不支持802.1X协议的问题提出解决方案及系统模型,并对系统的总体方案、系统结构,模块处理流程作了阐述。第四章设计工具、算法介绍及编程实现介绍了在模型实现中用到的设计软件及算法,然后讨论了模型每一部分的具
1绪论12体实现、针对模型中的核心模块的设计、功能、工作流程、实现函数等进行介绍、分析了重点流程的实现方法。第五章调试测试介绍了测试的目的、分类、内容并针对系统模型进行调试测试,采集相关数据、分析结果、得出结论。
2认证技术132认证技术2.1认证技术概述2.1.1认证技术概念认证技术简单的讲是指对用户身份识别的技术,按其实现的方法可以分为两类,一类是严格的认证方法,一种是非严格的认证方法,非严格认证的方法是将用户静态配置的IP地址或者采用DHCP自动获取的IP地址与用户终端设备的MAC地址和基于端口的VLANID捆绑在一起,用户一开机就自动接入到网络中,不需要对用户的身份进行认证,将IP地址、MAC地址与VLANID的捆绑能够有效地保证合法的终端才能接入网络中,确保用户信息的安全性,但是该方法存在着一个严重的缺陷,即只是保证合法终端接入网络,而不是保证合法用户接入网络;严格认证的方法解决了非严格认证的方法的缺点,能够保证每一个网络使用者都是合法的用户,一个终端可以有多个不同的用户,不同用户还可以拥有访问网络资源的不同权限。目前,严格认证的方法主要运用在PPPoE技术、IEEE802.IX技术和DHCP+技术上。2.1.2体系结构到目前为止,业界主要是按照Internet网络分层体系结构,在协议各层实施认证、鉴权。一般来说根据认证发生所属的网络分层模型可以分为以下体系结构:①物理层认证②IP层认证③UDP/TCP应用层认证④MAC认证802.11b采用典型的物理层认证。物理层认证的优势是,不需要改动上层MAC或者TCP/IP协议;缺点是需要对NIC和接入服务器的硬件进行改动,并且协议修改反应到到设备支持的周期长(比如WEP v1.0),而且很难和AAA进行集成。IP层认证不需要对客户的MAC和TCP/IP层进行修改,其缺陷是在认证前需要向认证请求者开放一部分网络访问权限,为用户分配地址。基于IP的认证一般不提供统计计费能力,扩展性不好。UDP/TCP认证采用应用层认证,不需要对底层进行修改,一般采用令牌卡协议,或基于WEB认证。缺点是在认证前需要开放部分网络,扩展性不好。MAC层认证的代表技术是PPP和802.1x,该认证方式的优点是不需要对设备的硬件进行改动,通过软件升级就可以实现新的认证技术引入。协议反应周期短,可以和AAA进行快速有效的融合(通过EAP)
2认证技术142.1.3几种主要认证技术介绍目前业界针对以太网络主要采用四种认证方式即:VLAN、PPPoE、WEB及802.1X认证技术。2.1.3.1 VLAN认证技术VLAN方式的认证方式是在局域网交换机(LAN SWITCH)的每一个端口配置成独立的VLAN,享有独立的VID(VLAN ID),以达到信息隔离的目的。用户的IP地址被绑定在端口的VLAN号上,以保证正确的路由选择。在VLAN方式中,利用VLAN可以隔离ARP、DHCP等携带用户信息的广播消息,从而使用户数据的安全性得到了进一步提高。在这种方案中,虽然解决了用户数据的安全性问题,但是缺少对用户进行管理的手段,即无法对用户进行认证、授权。为了识别用户的合法性,可以将用户的IP地址与该用户所连接的端口VID进行绑定,这样设备可以通过核实IP地址与VID来识别用户是否合法,但是,这种解决方案带来的问题是用户IP地址与所在端口捆绑在一起,只能进行静态IP地址的配置。另一方面,因为每个用户处在逻辑上独立的网内,所以对每一个用户至少要配置一个子网的4个IP地址:子网地址,网关地址,子网广播地址和用户主机地址,这样会造成地址利用率极低。VLAN方式要求用户端的二层交换机支持标准的VLAN划分方式。由于标准VLAN的TAG值为8个bit,因而最多可接入4096(28)个用户,更适合于分布式用户管理、计费采集系统,但也可采用VLAN嵌套或利用不同的接入板卡号来进行不同VLAN组(每组4096个)的识别,采用此方法能够接入更大量的用户。VLAN认证可解决部分用户认证的问题,但实现计费时长,流量信息采集功能仍需要其它手段(如网管端口信息等)实现。VLAN认证的带宽限制需要在接入交换机端口上实现,而如多ISP选择,用户业务定制,策略选择等功能还得使用其它技术和设备来实现。VLAN认证方式采用静态地址的分配方式,主要用于固定用户的接入认证。2.1.3.2 PPPoE认证方式PPPoE(PPP over Ethernet)点对点协议是于1998年由Redback网络公司、客户端软件开发商RouterWare公司以及Worldcom子公司UUNET Technologies公司在IETF RFC制的基础上联合开发的。主要目的是把最经济的局域网技术、以太网和点对点协议的可扩展性及管理控制功能结合在一起,通过PPPoE协议,服务提供商可以在以在宽带以太网上实现PPP协议的主要功能。认证过程①如图2.1所示,用户通过在客户端安装的PPPoE软件向BRAS(集中宽带接入服务器)提交用户名和密码;
2认证技术15②BRAS接收用户信息并反馈到RadiusServer;③RadiusServer将客户端提交的用户名、密码与自身数据库进行比较,并将结果反馈结果给BRAS;④如果用户名和密码正确,RadiusServer将通告BRAS认证成功,并将用户的帐号和当前用户IP形成表项,开始依时间或者流量计费,反之,RadiusServer将反馈BRAS该用户非法;⑤BRAS根据从RadiusServer获得的认证结果反馈给最终用户,如认证成功,BRAS允许用户访问网络资源,反之拆除与用户的连接;图2.1 PPPoE认证过程Fig2.1 PPPoE authentication process认证原理从原理上来说,建立一个PPPoE(以太网上的点对点协议)会话可以分两个阶段:①发现(Discover)阶段用户主机以广播方式寻找可以连接的所有的BRAS(接入服务器),并获得其以太网MAC地址,然后选择需要连接的主机并确定所要建立的PPP会话识别标号(Session-ID);②会话(Session)阶段用户主机与BRAS(接入服务器)根据发现阶段所协商的PPP会话连接参数进行PPP会话;评价优点:由于保留和继承了PPP协议的特点,PPPoE可以方便的实现和传统拨
2认证技术16号接入VPN的融合。缺点:认证流和业务流混合,认证流和业务流采用相同封装;宽带接入服务器(BRAS)要终结大量的PPP会话,并转发IP数据包,使宽带接入服务器成为网络性能和网络可靠性的&“瓶颈&”;对VLAN支持数目有限,一般为4096个虚拟局域网;PC机上需要安装PPPoE拨号客户端软件程序,为用户使用造成一定难度;BRAS设备昂贵,增加了建网的开销。2.1.3.3 WEB认证技术WEB认证最初是一种业务类型(如电子邮箱,计费浏览等)的认证,通过启动一个WEB页面输入用户名/密码,实现用户认证,这种WEB页面通常是一些门户网站。WEB认证目前已经成为运营商网络平台的新兴认证方式,通过WEB页面实现对用户是否有使用网络权限的认证。认证过程①如图2.2所示,用户计算机启动,系统程序根据配置,通过DHCPServer给用户动态的分配IP地址;图2.2 WEB认证过程Fig 2.2 WEB authentication process②三层交换机Swithc为用户构造对应表项(基于端口号、IP),添加用户ACL服务策略(限制用户只能访问指定的门户网站)③门户网站向用户提供认证页面,在该页面中用户可输入帐号和口令;④Switch将用户信息(IP、账号、口令)传送给RadiusServer;⑤RadiusServer将对这些信息进行认证,并将认证结果反馈给Switch;
2认证技术17⑥如果认证通过,Switch将修改用户的ACL,用户可以访问Internet;特点:①需特殊的客户端软件,降低网络维护工程量;②无需多层数据封装,保证效率问题;③运营商可利用门户网站提供多种业务认证服务;④支持组播;⑤WEB承载在7层协议上,对设备的要求高,建网成本高⑥用户在认证前分配到IP地址,安全性不高;评价优点:无需特殊的客户端软件,降低网络维护工程量,用户使用方便;无需多层数据封装,保证效率问题;运营商可利用门户网站提供多种业务认证服务。缺点:WEB承载在应用层协议上,对于设备的要求较高,建网成本高;该认证方式是基于应用层的认证,为实现底层认证而涉及到最上层,不仅不符合网络逻辑,而且TCP/IP层以下的网络问题往往检测不到,如断电、突发故障等异常离线等问题;认证前需获得IP地址,再上网通过客户端认证,不仅对IP地址造成了浪费而且分配IP地址的Web认证服务器对用户而言是完全裸露的,容易造成被恶意攻击,一旦受攻击瘫痪,整网就没法认证2.1.3.4 IEEE802.1X认证技术这是本文研究重点认证过程①如图2.3所示,用户开机后,通过801.1X客户端软件向S2210发起请求,S2210收到请求会向客户端发送响应包并要求用户提供合法的用户名和密码;②客户端收到S2210的响应后,会提供用户名和密码给S2210。由于此时还没有通过认证,因此S2210只开通未受控的逻辑端口,S2210通过EAP协议将认证信息转发到RadiusServer上进行认证;③如果认证通过,则802.1X系统的受控逻辑端口打开;④客户端软件发起DHCP请求,经S2210转发到DHCP Server;⑤DHCP Server为用户分配IP地址;⑥DHCP Server分配的地址信息返回给认证系统,认证系统记录下用户的相关相信,如MAC、IP地址,用户名等信息并建立动态的ACL;⑦一旦用户有上网流量,S2210就会向RadiusServer发送计费信息,开始对用户计费;⑧用户下网可以通过客户端软件发起离网请求,S2210收到该请求,S2210收到该请求将通告RadiusServer停止计费,删除用户的相关信息,受控逻辑端口关
2认证技术18闭。⑨S2210会通过定期的检测来保证链路的激活状态,如用户掉线或死机,多次检测失败,S2210将自动认为用户已离线,通告RadiusServer停止计费;图2.3 802.1X认证过程Fig2.3 802.1x authentication process认证原理802.1x的认证体系结构中,引入&“受控端口&”与&“不受控端口&”概念,将一个物理LAN端口定义为&“受控端口&”与&“不受控端口&”两类逻辑接入点。不受控端口只能传送认证的协议报文EAP/EAPOL,受控端口传送业务报文。基于端口的网络接入控制是在网络设备的物理接入级对接入设备进行认证和控制,此处的物图2.4 802.1X认证端口Fig 2.4 802.1x authentication port
2认证技术19理接入级指的是网络设备的端口,如Switch的端口。连接在该类端口上的用户设备如果能通过认证,就可以访问网络内的资源;如果不能通过认证,则无法访问网络内的资源,相当于物理上断开了连接。(如上图2.4所示)认证特点①802.1X协议为二层协议,不需要到达三层,对设备的整体性能要求不高,有效降低建网成本;②认证过程通过组播实现,对组播业务的支持性很好;③认证与业务分离,用户通过认证后,系统对后续的数据包无特殊处理,有效的解决了网络瓶颈;④认证系统内的所有设备都必须支持802.1X协议,对已有网络的改造不易实现。优点:该协议为二层协议,不需要到达三层,对设备的整体性能要求不高,可以有效降低建网成本;借用了在RAS系统中常用的EAP(扩展认证协议),可以提供良好的扩展性和适应性,实现对传统PPP认证架构的兼容;实现了业务与认证的分离,由RADIUS和交换机利用不可控的逻辑端口共同完成对用户的认证与控制,业务报文直接承载在正常的二层报文上通过可控端口进行交换,通过认证之后的数据包是无需封装的纯数据包;可以映射不同的用户认证等级到不同的VLAN;不需要进行协议间的多层封装,去除了不必要的开销和冗余昂贵的多业务网关设备,消除网络认证计费瓶颈和单点故障,易于支持多业务和新兴流媒体业务;容易实现:可在普通L3、L2、IP DSLAM上实现,网络综合造价成本低,保留了传统AAA认证的网络架构。缺点:认证系统内所有设备必须要支持802.1X协议;操作系统(除WINXP)需要安装客户端软件,这在一定程度上限制了802.1X认证技术的发展。2.1.4几种认证技术的比较①VLAN方式适用于固定用户,PPPoE、WEB、802.1x三种认证方式都适用于卡号用户和固定用户,都可以不输入用户名和密码。②标准化程度:PPPoE是成熟的标准;WEB认证目前尚无标准;802.1x标准有待成熟。③用户使用方便性:PPPoE和802.1x方式都需要客户端软件(Windows XP支持),从而会增加运营维护成本;WEB要求用户设置TCP/IP属性,对用户技术素质有要求。④组播支持:PPPoE不支持组播,但可在接入网关上实现组播流复制,这种方式很容易实现组播计费,接入网关应靠近用户网络布置;VLAN、WEB和802.1x支持组播业务,接入带宽利用率高,但不易实现组播计费。
2认证技术20表2.1 PPPoE与802.1X认证技术比较Tab 2.1 authentication technical comparison for PPPoE and 802.1x表2.2 WEB与802.1X认证技术比较Tab 2.2 authentication technical comparison for WEB and 802.1x由上述可以看出,目前的认证技术各有优缺点,没有一种十全十美的技术可以满足宽带以太网的运营管理需求,实施时应根据每种技术的技术特点和实际情况选择合适的认证技术。另外,认证只是宽带以太网实现可运营、可管理性的第一步,仅仅有一个好的认证方式还远远不够,还要将认证和其它一些管理特性如对设备的要求较高(BRAS)业界设备户端软件需要需要支持多ISP好好VLAN数目要求无无多播支持差好IP地址认证后分配认证后分配接入控制方式用户用户封装开销较大小标准程度rfc2516Ieee标准认证方式PPPoE802.1X对设备的要求高(全程vlan)低客户端软件不需要需要vlan数目要求多无好多播支持好 IP地址认证前分配认证后分配接入控制方式设备端口用户封装开销小小标准程度厂家私有Ieee标准认证方式WEB802.1X
2认证技术21安全管理(隔离、计费、防止假冒、地址分配等)和灵活的用户接入策略控制及增值业务(多ISP选择、用户业务定制、动态带宽选择、PORTAL等)综合考虑的宽带以太网才是安全的。2.2 IEEE802.1X的学术意义及前景网络自60年代出现以来迅速发展,近几年来更以惊人的速度增长,尤其互联网主机量每年翻一番,Web站点每半年翻一番;同时伴随着IP宽带技术的发展和广泛应用、实时和多媒体应用和技术的飞速发展,网络上多媒体信息和实时任务的数量与日俱增。INTERNET已逐渐成为人们的生活中不可缺少的一部分,随着用户数的急剧增加和对业务多样性要求的提高,网络的安全性问题日益突出,随着宽带以太网建设规模的迅速扩大,网络上原有的认证系统已经不能很好地适应用户数量急剧增加和宽带业务多样性使得传统的认证方式已很难再満足要求,各种校园网、园区网、中小企业网都急需一种能有效管理网络中所有接入用户及接入设备的高效率的认证方式,在这种情况下,1999年6月IEEE电气和电子工程师协会为解决基于端口的网络接入控制问题,研发出了新的802.1x协议,一举解决了PPPoE与Web/Portal等传统认证方式的不足,成为一种可以较为理想地满足当前日益增长的宽带以太网与无线LAN认证需求的新型认证解决方案。把它用于有线LAN中可以有效解决传统认证方式中带来的诸多问题。宽带网技术已成为目前适应网络多业务、实时、多媒体应用的主流,而在宽带网中采用LAN接入又是最常用和最重要的一种方式,如何既能够利用局域网技术简单、廉价的组网特点,同时又能够对用户或设备访问网络的合法性提供认证,是目前业界讨论的焦点。由于传统认证方式对宽带网中用户数据包繁琐的处理造成了网络传输瓶颈,而通过增加其他网络设备来解决传输瓶颈势必造成网络成本的提升,因此无法满足用户对网络安全性、高效性和低成本的要求,IEEE802.1X正是在这样的背景下提出来的,IEEE 802.1x协议的诞生很好满足了用户在这些方面的需求。IEEE 802.1x通过对认证方式和认证体系结构进行优化,有效地解决了传统PPPoE和Web/Portal认证方式带来的问题,消除了网络瓶颈,减轻了网络封装开销,降低了建网成本,从而成为当前宽带网、城域网选型的一个热点。2.3本章小结本章首先简要介绍了按照Internet网络分层概念的认证技术的体系结构,然后对目前业界主要采用的认证技术进行了介绍,分析各种认证技术的认证过程、原理、特点并对它们作了比较,最后对IEEE802.1X的学术意义及前景作了讨论。
2认证技术22
3制订课题研究目标、设计模型233制订课题研究目标、设计模型3.1设定研究目标本人选择对802.1X标准的研究和软件开发作为硕士研究工作主要出自下述考虑:首先由于IEEE802.1X只是提出了一个认证协议框架,他必须和其他协议如EAP、RADIUS来协同工作,其次目前以太网络中的边缘交换机支持802.1X协议的并不多,因此本人决定从这一环节入手利用计算机在网络环境中仿真实现802.1X技术协议,这也为与该协议相关的认证系统的实际开发设计提供一定的参考。802.1X技术是电信级宽带网络发展的趋势,但是其取代PPPoE是一个渐进的过程。针对目前网络现状,最突出的一个问题就是楼道交换机功能简单,不支持802.1X协议,如何解决这一问题,这是本人课题研究的主要内容,即,利用软件支撑,使用户(Supplicant)即使在功能相对简单,不支持802.1X协议的以太网络中也能通过802.1X协议获得认证。3.1.1主要协议介绍与它们在实现IEEE802.1X的过程中的作用在提出解决方法之前,有几个关键性的问题必须在这里说明,首先是三个协议的目的、结构、类型。3.1.1.1 EAPoL协议目的EAPoL协议实质是将EAP协议承载在以太帧上的一种封装结构,其作用是在以太网上传输EAP协议,802.1X利用EAPoL可以在局域环境中的SupplicantPAE与AuthenticatorPAE之间传递EAP数据包,达到认证者与客户端之间的通信的目的。帧结构在这里仅列出用于802.3/Ethernet中的EAPoL帧结构(如图3.1)。0 16 24 31图3.1 EAPoL帧结构Fig 3.1 EAPoL frame tructurePAE EthernetType(1~2octet)包含PAE使用的以太类型值;PAE EthernetProtocolVersionPacket TypePacket Body Length Packet BodyPacket Body&…
3制订课题研究目标、设计模型24ProtocolVersion(1octet)指定EAPoL帧发送方所支持的EAPOL协议版本号;PacketType(1octet)指明当前EAPoL类型;PacketBodyLength(1~2octet)指明&“Packet Body&”的长度;Packet Body(1~N octet)包含了该数据包所传输的数据。包类型802.1X定义了五类EAPoL包类型,它们是:EAP-Packet:packet type=0000 0000,此时packet body中包含与认证相关的EAP协议包,信息格式由具体的认证协议定义。EAPoL-Start:packet type=0000 0001,此时packet body中不包含任何数据,该协议类型用于客户端发起认证过程。EAPoL-Loggoff:packet type=0000 0010,此时packet body中不包含任何数据,用于客户端向认证系统提出下线请求。EAPoL-Key:packet type=0000 0011,主要用于客户端与认证系统在需要的时候向对方传递密钥,此时packet body包含一个密钥描述子结构。这个密钥描述了可以传输的各种类型的密钥,目前只定义了RC4密钥的传递。EAPoL-Encapsulate-ASF-Alert:packet type=0000 0100,主要用于传递告警标准论坛(ASF)定义的告警信息,具体的格式不属于802.1X定义的范畴。本课题用到的EAPoL包类型主要是前3种。3.1.1.2 EAP协议目的EAP协议(可扩展的认证协议)最初是针对PPP协议定义的,其目的是把PPP在LCP阶段的认证机制选择延迟到可选的PPP认证阶段,这就允许认证系统在决定具体的认证机制之前能够请求更多的信息。EAP并不是一个具体的认证协议,而仅仅是一种认证协议的封装格式,即是一种认证消息承载机制,它可以允许认证者和客户端之间采用灵活的方案进行认证,并且对将来出现的更先进、合理的认证技术具有很好的兼容性。EAP的这些特性主要通过扩展EAP中厂家定义的&“EAP类型&”域来实现,其中定义的认证类型可以满足不同层次认证的安全需要。目前可以采用的EAP类型包括:EAP-MD5;EAP-TLS;EAP-TTLS;PEAP;LEAPEAP-MD5功能通过RADIUS服务器提供简单的集中用户认证。在这种方式下,RADIUS服务器不需要证书,用户注册时,RADIUS服务器只是检查用户名和口令,如果匹配,则认证成功,并通知认证者授予用户网络服务权限。EAP-MD5是一种单向认证机制,即只能保证客户端到服务器的认证,并不保证服务器到客户端的认证。EAP-TLS认证提供了一种基于证书的双向认证,除了在连接建立时主机和服
3制订课题研究目标、设计模型25务器之间分配的会话号之外,它需要通过安全连接在客户侧和服务器侧事先发布认证证书,它既提供认证又提供动态会话钥匙分发。EAP-TTLS是一种允许传统基于用户名和密码的认证机制,像CHAP(ChallengeHandshakeAuthenticationProtocol),一次性密码(OneTime Password),和EAP认证协同工作的认证机制。客户端使用TTLS服务器提供的数字证书对网络端进行认证,这个过程是对安全Web服务器方式的模拟,一旦建立了认证隧道,就开始对终端用户进行认证在本课题中采用的802.1X认证机制为EAP-MD5,通过使用EAP封装,客户端和认证服务器能够实现对具体认证协议的动态协商。由此可知,要实现802.1X认证,关键的一点就是实现EAP协议在客户端与认证服务器之间的顺利通讯,但是一边是以太结构的单一网络(客户端),一边是复杂的其它网结构(认证服务器),如何保证二者之间的正常数据包交换,这个问题解决了,则为802.1X认证在简单交换机上的实现奠定了理论基础。0 8 16 24 31Code Identifer Length Data&…Data&…图3.2 EAP帧结构Fig3.2 EAP frame formatEAP帧结构Code字段:用于识别EAP协议包的类型,包括:request(请求)、response(响应)、success(成功)和failure(失败);Ientifier字段:用于帮助匹配request和response包;Length字段:指出整个EAP协议包的长度;Data字段:包括与认证机制相关的信息。其格式为&“type(类型)-type-data(类型数据)&”。Type类型定义了type-data中的数据内容和格式,已定义的部分type如下:1、Identity用于传用户名;2、Notification用于认证系统向用户传递一些可显示的消息3、Nak只在response消息中有效,当不支持对方请求的认证机制时,就可以用它进行否决,对方收到该信息后将重新选择新的认证机制(如果它已经实现该机制),直到双方都支持为止,从而完成协商;
3制订课题研究目标、设计模型264、MD5-Challenge用于协商对传输数据进行MD5加密5、One-Time Password(OTP)一次性密码6、Generic Token Card通用令牌环13、EAP-TLS基于证书的双向认证其中,1、2、3、4必须实现。从4以后为具体的认证机制。3.1.1.3 Radius协议目的用于对远程拨入的用户进行授权和认证。它可以使用单一的&“数据库&”对用户进行认证(效验用户名和口令)。它主要针对的远程登录类型有:SLIP、PPP、Telnet和Rlogin等。在本课题中也拟采用Radius认证协议做为802.1X认证服务器使用的协议,这也是业界目前所普遍采用的一种认证方式。NAS RADIUS服务器Access-RequestAccess-ChallengeAccess-RequestAccess-Accept图3.3认证成功Fig3.3 The map of authentication success
3制订课题研究目标、设计模型27NAS RADIUS服务器Access-Request分组丢失超时重发Access-RequestAccess-ChlallengeAccess-RequestAccess-Accept图3.4超时重发Fig3.4 resend for timeoutNAS RADIUS服务器Access-RequestAccess-Reject图3.5认证失败Fig3.5 map of authencation failure
3制订课题研究目标、设计模型28RADIUS协议原理NAS(网络接入服务器)提供给用户的服务可能有很多种,如图3.3&—3.5所示,用户提供用户名和口令信息,使用PPP协议时,是用户发送带有认证信息的数据包,NAS一旦得到这些信息,就产生并且发送一个&“Access-Request&”数据包给RADIUS服务器,其中包括了用户名、口令(基于MD5加密)、NAS的ID号和用户访问的端口号。如果RADIUS服务器在一段规定的时间内没有响应,则NAS会重新发送上述数据包,另外如果有多个RADIUS服务的话,NAS在屡次尝试主RADIUS服务器失败后,会转而使用其他的RADIUS服务器,RADIUS服务器直接抛弃那些没有加&“共享密钥&”的请求而不做出反应,如果数据包有效,则RADIUS服务器访问认证数据库,查找此用户是否存在,如果存在,则提取此用户的信息列表,其中包括了用户口令、访问端口和访问权限等。如果用户信息被否认,那么RADIUS服务器给客户端发送一个&“Access-Rejict&”数据包,指明此用户非法,如果需要的话,RADIUS服务还会在此数据包中加入一段包含错误信息的文本消息,以便让客户端将错误信息反馈给用户。反之,如果用户被确认,RADIUS服务器发送&“Access-Challenge&”数据包给客户端,并且在数据包中加入了使客户端反馈给用户的信息,其中包括状态、属性。客户端提示用户做出反应以提供进一步的信息,客户端得到这些信息后,就再次向RADIUS服务器提交带有新请求ID的&“Access-Request&”数据包,和第一次的&“Access-Request&”数据包不一样的是:第一次的数据包中的&“用户名/口令&”信息被替换成此用户当前的反应信息(经过加密),并且数据包中也包含了&“Access-Challenge&”中的状态属性(表示为1或1),RADIUS服务器将对该数据包作出响应。RADIUS帧结构图3.6 RADIUS数据包结构Fig3.6 RADIUS frame formatCode域长度为8位,用于指定RADIUS数据包类型,具体取值见下表:
3制订课题研究目标、设计模型29表3.1 RADIUS数据包code字段取值Tab 3.1 The value of RADIUS Code segment在该域中,1、2、3用于用户认证,4、5用于流量统计,12、13用于试验阶段,255作为保留。Identifier域长度为8位,主要用于匹配请求和回应数据包,也即是数据包的编号。Length长度为16位,取值范围(20&≤Length&≤4096),此长度包括(Code、Identfier、Length、Authenticator和Attribute)。超出范围的数据将被视为附加数据(Padding)或直接被忽略。Authenticator长度为16个字节(128位),主要用于鉴定来自RADIUS服务器的回应,同时也用于对用户口令进行加密。一般是两种形式,一种是应用在&“Access-Request&”数据包中,该Authenticator是一个16字节的随机数,称为&“RequestAuthenticator&”,它在NAS和RADIUS服务器之间通过&“共享密码&”传输数据的整个生命周期中是唯一的。另一种是应用在&“Access-Accept&”、&“Access-Reject&”和&“Access-Challenge&”中的Authenticator域,称为&“ResponseAuthenticator&”。其算法为:ResponseAuth=MD5(Code+ID+Length+RequestAuth+Attributes+Secret)Code含义1 Access-Request2 Access-Accept3 Access-Reject4 Accounting-Request5 Accounting-Response11 Access-Challenge12 Status-Server(experimenta)13 Status-Client(experimenta)225 Reserved
3制订课题研究目标、设计模型30表3.2 RADIUS数据包属性域数据格式Tab 3.2 attribute domain data format of RADIUS packetType说明Type说明1 User-Name 5 NAS-Port-ID2 Password 6 Service-Type3 CHAP-Password 7 Framed-Protocol4 NAS-IP-Address&…&…Type字段指明了Attribute的类型,通用的有几十种,如表3.2:Length字段包括了Type、Length、Value的长度和Length=Type+Length+ValueValue值有4种类型String-------0~255字节,字符串Ipaddress----32位,IP地址Integer------32位,整数Time---------32位,从00:00:00 GMT,January1,1970到当前的总秒数。由此可知,RADIUS协议是一个不定长的协议栈。802.1X的精髓就是实现了对用户接入端口的控制,它只关心端口的状态,即授权与未授权,而真正的认证过程却是由客户端与认证服务器之间进行的。3.1.1.4三个协议在实现IEEE802.1X过程中的作用EAPoL、EAP、RADIUS三个协议在实现8021X过程中起到了关键作用,EAP协议使得客户端系统可以采取灵活的认证方式与认证服务器建立连接实现认证,而EAPoL协议保证了EAP认证信息在以太网络环境中的完整传输,RADIUS协议(或者其它高层协议)则利用了对EAP的扩展属性实现EAP信息再次封装,从而可以穿越复杂的异构网络到达认证服务器系统;在具体的实现过程中,认证者系统扮演了双重角色,即对客户端系统来说是认证服务代理,而对认证服务系统来说则充当了客户端系统代理的角色,换言之,对认证服务系统来说,并不需要知道认证信息是通过什么方式传递到客户端,它只关心对认证方式的选择和对认证信息的解析以及与用户数据库交互,同理对客户端系统来说也不需要知道认证信息是如何传输到认证服务器的,它只关心对认证方式的选择、用户信息的输入等,通过这种方式可以将三个协议很好的融合、运用,可以说没有这三个协议也就不会有8021X协议的实现。
3制订课题研究目标、设计模型313.2设计模型针对课题目标,本人利用以下模型来实现:PA(Proxy Authentication)图3.7模型结构Fig 3.7 The map of model structure如图3.7所示,在本模型中,SupplicantPAE是认证请求者,做为认证发起方(也可以由认证者发起),PA是代理认证系统,由一台微机充当,也是协议实现的关键,该系统分为AuthenticatorPAE模块、Radius模块及Database模块,本文后面章节将详细介绍各模块工作原理及实现,EnthernetSwithc是边缘交换机仅作为代理,透明地传输认证交互信息,整个系统采用认证者与认证服务器集成,结合用户信息数据库Database实现课题目的。3.2.1 SupplicantPAE认证请求者SupplicantPAE做为802.1X协议实现的客户端,主要是完成以下功能:1.向代理认证系统发起认证请求;2.接收代理认证服务系统的EAP请求,并进行应答;3.对重认证请求进行EAP应答;4.支持密钥传递;3.2.2代理认证系统PA(Proxy Authentication)代理认证系统是协议实现的核心部分,在软件实现环境中,该系统分为三个组成部分(如图3.7),分别是AuthenticatorPAE、Radius及Database。3.2.2.1 AuthenticatorPAE该模块是整个系统实现的核心,为了更好的完成功能,将其设计为三个功能子模块,分别为M1、M2和M3(如图3.8所示),每个模块独立设计,有着具体的功能:SupplicantPAE(端口访问实体)EnthernetSwithDatabaseAuthenticatorPAERadius
3制订课题研究目标、设计模型32图3.8 AuthenticatorPAE(M0)结构图Fig 3.8 The structure of M0 mold1.AuthenticatorPAE认证者PAE(主模块M0)功能:负责对其它模块的调用;接收其它模块返回参数;主动对外部客户端发起认证(通过外部模块的驱动触发认证过程,如客户系统的EAPOL-Start(认证发起帧)报文、物理接口的UP消息、DHCP报文和ARP报文的触发);主动对外部客户系统发起周期重认证;通知认证服务器开始与停止计费;信息交互过程中的协议解析、超时处理、异常处理;2.Model1 EAPoL(子模块M1)功能:接收外部客户端的接入认证请求,根据请求内容与外部客户端进行交互;接收EAPEAPoL数据包;封装EAP协议到802.3以太帧;提取EAP信息到M2模块;响应EAPoL数据包;3.Model2 EAP-Radius子模块(M2)功能:封装EAP协议到Radius协议;接收Radius Server(认证服务器)发出的数据包;传送EAP信息到M1模块;支持密钥传递;4.Model3端口控制子模块(M3)功能:根据交互结果操作被控端口的开启和关闭;计费的开始和结束等;M1 M2 M3
3制订课题研究目标、设计模型333.2.2.2 AuthenticatorPAE模块结构及处理流程图1.模块结构图图3.9 AuthenticatorPAE模块工作图Fig 3.9 working chart of AuthenticatorPAE mold2.模块处理流程图EAPoL子模块(M1)接收请求者发来的EAPOL报文,根据报文信息解析出逻辑受控端口身份标志数据,并确定流程图类型,将逻辑受控端口标志、数据指针、图3.10 M1子模块处理流程图Fig 3.10 The map of M1 mold Processing flow chart接收EAPoL报文解析逻辑受控端口身份标志数据是否触发认证返回错误信息M2子模块处理接收认证端报文解析端口信息M0模块处理M1M2M3客户端PAE模块认证服务模块radius
3制订课题研究目标、设计模型34报文类型、EAP报文输入到M2子模块,由M2模块处理协议协商。该模块接受接口模块发来的MAC地址和Port信息,根据受控方式和受控情况决定是否要触发认证;该模块接收后端认证接口层发来的EAP报文、PAE对象指针,根据报文及目前状态情况解析出端口信息,输入接口模块,控制端口状态,其处理流程如图3.10。是否满足条件不满足否是不满足条件满足条件图3.11 M2子模块处理流程图Fig 3.11 Tthe map of M2 mold Processing flow chart获取接入请求报文查找状态表,定位状态节点位置是否有等待时间启动定时器,状态保持转移判断是否超时完成状态变迁返回失败信息转移判断向RADIUS服务器发送RADIUS数据包应答请求,将请求封装成RADIUS数据包
3制订课题研究目标、设计模型35EAP-Radius子模块(M2)根据输入信息(逻辑受控端口标识)查找逻辑受控端口对应的认证者或申请者对象,根据PAE对象的动态数据情况,定位流程状态节点位置,判断转移列表是否满足条件,若满足条件进行跳转,若不满足则维持原状,从而进行协议协商过程控制。具体功能包括:接收M1子模块发来的逻辑受控端口标识指针,根据指针定位逻辑受控端口的PAE实体对象;接收认证系统模块M0发来的定时超时消息,利用M1子模块提供的函数发送EAPOL报文;向认证模块发送EAP报文,请求后端认证,驱动进行协议处理封装EAP协议到Radius协议,传送EAP信息到M1模块;接收Radius模块发出的数据包,支持密钥传递;其处理流程如图3.11。3.3本章小结本章首先详细介绍了EAPoL、EAP、RADIUS协议的具体结构、目的、功能及实现过程,然后针对课题目标提出解决方案及系统模型,并对模型结构、功能模块、处理流程作了详细阐述。
3制订课题研究目标、设计模型36
4设计工具、算法介绍及编程实现374设计工具、算法介绍及编程实现4.1使用的设计工具介绍针对课题模型及各模块的功能,本人利用VisualC++结合虚拟设备驱动程序(VxD)来具体实现,加密部分用到了openssl软件包,在设计RADIUS认证服务器模块时用到了LlNUX平台上的ICRADIUS软件包,在设计RADIUS数据库Database时用到了软件包rpm,ICRADIUS的用户口令数据库建立在MySQL数据库上,使用的ICRADIUS为0.7版,为了支持认证安装了perl的Authen,根据802.1X协议文档进行系统的总体设计,包括模块的划分、各模块功能的定义、输入输出以及和其他模块的交互。4.2算法介绍4.2.1单向散列函数单向散列函数的概念是公开密钥密码的中心。尽管它本身并不是一个协议,但对本文中所讨论的几个协议来说却是一个基本结构模块。单向散列函数的概念用一句话简要概括就是计算起来相对容易,但求逆却非常困难。也就是说,已知x我们很容易计算f(x),但己知f(x),却难于计算出x。在这里,&“难&”定义成:即使世界上所有的计算机都用来计算,从f(x)计算出x也要花费数百万年的时间。实现单向散列函数必须满足以下条件:1.散列函数必须对任意长度的明文,产生固定长度的散列函数值;2.对任意的明文Ln,散列函数值h(m)可以通过软件或硬件容易实现;3.对任意的散列函数值x,要找到一个明文m与之对应是不可行的;4.对一个明文m1,要找到一个明文m2,而且具有相同的散列值h(ml)=h(m2)在计算上不可行;5.要找任意一对不同的明文(ml,m2)而且具有相同的散列值h(ml)=h(m2)是不可行的;前两个是所谓的单向特性(one-way),条件3,4是对散列值的数字签名方法所作的安全保障,条件5的作用是防止所谓的生日攻击,满足条件1-4的称为&”弱散列函数&”,同时满足条件5的称之为&”强散列函数&”。4.2.2 MD5算法MD5算法是应用最广的散列算法,其中MD5是在MD4基础上经过加强的算法。MD5可以输入任意长度的明文,产生128位的摘要,任意长度的明文首先需要添加一定的数据位,使之总长度与448(512-64)在模512同余,添加的方法是第一个添加
4设计工具、算法介绍及编程实现38位为1其余的为0,然后将真正的明文长度赋予前面己添加过的明文后.此时明文长度正好是512的倍数。在本课题的认证系统中,用户的密码就是以MD5算法经过加密后存储在Radius数据库中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在RADIUS的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码不被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度,其具体算法实现为:Auth=MD5(Code+ID+Length+RequestAuthticatior+Attributes+Secret),在这里,Authenticator是个128位的随机数,称为&“RequestAuthenticator&”,它在认证者和RADIUS服务器之间通过&“共享密钥&”实现MD5算法。4.3协议模型的实现4.3.1 SupplicantPAE认证请求者PAE4.3.1.1端口访问控制端口访问控制提供对系统功能可选的扩展,他提供一种防止申请方对系统提供的设备非授权访问。比如:如果关注的系统是MAC桥,则要想严格控制可访问的公开桥端口的访问,需要在对桥的访问和与桥相连接的LAN土的加以控制,如果想严格控制一个部门成员仅在一个组织内部的LAN访问。访问控制的实现需要靠系统强制申请方必须到系统的受控端口认证,并根据认证过程的结果,系统决定是否申请方可以访问受控端口的访问。如果申请方没有得到访问的授权,系统设置受控端口状态到非授权状态。这种机制用于任何一个系统通过受控端口去认证另一个系统,这个系统包括:端站、服务器、路由、MAC桥、交换机。4.3.1.2端口访问实体PAE端口访问实体PAE是对每个参与基于端口的访问控制的系统端口而言。PAE能分别或者同时扮演请求者或认证者的角色,PAE负责把认证请求者的信息送到认证者PAE作为对认证者PAE询问的响应,认证请求者PAE也可能发起认证交互和执行EAPOL-Logoff交互。4.3.1.3 SupplicantPAE的实现下面介绍对SupplicantPAE认证请求者PAE具体实现。SupplicantPAE数据结构typedef struct paeEntity_Type{forw struct paeEntity-Type//PAE实体back struct paeEntity-Type//PAE实体paeld String 16//PAE实体ID号
4设计工具、算法介绍及编程实现39portNo String 16//端口号flags Unsigned32//实体标识SuppStruct paeEntitySupp//请求者专用数据}paeEntity;客户端具体实现程序(部分):/*per 802.1x sertion 8.5.1.0 SupplicantPAE*/int userLogoff;int logoffSent;int reqId;int regAuth;int eapSuccess;int eapFail;int startCount:int previousId;int receivedId;/*per 802.1x sertion 8.5.1.1 Key recive*/int rxkey;/*this isn&’t in the speer,but is useful*/int authType;/*EAP authentication type field*/public:CDotlx(void);CDotlx(void);int get authWhile();void set_authWhile(int);int get_aWhile();void set aWhile(int);int get heldWhile():void setheldWhile(int):int get_quietWhile 4:void set_quietWhile(int);int get_reAuthWhen();void set_reAuthWhen(int);int get_startWhen():void set startwhen(int);
4设计工具、算法介绍及编程实现40int get_txWhen();void set_txwhen(int):int get_initialize();void set initialize(int);int get_SUPPStatus();void set suppStatus(int);int get_userLogoff():void set tick(ini);以上代码部分实现了对函数及定时器的初始化主要函数介绍void set userLogoff(int)int get_LogoffSent();void set_LogoffSent(int)int get_reqId():void set_regId(int);int get_regAuth():void set_regAuth(int)int get_eapSuccess():void set_eapSuccess(int)iot get_eapFail();void set_eapFail(int);int get_startCount():void set_startCount(int);int get_previousld();void set_previousId(int)int get_receivedId();void set teceivedld(int)int get_rxKey();void set_rxKey(int):int get authType();void set authType(int):}Class CEapol{private:char*m_pFrame;
4设计工具、算法介绍及编程实现41CAdapter m_Adapter;eapol_ether_header ethHead:以太帧头eapol_hdr eapolHead;eapol_key_header eapol Key_Head;BOOL m_more_*frames_avail;BOOL m_sleepable;unsigned long received_packet_size;Public:CEapol(void)://认证主体函数BOOL Authenticate();int eapol_pae_do_state(void);int eapol_key__receive_do_state(void);int eapol_bringup_interface(char*device)int eapol_decode_packet(u_char*in):char*eapol_create_start_stop_frame(char stst);void send_eapol_nak(int type);int eapol_process_key(void);void eapol_pae_set_state(EapolStates newState):int eapol_pae_transition_state();BOOT,more_frames(void);void allow_sleep(BOOL yesno);//封装CAdapter的接受帧BOOL EAP_get_frame(u_char*);//调用CAdapter的方法初始化网卡BOOL SetAdapter(LPTSTR pAdapterNamel;//协议中说明8.5.10.1.3void txStart(void)://8.5.I0.1.3void txLogoff(void);}class CAdapter{private:BOOL m_more_frames_avail;BOOL m_sleepable;Int m_frame_size;LPPACKET m_lpPacket;//指向包指针
4设计工具、算法介绍及编程实现42LPADAPTER m_lpAdapter;//指向接发数据的网卡public:CAdapter(void){m_frame_size=0;m_lpPacket=NULL:m_1pAdapter=NULL}CAdapter(void){;//初始化方法BOOL initatize_frame_funcs(LPTSTR Device,int Buf_size,long Timelut)//收发帧方法BOOL get_frame(char*,long BuffLen);BOOL send_frame(char*DataBuff,long Bufflen)//状态方法//void shutdown frame funes(void);void done_with_current_frame(void)};4.3.1.4客户端认证界面图4.1客户端认证界面Fig4.1 The face of Supplicant system4.4代理认证系统PA的实现4.4.1认证者PAE模块M0为了有效实现协议功能,在本模型中将认证者PAE设计为一个主模块M0与
4设计工具、算法介绍及编程实现43图4.2 M0模型工作流程图Fig 4.2 The map of M0 model working flow chart接收M1参数,判断参数=Logoff?M2与Radius认证服务器通讯,接收RadiusServer响应的数据包,并提取EAP信息将其传送到模块M1,M1封装EAP到EAPoL协议中,并发送到SupplicaintPAEM0调用M2,M2与Radius认证服务器通讯,接收M1传送的EAP数据包,并将其封装到Radius协议中,发送到Radius模块调用模块M1AuthenticatorPAE M0调用模块M3,强制用户端口进入未授权状态,禁止数据包通过交换机AuthenticatorPAE提示客户端进行认证,中断调用M1M1与客户端通讯,接收EAPoL数据包提取用户个人信息数据包EAP,传送到模块M2Radius模块认证通过,M0发送AcountingPacket到认证服务,通知其计费,M0结束是否M0发送Acounting-Stop数据包到服务器通知计费停止
4设计工具、算法介绍及编程实现44三个子模块,每个子模块有其具体的功能,协议工作时各子模块交互实现其功能,其结构及处理流程已在第三章中详细介绍,这里就不在赘述,下面要重点介绍的是针对每个子模块功能的具体工作流程图及编程实现。认证者PAE模块支持如下操作:初始化认证、重新认证、终止认证、重传及各子模块调用。对话开始之前,端口被设置为未经授权状态。如果请求者身份未知,则认证者PAE通过发送EAP-request/id报文开始初始化认证过程,收到该报文的请求者PAE发出EAP-respond报文做为响应。如果请求者通过发送EAPOL-Start报文发起认证,则认证者PAE以EAP-request/id报文作为响应,开始后续的认证过程。认证者PAE支持周期性的重新认证。如果在重认证时受控端口认证失败,则受控端口将从授权状态转为非授权状态。认证者PAE负责重发它与请求者PAE之间丢失的报文。这样,如果EAP报文在二者之间的传输中被丢失,认证者PAE将重传报文。相应重传策略应考虑使用本协议的LAN环境。例如在包丢失率很低而且传输延迟很小的环境中,使用较小的超时重传时间。对于EAPOL-start报文、EAP-failure或EAP-success报文,如果有必要,由请求者PAE重发。因为EAP-failure和EAP-success报文不被请求者PAE认可,认证者PAE不会重发这些报文。并且如果EAP-failure或EAP-success报文丢失,相关的定时器(authWhile)需要终止。构造定时器Class CDotlx{int authWhile;int aWbile;iut heldWhile;int quietWhile;int reAuthWhen;itit startWhen;int txWhen;/*peer 802.1x session 8.5.2.2*/int initialize;int suppStatus;in之initialize;Suppstatus;int tick}说明:aunthWhil是Supplicant PAE设定等待Authenticator响应的时间。
4设计工具、算法介绍及编程实现45初始值为authPeriodaWhile:用来判定Authenticator与Supplicant之间或与Authentication Server之间的信息交互是否超时。heldWhile:由Supplicant使用,设定静默的时间(初始值为heldPeriod).quietWhile:设定静默的时间(初始值为quietPeriod)。reAuthWhen:重认证定时器,决定Supplicant何时发起重认证。startWhen:在申请者PAE状态机中使用,决定何时传送EAPOL-Start数据包(初始值为startPeriod)。TxWhen定时器决定何时传送EAPOL数据包(初始值为txPeriod。tick变量是为响应系统时钟而设定的,只要系统时钟跳变一次,tick变量就设置为TRUE,在具体操作过程中再设置为FALSE。Cdot1x用来描述IEEE802.1x的状态变量,Ceapol描述IEEE802.Ix的客户端的状态机,Cadapter在链路层上用来接发数据包Class Cdotlx。认证者PAE数据结构:/*the struct of AuthenticatorPAE*/typedef struct paeEntity_Type{forw struct paeEntity-Type//前传PAE实体back struct paeEntity-Type//后传PAE实体paeld String 16//PAE实体ID号portNo.String 16//端口号flags Unsigned32//实体标识AuthStruct paeEntityAuth//认证者数据SuppStruct paeEntitySupp//申请者数据}paeEntity;/*contruct the counter of AuthentiorPAE*/int AuthEntCon;int AuthEapLofWhiCon;int AuthEntAuting;int AuthTimeout;认证者PAE状态机定义了一些用于统计的计数器,假定计数器增加到超过相关管理对象规定的最大值时,计数值将归零。AuthEntersConnecting任何其他状态转入CONNECTING状态的次数。AuthEapLogofsWhileConnecting状态机因接收到EAPOL-Logof消息从CONNECTING转入DISCONNECTED状态的次数。
4设计工具、算法介绍及编程实现46AuthEntersAuthenticating状态机因接收EAP-Response/Identity消息从CONNECTING状态转入AUTHENTICATING状态的次数。AuthAuthSuccessesWhileAuthenticating末端认证状态机表明申请者认证成功而从AUTHENTICATING转换到AUTHENTICATED状态的次数。AuthAuthEapStartsWhileAuthenticating状态机因接收从申请者发出的EAPOL-Start消息而从AUTHENTICATING转入ABORTING状态的次数。4.4.1.1 EAPoL子模块M1定义EAPoL Packet头数据结构/*the struct of EAPOverLanHdr*/typedef struct eapOnLanHdr_Type{eapOverLanHdrDest[MAC_ADDR LENGTH]Unsigned 8//目的地址eapOverLanHdrSource[MAC_ADDR LENGTH]Unsigned8//源地址eapOverLanHdrProto Unsigned 16//使用的协议eapOverLanHdrVersion Unsigned 8//协议版本eapOverLanHdrVersion Unsigned 8//帧类型eapOverLanUdrLength Unsigned 16//帧长度}eapOverLanHdr;EAPoLPacket数据结构/*the stuct of EAPoLPacket Attribute*/typedef struct tageapOverLan_ATTR{unsigned char ucAttrCode;//属性码unsigned char ucAttrLen//属性长度union{unsigned char AtrText[EAPol_ATTR_MAX_SIZE];//属性值struct tagAtrText{unsigned char ucTag;unsigned char pAtrText[EAPol_ATTR_MAX_SIZE-1];}Attr};}RAD ATTR,LPRAD_ATTR;消息包结构typedef struct tagPACKET INFO{unsigned short usBufLen;//消息包长度unsigned char pBufer[EAPol_PACKET_MAX_SIZE];//消息包内容
4设计工具、算法介绍及编程实现47提取数据包EAPoL0并判断:源MAC地址=01-80-C2-00-00-03?PacketType=0000 0001?向客户端发送数据包EAP-Request/Identity并等待响应接收客户端EAP1oL数据包判断PacketType=00000000?提取PackBody字段内数据EAP1信息,传递到模块M2,等待M2响应数据包接收由M2传回的数据EAP2Radius信息,并封装为EAPoL1,发送给客户端,等待响应(超时退出)接收客户端数据包EAPoL2,判断PacketType及端口号提取PackBody字段内EAP2oL信息,传递到M2,并等待响应接收M2返回参数=Success?认证成功,M1结束返回初始态,M0提示用户端进行认证提示客户端,输入数据无效,请输入用户个人信息M2返回参数=Rechoose重新选定认证机制PacketType=00000010,返回参数Logoff到主模块M0否否否
4设计工具、算法介绍及编程实现48unsigned long ulSrcIP;//消息包源地址unsigned short usSrcPort;//消息包源端口unsigned long ulDestIP;//消息包目的地址unsigned short usDestPort;//消息包目的端口}PACKET INFO,*LPPACKET_INFO主要函数介绍//提取EAP消息并进行封装BOOL EAP_get_frame(u_char*)BOOL init_EAPOL();void done_with_current_frame(void);char*eapol_create_nak_frame(void):u_char*eapol_get_current_frame(void);int txCannedFail(x)//传送EAPOL帧,类型为EAP_Pakcet,包含由authenticator传送给Supplicant的EAP_Failure包。int txCannedSuccess(x)//传送EAPOL帧,类型为EAP_Pakcet,包含由Authenticator传送给Supplicant的EAP_Success包。Int ReqID(x)//传送EAPOL帧,类型为EAP_Pakeet,包含传送给Supplicant的EAP Request/Identify包由流程图可以知道,EAPoL子模块主要完成的功能是接收请求者发来的EAPOL报文,根据报文信息解析出逻辑受控端口身份标志数据,并确定流程图类型,将逻辑受控端口标志、数据指针、报文类型、EAP报文输入到M2子模块,由M2模块处理协议协商;该模块接受接口模块发来的MAC地址和Port信息,根据受控方式和受控情况决定是否要触发认证;该模块接收后端认证接口层发来的EAP/RADIUS报文、PAE对象指针,根据报文及目前状态情况解析出端口信息,封装成EAPoL数据帧发送回请求者。在这里对具体的封装过程作一介绍:在第三章中曾对EAPoL数据包结构作了讨论,按照802.1X定义的EAP包类型(3.1.1),该模块在数据包交换过程中利用功能函数来具体实现,当PacketType=0000 0000时,模块封装EAP信息到PacketBody字段中承载认证信息形成EAP-Packet报文,然后根据返回参数将其传递到请求者。根据PacketType取值不同,该模块还分别构成认证发起帧(EAPOL-Start)、退出请求帧(EAPOL-Logof)、密钥信息帧(EAPOL-Key)、这三种类型的数据帧仅在请求者和认证者之间传递。4.4.1.2 EAP-Radius子模块M2
4设计工具、算法介绍及编程实现49EAPHeader数据结构/*the struct of EAPHeader*/typedef struct EAPHeader Type{code Unsigned 8identifier Unsigned 8len Unsigned 16}EAPHeader;RADIUS数据包头结构/*the struct of RadiusHeander*/typedef struct tagRADIUSes HEADER{unsigned char ucRadCode;//RADIUS协议消息码unsigned char ucRadId;//RADIUS协议消息标识号unsigned short usRadLen;//RADIUS协议消息长度unsigned char ucRedTextf16];//RADIUS协议消息内容}RAD HEARER*LPRAD HEADER;主要函数介绍/*初始化函数设计*///始化EAPoL数据包ini init_eaptls(char*char*);//关闭连接int eapt1s_shutdown();//按照EAP-TLS状态机来处理接收到的数据包return 1 if ture else 0int eaptls_decode_packet(u_char*);void eaptls_init_radom();//握手前int eaptls reset();cant Is reset()int eaptls_build_ack*out,int*out_size);//构建Hello消息int eapls_buile_client_hello(u_char*out,int*out_size);//构建finish消息int eaptIs_build_client_finish(u_char*Out_size)://构建挑战消息响应voideaptls_auth_challenge();/*加密部分函数设计*/
4设计工具、算法介绍及编程实现50接收M1EAP1数据,封装到Radius协议内EAP1-RadiusAccessReques(t或其它高层协议)发送数据包EAP1-Radius-Access-Request到Radius模块,并等待响应(超时返回)接收Radius模块发送的数据包EAP-Radius1,判断源Port=1812?提取eap-message中EAP2数据,保存为EAP2Radius,传递到M1,并等待响应(超时重传)接收参数EAP2oL,封装为EAP2-Radius-Request数据包,发送到Radius模块,并等待响应(超时重传)接收认证模块数据包,提取EAP信息,判断源Port=1812 Code=2?传递参数Success到M1,M3,M2结束重发送数据包EAP1-Radius-Access-RequestCode=3返回到最初状态If data-type=3传递参数Rechoose到M1,等待M1否否是否是
4设计工具、算法介绍及编程实现51int eaperypt_init();//提取客户端支持的SSL加密文件数目int eapcrypt_get_num_ciphersuites();//用特定的加密算法来加密数据,加密算法基于握手商定int eapcrypt_encrypt_data(u_char*cerint cert_len,u_char*data,short cipher,u_char*enc_data,int*enc_data_len,);/*签名函数设计*/SignKey,MD5(data)int eapcrypt_sign_data(char*privKeyFile,u_char*data,int data_len,u_char*sign_data,int*sign_len,char*);int eapcrypt_verify_cert(u_char*,char*,int cert_len);int eapcrypt_create_verify_data(u_char*pms,u_char*client_rand,u_char*server_rand,u_char*handshake,int handshake_len,u_char*verify_data,);int eapcrypt_build_data_record(short chipper,u_char*client_rand,u_char*server_rand,u_char*data,int data_len,u_char*out_record,int*out_len);int eaperypt_key_key_hmac(u_char*,int u_char*);
4设计工具、算法介绍及编程实现52int eapcrypt_decrypt_key(u_char*,u_char*,int u_char*,int);int eapcrypt_get_peer_key(u_char*,int)根据M2子模块工作流程图可知该模块主要完成的功能是接收M0模块发来的定时超时消息;利用M1子模块提供的函数接收EAPOL报文并解析EAP信息;利用自定义函数封装EAP到RADIUS数据包;向RADIUS模块发送EAP报文请求后端认证,驱动进行协议处理,传送EAP信息到M1模块;接收Radius模块发出的数据包;构造加密、签名等函数支持密钥传递;在具体的包交换实现过程中,该模块用到了RADIUS定义了的扩展EAP来增加了对EAP协议和其他访问控制有关功能的支持,EAP扩展是非常重要的一个附件,它使得IEEE802.1X和RADIUS的整合变得不复杂,通过增加两个新的属性EAP-Message和Message-Authenticator来实现EAP扩展。模块首先利用封装函数将EAP信息封装在EAP-Message字段构成EAP/RADIUS数据包,而不修改EAP信息的结构和信息,当接收到RADIUS模块发来的数据包时,将EAP信息传送到M1子模块,RADIUS消息只被认证不被加密,因此有必要在新的扩展里提供对完整性的保护。在保证RADIUS数据包发送过程中的数据完整性方面,模块用到了Message--Authenticator属性,该属性允许对RADIUS数据包所包含的内容进行HMAC-MD5校验和进行签名从而保证了RADIUS数据包发送方的真实性与数据完整性。4.4.1.3端口控制子模块M3模块M3工作流程图图4.5 M3模块工作流程图Fig 4.5 the map of M3 mold working flow chart参数=Seccess?控制用户端口,禁止数据包通过准备接收M2传递来的参数转换控制端口为授权状态,允许数据包通过,M3结束否是
4设计工具、算法介绍及编程实现53主要函数介绍void GetPortMode(x)//控制端口模式在Auto和non-Auto之间转换。变量的取值包括以下三种:.ForceUnauthorized:控制端口保持在Unauthorized状态。.ForceAuthorized:控制端口保持在Authorized状态。.Auto:随认证状态的变化而设置为Authorized或Unauthorized状态。函数GetPortMode(x)接受子模块M2返回参数,控制认证逻辑端口状态,具体的代码部分考虑到文章篇幅就不做介绍了,在里只针对在本模块中用到的改进方法进行介绍。标准的802.1X定义的是基于物理端口的访问控制,也就是说,一旦用户端口实现了认证,则连接在同一端口上的其它用户就可以不通过认证而使用网络,这样就造成难以实现针对粒度的用户认证和计费,如下图所示,假如用户1通过了认证,用户2就可以不需要通过认证就能上网。图4.6局域网或者VLAN用户如果要使用标准的802.1X设备进行Fig 4.6 the user of lan or vlan粒度控制用户认证和计费,就必须要保证每一个用户都要直接连接到802.1X设备上,这样一来又造成了两方面不足:一是建网成本高,二是局域网内部用户或VLAN用户通讯的困难,如上图所示,假如用户3要和用户n(属于同一局域网或VLAN)进行内部通讯,那么他们都必须要先进行登录,但实际上他们并不需要使用互联网,按理也不该对他们进行计费。针对该问题,本人在NAS基础上进一步提出了逻辑端口及端口工作模式切换的设计思路,将交换机上的每一个物理端口设计成如右图所示的逻辑结构。一个物理端口上含有受控端口和非受控端口,非受控端口只允许图4.7逻辑端口设计结构Fig 4.7 structure of logic controlled port
4设计工具、算法介绍及编程实现54802.1X认证报文通过,其它任何类型的数据报都不允许通过,对受控端口设计为支持三种工作模式:1.逻辑端口(默认)本模式下认证系统仅为该逻辑端口的第一个用户创建一个认证者对象进行会话,当认证通过后,开启该端口,不对后来的请求进行认证,当被认证用户下线后关闭端口。2.逻辑端口+源MAC:本模式下认证系统为该逻辑端口的每个用户创建一个认证者对象,当用户发送EAPoL-Start请求报文时,系统提取用户MAC值,更新认证者对象的MAC值,对每个用户进行独立认证,让证通过后系统将该MAC地址加入控制列表(ALC),允许该MAC地址使用网络服务,由于MAC地址的唯一性,则通过过该方法可以实现用户的粒度管理,连接到同一端口上的其它用户不单独通过认证是无法使用网络的,这也有效地解决了共享LAN中非法用户搭载问题。3.逻辑端口+LAN(VLAN):本模式下,认证系统通过对AuthControlledPortControl值的设置(ForceAuthorized),将受控端口无条件置为认证状态,使同一局域网或VLAN内部用户无须经过烦琐的认证过程与计费而保持正常联通,如有必要,也可以转换到模式2进行认证。端口工作模式切换:首先系统检查是否满足切换条件,若不满足,M3将拒绝执行并给出提示,如果满足切换条件则通过对AuthControlledPortControl值的设置(ForceUnAuthorized)而将端口设置为非认证状态,从而控制用户对网络资源的访问。4.4.2.RADIUS模块实现4.4.2.1认证协议标准参照RADIUS协议结构RFC2865和RFC2866文档,RADIUS服务器支持两个标准的认证协议:PAP和CHAP.1.基于PAP认证的设计PAP(Password Authentication Protocol)是基于口令的协议标准。在输入呼叫之初,PAP传送用户的ID和口令到企业的安全网关(如NAS),NAS将认证请求传送到后端的RADIUS服务器进行认证。但在传输线路上,用户ID和口令并不加密传送。RADIUS服务器支持标准的PAP认证。认证过程如下:1)用户登录到NAS,NAS提示用户输入用户名和口令;2)用户输入用户名和口令,并传送到NAS;3)NAS将口令进行加密,并将加密口令、用户名、NAS的IP地址和端口号等属性填入Access-Request消息包中,然后将该RADIUS请求包发送到RADIUS
4设计工具、算法介绍及编程实现55服务器;4)RADIUS服务器接收到请求包后,根据包中的源地址及用户名,到数据库中查找相应的NAS信息及用户信息(如用户口令);如果用户名或该NAS不存在,RADIUS服务器立即发送一条Access-Reject消息包。Access-Reject消息可带一条可选的文本消息,描述拒绝访问的原因;5)如果用户存在,RADIUS服务器对接收到的加密口令进行解密计算,并与数据库中的用户口令进行比较。如一致则向NAS发送Access-Accept包,否则发送Access-Reject包。Access-Accept包中包含了用于该次会话的一些授权信息,包括服务类型(外壳或帧)、协议类型、分配给用户的IP地址(静态或动态)等。6)NAS根据接收到的RADIUS包判断是否允许远程用户进入企业内部网络,并进行合适的配置。NAS和RADIUS服务器之间具有相同的共享密钥,共享密钥不在网络上发送。NAS和RADIUS服务器之间通过消息包中的Authenticator来相互验证(具体实现这里就不多讨论了)。用户口令在NAS和RADIUS服务器之间经过加密传输。NAS首先将共享密钥和Request Authenticator进行哈希计算(MD5),然后将哈希值与用户口令进行异或。RADIUS服务器在接收到加密值后,用同样的方法可以解密得到用户口令,从而认证用户。虽然用户口令在NAS和RADIUS服务器之间是加密传输,但在用户和NAS间的公网上传输却是通过明文传输,很容易被窃听,并且它对重放攻击和或反复的尝试攻击没有保护措施。因此在实际应用中为保证安全性建议不采用此种认证方法。2.基于CHAP认证的设计挑战握手认证协议(CHAP,Challenge HandshakeAuthentication Protocol)也是以标准为根据。CHAT协议通过三次握手周期性地认证对端的身份,在初始链路建立时完成,可以在链路建立之后的任何时候重复进行,CHAP协议的基本认证步骤如下:1)链路建立阶段结束之后,认证者向对端发送&“挑战&”消息。2)对端用经过单向哈希函数计算出来的值做应答。3)认证者根据它自己的预期哈希值的计算来检查应答,如果值匹配,认证得到承认,否则,连接应该终止。4)经过一定的随机间隔,认证者发送一个新的挑战给对端,重复1到3.由于CHAP协议中,通过递增改变的标识符和可变的挑战值,CHAP防止了重放攻击,重复挑战限制了对单个攻击的暴露时间,认证者控制挑战的频度。CHAP协议中用户口令经过加密传输,因此有效地防止了攻击者的窃听。在上述远程访问系统中,RADIUS服务器支持标准的CHAP认证,具体的认证步骤如下:1)远程用户登录到NAS,NAS提示用户输入用户名和口令,并生成一个随机的
4设计工具、算法介绍及编程实现56Challenge(16位),连同CHAP标识符(ID)一起发给用户;2)用户端计算出Response,并将CHAP-ID,Response以及CHAP用户名一起传送给NAS;3)NAS将Challenge、用户名、CHAP ID以及Response分别填入Access-Request包中,并将该消息包发送到RADIUS服务器;4)RADIUS服务器接收到请求包后,根据包中的源地址及用户名,到数据库中查找相应的NAS信息及用户信息:如果用户名或该NAS不存在,RADIUS服务器立即发送一条Access-Reject消息包。5)如果用户存在,RADIUS服务器根据Challenge及数据库中的用户口令,用与客户端相同的算法计算出新的Response,并与请求包中的Response进行比较。如果一致,则认证通过,并向NAS发送Access-Accept包(消息包中填入了所需的授权信息),否则发送Access-Reject包;6)NAS根据接收到的RADIUS包判断是否允许远程用户进入企业内部网络。NAS和RADIUS服务器之间具有相同的共享密钥。用户口令在整个传输过程中都经过加密传输。在用户端,用户口令经过了加密处理:Response=MD5(CHAP ID+UserPassword+Challenge)这就避免了口令在不安全的网络上以明文传送,并有效的防止了重放攻击,获得了更大的安全性。4.4.2.2认证服务模块(RADIUS)实现定义RADIUS协议的数据包结构:/*the stuct of Radius Attribute*/typedef struct tagRADIUSes ATTR{unsigned charunsigned charunionunsigned char AtrText[RADIUS_ATTR_MAX_SIZE];//属性值struct tagAtrText{unsigned char ucTag;unsigned char pAtrText[RADIUS_ATTR_MAX_SIZE-1];}Attr;};}RAD ATTR,LPRADes ATTR;//消息包结构
4设计工具、算法介绍及编程实现57typedef struct tagPACKET INFO{unsigned short usBufLen;//消息包长度unsigned char pBufer[RADIUS_PACKET_MAX_SIZE];//消息包内容unsigned long ulSrcIP;//消息包源地址unsigned short usSrcPort;//消息包源端口unsigned long ulDestIP;//消息包目的地址unsigned short usDestPort;//消息包目的端口}PACKET INFO,*LPPACKET_INFO;//环境变量typedef struct tagRADIUS_SYSTEM_INIunsigned short RADIUSAuthPort;//RADIUS协议认证端口号unsigned short RADIUSAccountPort;//RADIUS协议计账端口号}RADIUS_SYSTEMes INI,*LPRADIUS_SYSTEM INI;//Nas相关信息typedef struct tagNAS_INFO{unsigned long usNasNo;//NAS编号unsigned char NasID[ID_MAX_LEN+1];//NAS标识号unsigned char NasHostName[NAME_MAX_LEN十1];//NAS机器名unsigned char NasType;//NAS类型unsigned long NasIP;//NAS IP地址unsigned char//共享密钥unsigned charunsigned longunsigned longShareKeyForNas[KEY_MAX_LEN]与NAS间的预共享密钥Unsigned char ucLen;//与NAS间的预共享密钥长度Unsigned long ulProfileNo;Unsigned ulAcProfileNo;}NASINFO,*LPNASINFO;RADIUS主要函数介绍初始化RADIUS服务:DWORD InitRADIUSServiceo;
4设计工具、算法介绍及编程实现58停止RADIUS服务:DWORD StopRADIUSServiceo;接收消息线程:DWORD WINAPI RADIUSRecvsProc(LPVOID UdpPort);消息处理线程:DWORD WINAPI RADIUSProcess(LPVOID pParam);代理包函数:DWORD WINAPI ProxyPacket(LPVOID pParam);产生接收包:LPPACKETes INFO CreateAcceptPacket(SESSIONPOOL&&Session);产生拒绝包:LPPACKET INFO CreateRejectPacket(SESSIONPOOL&&Session);发送消息包:DWORD SendPacket(LPPACKETesINFO packet);记帐处理线程:DWORD WINAPI ProcessThread(LPVOID IpParam);记帐代理线程:DWORD WINAPI AcProxyPacket(LPVOID pParam);RADIUS数据包交换过程//从消息包中得到用户名UCHAR*GetUserID(LPPACKET_INFO pPacket){RAD_HEARER m_RadHeader;unsigned short m-Current;memcpy((void*)&&m_RadHeader,pPacket-&>pBufer,sizeof(RAD-HEARER));m_RadHeader.usRadLen=ntohs(mes RadHeader.usRadLen);m_Current=20;UCHAR attr_type;UCHAR attr_len;UCHAR*UserID;UserlD=new UCHAR[l7];memset(UserID,0,17);while(m_Current&<m_RadHeader.usRadLen){attr_type=pPacket-&>pBufer[m Current];attr_len=pPacket-&>pBufer[m Current+l];if(attr_len&<3){delete[]UserID;retum NULL;}if(attr_type=RAD_ATTR_USER_NAME){if(attr_len&>18){delete[]UserID;retum NULL;}memepy((void*)UserID,&&pPacket-&>pBufer[m Current+2],attr_len-2);
4设计工具、算法介绍及编程实现59if(UserID[attr_len-2]!=0)UserID[attr_len-1]=0;}return UserID;m-Current+=attres_len;}delete UserID;return NULL;}一旦用户认证通过,RADIUS模块向AuthenticatiorPAE模块发送Access-Accept包,并且在其中包含有描述用于该次会话的一些授权信息,这些信息包括:服务类型(帧)、协议类型、分配给用户的IP地址(静态或动态)、应用的访问列表或者在路由表中安装的静态路由。在系统管理界面中,管理员可以集中为用户定制需要返回的这些授权信息,并存储在数据库Database表中。当用户认证通过,程序将根据用户ID寻找数据库中的用户RADIUS配置信息,并将这些配置属性填入Access-Accept包中发送出去。//发送消息包SendPacket(LPPACKETINFO packet)SOCKET s;SOCKADDR_IN recipient;DWORD dwRet=0;s=socket(AF_INET,SOCK_DGRAM,0);if(s=INVALID_SOCKET){dwRet=GetLastErrorO;LogSys(CREAT_SOCKE_ERROR,dwRet);return GetLastErroro;}recipient.sin_family=AF_INET;recipient.sin_port=htons(packet-&>usDestPort);recipientsiri_addr.s_addr=htonl(packet-&>u1DestIP);int ret=0;ret=sendto(s,(char*)packet-&>pBufer,packet-&>uSBufLen,0,(SOCKADDR*)&&recipient,sizeof(recipient));if(ret&<0)
4设计工具、算法介绍及编程实现60{dwRet=CretLastError();LogSys(UDPes SEA ERROR,d-Ret);closesocket(s);return dwRet;}closesocket(s);return 0;}4.4.3数据库Database实现考虑到文章篇幅,下面只是对该模块做一简要介绍,在该模块的实现中用到了rpm,安装了perl的Authen,数据库模块的引入为协议认证计费的实现提供了所需要的各个表格,以下是各表格定义:Tables in radiusdictionarynasradacctradacct_summaryradcheckradgroupcheckradgroupreplyradreplyrealmgrouprealmsusergroupdictionary表格定义了在radius消息中的属性及属性值和其数字ID的对应关系,还定义了每个属性值允许的数据类型。nas定义了该radius管理的访问服务器的信息,如其加地址,设备名字等等。radacct用来保存记账信息。radacct_summary也是用来保存记账信息。radcheck定义了当用户拨入时需要检查的属性,如:密码,时间限额等等。radgroupcheck定义了某个组的成员在拨入时,需要检查的公共属性。每个用户都可以属于一个组。radgroupreply定义了该组成员在拨入验证通过以后,在应答信息内需要定义的
4设计工具、算法介绍及编程实现61属性及其对应的属性值。radreply定义了成员在拨入验证通过以后,在应答信息内需要定义的属性及其对应的属性值。usergroup定义了用户和组的对应关系。添加内容到各表格中1.对于directionary表格的内容,icradius软件提供了一个脚本文件一script/dictimport.pl来创建,首先需要编辑该文件,设置my$dbusername='roof;my$dbpassword='rooipass';为对应的数据库管理员的用户名和密码。脚本运行如下;[root@radiusd scripts]#./dictimport.pl,/raddb/dictionary2.向nas表格中添加内容,values(0,&"QuidwayS3526&",&"S3526&",&"202.207.241.14&",&"usr'&",24,&"rnlix1819'&",&"public&",&"on&");第一个字段含义为标示该nas设备的id号,为数字类型:第二个字段为设备名;第三个字段为设备的简称;第四个字段为设备的ip地址;第三个字段为设备的简称;第四个字段为设备的ip地址;第五个设备类型,对于认证方类型为usr:第六个为设备的端口总数;第七个字段为radius服务器和nas之间共享的密码;第八个字段为sump协议的共同体名:最后一个为snmp是否开放。3.计费管理界面srcipts目录下的radius.cgi是一个实现web界面管理用户及记费信息的cgi程序,在radcheck表格中代码如下:INSERT INTO radcheck VALUES(&"&",&"admin&",&"Password&",&"TYUT&");INSERT INTO radcheck VALUES(&"&",&"admin&",&"Radius-Operator&",&"Yes&");这里,admin为radius的管理员用户名,TYUT为管理员密码。4.5本章小结本章对整个系统的实现作了概述,介绍了系统各模块的具体实现,重点针对模型核心模块代理认证系统的实现作了详细介绍,分析了各功能模块的工作流程及实现过程、对重点模块使用的函数、数据结构定义等作了介绍。
4设计工具、算法介绍及编程实现62
5检测调试635检测调试测试虽然是软件生存周期的一个独立阶段,但测试工作却渗透到从分析、设计直到编程的各个阶段中,如测试计划的编写从分析和设计阶段就开始了,而具体的测试工作随编程工作的不断深入也在进行中。通常,对软件系统进行测试的目的在于通过测试检验所开发的软件是否达到了设计的目标,发现软件开发中存在的错误。对网络协议软件来说,还存在判断相关软件是否符合相关协议标准,是否具有要求的性能,以及是否能与同类网络软件进行互联互通的问题。802.1X认证软件是在实验室环境下进行开发并测试的,本章主要对在该环境下进行测试的过程、测试集的定义及测试的结果进行详细的描述。5.1测试分类网络系统的测试可以分为两大类:软件测试和网络测试。前者将网络软件视为普通的软件进行功能性能测试,即分别在开发过程中对基本部件进行&“单元测试&”(Unit Test)和在开发基本完成后对整个系统进行&“集成测试&”(Integrated Test)&"。网络测试是针对网络系统涉及多个通信对象的特点进行的,它可以进一步分为&“符标测试&”(Conformance Test)、性能测试(Performance Test)和&“互通测试,(Interoperable Test)。从严格的意义上讲,网络测试系统的设计与开发比被测试对象的开发更为复杂。受开发周期的限制,本试验系统的测试未能按照上述程序进行完整的测试,仅在开发过程中进行了单元测试,在系统开发完成后进行的集成测试中增加了部分与&“符标测试&”相关的内容5.1.1单元测试单元测试也被称作模块测试,是针对软件设计的最小单位程序模块进行正确性检验的工作。单元测试是测试的第一步,基本上一个函数即可以作为一个单元。当代码无错误地通过编译后即可以开始单元测试工作了。在进行单元测试之前,最好使用LINT(一种检查代码编辑错误的工具)对代码进行预处理。①单元测试过程必须完成以下几个步骤1)在详细设计阶段完成单元测试计划。单元测试的测试计划由单元的开发者编制,但在测试计划执行前必须进行审查。这些审查由开发者以外的人进行,第一遍审查由开发者的直接上司去做,其目的在于找出测试计划中的错误、缺点和疏漏之处。第二遍审查由测试该单元所属系统的测试人员进行,其目的在于确认测试计划是否符合公布的标准。如果测
5检测调试64试计划在任何方面有问题,都将被立即退回到开发者手中重新进行修改。2)建立单元测试环境,完成测试设计和开发。单元测试的第二个步骤主要是确定测试所采取的方法和使用的工具,并把测试的环境准备好。另外,测试用例的书写非常重要,测试用例设计的好坏直接影响到测试的效果。3)执行单元测试用例,并且详细记录测试结果。4)判定测试用例是否通过。5)提交单元测试报告。②单元测试内容1)模块接口测试在单元测试的开始,应对通过所测模块的数据流进行测试。如果数据不能正确地输入和输出,就无法进行其他测试。为此,对模块接口需要如下的测试项目:调用所测模块时的输入参数与模块的形式参数在个数、属性、顺序上是否匹配;所测模块调用子模块时,它输入给子模块的参数与子模块中形式参数在个数、属性、顺序上是否匹配;是否修改了只做输入用的形式参数;输出给标准函数的参数在个数、属性、顺序上是否正确;全局量的定义在各模块中是否一致;限制是否通过形式参数来传送。2)局部数据结构测试模块的局部数据结构是最常见的错误来源,应主要检查以下的各种错误:不正确或不一致的数据类型说明;使用尚未赋值或尚未初始化的变量;错误的初始值或错误的缺省值;变量名拼写错或书写错;不一致的数据类型。3)路径测试由于通常不可能做到穷举测试,所以在单元测试期间要选择适当的测试用例,对模块中重要的执行路径进行测试。应当实际测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。4)错误处理测试比较完善的模块设计要求能预见出错的条件,并设置适当的出错处理,以便在一旦程序出错时,能对出错程序重做安排,保证其逻辑上的正确性。这种出错处理也应该是模块功能的一部分。5)边界测试在边界上出现错误是常见的,因此,要特别注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。④单元测试的标准1)软件单元功能与设计需求一致。
5检测调试652)软件单元接口与设计需求一致。3)能够正确处理输入和运行中的错误。4)在单元测试中发现的错误已经得到修改并且通过了测试。5)达到了相关的覆盖率的要求。6)完成软件单元测试报告5.1.2集成测试在系统开发完成以后,对单元模块在单元测试发现的问题的基础上进行修改后便需要进行集成测试。集成测试的目的是对整个系统是否达到整体设计目标进行检验。因此,需要将己分别通过单元测试的模块按要求组合起来作为一个整体来进行相关的测试,检查系统的外部行为,通过测试结果判断模块之间的接口是否存在问题,因此集成测试也被看作是对模块之间相互接口关系的测试。集成测试既要求参与的人熟悉单元的内部细节,又要求他们能够从足够高的层次上观察整个系统。一般由有经验的测试人员和主要的软件开发者来完成集成测试的计划。5.2测试说明5.2.1测试方法与测试集本系统的测试采用了&“黑盒测试法&”,即通过测试数据的输入,观察被测对象的输出是否符合期望值,包括:各模块对输入数据的响应是否与设计相符,状态机的变迁是否与设计相符,对超界数据的处理是否正常等。具体的测试过程是通过运行测试集进行的。测试集是根据软件的总体设计、各模块的功能和性能说明而设计的一系列测试用例的集合。测试集由侧试组和组成测试组的测试用例构成,每个测试用例就是对每个具体功能进行测试而设计的一组数据。受篇幅所限,本文将不对测试集作全面的介绍。表5.1为本系统测试集的测试组简表:表5.1 802.1X软件系统测试集组成简表Tab 5.1 The software system test of 802.1x单元模块测试组说明测试组名称分别由系统模型中各功能模块设置的&“测试例&”组成认证流程测试组针对系统设置的认证处理流程的检测用户端实例测试组包括用户界面、网卡识别、显示和选择的测试非正常数据测试组分别对规定范围输入数据的正确响应,对越界的输入数据进行越界提示系统响应时间测试组用户操作响应时间及服务器响应时间的测试用户输入后系统启动时间&≤0.5秒服务器响应时间&≤1秒5.3测试结果
5检测调试66认证服务器可观测认证流程,并根据收到的报文做相应的处理。如果被测实体正确处理了该报文,则在日志文件中会产生一条正确的记录。如果没有收到报文,说明被测实体或测试代码在某处存在不恰当的处理,从而可以进一步定位问题的所在,测试中结果如下所示:802.1X REPORT:BASM state machine on port 0 changed from Fail state to Idlestate802.1X:REPORT:anew EAPOL packet is received.802.1X:REPORT:EAPOL:Packet type is EAPOL-Start802.1X:REPORT:ASM state machine on pod 0 changed from Held state toConnecting state802.1X:REPORT:anew EAPOL packet is send out.802.1X REPORT:EAPOL:Packet type is EAPOL-EAP802.1X REPORT:EAP:RequestpacketPacketidentifieris1,length is 6802.1X REPORT:EAR This is an identity packet802.1 X REPORT:a new EAPOL packet is received.802.1X REPORT:EAPOL:Packet type is EAPOL-EAP802.1X REPORT:EAP:This is an identity packet802.1X REPORT:ASM state machine on port 0 changed from ConnectingEAPOL packet is send out.Packet type is EAPOL-EAP Packet type is EAPOL-EAP802.1X REPORT:EAP:Response packet.Packet identifier is 1,length is 5802.1X REPORT:EAP:This is an identity packet802.1X REPORT:ASM state machine on port 0 changed from Challengestate to Response state经过多次测试,在已定义的测试集的范畴,观察结果初步可以认为所开发的系统基本上达到了设计说明界定的目标,基本完成了802.1X协议所要求的认证功能,大体上符合该协议标准。5.4本章小结本章首先对测试的目的、方法、分类及测试内容作了概述,其次对本系统进行调试测试,采集相关数据,分析数据,最后得出结论。
6总结676总结6.1结论本文在学习研究802.1X认证技术发展的背景与协议本身的基础上,详细描述了作者在网络环境下的微机系统中设计开发的802.1X试验系统,以及对该系统的测试。初步的测试结果表明,该系统能够完成该协议要求的基本认证工作,大体上符合该协议标准。作者的主要工作包括:1、阐述了认证协议相关技术介绍认证体系的特点和体系结构,对网络设备有关认证协议进行分析,对目前主流的几种认证方式的原理、认证过程、实质、特点进行分析并比较各自的优缺点。2、软件系统的总体设计在对IEEE802.1X协议进行探讨研究基础上,提出一种利用软件支撑模型,在以太网络环境下客户端与认证服务器之间顺利实现EAP协议数据包交换,从而实现802.1X协议功能,达到IEEE802.1X认证目的。根据802.1X协议文档进行总体模型设计,包括模块的划分、各模块功能的定义、输入输出以及和其他模块的交互。3、代理认证系统的设计与实现为更好地实现协议标准,对模型中各模块及子模块功能进行定义与划分,设计实现代理认证系统模块功能,通过对端口访问实体的详细分析,定义数据结构、相关变量及函数。4、软件的测试工作在实验室环境下对软件所定义的各项功能进行测试,并对测试结果进行采样分析,得出结论。实现设计说明界定的目标,基本完成802.1X协议所要求的认证功能。6.2对未来工作的改进由于时间及环境的原因,本文主要对802.1X的基本功能的设计和实现作了描述,软件是通过虚拟设备驱动程序(VxD)来实现的,因此在实际运用时,该软件与交换机其他软件的交互、对端口状态的控制,数据包传输过程中的加密解密等将是未来工作的重点。另外考虑到实际运营的需要,可以增加用户级别设定、计费等功能。从传统的电信资费方式看,有包费制与计费制之分,包费可分月包费、年包费和一次性收费;计费制有按次、按时、按量等等区分。要进行商业运营系统的开发,必须将认证与各种计费方式结合起来考虑,以求达到最好的效果。
6总结68
致谢69致谢本文的研究工作是在导师姚家宁副教授的悉心指导下完成的。导师渊博的知识、严谨治学的工作作风、忘我的工作态度、求真务实的敬业精神,深刻地影响和激励着我。三年以来,在导师的指导下,自己不仅在学术上有所收获,而且初步培养了独立研究、分析、解决问题的能力。而其中,导师悉心的指导、严格的要求和富有启发性的建议,为论文的完成起到了关键性的作用,在此,特向指导我的恩师表示崇高的敬意和诚挚的谢意!衷心感谢网络中心领导及同事,正是与他们的友好合作和相互讨论,给作者不少启迪和新的思路,才使得作者能够顺利完成本课题。同时他们为本文的工作提出了许多建设性的建议,为本文的完成起到了重要的作用。同时也特别感谢我所有的同学和朋友,正是他们不断的关心和支持、鼓励,才使我能够顺利完成硕士阶段的学习。最后感谢我的父亲、母亲正是他们自始至终的关心、理解、支持和鼓励,才使作者能够在部队工作三年后重返校园,潜心完成学业。
致谢70
参考文献
71参考文献
[1]Manheim M L.IEEE Draft P802.1X/D11Standards for Local and Metropolitan AreaNetWorks:Standard for Port based Network Access Contro.1993[2]Tzafestas S G and Dalianis P J.Fault Diagnosis in Complex Systems Using ArtificialNetworks[C].Proc.of the IEEE Conf.On Control Applications.1994,2:877-882[3]AP plication of IEEE802.1x in HiperLAN type2:Chalmers University of Technology,Department of Signals and Systems Goteborg,Sweden Wireless LAN Systems,EricssonEnterprise AB,Sundbyberg,Master of Science ThesisJuly 200lEX031/2001[4]Maryland.Your 802.11 WirelessNetwork hasNoClothesWilliamA.ArbaughNarendarShankarY.C-Justin Wan Department of Computer Science University of Maryland College Park.20742.March 30,2001[5]Carpenter G A,Grossberg S.ART2:self-organization of stable category recognition codes foranalog input patterns[J].Applied Optics.1987,26(23):4917-4930[6]Alexander Gammerman.CISCO:Authentication with 802.lx andEAP AcrossCongested WANLinks.1998[7]IEEE 802.1x Pre-Authentication June 17,2002Authors:Bernard Aboba Microsoft One MicrosoftWay,Redmond,WA 98052-6399[8]MSDN:802.lx Authentication:Microsoft Windows CE.NET[9]The trouble with 802.lx:P.J.Connollywww inforworld.com//articles//fe//xml//02//03//11fe802lx.xml[10]IEEE 802.1x:2001:the IEEE802.1 WorkingGroup[11]Farmer J D,Packard N H,Perelson A S.The immune system,adaptation and machinelearning[J].1986:187-204[12]Vapnik V N.The Nature of Statistical Learning Theory[M].University of Southampton.1998[13]D.B.Percival,A.T.Walden.Wavelet Methods for Time Series Analysis[M].Cambridge UniversityPress.2000[14]C.Lee Giles,Steve Lawrence,A.C.Tsoi.Noisy Time Series Predication using a Recurrent NeuralNetwork and Grammatical Inference[J].Machine Learning.2001.2001:145-160[15]Cheung D,Ng V,Fu A.IEEE Transactions on Knowledge and Data Engineering.1996[16]An Initial Security Allalysis of IEEE 802.lx standards:Arunesh Mishra William ArbaughDepartment ofComputer Sicence University of Maryland 20742 CS-TR-4328UMIACS.TR-2002.10参考文献
72[17]RFC2865:Remote Authentication Dial In User Service(RADIUS)[18]RFC2866:RADIUS Accounting[19]RFC1661:The Point-to-Point Protocol(PPP)[20]RFC1777:Lightweight Directory Access Protocol[21]RFC1778:The String Representation of Standard Attribute Syntaxes[22]RFC2251:Lightweight Directory Access Protocol(v3)[23]RFC2252:LDAPv3:Attrlbute Syntax Definitions[24]新的宽带认证-IEEE 802.lx协议:www.myhard.com/20020530/16137171.shtml[25]以太网安全技术白皮书:华为公司[26]基于端口的访问控制-802.1x用户接入管理[27]Cisco Systems,Inc.Cisco 105 12.0 Configuration Fundamentals.1999.4[28]高传善,高永勤.局域网与城域网.第五版.电子工业出版社.1998:801-805[29]谢希仁.计算机网络(第二版).大连理工大学出版社.1996:143-158[30]林宇,郭凌云.Linux网络编程.人民邮电出版社.2000:240-254[31]胡成松,汪凯.SNMP网络管理.机械工业出版社.2001[32]岑贤道,常安青.网络管理协议及应用开发.清华大学出版社.1998.7[33]蔡铁岭译.Oracles开发人员指南.中国水利电利出版社.2000.1[34]王长琼.基于组合RBF网络的故障诊断方法及应用研究[J].计算机工程与应用.2001.14:13-21附录73附录作者攻读硕士学位期间完成论文情况[1]谢波,姚家宁.IEEE802.1X协议安全性问题分析.重庆大学学报.自然科学版已录用