IPSec 传输模式下ESP报文的装包与拆包过程 - 择日而终的博客
一、IPsec简介
IPSec ( IP Security )是IETF(Internet Engineering Task Force,Internet工程任务组)的IPSec小组建立的一组IP安全协议集。IPSec定义了在网络层使用的安全服务,其功能包括数据加密、对网络单元的访问控制、数据源地址验证、数据完整性检查和防止重放攻击。
IPSec是安全联网的长期方向。它通过端对端的安全性来提供主动的保护以防止专用网络与 Internet 的攻击。在通信中,只有发送方和接收方才是唯一必须了解 IPSec 保护的计算机。在 Windows XP 和 Windows Server 2003 家族中,IPSec 提供了一种能力,以保护工作组、局域网计算机、域客户端和服务器、分支机构(物理上为远程机构)、Extranet 以及漫游客户端之间的通信。
二、ESP简介
IPsec 封装安全负载(IPsec ESP)是 IPsec 体系结构中的一种主要协议,其主要设计来在 IPv4 和 IPv6 中提供安全服务的混合应用。IPsec ESP 通过加密需要保护的数据以及在 IPsec ESP 的数据部分放置这些加密的数据来提供机密性和完整性。且ESP加密采用的是对称密钥加密算法,能够提供无连接的数据完整性验证、数据来源验证和抗重放攻击服务。根据用户安全要求,这个机制既可以用于加密一个传输层的段(如:TCP、UDP、ICMP、IGMP),也可以用于加密一整个的 IP 数据报。封装受保护数据是非常必要的,这样就可以为整个原始数据报提供机密性。ESP提供机密性、数据起源验证、无连接的完整性、抗重播服务和有限业务流机密性。该协议能够在数据的传输过程中对数据进行完整性度量,来源认证以及加密,也可以防止回放攻击。
传输模式是IPSec工作的两种方式之一。与隧道模式不同的是,保护的仅仅是真正传输的数据,而不是整个IP报文。在处理的方法上,原来的IP报文会先被解开,再在数据前加上新的ESP或AH协议头,最后再装回原来的IP头中,即原来的IP包被修改过再传输了。
三、传输模式下ESP报文的装包与拆包过程
在传输模式下的IPSec ESP报文的结构图如下:
大专栏 IPSec 传输模式下ESP报文的装包与拆包过程 - 择日而终的博客/cloudgoinout/ipsec1.png" alt="这里写图片描述"/>
装包过程:
1.在原IP报文末尾添加尾部(ESP trailer)。尾部信息如图所示,包含三部分。由于所选加密算法可能是块加密,当最后一块长度不够时,需要进行补充(padding)。且需要附上填充长度(Pad length)来方便解包时顺利找出用来填充的那一段数据。而Next header则用来表明被加密的数据报文的类型。
2.将原数据报文和刚添加的ESP尾部信息作为一个整体进行加密,具体的加密算法由密钥和SA给出。
3.在第2步得到的加密数据前添加ESP Header。ESP Header由SPI和序号(Sequence number)两部分组成。加密数据与ESP头合称为”enchilada”。
4.附加完整性度量结果(ICV, Integrity check value)。对第三步得到的”enchilada”做摘要,得到一个完整性度量值,并附在ESP报文的尾部。
5.将原IP头放回到第4步后形成的报文的头部前,组织成一个新的IP报文。
拆包过程:
1.接收方收到数据报文后,发现协议类型是50,知道这是一个IPSec包。首先查看ESP头,通过里面的SPI决定数据报文所对应的SA。
2.计算”enchilada”部分的摘要,与附在末尾的ICV做对比,如果一样,说明数据完整;否则断定收到的报文已经不是原来的报文了。
3.检查Seq里的顺序号,保证数据是”新鲜”的,不是回放攻击。
4.根据SA所提供的加密算法和密钥,解密被加密过的数据 ”enchilada”。得到原IP报文的数据部分和ESP尾部(trailer)。
5.根据ESP尾部的填充长度信息,可以找出填充字段的长度,删去后就得到原来的IP报文。
6.根据获取的原IP包目标地址进行转发。
IPSec 传输模式下ESP报文的装包与拆包过程 - 择日而终的博客的更多相关文章
- IPsec传输模式下ESP报文的装包和拆包过程
原创文章,拒绝转载 装包过程 总体流程图 过程描述 在原IP报文中找到TCP报文部分,在其后添加相应的ESP trailer信息. ESP trailer 包含三部分:Padding,Pad leng ...
- IPSec传输模式/隧道模式下ESP报文的装包与拆包过程
IPSec协议:IPsec将IP数据包的内容先加密再传输,即便中途被截获,由于缺乏解密数据包所必要的密钥,攻击者也无法获取里面的内容. 传输模式和隧道模式:IPsec对数据进行加密的方式有两种:传输模 ...
- IPSec传输模式下的ESP报文的装包和拆包过程
IPSec协议定义 IPsec将IP数据包的内容在装包过程在网络层先加密再传输,即便中途被截获,由于缺乏解密数据包所必要的密钥,攻击者也无法获取里面的内容. IPsec 对数据进行加密的方式 加密模式 ...
- python 下划线的使用(转载:安生犹梦 新浪博客)
Python 用下划线作为变量前缀和后缀指定特殊变量. _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核 ...
- PHP----------linux下如何安装redis扩展。安装redis可以在我的博客redis里面寻找。
1.扩展下载地址:wget https://github.com/phpredis/phpredis/archive/develop.zip 2.下载完了以后解压压缩包 解压以后切换到 cd phpr ...
- Mac OS平台下应用程序安装包制作工具Packages的使用介绍
一.介绍 Windows下面开发好的应用程序要进行分发时有很多打包工具可供选择,如Inno Setup, InstallShield, NSIS, Advanced Installer, Qt Ins ...
- 【Xamarin挖墙脚系列:时刻下载最新的Mac环境下的Xamarin安装包】
原文:[Xamarin挖墙脚系列:时刻下载最新的Mac环境下的Xamarin安装包] 打开这两个地址,就能看到最新的安装包了.... http://www.jianshu.com/p/c67c14b3 ...
- Mac OS平台下应用程序安装包制作工具Packages的使用介绍(补充)
上一篇:Mac OS平台下应用程序安装包制作工具Packages的使用介绍 补充说明 上一篇文章中介绍了如何使用Packages如何创建mac下的安装包.但是这样制作出来的安装包只能安装到系统的文件路 ...
- Linux下Tomcat,mysql安装包及教程整合,
前段时间孔老师给了一个虚拟机,自己瞎捣鼓,装了Tomcat和mysql,捣鼓了好几天,把一些安装包和试过还不错的博客整理出来: 老师给的已经装好了Linux系统和JDK. Tomcat9安装包 ...
随机推荐
- 了解SSL证书从HTTPS开始 开发者绕不开的“劫”
微信小程序上线已经有很长一段时间了,而开发者在接入小程序的过程中,会遇到一些问题,例如小程序要求必须通过HTTPS完成服务端通信,开发者需搭建HTTPS服务,进行 SSL 证书申请.部署,完成HTTP ...
- dynamic用法
https://www.cnblogs.com/lgx5/p/9650203.html https://www.cnblogs.com/gygtech/p/9915367.html
- [USACO09DEC]晕牛Dizzy Cows (拓扑排序)
https://www.luogu.org/problem/P2017 题目背景 Hzwer 神犇最近又征服了一个国家,然后接下来却也遇见了一个难题. 题目描述 The cows have taken ...
- 使用mui框架开发App,当input获取焦点时,键盘弹出,底部导航栏上升。
转自 https://blog.csdn.net/elementFei/article/details/72917393 感谢 问题: 使用mui框架开发App,当input获取焦点时,键盘弹出,底部 ...
- jQuery性能优化与技巧
1.使用最新版本的jQuery类库 jQuery的每一个新的版本都会较上一版进行Bug修复和一些优化,同时也会包含一些创新,所以建议使用最新版本的jQuery来提高性能,需要注意的是在更换版本之后,要 ...
- Linux下实现与Internet时间同步
一.Linux下实现与Internet时间同步 1.安装ntp [root@server-2 ~]# yum install -y ntpdate 2.同步时间 // 方式一.使用域名连接,要经过DN ...
- 依赖注入&控制反转
IoC——Inversion of Control 控制反转DI——Dependency Injection 依赖注入 要想理解上面两个概念,就必须搞清楚如下的问题: 参与者都有谁? 依赖:谁依 ...
- [LC] 76. Minimum Window Substring
Given a string S and a string T, find the minimum window in S which will contain all the characters ...
- CAS 5.3.x 相关信息
CAS 5.3.x 相关信息 单点登录系统 学习网站: https://www.apereo.org/projects/cas 官方网站 https://github.com/apereo/cas-o ...
- JVM简述
JVM的东西太多了,我们刚开始学java的时候,就会接触堆.栈,还有方法区,因为我们要知道new出来的对象放在哪里,局部变量放在哪里,static修饰的变量放在哪里. 我从网上截一个图: 这里有三大部 ...