当前位置: 首页 > news >正文

Wlan安全——认证与加密方式(WPA/WPA2)

目录

终端认证技术

WEP认证

PSK认证

802.1x认证与MAC认证

Portal认证

数据加密技术

WEP加密

TKIP加密

CCMP加密

TKIP和CCMP生成密钥所需要的密钥信息

802.11安全标准

WEP共享密钥认证、加密工作原理

WEP共享密钥认证

WEP加解密过程

PSK认证以及生成动态密钥的工作原理

802.1x认证以及生成动态密钥的工作原理


无线网络存在的安全隐患

数据没有加密

无线数据是在空气中传播,任何个人都可以通过空口抓包网卡截获到数据,导致信息泄露

没有接入认证

所有终端都可以连接到无线信号,然后去访问有线网络,进行攻击

非法AP接入

STA连接到非法AP,数据被窃取

可以通过WIDS、WIPS来反制AP(后续讲解)

终端认证技术

目前我们使用到的认证主要有WEP认证、PSK认证、802.1x认证与MAC认证、Portal认证

WEP认证

WEP认证可以分为开放系统认证和共享密钥认证

WEP 开放系统认证(Open System Authentication)

不对站点身份进行认证的认证方式;没有做认证

通过2个认证报文进行交互(认证请求、认证应答)

适用于开放性场景,对安全性要求不高

WEP 共享密钥认证(Shared Key Autheentication)

通过判断对方是否掌握相同的密钥来确定对方的身份是否合法

具体的认证过程在此文章的Wlan安全标准讲解

PSK认证

PSK认证(Pre-shared key)

PSK主要是个人用户进行认证

要求在STA侧预先配置Key,AP通过4次握手Key协商协议来验证STA侧Key的合法性

具体的认证流程在此文章的Wlan安全标准有讲解(此认证会生成动态加密密钥)

PPSK中小型企业认证(每个用户一个密码)  配置的密钥有数量限制

每个终端一个密钥,在AP设备上提前去生成一些密钥,然后把密钥告诉终端,终端连接上无线信号的时候就会把MAC地址这些域密钥做绑定

一个密钥与MAC地址绑定之后,其余人就无法使用了

802.1x认证与MAC认证

802.1x认证(需要认证服务器-大型网络)

相对来说是比较安全的,通过用户名+密码的方式进行认证

支持802.3有线网络和802.1x无线网络

802.1x有线网络的认证流程

802.1x认证和MAC认证讲解_静下心来敲木鱼的博客-CSDN博客

802.1x无线网络的认证流程

在此文章的Wlan安全标准讲解(此认证会生成动态加密密钥)

MAC地址认证

通过Radius服务器进行MAC地址认证(在Radius服务器添加终端的MAC)

认证的大致流程

当MAC接入认证发现当前接入的客户端为未知客户端,会主动向Radius服务器发送认证请求

在Radius服务器完成对该用户的认证后,认证通过的用户可以访问无线网络

缺陷

当终端数量较多时,配置繁琐;由于终端的MAC也是可以更改的,所以存在一些安全隐患

Portal认证

Portal认证(Web认证)

采用浏览器输入域名重定向到Portal界面进行用户认证

Portal认证讲解_portal web认证_静下心来敲木鱼的博客-CSDN博客


数据加密技术

主要有无线终端使用的加密技术主要有WEB加密、TKIP加密、CCMP加密

WEP加密

WEP是无线等效保密技术的简称,对在两台设备间传输的无线数据做加密,并提供认证

WEP认证在上述已经讲解,现在主要做WEB加密的讲解

WEP加密技术--无线领域第一个安全协议

使用RC4流加密技术保证数据的机密性

使用CRC-32保证数据的完整性(循环冗余校验去校验数据的完整性)

采用静态密钥进行加密,如果被其它用户破解了,就可以使用此密钥破解数据

Wep的密钥的组成

Wep密钥由IV的前24bit和40/104位的静态密钥组成

IV一共4字节

IV前3个字节也就是24bit作为初始化向量,是随机生成的,IV越长越安全

后2bit的Key ID用来表示使用的是哪个密钥(因为在设置Wep静态密钥时,我们可以设置4个静态密钥,但是使用时只可以使用一个,使用哪个密钥就可以通过Key ID来区分)

静态wep密钥

WEP加密方式的静态密钥有40bit或者104bit,这个静态密钥就是我们自己设置的密钥

通过不同的单位表示:16进制就是10/26位,Ascii就是5/13位

具体的加解密过程在此文章的Wlan安全标准讲解(此认证会生成动态加密密钥)

TKIP加密

TKIP加密技术--是WAP标准中的加密算法(WPA由WiFi联盟定义)

 WEP的升级版,采用动态密钥,对于每个数据帧都生成一个密钥去加密

 也是使用RC4来保证数据的机密性;不过密钥由WEP的104位增加到128位,加密IV的长度由24位增加到了48位

 采用MIC来保证数据的完整性,比CRC32更可靠

