一种实现组安全联盟共享的方法

文档序号:7897863阅读:147来源:国知局
专利名称:一种实现组安全联盟共享的方法
技术领域
本发明涉及安全传输技术,特别是指一种在群组中实现组安全联盟共享的方法。
背景技术
在TCP/IP网络中,IPsec是在IP层保护点到点流量的通用机制。IPsec主要通过封装安全载荷(ESP)和验证头(AH)协议来保护流量,其中,ESP能通过加密报文来提供报文的保密性,ESP也能够提供源验证、完整性保护和防回放(replay)攻击能力;AH协议为报文提供源验证、完整性保护和防回放保护。ESP和AH协议工作的先决条件是两个端点间存在安全联盟(SA,SecurityAssociation),这样就可以根据SA,在IPsec所保护的源端点和目的端点间来决定对报文采用何种处理方式。这里,所述的安全联盟包括安全算法、安全服务、算法参数等内容。因此,要使用ESP和AH协议,就需要在IPsec的源端点和目的端点之间建立安全联盟,包括协商密钥,建立安全联盟的工作一般是由因特网密钥交换协议(IKE)来完成的。
目前,IKE只能支持点到点安全联盟的建立,也就是说只能在两个节点间建立安全联盟,而不能在超过两个节点的群组中使用IKE来建立多节点共用的安全联盟。IKE在两个节点间建立安全联盟具体包括两个阶段第一阶段是初始交换(INITIAL EXCHANGE),建立安全联盟的发起端与响应端之间通过DH算法产生一个密钥,同时完成两端节点间的相互身份验证,创建IKE_SA,该IKE_SA用来保护第二阶段的交换。第二阶段主要是创建CHILD_SA交换(CREAT_CHILD_SA_EXCHANGE),建立安全联盟的发起端与响应端之间采用DH算法或其它加密算法产生一个CHILD_SA,该CHILD_SA在使用ESP和AH协议时用于保护数据流量,在产生CHILD_SA过程中所使用的密钥SK就是第一阶段产生的IKE_SA。第二阶段还可以包括信息交换(INFORMATIONAL EXCHANGE),用来在IKE的两个端点间传输一些数据信息。总之,在IKE中,创建CHILD_SA交换和信息交换只有在初始交换完成后才能进行。
由于IKE只能在群组中的任意两个节点之间直接建立安全联盟,所以IKE就无法在组播通信中使用,因为在组播通信中,一个源接点发出的报文通常需要发送给多个目的节点,由于SA创建、SA查找和SA加密的成本问题,在组播中不可能在源和每个目的节点之间使用不同的SA,必须在同一组播组中使用同一个SA。那么,要想在整个群组中全部使用同一安全联盟,就必须存在一个安全的方式将这个安全联盟通知给其他的群组成员。
因特网工程任务组(IETF)的Msec工作组定义了一套完整的框架和协议来支持群组内建立和发布安全联盟,其中,在组安全联盟模型中定义了几个协议,包括登记协议,是组控制器/密钥服务器(GCKS)和组成员之间的双向单播协议,通过该协议GCKS可验证加入的组成员,并且为组成员提供Re-key协议和Data security协议安全联盟的信息;Re-key协议,负责周期性地向组成员发送Re-key信息;数据安全协议(Data Security Protocol),可支持组播源向组成员安全地发送报文。但是,Msec所提出的解决方式需要设计大量的新协议,增加了安全联盟开发和部署的难度。

