4 way handshake
来源:互联网 发布:常见网络端口号 编辑:程序博客网 时间:2024/04/30 11:35
4-way的分析我翻译自802.11i-2004 8.5.2.2,因为这个东西三言两语是说不清楚的。网上的那些只能作为科普而不可以用来精确的理解。
8.5.2.2 EAPOL-key Frame notation
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的索引。
8.5.3.4 4-way handshake
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格式不同。
WPA/RSN使用四次握手(4-Way Handshake)的方式生成所需的密钥。
作用
四次握手通过一系列的交互,从PMK(Pairwise Master Key)生成PTK(Pairwise Transient Key)。PMK来自MSK(Master Session Key),是MSK的前256位,32字节。
本文的主要目的是讲PTK,所以暂时忽略PMK和MSK。
PTK的内容
PTK包含3个部分,KCK(Key Confirmation Key),KEK(Key Encryption Key),TK(Temporal Key)。
PTK的总长度根据加密方式不同而不同。
当加密方式是TKIP时,PTK长512位,按顺序分别为KCK占128位,KEK占128位,TK占256位。
当加密方式是CCMP时,PTK长384位,按顺序分别为KCK占128位,KEK占128位,TK占128位。
KEK和KCK是给EAPOL-Key,也就是四次握手时,加密和完整性验证用的。TK用于后续的数据加密。
四次握手的报文都是基于EAPOL-Key的。EAPOL-Key的结构如下:
PTK的生成
生成PTK,需要5个必要元素,PMK,ANonce(Nonce 1),SNonce(Nonce 2),Authenticate MAC(MAC 1),Supplicant MAC(MAC 2)。如下图:
2个Nonce分别是Authenticator和Supplicant生成的随机数。
这张图里的输出包含4个部分,其实Data Encr和Data MIC合起来就是前面提到的TK。而EAPOL Encr/MIC分别对应前面的KEK和KCK。
四次握手的交互过程
下面的交互仅仅是一个流程,对内部的一些数据的处理就不细说了。
1/4:Authenticator -> Supplicant
Authenticator把ANonce送给Supplicant。Supplicant收到1/4后,就有了生成PTK的所有元素。因为1/4里同时也包含了Authenticator的MAC地址。
2/4:Supplicant -> Authenticator
Supplicant计算出PTK,把SNonce和自己的MAC地址送给Authenticator。同时,从2/4报文开始,后面的每个报文都会有MIC。1/4没有。
3/4:Authenticator -> Supplicant
Authenticator向Supplicant证明自己有有效的,同样有MIC加入其中
4/4:Supplicant -> Authenticator
仅是对3/4的一个ACK。说明PTK已经装好,后面的数据可以加密了。
- 4 way handshake
- 4-way handshake
- wpa的4-Way Handshake
- wpa的4-Way Handshake
- TCP 3 way handshake
- TCP Three Way Handshake
- The Four-Way Handshake
- TCP Three-Way handshake
- WEP四次握手(4-way-handshake)过程
- RSNA、802.1X及4-way handshake的关系
- Ubuntu下wpa_supplicant命令导致WPA: 4-Way Handshake failed
- WPA-PSK 4-way handshake 四次握手过程
- 802.11 Four-way handshake Messages
- 三次握手Three-way Handshake
- [patch] fix WPA: Not enough entropy in random pool to proceed - reject first 4-way handshake
- 802.1X的wpa认证流程-------4-way handshake过程分析
- 802.1X的wpa认证流程-------4-way handshake过程分析
- 著名的三次握手(three-way handshake)
- 复选框的选中事件
- leetcode subsets c++
- java的事件处理
- ArcGIS Server 发布带有中文标注服务乱码的问题
- POJ2371#堆排
- 4 way handshake
- SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法
- 我可以做的更好,但我不会这么做。
- 五种开源协议的比较
- Android单元测试的配置
- Python的50个模块,满足你各种需要
- HBase性能优化方法总结(二):写表操作
- C++ 在线编译器(支持 C++11)
- java学习笔记3--java语言基础