Wifi_四次握手

概述

什么是 四次握手

四次握手是 AP (authenticator) 和 (supplicant)进行四次信息交互,生成一个用于加密无线数据的秘钥。

Wifi的连接

让我们 从一次Wifi连接的过程入手。

用事实说话(先抓个包)

抓包

  • 这个图的确是很抽象,可能有点劝退,不过不用担心,这个图可以先不看。
  • 这个图只是想说明一点,WIFI建立连接的时候,在空气中传播的就是这些数据包。
  • 而我们接下来就是要解释一下为什么要传这些包,包中都有一些什么比较重要的数据。

再重申一遍,四次握手是为了生成一个秘钥。

  • 为什么要生成这个秘钥?

    • 当然是为了加密 之后传输的数据包啊,不然你在网上冲浪的小秘密不就被发现了!!

WPA认证过程

先上图(上述抓包图的精简版):
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 位,用于校验消息的完整性。

四次握手

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。

在第二次握手过程中,AP 利用自己生成的 PMK 和 ANonce 与 从 STA 那里拿到的 SNonce 生成了PTK。

同样,我们把这里的 PTK 叫做——ap_PTK。

在第二次握手过程中,STA 将 自己生成 MIC 传给了AP。

MIC 是 sta_PTK 的前16位,它会去和 ap_PTK 的前16位去比对

  • 如果校对失败,则握手失败,AP 将不会在理 STA 了。
  • 如果校对成功,则进行后续确认环节,从这之后,每个数据包中都会包含 MIC。

小细节:大家有没有发现,重要的 PMK 和 PTK 是不会在数据包中体现的。

总结

说实话,我不太爱写最后的总结,一般都是 这样草草了事:

  • That’s all , , thank you ! !

但这次还是稍微写一点吧,因为这次准备的时间比较长,但看上去并不充分,很多细节都被忽略了,只是简单聊了聊 “四次握手” 这回事儿,说的也不是很详细,但基本上把大致的结构说清楚了,也加了一些自己的理解,分享了一些自己发现的小细节。

当然,如有纰漏 欢迎指正。

That’s all , , thank you ! ! !

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>