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. Linq 实现sql中的not in和in条件查询

    T-SQL的IN: Select ProductID, ProductName, CategoryID From dbo.Products Where CategoryID in (1, 2) T-S ...

  2. grunt之connect、watch

    先说下这两个插件配合的用处,简单的说,它们可以拯救你的F5.connect用于建立一个静态服务器,watch监听文件的修改并自动实时刷新浏览器的页面. 还是options走起. connect(V0. ...

  3. JSP小记

    0.配置servlet的模板 1.找Jar文件:\Common\plugins (myeclipse.ini文件中查看) * com.genuitec.eclipse.wizards*.jar 2.找 ...

  4. win8下安装VC6出现兼容性问题的解决办法

    重装系统之后(win8的系统),发现VC6安装出现兼容性问题,花了一些时间解决,有出现的问题都差不多在下面链接的总结中,写的很详细: http://www.docin.com/p-1126120829 ...

  5. 201521123122 《java程序设计》第七周学习总结

    201521123122 <java程序设计>第七周实验总结 1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 ArrayList代码分析 1.1 ...

  6. 201521123051《java程序设计》 第五周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 使用工具:XMind 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.ja ...

  7. 201521123010 《Java程序设计》第4周学习总结

    1.本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 这周上课主要学了继承,在打代码的时候对各个关键字(除了super关键字)的用法有一点混乱.对多 ...

  8. Java多态总结

    面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 1.定义: 多态:指允许不同类的对象对同一消息做出响应.即同一消息可 ...

  9. Java-高效地使用Exception-实践

    注:本文翻译自Exceptional practices,共分为3节.该文章从实践的角度非常透彻地解释了为什么要处理异常,以及如何处理异常.这些都是那些只会介绍trycatchfinally语法的教材 ...

  10. Java课程设计 学生基本信息管理系统 团队博客

    学生基本信息管理系统团队博客 项目git地址 https://git.oschina.net/Java_goddess/kechengsheji 项目git提交记录截图 项目功能架构图与主要功能流程图 ...