802.11漫游流程简单解析与笔记_Part2_06_wpa_supplicant整个启动-读取参数-扫描-auth-assoc-key*4过程以及一次FT过程——全图解

最近在进行和802.11漫游有关的工作,需要对wpa_supplicant认证流程和漫游过程有更多的了解,所以通过阅读论文等方式,记录整理漫游相关知识。Part1将记录802.11漫游的基本流程、802.11R的基本流程、与认证和漫游都有关的三层秘钥基础。Part1将包括普通漫游流程、三层秘钥原理 和802.11R漫游流程。Part2将包括wpa_supplicant有关部分解析,Part3将包括抓包分析。

本Part为wpa的完整解析,包括wpa_supplicant整个启动-读取参数-扫描-auth-assoc-key*4过程以及一次FT过程,主要用矢量图的方式描述,图的绘制逻辑如下:

初始化过程

初始化nl80211模块(因为wpa启动的时候选择的driver是nl80211)、获取wpa支持的keymgmt、auth flag等信息。

配置传入到wpa流程

根据wpa -i等参数,把接口初始化,根据-c后面的conf文件,把配置信息读入。

扫描流程

得知conf信息后开始进行扫描,网卡使用驱动扫描的方式,wpa只负责传递vendor扫描开始即可,在收到nl80211的扫描完成event的时候开始处理扫描结果,并打印扫描耗时。

AP选择流程

处理扫描结果的过程就把扫到的AP能力和conf里面指定的信息对比,首先看看扫到的列表里面有没有conf指定的ssid,对上了就看有没有缓存对方的PTK,没缓存就看加密方式是否对得上,如AP支持wpa psk+ft psk(0x42),STA的conf里面支持ftpsk(0x40),那么就使用ft psk的加密方式。

发现交集不是空之后就发起associate过程,在正式auth、associate之前,首先停止扫描和转换状态机状态。

发起associate流程

根据多级opcode跳转,wpa drv associate跳转到wpa drv nl80211 associate,虽然这一步叫associate,但最终发出nl80211 命令是控制驱动开始auth,auth的对象也会打印。

associate过程

由于auth过程是不加密的两步对话,不需要wpa参与,驱动会自动完成,在成功auth后会自动发association request,收到association response后会通过NL80211 event通知wpa,wpa会解析FT字段、MDIE、RSNIE等信息等,过程中会获取mobility domain、R0KH R1KH,此时没有进行key 4交换,所以本地SNonce没有生成,AP的ANonce也没有获取。此时STA已经可以计算R0和R1了(在后两步计算),AP因为获取了S0kh,也有了R0和R1。

key 1处理过程

收到association response后,AP回继续给STA发送key1,wpa通过l2 packet收函数获取key1,解析里面的ANonce并打印信息。

生成key2过程

收到Anonce 后STA生成Snonce后即可算出PTK,经过3步连续计算,获取PTK,wpa控制驱动发送key2。

发送key2的过程

调用l2 packet发送key2。

处理key3发送key4的过程

发送的key2里面由Snonce,所以AP也可以算出来和STA一样的PTK,用PTK加密GTK,放到key3

里面发给STA,wpa需要解析GTK信息并保存,STA发送key4表示连接OK

计算、保存PTK并输出信息

wpa将计算好的PTK GTK交给驱动,wpa在首次关联的过程中的所有工作就都完成了,更新状态、打印信息后就结束了。

准备FTIE

由于解析association response、key mgmt等都规定了,STA需要使用FT切换AP,所以在关联后,wpa需要准备好FTIE,含RSNIE(含PMKR0NAME),含MDIE,含FTIE(含SNonce和R0KHID),所以需要再生成一个Snonce。

触发FT到切换完成流程

由于我本次调的驱动将FT触发 offload到驱动做了,所以wpa不负责 FT auth request的发出,wpa将FTIE等信息交给 驱动后,驱动触发FT后自动发出FT auth request,收到FT auth response后会NL80211 event告知wpa,wpa收到后解析出Anonce,还是上面的PTK计算流程,计算出PTK后交给驱动,驱动会把Reassociation request发出去,等等Reassociation response后获取GTK并交给驱动一次FT 切换就完成了。

把PTK等相关内容传递给驱动流程

将PTK发送到驱动用的也是nl80211的途径,通过opcode 的层次转换,最后使用netlink的发送,把PTK发到驱动。

完整图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值