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

news2024/11/17 16:47:55

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.coloradmin.cn/o/1721447.html

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

相关文章

社交媒体数据恢复:QQ空间

本教程将指导您如何恢复QQ空间中的说说、日志和照片等内容。请注意,本教程不涉及推荐任何数据恢复软件。 一、恢复QQ空间说说 登录您的QQ账号,并进入QQ空间。点击“日志”选项,进入空间日志页面。在空间日志页面,您会看到一个“…

MyBatis源码分析--02:SqlSession建立过程

我们再来看看MyBatis使用流程: InputStream inputStream Resources.getResourceAsStream("myBatis_config.xml"); SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream); SqlSession session sqlSessionFactory.op…

【Rust日报】关于在其它语言中(特别是新语言中)能否直接调用Rust现有生态的研究...

关于在其它语言中(特别是新语言中)能否直接调用Rust现有生态的研究 直接调用,也就是不用写FFI绑定库。这篇文章讨论了其中的一些目前的困难,可以操作的一些方法。 本篇是第一篇:https://verdagon.dev/blog/exploring-s…

数学建模 —— 插值与拟合(1)

一、matlab画图 1.1 plot(二维图形) plot(x) —— 缺省自变量绘图格式 plot(x,y) —— 基本格式,以y(x)的函数关系作出直角坐标图,如果y为nm的矩阵,则以x为自变量,作出m条曲线 plot(x1,y1,x2,y2,…,xn,…

Lesson6--排序(初级数据结构完结篇)

【本节目标】 1. 排序的概念及其运用 2. 常见排序算法的实现 3. 排序算法复杂度及稳定性分析 1.排序的概念及其运用 1.1排序的概念 排序 :所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来…

GPT LoRA 大模型微调,生成猫耳娘

往期热门专栏回顾 专栏描述Java项目实战介绍Java组件安装、使用;手写框架等Aws服务器实战Aws Linux服务器上操作nginx、git、JDK、VueJava微服务实战Java 微服务实战,Spring Cloud Netflix套件、Spring Cloud Alibaba套件、Seata、gateway、shadingjdbc…

MACOS安装 vue 抱错解决方法npm ERR! code EACCESnpm ERR! syscall mkdirnpm ERR!

问题 在使用脚手架 vue-cli 创建 vue 工程的时候存在权限不足的情况下,报错; npm error code EACCES npm error syscall open npm error path /Users/ npm ERR! code EACCESnpm ERR! syscall mkdirnpm ERR! 解决方案: sudo npm cache cl…

什么是最好的手机数据恢复软件?6 款手机数据恢复软件 [2024 年更新]

什么是最好的手机数据恢复软件?在这篇文章中,您将了解 6 款最好的免费手机数据恢复软件,并学习如何恢复数据的完整指南。 最好的手机数据恢复软件是什么? 手机数据恢复软件是恢复智能手机中丢失或删除的文件、消息、照片和其他宝…

反射获取成员变量

目录 利用反射获取成员变量 ​编辑 代码实现 获取class对象 获取成员变量 获取单个成员变量 获取成员变量的名字 获取权限修饰符 获取成员变量的数据类型 获取成员变量记录的值 修改对象里面记录的值 利用反射获取成员变量 代码实现 Student类: 获取clas…

【 0 基础 Docker 极速入门】镜像、容器、常用命令总结

Docker Images(镜像)生命周期 Docker 是一个用于创建、部署和运行应用容器的平台。为了更好地理解 Docker 的生命周期,以下是相关概念的介绍,并说明它们如何相互关联: Docker: Docker 是一个开源平台&#…

生成ssh密钥,使用ssh连接linux系统

这里写目录标题 ssh密钥大概介绍1、密钥在哪里生成(客户端/服务器)?2、密钥生成是什么样子的? ssh (生成密钥、密钥传输、配置连接、连接服务)过程1、生成密钥提示一:输入保存密钥的文件&#x…

Nginx实战:nginx支持带下划线的header

nginx对header 的名字字符做了限制,默认 underscores_in_headers 为off,表示如果header name中包含下划线,则忽略掉,后端服务就获取不到该请求头。 为了支持header带下划线的参数,可以在http内或者server内设置如下参数…

ip地址告诉别人安全吗?ip地址告诉别人会有什么风险

IP地址告诉别人安全吗?在数字化时代,IP地址作为网络连接的关键标识符,承载着重要的安全意义。然而,很多人可能并不清楚,轻易地将自己的IP地址告诉他人可能带来一系列安全风险。那么,IP地址告诉别人会有什么…

7-11 验证宏(verify)---PTA实验C++

一、题目描述 无需惊慌,C缔造者Bjarne Stroustrup这句话说的CPP是C PreProcessor,即“C代码预处理器”。CPP根据#include #define #if #pragma等指令对文件进行处理。这种处理发生在编译之前,所以CPP叫“预处理器”。CPP完全是文本层面的处理…

少样本学习与零样本学习:理解与应用

少样本学习与零样本学习:理解与应用 在现代机器学习领域中,少样本学习(Few-Shot Learning)和零样本学习(Zero-Shot Learning)正变得越来越重要。这些技术能够在数据稀缺的情况下有效地进行学习和推理&…

禁止Windows Defender任务计划程序

开始键->搜索“任务计划程序”->“任务计划程序库”->“Microsoft”->"Windows"->"Windows Defender"->右边四项

Prometheus + Grafana + Alertmanager 系统监控

PrometheusGrafana 系统监控 1. 简介1.1 Prometheus 普罗 米修斯1.2 Grafana 2. 快速试用2.1 Prometheus 普罗 米修斯2.2 Prometheus 配置文件2.3 Grafana 2. 使用 Docker-Compose脚本部署监控服务3. Grafana 配置3.1 配置数据源 Prometheus3.2 使用模板ID 配置监控模板3.3 使用…

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

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

Kafka篇:Kafka搭建、使用、及Flink整合Kafka文档

一、Kafka搭建 1、上传并解压改名 tar -xvf kafka_2.11-1.0.0.tgz mv kafka_2.11-1.0.0 kafka-1.0.0 2、配置环境变量 vim /etc/profile export KAFKA_HOME/usr/local/soft/kafka-1.0.0 export PATH$PATH:$KAFKA_HOME/bin source /etc/profile (使环境变量生效…

SPHINX的输出文档格式

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