WEP,WPA-PSK,WPA2-PSK握手深入分析1

1 WEP 暂时没时间去梳理,后期会给出。

2 WPA-PSK,WPA2-PSK

2.1 握手过程:


WEP,WPA-PSK,WPA2-PSK握手深入分析1_第1张图片

握手图解:


1Station发出一个Proble Request广播,寻找周围的AP

2)AP收到Proble Request广播后回复Proble Response

3)Station发出一个Auth,声明Auth AlgorithmOpen System;

4)AP收到Station发出一个Auth后,回复一个Auth,认可Auth AlgorithmOpen System,置Status Code0

5)Station发出一个Association Request,请求是否匹配相关参数

6)AP收到Association Request后,会仔细核查基本速率等参数;匹配的话回复一个Association Response

7)APStation 进行WPA-4HANDSHAKE,完成单播和组播/广播的密钥的生成。(重头戏)


WPA-4HANDSHAKE

 

WPA-4HANDSHAKE是基于802.1X 协议,使用eapol key进行封装传输。

 

AP初始化:

使用 SSID 和passphares作为入参,通过哈希算法产生PSK。在WPA-PSK 中PMK=PSK。

 

l  第一次握手:

AP广播SSID,AP_MAC;

STATION 端使用接受到的SSID,AP_MAC和passphares使用同样算法产生PSK。

 

l 第二次握手

STATION 发送一个随机数SNonce,STATION_MAC(SA)给AP;

AP端接受到SNonce,STATION_MAC(SA)后产生一个随机数ANonce,然后用PMK,AP_MAC(AA),STATION_MAC(SA),SNonce,ANonce 用以下SHA1_PRF算法产生PTK,提取这个PTK 前16 个字节组成一个MIC KEY。

 

l 第三次握手:

AP发送上面产生的ANonce给STATION

STATION 端用接收到ANonce 和以前产生PMK,SNonce,AP_MAC(AA),STATION_MAC(SA)用同样的算法产生PTK。提取这个PTK 前16 个字节组成一个MIC KEY使用以下算法产生MIC值用这个MIC KEY 和一个802.1X数据帧使用以下算法得到MIC值

MIC = HMAC_MD5(MIC Key,16,802.1X data)

 

l 第四次握手:

 STATION 发送802.1X  数据帧,MIC给AP;STATION 端用上面那个准备好的802.1X 数据帧在最后填充上MIC值和两个字节的0(十六进制)然后发送这个数据帧到AP。

 AP端收到这个数据帧后提取这个MIC。并把这个数据帧的MIC部分都填上0(十六进制)这时用这个802.1X数据帧,和用上面AP产生的MIC KEY 使用同样的算法得出MIC’。如果MIC’等于STATION 发送过来的MIC。那么第四次握手成功。若不等说明则AP 和STATION 的密钥不相同,握手失败了。

 

 

通过四次握手和经过相关算法得到以下密钥,用于加密不同的数据类型

WEP,WPA-PSK,WPA2-PSK握手深入分析1_第2张图片



 EAPOL KCK(key confirmation key):密钥确认密钥,用来计算密钥生成消息的完整性

 EAPOL KEK(key Encryption key):密钥加密密钥,用来加密密钥生成消息

 TKIP TK(CCMP TK):这部分用来对单播数据的加密

 TKIP MIC key:用于Michael完整性校验的(只有TKIP有)



2.组密钥
   GMK主组密钥(group master key)以作为临时密钥的基础
     和成对密钥一样扩展获得GTK (groupTransient Key) 
     公式如下:
     GTK=PRF-X(GMK,"Group key expansion",AA||GN)
     GN - AP 生成的 Nonce 
     AA - AP  MAC地址

GMKGroup Master Key,组主密钥):认证者用来生成组临时密钥(GTK)的密钥,通常是认证者生成的一组随机数。

GTKGroup Transient Key,组临时密钥):由组主密钥(GMK)通过哈希运算生成,是用来保护广播和组播数据的密钥。






你可能感兴趣的:(WIFI/802.11)