【网络安全技术】IPsec——AH和ESP

一、IPsec通信

主要是两个协议,认证头AH(Authentication Header)和封装安全载荷ESP(Encapsulate Security Payload)。AH提供了认证(integrity,抗否认,抗重放),ESP除了这些还提供了加密。

二、AH

AH和ESP都提供传输和隧道两种模式,传输模式就是正常的加了个AH头,隧道模式是把原来包里的所有内容都封起来了,加了一个新的IP头。注意在隧道模式下,这个AH头是加在新IP头的扩展头标里的,它是直接将原来的ip包整个封装起来。而且注意,这里AH是对整个包所有内容都做了认证。

这是AH的头,前面下一头标、载荷长度是标准的v6扩展头标的格式,

1.下面第一个就是之前说的SPI,需要用这个SPI去索引对应的SA,SA里通常含有

1)序列号计数器,这个序号和IPsec的滑动窗口机制结合提供抗重放。

2)Sequence Counter Overflow,也就是最大可以接受的序列号,超过这个序列号之后这个SA就相当于过期了,就需要重新协商一个SA。

3Anti–Replay Window,包含了这个滑动窗口的大小信息

这个滑动窗口情况比较特殊,他收到窗口内的包就会验证,并传给上层,而如果是窗口外的新包(序列号更大的包),他就会直接把窗口挪过去,移动后不在窗口中,且还未被验证的包就会全部被丢弃。

4)要么是AH相关的的什么信息,要么是ESP相关的的什么信息

5)还有一个Lifetim,从时间上过期。

6IPSec Protocol Mode,可能是隧道也可能是传输模式

7路径MTU

2.接下来这个字段序列号就代表了这个包的序列号。

3.AH ICV包含了一些用来认证的数据,这里看一个v4的抓包来了解下这里面会有什么。

这里的AH ICV,它使用HMAC来提供认证和完整性保护,所以这个AH ICV就是使用数据和共同秘密来做的HMAC的值。它使用数据包中不可变的内容来做哈希。可变内容有什么,v4中典型的可变内容就是ttl(逐跳递减),校验和(每跳重新计算)。v6中没有校验和了,所以典型的可变内容就是ttl。因为不管是AH还是ESP,这个首部都是目的地路由器才处理,途径路由器是不处理的,所以如果加上这些可变内容哈希不就不对了吗。

接下来在看一个隧道模式的抓包例子

这里能看到两个ip头,上面那个就是新头,下面紧接着AH头,AH头后面就是原来的ip头,所以想想ipv6扩展头标里,为什么会有ipv4封装(4),ipv6封装(41)这两个,就是因为这里AH的下一头标要填这个。

三、ESP

1.传输模式

这里和AH主要的不同点就在于,ESP只对从ESP header开始到ESP trailer结束部分认证,只对从ESP扩展头之后的内容加密,包括ESP扩展头之后的扩展头,以及载荷(例如TCP载荷),直到包含ESP trailer。这里的dest指的是destination option目的地选项扩展首部,想想v6里讲的,这是要出现在ESP头后面的头。

这是从ESP header开始到结束ESP auth的整个报文。

前两行就是ESP header,包括SPI和序列号,和AH一个效果。这个不包含在加密里。

从第三行开始就是数据了,这里的数据可能是ESP之后的扩展头,再加上正常的TCP数据,这一段是定长的,如果不到255字节的话要用0填充。最后1字节是这个头标的长度和下一头标。

至此是数据和ESP trailer,这些是被加密的内容。

最后是认证数据,是不加密的。这个是可选的。

2.隧道模式

一样的,只不过是把原来的整个ip包封在了ESP报文的data部分。

四、AH和ESP结合使用

这俩可以无限套娃,因为只要每套一层隧道,就有新的ip头,就能使用一次AH和ESP。

但是这里讨论的不是这个无限套娃,讲的是在一个最简单的IP包里,这俩可以同时出现。

复习一下v6里扩展头出现的顺序

AH在ESP前面。那么就看例子吧,看一个传输模式的一个隧道模式的。

1.传输模式

传输模式那就应该是直接在原来的ip头后面把这两个扩展头接上就行了,AH是可以直接接的,但是ESP是有头有尾的,所以是把原来的数据套进ESP的头和尾之间。

应该是这种情况,还是AH对所有不可变的内容做认证。ESP对ESP头之后,ESP认证之前的内容做加密,对从ESP头开始,到ESP认证之前的内容做认证。

这个抓的包能看见IP头,然后AH头,然后ESP头,然后就没了,后面的都是加密的(这里没有选择ESP认证,ESP认证是可选的)。

2.隧道模式

那就是直接把原来的IP包封进ESP头和尾之间,然后前面的新IP头后面接AH头和ESP头。

加密部分和认证部分还是同理。

这个抓到的包看不到ESP后面的下一头标,想想为什么,因为下一头标在ESP尾里,而ESP尾是被加密的!

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

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

相关文章

Python中字符串列表的相互转换详解

更多资料获取 📚 个人网站:ipengtao.com 在Python编程中,经常会遇到需要将字符串列表相互转换的情况。这涉及到将逗号分隔的字符串转换为列表,或者将列表中的元素连接成一个字符串。本文将深入讨论这些情景,并提供丰富…

大模型应用设计的10个思考

技术不是万能的,但没有技术却可能是万万不能的,对于大模型可能也是如此。基于大模型的应用设计需要聚焦于所解决的问题,在自然语言处理领域,大模型本身在一定程度上只是将各种NLP任务统一成了sequence 到 sequence 的模型。利用大…

SAP MM 中的业务伙伴确定配置

