PPP认证两种:PAP和CHAP,两次握手和三次握手

CHAP(Challenge-Handshake Authentication Protocol,质询握手认证协议)的设计理念是增强网络认证过程的安全性。在CHAP的三次握手过程中,不直接传送用户的明文密码,以此来提高安全性,具体步骤如下:

  1. 服务器挑战认证过程开始时,认证服务器向客户端发送一个随机生成的挑战消息challenge)。这个消息是一个数据串,用于后续的认证计算,而不是直接请求用户名和密码。

  2. 客户端响应:接收到挑战消息后,客户端使用自己知道的一个密钥(通常是用户密码的某种加密形式或者衍生信息,但不是明文密码本身)对这个挑战消息进行处理(通常是哈希运算),然后将处理结果返回给服务器。这一过程不涉及用户名的直接传输,进一步增加了安全性,因为即使通信被截获,攻击者也很难从中直接获取到敏感信息。

  3. 服务器确认:服务器收到客户端的响应后,使用它存储的该客户端的密钥(或相应的加密信息)对原始挑战消息执行相同的处理过程,并将结果与客户端返回的响应进行对比。如果两者匹配,说明客户端确实拥有正确的密钥,认证成功;如果不匹配,则认证失败。

PAP的两次握手很好理解,客户端传送,服务器回应判断结果。

疑问:三次握手的时候,为啥是服务器发起?

CHAP采用三次握手过程,包含服务器的挑战、客户端的响应以及服务器的确认。为什么CHAP握手过程没有客户端先传送用户名密码这一过程?

无论是CHAP还是PAP,我认为都应该是客户端首先发起连接请求,难道这有问题吗?你怎么说CHAP的认证开始是服务器发起,难道服务器随时都在发起挑战吗,他怎么知道哪个客户端需要建立连接呢?

======================================================================

让我们澄清一下CHAP和PAP协议在PPP(点对点协议)连接建立过程中的角色和时序:

实际上,在PPP协议中,无论是使用CHAP还是PAP进行身份验证,客户端和服务器之间的连接初始化通常是由客户端发起的。当客户端尝试建立PPP连接时,它会发送LCP(链路控制协议)的配置请求包给服务器,开始链路的建立过程。这一阶段包括协商数据包的格式、认证方式等参数。

一旦LCP阶段完成,如果双方同意使用CHAP或PAP作为认证方法,认证流程才会开始。在这个上下文中,当我说“CHAP的认证过程开始是服务器发起”,我指的是在认证阶段,确实是服务器首先发送一个挑战(challenge)给客户端,但这是在客户端已经发起了PPP连接建立请求,并且双方通过LCP协商确定使用CHAP之后的事情。

至于服务器如何知道哪个客户端需要建立连接,这是因为在PPP连接建立的早期阶段(即LCP协商阶段),客户端会向服务器发送一个或多个配置包,表明其存在并请求建立连接。服务器基于这些请求来初始化连接和随后的认证过程。

总结来说,虽然认证的确切流程(如CHAP的挑战)是由服务器发起的,但整个连接的尝试最初是由客户端启动的。服务器响应客户端的连接请求,并按照之前协商好的认证协议(如CHAP)来进行身份验证。

那么,三次握手属于PPP协议的NCP阶段,对吗?

实际上,三次握手并不直接属于PPP(点对点协议)的NCP(网络控制协议)阶段。PPP协议的建立分为两个主要阶段:

1. **链路建立阶段(LCP,Link Control Protocol)**:在这个阶段,两端设备通过交换LCP数据包来建立PPP链路,协商诸如最大传输单元(MTU)、认证协议、魔术字等参数。此阶段确保了物理连接的建立和基本参数的设置。

2. **认证阶段**:如果在LCP阶段协商决定使用认证(如PAP、CHAP),认证将在LCP完成之后进行CHAP的三次握手认证流程发生在这个阶段,但它并不是NCP的一部分。

3. **网络层协议配置阶段(NCP,Network Control Protocol)**:只有当链路建立和认证(如果适用)都成功完成后,才会进入NCP阶段。在这个阶段,为不同的网络层协议(如IPCP用于IP协议)配置具体的参数,比如分配IP地址、DNS服务器地址等,以使数据能够在PPP链路上传输。

