网络安全之接入控制
身份鉴别
定义:验证主题真实身份与其所声称的身份是否符合的过程,主体可以是用户、进程、主机。同时也可实现防重放,防假冒。
分类:单向鉴别、双向鉴别、三向鉴别。

主题身份标识信息:密钥、用户名和口令、证书和私钥
Internet接入控制过程
一些基本模型
终端访问网络资源
在一个简化的单一线路网络中,终端访问网络资源的过程且必需完成以下操作过程,如图所示:

-
建立终端A与路由器的传输路径。这条线路可能是公共电话网,则需要建立点对点信道;也可能是以太网网络,则需要建立连接到该以太网的信道路径
-
终端A完成网络信息配置过程**。**终端A需要配置IP地址、子网掩码、默认网关地址等
-
路由器路由表建立对应路由项。
终端接入Internet
但访问Internet网络上的资源,不是我们接一根线到路由器上就完成得了的,对Internet上的资源,终端接入Internet的过程如图所示:

也就是说在终端A接入Internet前,必须完成用户注册,只能由注册用户开始终端A接入internet程,接入控制设备在确定启动终端A接入Internet的先决条件是由注册用户情况下,才允许终端A完成接入Internet过程和在接入控制设备中建立路由项,这一过程需要完成身份认证。
这里需要注意接入控制设备和路由器的区别:
-
接入控制设备不仅具有普通路由器的功能还包含其他功能
-
接入控制设备可以鉴别终端A用户身份
-
接入控制设备为终端A动态分配IP地址(有点像DHCP的功能,不知道是不是需要在接入控制设备中配置DHCP协议)
终端接入Internet过程
-
建立终端A到接入控制设备之间的传输路径。
-
接入控制设备完成身份鉴别过程。确定终端A是注册用户。
-
动态配置终端A的网络信息。
-
在接入控制设备路由表中动态配置相应路由项。
PPP与接入控制
简介
PPP(Point to Point Protocol)协议,是我们熟知的用于传递点对点信道数据包的数据链路层协议。但其实PPP协议也可作为接入控制协议。
为什么可以用PPP作为接入控制协议?
在早期用户使用的宽带接入技术中,由于公共电话线路铺设广泛而其高频分段的利用的空白为改造成数据传输路线创造了条件,ADSL(非对称数字用户线技术)占到了大多数。也就是拨号上网,使用的是基于PPPoE协议的ADSL。而接入控制设备在与终端A交换信息(A的用户身份标识、接入控制设备为终端A配置的网络信息)的过程中,由于终端A与接入控制设备之间的传输路径是点对点语音信道,因此需要将这种信息风专场适合点对点传输的帧格式,PPP帧就是适合点对点语音信道传输的PPP帧。

PPP帧中与接入控制相关的协议
口令鉴别协议PAP(Password Authentication Protocol)
其在PPP帧中协议属性值为0xC023。终端A以明文方式向接入控制设备发送接入Internet需要的用户名和口令。接入控制设备在在收到信息后,检索注册用户信息库,如果用户名存在且密码匹配,则准入终端A到Internet。

挑战握手鉴别协议CHAP(Challenge Handshake Authentication Protocol)
在PPP帧首部的协议属性值为0xC223。接入控制设备会先向终端A发送一个随机数C,终端A会将接收到的随机数和密码串接,并经过MD5摘要算法运算后,再加上用户名发送到接入控制设备。接入控制设备收到该消息后,在注册用户信息库检索到用户的密码和刚刚发送的随机数选出并经过MD5摘要算法运算后与接收到的消息进行比对。如果相同则准入终端A到Internet。前提:终端A和控制设备之间有共享密钥K。

IP控制协议IPCP(Internet Protocol Control protocol)
其作用是为终端A动态分配IP等网络信息。接入控制设备为终端A分配一个全球IP地址,并且在路由表中添加一项动态路由,该项路由是将终端A的IP地址和语音信道绑定在一起的。
PPP接入控制过程
如图所示

注:LCP也就是Link Control Protocol链路控制协议,用来建立、配置和测试数据链路连接的协议。
EAP
简介
EAP全称为Extensible Authentication Protocol,中文名称拓展鉴别协议。在身份鉴别过程中,需要在链路上传送鉴别信息,但在不同的链路上所需要的数据链路层帧格式不同,比如在点对点信道上使用PPP帧,在以太网上使用MAC帧。由于网络环境日益复杂,在终端到接入控制设备之间可能不单单只有一种通信信道的情况下,为了避免鉴别协议的数据帧与通信信道两两绑定的关系,EAP应运而生。
EAP就是将多种鉴别协议对应的PDU统一封装成拓展鉴别协议EAP报文,然后将EAP报文封装成不同类型传输网络对应的链路层帧格式。
EAP包含鉴别数据PDU,链路层帧格式包含EAP。

