WIFI鉴权的过程

news2025/1/18 11:49:28

1.前言

        当今手机连接WIFI热点普遍采用WPA2-PSK的方式。本文讨论这个方式的鉴权过程。

2. 鉴权过程

        我们称需要连接的一方为station,简称STA。提供WIFI热点的一方为AP。

        连接之前, station需要知道AP的名字(ssid)和密码(PSK)。

定义 :

        PMK = SHA1(ssid,psk), 显然 STA 和AP双方都知道PMK。

定义 :

        PTK = PRF(PMK + ANonce + SNonce + Mac(AA) + Mac (SA))

PTK的计算公式中:

        PRF为公知的算法,SNonce和ANonce分别是STATION和AP生成的随机数。

        在鉴权之前双方通过互相打招呼,已经都获知了对方的MAC地址,分别是Mac(AA)和Mac (SA)

STEP 1:

        AP 首先发送第1条消息给STA,消息体是 ANonce,ANonce是AP生产的随机数。

STEP2:

        STA 收到 ANonce,自己生成一个SNonce ,PMK 已知。此刻,STA 已具备计算 PTK 的所有五元组信息(PMK + ANonce + SNonce + Mac(AA) + Mac (SA)),能够计算得到 PTK。然后用 PTK 的 前16位位对马上要发送的数据包(SNonce)进行HASH计算(其实计算还用到一个 802.1x data,为了便于理解,暂且不提)得到 MIC,并将 MIC 附着在包尾一同发送给 AP,这是第2条消息。

STEP 3:

        AP 收到STA发过来的消息并从消息中提取SNonce,此时AP也具备了所有的五元组信息(PMK + ANonce + SNonce + Mac(AA) + Mac (SA)),也成功计算出了 PTK,并用 PTK 的前16 位对收到的数据进行计算得到 MIC,计算得到的 MIC 与收到的 MIC 进行对比,如果相等则代表 AP 和 STA 拥有相同的 PTK,进而可以确定两者拥有相同的 PMK(PMK是计算PTK的入参),进而可以确定两者拥有相同的密码。

        AP 向 STA 发送第3条消息,包含被加密的 GTK(用于对广播数据帧和组播数据帧加密) 和 MIC。MIC是用PTK对GTK做的HASH摘要(HMAC-HASH的形式)。

STEP 4:

        STA 收到 被加密了的 GTK,因为手中已有 PTK,所以可以从中解出 GTK。然后 AP 和 STA 安装 PTK 和 GTK,整个认证和密钥交换过程至此结束。

以上四步可以表示为如下这张图:

 看到一张更容易理解的图,贴出来了,如下:

大概

3.三个问题

        关于WIFI连接,我想到两个问题,都通过学习整个流程图,得到了答案。

3.1 如果一个STA记住了一个AP热点的密码,设置同样名字和密码的热点,STA会不会连接成功?

答案:会,因为他们具有相同的PMK。为了证明这个结论。我从手机A连接热点B,并记住密码,然后创建热点C,设置为和B一样的SSID(用户名)和密码,降低B的信号强度,发现,手机A会自动连接到了热点C。

3.2 如果我们制作了一个和某实际热点相同名称的AP热点,那么能不能轻易从STA请求和AP连接的信息中找到实际AP热点的明文密码?

答案:不能。AP热点第一次接触与密码有关的消息是STEP2收到的消息里的MIC。MIC的生成过程利用到了密码。但是MIC生成过程密码参与了两次HASH计算,所以除了暴力破解毫无办法。

3.3 如果我们制作了一个和某实际热点相同名称的AP热点,STA会主动请求和AP连接。AP热点能不能假装密码正确,连接成功?

答案:不能。在STEP2,AP收到STA发送过来的消息,AP虽然可以生成GTK,但是因为不知道密码(PSK/PMK)无法计算得出PTK,这样的话STEP3的消息中需要的摘要MIC就无法计算出来。STEP3中STA一定无法收到正确的MIC。这样就不会有STEP4出现,进而,本次WIFI连接不会成功。

4.最后

        WPA3有关的流程可以参考

Wifi 认证,关联,四次握手(WPA/WPA2/WPA3-SAE)_wpa2 wpa3_少歌的博客-CSDN博客

        当然,WIFI连接并非无懈可击。最近这些年有不少论文分析了他们设计的攻击方法。可以阅读如下论文:

https://www.sciencedirect.com/science/article/pii/S0957417422015093

参考:

WiFi 四次握手分析 - Think && Act

wifi连接的4次握手的过程_wifi四次握手_围城&微尘的博客-CSDN博客

Wifi 认证,关联,四次握手(WPA/WPA2/WPA3-SAE)_wpa2 wpa3_少歌的博客-CSDN博客

WPA-PSK四次握手_wifi key mic计算_二十岁了还没有去过星巴克的博客-CSDN博客

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

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

相关文章

Openlayers实战:多地图底图切换

在实际的地图项目中,不管是我们看到的百度地图还是高德地图等,都会有地图切换这一项。 在Openlayers实战中,我们用三种地图做demo,分别是谷歌地图。Openstreetmap,stamen地图。 切换的主要原则是设置三个底图层,设定其显示状态,用到了visible这一个属性。 效果图 源代码…

更新补丁导致360随身wifi提示USB设备驱动异常

运行环境:Windows11 更新补丁版本:2023-适用于 Windows 11 的 07 累积更新,适合基于 x64 的系统 (KB5028182) 硬件版本:360随身wifi-3 错误提示:USB设备驱动异常,创建Wifi网络失败 采取措施:更新…

Openlayers实战:加载Bing地图