发明内容
有鉴于此,本发明的主要目的在于提供一种实现组安全联盟共享的方法,其能在IPsec框架下,支持组播通信中采用一个共享的安全联盟。
为达到上述目的,本发明的技术方案是这样实现的一种实现组安全联盟共享的方法,该方法包括a.组播源节点接收节点的创建安全联盟SA请求,判断当前请求节点所属组是否已存在共享CHILD_SA,如果已存在,则执行步骤b;否则,组播源节点与当前请求节点创建安全联盟,生成共享CHILD_SA,并记录当前请求节点为其所属组的传播节点,结束当前流程;b.通知当前请求节点从其所属组的传播节点获取共享CHILD_SA;当前请求节点向本组的传播节点发送获取请求,本组的传播节点使用两点间建立的安全联盟将共享CHILD_SA发送给当前请求节点。
其中,步骤a进一步包括创建安全联盟生成共享CHILD_SA后,所述组播源节点向所述传播节点发送义务向组中其它节点成员发共享CHILD_SA的指示。
步骤b中当前请求节点向本组传播节点发送获取请求之前进一步包括当前请求节点判断是否已与本组传播节点建立安全联盟,如果是,则使用已建立的安全联盟;否则,先与本组传播节点建立两点间的安全联盟。
该方法进一步包括将同一组播组的所有节点划分为一个以上组播子组。这里,是根据每个节点的IP地址或域名将同一组播组的所有节点划分为一个以上组播子组。
上述方案中,步骤a中所述记录为记录当前请求节点为其所属组播组和所属组播子组的传播节点;则步骤b之前进一步包括确定当前请求节点所属组播子组,判断该子组是否已存在传播节点,如果存在,则通知当前请求节点从其所属组播子组的传播节点获取共享CHILD_SA;当前请求节点向本子组的传播节点发送获取请求,本子组的传播节点使用两点间建立的安全联盟将共享CHILD_SA发送给当前请求节点;否则,通知当前请求节点从其所属组播组的传播节点获取共享CHILD_SA;当前请求节点向本组的传播节点发送获取请求,本组的传播节点使用两点间建立的安全联盟将共享CHILD_SA发送给当前请求节点。
上述方案中,所述组播源节点为组播源/组播控制器,或为负责组播源节点管理的服务器。其中,所述负责组播源节点管理的服务器为组控制器和密钥服务器。
上述方案中,所述组播源节点根据当前请求节点的IP地址或域名来确定该请求节点所属的组播组或组播子组。
该方法进一步包括确定当前请求节点所属组播组或组播子组的同时,采用组播传输中的组管理协议完成当前请求节点的身份验证。
该方法进一步包括组播源节点与组播组中一个节点Ai产生共享CHILD_SA后,以广播方式通知该组播组的其余节点从节点Ai获取共享CHILD_SA。
因此,本发明所提供的实现组安全联盟共享的方法,对现有的IKE进行了扩展,组播源节点只与组播组中的某个节点创建安全联盟、生成共享CHILD_SA,该组中的其它节点再向组播源节点发送创建SA请求时,组播源节点只需通知该请求节点向已生成CHILD_SA的节点索取共享CHILD_SA,该请求节点再采用现有IKE与已生成CHILD_SA节点创建两点间的SA并获取共享CHILD_SA,如此,不仅能够在IPsec框架下以尽量少地改动支持多播节点共享同一SA,而且,避免了每个组成员都与组播源节点创建SA、生成CHILD_SA所带来的大量资源消耗,减少了组播源节点的负荷。另外,扩展目前已存在的协议来支持组安全联盟管理,不需要重新发明一套新协议,使实现的复杂度大大降低,更易于与现有技术融合。
本发明在组播组中任意的两个节点间,仍采用生成IKE_SA的方式来保护CHILD_SA的传输,因此能保证安全地传输共享CHILD_SA。本发明还可将同一组的节点根据需要划分成多个小组,每个小组中只有一个节点从已生成CHILD_SA节点获取共享CHILD_SA,而该小组的其它节点均从该节点获得共享CHILD_SA,这样使创建SA尽可能分布化,减少了传输共享CHILD_SA节点的负荷。