具体如何加密和校验不做讲解,只讲解如何生成动态密钥,在此文章的Wlan安全标准讲解

CCMP加密

CCMP加密技术--WPA2标准

 WPA2是Wifi联盟定义出来的WPA的第二个版本

 CCMP称为计数器模式密码块链消息完整码协议

 也是动态生成密钥,采用AES的加密算法进行加密,通过CCM实现数据完整性校验

具体如何加密和校验不做讲解,只讲解如何生成动态密钥,在此文章的Wlan安全标准讲解

TKIP和CCMP生成密钥所需要的密钥信息

TKIP/CCMP生成密钥所需要使用到的密钥

PMK      成对主密钥,用于生成PTK的材料,不用于实际的数据加解密

PTK       成对临时密钥,实际的密钥,用于加解密数据

PTK又包含三个部分

       KCK        对EAPOL-KEY消息进行完整性校验产生MIC值

       KEK        EAPOL-KEY消息的加密密钥

       TK          普通数据的加密密钥

MIC KEY 用于后续数据报文的完整性校验(TKIP的PTK会多成一个密钥,用于对后续报文的完整性校验;CCMP不包含)

GMK       为组主密钥,用于生成GTK,而GTK主要用于组播和广播的加密

PTK用于单播报文的加密

PMK/PTK密钥的生成方式(目前主要有802.1x和PSK两种方式)

如果是802.1x认证之后进行数据加密,则是PMK是由MSK组会话密钥产生

       认证成功之后会在认证成功报文里面会携带MSK,然后生成PMK、PTK密钥

       然后通过交互EAPOL-KEY报文文成无线加密密钥的配置

通过PTK生成加密密钥进行报文的数据加密

如果是PSK认证之后进行数据加密,PMK就不是MSK组会话密钥产生的(具体交互过程在WPA安全标准讲解)

PMK/PTK生成所需的材料(WAP/WAP2密钥为PSK的认证密钥)

由SSID和我们配置的密钥去做哈希产生PMK的,然后通过PMK和STA的MAC等信息hash生成PTK

然后通过交互EAPOL-KEY报文交互完成无线加密密钥的配置

通过PTK生成加密密钥进行报文的数据加密


802.11安全标准

无线的安全标准主要由三个

WEP标准(传统标准)

WPA标准

WAP2标准(也可以称为RSN)

其中WEP标准只支持WEP方式的认证和加密

WAP标准支持PSK和802.1x的认证,但是只支持TKIP的加密方式,

WPA2支持PSK和802.1x的认证,支持CCMP(AES)、TKIP两种加密方式

WEP共享密钥认证、加密工作原理

WEP共享密钥认证

通过4个认证报文进行交互

       认证请求、明文质询消息、密文质询消息、认证结果

报文交互过程

  1. STA发送认证请求
  2. AP收到后,生成明文质询信息,发送给STA;明文质询信息可以看成是随机数
  3. STA对明文质询进行加密发给AP(加密方式是采用无线用户本身设置的静态WEP密钥去做加密)
  4. AP同样也对明文质询进行加密(加密使用的是AP上已经设置好的静态WEP的密钥);将加密结果与STA发来的结果做对比,然后返回认证结果

缺陷

可以通过空口抓包抓到AP生成的随机数和STA加密后的密文,然后就可以推导出密钥;不是很安全

WEP加解密过程

WEP的加解密过程

Wep加密

ICV:CRC-32对明文数据进行校验得到的校验值

  1. 通过静态的WEP密钥再加IV(初始化向量)通过RC4流加密算法扩展成与明文的数据(包含数据与CRC-32对ICV)等长的密钥流
  2. 将此密钥流与(明文数据+ICV)进行异或得到加密数据
  3. 然后将加密数据加上之前随机生成的IV一起发送给认证端(为什么发送出去的加密数据要加上IV字段?防止相同数据加密后出现相同的密文,防止静态密钥被破解;还携带使用的key id信息)

Wep解密--具体终端和AP使用哪个密钥进行加密,通过终端发来的IV中Key ID字段决定

  1. 到达AP之后,IV是明文,AP将先将IV提取出来,将前3个字节与自身配置的静态密钥去做RC4算法形成密钥流
  2. 然后将加密的数据与自身形成的密钥流再做异或,还原出加密数据,此时还原出来的数据包含(明文数据+ICV)
  3. 此时AP对明文数据进行CRC-32循环校验再算出一个ICV,然后将两个进行对比;数据一致的话就说明数据没有被更改过,是完整的

WEP加解密的异或过程

异或:相加为1则为1,为非1则为0

