IPSec协议:IPsec将IP数据包的内容先加密再传输,即便中途被截获,由于缺乏解密数据包所必要的密钥,攻击者也无法获取里面的内容。

传输模式和隧道模式:IPsec对数据进行加密的方式有两种:传输模式和隧道模式。传输模式只是对IP协议的数据部分(payload)进行了加密,而隧道模式则是对整个IP数据包进行加密,就好像整个IP数据包在一个安全的隧道里传输一样

ESP:Encapsulating Security Payloads,封装安全载荷协议,IPsec所支持的两类协议中的一种。该协议能够在数据的传输过程中对数据进行完整性度量,来源认证以及加密,也可以防止回放攻击。另一种协议是AH(Authentication
Headers)认证头协议

SA:SecurityAssociations,安全关联。SA是IPsec的重要概念,可以理解为被IPsec保护的某个连接的唯一标示。SA是单向的,即在一次安全的通信中,通信的两个方向(发送和接收)各需要创建一个SA。一个SA会包含很多的信息,而所有的SA都被存放在一个数据库中,称为SAD。

SD: Security Associations Database,安全关联数据库。每一个SA在SAD中都会有一个与之对应的条目
。一个SAD条目包含的内容有:顺序号计数器,顺序号溢出计数器,防回放窗口,SA有效期,AH协议中所使用的算法以及密钥,ESP协议用于认证以及完整性度量的算法,ESP协议用于加密数据的算法以及密钥,IPsec运行的模式以及两个通信设备间的传送数据包大小的最大上限。

通常一个SA可以由目的地址,IPsec所采用的协议(AH或ESP)和SPI来唯一确定。

SPI: Security Parameter Index,安全参数索引。用于将收到的IPsec数据包与其对应的SA
进行关联。

IPsec AH和ESP协议下报文封装后的结构:(注意:省略了mac部分)

IPsec ESP报文(传输模式)

装包过程:

1、在原IP报⽂文(包含IP、IP
Datagram三部分)的末尾添加尾部(ESP Trailer)信息,
! 尾部包含三部分。由所选加密算法可能是块加密,那 么当最后⼀一块⻓长度不够时就需要进⾏行填充(padding),附上填充⻓长
度(Pad length)⽅方便解包时顺利找出⽤用来填充的那⼀一段数据。⽽而Next header则⽤用来标明被加密的数据报⽂文的类型,例如TCP

2、将IP Datagram部分以及第1步得到的ESP
Trailer作为整体进⾏行加密,具体的加密算法与密钥由SA给出。

3、在第2步得到的加密数据添加ESP
Header。ESP Header由两部分组成:SPI和 序号(Sequence
number)。ESP Header位于IP之后。

4、将ESP Header和第2步得到的加密数据做⼀一个摘要,得到⼀一个完整性度量值(ESPMessage
Authentication Code),并添加到ESP报⽂文的尾部。这样就得到了⼀一个完整的ESP数据报⽂文。

拆包过程:

1、接收⽅方收到数据报⽂文后,对除IP和ESP
Message Authentication Code的部分计算摘要与ESP MAC进⾏行⽐比较,验证数据的完整性。假如⽐比对不同,可以断定所收到的报⽂文已经经过篡改了。
2、查看ESP Header,通过⾥里⾯面的SPI得到数据报⽂文所对应的SA;检查序列号,保证数据不是回放攻击。

3、根据SA所提供的加密算法与密钥,解密被加密算法加密过的部分(IP
Datagram、ESPTrailer)。
4、根据ESP Trailer⾥里的填充⻓长度信息,可以找出填充字段的字段,删去后就能得到完整地IP
Datagram

IPsec ESP报文(隧道模式)


装包过程:

1. 在原IP报文末尾添加尾部(ESP trailer)信息。如上图所示,尾部包含三部分。由所选加密算法可能是块加密,那么当最后一块长度不够时就需要进行填充(padding),附上填充长度(Pad
length)方便解包时顺利找出用来填充的那一段数据。而Next header则用来标明被加密的数据报文的类型,例如TCP。

2. 将原IP报文以及第1步得到的ESP尾部作为一个整体进行加密。具体的加密算法与密钥由SA给出。

3. 为第2步得到的加密数据添加ESP头部。如上图所示,ESP头由两部分组成,SPI和序号(Sequence
number)。加密数据与ESP头合称为“enchilada”。

4. 附加完整性度量结果(ICV,Integrity check
value)。对第三步得到的“enchilada”做摘要,得到一个完整性度量值,并附在ESP报文

的尾部。
5. 加上新的IP头。新构造的IP头附在ESP报文的前面组成一个新的IP报文。注意这个新的IP头的目的地址跟源地址可以不一样。协议类型为50,说明它里面装的是一个IPsec报文。

拆包过程:

1. 接收方收到数据报文后,发现协议类型是50,故知道这是一个IPsec包。首先查看ESP头,通过里面的SPI决定数据报文所对应的SA。

2. 计算“enchilada”部分的摘要,与附在末尾的ICV做对比,如果一样的话说明数据是完整的。否则可以断定所收到的报文已经不是原来的报文了。

