3.4.2 第一次握手
AP广播SSID,AP_MAC(AA)→STATION STATION端使用接受到的SSID,AP_MAC(AA)和passphares使用同样算法产生PSK
3.4.3 第二次握手
STATION发送一个随机数SNonce,STATION_MAC(SA)→AP AP端
接受到SNonce,STATION_MAC(SA)后产生一个随机数ANonce
然后用PMK,AP_MAC(AA),STATION_MAC(SA),SNonce,ANonce用以下算法产生PTK
PTK=SHA1_PRF(PMK, Len(PMK), "Pairwise key expansion",MIN(AA,SA) || Max(AA,SA) || Min(ANonce,SNonce) || Max(ANonce,SNonce)) 提取这个PTK前16个字节组成一个MIC KEY
3.4.4 第三次握手
AP发送上面产生的ANonce→STATION
STATION端 用接收到ANonce 和以前产生PMK,SNonce,AP_MAC(AA),STATION_MAC(SA)用同样的算法产生PTK。
提取这个PTK前16个字节组成一个MIC KEY 使用以下算法产生MIC值用这个MIC KEY 和一个802.1x data数据帧使用以下算法得到MIC值 MIC = HMAC_MD5(MIC Key,16,802.1x data)
3.4.5 第四次握手
STATION发送802.1x data ,MIC→AP STATION端
用上面那个准备好的802.1x数据帧在最后填充上MIC值和两个字节的0(十六进制)让后发送这个数据帧到AP。 AP端
收到这个数据帧后提取这个MIC。并把这个数据帧的MIC部分都填上0(十六进制)这时用这个802.1x data数据帧,和用上面AP产生的MIC KEY 使用同样的算法得出 MIC’。如果MIC’等于STATION发送过来的MIC。那么第四次握手成功。若不等说明则AP和STATION的密钥不相同,或STATION发过来的数据帧受到过中间人攻击,原数据被篡改过。握手失败了