完整版:IPSec报文格式

news2024/10/7 10:18:22

IPSec协议族是IETF(Internet Engineering Task Force)制定的一系列协议,它为IP数据报提供了高质量的、可互操作的、基于密码学的安全性。

IPSec通过认证头AH(Authentication Header,协议号51)和封装安全载荷ESP(Encapsulating Security Payload)这两个安全协议来实现。AH可提供数据源验证和数据完整性校验功能;ESP除可提供数据验证和完整性校验功能外,还提供对IP报文的加密功能。

IPSec协议有两种封装模式:

  • 传输模式。在传输模式下,AH或ESP被插入到IP头之后但在所有传输层协议之前,或所有其他IPSec协议之前。

  • 隧道模式。在隧道模式下,AH或ESP插在原始IP头之前,另外生成一个新IP头放到AH或ESP之前。

传输模式用于两台主机之间的通讯,或者是一台主机和一个安全网关之间的通讯。在传输模式下,对报文进行加密和解密的两台设备本身必须是报文的原始发送者和最终接收者。

通常,在两个安全网关(路由器)之间的数据流量,绝大部分都不是安全网关本身的通讯量,因此在安全网关之间一般不使用传输模式,而总是使用隧道模式。在一个安全网关被加密的报文,只有另一个安全网关能够解密。因此必须对IP报文进行隧道封装,即增加一个新的IP头,进行隧道封装后的IP报文被发送到另一个安全网关,才能够被解密。

报文格式

图1 AH封装及头部格式

字段长度描述
Next Header8比特表示认证头部之后的下一个负载。
Payload Len8比特AH的长度减2,4字节为计数单位。例如,有个96比特的认证值,长度将是"4"(即头部固定的3个4字节 + ICV的3个4字节 - 2)。对于IPv6,头部总长度必须为8字节的倍数。
RESERVED16比特预留将来使用。必须置0,接收时忽略。
Security Parameters Index32比特用于给报文接收端识别SA
Sequence Number Field32比特序列号,每发送一个报文,计数加1,例如每发一个SA报文序列号增加1。
Integrity Check Value-ICV变长报文的ICV字段,可变长度,长度必须为32比特的整数倍。

图2 ESP封装及头部格式

字段长度描述
Security Parameters Index32比特安全参数索引。
Sequence Number32比特序列号。
Payload Data*变长有效载荷数据(可变)。
Padding0–255字节填充字段。
Pad Length8比特填充字段长度。
Next Header8比特下一个头。
Integrity Check Value-ICV变长验证数据。

图3 AH和ESP协议组合使用

因特网密钥交换协议IKE(Internet Key Exchange)是IPSEC的信令协议。

图4 IKE Header Format

字段长度描述
IKE_AS Initiator's SPI8 bytes发送者用来唯一标识一个IKE安全联盟,该值不能设置为0。
IKE_AS Responder's SPI8 bytes应答者用来唯一标识一个IKE安全联盟,对于IKE初始交互的消息该值必须为0,其他消息不能为0。
Next Payload1 byte仅随头部之后的负载的类型。
MjVer4 bits标识所使用的IKE协议的最大版本。
MnVer4 bits标识所使用的IKE协议的最小版本。
Exchange Type1 byte
  • 0-33: RESERVED
  • 34: IKE_SA_INIT
  • 35: IKE_AUTH
  • 36: CREATE_CHILD_SA
  • 37: INFORMATIONAL
  • 38-239: RESERVED TO IANA
  • 240-255: Reserved for private use.
Flags1 byte消息中设置的特定选项。如果Flag域置位表示带有选项。
  • X(reserved) (bits 0-2) - 发送时必须清0,接收时忽略。
  • I(nitiator) (bit 3 of Flags) - IKE_SA原始发送者在发送消息是必须将此位置1,源回应者发送的消息必须清零。
  • V(ersion) (bit 4 of Flags) - 标识转发者支持的版本比Major字段标识的版本更高 IKEv2版本的实现中,此比特必须置0,接收时忽略。
  • R(esponse) (bit 5 of Flags) - 标识此消息是对相同Message-ID的消息的一个回应消息。所有请求消息中此位需置0,所有回应消息置1。
  • X(reserved) (bits 6-7 of Flags) - 发送时需置0,接收时忽略。
