转自:http://webstone.blog.sohu.com/112145780.html
802.11标准提供了认证和加密两个方面的规范定义。
1、认证:
它定义了两种认证服务:开放系统认证(Open System Anthentication)和共享密钥认证(Shared Key Authentication),其中开放系统认证是802.11的缺省认证方法。认证类型用MAC帧的认证算法码(authentication algorithmnumber)字段标识。认证算法码字段值为"0"代表开放系统认证,字段值为"1"代表共享密钥认证。MAC帧的认证处理序列号(authentication transaction sequence number)字段用于指示认证过程的当前状态。
1.1开放系统认证
开放系统认证使用明文传输,包括两个通信步骤。发起认证的STA首先发送一个管理帧表明自己身份并提出认证请求,该管理帧的认证算法码字段值为"0"表示使用开放系统认证,认证处理序列号字段值为"1"。随后,负责认证的AP对STA作出响应,响应帧的认证处理序列号字段值为"2"。
开放系统认证允许对所有认证算法码字段为"0"的STA提供认证,在这种方式下,任何STA都可以被认证为合法设备,所以开放式认证基本上没有安全保证。
1.2共享密钥认证
共享密钥认证需要在STA和AP之间进行四次交互,使用经WEP加密的密文传输。
第一步:发起认证的STA同样首先发送一个管理帧表明自己身份并提出认证请求,该管理帧的认证处理序列号字段值为"1"。
第二步和第三步是个"握手"过程:第二步AP作出响应,响应帧的认证处理序列号字段值为"2",同时该帧中还包含一个由WEP算法产生的随机挑战信息(challenge text)。
第三步,STA对随机挑战信息用共享密钥进行加密后 发回给AP,这一步中,认证处理序列号字段值为"3"。
第四步:AP对STA的加密结果进行解密,并返回认证结果,认证处理序列号字段值为"4"。在这一步中,如果解密后的challenge text与第二步发送的原challenge text相匹配,则返回正的认证结果,即STA可以通过认证加入无线网络;反之,认证结果为负,STA不能加入该无线网。
在理论上,共享密钥认证是安全的。
1.3传统的方式:WEP
WEP是IEEE 802.11标准定义的加密规范。WEP采用的是对称加密法,即加解密使用相同的密钥。IEEE 802.11在标准中定义了带24位初始向量(IV)的40位密钥(不同的软件供应商提供的实际密钥长度不尽相同,如有的产品提供带24位初始向量的104位密钥)。尽管WEP算法会根据不同的安全需求等级,周期性的更改向量初值,但一般一个WEP密钥持续的使用时间都很长。
WEP为授权无线局域网用户提供加密服务,其工作原理可简述为:WEP函数对帧中应用数据部分进行加密,并以密文替代原帧中的明文数据发送,同时通过在MAC头的的帧控制字段中设置WEP位,告知接收节点传输数据已加密。接收节点在收到密文帧后,用相同的加密机制对密文进行解密,并将解密结果替代回数据帧,这样就得到了发送方的原始数据信息。
对于WEP加密的安全性网上介绍的非常多,其缺陷是共所周知的。
2.802.11i
IEEE 802.11i规定使用802.1x认证和密钥管理方式;在数据加密方面,定义了TKIP(Temporal Key Integrity Protocol)、CCMP(Counter-Mode/CBC-MAC Protocol)和WRAP(Wireless Robust Authenticated Protocol)三种加密机制。其中TKIP采用WEP机制里的RC4作为核心加密算法,可以通过在现有的设备上升级固件和驱动程序的方法达到提高WLAN安全的目的。CCMP机制基于AES(Advanced Encryption Standard)加密算法和CCM(Counter-Mode/CBC-MAC)认证方式,使得WLAN的安全程度大大提高,是实现RSN的强制性要求。由于AES对硬件要求比较高,因此CCMP无法通过在现有设备的基础上进行升级实现。WRAP机制基于AES加密算法和OCB(Offset Codebook),是一种可选的加密机制。
• WPA = Transition Security Network (TSN) = TKIP + 802.1X
• WPA2 = Robust Security Network (RSN) = CCMP + 802.1X
WPA采用了802.1x和TKIP来实现WLAN的访问控制、密钥管理与数据加密。802.1x是一种基于端口的访问控制标准,用户必须通过了认证并获得授权之后,才能通过端口使用网络资源。
WPA系统在工作的时候,先由AP向外公布自身对WPA的支持,在Beacons、Probe Response等报文中使用新定义的WPA信息元素(Information Element),这些信息元素中包含了AP的安全配置信息(包括加密算法和安全配置等信息)。STA根据收到的信息选择相应的安全配置,并将所选择的安全配置表示在其发出的Association Request和Re-Association Request报文中。WPA通过这种方式来实现STA与AP之间的加密算法以及密钥管理方式的协商。
2.1WPA/WPA2认证:
支持WPA的AP工作需要在开放系统认证方式下,STA以WPA模式与AP建立关联之后,如果网络中有RADIUS服务器作为认证服务器,可以配置STA使用802.1x方式进行认证;如果网络中没有RADIUS,可以配置STA与AP采用预共享密钥(PSK,Pre-Shared Key)的方式。
下面介绍802.1x的认证方式:
密钥的分配与管理:
STA与认证服务器间预置的密钥为MK(master Key),通过了802.1x身份验证之后,AP会得到一个与STA相同的Session Key, AP与STA将该Session Key作为PMK(Pairwise Master Key,对于使用预共享密钥的方式来说,PSK就是PMK)。随后AP与STA通过EAPOL-KEY进行WPA的四次握手(4-Way Handshake)过程,如图下图所示:
在这个过程中,AP和STA均确认了对方是否持有与自己一致的PMK,如不一致,四次握手过程就告失败。为了保证传输的完整性,在握手过程中使用了名为MIC(Message Integrity Code)的检验码。在四次握手的过程中,AP与STA经过协商计算出一个512位的PTK(Pairwise Transient Key),并将该PTK分解成为五种不同用途的密钥,如图3所示:
其中前128位用做计算和检验EAPOL-KEY报文的MIC的密钥,随后的128位作为加密EAPOL-KEY的密钥;接下来的128位作为AP与该STA之间通信的加密密钥的基础密钥(即由该密钥再经过一定的计算后得出的密钥作为二者之间的密钥);最后两个64位的密钥分别作为AP与该STA之间的报文的MIC计算和检验密钥。
由PTK分解出来的这一组(五个)密钥是AP与该STA之间使用的密钥(所以也叫每用户密钥,用于AP与STA之间的单播报文的加密),这些密钥永远也不会以任何形式出现在无线网络上。在确认双方所持的PMK一致后, AP会根据自身是否支持每用户密钥的能力来指示STA是否安装并使用这个每用户密钥。
为了使现有的设备能够通过软件/固件升级实现WPA,协议规定AP可以不采用PTK方式,而是利用下面将要描述的GTK作为AP向STA发送单播报文时的密钥。如果AP通知STA安装并使用PTK,那么STA在向AP发送一个EAPOL-KEY相应报文后,再把相应的密钥安装到无线网卡中。
四次握手成功后,AP要生成一个256位的GTK(Group Transient Key),GTK是一组全局加密密钥,所有与该AP建立关联的STA均使用相同的GTK,AP用这个GTK来加密所有与它建立关联的STA的通信报文, STA则使用这个GTK来解密由AP发送的报文并检验其MIC。该密钥可以分解为三种不同用途的密钥, 最前面的128位作为构造全局“每报文密钥”(Per-packet Encryption Key)的基础密钥(Base Key),后面的两个64位的密钥分别作为计算和检验WPA数据报文的MIC的密钥。AP使用EAPOL-KEY加密密钥将GTK加密并发送给STA,并指明该GTK是否允许STA用作发送报文所使用,STA成功接收到该报文,将GTK解密后,向AP发送应答报文,并根据AP所指示的Key Index将其安装无线网卡的相应位置,如果AP使用GTK作为向某一STA单播传输的密钥,则该STA也需要使用GTK作为向AP发送单播报文的密钥。
TKIP并不直接使用由PTK/GTK分解出来的密钥作为加密报文的密钥,而是将该密钥作为基础密钥(Base Key),经过两个阶段的密钥混合过程,从而生成一个新的每一次报文传输都不一样的密钥,该密钥才是用做直接加密的密钥。 通过这种方式可以进一步增强WLAN的安全性。密钥的生成方式如图4所示:
在WPA中,AP支持WPA和WEP无线客户端的混合接入。在STA与AP建立关联时,AP可以根据STA的Association Request中是否带有WPA信息元素来确定哪些客户端支持使用WPA。但是在混合接入的时候,所有WPA客户端所使用的加密算法都得使用WEP,这就降低了无线局域网的整体安全性。
2.2WPA加密:
TKIP虽然与WEP同样都是基于RC4加密算法,但却引入了4个新算法:
● 扩展的48位初始化向量(IV)和IV顺序规则(IV Sequencing Rules);
● 每包密钥构建机制(per-packet key construction);
● Michael(Message Integrity Code,MIC)消息完整性代码;
● 密钥重新获取和分发机制。
2.3WPA2加密:
WPA2 要求支持使用 Counter Mode-Cipher Block Chaining (CBC)-Message Authentication Code (MAC) Protocol (CCMP)(计数器模式和密码块链消息身份验证代码协议)的高级加密标准 (AES)。AES 计数器模式一种块密码,可使用 128 位加密密钥,一次对多个 128 位数据块进行加密。CBC-MAC 算法可生成一个消息完整性代码 (MIC),为无线帧提供数据来源验证和数据完整性。包含在 WPA2 保护的无线帧并合并到加密和 MIC 计算中的一个 Packet Number 字段,提供了重播保护。AES 加密符合联邦信息处理标准 (FIPS) 140-2 的要求。
2.4漫游过程中的预认证:
当无线客户端使用 802.1X 执行身份验证时,会有一系列消息在无线客户端和无线访问点 (AP) 之间传送,以交换凭据。此消息交换会给连接过程造成延迟。当无线客户端从一个无线访问点漫游到另一个访问点时,延迟执行 802.1X 身份验证会导致产生明显的网络连接中断的情况,而与时间相关的流量(语音或视频数据流)的情况尤其严重。为了最小化因在无线访问点间漫游而导致的延迟时间,WPA2 无线设备能够有选择地支持 PMK 缓存和预身份验证。
2.4.1 PMK 缓存
从一个无线访问点漫游到另一个访问点时,无线客户端必须与每个无线访问点一起执行完整的 802.1X 身份验证。WPA2 允许无线客户端和无线访问点缓存完整的 802.1X 身份验证的结果,这样当客户端漫游回已执行过身份验证的无线访问点时,就只需执行四次握手过程,并确定新的成对的临时密钥了。无线客户端在 Association Request 帧中包含了一个 PMK 标识符。该标识符是在最初的身份验证期间确定的,并与无线客户端和无线访问点的 PMK 缓存项目一起保存。PMK 缓存项目的保存时间有限,具体时间长度可在无线客户端和无线访问点上进行配置。
为了让使用单台交换机(充当 802.1X 身份验证器)的无线网络基础结构实现更快的转换速度,用于 Windows XP Service Pack 2 的 WPA2/WPS IE 更新会计算 PMK 标识符值,从而在连接到交换机的无线访问点间漫游时,可以重复使用同该交换机的 802.1X 身份验证所确定的 PMK。该方法称为 机会性的 PMK 缓存。
2.4.2 预身份验证
通过预身份验证,WPA2 无线客户端在与当前的无线访问点连接的同时,可以有选择地同其有效连接范围内的其它无线访问点,执行 802.1X 身份验证。无线客户端会通过现有的无线连接,向其它无线访问点发送预身份验证流量。与无线访问点进行了预身份验证,并将 PMK 及其相关的信息保存在 PMK 缓存中之后,无线客户端在连接到已经与之进行过预身份验证的无线访问点时,仅需执行四次握手过程。
支持预身份验证的 WPA2 客户端只能与在 Beacon 和 Probe Response 帧中公布其预身份验证能力的无线访问点,执行预身份验证。
WPA2 认证的无线设备也可兼容 WPA 和 WEP。可以在同一个环境中,同时运行 WPA2、WPA 和 WEP 无线设备。