IPSec协议定义

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

IPsec 对数据进行加密的方式

加密模式 加密特点
传输模式 只是对 IP 协议的数据部分 (payload) 进行了加密
隧道模式 对整个 IP 分组进行加密

ESP协议定义(封装安全载荷)

Encapsulating Security Payloads (ESP) 协议能够在数据的传输过程

中对数据进行完整性度量来源认证以及密,也可以防止回放攻击。

SA 安全联(SecurityAssociation)

安全联盟(Security Association)是IPSec对等体之间对某些要素的约定。例如,使用哪种协议(AH、ESP还是两者结合使用)、协议的封装模式(传输模式和隧道模式)、密码算法(DES和3DES)、特定数据流中保护数据的共享密钥以及密钥的生存周期等。

ESP报文装包过程

1. 在原 IP 报文末尾添加 ESP trailer (尾部/挂载) 信息

ESP trailer 包含三部分。由于所选加密算法可能是块加密,当最后一块长度不足时就需要填充 (padding),附上填充长度 (Padlength) 方便解包时顺利找出用来填充的那一段数据。Next header用来标明被封装的原报文的协议类型

2.将原 IP 数据报文以及第1步得到的 ESP trailer 作为一个整体进行加密封装。

具体的加密算法与密钥由 SA 给出, 注意这里是数据报文 所以图片有一些问题, 只要包括ip数据 也就是original IP datagram payload 而不要报文头一起加密

3.为第2步得到的加密数据添加 ESP header。ESP header由 SPI 和Seq 两部分组成

加密数据与 ESP header 合称为 “enchilada”,构成认证部分。注意到被封装的原报文的协议类型受到保护,没有在 ESP header 给出,而由加密的 ESP trailer 的 Next header声明

4. 附加完整性度量结果 (ICV,Integrity check value)

对第3步得到的 “enchilada” 认证部分做摘要,得到一个32位整数倍的完整性度量值,并附在 ESP 报文的尾部。完整性度量算法包括验证密钥由 SA 给出。

5.加上新的 IP header 构成 IPsec 报文

新构造的 IP header 附在ESP 报文的前面组成一个新的 IP 报文。注意这个新的 IP header的 IP 地址由路由器和安全网关解释,可以和原报文 (由主机创建的 IP 地址) 不同。协议类型为50,说明它封装的是一个 ESP报文。

ESP报文拆包过程

1. 收到报文后查看协议类型, 发现是ESP报文

2. 查看ESPheader 获取对应的加密模式和安全规范

3. 计算enchilada 与ICV对比,验证数据完整性

4. 检测Seq顺序号, 不能是回放攻击

5.根据SA提供的加密算法和密钥,解密数据,得到原IP数据和 ESP trailer

6.根据 ESP trailer的填充长度, 删去填充部分

7. 根据IP地址进行转发或者传入上一层

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报文的装包和拆包过程

    原创文章,拒绝转载 装包过程 总体流程图 过程描述 在原IP报文中找到TCP报文部分,在其后添加相应的ESP trailer信息. ESP trailer 包含三部分:Padding,Pad leng ...

  4. Windows下安装mysql(非安装包)

    Windows下安装mysql(非安装包) 参考:https://www.cnblogs.com/yunlongaimeng/p/12558638.html 1.下载MYSQL(慢的话可以用迅雷,或其 ...

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

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

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

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

  7. Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程

    Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程   在新的Ubuntu 64位系统下去编译早期的安卓源码是会出现很多问题的,因为64位系统在安装完成后,很多32位的兼容 ...

  8. 在linux下用tomcat部署java web项目的过程与注意事项

    在linux下用tomcat部署java web项目的过程与注意事项 一.安装JDK 到http://www.oracle.com/technetwork/java/javase/downloads/ ...

  9. 详解Linux下swig 3.0.12的手动安装过程

    详解Linux下swig 3.0.12的手动安装过程 首先 从http://www.linuxfromscratch.org/blfs/view/cvs/general/swig.html上下载swi ...

随机推荐

  1. 更优雅的在 Xunit 中使用依赖注入

    Xunit.DependencyInjection 7.0 发布了 Intro 上次我们已经介绍过一次大师的 Xunit.DependencyInjection https://www.cnblogs ...

  2. OSCP Learning Notes - File Transfers(2)

    Metasploit Target Server: Kioptrix Level 1 (1) Start the Metasploit on Kali Linux. (2) Set the modul ...

  3. win7下建立docker共享文件夹

    前言 建立本机(win7)和VirtualBox中docker虚拟机的共享文件夹,注:下面的命令都是以root身份运行的,使用sudo -i切换到root身份,如无法切换,请自行在命令前加上sudo命 ...

  4. Azure Traffic Manager(二) 基于权重与基于优先级的路由策略为我们的Web项目提供负载均衡

    一,引言 上一片文章我们使用 Azure Traffic Manager 分发用户请求,同时演示了两种路由策略,“Performance”,“Geographic”的两种方式,今天我们继续讲解 Tra ...

  5. abp vnext 开发快速入门 1 认识框架

    最近在做一个项目,用的框架是Abp vnext ,不是Abp, 我自己也是刚开始用这个框架来做项目,难免要查资料,这个框架官方有中文文档,可以到官网www.abp.io 去查看,国内也有一些写了相关的 ...

  6. Java基础之java8新特性(1)Lambda

    一.接口的默认方法.static方法.default方法. 1.接口的默认方法 在Java8之前,Java中接口里面的默认方法都是public abstract 修饰的抽象方法,抽象方法并没有方法实体 ...

  7. 一个使用android相机的例子,二维码必须用相机

    https://blog.csdn.net/feiduclear_up/article/details/51968975

  8. 如何查看Oracle的版本

    本人使用的软件是DataGrip 在控制台输入 select * from v$version;

  9. python入门神书!|python编程从入门到实践|内附网盘链接带提取码|

    点击此处进入网盘下载地址 提取码:o39n 全书共有20章,书中的简介如下: 本书旨在让你尽快学会 Python ,以便能够编写能正确运行的程序 —— 游戏.数据可视化和 Web 应用程序,同时掌握让 ...

  10. Python while 循环中使用 else 语句

    Python while 循环中使用 else 语句: else:表示 while 中的语句正常执行完,然后执行 else 语句的部分. 示例: # while 判断条件: # 一行语句 或 多行语句 ...