CN104657413A - 加密的内存列存储 - Google Patents
加密的内存列存储 Download PDFInfo
- Publication number
- CN104657413A CN104657413A CN201410674875.XA CN201410674875A CN104657413A CN 104657413 A CN104657413 A CN 104657413A CN 201410674875 A CN201410674875 A CN 201410674875A CN 104657413 A CN104657413 A CN 104657413A
- Authority
- CN
- China
- Prior art keywords
- encryption
- data base
- onion
- layer
- base querying
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Bioethics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
实施例涉及处理加密的数据,并且具体地,涉及识别对处理查询有用的适当的层加密。这样的识别(也称为洋葱选择问题)利用可调整的洋葱加密过程来实现。基于定义的策略配置、替代解决和冲突解决的要求,可调整的洋葱加密程序需要将包括数据库语言(例如SQL)形式的表达式的查询,翻译为对加密的数据的等效查询。洋葱可以以几乎任意的指导洋葱选择的方式来配置。执行功能引入了执行拆分以允许本地(例如,客户端一侧)查询实践(fulfillment),否则该查询可能无法以安全的方式在服务器一侧实践。也可以采用可搜索的加密功能,并且实施例经由同态加密包含聚合。实施例可以被实施为内存列存储数据库系统。
Description
技术领域
本发明涉及加密,并且具体地,涉及对加密数据的查询处理。
背景技术
除非这里另外指示,在这一节中描述的方法不是本申请中权利要求书的现有技术并且不认为因为包括在本节中而成为现有技术。
安全性可能对云(cloud)中的数据处理的广泛采用造成障碍。具体地说,违法的黑客或外国政府组织可能尝试访问存储在云中的数据。
数据的加密可以提供对这个问题的解决方案。然而,这样的加密还可以干扰这样的加密数据的使用,例如,利用云中的加密数据的计算。
因此,当前研究的主题调查了对于保持在加密形式中的数据的处理。
在云上提供软件的一种方式是数据库即服务(Database-as-a-Service,DaaS)。在这样的产品中,服务提供者供应了数据库存储和查询能力(例如,通过SQL接口),然后对用户的存储和计算进行收费。
如果查询处理仅限于客户端一侧,并且只有存储在云中执行,则这样的DaaS方案价值不高。相反,允许对于保持加密的数据执行查询的DaaS方案,通过准许云上的数据处理将提供更高的价值。
因此,存在对于允许对加密的数据的查询处理的系统和方法。
发明内容
实施例涉及对加密数据的处理,并且具体地,涉及识别对处理查询有用的适当的加密层。这样的识别(也称为洋葱选择(onion selection)问题)利用可调整的洋葱加密过程(onion encryption procedure)来实现。基于定义的策略配置、替代解决和冲突解决的要求,可调整的洋葱加密过程需要将包括数据库语言(例如SQL)形式的表达式的查询,翻译为对加密数据的等效查询。洋葱可以以几乎任意的指导(directing)洋葱选择的方式来配置。执行功能(execution function)引入了执行拆分(execution split)以允许本地(例如,客户端一侧)查询实践(fulfillment),否则该查询可能无法以安全的方式在服务器一侧实践。也可以采用可搜索的加密功能,并且实施例经由同态加密(homomorphic encryption)包含聚合。实施例可以被实施为内存列存储(in-memory column store)数据库系统。
根据实施例的计算机实施的方法包括:提供包括加密的明文的数据库,使得引擎接收包括数据库查询的第一输入,该数据库查询包括表达式,并且使得引擎接收包括根据第一加密方案加密的明文的第二输入。使得引擎接收包括根据第二加密方案加密的明文的第三输入。使得引擎根据算法处理表达式、第一加密方案和第二加密方案,以便选择在其上执行数据库查询的加密的层。
非瞬时计算机可读存储介质的实施例包括用于执行方法的计算机程序。该方法包括提供包括加密的明文的数据库,使得引擎接收包括数据库查询的第一输入,该数据库查询包括表达式,并且使得引擎接收包括根据第一加密方案加密的明文的第二输入。使得引擎接收包括根据第二加密方案加密的明文的第三输入,并且使得引擎根据算法处理表达式、第一加密方案和第二加密方案,以便选择在其上执行数据库查询的加密的层。
计算机系统的实施例包括:一个或多个处理器和软件程序,该软件程序能够在所述计算机系统上执行并且被配置为提供包括加密的明文的数据库。该软件被配置为使得引擎接收包括数据库查询的第一输入,该数据库查询包括表达式,并且被配置为使得引擎接收包括根据第一加密方案加密的明文的第二输入。该软件还被配置为使得引擎接收包括根据第二加密方案加密的明文的第三输入,并且使得引擎根据算法处理表达式、第一加密方案和第二加密方案,以便选择在其上执行所述数据库查询的加密的层。
根据某些实施例,该算法包括:构建在数据库查询中使用的列的图,并且对于每个图节点(graph node),选择能够满足数据库查询的最大的加密的层。该算法还包括:选择每个被连接的分量(component)必需的最小的加密的层,选择对于数据库操作最高效的剩余的加密,并且从叶到根扫描数据库查询的算子树(operator tree)。其中,数据库可以在服务器上,并且当遇到冲突时,在客户端上执行算子树的上部(upper part)。
在实施例中,引擎处理表达式以进一步输出加密的数据库查询以便在加密的层上执行,并且该方法还包括在加密的层上执行加密的数据库查询以产生加密的查询结果。
在各种实施例中,表达式包括聚合,并且所选择的加密层包括同态的加密。
根据一些实施例,表达式包括范围限定(bound),并且所选择的加密层包括保序加密(order preserving encryption)。
在特定实施例中,表达式包括搜索函数(function),并且所选择的加密层包括可搜索的加密。
在某些实施例中,所选择的加密层的明文通过保序加密初始加密。
以下详细描述和附图提供了对各种实施例的本质和优点的更好的理解。
附图说明
图1示出了根据实施例的系统的简化视图。
图2是示出根据实施例的过程的步骤的简化流程图。
图3A至图3F是示出在一个特定内存数据库系统的上下文中执行的实施例的示例的简化视图。
图4是示出根据实施例的一个特定的洋葱选择算法的步骤的简化流程图。
图5示出了根据实施例的被配置为实施加密的数据的处理的专用计算机器的硬件。
图6示出了计算机系统的示例。
具体实施方式
这里描述的是用于提供加密的数据的查询的技术。在以下描述中,为了说明的目的,阐述了多个示例和具体细节,以便提供本发明的全面理解。然而,很显然,对于本领域技术人员,如权利要求书中所限定的,单独或与下面描述的其他特征组合,可以包括这些示例中的一些或全部的特征,并且还可以包括这里描述的特征和概念的修改和等效物。
先前,密文已经用来允许对加密数据的查询的处理。关系数据库算子已经被修改来允许对这样的加密的数据的处理。
分箱(bining)作为处理范围查询的方法被引入。在分箱中,数值被放入更大的箱中(larger bin),并且使用等式匹配(equality matching)来查询范围的所有箱。
在所选择的箱中、但是没有在范围内的数值使用客户端后处理(postprocessing)来进行过滤。分箱允许使用在明文数据库中使用的相同的关系算子来实施范围查询。
分箱方法随后通过保序加密进行改进。那个技术在密文中保留了明文的次序。使用保序加密进行加密的数据库已经能够执行大多数查询(除了聚合以外),而无需修改数据库算子。
随机次序保留函数代表了用于查询加密的数据的方法的演进中的下一步。这种随机次序保留函数将较小的域(domain)映射到较大的域,同时保留输入的次序。然而,这样的随机次序保留函数可能不期望地允许明文比特的上半部的一大部分被泄露给被动的观察者(passive observer)。
保序加密的理想安全性,除了次序以外不准许泄露任何东西。因此,期望安全性的保序加密用明文的次序替换明文。
这样的保序加密是明文的较小的域到密文的较大的域的映射。然而,挑战是容纳在选择加密时未预见到的将来的明文。
为了达成这一点,提出了计算密文的交互式协议。这样的方法允许只在特定查询需要时披露保序密文。
具体地说,更安全的加密方案的洋葱层被包围在保序密文周围。这些洋葱层只有在要求次序比较的范围查询被处理时才被去除。使用这种方法,大多数查询能够被处理而无需凭借保序加密。
如这里所描述的,实施例涉及加密的数据的可调整的洋葱处理,并且具体地,涉及识别用于处理查询的适当的加密层。这样的识别(也称为洋葱选择问题)利用可调整的洋葱加密过程来实现。
基于定义的策略配置、替代解决和冲突解决的要求,可调整的洋葱加密过程需要将结构化查询语言(SQL)查询翻译为对加密的数据的等效查询。洋葱可以以接近任意的指导洋葱选择的方式来配置。本地执行功能引入本地执行分拆以容纳否则不能被满足的查询。还可以采用可搜索的加密功能。可调整的洋葱加密过程的一个特定的实施例被实施为内存列存储数据库系统。
现在更详细地描述根据实施例的可调整的洋葱加密函数(function)。特别地,术语“洋葱”源自于加密数据的多层的使用。也就是说,一种加密类型的输出(密文)被用作另一个的输入。原始的、未加密的数据被称为明文。
图1示出了根据实施例的系统的简化视图。系统100包括数据库层102,数据库层102包括引擎104,引擎104与存储在数据库106中的数据通信。
这里,数据库106包括具有列110的表格108,该列110代表根据各种不同的加密方案(洋葱)111对相同明文(x)的加密。这样的加密方案的简略的示例包括A(x)、B(x)等,其中,“x”代表未加密的明文。表格108可以是从具有明文作为单一的、未加密的列114的另一个表格112中得出的。
引擎104还经由用户界面(UI)122与用户120通信。用户被配置为与UI交互,以准备对基础(underlying)数据库层中信息的查询124。
在某些实施例,这个查询124可以包括以数据库语言表示的一个或多个表达式EXP 126。这样的数据库语言的一个普遍的示例是结构化查询语言(SQL)。SQL表达式的一些示例在稍后在下面结合所述示例描述的表格中列出。
引擎104被配置为接收作为第一输入150的、包括查询表达式EXP的查询124。引擎104还被配置为接收作为第二输入152的、根据各种加密数据方案111加密的明文。
基于这些输入,引擎104被配置为执行被表示为计算机可读存储介质132中的代码的算法130以产生至少一个输出134。关于算法的一个特定实施例的细节被示出和进一步结合图4在下面详细地讨论。
引擎的输出可以包括一个或多个加密的查询136(例如,用SQL),相应的洋葱(及其层)被选择以便在其上执行所述加密的查询136。这样的加密的查询的简略示例是ENCEXP1(A(x))、ENCEXP2(B(x))、ENCEXP3(B(A(x)))等。如以下详细描述的,这种洋葱选择能够同时考虑到安全性和效率这两个因素。
如以下还至少结合图3D详细讨论的,输出134还可以包括用来更新数据库的其他信息135。
由引擎对数据库执行的加密的查询产生了加密的(ENC)查询结果140。这种加密的查询结果140被从引擎返回到UI(例如,客户端),用于解密、显示、并最终被用户消费。
图2是示出根据实施例的处理流程200的实施例的简图。在第一步骤202中,提供引擎。在第二步骤204中,包括未加密的查询的第一输入被提供给引擎,该未加密的查询包括表达式。
在第三步骤206中,包括根据加密方案加密的明文的第二输入被提供给引擎。在第四步骤208中,引擎根据算法处理输入以作为输出产生:所识别的、加密的方案(洋葱)中的一个或多个的层,在该层上所述查询将被执行。
在可选的第五步骤210中,在加密的方案上执行加密的查询以生成查询结果。在可选的第六步骤212中,查询结果被解密并显示给用户。
根据某些实施例,引擎可以包括内存数据库的数据库引擎。这样的内存数据库的示例包括,但不限于:还可以从SAP AG获得的SYBASE IQ数据库、可以从华盛顿Redmond的微软公司获得的微软用于C的嵌入式SQL(ESQL/C)数据库、以及可以从加利福尼亚Redwood Shores的Oracle公司获得的Exalytics内存数据库。
内存数据库的另一个示例是可以从德国Walldorf的SAP AG获得的HANA内存数据库。现在讨论示出了结合HANA数据库的内存列存储的洋葱选择的性能的具体示例。
示例
图3A至图3F是示出在HANA内存数据库系统的环境中执行的实施例的简化视图。具体地,图3A示出了根据包括多个加密层的特定的方案(“洋葱”)加密的明文(这里称为“平长值(Plain long value)”)一个示例。稍后提供关于各种类型的加密层的另外的细节。
一个明文列可以通过多个洋葱被加密和存储在数据库上。每个洋葱包括不同的层。中心层总是明文。然后,每个层用特定类型的加密来加密前一层的结果。图3A还示出了洋葱的剥皮(peeling)以去除最外面的加密层。
图3A的示例中的特定洋葱具有明文层和采用保序加密(OPE)、确定性加密(DET)、以及随机加密(RND)类型的三个加密层。然而,另一个洋葱可以具有明文层以及只有一个加密层,其特征为,例如,同态加密。而第三洋葱可以具有明文层和采用可搜索的(searchable,SRC)加密方案的一个加密层。
第四洋葱可以只具有明文(PLN)+RND加密层。如稍后在下面详细讨论的,这个在后提及的洋葱在以下可以被称为“检索洋葱”(retrieval onion,RET)。
洋葱的每一层被用于SQL查询中的特定目的。如果SQL查询特征在于范围表达式(例如,“<”、“>”),那么需要或OPE层或SRC层。由于这些层驻留在不同洋葱上,故需要在这两个洋葱之间做出选择。
如这里所描述的,引擎被配置为执行算法以便做出这个选择。具体地,以下表格示出了在SQL中的各种查询表达式与适用的洋葱层之间的映射的示例。
再次,稍后详细讨论各种洋葱层的特征和特性。还应当注意,对于一个SQL表达式的可能的层可以位于(situate)不同的洋葱。
根据实施例,该算法可以将上述表格中的信息与关于数据库的状态的信息、以及安全性考虑一起使用,以便选择适当的洋葱和洋葱层用于执行查询。
关于有关数据库状态的信息,这样的信息可以反映出一些层可能已经从洋葱中去除并且不再可用。关于安全性考虑,基于洋葱层的加密方案,这些安全性考虑反映一些洋葱层比其他的洋葱层更加安全。
图3B示出了根据实施例的将要执行的一个示例查询的查询解析。具体地,这个未加密的SQL查询寻求:
SELECT PRODUCTID FROM DEALS WHERE SOLDITEMS>5
图3C示出了这个查询的SQL准备。具体地,这个附图识别了这个未加密的查询的各种分量(component)。对于这个示例,以下洋葱类型被假定:
1:PLN-RND(检索洋葱)
2:PLN-OPE-DET-RND
3:PLN-HOM
4:PLN-SRC
一个明文列被存储在四个不同的加密的列中。这些加密的列中的每一个实现了不同的洋葱类型。
给定上述未加密的SQL查询,实施例能够进行洋葱(和层)选择。
在这个特定示例中,可以看出原始列SOLDITEMS与“大于”表达式(>)一起使用。因此,特征在于OPE->#2的洋葱被选择。这在图3C中由出现在ENC_SOLDITEMS_2的尾部的“2”来指示。
列PRODUCTID只出现在SQL的选择部分。因此,“检索洋葱”(这里#_1)被选择。
虽然这个特定实例供应了简单的、具体的实例,但是应当注意到,算法将被给予更困难情形的任务。这是事实,特别是在其中还考虑了多个其他标准的情况下,如当前数据库状态、安全性、和/或处理效率。再次,稍后将在下面结合图4具体讨论考虑到这样的因素的算法的一个实施例的全面的描述。
图3D示出了HANA更新。具体地,引擎的输出包括一个(或多个)加密的SQL,其中为这些SQL选择了相应的洋葱。
引擎的另一个输出包括被用来更新数据库的SQL集合。这保证了各个选择的洋葱是在所要求的层上。因此,如果为SOLDITEMS选择了洋葱#2(因为OPE层是大于表达式所要求的),洋葱ENC_SOLDITEMS_2必须在其OPE层上。
在实际的加密的SQL被发送到数据库用于执行之前,更新-SQL被发送到数据库以去除RND和DET层。
图3E示出了对数据库执行加密的SQL以产生查询结果。图3F示出了这个查询结果的相应的解密以用于最终显示给用户。
现在提供根据实施例的关于可调整的洋葱加密函数的更多细节。首先,现在描述各种不同的多层的加密方案,其用作在寻求以加密形式处理的数据周围的“洋葱”的基础。
表示利用密钥C(通常用于列)以类型T(例如,保序)对明文x进行加密的密文(加密)。相应的解密是如Dolev-Yao表示法的即,
密钥有时被省略,如果其是单一密钥。所有的密钥初始驻留于客户端。数据库不能访问任何密钥,除非在加密的调整期间被披露,即,“当洋葱剥皮时”。
“标准”类型的洋葱可以包括三种(3)加密类型:保序(OPE)、确定性的(DET)和随机化的(RND)。这种“标准”洋葱看起来像如下所示:
从最里面的明文到最外面的随机化加密来描述这个洋葱的层。这个层的选择不是任意的。
具体地,每个外层都增加了更多的安全性。也就是说,洋葱越好的被保留,以工业强度开始的安全性越好。
每个内层增加了功能性。也就是说,内层允许更多的数据库算子就好像对明文一样起作用。
应当注意到,内层保留了所有外层的功能性。也就是说,内层并不去除任何功能性。
明文层被首先描述。由于至少两个原因,明文x被当作其自己的层。
将明文当作其自己的层的第一个原因是并非每个加密类型都具有明文作为最内层。如以下进一步讨论的,它的一个示例是可搜索的加密。
将明文当作其自己的层的第二个原因是这允许使对明文的访问可配置。如以下进一步讨论的,用户可能希望避免访问明文或者根本不加密某些列。
总之,明文层允许所有查询的处理。然而,其不提供安全性。
现在讨论标准洋葱的保序加密(OPE)层。具体地,OPE保留加密的次序:
密钥被省略,因为相同的密钥被用于相同数据类型的每一列。这允许使用上层的确定性的加密来JOINS。
由于次序被保留,保序加密准许以对明文相同的方式来处理对密文的范围查询。而且,由于保序方案也可以是确定性的,其也可以仍然处理等式匹配和JOINS。
现在讨论标准洋葱的确定性的加密(DET)加密层。具体地,DET对于明文总是产生相同的密文:
确定性的加密是在引入随机化加密之前的标准模式。已经证明只有确定性加密能够允许亚线性(sublinear)搜索。因此,等式匹配和JOINS能够更高效地对确定性地加密的数据执行,即,使用未修改的数据库算子。
确定性的加密仍允许统计型攻击(statistical attack)。然而,由于次序被改序(permute),确定性的加密比保序加密更安全。
最初,不同密钥C被用于每一列。这阻碍了基于等式匹配的JOINS,因为各列被不同地加密。
代理再加密(proxy re-encryption)是用于将密文从密钥A变换为密钥B而无需解密密文或无需知道两个密钥A或密钥B中的任何一个的技术。这种代理再加密被用来在即将执行JOIN运算之前调整加密密钥。
现在讨论标准洋葱的随机化加密(RND)层。具体地,RND已经成为加密的标准模式。
在RND中,随机化参数保证每个密文都是不能区分的(indistinguishable)(即使来自相同的明文)。实施例对于这种RND加密可以使用密码块链接(CBC)模式中的先进加密标准(AES)。
总之,随机化加密是最安全的。然而,除了对客户端的检索以外其不允许运算。
对于刚刚被描述的OPE、DET和RND加密方法的替代,是可获得的。具体地说,洋葱的分层(layering)不必是对所有情况而言都相同的,并且除了这个“标准”洋葱之外,其他加密方案可能是必需的或有用的。现在讨论这样的替代加密方案。
一个替代加密方案是同态的加密。同态的加密允许使用密文的算术运算(最明显的是相加)。
为了支持没有明文的聚合,同态的加密被纳入。某些实施例可以采用Paillier的加密方案,其只允许相加:
DHOM(EHOM(x)·EHOM(y))=x+y
以下用于乘以明文的运算能够被容易地得出
DHOM(EHOM(x)y)=x·y
Paillier的加密方案在选择明文攻击下是不能区分的(作为随机化的加密)。因此,只有单一的密钥是必需的。
而且,Paillier的加密方案是公共密钥的。然而,特定实施例对公共密钥保密,并像秘密密钥加密方案一样对待。
现在注意到在上述(OPE、DET、RND)加密方案和同态的加密之间的一些差别。
首先,与对明文相比,同态的加密要求聚合(求和算子)被不同地处理。相加被相乘取代(实际上是模乘(modular multiplication))。这要求自定义(custom)数据库算子的实施。
与OPE、DET和RND加密的第二个差别在于,对于同态的加密,数据库算子(求和)的结果保持加密。这妨碍了在许多随后的运算(诸如范围查询)中使用这个结果。使用一连串这样的运算的查询需要部分地在客户端对明文执行。
另一个替代的加密方案是可搜索的加密。可搜索的加密允许私钥或密钥持有者(holder)发出(issue)用于查询明文的搜索标记。这个搜索标记能够被用来将用于明文等同(plaintext equality)或范围包含(range inclusion)的密文匹配到查询。
除非标记已经被发出,可搜索的加密像随机化加密一样安全。然而,对于搜索标记,所访问的密文被泄露。
用TSRC(x)表示搜索标记,而MSRC表示匹配运算。
根据实施例,可搜索的加密可以使用用户定义的函数来实施。通过构建索引,搜索时间能够显著地改善。然而,这要求修改数据库,并且因此,实施例可以采用线性搜索。
可搜索的加密不需要是可解密的。根据各种实施例,明文可以用来构造密钥,并且随机数被加密。因此,可搜索的加密可能不用于检索。
可搜索的加密的效率可以显著地低于确定性的加密。因此,可能不期望将可搜索的加密包括为数据库操作的选项。在考虑可搜索的加密之前,可以调用函数来做出这个决定。
除了功能性(如在同态的加密中)和安全性(如在可搜索的加密中)以外,效率也可以作为添加洋葱的理由。
例如,在加密的查询处理期间可能出现的一个瓶颈是在客户端上对结果的解密。因此,使用具有有效解密的特定洋葱可能是更有效率的。实施例可以使用如在随机化加密中一样的CBC模式中的AES,但是直接在明文上使用。
当规定这个洋葱的配置时,必须小心不使用明文用于数据库操作,除非打算如此。这可以通过引入用于检索的自定义层RET来达成。
现在讨论用于多层加密方案(洋葱)的公共配置。如上所述,存在用于加密的不同的替代。
实施例寻求允许用户配置其的用于特定列的洋葱。由于很难预见到所有可能的洋葱配置以及捕获加密方案的所有的语义限制(semantic restrictions),特定的实施例迎合一些公共的洋葱(common onion)配置。
对这些公共的洋葱配置,算法已经被成功地测试。然而,其它配置也是可能的,并且可以正确地工作。
三个选项被预见到。一个选项是用于在云中处理查询。另一个选项是用于强加密(strong encryption)和在客户端上处理查询。第三个选项是用于非安全性。
描述用于在云中处理查询的选项。这个实施例包括四个加密:
O1:[RET]
O2:[RND[DET[OPE]]]
O3:[HOM]
O4:[SRC]
根据某些实施例,这个选项能够通过省略OPE层以及避免对保序加密的解密(同时允许确定性的加密)来扩展。因此,这样的已扩展的选项代表在云中处理所有的查询和在客户端处理所有的查询的下一个选项之间的“中间地带(middle ground)”。
用于强加密的选项,要求所有的处理(除了聚合以外)在客户端被处理。聚合使用同态的加密--其与随机化加密一样安全--来进行。因此,聚合能够被包括而无需牺牲安全性。
O1:[RET]
O2:[HOM]
第三个选项将完全不使用加密。这个方法能够被用于非关键数据(noncritical data),并增加处理的效率。
请注意,不能在云中组合未加密的数据与加密的数据。这是因为查询处理选项不包括可访问的明文。
O1:[PLN]
现在讨论洋葱的选择。具体地,讨论选择用于执行查询的洋葱层(和相应的数据库算子)的算法。
洋葱选择的问题被如下定义。客户端将其查询发出到其数据库驱动器。数据库驱动器截获并分析该查询。
数据库驱动器基于该查询的关系代数(relation algebra)构造初始查询计划。这个计划由数据库算子O的树组成。
数据库算子的集合包括投影(projection)(列选择)、选择(selection)(用于等式(equality)和范围的where条件)、联接(join)(等式和范围)、分组(grouping)、排序(sorting)、聚合(aggregation)(求和)、联合(union)、及其他。
每个数据库算子的输入和输出是表格。每个算子对一个或两个列执行运算。这个运算(例如,等式匹配)的语义可以编码在算子的类型中。
算子被连接到树。根返回查询的结果集合。叶是原始数据库表格(或视图)。
对于每一列,存在可配置的洋葱的集合。这已经在上面描述了。
原始的查询用这个洋葱的密文在已经被转换的虚拟表格上执行。因此,查询需要被重写,以便返回与在原始的表格上的原始查询相同的结果。
因此,洋葱选择问题的定义是选择如下洋葱层:其执行对加密数据的等效运算,该运算与对明文数据的原始查询的一部分等效。
实施例寻求满足以下三个要求:策略配置、替代解决和冲突解决。现在描述这些要求中的每一个。
策略配置要求是指用户控制洋葱选择的能力。典型的策略可以是绝不在云中披露明文或者甚至绝不披露非随机化加密的安全性策略。
这些策略可以经由洋葱的配置间接地实施。对于每一列,用户能够规定洋葱。如果洋葱层(例如,明文)是不可用的,则对于洋葱选择算法该洋葱层不是选项。
除了安全性顾虑以外,洋葱的配置还具有关于效率以及或许还包括关于功能性的暗示。因此,特定洋葱配置必须被小心地选择和测试。
替代解决要求是指对于相应明文的数据库操作的多个洋葱层选项的可用性。典型示例是在WHERE子句(clause)中的等式匹配。
这样的等式匹配可以使用确定性的加密或可搜索的加密来满足。确定性的加密更加有效率;可搜索的加密更加安全。
根据实施例的洋葱选择算法做出选择。这个选择将总是选择最安全的变量(variant)。如果存在相同安全性的多个变量,则最有效率的剩余变量被选择。这个次序是出于加密的目的:为了保证安全性。
而且,这通过允许用户利用洋葱策略配置影响安全性的等级来赋予灵活性。
冲突解决要求是指其中数据库算子由于加密方式而不兼容的情形。一个示例是对聚合数据执行范围查询,例如:
SELECT x FROM t GROUP BY x HAVING SUM(y)>10.
聚合只能使用同态加密来计算,同态加密不能用于在客户端上的范围查询。
要求冲突解决的另一个情形是在使用不同的洋葱配置的列之间的JOINS。因此,用于在云中处理数据的洋葱不能与明文匹配,因为没有明文。
根据实施例的洋葱选择算法需要检测这些类型的情形。而且,根据实施例,算法遵循简单的策略来解决这些冲突。
尽可能多的数据库算子在服务器上执行。当存在冲突时,中间结果表格将被转送到客户端。处理继续在那里对明文进行。同样地,以转送(和解密)附加数据为代价,所有的查询是可执行的。
现在讨论可以用来选择最安全的洋葱层的一个算法的一个特定的示例。
为了对最安全的洋葱层做出选择,对加密层施加(impose)次序。最内层被称为最小(smallest或minimum)层。最外层被称为最大(largest或maximum)层。
设PLN为明文层。
T:RND,HOM,SRC,RET>DET>OPE>PLN
根据实施例的算法根据后面的五个(5)步骤进行。
1)在查询中使用的列的图被构建。
2)对于图的每个节点,能够满足查询的最大层被选择。
3)对于每个被连接的分量,必需的最小层被选择。
4)如果有多个平行(parallel)的洋葱剩余,对于数据库操作最有效率的剩余洋葱被选择。
5)算子树被从叶到根进行扫描。发生第一个冲突时,在客户端上执行上部。
现在详细描述这个示范性算法实施例的这些步骤中的每一个。算法实施例400的这些步骤还示出在图4中。
第一步骤1)402是构建列的图。在查询中使用的每个原始表格列的节点被创建。这样的原始表格列可以包括选择的列,在WHERE或having条件、分组(grouping)或排序(sort)中的列,或者在聚合函数中使用的列。用于聚合的虚拟列不被创建。
对于每个节点,洋葱配置被检索,并且作为结构(structure)被附接到节点。这可以是多个洋葱(如在用于在云中处理加密的查询的配置中)。
洋葱配置被使用,就好像其当前被存储在数据库中一样。也就是说,先前的查询可能已经去除洋葱的层。
在一个或多个条件中使用的列之间,为每个JOIN算子创建边(edge)。得到的图是无向的(undirected),但是只在极少数情况下是连接的。
一个示例是查询:
SELECT t1.x,SUM(t2.y)FROM t1,t2 WHERE t1.i>10 AND t1.i=t2.i GROUP BY t1.x.
这个查询使用列t1.x、t2.y、t1.i和t2.i。在得到的图中,在t1.i和t2.i之间存在边。
示范性算法实施例的第二步骤2)404涉及列的层选择。这个步骤需要迭代遍历(iterate through)树中所有算子。
对于每个算子,洋葱及其相关联的洋葱结构被检索。每个算子具有暗示一个或多个必需的洋葱层的类型(和语义)。示例被提供在以上表格中。
对于加密类型SRC,特定函数被调用以确定对于这个算子该加密类型SRC是否能够被考虑。如果否,则其不被认为是该算子的匹配。
如果这些洋葱层中没有当前能够访问的(因为其被包在另一层中),则洋葱层被连续地去除——仅从最高层开始——直到满足语义要求的层出现为止。
在经过这个步骤2)之后,当没有洋葱层可用于操作时可能出现冲突。如果是,则结构然后被标记为空,作为存在冲突的指示。
假设层去除增强了密文的查询处理功能性。当配置洋葱时需要考虑到这一点。违反这个假定可能导致算法可能失败。
考虑上面的示例查询:
SELECT t1.x,SUM(t2.y)FROM t1,t2 WHERE t1.i>10 AND t1.i=t2.i GROUP BY t1.x
为了简单,假定所有洋葱使用相同的配置用于在云中处理查询。而且,假定迄今为止还没有查询被处理,并且数据库中的状态是初始状态。
第一算子是对t1.x的投影。这能够由RET、RND、DET、OPE、HOM或PLN来满足。在当前洋葱结构中存在多个层,并且不需要修改。
第二算子是在t2.y上聚合。这能够由HOM或PLN来满足。再次,这样的层处于当前洋葱结构中,并且不需要修改。
在替代配置中,可放弃(drop)同态的加密。然后,将有冲突,并且结构将以空结束。
第三算子是在t1.i上的范围查询。这能够由OPE或SRC来满足。
假定根据函数调用的结果可搜索的加密不是选项。然后,在当前洋葱结构中没有这样的层。因此,最上层RND和DET被去除。
第四算子是在等式匹配上的JOIN。这能够由DET、OPE或PLN来满足。
对于t1.i,由于第三算子,这样的OPE层处于当前洋葱结构中,并且不需要进一步的修改。对于t2.i,在当前洋葱结构中没有这样的层。因此,最上层RND被去除。
第五算子是在t1.x上的分组。这也可以由DET、OPE或PLN来满足。在当前洋葱结构中存在多个层,并且不需要修改。
由于第一算子不进行修改,在当前洋葱结构中没有这样的层。因此,最上层RND被去除。
示范性算法实施例的第三步骤3)406涉及被连接的分量选择。这个步骤需要迭代遍历列的图中的每个被连接的分量。
对于被连接的分量中的每个节点,洋葱结构被检索。对于每个洋葱,在所有结构中的最小层被选择。得到的最小洋葱结构被存储在连接的分量的所有节点中。
请注意,确定性的加密(DET)的公共层的最小包括公共密钥的使用。这个公共密钥还被计算,并且执行代理再加密。
如果被连接的分量中的列使用不同的配置,则这里可能遭遇冲突。这样的情况导致放弃,并且让所有的洋葱结构保留原状。这个冲突在算法的步骤5)中被解决。
继续以上示例:
SELECT t1.x,SUM(t2.y)FROM t1,t2 WHERE t1.i>10 AND t1.i=t2.i GROUP BY t1.x.
对于节点t1.x和t2.y,不需要进一步动作,因为这些是单一节点(singlenodes)。对于t1.i,洋葱结构包括OPE,而对于t2.i,洋葱结构包括DET。
全部被设定到OPE。也就是说,全部被设定到最小,并且在保序加密上执行JOIN。
示范性实施例算法的第四步骤4)408涉及替代选择。这个步骤再次需要迭代遍历树中的所有算子。
对于每个算子,在当前洋葱结构中的可用选择中最有效率的洋葱层被选择。算子被用所选择的洋葱层标记。
第二次迭代遍历树中的所有算子,并且所使用的所有洋葱都被标记。如果洋葱的层应当被去除,而不是使用,则该洋葱在其结构中被恢复到其当前状态,即,层去除将不被执行。
在上述示例中,只有一个能够使用多个层的算子:t1.x的投影。这个算子能够使用DET或RET。最有效率的是RET,因此其被使用。
在一些数据库中,在分组和投影(或排序)之间存在语义依赖关系(dependency)。只有相同的列可以在两者中都被使用。也就是说,在上述示例中,在分组算子和投影中t1.x必须是相同的列。
然而,RET和DET层在不同的洋葱中并因此在不同列中。某些实施例使用专用化的(specialized)算子来捕获这个依赖关系。然后,最小算子在RET层上使用,以便返回唯一结果。
示范性算法实施例中的第五步骤5)410涉及本地执行分拆。具体地,在这个最后步骤中,算子树从叶到根进行扫描。
如果遭遇冲突,这个算子的子节点(children)被切断,并且它和父节点(parent)被标记为将在客户端上执行。现在描述冲突的示例。
如果没有洋葱层满足所述操作,则出现一个冲突。能够在“正确”配置中出现的一个类型是利用将被执行的算子在客户端上处理的洋葱。
另一个冲突是其中运算是在聚合函数上,但不是相同的聚合函数。冲突的具体示例是:
SELECT x FROM t GROUP BY x HAVING SUM(y)>10
具有用于在云中进行处理的洋葱配置。另一个冲突示例是在不同的洋葱配置上的JOIN运算。
在上述参考的特定示例中,没有这样的冲突,并且在服务器上执行整个查询。如果将在客户端上执行查询,则以其子节点为根的子树(subtree)被合成(synthesized)到SQL查询中。
然后这些查询被执行。它们的结果被存储在客户端上本地的临时表格中。
临时表格被解密,并且查询的上部被合成。然后这个查询在临时表格上被本地执行。
图5示出了根据实施例的被配置为实施加密的内存列-存储的专用计算机器的硬件。具体地,计算机系统501包括与非瞬时计算机可读存储介质503电子通信的处理器502。这个计算机可读存储介质具有其上存储的对应于引擎的代码504。代码305与包括加密的明文的数据库表格相对应。代码可以被配置为引用存储在非瞬时计算机可读存储介质的数据库中的数据,例如,如可以本地存在的或者在远程数据库服务器中。软件服务器可以一起形成以软件程序编程的计算机系统的群簇或逻辑网络,该计算机系统彼此通信并合作以便处理请求。
在图6中示出了用于实施实施例的示例系统600。计算机系统610包括用于通信信息的总线605或其它通信机制,以及与总线605耦合用于处理信息的处理器601。计算机系统610还包括耦合到总线605用于存储将要由处理器601执行的信息和指令,例如包括用于执行上述技术的信息和指令。这个存储器还可以用于存储变量或在将要由处理器601执行的指令的执行期间的其它中间信息。这个存储器的可能的实施方式可以是、但不限于,随机存取存储器(RAM)、只读存储器(ROM)、或两者。存储设备603还被提供用于存储信息和指令。存储设备的一般形式包括,例如,硬盘、磁盘、光盘、CD-ROM、DVD、闪速存储器、USB存储卡、或任何计算机能够从其读取的其它介质。存储设备603可以包括,例如,源代码、二进制码、或用于执行以上技术的软件文件。存储设备和存储器两者都是计算机可读介质的示例。
计算机系统610可以经由总线605耦合到显示器612,诸如,阴极射线管(CRT)或液晶显示器(LCD),其用于将信息显示给计算机用户。输入设备611,诸如键盘和/或鼠标,被耦合到总线605,其用于从用户向处理器601通信信息和命令选择。这些组件的组合允许用户与系统进行通信。在一些系统中,总线605可以被划分为多个专用化的总线。
计算机系统610还包括与总线605耦合的网络接口604。网络接口604可以提供在计算机系统610和本地网络620之间的两路数据通信。网络接口604,可以是数字订户线(DSL)或调制解调器,其用于通过例如电话线提供数据通信连接。网络接口的另一个示例是局域网(LAN)卡,其用于提供数据通信连接给兼容的LAN。无线链接是另一个示例。在任何这样的实施方式中,网络接口604发送和接收电的、电磁的、或光学的信号,所述信号携载表示各种类型的信息的数字数据流。
计算机系统610能够通过网络接口604,经由局域网620、内联网、或互联网630发送和接收信息,包括消息或其它接口动作。对于局域网,计算机系统610可以与多个其它计算机机器,诸如服务器615,进行通信。因此,计算机系统610和由服务器615代表的服务器计算机系统可以形成云计算网络,其可以以这里描述的过程来编程。在互联网示例中,软件组件或服务可以驻留在多个不同的计算机系统610或跨越网络的服务器631-635上。上述过程可以在例如一个或多个服务器上实施。服务器631可以通过互联网630、局域网620、以及网络接口604,将动作或消息从一个发送到计算机系统610上的组件。上述软件组件和过程可以实施在任何计算机系统上,并且例如通过网络发送和/或接收信息。
总之,实施例可以通过传统方法引入扩展。一个扩展允许用户以几乎任意的指导洋葱选择的方式来配置洋葱。另一个扩展引入本地执行分拆,以便允许否则不能被满足的查询。又另一个扩展允许使用可搜索的加密。
采用扩展的实施例可以使得用于执行查询的多个加密层或无加密层可用。而且,实施例可以通过在客户端上执行所有SQL查询来处理它们。实施例还可以通过使用可搜索的加密替代确定性的或保序加密来提高安全性。
为了降低用户配置错误(misconfiguration)的可能性,实施例可以结合检查洋葱配置的最重要的语义限制的工具来一起使用。这个工具能够检查最一般的问题,并且提供警告以免其不能识别配置。
某些实施例可以在允许加密的数据库中的协作(collaboration)中找到用处。例如,考虑其中许多组织寻求加入入侵检测的情形。每个组织可能希望与某些其他组织共享所选择的事件。仍然,所有数据将在云中被集中存储。
用于如这里所描述的各种实施例的其他可能的应用包括、但不限于,基准管理(benchmarking)和供应链管理。
还应当注意,实施例执行一些最优化。具体地说,如上所述,特定实施例可以首先考虑安全性,然后考虑效率。然而,其它实施例可以调查替代方法,以做出这样的最佳化选择。
以上描述示出了各种实施例以及如何实施实施例的各方面的示例。上述示例和实施例不应该被认为是仅有的实施例,而是被用来示出由以下权利要求定义的本发明的灵活性和优点。基于以上公开和以下的权利要求,其他布置、实施例、实施方式、以及等效配置对于本领域技术人员来说将是清晰的,并且可以被采用,而不会脱离如由权利要求限定的发明的精神和范围。
Claims (20)
1.一种计算机实施的方法,包括:
提供包括加密的明文的数据库;
使得引擎接收包括数据库查询的第一输入,该数据库查询包括表达式;
使得所述引擎接收包括根据第一加密方案加密的明文的第二输入;
使得所述引擎接收包括根据第二加密方案加密的明文的第三输入;以及
使得所述引擎根据算法处理所述表达式、第一加密方案和第二加密方案,以便选择在其上执行所述数据库查询的加密层。
2.如权利要求1所述的计算机实施的方法,其中,该算法包括:
构建在所述数据库查询中使用的列的图;
对于每个图节点,选择能够满足所述数据库查询的最大的加密层;
选择每个被连接的分量所必需的最小的加密层;
选择对于数据库操作最有效率的剩余的加密;以及
从叶到根扫描所述数据库查询的算子树,
其中,所述数据库在服务器上,并且当遇到冲突时,在客户端上执行所述算子树的上部。
3.如权利要求1所述的计算机实施的方法,其中:
所述引擎处理所述表达式以进一步输出将在加密层上执行的、加密的数据库查询;以及
该方法还包括在加密层上执行加密的数据库查询以产生加密的查询结果。
4.如权利要求1所述的计算机实施的方法,其中,所述表达式包括聚合,并且所选择的加密层包括同态加密。
5.如权利要求1所述的计算机实施的方法,其中,所述表达式包括范围限定,并且所选择的加密层包括保序加密。
6.如权利要求1所述的计算机实施的方法,其中,所述表达式包括搜索函数,并且所选择的加密层包括可搜索的加密。
7.如权利要求1所述的计算机实施的方法,其中,所选择的加密层的明文通过保序加密进行初始加密。
8.一种包括用于执行方法的计算机程序的非瞬时计算机可读存储介质,该方法包括:
提供包括加密的明文的数据库;
使得引擎接收包括数据库查询的第一输入,该数据库查询包括表达式;
使得所述引擎接收包括根据第一加密方案加密的明文的第二输入;
使得所述引擎接收包括根据第二加密方案加密的明文的第三输入;以及
使得所述引擎根据算法处理所述表达式、第一加密方案和第二加密方案,以便选择在其上执行所述数据库查询的加密层。
9.如权利要求8所述的非瞬时计算机可读存储介质,其中,该算法包括:
构建在所述数据库查询中使用的列的图;
对于每个图节点,选择能够满足所述数据库查询的最大的加密层;
选择每个被连接的分量所必需的最小的加密层;
选择对于数据库操作最有效率的剩余的加密;以及
从叶到根扫描所述数据库查询的算子树,
其中,所述数据库在服务器上,并且当遇到冲突时,在客户端上执行所述算子树的上部。
10.如权利要求8所述的非瞬时计算机可读存储介质,其中,该方法还包括:
处理所述表达式以进一步输出将在加密层上执行的、加密的数据库查询;以及
在加密层上执行加密的数据库查询以产生加密的查询结果。
11.如权利要求8所述的非瞬时计算机可读存储介质,其中,所述表达式包括聚合,并且所选择的加密层包括同态加密。
12.如权利要求8所述的非瞬时计算机可读存储介质,其中,所述表达式包括范围限定,并且所选择的加密层包括保序加密。
13.如权利要求8所述的非瞬时计算机可读存储介质,其中,所述表达式包括搜索函数,并且所选择的加密层包括可搜索的加密。
14.如权利要求8所述的非瞬时计算机可读存储介质,其中,所选择的加密层的明文通过保序加密进行初始加密。
15.一种计算机系统,包括:
一个或多个处理器;
软件程序,能够在所述计算机系统上执行,该软件程序被配置为:
提供包括加密的明文的数据库;
使得引擎接收包括数据库查询的第一输入,该数据库查询包括表达式;
使得所述引擎接收包括根据第一加密方案加密的明文的第二输入;
使得所述引擎接收包括根据第二加密方案加密的明文的第三输入;以及
使得所述引擎根据算法处理所述表达式、第一加密方案和第二加密方案,以便选择在其上执行所述数据库查询的加密层。
16.如权利要求15所述的计算机系统,其中,该算法包括:
构建在所述数据库查询中使用的列的图;
对于每个图节点,选择能够满足所述数据库查询的最大的加密层;
选择每个被连接的分量所必需的最小的加密层;
选择对于数据库操作最有效率的剩余的加密;以及
从叶到根扫描所述数据库查询的算子树,
其中,所述数据库在服务器上,并且当遇到冲突时,在客户端上执行所述算子树的上部。
17.如权利要求15所述的计算机系统,其中:
所述引擎处理所述表达式以进一步输出将在所述加密层上执行的、加密的数据库查询;以及
该软件程序还被配置为在加密层上执行加密的数据库查询以产生加密的查询结果。
18.如权利要求15所述的计算机系统,其中,所述表达式包括聚合,并且所选择的加密层包括同态加密。
19.如权利要求15所述的计算机系统,其中,所述表达式包括范围限定,并且所选择的加密层包括保序加密。
20.如权利要求15所述的计算机系统,其中,所述表达式包括搜索函数,并且所选择的加密层包括可搜索的加密。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/088,051 | 2013-11-22 | ||
US14/088,051 US9213764B2 (en) | 2013-11-22 | 2013-11-22 | Encrypted in-memory column-store |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104657413A true CN104657413A (zh) | 2015-05-27 |
CN104657413B CN104657413B (zh) | 2019-02-15 |
Family
ID=51625769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410674875.XA Active CN104657413B (zh) | 2013-11-22 | 2014-11-21 | 加密的内存列存储 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9213764B2 (zh) |
EP (1) | EP2876573B1 (zh) |
CN (1) | CN104657413B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254425A (zh) * | 2016-07-22 | 2016-12-21 | 北京京东尚科信息技术有限公司 | 用于移动设备向云端传送数据的方法及系统、移动终端 |
CN107070848A (zh) * | 2015-10-09 | 2017-08-18 | Sap欧洲公司 | 为分析性web应用加密数据 |
CN107851123A (zh) * | 2015-07-29 | 2018-03-27 | 甲骨文国际公司 | 在存储器中虚拟列单元内具体化表达式以加速分析查询 |
CN108170726A (zh) * | 2015-10-21 | 2018-06-15 | 华为技术有限公司 | 数据查询方法和装置 |
JP2019523909A (ja) * | 2017-05-09 | 2019-08-29 | 深▲せん▼市全同態科技有限公司 | 完全準同型暗号化の暗号化テキストのクエリメソッド及びシステム |
CN111639349A (zh) * | 2020-05-14 | 2020-09-08 | 瀚高基础软件股份有限公司 | 一种数据加密处理方法、装置和存储介质 |
CN111797425A (zh) * | 2019-04-02 | 2020-10-20 | Sap欧洲公司 | 利用字典编码的安全数据库 |
CN112699383A (zh) * | 2019-10-22 | 2021-04-23 | 英飞凌科技股份有限公司 | 数据密码设备、存储器系统及其操作方法 |
CN112800475A (zh) * | 2021-03-24 | 2021-05-14 | 国网上海市电力公司 | 数据加密方法、装置、电子设备及介质 |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10430406B2 (en) * | 2012-08-13 | 2019-10-01 | Aria Solutions, Inc. | Enhanced high performance real-time relational database system and methods for using same |
KR102219476B1 (ko) * | 2014-05-14 | 2021-02-24 | 삼성전자주식회사 | 데이터를 암호화하는 방법 및 그를 위한 장치 |
US9608810B1 (en) | 2015-02-05 | 2017-03-28 | Ionic Security Inc. | Systems and methods for encryption and provision of information security using platform services |
JP7020780B2 (ja) * | 2015-02-09 | 2022-02-16 | 日本電気株式会社 | サーバ装置、データ検索システム、検索方法および検索プログラム |
US10560440B2 (en) | 2015-03-12 | 2020-02-11 | Fornetix Llc | Server-client PKI for applied key management system and process |
US10630686B2 (en) | 2015-03-12 | 2020-04-21 | Fornetix Llc | Systems and methods for organizing devices in a policy hierarchy |
US10965459B2 (en) | 2015-03-13 | 2021-03-30 | Fornetix Llc | Server-client key escrow for applied key management system and process |
US9729525B1 (en) * | 2015-06-29 | 2017-08-08 | EMC IP Holding Company LLC | Secure data analytics |
US9894042B2 (en) * | 2015-07-24 | 2018-02-13 | Skyhigh Networks, Inc. | Searchable encryption enabling encrypted search based on document type |
US10581812B2 (en) * | 2015-12-01 | 2020-03-03 | Duality Technologies, Inc. | Device, system and method for fast and secure proxy re-encryption |
US10503730B1 (en) | 2015-12-28 | 2019-12-10 | Ionic Security Inc. | Systems and methods for cryptographically-secure queries using filters generated by multiple parties |
US10740474B1 (en) | 2015-12-28 | 2020-08-11 | Ionic Security Inc. | Systems and methods for generation of secure indexes for cryptographically-secure queries |
US10880281B2 (en) | 2016-02-26 | 2020-12-29 | Fornetix Llc | Structure of policies for evaluating key attributes of encryption keys |
US10917239B2 (en) | 2016-02-26 | 2021-02-09 | Fornetix Llc | Policy-enabled encryption keys having ephemeral policies |
US10931653B2 (en) | 2016-02-26 | 2021-02-23 | Fornetix Llc | System and method for hierarchy manipulation in an encryption key management system |
US11063980B2 (en) | 2016-02-26 | 2021-07-13 | Fornetix Llc | System and method for associating encryption key management policy with device activity |
US10348485B2 (en) * | 2016-02-26 | 2019-07-09 | Fornetix Llc | Linking encryption key management with granular policy |
US10860086B2 (en) | 2016-02-26 | 2020-12-08 | Fornetix Llc | Policy-enabled encryption keys having complex logical operations |
US10554384B2 (en) | 2016-03-17 | 2020-02-04 | Microsoft Technology Licensing, Llc | Aggregation of encrypted data |
US10055602B2 (en) | 2016-04-19 | 2018-08-21 | International Business Machines Corporation | Securely processing range predicates on cloud databases |
US10581603B2 (en) | 2016-05-06 | 2020-03-03 | ZeroDB, Inc. | Method and system for secure delegated access to encrypted data in big data computing clusters |
US10574440B2 (en) | 2016-05-06 | 2020-02-25 | ZeroDB, Inc. | High-performance access management and data protection for distributed messaging applications |
US10210266B2 (en) | 2016-05-25 | 2019-02-19 | Microsoft Technology Licensing, Llc | Database query processing on encrypted data |
US10187199B2 (en) | 2016-09-09 | 2019-01-22 | Microsoft Technology Licensing, Llc | Aggregation based on splayed data |
US10746567B1 (en) | 2019-03-22 | 2020-08-18 | Sap Se | Privacy preserving smart metering |
US11631117B2 (en) * | 2019-05-10 | 2023-04-18 | Sap Se | Method, system, and non-transitory computer readable storage device for a pooling requirement while preserving privacy |
US20230128699A1 (en) * | 2021-10-25 | 2023-04-27 | Oracle International Corporation | Length-Preserving Encryption for Database Tables |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040255133A1 (en) * | 2003-06-11 | 2004-12-16 | Lei Chon Hei | Method and apparatus for encrypting database columns |
CN101136985A (zh) * | 2006-08-29 | 2008-03-05 | 富士施乐株式会社 | 信息处理装置和方法、计算机可读介质及计算机数据信号 |
CN101582881A (zh) * | 2008-05-14 | 2009-11-18 | 华为技术有限公司 | 访问控制方法和装置 |
US20120159180A1 (en) * | 2010-12-17 | 2012-06-21 | Microsoft Corporation | Server-side Encrypted Pattern Matching |
US20130191650A1 (en) * | 2012-01-25 | 2013-07-25 | Massachusetts Institute Of Technology | Methods and apparatus for securing a database |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6915290B2 (en) * | 2001-12-11 | 2005-07-05 | International Business Machines Corporation | Database query optimization apparatus and method that represents queries as graphs |
US7797342B2 (en) * | 2004-09-03 | 2010-09-14 | Sybase, Inc. | Database system providing encrypted column support for applications |
US8515058B1 (en) * | 2009-11-10 | 2013-08-20 | The Board Of Trustees Of The Leland Stanford Junior University | Bootstrappable homomorphic encryption method, computer program and apparatus |
-
2013
- 2013-11-22 US US14/088,051 patent/US9213764B2/en active Active
-
2014
- 2014-09-22 EP EP14003274.9A patent/EP2876573B1/en active Active
- 2014-11-21 CN CN201410674875.XA patent/CN104657413B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040255133A1 (en) * | 2003-06-11 | 2004-12-16 | Lei Chon Hei | Method and apparatus for encrypting database columns |
CN1761923A (zh) * | 2003-06-11 | 2006-04-19 | 甲骨文国际公司 | 加密数据库列的方法和设备 |
CN101136985A (zh) * | 2006-08-29 | 2008-03-05 | 富士施乐株式会社 | 信息处理装置和方法、计算机可读介质及计算机数据信号 |
CN101582881A (zh) * | 2008-05-14 | 2009-11-18 | 华为技术有限公司 | 访问控制方法和装置 |
US20120159180A1 (en) * | 2010-12-17 | 2012-06-21 | Microsoft Corporation | Server-side Encrypted Pattern Matching |
US20130191650A1 (en) * | 2012-01-25 | 2013-07-25 | Massachusetts Institute Of Technology | Methods and apparatus for securing a database |
Non-Patent Citations (3)
Title |
---|
RALUCA ADA POPA 等: "CryptDB:protecting confidentiality with encrypted query processing", 《SOSA"11 PROCEEDINGS OF THE TWENTY-THIRD ACM SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES》 * |
朱鲁华 等: "数据库加密系统的设计与实现", 《计算机工程》 * |
林子雨 等: "云数据库研究", 《软件学报》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107851123A (zh) * | 2015-07-29 | 2018-03-27 | 甲骨文国际公司 | 在存储器中虚拟列单元内具体化表达式以加速分析查询 |
CN107851123B (zh) * | 2015-07-29 | 2021-10-15 | 甲骨文国际公司 | 在存储器中虚拟列单元内具体化表达式以加速分析查询 |
CN107070848B (zh) * | 2015-10-09 | 2021-03-16 | Sap欧洲公司 | 为分析性web应用加密数据 |
CN107070848A (zh) * | 2015-10-09 | 2017-08-18 | Sap欧洲公司 | 为分析性web应用加密数据 |
CN108170726A (zh) * | 2015-10-21 | 2018-06-15 | 华为技术有限公司 | 数据查询方法和装置 |
CN106254425A (zh) * | 2016-07-22 | 2016-12-21 | 北京京东尚科信息技术有限公司 | 用于移动设备向云端传送数据的方法及系统、移动终端 |
JP2019523909A (ja) * | 2017-05-09 | 2019-08-29 | 深▲せん▼市全同態科技有限公司 | 完全準同型暗号化の暗号化テキストのクエリメソッド及びシステム |
CN111797425A (zh) * | 2019-04-02 | 2020-10-20 | Sap欧洲公司 | 利用字典编码的安全数据库 |
CN111797425B (zh) * | 2019-04-02 | 2024-04-19 | Sap欧洲公司 | 利用字典编码的安全数据库 |
CN112699383A (zh) * | 2019-10-22 | 2021-04-23 | 英飞凌科技股份有限公司 | 数据密码设备、存储器系统及其操作方法 |
CN112699383B (zh) * | 2019-10-22 | 2023-11-14 | 英飞凌科技股份有限公司 | 数据密码设备、存储器系统及其操作方法 |
CN111639349A (zh) * | 2020-05-14 | 2020-09-08 | 瀚高基础软件股份有限公司 | 一种数据加密处理方法、装置和存储介质 |
CN111639349B (zh) * | 2020-05-14 | 2022-09-06 | 瀚高基础软件股份有限公司 | 一种数据加密处理方法、装置和存储介质 |
CN112800475A (zh) * | 2021-03-24 | 2021-05-14 | 国网上海市电力公司 | 数据加密方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104657413B (zh) | 2019-02-15 |
US20150149427A1 (en) | 2015-05-28 |
US9213764B2 (en) | 2015-12-15 |
EP2876573B1 (en) | 2016-11-16 |
EP2876573A1 (en) | 2015-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104657413A (zh) | 加密的内存列存储 | |
US9349023B2 (en) | Database encryption system, method, and program | |
Popa et al. | CryptDB: A practical encrypted relational DBMS | |
JP6048414B2 (ja) | データベース装置と方法及びプログラム | |
CN108628867A (zh) | 面向云存储的多关键词密文检索方法和系统 | |
JP2019500645A (ja) | 暗号プロトコルを用いたsqlベースのデータベースの保護 | |
CN108701198A (zh) | 合取sql语句的可搜索加密 | |
CN106682069A (zh) | 用户可控的数据检索方法及数据存储方法、终端、系统 | |
US11849026B2 (en) | Database integration with an external key management system | |
CN106326666A (zh) | 一种健康档案信息管理服务系统 | |
Handa et al. | A cluster based multi-keyword search on outsourced encrypted cloud data | |
CN113127927B (zh) | 一种许可链数据共享及监管的属性重构加密方法及系统 | |
Kabir et al. | A dynamic searchable encryption scheme for secure cloud server operation reserving multi-keyword ranked search | |
Krishna et al. | Dynamic cluster based privacy-preserving multi-keyword search over encrypted cloud data | |
Dhumal et al. | Confidentiality-conserving multi-keyword ranked search above encrypted cloud data | |
CN106874379B (zh) | 一种面向密文云存储的多维区间检索方法与系统 | |
WO2018080857A1 (en) | Systems and methods for creating, storing, and analyzing secure data | |
Feng et al. | Transparent ciphertext retrieval system supporting integration of encrypted heterogeneous database in cloud-assisted IoT | |
KR102248756B1 (ko) | 순방향 안정성을 갖는 탐색 가능한 암호화 시스템과 그 장치 및 방법 | |
ThandaiahPrabu et al. | An efficient and secured multiple keyword cloud data searching scheme with dynamic encryption procedure | |
CN115455463A (zh) | 一种基于同态加密的隐匿sql查询方法 | |
Sun et al. | Research of data security model in cloud computing platform for SMEs | |
Rhazlane et al. | Intelligent multi agent system based solution for data protection in the cloud | |
Handa et al. | An efficient cluster-based multi-keyword search on encrypted cloud data | |
Buchade et al. | A study on searchable encryption schemes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |