[WiFi] WiFi 802.1x介绍及EAP认证流程整理

802.1X

       Wi-Fi 802.1X 是一种网络访问控制协议,常用于保护无线网络。它提供了一种基于端口的网络访问控制机制,主要用于在用户和网络之间建立安全的连接。以下是 802.1X 的一些关键特点:

认证框架

       802.1X 使用 EAP(可扩展认证协议)作为其认证框架,支持多种认证方法,如 EAP-TLS、PEAP 等。

三方模型

        802.1X 采用客户端(被称为“请求者”)、认证服务器(如 RADIUS 服务器)和网络设备(如交换机或无线接入点,称为“验证者”)三方模型。

安全性

        通过强制用户在访问网络之前进行身份验证,802.1X 提供了增强的安全性,防止未经授权的设备接入网络。

动态密钥管理

        在认证过程中,802.1X 可以协商动态加密密钥,用于保护无线通信的机密性和完整性。

广泛应用

        802.1X 广泛应用于企业无线网络中,确保只有经过认证的用户和设备才能访问网络资源。

通过使用 802.1X,网络管理员可以有效地管理和保护无线网络,防止未经授权的访问和潜在的安全威胁。

EAP

       Wi-Fi EAP(Extensible Authentication Protocol)是一种用于无线网络的认证框架,广泛应用于企业级无线网络中。EAP本身并不是一种认证方法,而是一个支持多种认证方法的框架。以下是一些常见的EAP类型:

EAP-TLS(Transport Layer Security):使用TLS协议进行认证,提供了强大的安全性。需要客户端和服务器都安装证书。

EAP-TTLS(Tunneled Transport Layer Security):类似于EAP-TLS,但只需要服务器端的证书。客户端的认证信息通过一个安全的隧道传输。

PEAP(Protected Extensible Authentication Protocol):由微软、思科和RSA开发,类似于EAP-TTLS,使用TLS隧道保护EAP交换。

EAP-SIM:用于GSM移动网络,通过SIM卡进行认证。

EAP-AKA:用于UMTS网络,通过USIM卡进行认证。

       EAP协议的选择通常取决于网络的安全需求和基础设施支持。企业网络通常选择EAP-TLS或PEAP以确保高安全性

802.1X认证过程

802.1X认证

       IEEE 802.1x是一种基于端口的网络接入控制技术,该技术提供一个可靠的用户认证和密钥分发的框架,可以控制用户只有在认证通过以后才能连接网络。IEEE 802.1x本身并不提供实际的认证机制,需要和上层认证协议(EAP)配合来实现用户认证和密钥分发。EAP允许无线终端支持不同的认证类型,能与后台 不同的认证服务器进行通信,如远程接入用户服务(Radius)。
       Bgate系列AC支持802.1X认证方式,这里以设备端PAE对EAP报文进行中继转发为例,IEEE 802.1X认证系统的基本业务流程如下图所示。
        在WLAN网络中,WLAN客户端Station为客户端PAE,提供WLAN服务的设备为设备端PAE。设备端通过产生一个随机Challenge发送给客户端;客户端会使用配置的密钥对该Challenge进行加密处理并将处理后的信息返回设备端;设备端根据客户端返回的加密后的Challenge以及原始的Challenge进行比较判断,设备端完成对客户端的单项认证。


IEEE 802.1X认证系统的EAP方式业务流程
整个802.1x的认证过程可以描述如下
  (1) 客户端向接入设备发送一个EAPoL-Start报文,开始802.1x认证接入;
  (2) 接入设备向客户端发送EAP-Request/Identity报文,要求客户端将用户名送上来;
  (3) 客户端回应一个EAP-Response/Identity给接入设备的请求,其中包括用户名;
  (4) 接入设备将EAP-Response/Identity报文封装到RADIUS Access-Request报文中,发送给认证服务器;
  (5) 认证服务器产生一个Challenge,通过接入设备将RADIUS Access-Challenge报文发送给客户端,其中包含有EAP-Request/MD5-Challenge;
  (6) 接入设备通过EAP-Request/MD5-Challenge发送给客户端,要求客户端进行认证
  (7) 客户端收到EAP-Request/MD5-Challenge报文后,将密码和Challenge做MD5算法后的Challenged-Pass-word,在EAP-Response/MD5-Challenge回应给接入设备
  (8) 接入设备将Challenge,Challenged Password和用户名一起送到RADIUS服务器,由RADIUS服务器进行认证
  (9)RADIUS服务器根据用户信息,做MD5算法,判断用户是否合法,然后回应认证成功/失败报文到接入设备。如果成功,携带协商参数,以及用户的相关业务属性给用户授权。如果认证失败,则流程到此结束;
  (10) 如果认证通过,用户通过标准的DHCP协议 (可以是DHCP Relay) ,通过接入设备获取规划的IP地址;
  (11) 如果认证通过,接入设备发起计费开始请求给RADIUS用户认证服务器;
  (12)RADIUS用户认证服务器回应计费开始请求报文。用户上线完毕。

        为了提高WLAN服务的数据安全性,IEEE 802.1X中使用了EAPOL-Key的协商过程,设备端和客户端实现动态密钥协商和管理;同时通过802.1X协商,客户端PAE和设备端PAE协商相同的一个种子密钥PMK,进一步提高了密钥协商的安全性。802.1X支持多种EAP认证方式,其中EAP-TLS为基于用户证书的身份验证。EAP-TLS 是一种相互的身份验证方法,也就是说,客户端和服务器端进行相互身份验证。在EAP-TLS 交换过程中,远程访问客户端发送其用户证书,而远程访问服务器发送其计算机证书。如果其中一个证书未发送或无效,则连接将终断。下图描述了EAP TLS认证方式过程:


