一文带你领略 WPA3-SAE 的 “安全感”
引入
WPA3-SAE也是针对四次握手的协议。
四次握手是 AP (authenticator) 和 (supplicant)进行四次信息交互,生成一个用于加密无线数据的秘钥。
这个过程发生在 WIFI 连接 的 过程。
为了更好的阐述 WPA3-SAE 的作用 和 凸显其优点。我们需要借助 WPA2-psk 来做对比。
先来简单阐述一下 WPA2-psk …
WPA / WPA2 中的四次握手
这是一次连接过程:

其中 四次 eapol key 属于四次握手的过程。
具体过程请参考: Wifi_认证 、关联 和 四次握手(WPA/WPA2)
注意:WPA 系列协议 描述的 不仅仅是 握手过程。
握手过程 采用的算法优点为:
- 秘钥的生成具有隔离性
- 不同的 STA 与 同一个 AP 不会生成相同的秘钥
- 同一个 STA 连接 AP 的不同过程 也不会产生相同的秘钥
- 预共享WIFI密码 PSK,使得 WIFI 网络有了不错的可控性
优点 可圈可点,但缺点也相对明显。
WPA2-psk 最大的问题就是 不在安全了!!
破解教程层出不穷,安全升级迫在眉睫。
WPA2-psk 的安全性
迫在眉睫:2017年10月,802.11协议中,沿用了 13年的 WPA2 加密协议 被完全破解了。
先理解 WPA2-psk 的简要过程:(四次握手)

从这个过程中 我们看出:
- 预共享 PSK 参与了生成 PTK 的计算
- PTK 也负责了 对 PSK 的 验证
- 双方都有随机数的产生,赋予了 PTK的不唯一性。
最终 由 PTK 负责后续 Data 数据的 加密。
PTK的保密性 直接决定着 用户数据的安全性
由此可见,窥探者 除了 PSK 和 PTK 不能从空中抓到,其他参与计算的值都能抓到。
PMK = SHA-1(ESSID + PSK)
PTK = PRF(PMK + ANonce + SNonce + Mac(AA) + Mac (SA))
SHA-1 和 PRF 这两个函数 是 公开的
攻击者 一旦抓到 4次握手的包,便能离线暴力破解 PSK
之后便可以利用PSK去生成 PTK,进而窥探 用户数据。
WPA2-psk 破解原理
核心:想办法抓到四次握手的包
大致分为一下几个步骤:
- 明确 破解目标 AP 之后,针对某个已连接的 STA 伪造出一个 Deauthentication 帧,扰乱现有 STA 与 目标AP 的连接。
- Deauthentication(取消身份验证帧)会让 目标AP 将当前 STA 从自己的关联表中踢出(也就是断开连接了)
- AP 主动断开 STA 之后,会给 STA 发一个确认包,STA收到确认包之后 便会进行重连(毕竟不是 STA 自己真的想断开)
- 触发重连之后,趁机 抓取四次握手的空口包,带回家分析。
- 然后用字典法暴力破解
由此可见对 WPA2-PSK 的安全性已经支离破碎,对其的改进也是箭在弦上。
WPA3
WPA3-Personal 基于IEEE Std 802.11-2016 中定义的 SAE。
SAE 采用了“互联网工程任务组(IETF)”RFC7664 规范中定义的 “蜻蜓(Dragonfly)” 握手协议,将其应用于 Wi-Fi 网络以进行基于密码的身份验证。
针对 WPA2 的通病,WPA3 在各个场景下 都给出了不错的解决方案。
比如针对 WPA2-psk 的协议 ——WPA3-SAE 做了两点 具有革命性的优化。
- 针对暴力破解攻击的防护得到了提升。
即使用户没有设置较为复杂的密码。
- 提供了正向加密,即使攻击者知道了PSK 也无法窥探用户的数据。
WPA3-Personal 的连接交互过程

从上图我们能看出 与 WPA2 最明显的差别就是 认证过程
WPA3-SAE 的认证过程 变得繁琐了,从两帧变成了四帧
SAE 认证过程(Authentication)
WPA3-Personal 基于IEEE Std 802.11-2016 中定义的 SAE。SAE 采用了“互联网工程任务组(IETF)”RFC7664 规范中定义的 “蜻蜓(Dragonfly)” 握手协议,将其应用于 Wi-Fi 网络以进行基于密码的身份验证。
这个认证过程 会校验 PSK 的正确性,也会生成 PMK,供后续握手使用。

