会话秘钥生成方法、控制设备和设备集群系统与流程
未命名
09-09
阅读:77
评论:0

1.本技术涉及通信技术领域,尤其涉及一种会话秘钥生成方法、控制设备和设备集群系统。
背景技术:
2.在分布式存储系统、微服务系统或云计算系统等设备集群系统中,通常包括多个控制设备,该控制设备可以理解为计算机、服务器、虚拟计算机或控制器等可以运行软件程序的设备。
3.每个控制设备上可以部署一个或多个服务组件,服务组件可以理解为软件程序,服务组件可以为用户终端或其他服务组件提供服务。例如,部署在控制设备b上的第二服务组件可以为部署在控制设备a上的第一服务组件提供服务,如数据存取服务等。为了保证数据传输的安全性,第二服务组件在为第一服务组件提供服务时,即第二服务组件在与第一服务组件建立会话时,要对第一服务组件进行身份认证。
4.目前,每个服务组件具有唯一对应的数字证书,服务组件之间可以通过数字证书进行认证。然而,数字证书的认证速度较低,无法满足大规模高效能的业务需求。
技术实现要素:
5.本技术实施例提供一种会话秘钥生成方法、控制设备和设备集群系统,可以提高认证效率,提高系统性能。
6.第一方面,本技术实施例提供一种控制设备,为方便理解,下文中将该控制设备称为第一控制设备,第一控制设备应用于设备集群系统中。设备集群系统中可以包括多个控制设备,其中,第一控制设备可以包括秘钥分发中心kdc和第一服务组件,第一服务组件中部署有第一秘钥分发实体kde。
7.kdc可以用于:响应于第一kde的秘钥申请请求,为第一kde提供秘钥生成信息。第一kde用于根据kdc提供的秘钥生成信息生成第一实体秘钥。
8.第一kde可以用于在与另一控制设备的服务组件的第二kde建立会话的过程中,向第二kde发送第一kde的标识信息和kdc的标识信息,以使第二kde根据第二kde的实体秘钥、第一kde的标识信息和kdc的标识信息,生成用于第一kde和第二kde之间进行认证的会话密钥;第一kde接收第二kde发送的第二kde的标识信息和kdc的标识信息,根据第一实体秘钥、第二kde的标识信息和kdc的标识信息,生成用于第一kde和第二kde之间进行认证的会话密钥。
9.本技术实施例中,控制设备内的服务组件中均部署有kde,不同控制设备中的两个服务组件之间可以通过服务组件内部署的kde进行认证和建立会话。在会话建立过程中,两个kde协商生成会话秘钥,并基于确定的会话秘钥进行认证,而无需通过数字证书进行认证,降低了管理复杂度;同时,也无需使用复杂的数字证书认证算法,可以提高认证效率,提高系统性能。
10.并且,由两个kde协商生成会话秘钥,而无需在两个kde建立会话时,由其中一个kde向kdc申请此次会话的会话秘钥,即无需kde在每次建立会话之前均访问kdc,从而可以大量减少kde与kdc的通信次数,减少kdc被访问的次数,避免因大量访问kdc造成阻塞带来的性能瓶颈,且可以降低kdc的数据处理压力,提高kdc的性能和可靠性。同时,可以避免由kdc保存所有会话的会话秘钥,导致kdc被入侵带来整个系统失去安全性的问题。
11.本技术实施例中,第一kde和第二kde在协商生成会话秘钥的过程中,所使用的第一kde的标识信息、第二kde的标识信息均是唯一的,因此协商生成的会话秘钥也具有唯一性,可以防止外部的恶意攻击,提高会话安全性。
12.在一种可能的实现方式中,第一控制设备中可以包括多个服务组件,每个服务组件中均部署有kde,第一kde可以是多个服务组件的kde中的任意一个,或者说,第一kde可以是第一控制设备的任意一个服务组件中的kde。第二控制设备中也可以包括多个服务组件,每个服务组件中均部署有kde,第二kde也可以是多个服务组件的kde中的任意一个,或者说,第二kde可以是第二控制设备的任意一个服务组件中的kde。第一控制设备和第二控制设备均为上述设备集群系统中的设备。
13.在一种可能的实现方式中,第一控制设备中还可以包括秘钥分发代理kda,kda用于保存第一控制设备内的各个服务组件中包括的kde的实体秘钥,其中包括第一实体秘钥;相对应地,第一kde还用于在生成第一实体秘钥之后,可以将第一实体秘钥保存在第一控制设备的kda中,并在每次启动时,从第一控制设备的kda中获取第一实体秘钥。
14.上述实施例中,第一控制设备中部署有kda,用于保存第一控制设备内的各个服务组件中包括的kde的实体秘钥。各个kde可以仅在首次启动或实体秘钥丢失时,才获取主kdc提供的秘钥生成信息,并生成实体秘钥,保存在kda中。在每次启动时,可以从kda中获取实体秘钥,而无需再从kdc获取秘钥生成信息,可以进一步降低kdc的数据处理压力。同时,kde无需每次启动时生成实体秘钥,也可以减少kde所占用的计算资源。另外,由kda保存第一控制设备内的各个kde的实体秘钥,避免了多个kde分别保存自身的实体秘钥,无法在每个kde中分别部署安全存储机制带来的秘钥安全存储难题,可以提高实体秘钥的安全性,减少秘钥泄漏的风险。
15.在一种可能的实现方式中,第一控制设备的kda还可以用于:接收第一kde发送的秘钥申请请求,并向kdc转发第一kde的秘钥申请请求;以及接收kdc发送的秘钥生成信息,并向第一kde转发该秘钥生成信息。
16.上述设备集群系统中,与kda部署在同一控制设备内的各个kde均可以通过该kda进行数据通信与kdc进行数据通信。由于一个控制设备内具有多个服务组件,每个服务组件中均部署有一个kde,多个服务组件中的kde通过一个kda与kdc连接,与kdc连接的kda的数量远小于kde的数量,因此可以减少所占用的kdc对外通信接口的数量,减轻kdc的对外通信压力。
17.在一种可能的实现方式中,kdc还可以用于:接收并保存设备集群系统中包含的各个kde的注册信息;以及在接收到第一kde的秘钥申请请求时,将秘钥申请请求中携带的秘钥申请信息与保存的第一kde的注册信息进行一致性验证,且在验证通过后为第一kde提供秘钥生成信息。
18.上述实施例中,kdc无论作为主kdc或备kdc时,均可以保存各个kde的注册信息,以
备在作为主kdc时,对kde发送的秘钥申请请求中携带的秘钥申请信息进行验证,因此,在进行主备倒换时,无需各kdc之间进行数据同步,避免出现主备倒换时kdc之间数据同步的难题。
19.在一种可能的实现方式中,第一kde还可以用于:获取并保存所述kdc的标识信息和中心秘钥,在与第二kde协商生成会话秘钥时,第一kde可以根据kdc的标识信息,获取kdc的中心秘钥,并根据第一实体秘钥、第二kde的标识信息和kdc的中心秘钥生成会话秘钥。
20.示例性地,设备集群系统中可以部署多个kdc,不同的kdc部署于设备集群系统中的不同控制设备内;多个kdc中可以包括主kdc和备kdc。第一kde可以用于:获取并保存设备集群系统中包含的各个kdc的标识信息和中心秘钥。主kdc可以用于响应于第一kde的秘钥申请请求,为第一kde提供秘钥生成信息。例如,kda接收第一kde发送的秘钥申请请求后,可以向主kdc转发第一kde的秘钥申请请求;以及接收主kdc发送的秘钥生成信息,并向第一kde转发秘钥生成信息,第一kde根据主kdc提供的秘钥生成信息生成第一实体秘钥。在与第二kde协商生成会话秘钥时,第一kde可以根据主kdc的标识信息,获取主kdc的中心秘钥,并根据第一实体秘钥、第二kde的标识信息和主kdc的中心秘钥生成会话秘钥。
21.上述实施例中,每个kde中均保存有各个kdc的标识信息和中心秘钥,两个kde协商生成会话秘钥时,相互发送主kdc的标识信息,即协商确定主kdc,从而可以使第一kde和第二kde基于相同的主kdc的中心秘钥生成会话秘钥,避免由于使用的主kdc的中心秘钥不一致而导致的会话秘钥不一致的情况。并且,每个kde中存储有各个kdc的中心秘钥,两个kde以协商的方式确定共同使用的kdc,可以避免在kdc主备倒换时,数据不同步的问题,以解决主备倒换时如何实现两个kde秘钥同步的难题。
22.在一种可能的实现方式中,kdc还可以用于:接收管理节点发送的秘钥吊销指令,对秘钥吊销指令中携带的吊销列表进行签名并分发至kdc的备kdc;吊销列表中包括被泄漏的实体秘钥对应的kde的标识信息和/或被泄漏的中心秘钥对应的kdc的标识信息。
23.上述实施例中,通过秘钥吊销指令将泄漏的秘钥及时吊销,可以防止外部利用泄露的秘钥进行攻击,进一步提高系统的安全性。
24.示例性地,设备集群系统中的主kdc用于接收管理节点发送的秘钥吊销指令,对秘钥吊销指令中携带的吊销列表进行签名并分发至设备集群系统中的各个备kdc。
25.第二方面,本技术实施例提供一种会话秘钥生成方法,包括:
26.第一秘钥分发实体kde获取秘钥分发中心kdc为第一kde提供的秘钥生成信息,并根据秘钥生成信息生成第一实体秘钥;第一kde部署在设备集群系统中的第一控制设备的服务组件内;
27.在与第二kde建立会话的过程中,第一kde向第二kde发送第一kde的标识信息和kdc的标识信息;第二kde部署在设备集群系统中的第二控制设备的服务组件内;
28.第一kde接收第二kde发送的第二kde的标识信息和kdc的标识信息;
29.第一kde根据第一实体秘钥、第二kde的标识信息和kdc的标识信息,生成用于第一kde和第二kde之间进行认证的会话秘钥。
30.在一种可能的实现方式中,第一kde在生成第一实体秘钥之后,可以将第一实体秘钥保存至第一控制设备内部署的秘钥分发代理kda中,并在每次启动时,从kda中获取第一实体秘钥。
31.在一种可能的实现方式中,第一kde可以通过kda向kdc发送秘钥申请请求,并接收kda转发的从kdc获取的秘钥生成信息。
32.在一种可能的实现方式中,第一kde从kdc获取秘钥生成信息之前,第一kde还可以生成注册信息,并将第一kde的注册信息发送至kdc,以使kdc保存第一kde的注册信息。
33.在一种可能的实现方式中,第一kde的秘钥生成信息是kdc在接收到第一kde的秘钥申请请求时,将秘钥申请请求中携带有的秘钥申请信息与保存的第一kde的注册信息进行一致性验证,且在验证通过后为第一kde提供的。
34.在一种可能的实现方式中,第一kde从kdc获取秘钥生成信息之前,第一kde还可以接收并保存kdc的标识信息和中心秘钥。
35.在一种可能的实现方式中,第一kde可以根据kdc的标识信息,获取kdc的中心秘钥,并根据第一实体秘钥、第二kde的标识信息和kdc的中心秘钥生成会话秘钥。
36.第三方面,本技术实施例提供一种设备集群系统,该设备集群系统中包括多个控制设备;多个控制设备中包括第一方面提供的任一种控制设备。
37.第四方面,本技术实施例提供一种计算机可读存储介质,该计算机可读存储介质内存储有计算机可执行指令,该计算机可执行指令用于使计算机执行上述第二方面提供的任一种方法。
38.第五方面,本技术实施例提供一种计算机程序产品,包含有计算机可执行指令,该计算机可执行指令用于使计算机执行上述第二方面提供的任一种方法。
39.上述第二方面至第五方面中任一方面可以达到的技术效果可以参照上述第一方面中有益效果的描述,此处不再重复赘述。
附图说明
40.图1为本技术实施例的一种应用场景的示意图;
41.图2为本技术实施例提供的一种设备集群系统的结构示意图;
42.图3为本技术实施例提供的一种注册过程中kde与kdc之间的交互图;
43.图4为本技术实施例提供的一种秘钥申请过程中kde与主kdc之间的交互图;
44.图5为本技术实施例提供的一种会话建立过程中kde1与kde2之间的交互图;
45.图6为本技术实施例提供的另一种会话建立过程中kde1与kde2之间的交互图;
46.图7为本技术实施例提供的另一种设备集群系统的结构示意图;
47.图8为本技术实施例提供的一种注册过程中kde、kda与kdc之间的交互图;
48.图9为本技术实施例提供的一种秘钥申请过程中kde、kda与主kdc之间的交互图;
49.图10为本技术实施例提供的一种秘钥更新过程中kde、kda与kdc之间的交互图;
50.图11为本技术实施例提供的一种秘钥更新过程中kde、kda与主kdc之间的交互图;
51.图12为本技术实施例提供的一种秘钥吊销过程中管理节点、kda与kdc之间的交互图;
52.图13为本技术实施例提供的一种控制设备的结构示意图;
53.图14为本技术实施例提供的另一种控制设备的结构示意图;
54.图15为本技术实施例提供的一种会话秘钥生成方法的流程图。
具体实施方式
55.为了使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本技术实施例进行详细描述。本技术的实施方式部分使用的术语仅用于对本技术的具体实施例进行解释,而非旨在限定本技术。显然,所描述的实施例仅仅是本技术一部分实施例,并不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
56.本技术实施例中“多个”是指两个或两个以上,鉴于此,本技术实施例中也可以将“多个”理解为“至少两个”。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更多个。例如,包括至少一个,是指包括一个、两个或更多个,而且不限制包括的是哪几个,例如,包括a、b和c中的至少一个,那么包括的可以是a、b、c、a和b、a和c、b和c、或a和b和c。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
57.除非有相反的说明,本技术实施例提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。
58.图1示出了本技术实施例的一个典型应用场景的示意图,该应用场景以分布式存储系统为例,其中,控制设备a、控制设备a1和控制设备b、控制设备b1可以是分布式存储系统中的计算机、服务器、虚拟计算机或控制器等,本技术实施例对此不作限定。示例性地,分布式存储系统可以包括一个或多个机柜,每个机柜内设置有多个刀片服务器,每个刀片服务器内可以有多个控制器,如上述的控制设备a、控制设备a1和控制设备b、控制设备b1,每个控制器可以相当于一个虚拟计算机。
59.如图1所示,每个控制设备中部署有一个或多个服务组件。例如,第一服务组件部署在控制设备a上,第二服务组件部署在控制设备b上,第三服务组件部署在控制设备a1上,第四服务组件部署在控制设备b1上。其中,第一服务组件可以理解为控制设备a中的任意一个服务组件,第二服务组件可以理解为控制设备b中的任意一个服务组件,第三服务组件可以理解为控制设备a1中的任意一个服务组件,第四服务组件可以理解为控制设备b1中的任意一个服务组件。部署在控制设备b上的第二服务组件可以为部署在控制设备a上的第一服务组件和部署在控制设备a1上的第三服务组件提供服务,如数据存取服务等。部署在控制设备b1上的第四服务组件可以为部署在控制设备a上的第一服务组件和部署在控制设备a1上的第三服务组件提供服务。
60.在服务组件之间进行数据传输时,为了保证数据传输的安全性,需要进行身份认证。例如,第一服务组件在请求第二服务组件为其提供服务时,第二服务组件与第一服务组件之间需要相互进行身份认证。
61.目前,每个服务组件具有唯一对应的数字证书,服务组件之间可以通过数字证书进行认证。例如,服务组件之间的访问链路,可以使用x.509数字证书认证的传输层安全性(transport layer security,tls)协议或数据包传输层安全性(datagram transport layer security,dtls)协议进行数字证书的认证和链路保护。然而,数字证书的管理复杂度较高,并且使用tls协议或dtls协议认证的速度较低,无法满足大规模高效能的业务需求。为了提高认证效率,提升系统性能,本技术实施例提供一种会话秘钥生成方法、控制设
备和设备集群系统。本技术实施例提供的会话秘钥生成方法,除可以应用于分布式存储应用场景之外,还可以应用于云场景,微服务场景,以及其它跨控制器认证、跨操作系统认证或跨主机认证的场景中。应用场景中包含的服务组件越多,本技术实施例提供的会话秘钥生成方法提升系统性能的效果越突出。
62.图2示出了本技术实施例提供的一种设备集群系统的结构示意图。在一些实施例中,如图2所示,设备集群系统可以包括多个控制设备,一些控制设备中可以部署秘钥分发中心(key distribution center,kdc),另一些控制设备中可以不部署kdc;如控制设备a和控制设备a1中部署有kdc,控制设备b和控制设备b1中没有部署kdc。每个控制设备中包括至少一个服务组件,每个服务组件中均部署有秘钥分发实体(key distribution entity,kde),该设备集群系统可以应用于图1所示的应用场景中。也可以理解为,本技术实施例提供的设备集群系统包括多个kdc和分别部署在各个服务组件中的多个kde。
63.多个kdc可以部署在不同的控制设备中,每个kdc中生成一对非对称算法的秘钥akey作为根秘钥,根秘钥包括kdc的公钥akey_pub和kdc的私钥akey_sec,不同的kdc内,根秘钥不相同。其中,在同一时刻,多个kdc中,一个kdc作为主kdc,其余kdc作为备kdc。主kdc用于为各个kde分发秘钥生成信息,以使各个kde根据秘钥生成信息生成自身的实体秘钥key_e。当主kdc故障或其他原因不能再作为主kdc时,将进行主备倒换,备kdc中的任意一个kdc可能作为新的主kdc。
64.多个kde分别部署在多个服务组件中,每个服务组件中部署有一个kde,也可以理解为,每个kde与其对应的服务组件部署在同一个进程内。kde用于服务组件之间的访问控制,包括服务组件之间的认证和访问通道的建立等。每个kde均具有唯一的标识信息(identifier,id),kde可以将所属的服务组件的id作为自身的标识信息,kde基于标识信息进行访问控制。
65.每个kde中均保存有所有kdc的标识信息和中心秘钥,其中,kdc的中心秘钥指kdc的根秘钥中的公钥akey_pub。对于任意一个kde,其可以在注册过程中获取并保存每个kdc的标识信息和中心秘钥。每个kdc可以保存所有已注册的kde的注册信息。
66.下文结合图3介绍kde的注册过程,图3中所示的kde可以理解为任意一个服务组件中的kde,每个kde在启动时,若确定尚未申请实体秘钥,如首次启动或实体秘钥丢失时,则kde向所有在线的kdc发起注册过程。由于在注册过程中,kde与每个kdc之间的交互步骤相同,图3仅以kde与一个kdc的交互过程为例进行说明,图3中所示的kdc可以理解为任意一个在线的kdc,可以是主kdc,也可以是备kdc。如图3所示,该注册过程可以包括如下步骤:
67.s301,kde向kdc发送kdc秘钥信息请求。
68.在注册过程中,kde与kdc之间可以通过预先建立的安全通道进行信息交互,该安全通道可以是部署时的专用通道、管理通道、或者是基于证书建立的tls安全通道,本技术对此不作限定。
69.kde向kdc发送的kdc秘钥信息请求中携带有kde生成的随机数c1和kde的标识信息。
70.s302,kdc向kde发送该kdc的秘钥信息。
71.kdc接收到kde发送的kdc秘钥信息请求后,kdc根据kde的标识消息,向该kde发送kdc的秘钥信息,秘钥信息中包括kdc的标识消息和kdc的中心秘钥,其中,kdc的中心秘钥可
以理解为kdc的公钥akey_pub,kdc的公钥akey_pub包含在kdc的公钥信息c2中,kdc的公钥akey_pub可以由pk1和pk2两部分组成。因此,kdc的公钥信息c2可以表示为:c2=pk1||pk2||ciphersuite,其中,||表示数据之间的拼接,ciphersuite表示加密算法套件,加密算法套件可以理解为加密过程中所使用到的所有加密算法的集合,其中包括不同过程使用到的加密算法的组合。
72.s303,kde从kdc的秘钥信息中提取出kdc的标识消息和kdc的中心秘钥并保存。
73.kde可以从kdc的秘钥信息中分别提取出kdc的标识消息和kdc的中心秘钥中的pk1和pk2,并保存。
74.s304,kde生成注册信息。
75.kde生成随机数k和随机数nonce,将该kde的标识信息id_i和随机数nonce进行拼接,根据随机数k和拼接后的数据生成r_i,然后根据随机数k和r_i生成n_i;根据n_i,以及id_i、r_i和字符“mac”进行拼接后的数据,生成注册信息authvalue_i。上述kde生成注册信息authvalue_i的过程可以表示为:
76.k=random()
77.nonce=random()
78.r_i=prf(k,id_i||nonce)
79.n_i=prf(k,r_i)
80.authvalue_i=aes-cmac(n_i,id_i||r_i||”mac”)
81.其中,random()表示生成随机数,prf()是一种伪随机生成算法,aes-cmac()是一种对称加密算法。
82.s305,kde向kdc发送注册信息。
83.kde在向kdc发送注册信息时,可以将kde的标识信息id_i和kde的注册信息authvalue_i一起发送至kdc。示例性地,kde可以采用kdc的中心秘钥中的pk1对kde的标识信息id_i和kde的注册信息authvalue_i拼接后的数据进行加密,得到数据报文c3,并将数据报文c3发送至kdc。其中,数据报文c3可以表示为:c3=enc(pk1,id_i||authvalue_i),enc()表示非对称加密算法。
84.kde向kdc发送注册信息之后,保存生成注册信息过程中使用的id_i、k和r_i,该过程可以表示为:store(id_i,k,r_i)。
85.s306,kdc保存kde的注册信息。
86.kdc可以采用kdc的私钥中的sk1对kde发送的数据报文c3进行解密,得到kde的标识信息id_i和kde的注册信息authvalue_i,并保存。该过程可以表示为:
87.id_i||authvalue_i=dec(sk1,c3)
88.store(id_i,authvalue_i)
89.其中,dec()表示解密算法。
90.s307,kdc向kde发送注册完成通知。
91.kde可以与每个在线的kdc执行上述注册过程,通过上述注册过程,kde中可以保存每个在线的kdc的标识信息和中心秘钥。
92.上述注册过程适用于每一个kde,即任意一个kde均可以按照上述注册过程进行注册,注册后,每个kde中可以保存所有在线的kdc的标识信息和中心秘钥。每个kdc均可以保
存所有已注册的kde的标识信息id_i和注册信息authvalue_i。因此,在进行主备倒换时,无需各kdc之间,kdc与kde之间进行数据同步,避免出现主备倒换时数据同步的难题。
93.kde在完成上述注册过程后,可以向主kdc发起秘钥申请过程,其中,kde可以理解为任意一个kde。图4示出了秘钥申请过程中kde与主kdc之间的交互流程,如图4所示,kde的秘钥申请过程可以包括如下步骤:
94.s401,kde生成秘钥申请信息。
95.kde生成随机数a_i,并使用注册过程中生成的r_i和随机数k,生成n_i。kde基于a_i与g的点乘,得到a_i,其中,g为预设参数。kde采用主kdc的中心秘钥中的pk1,对kde的标识信息id_i、上述的r_i、n_i和a_i拼接得到的数据进行加密,得到秘钥申请信息c4。kde生成秘钥申请信息c4的过程可以表示为:
96.a_i=random()
97.n_i=prf(k,r_i)
98.a_i=a_i
·g99.c4=enc(pk1,id_i||r_i||n_i||a_i)
100.其中,“·”表示点乘。
101.s402,kde向主kdc发送秘钥申请请求,秘钥申请请求中携带有秘钥申请信息c4。
102.s403,主kdc对秘钥申请请求中的秘钥申请信息进行验证。
103.主kdc接收到kde发送的秘钥申请请求,采用主kdc的私钥中的sk1对秘钥申请请求中的秘钥申请信息c4进行解密,得到kde的标识信息id_i、r_i、n_i和a_i。主kdc根据id_i、r_i、n_i和字符“mac”,计算得到秘钥申请信息对应的授权值authvalue_i。
104.上述过程可以表示为:
105.id_i||r_i||n_i||a_i=dec(sk1,c4)
106.authvalue_i=aes-cmac(n_i,id_i||r_i||”mac”)
107.主kdc根据kde的标识信息id_i,查找已保存的该kde的注册信息authvalue_i,将秘钥申请信息对应的授权值authvalue_i与该kde的注册信息authvalue_i进行比对,以对秘钥申请信息进行验证。若秘钥申请信息对应的授权值authvalue_i与该kde的注册信息authvalue_i一致,则验证通过。
108.s404,主kdc确定秘钥生成信息。
109.如果验证通过,则主kdc为该kde确定秘钥生成信息。示例性地,主kdc生成随机数b_i,并根据b_i与g的点乘,以及对秘钥申请信息c4解密得到的a_i,生成b_i。主kdc采用主kdc的私钥中的sk2,通过哈希运算对kde的标识信息id_i、主kdc的标识信息id_kdc和b_i拼接得到的数据进行加密,并根据加密后的数据和随机数b_i生成s_i。主kdc根据n_i,以及kde的标识信息id_i、主kdc的标识信息id_kdc、a_i、b_i和s_i拼接后的数据,确定该kde的秘钥生成信息c5。主kdc确定秘钥生成信息c5的过程可以表示为:
110.b_i=random()
111.b_i=b_i
·
g+a_i
112.s_i=b_i+hash(id_i||id_kdc||b_i)sk2
113.c5=aes-gcm(n_i,id_i||id_kdc||a_i||b_i||s_i)
114.其中,aes-gcm()表示一种对称加密算法。
115.s405,主kdc向kde发送秘钥生成信息。
116.s406,kde根据秘钥生成信息生成kde的实体秘钥并保存。
117.其中,kde的实体秘钥key_e可以包括kde的私钥sk_i和kde的公钥pk_i。kde接收到主kdc发送的秘钥生成信息c5,从秘钥生成信息c5中提取出kde的标识信息id_i、主kdc的标识信息id_kdc、a_i、b_i和s_i,根据a_i和s_i生成kde的私钥sk_i,将kde的标识信息id_i、主kdc的标识信息id_kdc和b_i拼接后的数据与保存的主kdc的中心秘钥中的pk2进行点乘,根据点乘结果的哈希值和b_i,生成kde的公钥pk_i。kde保存b_i,以及kde的私钥sk_i和kde的公钥pk_i。上述过程可以表示为:
118.id_i||id_kdc||a_i||b_i||s_i=aes-gcm(n_i,c5)
119.sk_i=a_i+s_i
120.pk_i=b_i+hash(id_i||id_kdc||b_i)
·
pk2
121.store(b_i,sk_i,pk_i)
122.kde生成的实体秘钥key_e,可以用于与另一kde在会话建立过程中进行认证。例如,第一服务组件在请求第二服务组件为其提供服务时,第一服务组件中部署的kde1和第二服务组件中部署的kde2用于为第一服务组件与第二服务组件建立数据链接或访问通道,该过程可以称为会话建立过程。其中,第一服务组件和第二服务组件均可以指分布式存储系统中的任意一个服务组件。在会话建立过程中,kde1和kde2基于各自的实体秘钥协商确定会话秘钥,并基于确定的会话秘钥进行认证和信息交互。示例性地,kde1和kde2在建立会话的过程中,基于kde1的标识信息和实体秘钥、kde2的标识信息和实体秘钥、主kdc的标识信息和中心秘钥,协商确定会话秘钥,并基于确定的会话秘钥进行认证和信息交互。
123.在一种实施例中,在会话建立过程中,kde1和kde2可以协商确定会话秘钥。在确定会话秘钥后,kde1和kde2可以基于确定的会话秘钥,采用隐式确认方式进行认证。图5示出了kde1与kde2之间的一种会话建立过程的交互流程图,如图5所示,kde1与kde2之间的会话建立过程,可以包括如下步骤:
124.s501,kde1生成第一会话秘钥协商信息。
125.kde1生成随机数x,并根据随机数x与预设参数g的点乘,得到第一随机因子x。kde1根据第一随机因子x、kde1的标识信息id_1和主kdc的标识信息id_kdc,生成第一会话秘钥协商信息。示例性地,kde1将kde1的标识信息id_1、b_1、第一随机因子x和主kdc的标识信息id_kdc进行拼接,得到第一会话秘钥协商信息c6。其中,b_1为kde1在秘钥申请过程中生成的b_i。kde1生成第一会话秘钥协商信息c6的过程,可以表示为:
126.x=random()
127.x=x
·g128.c6=id_1||b_1||x||id_kdc
129.s502,kde1向kde2发送第一会话秘钥协商信息。
130.kde1与kde2之间建立数据链接,或称为访问通道,该访问通道可以理解为第一服务组件与第二服务组件之间的访问通道。kde1通过该访问通道向kde2发送第一会话秘钥协商信息c6。
131.s503,kde2确认kde1的访问权限。
132.kde2接收到kde1发送的第一会话秘钥协商信息c6,从第一会话秘钥协商信息c6中
获取kde1的标识信息id_1。kde2根据kde1的标识信息id_1,以及保存的白名单或访问控制列表(access control list,acl),检查kde1是否具有访问权限,其中,白名单中保存有所有具有访问权限的kde的标识信息;acl中保存有各个kde的标识信息与访问权限的对应关系。若kde1具有访问权限,则继续执行步骤s504,若kde1不具有访问权限,则断开与kde1的连接。
133.s504,kde2根据第一会话秘钥协商信息生成第一会话秘钥。
134.kde2生成随机数y,并根据随机数y与预设参数g的点乘,得到第二随机因子y。kde2从第一会话秘钥协商信息中获取第一随机因子x和主kdc的标识信息id_kdc,根据主kdc的标识信息id_kdc确定该主kdc的中心秘钥中的pk2,并获取kde2的实体秘钥中的私钥sk_2。kde2根据第一随机因子x、kde1的标识信息id_1、主kdc的中心秘钥中的pk2,kde2的私钥sk_2和第二随机因子y,生成第一会话秘钥masterkey1。示例性地,kde2可以将kde1的标识信息id_1与主kdc的标识信息id_kdc拼接后的数据和b_1进行哈希运算,根据哈希运算的结果与主kdc的中心秘钥中的pk2的点乘,以及b_1,确定pkid1。kde2根据随机数y与第一随机因子x加pkid1的和的点乘,以及kde2的私钥sk_2与pkid1加第一随机因子x的和的点乘,生成第一会话秘钥masterkey1。kde2生成第一会话秘钥masterkey1的过程,可以表示为:
135.y=random()
136.y=y
·g137.pkid1=b_1+hash(id_1||id_kdc,b_1)
·
pk2
138.masterkey1=y
·
(x+pkid1)+sk_2
·
(pkid1+x)
139.可选地,kde2生成第一会话秘钥masterkey1之后,可以根据第一会话秘钥masterkey1生成第一认证秘钥kauth1和第一加密秘钥kenc1。第一认证秘钥kauth1和第一加密秘钥kenc1也可以理解为第一会话秘钥masterkey1的部分。示例性地,kde2可以将b_1、b_2、kde1的标识信息id_1、kde2的标识信息id_2、第一随机因子x和第二随机因子y进行拼接,得到w,根据第一会话秘钥masterkey1、w和字符“workkey”,生成第一认证秘钥kauth1和第一加密秘钥kenc1。第一认证秘钥kauth1和第一加密秘钥kenc1可以用于在后续传输业务数据时对业务数据进行加密。上述过程可以表示为:
140.w=b_1||b_2||id_1||id_2||x||y
141.kauth1||kenc1=prf(masterkey1,w||"workkey")。
142.s505,kde2生成第二会话秘钥协商信息。
143.kde2根据第二随机因子y、kde2的标识信息id_2和主kdc的标识信息id_kdc,生成第二会话秘钥协商信息。示例性地,kde2将kde2的标识信息id_2、b_2、第二随机因子y和主kdc的标识信息id_kdc进行拼接,得到第二会话秘钥协商信息c7,其中,b_1为kde2在秘钥申请过程中生成的b_i。kde2生成第二会话秘钥协商信息c7的过程,可以表示为:
144.c7=id_2||b_2||y||id_kdc
145.s506,kde2向kde1发送第二会话秘钥协商信息。
146.s507,kde1根据第二会话秘钥协商信息生成第二会话秘钥。
147.kde1从第二会话秘钥协商信息中获取kde2的标识信息id_2、第二随机因子y和主kdc的标识信息id_kdc,根据主kdc的标识信息id_kdc确定该主kdc的中心秘钥中的pk2,并获取kde1的实体秘钥中的私钥sk_1。kde1根据第一随机因子x、kde2的标识信息id_2、主kdc
的中心秘钥中的pk2,kde1的私钥sk_1和第二随机因子y,生成第二会话秘钥masterkey2。示例性地,kde1可以将kde2的标识信息id_2与主kdc的标识信息id_kdc拼接后的数据和b_2进行哈希运算,根据哈希运算的结果与主kdc的中心秘钥中的pk2的点乘,以及b_2,确定pkid2。kde1根据随机数x与第二随机因子y加pkid2的和的点乘,以及kde1的私钥sk_1与pkid2加第二随机因子y的和的点乘,生成第二会话秘钥masterkey2。kde1生成第二会话秘钥masterkey2的过程,可以表示为:
148.pkid2=b_2+hash(id_2||id_kdc,b_2)
·
pk2
149.masterkey2=x
·
(y+pkid2)+sk_1
·
(pkid2+y)
150.可选地,kde1生成第二会话秘钥masterkey2之后,可以根据第二会话秘钥masterkey2生成第二认证秘钥kauth2和第二加密秘钥kenc2。第二认证秘钥kauth2和第二加密秘钥kenc2也可以理解为第二会话秘钥masterkey2的部分。示例性地,kde1可以将b_1、b_2、kde1的标识信息id_1、kde2的标识信息id_2、第一随机因子x和第二随机因子y进行拼接,得到w,根据第二会话秘钥masterkey2和w,生成第二认证秘钥kauth2和第二加密秘钥kenc2。第二认证秘钥kauth2和第二加密秘钥kenc2可以用于在后续传输业务数据时对业务数据进行加密。上述过程可以表示为:
151.w=b_1||b_2||id_1||id_2||x||y
152.kauth2||kenc2=prf(masterkey2,w||"workkey")
153.上述过程为kde1与kde2协商生成会话秘钥的过程,在kde1生成第二会话秘钥,kde2生成第一会话秘钥之后,kde1和kde2可以基于协商生成的会话秘钥进行业务数据的交互,在业务数据的交互过程中,确定kde1和kde2是否具有相同的会话秘钥。例如,kde1向kde2发送业务数据时,采用第二会话秘钥对该业务数据进行加密,kde2接收到kde1发送的加密的业务数据后,采用第一会话秘钥对该加密的业务数据进行解密,如果可以成功解密,则kde2确定第一会话秘钥与第二会话秘钥一致,向kde1返回响应数据;否则,kde2认为第一会话秘钥与第二会话秘钥不一致,kde2断开与kde1之间的访问通道。kde2在断开与kde1的连接时,可以向kde1发送认证失败的消息,也可以不发送认证失败的消息。如果kde1接收到kde2返回的响应数据,则说明kde1和kde2具有相同的会话秘钥,说明id_1是kde1的唯一标识信息,id_2是kde2的唯一标识信息,认证通过;如果kde1接收到kde2返回的认证失败的消息或kde1检测到与kde2之间的访问通道断开,则说明kde1和kde2的会话秘钥不一致,认证失败。
154.由于kde1和kde2在协商生成会话秘钥的过程中所使用的kde1的标识信息、kde2的标识信息均是唯一的,因此协商生成的会话秘钥也具有唯一性,可以防止外部的恶意攻击,提高会话安全性。
155.上述通过传输业务数据确认双方是否具有相同的会话密钥的方式,可以称为隐式确认方式。
156.在另一种实施例中,在会话建立过程中,kde1和kde2可以协商确定会话秘钥,并基于确定的会话秘钥,采用显示确认方式进行认证。图6示出了kde1与kde2之间的另一种会话建立过程的交互流程图,如图6所示,kde1与kde2之间的会话建立过程,可以包括如下步骤:
157.s601,kde1生成第一会话秘钥协商信息。
158.kde1生成随机数x,并根据随机数x与预设参数g的点乘,得到第一随机因子x。kde1
根据第一随机因子x、kde1的标识信息id_1和主kdc的标识信息id_kdc,生成第一会话秘钥协商信息。示例性地,kde1将kde1的标识信息id_1、b_1、第一随机因子x和主kdc的标识信息id_kdc进行拼接,得到第一会话秘钥协商信息c6。kde1生成第一会话秘钥协商信息c6的过程,可以表示为:
159.x=random()
160.x=x
·g161.c6=id_1||b_1||x||id_kdc
162.s602,kde1向kde2发送第一会话秘钥协商信息。
163.kde1与kde2之间建立数据链接,或称为访问通道,该访问通道可以理解为第一服务组件与第二服务组件之间的访问通道。kde1通过该访问通道向kde2发送第一会话秘钥协商信息c6。
164.s603,kde2确认kde1的访问权限。
165.kde2接收到kde1发送的第一会话秘钥协商信息c6,从第一会话秘钥协商信息c6中获取kde1的标识信息id_1。kde2根据kde1的标识信息id_1,以及保存的白名单或acl,检查kde1是否具有访问权限。若kde1具有访问权限,则继续执行步骤s504,若kde1不具有访问权限,则断开与kde1之间的访问通道。
166.s604,kde2根据第一会话秘钥协商信息生成第一会话秘钥,并根据第一会话秘钥生成第一会话秘钥验证信息。
167.kde2生成随机数y,并根据随机数y与预设参数g的点乘,得到第二随机因子y。kde2从第一会话秘钥协商信息中获取第一随机因子x和主kdc的标识信息id_kdc,根据主kdc的标识信息id_kdc确定该主kdc的中心秘钥中的pk2,并获取kde2的实体秘钥中的私钥sk_2。kde2根据第一随机因子x、kde1的标识信息id_1、主kdc的中心秘钥中的pk2,kde2的私钥sk_2和第二随机因子y,生成第二会话秘钥masterkey2。示例性地,kde2可以将kde1的标识信息id_1与主kdc的标识信息id_kdc拼接后的数据和b_1进行哈希运算,根据哈希运算的结果与主kdc的中心秘钥中的pk2的点乘,以及b_1,确定pkid1。kde2根据随机数y与第一随机因子x加pkid1的和的点乘,以及kde2的私钥sk_2与pkid1加第一随机因子x的和的点乘,生成第一会话秘钥masterkey1。kde2生成第一会话秘钥masterkey1的过程,可以表示为:
168.y=random()
169.y=y
·g170.pkid1=b_1+hash(id_1||id_kdc,b_1)
·
pk2
171.masterkey1=y
·
(x+pkid1)+sk_2
·
(pkid1+x)
172.kde2生成第一会话秘钥masterkey1之后,可以根据第一会话秘钥masterkey1生成第一会话秘钥验证信息mac1。示例性地,kde2可以将b_1、b_2、kde1的标识信息id_1、kde2的标识信息id_2、第一随机因子x和第二随机因子y进行拼接,得到w,根据第一会话秘钥masterkey1和w,生成kmac1,再根据kmac1,生成第一会话秘钥验证信息mac1。
173.上述过程可以表示为:
174.w=b_1||b_2||id_1||id_2||x||y
175.kmac1=prf(masterkey1,w||"mac")
176.mac1=aes-cmac(kmac1,w||"1")
177.s605,kde2生成第二会话秘钥协商信息,第二会话秘钥协商信息中包括第一会话秘钥验证信息。
178.kde2根据第二随机因子y、kde2的标识信息id_2、主kdc的标识信息id_kdc和第一会话秘钥验证信息mac1,生成第二会话秘钥协商信息。示例性地,kde2将kde2的标识信息id_2、b_2、第二随机因子y、主kdc的标识信息id_kdc和第一秘钥验证信息mac1进行拼接,得到第二会话秘钥协商信息c7。kde2生成第二会话秘钥协商信息c7的过程,可以表示为:
179.c7=id_2||b_2||y||id_kdc||mac1
180.s606,kde2向kde1发送第二会话秘钥协商信息。
181.s607,kde1根据第二会话秘钥协商信息生成第二会话秘钥,并根据第二会话秘钥生成第一秘钥确认信息。
182.kde1从第二会话秘钥协商信息中获取kde2的标识信息id_2、第二随机因子y和主kdc的标识信息id_kdc,根据主kdc的标识信息id_kdc确定该主kdc的中心秘钥中的pk2,并获取kde1的实体秘钥中的私钥sk_1。kde1根据第一随机因子x、kde2的标识信息id_2、主kdc的中心秘钥中的pk2,kde1的私钥sk_1和第二随机因子y,生成第二会话秘钥masterkey2。示例性地,kde1可以将kde2的标识信息id_2与主kdc的标识信息id_kdc拼接后的数据和b_2进行哈希运算,根据哈希运算的结果与主kdc的中心秘钥中的pk2的点乘,以及b_2,确定pkid2。kde1根据随机数x与第二随机因子y加pkid2的和的点乘,以及kde1的私钥sk_1与pkid2加第二随机因子y的和的点乘,生成第二会话秘钥masterkey2。kde1生成第二会话秘钥masterkey2的过程,可以表示为:
183.pkid2=b_2+hash(id_2||id_kdc,b_2)
·
pk2
184.masterkey2=x
·
(y+pkid2)+sk_1
·
(pkid2+y)
185.kde1生成第二会话秘钥masterkey2之后,可以根据第二会话秘钥masterkey2生成第一秘钥确认信息。示例性地,kde1可以将b_1、b_2、kde1的标识信息id_1、kde2的标识信息id_2、第一随机因子x和第二随机因子y进行拼接,得到w,根据第一会话秘钥masterkey1和w,生成kmac2,再根据kmac2,生成第一秘钥确认信息mac1local。上述过程可以表示为:
186.w=b_1||b_2||id_1||id_2||x||y
187.kmac2=prf(masterkey2,w||"mac")
188.mac1local=aes-cmac(kmac2,w||"1")
189.s608,若kde1生成的第一秘钥确认信息与第二会话秘钥协商信息中携带的第一会话秘钥验证信息一致,则kde1生成第二会话秘钥验证信息。
190.kde1验证生成的第一秘钥确认信息mac1local与第二会话秘钥协商信息中携带的第一会话秘钥验证信息mac1是否一致。如果一致,即mac1local==mac1,则kde1根据第二会话秘钥masterkey2生成第二会话秘钥验证信息,否则,kde1断开与kde2的访问通道,再重新尝试建立连接。示例性地,如果mac1local==mac1,则kde1可以根据上述步骤中得到的kmac2,生成第二会话秘钥验证信息mac2,并将第二会话秘钥验证信息mac2赋予c8。该过程可以表示为:
191.mac2=aes-cmac(kmac2,w||"2")
192.c8=mac2
193.可选地,kde1可以根据第二会话秘钥masterkey2和w,生成第二认证秘钥kauth2和
第二加密秘钥kenc2。第二认证秘钥kauth2和第二加密秘钥kenc2可以用于在后续传输业务数据时对业务数据进行加密。上述过程可以表示为:
194.kauth2||kenc2=prf(masterkey2,w||"workkey")
195.s609,kde1向kde2发送第二会话秘钥验证信息。
196.kde1向kde2发送信息c8,c8=mac2。
197.s610,kde2生成第二秘钥确认信息,并验证第二秘钥确认信息与第二会话秘钥验证信息是否一致。
198.kde2可以根据第二会话秘钥masterkey2生成第二秘钥确认信息。示例性地,kde2可以根据步骤s604中生成的kmac1,生成第二秘钥确认信息mac2local。上述过程可以表示为:
199.mac2local=aes-cmac(kmac1,w||"2")
200.kde2验证生成的第二秘钥确认信息mac2local与接收到的第二会话秘钥验证信息mac2是否一致。如果一致,即mac2local==mac2,则确定kde1和kde2具有相同的会话秘钥,即上述步骤中生成的第一会话秘钥与第二会话秘钥一致,说明id_1是kde1的唯一标识信息,id_2是kde2的唯一标识信息,认证通过。kde1和kde2可以通过建立的访问通道进行业务数据的交互。否则,kde2确定第一会话秘钥与第二会话秘钥不一致,认证失败,kde2断开与kde1之间的访问通道。
201.可选地,在认证通过之后或之前,kde2可以根据第一会话秘钥masterkey1和w,生成第一认证秘钥kauth1和第一加密秘钥kenc1。第一认证秘钥kauth1和第一加密秘钥kenc1可以用于在后续传输业务数据时对业务数据进行加密。上述过程可以表示为:
202.kauth1||kenc1=prf(masterkey1,w||"workkey")
203.上述过程中,kde1与kde2协商生成会话秘钥,并通过相互发送会话秘钥验证信息来确认双方是否具有相同的会话密钥的方式,可以称为显式确认方式。
204.显式确认方式通过相互发送会话秘钥验证信息进行认证,而不需要通过传输业务数据的方式来认证,因此对业务数据无要求。隐式确认方式通过业务数据的传输进行认证,可以减少一次数据交互,因此性能更高。在实际使用中,可以根据不同业务场景的实际需求,选择采用显式确认方式或隐式确认方式。
205.本技术实施例中,每个服务组件中均部署有kde,两个服务组件之间通过服务组件内部署的kde建立访问通道,在建立访问通道的过程中,两个kde通过相互协商确定相同的会话秘钥的方式,相互进行认证,而无需通过数字证书进行认证,降低了管理复杂度;同时,也无需使用复杂的数字证书认证算法,可以提高认证效率,提高系统性能。
206.在本技术实施例中,每个服务组件的kde仅在首次启动或实体秘钥丢失时,才向kdc发起注册过程和秘钥申请过程,并保存生成的实体秘钥,以备与其他kde建立会话时协商会话秘钥使用。本技术实施例无需在两个kde建立会话时,由其中一个kde向kdc申请此次会话的会话秘钥,即无需kde在每次建立会话之前均访问kdc,从而大量减少kde与kdc的通信次数,减少kdc被访问的次数,避免因大量访问kdc造成阻塞带来的性能瓶颈,且可以降低kdc的数据处理压力,提高kdc的性能和可靠性。同时,可以避免由kdc保存所有会话的会话秘钥,导致kdc被入侵带来整个系统失去安全性的问题。
207.并且,本技术实施例的两个kde在协商生成会话秘钥时,使用到两个kde的标识信
息,从而可以使两个kde通过会话秘钥相互进行身份认证,以实现访问控制的功能。本技术实施例的两个kde在协商生成会话秘钥时,使用点乘代替传统的数字签名,其计算速度是基于数字证书认证的10倍左右。
208.在一些实施例中,为了进一步保障各秘钥的安全性,防止秘钥泄露或被破解,各kdc的中心秘钥和各kde的实体秘钥均可以按照设定时间周期进行更新,示例性地,设定时间周期可以是几个小时、一天或一周。秘钥更新过程与图3所示的kde的注册过程类似,可以理解为各个kde重新向各个kdc进行注册。
209.仍以一个kde与一个kdc之间的交互过程为例进行说明,秘钥更新过程可以包括如下步骤:kde从kdc下载新秘钥信息,kde从新秘钥信息中提取出kdc的新id和新中心秘钥并保存。kde生成新注册信息,kde生成新注册信息的过程可以参照上述步骤s304中生成注册信息的过程执行,在此不再赘述。kde根据kde的标识信息和新注册信息生成新的数据报文c3_new,kde向kdc发送旧的数据报文c3和新的数据报文c3_new,kdc验证旧的数据报文c3,验证通过后,kdc注册新的数据报文c3_new,即保存kde的标识信息和新注册信息。
210.kde向每个kdc更新注册信息后,获取新的实体秘钥。示例性地,kde根据kde的标识信息和主kdc的新中心秘钥,生成新的秘钥申请信息c4_new,kde生成新的秘钥申请信息c4_new的过程可以参照上述步骤s401中生成秘钥申请信息c4的过程执行,在此不再赘述。kde向主kdc发送秘钥申请请求,秘钥申请请求中携带有新的秘钥申请信息c4_new。主kdc根据保存的该kde的新注册信息对新的秘钥申请信息c4_new进行验证,验证通过后,主kdc向kde发送新的秘钥生成信息,kde根据新的秘钥生成信息生成新的实体秘钥并保存。
211.示例性地,如果kde1或kde2在会话建立过程中进行了秘钥更新,为了避免业务中断,会话建立过程仍可以继续进行,而不会更新会话秘钥。在会话时长超时或发起新的会话建立过程时,再重新协商新的会话秘钥。
212.上述会话建立过程中,考虑到秘钥更新、kdc的主备倒换等原因,可能会导致kde1和kde2在生成会话秘钥时所使用的kdc的中心秘钥不一致,从而kde1和kde2不能生成相同的会话秘钥。为了避免上述情况的发生,本技术实施例中,kde1在向kde2发送的第一会话秘钥协商信息中携带主kdc的标识信息,kde2在向kde1发送的第二会话秘钥协商信息中也携带主kdc的标识信息,从而可以使kde1和kde2基于相同的kdc的中心秘钥生成会话秘钥,避免由于使用的kdc的中心秘钥不一致而导致的会话秘钥不一致的情况。综上所述,每个kde中存储有不同kdc的中心秘钥,两个kde以协商的方式确定共同使用的kdc,可以避免在kdc主备倒换时,数据不同步的问题,以解决主备倒换时如何实现两个kde秘钥同步的难题。
213.在一些实施例中,如果kde1中保存有多组有效的kdc的信息,还可以在向kde2发送的第一会话秘钥协商信息中携带多个kdc的标识信息,即第一会话秘钥协商信息中携带的主kdc的标识信息可以包括多个kdc的标识信息,由kde2从多个kdc的标识信息中选择一个有效的目标kdc的标识信息,并根据目标kdc的中心秘钥生成第一会话秘钥。kde2在向kde1发送的第二会话秘钥协商信息中携带目标kdc的标识信息,以使kde1根据该目标kdc的中心秘钥生成第二会话秘钥,从而保证kde1和kde2使用相同的kdc的中心秘钥生成会话秘钥。
214.在一些实施例中,如果管理员发现某些秘钥泄漏,可以在管理节点发起秘钥吊销过程。管理节点可以理解为可与主kdc进行通信的控制设备、虚拟设备或控制组件。管理员可以确定泄漏秘钥的相关信息,将泄漏秘钥的相关信息输入管理节点,管理节点可以根据
管理员输入的泄漏秘钥的相关信息,生成吊销列表(revocation list,rl),将rl发送至主kdc。其中,泄漏秘钥的相关信息可以包括被泄漏的实体秘钥对应的kde的标识信息或被泄漏的中心秘钥对应的kdc的标识信息。主kdc对接收到的rl进行签发,即主kdc将rl签名后,分发至各个备kdc,以使各个备kdc更新保存的rl。
215.kde可以按照设定时间间隔从kdc下载rl,根据rl删除被泄漏的中心秘钥及其对应的kdc的标识信息。在与其他kde建立会话的过程中,kde可以根据下载的rl,确定对端的实体秘钥是否被吊销。例如,上文中的kde2在接收到kde1发送的第一会话秘钥协商信息后,可以获取其中携带的kde1的标识信息id_1,检测下载的rl中是否包含kde1的标识信息id_1,若包含,则说明kde1的实体秘钥因泄漏已被吊销,此时与kde1的连接是不安全的,kde2断开与kde1的连接;若不包含,则继续执行与kde1协商会话秘钥的步骤。通过将泄漏的秘钥吊销,可以进一步提高系统的安全性。
216.图7示出了本技术实施例提供的另一种设备集群系统的结构示意图。如图7所示,在另一些实施例中,设备集群系统除包括多个kde和多个kdc之外,还可以包括秘钥分发代理(key distribution agent,kda)。该设备集群系统同样可以应用于图1所示的应用场景中,每个控制设备中可以部署有一个kda,一个控制设备中的kda可以代理该控制设备内的各个kde与kdc之间的数据通信,即与kda部署在同一控制设备内的各个kde均与该kda进行数据通信,kda与各个kdc进行数据通信。通常一个控制设备内具有多个服务组件,每个服务组件中部署有一个kde,多个服务组件中的kde通过一个kda与kdc连接,与kdc连接的kda的数量远小于kde的数量,因此可以减少所占用的kdc对外通信接口的数量。一个控制设备中的kda可以保存该控制设备内的各个kde的实体秘钥,例如,kda可以将各个kde的实体秘钥与标识信息对应进行存储,避免了多个kde分别保存秘钥带来的秘钥安全存储难题。kda可以采用可信平台模块(trusted platform module,tpm)、可信执行环境(trusted execution environmen,tee)等安全存储机制存储秘钥,可以保证不受常规操作系统干扰,进一步提高秘钥的安全性,减少秘钥泄漏的风险。
217.在该实施例中,kde在每次启动时,可以通过所属控制设备的操作系统(operating system,os)内的通信机制,与该控制设备内的kda建立连接。该kde可以是任意一个kde。kda可以使用os中自带的认证机制,如域套接字(domain socket)、共享内存等,结合白名单或acl等其他方式确认kde的合法性。由于kda中保存有该控制设备内的各个kde的实体秘钥,所以kde可以向kda请求获取其实体秘钥。示例性地,kde可以向kda发送秘钥获取请求,秘钥获取请求中可以携带kde的标识信息id_i,kda可以根据kde的标识信息id_i,查找是否保存有该kde的实体秘钥,若查找到该kde的实体秘钥,则将该kde的实体秘钥发送至kde;若没有查找到该kde的实体秘钥,例如,该kde首次部署尚未申请实体秘钥,或该kde的实体秘钥丢失或被吊销,则kda向kde发送获取失败消息。kde接收到kda发送的获取失败消息,分别向各个kdc执行注册过程,下文以向任意一个kdc执行注册过程为例进行说明。
218.任意一个kde均可以通过其所属控制设备内的kda与kdc进行通信,当kde通过kda与kdc进行通信时,kde的注册过程如图8所示,可以包括如下步骤:
219.s801,kde向kda发送kdc秘钥信息请求。
220.kda中保存有kdc的秘钥消息,即在kde向kda发送kdc秘钥消息请求之前,kda已经预先从kdc获取其秘钥消息并保存。示例性地,kda可以通过如下方式从kdc获取其秘钥消
息:kda可以通过安全通道与kdc进行信息交互,该安全通道可以是部署时的专用通道、管理通道、或者是基于证书建立的tls安全通道,本技术对此不作限定。kda向kdc发送kdc秘钥信息获取请求,kdc秘钥信息获取请求中携带有kda的标识信息,并采用随机数c1对kda的标识信息加密。kdc接收到kda发送的kdc秘钥信息获取请求后,采用随机数c1对kdc秘钥信息获取请求中携带的信息进行解密,得到kda的标识信息。kdc根据kda的标识信息,向该kda发送kdc的秘钥信息,秘钥信息中可以包括kdc的标识信息和kdc的中心秘钥,其中,kdc的中心秘钥可以理解为kdc的公钥akey_pub,包含在kdc的公钥信息c2中,公钥信息c2是采用加密算法对kdc的公钥akey_pub进行加密得到的,kdc的公钥akey_pub可以由pk1和pk2两部分组成。因此,kdc的公钥信息c2可以表示为:c2=pk1||pk2||ciphersuite。kda接收并保存kdc的秘钥信息。
221.s802,kda向kde发送kdc的秘钥信息。
222.kde向kda发送的kdc秘钥信息请求中携带有kde的标识信息,并采用随机数c1对kde的标识信息进行加密。kda接收到kde发送的kdc秘钥信息请求后,采用随机数c1对kdc秘钥信息请求中携带的信息进行解密,得到kde的标识信息。kda根据kde的标识信息,向该kde发送kdc的秘钥信息。kde从kda发送的kdc的秘钥信息中分别提取出kdc的标识信息和kdc的中心秘钥中的pk1和pk2,并保存。
223.s803,kde生成注册信息。
224.kde生成随机数k和随机数nonce,将该kde的标识信息id_i和随机数nonce进行拼接,根据随机数k和拼接后的数据生成r_i,然后根据随机数k和r_i生成n_i;根据n_i,以及id_i、r_i和字符“mac”进行拼接后的数据,生成注册信息authvalue_i。上述kde生成注册信息authvalue_i的过程可以表示为:
225.k=random()
226.nonce=random()
227.r_i=prf(k,id_i||nonce)
228.n_i=prf(k,r_i)
229.authvalue_i=aes-cmac(n_i,id_i||r_i||”mac”)
230.s804,kde向kda发送kde的注册信息。
231.kde在向kda发送注册信息时,可以将kde的标识信息id_i和kde的注册信息authvalue_i一起发送至kda。示例性地,kde可以采用kdc的中心秘钥中的pk1对kde的标识信息id_i和kde的注册信息authvalue_i拼接后的数据进行加密,得到数据报文c3,并将数据报文c3发送至kda。其中,数据报文c3可以表示为:c3=enc(pk1,id_i||authvalue_i)。
232.s805,kda向kdc发送kde的注册信息。
233.s806,kdc保存kde的注册信息。
234.kdc接收到kda发送的数据报文c3,可以采用kdc的私钥中的sk1对kda发送的数据报文c3进行解密,得到kde的标识信息id_i和kde的注册信息authvalue_i,并保存。该过程可以表示为:
235.id_i||authvalue_i=dec(sk1,c3)
236.store(id_i,authvalue_i)
237.s807,kdc向kda发送注册完成通知。
238.s808,kda向kde发送注册完成通知。
239.s809,kde向kda发送待保存信息。
240.s810,kda保存kde发送的待保存信息。
241.其中,待保存信息中可以包括kde的标识信息id_i,以及在生成注册信息的过程中所使用的随机数k和数据r_i。该过程可以表示为:store(id_i,k,r_i)。
242.可选地,kda在保存kde发送的待保存信息之后,还可以向kde发送保存成功通知。
243.通过上述注册过程,kde中可以保存每个在线的kdc的标识信息和中心秘钥,每个kdc可以保存所有已注册的kde的标识信息id_i和注册信息authvalue_i。
244.kde在完成上述注册过程后,可以通过所述控制设备内的kda向主kdc发起秘钥申请过程。如图9所示,该秘钥申请过程可以包括如下步骤:
245.s901,kde生成秘钥申请信息。
246.kde生成随机数a_i,并根据注册过程中生成的r_i和随机数k,生成n_i。kde基于a_i与g的点乘,得到a_i,其中,g为预设参数。kde采用主kdc的中心秘钥中的pk1,对kde的标识信息id_i、上述的r_i、n_i和a_i拼接得到的数据进行加密,得到秘钥申请信息c4。kde生成秘钥申请信息c4的过程可以表示为:
247.a_i=random()
248.n_i=prf(k,r_i)
249.a_i=a_i
·g250.c4=enc(pk1,id_i||r_i||n_i||a_i)
251.s902,kde向kda发送秘钥申请请求。
252.其中,kda为kde所属控制设备中部署的kda。秘钥申请请求中携带有秘钥申请信息c4。
253.s903,kda向主kdc发送秘钥申请请求。
254.示例性地,kda可以通过浮动网络互通协议(internet protocol,ip)地址访问主kdc,即kda向设定的目标ip地址发送秘钥申请请求,kda并不感知哪一个kdc为其提供服务,而是由各个kdc协商确定当前哪个kdc作为主kdc,由主kdc接收向目标ip地址发送的秘钥申请请求,并针对该秘钥申请请求给予响应。
255.s904,主kdc对秘钥申请请求中的秘钥申请信息进行验证。
256.主kdc接收到kda发送的秘钥申请请求,采用主kdc的私钥中的sk1对秘钥申请请求中的秘钥申请信息c4进行解密,得到kde的标识信息id_i、r_i、n_i和a_i。主kdc根据id_i、r_i、n_i和字符“mac”,计算得到秘钥申请信息对应的授权值authvalue_i。
257.上述过程可以表示为:
258.id_i||r_i||n_i||a_i=dec(sk1,c4)
259.authvalue_i=aes-cmac(n_i,id_i||r_i||”mac”)
260.主kdc根据kde的标识信息id_i,查找已保存的该kde的注册信息authvalue_i,将秘钥申请信息对应的授权值authvalue_i与该kde的注册信息authvalue_i进行比对,以对秘钥申请信息进行验证。若秘钥申请信息对应的授权值authvalue_i与该kde的注册信息authvalue_i一致,则验证通过。
261.s905,主kdc确定秘钥生成信息。
262.如果验证通过,则主kdc为该kde确定秘钥生成信息。示例性地,主kdc生成随机数b_i,并根据b_i与g的点乘,以及对秘钥申请信息c4解密得到的a_i,生成b_i。主kdc采用主kdc的私钥中的sk2,通过哈希运算对kde的标识信息id_i、主kdc的标识信息id_kdc和b_i拼接得到的数据进行加密,并根据加密后的数据和随机数b_i生成s_i。主kdc根据n_i,以及kde的标识信息id_i、主kdc的标识信息id_kdc、a_i、b_i和s_i拼接后的数据,确定该kde的秘钥生成信息c5。主kdc确定秘钥生成信息c5的过程可以表示为:
263.b_i=random()
264.b_i=b_i
·
g+a_i
265.s_i=b_i+hash(id_i||id_kdc||b_i)sk2
266.c5=aes-gcm(n_i,id_i||id_kdc||a_i||b_i||s_i)
267.s906,主kdc向kda发送秘钥生成信息。
268.s907,kda向kde发送秘钥生成信息。
269.s908,kde根据秘钥生成信息生成kde的实体秘钥。
270.其中,kde的实体秘钥key_e可以包括kde的私钥sk_i和kde的公钥pk_i。kde接收到主kdc发送的秘钥生成信息c5,从秘钥生成信息c5中提取出kde的标识信息id_i、主kdc的标识信息id_kdc、a_i、b_i和s_i,根据a_i和s_i生成kde的私钥sk_i,将kde的标识信息id_i、主kdc的标识信息id_kdc和b_i拼接后的数据与保存的主kdc的中心秘钥中的pk2进行点乘,根据点乘结果的哈希值和b_i,生成kde的公钥pk_i。上述过程可以表示为:
271.id_i||id_kdc||a_i||b_i||s_i=aes-gcm(n_i,c5)
272.sk_i=a_i+s_i
273.pk_i=b_i+hash(id_i||id_kdc||b_i)
·
pk2
274.s909,kde向kda发送kde的实体秘钥。
275.s910,kda保存kde的实体秘钥。
276.kde将b_i,以及kde的私钥sk_i和kde的公钥pk_i发送至kda进行保存。该过程可以表示为:
277.store(b_i,sk_i,pk_i)
278.可选地,kda在保存kde发送的实体秘钥之后,还可以向kde发送秘钥已保存通知。
279.kde完成秘钥申请过程,并将生成的实体秘钥发送至kda保存。待kde再次启动时,可以从kda之间获取kde的实体秘钥,以用于与另一kde在会话建立过程中进行认证。
280.两个kde之间的会话建立过程可以参照上文中图5或图6所示的流程进行,在此不再赘述。
281.秘钥更新过程与首次秘钥申请时类似,也包括注册阶段和秘钥申请阶段。当kde通过kda与kdc进行通信时,秘钥更新过程的注册阶段如图10所示,可以包括如下步骤:
282.s1001,kda向kdc发送kdc秘钥信息更新请求。
283.kda可以理解为任意一个kda,kdc可以理解为任意一个kdc。kdc秘钥信息更新请求中携带有kda的标识信息,并采用随机数c1对kda的标识信息进行加密。
284.s1002,kdc向kda发送kdc的新秘钥信息。
285.kdc接收到kda发送的kdc秘钥信息更新请求后,采用随机数c1对kdc秘钥信息更新请求中携带的信息进行解密,得到kda的标识信息。kdc根据kda的标识信息,向该kda发送
kdc的新秘钥信息,新秘钥信息中可以包括kdc的新标识信息和kdc的新中心秘钥,其中,kdc的新中心秘钥包含在kdc的新公钥信息c2中,新公钥信息c2是采用加密算法对kdc的新中心秘钥进行加密得到的,kdc的新中心秘钥可以包括pk1_new和pk2_new。因此,kdc的新公钥信息c2可以表示为:c2=pk1_new,pk2_new,ciphersuite。kda接收并保存kdc的新秘钥信息。
286.s1003,kde向kda发送kdc秘钥更新请求。
287.s1004,kda向kde发送kdc的新秘钥信息。
288.kde从kdc的新秘钥信息中提取出kdc的新标识信息和新中心秘钥并保存。
289.s1005,kde生成新注册信息。
290.kde生成新注册信息的过程,可以参照步骤s803中kde生成注册信息的过程执行,在此不再赘述。
291.s1006,kde向kda发送旧注册信息和新注册信息。
292.kde根据kde的标识信息和新注册信息生成新的数据报文c3_new,kde向kda发送旧的数据报文c3和新的数据报文c3_new。该过程可以表示为:
293.register(c3,c3_new)
294.s1007,kda向kdc发送kde的旧注册信息和新注册信息。
295.s1008,kdc保存kde的新注册信息。
296.kda向kdc发送旧的数据报文c3和新的数据报文c3_new。kdc验证旧的数据报文c3,验证通过后,kdc注册新的数据报文c3_new,即从新的数据报文c3_new中提取kde的标识信息和新注册信息,并保存。该过程可以表示为:
297.store(id_i,authvalue_i_new)
298.s1009,kdc向kda发送注册信息已更新通知。
299.s1010,kda向kde发送注册信息已更新通知。
300.s1011,kde向kda发送待更新信息。
301.s1012,kda保存kde发送的待更新信息。
302.其中,待保存信息中可以包括kde的标识信息id_i,以及在生成新注册信息的过程中所使用的随机数k_new和数据r_i_new。该过程可以表示为:store(id_i,k_new,r_i_new)。
303.可选地,kda在保存kde发送的待更新信息之后,还可以向kde发送更新成功通知。
304.当kde通过kda与kdc进行通信时,秘钥更新过程的秘钥申请阶段如图11所示,可以包括如下步骤:
305.s1101,kde向kda发送新秘钥申请信息。
306.kde向每个kdc更新注册信息后,还要获取新的实体秘钥。kde可以根据kde的标识信息和主kdc的新中心秘钥,生成新秘钥申请信息c4_new,kde生成新秘钥申请信息c4_new的过程可以参照上述步骤s901中生成秘钥申请信息c4的过程执行,在此不再赘述。kde向kda发送新秘钥申请请求,新秘钥申请请求中携带有新秘钥申请信息c4_new。
307.s1102,kda向主kdc发送kde的新秘钥申请信息。
308.s1103,主kdc向kda发送新秘钥生成信息。
309.主kdc根据保存的该kde的新注册信息对新秘钥申请信息c4_new进行验证,验证通过后,主kdc为该kde确定新秘钥生成信息c5_new。kdc确定新秘钥生成信息c5_new的过程可
以参照上述步骤s905中确定秘钥生成信息c5的过程执行,在此不再赘述。主kdc向kda发送新秘钥生成信息c5_new。
310.s1104,kda向kde发送新秘钥生成信息。
311.s1105,kde根据新秘钥生成信息生成kde的新实体秘钥。
312.kde的新实体秘钥可以包括kde的新私钥sk_i_new和kde的新公钥pk_i_new。kde生成新实体秘钥的过程可以参照上述步骤s908中生成实体秘钥的过程执行,在此不再赘述。
313.s1106,kde向kda发送kde的新实体秘钥。
314.s1107,kda保存kde的新实体秘钥。
315.kde将在生成新实体秘钥的过程中使用的b_i_new,以及kde的新私钥sk_i_new和kde的新公钥pk_i_new发送至kda进行保存。该过程可以表示为:
316.store(b_i_new,sk_i_new,pk_i_new)
317.可选地,kda在保存kde发送的新实体秘钥之后,还可以向kde发送秘钥更新成功通知。
318.示例性地,如果kde1或kde2在会话建立过程中进行了秘钥更新,为了避免业务中断,会话建立过程仍可以继续进行,而不会更新会话秘钥。在会话时长超时或发起新的会话建立过程时,再重新协商新的会话秘钥。
319.当设备集群系统中包含kda时,秘钥吊销过程如图12所示,可以包括如下步骤:
320.s1201,管理节点向主kdc发送秘钥吊销指令。
321.如果管理员发现某些秘钥泄漏,可以在管理节点发起秘钥吊销过程。管理节点可以理解为可与主kdc进行通信的控制设备、虚拟设备或控制组件。管理节点可以根据管理员输入的泄漏秘钥的相关信息,生成rl,并向主kdc发送秘钥吊销指令,秘钥吊销指令中携带有rl。其中,泄漏秘钥的相关信息可以包括被泄漏的实体秘钥对应的kde的标识信息或被泄漏的中心秘钥对应的kdc的标识信息。
322.s1202,主kdc对秘钥吊销指令中携带的rl进行签名。
323.s1203,主kdc将签名后的rl发送至kda。
324.其中,该kda为与主kdc部署在同一控制设备内的kda。该步骤也可以理解为,kda从主kdc下载rl。
325.s1204,kda将签名后的rl分别发送至各个备kdc。
326.上述步骤s1203和步骤s1204也可以理解为,主kdc通过与其部署在同一控制设备内的kda将签名后的rl分发至各个备kdc。图12中仅以一个备kdc进行示例性说明。
327.s1205,备kdc根据接收到的rl更新保存的rl。
328.各个备kdc均基于新接收到的rl更新保存的rl。
329.kde可以按照设定时间间隔,通过kda从kdc下载rl,根据rl删除被泄漏的中心秘钥及其对应的kdc的标识信息。在与其他kde建立会话的过程中,kde可以根据下载的rl,确定对端的实体秘钥是否被吊销。
330.在一些实施例中,部署在同一控制设备内的多个kde可以通过图8所示的注册过程和图9所示的秘钥申请过程,分别获取不同的实体秘钥。在另一些实施例中,为了进一步减少资源消耗,可以减少秘钥申请过程的执行次数,部署在同一控制设备内的多个kde可以共享实体秘钥。也就是说,一个控制设备可以生成一个共同实体秘钥,该控制设备内的所有
kde共享该共同实体秘钥。示例性地,一个控制设备可以通过部署在该控制设备内的kda生成共同实体秘钥。kda生成共同实体秘钥的过程与kde生成实体秘钥的过程类似,包括kda的注册过程和kda生成秘钥过程。其中,kda的注册过程可以参照图3所示的kde的注册过程执行,kda生成秘钥过程可以参照图4所示的kde生成实体秘钥的过程执行,在此不再赘述。
331.控制设备中的各个kde启动时,可以从该控制设备中的kda获取共同实体秘钥。以kde1为例进行说明,kde1为部署在控制设备a的第一服务组件中的kde,kde1启动时,从控制设备a中的kda获取共同实体秘钥,该共同实体秘钥为控制设备a中的所有kde共享的实体秘钥。kde1在与部署在其他控制设备中的kde2建立会话的过程中,除使用该共同实体秘钥之外,还会加入kde1的标识信息,由于kde1的标识信息是唯一的,因此仍可以保证kde1与kde2协商生成的会话秘钥的唯一性。通过同一控制设备中的所有kde共享一个共同实体秘钥的方式,可以显著降低各个控制设备中保存的实体秘钥的数量,并且,无需各个kde单独执行注册过程,可以降低kdc中保存的注册信息的数量,提高设备集群系统的性能。
332.在一些实施例中,当同一控制设备内的所有kde共享一个共同实体秘钥时,kda可以按照设定时间周期对共同实体秘钥进行更新,生成并保存新的共同实体秘钥。共同实体秘钥更新过程可以参照上文记载的kde的秘钥更新过程执行,在此不再赘述。
333.在一些实施例中,当同一控制设备内的所有kde共享一个共同实体秘钥时,秘钥吊销过程可以包括如下步骤:管理节点向主kdc发送秘钥吊销指令,秘钥吊销指令中携带有rl。rl中包括泄漏秘钥的相关信息,即被吊销秘钥的相关信息,泄漏秘钥的相关信息可以包括被泄漏的共同实体秘钥对应的同一控制设备内的所有kde的标识信息或被泄漏的中心秘钥对应的kdc的标识信息。主kdc对接收到的秘钥吊销指令中携带的rl进行签名,主kdc通过与其部署在同一控制设备内的kda将签名后的rl分发至各个备kdc,以使各个备kdc更新保存的rl。
334.kde可以按照设定时间间隔,通过kda从kdc下载rl,根据rl删除被泄漏的中心秘钥及其对应的kdc的标识信息。在与其他kde建立会话的过程中,kde可以根据下载的rl,确定对端的共同实体秘钥是否被吊销。
335.与上述实施例基于相同的发明构思,本技术实施例还提供一种控制设备,该控制设备可以应用于上述设备集群系统中。
336.图13示例性地示出了本技术实施例提供的一种控制设备的结构示意图。如图13所示,在一些实施例中,控制设备100可以包括kdc和至少一个服务组件,每个服务组件中均部署有kde,也可以理解为,控制设备100中包括第一服务组件,第一服务组件中部署有第一秘钥分发实体kde。
337.kdc可以用于响应于第一kde的秘钥申请请求,为第一kde提供秘钥生成信息。第一kde用于根据kdc提供的秘钥生成信息生成第一实体秘钥。示例性地,第一kde可以在首次启动时或实体秘钥丢失时,向kdc发送秘钥申请请求,kdc响应于第一kde的秘钥申请请求,为第一kde提供秘钥生成信息。
338.第一kde还可以用于在与第二kde建立会话的过程中,向第二kde发送第一kde的标识信息和kdc的标识信息,以使第二kde根据第二kde的实体秘钥、第一kde的标识信息和kdc的标识信息,生成用于第一kde和第二kde之间进行认证的会话密钥;第一kde接收第二kde发送的第二kde的标识信息和kdc的标识信息,根据第一实体秘钥、第二kde的标识信息和
kdc的标识信息,生成用于第一kde和第二kde之间进行认证的会话密钥。其中,第二kde部署在设备集群系统中的第二控制设备的服务组件内。
339.在一种可能的实现方式中,kdc还可以用于:接收并保存设备集群系统中包含的各个kde的注册信息;以及在接收到第一kde的秘钥申请请求时,将秘钥申请请求中携带的秘钥申请信息与保存的第一kde的注册信息进行一致性验证,且在验证通过后为第一kde提供秘钥生成信息。
340.在一种可能的实现方式中,第一kde还可以用于:获取并保存kdc的标识信息和中心秘钥。在与第二kde协商生成会话秘钥时,第一kde可以根据kdc的标识信息,获取kdc的中心秘钥,并根据第一实体秘钥、第二kde的标识信息和kdc的中心秘钥生成会话秘钥。
341.在一种可能的实现方式中,kdc还可以用于:接收管理节点发送的秘钥吊销指令,对秘钥吊销指令中携带的吊销列表进行签名并分发至kdc的备kdc;吊销列表中包括被泄漏的实体秘钥对应的kde的标识信息和/或被泄漏的中心秘钥对应的kdc的标识信息。
342.图14示例性地示出了本技术实施例提供的另一种控制设备的结构示意图。如图14所示,在另一些实施例中,控制设备200可以包括kdc、kda和至少一个服务组件,每个服务组件中均部署有kde。其中,kda用于保存第一控制设备内的各个服务组件中包括的kde的实体秘钥,其中包括第一实体秘钥;相对应地,第一kde还用于在生成第一实体秘钥之后,将第一实体秘钥保存在第一控制设备的kda中,并在每次启动时,从第一控制设备的kda中获取第一实体秘钥。
343.在一种可能的实现方式中,第一控制设备中的各个kde还可以通过第一控制设备的kda与各个kdc进行信息传输。示例性地,第一控制设备的kda还可以用于:接收第一kde发送的秘钥申请请求,并向kdc转发第一kde的秘钥申请请求;以及接收kdc发送的秘钥生成信息,并向第一kde转发该秘钥生成信息。
344.可以理解的是,本技术实施例示意的结构并不构成对控制设备的具体限定。在本技术另一些实施例中,控制设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
345.与上述实施例基于相同的发明构思,本技术实施例还提供一种会话秘钥生成方法,该方法可以应用于上述设备集群系统中的控制设备。图15示出了本技术实施例提供的一种会话秘钥生成方法的流程图。如图15所示,该方法可以包括如下步骤:
346.s1501,第一kde获取kdc为第一kde提供的秘钥生成信息,并根据秘钥生成信息生成第一实体秘钥。
347.其中,第一kde部署在第一控制设备中的服务组件内;第一控制设备为设备集群系统包括的多个控制设备中的一个,kdc位于多个控制设备中的任意一个控制设备中。
348.在一些实施例中,第一kde从kdc获取秘钥生成信息之前,第一kde还可以生成注册信息,并将第一kde的注册信息发送至kdc,以使kdc保存第一kde的注册信息。
349.第一kde的秘钥生成信息是kdc在接收到第一kde的秘钥申请请求时,将秘钥申请请求中携带有的秘钥申请信息与保存的第一kde的注册信息进行一致性验证,且在验证通过后为第一kde提供的。
350.在一些实施例中,第一kde从kdc获取秘钥生成信息之前,第一kde还可以接收并保
存设备集群系统中包含的各个kdc的标识信息和中心秘钥。
351.s1502,在与第二kde建立会话的过程中,第一kde向第二kde发送第一kde的标识信息和kdc的标识信息。
352.其中,第二kde部署在设备集群系统中的第二控制设备的服务组件内。第二kde可以根据kdc的标识信息,获取kdc的中心秘钥,并根据第二kde的实体秘钥、第二kde的标识信息和kdc的中心秘钥生成会话秘钥。
353.s1503,第一kde接收第二kde发送的第二kde的标识信息和kdc的标识信息。
354.s1504,第一kde根据第一实体秘钥、第二kde的标识信息和kdc的标识信息,生成用于第一kde和第二kde之间进行认证的会话秘钥。
355.在一些实施例中,第一kde可以根据kdc的标识信息,获取kdc的中心秘钥,并根据第一实体秘钥、第二kde的标识信息和kdc的中心秘钥生成会话秘钥。
356.第一kde和第二kde可以基于协商生成的会话秘钥进行认证和会话。
357.在一种可能的实现方式中,第一控制设备内部署有kda。第一kde在生成第一实体秘钥之后,可以将第一实体秘钥保存至第一控制设备内部署的kda中,并在每次启动时,从kda中获取第一实体秘钥。
358.第一kde还可以通过kda向kdc发送秘钥申请请求,并接收kda转发的从kdc获取的秘钥生成信息。
359.本技术的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行计算机程序或指令的方式来实现。计算机程序或指令可以构成计算机程序产品。本技术实施例还提供一种计算机程序产品,包含有计算机可执行指令。在一种实施例中,该计算机可执行指令用于使计算机执行图15所示的方法实施例中的功能。
360.计算机可执行指令可以被存放于计算机可读存储介质中,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质内存储有可执行指令。在一种实施例中,该计算机可执行指令用于使计算机执行图15所示的方法实施例中的功能。
361.本技术实施例提供的计算机可读存储介质可以是随机存取存储器(random access memory,ram)、闪存、只读存储器(read-only memory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)、寄存器、硬盘、移动硬盘、cd-rom或者本领域熟知的任何其它形式的计算机可读存储介质。
362.计算机可执行指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(digital video disc,dvd);还可以是半导体介质,例如,固态硬盘。
363.在本技术的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。此外,术语“包括”和“部署”以及他们的任何变形,意图
在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
364.尽管结合具体特征及其实施例对本技术进行了描述,显而易见的,在不脱离本技术的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的方案进行示例性说明,且视为已覆盖本技术范围内的任意和所有修改、变化、组合或等同物。
365.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的范围。这样,倘若本技术实施例的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
技术特征:
1.一种控制设备,其特征在于,应用于设备集群系统中,所述控制设备包括秘钥分发中心kdc和第一服务组件,所述第一服务组件中部署有第一秘钥分发实体kde;所述kdc,用于响应于所述第一kde的秘钥申请请求,为所述第一kde提供秘钥生成信息;所述第一kde,用于根据所述kdc提供的秘钥生成信息生成第一实体秘钥;所述第一kde,还用于在与另一控制设备的服务组件的第二kde建立会话的过程中,向第二kde发送所述第一kde的标识信息和所述kdc的标识信息;以及接收所述第二kde发送的所述第二kde的标识信息和所述kdc的标识信息;根据所述第一实体秘钥、所述第二kde的标识信息和所述kdc的标识信息,生成用于所述第一kde和所述第二kde之间进行认证的会话密钥。2.根据权利要求1所述的控制设备,其特征在于,所述控制设备中还包括秘钥分发代理kda,所述第一kde,还用于在生成第一实体秘钥之后,将所述第一实体秘钥保存在所述kda中,并在每次启动时,从所述kda中获取所述第一实体秘钥。3.根据权利要求2所述的控制设备,其特征在于,所述kda还用于:接收第一kde发送的秘钥申请请求,并向所述kdc转发所述第一kde的秘钥申请请求;以及接收所述kdc发送的所述秘钥生成信息,并向所述第一kde转发所述秘钥生成信息。4.根据权利要求1~3中任一项所述的控制设备,其特征在于,所述kdc还用于:接收并保存所述设备集群系统中包含的各个kde的注册信息;以及在接收到第一kde的秘钥申请请求时,将所述秘钥申请请求中携带的秘钥申请信息与保存的所述第一kde的注册信息进行一致性验证,且在验证通过后为所述第一kde提供秘钥生成信息。5.根据权利要求1~4中任一项所述的控制设备,其特征在于,所述第一kde还用于:获取并保存所述kdc的标识信息和中心秘钥。6.根据权利要求5所述的控制设备,其特征在于,所述第一kde,具体用于根据所述kdc的标识信息,获取所述kdc的中心秘钥,并根据所述第一实体秘钥、所述第二kde的标识信息和所述kdc的中心秘钥生成所述会话秘钥。7.根据权利要求1~6中任一项所述的控制设备,其特征在于,所述kdc还用于:接收管理节点发送的秘钥吊销指令,对所述秘钥吊销指令中携带的吊销列表进行签名并分发至所述kdc的备kdc;所述吊销列表中包括被泄漏的实体秘钥对应的kde的标识信息和/或被泄漏的中心秘钥对应的kdc的标识信息。8.一种会话秘钥生成方法,其特征在于,包括:第一秘钥分发实体kde获取秘钥分发中心kdc为所述第一kde提供的秘钥生成信息,并根据所述秘钥生成信息生成第一实体秘钥;所述第一kde部署在设备集群系统中的第一控制设备的服务组件内;在与第二kde建立会话的过程中,所述第一kde向第二kde发送所述第一kde的标识信息和所述kdc的标识信息;所述第二kde部署在所述设备集群系统中的第二控制设备的服务组件内;所述第一kde接收所述第二kde发送的所述第二kde的标识信息和所述kdc的标识信息;
所述第一kde根据所述第一实体秘钥、所述第二kde的标识信息和所述kdc的标识信息,生成用于所述第一kde和所述第二kde之间进行认证的会话秘钥。9.根据权利要求8所述的方法,其特征在于,所述方法还包括:所述第一kde在生成第一实体秘钥之后,将所述第一实体秘钥保存至所述第一控制设备内部署的秘钥分发代理kda中,并在每次启动时,从所述kda中获取所述第一实体秘钥。10.根据权利要求9所述的方法,其特征在于,所述第一秘钥分发实体kde获取秘钥分发中心kdc为所述第一kde提供的秘钥生成信息,包括:所述第一kde通过所述kda向所述kdc发送秘钥申请请求;所述第一kde接收所述kda转发的从所述kdc获取的所述秘钥生成信息。11.根据权利要求8~10中任一项所述的方法,其特征在于,所述第一秘钥分发实体kde从秘钥分发中心kdc获取秘钥生成信息之前,所述方法还包括:所述第一kde生成注册信息,并将所述第一kde的注册信息发送至所述kdc,以使所述kdc保存所述第一kde的注册信息。12.根据权利要求11所述的方法,其特征在于,所述秘钥生成信息是所述kdc在接收到第一kde的秘钥申请请求时,将所述秘钥申请请求中携带有的秘钥申请信息与保存的所述第一kde的注册信息进行一致性验证,且在验证通过后为所述第一kde提供的。13.根据权利要求11或12所述的方法,其特征在于,所述第一秘钥分发实体kde从秘钥分发中心kdc获取秘钥生成信息之前,所述方法还包括:所述第一kde接收并保存所述kdc的标识信息和中心秘钥。14.根据权利要求13所述的方法,其特征在于,所述根据所述秘钥生成信息生成第一实体秘钥,包括:所述第一kde根据所述kdc的标识信息,获取所述kdc的中心秘钥;所述第一kde根据所述第一实体秘钥、所述第二kde的标识信息和所述kdc的中心秘钥生成所述会话秘钥。15.一种设备集群系统,其特征在于,包括多个控制设备;所述多个控制设备中包括如权利要求1~7中任一项所述的控制设备。16.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求8至14中任一项所述的方法。17.一种计算机程序产品,其特征在于,包含有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求8至14中任一项所述的方法。
技术总结
本申请公开了一种会话秘钥生成方法、控制设备和设备集群系统,其中,控制设备内的服务组件中均部署有KDE,不同控制设备中的两个服务组件之间可以通过服务组件内部署的KDE进行认证和建立会话。在会话建立过程中,两个KDE协商生成会话秘钥,并基于确定的会话秘钥进行认证,而无需通过数字证书进行认证,可以提高认证效率,提高系统性能。并且,由两个KDE协商生成会话秘钥,而无需在两个KDE建立会话时,由其中一个KDE向KDC申请此次会话的会话秘钥,即无需KDE在每次建立会话之前均访问KDC,从而可以大量减少KDC被访问的次数,避免因大量访问KDC造成阻塞带来的性能瓶颈,提高KDC的性能和可靠性。靠性。靠性。
技术研发人员:马建忠 张颖 汤华君
受保护的技术使用者:华为技术有限公司
技术研发日:2022.02.24
技术公布日:2023/9/7
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/