信息安全作业4:描述IPSec传输模式下 ESP 报文的装包与拆包过程
IPSec
-
IP 协议的安全性
传统的 IP 协议诞生于军用计划,设计之初未考虑太多安全问题,存在很多安全隐患。比如数据明文传输,同在一个集线器的通信可以被互相监听,如果获得交换机权限,所有流经交换机的通信也可以被监听。攻击者即便没有交换机权限,也可以通过中间人攻击窃取用户的通信。
-
IPsec(互联网安全协定)提供了网络层加密方案
对 IP 协议进行安全加强的迫切需要催生了 IPsec。IPsec 在网络层将每个 IP 分组的内容先加密再传输,即便中途被截获,攻击者由于缺乏解密数据包所必要的密钥而无法获取其中内容。IPsec 对数据进行加密的方式有两种:传输模式和隧道模式。
- 传输模式只是对 IP 协议报文的有效数据载荷 (payload) 进行了加密,因此需要对原始 IP 报文进行拆装。
- 隧道模式则是对整个 IP 报文进行加密,就好像整个 IP 报文封装在一个安全的隧道里传输一样,保持了原始 IP 报文的完整性。
ESP协议
ESP(Encapsulating Security Payloads),封装安全载荷协议,IPsec 所支持的两类协议中的一种。该协议能够在数据的传输过程中对数据进行完整性度量,来源认证以及加密,也可防止回放攻击。传输模式,与隧道模式同为IPsec工作的两种方式。与隧道模式不同,当IPsec工作在传输模式时,新的IP头并不会被生成,而是采用原来的IP头,保护的也仅仅是真正传输的数据,而不是整个IP报文。在处理方法上,原来的IP报文会先被解开,再在数据前面加上新的ESP或AH协议头,最后再装回原来的IP头,即原来的IP包被修改过再传输。
装包过程
在传输模式下,当要发出一个数据包时:
-
在原IP报文末尾添加尾部信息。
尾部包含三部分:
- 填充数据:由所选加密算法可能是块加密,那么当最后一块长度不够时就需要进行填充;
- 填充长度:并且附上填充长度方便解包时找到填充的数据;
- Next header:则用来标明被加密的数据报文的类型,例如TCP。
-
将原IP报文以及第1步得到的ESP尾部作为一个整体进行加密,具体的加密算法与密钥由SA给出。
-
为第2步得到的加密数据添加ESP头部。ESP头由两部分组成,SPI和序号。
-
对加密区域和ESP头部做验证,得到一个完整性度量值ICV,并附在ESP报文的尾部;
-
将IP头部附在ESP报文前,得到新的IP报文,发送报文。
拆包过程
-
首先,检查协议类型是50,确定为IPSec包;
-
通过ESP头部SPI确认SA内容,以及通过序列号确认不是重放攻击;
-
计算验证区域的摘要,与附在末尾的ICV做比较,若相同则说明数据完整;
-
根据SA提供的算法和密钥,解密加密区域,得原IP包和ESP尾部;
-
根据ESP尾部的填充长度信息删除填充字段得到原IP包;
-
根据得到的原IP包的目的地址进行转发。