Bing地图在地图领域有一定的江湖地位,是微软公司的产品。 在Openlayers其内置了Bing地图的方法,可以研究其API。我们的实战中是要其成为一个底图,很简单的就可以加载出来。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN) * @此源代码版…

ELK 企业级日志分析系统(四)

ELK 一、部署Kafka集群二、Kafka的命令行操作三、Kafka架构深入四、FilebeatKafkaELK部署 一、部署Kafka集群 1.下载安装包 官方下载地址:http://kafka.apache.org/downloads.html cd /opt wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.7.1/kafka_2…

Halcon会慢慢被淘汰吗?

作为一个语言模型,我不能提供预测未来的确凿答案。然而,我可以提供一些关于Halcon和机器视觉市场的观察和趋势。 我这里刚好有嵌入式、单片机、plc的资料需要可以私我或在评论区扣个6 Halcon是一款商业机器视觉软件,具有广泛的应用和用户群…

“AI in the Alps“:身体与精神的一场盛宴

作者:Christofer Dutz 得益于 Timecho 的组织和安排,我最近参加了一个精彩绝伦的活动 “AI in the Alps”,并从中收获颇丰。 这次活动是由德国工业界知名博客 “Industrial AI Podcast”(http://aipod.de)的组织者 Ro…

metersphere数据库SQL断言应用

在使用metersphere的时候,需要查询数据库数据来验证接口是否正常,在查看使用手册时,发现不是很明确,在研究一点时间后,终于明白,在此写下心得。 metersphere使用手册地址:接口测试 - 接口用例操…

【探索AI未来】人工智能技术在软件开发中的应用与革新

自我介绍⛵ 📣我是秋说,研究人工智能、大数据等前沿技术,传递Java、Python等语言知识。 🙉主页链接:秋说的博客 📆 学习专栏推荐:人工智能:创新无限、MySQL进阶之路、C刷题集、网络安…

第一个Matplotlib绘图程序

本节学习第一个 Matplotlib 绘图程序,如何使用 Matplotlib 绘制一个简单的折线图。下面绘制一个简单正弦曲线图,它显示了角度与正弦函数值之间的关系。 第一个绘图程序 首先导入 Matplotlib 包中的 Pyplot 模块,并以 as 别名的形式简化引入…

【C#】并行编程实战:同步原语(4)

在第4章中讨论了并行编程的潜在问题,其中之一就是同步开销。当将工作分解为多个工作项并由任务处理时,就需要同步每个线程的结果。线程局部存储和分区局部存储,某种程度上可以解决同步问题。但是,当数据共享时,就需要用…

使用 EMQX 和 eKuiper 进行 MQTT 流处理:快速教程

引言 MQTT 协议是一种专为物联网应用而设计的轻量级消息传输协议。它具有简单、开放、易于实现的特点,是物联网应用的理想选择。MQTT 数据以连续实时的方式进行传输,非常适合由流处理引擎进行处理。 EMQX 是一款大规模分布式物联网 MQTT Broker&#x…

队列--C语言实现数据结构

本期带大家一起用C语言实现队列🌈🌈🌈 文章目录 1、队列的概念2、队列的操作流程3 、队列的结构4、队列的实现4.1 队列的结构设计4.2 队列的初始化4.3 入队4.4 判断队列是否为空4.5 出队4.6 获取队头数据4.7 获取队尾数据4.8 获取队列当中数据…

HTTP1和HTTP2和HTTP3的区别

超文本传输协议是一个简单的请求-响应协议,它通常运行在TCP之上。 目录 HTTP1.1: HTTP2 HTTP3 参考文献 HTTP1.1: 特点: 1.一条链接只能一次请求一次返回这样子来回。一般的我们浏览器会帮我们一次次请求和收到。…

安卓UI:SearchView

目录 一、SearchView介绍 二、常用方法 (一)、监听器: (二)、常用方法: (三)、其他常用方法 三、例子: MainActivity2 : ChatListAdapter : item_people_view: activity_main2: 运行结果…

043、TiDB特性_缓存表和分区表

针对于优化器在索引存在时依然使⽤全表扫描的情况下,使⽤缓存表和分区表是提升查询性能的有效⼿段。 缓存表 缓存表是将表的内容完全缓存到 TiDB Server 的内存中表的数据量不⼤,⼏乎不更改读取很频繁缓存控制: ALTER TABLE table_name CACHE|NOCACHE; # 使用tr…

【Ubuntu】安装docker-compose

要在Ubuntu上安装Docker Compose,可以按照以下步骤进行操作: 下载 Docker Compose 二进制文件: sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/loc…

产业大模型刚开卷,京东跑进“最后半公里”

点击关注 文|姚 悦 编|王一粟 “京东一直在探索哪些产品、技术、场景可以真正把大模型用起来,在我们内部的场景中反复验证后,才决定在7月份对外发布,现在我们在零售、健康、物流、金融等业务场景里已经积累了一些经…

架构训练营:3-3设计备选方案与架构细化

3架构中期 什么是备选架构? 备选架构定义了系统可行的架构模式和技术选型 备选方案筛选过程 头脑风暴 :对可选技术进行排列组合,得到可能的方案 红线筛选:根据系统明确的约束和限定,一票否决某些方案(主要…

Java分布式项目常用技术栈简介

Spring-Cloud-Gateway : 微服务之前架设的网关服务,实现服务注册中的API请求路由,以及控制流速控制和熔断处理都是常用的架构手段,而这些功能Gateway天然支持 运用Spring Boot快速开发框架,构建项目工程;并结合Spring…

java错误:不支持发行版本5或java: 不再支持源选项 5。请使用 6 或更高版本的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…