背景技术
目前,随着网络在社会上的广泛应用,用户对于网络的可靠性也提出了越来越高的要求。为了应对用户对网络可靠性的高要求,各种应对网络外部威胁的网络安全措施也越来越多。随着以太网的快速发展,对于网络内部的安全需求也与日俱增,基于此媒体接入控制安全(Media Access Control security,简称为MACsec)协议被开发并应用于局域网的数据保护。MACsec协议通过提供逐跳的安全性,对接入网络的终端的通信进行保护。由于MACsec协议只提供了对数据进行封装和加密的框架,它还需要其它协议来提供密钥管理、成员认证和授权等功能,因此MACsec密钥协商(MACsec Key Agreement protocol,简称为MKA)协议被制定出来,以满足MACsec协议对密钥的相关需求。IEEE 802.1X协议通过认证提供了基于端口的接入控制,而MKA协议则是该协议的一个扩展,其协议报文是扩展了类型的EAPoL(Extensible Authentication Protocol over LANs,基于局域网的扩展认证协议)报文,通过MKA协议报文的交互来发现MACsec成员并协商MACsec密钥。
为更好的理解现有技术,现对本发明中涉及到的MACsec与MKA协议作简要介绍。
MACsec协议与MKA协议一起提供对二层数据的保护,如图1所示,网络设备A、B、C之间通过互相认证和授权创建了一个安全连接联合(secure Connectivity Association,简称为CA),设备D不属于该CA。设备A、B、C之间使用相同的密钥安全联合密钥(Secure AssociationKey,简称为SAK)来完成数据通信,设备D虽然不在CA内,但仍可在共享网段内实现数据的收发,但由于设备D不拥有SAK,因此它的数据对A、B、C不会造成危害,如此CA内的成员设备A、B、C之间的数据通信的机密性和完整性得到了保护。
在上述描述中,MACsec协议负责使用密钥SAK完成对收发的数据进行加解密的控制,MKA协议负责发现CA内的成员,并通过协议交互生成密钥SAK,以提供给MACsec使用。CA使用安全连接联合密钥(secure Connectivity Association Key,简称为CAK)来标识,一个CA内的所有成员拥有相同的CAK。
图2描述的是一个典型的点到点的用户接入环境来描述MACsec协议与MKA协议运行的过程。如图2所示,终端设备与接入设备的一个端口直接相连,终端设备作为请求者,接入设备作为认证者,另外指定一个设备作为认证服务器。当请求者通过802.1X协议报文完成与认证者之间的认证会话后,此时请求者可以访问网络,此时请求者收发的数据如图中虚线所示,为不加密数据,该数据在局域网内容易受到攻击。当在请求者与认证者之间开启MACsec功能后,MKA会根据成功认证后生成的认证数据在请求者与认证者上都生成相同的pairwiseCAK(简称为成对CAK),此后认证者的MKA协议实体MACsec密钥协商实体(MAC SecurityKey Agreement Entity,简称为KaY)就作为密钥服务器生成一个密钥SAK,并通过协议报文将该密钥分发至请求者一端的KaY,如此请求者与认证者均拥有相同的密钥,就可以对数据进行加密通信了。
以上对简单的点到点的接入方式进行了描述,对于图1所示的多点接入的情况,此时形成的CA称为组CA,其标识则由group CAK(简称为组CAK)来表示。在组CA中,作为认证者的设备就作为密钥服务器,由于组CA内完成认证的各CA成员只有成对CAK,因此密钥服务器首先需要将组CAK通过协议报文分发给各CA成员,然后密钥服务器才能生成SAK,并继续将SAK分发给CA内的其它所有成员,各组CA成员接收SAK并安装后就可以对数据进行加密了。
综上所述,对于简单的点到点的接入方式,不需要对CAK分发,直接由密钥服务器生成SAK分发给请求者就可以完成对数据的加密通信。而在组CA的情况下,需要由密钥服务器生成组CAK,然后密钥服务器分发组CAK到CA的成员,此后再由密钥服务器生成密钥SAK,分发给CA的所有成员。MKA协议中对SAK的分发、安装与确认进行了详细的描述,对分发组CAK的要求也作了说明。
相关技术给出了组CAK分发的机制,但在MKA协议及相关技术中并未给出如何确认组CAK是否分发成功,且相关技术中CAK的分发为定时发送,未提供CAK分发终结处理,导致了对系统资源的浪费。
发明内容
本发明提供了一种组CAK的分发方法及装置,以至少解决相关技术中未给出如何确认组CAK是否分发成功的问题。
根据本发明的一个方面,提供了一种组安全连接联合密钥CAK的分发方法,包括:密钥服务器将组CAK报文分发至组CA的成员;密钥服务器判断是否在预定时间内接收到来自成员的保活报文;如果是,则密钥服务器将成员加入组CA成员列表。
优选地,密钥服务器将组CAK报文分发至组CA的成员,包括:密钥服务器使用成对CAK将组CAK加密后封装为组CAK报文,并将组CAK报文分发至组CA的成员。
优选地,密钥服务器将组CAK报文分发至组CA的成员之后,还包括:成员使用成对CAK解密组CAK报文得到组CAK并进行安装;成员向密钥服务器定时发送保活报文。
优选地,在密钥服务器判断是否在预定时间内接收到来自成员的保活报文之后,还包括:如果密钥服务器在预定时间内未收到保活报文,则重复向成员发送组CAK报文;密钥服务器判断在重复发送组CAK报文的次数达到预定阈值的情况下是否接收到来自成员的保活报文;如果是,则密钥服务器将成员加入组CA成员列表。
优选地,在密钥服务器判断在重复发送组CAK报文的次数达到预定阈值的情况下是否接收到来自成员的保活报文之后,还包括:在重复发送组CAK报文的次数达到预定阈值的情况下,密钥服务器未收到来自成员的保活报文,则停止向成员发送组CAK报文。
优选地,保活报文为密钥协商MKA协议中的hello报文。
优选地,密钥服务器为认证服务器,成员为PC或移动终端。
根据本发明的另一方面,提供了一种组安全连接联合密钥CAK的分发装置,包括:分发模块,用于将组CAK报文分发至组CA的成员;判断模块,用于判断是否在预定时间内接收到来自成员的保活报文;添加模块,用于在预定时间内接收到来自成员的保活报文的情况下,将成员加入组CA成员列表。
优选地,分发模块包括:封装单元,用于使用成对CAK将组CAK加密后封装为组CAK报文;分发单元,用于将组CAK报文分发至组CA的成员。
优选地,分发模块,还用于在预定时间内未收到保活报文的情况下,重复向成员发送组CAK报文;判断模块,还用于判断在重复发送组CAK报文的次数达到预定阈值的情况下是否接收到来自成员的保活报文;添加模块,还用于在重复发送组CAK报文的次数未超过预定阈值时接收到来自成员的保活报文的情况下,将成员加入组CA成员列表。
优选地,分发模块,还用于在重复发送组CAK报文的次数超过预定阈值时未收到来自成员的保活报文的情况下,停止向成员发送组CAK报文。
通过本发明,采用密钥服务器判断在预定时间内是否收到成员发送的保活报文,并将在预定时间内收到保活报文的成员加入CA成员列表的方法,解决了相关技术中未给出如何确认组CAK是否分发成功的问题,进而可以确认组CAK是否分发成功,提升了系统性能。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
基于相关技术仅给出了组CAK分发的机制,但却未给出如何确认组CAK是否分发成功的方法。本发明实施例提供了一种组CAK的分发方法,图3是根据本发明实施例的CAK的分发方法的流程图。如图3所示,该方法包括:
步骤S302,密钥服务器将组CAK报文分发至组CA的成员;
步骤S304,密钥服务器判断是否在预定时间内接收到来自成员的保活报文;
步骤S306,如果是,则密钥服务器将成员加入组CA成员列表。
通过本发明实施例,采用密钥服务器判断在预定时间内是否收到成员发送的保活报文,并将在预定时间内收到保活报文的成员加入CA成员列表的方法,解决了相关技术中未给出如何确认组CAK是否分发成功的问题,进而可以确认组CAK是否分发成功,提升了系统性能。
密钥服务器将组CAK报文分发至组CA的成员的过程中,还可以包括:密钥服务器使用成对CAK将组CAK加密后封装为组CAK报文,并将组CAK报文分发至组CA的成员。其中,成对CAK为pairwise CAK。保活报文可以为MKA协议中的hello报文。本实施例仅以MKA协议的组网环境为例,其中,分发组CAK报文与保活报文也为MKA协议中规定的,但本领域的技术人员应该知道,本发明并不限于MKA的协议报文。在实施过程中,分发组CAK至组CA的成员的步骤是一个必须的步骤,如果该成员还没有通过最初级的认证,即认证为可以与组CA的成员列表中的成员共享网段内数据的成员,密钥服务器是不会对其分发组CAK的,更不会执行后续操作。
密钥服务器将组CAK报文分发至组CA的成员之后,从成员侧的操作进行说明,则该成员可以使用成对CAK解密组CAK报文得到组CAK并进行安装;成员向密钥服务器定时发送保活报文。如果成员收到的是由除成对CAK以外的其它加密密钥加密的组CAK报文,则该成员也可以使用其它加密密钥对该组CAK报文进行解密。
在对组CAK报文解密后,得到由密钥服务器发送的组CAK,安装该组CAK。在安装之后,成员会向密钥服务器发送保活报文,以告知密钥服务器自身收到组CAK报文并对其进行了解密、安装。该保活报文的发送可以是定时的,当然,在成员允许的情况下,可以只发固定次数的保活报文,例如,在极端的情况下,可以只设置发送一次保活报文,但通常情况下,可以设置发送4次、5次等。设置发送次数与定时发送所达到的效果是相同的,都是为了确保密钥服务器可以收到保活报文。
在设置上,密钥服务器可以为具有认证功能的认证服务设备,认证系统为IEEE 802.1X认证系统,成员可以为PC、平板电脑、蓝牙设备等终端。多种终端设备的接入体现了系统强大的兼容性。
在步骤S304中,判断是否在预定时间内接收到来自成员的保活报文包括两种情况,根据不同的情况执行相应的操作。步骤S306描述的是第一种情况(即密钥服务器在预定时间内收到保活报文的情况)下的相关操作,下面将对另一种情况下的操作进行说明。入托密钥服务器在预定时间内未收到保活报文,则重复向成员发送组CAK报文;密钥服务器判断在重复发送组CAK报文的次数达到预定阈值的情况下是否接收到来自成员的保活报文;如果是,则密钥服务器将成员加入组CA成员列表。
在实施过程中,在重复分发组CAK报文的过程中,可以根据考虑问题的不同方面去设定发送次数的预定阈值。当考虑到系统效率的问题时,则可以考虑将发送次数的预定阈值设置为偏小,当考虑到系统访问质量的问题时,又可以将发送次数的预定阈值设置为偏大,若两者皆考虑周全,则可以取两者预设阈值的中间值为最佳预设阈值,还可以根据相关数学方式计算最佳预设阈值,例如,根据相关值得出抛物线的最高点作为最佳预设阈值,还可以根据相关值得出正态分布的期望作为最佳预设阈值。优选地,组CAK发送次数的预设阈值设置为三次。
如果在密钥服务器判断在重复发送组CAK报文的次数达到预定阈值的情况下,密钥服务器仍未接收到来自成员的保活报文,则停止向成员发送组CAK报文。该过程提供CAK分发终结处理,解决了系统资源的浪费,达到了节省系统资源的目的。
由本发明实施例提供组CAK的分发方法可以看出,在本发明实施例中,利用MKA协议中已定义的协议报文来完成确认组CAK分发是否成功的处理,并未引入额外的报文定义,在此基础上,还提供了一种组CAK分发次数超时规定,从而使得组CA内的用户加入流程得以加速收敛,避免在组CAK在分发失败时导致系统设备或用户处于空耗阶段,从而提升了系统网络的质量。进而,可以很好解决确认组CAK分发是否成功及加快CA成员快速收敛,从而保护网络上业务不受影响。
优选实施例一
相关技术中对于多点接入形成的组CA,需要密钥服务器分发组CAK时,没有一种确认组CAK分发是否成功的方法。本实施例提供了一种组CAK分发的方法,并对分发组CAK失败的情况提供了解决方案。图4是根据本发明优选实施例一的密钥服务器分发组CAK报文的流程图,如图4所示,该方法包括以下步骤:
步骤402,成员认证开始;
步骤404,判断成员认证是否成功。如果成员认证成功,则MKA在密钥服务器生成成对CAK,并继续执行步骤406;如果成员认证失败,则转到步骤418;
步骤406,密钥服务器使用成对CAK对组CAK加密后封装到报文内,分发组CAK;
步骤408,检查密钥服务器分发组CAK次数是否达到预设阈值。若达到预设阈值,则转到步骤410,若未达到预设阈值,则继续执行步骤412;
步骤410,密钥服务器通知MACsec与该用户的MKA协商失败,该用户不能加入CA,用户的通信数据将不受MACsec保护,转到步骤418;
步骤412,向成员发送分发组CAK的报文;
步骤414,当一次分发报文发送成功后,判断是否在指定时间内收到成员发送的保活报文。若密钥服务器在指定时间内收到该成员设备发送的保活报文,则继续执行步骤416,若密钥服务器在指定时间没有收到该成员设备发送的保活报文,则转到步骤406;
步骤416,密钥服务器添加该成员至成员列表,对该成员的组CAK分发结束;
步骤418,流程结束。
优选实施例二
在密钥服务器分发组CAK的过程中,成员设备也互动执行相应的操作。如图5所示,是根据本发明优选实施例二的成员接收组CAK报文的流程图,该流程包括如下步骤:
步骤502,成员开始认证;
步骤504,判断认证是否成功。如果成员认证成功,则MKA在成员上生成成对CAK,并继续执行步骤506,如果成员认证失败,则转到步骤516;
步骤506,成员开始等待接收密钥服务器分发组CAK的报文,判断等待时间是否超时。若等待时间超时,则转到步骤508,若等待时间未超时,则转到步骤510;
步骤508,成员与密钥服务器MKA协商失败,用户数据将不使用密钥解密被加密的数据,转到步骤516;
步骤510,判断是否收到分发的组CAK报文。若成员收到密钥服务器分发组CAK报文,则继续执行步骤512,若未收到密钥服务器分发组CAK的报文,则转到步骤506,并继续等待接收报文;
步骤512,成员使用成对CAK解析报文并安装组CAK;
步骤514,成员开始定时发送保活报文;
步骤516,流程结束。
本发明实施例还提供了一种组CAK的分发装置,如图6所示,是根据本发明实施例的组CAK的分发装置的结构框图一,该装置包括:分发模块10,用于将组CAK报文分发至组CA的成员;判断模块20,用于判断是否在预定时间内接收到来自成员的保活报文;添加模块30,用于在预定时间内接收到来自成员的保活报文的情况下,将成员加入组CA成员列表。分发模块10、判断模块20以及添加模块30依次耦合。
图7是根据本发明实施例的组CAK的分发装置的结构框图二。如图7所示,分发模块10包括:封装单元102,用于使用成对CAK将组CAK加密后封装为组CAK报文;分发单元104,与封装单元102耦合,用于将组CAK报文分发至组CA的成员。
分发模块10,还用于在预定时间内未收到保活报文的情况下,重复向成员发送组CAK报文,且还用于在重复发送组CAK报文的次数超过预定阈值时未收到来自成员的保活报文的情况下,停止向成员发送组CAK报文;判断模块20,还用于判断在重复发送组CAK报文的次数达到预定阈值的情况下是否接收到来自成员的保活报文;添加模块30,还用于在重复发送组CAK报文的次数未超过预定阈值时接收到来自成员的保活报文的情况下,将成员加入组CA成员列表。
下面结合图6对本发明实施例的组CAK的分发装置进行进一步说明。
分发模块10在成员通过认证后,开始对成员分发组CAK报文,判断模块20判断是否在预定时间内接收到来自成员的报文,如果在预定时间内接收到来自成员的保活报文,则触发添加模块30,添加模块30将该成员加入到组CA成员列表中。如果在预定时间内接未收到来自成员的保活报文,则触发分发模块10重复向成员发送组CAK报文。在这种情况下,判断模块20判断在重复发送组CAK报文的次数达到预定阈值的情况下是否接收到来自成员的保活报文,如果重复发送组CAK报文的次数未超过预定阈值时接收到来自成员的保活报文,则再次触发添加模块30,添加模块30将成员加入组CA成员列表。如果重复发送组CAK报文的次数超过预定阈值时,仍未收到来自成员的保活报文,则分发模块10停止向成员发送组CAK报文。
从以上的描述中,可以看出,本发明实现了如下技术效果:
从上述各实施例可以得出,本发明实施例可以使得组CA内的用户加入流程得以加速收敛,确保CA成员快速生成,最终保障用户可以安全的访问网络且保证了用户访问网络的质量,进而提高了分发效率,提升了系统的性能。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。