802.11漫游流程简单解析与笔记_Part1

最近在进行和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):

  1. STA经过auth*2 + reassociate request/response + key*4(这个是普通PSK漫游)连到AP2上
  2. STA的扫描到AP2,发现同SSID,加入AP2到待切换AP列表
  3. STA根据某些条件决定切换
  4. 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. 步骤1 key1:AP->STA,带着随机数Anonce(AP nonce)
  2. 步骤2 key2:STA用Anonce和Snonce展开PMK,获得PTK,STA->AP,带随机数Snonce
  3. 步骤3 key3:AP有了Anonce和Snonce,也用PMK展开出一个PTK,AP->STA,含Anonce和用PTK加密过的GTK
  4. 步骤4 key4:STA->AP,简单的ACK

三层秘钥介绍:

  1. PMK_R0:最高级的秘钥,PSK/MSK算出来的,由一层持有者S0KH R0KH持有
  2. PMK R1 为第二层密钥,它是由 S0KH和R0KH共同推演而来由 PMK_R1 密钥持有者保存(即 R1KH和 S1KH)。
  3. PTK为第三层密钥,它是由 S1KH和 R1KH共同推演而来。
  4. R0KH和 R1KH 为认证者端的结构,与之对应的 S0KH和 S1KH 为客户端的结构.

秘钥计算

R0

  1. R0-Key-data由PSK/MSK+SSID+mobility domain+R0KHID+S0KHID计算
  2. PMK-R0 是R0-Key-data的前256位
  3. PMK-R0Name-Salt是R0-Key-data的后128 bit
  4. PMK-R0Name由PMK-R0Name-Salt生成

R1

  1. PMK R1由PMK-R0 和R1KHID和S1KHID生成
  2. PMKRlName由PMK-R0Name和R1KHID和S1KHID生成

PTK

  1. PTK由PMK R1 SNonce ANonce BSSID STAADDR算出
  2. 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首次关联流程:

  1. auth*2(带capability的普通auth)
  2. asso*2(含MDIE(含mobility domain) RSNIE FTIE(含R0KHID R1KHID))
  3. key*4(与802.11i规定的秘钥交换流程(key* 4)相同)

11R的FT快速切换流程(over the air)

  1. STA发FTAA request(含RSNIE(含PMKR0NAME),含MDIE,含FTIE(含SNonce和R0KHID))
  2. AP2回FTAA response(含RSNIE(含PMKR0NAME),含MDIE,含FTIE(含ANonce SNonce R0KHID R1KHID))【在reassociation request和auth request之间的时间不能超过Reassociation deadline time】
  3. STA再发Reassociation Request到AP2(含RSNIE(含PMKR0NAME),含MDIE,含FTIE(含MIC ANonce SNonce R0KHID R1KHID )含RIC-Request)
  4. 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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/25813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel行列条件转换问题,怎么实现如图一到图二的效果?

图一 图二 如果数据比较,不建议一上来就用公式,风速值那一列的数据可以确定都是数值型数字,可以先试试用数据透视表做转换工具: 1.创建数据透视表 将采集时间放在行字段,测风放在列字段,风速放在值字段 2.…

对象业务的截断接口

依据AWS S3,没有定义截断对象的操作。 本文有如下假定: 对象存储服务基于文件语义实现。 接口定义 依据前述,业界主流对象存储服务比如AWS S3并未定义截断对象的操作,而国内的各家公有云对象存储服务,提供了对象的…

【SecureCRT常用指令】

SecureCRT常用指令 一、ls 只列出文件名 (相当于dir,dir也可以使用) -A:列出所有文件,包含隐藏文件。 -l:列表形式,包含文件的绝大部分属性。 -R:递归显示。 --help:此命令的帮助。…

安卓逆向经典案例——XX牛

安卓逆向经典案例——XX牛 按钮绑定方式 1.抓包 2.查看界面元素,找到控件id 通过抓包,发现点击登录后,才会出现Encrpt加密信息,所以我们通过控件找到对应id:btn_login 按钮绑定方法——第四种 public class LoginA…

c++【基础】求花坛的面积

