RIP协议+密文认证

2024-01-06 11:59
文章标签 认证 协议 rip 密文

本文主要是介绍RIP协议+密文认证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RIPv1不支持认证,已被淘汰;
RIPv2支持明文认证和MD5密文认证。

RIP是距离矢量路由协议,不需要建立邻居关系,其认证是单向的,即R1认证了R2时(R2是被认证方),R1就接收R2发送来的路由;反之,如果R1没认证R2时(R2是被认证方),R1将不能接收R2发送来的路由;R1认证了R2(R2是被认证方)不代表R2认证了R1(R1是被认证方)。即双向认证=做两次单向认证,无法一次完成。

通俗理解


在认证过程中,将认证方与被认证方之间的关系看作老师与学生之间的关系。认证方=老师,被认证方=学生,则认证过程可理解为: 学生交作业给老师,老师按照要求检查学生作业,若作业符合要求,则学生完成作业,作业留在老师处。

(注:“要求”即为明文认证或密文认证的规则,包括作业不符合要求后的处理方式)

以如下拓扑图为例:
在这里插入图片描述

明文认证

明文认证时,被认证方发送key chian时,发送最低ID值的key(因此在匹配过程中才无需在意key的ID),并且不携带ID;认证方接收到key后,和自己key chain的全部key进行比较,只要有一个key匹配就通过对被认证方的认证。

根据“认证方=老师,被认证方=学生”的理解,则认证过程可理解为:学生将名字任意的作业交给老师,老师检查此作业是否属于本班同学,若属于,则此学生算作完成作业,作业留在老师处。

R1的key chainR2的key chainR1可以接收路由?R2可以接收路由?
key 1=ciscokey 2=cisco可以可以
key 1=ciscokey 1=abcd key 2=cisco不可以可以
key 1=cisco key 2=abcdkey 1=abcd key 2=cisco可以可以

详解:由于明文认证时,被认证方发送的key-chain不携带ID,也就是说无论被认证方发送的key是key1还是key2都可与认证方的key-chain进行任意匹配,只要匹配成功一个,就算认证成功,认证方可接受此发送路由。
R1是否可以接受路由,也就是说将R1当做老师,R2当做学生,学生交作业给老师,也就是 用R2去匹配R1
R2是否可以接受路由,也就是说将R2当做老师,R1当做学生,学生交作业给老师,也就是 用R1去匹配R2

密文认证


RIP的密文认证也是单向的,然而此时被认证方发送key时,发送最低ID值的key,并且携带了ID。认证方接收到key后,首先在自己key-chain中查找是否具有相同ID的key,如果有相同ID的key并且key相同就通过认证,key值不同就不通过认证;如果没有相同ID的key,就查找该ID往后的最近ID的key;如果没有往后的ID,认证失败。

根据“认证方=老师,被认证方=学生”的理解,则认证过程可理解为:学生将自己的作业交给老师,老师检查作业与学生是否匹配,若匹配,则检查作业是否正确,若作业正确,则此学生完成作业,作业留在老师处;若作业与学生不匹配,则按照学号向后查找学号距离最近的学生,判断该学生与作业是否匹配,若匹配,执行上一过程;若两种情况都不满足,则此学生没有完成作业。

R1的key chainR2的key chainR1可以接收路由?R2可以接收路由?
key 1=ciscokey 2=cisco不可以可以
key 1=ciscokey 1=abcd,key 2=cisco不可以不可以
key 1=cisco,key 5=ciscokey 2=cisco可以可以
key 1=cisco,key 3=abcd,key 5=ciscokey 2=cisco不可以可以

先解读第三列 R1是否可以接受路由,也就是说将R1当做老师,R2当做学生,学生交作业给老师,也就是 用R2去匹配R1
①首先判断ID,R1的key只有key1,那么就需要根据ID的大小向后寻找,而R1中key1没有后续,故认证失败;
②首先判断ID,R1的key只有key1,然后判断R2的key1与R1的key1的是否一致,可知不一致,故认证失败;
③首先判断ID,明显可看出R1的key chain中没有R2要找的key2,那么就需要根据ID的大小向后寻找,找到R1的key5=cisco,与R2的key2一致,故认证成功;
④首先判断ID,明显可看出R1的key chain中没有R2要找的key2,那么就需要根据ID的大小向后寻找距离最近的key,找到R1的key3=abcd,与R2的key2不一致,故认证失败。