加密:将数据(二进制表示)与密钥流(二进制表示)相加进行异或,得到加密数据

解密:将加密的数据与自身形成的密钥流相加,进行异或,得到数据

PSK认证以及生成动态密钥的工作原理

PSK认证阶段--对用户认证并生成加密密钥,用于CCMP/TKIP加密(不讲解TKIP和CCMP如何加密)

4个认证报文

报文交互流程

Anonce就是AP(认证端)产生的随机数

Snonce 就是终端(请求者)产生的随机数

  1. 当终端进行认证时,认证方发送自己产生的随机数给终端(明文)
  2. 终端收到此随机数后,自己也产生一个随机数Snonce;根据Snonce等材料生成了PMK和PTK(包含KCK、KEK、TK)密钥;然后发送自身产生的Snonce和通过KCK对报文做了完整性校验的MIC值
  3. AP收到Snonce后也根据自身的材料生成PMK,PTK(包含KCK、KEK、TK),然后利用KCK把终端发送过来的报文进行完整性校验,将结果与收到的MIC进行对比;如果MIC一致,就说明PMK一致的,就可以得出配置的WPA/WPA2认证密钥也是一样的;通过MIC值就可以验证密钥是否一致认证通过后,认证方就回复终端,让终端安装PTK到网卡上,并发送加密的GTK密钥和对报文的完整性校验值(GTK的加密是使用PTK里面的KEK做加密的)
  4. 终端收到后也会对报文完整性校验,然后与收到的MIC做对比,如果一样则说明PMK一致,然后就会把PTK安装到网卡中,给认证方回应确认报文
  5. 后面的数据交互就是用PTK里面的TK做加密

注意事项

认证1/4握手失败:有可能是认证的密码错误,有可能是空口丢包错误

认证3/4握手失败:基本上就是空口丢包了

TKIP/CCMP加密和完整性校验(具体如何加密和校验不做讲解)

加密的密钥

TKIP和CCMP都通过PTK的密钥解决自身的算法进行加密

完整性校验算法

对于TKIP来说,生成PTK是还会生成MIC KEY,用户后续用户数据的完整性校验

对于CCMP来说,后续用户完整性校验通过CCM来完成

802.1x认证以及生成动态密钥的工作原理

Wlan——STA接入无线网络的流程以及STA如何通过802.1x接入网络_静下心来敲木鱼的博客-CSDN博客

相关文章:

Wlan安全——认证与加密方式(WPA/WPA2)

目录 终端认证技术 WEP认证 PSK认证 802.1x认证与MAC认证 Portal认证 数据加密技术 WEP加密 TKIP加密 CCMP加密 TKIP和CCMP生成密钥所需要的密钥信息 802.11安全标准 WEP共享密钥认证、加密工作原理 WEP共享密钥认证 WEP加解密过程 PSK认证以及生成动态密钥的工…...

Leetcode-每日一题【剑指 Offer 31. 栈的压入、弹出序列】

题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列&#xf…...

软件需求-架构师之路(五)

软件需求 软件需求: 指用户 对系统在功能、行为、性能、设计约束等方面的期望。 分为 需求开发 和 需求管理 两大过程。 需求开发: 需求获取需求分析需求定义(需求规格说明书)需求验证:拉客户一起评审&#xff0c…...

Python自带的IDLE有什么用

在Python的官方解释器中,自带了一个名为IDLE(Interactive DeveLopment Environment)的集成开发环境。 一、简化代码调试过程 很多初学者在编写Python代码时,经常会遇到一些问题需要调试。而在IDLE中,我们可以通过设置断点、单步调试等方法&…...

设计模式之简单工厂模式

一、概述 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂模式使一个类的实例化延迟到其子类。 简单工厂模式:又叫做静态工厂方法模式,是由一个工厂对象决定创建出哪一种产品类的实例。 二、适用性 1.当一个类不知道它所必须…...

从SaaS到RPA,没有真正“完美”的解决方案!

众所周知,SaaS行业越来越卷,利润也越来越“薄”,这是传统软件厂商的悲哀,也是未来数字化行业不得不面对的冷峻现状之一。 随着基于aPaaS、低代码的解决方案之流行,SaaS行业变得越来越没有技术门槛,IT人员的…...

miniconda克隆arcpy

arcpy环境克隆 前言尝试思考到此结束 前言 最近遇到了一些问题,需要用到arcpy来处理一些东西,但众所周知,arcgis的arcpy是python 2.0的,我不是很喜欢;所以我安装了arcgis pro 2.8,我发现这也是个坑&#x…...

一万字关于java数据结构堆的讲解,让你从入门到精通

目录 java类和接口总览 队列(Queue) 1. 概念 2. 队列的使用 以下是一些常用的队列操作: 1.入队操作 2.出队操作 3.判断队列是否为空 4.获取队列大小 5.其它 优先级队列(堆) 1. 优先级队列概念 Java中的PriorityQueue具有以下特点 2.常用的PriorityQue…...

