引入
WPA3-SAE也是针对四次握手的协议。
四次握手是 AP (authenticator) 和 (supplicant)进行四次信息交互,生成一个用于加密无线数据的秘钥。
这个过程发生在 WIFI 连接 的 过程。
为了更好的阐述 WPA3-SAE 的作用 和 凸显其优点。我们需要借助 WPA2-psk 来做对比。
先来简单阐述一下 WPA2-psk …
WPA / WPA2 中的四次握手
这是一次连接过程:
其中 四次 eapol key 属于四次握手的过程。
具体过程请参考: Wifi_认证 、关联 和 四次握手(WPA/WPA2)
注意:WPA 系列协议 描述的 不仅仅是 握手过程。
握手过程 采用的算法优点为:
- 秘钥的生成具有隔离性
- 不同的 STA 与 同一个 AP 不会生成相同的秘钥
- 同一个 STA 连接 AP 的不同过程 也不会产生相同的秘钥
- 预共享WIFI密码 PSK,使得 WIFI 网络有了不错的可控性
优点 可圈可点,但缺点也相对明显。
WPA2-psk 最大的问题就是 不在安全了!!
破解教程层出不穷,安全升级迫在眉睫。
WPA2-psk 的安全性
迫在眉睫:2017年10月,802.11协议中,沿用了 13年的 WPA2 加密协议 被完全破解了。
先理解 WPA2-psk 的简要过程:(四次握手)
从这个过程中 我们看出:
- 预共享 PSK 参与了生成 PTK 的计算
- PTK 也负责了 对 PSK 的 验证
- 双方都有随机数的产生,赋予了 PTK的不唯一性。
最终 由 PTK 负责后续 Data 数据的 加密。
PTK的保密性 直接决定着 用户数据的安全性
由此可见,窥探者 除了 PSK 和 PTK 不能从空中抓到,其他参与计算的值都能抓到。
PMK = SHA-1(ESSID + PSK)
PTK = PRF(PMK + ANonce + SNonce + Mac(AA) + Mac (SA))
SHA-1 和 PRF 这两个函数 是 公开的
攻击者 一旦抓到 4次握手的包,便能离线暴力破解 PSK
之后便可以利用PSK去生成 PTK,进而窥探 用户数据。
WPA2-psk 破解原理
核心:想办法抓到四次握手的包
大致分为一下几个步骤:
- 明确 破解目标 AP 之后,针对某个已连接的 STA 伪造出一个 Deauthentication 帧,扰乱现有 STA 与 目标AP 的连接。
- Deauthentication(取消身份验证帧)会让 目标AP 将当前 STA 从自己的关联表中踢出(也就是断开连接了)
- AP 主动断开 STA 之后,会给 STA 发一个确认包,STA收到确认包之后 便会进行重连(毕竟不是 STA 自己真的想断开)
- 触发重连之后,趁机 抓取四次握手的空口包,带回家分析。
- 然后用字典法暴力破解
由此可见对 WPA2-PSK 的安全性已经支离破碎,对其的改进也是箭在弦上。
WPA3
WPA3-Personal 基于IEEE Std 802.11-2016 中定义的 SAE。
SAE 采用了“互联网工程任务组(IETF)”RFC7664 规范中定义的 “蜻蜓(Dragonfly)” 握手协议,将其应用于 Wi-Fi 网络以进行基于密码的身份验证。
针对 WPA2 的通病,WPA3 在各个场景下 都给出了不错的解决方案。
比如针对 WPA2-psk 的协议 ——WPA3-SAE 做了两点 具有革命性的优化。
- 针对暴力破解攻击的防护得到了提升。
即使用户没有设置较为复杂的密码。
- 提供了正向加密,即使攻击者知道了PSK 也无法窥探用户的数据。
WPA3-Personal 的连接交互过程
从上图我们能看出 与 WPA2 最明显的差别就是 认证过程
WPA3-SAE 的认证过程 变得繁琐了,从两帧变成了四帧
SAE 认证过程(Authentication)
WPA3-Personal 基于IEEE Std 802.11-2016 中定义的 SAE。SAE 采用了“互联网工程任务组(IETF)”RFC7664 规范中定义的 “蜻蜓(Dragonfly)” 握手协议,将其应用于 Wi-Fi 网络以进行基于密码的身份验证。
这个认证过程 会校验 PSK 的正确性,也会生成 PMK,供后续握手使用。
上图只是WPA3-SAE的认证过程,但似乎这已经完成了信息的校验 和 秘钥关键元素的生成。
站在用户的角度,设备连接这两种协议(WPA2-personal 和 WPA3-SAE)的热点没有任何操作上的区别。
- 都是要预先得知PSK(也就是AP密码)
那么让我们对比着 WPA2-personal 的“不安全”,来看看 WPA3-SAE 的“安全”。
详细阐述一下上图的过程:
- 首先 STA 和 AP 都有预留的 PSK,并且兵分两路生成各自的产物。
- 先通过ECC 对原始 PSK 进行映射。
这算是第一层保护,如若攻击者不清楚 椭圆函数的参数,便无法进行下一步。
- STA 生成随机数 rS ;AP 生成随机数 rA 。
- STA 将 P · rS 传给 AP
- Ap 将 P · rA 传给 STA
" · " 这里的运算符不是 “乘法”,是一种特殊的算法,正因如此,WPA3 - SAE 才安全。
- 这种算法 似乎遵循一定程度的“结合性”,但又不可逆。
就是说 : P · rS 推不出 rS, 抓到包了也没用。但 P · rS · rA 在三个元素的顺序 不影响整体的结果。(妙啊!!!)
- 这种算法 似乎遵循一定程度的“结合性”,但又不可逆。
- 后续就是进行一个 Hash 算法,再进行对比。当然在这个过程中也顺便生成了核心秘钥数据 (PMK)
- 校验通过之后,双方用各自生成的 PMK 进行 “四次握手” 来生成用来给 Data 数据加密的 秘钥。
上述流程可以完美 “格挡” 传统的破解手法。
今天SAE先聊到这儿,后续有想到的在补充。