WIFI鉴权的过程

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.hqwc.cn/news/22863.html

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

相关文章

GD32F303 DAM串口接收

1.设置串口 串口配置比较常规,我只应用的空闲中断。 2.DMA设置 我设置的DMA是串口接收到数据后保存到数组里,数组满了以后会自动从头开始,并且会进入一次DMA中断。

http连接处理(中)(四)

2. 结合代码分析请求报文解析 上一节我们对http连接的基础知识、服务器接收请求的处理流程进行了介绍,接下来将结合流程图和代码分别对状态机和服务器解析请求报文进行详解。 流程图部分,描述主、从状态机调用关系与状态转移过程。 代码部分&#xff…

度规对列排斥能的影响

( A, B )---1*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有1个节点,A,B训练集各只有1张图片,让A是0,B是1,统计迭代次数。 在收敛误差为7e-4的时候收敛199次, 差值结构 A-B 迭代次数 1 1-0 27191.925…

面试题更新之-CSS Hack是什么?ie6,7,8的hack分别是什么?

文章目录 导文CSS Hack的定义广泛应用的CSS Hack技巧ie6,7,8的hack分别是什么? 导文 面试题更新之-CSS Hack是什么?ie6,7,8的hack分别是什么? CSS Hack的定义 CSS Hack指的是在CSS中使用一些特定的代码或技巧,通过利用不同浏览器对CSS实现的…

黑马大数据学习笔记2-HDFS环境部署

目录 环境部署hadoop-3.3.4.tar.gz构建软链接配置workers文件夹配置hadoop-env.sh文件配置core-site.xml文件配置hdfs-site.xml文件准备数据目录分发Hadoop文件夹将Hadoop的一些脚本、程序配置到PATH中授权为hadoop用户格式化整个文件系统查看HDFS WEBUI保存快照 https://www.b…

[MySQL]MySQL内外连接

[MySQL]MySQL内外连接 文章目录 [MySQL]MySQL内外连接1. 内连接2. 外连接2.1 左外连接2.2 右外连接 3. 简单练习 1. 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,也是在开发过程中使用的最多的连接查询。 语法: SELECT ... FR…

001- database - 数据库

1、新的数据库进入默认有四个数据库,一般不要轻易删除; -- 创建数据库 CREATE DATABASE 数据库名 -- 查询所有数据库 SHOW DATABASES -- 使用数据库 -- USE 数据库名 -- 查询当前使用的数据库 SELECT DATABASE() -- 删除数据库 DROP DATABASE 数据库名

Apache Tomcat 信息泄露漏洞CVE-2023-28708处理

一、漏洞描述 Apache Tomcat软件是Jakarta Servlet、 Jakarta Server Pages、 Jakarta Expression Language、 Jakarta WebSocket、 Jakarta Annotations和 Jakarta Authentication 规范的开源实现 。Apache Tomcat实现了对Servlet和JavaServer Page(JSP&#xff09…

Kong 服务和路由的添加

管理服务 这里参考DB-less-Mode,因为使用的是yaml配置文件的形式,所以所有的相关配置只需要往初始化的kong.yml文件中添加就可以了,就像nginx的配置文件 DB-less-Mode 创建服务 vim /etc/kong/kong.yml services: - name: my-service #…

flutter开发实战-底部bottomNavigationBar➕PageView

flutter开发实战-底部bottomNavigationBar tabbar在app中非常常见,底部BottomNavigationBar属性 一、BottomNavigationBar属性 BottomNavigationBar组件的常用属性: type:tabbar样式,默认为白色不显示;fixedColor:t…

SkipList

文章目录 SkipList理解跳表从单链表说起查找的时间复杂度空间复杂度插入数据更高效的方式维护索引代码实现索引的抽取概率算法 举例插入元素 删除数据总结为什么Redis选择使用跳表而不是红黑树来实现有序集合 SkipList 理解跳表从单链表说起 在原始单链表中查找元素&#xff…

JavaScript--修改 HTML 元素

这些是一些用于修改 HTML 元素的常见方法&#xff1a; 1、document.createElement(element)&#xff1a;创建 HTML 元素节点。可以使用这个方法创建一个新的 HTML 元素&#xff0c; 例如 document.createElement(div) 将创建一个 <div> 元素节点。 2、document.createA…