WPA3-SAE 也出来了!
WPA-SAE,认证关联,以及与WPA2的区别。
概述
什么是 四次握手?
四次握手是 AP (authenticator) 和 (supplicant)进行四次信息交互,生成一个用于加密无线数据的秘钥。
Wifi的连接
让我们 从一次Wifi连接的过程入手。文章来源地址https://www.yii666.com/blog/358518.html
用事实说话(先抓个包)
- 这个图的确是很抽象,可能有点劝退,不过不用担心,这个图可以先不看。
- 这个图只是想说明一点,WIFI建立连接的时候,在空气中传播的就是这些数据包。
- 而我们接下来就是要解释一下为什么要传这些包,包中都有一些什么比较重要的数据。
再重申一遍,四次握手是为了生成一个秘钥。
为什么要生成这个秘钥?
- 当然是为了加密 之后传输的数据包啊,不然你在网上冲浪的小秘密不就被发现了!!
WPA认证过程
先上图(上述抓包图的精简版):
先说明一下 上图的虚线部分(为什么是虚线呢?)
- WPA2 是没有后续的那四次数据交互的 ,WPA才有。(当 设备同时支持WPA/WPA2时,默认选择更新一代的 WPA2)
- 首先是 认证 (Authentication):STA 和 AP 互相认证一下对方是不是 802.11设备。
- 当然,主要是 AP 对 STA 做一下链路认证,确认其的合法性。
- 其次是 关联 (Association):关联总是由STA发起的,实际上关联就是STA和AP间无线链路服务协商的过程。
- AP 在这时就已经将连接数 +1了(后续握手失败了 再 -1)
- 由 STA 发出请求包(内含 STA 支持的速率、信道、QoS 的能力,以及选择的接入认证和加密算法等等)
- 关联完成之后,就标志着 STA 与 AP 之间已经建立好了 无线链路,如果 STA 没有选择安全认证机制,STA 获得 IP 之后就可以直接进行数据交互了。(这就是链接数为什么在这就可以 +1 了。)
接下来就是重点了。
四次握手
还是先上图,后解释。
大家放心,图中的文字说明,后续会提取出来,方便大家阅读。
我错了,我还是先说一下图中出现的 “名词”吧。
- STA:就是客户端,最常见的一个实例就是——“手机”
- AP:接入点,无线局域网构建者,通常情况下就是——“路由器”
- PSK:STA 与 AP 直接约定的 “暗语” ,用于认证(Authentication)的,通常情况下就是 WIFI密码。
- SNonce:STA 生成的随机数。
- ANonce:AP生成的随机数。
- PMK:PMK 是由 ESSID + PSK(通俗的密码) 通过 SHA-1 (一个Hash 算法) 计算出来的。
- PTK:Pairwise Transit Key,用来加密 AP 和 STA 通讯的单播数据包,AP 与每个 STA 通讯的PTK都是唯一的。
- PTK = PRF(PMK + ANonce + SNonce + Mac(AA) + Mac (SA))
- PRF:是一个随机的函数
- PMK:Pairwise Master Key,PMK 会驻留在 AP 和 所有的 STA 中。
- MAC(AA/SA):AP 和 STA 对应的 Mac 地址。
- MIC:Message Integrity Check,PTK 的前 16 位通过Hash算法得出,用于校验消息的完整性。
STA 和 AP 利用各自已知的 SSID 和 PSK 生成 PMK。
AP 的 SSID 和 PSK 是不会出现问题的;
SSID 也是 在扫描过程中 告知STA的,一般也不会有出入;
但 PSK(Wifi密码) 就不一定了,存在输入错误的可能。
- 如果STA端 PSK 错误,生成的 PMK 必然也会和 AP 生成的有出入,这会导致后续握手失败。
- 至于为什么失败,后续解释。
在第一次握手过程中,STA 利用自己生成的 PMK 和 SNonce 与 从 AP 那里拿到的 ASonce 生成了 PTK。
这里我们为了做区分,将这里的 PTK 叫做 —— sta_PTK。文章地址https://www.yii666.com/blog/358518.html
在第二次握手过程中,AP 利用自己生成的 PMK 和 ANonce 与 从 STA 那里拿到的 SNonce 生成了PTK。
同样,我们把这里的 PTK 叫做——ap_PTK。
在第二次握手过程中,STA 将 自己生成 MIC 传给了AP。
MIC 是 sta_PTK 的前16位通过一个Hash算法算出来的,它会去和 ap_PTK 的前16位算出来的MIC去比对
- 如果校对失败,则握手失败,AP 将不会在理 STA 了。
- 如果校对成功,则进行后续确认环节,从这之后,每个数据包中都会包含 MIC。
小细节:大家有没有发现,重要的 PMK 和 PTK 是不会在数据包中体现的。
文章来源地址:https://www.yii666.com/blog/358518.html