因此,CHAP的三次握手认证过程发生在PPP的认证阶段,而非NCP阶段。NCP是在认证成功之后,用于配置网络层协议参数的阶段。

PPP到底分哪几个阶段?

PPP(点对点协议)的建立过程大致可以分为以下几个阶段:

1. **Dead(链路不可用)阶段**:这是链路的初始状态,表示物理层尚未准备好或者链路已断开。当物理层变为可用时,PPP尝试进入下一阶段。

2. **Establish(链路建立)阶段**:在这个阶段,PPP链路开始进行LCP(链路控制协议)参数的协商,包括验证类型、最大传输单元(MTU)、魔术字等。LCP协商成功后,链路进入Opened状态,意味着链路控制协议层面已经准备好进行数据传输。

3. **Authenticate(认证)阶段**(可选):根据LCP协商的结果,如果启用了认证,接下来会进行用户或设备的身份验证。常见的认证协议有PAP(密码验证协议)和CHAP(挑战握手验证协议)。认证成功后,继续到下一个阶段;若失败,则链路可能被终止并返回到Dead阶段。

4. **Network-Layer Protocol(网络层协议)配置阶段**(NCP):一旦链路和认证(如果需要)都成功,接下来会进行NCP协商。NCP负责配置网络层协议,如IPCP(Internet Protocol Control Protocol)用于配置IP参数,如分配IP地址、默认网关等。每种支持的网络层协议都有其对应的NCP来配置必要的参数。

5. **Link Terminate(链路终止)阶段**:当需要关闭链路时,PPP通过交换特定的终止包来优雅地关闭连接,之后链路回到Dead状态。

请注意,认证阶段并非总是必需的,这取决于LCP协商时是否启用了认证。此外,整个过程是有序的,每个阶段的成功完成通常是进入下一阶段的前提条件。

结论:原来PAP和CHAP的认证阶段,是介于LCP和NCP之间!

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

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

相关文章

springboot结合mybatis使用多数据源的方式

背景 最近有一个需求,有两个库需要做同步数据,一个Doris库,一个mysql库,两边的表结构一致,这里不能使用navicat等工具提供的数据传输之类的功能,只能使用代码做同步,springboot配置多数据…

如何设置手机的DNS

DNS 服务器 IP 地址 苹果 华为 小米 OPPO VIVO DNS 服务器 IP 地址 中国大陆部分地区会被运营商屏蔽网络导致无法访问,可修改手机DNS解决。 推荐 阿里的DNS (223.5.5.5)或 114 (114.114.114.114和114.114.115.115) 更多公开DNS参考: 苹果…

ESP32-C3模组上实现蓝牙BLE配网功能(1)

本文内容参考: 《ESP32-C3 物联网工程开发实战》 乐鑫科技 蓝牙的名字由来是怎样的?为什么不叫它“白牙”? 特此致谢! 一、蓝牙知识基础 1. 什么是蓝牙? (1)简介 蓝牙技术是一种无线数据和…

Camunda BPM架构

Camunda BPM既可以单独作为流程引擎服务存在,也能嵌入到其他java应用中。Camunda BPM的核心流程引擎是一个轻量级的模块,可以被Spring管理或者加入到自定义的编程模型中,并且支持线程模型。 1,流程引擎架构 流程引擎由多个组件构成,如下所示: API服务 API服务,允许ja…

蒙自源儿童餐新品上市,引领健康美味新潮流

随着夏日的热烈与儿童节的欢乐氛围到来,蒙自源品牌隆重推出儿童餐新品,以“快乐不分大小,谁还不是个宝宝”为主题,为广大消费者带来一场健康与美味的盛宴。新品上市活动将于5月25日举行,蒙自源将以其独特的产品魅力和创…

最新 HUAWEI DevEco Studio 调试技巧

最新 HUAWEI DevEco Studio 调试技巧 前言 在我们使用 HUAWEI DevEco Studio 编辑器开发鸿蒙应用时,免不了要对我们的应用程序进行代码调试。我们根据实际情况,一般会用到以下三种方式进行代码调试。 肉眼调试法注释排错调试法控制台输出法弹出提示法断…

