一种删除Child SA的方法和设备
技术领域
本发明涉及通信技术领域,尤其涉及一种删除Child SA的方法和设备。
背景技术
IPsec(IP security,IP安全)是IETF(Internet Engineering Task Force,互联网工程任务组)制定的三层隧道加密协议,它为Internet上传输的数据提供了高质量的、可互操作的、基于密码学的安全保证,是一种传统的实现三层VPN(Virtual Private Network,虚拟专用网)的安全技术。
特定的通信方之间通过建立IPsec隧道来传输用户的私有数据,并在IP层提供以下安全服务:
数据机密性(Confidentiality):IPsec发送方在通过网络传输包前对包进行加密;
数据完成性(Data Integrity):IPsec接收方对发送方发送来的包进行认证,以确保数据在传输过程中没有被篡改;
数据来源认证(Data Authentication):IPsec接收方可以认证IPsec报文的发送方是否合法;
防重放(Anti-Replay):IPsec接收方可检测并拒绝接收过时或重复的报文。
IPsec提供了两种安全机制:认证和加密。认证机制使IP通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否被篡改。加密机制通过对数据进行加密运算来保证数据的机密性,以防数据在传输过程中被窃听。
IPsec在两个端点之间提供安全通信,端点被称为IPsec对等体。SA是通信对等体间对某些要素的约定,例如,使用哪种协议(AH(AuthenticationHeader,认证头协议)、ESP(Encapsulating Security Payload,封装安全载荷)、或两者结合使用)、协议的封装模式(传输模式和隧道模式)、加密算法、特定流中保护数据的共享密钥以及密钥的生存周期等。IPsec可通过IKE(InternetKey Exchange,互联网密钥交换协议)协商建立SA。其中,IPsec与IKE的关系示意图可以如图1所示。
IKE有两个协议,IKEv1和IKEv2,IKEv2协商IKE SA和IPsec SA(在IKEv2中,也称为Child(子)SA,以下均称为Child SA)包括两个交换:IKE_SA_INIT(Initial,初始)和IKE_AUTH(Authentication,认证)。其中,IKE_SA_INIT交换完成加密算法、Nonce(随机数)、DH(Diffie-Hellman,Diffie-Hellman)值等信息的协商;IKE_AUTH交换完成身份认证、证书的协商。两次交换完成后,协商出一个IKE SA和一对Child SA(入方向Child SA和出方向Child SA),协商一方的入方向Child SA和另一方的出方向Child SA对应,该SA使用安全协议(AH或ESP)、目的地址以及SPI(Security ParameterIndex,安全参数索引)作为索引。其中,IKE_SA_INIT交换和IKE_AUTH交换过程的示意图可以分别如图2A和图2B所示。
其中,IKE_SA_INIT交换过程中,Initiator(发起方)向Responder(响应方)发送的报文中可以包括以下字段:HDR为报文头,SAi1,KE(Key Exchange,密钥交换)i、N(Nonce,随机数)i;Responder(响应方)向Initiator(发起方)返回的报文中可以包括以下字段:HDR,SAr1,KEr,Nr,[CERTREQ(Certificate Request,证书请求)]。
IKE_SA_AUTH交换过程中,SK{*}表示对参数*进行密钥加密,TS为流信息。
在协商过程以及协商完成后,协商双方可以通过INFORMATIONAL消息交换控制信息,INFORMATIONAL消息交换过程可以如图2C所示。其中,CP为配置载荷(Configuration Payload)。
在协商完Child SA后,协商双方可以手动删除该SA,此时需要通知对端也删除对应的Child SA。
根据以上描述可以看出,协商双方(以A端和B端为例)有一对Child SA:入方向Child SA和出方向Child SA,协议一方,如A端,主动删除Child SA的流程如图3所示,包括:
步骤301、A端删除入方向Child SA。
步骤302、A端构造删除入方向SA的消息(删除消息)给B端,并启动重传定时器。
步骤303、A端判断是否收到对端的回应消息;若判断为是,则转至步骤305;否则,转至步骤304。
步骤304、A端判断重传次数是否达到最大值;若判断为是,则转至步骤305;否则,再次向B端发送删除消息,转至步骤303。
步骤305、A端删除出方向Child SA。
在图3所示的处理流程中,A端优先删除了入方向Child SA,如果过在删除消息到达B端之前,B端向A端发送了加密报文,此时,A端根据该加密报文对应的SPI以及安全协议无法获取到对应解密使用的Child SA,这种情况下,A端会向B端发送Child SA删除消息,该消息中包括SPI以及安全协议,以告知本地没有对应的Child SA,要求B端删除,当B端接收到该Child SA删除消息时,可能误删重新建立的Child SA。
例如,A端入方向Child SA对应的SPI为1,那么B端对应的出方向ChildSA对应的SPI也是1(二者互为镜像),安全协议为ESP。
假设A端删除了SPI为1,安全协议为ESP的入方向Child SA,并向B端发送携带该SPI和安全协议的删除消息;
B端在接收到该删除消息之前,向A端发送加密报文,该加密报文使用SPI为1,安全协议为ESP的Child SA进行加密操作;
B端在接收到该删除消息之后,将本地SPI为1,安全协议为ESP的ChildSA删除,同时删除对应的出方向的Child SA;
在有流量需要从B端发送出去的情况下,B端再次触发协商,建立了一对新的Child SA,SPI也是1,安全协议为ESP;
A端接收到B端发送的使用SPI为1,安全协议为ESP的Child SA进行加密操作的加密报文之后,根据SPI和安全协议查询对应的Child SA,并当查询不到时,再次给B发送一个删除消息,该删除消息携带的SPI为1,安全协议为ESP。
B端接收到该删除消息之后,将新建立的SPI为1,安全协议为ESP的ChildSA删除,导致删除错误。
发明内容
本发明提供了一种删除Child SA的方法和设备,以降低错误删除Child SA的可能性。
为了达到上述目的,本发明提供一种删除子安全联盟Child SA的方法,包括:
当设备需要删除Child SA时,所述设备将待删除Child SA对应的出方向Child SA设置为不可用,并向对端设备发送携带该待删除Child SA的安全参数索引SPI和安全协议的删除消息;
当所述设备接收到所述对端设备返回的删除响应消息时,所述设备删除所述待删除Child SA以及该待删除Child SA对应的出方向Child SA;其中,所述删除响应消息为所述对端设备接收到所述删除消息,并删除该删除消息中携带的SPI和安全协议对应的Child SA,以及该Child SA对应的入方向ChildSA之后向所述设备返回的。
其中,所述设备将待删除Child SA对应的出方向Child SA设置为不可用,具体为:
所述设备为所述待删除Child SA对应的出方向Child SA增加不可用标识;或,
所述设备将所述待删除Child SA对应的出方向Child SA保存到特定数据库,该特定数据库中的Child SA为不可用Child SA。
其中,该方法还包括:
在所述设备向所述对端设备发送删除消息之后,接收到所述对端设备返回的删除响应消息之前,若所述设备接收到所述对端设备发送加密报文,且该加密报文使用的Child SA的SPI和安全协议为所述待删除Child SA的SPI和安全协议,所述设备使用所述待删除Child SA对该加密报文进行解密。
本发明实施例还提供一种删除子安全联盟Child SA的设备,包括:
设置模块,用于当所述设备需要删除Child SA时,将待删除Child SA对应的出方向Child SA设置为不可用;
第一接口模块,用于向对端设备发送携带所述待删除Child SA的安全参数索引SPI和安全协议的删除消息;接收对端设备返回的删除响应消息;
第二接口模块,用于接收删除消息;向删除消息的发送方设备返回删除响应消息;
第一删除模块,用于当所述第一接口模块接收到所述对端设备的删除响应消息时,删除所述待删除Child SA以及该待删除Child SA对应的出方向ChildSA;
第二删除模块,用于当所述第二接口模块接收到删除消息时,删除该删除消息中携带的SPI和安全协议对应的Child SA,以及该Child SA对应的入方向Child SA,并通过所述第二接口模块向删除消息的发送方设备返回删除响应消息。
其中,所述设置模块具体用于,通过以下方式实现将待删除Child SA对应的出方向Child SA设置为不可用:
为所述待删除Child SA对应的出方向Child SA增加不可用标识;或,
将所述待删除Child SA对应的出方向Child SA保存到特定数据库,该特定数据库中的Child SA为不可用Child SA。
其中,所述设备还包括:
处理模块,用于在所述第一接口模块向所述对端设备发送删除消息之后,接收到所述对端设备返回的删除响应消息之前,所述设备接收到所述对端设备发送的加密报文时,该加密报文使用的Child SA的SPI和安全协议为所述待删除Child SA的SPI和安全协议,使用所述待删除Child SA对该加密报文进行解密。
本发明上述实施例中,当设备需要删除Child SA时,该设备将待删除ChildSA对应的出方向Child SA设置为不可用,并向对端设备发送携带该待删除Child SA的SPI和安全协议的删除消息;当该设备接收到对端设备返回的删除响应消息时,该设备删除该待删除Child SA以及该待删除Child SA对应的出方向Child SA,降低了错误删除Child SA的可能性。
附图说明
图1为现有技术中IPsec与IKE的关系示意图;
图2A为现有技术中IKE_SA_INIT交换过程的示意图;
图2B为现有技术中IKE_AUTH交换过程的示意图;
图2C为现有技术中INFORMATIONAL消息交换过程的示意图;
图3为现有技术中一种删除Child SA的方法的流程示意图;
图4为本发明实施例提供的一种删除Child SA的方法的流程示意图;
图5为本发明实施例提供的一种具体应用场景下的删除Child SA的方法的流程示意图;
图6为本发明实施例提供的一种删除Child SA的设备的结构示意图。
具体实施方式
针对上述现有技术中存在的问题,本发明实施例提供了一种Child SA删除的技术方案。在该技术方案中,当设备需要删除Child SA时,该设备将待删除Child SA对应的出方向Child SA设置为不可用,并向对端设备发送携带该待删除Child SA的SPI和安全协议的删除消息;当该设备接收到对端设备返回的删除响应消息时,该设备删除该待删除Child SA以及该待删除Child SA对应的出方向Child SA。
其中,当对端设备接收到删除消息时,可以根据该删除消息中携带的SPI和安全协议查询对应的Child SA(出方向Child SA),并查询该Child SA对应的入方向Child SA,删除查询到的Child SA(包括该出方向Child SA和入方向Child SA),然后向删除消息的发送方设备返回删除响应消息。
通过以上处理方式,可以降低错误删除Child SA的可能性。
下面将结合本发明的实施例中的附图,对本发明的实施例中的技术方案进行清楚、完整的描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明的实施例保护的范围。
如图4所示,为本发明实施例提供的一种删除Child SA的方法的流程示意图,可以包括以下步骤:
步骤401、当设备需要删除Child SA时,该设备将待删除Child SA对应的出方向Child SA设置为不可用,并向对端设备发送携带该待删除Child SA的SPI和安全协议的删除消息。
具体的,当设备需要删除Child SA(入方向Child SA)时,该设备可以根据该设备与对端设备协商完成后建立的出方向Child SA和入方向Child SA的对应关系,查询该待删除Child SA对应的出方向Child SA,并将该出方向ChildSA设置为不可用,然后向对端设备发送删除消息,请求对端设备删除相应的Child SA,该删除消息中需要携带该待删除的Child SA的SPI和安全协议。
在本发明实施例中,将待删除Child SA对应的出方向Child SA设置为不可用至少可以包括以下几种方式:
为该待删除Child SA对应的出方向Child SA增加不可用标识;或,
将该待删除Child SA对应的出方向Child SA保存到特定数据库,该特定数据库中的Child SA为不可用Child SA。
其中,当设备将Child SA设置为不可用后,该设备不会主动使用该ChildSA对待发送的报文进行加密。
步骤402、当该设备接收到对端设备返回的删除响应消息时,删除该待删除Child SA以及该待删除Child SA对应的出方向Child SA。
具体的,对端设备接收到删除消息之后,根据该删除消息中携带的SPI和安全协议,查询对应的Child SA(出方向Child SA),并根据该设备与对端设备协商完成后建立的出方向Child SA和入方向Child SA的对应关系,查询该出方向Child SA对应的入方向Child SA,并删除该入方向Child SA和出方向Child SA,然后,向删除消息的发送方设备返回删除响应消息。
设备接收到对端设备返回的删除响应消息后,删除待删除Child SA,以及该待删除Child SA对应的出方向Child SA。其中,设备可以根据接收到的删除响应消息的报文ID,或者该删除响应消息中携带的SPI和安全协议,确定需要删除的Child SA,其具体实现在此不再赘述。
其中,设备向对端设备发送删除消息后,可以启动一个重传定时器,并当该重传定时器超时时,未接收到对端设备返回的删除响应消息时,重新向对端设备发送删除消息。若设备向对端设备发送删除消息的次数超过预设阈值,则该设备直接删除待删除Child SA以及该待删除Child SA对应的出方向ChildSA。
在本发明实施例中,在设备向对端设备发送删除消息之后,且接收到对端设备返回的删除响应消息之前,若设备接收到对端设备发送的加密报文,且该加密报文使用的Child SA的SPI和安全协议为待删除Child SA的SPI和安全协议,由于设备还未删除该SPI和安全协议对应的入方向Child SA,因此该设备能够使用该入方向Child SA对该加密报文进行解密,而不会出现由于设备查询不到对应的Child SA而向对端设备再次发送请求删除同一Child SA的删除消息,导致对端设备错误删除新建立的Child SA的情况。
需要注意的是,在本发明实施例中,上述设备和对端设备均可以为路由器、交换机、或者其他有建立SA需求的网络设备。
为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面结合具体的应用场景对本发明实施例提供的技术方案进行更加详细的描述。
在该实施例中,假设设备A和设备B之间协议商有一对Child SA:入方向Child SA和出方向Child SA,其中,对于设备A,入方向Child SA的SPI为SPI1,安全协议为ESP(入方向Child SA为SA a1,出方向Child SA为SA a2);相对应的,对于设备B,出方向Child SA的SPI为SPI1,安全协议为ESP(与设备A的入方向Child SA互为镜像,设备B入方向Child SA为SA b1,出方向Child SA为SA b2);设备A和设备B中均配置有入方向Child SA和出方向Child SA的对应关系。
如图5所示,为本发明实施例提供的一种具体应用场景下的删除Child SA的方法的流程示意图,当设备A需要删除SA a1时,该方法可以包括以下步骤:
步骤501、设备A将SA a2设置为不可用,并向设备B发送携带SPI为SPI1,安全协议为ESP的删除消息。
具体的,在本发明实施例中,当设备A需要删除SA a1时,不会直接将该SA删除,而是需要根据设备A与设备B协商完成后建立的入方向Child SA和出方向Child SA的对应关系,查询该SA对应的出方向Child SA(SA a2)。设备A为SA a2增加不可用标识,停止使用SA a2对待发送的报文进行加密,并向设备B发送删除消息,该删除消息中携带的SPI为SPI1,安全协议为ESP。
步骤502、设备A判断是否在预设时间内接收到设备B返回的删除响应消息;若判断为是,则转至步骤504;否则,转至步骤503。
具体的,设备A向设备B发送删除消息后,可以启动一个重传定时器,并确定重传定时器超时前,是否接收到设备B返回的删除响应消息。
其中,设备B接收到设备A发送的删除消息后,根据该删除消息中携带的SPI(SPI1)和安全协议(ESP)查询对应的Child SA(SA b2),并根据设备A和设备B协商完成后建立的入方向Child SA和出方向Child SA的对应关系,查询SA b2对应的入方向Child SA(SA b1)。设备B删除查询到的Child SA(SA b1和SA b2),并向设备A返回删除响应消息。
步骤503、设备A判断向设备B发送该删除消息的次数是否超过阈值,若判断为是,则转至步骤504;否则,再次向设备B发送该删除消息,并转至步骤502;
具体的,设备A可以统计向设备B发送删除消息的次数,并当在重传定时器超时时设备A未接收到设备B返回的删除响应消息,设备A需要判断向设备B发送该删除消息(请求删除SPI为SPI1,安全协议为ESP的Child SA的删除消息)的次数是否超过阈值,若未超过阈值,则设备A需要向设备B重传该删除消息。
步骤504、设备A删除SA a1和SA a2。
具体的,设备A接收到设备B返回删除响应报文后,或,在未接收到设备B返回的删除响应报文,且删除消息的发送次数超过阈值时,设备A将待删除的Child SA(SA a1)以及该Child SA对应的出方向Child SA(SA a2)。
通过以上描述可以看出,在本发明实施例中,当设备需要删除Child SA时,该设备将待删除Child SA对应的出方向Child SA设置为不可用,并向对端设备发送携带该待删除Child SA的SPI和安全协议的删除消息;当该设备接收到对端设备返回的删除响应消息时,该设备删除该待删除Child SA以及该待删除Child SA对应的出方向Child SA,降低了错误删除Child SA的可能性。
基于上述方法流程相同的技术构思,本发明实施例还提供了一种删除Child SA的设备,可以用于上述方法实施例。
如图6所示,为本发明实施例提供的一种删除Child SA的设备的结构示意图,可以包括:
设置模块61,用于当所述设备需要删除Child SA时,将待删除Child SA对应的出方向Child SA设置为不可用;
第一接口模块62,用于向对端设备发送携带所述待删除Child SA的安全参数索引SPI和安全协议的删除消息;接收对端设备返回的删除响应消息;
第二接口模块63,用于接收删除消息;向删除消息的发送方设备返回删除响应消息;
第一删除模块64,用于当所述第一接口模块62接收到所述对端设备的删除响应消息时,删除所述待删除Child SA以及该待删除Child SA对应的出方向Child SA;
第二删除模块65,用于当所述第二接口模块63接收到删除消息时,删除该删除消息中携带的SPI和安全协议对应的Child SA,以及该Child SA对应的入方向Child SA,并通过所述第二接口模块63向删除消息的发送方设备返回删除响应消息。
其中,所述设置模块61具体用于,通过以下方式实现将待删除Child SA对应的出方向Child SA设置为不可用:
为所述待删除Child SA对应的出方向Child SA增加不可用标识;或,
将所述待删除Child SA对应的出方向Child SA保存到特定数据库,该特定数据库中的Child SA为不可用Child SA。
其中,所述设备还包括:
处理模块66,用于在所述第一接口模块62向所述对端设备发送删除消息之后,接收到所述对端设备返回的删除响应消息之前,所述设备接收到所述对端设备发送的加密报文时,该加密报文使用的Child SA的SPI和安全协议为所述待删除Child SA的SPI和安全协议,使用所述待删除Child SA对该加密报文进行解密。
需要注意的是,在本发明实施例中,该删除Child SA的设备可以为路由器、交换机、或者其他有建立SA需求的网络设备。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。