Message ID4 bytes消息标识符,用来对请求消息和呼应消息的匹配,以便控制丢弃消息的重复发送。这在抑制重放攻击时对保障协议的安全性很关键。
Length4 bytes整个消息的长度(报文头+负荷),以字节为单位。
Next Payload1 byte标识消息中的下一个负载的类型。如果当前的负载是消息的最后一个,则此字段置0。
  • 0: No Next Payload
  • 1-32: RESERVED
  • 33: Security Association (SA)
  • 34: Key Exchange (KE)
  • 35: Identification - Initiator (IDi)
  • 36: Identification - Responder (IDr)
  • 37: Certificate (CERT)
  • 38: Certificate Request (CERTREQ)
  • 39: Authentication (AUTH)
  • 40: Nonce (Ni, Nr)
  • 41: Notify (N)
  • 42: Delete (D)
  • 43: Vendor ID (V)
  • 44: Traffic Selector - Initiator (TSi)
  • 45: Traffic Selector - Responder (TSr)
  • 46: Encrypted (E)
  • 47: Configuration (CP)
  • 48: Extensible Authentication (EAP)
  • 49-127: RESERVED TO IANA
  • 128-255: PRIVATE USE
C (Critical)1 bit
  • 如果发送者想让接收者在无法识别当前一个负载的Next Payload域是能够跳过此域,可将此位置0。
  • 如果接收者能够识别负载的类型代码,则忽略此位。
  • 负载类型为以下情况时,此位必须设置为0。
    • Security Association (SA)
    • Key Exchange (KE)
    • Identification - Initiator (IDi)
    • Identification - Responder (IDr)
    • Certificate (CERT)
    • Certificate Request (CERTREQ)
    • Authentication (AUTH)
    • Nonce (Ni, Nr)
    • Notify (N)
    • Delete (D)
    • Vendor ID (V)
    • Traffic Selector - Initiator (TSi)
    • Traffic Selector - Responder (TSr)
    • Encrypted (E)
    • Configuration (CP)
    • Extensible Authentication (EAP)

注意,C比特应用于当前负载,而不是下一个负载。

RESERVED7 bits发送时必须置0,接收时忽略。
Payload Length2 bytes当前负载的长度,包括通用负载的头部,以字节为单位。

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

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

相关文章

ipad触控笔有必要买原装吗?开学季ipad2023手写笔推荐

随着开学新学期的开始了,而平板电脑也开始在学校里流行了起来,这也给学生们带来了更多的便利。而苹果的原装电容笔,尽管功能很强,但是因为它的价格比较贵,要是你仅仅只是用来做学习和记录笔记的话,所以在国…

用C语言实现牛顿摆控制台动画

题目 用C语言实现牛顿摆动画,模拟小球的运动,如图所示 拆解 通过控制台API定位输出小球运动的只是2边小球,中间小球不运动,只需要固定位置输出左边小球上升下降时,X、Y轴增量一致。右边小球上升下降时,X、…

解决在远程连接的linux服务器上调用matplotlib画图的问题

前言: 我遇到这个问题的时候,在知乎上看到了一个回答,结果评论区看到了一个最简洁的解。 https://zhuanlan.zhihu.com/p/346384579 效果 左边是代码,右边是结果,弊处就是有点慢。 安装步骤 1. 安装插件 在代码处…

荣威 D7 正式亮相,新能源江湖再战

在 2023 成都车展上,荣威回归轿车领域的全新车型——D7 正式亮相。新车将推出纯电和插混的版本。 一、内饰实拍 内饰方面,这也是荣威 D7 的首次开门。可以看到,荣威 D7 将采用类似三联屏的设计,实际采用的是双 12.3 英寸液晶屏。…

linux 多重启动grub2详解

https://www.gnu.org/software/grub/manual/grub/grub.pdf

Revit SDK 介绍:ManipulateForm 体量族的修改

前言 这个例子介绍体量族的修改。包含了创建体量,用API 移动体量族的顶点、边、轮廓(面)。 内容 效果分步骤展示。 整理: 核心逻辑 创建拉伸体 m_revitDoc.FamilyCreate.NewLoftForm(true, profiles)增加一个截面 form.Add…

解释一下Kubernetes Minikube是什么,以及如何在本地运行一个Minikube集群

