首页> 中国专利> 加密数据库系统、实现加密数据库系统的方法以及装置

加密数据库系统、实现加密数据库系统的方法以及装置

摘要

本说明书实施例提供加密数据库系统、实现加密数据库系统的方法以及装置,其中所述加密数据库系统包括:客户端以及服务器,其中,所述服务器上设置了基于不同可信平台提供的多个安全模块以及至少一个数据库服务端。所述多个安全模块设置了统一的服务接口,所述数据库服务端通过所述服务接口与所述安全模块通信。数据库服务端响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端。客户端利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文。数据库服务端将第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块。安全模块将所述第一密文解密为明文,对所述明文进行可信计算。

著录项

  • 公开/公告号CN112699399A

    专利类型发明专利

  • 公开/公告日2021-04-23

    原文格式PDF

  • 申请/专利权人 阿里云计算有限公司;

    申请/专利号CN202110299547.6

  • 发明设计人 李飞飞;汪晟;黎火荣;

    申请日2021-03-22

  • 分类号G06F21/60(20130101);G06F21/62(20130101);G06F21/57(20130101);

  • 代理机构11637 北京智信禾专利代理有限公司;

  • 代理人赵杰

  • 地址 310024 浙江省杭州市西湖区转塘科技经济区块12号

  • 入库时间 2023-06-19 10:43:23

说明书

技术领域

本说明书实施例涉及计算机技术领域,特别涉及一种加密数据库系统。本说明书一个或者多个实施例同时涉及实现加密数据库系统的方法以及装置,计算设备以及计算机可读存储介质。

背景技术

由于云平台具备健全的安全防护能力,因此用户在使用云数据库的同时,不必担心数据库数据泄露。为了满足用户对数据安全更高的需求,越来越多云数据库需要基于可信平台进行可信计算,甚至已有的一些数据库产品,也需要改造为基于可信平台的数据库。

但是,不同TEE技术实现的可信平台各有优缺点,难以满足云平台下多种多样的应用场景的需求。

发明内容

有鉴于此,本说明书实施例提供了一种加密数据库系统。本说明书一个或者多个实施例同时涉及实现加密数据库系统的方法、装置,计算设备,以及计算机可读存储介质,以解决现有技术中存在的技术缺陷。

根据本说明书实施例的第一方面,提供了一种加密数据库系统,包括:客户端以及服务器,其中,所述服务器上设置了基于不同可信平台提供的多个安全模块以及至少一个数据库服务端,其中,所述多个安全模块设置了统一的服务接口,所述数据库服务端通过所述服务接口与所述安全模块通信。所述客户端,用于与数据库服务端连接;接收所述数据库服务端发送的加密算法信息和协议信息;利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文;将携带有所述第一密文的第一访问请求发送给所述数据库服务端。所述数据库服务端,用于响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端;响应于接收到客户端发送的第一访问请求,将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块。所述安全模块,用于响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

根据本说明书实施例的第二方面,提供了一种实现加密数据库系统的方法,应用于客户端,所述客户端与数据库服务端连接,所述数据库服务端是设置在服务器上的至少一个数据库服务端,所述服务器上还设置了基于不同可信平台提供的多个安全模块,所述多个安全模块设置了统一的服务接口,所述数据库服务端通过所述服务接口与所述安全模块通信,所述方法包括:接收所述数据库服务端发送的加密算法信息和协议信息;利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文;将携带有所述第一密文的第一访问请求发送给所述数据库服务端,使所述数据库服务端将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

根据本说明书实施例的第三方面,提供了一种实现加密数据库系统的装置,配置于客户端,所述客户端与数据库服务端连接,所述数据库服务端是设置在服务器上的至少一个数据库服务端,所述服务器上还设置了基于不同可信平台提供的多个安全模块,所述多个安全模块设置了统一的服务接口,所述数据库服务端通过所述服务接口与所述安全模块通信,所述装置包括:算法协议接收模块,可以被配置为接收所述数据库服务端发送的加密算法信息和协议信息。加密模块,可以被配置为利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文。请求发送模块,可以被配置为将携带有所述第一密文的第一访问请求发送给所述数据库服务端,使所述数据库服务端将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

根据本说明书实施例的第四方面,提供了一种实现加密数据库系统的方法,应用于数据库服务端,所述数据库服务端是设置在服务器上的至少一个数据库服务端,所述服务器上还设置了基于不同可信平台提供的多个安全模块,所述多个安全模块设置了统一的服务接口,所述数据库服务端通过所述服务接口与所述安全模块通信,所述方法包括:响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端,使所述客户端利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文并将携带有所述第一密文的第一访问请求发送给所述数据库服务端;响应于接收到客户端发送的第一访问请求,将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

根据本说明书实施例的第五方面,提供了一种实现加密数据库系统的装置,配置于数据库服务端,所述数据库服务端是设置在服务器上的至少一个数据库服务端,所述服务器上还设置了基于不同可信平台提供的多个安全模块,所述多个安全模块设置了统一的服务接口,所述数据库服务端通过所述服务接口与所述安全模块通信,所述装置包括:算法协议发送模块,被配置为响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端,使所述客户端利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文并将携带有所述第一密文的第一访问请求发送给所述数据库服务端。密文转发模块,被配置为响应于接收到客户端发送的第一访问请求,将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

根据本说明书实施例的第六方面,提供了一种实现加密数据库系统的方法,应用于安全模块,所述安全模块是设置在服务器上的基于不同可信平台提供的多个安全模块中的任意安全模块,所述多个安全模块设置了统一的服务接口,所述服务器上还设置了至少一个数据库服务端,所述数据库服务端通过所述服务接口与所述安全模块通信,所述方法包括:响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文;其中,所述第一密文是所述数据库服务端从第一访问请求中得到的,所述第一访问请求是所述客户端利用加密算法信息和协议信息生成之后发送给所述数据库服务端的,所述加密算法信息和协议信息是所述数据库服务端响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端的;对所述明文进行可信计算。

根据本说明书实施例的第七方面,提供了一种实现加密数据库系统的装置,配置于安全模块,所述安全模块是设置在服务器上的基于不同可信平台提供的多个安全模块中的任意安全模块,所述多个安全模块设置了统一的服务接口,所述服务器上还设置了至少一个数据库服务端,所述数据库服务端通过所述服务接口与所述安全模块通信,所述装置包括:密文接收模块,被配置为响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文。其中,所述第一密文是所述数据库服务端从第一访问请求中得到的,所述第一访问请求是所述客户端利用加密算法信息和协议信息生成之后发送给所述数据库服务端的,所述加密算法信息和协议信息是所述数据库服务端响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端的。计算模块,被配置为对所述明文进行可信计算。

根据本说明书实施例的第八方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:接收数据库服务端发送的加密算法信息和协议信息;所述数据库服务端是设置在服务器上的至少一个数据库服务端,所述服务器上还设置了基于不同可信平台提供的多个安全模块,所述多个安全模块设置了统一的服务接口,所述数据库服务端通过所述服务接口与所述安全模块通信;利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文;将携带有所述第一密文的第一访问请求发送给所述数据库服务端,使所述数据库服务端将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