限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 A校区有一个圆形花坛,量得花坛周围的篱笆长是x米,请问该花坛的面积是多少平方米?(假设π3.14) 输入 一个小数x 输出 花坛的面积(结果保留2位小数&…

开机自启动脚本配置

#!/bin/bash# 定义要检查的IP地址 IP_ADDRESSES("127.0.0.1")# 检查是否存在任意一个IP地址 check_ips() {HOST_IPS$(hostname -I)for IP in "${IP_ADDRESSES[]}"; doif [[ $HOST_IPS ~ $IP ]]; thenreturn 0fidonereturn 1 }# 检查IP地址并在必要时重新启…

python tushare股票量化数据处理:学习中

1、安装python和tushare及相关库 matplotlib pyplot pandas pandas_datareader >>> import matplotlib.pyplot as plt >>> import pandas as pd >>> import datetime as dt >>> import pandas_datareader.data as web 失败的尝试yf…

什么是Socket?

什么是Socket? Socket(套接字)是网络通信的基本单位,它允许在不同计算机之间进行数据交换。Socket在网络编程中起着至关重要的作用,它为应用程序提供了一个机制,通过网络发送和接收数据。简单地说&#xf…

使用NetAssist网络调试助手在单台计算机上配置TCP服务器和客户端

要使用NetAssist网络调试助手在同一台计算机上配置一个实例作为服务器(server)和另一个实例作为客户端(client),可以按照以下步骤进行操作: 前提条件 确保已经安装NetAssist网络调试助手,并了…

mysql 小例子

mysql 小例子 show databases ; create database company; use company;DROP TABLE IF EXISTS employee;create table employee ( id INT AUTO_INCREMENT, name VARCHAR(50) NOT NULL, PRIMARY KEY(id)) ENGINEInnoDB; DESCRIBE employee ;111 CREATE TABLE example (id INT …

如何制定工程战略

本文介绍了领导者如何有效制定工程战略,包括理解战略核心、如何收集信息并制定可行的策略,以及如何利用行业最佳实践和技术债务管理来提升团队效能和产品质量。原文: How to Build Engineering Strategy 如果你了解过目标框架(如 OKR&#xf…

数仓建模中的一些问题

​​​在数仓建设的过程中,由于未能完全按照规范操作, 从而导致数据仓库建设比较混乱,常见有以下问题: 数仓常见问题 ● 数仓分层不清晰:数仓的分层没有明确的逻辑,难以管理和维护。 ● 数据域划分不明确…

yield 和 生成器(generator)

Python3 迭代器 https://www.runoob.com/python3/python3-iterator-generator.html #!coding:utf8#author:yqq #date:2020/1/14 0014 15:21 #description:class MyNumber:def __init__(self, init_number 1 , bound_number 99999):self.n init_numberself.bound bound_nu…

Duck Bro的第512天创作纪念日

Tips:发布的文章将会展示至 里程碑专区 ,也可以在 专区 内查看其他创作者的纪念日文章 我的创作纪念日第512天 文章目录 我的创作纪念日第512天一、与CSDN平台的相遇1. 为什么在CSDN这个平台进行创作?2. 创作这些文章是为了赚钱吗&#xff1f…

详细说说机器学习在安防领域的应用

机器学习在安防领域的应用日益广泛,其强大的数据分析和模式识别能力为安全监控、预警和防范带来了革命性的变化。以下是机器学习在安防领域的几个主要应用: 异常检测: 通过学习监控画面中的正常运行状态,智能安防系统可以在遇到异…

算法金 | AI 基石,无处不在的朴素贝叶斯算法

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 历史上,许多杰出人才在他们有生之年默默无闻, 却在逝世后被人们广泛追忆和崇拜。 18世纪的数学家托马斯贝叶斯…

用函数指针求a和b中的大者

指针变量也可以指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数入口地址就称为函数的指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函数。 先按一般方法编写程序: 可以用一个指针变量指向max函数,然后通过该指…

【python/pytorch】已解决ModuleNotFoundError: No module named ‘torch‘

【PyTorch】成功解决ModuleNotFoundError: No module named torch 一、引言 在深度学习领域,PyTorch作为一款强大的开源机器学习库,受到了众多研究者和开发者的青睐。然而,在安装和使用PyTorch的过程中,有时会遇到一些问题和挑战…

NLP--词袋模型

词袋模型如同所有单词打散放到一个袋子中,因此这种模型无法估计语义和语序问题,每个单词都是独立的。 1.文本分词:调用jieba库,使用精确模式对每个句子进行分词,并存入列表。 2.去除停用词:遍历停用词文件…

地图元素。

常见的地图元素: 道路(Road): 主要道路(如高速公路、主干道)次要道路(如街道、小巷)辅助道路(如人行道、自行车道)车道(Lane)&#x…