上图只是WPA3-SAE的认证过程,但似乎这已经完成了信息的校验 和 秘钥关键元素的生成。
站在用户的角度,设备连接这两种协议(WPA2-personal 和 WPA3-SAE)的热点没有任何操作上的区别。
- 都是要预先得知PSK(也就是AP密码)
那么让我们对比着 WPA2-personal 的“不安全”,来看看 WPA3-SAE 的“安全”。
详细阐述一下上图的过程:
- 首先 STA 和 AP 都有预留的 PSK,并且兵分两路生成各自的产物。
- 先通过ECC 对原始 PSK 进行映射。
这算是第一层保护,如若攻击者不清楚 椭圆函数的参数,便无法进行下一步。
- STA 生成随机数 rS ;AP 生成随机数 rA 。
- STA 将 P · rS 传给 AP
- Ap 将 P · rA 传给 STA
" · " 这里的运算符不是 “乘法”,是一种特殊的算法,正因如此,WPA3 - SAE 才安全。
- 这种算法 似乎遵循一定程度的“结合性”,但又不可逆。
就是说 : P · rS 推不出 rS, 抓到包了也没用。但 P · rS · rA 在三个元素的顺序 不影响整体的结果。(妙啊!!!)
- 这种算法 似乎遵循一定程度的“结合性”,但又不可逆。
- 后续就是进行一个 Hash 算法,再进行对比。当然在这个过程中也顺便生成了核心秘钥数据 (PMK)
- 校验通过之后,双方用各自生成的 PMK 进行 “四次握手” 来生成用来给 Data 数据加密的 秘钥。
上述流程可以完美 “格挡” 传统的破解手法。
今天SAE先聊到这儿,后续有想到的在补充。
That’s all, thank you !!!
相关文章:
一文带你领略 WPA3-SAE 的 “安全感”
引入 WPA3-SAE也是针对四次握手的协议。 四次握手是 AP (authenticator) 和 (supplicant)进行四次信息交互,生成一个用于加密无线数据的秘钥。 这个过程发生在 WIFI 连接 的 过程。 为了更好的阐述 WPA3-SAE 的作用 …...
Python解题 - CSDN周赛第38期
又来拯救公主了。。。本期四道题还是都考过,而且后面两道问哥在以前写的题解里给出了详细的代码(当然是python版),直接复制粘贴就可以过了——尽管这样显得有失公允,考虑到以后还会出现重复的考题,所以现在…...
Android绘制——自定义view之onLayout
简介 在自定义view的时候,其实很简单,只需要知道3步骤: 测量——onMeasure():决定View的大小,关于此请阅读《Android自定义控件之onMeasure》布局——onLayout():决定View在ViewGroup中的位置绘制——onD…...
用Qt画一个温度计
示例1 以下是用Qt绘制一个简单的温度计的示例代码: #include <QPainter> #include <QWidget> #include <QApplication> class Thermometer : public QWidget { public:Thermometer(QWidget *parent 0); protected:void paintEvent(QPaintEvent …...
Java设计模式 04-建造者模式
建造者模式 一、 盖房项目需求 1)需要建房子:这一过程为打桩、砌墙、封顶 2)房子有各种各样的,比如普通房,高楼,别墅,各种房子的过程虽然一样,但是要求不要相同的. 3)请编写程序,完成需求. …...
安语未公告于2023年3月20日发布
因一些特殊原因,凡事都是有开始,高潮和结束三大过程,做出以下决定: 所有对 安语未文章 为之热爱、鞭策、奉献,和支持过的开发者: 注:所有资源以及资料都会正常下载和查看 如需联系࿱…...
进销存是什么?如何选择进销存系统?
什么是进销存?进销存软件概念起源于上世纪80年代,由于电算化的普及,计算机管理的推广,不少企业对于仓库货品的进货,存货,出货管理,有了强烈的需求,进销存软件的发展从此开始。 进入…...
基于BP神经网络的图像跟踪,基于BP神经网络的细胞追踪识别
目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络激活函数及公式 基于BP神经网络的细胞识别追踪 matab编程代码 效果 结果分析 展望 摘要 智能驾驶,智能出行是现代社会发展的趋势之一,其中,客量预测对智能出行至关重要,…...
Java面试总结篇
引用介绍 1.线程安全不安全的概念 线程安全: 指多个线程在执行同一段代码的时候采用加锁机制,使每次的执行结果和单线程执行的结果都是一样的,不存在执行程序时出现意外结果。 线程不安全: 是指不提供加锁机制保护,有可能出现多个线程先后更改数据造成所得到的数据是脏…...
100天精通Python(可视化篇)——第80天:matplotlib绘制不同种类炫酷柱状图代码实战(簇状、堆积、横向、百分比、3D柱状图)
文章目录0. 专栏导读1. 普通柱状图2. 簇状柱形图3. 堆积柱形图4. 横向柱状图5. 横向双向柱状图6. 百分比堆积柱形图7. 3D柱形图8. 3D堆积柱形图9. 3D百分比堆积柱形图0. 专栏导读 🏆🏆作者介绍:Python领域优质创作者、CSDN/华为云/阿里云/掘金…...
【Java】UDP网络编程
文章目录前言DatagramSocketDatagramPacket注意事项与区别代码演示前言 UDP(user datagram protocol)的中文叫用户数据报协议,属于传输层。 UDP是面向非连接的协议,它不与对方建立连接,而是直接把我要发的数据报发给对…...
Springboot源代码总结
前言 编写微服务,巩固知识 文章目录 前言springboot原理springboot启动流程SpringBoot自动配置底层源码解析自动配置到底配了什么?自动配置类条件注解Starter机制@ConditionalOnMissingBeanSpringBoot启动过程源码解析构造SpringApplication对象SpringBoot完整的配置优先级s…...
JVM监控搭建
文章目录JVM监控搭建整体架构JolokiaTelegrafInfluxdbGrafanaJVM监控搭建 整体架构 JVM 的各种内存信息,会通过 JMX 接口进行暴露。 Jolokia 组件负责把 JMX 信息翻译成容易读取的 HTTP 请求。Telegraf 组件作为一个通用的监控 agent,和 JVM 进程部署在…...
java中如何优化大量的if...else...
目录 策略模式(Strategy Pattern) 工厂模式(Factory Pattern) 映射表(Map) 数据驱动设计(Data-Driven Design) 策略模式(Strategy Pattern) 将每个条件分…...
24. linux系统基础
两个进程间想通讯,必须要通过内核,今天讲的信号其实本质也是讲进程间通讯的意思,那么你为什么可以在shell环境下,可以和一个进程发kill-9啊? shell是不是相当于一个进程?你自己运行的那个进程是不是也相当于…...
【C++】面试101,二叉搜索树的最近公共祖先,在二叉树中找到两个节点的最近公共祖先,序列化二叉树,重建二叉树,输出二叉树的右视图,组队竞赛,删除公共字符
目录 1.二叉搜索树的最近公共祖先 2.在二叉树中找到两个节点的最近公共祖先 3.序列化二叉树 4.重建二叉树 5.输出二叉树的右视图 6.组队竞赛 7.删除公共字符 1.二叉搜索树的最近公共祖先 这是一个简单的问题,因为是二叉搜索树(有序)&am…...
Java常见面试题及解答
Java常见面试题及解答1 面向对象的三个特征2 this,super关键字3 基础数据类型4 public、protected、default、private5 接口6 抽象类6.1 抽象类和接口的区别7 重载(overload)、重写(override)8 final、finalize、final…...
【Docker】镜像的原理定制化镜像
文章目录镜像是什么UnionFS(联合文件系统)Docker镜像加载原理制作本地镜像 docker commit -m"提交的描述信息" -a"作者" 容器ID 要创建的目标镜像名:[标签名]案例演示ubuntu安装vim本地镜像发布到阿里云本地镜像发布到阿里云流程将本…...
国内版的ChatGPT弯道超车的机会在哪里?
前言 从去年11月最后一天ChatGPT诞生,截至目前,ChatGPT的热度可谓是爆了。众所周知,ChatGPT是美国“开放人工智能研究中心”研发的聊天机器人程序,它是一个人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人…...
【字符串】
string1.char str[]类型fgets(s,10000,stdin) cin.getline(cin,10000) strlen(str)sizeof 求静态数组长度2.string类型getline(cin,a) cin.getline(cin,10000) str.lenth()str.size()cin 遇到空格就停止3.gets 函数char str[20];gets(str);4.puts 函数puts(str) 相当于 cout<…...
Pixel Couplet Gen基础教程:Streamlit+ModelScope零配置环境搭建步骤详解
Pixel Couplet Gen基础教程:StreamlitModelScope零配置环境搭建步骤详解 1. 项目介绍与准备 Pixel Couplet Gen是一款融合了传统春节文化与现代像素艺术风格的AI春联生成器。它基于ModelScope大模型驱动,通过Streamlit构建了独特的8-bit复古游戏界面&a…...
FastAPI + TinyDB并发陷阱与实战:告别数据错乱的解决方案
核心摘要本文针对在FastAPI框架下使用TinyDB(JSON文件数据库)时遇到的并发写入数据冲突、错乱问题,深入浅出地解释了问题根源,并提供了从“文件锁”到“内存队列”再到“乐观锁”的三种由浅入深的实战解决方案,帮助你根…...
从“工具辅助”到“智慧赋能”:青软青之深度集成LIMS、ELN、AUTO等核心系统,打造全场景智慧实验室新范式
在科研创新迭代加速、检验检测产业升级纵深推进的今天,实验室作为创新源头,其运行效率与管理水平直接决定研发效能与质量。传统依赖人工记录、纸质流转和信息孤岛的模式,已难以适应复杂实验需求与严苛合规监管。智慧实验室,正成为…...
大数据:Hadoop(Yarn)
第1章 Yarn资源调度器Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。1.1 Yarn基础架构1.2 Yarn工作机制(1)…...
STM32移植LVGL图形库实战指南
1. LVGL图形库概述与STM32移植价值LittlevGL(简称LVGL)作为当前最受欢迎的嵌入式开源图形库之一,其设计哲学完美契合了资源受限的嵌入式环境。我在多个STM32项目中采用LVGL后发现,相比传统GUI方案,它具有三个显著优势&…...
使用Image - To - image条件生成对抗网络评估乳腺癌新辅助化疗反应的动态对比增强MRI血管渗透性映射
论文总结1、提出了一种基于条件生成对抗网络(cGAN)的新方法,用于将动态对比增强磁共振成像(DCE MRI)快速转换为药代动力学(PK)血管通透性参数图(Ktrans),以早…...
根据以上内容,可拟定的标题为:“MATLAB仿真复现光纤激光器中耗散孤子共振DSR的演化过程:...
MATLAB仿真复现耗散孤子共振DSR 根据谱方法求解复立方五次方金兹堡朗道方程 获得光纤激光器中耗散孤子的演化过程耗散孤子共振光纤激光器仿真平台:从 Ginzburg-Landau 方程到多维度脉冲演化分析—— 一套可扩展、可配置、可动画的 MATLAB 谱方法框架一、背景与需求高…...
掌握Pwndbg调试器:从入门到精通的界面定制与配置指南
掌握Pwndbg调试器:从入门到精通的界面定制与配置指南 【免费下载链接】pwndbg Exploit Development and Reverse Engineering with GDB & LLDB Made Easy 项目地址: https://gitcode.com/GitHub_Trending/pw/pwndbg Pwndbg作为GDB和LLDB的增强扩展&#…...
HsMod:炉石传说个性化增强工具 玩家的全方位游戏体验优化方案
HsMod:炉石传说个性化增强工具 玩家的全方位游戏体验优化方案 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 你是否曾因炉石传说中繁琐的操作流程而感到沮丧?是否希望拥有…...
5分钟上手Vane容器化部署:从零搭建隐私优先的AI搜索引擎
5分钟上手Vane容器化部署:从零搭建隐私优先的AI搜索引擎 【免费下载链接】Vane Vane is an AI-powered answering engine. 项目地址: https://gitcode.com/GitHub_Trending/pe/Vane 想要在5分钟内搭建一个功能强大的AI搜索引擎吗?Vane是一个专注于…...
