【网络安全技术】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,一经查实,立即删除!

相关文章

为什么发布实验报告

各位为什么能够看到这篇博文,90%的缘故是因为搜索到了完全雷同的实验报告,如果不是这个原因来的,后面部分可以不看了。 博主本人最近终于有被所谓查水表,并且试图开盒,当然博主不在意,毕竟当年缘分已尽&…

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自带的实现类…

利用 Python 进行数据分析实验(二)

一、实验目的、 使用Python解决简单问题 二、实验要求 自主编写并运行代码,按照模板要求撰写实验报告 三、实验步骤 本次实验共有4题: 输入2000年后的某年某月某日,判断这一天是从2000年1月1日开始算起的第几天?公务员面试设…

NodeJS安装

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

表单修改时取消disabled snippet

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

python正则表达式的例子

例子 当涉及到正则表达式时,可以有很多不同的用例。这里举几个简单的例子来说明正则表达式的使用: 匹配邮箱地址: import repattern re.compile(r\w\w\.\w) string My email address is testexample.comresult pattern.search(string) …

字节面试题 小于n的最大数

输入&#xff1a; A a 1 , a 2 , . . . , a m ( 0 < a i < 9 , 1 < m < 10 ) ; n A {a_1,a_2,...,a_m}(0<a_i<9,1<m<10);n Aa1​,a2​,...,am​(0<ai​<9,1<m<10);n 输出&#xff1a;构造小于n的最大数&#xff08;可重复使用 a i …

【投稿优惠|检索稳定】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 日在厦门…

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

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

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

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

batch_size太大和太小的优缺点分别是什么?

在深度学习的实验当中&#xff0c;我们通常回去设置batch_size&#xff0c;那batch_size开的太大和太小分别会为我们带来什么样的优缺点呢&#xff1f; 批处理大小过大&#xff1a; 优点&#xff1a; 训练速度较快&#xff1a;大批次可以充分利用硬件加速器&#xff08;如GP…

Python 生成API文档

目录 前言&#xff1a; 项目层级 安装sphinx 创建sphinx文档项目 配置conf.py文件 编译代码为api文档 编译文档&#xff08;windows&#xff09; 异常处理 异常1&#xff1a;无法生成rst文件 异常2&#xff1a;WARNING: autodoc: failed to import module xxx;WARNING…

etcd 与 Consul 的一致性读对比

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

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

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

0基础学java-day14

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

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

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

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

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