基于KMIP协议的密钥管理客户端服务端方法和系统及介质与流程

文档序号:16734543发布日期:2019-01-28 12:31阅读:1485来源:国知局
基于KMIP协议的密钥管理客户端服务端方法和系统及介质与流程

本发明涉及数据中心的数据安全领域,具体地,涉及一种基于kmip协议的密钥管理客户端、服务端方法和系统及介质。



背景技术:

libvirt是用于管理虚拟化平台的开源的api,后台程序和管理工具。它可以用于管理kvm、xen、vmwareesx,qemu和其他虚拟化技术。这些api在云计算的解决方案中广泛使用。开源的libvirt实现提供了一个简单的虚拟机密钥管理机制。这套机制使用宿主系统提供的开源的加解密算法对用户输入的口令进行计算,然后生成密钥;并以文本方式保存在本地。这种机制造成密钥的强度不高且密钥的安全性低,不满足国家的保密要求。

kmip(keymanagementinteroperabilityprotocol)是一种通信协议,该协议定义了在秘钥管理服务器上操作加密秘钥的消息格式。秘钥可能在服务器上被创建、和检索,可能被其他秘钥封装,kmip定义了用于在服务器上执行加密、解密操作的消息格式。通过kimp通讯协议对libvirt产生的虚拟机密钥进行二次封装,形成强度高且安全性高的密钥研究具有很大现实意义。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种基于kmip协议的密钥管理客户端服务端方法和系统及介质。

根据本发明提供的一种基于kmip协议的密钥管理客户端方法,包括:

与服务端建立连接步骤:接收由qemu创建的镜像标识,接收由libvirt发送的密钥请求,通过终端证书、配置服务端ip地址和端口,与服务端建立连接;

向服务端发起密钥协商请求步骤:接收到服务端发送对的身份认证成功消息之后,向服务端发起密钥协商请求;

接收服务端保护密钥步骤:接收服务端生成的会话秘钥、第二保护密钥;

向服务端发送镜像标识步骤:使用会话秘钥解密第二保护密钥,获得第一保护密钥,使用会话秘钥加密第一镜像标识,获得第二镜像标识,向服务端发送第二镜像标识;

接收服务端密钥步骤:接收服务端发送的镜像加密密钥,将所述镜像加密密钥发送给libvirt进行密钥分发。

根据本发明提供的一种基于kmip协议的密钥管理服务端方法,包括:

验证客户端身份步骤:对客户端发起的连接请求,进行身份验证,将身份验证结果发送给客户端;

密钥协商步骤:接收客户端发起的密钥协商请求,对密钥协商生成会话密钥,将密钥协商结果发送给客户端;

保护密钥检索步骤:在服务端数据库中进行检索客户端的保护密钥,获得第一保护密钥,使用会话密钥对第一保护密钥进行加密,获得第二保护密钥,将第二保护密钥发送给客户端;

检索镜像标识步骤:接收客户端发送的第二镜像标识,使用会话密钥对第二镜像标识进行解密,获得第一镜像标识,在数据库中检索第一镜像标识,并检索与第一镜像标识对应的镜像密钥,获得第一镜像加密密钥,将所述第一镜像加密密钥发送给客户端。

优选地,所述身份验证结果为验证通过或验证不通过,当所述身份验证结果为验证通过时,将身份验证成功消息发送给客户端,当所述身份验证结果为验证不通过时,将身份验证结果记录到系统日志文件,终止连接;

优选地,所述密钥协商结果为协商成功或协商不成功,当所述密钥协商结果为协商成功时,将密钥协商成功消息发送给客户端,当所述密钥协商结果为协商不成功时,将密钥协商结果记录到系统日志文件,终止连接。

优选地,所述保护密钥检索步骤中,当未获得第一保护密钥时,终止连接,销毁会话密钥,将检索结果记录到系统日志文件。

优选地,所述检索镜像标识步骤中,当未检索到第一镜像标识时,判定客户端请求是否为启动过程,当客户端请求为启动过程时,则发送启动过程无需镜像密钥消息给客户端;当客户端请求不是启动过程时,则生成第二镜像加密密钥,保存第一镜像标识与第二镜像加密密钥的对应关系,将所述镜像加密密钥发送给客户端。

优选地,所述检索镜像标识步骤中,当未检索到第一镜像加密密钥时,判定客户端请求是否为启动过程,当客户端请求为启动过程时,则发送启动过程无需镜像密钥消息给客户端;当客户端请求不是启动过程时,则生成第二镜像加密密钥,更新第一镜像标识与第二镜像加密密钥的对应关系,将所述镜像加密密钥发送给客户端;