3.检查Seq里的顺序号,保证数据是“新鲜”的。

4.根据SA所提供的加密算法和密钥,解密被加密过的数据,即“enchilada”。得到原IP报文与ESP尾部(trailer)。

5. 根据ESP尾部里的填充长度信息,我们可以找出填充字段的长度,删去后就得到原来的IP报文。

6. 最后根据得到的原IP包的目的地址来进行转发。

IPSec协议的更多相关文章

  1. ipsec协议(转)

    from:http://lulu1101.blog.51cto.com/4455468/816875 ipsec协议 2012-03-25 23:40:28 标签:休闲 ipsec协议 职场 IPSe ...

  2. IPSec协议框架

    文章目录 1. IPSec简介 1.1 起源 1.2 定义 1.3 受益 2. IPSec原理描述 2.1 IPSec协议框架 2.1.1 安全联盟 2.1.2 安全协议 报文头结构 2.1.3 封装 ...

  3. IPsec协议簇简析

    简介 IPsec协议簇是应用在网络层上的,来保护IP数据报的一组网络传输协议的集合.它是IETF(Internet Engineering Task Force)制定的一系列协议,它为IP数据报提供了 ...

  4. IPSec协议;IPv6为何增加对IPSec协议的支持

      IPSec由一系列的协议组成,除IP层的协议完全结构外,还包括了AH.ESP.ISAKMP.ISAKMP的因特网IP安全解释域.IKE.OAKLEY密钥协议确定等.ESP和AH定义协议.载荷头的格 ...

  5. 安全协议系列(五)---- IKE 与 IPSec(中)

    在上一篇中,搭建好了实验环境.完整运行一次 IKE/IPSec 协议,收集相关的输出及抓包,就可以进行协议分析.分析过程中,我们将使用 IKE 进程的屏幕输出和 Wireshark 抓包,结合相关 R ...

  6. [crypto][ipsec] 简述ESP协议的sequence number机制

    预备 首先提及一个概念叫重放攻击,对应的机制叫做:anti-replay https://en.wikipedia.org/wiki/Anti-replay IPsec协议的anti-replay特性 ...

  7. 网络安全协议之IPsec

    声明 本文仅发表在博客园,作者LightningStar. 简介[1] IPSec(Internet 协议安全)是一个工业标准网络安全协议,工作在OSI模型的第三层,即网络层,为IP网络通信提供透明的 ...

  8. IPsec 学习笔记

    工作中需要,参考网上的资料对IPSecVPN进行学习,并通过博客记录下一些知识点作为学习记录和后续复习的材料. Transport Layer (TLS) 其中主要参考了以下文档: http://ww ...

  9. RFC(请求注解)--各种协议-标准

    转自:http://blog.sina.com.cn/s/blog_65d6476a0101cj8n.html RFC(Request For Comments)-意即“请求注解”,包含了关于Inte ...

随机推荐

  1. String.equals()方法

    public boolean equals(Object anObject) {     if (this == anObject) {         return true;     }      ...

  2. 学习Python Day1

    学习PythonDay1,主要是学习了循环,while循环,for循环:while循环加if.else以及elif,for循环嵌套for循环:break,终止循环,continue跳出循环:for i ...

  3. mysql时间戳的获取

    时间戳函数:current_timestamp() 在此位置添加时间戳函数. 然后整体的写法就是下图这样: 根据当前时间戳更新有没有打钩将决定你的时间是什么时间(一个是数据完成写入的时间,一个时间戳回 ...

  4. 【★】IT界8大恐怖预言

    IT界的8大恐怖预言 本文字数:3276 建议阅读时间:你开心就好 第三次科技革命已经进入白热化阶段---信息技术革命作为其中最主要的一环已经奠定了其基本格局和趋势.OK大势已定,根据目前的形势,小编 ...

  5. MySQL中char与varchar区别,varchar最大长度是多少?

    一.首先来说下字符与字节的区别: 字符与字节它们完全不是一个位面的概念,所以两者之间没有"区别"这一说法.在不同编码里,字符和字节的对应关系是不同的.一般来说,半角英文状态下一个字 ...

  6. 团队作业4——第一次项目冲刺(Alpha版本)2st day

    一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 界面 1.四个用户登录界面已经完成. 2.界面内的功能完成了一小部分. 登陆部分 1.QQ授权已经申请,还未通过. 2.通过好 ...

  7. 201521123007《Java程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1. clone方法 1.1 Object ...

  8. 自定义win8资源管理器左侧导航窗格的方法

    Win8自定义资源管理器左侧导航窗格: 快捷键Win+R – 输入regedit: 删除“网络”项目 HKEY_CLASSES_ROOTCLSID{F02C1A0D-BE21-4350-88B0-73 ...

  9. 201521123104 《Java程序设计》 第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  10. Markdown编辑后

    一个例子: 例子开始 1. 本章学习总结 今天主要学习了三个知识点 封装 继承 多态 2. 书面作业 Q1. java HelloWorld命令中,HelloWorld这个参数是什么含义? 今天学了一 ...