抗重放方法和装置与流程

文档序号:20123342发布日期:2020-03-20 05:58阅读:267来源:国知局
抗重放方法和装置与流程

本发明实施例涉及计算机技术,尤其涉及一种抗重放方法和装置。



背景技术:

互联网协议安全(internetprotocolsecurity,以下简称:ipsec),用于确保端到端的互联网协议(internetprotocol,以下简称:ip)层的通信安全。

ipsec在两个端点之间提供安全通信,称这两个端点为ipsec发送端和ipsec接收端,ipsec安全联盟(securityassociation,以下简称:sa)是ipsec发送端和接收端之间对某些要素的约定,例如:使用哪种协议、使用哪种协议封装模式、使用哪种加密算法等。ipsecsa具有生存周期,生存周期结束称为ipsecsa老化(失效),现有技术中,ipsecsa的生存周期基于时间设置或者基于流量设置,基于时间设置是指从ipsecsa建立开始,sa存活的时间达到设置的时间时,ipsecsa老化;基于流量设置是指当采用ipsecsa处理的流量达到设置的流量时,ipsecsa老化。

ipsec通过抗重放滑动窗口机制检测重放报文,在ipsecsa老化之前,发送端发送的报文的序列号依次递增,当接收的报文的报文序列号落在抗重放滑动窗口区间内,则接收报文,抗重放滑动窗口不变;当接收的报文的报文序列号落在抗重放滑动窗口区间右侧,则接收报文并将抗重放滑动窗口右移,使抗重放滑动窗口的上限值为接收的报文的报文序列号;当接收的报文的报文序列号落在抗重放滑动窗口区间左侧,则丢弃接收的报文。当ipsecsa触发老化后,发送端发送的报文的序列号从最小值开始,并且,抗重放滑动窗口的区间变为[0,n-1],其中,n为抗重放滑动窗口的大小;然而,采用现有技术的方法,当发送端的报文序列号达到最大值时,报文序列号翻转从最小值开始,如果还没有触发ipsecsa老化,抗重放滑动窗口的区间为[max-n,max],max为报文序列号的最大值,接收端接收到翻转后的报文序列号之后,由于报文序列号在抗重放滑动窗口的左侧,则丢弃接收的报文,导致报文被抗重放误丢弃。



技术实现要素:

本发明实施例提供一种抗重放方法和装置,以解决报文被抗重放误丢弃的问题。

第一方面,提供一种抗重放方法,包括:

接收互联网协议安全ipsec报文,所述ipsec报文中包括序列号;

获取抗重放滑动窗口的上限值;

若所述抗重放滑动窗口的上限值为最大约定值,则将所述抗重放滑动窗口的区间设为m1至m2,其中,m1为报文序列号的最小值,m2为m1与所述抗重放滑动窗口的大小之和,所述m1为大于等于0的整数。

结合第一方面,在第一方面的第一种可能的实现方式中,所述方法还包括:

若所述抗重放滑动窗口的上限值不为最大约定值,当所述ipsec报文的序列号在所述抗重放滑动窗口内,则保存所述ipsec报文;

当所述ipsec报文的序列号在所述抗重放滑动窗口右侧,则保存所述ipsec报文并将所述抗重放滑动窗口右移,使所述抗重放滑动窗口的上限值为所述ipsec报文的序列号;

当所述ipsec报文的序列号在所述抗重放滑动窗口左侧,则丢弃所述ipsec报文。

结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述获取抗重放滑动窗口的上限值之前,还包括:

与所述ipsec报文的发送端协商所述最大约定值,所述最大约定值为所述发送端发送ipsec报文的序列号的最大值。

结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述最大约定值为2n-1,其中n为所述报文序列号的位数。

第二方面,提供一种抗重放装置,包括:

接收模块,用于接收互联网协议安全ipsec报文,所述ipsec报文中包括序列号;

获取模块,用于获取抗重放滑动窗口的上限值;

处理模块,用于若所述抗重放滑动窗口的上限值为最大约定值,则将所述抗重放滑动窗口的区间设为m1至m2,其中,m1为报文序列号的最小值,m2为m1与所述抗重放滑动窗口的大小之和,所述m1为大于等于0的整数。