这样,鉴别协议也就不再具有必须与数据链路层协议绑定的特殊性,而可以随用户终端或者接入控制设备来进行指定。
EAP报文格式

-
编码:1~4,分别对应请求报文、响应报文、成功报文和失败报文
-
标识符:一组请求/报文过程中,其请求报文和响应报文的标识必需相同,在相邻两个请求报文中,也必须采用不同的标识符
-
长度:EAP报文总的长度
-
类型:1-身份报文;4-CHAP鉴别协议;5-OTP鉴别协议;13-TLS协议
EAP over PPP
简介
PPP协议是点对点网络下的对应的链路层协议,自然也是点对点网络环境下的EAP载体协议,用于实现用户和鉴别者之间的EAP报文传输。这也就是所谓的EAP over PPP。
PPP封装EAP的报文如图所示

也就是在PPP报文的协议字段位置处的值为0xC227
鉴别过程
CHAP鉴别模式下的EAP over PPP报文鉴别过程如图所示

在建立PPP链路的过程中,在鉴别身份之前,会约定采用EAP作为鉴别协议。在服务器向终端A发出的EAP请求报文中其类型值就是身份。注意在终端A会送EAP响应时,会把EAP字段的标识符也纳入到MD5的报文摘要计算之中,用以防止假冒攻击。
EAP over LAN
简介
假如终端用户与接入控制设备之间的传输信道不再是点对点路线,而是处于某一个以太网中,这个时候所采用的链路层帧格式多半是MAC帧。
基于局域网的拓展认证协议(EAP over PPP)给出了将EAP报文封装成LAN对应的帧格式(大都是V2版本的MAC帧)的过程。
其报文格式如下所示

在MAC帧的头部字段值中类型值为0x888E(0x0800时为IP报文)。
与单纯的MAC帧可以说相同也可以说不同,将版本、报文类型、报文体长度和报文体都当作MAC帧的数据时就跟v2 版本的MAC帧是完全一致的,但是这个数据部分又相比单单的EAP报文多出了几个首部。其中一个首部字段值分类及其意思如上图所示。所以我们可以特地称其为EAPOL报文。
802.1X
802.1X就是一种实现用户身份鉴别,并开通连接进以太网的用户终端接入权限端口的接入控制协议。
目前支持802.1X的局域网主要是以太网和无线局域网。
以下是802.1X的操作模型

与后文的RAIUS协议配合使用,且在鉴别者中的端口分为受控端口和非受控端口。受控端口用于对鉴别者提供正常服务,在完成身份鉴别过程后才会打开;非受控端口一直允许接收EAP报文,直接进行鉴别操作或对EAP报文进行转发。也就是说,在完成用户身份鉴别之前,该端口只能输入输出EAP报文和广播帧,只有在用户身份鉴别成功后,才可使用正常服务。
鉴别过程
鉴别过程如图所示

相比于用户A通过EAP over PPP完成鉴别过程,802.1X是允许双方即鉴别者和用户均可发起鉴别过程的,上图是由用户发起鉴别的过程。
以太网接入控制过程
那么我们在上一模块仅仅讲了PPP信道中的接入控制过程,并未提及到以太网是如何进行从以太网接入Internet的过程,有了以上知识作为铺垫,可以简单叙述一下。

值得一提的是现在的以太网交换机实现的802.1X都是基于MAC地址的,而不是基于端口。因为在一个局域网中,一个端口可能涉及到多台主机,所以禁用端口是不现实的。只有当用户完成用户身份鉴别后,交换机才会将该终端的MAC地址列入接收到EAP报文的端口对应的访问访问控制列表,并将访问控制设置为允许访问。
RADIUS
简介
其实我们可以思考一下在上面所示的接入控制协议中,其鉴别服务器都停留在局域网层面,然而实际上,如果将接入控制设备设置在每一个以太网下面,其成本非常高难以维护,而且是非常不安全的,因为每一个接入控制设备都需要存储所有接入用户的身份标识信息。所以为了实现统一鉴别,我们需要将鉴别服务器放在互联网中的任何位置,至少这个位置是易于维护,且安全的。
远程鉴别拨入用户服务RADIUS(Remote Authentication Dial In User Service)就是这样一种可以实现接入控制设备等鉴别者与服务器之间的双向身份鉴别和身份标识信息鉴别者与鉴别服务器之间安全传输的应用层协议。设置鉴别服务器在互联网的某一个地方,鉴别服务器统一管理用户,完成对用户的身份鉴别、授权和计费操作。设置鉴别者在以太网层面附近。用户和鉴别者之间仍然可以通过链路层传输路径完成EAP报文传输过程,使用的与传输网络相对应的链路层协议,如ADSL的ppp链路,或传送MAC帧。但鉴别者和鉴别服务器之间的传输路径往往是由路由器互连的多段链路层传输路径所组成的,因此,必须用IP以上的协议作为载体协议。

