一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

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

2023-03-24 21:48:58 来源:中国专利 TAG:


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


背景技术:

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


技术实现要素:

3.本发明的目的是提供一种改进的客户端设备和改进的数据存储服务器,用于安全云存储包括如数字和/或文本数据等安全敏感数据的数据,从而支持安全敏感数据的范围查询。
4.上述和其它目的通过独立权利要求请求保护的主题来实现。其它实现方式在从属权利要求、说明书和附图中是显而易见的。
5.根据第一方面,提供了一种包括处理器的客户端设备。客户端设备的处理器用于获取包括多个明文数据元素的数据。多个明文数据元素可以以明文查询,并且可以包括例如数值和/或文本数据,即字母字符串。对于所述多个明文数据元素中的明文数据元素,所述客户端设备的所述处理器用于:
6.使用消息验证码(message authentication code,mac)密钥生成所述明文数据元素的二进制表示的第一部分的第一mac,其中,所述第一部分包括所述明文数据元素的所述二进制表示的一个或多个最高有效位,并且所述明文数据元素的所述二进制表示还包括与所述第一部分互补的剩余部分,所述剩余部分包括所述明文数据元素的所述二进制表示的剩余最低有效位;
7.基于所述第一mac,从数据存储服务器检索数据桶,其中,所述数据桶包括数据桶头和加密的数据桶内容;
8.使用加密密钥对所述数据桶内容进行解密,以获取明文形式的数据桶内容;
9.将所述明文数据元素的所述二进制表示的所述剩余部分添加到所述明文形式的数据桶内容中,以获取明文形式的更新的数据桶内容;
10.使用所述加密密钥对所述明文形式的更新的数据桶内容进行加密;
11.将具有所述加密的更新的数据桶内容的所述数据桶发送到所述数据存储服务器,以用于将所述数据桶存储在所述数据存储服务器的数据库中。
12.有利地,客户端设备和数据存储服务器允许将安全敏感数据(例如数值或文本数据)以加密形式存储在数据库中,同时支持数据的范围查询。
13.在第一方面的另一种可能的实现方式中,所述客户端设备的所述处理器还用于:对于所述多个明文数据元素中的明文数据元素,使用所述mac密钥生成所述明文数据元素的所述二进制表示的第二部分的第二mac,其中,所述第二部分包括所述明文数据元素的所述二进制表示的与所述第一部分不同的一个或多个其它最高有效位,并且所述明文数据的所述二进制表示的所述剩余部分与所述第二部分互补。此外,所述客户端设备用于基于所述第一mac和所述第二mac,从所述数据存储服务器检索所述数据桶。
14.在第一方面的另一种可能的实现方式中,所述客户端设备的所述处理器还用于:对于所述多个明文数据元素中的所述明文数据元素,使用所述mac密钥生成所述明文数据元素的所述二进制表示的第三部分的第三mac,其中,所述第三部分包括所述明文数据元素的所述二进制表示的与所述第二部分不同的一个或多个其它最高有效位,并且所述明文数据的所述二进制表示的所述剩余部分与所述第三部分互补。此外,所述客户端设备用于基于所述第一mac、所述第二mac和所述第三mac,从所述数据存储服务器检索所述数据桶。
15.在第一方面的另一种可能的实现方式中,所述客户端设备的所述处理器还用于:用所述加密密钥对所述多个明文数据元素进行加密,以获取多个密文数据元素;并将包括所述多个密文数据元素的所述数据发送到所述数据存储服务器,以用于将所述数据存储在所述数据库中。在一种实现方式中,所述数据库是关系数据库,其中,所述数据存储服务器用于将包括所述多个密文数据元素的所述数据存储在所述关系数据库的表中。
16.在第一方面的另一种可能的实现方式中,所述客户端设备的所述处理器还用于:将所述加密密钥的标识符与包括所述多个密文数据元素的所述数据一起发送到所述数据存储服务器,以用于基于所述加密密钥的所述标识符,将所述数据存储在所述数据库中。换句话说,基于加密密钥的标识符,数据存储服务器用于确定在数据库中存储多个密文数据元素的位置。
17.在第一方面的另一种可能的实现方式中,所述第一mac是基于哈希的消息认证码(hash-based message authentication code,hmac)。
18.在第一方面的另一种可能的实现方式中,所述明文数据元素的所述二进制表示的所述第一部分包括由所述明文数据元素的所述二进制表示的所述最高有效位定义的一个或多个字节,并且所述明文数据元素的所述二进制表示的所述剩余部分包括由所述明文数据元素的所述二进制表示的所述最低有效位定义的一个或多个字节。
19.在第一方面的另一种可能的实现方式中,所述客户端设备的所述处理器还用于:从远程密钥管理服务器获取所述加密密钥的加密版本和所述mac密钥的加密版本中的至少一个,其中,所述加密密钥的所述加密版本和所述mac密钥的所述加密版本中的至少一个用客户端设备主密钥加密。
20.在第一方面的另一种可能的实现方式中,所述客户端设备的所述处理器还用于:将所述加密密钥的所述加密版本和所述mac密钥的所述加密版本中的至少一个发送到所述
数据存储服务器。在一种实现方式中,加密的加密密钥可以基于数据库中的标识符,特别是数据库的表中的标识符,作为用于存储包括多个密文数据元素的数据的加密密钥的标识符。
21.在第一方面的另一种可能的实现方式中,用于处理存储在所述数据存储服务器的所述数据库中的所述数据的数据查询,所述数据包括所述多个密文数据元素,其中,所述数据查询由至少一个查询值定义,所述客户端设备的所述处理器还用于:
22.使用所述mac密钥生成所述至少一个查询值的二进制表示的第一部分的至少一个第一查询mac,其中,所述第一部分包括所述查询值的所述二进制表示的一个或多个最高有效位,并且所述查询值的所述二进制表示还包括由所述查询值的所述二进制表示的所述剩余最低有效位定义的互补剩余部分;
23.基于所述至少一个第一查询mac,从所述数据存储服务器检索一个或多个数据桶,其中,所述一个或多个数据桶中的每个数据桶包括数据桶头和加密的数据桶内容;
24.用所述加密密钥对所述加密的数据桶内容进行解密;
25.通过将所述第一部分与所述解密的互补剩余部分组合,生成数据元素的明文二进制表示。
26.在第一方面的另一种可能的实现方式中,对于每个数据桶,所述数据桶内容还包括,对于所述数据桶内容的每个密文数据元素,存储位置标识符,特别是行标识符,用于标识与所述数据库中相应的密文数据元素关联的数据的存储位置,其中,用于从所述数据库检索所述密文数据元素和/或与查询范围的所述数据元素关联的所述数据,所述客户端设备的所述处理器还用于:对于与所述数据查询匹配的一个或多个数据元素,基于所述存储位置标识符,从所述数据库检索所述密文数据元素和/或与所述一个或多个数据元素关联的所述数据。
27.根据第二方面,提供了一种操作客户端设备的方法,所述方法包括以下步骤:
28.获取包括多个明文数据元素的数据;以及,对于所述多个明文数据元素中的明文数据元素:
29.使用消息验证码(message authentication code,mac)密钥生成所述明文数据元素的二进制表示的第一部分的第一mac,其中,所述第一部分包括所述明文数据元素的所述二进制表示的一个或多个最高有效位,并且所述明文数据元素的所述二进制表示还包括与所述第一部分互补的剩余部分,所述剩余部分包括所述明文数据元素的所述二进制表示的剩余最低有效位;
30.基于所述第一mac,从数据存储服务器检索数据桶,其中,所述数据桶包括数据桶头和加密的数据桶内容;
31.使用加密密钥对所述数据桶内容进行解密,以获取明文形式的数据桶内容;
32.将所述明文数据元素的所述二进制表示的所述剩余部分添加到所述明文形式的数据桶内容中,以获取明文形式的更新的数据桶内容;
33.使用所述加密密钥对所述明文形式的更新的数据桶内容进行加密;
34.将具有所述加密的更新的数据桶内容的所述数据桶发送到所述数据存储服务器,以用于将所述数据桶存储在所述数据存储服务器的数据库中。
35.本发明第二方面提供的所述方法可以由本发明第一方面提供的所述客户端设备
执行。因此,本发明第二方面提供的所述方法的其它特征直接从本发明的第一方面及其在上文和下文中描述的不同实现方式提供的所述客户端设备的功能获取。
36.根据第三方面,提供了一种包括处理器的数据存储服务器。所述数据存储服务器的所述处理器用于:
37.基于消息认证码(authentication code,mac)密钥从客户端设备接收明文数据元素的二进制表示的第一部分的第一mac,其中,所述第一部分包括所述明文数据元素的所述二进制表示的一个或多个最高有效位,并且所述明文数据元素的所述二进制表示还包括与所述第一部分互补的剩余部分,所述剩余部分包括所述明文数据元素的所述二进制表示的剩余最低有效位;
38.基于所述第一mac选择存储在所述数据存储服务器的数据库中的数据桶;
39.向所述客户端设备提供所述数据桶,其中,所述数据桶包括数据桶头和加密的数据桶内容;
40.从所述客户端设备接收具有更新的加密数据桶内容的所述数据桶;
41.将具有所述更新的加密数据桶内容的所述数据桶存储在所述数据库中,其中,所述更新的加密数据桶内容包括呈基于加密密钥的加密形式的所述明文数据元素的所述二进制表示的所述剩余部分。
42.有利地,第三方面提供的数据存储服务器和第一方面提供的客户端设备允许在数据库中存储加密形式的安全敏感数据,例如数值和/或文本数据,同时支持数据的范围查询。
43.在第三方面的另一种可能的实现方式中,所述数据存储服务器的所述处理器还用于:
44.基于所述mac密钥从所述客户端设备接收所述明文数据元素的所述二进制表示的第二部分的第二mac,其中,所述第二部分包括所述明文数据元素的所述二进制表示的与所述第一部分不同的一个或多个其它最高有效位,并且所述明文数据元素的所述二进制表示的所述剩余部分与所述第二部分互补;
45.基于所述第一mac和所述第二mac选择所述数据库中存储的所述数据桶,并向所述客户端设备提供所述数据桶。
46.在第三方面的另一种可能的实现方式中,所述数据存储服务器的所述处理器还用于:
47.基于所述mac密钥从所述客户端设备接收所述明文数据元素的所述二进制表示的第三部分的第三mac,其中,所述第三部分包括所述明文数据元素的所述二进制表示的与所述第二部分不同的一个或多个其它最高有效位,并且所述明文数据元素的所述二进制表示的所述剩余部分与所述第三部分互补;
48.基于所述第一mac、所述第二mac和所述第三mac选择所述数据库中存储的所述数据桶,并向所述客户端设备提供所述数据桶。
49.在第三方面的另一种可能的实现方式中,所述数据存储服务器的所述处理器还用于:从所述客户端设备接收包括用所述加密密钥加密的多个密文数据元素的数据,并将包括用所述加密密钥加密的所述多个密文数据元素的所述数据存储在所述数据库中。
50.在第三方面的另一种可能的实现方式中,所述数据存储服务器的所述处理器还用
于:从所述客户端设备接收所述加密密钥的标识符与包括所述多个密文数据元素的所述数据,并基于所述加密密钥的标识符将所述数据存储在所述数据库中。换句话说,基于加密密钥的标识符,数据存储服务器可以确定在数据库中存储多个密文数据元素的位置。
51.在第三方面的另一种可能的实现方式中,所述数据库是关系数据库,其中,所述数据存储服务器的所述处理器还用于将包括所述多个密文数据元素的所述数据存储在所述关系数据库的表中。
52.在第三方面的另一种可能的实现方式中,所述第一mac是基于哈希的消息认证码(hash-based message authentication code,hmac)。
53.在第三方面的另一种可能的实现方式中,所述明文数据元素的所述二进制表示的所述第一部分包括由所述明文数据元素的所述二进制表示的所述最高有效位定义的一个或多个字节,并且所述明文数据元素的所述二进制表示的所述剩余部分包括由所述明文数据元素的所述二进制表示的所述最低有效位定义的一个或多个字节。
54.在第三方面的另一种可能的实现方式中,所述数据存储服务器的所述处理器还用于从所述客户端设备接收所述加密的加密密钥和所述加密mac密钥中的至少一个。在一种实现方式中,所述数据存储服务器用于基于所述数据库中的所述标识符,特别是所述数据库的所述表中的所述标识符,使用所述加密的加密密钥作为用于存储包括所述多个密文数据元素的所述数据的所述加密密钥的所述标识符。
55.在第三方面的另一种可能的实现方式中,用于处理存储在所述数据存储服务器的所述数据库中的所述数据的数据查询,所述数据包括所述多个密文数据元素,其中,所述数据查询由至少一个查询值定义,所述数据存储服务器的所述处理器还用于:
56.基于所述mac密钥,接收所述至少一个查询值的二进制表示的第一部分的至少一个第一查询mac,其中,所述第一部分包括所述查询值的所述二进制表示的一个或多个最高有效位,并且所述查询值的所述二进制表示还包括由所述查询值的所述二进制表示的所述剩余最低有效位定义的互补剩余部分;
57.基于所述第一查询mac,选择存储在所述数据库中的一个或多个数据桶;
58.向所述客户端设备提供所述一个或多个数据桶,其中,每个数据桶包括数据桶头和加密的数据桶内容。
59.在第三方面的另一种可能的实现方式中,对于每个数据桶,所述数据桶内容还包括,对于所述数据桶内容的每个密文数据元素,存储位置标识符,特别是行标识符,用于标识与所述数据库中相应的密文数据元素关联的数据的存储位置,并且其中,用于从所述数据库中检索与查询范围的所述数据元素关联的数据,所述数据存储服务器的所述处理器还用于:基于所述存储位置标识符,对于与所述数据查询匹配的一个或多个数据元素,从所述数据库检索与所述一个或多个数据元素关联的所述数据;并将所述数据发送到所述客户端设备。
60.根据第四方面,提供了一种操作数据存储服务器的方法,所述方法包括以下步骤:
61.基于消息认证码(authentication code,mac)密钥从客户端设备接收明文数据元素的二进制表示的第一部分的第一mac,其中,所述第一部分包括所述明文数据元素的所述二进制表示的一个或多个最高有效位,并且所述明文数据元素的所述二进制表示还包括与所述第一部分互补的剩余部分,所述剩余部分包括所述明文数据元素的所述二进制表示的
剩余最低有效位;
62.基于所述第一mac选择存储在所述数据存储服务器的数据库中的数据桶;
63.向所述客户端设备提供所述数据桶,其中,所述数据桶包括数据桶头和加密的数据桶内容;
64.从所述客户端设备接收具有更新的加密数据桶内容的所述数据桶;
65.将具有所述更新的加密数据桶内容的所述数据桶存储在所述数据库中,其中,所述更新的加密数据桶内容包括基于呈所述加密密钥的加密形式的所述明文数据元素的所述二进制表示的所述剩余部分。
66.本发明的第四方面提供的所述方法可以由本发明的第三方面提供的所述数据存储服务器执行。因此,本发明的第四方面提供的所述方法的其它特征直接从本发明的第三方面及其在上文和下文中描述的不同实现方式提供的所述数据存储服务器的功能获取。
67.根据第五方面,提供了一种包括非瞬时性计算机可读存储介质的计算机程序产品。所述非瞬时性计算机可读存储介质用于存储程序代码,当所述程序代码由计算机或处理器执行时,使得所述计算机或所述处理器执行第二方面提供的所述方法或第四方面提供的所述方法。
68.附图及以下说明中将详细描述一个或多个实施例。其它特征、目的和优点在说明书、附图以及权利要求中是显而易见的。
附图说明
69.下文结合附图对本发明的实施例进行详细描述。在附图中:
70.图1是实施例提供的数据存储系统的示意图,包括实施例提供的多个客户端设备和实施例提供的操作数据库的数据存储服务器;
71.图2是由实施例提供的客户端设备实现的将数据元素划分为第一msb部分和互补的lsb剩余部分的示例的示意图;
72.图3示出了实施例提供的数据存储服务器用于存储安全敏感数据所使用的示例性表;
73.图4是实施例提供的客户端设备和实施例提供的用于存储和/或检索安全敏感数据的数据存储服务器实现的索引树结构的示意图;
74.图5是实施例提供的客户端设备和实施例提供的用于存储和/或检索安全敏感数据的数据存储服务器实现的基于相应msb部分将不同数据元素分布到不同数据桶的示意图;
75.图6是实施例提供的客户端设备、实施例提供的数据存储服务器和密钥管理服务器之间用于从数据存储服务器检索数据的交互的序列图;
76.图7是实施例提供的将客户端设备的数据存储在远程数据存储服务器的数据库中的方法的流程图;
77.图8是实施例提供的使用用于存储客户端设备数据的数据库操作数据存储服务器的方法的流程图。
78.在下文中,相同的附图标记是指相同或至少功能上等效的特征。
programmable array,fpga)、数字信号处理器(digital signal processor,dsp)或通用处理器等组件。非瞬时性存储器115可以存储数据,例如电子密钥和可执行程序代码,其中,当可执行程序代码由处理器111执行时,使得客户端设备110执行本文中描述的功能、操作和方法。通信接口113可以包括有线或无线通信接口113。同理,数据存储服务器120可以包括用于处理和生成数据的处理器121、用于与数据存储系统100中的其它组件交换数据的通信接口123以及用于存储数据的数据库125。
85.如下文将详细描述的,客户端设备110用于在数据存储服务器120上建立索引,同时保持安全敏感数据的完全隐私。该索引可以由数据存储服务器120用于执行范围查询和按查询排序。为了处理这种查询,客户端设备110用于帮助远程数据存储服务器120标识正确和准确的查询结果,而不牺牲存储在远程数据存储服务器120的数据库125中的安全敏感数据的安全性。
86.为此,实施例使用一种新类型的索引,该索引使远程数据存储服务器120可以在实际不知道数据的情况下对加密数据运行查询。如下文将详细描述的,在一个实施例中,客户端设备110用于将敏感数据元素的最高有效位(most significant bit,msb)部分转换为mac值,该msb部分仅通过该mac值暴露给远程数据存储服务器120。在一个实施例中,数据存储服务器120用于将mac值作为用于标识数据的索引中的键。在一个实施例中,客户端设备110还用于存储在索引中加密的敏感数据的最低有效位(least significant bit,lsb)部分,其中,加密密钥115a仅为客户端设备110所知。
87.更具体地,客户端设备110用于将数据125a存储在远程数据存储服务器120的数据库125中,其中,数据125a包括多个安全敏感明文数据元素。多个明文数据元素可以以明文查询,并且可以包括例如数值,例如整数值、实值、浮点值等,和/或文本数据,例如字母字符串。虽然在下文中,将在明文数值形式的明文数据元素的上下文中描述详细实施例,但应理解,这些实施例适用于也可以查询的其它类型的明文数据元素,例如文本数据。
88.对于多个明文数值中的每个明文数值,客户端设备110用于使用mac密钥115b(其可以存储在客户端设备110的存储器115中)生成数据元素的二进制表示200的第一部分200a的至少一个第一mac,例如明文数值。图2中示出了示例性明文数值的二进制表示200。如图2所示,明文数值的二进制表示200的第一部分200a包括二进制表示200的一个或多个最高有效位,即8个最高有效位,即二进制表示200的最高有效字节。除了第一部分200a之外,明文数值的二进制表示200还包括由明文数值的二进制表示200的剩余最低有效位定义的互补剩余部分200b。在图2所示的示例性实施例中,明文数值的二进制表示200的互补剩余部分200b包括24个最低有效位,即明文数值的二进制表示200的最后三个最低有效字节。如图2所示,在一个实施例中,客户端设备110生成的mac可以是基于哈希的消息认证码(hash-based message authentication code,hmac)。
89.此外,客户端设备110用于将基于呈加密密钥115a(可以存储在客户端设备110的存储器115中)的加密形式的明文数值的二进制表示200的剩余部分200b存储在远程数据存储服务器120的数据库125中的数据桶500a-500d中。如将在下文图4和图5的上下文中进一步详细描述的,数据存储服务器120用于通过明文数值的二进制表示200的第一部分200a的至少一个第一mac来标识数据桶500a-500d。
90.在一个实施例中,客户端设备110用于基于明文数值的二进制表示200的第一部分
200a(例如,最高有效字节)的至少一个第一mac检索由数据存储服务器120使用至少一个第一mac标识的数据桶500a-500d。在一个实施例中,每个数据桶500a-500d包括数据桶头和加密的数据桶内容,其中,加密的数据桶内容包括已经存储在数据库125中的一个或多个明文数值的二进制表示的一个或多个加密的剩余部分(例如图2中所示的剩余部分200b),其中,一个或多个明文数值具有相同的msb部分,因此具有相同的第一mac。
91.在一个实施例中,客户端设备110用于使用加密密钥115a对数据存储服务器120标识的数据桶500a-500d的内容进行解密,以获取明文形式的数据桶内容。此外,在一个实施例中,客户端设备110用于将要存储在数据库125中的明文数值的二进制表示200的剩余部分200b添加到明文形式的数据桶内容中,以获取明文形式的更新的数据桶内容。在一个实施例中,客户端设备110还用于使用加密密钥115a对明文形式的更新的数据桶内容进行加密,并将具有加密的更新的数据桶内容的数据桶500a-500d发送给数据存储服务器120。数据存储服务器120继而用于将更新的数据桶500a-500d(包括新数值的加密lsb部分)存储在数据库125中。
92.作为客户端设备110的补充,数据存储服务器120用于针对多个明文数值中的每个明文数值,从客户端设备110接收相应明文数值的二进制表示200的第一部分200a的相应第一mac。此外,数据存储服务器120用于基于第一mac选择(即标识)存储在数据库125中的数据桶500a-500d,并向客户端设备110提供所标识的数据桶500a-500d。此外,数据存储服务器120用于从客户端设备110接收具有更新的加密数据桶内容的更新数据桶500a-500d,并将具有更新的加密数据桶内容的更新数据桶500a-500d存储在数据库125中。如上文在客户端设备110的上下文中已经描述的,更新的加密数据桶内容包括呈基于加密密钥115a的加密形式的明文数值的二进制表示200的剩余部分200b。
93.在一个实施例中,客户端设备110还用于使用加密密钥115a加密要存储在数据存储服务器120的数据库125中的明文数值,以获取多个密文数值,例如图3中所示的加密工资300b。在一个实施例中,客户端设备110用于使用随机加密方案或确定性加密方案加密要存储在数据存储服务器120的数据库125中的数值。
94.此外,客户端设备110用于将包括多个密文数值300b以及与数值300b关联的非加密数据(例如图3中所示的人名300c)的数据125a发送到数据存储服务器120,以用于将数据125a存储在数据存储服务器120的数据库125中。在一个实施例中,数据库125是关系数据库125,其中,数据存储服务器120用于将包括多个密文数值300b以及与数值300b关联的非加密数据300c的数据125a存储在关系数据库125的表中,例如图3所示的表300。如上所述,在一个实施例中,数据存储服务器120用于将密文数值300b存储在关系数据库125的表300的加密列中。
95.在一个实施例中,客户端设备110还用于将加密密钥115a的标识符连同包括多个密文数值300b的数据125a一起发送到数据存储服务器120,并且数据存储服务器120用于基于加密密钥115a的标识符将数据125a存储在数据库125的表300中。
96.在一个实施例中,客户端设备110还用于从远程密钥管理服务器130获取加密密钥115a的加密版本和/或mac密钥115b的加密版本,其中,加密的第一加密密钥115a和/或加密的mac密钥115b是用客户端设备主密钥加密的。在一个实施例中,客户端设备110还用于将加密的第一加密密钥115a和/或加密的mac密钥115b发送到数据存储服务器120。在一个实
施例中,加密密钥115a的标识符可以是数据存储服务器120用于确定存储包括多个密文数值300b的数据125a的位置的加密的加密密钥115a。
97.在一个实施例中,客户端设备110和数据存储服务器120用于除了第一mac之外,还使用第二mac和第三mac来标识数据库125中的相关数据桶500a-500d。换句话说,除了图2中所示的相应数值的二进制表示200的第一级划分之外,客户端设备110和数据存储服务器120还用于实现使用不同的msb部分作为索引的第二级划分和第三级划分,如图4中所示的树所示。在一个实施例中,客户端设备110和数据存储服务器120使用的mac数量,即仅一个mac或两个、三个甚至更多个mac,可以取决于要存储在数据库125中的数据元素的大小和/或数据桶500a-500d的期望密度,即“范围分辨率”。
98.更具体地,在一个实施例中,客户端设备用于使用mac密钥115b生成明文数值的二进制表示200的第二部分的第二mac和第三部分的第三mac。从图4可以看出,在一个实施例中,明文数值的二进制表示200的第二部分可以包括二进制表示200的2个最高有效字节,而第三部分可以包括二进制表示200的3个最高有效字节。应理解,在本实施例中,使用明文数值的二进制表示200的增加部分的第一mac、第二mac和第三mac,最低有效位的互补剩余部分200b将相应地变小。例如,对于数值的4字节二进制表示200,其中,第一部分包括第一最高有效字节,第二部分包括前两个最高有效字节,第三部分包括二进制表示200的前三个最高有效字节,互补剩余部分200b包括二进制表示200的最后一个字节。
99.基于从客户端设备110接收的第一mac、第二mac和第三mac,数据存储服务器120用于标识一个或多个相关数据桶500a-500d,并向客户端设备110提供一个或多个标识的数据桶500a-500d。为此,在一个实施例中,数据存储服务器120可以用于实现索引结构,例如图4中所示的树结构400,用于标识一个或多个相关数据桶500a-500d。换句话说,在一个实施例中,数据存储服务器120使用的索引结构400是指向数据桶500a-d的指针树。在一个实施例中,树400可以是前缀搜索树,其中,每个树节点的键是数值的msb部分的hmac。在一个实施例中,hmac可以定义为hmac(键,“桶最小值”,“桶最大值”)。在一个实施例中,hmac可以定义为hmac(键,“msb值”,“msb级别范围”)。在一个实施例中,“msb级别范围”可以通过所使用的msb部分的大小确定,例如1、2或3字节。
100.如结合图4中所示的示例性索引树结构400理解的,具有基于相同“msb级别”的键的节点在树400中的相同级别上。键最短的节点位于顶层。换句话说,具有基于1字节msb的键的节点位于顶层(在根之后)。具有以另一节点的键开头的键的节点是该节点的子节点。例如,如果2字节msb节点都共享相同的第一字节(在hmac操作之前),则2字节msb节点是1字节msb节点的子节点。
101.如上所述,图4中所示的树结构400的所有叶节点都可以容纳指向数据桶500a-500d的指针,数据桶500a-500d又包括加密的lsb。在一个实施例中,树结构400的非叶节点仅容纳指向它们的兄弟节点的指针。在一个实施例中,数据存储服务器120用于在运行时创建树结构400的节点(例如,在图4中,仅示出具有至少一个元素的节点)。在一个实施例中,数据存储服务器120可以用于将树结构400的每个节点划分为两个另外的节点,以便创建更多的存储空间。
102.客户端设备110和数据存储服务器120还用于处理存储在数据库125中的包括多个密文数值300b的数据125a的数据查询(例如“选择”查询)。在一个实施例中,数据查询由至
少一个查询值定义。如将在图6的上下文中详细描述的,在一个实施例中,为了标识与数据查询相关的一个或多个数据桶500a-500d,客户端设备110用于以与要存储在数据库125中的新数值完全相同的方式初始处理查询值。更具体地,与要存储在数据库中的新数值一样,客户端设备110用于使用mac密钥115b生成查询值的二进制表示的第一部分(例如第一最高有效字节)的至少一个第一查询mac,其中,第一部分包括查询值的二进制表示的一个或多个最高有效位。
103.对于上述实施例,客户端设备110还可以用于使用mac密钥115b生成查询值的二进制表示的第二部分的第二查询mac(例如前两个最高有效字节)和第三部分的第三查询mac(例如前三个最高有效字节),并将第一查询mac、第二查询mac和第三查询mac发送到数据存储服务器120,用于标识相关数据桶500a-500d。换句话说,基于第一查询mac、第二查询mac和第三查询mac,数据存储服务器120用于选择(即标识)存储在数据库125中的一个或多个相关数据桶500a-500d,并向客户端设备110提供一个或多个选择的数据桶500a-500d。客户端设备110继而用于使用加密密钥115a对一个或多个选择的数据桶500a-500d的加密的数据桶内容进行解密。客户端设备110可以通过将查询值的二进制表示的第一部分、第二部分和/或第三部分与存储在一个或多个选择的数据桶500a-500d中的一个或多个数值的二进制表示的解密的剩余部分(即解密lsb部分)组合,生成一个或多个选择的数据桶500a-500d中包括的相应数值的相应明文二进制表示。在另一个实施例中,为了重建包括在一个或多个选择的数据桶500a-500d中的相应数值的相应明文二进制表示,msb部分可以以加密形式包括在一个或多个相应数据桶500a-500d的数据桶头中。
104.在一个实施例中,对于每个数据桶500a-500d,数据桶内容还包括,对于数据桶内容的每个密文数值,存储位置标识符,例如图3所示的表300的行标识符300a,用于标识与相应密文数值300b关联的数据300c在数据存储服务器120的数据库125中的存储位置。为了从数据库125检索与查询范围的数值300b关联的数据300c,数据存储服务器120用于,对于与数据查询匹配的一个或多个数值300b,基于存储位置标识符300a检索与来自数据库125的一个或多个数值关联的数据300c,并将数据300c作为查询的结果发送到客户端设备110。
105.图6示出了在从远程数据存储服务器120的数据库125提取加密的安全敏感数值300b(以及与之关联的数据300c)的过程中,客户端设备110、远程数据存储服务器(称为数据库服务器)120与远程密钥管理服务器(key management server,kms)130之间的交互的实施例。例如,在图6所示的实施例中,数据的提取在选择查询的上下文中示出。客户端设备110、远程数据存储服务器120与远程密钥管理服务器130之间的交互包括以下步骤。
106.步骤601:在客户端设备110的处理器111上运行的应用程序111b通知在客户端设备110的处理器111上运行的客户端驱动程序111a执行选择查询,用于从远程数据存储服务器120的关系数据库125提取数值300b以及与之关联的数据300c。
107.步骤603:响应于步骤601,客户端设备110的客户端驱动程序111a解析应用程序111b的选择查询,以获取与要从远程数据存储服务器120的关系数据库125中提取的数值关联的列名。客户端驱动程序111a基于解析的选择查询标识作为元数据存储在客户端设备110的存储器115中的表300的列名。
108.步骤605:客户端设备110的客户端驱动程序111a基于hmac密钥115b生成查询值的二进制表示200的最高有效字节200a的第一hmac、两个最高有效字节的第二hmac和三个最
高有效字节的第三hmac。
109.步骤607:客户端设备110的客户端驱动程序111a将第一hmac、第二hmac和第三hmac发送到数据存储服务器120。
110.步骤609:数据存储服务器120基于从客户端设备110接收的hmac,在数据库125中搜索一个或多个相关数据桶500a-500d,即由三个hmac标识的一个或多个数据桶500a-500d。
111.步骤611:数据存储服务器120将具有加密的数据桶内容的标识数据桶500a-500d返回给客户端设备110的客户端驱动程序111a。
112.步骤613:客户端设备110的客户端驱动程序111a对从数据存储服务器120接收的一个或多个数据桶500a-500d的加密的数据桶内容进行解密。
113.步骤615:基于解密的互补lsb剩余部分,客户端设备110的客户端驱动程序111a过滤掉不相关的行标识符。
114.步骤617:客户端设备111的客户端驱动程序111a向数据存储服务器120发送请求,以提取由步骤615中确定的行标识符300a标识的表300的表行。
115.步骤619:数据存储服务器120向客户端设备110提供表300的请求表行,包括密文数值300b,以及这些行的关联数据300c。
116.步骤621:客户端设备110的客户端驱动程序111a将请求的表行转发到应用程序111b。
117.图7是用于将客户端设备110的数据125a存储在远程数据存储服务器120的数据库125中的方法700的流程图。方法700包括由客户端设备110执行的以下步骤。
118.步骤701:使用mac密钥115b生成明文数据元素(例如数值)的二进制表示200的第一部分200a的至少一个第一mac,其中,第一部分200a包括明文数据元素的二进制表示200的一个或多个最高有效位,并且明文数据元素的二进制表示200还包括由明文数据元素的二进制表示200的剩余最低有效位定义的互补剩余部分200b。
119.步骤703:基于第一mac从数据存储服务器120检索数据桶,其中,数据桶500a-500d包括数据桶头和加密的数据桶内容。
120.步骤705:使用加密密钥115a对数据桶内容进行解密,以获取明文形式的数据桶内容。
121.步骤707:将明文数据元素的二进制表示200的剩余部分200b添加到明文形式的数据桶内容中,以获取明文形式的更新的数据桶内容。
122.步骤709:使用加密密钥115a对明文形式的更新的数据桶内容进行加密。
123.步骤711:将具有加密的更新的数据桶内容的数据桶500a-500d发送到数据存储服务器120,以用于将数据桶500a-500d存储在数据存储服务器120的数据库125中。
124.图8是实施例提供的操作具有数据库125的数据存储服务器120的方法800的示意图。方法800包括由数据存储服务器120执行的以下步骤。
125.步骤801:数据存储服务器120基于mac密钥115b从客户端设备110接收明文数据元素(例如数值)的二进制表示200的第一部分200a的第一mac,其中,第一部分200a包括明文数据元素的二进制表示200的一个或多个最高有效位,并且明文数据元素的二进制表示200还包括由明文数据元素的二进制表示200的剩余最低有效位定义的互补剩余部分200b。
126.步骤803:数据存储服务器120基于第一mac选择存储在数据库125中的数据桶500a-500d。
127.步骤805:向客户端设备110提供数据桶500a-500d,其中,数据桶500a-500d包括数据桶头和加密的数据桶内容。
128.步骤807:从客户端设备110接收具有更新的加密的数据桶内容的数据桶500a-500d。
129.步骤809:将具有更新的加密的数据桶内容的数据桶500a-500d存储在数据库125中,其中,更新的加密的数据桶内容包括呈基于加密密钥115a的加密形式的明文数据元素的二进制表示200的剩余部分200b。
130.本领域技术人员将理解,各种附图(方法和装置)的“框”(“单元”)表示或描述本发明的实施例的功能(而不一定是在硬件或软件中的单独“单元”),因此同等地描述装置实施例以及方法实施例的功能或特征(单元等同步骤)。
131.在本技术中提供的几个实施例中,应当理解,所公开的系统、装置和方法可以通过其它方式实现。例如,装置的所描述实施例仅仅是示例性的。例如,单元划分仅仅是一种逻辑功能划分,实际实现时可以有其它划分方式。例如,可以将多个单元或组件合并或集成到另一系统中,或者可以忽略或不执行一些特征。另外,所显示或描述的相互耦合或直接耦合或通信连接可以通过一些接口来实现。装置或单元之间的直接耦合或通信连接可通过电子、机械或其它形式实现。
132.作为分离部件描述的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,可以位于一个位置上,或者可以分布在多个网络单元上。可以根据实际需要选择一些或全部单元来实现实施例方案的目的。
133.另外,本发明的实施例中的功能单元可集成到一个处理单元中,或每个单元可物理上单独存在,或两个或更多单元可集成到一个单元中。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献