结合第二方面,在第二方面的第一种可能的实现方式中,所述装置所述处理模块还用于若所述抗重放滑动窗口的上限值不为最大约定值,当所述ipsec报文的序列号在所述抗重放滑动窗口内,则保存所述ipsec报文;当所述ipsec报文的序列号在所述抗重放滑动窗口右侧,则保存所述ipsec报文并将所述抗重放滑动窗口右移,使所述抗重放滑动窗口的上限值为所述ipsec报文的序列号;当所述ipsec报文的序列号在所述抗重放滑动窗口左侧,则丢弃所述ipsec报文。

结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述处理模块还用于与所述ipsec报文的发送端协商所述最大约定值,所述最大约定值为所述发送端发送ipsec报文的序列号的最大值。

结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述最大约定值为2n-1,其中n为所述报文序列号的位数。

本发明实施例提供的抗重放方法和装置,通过在发送端与接收端设置相同的最大约定值,接收端接收ipsec报文,ipsec报文中包括序列号,获取抗重放滑动窗口的上限值;若所述抗重放滑动窗口的上限值为最大约定值,则将抗重放滑动窗口的区间设为m1至m2,其中,m1为报文序列号的最小值,m2为m1与所述抗重放滑动窗口的大小之和。发送端当发送报文序列号到达最大值时,下一个发送报文的序列号从最小值开始,从而,解决报文被抗重放误丢弃的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种抗重放方法的流程示意图;

图2为本发明抗重放滑动窗口示意图;

图3为本发明实施例提供的另一种抗重放方法的流程示意图;

图4为本发明实施例提供的一种抗重放装置的结构示意图;

图5为本发明实施例提供的另一种抗重放装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明主要为了解决基于时间设置或基于流量设置的ipsecsa生存周期未结束之前,报文序列号达到报文序列号最大值,报文序列号翻转,翻转后的报文序列号始终无法落在抗重放滑动窗口的区间内或者抗重放滑动窗口的右侧,导致接收报文因抗重放被误丢弃。本发明通过在发送端与接收端设置相同的最大约定值,接收端接收ipsec报文,ipsec报文中包括序列号,获取抗重放滑动窗口的上限值;若所述抗重放滑动窗口的上限值为最大约定值,则将抗重放滑动窗口的区间设为m1至m2,其中,m1为报文序列号的最小值,m2为m1与所述抗重放滑动窗口的大小之和,即:m2=m1+n,其中,所述n为所述抗重放滑动窗口的大小。发送端当发送报文序列号到达最大值时,下一个发送报文的序列号从最小值开始,从而,解决报文被抗重放误丢弃的问题。

本发明下述各实施例的所述的接收端指ipsec接收端,发送端指ipsec发送端。

下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

图1为本发明实施例提供的一种抗重放方法的流程示意图,如图1所示,本实施例的方法如下:

s101:接收端接收ipsec报文,ipsec报文中包括序列号。

s102:接收端获取抗重放滑动窗口的上限值。

抗重放滑动窗口在滑动过程中,窗口大小始终为固定大小,如图2所示,图2为本发明抗重放滑动窗口示意图,抗重放滑动窗口的大小为n,本发明各实施例中将抗重放滑动窗口的左端点的值称为抗重放窗口的下限值,将抗重放滑动窗口的右端点的值称为抗重放窗口的上限值,上限值和下限值之间的差值为抗重放窗口的大小。

s103:若抗重放滑动窗口的上限值为最大约定值,接收端则将抗重放滑动窗口的区间设为m1至m2。

最大约定值可以是手动配置的一个抗重放的序列号,该最大约定值发送端和接收端必须一致,例如:针对32位的报文序列号,最大约定值可以设定为0xffffffff,可以理解,也可以是小于0xffffffff的数值,只要发送端和接收端的设置一致即可,通常,最大约定值为2n-1,其中n为所述报文序列号的位数。具体,可以根据实际需求而设置,本发明对此不做限制。