根据本说明书实施例的第九方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端,使所述客户端利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文并将携带有所述第一密文的第一访问请求发送给所述数据库服务端,其中,所述服务器上设置了基于不同可信平台提供的多个安全模块,所述多个安全模块设置了统一的服务接口;响应于接收到客户端发送的第一访问请求,将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

根据本说明书实施例的第十方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:响应于接收到数据库服务端通过服务接口发送的第一密文,将所述第一密文解密为明文,其中,所述服务接口是多个安全模块的统一的服务接口,所述多个安全模块是基于不同可信平台的安全模块;其中,所述第一密文是所述数据库服务端从第一访问请求中得到的,所述第一访问请求是所述客户端利用加密算法信息和协议信息生成之后发送给所述数据库服务端的,所述加密算法信息和协议信息是所述数据库服务端响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端的;对所述明文进行可信计算。

根据本说明书实施例的第十一方面,提供了一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现本说明书任意实施例所述实现加密数据库系统的方法的步骤。

本说明书实施例提供的技术方案实现了加密数据库系统,由于在该加密数据库系统中,服务器上设置了基于不同可信平台提供的多个安全模块,多个安全模块设置了统一的服务接口,数据库服务端通过该服务接口可以与至少一个安全模块通信,因此,在一个云平台的数据库集群中,数据库服务端可以按需选定部署在不同的可信平台上,集群内可以同时支持使用不同可信平台的数据库服务端。而且,在客户端与数据库服务端连接之后,数据库服务端根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端,从而客户端能够自适应地按照应用场景实际情况使用对应的加密算法和协议加密敏感数据。客户端的敏感数据由密钥加密保护,除安全模块外的第三方以及数据库获得只能获得数据密文。可见,本说明书实施例提供的技术方案实现的加密数据库系统能够基于不同可信平台快速应用,支持基于不同可信平台的数据库系统,从而实现一种通用的加密数据库系统,满足了云平台下多种多样的应用场景的需求。

附图说明

图1是本说明书一个实施例提供的一种加密数据库系统的框图;

图2是本说明书另一个实施例提供的一种加密数据库系统的框图;

图3是本说明书又一个实施例提供的一种加密数据库系统的框图;

图4是本说明书再一个实施例提供的一种加密数据库系统的框图;

图5是本说明书一个实施例提供的应用于客户端的实现加密数据库系统的方法的流程图;

图6是本说明书一个实施例提供的配置于客户端的实现加密数据库系统的装置的流程图;

图7是本说明书另一个实施例提供的配置于客户端的实现加密数据库系统的装置的流程图;

图8是本说明书一个实施例提供的应用于数据库服务端的实现加密数据库系统的方法的流程图;

图9是本说明书一个实施例提供的配置于数据库服务端的实现加密数据库系统的装置的流程图;

图10是本说明书另一个实施例提供的配置于数据库服务端的实现加密数据库系统的装置的流程图;

图11是本说明书一个实施例提供的应用于安全模块的实现加密数据库系统的方法的流程图;

图12是本说明书一个实施例提供的配置于安全模块的实现加密数据库系统的装置的流程图;

图13是本说明书另一个实施例提供的配置于安全模块的实现加密数据库系统的装置的流程图;

图14是本说明书一个实施例提供的一种计算设备的结构框图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。

在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本说明书一个或多个实施例涉及的名词术语进行解释。

TEE:Trusted Execution Environment,可信执行环境。该可信执行环境通常通过提供与外界隔离的安全执行环境,保护其内代码和数据不会被泄露或恶意篡改。可信平台,例如,可以是基于TEE技术实现的可信平台。基于TEE的方案只需要信任硬件环境即可,无需信任服务提供方。

Enclave:安全模块,可以是由TEE提供的可信执行环境,基于TEE的安全特性保证其上内容不会被外部获取。Enclave可以是任意TEE平台提供的enclave实现,例如SGXenclave、FPGA enclave、或者TrustZone enclave。

SGX:Software Guard Extensions,Intel CPU提供的一组安全指令集,能够为应用程序提供安全的隔离执行环境,是TEE的一种技术实现。

FPGA:Field Programmable Gate Array,现场可编程门阵列,可以在定制电路上编程实现TEE环境。

在本说明书中,提供了加密数据库系统、实现加密数据库系统的方法以及装置,计算设备以及计算机可读存储介质,在下面的实施例中逐一进行详细说明。

图1示出了根据本说明书一个实施例提供的一种加密数据库系统的框图。如图1所示,该加密数据库系统可以包括:客户端120以及服务器140。

所述服务器140上设置了基于不同可信平台提供的多个安全模块以及至少一个数据库服务端。如图1所示安全模块1402可以是SGX enclave、FPGA enclave…TZ enclave等中的任一种或多种,数据库服务端1404可以是MySQL、PG Extension等中的任一种或多种。其中,所述多个安全模块设置了统一的服务接口1406,所述数据库服务端1404通过所述服务接口1406与所述安全模块1402通信。可以理解的是,本说明书所述的安全模块1402可以是图中所示的任意安全模块,所述数据库服务端1404可以是图中所示的任意数据库服务端。

所述客户端120,可以用于与数据库服务端1404连接;接收所述数据库服务端1404发送的加密算法信息和协议信息;利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文;将携带有所述第一密文的第一访问请求发送给所述数据库服务端1404。

例如,客户端120可以按需设置接入加密数据库系统所需要的API,例如:根密钥管理、数据密钥管理、数据加解密等。客户端120可以以SDK的形式运行于用户设备上。客户端120通过建立标准的数据库连接与数据库服务端1404进行通信。客户端120与数据库服务端1404在初始化时协商选定合适的算法和协议,基于选定的算法和协议,保护后续的密钥管理操作和密文计算请求消息。

所述数据库服务端1404,可以用于响应于与客户端120建立连接,根据选定使用的安全模块1402,将对应的加密算法信息和协议信息发送给客户端120;响应于接收到客户端120发送的第一访问请求,将所述第一访问请求中携带的第一密文通过所述服务接口1406发送到对应的安全模块1402。

例如,服务器140可以是在网络虚拟环境中提供计算处理服务的设备,通常是指利用网络进行信息规划的服务器。在物理实现上,服务器140可以是任何能够提供计算服务,响应服务请求,并进行数据处理的设备,例如:可以是常规服务器、云服务器、云主机、虚拟中心等。服务器140的构成主要包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似。

所述安全模块1402,可以用于响应于接收到所述数据库服务端1404通过所述服务接口1406发送的第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

需要说明的是,本说明书实施例所述安全模块1402可以是服务器140上不同的多个可信平台提供的任意安全模块。例如,服务器140中的安全模块可以是由SGX提供的安全模块,由SGX安全特性保证其上内容不会被外部获取。安全模块设置了统一的服务接口1406供外部访问,上层数据库通过该统一服务接口1406接入到安全模块进行可信计算。本方案下不同可信平台的安全模块可以根据各自TEE技术实现特性,进行定制优化(例如IntelSGX支持enclave直接访问外部内存,因此可以做到内存的zero-copy优化),部署不同的算法和协议(例如基于SGX的RA、基于国密算法的密钥协商协议)。

可以理解的是,在安全模块1402对明文进行可信计算之后,安全模块1402可以将可信计算的结果加密后通过所述服务接口1406发送给所述数据库服务端1404,使所述数据库服务端1404将可信计算的结果密文转发给所述客户端120,或者,也可以将结果密文存储于密钥库中,本说明书实施例对此并不进行限制。

需要说明的是,本说明书实施例对于如何实现服务接口1406并不进行限制。例如,服务接口1406的上层是数据库的访问,服务接口1406以下可以是根据不同TEE的实现,提供各自TEE的功能。服务接口1406面对上层数据库提供统一的参数输入规则。服务接口1406接入参数后,把参数按照安全模块1402的需要(如算法、协议、存储等方面的需要),对格式、编码、计算策略、存储策略、资源调度策略等进行调整、重组,再对应调用对应的安全模块,从而使安全模块能够执行对应可信计算功能。

可见,由于在该加密数据库系统中,服务器140上设置了基于不同可信平台提供的多个安全模块1402,多个安全模块1402设置了统一的服务接口1406,数据库服务端通过该服务接口1406可以与至少一个安全模块1402通信,因此,在一个云平台的数据库集群中,数据库服务端1404可以按需选定部署在不同的可信平台上,集群内可以同时支持使用不同可信平台的数据库服务端。而且,在客户端120与数据库服务端1404连接之后,数据库服务端1404根据选定使用的安全模块1402,将对应的加密算法信息和协议信息发送给客户端120,从而客户端120能够自适应地按照应用场景实际情况使用对应的加密算法和协议加密敏感数据。由于客户端120的敏感数据由密钥加密保护,除安全模块外的第三方以及数据库获得只能获得数据密文,能够充分保护用户的私有数据的安全。本说明书实施例提供的技术方案实现的加密数据库系统能够基于不同可信平台快速应用,支持基于不同可信平台的数据库系统,结合不同的可信平台技术具体优缺点,选择最优的技术支持,从而实现一种通用的加密数据库系统,满足了云平台下多种多样的应用场景的需求。

本说明书实施例提供的技术方案实现的加密数据库中,客户端120和安全模块1402间例如可以复用数据库连接经由数据库服务端内核转发来进行通信。数据库服务端1404和安全模块1402间可以通过服务接口1406的函数调用(如本地或者远程调用)进行通信。其中,客户端120的敏感数据可以由密钥加密保护,除安全模块1402外的第三方以及数据库服务端1404只能获得数据密文。密钥由客户端120安全的与安全模块1402共享,因此安全模块1402内可以解密获得敏感数据明文,从而基于明文进行处理。可见,本说明书实施例提供的技术方案实现的加密数据库能够消除数据库在运行中的数据泄露隐患,保证数据在传输、使用和存储全程以密文形式存在,同时仍然具备完整的数据库查询能力,能够杜绝云平台以及运维人员接触到明文数据的可能,保证客户对其云上数据的完全所有权,确保授权用户可以通过现有协议正常读写云端数据库内的数据,未授权用户无法获得被保护用户的明文数据,云端数据库在提供数据服务的过程中,全程无法获得用户的明文数据。所述加密数据库基于TEE技术,赋能不同的数据库系统,保护用户的私有数据。需要说明的是,TEE有多重具体的技术实现,包括但不限于Intel SGX、FPGA、ARM TrustZone等,数据库系统更是多样多样,例如PostgreSQL、MySQL等等。

图2示出了根据本说明书另一个实施例提供的一种加密数据库系统的框图。如图2所示,为了更进一步提高加密数据库系统的通用性,所述服务器140上还设置了用于支持不同数据库类型的统一的数据库访问接口1408。相应地,所述客户端120,可以用于通过所述数据库访问接口1408向所述数据库服务端1404发送所述第一访问请求。所述数据库服务端1404,可以用于通过所述数据库访问接口1408接收所述第一访问请求。

例如,所述数据库访问接口可以是统一的、标准SQL查询接口,与不同数据库服务端的内核如MySQL内核、PGExtension内核等通信以支持不同类型的数据库,包括但不限于PostgreSQL、MySQL等。不同数据库类型的数据库服务端可以通过该统一的数据库访问接口实现无缝接入,再经由TEE enclave提供的统一服务接口进行可信计算。因此,本说明书实施例的技术方案实现的通用的加密数据库系统,通过该统一的数据库访问接口,加密数据库系统能够直接兼容任意数据库操作,如支持外存数据和任意查询,基于多种TEE技术实现、应用于不同类型的数据库系统,根据实际场景需要,结合不同的TEE技术具体优缺点,选择最优的TEE技术支持。

另外,不同类型的数据库服务端,还可以根据实际功能需求情况,定义并实现各自的非可信访问接口。例如,如图2所示,所述数据库服务端1404内设置了数据处理执行引擎1410。该数据处理执行引擎1410,可以用于接收来自于客户端120或者发往客户端120的访问请求,识别出所述第一访问请求中的所述第一密文的处理;将所述第一密文的处理通过所述服务接口1406发送到对应的安全模块1402进行处理。另外,所述数据处理执行引擎1410,可以用于将对第一密文的处理通过调用所述数据库服务端自身的非可信访问接口经由所述服务接口发送到对应的安全模块进行处理。

本说明书实施例提供的技术方案实现的加密数据库系统,对于密钥管理部分的具体实现并不进行限制。例如,可以通过外部的可信KMS服务实现。

为了进一步提高加密数据库系统的通用性,本说明书一个或多个实施例中,采用了在数据库服务端内置密钥库的方式来实现密钥管理,按需同步客户端client和安全模块enclave之间的密钥。由于服务器设置的统一的数据库访问接口支持对各种类型的数据库的访问的接入,具有接入对该密钥库访问的能力,因此,客户端、安全模块均可以通过该统一的数据库访问接口访问密钥库,进行查询、插入或者更新密钥信息等操作。例如,加密数据库可以全局维护密钥库,或者,也可以在每个数据库服务端维护各自的密钥库。

如图2所示,所述数据库服务端1404内设置了采用两级密钥结构的密钥库1414。所述两级密钥结构包括:使用根密钥加密数据密钥,使用数据密钥加密用户的敏感数据。相应地,所述密钥库1414,可以用于管理所述敏感数据以及所述数据密钥。所述客户端120,还用于经由与所述数据库服务端1404的连接,通过调用所述数据库访问接口1408访问所述密钥库1414。

由于加密数据库系统的多个安全模块1402设置了统一的服务接口1406,任意安全模块1402都可以通过所述服务接口1406将访问请求传递给密钥库1414,由密钥库1414通过调用数据库访问接口1408来查询、插入或者更新密钥信息。因此,本说明书一个或多个实施例中,所述安全模块1402,可以用于将第二访问请求通过所述服务接口1406发送给所述密钥库1414。所述密钥库1414,用于响应于通过所述服务接口1406接收到所述第二访问请求,通过调用所述数据库访问接口1408对所述第二访问请求进行处理。

