6

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

 3 years ago
source link: http://abcdxyzk.github.io/blog/2021/06/15/net-ipsec-esp2/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

2021-06-15 21:56:00

https://blog.csdn.net/tl437002770/article/details/51107399

IPSec是一种端到端的确保IP层通信安全的体制,IPSec不是一个单独的协议,而是一组协议,如图1所示,IPSec安全体系主要包含了3种协议ESP、AH、IKE,1个安全联盟SA和一些加密和认证的算法。

AH(Authentication Header):提供数据完整性验证,通过Hash实现;数据源身份认证,在计算验证码时加入共享密钥;防止重放攻击,AH包头的序列号可防止重放攻击。

ESP(Encapsulating Security Payload):ESP的协议号是50,提供AH的三种服务,此外,数据包加密,可加密整个IP报文,也可只加密IP的数据部分;数据流加密,用于支持IPSec路由器。

IKE(Internet Key Exchange):IKE负责密钥管理,用于实体之间的身份认证,加密算法的协商,以及会话密钥的生成,IKE的结果会保留在安全联盟(SA)中,供AH和ESP通信使用。

SA(Security Association):SA是两个IPSec实体之间经过协商建立起来的一种安全协定,包括采用何种IPSec协议、运行模式是隧道模式还是传输模式,以及使用的验证算法和加密算法等一系列内容。

AH和ESP使用SA来保护通信,两者可单独使用,也可嵌套使用,IKE主要功能就是在实体之间协商SA。

IPSec主要有两种工作方式,隧道模式和传输模式,隧道模式保护的是整个IP数据包,而传输模式保护的是IP的载荷,即真正传输的数据。如图2所示,是ESP头的格式,由ESP头部、载荷数据、ESP尾部和验证数据组成,其中,32位的SPI与目的地址和协议组成的三元组可以为IP包确定唯一的SA,序列号可用于抗重放攻击,载荷数据为明文或者加密后的密文,本字段的长度必须是8位的整数倍,填充长度指明填充字段的长度,下一个头指明载荷的数据类型,比如TCP等,验证数据可选,储存验证的结果。

如图3,为传输模式下ESP装包过程:首先,给原IP报文添加ESP尾部;然后,将尾部和原IP报文的载荷一起进行加密;第三,将机密数据加入ESP头部;第四,对加密区域和ESP头部进行验证,得到完整性度量值,附在ESP报文最后;最后,将IP头部附在ESP报文前,构成新的IP报文。

拆包时,首先,检查协议类型,确定为IPSec包;然后,通过ESP头部SPI确认SA内容,以及通过序列号确认不是重放攻击;第三,计算验证区域的摘要,与ESP验证数据做比较,相同则数据完整;第四,根据SA提供的算法和密钥,解密加密区域,得原IP数据包和ESP尾部;第五,根据尾部填充长度学习删除填充字段,即可得原IP数据包;最后,根据IP的目的地址进行转发。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK