[转]WPA 4次握手

时间:2022-11-04 08:10:41

WPA 4-way handshake

dlmu2001

tomorrow_cyz@163.com

一、why EALOP 4-way handshake
    为了解决无线传输不安全,需要对无线连接的接入进行控制,并实现帧传播的加解密。  
    WPA 4-way handshake有点相当于一个“安全”地协商“交换”秘钥的过程。

    这个秘钥就是PTK(PairwiseTransient Key),成对传输秘钥。

二、WPA 4-way handshake过程

1.     一个简单的4-way handshake图

[转]WPA 4次握手

图1 4-wayshake overview

以WPA/WPA2-PSK为例,AP/STA在4-wayshake前各自都知道密码(也就是用户连接某SSID输入的密码)
1)AP(Authenticator)在1/4的时候把自己的随机数(ANonce)传给STA,STA在收到ANonce后,已经可以生成PTK

2)2/4的时候把自己的随机数(SNonce)传给AP,同时加了MIC(对应于PTK中的KCK,也就是秘钥确认秘钥)。AP收到SNonce以后,就可以生成PTK了,将收到的MIC和自己生成的MIC比较进行完整性校验,如果校验失败,握手失败。校验成功,AP生成PTK和GTK(GroupTransient Key,用来加密组播和广播)

3)3/4中将GTK和MIC一起发给STA,因为此时双方都已经知道PTK,所以会对   
    GTK进行KEK加密。
4)STA发送ACK进行确认


4次握手完成以后,之后的帧传播就都会以加密的方式进行。

2 . 4-way shake在AP/STA通讯中的位置
      1) open方式下的connect

[转]WPA 4次握手

图2 open方式的connect过程

a.     Open System AuthencicationProcess ,就好比把网线插入AP的有线口

b.     Association:完成802.11layer-2的negotiation,建链,成功后AP会分配给STA一个AssociationID

c.     开始真正的数据传输

2) wpa/wpa2-psk方式下的connect

[转]WPA 4次握手
      

图3wpa/wpa2-psk方式下的connect

a.Authenciation,同上

b. Association,同上

c EAPOL 4-way shake

d.真正的数据传输

3)wpa/wpa2-eap方式下的connect

[转]WPA 4次握手

图4wpa/wpa2-eap方式下的connect

在2)的基础上,wpa/wpa2-eap有个802.1x的auth过程,用于在认证服务器上认证,以获取MSK

三、具体

1.     PTK的生成

生成PTK,需要5个必要元素,PMK,ANonce(Nonce 1,AP生成的随机数),SNonce(Nonce2,STA生成的随机数),AuthenticateMAC(MAC1,如AP的MAC),SupplicantMAC(MAC2,如STA的MAC)。

[转]WPA 4次握手

图5 PTK的生成

图的四个输出里面,DataEncr和DataMIC合起来就是前面提到的TK,EAPOLEncr/MIC分别对应KEK和KCK。

 

2.     PTK的组成

图4的输出就是PTK的组成。主要产生两种秘钥,一种在EAPOL4-way shake的时候用,一种在数据传输的时候用。每种又分成加密用和计算完整性用。PTK共64位,具体可以分成如下4个部分

1) EAPOLKCK(key confirmation key),16位,对应于图5中的EAPOLMIC,以及图1中的MIC,用来在EAPOL4-way shake时校验完整性

2) EAPOLKEK(key encryption key),16位,对应于图5中的EAPOLEncr,用于在EAPOL4-way shake的3/4的时候来加密GTK等数据

3) TK(TemporaryKey),16位,对应于图5中的DataEncr,用于加密单播数据

4)  Data Mic,16位,对应于图5中的DataMIC,具体又可分为8位的Tx key和8位的Rx key,用于数据传输的时候TKIP方式的Michael完整性校验。CCMP不用。
     

3.     PMK的生成

PMK,PairwiseMaster Key

在WPA-PSK中,PMK=pdkdf2_SHA1(passphrase,SSID, SSID length, 4096)

而在802.1x+EAP中,PMK=L(MSK,0,256)

其中MSK(Mastersession key)由802.1x交换获得

在4-wayhandshake前,AP/STA已经知道了PMK。

 

4.     GTK

GTK,GroupTransient Key,用于对组播和广播加解密

在图5中,AP在3/4的时候会生成GTK,传给STA

GTK由GMK(Groupmaster key)和成对秘钥扩展获得

GTK=PRF-X(GMK,”Group key expanision”,AA|GN)

其中GN是Authenticator生成的Nonce,AA是Authenticator的MAC

 

GMK=MMK?

 

GTK只包含数据传输部分的Key,也就是GroupEncryption Key(加解密)和Michael Authenticator MIC Key(完整性校验),没有包含EAP-Key部分,所以只有32位。

 

 

参考

1.     https://en.wikipedia.org/wiki/IEEE_802.11i-2004

2.     https://supportforums.cisco.com/document/9879826/80211-wlan-roaming-and-fast-secure-roaming-cuwn#WPAWPA2-PSK

3.     http://blog.csdn.net/kyokowl/article/details/8500557