相应地,密钥库1414还可以按需返回处理结果给访问发出方。具体地,所述密钥库1414,还用于将所述第二访问请求的处理结果对应的密文通过所述服务接口1406发送给对应的安全模块1402;和/或,所述密钥库1414,还用于将所述客户端120的访问处理结果对应的密文通过所述数据库访问接口1408返回给所述客户端120。

例如:TEE enclave发现某个密钥缺失,通过服务接口将密钥请求发送到密钥库,密钥库通过统一的、标准SQL查询接口查询得到所缺失密钥,再通过服务接口返回给TEEenclave,TEE enclave在enclave内部解密拿到对应的密钥明文。

本说明书一个或多个实施例中,密钥库1414采用内部表方式管理密钥,例如,密钥库1414可以维护若干张数据库服务端的内部密钥表,如根密钥校验表、数据密钥表、密钥映射表。客户端120或者安全模块1402可以通过这些内部表,同步密钥信息。通过内部表方式管理密钥,使这些内部密钥表可以作为普通的数据表,随着数据库服务端1404一起自动进行备份、迁移,而不需要额外的处理。因此,该实施例的加密数据库系统,在支持云上部署环境的同时,能够支持数据库在不同物理服务器上的迁移。

具体地,例如,所述密钥库1414中的数据表可以包括:根密钥校验表、数据密钥表及密钥映射表。

所述根密钥校验表,用于维护根密钥的完整性校验信息。

所述数据密钥表,用于维护数据密钥密文及对应的根密钥属主、密钥唯一标识和属性信息,所述属性信息中包含表名信息、列名信息以及更新状态。

所述密钥映射表,用于维护所述表名信息和列名信息到根密钥属主和密钥唯一标识的映射关系。

下面,再对根密钥校验表、数据密钥表及密钥映射表的使用进行示例性地详细说明:

根密钥校验表(Root Key Authentication Table),用于存储根密钥的完整性校验信息。例如,完整性校验信可以包括盐(salt)和mac值。当客户端将根密钥发送到安全模块时,安全模块从根密钥校验表中获得根密钥的salt和mac值,利用salt计算收到的根密钥的校验值,并与mac值比较。根密钥校验表可以不存储任何根密钥。

由于根密钥用于加密数据密钥,是用户访问加密数据的根凭据,因此,可以由用户在初始化SDK时提供,并通过安全信道分发给数据库服务端的安全模块。具体地,例如,如图2所示的所述客户端120,还可以用于利用远程证明安全机制将根密钥密文发送给首次连接的数据库服务端1404。所述数据库服务端1404,可以用于响应于接收到客户端120发送的根密钥密文,将所述根密钥密文通过所述服务接口1406发送到对应的安全模块1402。所述安全模块1402,用于解密根密钥密文,得到根密钥;在进行可信计算时,使用根密钥解密数据密钥密文,得到数据密钥。

可见,加密数据库提供了对根密钥的分发、更新、以及完整性校验等支持,根密钥校验表用于完整性校验服务,而根密钥的分发和更新则会对数据密钥表中数据密文进行加解密。为了安全,加密数据库系统可以不提供根密钥的生成以及备份功能,用户可以自行承担根密钥的备份。当然,在采用了足够的安全保障措施之后,加密数据库系统的服务器也可以提供根密钥的生成以及备份功能,使用户无需自行承担根密钥的备份。

数据密钥表(Data Encryption Key Table),可以支持用户通过根密钥属主ownerID和密钥唯一标识keyID获取数据密钥的密文以及属性信息。当根密钥更新时,需要更新DEK字段内容(用新的根密钥重新加密)。当指定数据密钥更新时,可以不更新旧密钥DEK字段内容,而是在该表中插入新数据密钥的记录,并设置该旧数据密钥的更新状态(updateStatus)。用户可以通过属性信息里表名tablename和列名columnname信息,从密钥映射表中获得最新数据密钥的密钥唯一标识信息。通过引入根密钥属主的概念,保证不同用户的数据无法混合计算,保证用户间数据的安全隔离。

加密数据库通过每个密钥库中的数据密钥表为用户管理数据密钥。每个数据密钥都可以关联一组密钥属性,包括:

ownerID:根密钥属主;

keyID:密钥唯一标识,与数据密钥一一对应,与ownerID一起可以唯一确定一个数据密钥;

属性:数据密钥关联的表名(tablename)和列名(columnname)信息,以及更新状态(updateStatus)。

数据密钥表中存储了数据密钥密文及其关联的一组密钥属性。数据密钥密文是由ownerID指明的根密钥加密得到的。密钥属性则以明文形式存储。密钥属性中的ownerID和keyID能够唯一确定一个数据密钥,用户可以通过ownerID和keyID请求指定的数据密钥。然而,真实场景下,用户可能需要知道某张表某一列使用的是哪把数据密钥,直接通过ID的方式去索引数据密钥要求用户知道ID与数据密钥的映射关系,这无疑是很困难的。为此,加密数据库引入密钥映射表,该表存储表名和列名到数据密钥ID信息的映射关系。对用户而言,总是能知道所处理的表和列,因此用户能够通过表名和列名从密钥映射表获得数据密钥ID信息,进而再通过数据密钥ID信息从数据密钥表获得数据密钥。

密钥映射表(Key Mapping Table)维护tablename和columnname信息到ownerID和keyID的映射关系。当数据密钥更新时,可以更新该表中对应记录信息,确保tablename和columnname始终能够映射到最新的数据密钥。用户可以通过该表获得指定表、列的最新的数据密钥ID信息。

通过上述实施例可见,在客户端与数据库服务端建立连接后,通过基于TEE提供的Remote Attestation(远程证明)安全机制,将根密钥(Root Key)安全的发送到enclave(安全模块)。enclave可以使用根密钥解密从密钥库中的数据密钥密文得到数据密钥,从而能够解密敏感数据密文,并提供对敏感数据的处理功能。TEE enclave通过统一服务接口访问密钥库,查询、插入或者更新用户密钥信息。Enclave全局的管理用户密钥信息,并确保密钥信息全程不离开enclave访问,计算使用时,通过TEE enclave统一服务接口进行访问。基于该技术方案的加密数据库系统,在数据库集群中,不同的数据库服务端可以部署在不同的TEE平台上,集群内可以同时支持基于不同TEE平台的多个数据服务端实例,客户端根据连接的数据库服务端不同,自适应地按照数据库服务端选定的平台选择对应的算法和协议进行通信。

由于不同TEE平台的多个安全模块通过统一的服务接口面向不同的数据库服务端服务,统一的服务接口根据资源调度策略来为数据服务端分配对应的安全模块。因此,可能存在一个安全模块同时被多个数据库服务端调用的情况。而不同的数据库服务端从服务模型角度可以划分成基于进程模型和基于线程模型两类:进程模型和线程模型。进程模型的数据库服务端为每个连接请求分配一个或多个服务进程,每个进程间天然具备进程间隔离特性,如PostgreSQL数据库服务端。线程模型的数据库服务端为每一个连接请求分配一个或多个服务线程,且具备同一个进程内所有线程共享进程内资源的特点,如MySQL数据库服务端。因此,对于一个安全模块来说,既有可能以线程方式被调用,又有可能以进程方式被调用。