在执行s102之前,还包括:接收端与发送端协商所述最大约定值,最大约定值为发送端发送报文的序列号的最大值。

其中,m1为报文序列号的最小值,m2为m1与所述抗重放滑动窗口的大小之和,即:m2=m1+n,其中,n为抗重放滑动窗口的大小。

m1通常为0,报文序列号也可以不从0开始计数,具体可根据实际需求设置,对此本发明不做限制。

以32位的报文序列号为例,假设最大约定值为0xfffffff,报文序列号的最小值为0,则当抗重放滑动窗口的上限为0xfffffff时,触发将抗重放滑动窗口的区间变为[0,n-1],发送端发送报文的序列号为0xfffffff时,下一个发送报文的序列号为0,因此,当发送端发送报文的序列号翻转从最小值开始时,接收端依然可以落在抗重放滑动窗口的区间内,从而,避免了因抗重放报文被误丢弃的问题。

本实施例,通过在发送端与接收端设置相同的最大约定值,接收端接收ipsec报文,ipsec报文中包括序列号,获取抗重放滑动窗口的上限值;若所述抗重放滑动窗口的上限值为最大约定值,则将抗重放滑动窗口的区间设为m1至m2,其中,m1为报文序列号的最小值,m2=m1+n,其中,所述n为所述抗重放滑动窗口的大小。发送端当发送报文序列号到达最大值时,下一个发送报文的序列号从最小值开始,从而,解决报文被抗重放误丢弃的问题。

在图1所示实施例的基础上,还包括:若抗重放滑动窗口的上限值不为最大约定值时,分为以下几种情况:

当ipsec报文的序列号在所述抗重放滑动窗口内,则保存所述ipsec报文;

当所述ipsec报文的序列号在所述抗重放滑动窗口右侧,则保存所述ipsec报文并将所述抗重放滑动窗口右移,使所述抗重放滑动窗口的上限值为所述ipsec报文的序列号;例如:ipsec报文的序列号为s,s小于等于最大约定值,则保存ipsec报文,并将抗重放滑动窗口右移,使抗重放滑动窗口的上限值为s,抗重放滑动窗口的下限值为s-n,n为抗重放滑动窗口的大小,如图2所示。

当所述ipsec报文的序列号在所述抗重放滑动窗口左侧,则丢弃所述ipsec报文。ipsec报文的序列号在抗重放滑动窗口的左侧,则认为该报文在此之前已经解封装过,认为该报文是重放报文,对重放报文的解封装无实际作用,并且解封装过程会消耗设备大量的资源,导致业务可用性下降,实际上构成拒绝服务(denialofservice,以下简称:dos)攻击。通过使用抗重放滑动窗口机制,丢弃重放报文,可以降低设备资源的消耗。

相应地,ipsec报文的发送端执行如下步骤:

判断发送报文的序列号是否为最大约定值。若是,则执行步骤a,若否,则执行步骤b。

步骤a:若发送报文的序列号为最大约定值,则将下一个发送报文的序列号从最小值开始。

步骤b:若发送报文的序列号为最大约定值,则将下一个发送报文的序列号加1。

本实施例,ipsec报文的发送端设置有与接收端相同的最大约定值,并且在发送ipsec报文时,判断ipsec报文的序列号是否为最大约定值,若ipsec报文的序列号为最大约定值,则下一个发送的ipsec报文的序列号从最小值开始,若ipsec报文的序列号不为最大约定值,则下一个发送报文的序列号加1。由于发送端设置有与接收端相同的最大约定值,接收端抗重放滑动窗口的上限值为最大约定值,接收端可以实施本发明图1所示的抗重放方法,从而能够解决报文被抗重放误丢弃的问题。

图3为本发明实施例提供的另一种抗重放方法的流程示意图,本实施例的执行主体是接收端,如图3所示。

s301:获取ipsec报文的序列号。

s302:判断ipsec报文的序列号是否等于最大约定值。若是,执行s303,若否,执行s304。

s303:保存报文,将抗重放滑动窗口的区间变为m1至m2。

其中,m1为报文序列号的最小值,m2=m1+n,其中,n为抗重放滑动窗口的大小。