优选地,基于kmip协议的密钥管理服务端方法还包括镜像加密密钥生成步骤:

生成新的密钥,记为第一密钥;

使用保护密钥加密第一密钥,将加密后的密钥记为第二密钥;

使用会话密钥加密第二密钥,将加密后的密钥记为第三密钥;

保存第三密钥与第一镜像标识的对应关系,将第三密钥作为新生成的镜像加密密钥;

根据本发明提供的一种基于kmip协议的密钥管理系统,包括libvirt密钥分发模块、客户端、服务端、kmip协议通信模块;

libvirt密钥分发模块驱动客户端连接到服务端;

客户端访问服务端获取密钥;

服务端管理密钥、分发密钥;

kmip协议通信模块基于kmip协议实现客户端与服务端之间的通讯信息交换。

根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现以上任一项所述的方法的步骤。

与现有技术相比,本发明具有如下的有益效果:

1、实现密钥与被保护对象之间的分离存储,确保密钥和对象不被同时窃取;

2、使用高强度密钥生成算法,避免原生libvirt使用简单的口令作为密钥;

3、使用kmip协议作为通信协议,实现对密钥生命周期的统一操作。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为基于kmip协议的密钥管理系统的原理框架图;

图2为基于kmip协议的密钥管理系统的业务流程图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

针对目前开源libvirt不能满足国家保密要求的密钥管理部分,基于kmip协议对密钥管理模块的功能进行必要的重新开发和实现。本发明使用具备国家保密资质的硬件加密算法产生高强度的密钥;使用保护密钥对产生密钥进行保护存放;对密钥与被保护对象进行隔离,并单独存放,以避免两者同时被泄漏。

如图1所示,本发明公开了一种基于kmip协议的密钥管理系统,包括libvirt密钥分发模块、客户端、服务端、kmip协议通信模块;libvirt密钥分发模块驱动客户端连接到服务端,libvirt密钥分发模块是一个驱动程序,是libvirt的一个组成部分,使用kmip协议与客户端交互;客户端访问服务端获取密钥;服务端管理密钥、分发密钥,服务端主要包括密钥管理、虚拟机管理、密钥与虚拟机对管理,服务端基于kmip协议实现对密钥的全生命周期进行管理以及密钥的分发;kmip协议通信模块基于kmip协议实现客户端与服务端之间的通讯信息交换,提供一套处理kmip协议的共享库,客户端和服务端使用它来完成彼此之间的信息交换。

所述系统中的客户端是通过基于kmip协议的密钥管理客户端方法实现,所述方法包括:与服务端建立连接步骤:接收由qemu创建的镜像标识,接收由libvirt发送的密钥请求,通过终端证书、配置服务端ip地址和端口,与服务端建立连接;向服务端发起密钥协商请求步骤:接收到服务端发送对的身份认证成功消息之后,向服务端发起密钥协商请求;接收服务端保护密钥步骤:接收服务端生成的会话秘钥、第二保护密钥;向服务端发送镜像标识步骤:使用会话秘钥解密第二保护密钥,获得第一保护密钥,使用会话秘钥加密第一镜像标识,获得第二镜像标识,向服务端发送第二镜像标识;接收服务端密钥步骤:接收服务端发送的镜像加密密钥,将所述镜像加密密钥发送给libvirt进行密钥分发。在客户端请求与服务端建立连接之前,服务端给客户端分配终端证书、保护密钥,终端证书存放在客户端,终端证书对应的保护密钥存放在服务端。

所述系统中的服务端端是通过基于kmip协议的密钥管理服务端方法实现,所述方法包括:验证客户端身份步骤:对客户端发起的连接请求,进行身份验证,将身份验证结果发送给客户端;密钥协商步骤:接收客户端发起的密钥协商请求,对密钥协商生成会话密钥,将密钥协商结果发送给客户端;保护密钥检索步骤:在服务端数据库中进行检索客户端的保护密钥,获得第一保护密钥,使用会话密钥对第一保护密钥进行加密,获得第二保护密钥,将第二保护密钥发送给客户端;检索镜像标识步骤:接收客户端发送的第二镜像标识,使用会话密钥对第二镜像标识进行解密,获得第一镜像标识,在数据库中检索第一镜像标识,并检索与第一镜像标识对应的镜像密钥,获得第一镜像加密密钥,将所述第一镜像加密密钥发送给客户端。

具体地,所述身份验证结果为验证通过或验证不通过,当所述身份验证结果为验证通过时,将身份验证成功消息发送给客户端,当所述身份验证结果为验证不通过时,将身份验证结果记录到系统日志文件,终止连接。