为了避免安全模块在以进程方式被调用之后,数据库服务端发起的计算过程带入的资源被进程中其他线程共享,本说明书一个或多个实施例中,对这两种服务模型进行了拉通支持。考虑到进程是最小的资源管理单元,而线程是最小的计算单元,而线程之间具有隔离效果,面向全局使用的资源适于放入进程空间管理,计算过程适于放到线程粒度上,因此,本说明书一个或多个实施例中,将所述安全模块1402配置为,将需要全局使用的资源声明为进程的全局变量,在所述安全模块1402以进程方式被数据库服务端1404调用时,将所述数据库服务端1404发起的计算过程作为进程的唯一线程,将所述计算过程带入的资源声明为线程局部变量。

例如,该实施例中的安全模块1402可以把用户密钥数据放在进程全局空间进行存储,即声明为“Global”即全局变量,作用于整个进程。用户密钥数据全程不离开enclave范围,计算使用时,通过给定的TEE enclave统一服务接口进行可信计算。将数据库服务端1404发起的可信计算带入的资源声明为“ThreadLocal”即线程局部变量,这样ThreadLocal局部变量的资源对其他线程是不可见的,使安全模块1402以进程方式被调用时进程模型可以视为一个进程下只有一个线程的情形,这种将资源进程全局化、访问控制线程化的方式能够兼容进程和线程模型,保证密钥在不同模型下私有化,避免非授权访问。

为了上述一个或多个实施例提供的加密数据库系统的具体应用更加易于理解,下面再结合图3所示的加密数据库系统的框图,围绕数据库访问接口“SQL Query API”进行详细说明。需要说明的是,在图3及图4中,本说明书提及的加密数据库系统的某些部分展示上做了忽略,在此不再赘述,另外,对于用户是可信区域的以实线绘制,对于用户是不可信区域的以虚线绘制。

例如,所述数据库访问接口可以是统一的、标准SQL查询接口“SQL Query API”。“SQL Query API”与不同数据库服务端的内核如MySQL内核“MySQL Kernel”、PG Extension等通信以支持不同类型的数据库,包括但不限于PostgreSQL、MySQL等。可以理解的是,客户端针对密钥库、针对用户数据、针对安全模块的请求,可以如图3所示通过复用与数据库服务端的标准数据库连接“Standard DB connection”发出。客户端还可以通过如图3所示的“RA”(Remote Administrator,远程管理员)安全机制发送根密钥给安全模块。客户端通过“RA”安全机制发送数据给安全模块的传输路径实际上是经由数据库服务端转发给安全模块的,但是,由于数据库服务端并不能得到客户端通过“RA”安全机制传输的数据明文,因此,图3中直接以虚线绘制来表示逻辑上的传输路径。客户端对用户数据的访问请求、对密钥库的访问请求可以以SQL的方式发送,SQL携带的数据中可以具有类型信息,以便“SQLQuery API”根据SQL携带的类型信息区分访问的是用户数据还是密钥库中的表。例如,类型信息可以是如3中所示的“key mgmt”或者“user SQL”。如果携带的是“key mgmt”,表示该请求是针对密钥库“Key Store”中表的访问,如果携带的是“user SQL”,表示该请求是针对用户数据的访问。在针对用户数据的访问的情况下,如果涉及用户的敏感数据,则可以通过如图3所示的统一服务接口“Uniformed TEE ECall”调用“SGX 安全模块”、“FPGA安全模块”、“TZ 安全模块”等安全模块中的一个或多个对敏感数据进行可信计算。不同数据库服务端还可以如图3所示根据实际功能需求情况定义并实现各自的非可信访问接口“UntrustedAPIs”,针对用户数据的可信计算,可以先通过“Untrusted APIs”来进行处理,再通过服务接口传递到enclave内。

下面再结合图4所示的加密数据库系统的框图,对客户端、数据库服务端、安全模块的具体应用分别展开说明。需要说明的是,在图4中,本说明书提及的加密数据库系统的某些部分展示上做了忽略,在此不再赘述。

如图4所示,客户端可以基于JDBC/ODBC和SDK实现。客户端可以维护用户的根密钥以及数据密钥。客户端利用加解密工具使用数据密钥对明文进行加密,生成带有密文的请求,对密文解密,得到明文的结果。客户端,还可以用于通过远程证明安全机制发送根密钥给安全模块,获取/更新数据密钥,经由标准数据库连接与数据库服务端通信。数据库服务端内可以设置了数据处理执行引擎,密钥库,以及由数据密钥已加密的用户数据的表和索引。其中,数据处理执行引擎,用于收发携带有由数据密钥加密的密文的请求以及结果。密钥库,维护了根密钥校验表、数据密钥表、密钥映射表。安全模块内,可以维护用户的根密钥以及数据密钥,根据数据处理执行引擎对服务接口调用进行可信计算,也可以对明文进行一些数据操作。

下述结合附图5,对本说明书提供的实现加密数据库系统的方法在客户端的应用为例,对所述实现加密数据库系统的方法进行进一步说明。其中,图5示出了本说明书一个实施例提供的一种实现加密数据库系统的方法的处理过程流程图,具体步骤包括步骤502至步骤506。与图1所示实施例相应地,所述客户端与数据库服务端连接,所述数据库服务端是设置在服务器上的至少一个数据库服务端,所述服务器上还设置了基于不同可信平台提供的多个安全模块,所述多个安全模块设置了统一的服务接口,所述数据库服务端通过所述服务接口与所述安全模块通信。

步骤502:接收所述数据库服务端发送的加密算法信息和协议信息。

步骤504:利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文。

步骤506:将携带有所述第一密文的第一访问请求发送给所述数据库服务端,使所述数据库服务端将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

可见,由于在该加密数据库系统中,服务器上设置了基于不同可信平台提供的多个安全模块,多个安全模块设置了统一的服务接口,数据库服务端通过该服务接口可以与至少一个安全模块通信,因此,在一个云平台的数据库集群中,数据库服务端可以按需选定部署在不同的可信平台上,集群内可以同时支持使用不同可信平台的数据库服务端。而且,在客户端与数据库服务端连接之后,数据库服务端根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端,从而客户端能够自适应地按照应用场景实际情况使用对应的加密算法和协议加密敏感数据。由于客户端的敏感数据由密钥加密保护,除安全模块外的第三方以及数据库获得只能获得数据密文,能够充分保护用户的私有数据的安全。本说明书实施例提供的技术方案实现的加密数据库系统能够基于不同可信平台快速应用,支持基于不同可信平台的数据库系统,结合不同的可信平台技术具体优缺点,选择最优的技术支持,从而实现一种通用的加密数据库系统,满足了云平台下多种多样的应用场景的需求。

本说明书一个或多个实施例中,为了更进一步提高加密数据库系统的通用性,所述服务器上设置了用于支持不同数据库类型的统一的数据库访问接口。相应地,所述将携带有所述第一密文的第一访问请求发送给所述数据库服务端,可以包括:通过所述数据库访问接口向所述数据库服务端发送所述第一访问请求。通过该统一的数据库访问接口,加密数据库系统能够直接兼容任意数据库操作,如支持外存数据和任意查询,基于多种TEE技术实现、应用于不同类型的数据库系统,根据实际场景需要,结合不同的TEE技术具体优缺点,选择最优的TEE技术支持。