s304:判断ipsec报文的序列号是否落在抗重放滑动窗口区间内,若是,执行s305,若否,执行s306。

s305:保存报文,抗重放滑动窗口不变。

s306:判断ipsec报文的序列号是否落在抗重放滑动窗口的右侧,若是,执行s307,若否,执行s308。

s307:保存报文,右移抗重放滑动窗口,使抗重放滑动窗口的上限值为ipsec报文的序列号。

s308:丢弃报文。

图4为本发明实施例提供的一种抗重放装置的结构示意图,本实施例的装置部署在接收端,本实施例的装置包括接收模块401、获取模块402和处理模块403,其中,接收模块401用于接收互联网协议安全ipsec报文,所述ipsec报文中包括序列号;获取模块402用于获取抗重放滑动窗口的上限值;处理模块403用于若所述抗重放滑动窗口的上限值为最大约定值,则将所述抗重放滑动窗口的区间设为m1至m2,其中,m1为报文序列号的最小值,m2为m1与所述抗重放滑动窗口的大小之和,所述m1为大于等于0的整数。

在上述实施例中,所述处理模块403还用于若所述抗重放滑动窗口的上限值不为最大约定值,当所述ipsec报文的序列号在所述抗重放滑动窗口内,则保存所述ipsec报文;当所述ipsec报文的序列号在所述抗重放滑动窗口右侧,则保存所述ipsec报文并将所述抗重放滑动窗口右移,使所述抗重放滑动窗口的上限值为所述ipsec报文的序列号;当所述ipsec报文的序列号在所述抗重放滑动窗口左侧,则丢弃所述ipsec报文。

在上述实施例中,所述处理模块403还用于与所述ipsec报文的发送端协商所述最大约定值,所述最大约定值为所述发送端发送ipsec报文的序列号的最大值。

在上述实施例中,所述最大约定值为2n-1,其中n为所述报文序列号的位数。

本实施例中,通过在发送端与接收端设置相同的最大约定值,接收端接收模块接收ipsec报文,ipsec报文中包括序列号,获取模块获取抗重放滑动窗口的上限值;处理模块若所述抗重放滑动窗口的上限值为最大约定值,则将抗重放滑动窗口的区间设为m1至m2,其中,m1为报文序列号的最小值,m2=m1+n,其中,所述n为所述抗重放滑动窗口的大小。发送端当发送报文序列号到达最大值时,下一个发送报文的序列号从最小值开始,从而,解决报文被抗重放误丢弃的问题。

图5为本发明实施例提供的另一种抗重放装置的结构示意图,所述抗重放装置部署在接收端,如图5所示,所述抗重放装置500包括通信接口501、存储器503和处理器502,其中,通信接口501、处理器502、存储器503、通过总线504相互连接;总线504可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

所述通信接口501用于与发送端通信。存储器503,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器503可能包含随机存取存储器(randomaccessmemory,简称ram),也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

处理器502执行存储器503所存放的程序,实现本发明图1或图3所示的抗重放方法,包括:

接收互联网协议安全ipsec报文,所述ipsec报文中包括序列号;

获取抗重放滑动窗口的上限值;

若所述抗重放滑动窗口的上限值为最大约定值,则将所述抗重放滑动窗口的区间设为m1至m2,其中,m1为报文序列号的最小值,m2为m1与所述抗重放滑动窗口的大小之和,所述m1为大于等于0的整数。

所述方法还可以包括:

与发送端协商所述最大约定值,最大约定值为所述发送端发送ipsec报文的序列号的最大值。

上述的处理器502可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本发明实施例中,通过在发送端与接收端设置相同的最大约定值,处理器接收ipsec报文,ipsec报文中包括序列号,获取抗重放滑动窗口的上限值;若所述抗重放滑动窗口的上限值为最大约定值,则将抗重放滑动窗口的区间设为m1至m2,其中,m1为报文序列号的最小值,m2=m1+n,其中,所述n为所述抗重放滑动窗口的大小。发送端当发送报文序列号到达最大值时,下一个发送报文的序列号从最小值开始,从而,解决报文被抗重放误丢弃的问题。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1