图1为本发明方法一实施例实现的流程示意图。
图2为本发明方法另一实施例实现的流程示意图。
具体实施例方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明的基本思想就是在组播组中,组播源节点只与该组中第一个发起创建SA请求的节点创建安全联盟,生成共享CHILD_SA,组中其它节点再向组播源节点发起创建SA请求时,组播源节点通知该发起创建SA请求的节点从已生成共享CHILD_SA节点获取共享CHILD_SA,该发起创建SA请求的节点再与已生成共享CHILD_SA节点创建两节点间的IKE_SA,已生成共享CHILD_SA节点利用所创建的IKE_SA向发起创建SA请求的节点发送共享CHILD_SA。
这里,组播源节点可以是组播源/组播控制器,也可以是与组播源密切相关的、负责该组播源管理的服务器,比如组控制器和密钥服务器(GCKS,GroupController and Key Server)。
以组播源节点为组播源/组播控制器S为例,本发明实现组安全联盟共享的具体流程如图1所示,包括以下步骤步骤101组播源S接收某个节点发来的创建SA请求;步骤102~104组播源S判断当前请求节点所属组播组是否已存在共享CHILD_SA,如果已存在,则执行步骤105;如果未存在,则组播源S与当前请求节点之间通过IKE两个阶段的交换,产生一个IKE_SA和一个共享CHILD_SA,该共享CHILD_SA作为保护组播数据流量的SA。
然后,组播源S记录当前请求节点为其所属组播组的传播节点,并通过IKE的信息交换INFORMATIONAL EXCHANGE向该传播节点发出指示,指示该节点有义务向本组其他成员发送所创建的共享CHILD_SA。
其中,当前请求节点与组播源S之间通过IKE两个阶段的交换就是指IKE中的初始交换和创建CHILD_SA交换,当前请求节点与组播源S之间的信息交换受步骤103中产生的IKE_SA保护。
步骤102中,组播源S可以根据当前请求节点在创建SA请求中所携带的IP地址段或域名等信息确定其所属的组播组。
步骤105~106组播源S通知当前请求节点向该组的传播节点索取共享CHILD_SA;当前请求节点判断一下是否与本组的传播节点之间已存在安全联盟,如果未存在,则创建该两点间的安全联盟,产生IKE_SA(传播节点,当前请求节点),如果已存在,则不必再创建,使用已有的IKE_SA(传播节点,当前请求节点);然后,当前请求节点向本组的传播节点发送获取请求,传播节点使用当前的IKE_SA(传播节点,当前请求节点)将共享CHILD_SA发送给当前请求节点,则当前请求节点共享组安全联盟。
同理,同一组中的任意节点均可重复执行上述步骤,从该组的传播节点获得共享CHILD_SA,共享组安全联盟。
假定A0、A1......An为同一组播组节点成员,A0为第一个向S发起创建SA的节点,且A0与组中其它任何成员都未建立两点间的安全联盟,那么,A0与A1......An共享安全联盟的实现过程是1)组播源S接收到A0发起的创建SA请求后,判断A0所属组播组是否已存在共享CHILD_SA,发现未存在,则A0与S之间通过IKE两个阶段的交换,产生一个IKE_SA和一个共享CHILD_SA;然后,组播源S记录A0为本组的传播节点,并指示A0有义务向组中其它成员发送所创建的共享CHILD_SA。
2)组播源S接收到A1的创建SA请求后,判断A1所属组播组是否已存在共享CHILD_SA,发现已存在且该组的传播节点为A0,则组播源S通知A1向A0索取共享CHILD_SA;A1发现与A0之间不存在安全联盟,则先创建该两点间的安全联盟,产生IKE_SA(A0,A1),之后,A1向A0发送获取请求,A0使用当前的IKE_SA(A0,A1)将共享CHILD_SA发送给A1,则A0与A1共享同一安全联盟。
同理,其它任意一个与A0同组的组播节点均从A0获得共享CHILD_SA,也就是说,对于A2、A3...An再向组播源S发送创建组播SA请求,均可依次类推,从A0获得共享CHILD_SA。
为了减轻A0的负荷,避免单个节点负载过重,组播源S还可将同一组播组的若干个成员按域划分为一个以上组播子组,比如根据IP地址或域名划分。在每个组播子组中,第一个从A0获取共享CHILD_SA的节点作为该组播子组的传播节点,也就是说,该组播子组其余节点再向组播源S发送创建组播SA请求时,组播源S会通知当前的请求节点从该组播子组的传播节点获取共享CHILD_SA,而不必从A0获取。
组播源S对每个组播子组进行统一管理和调度,即组播源S需要对每个向自身发起创建组播SA请求的节点进行判断,确定其所属的组播子组,再判断该组播子组是否已存在传播节点,如果有,则通知当前发请求的节点从其所属组播子组的传播节点获取共享CHILD_SA;如果没有,则组播源S需要通知当前发请求的节点从A0获取共享CHILD_SA,并记录该节点为该组播子组的传播节点。
组播源S将同一组播组成员划分为多个组播子组的情况下,本实施例中实现组安全联盟共享的具体流程如图2所示,包括以下步骤步骤201~204组播源S接收某个节点发来的创建SA请求;组播源S判断当前请求节点所属组播组是否已存在共享CHILD_SA,如果已存在,则执行步骤105;如果未存在,则组播源S与当前请求节点之间通过IKE两个阶段的交换,产生一个IKE_SA和一个共享CHILD_SA,该共享CHILD_SA作为保护组播数据流量的SA。
然后,组播源S记录当前请求节点为其所属组播组和组播子组的传播节点,并向该传播节点发出指示,指示该节点有义务向本组其他成员发送所创建的共享CHILD_SA。
步骤202中,组播源S可以根据当前请求节点在创建SA请求中所携带的IP地址段或域名等信息确定其所属的组播组和组播子组。
步骤205~207组播源S确定当前请求节点所属的组播子组,判断该组播子组是否已有传播节点,如果有,则执行步骤209;否则,组播源S通知当前请求节点从本组的传播节点获取共享CHILD_SA,并记录当前请求节点为其所属组播子组的传播节点,然后,组播源S指示当前请求节点有义务为本组播子组的其它节点传输共享CHILD_SA,执行步骤208。
步骤208当前请求节点判断一下是否与本组的传播节点之间已存在安全联盟,如果未存在,则创建该两点间的安全联盟,产生IKE_SA(传播节点,当前请求节点),如果已存在,则不必再创建,使用已有的IKE_SA(传播节点,当前请求节点);然后,当前请求节点向本组的传播节点发送获取请求,传播节点使用当前的IKE_SA(传播节点,当前请求节点)将共享CHILD_SA发送给当前请求节点,则当前请求节点共享组安全联盟,结束当前流程。
步骤209组播源S通知当前请求节点从其所属组播子组的传播节点获取共享CHILD_SA。
步骤210当前请求节点判断一下是否与本子组的传播节点之间已存在安全联盟,如果未存在,则创建该两点间的安全联盟,产生IKE_SA(本子组传播节点,当前请求节点),如果已存在,则不必再创建,使用已有的IKE_SA(本子组传播节点,当前请求节点);然后,当前请求节点向本子组的传播节点发送获取请求,当前请求节点所属子组的传播节点使用当前的IKE_SA(本子组传播节点,当前请求节点)将共享CHILD_SA发送给当前请求节点,则当前请求节点共享组安全联盟。
举个例子,假设A0、A1......An为同一组播组节点成员为例,组播源S将A0、A1......An按IP地址不同分为m组A10、A11......A1i;A20、A21......A2j;.....;Am0、Am1......Amn。其中,A10为与组播源S创建安全联盟,产生共享CHILD_SA的节点,那么,A0与A1......An共享安全联盟的实现过程是组播源S与A10产生共享CHILD_SA后,如果当前收到A11的创建组播SA请求,则组播源S确定A11与A10属于同一组播子组,就通知A11从A10获取共享CHILD_SA,于是,A11与A10之间创建安全联盟IKE_SA(A10,A11),A10使用IKE_SA(A10,A11)发送共享CHILD_SA给A11。
如果当前收到A20的创建组播SA请求,则组播源S确定A20与A10不属于同一组播子组,且A20所属的组播子组还没有传播节点,就通知A20从A10获取共享CHILD_SA,且记录A20为其所属组播子组的传播节点,并指示A20有义务为其他本组播子组的节点传输共享CHILD_SA,然后,A20与A10之间创建安全联盟IKE_SA(A10,A20),A10使用IKE_SA(A10,A20)发送共享CHILD_SA给A20。
以后,组播源S再收到A21的创建组播SA请求,就会通知其从A20获取共享CHILD_SA,而不是从A10获取,其它所有节点都以此类推。
在上述实现方案中,确定当前发请求的节点所属组播组或组播子组的步骤,可以同组播传输中的组管理协议结合起来,以完成组成员,即当前请求节点的身份验证。
在上述实现方案中,组播源S与某个节点Ai产生共享CHILD_SA,也可以采用广播方式通知本组播组的成员从Ai获取共享CHILD_SA,那么,同组的节点以后就直接与Ai建立安全联盟,从Ai获取共享CHILD_SA即可。
以上所述,仅为本发明的较佳实施例而已,并非用来限定本发明的保护范围。
权利要求
1.一种实现组安全联盟共享的方法,其特征在于,该方法包括a.组播源节点接收节点的创建安全联盟SA请求,判断当前请求节点所属组是否已存在共享CHILD_SA,如果已存在,则执行步骤b;否则,组播源节点与当前请求节点创建安全联盟,生成共享CHILD_SA,并记录当前请求节点为其所属组的传播节点,结束当前流程;b.通知当前请求节点从其所属组的传播节点获取共享CHILD_SA;当前请求节点向本组的传播节点发送获取请求,本组的传播节点使用两点间建立的安全联盟将共享CHILD_SA发送给当前请求节点。
2.根据权利要求1所述的方法,其特征在于,步骤a进一步包括创建安全联盟生成共享CHILD_SA后,所述组播源节点向所述传播节点发送义务向组中其它节点成员发共享CHILD_SA的指示。
3.根据权利要求1所述的方法,其特征在于,步骤b中当前请求节点向本组传播节点发送获取请求之前进一步包括当前请求节点判断是否已与本组传播节点建立安全联盟,如果是,则使用已建立的安全联盟;否则,先与本组传播节点建立两点间的安全联盟。
4.根据权利要求1所述的方法,其特征在于,该方法进一步包括将同一组播组的所有节点划分为一个以上组播子组。
5.根据权利要求4所述的方法,其特征在于,该方法进一步包括根据每个节点的IP地址或域名将同一组播组的所有节点划分为一个以上组播子组。
6.根据权利要求4所述的方法,其特征在于,步骤a中所述记录为记录当前请求节点为其所属组播组和所属组播子组的传播节点;则步骤b之前进一步包括确定当前请求节点所属组播子组,判断该子组是否已存在传播节点,如果存在,则通知当前请求节点从其所属组播子组的传播节点获取共享CHILD_SA;当前请求节点向本子组的传播节点发送获取请求,本子组的传播节点使用两点间建立的安全联盟将共享CHILD_SA发送给当前请求节点;否则,通知当前请求节点从其所属组播组的传播节点获取共享CHILD_SA;当前请求节点向本组的传播节点发送获取请求,本组的传播节点使用两点间建立的安全联盟将共享CHILD_SA发送给当前请求节点。
7.根据权利要求1或6所述的方法,其特征在于,所述组播源节点为组播源/组播控制器,或为负责组播源节点管理的服务器。
8.根据权利要求1或6所述的方法,其特征在于,所述组播源节点根据当前请求节点的IP地址或域名来确定该请求节点所属的组播组或组播子组。
9.根据权利要求1或6所述的方法,其特征在于,该方法进一步包括确定当前请求节点所属组播组或组播子组的同时,采用组播传输中的组管理协议完成当前请求节点的身份验证。
10.根据权利要求1所述的方法,其特征在于,该方法进一步包括组播源节点与组播组中一个节点Ai产生共享CHILD_SA后,以广播方式通知该组播组的其余节点从节点Ai获取共享CHILD_SA。
全文摘要
本发明公开了一种实现组安全联盟共享的方法,在组播组中,组播源节点只与该组中第一个发起创建SA请求的节点创建安全联盟,生成共享CHILD_SA,组中其它节点再向组播源节点发起创建SA请求时,组播源节点通知该发起创建SA请求的节点从已生成共享CHILD_SA节点获取共享CHILD_SA,该发起创建SA请求的节点再与已生成共享CHILD_SA节点创建两节点间的IKE_SA,已生成共享CHILD_SA节点利用所创建的IKE_SA向发起创建SA请求的节点发送共享CHILD_SA。该方法能在IPsec框架下,支持组播通信中采用一个共享的安全联盟。
文档编号H04Q3/545GK1585339SQ0315393
公开日2005年2月23日 申请日期2003年8月20日 优先权日2003年8月20日
发明者苗福友 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1