再解读第四列 R2是否可以接受路由,也就是说将R2当做老师,R1当做学生,学生交作业给老师,也就是 用R1去匹配R2
①首先判断ID,R2中没有要找的key1,那么就需要根据ID的大小向后寻找,找到key2,可知R1的key1与R2的key2一致,故认证成功;
②首先判断ID,R1的key只有key1,然后判断R2的key1与R1的key1的是否一致,可知不一致,故认证失败;
③首先判断ID,对key1的判断同①,只要成功匹配一个就算成功,故认证成功;
④首先判断ID,同③,认证成功。

配置路由与实验过程

R1预配置:
r1#conf t
r1(config)#int lo 0
r1(config-if)#ip ad 172.16.1.1 255.255.255.0
r1(config-if)#int s1/2
r1(config-if)#ip ad 10.0.0.1 255.255.255.0
r1(config-if)#no sh
r1(config-if)#exit
r1(config)#router rip
r1(config-router)#ver 2
r1(config-router)#net 10.0.0.1
r1(config-router)#net 172.16.1.1
r1(config-router)#end
r1#
R2预配置:
r2#conf t
r2(config)#int lo 0
r2(config-if)#ip ad 172.16.2.2 255.255.255.0
r2(config-if)#int s2/1
r2(config-if)#ip ad 10.0.0.2 255.255.255.0
r2(config-if)#no sh
r2(config-if)#exit
r2(config)#router rip
r2(config-router)#ver 2
r2(config-router)#net 10.0.0.2
r2(config-router)#net 176.2.2.2
r2(config-router)#end
r2#

实验过程(明文认证):

//第一步:在R1上配置密码
r1#conf t
r1(config)#key chain R1
r1(config-keychain)#key 1
r1(config-keychain-key)#key-string cisco         
r1(config-keychain-key)#exit
r1(config-keychain)#key 2
r1(config-keychain-key)#key-string norvel         
r1(config-keychain-key)#exit
r1(config-keychain)#key 3
r1(config-keychain-key)#key-string ccie         
r1(config-keychain-key)#exit
r1(config-keychain)#exit
r1(config)#int s1/2
r1(config-if)#ip rip auth mode text         
r1(config-if)#ip rip auth key-chain R1         
r1(config-if)#
//第二步:在R2上配置密码
r2#conf t
r2(config)#key chain R2
r2(config-keychain)#key 1        
r2(config-keychain-key)#key-string ccie         
r2(config-keychain-key)#exit
r2(config-keychain)#exit
r2(config)#int s2/1
r2(config-if)#ip rip auth mode text         
r2(config-if)#ip rip auth key-chain R2         
r2(config-if)#end
r2#
//第三步:在R1上进行验证
r1#ping 172.16.2.2
//结果
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.2, timeout is 2 seconds:
!!!!!         
Success rate is 100 percent (5/5), round-trip min/avg/max = 96/112/152 ms //成功率为100%,表示认证成功
r1#

实验过程(密文认证):

//第一步:在R1上配置密码
r1#conf t
r1(config)#key chain A
r1(config-keychain)#key 1
r1(config-keychain-key)#key-string cisco         
r1(config-keychain-key)#exit
r1(config-keychain)#key 2
r1(config-keychain-key)#key-string norvel         
r1(config-keychain-key)#exit
r1(config-keychain)#key 3
r1(config-keychain-key)#key-string ccna         
r1(config-keychain-key)#exit
r1(config-keychain)#exit
r1(config)#int s1/2
r1(config-if)#ip rip auth mod md5         
r1(config-if)#ip rip auth key-chain A         
r1(config-if)#end
r1#
//第二步:在R2上配置密码
r2#conf t
r2(config)#key chain B
r2(config-keychain)#key 1
r2(config-keychain-key)#key-string ccna         
r2(config-keychain-key)#exit
r2(config-keychain)#exit
r2(config)#int s2/1
r2(config-if)#ip rip auth mod md5         
r2(config-if)#ip rip auth key-chain B         
r2(config-if)#end
r2#
//第三步:在R1上进行验证
r1#ping 172.16.2.2
//结果
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.2, timeout is 2 seconds:
.....         
Success rate is 0 percent (0/5) 成功率为0%,表示认证失败
r1#
//第四步:在R2上更改配置密码
r2#conf t
r2(config)#key chain B
r2(config-keychain)#key 2
r2(config-keychain-key)#key-string ccna         
r2(config-keychain-key)#exit
r2(config-keychain)#exit
r2(config)#int s2/1
r2(config-if)#ip rip auth mod md5         
r2(config-if)#ip rip auth key-chain B         
r2(config-if)#end
r2#
//第五步:在R1上进行验证
r1#ping 172.16.2.2
//结果
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.2.2, timeout is 2 seconds:
!!!!!         
Success rate is 100 percent (5/5), round-trip min/avg/max = 24/108/256 ms
r1#

这篇关于RIP协议+密文认证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/576292

相关文章

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与