用于安全存储数据的数据存储服务器和客户端设备的制作方法

文档序号:33197668发布日期:2023-02-04 15:26阅读:114来源:国知局
用于安全存储数据的数据存储服务器和客户端设备的制作方法

1.本发明涉及数据存储系统。更具体地,本发明涉及用于安全存储安全敏感数据(包括数值数据和/或文本数据)并实现安全敏感数据的范围查询的客户端设备和数据存储服务器。


背景技术:

2.由于远程数据存储(例如云数据存储)使得用户客户端设备(通常只能存储有限数据)将数据和文件保存在一个或多个能够通过公共互联网或专用私网连接访问的远程数据存储服务器中,因此越来越受欢迎。云存储提供商承载、保护、管理和维护数据存储服务器和关联的基础设施,并且确保用户客户端设备对数据的访问。云存储的主要优点之一是,当数据已删除、损坏或在用户客户端设备上无法访问时,可以从远程数据存储服务器恢复用户数据。然而,由于云存储提供商负责保护传输到远程数据存储服务器的用户数据,云存储提供商很可能访问到安全敏感用户数据,这是用户不希望看到的和/或违反法律法规。通常,待存储在远程数据存储服务器中的安全敏感数据包括安全敏感数据,例如数值数据或文本数据,这些数据可以以明文查询,但如果加密,则不能通过范围查询等方便地查询。


技术实现要素:

