原创文章,拒绝转载

装包过程

总体流程图

过程描述

  1. 在原IP报文中找到TCP报文部分,在其后添加相应的ESP trailer信息。
  • ESP trailer 包含三部分:Padding,Pad length 和 Next header。Padding 即使用块加密时,最后一个数据块长度不足时所做的填充。Pad length 指填充的长度,方便拆包时找到用来填充的数据段。Next header 标明被封装的原报文的协议类型,例如 6 = TCP。
  1. 将原 TCP 报文和第1步得到的 ESP trailer 作为一个整体进行加密封装。具体的加密算法和密钥由SA给出。
  2. 为第2步得到的密文添加 ESP 头。ESP 头由 SPI (Security Parameter Index) 和 Seq # 两部分组成。密文和 ESP头合起来称为"enchilada",构成认证部分。
  3. 附加完整性度量结果(ICV)。对第3步生成的"enchilada"认证部分做摘要(ESP Authentication Data),得到一个32位整数倍的 ICV,附在"enchilada"之后。ICV 生成算法和验证密钥由 SA 给出。
  4. 将原始的 IP 报文头中的协议号改为50(代表 ESP),然后将 IP 报文头加到第4步的结果之前构成 IPsec 报文。

装包前后示意图

拆包过程

过程描述

  1. 接收方收到 IP 报文后,发现协议类型是50,标明这是一个 ESP 包。首先查看 ESP 头,通过安全参数索引号 SPI 决定数据报文所对应的 SA,获得对应的模式(隧道或传输模式)以及安全规范。
  2. 根据 SA 指定的摘要算法和验证密钥计算"enchilada"的摘要值,与附在 IP 报文最后的 ICV 进行对比,二者相同则数据完整性未被破坏。
  3. 检查 ESP 头中的 Seq # 里的序列号,保证数据是新的,避免重放攻击。
  4. 根据 SA 所指定的加密算法和密钥,解密密文段,得到原来的 TCP 报文和 ESP trailer。
  5. 根据 ESP trailer 的填充长度信息,找出填充字段的长度,删除填充字段得到原来的 TCP 报文。
  6. 根据 TCP 报文头信息将报文交付给传输层。

IPsec传输模式下ESP报文的装包和拆包过程的更多相关文章

  1. IPSec 传输模式下ESP报文的装包与拆包过程 - 择日而终的博客

    一.IPsec简介 IPSec ( IP Security )是IETF(Internet Engineering Task Force,Internet工程任务组)的IPSec小组建立的一组IP安全 ...

  2. IPSec传输模式/隧道模式下ESP报文的装包与拆包过程

    IPSec协议:IPsec将IP数据包的内容先加密再传输,即便中途被截获,由于缺乏解密数据包所必要的密钥,攻击者也无法获取里面的内容. 传输模式和隧道模式:IPsec对数据进行加密的方式有两种:传输模 ...

  3. IPSec传输模式下的ESP报文的装包和拆包过程

    IPSec协议定义 IPsec将IP数据包的内容在装包过程在网络层先加密再传输,即便中途被截获,由于缺乏解密数据包所必要的密钥,攻击者也无法获取里面的内容. IPsec 对数据进行加密的方式 加密模式 ...

  4. 【Xamarin挖墙脚系列:时刻下载最新的Mac环境下的Xamarin安装包】

    原文:[Xamarin挖墙脚系列:时刻下载最新的Mac环境下的Xamarin安装包] 打开这两个地址,就能看到最新的安装包了.... http://www.jianshu.com/p/c67c14b3 ...

  5. Mac OS平台下应用程序安装包制作工具Packages的使用介绍(补充)

    上一篇:Mac OS平台下应用程序安装包制作工具Packages的使用介绍 补充说明 上一篇文章中介绍了如何使用Packages如何创建mac下的安装包.但是这样制作出来的安装包只能安装到系统的文件路 ...

  6. Linux下Tomcat,mysql安装包及教程整合,

      前段时间孔老师给了一个虚拟机,自己瞎捣鼓,装了Tomcat和mysql,捣鼓了好几天,把一些安装包和试过还不错的博客整理出来:  老师给的已经装好了Linux系统和JDK. Tomcat9安装包 ...

  7. 绝对干货:自定义msi安装包的执行过程

    有时候我们需要在程序中执行另一个程序的安装,这就需要我们去自定义msi安装包的执行过程. 比如我要做一个安装管理程序,可以根据用户的选择安装不同的子产品.当用户选择了三个产品时,如果分别显示这三个产品 ...

  8. 自定义msi安装包的执行过程

    有时候我们需要在程序中执行另一个程序的安装,这就需要我们去自定义msi安装包的执行过程. 比如我要做一个安装管理程序,可以根据用户的选择安装不同的子产品.当用户选择了三个产品时,如果分别显示这三个产品 ...

  9. python中的装包与拆包

    python中的装包与拆包 *args和 **kwargs是在python的代码中经常用到的两个参数,初学者对这两个参数的理解可能仅仅限于*args是用于接收多余的未命名参数,**kwargs用于接收 ...

随机推荐

  1. 关于Vue脚手架写法的问题

    问题描述: main.js import Vue from 'vue' import App from './App' /* eslint-disable no-new */ new Vue({ el ...

  2. jmeter+ant的使用

    1.安装ant 下载ant,解压到某盘 2.配置环境变量: 变量名称 变量值 备注 ANT_HOME F:\apache-ant-1.10.3 Ant的解压路径 Path %ANT_HOME%\bin ...

  3. 今日Linux

    一.复习了vi 三个模式下的一些操作.贴上一些比较常用,个人觉得比较难记的操作.1.一般模式:h  光标向左移动一个字符j   光标向下移动一个字符K  光标向上移动一个字符l    光标向右移动一个 ...

  4. 学习bash——环境配置

    一.环境配置文件的重要性 Bash在启动时直接读取这些配置文件,以规划好bash的操作环境. 即使注销bash,我们的设置仍然保存. 二.login shell 通过完整的登录流程取得的bash,称为 ...

  5. eclipse mylyn.tasks.ui

    sudo rm workspace/.metadata/.lock ./Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse -clean - ...

  6. 软工实践 - 第二十一次作业 BETA 版冲刺前准备

    软工 · BETA 版冲刺前准备(团队) 过去存在的问题 组员之间缺乏沟通,前后端缺乏沟通协作 组员积极性不高 基础知识不够扎实 手动整合代码效率过低 我们已经做了哪些调整/改进 通过会议加强组员之间 ...

  7. [剑指Offer] 23.二叉搜索树的后序遍历

    [思路]BST的后序序列的合法序列是,对于一个序列S,最后一个元素是x (也就是根),如果去掉最后一个元素的序列为T,那么T满足:T可以分成两段,前一段(左子树)小于x,后一段(右子树)大于x,且这两 ...

  8. Intellij IDEA将工程打包成jar包并执行

    打开File -> Project Structure -> Artifacts 点击“+”,选择“Jar”,选择Empty或From modules with dependencies, ...

  9. viterbi维特比算法和隐马尔可夫模型(HMM)

    隐马尔可夫模型(HMM) 原文地址:http://www.cnblogs.com/jacklu/p/7753471.html 本文结合了王晓刚老师的ENGG 5202 Pattern Recognit ...

  10. Python之利用reduce函数求序列的最值及排序

    在一般将Python的reduce函数的例子中,通常都是拿列表求和来作为例子.那么,是否还有其他例子呢?   本次分享将讲述如何利用Python中的reduce函数对序列求最值以及排序.   我们用r ...