最近在进行和802.11漫游有关的工作,需要对wpa_supplicant认证流程和漫游过程有更多的了解,所以通过阅读论文等方式,记录整理漫游相关知识。Part1将记录802.11漫游的基本流程、802.11R的基本流程、与认证和漫游都有关的三层秘钥基础。Part1将包括普通漫游流程、三层秘钥原理 和802.11R漫游流程。Part2将包括wpa_supplicant有关部分解析,Part3将包括抓包分析。
首先假设一个场景,STA首次与AP1相连,物理空间上逐步远离AP1,所以打算切换到AP2上,这个过程在802.11中就被称为漫游。
普通漫游流程:
漫游步骤(要求AP1 AP2同一个ESS):
- STA经过auth*2 + reassociate request/response + key*4(这个是普通PSK漫游)连到AP2上
- STA的扫描到AP2,发现同SSID,加入AP2到待切换AP列表
- STA根据某些条件决定切换
- STA经过auth*2 + associate request/response + key*4连到AP1上
三层秘钥原理
WEP不够安全后,推出了802.11i,内含两种加密方式协议(TKIP和CCMP)以及一组秘钥交换过程,对于不同的加密方式,秘钥是不同的,PSK加密时,秘钥为PSK,802.11X验证,秘钥为MSK;成对主密钥PMK就是由PSK或者MSK推算出来的,PTK由PMK生成的,PTK会用于EAPOL-KEY(包括KCK和KEK)或temporal(暂时的) key里面
802.11i规定的秘钥交换流程(key*4):
- 步骤1 key1:AP->STA,带着随机数Anonce(AP nonce)
- 步骤2 key2:STA用Anonce和Snonce展开PMK,获得PTK,STA->AP,带随机数Snonce
- 步骤3 key3:AP有了Anonce和Snonce,也用PMK展开出一个PTK,AP->STA,含Anonce和用PTK加密过的GTK
- 步骤4 key4:STA->AP,简单的ACK
三层秘钥介绍:
- PMK_R0:最高级的秘钥,PSK/MSK算出来的,由一层持有者S0KH R0KH持有
- PMK R1 为第二层密钥,它是由 S0KH和R0KH共同推演而来由 PMK_R1 密钥持有者保存(即 R1KH和 S1KH)。
- PTK为第三层密钥,它是由 S1KH和 R1KH共同推演而来。
- R0KH和 R1KH 为认证者端的结构,与之对应的 S0KH和 S1KH 为客户端的结构.
秘钥计算
R0
- R0-Key-data由PSK/MSK+SSID+mobility domain+R0KHID+S0KHID计算
- PMK-R0 是R0-Key-data的前256位
- PMK-R0Name-Salt是R0-Key-data的后128 bit
- PMK-R0Name由PMK-R0Name-Salt生成
R1
- PMK R1由PMK-R0 和R1KHID和S1KHID生成
- PMKRlName由PMK-R0Name和R1KHID和S1KHID生成
PTK
- PTK由PMK R1 SNonce ANonce BSSID STAADDR算出
- PTK用于KCK/KEK/TK,KCK是PTK的前128bit,KEK是128-255bit,TK分为CCMP和TKIP两种。
802.11R漫游流程
STA首先和AP1关联走的是完整关联流程,与标准802.11i流程相同,只是多了和快速漫游有关的字段,后面在去切换到AP2时就是802.11R快速漫游,相对于普通漫游的4*key交换,ANonce和SNonce在auth request Response就完成了,所以不需要key*4,漫游更快。FT分为两种,over the air和over the ds,区别是over the air是STA直接给AP2发auth request,over the ds,把发给AP2 的auth request包到action,给AP1,AP1用有线转给AP2。
11R首次关联流程:
- auth*2(带capability的普通auth)
- asso*2(含MDIE(含mobility domain) RSNIE FTIE(含R0KHID R1KHID))
- key*4(与802.11i规定的秘钥交换流程(key* 4)相同)
11R的FT快速切换流程(over the air)
- STA发FTAA request(含RSNIE(含PMKR0NAME),含MDIE,含FTIE(含SNonce和R0KHID))
- AP2回FTAA response(含RSNIE(含PMKR0NAME),含MDIE,含FTIE(含ANonce SNonce R0KHID R1KHID))【在reassociation request和auth request之间的时间不能超过Reassociation deadline time】
- STA再发Reassociation Request到AP2(含RSNIE(含PMKR0NAME),含MDIE,含FTIE(含MIC ANonce SNonce R0KHID R1KHID )含RIC-Request)
- AP2回Reassociation Response(含的与Reassociation Request相同,只不过多出来加密了的GTK)
11R的FT快速切换流程(over the ds)
- STA直接与AP2 交换的auth Request auth Response换成了STA和AP1 交换action,内容完全一致,然后AP1把ACTION用以太网转到AP2;Reassociation Request/Response相同,是STA和AP2交互的
完整的秘钥计算示意图
参考文献:
[1]袁保磊. 基于IEEE802.11R协议的快速漫游嵌入式软件设计与实现[D].电子科技大学,2018.