其端口包括1812的认证授权端口和1813的计费端口
RADIUS消息格式
封装格式
因为RADIUS是应用层协议,而且需要在形态各异的网络上进行传输,肯定是需要IP以上的协议的,如图所示,是RADIUS消息的封装格式

RADIUS消息格式

RADIUS消息格式如上图所示
-
编码code字段:表示当前RADIUS消息类型,目前一共有16种报文类型,分为3大类别:认证报文、计费报文和授权报文,这里仅对认证报文作消息介绍。编码值为1时,表示请求接入报文,用于传输用户的身份标识信息如用户名和口令等;编码值为2时,表示允许接入报文,完成对用户的身份鉴别;编码为3时,表示拒绝接入报文,未成功完成用户鉴别,拒绝接入网络;编码为11时,表示挑战接入报文,需要用户提供更多的身份标识信息或者需要用户根据约定的鉴别机制对挑战接入消息中包含的数据进行运算
-
标识符Identifier字段:用于匹配请求接入消息和对应的响应消息。
-
长度Length字段:给出RADIUS消息总长
-
鉴别信息Authenticator字段:用于鉴别发送响应消息的鉴别服务器。首先由网络接入服务器NAS(Network Access Server)发送的RADIUS消息中的鉴别信息是一个16字节的随机数,用于防止防重放攻击,在有效期内,不允许出现相同的随机数。而鉴别服务器所发送的响应消息中,鉴别消息会经过如下计算所得
响应消息中的鉴别消息=MD5(响应消息||对应请求接入消息的鉴别消息(s随机数)||共享密钥K)
共享密钥K可鉴别鉴别服务器的身份,防止黑客假冒
-
属性Attribute字段:属性字段用于给出用户身份标识信息和NAS标识信息,如用户名、口令、NAS标识符、NAS IP地址等。根据NAS标识符确定共享密钥K。属性部分本来是支持各种鉴别协议的如PAP或CHAP,但是新发展的鉴别协议要同时支持EAP和RADIUS略显麻烦。所以为了避免重复劳动,EAP不断增加和新发展的鉴别机制相匹配的数据类型,但在RADIUS中只需要设置用于封装EAP报文的EAP属性。对于敏感属性值,如用户名和口令等,需要进行加密运算,使用共享密钥K进行MD5运算。
RADIUS完整应用
一次鉴别身份,接入控制如图所示

