本发明涉及网络数据通信领域,更具体地,涉及一种基于动态滑动窗口的ipsec抗重放方法及系统。
背景技术:
1、随着网络技术的不断深入发展与应用以及企业对于自身数据信息的保护意识的提高,网络信息安全问题越来越受到人们的重视,企业或者保密单位在采购或者自研产品的过程中,重点关注的问题之一也正是产品的安全性问题。
2、互联网安全协议(internet protocol security,即ipsec)是一个标准的关于网络安全的协议族,也是一个开放的网络框架,通过对ip分组的加密和认证等方式来确保安全的网络通信。ipsec协议族会提供一组安全服务,主要包括访问控制、数据源身份验证、无连接完整性、加密、抗重放保护。重放攻击是一种常见的主动式的网络攻击手段,攻击者首先会截取正常通信双方的数据包,然后对通信一方的数据包进行修改后发送给另一方,从而达到假冒身份与另一方通信的目的。ipsec的抗重放保护主要是确保所接收到的数据包是唯一的,比较数据包的序列号,如果出现重复的数据包或者是延迟的数据包则会将这些数据包丢弃。
3、抗重放的机制主要有三种,即挑战、时间戳和滑动窗口机制,ipsec的抗重放服务是通过一组单调递增的序列号和滑动窗口机制来阻挡重放攻击。序列号包含在ipsec数据包头,在创建安全关联(security associations,即sa)的时候序列号归零,序列号字段为32位,因此,一个sa和数据包关联,当序列号单调递增到最大值时会新建一个sa。在ipsec抗重放服务实现的过程中,设定接收端的滑动窗口大小值为固定值m,该窗口值一般为大于32的任何值,窗口左端起始值为n,则窗口右端可接收的合法ipsec数据包的最大序列号为m+n-1。若接收到的数据包序列号在窗口左侧即小于n的时候,则直接丢弃该数据包;若数据包序列号在窗口范围内,则会判断是否已经接收过该数据包,若未接收过则将其接收并将在位图中进行标记;若数据包序列号在窗口右侧即大于m+n-1时,则对数据包进行校验,若通过校验则向右滑动窗口,使得该数据包的序号正好包含在窗口的右边界内,若未通过校验则丢弃该数据包。以滑动窗口的方式来完成抗重放服务,优势在于占用的内存空间较小,同时可以对无序到达的数据包有一定的容忍度;劣势在于滑动窗口的大小不好设置,当窗口大小值设置的过小时则会导致高丢包率,从而影响正常通信,而窗口设置过大则会影响抗重放的效果。在简单的网络环境下,设置一个固定的窗口大小适当的值,或许可以满足一般的抗重放需求;但是,在复杂的网络环境下,这种简单的机制就会显得可靠性较差,出现丢包问题进而影响通信质量。
技术实现思路
1、为了解决现有ipsec抗重放的滑动窗口机制在复杂网络环境下丢包的问题,本发明在分析网络通信的过程以及滑动窗口机制的基础上,提出了一种基于动态滑动窗口的ipsec抗重放方法及系统,减少复杂网络环境下抗重放机制对网络通信质量的影响,满足ipsec抗重放机制的可靠性、安全性的要求。
2、根据本发明的第一方面,提供了一种基于动态滑动窗口的ipsec抗重放方法,包括:
3、在ipsec业务通信时,发送方组装自定义格式的ipsec数据报文,填入系统时钟信息,从网口发送所述ipsec数据报文至接收方;
4、接收方从接收到的所述ipsec数据报文中提取出报文序列号和系统时钟信息;
5、根据所述报文序列号、窗口区间和系统时钟信息,判断所述ipsec数据报文是否为重放包;
6、根据判断结果,统计计算所述窗口区间内已接收序列号和未接收序列号的信息,对所述窗口区间进行计算更新,进行下一次的抗重放判断。
7、在上述技术方案的基础上,本发明还可以作出如下改进。
8、可选的,所述发送方组装自定义格式的ipsec数据报文,填入系统时钟信息,从网口发送所述ipsec数据报文至接收方,包括:
9、发送方将ipsec数据报文中的esp包头中预留的iv可选字段重定义为32bit长度的t-check字段,向所述t-check字段中填入系统时钟信息,组装为自定义格式的ipsec数据报文。
10、可选的,所述接收方从接收到的所述ipsec数据报文中提取出报文序列号和系统时钟信息,包括:
11、接收方接收到所述ipsec数据报文时,将所述ipsec数据报文进行解封装,提取出安全参数索引spi信息、ipsec序列号和系统时钟信息;
12、根据所述ipsec数据报文中的spi信息进行哈希查找,找到对应的安全关联sa信息,以及根据所述sa信息找到绑定的抗重放窗口内存空间,所述抗重放窗口内存空间中记录有已接收的ipsec序列号和窗口阈值参数。
13、可选的,根据所述报文序列号、窗口区间和系统时钟信息,判断所述ipsec数据报文是否为重放包,包括:
14、基于所述抗重放窗口内存空间中记录的已接收最大ipsec序列号m和窗口阈值参数n1,确定窗口区间[m-n1,m+n1];
15、判断从所述ipsec数据报文中提取的ipsec序列号x是否在窗口区间内,若不在,则将所述ipsec数据报文丢弃;
16、若在,则在所述抗重放窗口内存空间中查找判断ipsec序列号x是否记录接收过,若记录接收过,则判定所述ipsec数据报文为重放包,若没有记录接收过,则需要进行进一步的判断,其中,在所述抗重放窗口内存空间中以位图实现已接收ipsec序列号的记录。
17、可选的,所述若没有记录接收过,则需要进行进一步的判断,包括:
18、若所述ipsec序列号x未记录过,当x<m时,在所述抗重放窗口内存空间中记录x并更新位图;
19、若x>m,则将从所述ipsec数据报文中提取的系统时钟信息t1与系统维护的全局变量t0进行比较,若t0<t1,则在所述抗重放窗口内存空间中记录x并更新位图,同时基于x更新已接收最大ipsec序列号m,基于t1更新系统维护的全局变量t0;
20、若t0>t1,则将所述ipsec数据报文丢弃。
21、可选的,所述根据判断结果,统计计算所述窗口区间内已接收序列号和未接收序列号的信息,对所述窗口区间进行计算更新,进行下一次的抗重放判断,包括:
22、基于更新后的m值,计算窗口区间[m-n1,m+n1]内已接收到序列号和未接收到序列号个数的比值r;
23、计算n1与r的比值n1/r,按8的整数倍进行取值得到窗口阈值参数n2;
24、将n2赋值给n1,对窗口阈值参数进行更新;
25、基于更新后的已接收最大ipsec序列号m和窗口阈值参数n1,对窗口区间进行更新,进行下一次的抗重放判断。
26、可选的,所述基于更新后的m值,计算窗口区间[m-n1,m+n1]内已接收到序列号和未接收到序列号个数的比值r,还包括:
27、若1/4≤r≤1/2,则更新窗口阈值参数为初始窗口阈值参数;
28、设定窗口阈值参数上限值,当窗口阈值参数n1>窗口阈值参数上限值时,窗口阈值参数n1=窗口阈值参数上限值。
29、根据本发明的第二方面,提供一种基于动态滑动窗口的ipsec抗重放系统,包括:
30、接收模块,用于从发送方接收基于网口发送的ipsec数据报文,其中,在ipsec业务通信时,发送方组装自定义格式的ipsec数据报文,填入系统时钟信息,并发送至接收方;
31、提取模块,用于从接收到的所述ipsec数据报文中提取出报文序列号和系统时钟信息;
32、判断模块,用于根据所述报文序列号、窗口区间和系统时钟信息,判断所述ipsec数据报文是否为重放包;
33、更新模块,用于根据判断结果,统计计算所述窗口区间内已接收序列号和未接收序列号的信息,对所述窗口区间进行计算更新,进行下一次的抗重放判断。
34、根据本发明的第三方面,提供了一种电子设备,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机管理类程序时实现基于动态滑动窗口的ipsec抗重放方法的步骤。
35、根据本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现基于动态滑动窗口的ipsec抗重放方法的步骤。
36、本发明提供的一种基于动态滑动窗口的ipsec抗重放方法及系统,对传统固定滑动窗口大小的ipsec抗重放流程进行改进,根据网络波动可能造成数据报文收包顺序变化的特征,设计动态调整滑动窗口阈值大小的算法,整个计算过程简单高效,不耗费计算资源,不影响数据包的收发处理。能够在保障网络通信安全性的同时,防止因网络波动和窗口滑动造成的丢包问题,有效提高数据传输的完整性和有效性。