文章目录 步骤1:准备环境步骤2:安装和配置Minikube步骤3:验证集群状态步骤4:部署一个示例应用创建一个Deployment部署应用检查部署 步骤5:访问应用获取Minikube IP地址:获取Service的NodePort: …

SEO百度优化基础知识全解析(了解百度SEO标签作用)

百度SEO优化的作用介绍: 百度SEO优化是指通过对网站的内部结构、外部链接、内容质量、用户体验等方面进行优化,提升网站在百度搜索结果中的排名,从而提高网站的曝光率和流量。通过百度SEO优化,可以让更多的潜在用户找到你的网站&…

提升 Markdown 文档协作:Let‘s Markdown介绍与部署

在当今数字化的世界中,我们经常需要分享文本和文档。Markdown 是一种流行的轻量级标记语言,用于格式化文本和创建文档。但是,有时在不同的平台和编辑器之间共享和处理 Markdown 文档可能会带来一些麻烦。为了解决这些问题,诞生了 …

21 Spring Boot整合Redis

一、Redis简介 简单来说 Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。 另外,Redis 除…

第5篇 vue的通信框架axios和ui框架-element-ui以及node.js

一 axios的使用 1.1 介绍以及作用 axios是独立于vue的一个项目,基于promise用于浏览器和node.js的http客户端。 在浏览器中可以帮助我们完成 ajax请求的发送在node.js中可以向远程接口发送请求 1.2 案例 二 element-ui组件 1.1 ui组件库 element-ui 是饿了么…

Unity 之 使用定时调用与Update 正常帧更新的运行答疑

文章目录 疑惑代码辨析具体解释 疑惑 就是说,当我们在Start 函数里面定义了一个InvokeRepeating 函数,那么我们又在Update 定义了一个基本操作,想联合控制物体一个往返的一个运动时,我们应该怎么办? 就是说系统是怎么…

【2023数学建模国赛】A题定日镜场的优化设计模型建立

2023年全国大学生数学建模竞赛A题定日镜场的优化设计,目前已写出第四版国赛A题思路和模型详细公式,目录如下: 一、 问题重述... 1 二、 问题分析... 1 三、 模型假设... 6 四、 问题一模型的建立和求解... 6 4.1 定日镜场坐标系的建立...…

安全测试 —— 你了解WEB安全测试吗?

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…

UG\NX二次开发 已知3x3矩阵分别求XYZ方向 UF_MTX3_x_vec、UF_MTX3_y_vec、UF_MTX3_z_vec

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介: UG\NX二次开发 已知3x3矩阵分别求XYZ方向 UF_MTX3_x_vec、UF_MTX3_y_vec、UF_MTX3_z_vec 效果: 代码: #include "me.hpp"void ufusr(char* param,…

我眼中的《视觉测量技术基础》

为什么会写这篇博客: 首先给大家说几点:看我的自我介绍对于学习这本书没有任何帮助,如果你是为了急切的想找一个视觉测量的解决方案那可以跳过自我介绍往下看或者换一篇博客看看,如果你是刚入门想学习计算机视觉的同学&#xff0…

YOLOv8 目标检测及图片裁剪

前言 之前我们已经训练了识别是否佩戴口罩的模型文件,可以有效识别人群是否口罩,本文将会讲解如何将识别到的目标裁剪出来 目标识别 需要指定 save_txtTrue,保存数据标注文件 txt yolo predict modelruns/detect/train26/weights/best.pt…

一文带你快速入门『YOLOv8』

前言 本文是 YOLOv8 入门指南(大佬请绕过),将会详细讲解安装,配置,训练,验证,预测等过程 YOLOv8 官网:ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONN…

AjaxJavaScriptcss模仿百度一下模糊查询功能

1、效果 如下图所示,我们在输入大学时,程序会到后端查询名字中包含大学的数据,并展示到前端页面。 用户选择一个大学,该大学值会被赋值到input表单,同时关闭下拉表单; 当页面展示的数据都不符合条件时&…

华为云云耀云服务器L实例评测|基于云服务器的minio部署手册

华为云云耀云服务器L实例评测|基于云服务器的minio部署手册 【软件安装版本】【集群安装(是)(否)】 版本 创建人 修改人 创建时间 备注 1.0 jz jz 2023.9.2 minio华为云耀服务器 一. 部署规划与架…