Java集合底层源码剖析-ArrayList和LinkedList

文章目录 ArrayList基本原理优缺点核心方法的原理数组扩容以及元素拷贝LinkedList基本原理优缺点双向链表数据结构插入元素的原理获取元素的原理删除元素的原理Vector和Stack栈数据结构的源码剖析ArrayList 基本原理 ArrayList是Java中的一个非常常用的数据结构,它实现了Lis…...

【数据分享】2006-2021年我国城市级别的市政公用设施建设固定资产投资相关指标(30多项指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况,在之前的文章中,我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国城市级别的市政设施水平相关指标(可查看之前的文章获悉详情&#xff…...

学点Selenium玩点新鲜~,让分布式测试有更多玩法

前 言 我们都知道 Selenium 是一款在 Web 应用测试领域使用的自动化测试工具,而 Selenium Grid 是 Selenium 中的一大组件,通过它能够实现分布式测试,能够帮助团队简单快速在不同的环境中测试他们的 Web 应用。 分布式执行测试其实并不是一…...

【SpringBoot学习笔记】04. Thymeleaf模板引擎

模板引擎 所有的html元素都可以被thymeleaf替换接管 th:元素名 templates下的只能通过Controller来跳转,templates前后端分离,需要模板引擎thymeleaf支持 模板引擎的作用就是我们来写一个页面模板,比如有些值呢,是动态的&#x…...

【uni-app】 .sync修饰符与$emit(update:xxx)实现数据双向绑定

最近在看uni-app文档,看到.sync修饰符的时候,觉得很有必要记录一下 其实uni-app是一个基于Vue.js和微信小程序开发框架的跨平台开发工具 所以经常会听到这样的说法,只要你会vue,uni-app就不难上手 在看文档的过程中,发…...

链表之第二回

欢迎来到我的:世界 该文章收入栏目:链表 希望作者的文章对你有所帮助,有不足的地方还请指正,大家一起学习交流 ! 目录 前言第一题:反转一个链表第二题:链表内指定区间反转第三题:判断一个链表…...

【sgDragSize】自定义拖拽修改DIV尺寸组件,适用于窗体大小调整

核心原理就是在四条边、四个顶点加上透明的div,给不同方向提供按下移动鼠标监听 ,对应计算宽度高度、坐标变化 特性: 支持设置拖拽的最小宽度、最小高度、最大宽度、最大高度可以双击某一条边,最大化对应方向的尺寸;再…...

Gson与FastJson详解

Gson与FastJson详解 Java与JSON 做什么? 将Java中的对象 快速的转换为 JSON格式的字符串. 将JSON格式的字符串, 转换为Java的对象. Gson 将对象转换为JSON字符串 转换JSON字符串的步骤: 引入JAR包 在需要转换JSON字符串的位置编写如下代码即可: String json new Gson().to…...

LeetCode150道面试经典题-- 有效的字母异位词(简单)

1.题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 2.示例 s"adasd" t"daads" 返回true s"addad" t &q…...

前端与人工智能

前端开发与人工智能的结合在未来将会产生许多有趣和有前景的发展。以下是前端与人工智能结合可能带来的一些趋势和前景: 智能用户体验:人工智能可以用于改善用户体验,例如通过个性化推荐、情感分析等技术来提供更贴近用户需求的内容和功能。…...

神经网络基础-神经网络补充概念-14-逻辑回归中损失函数的解释

概念 逻辑回归损失函数是用来衡量逻辑回归模型预测与实际观测之间差异的函数。它的目标是找到一组模型参数,使得预测结果尽可能接近实际观测。 理解 在逻辑回归中,常用的损失函数是对数似然损失(Log-Likelihood Loss)&#xff…...

UG NX二次开发(C++)-PK函数创建一条圆弧曲线

文章目录 1、前言2、创建一个项目3、添加头文件4、在do_it中添加创建圆曲线的源代码5、调用dll6、再创建一个长方体验证1、前言 采用PK进行UG NX二次开发,现在看到的文章很多是直接创建实体,然后在UG NX的视图区显示出来,对于创建圆曲线的文章不多,本文讲一下PK函数创建圆…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

SpringTask-03.入门案例

一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

2023赣州旅游投资集团

单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

python打卡day49@浙大疏锦行

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...

iOS 项目怎么构建稳定性保障机制?一次系统性防错经验分享(含 KeyMob 工具应用)

崩溃、内存飙升、后台任务未释放、页面卡顿、日志丢失——稳定性问题,不一定会立刻崩,但一旦积累,就是“上线后救不回来的代价”。 稳定性保障不是某个工具的功能,而是一套贯穿开发、测试、上线全流程的“观测分析防范”机制。 …...