相关文章:
网络安全之接入控制
身份鉴别 定义:验证主题真实身份与其所声称的身份是否符合的过程,主体可以是用户、进程、主机。同时也可实现防重放,防假冒。 分类:单向鉴别、双向鉴别、三向鉴别。 主题身份标识信息:密钥、用户名和口令、证书和私钥 Internet接入控制过程 …...
Sqlite: Java使用、sqlite-devel
这里写目录标题 一、简介二、使用1. Java项目中(1)引入驱动(2)工具类(3)调用举例 2. sqlite-devel in linuxsqlite-devel使用 三、更多应用1. 数据类型2. 如何存储日期和时间3. 备份 一、简介 非常轻量级&…...
京东面试题目分享
话不多说,直接上问题 一面(视频面) 1小时30分钟 1、类加载机制概念、加载步骤、双亲委托机制、全盘委托机制、类加载器种类及继承关系 2、如何实现让类加载器去加载网络上的资源文件?怎么自定义类加载器?自定义的加…...
STM32 使用 STM32CubeMX HAL库实现低功耗模式
STM32 使用 HAL 库的低功耗模式测试使用 ...... 矜辰所致前言 上次画了一个 STM32L010F4 最小系统的板子,也做了一些基本测试,但是最重要的低功耗一直拖到现在,以前在使用 STM32L151 的时候用标准库做过低功耗的项目,现在都使…...
技术美术百人计划 | 《2.1 色彩空间介绍》笔记
总览 一、色彩发送器 色彩认知: 光源是出生点,光源发射出光线,光线通过直射反射折射等路径最终进入人眼。 但人眼接收到光线后,人眼的细胞产生了一系列化学反应。 由此把产生的信号传入大脑,最终大脑对颜色产生了认…...
如何在 Ubuntu 上安装 Mosquitto MQTT 代理
如何在 Ubuntu 上安装 Mosquitto MQTT 代理 Mosquitto 是一个开源的消息代理,实现了消息队列遥测传输 (MQTT) 协议。在 Ubuntu 22.04 上安装 MQTT 代理,您可以利用 MQTT 轻量级的 TCP/IP 消息平台,该平台专为资源有限的物联网 (IoT) 设备设计…...
css使用弹性盒,让每个子元素平均等分父元素的4/1大小
css使用弹性盒,让每个子元素平均等分父元素的4/1大小 原本: ul {padding: 0;width: 100%;background-color: rgb(74, 80, 62);display: flex;justify-content: space-between;flex-wrap: wrap;li {/* 每个占4/1 */overflow: hidden;background-color: r…...
设计模式的学习思路
学习设计模式确实需要一定的时间和实践,尤其是对于刚入门的人来说,因为一开始可能会感到有些混淆,尤其是当多个设计模式看起来有相似之处时。本博客是博主学习设计模式的思路历程,大家可以一起学习进步。设计模式学习-CSDN博客 1…...
stereopy 查看 data.tl 的可用属性
为了查看 data.tl 的可用属性,您可以使用 Python 的内置函数,例如 dir() 或 vars(),具体操作如下: 1. 列出 data.tl 的所有属性 使用 dir() 来查看所有可用的属性和方法: # 列出所有属性 print(dir(data.tl))这将返回一个列表,包含所有可用的方法、属性和内部字段。 2.…...
【2024APMCM亚太杯A题】详细解题思路
A题 复杂场景下的水下图像增强研究 解题思路问题一图像统计分析技术一、检测 偏色 的技术二、检测 弱光 的技术三、检测 模糊 的技术 聚类算法 问题二问题三问题四完整论文与代码 解题思路 问题一 问题 1:请使用类似上文提到的图像统计分析技术,对附件 …...
用 React18 构建Tic-Tac-Toe(井字棋)游戏
下面是一个完整的 Tic-Tac-Toe(井字棋)游戏的实现,用 React 构建。包括核心逻辑和组件分离,支持两人对战。 1. 初始化 React 项目: npx create-react-app tic-tac-toe cd tic-tac-toe2.文件结构 src/ ├── App.js…...
数据结构及算法--排序篇
在 C 语言中,可以通过嵌套循环和比较运算符来实现常见的排序算法,比如冒泡排序、选择排序或插入排序 目录 基础算法: 1.冒泡排序(Bubble Sort) 2.选择排序(Selection Sort) 3.插入排序&…...
泷羽sec学习打卡-网络七层杀伤链1
声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于蓝队基础的那些事儿-Base1 基本的企业网络架构是怎样的呢?高层管理IT管理影子IT中央技术…...
【QT】绘图
个人主页~ 绘图 一、绘图1、基础内容2、绘制形状(1)线段(2)矩形(3)圆形(4)文本(5)画笔(6)画刷 3、绘制图片(1)…...
vue3+elementui-plus el-dialog全局配置点击空白处不关闭弹窗
在与main.ts同级下的plugins文件夹(如果没有,新建一个)下建一个element.js文件(名字随便取) element.js文件内容如下: import ElementPlus from element-plus export default (app) > {console.log(app…...
Markdown语法说明
这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...
推荐一款专业电脑护眼工具:CareUEyes Pro
CareUEyes Pro是一款非常好用的专业电脑护眼工具,软件小巧,界面简单,它可以自动过滤电脑屏幕的蓝光,让屏幕显示更加的不伤眼,更加舒适,有效保护你的眼睛,可以自定义调节屏幕的色调,从…...
对subprocess启动的子进程使用VSCode python debugger
文章目录 1 情况概要(和文件结构)2 具体设置和启动步骤2.1 具体配置Step 1 针对attach debugger到子进程Step 2 针对子进程的暂停(可选) Step 3 判断哪个进程id是需要的子进程 2.2 启动步骤和过程 3 其他问题解决3.13.2 ptrace: Operation not permitted…...
Django启用国际化支持(2)—实现界面内切换语言:activate()
文章目录 ⭐注意⭐1. 配置项目全局设置:启用国际化2. 编写视图函数3. 配置路由4. 界面演示5、扩展自动识别并切换到当前语言设置语言并保存到Session设置语言并保存到 Cookie ⭐注意⭐ 以下操作依赖于 Django 项目的国际化支持。如果你不清楚如何启用国际化功能&am…...
基于单片机的多功能跑步机控制系统
本设计基于单片机的一种多功能跑步机控制系统。该系统以STM32单片机为主控制器,由七个电路模块组成,分别是:单片机模块、电机控制模块、心率检测模块、音乐播放模块、液晶显示模块、语音控制模块、电源模块。其中,单片机模块是整个…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
Vue 实例的数据对象详解
Vue 实例的数据对象详解 在 Vue 中,数据对象是响应式系统的核心,也是组件状态的载体。理解数据对象的原理和使用方式是成为 Vue 专家的关键一步。我将从多个维度深入剖析 Vue 实例的数据对象。 一、数据对象的定义方式 1. Options API 中的定义 在 Options API 中,使用 …...