这篇博客文章将概述 SAP MM 供应商帐户组中的合作伙伴确定是什么以及如何在 S/4 系统中配置它。 本文将指导您完成分步过程,并为您提供有关在供应商主数据中使用合作伙伴确定的完整想法。 合作伙伴角色 供应商在 SAP 中扮演着不同类型的角色,让我们通…

springboot——自动装配

自动装配 Condition: Condition内置方法:boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata),返回值为布尔型 重写matches方法的类:SpringBootCondition等 SpringBootCondition:springboot自带的实现类…

NodeJS安装

前言: 因为java行业不景气,人才严重过剩,像我我这样的人,只能选择往广度走走,开始学Vue3. Vue3现在默认要NodeJs版本16及以上,所以我这里安装了18.18.0的,目前逛网最新稳定版本是20版本的。 1…

表单修改时取消disabled snippet

前言 有时候开发,表单编辑时有些字段不可更改,比如用户管理的用户名,修改时不可编辑。但是有时候就会有这么一种情况,希望他修改时也可编辑。所以就可以在浏览器–控制台里面写一个snippet,修改时运行。 当然&#xf…

【投稿优惠|检索稳定】2023年信息系统和工程与数字化经济国际会议(ICISEDE 2023)

2024年信息系统和工程与数字化经济国际会议(ICISEDE 2024) 2024 International Conference on Information Systems and Engineering and the Digital Economy(ICISEDE 2024) [会议简介] 2024 年信息系统和工程与数字化经济国际会议(ICISEDE 2024)将于 2024 年 1 月 20 日在厦门…

小型洗衣机什么牌子好又便宜?性价比内衣洗衣机推荐

在内衣洗衣机越来越受欢迎的今天,不少朋友都在犹豫要不要买一台内衣洗衣机,专门来清洗一些贴身衣物,这个问题的答案是很有必要的,因为目前市场上的大型洗衣机只是起到了清洁的作用,并不能有效地清除我们的贴身衣服上细…

Java LeetCode篇-深入了解二叉树经典解法(三种方式实现:获取二叉树的最大深度)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 对称二叉树 1.1 判断对称二叉树实现思路 1.2 代码实现:判断对称二叉树 2.0 二叉树的最大深度 2.1 使用递归实现获取二叉树的最大深度思路 2.2 代码实…

etcd 与 Consul 的一致性读对比

本文分享和对比了 etcd 和 Consul 这两个存储的一致性读的实现。 作者:戴岳兵,爱可生研发中心工程师,负责项目的需求开发与维护工作。 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本…

Python实现FA萤火虫优化算法优化LightGBM回归模型(LGBMRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法(Fire-fly algorithm,FA)由剑桥大学Yang于2009年提出 , …

0基础学java-day14

一、集合 前面我们保存多个数据使用的是数组,那么数组有不足的地方,我们分析一下 1.数组 2 集合 数据类型也可以不一样 3.集合的框架体系 Java 的集合类很多,主要分为两大类,如图 :[背下来] package com.hspedu.c…

UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)

UniApp 运行到浏览器的时候,接口会跨域报错,这里通过两种方式解决,第一:修改Uniapp自带的manifest.json 源码视图并进行配置h5设置。第二:在项目根目录新建vue.config.js并配置代理。 二选一即可。 修改或调整配置文件…

Python 进阶(十四):枚举类型(enum 模块)

大家好,我是水滴~~ 本篇文章主要介绍了Python中的枚举类型,主要内容包括:枚举类型的简介、创建枚举类型、使用枚举类型等。 文章中包含大量的代码示例,能够帮助新手同学快速入门。 《Python入门核心技术》专栏总目录・点这里 文…

Vue 父传子组件传参 defineProps

defineProps 属性:用于接收父组件传递过来的数据。 注意:如果 defineProps 接收的参数名,和已有变量名相同,就会造成命名冲突。 语法格式: // 无限制 const props defineProps([参数名, 参数名]);// 限制数据类型 …

第二十一章总结

一、网络通信: 1.网络程序设计基础:网络程序设计编写的是与其他计算机进行通信的程序。 1.1局域网与互联网:为了实现两台计算机的通信,必须用一个网络线路连接两台计算机 2.网络协议:网络协议规定了计算机之间连接的…

文心一言大模型应用开发入门

本文重点介绍百度智能云平台、文心一言、千帆大模型平台的基本使用与接入流程及其详细步骤。 注册文心一言 请登录文心一言官方网站 https://yiyan.baidu.com/welcome 点击登录;图示如下: 请注册文心一言账号并点击登录,图示如下&#xff1…

游戏:火星孤征 - deliver us mars - 美图秀秀~~

今天水一篇,借着免费周下载了deliver us mars,玩下来截了好多图,就放这里了。 游戏没有难度,剧情也不难理解,美图到处都是,建模细节也是满满,值得一玩。 游戏中的 A.S.E是守卫飞行机器人&…

力扣刷题day2(最长公共前缀,有效括号,删除有序数组中的重复元素)

题目1:14.最长公共前缀 思路和解析: #define _CRT_SECURE_NO_WARNINGS //最长公共前缀 char* longestCommonPrefix(char** strs, int strsSize) {// 如果字符串数组为空,则返回空字符串if (strsSize 0){return "";}// 将第一个…

网络安全威胁——跨站脚本攻击

跨站脚本攻击 1. 定义2. 跨站脚本攻击如何工作3. 跨站脚本攻击类型4. 如何防止跨站脚本攻击 1. 定义 跨站脚本攻击(Cross-site Scripting,通常称为XSS),是一种典型的Web程序漏洞利用攻击,在线论坛、博客、留言板等共享…