3.本发明的目的是提供一种改进的客户端设备和一种改进的数据存储服务器,以实现安全敏感数据(例如数值数据和/或文本数据)的安全云存储,从而实现安全敏感数据的范围查询。
4.上述和其它目的是通过由独立权利要求请求保护的主题来实现的。其它实现方式在从属权利要求、说明书和附图中是显而易见的。
5.根据第一方面,提供了一种包括处理器的客户端设备。所述处理器用于,例如,从运行在所述客户端设备或其它通信设备上的应用,获取安全敏感数据。所述安全敏感数据包括多个明文数据元素,所述多个明文数据元素中的每个数据元素在范围(例如,取值范围)的多个子范围中的一个子范围内,所述多个子范围中的每个子范围由子范围标识符标识。所述多个明文数据元素可以以明文查询,并且可以包括,例如,数值和/或文本数据,即字母串。
6.所述客户端设备中的所述处理器用于使用第一加密密钥对所述多个明文数据元素进行加密,以得到多个密文数据元素。此外,所述客户端设备中的所述处理器用于将包括所述多个密文数据元素的所述数据发送给数据存储服务器,以将所述数据存储在所述数据存储服务器的数据库中,具体是存储在所述数据库的第一表中。所述客户端设备中的所述处理器还用于:对于所述多个子范围中的每个子范围,使用第二加密密钥对子范围数据桶进行加密,其中,每个子范围数据桶包括所述相应子范围内的明文数据元素和对应的密文数据元素。此外,所述客户端设备中的所述处理器用于:对于所述多个子范围中的每个子范围,将相应的加密子范围数据桶和相应子范围标识符的消息摘要或者相应的加密子范围数
据桶和相应子范围标识符的基于消息验证码(message authentication code,mac)密钥的mac发送给所述数据存储服务器,以将所述多个加密子范围数据桶和所述子范围标识符的多个消息摘要或多个mac存储在所述数据存储服务器的所述数据库中,具体是存储在所述数据库的第二表中。所述客户端设备可以是用于将安全敏感数据存储在远程存储服务器中的多个客户端设备中的一个客户端设备。
7.在所述第一方面的又一种可能的实现方式中,所述数据库是关系数据库,包括所述多个密文数据元素的所述数据存储在所述关系数据库的第一表中,所述多个加密子范围数据桶和所述子范围标识符的多个消息摘要或mac存储在所述数据库的第二表中。
8.在所述第一方面的又一种可能的实现方式中,所述多个密文数据元素存储在所述关系数据库的所述第一表的一列或多列中。在一种实现方式中,所述关系数据库的所述第一表中的一个或多个加密列可以包括使用不同加密密钥进行加密的列元素。例如,第一列元素可以使用第一客户端设备的加密密钥进行加密,而第二列元素可以使用第二客户端设备的加密密钥进行加密。
9.在所述第一方面的又一种可能的实现方式中,所述客户端设备中的所述处理器还用于将所述第一加密密钥的标识符与包括所述多个密文数据元素的所述数据一起发送给所述数据存储服务器,以根据所述第一加密密钥的所述标识符将所述数据存储所述数据存储服务器的所述数据库中,具体是存储在所述数据库的所述第一表中。换句话说,根据所述第一加密密钥的所述标识符,所述远程数据库服务器用于确定所述数据库中存储加密安全敏感数据的位置。
10.在所述第一方面的又一种可能的实现方式中,所述客户端设备中的所述处理器还用于从远程密钥管理服务器获取所述第一加密密钥、所述第二加密密钥和所述mac密钥中的至少一个的加密版本,其中,所述加密的第一加密密钥、所述加密的第二加密密钥和所述加密的mac密钥中的至少一个是使用客户端设备主密钥进行加密的。在又一种实现方式中,所述客户端设备中的所述处理器可以用于从所述远程密钥管理服务器接收所述客户端设备主密钥。在又一种实现方式中,所述客户端设备用于生成所述第一加密密钥、所述第二加密密钥和所述mac密钥中的至少一个。
11.在所述第一方面的又一种可能的实现方式中,所述客户端设备中的所述处理器还用于将所述加密的第一加密密钥、所述加密的第二加密密钥和所述加密的mac密钥中的至少一个发送给所述数据存储服务器。在一种实现方式中,所述加密的第一加密密钥可以用作所述第一加密密钥的所述标识符,以根据第一标识符将包括所述多个密文数据元素的所述数据存储在所述数据存储服务器的所述数据库中,具体是存储在所述数据库的所述第一表中。
12.在所述第一方面的又一种可能的实现方式中,为了处理对存储在所述数据存储服务器的所述数据库中的包括所述多个密文数据元素的所述数据的选择查询,所述客户端设备中的所述处理器用于:确定查询取值范围(例如由所述选择查询限定的查询取值范围)所覆盖的子范围的子范围标识符,以得到所述多个子范围标识符的子集;根据所述多个子范围标识符的子集内的一个或多个子范围标识符的消息摘要或mac,从所述数据存储服务器的所述数据库的所述第二表中获取所述多个加密数据桶中的一个或多个数据桶;使用所述第二加密密钥对所述一个或多个加密数据桶进行解密,以得到每个加密数据桶的多对明文
数据元素和密文数据元素中的一对或多对;根据所述一个或多个密文数据元素,获取存储在所述数据存储服务器的所述数据库中的所述数据,即使用所述一个或多个密文数据元素查询存储在所述数据存储服务器的所述数据库中的所述数据,以得到与所述一个或多个密文数据元素相关联的至少一部分所述数据。
13.在所述第一方面的又一种可能的实现方式中,所述客户端设备中的所述处理器还用于根据所述明文数据元素检查相应的数据元素是否在所述查询范围内。
14.在所述第一方面的又一种可能的实现方式中,所述客户端设备中的所述处理器还用于根据随机加密方案或确定性加密方案使用所述第一加密密钥对所述明文数据元素进行加密。
15.在所述第一方面的又一种可能的实现方式中,所述第一加密密钥和所述第二加密密钥是相同的对称加密密钥,即相同的加密密钥。
16.在所述第一方面的又一种可能的实现方式中,所述mac是基于哈希的消息验证码(hash-based message authentication code,hmac)。
17.根据第二方面,提供了一种用于操作客户端设备的方法。所述方法包括以下步骤:获取包括多个明文数据元素的数据,其中,所述多个明文数据元素中的每个数据元素在范围(例如,取值范围)的多个子范围中的一个子范围内,所述多个子范围中的每个子范围由子范围标识符标识;使用第一加密密钥对所述多个明文数据元素进行加密,以得到多个密文数据元素;将包括所述多个密文数据元素的所述数据发送给数据存储服务器,以将所述数据存储在所述数据存储服务器的数据库中,具体是存储在所述数据存储服务器的所述数据库的第一表中;对于所述多个子范围中的每个子范围,使用第二加密密钥对子范围数据桶进行加密,其中,每个子范围数据桶包括所述相应子范围内的明文数据元素和对应的密文数据元素;对于所述多个子范围中的每个子范围,将相应的加密子范围数据桶和相应子范围标识符的消息摘要或者相应的加密子范围数据桶和相应子范围标识符的基于消息验证码(message authentication code,mac)密钥的mac发送给所述数据存储服务器,以将所述多个加密子范围数据桶和所述子范围标识符的多个消息摘要或mac存储在所述数据库中,具体是存储在所述数据存储服务器的所述数据库的第二表中。
18.本发明第二方面提供的所述方法可以由本发明第一方面提供的所述客户端设备执行。因此,本发明第二方面提供的所述方法的其它特征直接从本发明第一方面及其在上文和下文中描述的不同实现方式提供的所述客户端设备的功能获得。
19.根据第三方面,提供了一种包括处理器的数据存储服务器。所述数据存储服务器中的所述处理器用于从客户端设备接收数据。所述数据包括根据多个明文数据元素使用第一加密密钥进行加密的多个密文数据元素,所述多个明文数据元素中的每个数据元素在范围(例如,取值范围)的多个子范围中的一个子范围内,所述多个子范围中的每个子范围由子范围标识符标识。此外,所述数据存储服务器中的所述处理器用于:对于所述多个子范围中的每个子范围,接收使用第二加密密钥进行加密的加密子范围数据桶和相应子范围标识符的消息摘要或者使用第二加密密钥进行加密的加密子范围数据桶和相应子范围标识符的基于消息验证码(message authentication code,mac)密钥的mac。所述数据存储服务器中的所述处理器还用于将所述多个加密子范围数据桶和所述子范围标识符的多个消息摘要或mac存储在所述数据存储服务器的数据库中。每个加密子范围数据桶包括所述相应子
范围内的明文数据元素和对应的密文数据元素。
20.在所述第三方面的又一种可能的实现方式中,所述数据库是关系数据库,所述数据存储服务器中的所述处理器还用于将包括所述多个密文数据元素的所述数据存储在所述数据库的第一表中,以及将所述多个加密子范围数据桶和所述子范围标识符的多个消息摘要或mac存储在所述数据库的第二表中。
21.在所述第三方面的又一种可能的实现方式中,所述数据存储服务器中的所述处理器还用于将所述多个密文数据元素存储在所述数据库的所述第一表的一列或多列中。在一种实现方式中,所述关系数据库的所述第一表中的一个或多个加密列可以包括使用不同加密密钥进行加密的列元素。例如,第一列元素可以使用第一客户端设备的加密密钥进行加密,而第二列元素可以使用第二客户端设备的加密密钥进行加密。
22.在所述第三方面的又一种可能的实现方式中,所述数据存储服务器中的所述处理器还用于从所述客户端设备所述第一加密密钥的标识符和包括所述多个密文数据元素的所述数据,以及根据所述第一加密密钥的所述标识符将所述数据存储在所述数据存储服务器的所述数据库中,具体是存储在所述数据库的所述第一表中。换句话说,根据所述第一加密密钥的所述标识符,所述数据库服务器中的所述处理器可以用于确定所述数据库中存储加密安全敏感数据的位置。
23.在所述第三方面的又一种可能的实现方式中,所述数据存储服务器中的所述处理器还用于从所述客户端设备接收所述加密的第一加密密钥、所述加密的第二加密密钥和所述加密的mac密钥中的至少一个。在一种实现方式中,所述加密的第一加密密钥可以用作所述第一加密密钥的所述标识符,以根据第一标识符将包括所述多个密文数据元素的所述数据存储在所述数据存储服务器的所述数据库中,具体是存储在所述数据库的所述第一表中。
24.在所述第三方面的又一种可能的实现方式中,为了处理对存储在所述数据库中(具体是存储在所述数据库的所述第一表中)的包括所述多个密文数据元素的所述数据的选择查询,所述数据存储服务器中的所述处理器还用于:根据从所述客户端设备接收的一个或多个子范围标识符的一个或多个消息摘要或mac,选择存储在所述数据库中(具体是存储在所述数据库的所述第二表中)的多个加密数据桶中的一个或多个数据桶。所述数据存储服务器中的所述处理器还用于将从所述多个加密数据桶中选择的一个或多个数据桶发送给所述客户端设备。此外,所述数据存储服务器中的所述处理器用于根据从所述客户端设备接收的一个或多个密文数据元素,查询存储在所述数据库中(具体是存储在所述数据库的所述第一表中)的所述数据。
25.在所述第三方面的又一种可能的实现方式中,所述第一加密密钥和所述第二加密密钥是相同的对称加密密钥,即相同的加密密钥。
26.在所述第三方面的又一种可能的实现方式中,所述mac是基于哈希的消息认证码(hash-based message authentication code,hmac)。
27.根据第四方面,提供了一种操作数据存储服务器的方法。所述方法包括以下步骤:从客户端设备接收数据,其中,所述数据包括根据多个明文数据元素使用第一加密密钥进行加密的多个密文数据元素,所述多个明文数据元素中的每个数据元素在范围(例如,取值范围)的多个子范围中的一个子范围内,所述多个子范围中的每个子范围由子范围标识符
标识;对于多个子范围中的每个子范围,接收使用第二加密密钥进行加密的加密子范围数据桶和相应子范围标识符的消息摘要或者使用第二加密密钥进行加密的加密子范围数据桶和相应子范围标识符的基于消息验证码(message authentication code,mac)密钥的mac;将所述多个加密子范围数据桶和所述子范围标识符的多个消息摘要或mac存储在所述数据存储服务器的数据库中,其中,每个加密子范围数据桶包括所述相应子范围内的明文数据元素和对应的密文数据元素。
28.本发明第四方面提供的所述方法可以由本发明第三方面提供的所述数据存储服务器执行。因此,本发明第四方面提供的所述方法的其它特征直接从本发明第三方面及其在上文和下文中描述的不同实现方式提供的所述数据存储服务器的功能获得。
29.根据第五方面,提供了一种包括非瞬时性计算机可读存储介质的计算机程序产品。所述非瞬时性计算机可读存储介质用于存储程序代码,当所述程序代码由计算机或处理器执行时,使得所述计算机或所述处理器执行第二方面提供的所述方法或第四方面提供的所述方法。
30.以下附图和说明书详细阐述了一个或多个实施例。其它特征、目的和优点在说明书、附图以及权利要求中是显而易见的。
附图说明
31.下面结合附图对本发明实施例进行详细描述,在附图中:
32.图1是一个实施例提供的数据存储系统的示意图,所述数据存储系统包括一个实施例提供的多个客户端设备和一个实施例提供的操作数据库的数据存储服务器;
33.图2a、图2b和图2c示出了由一个实施例提供的客户端设备和一个实施例提供的数据存储服务器用来存储安全敏感数据的表;
34.图3是一个实施例提供的客户端设备、一个实施例提供的数据存储服务器和密钥管理服务器为了在数据存储服务器的数据库中生成一列加密数据而进行交互的时序图;
35.图4是一个实施例提供的客户端设备、一个实施例提供的数据存储服务器和密钥管理服务器为了从数据存储服务器的数据库中检索数据而进行交互的时序图;
36.图5是一个实施例提供的客户端设备、一个实施例提供的数据存储服务器和密钥管理服务器为了将数据添加到数据存储服务器的数据库中而进行交互的时序图;
37.图6是一个实施例提供的客户端设备、一个实施例提供的数据存储服务器和密钥管理服务器为了更新数据存储服务器的数据库中的数据而进行交互的时序图;
38.图7是一个实施例提供的将客户端设备的数据存储在远程数据存储服务器的数据库中的方法的流程图;
39.图8是一个实施例提供的操作包括数据库的数据存储服务器的方法的流程图。
40.在下文中,相同的附图标记是指相同或至少在功能上等效的特征。
具体实施方式
41.在以下描述中,参考构成本发明一部分的附图,附图通过说明的方式示出了本发明实施例的具体方面或可以使用本发明实施例的具体方面。应当理解,本发明的实施例可以用于其它方面,并且包括未在附图中描绘的结构上或逻辑上的变化。因此,以下具体实施
方式不应以限制性的意义来理解,并且本发明的范围由所附权利要求书限定。
42.例如,应当理解,与描述的方法有关的公开内容可以对用于执行所述方法的对应设备或系统也同样适用,反之亦然。例如,如果描述一个或多个具体方法步骤,则对应的设备可以包括一个或多个单元(例如,功能单元)来执行所描述的一个或多个方法步骤(例如,一个单元执行一个或多个步骤,或者多个单元分别执行多个步骤中的一个或多个步骤),即使附图中未明确描述或说明这样的一个或多个单元。另一方面,例如,如果根据一个或多个单元(例如,功能单元)来描述特定装置,则对应的方法可以包括一个步骤来执行一个或多个单元的功能(例如,执行所述一个或多个单元的功能的一个步骤,或多个步骤分别执行所述多个单元中的一个或多个单元的功能),即使附图中未明确描述或说明这样的一个或多个步骤。此外,应当理解,除非另外明确说明,本文中描述的各种示例性实施例和/或方面的特征可以相互组合。
43.图1是一个实施例提供的数据存储系统100的示意图。如下详述,数据存储系统100包括多个客户端或用户设备110(例如智能手机、智能手表、平板电脑、笔记本电脑、台式计算机或其它类型的iot设备)、操作数据库125的一个或多个远程数据存储服务器120以及密钥管理服务器130。下面详细描述了客户端设备110和数据存储服务器120的实施例,其中,数据库125实现为关系数据库125,例如,基于sql的关系数据库125。在这些实施例中,如下详述,数据存储服务器120用于将安全敏感数据存储在关系数据库125的一个或多个表的一个或多个加密列中。本文中使用的关系数据库125的表的加密列包括使用一个或多个加密密钥进行加密的列元素。在一个实施例中,关系数据库125的表的一个或多个加密列可以包括使用不同加密密钥进行加密的列元素。例如,第一列元素可以使用第一客户端设备110的加密密钥进行加密,而第二列元素可以使用第二客户端设备110的加密密钥进行加密。
44.然而,应当理解,数据存储服务器120可以包括非关系数据库125,而且客户端设备110可以用于与之一起操作,其中,安全敏感数据存储在除表的加密列之外的加密数据结构中。例如,在一个实施例中,数据库125可以实现为mongo数据库(database,db)125。在这一实施例中,数据存储服务器120可以用于将安全敏感数据存储在mongodb 125的一个或多个加密字段中。
45.如图1a所示,多个客户端设备110、一个或多个远程数据存储服务器120以及密钥管理服务器130可以用于经由无线(例如蜂窝)和/或有线通信网络140相互进行通信。在一个实施例中,一个或多个远程数据存储服务器120可以是一个或多个云存储服务器120,用于经由互联网与客户端设备110进行通信。
46.如图1所示,客户端设备110可以包括用于处理和生成数据的处理器111、用于与数据存储系统100中的其它组件交换数据的通信接口113(包括天线等)以及用于存储数据的非瞬时性存储器115。客户端设备110中的处理器111可以在硬件和软件中实现。所述硬件可以包括数字电路,或模拟电路和数字电路两者数字电路可以包括专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)、数字信号处理器(digital signal processor,dsp)或通用处理器等组件。非瞬时性存储器115可以存储数据,例如电子密钥和可执行程序代码,其中,当可执行程序代码由处理器111执行时,使得客户端设备110执行本文中描述的功能、操作和方法。通信接口113可以包括有线或无线通信接口113。同理,数据存储服务器120可
以包括用于处理和生成数据的处理器121、用于与数据存储系统100中的其它组件交换数据的通信接口123以及用于存储数据的数据库125。
47.客户端设备110用于将数据125a存储在远程数据存储服务器120的数据库125中。数据125a包括多个安全敏感明文数据元素。多个明文数据元素可以以明文查询,并且可以包括,例如,数值(例如整数值、实值、浮点值等)和/或文本数据(例如字母串)。虽然以下详细实施例在以明文数值为形式的明文数据元素的上下文中描述,但应当理解,这些实施例也适用于能够查询的其它类型的明文数据元素,例如文本数据。
48.例如,多个安全敏感明文数据元素可以包括图2a所示的表200中的薪资值200b(每个薪资值与赚取该薪资的人的姓名200c相关联)。多个明文数据元素(例如,数值200b)中的每个数据元素在范围(例如,取值范围)的多个子范围中的一个子范围内,其中,每个子范围由子范围标识符200a(例如表200中所示的子范围标识符200a)标识。
49.客户端设备110用于使用第一对称加密密钥115a对多个明文数值200b进行加密,以得到多个密文数值210a(在图2b所示的表210中示出)。此外,客户端设备110用于将包括多个密文数值210a和赚取相应薪资的人的明文姓名200c的数据125a发送给数据存储服务器120,以将数据125a存储在数据存储服务器120的数据库125的第一表210中,例如存储在图2b所示的示例性第一表210中。
50.此外,客户端设备110用于:对于每个子范围,使用第二加密密钥115a对子范围数据桶(bucket)进行加密。在一个实施例中,第一加密密钥115a和第二加密密钥115a可以是相同的对称加密密钥115a。在另一个实施例中,第一加密密钥和第二加密密钥可以是不同的对称加密密钥。每个子范围数据桶包括相应子范围内的明文数值200b和对应的密文数值210a。在一个实施例中,客户端设备110用于根据明文数值200b对相应数据桶内的多对明文数值和密文数值进行排序。
51.客户端设备110还用于:对于每个子范围,将相应的加密子范围数据桶220b(在图2c所示的表220中示出)和相应子范围标识符的消息摘要(例如哈希值)或者相应的加密子范围数据桶220b和相应子范围标识符的基于消息验证码(message authentication code,mac)密钥115b的mac 220a发送给数据存储服务器120,以将多个加密子范围数据桶220b和子范围标识符的多个消息摘要或mac 220a存储在数据存储服务器120的数据库125的第二表220中,例如,存储在图2c所示的示例性表220中。
52.作为客户端设备110的补充,数据存储服务器120用于将数据125a存储在数据存储服务器120的关系数据库125中。数据存储服务器120用于从客户端设备110接收包括多个密文数值210a和与之相关联的明文数据200c的数据125a,以将数据125a存储在数据库125的第一表210中,其中,多个密文数值210a是使用第一加密密钥115a进行加密的。此外,数据存储服务器120用于:对于多个子范围中的每个子范围内,接收使用第二加密密钥115a进行加密的相应子范围数据桶220b和相应子范围标识符的相应消息摘要(例如哈希值)或相应子范围标识符的基于消息验证码(message authentication code,mac)密钥115b的相应mac 220a,以将多个加密子范围数据桶220b和子范围标识符的多个消息摘要或多个mac 220a存储在数据库125的第二表220中。如上所述,每个子范围数据桶220b包括相应子范围内的明文数值200b和对应的密文数值210a。
53.在一个实施例中,客户端设备还用于从数据存储服务器120获取第一加密密钥
115a的加密版本、第二加密密钥115a的加密版本和/或mac密钥115b的加密版本。加密的第一加密密钥115a、加密的第二加密密钥115a和/或加密的mac密钥115b可以使用客户端设备主密钥进行加密。在一个实施例中,客户端设备110用于从远程密钥管理服务器130接收客户端设备主密钥。在一个实施例中,客户端设备110用于根据随机加密方案或确定性加密方案使用第一加密密钥115a对明文数值200b进行加密。在一个实施例中,mac是hmac。
54.在一个实施例中,客户端设备110还用于将第一加密密钥115a的标识符与包括多个密文数值210a的数据125a一起发送给数据存储服务器120。反过来,数据存储服务器120用于根据第一标识符将数据125a存储在数据库125中。因此,根据第一加密密钥115a的标识符,数据存储服务器120可以用于确定数据库125中存储包括多个密文数值210a的数据125a的位置。
55.在一个实施例中,客户端设备110还用于将加密的第一加密密钥115a、加密的第二加密密钥115a和/或加密的mac密钥115b发送给数据存储服务器120。在一个实施例中,加密的第一加密密钥115a可以用作第一加密密钥115a的标识符,以根据该标识符将包括多个密文数值210的数据125a存储在数据存储服务器120的数据库125中,具体是存储在数据库125的第一表210中。
56.在一个实施例中,用于标识关系数据库125的使用相应加密密钥进行加密的行和/或列的数据库配置信息可以存储在客户端设备110的存储器115中。在一个实施例中,数据库配置信息可以包括一个或多个元数据表。在一个实施例中,这种元数据表可以使用第一值(例如“1”)表示关系数据库125中的每个加密行和/或列,而使用不同于第一值的第二值(例如“0”)表示关系数据库125中的每个非加密行和/或列。可选地或另外,数据库配置信息可以包括关系数据库中的一列加密行和/或列及它们各自的加密密钥。例如,关系数据库125的表的第一列元素可以使用第一客户端设备110的加密密钥进行加密,而第二列元素可以使用第二客户端设备110的加密密钥进行加密。对于加密列的情况,数据存储服务器120用于根据加密密钥的标识符确定加密列127b的行来存储加密安全敏感数据。
57.根据数据库配置信息,客户端设备110用于标识关系数据库125的第一表210中的加密行和/或列,从而确定要存储在关系数据库125中的数据是否包括要存储在关系数据库125的第一表210的加密行和/或列127b中的一个加密行和/或列中的安全敏感数据,其中,加密行和/或列通过数据库配置信息标识。
58.在一个实施例中,客户端设备101可以用于定期从远程数据存储服务器120获取(poll)数据库配置信息。在关系数据库125变化的情况下,例如在关系数据库125存在新的或改变的加密行和/或列的情况下,数据存储服务器120可以用于将数据库配置信息的更新提供给客户端设备110。
59.在一个实施例中,为了处理对存储在数据存储服务器120的数据库125的第一表210中的包括多个密文数值210a的数据125a的选择查询,客户端设备110用于确定由选择查询限定的查询取值范围所覆盖的子范围的子范围标识符,以得到多个子范围标识符200a的子集。例如,在图2a所示的示例中,为了在查询取值范围1500~2500内对所有薪资进行示例性选择查询,客户端设备110可以确定子范围标识符“2”和“3”。根据确定的子范围标识符中的至少一个子范围标识符(即多个子范围标识符200a的子集)的mac,客户端设备110还用于从数据存储服务器120的数据库125的第二表220中获取多个加密数据桶220b中的一个或多
个数据桶。例如,为了在查询取值范围1500~2500内对所有薪资进行示例性选择查询,客户端设备110可以从第二表220中获取与mac(2)和mac(3)相关联的数据桶。从数据库125中获取到的加密数据桶由客户端设备110使用第二加密密钥115a进行解密,以得到每个加密数据桶的对明文数值和密文数值中的一对或多对。根据一个或多个密文数值,客户端设备100还用于获取存储在数据存储服务器120的数据库125的第一表210中的数据125a,即,使用一个或多个密文数值查询存储在数据存储服务器120的数据库125的第一表210中的数据125a,以得到与一个或多个密文数值相关联的一部分数据125a。
60.在一个实施例中,客户端设备110还用于根据明文数值200b检查相应的数值是否在查询取值范围内。
61.作为客户端设备110的本实施例的补充,根据一个实施例,用于处理对存储在数据库125的第一表210中的包括多个密文数值210a的数据的选择查询的数据存储服务器120用于将存储在数据库125的第二表220中的多个加密数据桶220b中的一个或多个数据桶发送给客户端设备110。数据存储服务器120用于根据从客户端设备110接收的一个或多个子范围标识符的一个或多个mac 220a,选择多个加密数据桶220b中的一个或多个数据桶。此外,数据存储服务器120可以用于根据从客户端设备110接收的一个或多个密文数值,查询存储在数据库125的第一表210中的数据。
62.图3是一个实施例提供的客户端设备110、远程数据存储服务器(称为数据库服务器)120和远程密钥管理服务器(key management server,kms)130在创建加密列(即远程数据存储服务器120的关系数据库125的第一表210中的一列加密数值210a)的过程中进行交互的时序图。
63.步骤301:客户端设备110中的客户端驱动程序111a(可以是客户端设备110中的处理器111执行的软件)生成第一加密密钥115a。加密密钥115a可以是,例如,由客户端驱动程序111a生成的随机数(nonce)。
64.步骤303:客户端设备110中的客户端驱动程序111a请求kms 130对加密密钥115a进行加密。在一个实施例中,kms 130可以使用与客户端设备110相关联的客户端主密钥对加密密钥115a进行加密。在一个实施例中,kms 130可以响应于客户端设备110对加密密钥115a进行加密的请求,实时生成客户端主密钥,或者客户端主密钥已经在kms 130上可用(例如,由于先前请求过)。
65.步骤305:kms 130将加密的加密密钥115a返回给客户端设备110。
66.步骤307:客户端设备110中的客户端驱动程序111a生成范围hmac密钥115b。范围hmac密钥115b可以是,例如,由客户端驱动程序111a生成的随机数。应当理解,步骤307以及后面的步骤309和步骤311可以在上述步骤301、步骤303和步骤305之前执行或基本上与上述步骤301、步骤303和步骤305同时执行。
67.步骤309:客户端设备110中的客户端驱动程序111a请求kms 130对范围hmac密钥115b进行加密。在一个实施例中,kms 130可以使用与客户端设备110相关联的客户端主密钥对范围hmac密钥115b进行加密。
68.步骤311:kms 130将加密的范围hmac密钥115b返回给客户端设备110。
69.步骤313:客户端设备110中的客户端驱动程序111a将加密的加密密钥115a和加密的范围hmac密钥115b发送给远程数据存储服务器120。在一个实施例中,客户端驱动程序
111a可以将加密的加密密钥115a和加密的范围hmac密钥115b作为数据库配置信息的一部分发送给远程数据存储服务器120。
70.步骤315:响应于来自远程数据存储服务器的接收到加密的加密密钥115a和加密的范围hmac密钥115b的确认消息,客户端设备110中的客户端驱动程序111a指示远程数据存储服务器120创建包括加密列的安全敏感数值210a的表210。
71.步骤317:客户端设备110中的客户端驱动程序111a指示远程数据存储服务器120创建第二表220,即包括范围列220a和加密数据桶220b的范围表220。应当理解,步骤317可以在上述步骤315之前执行或基本上与上述步骤315同时执行。
72.步骤319:客户端设备110中的客户端驱动程序111a指示远程数据存储服务器120在元数据表中添加一行,以更新数据库配置信息。
73.远程数据存储服务器120向客户端设备110报告操作成功。
74.图4示出了客户端设备110、远程数据存储服务器(称为数据库服务器)120和远程密钥管理服务器(key management server,kms)130在从远程数据存储服务器120中提取(即检索)加密安全敏感数值210a(和与之相关联的数据210b)的过程中进行交互的一个实施例。例如,在图4所示的实施例中,数据的提取在选择查询的上下文中说明。
75.步骤401:运行在客户端设备110上的应用程序111b指示客户端驱动程序111a执行选择查询,以从远程数据存储服务器120的关系数据库125中提取数值210a和与之相关联的数据210b。
76.步骤403:响应于步骤401,客户端驱动程序111a解析应用程序111b的选择查询,以获取与要从远程数据存储服务器120的关系数据库125中提取的数值相关联的列名。客户端驱动程序111a根据解析出的选择查询标识存储在客户端设备110的存储器115中的表210的列名。
77.步骤405:客户端设备110中的客户端驱动程序111a请求kms 130对存储加密安全敏感数值210a的关系数据库125的在步骤403中标识的每列的相应范围hmac密钥115b进行解密。如果相应的一个或多个范围hmac密钥115b缓存在客户端设备110的存储器115中,则可以省略本步骤和后面的步骤407。
78.步骤407:kms 130将请求的一个或多个解密的范围hmac密钥115b返回给客户端设备110。
79.步骤409:客户端设备110中的客户端驱动程序111a请求kms 130对存储加密安全敏感数值210a的关系数据库125的在步骤403中标识的每列的相应加密密钥115a进行解密。如果相应的一个或多个加密密钥115a缓存在客户端设备110的存储器115中,则可以省略本步骤和后面的步骤411。
80.步骤411:kms 130将请求的一个或多个解密的加密密钥115a返回给客户端设备110。应当理解,步骤409和步骤411可以在上述步骤405和步骤407之前执行或基本上与上述步骤405和步骤407同时执行。
81.步骤413:客户端设备110中的客户端驱动程序111a生成值的范围。
82.步骤415:客户端设备110中的客户端驱动程序111a确定hmac范围。
83.步骤417:根据在步骤415中确定的hmac范围,客户端设备110中的客户端驱动程序111a查询第二表的范围220a,即存储在数据存储服务器120的关系数据库125中的范围表
220。
84.步骤419:响应于步骤417中的查询,数据存储服务器120将匹配加密数据桶220b返回给客户端设备110中的客户端驱动程序111a。
85.步骤421:客户端设备110中的客户端驱动程序111a对从数据存储服务器120接收的加密数据桶220b以及其中包含的密文进行解密。
86.步骤423:客户端设备110中的客户端驱动程序111a根据密文的实际值过滤掉不相关的密文。
87.步骤425:客户端设备110中的客户端驱动程序111a将查询发送给数据存储服务器120,以使用在步骤423中得到的密文数值210a来查询关系数据库125。
88.步骤427:响应于步骤425的查询,数据存储服务器120返回查询到的表行。
89.步骤429:客户端设备110中的客户端驱动程序111a将数据存储服务器120提供的表行转发给客户端设备110中的应用程序111b。
90.图5示出了客户端设备110、远程数据存储服务器(称为数据库服务器)120和远程密钥管理服务器(kms)130在插入(即添加)安全敏感数值以得到新数值范围(即还未限定的数值范围)的过程中进行交互的一个实施例。
91.步骤501:运行在客户端设备110上的应用程序111b指示客户端驱动程序111a执行将其它数值插入到远程数据存储服务器120的关系数据库125中的查询。
92.步骤503:响应于步骤501,客户端驱动程序111a解析应用程序111b的查询,以获取与要存储在远程数据存储服务器120的关系数据库125中的数据相关联的列名。
93.步骤505:客户端驱动程序111a根据解析出的查询标识存储在客户端设备110的存储器115中的列名。
94.步骤507:客户端设备110中的客户端驱动程序111a请求kms 130对存储加密安全敏感数值的关系数据库125的在步骤505中标识的每列的相应加密密钥115a进行解密。如果相应的一个或多个加密密钥115a缓存在客户端设备110的存储器115中,则可以省略本步骤和后面的步骤509。
95.步骤509:kms 130将请求的一个或多个解密的加密密钥115a返回给客户端设备110。
96.步骤511:客户端设备110中的客户端驱动程序111a请求kms 130对存储加密安全敏感数值的关系数据库125的在步骤505中标识的每列的相应范围hmac密钥115b进行解密。如果相应的一个或多个范围hmac密钥115b缓存在客户端设备110的存储器115中,则可以省略本步骤和后面的步骤513。
97.步骤513:kms 130将请求的一个或多个解密的范围hmac密钥115b返回给客户端设备110。应当理解,步骤511和步骤513可以在上述步骤509和步骤511之前执行或基本上与上述步骤509和步骤511同时执行。
98.步骤515:客户端设备110中的客户端驱动程序111a使用一个或多个加密密钥115a对要插入到关系数据库125中的其它数据的安全敏感数值进行加密。
99.步骤517:客户端设备110中的客户端驱动程序111a指示远程数据存储服务器120在存储在关系数据库125中的第一表210中创建包括加密安全敏感数值的新一行。
100.步骤519:客户端设备110中的客户端驱动程序111a生成值的范围,并且根据范围
hmac密钥115b使用hmac函数来确定该范围的hmac。
101.步骤521:客户端设备110中的客户端驱动程序111a向数据存储服务器120检查与新范围对应的新hmac值是否已经存在于第二表,即关系数据库125的范围表220中。
102.步骤523:数据存储服务器120向客户端设备110中的客户端驱动程序111a通知与新范围对应的新hmac值还不存在于关系数据库125的范围表220中。
103.步骤525、步骤527和步骤529:客户端设备110中的客户端驱动程序111a创建新的数据桶,将加密数值添加到新的数据桶中,并且对新的数据桶进行加密。
104.步骤531:客户端设备110中的客户端驱动程序111a指示数据存储服务器120在存储在关系数据库125中的范围表220中添加新一行。在一个实施例中,数据存储服务器120用于将hmac(即hmac值220a)和加密数据桶220b添加到范围表220的新一行中。
105.步骤533:响应于数据存储服务器120确认新一行已经添加到存储在关系数据库125中的范围表220中,客户端设备110中的客户端驱动程序111a从存储器115中删除列加密密钥115a。
106.步骤535:客户端设备110中的客户端驱动程序111a从存储器115中删除范围hmac密钥115b。应当理解,步骤535可以在上述步骤533之前执行或基本上与上述步骤533同时执行。
107.响应于数据存储服务器120确认新一行已经添加到存储在关系数据库125中的范围表220中,客户端驱动程序111a可以将该确认消息报告给客户端设备110中的发出原始插入查询请求的应用程序111b。
108.图6示出了客户端设备110、远程数据存储服务器(称为数据库服务器)120和远程密钥管理服务器(remote key management server,kms)130在根据已经使用的数值范围更新第一表210中的安全敏感数值的过程中进行交互的一个实施例。
109.步骤601:运行在客户端设备110上的应用程序111b指示客户端驱动程序111a执行将其它数值插入到远程数据存储服务器120的关系数据库125中的查询,其中,其它数值在已经使用的数值范围内。
110.步骤603:响应于步骤601,客户端驱动程序111a解析应用程序111b的查询,以获取与要存储在远程数据存储服务器120的关系数据库125中的数据相关联的列名。
111.步骤605:客户端驱动程序111a根据解析出的查询标识存储在客户端设备110的存储器115中的第一表210的列名。
112.步骤607:客户端设备110中的客户端驱动程序111a请求kms 130对存储加密安全敏感数值的关系数据库125的在步骤605中标识的每列的相应加密密钥115a进行解密。如果相应的一个或多个加密密钥115a缓存在客户端设备110的存储器115中,则可以省略本步骤和后面的步骤609。
113.步骤609:kms 130将请求的一个或多个解密的列加密密钥115a返回给客户端设备110。
114.步骤611:客户端设备110中的客户端驱动程序111a请求kms 130对存储加密安全敏感数值210a的关系数据库125的在步骤605中标识的每列的相应范围hmac密钥115b进行解密。如果相应的一个或多个范围hmac密钥115b缓存在客户端设备110的存储器115中,则可以省略本步骤和后面的步骤613。
115.步骤613:kms 130将请求的一个或多个解密的范围hmac密钥115b返回给客户端设备110。应当理解,步骤611和步骤613可以在上述步骤609和步骤611之前执行或基本上与上述步骤609和步骤611同时执行。
116.步骤615:客户端设备110中的客户端驱动程序111a使用一个或多个加密密钥115a对要插入到关系数据库125中的其它数据的安全敏感数值进行加密。
117.步骤617:客户端设备110中的客户端驱动程序111a指示远程数据存储服务器120在存储在关系数据库125中的第一表210中创建包括加密安全敏感数值的新一行。
118.步骤619:客户端设备110中的客户端驱动程序111a生成数值的范围,并且根据范围hmac密钥115b使用hmac函数来确定该范围的密钥哈希值,即hmac值。
119.步骤621:客户端设备110中的客户端驱动程序111a向数据存储服务器120检查与范围对应的hmac值是否已经存在于第二表220,即关系数据库125的范围表220中。
120.步骤623:数据存储服务器120通过将对应的加密数据桶220b返回给客户端设备110中的客户端驱动程序111a,向客户端设备110中的客户端驱动程序111a通知与范围对应的hmac值已经存在于关系数据库125的范围表中。
121.步骤625:客户端设备110中的客户端驱动程序111a对数据桶220b进行解密,将加密的数值添加到解密的数据桶中,并且对修改后的数据桶进行加密。
122.步骤627:客户端设备110中的客户端驱动程序111a将加密的修改数据桶220b发送给数据存储服务器120,使得数据存储服务器120可以将加密的修改数据桶220b与其它数值范围内的数据桶一起存储在关系数据库125的第二表220中。向客户端驱动程序111a报告加密的修改数据桶成功存储在关系数据库125中。
123.步骤629:响应于数据存储服务器120确认修改后的数据桶已经存储在关系数据库125中,客户端设备110中的客户端驱动程序111a从存储器115中删除列加密密钥115a。
124.步骤631:客户端设备110中的客户端驱动程序111a从存储器115中删除范围hmac密钥115b。应当理解,步骤631可以在上述步骤629之前执行或基本上与上述步骤629同时执行。
125.响应于数据存储服务器120确认修改后的数据桶已经存储在关系数据库125中,客户端驱动程序111a可以将该确认消息报告给客户端设备110中的发出原始插入查询请求的应用程序111b。
126.图7是一个实施例提供的用于操作客户端设备110的方法700的流程图。方法700包括以下步骤:
127.步骤701:获取包括多个明文数据元素(例如,数值200b)的数据125a,其中,多个明文数据元素200b中的每个数据元素在范围(例如,取值范围)的多个子范围中的一个子范围内,多个子范围中的每个子范围由子范围标识符200a标识。
128.步骤703:使用第一加密密钥115a对多个明文数据元素200b进行加密,以得到多个密文数据元素210a。
129.步骤705:将包括多个密文数据元素210a的数据125a发送给数据存储服务器120,以将数据125a存储在数据存储服务器120的数据库125中。
130.步骤707:对于多个子范围中的每个子范围,使用第二加密密钥115a对子范围数据桶220b进行加密,其中,每个子范围数据桶220b包括相应子范围内的明文数据元素和对应
的密文数据元素。
131.步骤709:对于多个子范围中的每个子范围,将相应的加密子范围数据桶220b和相应子范围标识符200a的基于消息认证码(message authentication code,mac)密钥115b的mac 220a(或相应子范围标识符的消息摘要,例如哈希值)发送给数据存储服务器120,以将多个加密子范围数据桶220b和子范围标识符200a的多个mac 220a(或消息摘要)存储在数据存储服务器120的数据库125中。
132.图8是一个实施例提供的用于操作数据存储服务器120的方法800的流程图。方法800包括以下步骤:
133.步骤801:从客户端设备110接收数据125a,其中,数据125a包括多个密文数据元素,例如,根据多个明文数据元素(例如,数值200b)使用第一加密密钥115a进行加密的多个密文密文数值210a,多个明文数据元素200b中的每个数据元素在取值范围的多个子范围中的一个子范围内,多个子范围中的每个子范围由子范围标识符200a标识。
134.步骤803:对于多个子范围中的每个子范围,接收使用第二加密密钥115a进行加密的加密子范围数据桶220b和相应子范围标识符200a的基于消息验证码(message authentication code,mac)密钥115b的mac 220a(或相应子范围标识符的消息摘要,例如哈希值)。
135.步骤805:将多个加密子范围数据桶220b和子范围标识符200a的多个mac 220a(或消息摘要)存储在数据存储服务器120的数据库125中,其中,每个加密子范围数据桶220b包括相应子范围内的明文数据元素200b和对应的密文数据元素210a。
136.本领域技术人员将理解,各种附图(方法和装置)中的“块”(“单元”)表示或描述本发明实施例的功能(而不一定是硬件或软件中的独立“单元”),从而同等地描述装置实施例以及方法实施例的功能或特征(单元=步骤)。
137.在本技术中提供的几个实施例中,应当理解,所公开的系统、装置和方法可以通过其它方式实现。例如,装置的所描述实施例仅仅是示例性的。例如,单元划分仅仅是一种逻辑功能划分,实际实现时可以有其它划分方式。例如,可以将多个单元或组件合并或集成到另一系统中,或者可以忽略或不执行一些特征。另外,所显示或描述的相互耦合或直接耦合或通信连接可以通过一些接口来实现。装置或单元之间的直接耦合或通信连接可通过电子、机械或其它形式实现。
138.作为分离部件描述的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,可以位于一个位置上,或者可以分布在多个网络单元上。可以根据实际需要选择一些或全部单元来实现实施例方案的目的。
139.另外,本发明实施例中的功能单元可集成到一个处理单元中,或每个单元可物理上单独存在,或两个或更多单元可集成到一个单元中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1