为了进一步提高加密数据库系统的通用性,本说明书一个或多个实施例中,采用了在数据库服务端内置密钥库的方式来实现密钥管理。例如,在该实施例中,所述数据库服务端内设置了采用两级密钥结构的密钥库,所述两级密钥结构包括:使用根密钥加密数据密钥,使用数据密钥加密用户的敏感数据。相应地,所述方法还可以包括:经由与所述数据库服务端的连接,通过调用所述数据库访问接口访问所述密钥库。

由于根密钥用于加密数据密钥,是用户访问加密数据的根凭据,因此,可以由用户在初始化SDK时提供,并通过安全信道分发给数据库服务端的安全模块。具体地,例如,所述方法还可以包括:利用远程证明安全机制将根密钥密文发送给首次连接的数据库服务端,使所述数据库服务端响应于接收到客户端发送的根密钥密文,将所述根密钥密文通过所述服务接口发送到对应的安全模块,使所述安全模块解密根密钥密文,得到根密钥,在进行可信计算时,使用所述根密钥解密数据密钥密文,得到数据密钥。

与上述方法实施例相对应,本说明书还提供了配置于客户端的实现加密数据库系统的装置实施例,图6示出了本说明书一个实施例提供的配置于客户端的实现加密数据库系统的装置的结构示意图。如图6所示,该装置包括:算法协议接收模块602、加密模块604及请求发送模块606。

该算法协议接收模块602,可以被配置为接收所述数据库服务端发送的加密算法信息和协议信息。

该加密模块604,可以被配置为利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文;

该请求发送模块606,可以被配置为将携带有所述第一密文的第一访问请求发送给所述数据库服务端,使所述数据库服务端将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

为了提高通用性,本说明书一个或多个实施例中,所述服务器上设置了用于支持不同数据库类型的统一的数据库访问接口。所述请求发送模块606,可以被配置为通过所述数据库访问接口向所述数据库服务端发送所述第一访问请求。

图7示出了本说明书另一个实施例提供的配置于客户端的实现加密数据库系统的装置的结构示意图。在该实施例中,所述数据库服务端内设置了采用两级密钥结构的密钥库,所述两级密钥结构包括:使用根密钥加密数据密钥,使用数据密钥加密用户的敏感数据。如图7所示,该装置还可以包括:密钥客户访问模块608,可以被配置为经由与所述数据库服务端的连接,通过调用所述数据库访问接口访问所述密钥库。

本说明书一个或多个实施例中,所述装置还可以包括:根密钥发送模块610,可以被配置为利用远程证明安全机制将根密钥密文发送给首次连接的数据库服务端,使所述数据库服务端响应于接收到客户端发送的根密钥密文,将所述根密钥密文通过所述服务接口发送到对应的安全模块,使所述安全模块解密根密钥密文;在进行可信计算时,使用所述根密钥解密数据密钥密文,得到数据密钥。

上述为本实施例的配置于客户端的实现加密数据库系统的装置的示意性方案。需要说明的是,该配置于客户端的实现加密数据库系统的装置的技术方案与上述的应用于客户端的实现加密数据库系统的方法的技术方案属于同一构思,该配置于客户端的实现加密数据库系统的装置的技术方案未详细描述的细节内容,均可以参见上述应用于客户端的实现加密数据库系统的方法的技术方案的描述。

下述结合附图8,对本说明书提供的实现加密数据库系统的方法在数据库服务端的应用为例,对所述实现加密数据库系统的方法进行进一步说明。其中,图8示出了本说明书一个实施例提供的一种实现加密数据库系统的方法的处理过程流程图,具体步骤包括步骤802至步骤804。与图1所示实施例相应地,所述数据库服务端是设置在服务器上的至少一个数据库服务端,所述服务器上还设置了基于不同可信平台提供的多个安全模块,所述多个安全模块设置了统一的服务接口,所述数据库服务端通过所述服务接口与所述安全模块通信。

步骤802:响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端,使所述客户端利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文并将携带有所述第一密文的第一访问请求发送给所述数据库服务端。

步骤804:响应于接收到客户端发送的第一访问请求,将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

可见,由于在该加密数据库系统中,服务器上设置了基于不同可信平台提供的多个安全模块,多个安全模块设置了统一的服务接口,数据库服务端通过该服务接口可以与至少一个安全模块通信,因此,在一个云平台的数据库集群中,数据库服务端可以按需选定部署在不同的可信平台上,集群内可以同时支持使用不同可信平台的数据库服务端。而且,在客户端与数据库服务端连接之后,数据库服务端根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端,从而客户端能够自适应地按照应用场景实际情况使用对应的加密算法和协议加密敏感数据。由于客户端的敏感数据由密钥加密保护,除安全模块外的第三方以及数据库获得只能获得数据密文,能够充分保护用户的私有数据的安全。本说明书实施例提供的技术方案实现的加密数据库系统能够基于不同可信平台快速应用,支持基于不同可信平台的数据库系统,结合不同的可信平台技术具体优缺点,选择最优的技术支持,从而实现一种通用的加密数据库系统,满足了云平台下多种多样的应用场景的需求。

本说明书一个或多个实施例中,为了更进一步提高加密数据库系统的通用性,所述服务器上设置了用于支持不同数据库类型的统一的数据库访问接口。相应地,所述接收客户端发送的第一访问请求,包括:通过所述数据库访问接口接收客户端发送的所述第一访问请求。

为了进一步提高加密数据库系统的通用性,本说明书一个或多个实施例中,采用了在数据库服务端内置密钥库的方式来实现密钥管理。例如,所述数据库服务端内设置了采用两级密钥结构的密钥库,所述两级密钥结构包括:使用根密钥加密数据密钥,使用数据密钥加密用户的敏感数据。所述密钥库通过所述数据库访问接口,接收所述客户端经由与所述数据库服务端的连接发出的访问。

由于加密数据库系统的多个安全模块设置了统一的服务接口,任意安全模块都可以通过所述服务接口将访问请求传递给密钥库,由密钥库通过调用数据库访问接口来查询、插入或者更新密钥信息。因此,本说明书一个或多个实施例中,所述方法还包括:响应于密钥库通过所述服务接口接收到所述安全模块发送的第二访问请求,通过调用所述数据库访问接口对所述第二访问请求进行处理。

相应地,密钥库还可以按需返回处理结果给发出访问的一方。具体地,所述方法还可以包括:将所述第二访问请求的处理结果对应的密文通过所述服务接口发送给对应的安全模块;和/或,将所述客户端的访问处理结果对应的密文通过所述数据库访问接口返回给所述客户端。

另外,不同类型的数据库服务端,还可以根据实际功能需求情况,定义并实现各自的非可信访问接口。相应地,所述响应于接收到客户端发送的第一访问请求,将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,可以包括:通过内置的数据处理执行引擎,识别出所述第一访问请求中的所述第一密文的处理;通过内置的数据处理执行引擎,将所述第一密文的处理通过所述服务接口发送到对应的安全模块进行处理。另外,所述方法中,所述通过内置的数据处理执行引擎,将所述第一密文的处理通过所述服务接口发送到对应的安全模块进行处理,包括:将对第一密文的处理通过调用所述数据库服务端自身的非可信访问接口,经由所述服务接口发送到对应的安全模块进行处理。

