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图
图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
图2 open方式的connect过程
a. Open System AuthencicationProcess ,就好比把网线插入AP的有线口
b. Association:完成802.11layer-2的negotiation,建链,成功后AP会分配给STA一个AssociationID
c. 开始真正的数据传输
2) wpa/wpa2-psk方式下的connect
图3wpa/wpa2-psk方式下的connect
a.Authenciation,同上
b. Association,同上
c EAPOL 4-way shake
d.真正的数据传输
3)wpa/wpa2-eap方式下的connect
图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)。
图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
3. http://blog.csdn.net/kyokowl/article/details/8500557