4.4 无线局域网MAC层接入认证协议
本节详细地介绍了无线局域网络中的关键技术与接入认证相关协议,包括WEP技术、802.11i标准、EAP协议和RADIUS协议。接着,对比了无线局域网MAC层常见的几种接入认证方式,对它们的优缺点进行了分析。
1.WEP技术
有线等效保密(WEP)协议通过对在两台设备终端间无线传输的数据进行加密的方式来达到防止非法用户窃听或侵入无线网络的目的。WEP具有3种实现方式:无加密、40位密钥加密、128位密钥加密。当然,密钥位数越长,安全强度就越高。无加密几乎可以说是没有机密性,网络中的数据信息是以明文的形式传输的,这样任何一个能访问无线局域网的用户都可以窃听获取该数据信息。在40位密钥加密和128位密钥加密的情况下,无线接入点的初始设置中存有一个以数字、字母构成的字符串或是一个以16进制的字符串形式存在的共享密钥,无线终端要接入该AP访问网络,必须要提供该共享密钥字符串。
(1)WEP加密
通常WEP加密包含两个步骤:第一个步骤是在WEP的明文信息中加入一个校验和,加入该校验和的目的是防止攻击者将已知的文本加入数据流中来破解WEP;第二个步骤就是加密。
具体的加密过程如下(以40位密钥加密为例)。
①将24位的初始向量(IV,Initialization Vector)和40位的密钥信息连接起来,产生一个新的64位的中间密钥。
②将64位中间密钥作为RC4算法的输入。RC4算法的核心是一个伪随机数发生器(PRNG,Pseudo-Random Number Generator)。
③利用RC4算法和中间密钥产生一个密钥流。
④产生明文流,具体措施是将明文信息和校验值连接起来。
⑤将密钥信息流和明文信息流按位异或,形成密文。
⑥产生最后的消息,该消息由初始向量和密文信息连接组成。
由于在密文信息中加入了完整性校验值(ICV,Integrity Check Value),所以密文信息的长度比明文长度多4个字节。该完整性校验值由CRC-32算法产生,该算法产生的完整性校验值是32位的,也可以说是4字节的。完整性校验值和明文连接在一起形成明文信息流,所以明文信息流的长度比明文长度多4个字节,密文信息的长度和明文信息流长度一样。
(2)WEP解密
WEP解密的过程基本上是其加密过程的逆过程,具体的步骤如下。
①将消息中24位的初始向量与输入的40位的密钥信息连接起来,产生一个64位的中间密钥信息。
②利用RC4算法和中间密钥产生一个密钥流。
③产生明文流,具体措施是将密文信息和密钥流按位异或。
④对明文信息中的明文计算完整性校验值。
⑤比对校验值,将明文信息流中的校验值和计算出的校验值进行对比。
(3)WEP RC4算法
RC4算法是1987年由著名的密码专家Ron Rivest为RSA数据安全公司设计的一种流密码算法。该算法采用固定的密钥长度,对明文的数据流进行异或运算,数据流的长度与明文的长度相同。它的工作方式是输出反馈(OFB)方式,运算速度快,加密所需要的时间比DES短得多。
(4)WEP身份认证
IEEE 802.11b定义了两种认证方式。第一种是开放式系统认证,由于整个过程是在完全透明的状态下进行的,所以该方式没有任何的安全认证措施,在此不做讨论。第二种则是共享密钥认证方式,在该方式中密钥的传输不是以明文的形式发送的,而是采用WEP加密机制,它只能用在经过WEP加密的站点之间。在认证的过程中无线接入点会向申请接入的用户发送一个数据包,该用户只有在使用正确的WEP密钥对数据包进行加密,并将其返回给接入点,才可以通过认证接入网络。若用户使用的是不正确的WEP密钥或者没有使用密钥,则认证失败,不允许其接入接入点。
具体的认证过程如下。
①接入者向无线接入点提出身份认证接入请求。无线接入点在收到接入认证请求后,生成一个128位的挑战信息,并将上步得到的字符串信息传送给接入者,等待其传送加密后的数据信息。
②接入者在收到挑战信息之后,采用WEP密钥进行RC4加密计算,并将加密后的数据信息发送给无线接入点。
图4.12 WEP共享密钥认证机制
③无线接入点在收到加密后的密文信息之后,采用WEP密钥进行RC4解密计算,对密文信息进行解密,看解密后的结果是否与原来发送的明文信息一样,如果两者结果一样则说明符合要求,通过认证。但是,如果接入者没有采用正确的WEP密钥,两次结果肯定不会相同,这就导致该接入者无法通过身份认证。
WEP共享密钥认证机制如图4.12所示。
2.IEEE 802.11i标准
为了增强IEEE 802.11标准(简称802.11)的安全性,IEEE在2004年提出了IEEE 802.11i标准(简称802.11i)。IEEE 802.11i标准为IEEE 802.11提供了两种类型的安全框架,即RSN(Robust Security Network)和Pre-RSN。图4.13的802.11i安全框架中列出了RSN和Pre-RSN的主要安全机制。RSN包含基于端口的接入控制协议、密钥管理技术和TKIP、CCMP机密性和完整性协议。RSN和Pre-RSN最大的区别就在于四步握手机制,若在认证或关联过程中不包含四步握手,则被认为采用的是Pre-RSN。
图4.13 802.11i安全框架
一个完整的IEEE 802.11i RSN包含5个阶段:①发现阶段;②认证阶段;③密钥管理阶段;④加密数据传输阶段;⑤连接中断阶段。图4.14描述了这5个阶段。
接下来我们详细地描述这5个阶段。
①发现阶段:AP向外广播自己的无线信息,其中包括802.11i安全策略,客户端根据这些信息决定是否与该AP关联。
②认证阶段:在这个阶段,客户端和认证服务器都要向对方提供自己的认证凭证,AP在这个过程中充当数据中转站的功能。
③密钥管理阶段:客户端和AP协商出接下来数据加密及校验使用的密钥,在这一阶段数据帧只在客户端和AP之间交换。
④加密数据传输阶段:客户端通过AP和其他终端进行通信,客户端和AP之间的数据传输使用以上阶段生成的密钥进行加密,AP对这些数据进行解密,再将其传送到其他终端。
⑤连接中断阶段:客户端和AP断开连接。
图4.14 802.11i RSN的5个阶段
3.EAP协议
(1)EAP协议概述
RFC 3748中详细地定义了EAP协议(Extensible Authentication Protocol)。它是一个在无线局域网络中被普遍使用的认证框架,架构如图4.15所示。
图4.15 EAP协议架构
EAP协议的报文结构如图4.16所示。其中,Code域占1个字节,用来表示EAP报文的类型。在EAP协议中,总共定义了4种报文类型,其中Code=l为请求报文,Code=2为回应报文,Code=3为成功报文,Code=4为失败报文。
图4.16 EAP协议报文结构
Identifier域占1个字节,用来表示报文的ID号,通信双方通过ID号来进行报文的匹配。
Length域占2个字节,用来表示EAP报文的总长度,用网络字节序表示。
Data域长度为0或多个字节,当Code=3或Code=4时其长度为0,当Code=1或Code=2时,Data域的格式如图4.17所示。
图4.17 Data域格式
(2)EAP方法
EAP方法规定了EAP协议中具体的认证方式,IETF(互联网工程任务组)的RFC中定义的EAP方法包括EAP-MD5、EAP-OTP、EAP-GTC、EAP-TLS、EAP-TTLS和EAPAKA,还包括一些厂商提供的方法和新的建议。RFC 401711定义了无线局域网络中EAP方法必须满足的几个条件:
①能够提供相互认证;
②能够抵制字典攻击;
③Mit M攻击防护;
④受保护的密钥协商机制。
在无线局域网络中常用的EAP方法有EAP-TLS、EAP-PEAP、EAP-TTLS等,这些EAP方法都是基于传输层安全(TLS)协议的。TLS协议的核心思想是公钥加密法,也就是说,服务器首先向客户端发送自己的公钥,客户端用公钥对信息进行加密,服务器收到密文以后再用私钥解密。TLS协议为了保证公钥在传输过程中不被攻击者篡改,引入了服务器证书,服务器将自己的公钥放入证书中。使用时,客户端首先验证服务器的证书是否可信,只要证书是可信的,公钥就是可信的。公钥加密运算消耗时间长,TLS协议巧妙地结合了对称加密和公钥加密来减少运算时间,在每一次会话中,通信双方采用对称加密来传递信息,而公钥只用来保护对称加密密钥的传递。
EAP-TLS协议在RFC 5216中被定义,它用证书取代用户名和密码,并要求客户端和认证服务器都需要有证书,EAP-TLS协议在无线局域网络中由于配置困难并没有被广泛使用。EAP-TTLS和EAP-PEAP协议由EAP-TLS协议发展而来,它们改进了TLS握手协议中客户端和认证服务器之间的双向认证,只需要认证服务器拥有证书。
4.RADIUS协议
RADIUS(Remote Authentication Dial In User Service)的全称是远程认证拨号用户服务,是一种基于CIS结构的协议,主要在RFC 2865和RFC 2866中被定义。
RADIUS协议在TCP/IP协议栈中的位置如图4.18所示。
图4.18 RADIUS协议在协议栈中的位置
RADIUS协议的报文结构如图4.19所示,各域内容按照从左到右的顺序传送。其中,Code域的长度为1个字节,表示RADIUS报文的类型,具体编码如下:Code=1为认证请求报文,Code=2为认证成功报文,Code=3为认证失败报文,Code=4为计费请求报文,Code=5为计费回应报文,Code=11为挑战报文。
图4.19 RADIUS报文结构
Identifier域占1个字节,用于匹配请求与回应,同时它也可以用来识别重复的请求。
Length域占2个字节,表示报文的总长度,用网络字节序表示。如果接收到的字节数大于数据包中长度域标识的长度,则多余的为填充字节;如果接收到的字节数小于数据包中长度域标识的长度,则该报文无效。同时,协议还规定如果收到的RADIUS数据包的长度小于20字节或大于4 096字节,则静默丢弃该报文。
Authenticator域用于判断报文的完整性和有效性,长度为16字节。
Attribute域采取通用的类型、长度和值(TLV,Type-Length-Value)格式封装,如图4.20所示。Attribute域可以包含一个或者多个属性,是RADIUS报文的消息内容。这种封装格式使得新的属性可以很容易加入到RADIUS协议中,在Attribute域中比较常见的属性类型有用户名(User-Name)、用户密码(User-Password)、CHAP密码(CHAP-Password)。在接入请求报文中必须包含User-Name、User-Password或CHAP-Password,还应该包括NAS-Port-Type或/和NAS-Port等属性。在RFC 2865和RFC 2866中定义了56种常见的RADIUS属性。
图4.20 TLV格式
5.常用认证方式
(1)Web认证
Web认证是一种基于端口的访问控制认证方式,它在应用层上对用户的HTTP请求进行拦截。认证前用户获得一个IP地址,在通过认证以前,所有的HTTP请求都被拦截,用户只能访问认证页面,用户需要在认证页面输入自己的认证凭证。认证通过以后,用户可以正常地使用网络。
Web认证的认证过程如下。
①用户向DHCP服务器请求IP地址,DHCP服务器给用户分配一个IP地址。
②用户在认证页面中输入自己的用户名和密码,并发送到Web服务器。
③Web服务器将用户的用户名和密码转发给AP。
④AP收到用户名和密码以后,将用户名和密码封装到相应的RADIUS报文属性域中,并把RADIUS报文发送给认证服务器。
⑤认证服务器提取出报文中的用户名和密码,并检索数据库是否有该用户。如果有该用户,则再将用户密码和数据库中的密码进行比对,最后把认证结果反馈给AP。
⑥AP根据返回的认证结果决定是否将用户设为已认证状态。
(2)PPPoE认证
PPPoE协议定义于RFC2516中,它是一种将PPP帧封装在以太网帧内部的网络协议。典型的PPPoE应用扩展了PPP协议,通过PAP、CHAP等基于密码的协议来认证用户,大部分DSL供应商使用PPPoE,它提供了认证、加密和压缩功能。PPPoE认证分为以下几个阶段。
1)发现阶段
发现阶段主要用于客户端和服务器获取对方的MAC地址,确定PPPoE会话ID,为进入会话阶段做准备。下面我们来详细介绍其过程。
①PPPoE客户端到PPPoE服务器:PPPoE客户端广播一个包含服务信息的PADI(PPPoE Active Discovery Initiation)报文。
②PPPoE服务器到PPPoE客户端:如果PPPoE服务器能满足PPPoE客户端的请求,则回复PPPoE客户端一个PADO(PPPoE Active Discovery Offer)报文。
③PPPoE客户端到PPPoE服务器:PPPoE客户端收到PPPoE服务器发来的PADO报文以后,回复一个PADR(PPPoE Active Discovery Request)报文。
④PPPoE服务器到PPPoE客户端:PPPoE服务器产生一个唯一的会话ID,标识和PPPoE客户端的这个会话,并且回复PPPoE客户端一个包含会话ID的PADS(PPPoE Active Discovery Session-confirmation)报文,双方开始进入会话阶段。
2)会话阶段
一旦双方的MAC地址已知,并且会话已经建立,则会话阶段将开始。此后,数据将用PPP封装传送。在这一阶段,PPPoE客户端和PPPoE服务器都可以发送PADT(PPPoE Active Discovery Terminate)报文来终止会话阶段。
(3)802.1X认证
802.1X协议主要用于解决认证和接入问题,它是一种基于端口的网络接入控制协议,协议中定义了3个实体:客户端、认证者和认证服务器。其中,认证者在客户端和认证服务器之间充当数据中转站的角色,它负责转发客户端和认证服务器之间的认证信息,同时认证者还提供让客户端接入局域网络的端口。在802.1X协议中,主要通过非受控端口和受控端口来实现基于端口的网络接入控制,其中非受控端口主要用来传递EAPOL帧,保证客户端和认证服务器能够传递认证信息,而受控端口用于传输用户的非认证报文,在用户通过认证前,受控端口是关闭的,只有当用户通过认证以后,认证者才打开受控端口。因此,用户在通过认证前,只能传递认证信息,而无法传递业务信息。
802.1X协议中使用了EAP协议来传递认证信息,在客户端和认证者之间,使用EAPoE(EAP over Ethernet)协议来封装EAP报文,在认证者和认证服务器之间,将EAP报文封装在RADIUS报文的EAP-Message属性中。
下面我们以EAP-TTLS/MS-CHAPv2为例来说明802.1X的认证流程。
1)初始化阶段
①客户端通过广播EAPOL-Start报文来出发802.1X认证。
②AP收到EAPOL-Start报文以后,发送EAP-Request/Identity报文请求用户信息。
③客户端回应包含用户信息的EAP-Response/Identity给AP。
④AP将收到的EAP报文封装在RADIUS报文的EAP-Message属性域中发送给认证服务器,并根据需要带上相应的RADIUS属性。
⑤认证服务器收到客户端发来的RADIUS报文后,提取出EAP报文并进行解析,接着向AP发送包含EAP-Request/TTLS-Start的RADIUS-Access-Challenge报文,触发EAP-TTLS认证。
⑥AP将EAP-Request/TTLS-Start报文发送给客户端。
2)TLS隧道建立阶段
①客户端收到报文后,回复EAP-Response/Client Hello报文并发送给认证服务器,该报文中包括客户端支持的协议版本、客户端随机数(用于生成“会话密钥”)和支持的加密方式列表。
②认证服务器收到客户端报文以后,确认使用的协议版本、服务器随机数(用于生成“会话密钥”)和加密方式,回复客户端一个Server Hello报文,该报文中包含服务器证书。
③客户端收到报文以后,用根证书验证服务器证书是否合法,若合法则提取出公钥,并用公钥对客户端生成的pre-master-secret进行加密,发送给认证服务器。
④认证服务器用私钥对密文进行解密还原出pre-master-secret,同时利用以前收到的客户端随机数和自己生成的随机数生成会话密钥,至此,加密隧道建立,双方将进入内部认证阶段。
3)内部认证阶段
①认证服务器向客户端请求客户端用户信息,开始内部认证阶段。
②客户端回应包含用户信息的EAP-Response/Identity给认证服务器。
③认证服务器向客户端发送包含认证服务器挑战字符串的EAP-Request/MSCHAPv2 Challenge报文。
④客户端回复认证服务器包含挑战的应答和客户端挑战字符串的EAP-Response/MS-CHAPv2 Response报文。
⑤认证服务器验证客户端响应是否正确,若正确,认证服务器回应客户端对其挑战响应的EAP-Request/EAP-MS-CHAPv2 Success报文。
⑥如果认证服务器响应正确,客户端回应EAP-Response/EAP-TLS Success报文。认证服务器发送包含MPPE属性的Access-Accept报文给AP。
⑦AP将和客户端进行四步协商,确定PTK。
(4)WAPI认证
中国无线局域网安全标准——无线局域网鉴别和保密基础结构(WAPI,WLAN Authentication and Privacy Infrastructure)由两部分组成,分别是用来完成用户身份识别的无线局域网认证基础结构(WAI,WLAN Authentication Infrastructure)和完成对传输过程中的数据信息加密的无线局域网加密基础结构(WPI,WLAN Privacy Infrastructure)。WAPI在对移动终端进行访问控制、身份验证方面是通过基于公开密码体制的ECC公钥数字证书(其中的认证算法是192/224/256位的椭圆曲线签名算法)和密钥协商完成的;在对传输数据的加密方面则基于不公开密钥体制的分组密码来完成。这样可以有效地实现WLAN中STA和AP之间的双向认证和对传输数据的保密工作。
WAPI认证机制在完成移动终端和无线接入点之间的双向身份认证时是分证书鉴别和密钥协商两个过程进行的,如图4.21所示。下面分别详细地对这两个过程进行分析。
图4.21 WAPI认证过程
1)证书鉴别过程
证书鉴别过程是WAPI的核心过程,完成这一过程需要依次经过以下5个步骤。
①鉴别激活。当无线接入终端(STA)向无线接入点(AP)发送接入请求或者再接入请求时,AP收到接入请求后,给STA返回一个用来开始证书验证过程的鉴别激活信号。
②接入鉴别请求。在STA收到激活信号后,以此刻的时间作为系统时间和系统证书连同接入鉴别请求提交给AP。
③证书鉴别请求。当收到接入鉴别请求以后,AP将STA的证书、STA的接入请求时间和自己的证书以及它对这三部分的签名发给服务器(ASU)。
④证书鉴别响应。当服务器接收到AP的证书鉴别请求之后,ASU首先要验证AP的签名及证书的正确性,紧接着验证STA的证书。之后,ASU对STA和AP证书的认证结果用自己的私钥进行签名,并将这个签名和证书鉴别结果一起发回AP。
⑤接入鉴别响应。AP会验证证书鉴别响应,并获得对STA的证书认证结果,这一认证结果决定是否允许STA接入。同时AP会将ASU的验证结果传回STA,STA也要对ASU的签名进行验证,从而获得AP证书的认证结果,这一结果决定STA是否接入此AP。
至此,就完成了WAPI认证机制的整个证书鉴别过程。如果鉴别成功,STA将接入此AP进行数据信息的传输;如果没有取得成功,AP则需要断开此时与AP的关联,继续发送再次接入请求的信号,直到鉴别成功才可以接入AP。
2)密钥协商过程
完成STA与AP之间的证书鉴别过程以后,就完成了STA与AP之间的双向认证,但是,还需要保证两者传输数据的安全性,所以需要完成STA与AP之间的会话密钥协商工作。详细的密钥协商过程需要经过以下两个步骤。
①密钥协商请求。STA和AP各自生成一个随机数STA_random和AP_random,并用对方的公钥对自己的随机数进行加密,发送给对方,此时STA还要向AP发出一个含有备选会话密钥算法的密钥协商请求。
②密钥协商响应。AP在收到上述信息之后,首先决定是否同意采用STA提供的会话密钥算法。不同意则此次会话密钥协商失败,同意则采取STA所提供算法中的一种。
以上过程完成之后,STA和AP利用自己的私钥将对方产生的加密随机数还原,并且计算出会话密钥。
利用上述会话密钥对传输的信息进行加/解密操作。当上述密钥使用一定的时间后,STA与AP要重新协商一个新的会话密钥,来确保数据传输时的安全性。
(5)生物特征认证
生物特征是指人体所特有的行为特征或生理特征,具有与其他人不同的唯一性和在一定时期内的不变性。人体生物特征的选择应该具有以下几个特征。
①唯一性:能够唯一地代表某个人。
②易采集性:所选择的生物特征易于采集。
③稳定性:特征的采集不随外部条件的改变而变化,在较长的一段时间内是不变的。
④普遍性:该生物特征是每个人具有的。
常见的生物特征识别技术有:指纹识别、人脸识别、声纹识别和虹膜识别。表4.2对比了这几种生物识别技术。
表4.2 几种生物识别技术对比
(6)几种认证方式对比
在上文中主要提出了无线局域网络中的5种认证方式:Web认证、PPPoE认证、802.1X认证、WAPI认证和生物特征认证。其中生物特性认证主要配合前3种认证方式,其并不能单独用于无线网络的认证,因此在本节中我们主要比较前3种认证方式。
Web认证主要用在对安全性要求不高的场所,如运营商网络,其优点为不需要第三方的客户端,操作简单。Web认证的缺点如下。
①Web认证中使用了应用层拦截,对设备的要求较高,建网成本高。
②Web认证采用开放认证,因此很容易遭受“钓鱼攻击”。用户很容易连接到攻击者设置的具有相同SSID的AP上,攻击者可以窃取用户上网的数据。
③未认证用户也能得到IP地址,会造成IP地址的浪费。
PPPoE认证在无线局域网络中很少见,主要用在某些运营商网络中,其优点为:①使用了传统的拨号上网方式,可以从有线接入平稳过渡到无线接入;②运营商可以利用可靠和熟悉的技术来加速部署高速互联网业务,对现有网络部署影响小。其缺点为:①需要使用第三方的认证客户端,维护成本高;②发送广播占用的带宽大,并且容易遭受DoS攻击;③明文传输用户名和密码,容易造成用户认证凭证的泄露。
802.1X认证能够提供较高的安全性,主要用于企业无线局域网络中,其优点为:①提供了客户端和认证服务器的相互认证,具有较高的安全性;②802.1X为数据链路层协议,认证报文直接承载在数据链路层报文上,基于端口对网络接入进行控制,认证通过以后,认证报文流和数据报文流通过不同的端口来转发,对数据报文没有特殊要求。802.1X的缺点为:①客户端或认证服务器需要有证书;②需要有专用的客户端,配置比较麻烦。
通过以上的介绍和分析,我们可以得知这3种认证方式都有自己的优势和局限性,所以应该根据应用场合来选择合适的认证方式。