加密的内存列存储的制作方法
【技术领域】
[0001] 本发明涉及加密,并且具体地,涉及对加密数据的查询处理。
【背景技术】
[0002] 除非这里另外指示,在这一节中描述的方法不是本申请中权利要求书的现有技术 并且不认为因为包括在本节中而成为现有技术。
[0003] 安全性可能对云(cloud)中的数据处理的广泛采用造成障碍。具体地说,违法的 黑客或外国政府组织可能尝试访问存储在云中的数据。
[0004] 数据的加密可以提供对这个问题的解决方案。然而,这样的加密还可以干扰这样 的加密数据的使用,例如,利用云中的加密数据的计算。
[0005] 因此,当前研究的主题调查了对于保持在加密形式中的数据的处理。
[0006] 在云上提供软件的一种方式是数据库即服务(Database-as-a_Service,DaaS)。在 这样的产品中,服务提供者供应了数据库存储和查询能力(例如,通过SQL接口),然后对用 户的存储和计算进行收费。
[0007] 如果查询处理仅限于客户端一侧,并且只有存储在云中执行,则这样的DaaS方案 价值不高。相反,允许对于保持加密的数据执行查询的DaaS方案,通过准许云上的数据处 理将提供更高的价值。
[0008] 因此,存在对于允许对加密的数据的查询处理的系统和方法。
【发明内容】
[0009] 实施例涉及对加密数据的处理,并且具体地,涉及识别对处理查询有用的适当的 加密层。这样的识别(也称为洋葱选择(onion selection)问题)利用可调整的洋葱加密 过程(onion encryption procedure)来实现。基于定义的策略配置、替代解决和冲突解决 的要求,可调整的洋葱加密过程需要将包括数据库语言(例如SQL)形式的表达式的查询, 翻译为对加密数据的等效查询。洋葱可以以几乎任意的指导(directing)洋葱选择的方 式来配置。执行功能(execution function)引入了执行拆分(execution split)以允许 本地(例如,客户端一侧)查询实践(fulfillment),否则该查询可能无法以安全的方式在 服务器一侧实践。也可以采用可搜索的加密功能,并且实施例经由同态加密(homomorphic encryption)包含聚合。实施例可以被实施为内存列存储(in-memory column store)数据 库系统。
[0010] 根据实施例的计算机实施的方法包括:提供包括加密的明文的数据库,使得引擎 接收包括数据库查询的第一输入,该数据库查询包括表达式,并且使得引擎接收包括根据 第一加密方案加密的明文的第二输入。使得引擎接收包括根据第二加密方案加密的明文的 第三输入。使得引擎根据算法处理表达式、第一加密方案和第二加密方案,以便选择在其上 执行数据库查询的加密的层。
[0011] 非瞬时计算机可读存储介质的实施例包括用于执行方法的计算机程序。该方法 包括提供包括加密的明文的数据库,使得引擎接收包括数据库查询的第一输入,该数据库 查询包括表达式,并且使得引擎接收包括根据第一加密方案加密的明文的第二输入。使得 引擎接收包括根据第二加密方案加密的明文的第三输入,并且使得引擎根据算法处理表达 式、第一加密方案和第二加密方案,以便选择在其上执行数据库查询的加密的层。
[0012] 计算机系统的实施例包括:一个或多个处理器和软件程序,该软件程序能够在所 述计算机系统上执行并且被配置为提供包括加密的明文的数据库。该软件被配置为使得引 擎接收包括数据库查询的第一输入,该数据库查询包括表达式,并且被配置为使得引擎接 收包括根据第一加密方案加密的明文的第二输入。该软件还被配置为使得引擎接收包括根 据第二加密方案加密的明文的第三输入,并且使得引擎根据算法处理表达式、第一加密方 案和第二加密方案,以便选择在其上执行所述数据库查询的加密的层。
[0013] 根据某些实施例,该算法包括:构建在数据库查询中使用的列的图,并且对于每个 图节点(graph node),选择能够满足数据库查询的最大的加密的层。该算法还包括:选择 每个被连接的分量(component)必需的最小的加密的层,选择对于数据库操作最高效的剩 余的加密,并且从叶到根扫描数据库查询的算子树(operator tree)。其中,数据库可以在 服务器上,并且当遇到冲突时,在客户端上执行算子树的上部(upper part)。
[0014] 在实施例中,引擎处理表达式以进一步输出加密的数据库查询以便在加密的层上 执行,并且该方法还包括在加密的层上执行加密的数据库查询以产生加密的查询结果。
[0015] 在各种实施例中,表达式包括聚合,并且所选择的加密层包括同态的加密。
[0016] 根据一些实施例,表达式包括范围限定(bound),并且所选择的加密层包括保序加 密(order preserving encryption)〇
[0017] 在特定实施例中,表达式包括搜索函数(function),并且所选择的加密层包括可 搜索的加密。
[0018] 在某些实施例中,所选择的加密层的明文通过保序加密初始加密。
[0019] 以下详细描述和附图提供了对各种实施例的本质和优点的更好的理解。
【附图说明】
[0020] 图1示出了根据实施例的系统的简化视图。
[0021] 图2是示出根据实施例的过程的步骤的简化流程图。
[0022] 图3A至图3F是示出在一个特定内存数据库系统的上下文中执行的实施例的示例 的简化视图。
[0023] 图4是示出根据实施例的一个特定的洋葱选择算法的步骤的简化流程图。
[0024] 图5示出了根据实施例的被配置为实施加密的数据的处理的专用计算机器的硬 件。
[0025] 图6示出了计算机系统的示例。
【具体实施方式】
[0026] 这里描述的是用于提供加密的数据的查询的技术。在以下描述中,为了说明的目 的,阐述了多个示例和具体细节,以便提供本发明的全面理解。然而,很显然,对于本领域技 术人员,如权利要求书中所限定的,单独或与下面描述的其他特征组合,可以包括这些示例 中的一些或全部的特征,并且还可以包括这里描述的特征和概念的修改和等效物。
[0027] 先前,密文已经用来允许对加密数据的查询的处理。关系数据库算子已经被修改 来允许对这样的加密的数据的处理。
[0028] 分箱(bining)作为处理范围查询的方法被引入。在分箱中,数值被放入更大的箱 中(larger bin),并且使用等式匹配(equality matching)来查询范围的所有箱。
[0029] 在所选择的箱中、但是没有在范围内的数值使用客户端后处理(post processing)来进行过滤。分箱允许使用在明文数据库中使用的相同的关系算子来实施范 围查询。
[0030] 分箱方法随后通过保序加密进行改进。那个技术在密文中保留了明文的次序。使 用保序加密进行加密的数据库已经能够执行大多数查询(除了聚合以外),而无需修改数 据库算子。
[0031] 随机次序保留函数代表了用于查询加密的数据的方法的演进中的下一步。这种随 机次序保留函数将较小的域(domain)映射到较大的域,同时保留输入的次序。然而,这样 的随机次序保留函数可能不期望地允许明文比特的上半部的一大部分被泄露给被动的观 察者(passive observer) 〇
[0032] 保序加密的理想安全性,除了次序以外不准许泄露任何东西。因此,期望安全性的 保序加密用明文的次序替换明文。
[0033] 这样的保序加密是明文的较小的域到密文的较大的域的映射。然而,挑战是容纳 在选择加密时未预见到的将来的明文。
[0034] 为了达成这一点,提出了计算密文的交互式协议。这样的方法允许只在特定查询 需要时披露保序密文。
[0035] 具体地说,更安全的加密方案的洋葱层被包围在保序密文周围。这些洋葱层只有 在要求次序比较的范围查询被处理时才被去除。使用这种方法,大多数查询能够被处理而 无需凭借保序加密。
[0036] 如这里所描述的,实施例涉及加密的数据的可调整的洋葱处理,并且具体地,涉及 识别用于处理查询的适当的加密层。这样的识别(也称为洋葱选择问题)利用可调整的洋 葱加密过程来实现。
[0037] 基于定义的策略配置、替代解决和冲突解决的要求,可调整的洋葱加密过程需要 将结构化查询语言(SQL)查询翻译为对加密的数据的等效查询。洋葱可以以接近任意的指 导洋葱选择的方式来配置。本地执行功能引入本地执行分拆以容纳否则不能被满足的查 询。还可以采用可搜索的加密功能。可调整的洋葱加密过程的一个特定的实施例被实施为 内存列存储数据库系统。
[0038] 现在更详细地描述根据实施例的可调整的洋葱加密函数(function)。特别地,术 语"洋葱"源自于加密数据的多层的使用。也就是说,一种加密类型的输出(密文)被用作 另一个的输入。原始的、未加密的数据被称为明文。
[0039] 图1示出了根据实施例的系统的简化视图。系统100包括数据库层102,数据库层 102包括引擎104,引擎104与存储在数据库106中的数据通信。
[0040] 这里,数据库106包括具有列110的表格108,该列110代表根据各种不同的加密 方案(洋葱)111对相同明文(X)的加密。这样的加密方案的简略的示例包括A(X)、B(X) 等,其中,"X"代表未加密的明文。表格108可以是从具有明文作为单一的、未加密的列114 的另一个表格112中得出的。
[0041] 引擎104还经由用户界面(UI) 122与用户120通信。用户被配置为与Π 交互,以 准备对基础(underlying)数据库层中信息的查询124。
[0042] 在某些实施例,这个查询124可以包括以数据库语言表示的一个或多个表达式 EXP 126。这样的数据库语言的一个普遍的示例是结构化查询语言(SQL)。SQL表达式的一 些示例在稍后在下面结合所述示例描述的表格中列出。
[0043] 引擎104被配置为接收作为第一输入150的、包括查询表达式EXP的查询124。引 擎104还被配置为接收作为第二输入152的、根据各种加密数据方案111加密的明文。
[0044