wpa_supplicant状态机 像WAPI、EAP之类在关联之前也会进行认证。
DISCONNECTED 此状态表明客户端未关联,但是可能开始寻找接入点。 连接断开时进入此状态。 INACTIVE 如果没有启用的网络,则进入此状态 , wpa_supplicant没有尝试与新的 网络和外部互动,wpa_supplicant是disabled INTERFACE_DISABLED 如果禁用网络接口,则进入此状态。 wpa_supplicant拒绝任何会 使用无线电,直到启用接口为止。 AUTHENTICATING (关联之前的身份认证)当wpa_supplicant找到合适的BSS时进入此状态 进行身份验证,并且将驱动程序配置为尝试与此BSS进行身份验证。 UNINITIALIZED 这是一个附加的伪状态,用于处理wpa_supplicant未运行和/或我们无法与其建立连接的情况
SCANNING -> ASSOCIATING -> ASSOCIATED -> 4WAY_HANDSHAKE -> GROUP_HANDSHAKE -> COMPLETED
四次握手: 初始化:不停的广播AP的SSID和MAC地址 AP生成PSK=PMK=(pwd+ssid+ssid长度+4096) pwd是AP预设的密码 第一次握手:AP生成Anonce(随机码) STA获取广播的ssid和mac,获取ap生成的随机码 客户端生成PSK=PMK=(pwd+ssid+ssid长度+4096) pwd是客户端输入的密码 客户端也生成随机码Snonce 生成PTK=PMK+Anonce+Snonce+AP mac+STA mac 提取PTK的前16个字节成为MIC key和802.1x数据帧通过算法得到MIC值 MIC(CL)=HMAC_MD5(MIC key,16,802.1x帧) 第二次握手:AP获取从STA得到的Snonce,STA mac,MIC AP生成PTK,生成MIC STA已经生成随机码和MIC,没有动作 第三次握手:AP端校验AP端生成的MIC和STA生成的MIC一致, 生成临时广播秘钥GTK 发送广播通知STA安装GTK和PTK AP安装自己的PTK和GTK STA收到AP发送的GTK,安装自己的PTK和AP的GTK 第四次握手:客户端安装好PTK和GTK以后,通知AP AP确认PTK和GTK安装好了,进行下一步数据帧控制帧操作