EAP TLS认证消息序列图
        当EAP TLS认证成功时,客户端PAE和Radius服务器会对应产生公用的对称的Radius Key,Radius服务器会在认证成功消息中将Radius Key通知设备端PAE。客户端PAE和设备端PAE会根据该Radius Key,客户端MAC地址以及设备端MAC地址,产生种子密钥PMK以及对应的索引PMKID。根据IEEE802.11i协议定义的算法,设备端PAE和客户端PAE可以获得相同的PMK,该种子密钥将在密钥协商过程(EAPOL-Key密钥协商)中使用。
 

  1. WPA

        WPA采用了802.1x和TKIP来实现WLAN的访问控制、密钥管理与数据加密。802.1x是一种基于端口的访问控制标准,用户必须通过了认证并获得授权之后,才能通过端口使用网络资源。TKIP虽然与WEP同样都是基于RC4加密算法,但却引入了4个新算法:
  ● 扩展的48位初始化向量(IV)和IV顺序规则(IV Sequencing Rules);
  ● 每包密钥构建机制(per-packet key construction);
  ● Michael(Message Integrity Code,MIC)消息完整性代码;
  ● 密钥重新获取和分发机制。
  WPA系统在工作的时候,先由AP向外公布自身对WPA的支持,在Beacons、Probe Response等报文中使用新定义的WPA信息元素(Information Element),这些信息元素中包含了AP的安全配置信息(包括加密算法和安全配置等信息)。STA根据收到的信息选择相应的安全配置,并将所选择的安 全配置表示在其发出的Association Request和Re-Association Request报文中。WPA通过这种方式来实现STA(一般为客户端Station)与AP之间的加密算法以及密钥管理方式的协商。
  支持WPA的AP工作需要在开放系统认证方式下,STA以WPA模式与AP建立关联之后,如果网络中有RADIUS服务器作为认证服务器,那么 STA就使用802.1x方式进行认证;如果网络中没有RADIUS,STA与AP就会采用预共享密钥(PSK,Pre-Shared Key)的方式。
  STA通过了802.1x身份验证之后,AP会得到一个与STA相同的Session Key, AP与STA将该Session Key作为PMK(Pairwise Master Key,对于使用预共享密钥的方式来说,PSK就是PMK)。随后AP与STA通过EAPOL-KEY进行WPA的四次握手(4-Way Handshake)过程,如图2所示。

图2 AP与STA的四次握手

 

  在这个过程中,AP和STA均确认了对方是否持有与自己一致的PMK,如不一致,四次握手过程就告失败。为了保证传输的完整性,在握手过程中使 用了名为MIC(Message Integrity Code)的检验码。在四次握手的过程中,AP与STA经过协商计算出一个512位的PTK(Pairwise Transient Key),并将该PTK分解成为五种不同用途的密钥,如图3所示。

