分类: LINUX
2009-06-25 16:00:40
如果抓包,那么4-way handshake就是里面的四个EAPOL-KEY的包。如果是RSN方式那么GTK的2-way handshake其实也包含在这四个包里面,最后两条就是。
4-way的分析我翻译自802.11i-2004
EAPOL-Key(S, M, A, I, K, KeyRSC, ANonce/SNonce, MIC, RSNIE, GTK[N])
其中:
S: initial key exchange完成标志,它是key information中的安全位标志位
M: MIC包含标志位。除了message 1外,其他三条信息都应该置该位,它是key information中的KEY MIC位
A: 信息需要ACK标志位,当接收方需要回应这条消息时,置该位。它是key information 中的KEY Ack位
I: 安装标志位,是否安装paiwise key。他是key information中的Install位
K: key类型标志位,P (Pairwise), G (Group/STAKey). 他是key information中的key type位
KeyRSC KeyRSC,它在KeyRSC域中
Anounce/SNounce: 他是Authenticator/Supplicant nonce.它在 the Key Nonce域中
MIC : MIC
RSNIE: RSN IE,它在Key data域中
GTK: 加密的GTK,它在Key data域中
N: key标识,用于只是GTK的索引。
4次握手过程可以用下面的公式表示。
Message 1. Authenticator → Supplicant: EAPOL-Key(0,0,1,0,P,0,ANonce,0,0,0)
Message 2. Supplicant → Authenticator: EAPOL-Key(0,1,0,0,P,0,SNonce,MIC,RSNIE,0)
Message 3. Authenticator → Supplicant: EAPOL-Key(1,1,1,1,P,KeyRSC,ANonce,MIC,RSNIE,GTK[N])
Message 4. Supplicant → Authenticator: EAPOL-Key(1,1,0,0,P,0,0,MIC,0,0)
用简单的言语解释一下,基本意思就是
PTK是两边都要对上的,而GTK是在PTK成功后,AP直接将加密过GTK发给STA,STA再把GTK解出来。抓包看到有四个EAPOL-KEY,后两个包含AP和STA安装GTK。
对于PTK,AP送Anouce给STA,STA收到后,自己产生一个SNounce然后结合ANounce PMK AA和SA得出PTK,进而有MIC key然后连同一个802.1xdata通过HMAC_MD5算出MIC,STA把MIC和SNounce发给AP。AP收到Snouce后,自己也使用相同的算法,通过SA AA SNounce ANounce计算MIC,如果这个MIC和STA发过来的MIC是一样的,那么就说明两侧的PMK是一样的,不然过后AP就会发出deauth给STA
PTK成功后,两侧的PTK Key结构就确定下来了,随后AP会通过EAPOL-KEY把GTK发给STA,AP发一个MIC给STA,STA把KEY解出来,发一个确认信息给AP。
WPA和RSN在处理流程还存在下面一些不同:
基本上就是PTK和GTK何时安装到驱动的时机是不一样以及传输使用的descriptor格式不同。