WPA/WPA2密钥派生与分发

AUTHOR:   Jeffrey.zhu

                                    BLOG: http://blog.csdn.net/gueter/

 

 

1 概述

 

WPA 的密钥生成、管理系统结合了认证和数据私密功能,具有较强的健壮性,在 STA AP 之间认证完成且四次握手成功后,各类密钥就产生了。在 ESS 网络中, RSNA 定义了两类密钥层次结构:

1)             Pairwise Key 层次结构,用于保护单播流量( Unicast Traffic ),支持 CCMP TKIP ,通过将发送地址、接收地址与 Pairwise Key 的绑定,可以在解密( Decapsulation )过程中,有效地检测出攻击者伪造的 MPDU ,即允许接收端的 STA 检测 MAC 欺骗及数据伪造,而 GTK 则不具备这样的能力;

2)             Group Key 层次结构,用于保护多播( Multicast Traffic )和广播流量( Broadcast Traffic ),由单个密钥组成。

       ESS 中, AP BSSID 就是 IEEE 802.1X 认证器的 AA MAC 地址),而请求者的 MAC 地址 (SPA) 也就是 STA MAC 地址,在 RSN 中,使用 CCMP STA 在每个 <TA, RA> 对中,应该至少支持一个 Pariwise Key ,同时可以用 <TA ,RA> 来标识 Pariwise Key

       在复杂网络中( ESS IBSS 混合),当 AP 同时与使用 WEP (用共享 WEP 密钥)的 STA 以及使用 CCMP TKIP (用 Pairwise Key )的 STA 通信时,使用 WEP STA 使用 Default Key 0~3 作为 shared WEP Key ,问题在于,若 AP 设置成使用 WEP Default Key 0 与使用 WEP STA 通信,那些不支持 WEP Default 0 但支持 TKIP 或者 CCMP STA 将会在 RSN Capabilites field 里头指定为 No Pairwise subfield ,由此, AP 也会配置成与 WEP-STA No Pairwise-STA No Pairwise 的使用仅为了在 RSNA 中支持 WEP )通信,也就是说四次握手的时候 AP 不会安装 Pairwise Temporal Key ,而是在所有类型的通信流量中使用 WEP Default Key 0

       在复杂网络中,支持 TKIP STA 都应该支持一个 Pairwise Key ,无论这个 Pairwise Key 是通过 Key mapping Key (由 PTK 映射)方式获取,还是通过 mapping to Default Key 0 (由 Default Key 0 映射)的方式获取,这样, AP 就会使用 Pairwise Key 用于保护 AP STA 之间的单播流量,如果支持 Key mapping Key 的方式,那么 <TA ,RA> 可以用来标识 pariwise Key ,如果不支持,则帧中的密钥索引( Key index )将会置 0 ,也就是说会使用 Default Key 0 保护通信流量。

       同时不支持 TKIP WEP Default Key 0 STA 通过设置 RSN IE No Pairwise 域来广播这一信息,在四次握手的 message3 中, AP 将会清除 install bit 通知 STA 不要安装 Pairwise Key ,相应地, AP 会发一个 WEP shared Key STA 作为 Default Key 0 使用,这个 Key 将会用于 STA AP 之间单播帧的传递。

       TSN 中,支持 CCMP STA 将会同时支持 Pairwise Keys WEP Default Key 0 ,当配置使用 CCMP 时, STA 协商为 No Pairwise subfield 是无效的。

       密钥层次的描述用到两个函数:

l   L(Str , F , L ) :从 Str 的左边开始,抽取从 L L+F-1 F bits

l   PRF-n :产生 n bits 输出的伪随机函数。

 2 Pairwise Key 层次结构

       Pairwise Key 层次结构如下图所示:

         根据采用的密钥管理协议( AKMP )的不同, PMK 的获取有两种情况:

l   802.1X+EAP 模式下, PMK MSK 中派生而来,取 MSK 的前 256 bits (bits 0–255) 用来计算 PMK PMK =L(MSK, 0, 256) ,也就是说,在这种模式下, MSK 的长度至少要是 256bits ,且 PTK 的的生命周期应该短于 PMK 的生命周期( lifetime ),其中生命周期由认证服务器( AS )决定: lifetime = Session-Timeout + dot1xAuthTxPeriod 或者取 MIB 里头的变量: lifetime = dot11RSNAConfigPMKLifetime

l   WPA-PSK 模式下,一个 256bits PSK 将会直接配置到 STA AP 中,或者将 pass-phrase (如用户输入的密码)配置到请求端( Supplicant )与认证器端( Authenticator ),关于 PSK 的配置方法不属于 IEEE802.11i 标准的内容,其中常用的方法是系统与用户交互来完成 PSK 的配置(且具体实现中,应该为每一对 STA 之间的通信生成一个 PSK ),例如,如果配置了 pass-phrase ,则 256bit PSK 将会通过下面方式派生,并当作 PMK 使用,利用 PMK 便可以派生出 PTK ,流程如下图所示:

 

l   SNonce 是由 Supplicant 端(即 STA 端)生成的一个伪随机数;

l   ANonce 是由 Authenticator 端(即 AP 端)生成的一个伪随机数。

       其中, pdkdf2_SHA1( ) SHA1_PRF( ) 在前述章节有所介绍。 根据密钥套类型( TKIP/CCMP ),我们将 PTK 的肢解进行进一步细分:

 

l   KCK ,用于 4-Way Handshake 中对数据原始性认证进行保障,也就是 MIC Key

l   KEK 用于 4-Way Handshake Group Key Handshake 中的 EAPOL-Key 帧的加解密;

l   TEK ,也就是 TK ,用于数据帧的加解密;

l   TMK 则是 TKIP 中的 MIC 校验 Key

       最后,作者对 Pairwise Key 层次结构中不同密钥资源在不同信息安全体系中的使用进行了一个总结:

3 Group Key 层次结构

       GMK 的获取在前述章节有所介绍, GTK 作为一个临时密钥( TK )应该是一个伪随机数,也就是说 AP 中的 GMK(Group Master Key ) 应该周期性地改变, Group Key 层次结构如下图所示:

 

l   Group nonce (GNonce) 是一个由 IEEE 802.1X 认证器生成的伪随机数;

l   AA IEEE 802.1X 认证器 MAC 地址;

       根据密钥套选择的类别, GTK 被肢解为不同长度的 TK Temporal Key )用于保护多播与广播通信( Multicast / Broadcast Communication ),也就是说, GTK 被用于一个认证器端与多个请求端之间,其中, TKIP X = 256 CCMP X = 128 WEP X = 40 104

       类似地,作者也对 Group Key 层次结构中不同密钥资源在不同信息安全体系中的使用进行了一个总结:

                    

4 PeerKey Key 层次结构

         PeerKey Key 层次结构如下图所示:

 

 

         由于 PeerKey Key 用在 IBSS 网络中, 所以下面只进行简单介绍:

l   SMK 256bits

l   STKs 用于 Initiator STA Peer STA 之间,即用于 IBSS STA STA 之间;

l   TK 用于保护 Initiator STA Peer STA 之间的单播通信( Unicast Communication );

l   INonce 是一个由 Initiator STA 产生的伪随机数;

l   P Nonce 是一个由 Peer STA 产生的伪随机数;

l   SKCK 用于保护 4-Way STK Handshake 中的认证数据;

l   SKEK 用于保障 4-Way STK Handshake EAPOL-Key 帧的保密性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值