图3 PTK的产生过程

  其中前128位用做计算和检验EAPOL-KEY报文的MIC的密钥,随后的128位作为加密EAPOL-KEY的密钥;接下来的128位作为 AP与该STA之间通信的加密密钥的基础密钥(即由该密钥再经过一定的计算后得出的密钥作为二者之间的密钥);最后两个64位的密钥分别作为AP与该 STA之间的报文的MIC计算和检验密钥。
  由PTK分解出来的这一组(五个)密钥是AP与该STA之间使用的密钥(所以也叫每用户密钥,用于AP与STA之间的单播报文的加密),这些密 钥永远也不会以任何形式出现在无线网络上。在确认双方所持的PMK一致后, AP会根据自身是否支持每用户密钥的能力来指示STA是否安装并使用这个每用户密钥。
  为了使现有的设备能够通过软件/固件升级实现WPA,协议规定AP可以不采用PTK方式,而是利用下面将要描述的GTK作为AP向STA发送单 播报文时的密钥。如果AP通知STA安装并使用PTK,那么STA在向AP发送一个EAPOL-KEY相应报文后,再把相应的密钥安装到无线网卡中。
  四次握手成功后,AP要生成一个256位的GTK(Group Transient Key),GTK是一组全局加密密钥,所有与该AP建立关联的STA均使用相同的GTK,AP用这个GTK来加密所有与它建立关联的STA的通信报文, STA则使用这个GTK来解密由AP发送的报文并检验其MIC。该密钥可以分解为三种不同用途的密钥, 最前面的128位作为构造全局"每报文密钥"(Per-packet Encryption Key)的基础密钥(Base Key),后面的两个64位的密钥分别作为计算和检验WPA数据报文的MIC的密钥。AP使用EAPOL-KEY加密密钥将GTK加密并发送给STA,并 指明该GTK是否允许STA用作发送报文所使用,STA成功接收到该报文,将GTK解密后,向AP发送应答报文,并根据AP所指示的Key Index将其安装无线网卡的相应位置,如果AP使用GTK作为向某一STA单播传输的密钥,则该STA也需要使用GTK作为向AP发送单播报文的密钥。
  TKIP并不直接使用由PTK/GTK分解出来的密钥作为加密报文的密钥,而是将该密钥作为基础密钥(Base Key),经过两个阶段的密钥混合过程,从而生成一个新的每一次报文传输都不一样的密钥,该密钥才是用做直接加密的密钥。 通过这种方式可以进一步增强WLAN的安全性。密钥的生成方式如图4所示。

图4 最终密匙的生成形式

  在WPA中,AP支持WPA和WEP无线客户端的混合接入。在STA与AP建立关联时,AP可以根据STA的Association Request中是否带有WPA信息元素来确定哪些客户端支持使用WPA。但是在混合接入的时候,所有WPA客户端所使用的加密算法都得使用WEP,这就 降低了无线局域网的整体安全性。

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

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

相关文章

服务器数据恢复—V7000存储中多块磁盘出现故障导致业务中断的数据恢复案例

服务器存储数据恢复环境: 一台V7000存储上共12块SAS机械硬盘(其中1块是热备盘),组建了2组Mdisk,创建了一个pool。挂载在小型机上作为逻辑盘使用,小型机上安装的AIXSybase。 服务器存储故障: V7…

网络安全防范

实践内容 学习总结 PDR,$$P^2$$DR安全模型。 防火墙(Firewall): 网络访问控制机制,布置在网际间通信的唯一通道上。 不足:无法防护内部威胁,无法阻止非网络传播形式的病毒,安全策略…

你的第一个博客-第一弹

使用 Flask 开发博客 Flask 是一个轻量级的 Web 框架,适合小型应用和学习项目。我们将通过 Flask 开发一个简单的博客系统,支持用户注册、登录、发布文章等功能。 步骤: 安装 Flask 和其他必要库: 在开发博客之前,首…

LLaMA-Factory(一)环境配置及包下载

LLaMA-Factory(一)环境配置及包下载 本机配置1. git下载2.创建虚拟环境3. 下载官方包内依赖4. 下载bitsandbytes5. 启动项目6. 可能出现问题1:pip install 出现 error: subprocess-exited-with-error 错误7. 可能出现问题2: ModuleNotFoundEr…

clickhouse-题库

1、clickhouse介绍以及架构 clickhouse一个分布式列式存储数据库,主要用于在线分析查询 2、列式存储和行式存储有什么区别? 行式存储: 1)、数据是按行存储的 2)、没有建立索引的查询消耗很大的IO 3)、建…

计算机网络:运输层 —— TCP 的选择确认(SACK)

文章目录 TCP 的选择确认协商与启用工作机制接收方发送方 TCP 的选择确认 在 TCP 传输过程中,由于网络拥塞、链路故障等因素,数据可能会出现丢失或乱序的情况。传统的 TCP 确认机制是累积确认,TCP 接收方只能对按序收到的数据中的最高序号给…

HTML语法规范

HTML语法规则 HTML 标签是由尖括号包围的关键词&#xff0c;标签通常是成对出现的&#xff0c;例如 <html> 和 </html>&#xff0c;称为双标签 。标签对中的第一个标签是开始标签&#xff0c;第二个标签是结束标签单标签比较少&#xff0c;例如<br />&#x…

STL 剖析

