WiFi认证技术演进:从WPA2到WPA3-SAE
WiFi认证技术演进:从WPA2到WPA3-SAE
引言
WPA3-SAE是针对四次握手的协议。四次握手是AP(认证方)和STA(请求方)进行四次信息交互,生成一个用于加密无线数据的密钥。这个过程发生在WiFi连接的过程中。为了更好地阐述WPA3-SAE的作用和凸显其优点,我们需要借助WPA2-PSK来作对比。先来简单阐述一下WPA2-PSK……
WPA/WPA2中的四次握手
连接过程
其中四次EAPOL Key属于四次握手的过程。具体过程请参考:Wifi_认证、关联和四次握手(WPA/WPA2)。
注意:WPA系列协议描述的不仅仅是握手过程。
握手过程采用的算法优点
- 密钥的生成具有隔离性
- 不同的STA与同一个AP不会生成相同的密钥
- 同一个STA连接AP的不同过程也不会产生相同的密钥
- 预共享WiFi密码PSK,使得WiFi网络有了不错的可控性
优点可圈可点,但缺点也相对明显。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先聊到这儿,后续有想到的在补充。
总结
WPA3-SAE通过引入SAE认证机制和“蜻蜓”握手协议,有效提升了WiFi网络的安全性,能够抵御暴力破解攻击,并提供正向加密保护,即使攻击者获取了PSK也无法解密用户数据。这对于保护用户隐私和数据安全具有重要意义。