由于根密钥用于加密数据密钥,是用户访问加密数据的根凭据,因此,可以由用户在初始化SDK时提供,并通过安全信道分发给数据库服务端的安全模块。具体地,例如,所述方法还可以包括:响应于接收到客户端发送的根密钥密文,将所述根密钥密文通过所述服务接口发送到对应的安全模块,使所述安全模块解密根密钥密文,得到根密钥,在进行可信计算时,使用所述根密钥解密数据密钥密文,得到数据密钥。

与上述方法实施例相对应,本说明书还提供了配置于数据库服务端的实现加密数据库系统的装置实施例,图9示出了本说明书一个实施例提供的配置于数据库服务端的实现加密数据库系统的装置的结构示意图。如图9所示,该装置包括:算法协议发送模块902、密文转发模块904。

该算法协议发送模块902,可以被配置为响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端,使所述客户端利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文并将携带有所述第一密文的第一访问请求发送给所述数据库服务端。

该密文转发模块904,可以被配置为响应于接收到客户端发送的第一访问请求,将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

本说明书一个或多个实施例中,为了提高通用性,所述服务器上设置了用于支持不同数据库类型的统一的数据库访问接口。所述密文转发模块904,可以被配置为通过所述数据库访问接口接收客户端发送的所述第一访问请求。

本说明书一个或多个实施例中,所述数据库服务端内设置了采用两级密钥结构的密钥库,所述两级密钥结构包括:使用根密钥加密数据密钥,使用数据密钥加密用户的敏感数据。所述密钥库通过所述数据库访问接口,接收所述客户端经由与所述数据库服务端的连接发出的访问。

图10示出了本说明书另一个实施例提供的配置于数据库服务端的实现加密数据库系统的装置的结构示意图。如图10所示,所述装置还可以包括:密钥库处理模块906,可以被配置为响应于密钥库通过所述服务接口接收到所述安全模块发送的第二访问请求,通过调用所述数据库访问接口对所述第二访问请求进行处理。

相应地,所述装置还可以包括:结果反馈模块908,可以被配置为将所述第二访问请求的处理结果对应的密文通过所述服务接口发送给对应的安全模块;和/或,将所述客户端的访问处理结果对应的密文通过所述数据库访问接口返回给所述客户端。

本说明书一个或多个实施例中,如图10所示,所述密文转发模块904可以包括:数据处理识别模块9042,被配置为通过内置的数据处理执行引擎,识别出所述第一访问请求中的所述第一密文的处理。数据处理调用模块9044,可以被配置为通过内置的数据处理执行引擎,将所述第一密文的处理通过所述服务接口发送到对应的安全模块进行处理。

本说明书一个或多个实施例中,所述装置还可以包括:根密钥转发模块910,可以被配置为响应于接收到客户端发送的根密钥密文,将所述根密钥密文通过所述服务接口发送到对应的安全模块,使所述安全模块解密根密钥密文;在进行可信计算时,使用所述根密钥解密数据密钥密文,得到数据密钥。

上述为本实施例的配置于数据库服务端的实现加密数据库系统的装置的示意性方案。需要说明的是,该配置于数据库服务端的实现加密数据库系统的装置的技术方案与上述的应用于数据库服务端的实现加密数据库系统的方法的技术方案属于同一构思,该配置于数据库服务端的实现加密数据库系统的装置的技术方案未详细描述的细节内容,均可以参见上述应用于数据库服务端的实现加密数据库系统的方法的技术方案的描述。

下述结合附图11,对本说明书提供的实现加密数据库系统的方法在安全模块的应用为例,对所述实现加密数据库系统的方法进行进一步说明。其中,图11示出了本说明书一个实施例提供的一种实现加密数据库系统的方法的处理过程流程图,具体步骤包括步骤1102至步骤1104。与图1所示实施例相应地,所述安全模块是设置在服务器上的基于不同可信平台提供的多个安全模块中的任意安全模块,所述多个安全模块设置了统一的服务接口,所述服务器上还设置了至少一个数据库服务端,所述数据库服务端通过所述服务接口与所述安全模块通信。

步骤1102:响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文。

其中,所述第一密文是所述数据库服务端从第一访问请求中得到的,所述第一访问请求是所述客户端利用加密算法信息和协议信息生成之后发送给所述数据库服务端的,所述加密算法信息和协议信息是所述数据库服务端响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端的。

步骤1104:对所述明文进行可信计算。

可见,由于在该加密数据库系统中,服务器上设置了基于不同可信平台提供的多个安全模块,多个安全模块设置了统一的服务接口,数据库服务端通过该服务接口可以与至少一个安全模块通信,因此,在一个云平台的数据库集群中,数据库服务端可以按需选定部署在不同的可信平台上,集群内可以同时支持使用不同可信平台的数据库服务端。而且,在客户端与数据库服务端连接之后,数据库服务端根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端,从而客户端能够自适应地按照应用场景实际情况使用对应的加密算法和协议加密敏感数据。由于客户端的敏感数据由密钥加密保护,除安全模块外的第三方以及数据库获得只能获得数据密文,能够充分保护用户的私有数据的安全。本说明书实施例提供的技术方案实现的加密数据库系统能够基于不同可信平台快速应用,支持基于不同可信平台的数据库系统,结合不同的可信平台技术具体优缺点,选择最优的技术支持,从而实现一种通用的加密数据库系统,满足了云平台下多种多样的应用场景的需求。

本说明书一个或多个实施例中,为了更进一步提高加密数据库系统的通用性,所述服务器上设置了用于支持不同数据库类型的统一的数据库访问接口,所述客户端通过所述数据访问接口向所述数据库服务端发送所述第一访问请求。所述数据库服务端内设置了采用两级密钥结构的密钥库,所述两级密钥结构包括:使用根密钥加密数据密钥,使用数据密钥加密用户的敏感数据。相应地,所述方法还包括:将第二访问请求通过所述服务接口发送给所述密钥库,使所述密钥库响应于接收到所述第二访问请求,通过调用所述数据库访问接口对所述第二访问请求进行处理。

由于根密钥用于加密数据密钥,是用户访问加密数据的根凭据,因此,可以由用户在初始化SDK时提供,并通过安全信道分发给数据库服务端的安全模块。具体地,例如,所述方法还包括:通过所述服务接口接收所述数据库服务端发送的根密钥密文,所述根密钥密文是由所述客户端利用远程证明安全机制将根密钥密文发送给首次连接的数据库服务端的;解密根密钥密文,得到根密钥;在进行可信计算时,使用所述根密钥解密数据密钥密文,得到数据密钥。