STL 六大组件 「STL 六大组件的交互关系」 Container 通过 Allocator 取得数据储存空间Algorithm 通过 Iterator 存取 Container 内容Functor 可以协助 Algorithm 完成不同的策略变化Adapter 可以修饰或套接 Functor、Iterator 配置器(allocator) 配置器&#xff1a;负责空间…

Y3编辑器教程8:资源管理器与存档、防作弊设置

文章目录 一、资源管理器简介1.1 界面介绍1.2 资源商店1.3 AI专区1.3.1 AI文生图1.3.2 AI图生图1.3.3 立绘头像 二、导入导出2.1 文件格式2.2 模型导入2.2.1 模型制作后导出2.2.2 模型文件导入Y3编辑器2.2.3 Y3编辑器角色、装饰物模型要求 2.3 纹理导入2.4 材质贴图2.4.1 材质支…

DL作业11 LSTM

习题6-4 推导LSTM网络中参数的梯度&#xff0c; 并分析其避免梯度消失的效果 LSTM&#xff08;长短期记忆网络&#xff09;是一种特殊的循环神经网络&#xff08;RNN&#xff09;&#xff0c;旨在解决普通 RNN 在处理长序列时遇到的梯度消失和梯度爆炸问题。它通过设计多个门…

面试题整理9----谈谈对k8s的理解1

谈谈对k8s的理解 1. Kubernetes 概念 1.1 Kubernetes是什么 Kubernetes 是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统&#xff0c;其服务、支持和工具的…

解决MySQL安装难题:vcruntime140_1.dll文件丢失修复指南

在安装MySQL的过程中&#xff0c;用户可能会遇到一个常见的问题&#xff1a;“找不到vcruntime140_1.dll&#xff0c;无法继续执行代码”。这个错误提示表明系统缺少一个关键的动态链接库文件&#xff0c;这对于运行依赖于它的应用程序至关重要。本文将详细介绍vcruntime140_1.…

【前后端】HTTP网络传输协议

近期更新完毕&#xff0c;建议关注、收藏&#xff01; http请求 URL 严格意义上应该是URI http or https http不加密不安全&#xff1b;https加密协议&#xff08;公网使用&#xff09; http端口号80 https端口号443GET or POST GET和POST是HTTP请求的两种基本方法. 因为POST需…

多线程 - 自旋锁

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 多线程 - 自旋锁 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 概述 原理 优点与…

thinkphp5验证码captcha无法显示

排查思路 是否开启gd2以及gd2排查bom排查代码清除缓存 开启gd/gd2 找到php.ini 开启dg2库 去掉前面的;注释&#xff0c;有的可能会带.dll后缀影响不大 然后通过生成图片验证是否成功 查看是否存在bom 修改为utf-8即可&#xff0c;如果你的代码携带bom也需要排查一下 代码问…

Flutter组件————FloatingActionButton

FloatingActionButton 是Flutter中的一个组件&#xff0c;通常用于显示一个圆形的按钮&#xff0c;它悬浮在内容之上&#xff0c;旨在吸引用户的注意力&#xff0c;并代表屏幕上的主要动作。这种按钮是Material Design的一部分&#xff0c;通常放置在页面的右下角&#xff0c;但…

#{ }和${ } 、参数处理

目录 #{ }和${ } 参数处理 入参-parameterType 使用Map 使用Bean / List<Bean> 使用多参数 Param注解&#xff08;命名参数&#xff09; 出参-resultType 返回Map / List<Map> 返回Map<String,Map> 属性名不一致-resultMap结果映射 #{ }和${ }…

MySQL数据库——门诊管理系统数据库数据表

门诊系统数据库his 使用图形化工具或SQL语句在简明门诊管理系统数据库his中创建数据表&#xff0c;数据表结构见表2-3-9&#xff5e;表2-3-15所示。 表2-3-9 department&#xff08;科室信息表&#xff09; 字段名称 数据类型 长度 是否为空 说明 dep_ID int 否 科室…

Gin-vue-admin(4):项目创建前端一级页面和二级页面

目录 创建一级页面创建二级页面 创建一级页面 view目录下新建一个my&#xff0c;Index.vue <template></template><script> export default {name:My, } </script><script setup> import {ref} from vue const myNameref("name") &…

ABAP SQL 取日期+时间最新的一条数据

我们在系统对接的时候&#xff0c;外部系统可能会推送多个数据给到我们。 我们 SAP 系统的表数据中日期和时间是作为主键的&#xff0c;那么如果通过 ABAP SQL 取到最新日期的最新时间呢。 解决方案&#xff1a; 方式 1&#xff1a;SELECT MAX 可以通过两个 SELECT MAX 来取…