无线局域网安全
一次性进群,长期免费索取教程,没有付费教程。
教程列表见微信公众号底部菜单
进微信群回复公众号:微信群;QQ群:16004488
微信公众号:计算机与网络安全
ID:Computer-network
一、IEEE 802.11协议的体系结构
(一)IEEE 802.11的拓扑结构
IEEE 802.11的拓扑结构由许多组件组成,它们相互作用提供一个无线局域网,能使站点的移动性对高层协议透明。802.11标准规定了网络接口单元NIC和接入点AP的软件接口。802.11标准支持下列两种拓扑结构:独立基本服务集(Independent Basic Service Set,IBSS)和扩展服务集(Extended Service Set,ESS)。这些网络使用一个基本结构模块,IEEE 802.11标准称之为基本服务集(Basic Service Set,BSS)。它提供一个覆盖区域,使BSS中的站点保持充分的连接。一个站点可以在 BSS 内自由移动,但如果它离开了 BSS 区域就不能够直接与其他站点建立连接了。
IBSS是一个独立的BSS,它没有中枢节点,至少包括两个无线站点(见图1)。这类网络也被称为单区网,通常用在临时需要组建一个网络的时候。IBSS网络能基本满足控制一个较小区域(如一个房间、一个楼层或医院侧楼)的用户需要。
图1 IBSS结构示意图
为满足跨越 IBSS 范围限制的需求,802.11 标准详细介绍了一个 ESS 局域网,如图2所示。该配置满足了大小任意、复杂度高的大范围覆盖网络的需要,不同的站点可以通过AP访问网中的任一BSS网络和网络中任一站点。
图2 ESS结构示意图
在ESS中,BSS通过AP和分布式系统连接。AP是网络的中心节点,它为BSS提供到分布式系统的接口,以便将位于各种BSS内的站点连接起来。
802.11标准没有规定分布式系统的构成。因此,它可能是无线局域网,也可能是有线局域网。如果数据帧需要在一个非IEEE 802.11的局域网内来回传输,它们可以通过一个称为入口(portal)的逻辑点进出。
(二)IEEE 802.11的逻辑结构
拓扑结构决定了网络的物理组件,而逻辑结构着重定义网络操作,从功能可以看出,IEEE 802.11标准可以被看作网络中的物理层和数据链路层。
数据链路层的基本任务就是激活、保持和拆除数据链路,以及对数据进行检错和纠错。数据链路层中对应的传输单元是帧,MAC 将数据封装在不同的帧中发送,并处理接收端送回的确认帧。另外,该层还提供流量控制的功能。
物理层用来保障网络之间的实际连接。该层根据介质(红外线、空气)的特点,采用不同的调制方式和速率来保障通信链路的连通。图3描述了物理层和数据链路层之间的关系。
图3 对应于OSI模型的IEEE 802.11参考模型
数据链路层最重要的功能之一是介质访问控制(Media Access Control,MAC),介质访问控制的内容可以映射为两部分:MAC子层协议控制单元(MAC Sublayer)和MAC子层管理实体(MAC Sublayer Management Entity)。MAC子层协议控制单元用于激活数据链路,在发送的时候负责数据的分片和激活物理层的发送电路,在接收的时候负责数据的校验和重组。MAC子层协议控制单元通过MAC子层服务接入点(MAC_SAP)和上层通信,通过物理层服务接入点(PHY_SAP)和物理层联系。MAC 子层管理实体则用来实现对 MAC 子层协议控制单元的管理,通常用来负责与网络的同步和连接,也用于负责系统的功率管理。该层通过MAC子层管理实体服务接入点(MLME_SAP)和站点管理实体取得联系,通过MAC子层及物理层管理实体服务接入点(MLME_PLME_SAP)从物理层管理实体中获取必要的信息。
物理层是协议中的最底层,用来保证通信信道上传输正确的原始比特流,建立、维持和释放数据链路实体间的连接。物理层通常包括三个模块:
物理介质依赖(Physical Medium Dependent,PMD)子层。该模块定义了在两个或多个站点之间通过无线介质发送或接收数据的特性。
物理层会聚(Physical Layer Convergence Procedure,PLCP)子层,该模块把IEEE 802.11 MAC子层协议数据包(MAC sublayer Protocol Data Units,MPDU)映射成适合在两个或多个站点的对等PMD系统之间传送的用户数据和管理信息。
物理层管理实体。该模块与MAC子层管理实体相连,为本地物理层提供管理功能。
(三)介质访问控制层
在数据链路层中,比较重要的是介质访问控制子层,即 MAC 层。由于无线信道是一个介质共享的多点访问信道,因此,决定谁具有信道控制权的 MAC 层有着举足轻重的地位。在无线局域网中,MAC层结构包括两种不同的媒体接入方式:
具有冲突检测的载波监听多路访问:一个类似于IEEE 802.3以太网的线路争用协议。IEEE 802.11标准称之为分布式协调功能(Distributed Coordination Function,DCF)。
基于优先级别的访问:一个无竞争访问协议。适用于访问节点安装有点控制器的网络。IEEE 802.11标准称之为点协调功能(Point Coordination Function,PCF)。
分布式协调功能(DCF)和点协调功能(PCF)能在同一个基本服务组(BSS)中提供并行的可选的竞争和无竞争访问期。
点协调功能只能用于BSS网络中。多数情况下,DCF已能满足要求;只有在发送音频和视频等实时信息时,才考虑使用PCF。由于轮询帧的发送,PCF会增大网络的系统开销。
(四)物理层
IEEE 802.11在物理层定义了数据传输的信号特征和调制方法,定义了两个无线电射频传输方法和一个红外线传输方法。无线电射频传输标准包括直接序列扩频技术(Direct Sequence Spread Spectrum,DSSS)和跳频扩频技术(Frequency Hopping Spread Spectrum,FHSS),最常用的是直接序列扩频。
目前IEEE 802.11系列物理层支持的传输速率不尽相同,IEEE 802.11标准的网络以1Mbit/s或2Mbit/s的速率传输数据,传输距离能够达到100m。为了提高网络在2.4GHz 工作频段的传输速率,IEEE委员会又制订了标准802.11b。
IEEE 802.11b和IEEE 802.11一样工作在2.4GHz频段,但是由于采用了补充编码键控(Complementary Code Keying,CCK)调制技术,能够支持5.5Mbit/s和11Mbit/s两个新速率。而且IEEE 802.11b可以根据情况的变化,使用动态速率调整,在11Mbit/s、5.5Mbit/s、2Mbit/s和1Mbit/s这几个不同速率之间自动切换。工作在 2Mbit/s、1Mbit/s速率时的IEEE 802.11b工作方式与IEEE 802.11兼容。
IEEE 802.11a工作在干扰较少的5GHz U频带,采用正交频分复用(Orthogonal Frequency Division Multiplexing,OFDM)的独特扩频技术,物理层传送速率最高可达 54Mbit/s,传输层可达25Mbit/s。
为了提高数据传输的可靠性,802.11a采用卷积编码方案,在发送端,数据经过扰码、卷积编码和交织等过程,然后调制发送出去。发送帧包括前导码、PLCP 域和数据域。其中前导码包括长训和短训序列;PLCP 域包括数据速率、长度和调制方式的信息位。接收端利用前导码提取帧同步和载波同步信息,对接收的数据进行定时和载波恢复,并利用码元中的导频信号进行定时和载波跟踪。为了消除由于多径引起的码间干扰,接收端还采用了频域均衡技术,以实现数据的正确解调。最后,数据经过解交织、维特比(Viterbi)解码和解扰等过程后送给MAC层。
由于在IEEE 802.11a与IEEE 802.11b标准之间存在频段与调制方式不同等问题,使得两种产品之间不能互通,因此已拥有IEEE 802.11b产品的用户无法利用IEEE 802.11a设备来实现产品速度上的升级。为了解决这一问题,IEEE制定了802.11g标准,它构建在已有的IEEE 802.11b物理层与MAC层标准的基础上,选择2.4GHz作为工作频段,并将传输速率提高到22Mbit/s以上,使已经使用了IEEE 802.11b产品的用户能以IEEE 802.11g实现速度升级的需求。802.11g增强型标准一般被称为 802.11g+,常见的g+技术有Atheros的Super G技术、Broadcom的Afterburner技术、Conexant的Nitro XM技术、ZyXEL的G+SuperSpeed技术等,这些无线网络速度提升方式无外乎是快速帧(Fast Frames)、包突发(Packet Bursting),或者是Frame Burst(帧突发)这些技术,它们都能提供108Mbit/s乃至超过108Mbit/s的速度。
(五)数据格式
在符合 IEEE 802.11 协议的无线局域网中传送的数据类型共有三种:控制帧(Control Frames)、数据帧(Data Frames)和管理帧(Management Frames)。
控制帧用来辅助数据的传送,通常指示信道的收发状况,如表示成功发送的ACK帧等。
数据帧用来传送数据。根据数据的类型,数据帧也有许多类型,如普通的数据帧、不包含任何数据的空帧(Null)等。
管理帧用于网络的管理,包括用于同步的信标帧、用于登录的认证帧等。
每一个符合IEEE 802.11协议的帧都包含三个部分:帧头(MAC header),帧体(Frame body)和校验码(Frame Check Sequence,FCS),如图4所示。
图4 MAC帧格式
下面分别对MAC帧的各主要字段进行说明。
1、帧控制(Frame Control)
这个字段长两个字节,指示出当前发送帧的一些重要信息,例如协议的版本、帧的类型等。图5给出了帧控制字段的格式。
图5 帧控制字段的格式
下面分别介绍帧控制字段各个子字段:
协议版本(Protocol Version)字段:对于当前标准,协议版本号为0。将来如果标准的新版本和旧版本不兼容,IEEE会添加附加的版本号。
帧类型(Type)字段:这个字段表明当前的帧是管理帧、控制帧还是数据帧。
子类型(Subtype)字段:这个字段说明帧的功能,如发送响应(RTS)、清除发送(CTS)等。
发往DS(To DS)字段:发往分布式系统的帧的这一位置1,其他的帧置0。
来自DS(From DS)字段:来自分布式系统的帧的这一位置1,其他的帧置0。当某帧从一个AP经分布式系统发送到另一个AP时,To DS和From DS位都要置1。
分段(More Frag)字段:如果一个MSDU还有其他分段存放在后面的帧中,该字段置1。
重发(Retry)字段:对于重发帧,这一位置1;其他帧置0。重发的原因可能是第一次发送的帧在传输中产生差错,导致FCS出错。
电源管理(Power Management)字段:这一位指明发送站点在完成目前的帧交换之后的电源管理模式。如果站点进入节能模式,MAC层将这一位置为 1,置0表示站点处于工作模式。
更多数据(More Data)字段:如果某站点还有MSDU要发往其他站点,那么发送站点将这一位置为1。
WEP字段:这一位置1表示传送数据要使用WEP算法进行加密/解密处理。
顺序(Order)字段:所有采用严格顺序(Strictly Ordered)服务级别的数据帧将这一位置1,通知接收站点这些帧必须按照顺序处理。
2、持续时间/标志(Duration/ID)
这个字段通常用来指示当前帧传输所需要的时间。
3、地址域(Address 1、2、3、4)
地址域通常包含三个地址,即目的地址(DA)、源地址(SA)和BSS网络识别码(BSSID),BSSID一般会被设成AP的地址。在一些特殊情况下,如站点分别属于不同的BSS网络,需要在 AP 之间转发数据时,地址域还会有第四个地址用来协助传送。这时,地址域包含了接收站点的地址(DA)、发送站点的地址(SA)、用于中转数据的接收 AP地址(RA)和发送AP地址(TA)。每个地址值都必须是惟一的,长度为6字节。
4、序列控制(Sequence Control)
序列控制字段包含每个数据帧的传送序号,这些序号用来帮助接收站点区分接收到的数据帧。同时利用这些序号还可以重组这些数据帧,使其从一个个较小的数据帧合成一个较大的数据帧。
5、帧体(Frame Body)
帧体部分是一个可变长的部分,容纳了要传送的数据。根据IEEE 802.11规范,在不加密的情况下,帧体部分最长为2312字节。加密后,由于添加了附加信息,帧体部分最长可为2346字节。
6、校验码(Frame Check Sequence)
发送站点的MAC层利用循环冗余校验算法(Cyclic Redundancy Check,CRC)计算一个32位的帧校验序列,并将结果存入这个字段。
CRC32的生成多项式是:G (x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1。
32位的FCS是下列两项之和(模2)的反码:
xk( x31+x30+x29+x28+x27+x26+x25+x24+x23+x22+x21+x20+x19+x18+x17+x16+x15+x14+x13+x12+x11+x10+x9+x8+x7+x6+x5+x4+x3+x2+x+1 ) 除以(模2)G (x)所得的余数,其中k是帧头和帧体总共的长度。
把帧头和帧体的内容乘以x32后,再除以(模2)G (x) 所得的余数。
循环冗余校验码由于具有良好的代数结构,计算机中易于实现,编码器简单,检错能力强,故在微机通信中被广泛使用。
二、无线网络安全介绍
无线局域网安全电路的设计主要包括两个方面:一是站点的入网认证,AP要能识别未授权站点并拒绝其入网申请;二是要保障在网络中传送的数据的安全性,确保未授权的站点无法从网络中截取数据,这就需要对在网络中传送的数据进行加密。下面将详细讨论这两个问题。
(一)入网认证
在无线局域网中,每台站点都需要经过入网认证,得到授权后才能加入网络与其他站点通信。AP是整个认证过程的核心。当AP收到站点发来的认证请求后会和自身保存的许可信息做比较。只有那些满足许可要求的站点才能被允许加入到网络中。图6是IEEE 802.11标准规定的入网过程。
图6 站点入网示意图
在整个入网过程中,可以把站点的状态划分为三个状态:
原始状态。在这个状态下,站点和网络处于互不相认的状态。此时,为了达到入网的目的,站点需要向AP发出认证请求帧(Authentication Frame)。这个帧中包含了站点的基本身份信息,如站点地址、站点当前状态等。AP收到这个认证帧后,如果能够确认站点为合法用户,就会回复站点的认证帧,通知站点身份得到确认,可以进行入网的后续操作。此时站点进入通过认证但未连接状态。如果AP不能确认站点的身份,就会回复认证取消帧(Deauthentication Frame),拒绝站点的入网请求。
通过认证但未连接状态。在这个状态下,为了保证与网络的成功连接以及后续的通信畅通,站点需要传送本身的一些物理信息给AP。这些信息包括站点支持的发送速率、站点认可的网络识别号等。AP在收到站点发出的连接请求帧后,通过比较自身的网络特性来决定是否允许站点入网。倘若站点满足在网络中通信的各项要求,AP就会回复连接响应帧,通知站点入网成功。如果站点的物理特性不能满足网络的要求,AP在回复的连接响应帧中拒绝站点加入网络。这时站点连接失败,无法入网。
成功入网状态。在这个状态下,站点成功地通过了认证与连接这两个过程,可以通过AP和网络中的任一站点自由地通信。
为了最大限度地提供安全保障和灵活性,IEEE 802.11规定了两种认证方式:开放系统认证和共享密钥认证。开放系统认证(Open System Authentication)是所有认证算法中最简单的一种。在这个过程中,只有两个步骤:登录的站点首先发送一个认证帧请求认证,AP 经过确认后返回一个认证帧表明同意或拒绝该站点登录。这种方式简单易用,任何站点都可以随时加入网络,适用于机场、餐馆等对安全要求不高的公用网。而共享密钥认证(Shared Key Authentication)先假定每个站点通过一个独立于802.11网络的安全信道,已经接收到一个共享密钥。这个登录过程需要四个步骤:
1、首先,登录的站点发送认证帧请求登录。
2、AP经过确认后返回一个认证帧表明同意登录或拒绝登录。如果拒绝登录,则该次认证过程结束;若同意登录,AP会在该认证帧中添加一段随机数据(Challenge Text),发送给站点。
3、站点将收到的随机数据用共享密钥进行WEP加密处理,再将其发送回AP进行验证。
4、AP 验证加密正确后,在最后的认证帧中通知站点是否通过认证。至此,认证过程结束,站点转入连接过程(Association)。
由于共享密钥认证需要知道密钥才可登录,它提供了较高的安全等级。在这种情况下,非法入侵者无法通过认证过程,因而无法侵入网络。
但是通观整个认证过程,AP 自始至终处于主导地位,站点始终处于被动地位。整个认证过程实际上是单向的,即 AP 对站点的认证。这个过程保证了站点身份的合法性,即非法的站点无法通过认证加入到网络中。但这个过程实际上存在着安全隐患。当有恶意用户伪装成 AP 引诱合法用户入网时,此时站点在和伪 AP 通信的过程中会泄露重要的安全信息。比如在共享密钥认证过程中,伪 AP 引诱站点对一段数据进行加密。在收到站点发出的密文的情况下,伪 AP 通过比较明文和密文就有可能反向破译出入网密钥,从而利用该密钥成功登录网络,对网络进行蓄意破坏。
为了避免出现这种情况,IEEE在后续的IEEE 802.11i标准中除了保留原有的站点到AP的认证过程之外,还增加了 AP 到站点的反向认证过程。只有当 AP 和站点之间的双向认证都通过以后,站点才会接收AP发送的各类管理帧和数据帧,AP也只有在这种情形下才会承认站点的合法身份,允许它在网络中自由通信。这样就成功地堵住了认证过程中的漏洞。
(二)WEP算法原理
为了保证数据在无线信道中的安全,IEEE 802.11定义了一种等效于有线局域网络数据安全性能的算法,用来保护网络的合法用户不被窃听,这种算法称为 WEP 算法。该算法利用一个外部的密钥管理程序来分发网络中所使用的密钥,而网络中的站点则利用这个密钥对要传送的数据进行加密,或者利用这个密钥对接收到的数据进行解密。
图7显示了WEP的基本原理。
图7 WEP的基本原理图
图中,明文(plaintext)通过加密模块产生密文(ciphertext)。这个过程可以表示为
Ek(P)=C
式中明文P经过加密过程E得到密文C,k为加密过程中所使用的密钥。
密文在传输过程中有可能会被窃听者拦截,但由于窃听者不知道密钥,所以对内容一无所知。当收方收到密文后,使用解密模块对其解密,就得到发送方发送的明文。这个过程可以表示为
Dk(C)=P
IEEE 802.11规定WEP使用RC4算法对数据进行加密/解密。RC4算法是一个对称的算法,加密/解密使用同一个密钥,如下式所示:
Dk(Ek(P))=P
下面详细介绍WEP的操作原理。
(三)WEP的加密过程
采用了RC4算法的WEP机制是电子密码书的一种形式。在WEP机制中,要传送的明文和一个等长的伪随机密钥序列按位做异或运算,最后得到密文。解密时,密文和同一个密钥序列按位做异或运算,结果得到明文。在这个过程中,伪随机密钥序列由WEP算法产生。
加密的过程可以参见图8。首先,密钥和一个初始向量(Initialization Vector,IV)连接生成种子(seed)进入到伪随机数发生器PRNG中。在这里,初始向量使用24位的随机数,密钥长度为40位。PRNG输出一个和发送数据等长的伪随机密钥序列(key sequence),发送数据包括MPDU和四个字节的校验码(Integrity Check Value,ICV)。为了防止未授权用户篡改数据,对明文使用一个完整性算法计算ICV,然后用密钥序列对明文和ICV加密,输出包括IV和密文。
图8 WEP加密过程示意图
WEP PRNG是框图中的关键部分,因为它把一个相对而言比较短的密钥转成一个任意长的密钥序列。这样,在两个站点之间就只需要传送较短的密钥,从而减小了密钥分配的复杂性。
在加密过程中,初始向量值是一个随机数,每次加密都会变化,即传完每一个MPDU后更换IV,而密钥保持不变。由于新的初始向量值使WEP PRNG产生不同的密钥序列,所以每次传送数据时都相当于使用了另外一个密钥。对接收方来说,只要知道了初始向量值,就可以产生和加密过程相同的密钥序列。应用此密钥序列,可以成功地对密文进行解密。从这个角度来说,初始向量扩展了密钥的使用期,同时也提供了算法所要求的自同步功能。
WEP算法仅对帧体进行加密,对帧头则不作处理。这样做的原因很简单,如果对帧头加密,倘若窃听者知道发送站和接收站的地址(Address 1和Address 2),那么就有可能从这些信息中恢复出密钥,进而获取数据信息。同时,如果对帧头加密,接收端的站点只有在对帧头解密后才能知道是否需要接收该帧,这样也大大增加了操作的复杂性。
对于WEP算法保护的数据帧,帧体的头四个字节包含 MPDU 的IV域。PRNG 种子长64位,IV的0~23位对应PRNG种子的0~23位,密钥的0~39位对应PRNG种子的24~63位。PRNG种子长度对应于RC4密钥长度。IV后跟着MPDU,然后传送ICV。WEP ICV长32位,WEP的完整性校验算法采用CRC32算法。
加密后的帧格式见图9。
图9 加密后的数据帧格式
可见加密过程给原来的帧体增加了8个字节,4个为IV域,4个用来存放ICV值。ICV值只是根据数据域PDU计算出来的。
IV域包括三部分:三个字节存放前述的初始向量,两位表示密钥标识,6位的Pad域。密钥标识用来选择四个可能的密钥之一给帧体解密,Pad域全部置零。
发送方用密钥标识通知接收方使用正确的密钥。同时,作为种子的初始向量值也应该传送给接收方,使其有能力恢复密钥序列。所以,在发送的数据中包含了加密时使用的初始向量值和使用的密钥序号。由于窃听者不知道密钥,因此,即使他接收到初始向量值,也无法恢复密钥序列,从而无法恢复原始数据。
ICV域是一个包含CRC32值的32比特域,它的校验算法和FCS的算法是一致的。在这个域中,CRC单元对未加密的数据计算校验和,校验和作为ICV域。接收端在解密后计算数据的校验和,以确定数据是否被篡改过。最后在信道中传送的是含有初始向量值、密文和ICV的信息的数据帧。需要强调的是,在网络中,仅有数据帧可能会被加密处理,管理帧和控制帧不会作加密处理。
(四)WEP的解密过程
图10是站点接收到帧后的解密过程,它是加密过程的逆过程。在这个过程中,解密模块根据收到的初始向量值产生密钥序列,用它和密文作异或运算得到解密后的明文。为了防止数据在传输过程中被篡改,解密模块还会计算明文的校验码ICV′,并将它和收到的校验码ICV做比较。若比较结果不同,则说明收到的 MPDU 出错,从而抛弃该数据帧,并且向MAC管理程序报错。否则,接收到的数据帧会被传到上层做进一步的处理。
图10 WEP解密过程示意图
1、初始向量的复用
根据前面分析的WEP加密原理,WEP采用24位初始向量加上共享密钥对数据进行加密。因此,实际密钥的组合共有 224种,每次发送时,发送端用其中的一个密钥对数据进行加密。
假设有一个任务繁重的AP,网络中的数据包长度皆为1.5k字节长,系统只支持11Mbit/s的传输速率。若忽略前导码和 PLCP 数据包头所占用的时间,则经过
小时后,系统的初始向量值即会被复用,也即系统此时发生了用同一密钥加密两帧数据的情况。但在真实情况中,许多数据包远小于1.5k字节,因此系统可能在很短的时间内就会出现密钥复用。
在密钥复用的情况下,若以 v 表示初始向量,k 表示当前使用的密钥,密钥序列表示为RC4(v,k),而加密前的明文用P表示,则加密后的密文C可表示为:
C=P⊕RC4(v,k )
若每次使用相同的RC4(v,k),设有加密后的数据流C1、C2,有
C1=P1⊕RC4(v,k )
C2=P2⊕RC4(v,k )
C1⊕C2=[P1⊕RC4(v,k)]⊕[P2⊕RC4(v,k)]
若P1已知,则相应的P2可完全获得。一个有助于攻击者的地方是,802.11传递的数据包头通常具有极大的相关性。比如IP和ARP的包头通常含有字符串0xAA,IPX包头通常含有字符串0xFF或0xE0等。利用这些数据,可以很容易地猜测数据包的前几个字节的数据。由此可见,密钥复用所带来的后果是灾难性的。
2、针对数据完整性的攻击
除了初始向量复用的问题外,在网络中传送的数据还有可能遭受到所谓的 Active 攻击(Fragmentation和Bit-flipping等形式的攻击)。以Bit-flipping攻击为例,攻击者有可能翻转数据帧中的一个或数个比特,同时保证数据包的校验和仍然为一个正确的数值。在这种情况下,传输的数据已经被攻击者非法篡改,可是接收方对此却毫不知情。
由于循环冗余校验(CRC)是一种线性运算,具有线性叠加性质。从而攻击者可以在不破坏校验和的条件下,有目的地修改传输密文。WEP 数据帧篡改的原理如图11 所示。在这里,M表示PDU的明文,c(M)表示校验和ICV。因此,加密前的明文P=<M,c(M)>,密文C=RC4(v,k)⊕<M,c(M)>。
假设初始向量v和密文C正由A站向B站传送。数据内容为<v,C>,图11中Δ表示篡改数据,M′表示篡改后的明文,C′表示篡改后的密文。
图11 WEP数据帧篡改原理图
可以证明:根据CRC循环冗余校验的线性特性,由任意的篡改数据Δ可以计算出它的校验和c(Δ),进而由C'=C⊕<Δ,c(Δ)>伪造篡改后的密文C',从而使攻击者无须绞尽脑汁重新构造循环冗余校验和c(M')。
因为C⊕<Δ,c(Δ)>
=RC4(v,k)⊕<M,c(M)>⊕<Δ,c(Δ)>
=RC4(v,k)⊕<MΔ,c(M)⊕c(Δ)>
=RC4(v,k)⊕<M',c(M')>
=C'
由此可见,当传输中的密文C篡改为C',接收方解密C' 后获得明文M'=M⊕Δ,因为c(M')是M' 的完整性校验和,所以接收方不能够察觉到数据M已被篡改为M'。
三、TKIP算法原理
以上两个问题引起了IEEE委员会的高度重视,经过广泛的征询意见,最终IEEE 802.11 TGi 采用了被称为 TKIP(Temporal Key Integrity Protocol)的方法来解决初始向量复用和Active攻击的问题。实际上,802.11i定义了TKIP、CCMP和WRAP三种加密机制,其中TKIP与WEP一样使用RC4作为加密算法,可以应用于已经售出的无线设备当中。而CCMP基于AES加密算法和CCM认证机制,可以大大提高无线网络的安全程度。
IEEE 802.11i中规定使用802.1x认证和密钥管理方式,基于EAP建立无线网络的认证机制以进一步加强安全性。通过该认证机制,802.11i可以动态地获得成对密钥,建立四方握手认证机制,用户既可以使用内置的密码进行认证也可以使用独立的认证服务器完成认证。
(一)TKIP的加密过程
TKIP的加密过程如图12所示。
图12 TKIP的加密过程示意图
在TKIP中,每次采用一个128位的临时密钥TK(Temporal Key),这是通信双方共享的密钥。同时设定发送站点的地址为 TA,经过第一阶段的密钥混合后产生 128 位的 TTAK (TKIP mixed Transmit Address and Key)密钥。TKIP单元为每个MPDU依次分配一个序列号TSC(TKIP Sequence Counter),TSC是一个48位的计数器,它的一部分作用相当于IV,每加密一帧自动递增。在第二阶段的密钥混合中,根据TTAK密钥和TSC产生各帧不同的128位的WEP种子,并把它们和MPDU送到WEP模块参与加密。
TKIP建议在建立连接时采用802.1X认证协议,由802.1X分配各用户不同的。每次连接也不同的临时密钥TK。这样TK、TA和TSC经两级混合函数后得到每一个用户、每一次连接、每一个方向、每一个数据帧不同的 RC4密钥,极大地增强了安全性。同时若 TSC计数值达到最大,TKIP将强制密钥更新,以获得新的TK,从而避免了一个密钥使用时间过长导致的安全性降低。TKIP将计数器TSC封装在WEP IV域和EIV(Extend IV)域内,从而实现对WEP的后向兼容。
(二)消息完整码
TKIP使用了一种新的保护数据的方法,称为消息完整码(Message Integrity Code,MIC)校验算法,目前在TKIP中采用的MIC算法是Michael算法。经分析,64位输出的Michael算法的保护强度虽然不是很高,但是由于传输时对MIC码加密,并且使用了反制措施,即一旦接收端完整性校验失败,则强制中断当前连接、删除当前认证和加密密钥、记录错误信息,一分钟后再重新连接,所以TKIP对Michael的使用仍然是安全的。
从图13中可以看出,从上层送下来的数据包通常被称为MSDU,即MAC层服务数据包(MAC Service Data Unit)。TKIP根据MSDU的源地址SA、目标地址DA、优先级和整个数据包计算 MIC 值,并将结果添加在 MSDU 的后面。当数据包要发送时,它们会被 MAC层分成一个或多个更小的数据包,此时的数据包称做MPDU。这样分包的目的是为了增强发送成功的几率,提高通信的可靠性。在分包的过程中,含有MIC信息的整个MSDU被分成多个独立的MPDU发送。
图13 TKIP MIC和IEEE 802.11协议关系图
接收方在接收了所有的MPDU后进行重组,然后对重组后得到的MSDU计算其MIC值。接收方将经过计算得到的MIC值和添加在数据包尾部的MIC值进行比较。如果在接收过程中数据包在传送过程中曾被篡改,那么计算得到的MIC值和传送的数据包中的 MIC值必定不一致。据此 MAC 可以认为数据包在传送过程中曾被篡改,从而舍弃该数据包。由上可以看出,MIC是在MSDU级对数据实施了保护。
(三)TKIP的解密过程
图14给出了TKIP解密时的框图。
图14 TKIP解密过程示意图
解密是加密的逆过程,主要实现步骤如下:
在WEP对一个收到的MPDU解密之前,TKIP从IV和EIV中提取TSC和密钥标识,并抛弃序列号出错的数据帧,然后用混合运算构造WEP种子。
将经过TKIP混合运算得到的128位的WEP种子和当前处理的MPDU一起送到WEP模块进行解密。
解密中如果发现解析出的ICV值与计算得到的ICV值不一致,那么这个数据包会被认为是无效数据而被舍弃。
经过ICV校验的MPDU重组得到完整的MSDU,然后计算MIC值,MIC验证是根据MSDU的源地址、目标地址、优先级和MSDU数据(除了MIC域)计算MIC' 值,并将结果和收到的MIC按位比较。
如果收到的MIC和本地计算结果一样,则MSDU通过MIC验证,TKIP会将MSDU送到上层做进一步的处理。如果这两个数据中任何一位不一样,则验证失败,接收者抛弃数据包,并且实施反制措施。
(四)TKIP的MPDU格式
增加TKIP功能后,加密的数据帧格式如图15所示。
图15 TKIP加密数据帧格式
为了保证和以前的设备兼容,IV域和修改前基本一致。TKIP保留了4个字节的IV/KeyID域,同时在MPDU的IV域和加密数据之间插入4个字节的扩展IV域,并将8个字节的MIC添加到MSDU的数据域,使MIC也成为加密数据的一部分。
在密钥标识字节中的ExtIV位表示是否存在扩展IV域。如果ExtIV位置‘0’,表示只传送不带扩展IV域的数据帧;如果ExtIV位置‘1’,则在IV域后跟着4个字节的扩展IV域。对于TKIP必须将ExtIV位置‘1’,从而提供4个字节的扩展IV域;对于WEP的数据包,则将ExtIV位置为‘0’。
扩展后的IV为6个字节,分别用IV0、…、IV5表示。字节IV0~IV3参与TKIP第一阶段的混合运算,字节IV4和IV5参与TKIP第二阶段的混合运算。一旦IV的低16位全部翻转(从0xFFFF变到0x0000),则IV的高32位(扩展IV域)必须加1。
在TKIP的混合函数中,通常用TSC表示扩展后的IV,TSC也分为6个字节,即TSC=TSC0 TSC1 TSC2 TSC3 TSC4 TSC5,TSC和图15中RC4密钥的对应关系如下:
RC4Key[0]=TSC0
RC4Key[2]=TSC1
考虑到和以前设计网卡的兼容性,TKIP功能应该能够被禁止。这样在和旧版本的不支持TKIP功能的网卡通信时,大家可以使用共同支持的WEP功能。
微信公众号:计算机与网络安全
ID:Computer-network