为了避免安全模块在以进程方式被调用之后,数据库服务端发起的计算过程带入的资源被进程中其他线程共享,本说明书一个或多个实施例中,对这两种服务模型进行了拉通支持。考虑到进程是最小的资源管理单元,而线程是最小的计算单元,而线程之间具有隔离效果,面向全局使用的资源适于放入进程空间管理,计算过程适于放到线程粒度上,因此,本说明书一个或多个实施例中,所述方法还包括:将需要全局使用的资源声明为进程的全局变量;在所述安全模块以进程方式被数据库服务端调用时,将所述数据库服务端发起的计算过程作为进程的唯一线程,将所述计算过程带入的资源声明为线程局部变量。

与上述方法实施例相对应,本说明书还提供了配置于安全模块的实现加密数据库系统的装置实施例,图12示出了本说明书一个实施例提供的配置于安全模块的实现加密数据库系统的装置的结构示意图。如图12所示,该装置包括:密文接收模块1202、计算模块1204。

该密文接收模块1202,被配置为响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文。

其中,所述第一密文是所述数据库服务端从第一访问请求中得到的,所述第一访问请求是所述客户端利用加密算法信息和协议信息生成之后发送给所述数据库服务端的,所述加密算法信息和协议信息是所述数据库服务端响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端的;

该计算模块1204,被配置为对所述明文进行可信计算。

本说明书一个或多个实施例中,所述服务器上设置了用于支持不同数据库类型的统一的数据库访问接口,所述客户端通过所述数据访问接口向所述数据库服务端发送所述第一访问请求。所述数据库服务端内设置了采用两级密钥结构的密钥库,所述两级密钥结构包括:使用根密钥加密数据密钥,使用数据密钥加密用户的敏感数据。

相应地,图13示出了本说明书另一个实施例提供的配置于安全模块的实现加密数据库系统的装置的结构示意图。如图13所示,所述装置还包括:密钥安全访问模块1206,可以被配置为将第二访问请求通过所述服务接口发送给所述密钥库,使所述密钥库响应于接收到所述第二访问请求,通过调用所述数据库访问接口对所述第二访问请求进行处理。

如图13所示,本说明书一个或多个实施例中,所述装置还可以包括:根密钥接收模块1208,可以被配置为通过所述服务接口接收所述数据库服务端发送的根密钥密文,所述根密钥密文是由所述客户端利用远程证明安全机制将根密钥密文发送给首次连接的数据库服务端的。解密根密钥模块1210,可以被配置为解密根密钥密文,得到根密钥。数据秘钥解密模块1212,可以被配置为在进行可信计算时,使用所述根密钥解密数据密钥密文,得到数据密钥。

如图13所示,本说明书一个或多个实施例中,所述装置还可以包括:变量声明模块1214,可以被配置为将需要全局使用的资源声明为进程的全局变量。进程模型处理模块1216,可以被配置为在所述安全模块以进程方式被数据库服务端调用时,将所述数据库服务端发起的计算过程作为进程的唯一线程,将所述计算过程带入的资源声明为线程局部变量。

上述为本实施例的配置于安全模块的实现加密数据库系统的装置的示意性方案。需要说明的是,该配置于安全模块的实现加密数据库系统的装置的技术方案与上述的应用于安全模块的实现加密数据库系统的方法的技术方案属于同一构思,该配置于安全模块的实现加密数据库系统的装置的技术方案未详细描述的细节内容,均可以参见上述应用于安全模块的实现加密数据库系统的方法的技术方案的描述。

图14示出了根据本说明书一个实施例提供的一种计算设备1400的结构框图。该计算设备1400的部件包括但不限于存储器1410和处理器1420。处理器1420与存储器1410通过总线1430相连接,数据库1450用于保存数据。

计算设备1400还包括接入设备1440,接入设备1440使得计算设备1400能够经由一个或多个网络1460通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备1440可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。

在本说明书的一个实施例中,计算设备1400的上述部件以及图14中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图14所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备1400可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备1400还可以是移动式或静止式的服务器。

一方面,处理器1420可以用于执行如下计算机可执行指令:

接收数据库服务端发送的加密算法信息和协议信息;所述数据库服务端是设置在服务器上的至少一个数据库服务端,所述服务器上还设置了基于不同可信平台提供的多个安全模块,所述多个安全模块设置了统一的服务接口,所述数据库服务端通过所述服务接口与所述安全模块通信;

利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文;

将携带有所述第一密文的第一访问请求发送给所述数据库服务端,使所述数据库服务端将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

另一方面,处理器1420可以用于执行如下计算机可执行指令:

响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端,使所述客户端利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文并将携带有所述第一密文的第一访问请求发送给所述数据库服务端,其中,所述服务器上设置了基于不同可信平台提供的多个安全模块,所述多个安全模块设置了统一的服务接口;

响应于接收到客户端发送的第一访问请求,将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

又一方面,处理器1420可以用于执行如下计算机可执行指令:

响应于接收到数据库服务端通过服务接口发送的第一密文,将所述第一密文解密为明文,其中,所述服务接口是多个安全模块的统一的服务接口,所述多个安全模块是基于不同可信平台的安全模块;

其中,所述第一密文是所述数据库服务端从第一访问请求中得到的,所述第一访问请求是所述客户端利用加密算法信息和协议信息生成之后发送给所述数据库服务端的,所述加密算法信息和协议信息是所述数据库服务端响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端的;

对所述明文进行可信计算。

上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的实现加密数据库系统的方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述实现加密数据库系统的方法的技术方案的描述。

本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令。

一方面,该指令被处理器执行时以用于:

接收数据库服务端发送的加密算法信息和协议信息;所述数据库服务端是设置在服务器上的至少一个数据库服务端,所述服务器上还设置了基于不同可信平台提供的多个安全模块,所述多个安全模块设置了统一的服务接口,所述数据库服务端通过所述服务接口与所述安全模块通信;

利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文;

将携带有所述第一密文的第一访问请求发送给所述数据库服务端,使所述数据库服务端将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到所述数据库服务端通过所述服务接口发送的第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

另一方面,该指令被处理器执行时以用于:

响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端,使所述客户端利用所述加密算法信息和协议信息,对明文进行加密以得到第一密文并将携带有所述第一密文的第一访问请求发送给所述数据库服务端,其中,所述服务器上设置了基于不同可信平台提供的多个安全模块,所述多个安全模块设置了统一的服务接口;

响应于接收到客户端发送的第一访问请求,将所述第一访问请求中携带的第一密文通过所述服务接口发送到对应的安全模块,使所述安全模块响应于接收到第一密文,将所述第一密文解密为明文,对所述明文进行可信计算。

又一方面,该指令被处理器执行时以用于:

响应于接收到数据库服务端通过服务接口发送的第一密文,将所述第一密文解密为明文,其中,所述服务接口是多个安全模块的统一的服务接口,所述多个安全模块是基于不同可信平台的安全模块;

其中,所述第一密文是所述数据库服务端从第一访问请求中得到的,所述第一访问请求是所述客户端利用加密算法信息和协议信息生成之后发送给所述数据库服务端的,所述加密算法信息和协议信息是所述数据库服务端响应于与客户端建立连接,根据选定使用的安全模块,将对应的加密算法信息和协议信息发送给客户端的;

对所述明文进行可信计算。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的实现加密数据库系统的方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述实现加密数据库系统的方法的技术方案的描述。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号