具体地,所述密钥协商结果为协商成功或协商不成功,当所述密钥协商结果为协商成功时,将密钥协商成功消息发送给客户端,当所述密钥协商结果为协商不成功时,将密钥协商结果记录到系统日志文件,终止连接。

具体地,所述保护密钥检索步骤中,当未获得第一保护密钥时,终止连接,销毁会话密钥,将检索结果记录到系统日志文件。

具体地,所述检索镜像标识步骤中,当未检索到第一镜像标识时,判定客户端请求是否为启动过程,当客户端请求为启动过程时,则发送启动过程无需镜像密钥消息给客户端;当客户端请求不是启动过程时,即当客户端请求是加密过程时,则生成第二镜像加密密钥,保存第一镜像标识与第二镜像加密密钥的对应关系,将所述镜像加密密钥发送给客户端;

具体地,所述检索镜像标识步骤中,当未检索到第一镜像加密密钥时,判定客户端请求是否为启动过程,当客户端请求为启动过程时,则发送启动过程无需镜像密钥消息给客户端;当客户端请求不是启动过程时,即当客户端请求是加密过程时,则生成第二镜像加密密钥,更新第一镜像标识与第二镜像加密密钥的对应关系,将所述镜像加密密钥发送给客户端;

具体地,还包括镜像加密密钥生成步骤:生成新的密钥,记为第一密钥;使用保护密钥加密第一密钥,将加密后的密钥记为第二密钥;使用会话密钥加密第二密钥,将加密后的密钥记为第三密钥;保存第三密钥与第一镜像标识的对应关系,将第三密钥作为新生成的镜像加密密钥。

本发明公开了一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述的方法的步骤。

在具体的实施中首先通过开源的libvirt实现密钥分发模块,其次通过开源的pykmip实现kmip协议,再次实现基于kmip协议的密钥管理服务器。

以下对整个系统的业务流程如下:

1)kmip客户端向服务端申请一个客户端的终端证书;

2)在kmip客户端一侧配置服务端的ip地址和端口;

3)kmip服务器为一个kmip客户端生成证书的同时,为这个客户端生成一个kek(保护密钥);

4)使用qemu创建一个镜像;

5)libvirt密钥分发模块驱动kmip客户端使用证书连接到服务端;

6)服务端验证kmip客户端的身份;

7)如果6)的验证结果为成功,则kmip客户端的身份被服务端接受,它将向转到9)继续执行;

8)如果6)的验证结果为失败,则:

a)服务端将拒绝kmip客户端的连接请求,

b)记录到系统日志中

c)退出请求处理。

9)在收到服务端接受消息后,客户端发起密钥协商请求;

10)如果9)的请求结果为成功,则密钥协商成功,客户端和服务器同时拥有了一个相同的sk(会话密钥);并转入12;

11)如果9)的请求结果为失败,则:

a)服务端将终止与客户端的连接,

b)记录系统日志;

12)服务端从数据库中检索出kmip客户端的kek;

13)如果12)的检索结果为成功,则返回kek;并转入15;

14)如果12)的检索结果为不成功,则:

a)服务端将终止与kmip客户端的连接,

b)销毁会话密钥

c)记录日志

15)服务端使用协商出来的会话密钥加密这个kek;

16)服务端将加密后的kek发送给kmip客户端;

17)kmip客户端使用在第10步协商出来的会话密钥还原这个kek;

18)然后,kmip客户端向服务端发送将被加密的镜像的标识;

19)服务端接收到请求后,将在数据库中检索与镜像标识对应的密钥;

20)如果在第19步中检索到密钥,将转入22

21)如果在第19步中没有检索密钥,

a)如果是启动过程

i.服务端将直接通知kmip客户端;

ii.kmip客户端将错误返回libvirt密钥分发模块;

iii.libvirt密钥分发模块通知libvirt终止镜像的启动过程;

b)如果是加密过程

i.服务端检索密钥库中,

1.有未被使用且未过期的密钥,

2.如果没有可用的密钥,服务器生成新的密钥;

3.将这个密钥与第18步客户端提供的镜像标识绑定;

22)通过第20、21两步,服务端最终获取一个用于镜像加密的密钥;

23)服务端使用kmip客户端的kek将这个密钥进行加密;

24)之后,将加密后的密钥使用会话密钥加密;

25)经过第23、24后,将密钥传递到kmip客户端;

26)kmip客户端将获取的密钥返回给libvirt密钥分发模块;libvirt密钥分发模块返回密钥给libvirt的加密算法。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

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