STM32 入门教程(江科大教材)#笔记2

3-4按键控制LED /** LED.c**/ #include "stm32f10x.h" // Device headervoid LED_Init(void) {/*开启时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟/*GPIO初始化*/GPIO_InitTypeDef GPIO_InitStructure;GPIO_I…

关系数据库:关系运算

文章目录 关系运算并(Union)差(Difference)交(Intersection)笛卡尔积(Extended Cartesian Product)投影(projection)选择(Selection)除…

让表单引擎插上AI的翅膀-记驰骋表单引擎加入AI升级

让表单引擎插上AI的翅膀 随着科技的飞速发展,人工智能(AI)已经逐渐渗透到我们工作和生活的每一个角落。在数字化办公领域,表单引擎作为数据处理和流程自动化的重要工具,也迎来了与AI技术深度融合的新机遇。让表单引擎…

Java对象的比较——equals方法,Comparable接口,Comparator接口

Java对象的比较——equals方法,Comparable接口,Comparator接口 1. equals方法2. Comparable接口3. Comparator接口 1. equals方法 在判断两个整数是否相同时,我们可以使用以下方式: System.out.println(1 2); System.out.printl…

安防综合管理系统EasyCVR平台GA/T1400视图库:基于XML的消息体格式

GA/T 1400标准的应用范围广泛,涵盖了公安系统的视频图像信息应用系统,如警务综合平台、治安防控系统、交通管理系统等。在视频监控系统中,GA/T 1400公安视图库的对接是实现视频图像信息传输、处理和管理的重要环节。 以视频汇聚EasyCVR视频监…

【SpringBoot】怎么在一个大的SpringBoot项目中创建多个小的SpringBoot项目,从而形成子父依赖

父子项目工程创建 步骤 先创建父项目 具体操作步骤请看本文章:使用maven工程创建spring boot项目 创建子项目 file- project structure module–new module 剩下步骤请看创建父工程时的操作使用maven工程创建spring boot项目 应用 确认即可 之后创建启动类…

ARM32开发——LED驱动开发

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 需求介绍现实问题需求分析测试案例构建BSP驱动构建业务实现 需求介绍 开发版中有4个灯,现在需要用4个灯显示充电情况&a…

618大促有哪些好物是最值得入手的的?请收下这份618必买好物清单!

最近聊的最多的话题就是618,年中购物大狂欢马上来了!!今天整理了一下之前购买的好物,发现相比之前的价格真的是太划算了,赶紧分享出来给大家,趁着这个大促赶紧多存入手~ 推荐1、南卡Neo 2——不伤耳黑科技…

SPHINX的输出文档格式

SPHINX的输出文档格式 SPHINX的输出文档格式更多信息 SPHINX的输出文档格式 用rst编写,然后用sphinx-build进行编译,还是效果相当不错地,只要掌握了格式,可以一次编译,多种格式输出,主要是用的可能是html和…

记一次netty客户端的开发

背景 近日要开发一个tcp客户端程序去对接上游厂商的数据源,决定使用netty去处理,由于很久没有开发过netty了,顺便学习记录下 netty搭建 考虑到我们需要多个client去对接server服务,所以我们定义一个公共的AbstractNettyClient父…

LabVIEW与Arm控制器之间的通讯

LabVIEW是一个强大的图形化编程环境,广泛应用于自动化控制、数据采集和测试测量等领域。而Arm控制器则是嵌入式系统中常用的处理器架构,广泛用于各种控制和计算任务。将LabVIEW与Arm控制器进行通讯控制,可以结合二者的优势,实现高…

WordPress plugin MStore API SQL注入漏洞复现(CVE-2023-3077)

0x01 产品简介 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 0x02 漏洞概述 WordPress plugin MStore API 3.9.8 版本之前存在S…

Linux 深入讲解自动化构建工具

各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 Linux一系列的文章(质量分均在93分…

配置arduino和ESP8266

首先准备好arduino 的IDE和ESP8266的驱动以及板子 1.安装驱动,双击x64的版本驱动,安装好以后,在资源管理器检查端口,比如下下图出现的COM4就是esp8266所使用的端口 2.安装好arduino最好不要在路径中存在中文符号,打开…