CN107683481A - 使用延迟求值计算加密数据 - Google Patents
使用延迟求值计算加密数据 Download PDFInfo
- Publication number
- CN107683481A CN107683481A CN201680032389.5A CN201680032389A CN107683481A CN 107683481 A CN107683481 A CN 107683481A CN 201680032389 A CN201680032389 A CN 201680032389A CN 107683481 A CN107683481 A CN 107683481A
- Authority
- CN
- China
- Prior art keywords
- data
- evaluation
- inquiry
- encryption
- expression formula
- 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
- 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
-
- 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/602—Providing cryptographic facilities or services
-
- 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
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
提供了用于处理查询的方法、系统、装置和计算机程序产品。数据服务器包括查询处理器,其被配置成从数据库应用接收查询,该查询由数据库应用从请求者接收。该查询针对被存储在数据服务器处的数据。该查询处理器包括延迟求值确定器和延迟表达式确定器。该延迟求值确定器被配置成分析查询,并且如果预先确定的因素被满足,则由数据库应用指定用于延迟求值的查询的至少一部分,诸如包括对加密数据执行的在数据服务器处未被支持的操作的查询。该延迟表达式确定器被配置成确定用于在数据库应用处对至少一部分的查询进行求值的表达式求值信息。查询处理器向数据库应用提供加密数据和表达式求值信息以进行求值。
Description
背景技术
根据多种存储配置和实现方式,数据可以被本地或远程存储。比如,云计算是与部署远程服务器和软件网络有关的最新发展,该远程服务器和软件网络提供集中式数据存储以及对资源和服务(被称为“云服务”)的在线访问。云服务器集合可能托管用于单个用户(“租户”)或多个相关或不相关用户(“多租户”系统)的资源/服务。类似地,数据可以由实体“现场”存储,并且可以在该现场数据存储装置中由该实体访问。
随着越来越多的数据被数字地存储,数据泄露越来越受到关注。例如,为了管理敏感的业务关键信息的应用而采用云和其他服务,数据泄露可能是其主要威慑。在公共云上,应用必须防范潜在的恶意云管理员、恶意共同租户以及可以通过各种合法手段获得对数据的访问的其他实体。由于计算和存储平台本身不能被信任,所以以明文(未被加密的数据)出现在云平台上(盘上、存储器中、在线路上等)的任何地方的任何数据必须被认为容易受到泄漏或恶意破坏。在诸如金融、银行和医疗保健之类的垂直行业中,合规要求对这些类型的威胁采取强有力的保护措施。
因而,在一些情况下,数据库服务器可以存储加密数据,但出于安全性原因无法访问加密密钥。这保证存储在数据库中的任何数据都被加密,直到它传递到在受保护环境中运行的客户端应用(例如,由客户端实体管理的中间应用)。为了解决对加密数据的操作查询,数据库服务器可以使用同态加密方案。这种加密方案允许直接对加密数据执行操作,而不需要加密密钥。例如,可以根据a和b的加密值(E(a)和E(b))直接计算两个值a和b的加密和,而不知道它们的个体的值。然而,同态加密方案耗费非常高,即,对同态加密值执行操作可能比对未被加密的数据执行操作慢几个数量级。被称为部分同态加密(PHE)方案的另一加密方案集合准许对加密数据进行有限的操作集合。这些方案相对较快,但在其所准许的操作种类上受到限制。由于这些安全性要求和加密数据计算约束,所以难以实现安全有效地操作对数据库的查询。
发明内容
提供本发明内容以简化形式介绍下文在具体实施方式中将进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。
提供了用于处理查询的方法、系统、装置和计算机程序产品。数据服务器包括查询处理器,其被配置成从数据库应用接收来自数据库应用查询,该查询由数据库应用从请求者处接受。该查询针对存储在数据服务器处的数据集合。数据服务器中的查询处理器包括延迟求值确定器和延迟表达式确定器。该延迟求值确定器被配置成分析查询,并且如果满足预先确定的因素,则由数据库应用指定用于延迟求值的查询的至少一部分,诸如包括对加密数据执行在数据服务器处不被支持的操作的查询。该延迟表达式确定器被配置成确定用于在数据库应用处的求值查询或其部分的表达式求值信息。查询处理器向数据库应用提供加密数据和表达式求值信息以进行求值。数据库应用向请求者提供查询结果。
下文参照附图,对本发明的其他特征和优点以及本发明的各种实施例的结构和操作进行详细描述。应当指出,本发明不限于本文中所描述的特定实施例。这些实施例在本文中仅为了说明的目的给出。基于本文中所包含的教导,附加实施例对于相关领域的技术人员而言是明显的。
附图说明
被并入本文中并且形成说明书的一部分的附图图示了本申请的实施例,并且与说明书一起用于解释实施例的原理,并且使得相关领域技术人员能够制作并且使用实施例。
图1示出了根据示例实施例的数据库应用系统处理用户查询的通信系统的框图。
图2示出了根据示例实施例的提供包括对从数据服务器延迟到数据库应用的查询求值在内的、在数据库应用中用于处理用户查询的过程的流程图。
图3示出了根据示例实施例的包含被配置成包括对从数据服务器延迟到数据库客户端的查询求值在内的、操作用户查询的数据库客户端的数据库应用的框图。
图4示出了根据示例实施例的在数据库应用中提供用于从用于解密查询数据的数据服务器取回数据加密密钥的过程的流程图。
图5示出了根据示例实施例的提供包括将查询的求值延迟回数据库应用在内的、在数据服务器中用于处理用户查询的过程的流程图。
图6示出了根据示例实施例的包含被配置成包括将查询延迟回数据库应用以进行求值在内的、处理用户查询的查询处理器的数据服务器的框图。
图7示出了根据示例实施例的在查询处理器中提供用于指定用于延迟求值的查询的过程的流程图。
图8示出了根据示例实施例的在查询处理器中提供用于标识可以被延迟到数据库应用以进行求值的查询中的表达式的过程的流程图。
图9示出了根据示例实施例的在查询处理器中提供用于分析用于阻止延迟求值的准则的查询的表达式的过程的流程图。
图10示出了根据示例实施例的在数据服务器中提供用于服务由数据库应用针对数据加密密钥的请求的流程图。
图11示出了可以用于实现实施例的示例计算设备的框图。
从下文结合附图所阐述的具体实施方式中,本发明的特征和优点将变得更加明显,其中相同的附图标记自始至终标识对应的元件。在附图中,相同的附图标记通常指示相同的、在功能上相似的、和/或在结构上相似的元件。元件首次出现的附图由对应附图标记中最左边的数字指示。
具体实施方式
I.介绍
本说明书和附图公开了体现本发明的特征的一个或多个实施例。本发明的范围不限于所公开的实施例。所公开的实施例仅仅例示本发明,并且所公开的实施例的修改版本也被涵盖在本发明中。本发明的实施例由所附权利要求限定。
说明书中对“一个实施例”、“一实施例”、“一示例实施例”等的引用指示了所描述的实施例可以包括具体特征、结构或特性,但是每个实施例不一定包括该具体特征、结构或特性。而且,这样的短语不一定是指相同的实施例。进一步地,当结合实施例描述具体特征、结构或特性时,应当认为无论是否明确地加以描述,结合其他实施例来实现这种特征、结构或特性均在本领域技术人员的知识范围之内。
许多示例性实施例描述如下。应当指出,本文中所提供的任何章节/子章节的标题不旨在是限制性的。在整个本文档中对实施例进行了描述,并且任何类型的实施例可以被包括在任何章节/子章节中。此外,在任何章节/子章节中公开的实施例可以以任何方式与在同一章节/子章节和/或不同章节/子章节中描述的任何其他实施例组合。
II.延迟对查询的求值的示例实施例
本文中所描述的实施例涉及使用加密来保护被托管在不可信平台上的数据。虽然许多常规加密方案保留数据机密性,但是这种加密方案通常不准许不可信平台对加密数据运行任何计算。这显著降低了在云平台上托管应用的益处。
例如,数据服务器(例如,数据库服务器)可以使用同态加密方案、部分同态加密(PHE)方案、安全硬件和/或其他计算的安全形式来处理一些加密数据,因为数据服务器不能被视为“可信”,因此无法访问用于加密数据的加密密钥。同态加密方案允许直接对加密数据执行操作,而无需加密密钥。PHE方案准许在没有加密密钥的情况下,直接对加密数据执行受限类别的操作,但并非所有操作。
然而,同态加密方案耗费非常高,潜在地比对未加密数据执行操作慢几个数量级。PHE方案可能比同态加密方案更快,但是在它们准许的操作类型上受到限制。由于这些安全性要求和加密数据计算约束,所以难以实现以安全并且有效的方式操作对数据库的查询。
根据实施例,查询处理系统被配置成用于延迟(也被称为“惰性”)对从请求者接收的查询求值。延迟求值允许不可信服务器对加密数据执行任意操作,而无需加密密钥。实现延迟求值的数据服务器延迟对其输入是加密值的表达式的求值。当数据服务器被询问产生针对查询的延迟表达式的值(例如,当它正在堆两列之和求值时),数据服务器将该表达式传送到可信客户端(例如,数据库应用)。可信客户端可以访问加密密钥,其允许可信客户端解密与查询相关联的值,求值表达式,并且将结果以明文形式返回给请求者。
应当指出,实施例可以以任何组合在数据库服务器、客户端或中间层上实现。可以在数据服务器(例如,如图1和图6所示)或客户端上执行查询是否可被延迟的确定,以及如果确定可以被延迟,如何简化和执行查询(例如,生成指令、表达式树等)。为了在客户端做出这种确定,附加处理逻辑位于客户端上(例如,将延迟求值确定器和延迟表达式确定器放置在客户端上)。然而,这使得客户端变“胖”,并且这样的处理逻辑将被放置在每个客户端上,而不是将处理逻辑放置在数据服务器上。类似地,一旦查询被执行,就可以在数据服务器或客户端上执行数据的实际解密、表达式的求值以及向客户端提供正确结果(例如,如图1和图3所示)。如果在数据服务器上执行,则数据服务器被约束无法访问未被加密的密钥和数据。
使用延迟求值来在客户端和数据服务器之间划分计算的示例优点是它准许指示哪些数据被加密(例如,SQL中的哪些列被加密)的元数据中的“瘦”客户端可以与数据服务器集中存储。数据服务器还可以存储数据加密密钥(可以使用主密钥加密)。客户端可以根据需要从数据服务器取回数据加密密钥,使用主密钥对其进行解密,使用数据加密密钥解密数据,并且对表达式求值。在实施例中,数据服务器还可以通过使用诸如部分求值和存储(缓存(“存储”)先前延迟求值的结果,以使下一次根据相同数据对相同的表达式求值时,数据服务器不必去可信客户端进行求值)之类的优化来提高性能。
在实施例中,诸如关于SQL数据服务器和SQL客户端(诸如ADO.NET),数据服务器和客户端可以用以下修改进行配置:
数据服务器端:(A)数据服务器可以配置有用于标识加密输入的机制。比如,可以使用新数据类型(例如,SQL中的加密varbinary或.NET中的加密<T>)连同类型系统或静态分析,以检查该类型是否正确使用。
(B)可以实现语言原语(诸如算术运算符、字符串函数(诸如LTRIM、RTRIM、REPLACE)),其检查输入中的任一输入的类型是否被加密,并且延迟求值(例如,通过生成新加密值,其对必须被计算的表达式进行编码以获得实际值)。延迟求值的结果可以被编码为所加密的类型的值,其使得表达式的组合成为可能。比如,示例查询如下所示:
SELECT REPLACE(e.FirstName,‘.’,”)FROM Employee e。
如果e.FirstName被加密,则表达式的结果是值为e.FirstName、常量为‘.’和‘’,以及函数名称为(REPLACE)的表达式。
(C)由于对对加密数据执行操作的限制,可以使用机制来确定在数据服务器上不能被求值而可以被惰性求值的表达式。可以将这种表达式的求值委托给可信客户端。应当指出,在一些实施例中,条件表达式和具有副作用的表达式(诸如SQL中的DML语句)不会被惰性求值。
(D)可以使用机构来确定哪些表达式可以有利地被惰性求值。延迟求值可以与广大类别的表达式一起使用。例如,在SQL中,延迟求值可以与过滤、连接、聚合等一起使用。然而,与这种表达式一起使用延迟求值可能会导致性能显著下降,因为表达式的所有输入必须被传送到客户端并且从该客户端传送,根据客户端和服务器之间的链路的性质,其可能增加事务等待时间/减少吞吐量。因此,延迟求值可以被配置成有选择地使用。
客户端:库可以被配置成解析延迟表达式,调用密码接口(例如,CryptoAPI)来解密在表达式树的叶子处的加密值,对表达式的其余部分求值,并且向客户端返回结果。
实施例可以在各种环境中实现。比如,图1示出了根据示例实施例的其中查询处理系统处理用户查询的通信系统的框图。如图1所示,通信系统100包括由第一网络110耦合在一起的数据库应用系统102、第一用户设备108a和第二用户设备108b。数据库应用系统102被配置成以安全并且有效的方式处理从用户设备108a和108b接收的查询。数据库应用系统102可以以一个或多个计算设备的形式来实现。数据库应用系统102包括由第二网络118耦合在一起的数据服务器104和数据库应用106。数据服务器104包括查询处理器112,数据库应用106包括数据库客户端114。第一用户设备108a包括应用116a,而第二用户设备108b包括应用116b。系统100进一步描述如下。
第一用户设备108a和第二用户设备108b各自可以是任何类型的固定或移动计算设备,包括移动计算机或移动计算设备(例如,设备、个人数字助理(PDA)、膝上型电脑、笔记本电脑、诸如Apple iPad TM之类的平板电脑、上网本等)、移动电话(例如,手机、诸如Microsoft电话之类的智能手机、Apple iPhone、实现AndroidTM操作系统的电话、设备、设备等)、可穿戴式计算设备(例如,智能手表、包括诸如GlassTM之类的智能眼镜的头戴式设备等)、个人导航助理、相机或其他类型的移动设备(例如,汽车)或诸如台式电脑或PC(个人电脑)之类的固定计算设备。尽管图1中示出了一对用户设备,但是在其他实施例中,系统100中可能存在其他数目个用户设备,包括个位数中的一个或其他数字,十位数、百位数、千位数中的数字,甚至更大数目个用户设备。
数据服务器104和数据库应用106各自包括被配置为服务器设备的一个或多个计算设备。在一个实施例中,数据服务器104和数据库应用106被包括在一个或多个计算设备的不同集合中,并且在另一实施例中,数据服务器104和数据库应用106被包括在一个或多个计算设备的共同集合中。数据库应用106可以是客户端或中间层数据库应用,数据服务器104可以是针对客户端的数据库服务器。在实施例中,数据服务器104可以服务任何数目个数据库应用106。
数据服务器104、数据库应用106、第一用户设备108a和第二用户设备108b中的每个可以包括至少一个网络接口,其使得能够通过网络110和118中的一个或两个进行通信。这样的网络接口可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE 802.11无线LAN(WLAN)无线接口,全球微波接入互操作性(Wi-MAX)接口,以太网接口,通用串行总线(USB)接口,蜂窝网络接口,蓝牙TM接口,近场通信(NFC)接口等。网络接口的进一步示例在本文的其他部分进行描述。网络110和118的示例包括局域网(LAN),广域网(WAN),个人区域网(PAN),和/或诸如因特网之类的通信网络的组合。当数据服务器104和数据库应用106被包括在相同的计算设备中时,网络118可以不存在。
在实施例中,第一用户设备108a和第二用户设备108b(请求者)中的一个用户设备可以向数据库应用系统102发出查询。该查询可以由与在用户设备上执行的应用交互的人/用户/客户发布而引起,或者由在用户设备上执行的应用自动发布。比如,分别在用户设备108a和108b处的应用116a和116b可以由用户与其交互,以引起查询被提交和/或可以自动使得查询被提交。因此,应用116a和116b以及用户设备108a和108b各自可以被认为是一种请求者。应用116a和116b的示例包括浏览器(例如,导航到由数据库应用106提供的网站),移动app或桌面app,数据库访问应用以及能够向查询处理系统提交查询的任何其他类型的应用。
在图1中,示例查询128由第一用户设备108a处的应用116a提交给数据库应用系统102。查询128可以包括SQL(结构化查询语言)查询或由数据服务器104管理的数据库的其他类型的查询。查询128通过网络110传送以由数据库应用系统102的数据库应用106接收。数据库应用106被认为是关于查询的可信实体。例如,在一个实施例中,数据库应用106可以由银行(或其他服务提供商)管理,并且可以提供用于从银行(或其他服务提供商)的客户接收查询的前端。因此,查询128可以包括被用户/请求者认为敏感的数据和/或可以被配置成访问数据服务器104处的被认为是敏感的数据。这样的数据可以在数据库应用106处以明文(未加密)表示。比如,查询128可以是银行的客户访问他/她的账户数据的请求。查询128可以包括针对客户的标识信息,诸如他们的银行帐号(在银行的情境中),他们的社会保险号码等。数据库客户端114处理查询128,并且在数据服务器104处操作与查询处理器112的交互以对查询128进行处理。例如,数据库客户端114可以包括由Microsoft Corporation发布的ADO.NET客户端库或数据库应用106处的数据库接口的其他实例。数据服务器104不被认为是关于查询128的可信实体。例如,在一个实施例中,数据服务器104可以由与数据库应用106的所有者无关的基于云的存储提供商或存储数据库应用106的用户/客户的数据的其他实体来管理,但是对于数据,不被信任。如此,存储在数据服务器104处的至少一些数据被加密,使得数据可能不会在数据服务器104处受损。在一个示例中,数据服务器104可以包括由华盛顿州雷德蒙德市的Microsoft发布的SQL的实例,或者可以包括备选数据库服务器机构的实例(例如,由加利福尼亚州Redwood市的Oracle Corporation发布的Oracle数据库等)。
因而,在实施例中,数据库客户端114可以加密被包括在查询128中的数据(例如,常数),并且向查询处理器112传送(通过网络118,当存在时)包括加密数据值的查询128的版本以用于求值。因此,具有加密数据值的查询128的版本不会在数据服务器104处公开敏感信息。比如,查询128可以包括个人的社会保险号码(SSN)。在该示例中,数据库客户端114处理查询128以包括加密形式的SSN,而非实际的SSN,从而保护SSN在数据服务器104处不被公开。
查询处理器112分析所接收的查询以确定该查询是否可以用加密数据值在数据服务器104处进行处理。换句话说,在当前示例中,查询处理器112确定查询128是否可以用所加密的SSN的值在数据服务器104处进行处理。如果查询处理器112从查询的分析中确定查询可以用加密数据在数据服务器104处进行处理,则查询处理器112对查询求值以确定查询结果,该查询结果然后被提供给数据库客户端114。如果查询处理器112从查询的分析中确定查询不能用加密数据在数据服务器处进行处理(例如,由于对加密数据的未被支持的操作等),则查询处理器112生成表达式求值信息(例如,用于求值一个或多个表达式的指令;包括加密数据值作为叶子的表达式树,其中查询的操作位于树的分支/分支的交叉处中;等等)。查询处理器112(通过网络118,当存在时)向数据库客户端114传送查询信息,其提供表达式求值信息,其中任何数据由数据服务器104取回以用于查询。数据库客户端114可以对包含在查询信息中的加密数据进行解密,并且对表达式求值信息求值以生成查询结果。通过查询处理器112(数据服务器104处)将对查询的求值的这种延迟延迟到数据库客户端114(可信数据库应用106处)被称为“延迟求值”。
由查询处理器104或数据库客户端114生成的查询结果可以通过网络110由数据库客户端114(从数据库应用106)作为查询结果130传送到第一用户设备108a。
应当指出,在实施例中,如果数据库客户端114不能访问用于加密(查询128的)数据或解密(来自查询处理器112的查询响应的)数据的数据加密密钥,则数据库客户端114可以从数据服务器104请求加密密钥。数据服务器104可以存储加密密钥,但是以加密形式存储,以使加密密钥在数据服务器104处不能被使用以损害查询数据和/或数据库数据。应当指出,在系统100中,存储在数据服务器104处的列中的加密数据以及加密/解密密钥在数据服务器104上从未以明文出现。数据服务器104可以根据请求或自动地向数据库客户端114传送加密的加密密钥(例如,与查询结果一起)。数据库客户端114可以使用在数据库应用106处维护的主加密密钥来解密加密的加密/解密密钥,并且根据需要使用加密密钥来加密(例如,查询128的)数据和/或解密(例如,查询响应中的)数据。
因而,数据库应用系统102使得能够对查询进行安全和有效的操作。可以以加密形式在数据服务器104处维护数据。数据库客户端114(数据库应用102处)接收到的查询可以由数据库客户端114对其数据进行加密,然后可以与加密的数据一起被提供以用于由查询处理器112求值,从而避免在数据服务器104处公开查询的实际数据。如果查询处理器112不能根据加密数据处理查询,则查询处理器112基于无法被处理的查询的部分来生成表达式求值信息,该表达式求值信息与任何被取回的数据库数据一起被提供给数据库客户端114。数据库客户端114解密与表达式求值信息一起被接收的任何加密数据,并且对表达式求值信息求值以生成查询结果。以这种方式,数据没有以未加密形式在数据服务器104处公开(除非具体数据的公开是允许的),从提供高水平的数据安全性。
在实施例中,图1的数据库应用系统102可以以各种方式进行配置,并且可以以各种方式操作,以实现这种延迟求值。下一章节(第II.A章节)提供了用于在数据库应用端处操作所接收的查询的示例实施例,随后是提供用于在数据库服务器端处理查询的示例实施例的章节(章节II.B)。这些章节之后是描述示例性计算设备实施例的章节(章节III)和提供附加实施例的章节(章节IV)。
A.延迟求值的示例数据库应用端实施例
在实施例中,数据库应用106和数据库客户端114可以以各种方式进行配置,以使用延迟求值来操作所接收的查询。比如,图2示出了根据示例实施例的在数据库应用中提供用于处理用户查询以维护数据安全性的过程的流程图200。图1的数据库客户端114在实施例中可以根据流程图200操作。出于说明的目的,下文关于图3对流程图200进行描述。图3示出了根据示例实施例的、包含被配置成包括对从数据服务器递回到数据库客户端302的查询进行求值以供延迟求值在内的、操作用户查询的数据库客户端302的数据库应用300的框图。数据库应用300是数据库应用106的示例,而数据库客户端302是图1的数据库客户端114的示例。如图3所示,数据库应用300包括数据库客户端302、网络接口312和密钥存储器314。数据库客户端302包括表达式求值器304、解密器306、加密器308和数据服务器接口310。数据库应用300、数据库客户端302和流程图200被描述如下。
图2的流程图200 2从步骤202开始。在步骤202中,接收来自请求者的查询。例如,参考图3,数据库应用300的网络接口312可以接收查询128(例如,从图1中的第一用户设备108a),并且可以转发查询128以由加密器308接收。网络接口312是与网络(例如,图1的网络110)的通信接口,并且在本文其它部分提供了网络接口的其他示例和描述。
查询128是请求者期望对由数据服务器(例如,图1的数据服务器104)管理的数据(例如,数据库中的)执行的查询。查询128可以包括对在数据服务器处的数据中被访问的一个或多个变量和/或查询参数值的一个或多个操作。这样的操作可以被定义为对列数据执行、在查询的谓词(指定要被求值的条件)中执行等。
比如,在SQL(结构化查询语言)查询中,声明“Select”语句可以用于表示查询。查询128可以在“Select”语句之后列出一个或多个数据库表列以出现在查询结果中。可以指示对列执行操作(例如,“column_1+column_2”等)。“From”子句可以指示要从中取回数据的一个或多个表。“Where”子句包含比较谓词,其约束由查询返回的行。如相关领域的技术人员所知道的,许多其他类型的子句类型可以存在于查询128中。
例如,基于示例SSN(社会保险号码)的查询如下所示:
SELECT FirstName,LastName,Base_Salary+Annual_Bonus FROM EmployeesWHERE SSN=12345678
根据该示例,查询结果将包括来自“FirstName”和“LastName”列的数据以及“Base_Salary”和“Annual_Bonus”列的求和(对“Base_Salary”和“Annual_Bonus”列执行逐行加操作以生成求和结果)。“From”子句指示所指示的列选自被存储在由数据服务器管理的数据库中的“Employees”表。“Where”字句提供约束,指示来自所指示的表的所指示的列的数据选自在“SSN”列中的值等于“12345678”的一行或多行。
应当指出,在步骤202中,如果存在被包括在查询128中的数据,则加密器308可以被配置成加密数据。比如,加密器308可以访问存储在应用300处的元数据,可以针对这种元数据与数据服务器通信,或者可以以另一方式确定加密方案和由加密器308使用的加密密钥以加密查询128的对应数据(例如,具体参数值、常数和/或其他类型的数据)。如图3所示,加密器308生成查询320,其包含具有加密数据的查询128的内容。
在实施例中,如相关领域的技术人员将会知道的,加密器308可以被配置成实现一种或多种类型的加密方案,以将明文数据加密成密文。这种加密方案可以包括公有和/或私有密钥加密方案、同态加密方案(允许对密文执行计算/操作)、部分同态加密方案(允许对密文执行计算/操作的特定集合)、确定性加密方案(对于相同的明文和密钥总是产生相同的密文)、概率性加密方案(特定明文可以加密到在加密过程期间随机选择的可能密文集合中的任一个可能密文)、和/或其他类型的加密方案。
如图3所示,密钥存储器314包括主密钥316、第一密钥318a、第二密钥318b和任何附加数目个加密密钥。在一些情况下,用于加密查询128的数据的加密密钥可以存在于密钥存储装置314中。因此,加密器308可以访问密钥存储装置314中的加密密钥,并且使用加密密钥来加密数据。在另一实施例中,加密器308不能访问数据库应用300处的加密密钥。因而,加密器308可以被配置成从诸如数据服务器之类的另一来源请求加密密钥。在实施例中,数据服务器可以以加密形式存储可以被提供给数据库应用300处的加密器308的一个或多个加密密钥。如此,在实施例中,加密器308可以向数据服务器传送用于加密密钥的请求(例如,通过数据服务器接口310),可以从数据服务器接收加密密钥,并且可以使用加密密钥来加密数据。下文关于图4对用于通过解密器306请求解密密钥的类似过程进行进一步描述。
在一个说明性示例中,对于上文所提及的基于示例SSN的查询,加密器308可以访问指示SSN参数值应该用加密密钥Y根据加密方案X来进行加密的元数据。因而,加密器308可以生成查询320以包括基于SSN的查询的内容,其中参数值“12345678”使用加密密钥Y根据加密方案X来进行加密。在这样的示例中,参数值“12345678”可以通过加密器308加密得到为“!@#&HF%%”的加密值。因而,查询320可以将基于SSN的查询表达为:
SELECT FirstName,LastName,Base_Salary+Annual_Bonus FROM EmployeesWHERE SSN=!@#&HF%%
参考流程图200(图2),操作从步骤202进行到步骤204。
在步骤204中,将查询提供给数据服务器。例如,如图3所示,数据服务器接口310可以接收具有加密数据的查询320。数据服务器接口310被配置为用于与一个或多个数据服务器(以及可选地,与其他实体)进行通信的通信接口。在一些实施例中,数据服务器接口310可以不需要存在。数据服务器接口310被配置成向数据服务器(例如,通过图1的网络118)提供(例如,发送)具有加密数据的查询320。
在实施例中,数据服务器被配置成分析具有加密数据的查询320,以确定查询128是否可以在数据服务器处在加密数据上进行求值(例如,如果查询320包括在数据服务器处未被支持的、对加密数据的操作)。在图2的流程图200的示例中,假设数据服务器确定查询320包括对加密数据的至少一个未被支持的操作,因此数据服务器不能完全对查询320求值。如此,操作从步骤204进行到步骤206。
在步骤206中,从数据服务器接收用于查询的所取回的加密数据以及表示查询的表达式求值信息。例如,如图3所示,数据服务器接口310可以接收延迟表达式信息322,并且可以将延迟表达式信息322转发到表达式求值器304。在实施例中,延迟表达式信息322包括由数据服务器从查询320确定的表达式求值信息。此外,延迟表达式信息322包括从用于查询320的数据服务器处的数据库取回的加密数据。表达式求值信息指示要由数据库客户端302对所接收的加密数据执行的、以对查询128求值的一个或多个操作。表达式求值信息可以具有任何合适的形式,包括一个或多个表达式树、指令、程序代码、可执行文件或对象等的形式。
因而,除了表达式求值信息之外,延迟表达式信息322还可以包括从一个或多个指定表取回的一个或多个行/列值、由对所取回的数据执行的一个或多个操作确定的一个或多个值等。延迟表达式信息322可以包括加密结果(例如,加密列等),其中加密数据从表取回和/或从对加密值执行的操作生成。操作从步骤206进行到步骤208。
在步骤208中,用所取回的加密数据对表达式求值信息求值以生成查询的结果。在实施例中,针对同样在延迟表达式信息322中接收的加密数据,对延迟表达式信息322中接收的表达式求值信息进行求值。解密器306可以直接或从表达式求值器304接收延迟表达式信息322,并且可以解密加密数据以生成解密数据324。表达式求值器304被配置成根据解密数据324对表达式求值信息求值以生成查询结果130。解密器306和表达式求值器304的这些操作的示例性细节描述如下。
在实施例中,如相关领域的技术人员将会知道的,解密器306可以被配置成实现一种或多种类型的解密方案以将密文解密为明文。比如,解密器306可以实现解密方案来解密根据本文中别处提及的或以其他方式已知的加密方案中的任一加密方案加密的数据。应当指出,在实施例中,解密器306和加密器308可以被包括在相同的功能块中。
比如,对于上述基于示例SSN的查询,延迟表达式信息322可以指示用于其中所包括的任何加密数据的解密方案和密钥,诸如如下:
对于加密的FirstName数据
使用解密方案W
使用解密密钥Z
在该示例中,解密器306可以使用具有解密密钥Z的解密方案W来解密FirstName数据(例如,包含雇员名字的数据列)(应当指出,在一些情况下,相同的数据加密密钥值可以被用于相关的加密和解密方案)。在为了说明的目的而提供的一个示例中,使用具有加密密钥Z的解密方案W,可以通过解密器306对所接收的加密值“(&*^87&DF”进行解密,以生成“Samuel”的解密值。
在一些情况下,在延迟表达式信息322中指示的解密密钥可以存在于密钥存储装置314中。因此,解密器306可以访问密钥存储装置314中的解密密钥,并且如由延迟表达式信息322指引的,使用解密密钥解密一个或多个参数。可替代地,延迟表达式信息322可以包括用于解密查询结果的一个或多个解密密钥。因此,解密器306可以使用与延迟表达式信息322一起接收的解密密钥来按照指引解密一个或多个数据值。
在又一实施例中,解密器306可能无法访问数据库应用300处的解密密钥,该解密密钥被用于加密数据的延迟表达式信息322所指示。因而,解密器306可以被配置成从诸如数据服务器之类的另一来源请求解密密钥。在实施例中,数据服务器可以以加密形式存储一个或多个解密密钥,其可以在数据库应用300处被提供给解密器306。
比如,在实施例中,解密器306可以根据图4进行操作。图4示出了根据示例实施例的在数据库应用中提供用于从数据服务器取回用于解密查询结果数据的数据加密密钥的过程的流程图400。流程图400描述如下。
流程图400从步骤402开始。在步骤402中,确定所取回的加密数据以使用在数据库应用处不可获取的加密密钥进行加密。在实施例中,如上文所描述的,结果处理器324可以根据指定解密方案和密钥访问解密器306以解密延迟表达式信息322的加密数据。解密器306可以确定解密密钥不可获取,诸如基于不能从密钥存储装置314或其他位置取回解密密钥,基于在延迟表达式信息322中未能提供解密密钥等。
在步骤404中,向数据服务器提供针对被配置成解密所取回的加密数据的数据解密密钥的请求。在实施例中,解密器306可以生成由数据服务器接口310提供给数据服务器的密钥请求326。密钥请求326是对在数据库应用300处无法取回的解密密钥的请求。
在步骤406中,接收数据解密密钥的加密版本。在实施例中,如图3所示,数据服务器接口310可以响应于密钥请求326而从数据服务器接收解密密钥328的加密版本,并且可以向解密器306提供解密密钥328的加密版本。
在步骤408中,数据解密密钥的加密版本使用在数据库应用处可获取的主密钥进行解密。在实施例中,解密器306可以使用主密钥316来解密加密版本的解密密钥328。解密器306可以可选地将解密密钥328的解密(或加密)版本存储在密钥存储装置314中以备后续使用。
在步骤410中,使用数据加密密钥对所取回的加密数据进行解密,以生成解密数据。在实施例中,解密器306可以使用解密密钥328的解密版本来解密根据指定解密方案从数据服务器接收的加密数据。因而,解密器306可以将所解密的数据作为解密数据324提供给表达式求值器304。
此外,表达式求值器304可以被配置成以各种方式对表达式求值信息求值。比如,在实施例中,表达式求值器304可以以与常规查询处理引擎可能对所接收的查询求值的相似的方式,来对表达式求值信息的一个或多个表达式树求值。可替代地,表达式求值器304可以执行表达式求值信息(例如,当以程序代码或可执行文件/对象的形式时),可以被配置成遵循在延迟表达式信息322中提供的指令来对表达式求值信息求值,或者可以以另一方式对表达式求值信息求值。在表达式求值信息中表达的操作是对解密数据324的任何所指示的列和/或参数值上执行的,以生成查询结果。
在表达式树实施例中,表达式求值器304可以被配置成从叶子(数据值)向内迭代表达式树,从而在其输入数据值被得知之后执行表达式树中的每个操作,以这种方式通过树的每个表达式/级别进行工作,直到生成查询结果为止。在另一实施例中,表达式求值信息可以指示用于查询的求值步骤的列表,并且可以指示用于求值步骤的顺序(由数据服务器确定)。因而,在这样的实施例中,表达式求值器304可以通过求值步骤的列表进行工作,针对每个步骤的表达式求值,并且以指示的顺序执行求值步骤,直到生成查询结果为止。
如此,表达式求值器304接收延迟表达式信息322。解密器306解密延迟表达式信息322的任何加密数据,表达式求值器304对所包含的表达式求值信息求值以生成查询结果130。表达式求值器304可以以任何所需的方式格式化查询结果130。
返回参考图2中的流程图200,操作从步骤208进行到步骤210。
在步骤210中,向请求者提供结果。如图3所示,网络接口312从表达式求值器304接收查询结果130,并且向请求者(例如,通过网络110,向图1的第一用户设备108a处的应用116a)传送查询结果130。以这种方式,以安全和有效的方式操作用户查询128,其中任何敏感数据在数据服务器(不可信实体)处是被加密的(密文),而在数据库应用300(可信实体)处能够是明文。流程图200的操作可以在步骤210之后结束。
B.用于延迟求值的示例数据服务器端实施例
在实施例中,可以以各种方式配置数据服务器104和查询处理器112,以使用延迟求值来操作所接收的查询。比如,图5示出了根据示例实施例的在数据服务器中提供用于将查询的求值延迟到数据库应用的过程的流程图500。查询处理器112可以根据实施例中的流程图500来操作。出于说明的目的,下文参照图6对流程图500进行描述。图6示出了根据示例实施例的包含被配置成与数据库应用进行通信以处理用户查询的查询处理器602的数据服务器600的框图。数据服务器600是数据服务器104的示例,而查询处理器602是图1的查询处理器112的示例。如图6所示,数据服务器600包括查询处理器602、存储装置604、数据库应用接口606和密钥接口608。查询处理器602包括延迟求值确定器610和延迟表达式确定器612。存储器604存储数据库614、密钥存储装置616和元数据620。数据服务器600、查询处理器602和流程图500被描述如下。应当指出,流程图500的步骤不一定必须以图5所示的顺序发生,但可能以其他顺序发生。
图5的流程图500从步骤502开始。在步骤502中,从数据库应用接收到查询,该查询已经由数据库应用从用户接收。例如,如图6所示,数据服务器600的数据库应用接口606可以接收查询320(例如,从图1中的数据库应用106或图3的数据库应用300),并且可以转发将要由查询处理器602的延迟求值确定器610和延迟表达式确定器612接收的查询320。如上文所描述的,查询320包含具有加密数据的查询128的内容。数据库应用接口606被配置为用于与一个或多个数据库应用(以及可选地与其他实体)进行通信的通信接口。在一些实施例中,数据库应用接口606可能不需要存在。操作从步骤502进行到步骤504。
应当指出,如所描述的,在将查询128作为具有加密数据的查询320传送之前,数据库应用可以访问用于加密查询128的数据的加密密钥。可替代地,如上文关于图3的加密器308所描述的,数据库应用可以向数据服务器600传送请求以请求一个或多个数据加密密钥用于加密查询128的数据。在这样的实施例中,图6中的密钥接口608可以(经由数据应用接口606)接收密钥请求、可以从密钥存储装置616取回数据加密密钥、并且可以向数据应用(经由数据应用接口606)传送所取回的密钥。然后,数据库应用可以使用所接收的数据加密密钥将查询128的数据加密成查询320。应当指出,所接收的数据加密密钥可以被加密,因此在使用之前,数据库应用可以在数据库应用处使用主密钥对经加密的数据加密密钥进行解密。
在步骤504中,取回数据集合以对查询求值,该数据集合包括加密数据。在实施例中,延迟表达式确定器612被配置成从数据库614取回查询320中引用的任何数据。比如,如查询320中所标识的,延迟表达式确定器612可以取回一个或多个数据值、一个或多个整个表列、和/或一个或多个整个表。
比如,对于上述基于示例SSN的查询,延迟表达式确定器612可以取回与加密的社会保险号码!@#&HF%%相对应的Employees表的FirstName列、LastName列、Base_Salary列和Annual_Bonus列中的数据值。从这些列中的每一列的Employees表中取回的数据值可以根据相同或不同的加密方案进行加密。
在流程图500的步骤506中,由于至少一个预先确定的因素,该查询由数据库应用而非数据服务器被指定用于延迟求值。在实施例中,延迟求值确定器610被配置成分析查询320以确定查询320是否可以由查询处理器602求值。在实施例中,分析可以指示查询处理器602出于一个或多个原因(预先确定的因素)而不能对查询320求值。比如,在实施例中,因为查询320包括对查询处理器602不支持的对加密数据的操作,所以查询处理器602可能不能对查询320求值。如果查询128可以根据加密数据值进行求值,则查询处理器602可以以常规或其他方式对查询128求值,并且流程图500的操作可以停止。在这种情况下,查询处理器602可以将查询320的结果返回到数据库应用,以返回给请求者。然而,如果延迟求值确定器610确定不能根据加密数据值对查询320求值,则延迟求值确定器610被配置成指定用于延迟求值的查询320。在这种情况下,流程图500的操作在步骤508处继续。
因而,在实施例中,延迟求值确定器610可以分析查询320以确定是否可以根据加密数据值对查询320求值。该分析可以以各种方式执行。例如,在实施例中,延迟求值确定器610可以根据图7做出该确定。图7示出了根据示例实施例的在查询处理器中提供用于指定用于延迟求值的查询的过程的流程图700。流程图700描述如下。
在流程图700的步骤702中,确定由查询引用的数据集合是否包括加密数据。在实施例中,延迟求值确定器610被配置成确定由查询320引用的数据是否包括加密数据。延迟求值确定器610可以以各种方式做出该确定。比如,在实施例中,延迟求值确定器610可以访问元数据620。元数据620包括指示数据库614中的哪些数据(例如,哪些列)被加密的元数据(描述数据的数据),对于每个数据(例如,对于每一列)的特定加密方案是什么,以及用于每个数据的加密密钥是什么。延迟求值确定器610可以使用元数据620来确定由查询320引用的数据集合是否被加密,并且如果是,是通过什么加密方案来加密数据集合的。比如,对于由查询320引用的数据库614中的一个或多个加密列,延迟求值确定器610可以检查元数据620以确定用于该(些)列的加密方案。如果由查询320引用的数据集合未被加密,则查询处理器602可以以常规或其他方式求值查询128。如果由查询320引用的数据集合包括加密数据,则操作从步骤702进行到步骤704。
在步骤704中,确定查询是否包括对加密数据的、在数据服务器处未被支持的操作。在实施例中,延迟求值确定器610被配置成当根据它们的具体加密方案进行加密时,确定是否可以对所引用的数据(例如,个体数据值、数据列等)执行在查询320中被表达的操作(如果有的话)。
在实施例中,对于可能存在于查询320中的每种类型的操作(例如,加法、减法、乘法、除法等),维护何种类型的加密输入可以由操作所操作的记录(如果有的话)。比如,延迟求值确定器610可以存储操作表或其他数据结构,其指示可以对作为输入的什么类型的加密数据执行哪些操作(如果有的话),或者可以使用另一技术来维护可以对什么类型的加密数据执行哪些操作的记录。这样的数据结构可以被存储在存储装置604中,或别处。
在实施例中,这样的表可以包括关于以下类型的加密方案(和/或备选或其他加密方案)中的一个或多个加密方案的信息:“随机加密”,其中不能对加密数据执行操作(除了存储和取回加密数据);“确定性加密”,其中只能对加密数据执行等式操作(可以执行存储和取回来自存储装置的加密数据);以及“加法加密”,其中可以对加密数据执行整型(INTEGER)加法(可以执行存储和取回来自存储装置的加密数据)。
在实施例中,查询320可以由延迟求值确定器610(或延迟表达式确定器612)转换成表达式树的形式,或者可以已经以此形式从数据库应用接收。在表达式树表示中,每个参数值或其他类型的变量可以被设置为向内分支的树的“叶子”,并且表达式/操作可以在树的分支的交叉处。树的每个表达式接收参数值、变量和/或先前求值的表达式的解中的一个或多个作为输入值,并且生成表达式解作为输出。因此,延迟求值确定器610可以开始求值叶子处的表达式树,并且可以向内遍历以分析每个表达式/操作的输入,直到确定针对表达式树的最终结果为止。如果延迟求值确定器610确定表达式/操作接收被加密的输入值,并且已知(例如,根据参考上文所提及的操作表等)具体表达式/操作不能根据该具体类型的加密(或完全不能根据加密数据)进行求值,针对该表达式/操作的分析失败,并且指定用于延迟求值的查询320的具体表达式/操作。查询320的附加表达式/操作可以类似地被指定用于延迟求值。如果表达式树中的所有操作被确定为能够根据它们的输入进行求值,即使在其输入被加密的情况下,可以以常规或其他方式由查询处理器602根据加密数据对查询320求值。
应当指出,在一些情况下,可以确定不能在数据服务器处进行求值并且不能在客户端处进行求值的查询320的一个或多个表达式/操作。在这种情况下,延迟求值确定器610可以生成用于查询320的失败报告(其可以提供给请求者),并且查询320的处理可以结束。
出于说明的目的,下文重复上述基于示例SSN的查询:
SELECT FirstName,LastName,Base_Salary+Annual_Bonus FROM EmployeesWHERE SSN=!@#&HF%%
在实施例中,延迟求值确定器610可以根据以下动作来评估该示例查询是否要被指定用于延迟求值:
(a)确定由查询引用的哪些数据被加密。在该示例中,通过检查元数据620,延迟求值确定器610可以确定Base_Salary和Annual_Bonus的类型为INT(整型),SSN的类型为CHAR(字符),SSN根据确定性加密方案X在数据库614中被加密,Base_Salary和Annual_Bonus根据随机加密方案Y被加密。
(b)确认使用支持等式(=)操作的加密方案来加密数据库614中的SSN列。从查询中标识/推断SSN列。可以通过检查用于SSN的加密方案的元数据620来执行确认,该用于SSN的加密方案在该示例中是确定性加密方案X。确定性加密方案确实支持等式,因此对于SSN列没有出现故障(随机加密方案不支持等式,因为并不总是生成相同的加密结果,所以如果用于SSN的加密方案已经是随机方案,则这个检查就会失败)。
(c)确认使用支持加法运算的加密方案来加密数据库614中的Base_Salary列和Annual_Bonus列。这可以通过检查用于Base_Salary和Annual_Bonus的加密方案的元数据620来执行,该用于Base_Salary和Annual_Bonus的加密方案在本示例中是随机加密方案Y。在该示例中,随机方案Y不支持加法运算,因此,相对于Base_Salary列和Annual_Bonus列,故障出现。
因而,因为存在对加密数据的至少一个未被支持的操作,所以该基于示例SSN的查询不能由查询处理器603根据加密数据进行求值。如此,延迟求值确定器610被配置成由数据库应用指定用于延迟求值的查询。
当由延迟求值确定器610将查询320指定为用于延迟求值时,操作从步骤506进行到步骤508(图5)。
在步骤508中,确定用于在数据库应用处对查询的至少一部分求值的表达式求值信息。在实施例中,当查询320被指定用于延迟求值时,延迟表达式确定器612被配置成确定用于在数据库应用处对查询320求值的表达式求值信息。在实施例中,表达式求值信息指示以下一项或两项:(a)用于在数据服务器处为查询取回并且被提供给数据库应用的加密数据的一个或多个加密方案和加密密钥;以及(b)要由数据库应用执行以对查询求值的一个或多个操作。表达式求值信息可以具有任何合适的形式,包括一个或多个表达树、指令、程序代码、可执行文件或对象等的形式。当表达式求值信息具有多个表达树的形式时,多个树可以彼此独立,或者它们之间具有需要或不需要特定执行顺序的依赖关系。例如,延迟表达式确定器612可以将要由客户端求值的IF语句的条件作为第一表达式树提供,并且可以将IF和ELSE部分内部的表达式/语句作为一个或多个其他表达式树提供,使得IF条件的表达式树首先由客户端求值,随后可以对IF或ELSE子句表达式树进行求值。
可以以各种方式在表达式求值信息中定义要由数据库应用执行的操作,包括依照用于要由数据库应用执行的查询的一个或多个求值步骤(操作),以及其中求值步骤要由数据库应用执行的顺序。可以指令数据库应用执行查询320的所有操作。可替代地,在一些其他情况下,可以在数据服务器处对查询的一部分(例如,与对加密数据的未被支持的操作无关)求值,并且指令数据库应用执行查询的剩余部分(与对加密数据的未被支持的操作有关)。
延迟表达式确定器612可以被配置成以各种方式生成表达式求值信息。比如,图8示出了根据示例实施例的在查询处理器中提供用于标识可以被延迟到数据库应用来求值的查询中的表达式的过程的流程图800。在实施例中,延迟表达式确定器612可以根据流程图800进行操作。流程图800被描述如下。
流程图800从步骤802开始。在步骤802中,查询被转换成包括关于多个变量的多个表达式的抽象语法树(AST)。在实施例中,延迟表达式确定器612将查询320的分量转换成抽象语法树(AST)表示。根据AST表示,查询320的每个参数值或其他类型的变量可以被设置为向内分支的树的“叶子”,并且表达式/操作可以在树的分支的交叉处。树的每个表达式接收参数值、变量和/或先前求值的表达式的解中的一个或多个作为输入值,并且生成表达式解作为输出。
在步骤804中,AST中的每个表达式的延迟标志被设置为真值。在实施例中,延迟表达式确定器612将延迟求值标志(在一个示例中,标志“IsDeferred”)与每个AST中的每个表达式相关联。每个延迟求值标志指示与其相关联的表达式是否可以由数据库服务器延迟到客户端。最初,分析假设所有表达式都可以被延迟到客户端,其通过为所有表达式将延迟求值标志的值设置为真值(例如,“真”)来指示。
在步骤806中,执行迭代过程,其包括:(a)分析AST中每个表达式的、阻止表达式的延迟求值的至少一个准则;(b)针对满足该至少一个准则的AST中每个表达式,将延迟标志设置为假;(c)针对具有延迟标志被设置为假的父表达式的、AST中的每个表达式,将延迟标志设置为假;以及(d)更新必须被及早求值的变量集合。
因此,在实施例中,延迟表达式确定器612被配置成执行至少一次迭代过程。该迭代过程包括(a)至(d),其被描述如下:
(a)分析AST中每个表达式的、阻止表达式的延迟求值的至少一个准则。在实施例中,延迟表达式确定器612可以分析针对查询320生成的AST中的每个表达式,以确定表达式的求值是否可以被延迟到数据库应用。延迟表达式确定器612可以分析阻止每个表达式的延迟求值的任何数目个类型的这种准则的AST。
例如,在(a)的实施例中,延迟表达式确定器612可以根据图9进行操作。图9示出了根据示例实施例的在查询处理器中提供用于分析用于阻止延迟求值的准则的查询表达式的处理的流程图900。在实施例中,延迟表达式确定器612可以被配置成执行流程图900中的步骤中的任一个或多个步骤和/或可以分析用于阻止延迟求值的其他或备选类型的准则的表达式。流程图900描述如下。
在步骤902中,确定表达式是否具有副作用。在实施例中,延迟表达式确定器612分析每个表达式的副作用。“副作用”意味着该表达式包括导致对数据库614的数据的改变的插入语句、删除语句、更新语句和/或其他语句。
在步骤904中,确定表达式是否被认为耗费太高而不能被推送到数据库应用。在实施例中,延迟表达式确定器612分析每个表达式以确定表达式是否被认为耗费太高而不能被推送到客户端。例如,延迟表达式确定器612可以维护被预先确定(例如,由数据库管理员、开发人员和IT管理员等)为耗费高的操作的操作/表达式列表,诸如可能由于在将要执行的客户端处需要附加资源而导致性能不佳的操作(例如,高延迟时间)。可能被预先确定为耗费高的表达式/操作的示例包括过滤、连接、排序等。倾向于不被认为是耗费高的表达式/操作的示例包括标量操作(例如,加法、减法、乘法、除法等)。
在步骤906中,确定表达式是否包括控制流语句。在实施例中,延迟表达式确定器612分析每个表达式以确定表达式是否是控制流语句,诸如“if”语句、“while”语句或其他类型的条件语句。
在步骤908中,确定表达式是否指派到必须被及早求值的变量。在实施例中,延迟表达式确定器612分析每个表达式以确定表达式是否指派到必须被及早求值的变量,从而意味着变量的求值不能被延迟。
应当指出,出于说明的目的而提供了流程图900,并且在备选实施例中,步骤902,904和906中的任一个或多个步骤可以用作准则以确定对查询320中的对应操作/表达式的延迟求值是否被阻止。
(b)针对满足准则的AST中每个表达式,将延迟标志设置为假。在实施例中,延迟表达式确定器612被配置成对于查询320的任何表达式,针对上文在(a)中确定的准则中的任一个或多个准则,将延迟求值标志设置为假值。在图9的流程图900的示例中,这包括将以下表达式的延迟求值标志设置为假值:具有副作用的(步骤902),被认为耗费太高而不能被推送到客户端的(步骤904)、作为控制流语句的(步骤906);和/或指派到必须被及早求值的变量的(步骤908)。
(c)针对具有被设置为假的延迟标志的父表达式的、AST中的每个表达式,将延迟标志设置为假。在实施例中,延迟表达式确定器612被配置成将延迟求值标志的值从每个父表达式传播到AST中的每个子表达式。如果表达式的父表达式不能进行延迟求值,那么子表达式也不能进行延迟求值。因此,该传播涉及将延迟求值标志的值从具有值为假的延迟求值标志的父表达式传播到具有值为真的延迟求值标志的子表达式。应当指出,这种传播是单调的,因为一旦延迟求值标志针对表达式被设置为假值(要么通过从父表达式的传播,要么因为表达式本身不能进行延迟求值,如上文在(a)至(b)中所确定的),那么它永远不能被重新设置为真值。
(d)更新必须及早被求值的变量集合。在实施例中,延迟表达式确定器612被配置成基于(a)至(c)的结果来更新必须被及早求值的变量集合。如果作为(a)至(c)的结果发现用于及早求值的任何附加变量,则附加变量被添加到该集合中。
在步骤808中,重复迭代过程,直到没有其他变量必须被及早求值。在实施例中,在(d)的上一次操作中所设置的、必须被及早求值的变量集合由延迟表达式确定器612进行分析。如果延迟表达式确定器612确定必须被及早求值的至少一个新变量在(d)的前一次迭代期间被发现,则延迟表达式确定器612执行步骤806的另一迭代。然而,如果延迟表达式确定器612确定必须被及早求值的新变量在(d)的前一次迭代期间没有被发现,延迟求值分析结束,并且流程图800的操作停止。
流程图800的结果包括用于查询320的AST中每个表达式的延迟求值标志的值。具有被设置为真的延迟标志的查询320的AST的每个表达式/操作可以在数据库应用处求值(延迟求值)。具有被设置为假的延迟标志的查询320的AST的每个表达式/操作不能在数据库应用处进行求值,而是由查询处理器602进行求值。
因而,延迟表达式确定器612生成延迟表达式信息322以指示查询320的AST的至少一部分,并且包括从数据库614取回的用于查询320的数据。所提供的AST指示要由数据库应用对所取回的数据执行的一个或多个表达式/操作,该所取回的数据包括加密数据。在实施例中,查询处理器602可以对AST的一个或多个表达式(其不能被延迟)求值,并且在所提供的AST中包括求值结果。延迟表达式确定器612还可以指示用于执行所提供的AST的表达式/操作的次序(例如,从具有已知输入值的操作/表达式(例如,在AST的叶子处)开始,并且向内工作(例如,遍历AST的分支)作为后续操作/表达式的输入被确定)。
返回参考图5,在步骤510中,至少将加密数据和表达式求值信息提供给数据库应用以在数据库应用处进行求值。例如,如图6所示,延迟表达式确定器612生成延迟表达式信息322,其包括所生成的表达式求值信息(例如,AST、指令等)以及从数据库614取回的用于查询的加密数据集合。向数据库应用接口606提供延迟表达式信息322,其向数据库应用传送延迟表达式信息322。如上文进一步所描述的(例如,图2的步骤208),数据库应用可以用加密数据集合来对表达式求值信息求值以生成查询结果130。
在实施例中,延迟表达式确定器612可以在延迟表达式信息322中指示用于解密加密数据的一个或多个解密密钥。以这种方式,数据库应用可以在对表达式求值信息求值(例如,图2的步骤208)之前,对加密的延迟表达式信息322的任何部分进行解密,以生成被提供给请求者的查询结果130(例如,图2的步骤210)。
如上文所描述的,数据库应用可以访问用于解密查询结果的解密密钥。在另一实施例中,延迟表达式确定器612可以包括延迟表达式信息322中的解密密钥的副本。在再一实施例中,数据库应用可能必须从数据服务器600请求数据解密密钥的副本。
比如,图10示出了根据示例实施例的在数据服务器中提供用于服务由数据库应用提出的数据加密密钥的请求的过程的流程图1000。流程图1000描述如下。
流程图1000从步骤1002开始。在步骤1002中,从数据库应用接收针对被配置成解密加密数据的数据加密密钥的请求。数据库应用可以生成密钥请求326,该密钥请求326由数据库应用接口606接收并且转发到密钥接口608。密钥请求326是针对在数据库应用处无法取回的解密密钥的请求。
在步骤1004中,从包含使用至少一个主密钥加密的数据加密密钥的密钥存储装置取回数据加密密钥的加密版本。响应于密钥请求326,密钥接口608可以从密钥存储装置616取回在密钥请求326中指定的一个或多个数据解密密钥,其包括解密密钥328。
在步骤1006中,将数据加密密钥的加密版本提供给数据库应用。在实施例中,如图6所示,密钥接口608可以向数据库应用接口606提供解密密钥328(其被加密),该数据库应用接口606向数据库应用提供解密密钥328。数据库应用可以使用主密钥对解密密钥328进行解密,并且可以使用解密密钥来解密被包括在延迟表达式信息322中的数据。
III.示例移动和固定设备实施例
数据库应用系统102、数据服务器104、数据库应用106、第一用户设备108a、第二用户设备108b、查询处理器112、数据库客户端114、应用116a、应用116b、数据库应用300、数据库客户端302、表达式求值器304、解密器306、加密器308、数据服务器接口310、数据服务器600、查询处理器602、数据库应用接口606、密钥接口608、延迟求值确定器610、延迟表达式确定器612、流程图200、流程图400、流程图500、流程图700、流程图800、流程图900和流程图1000可以以硬件实现,或硬件与软件和/或固件的组合来实现。例如,数据库应用系统102、数据服务器104、数据库应用106、查询处理器112、数据库客户端114、应用116a、应用116b、数据服务器104、数据库应用300、数据库客户端302、表达式求值器304、解密器306、加密器308、数据服务器600、查询处理器602、延迟求值确定器610、延迟表达式确定器612、流程图200、流程图400、流程图500、流程图700、流程图800、流程图900和/或流程图1000可以被实现为计算机程序代码/指令,其被配置成在一个或多个处理器中执行并且被存储在计算机可读存储介质中。可替代地,数据库应用系统102、数据服务器104、数据库应用106、第一用户设备108a、第二用户设备108b、查询处理器112、数据库客户端114、应用116a、应用116b、数据库应用300、数据库客户端302、表达式求值器304、解密器306、加密器308、数据服务器接口310、数据服务器600、查询处理器602、数据库应用接口606、密钥接口608、延迟求值确定器610、延迟表达式确定器612、流程图200、流程图400、流程图500、流程图700、流程图800、流程图900和/或流程图1000可以被实现为硬件逻辑/电路。
比如,在实施例中,数据库应用系统102、数据服务器104、数据库应用106、第一用户设备108a、第二用户设备108b、查询处理器112、数据库客户端114、应用116a,应用116b、数据库应用300、数据库客户端302、表达式求值器304、解密器306、加密器308、数据服务器接口310、数据服务器600、查询处理器602、数据库应用接口606、密钥接口608、延迟求值确定器610、延迟表达式确定器612、流程图200、流程图400、流程图500、流程图700、流程图800、流程图900和/或流程图1000中的一个或多个或任何组合可以一起在SoC中实现。SoC可以包括集成电路芯片,其包括处理器(例如,中央处理单元(CPU)、微控制器、微处理器、数字信号处理器(DSP)等)、存储器、一个或多个通信接口和/或其他电路中的一个或多个,并且可以可选地执行所接收的程序代码和/或包括嵌入式固件以执行功能。
图11描绘了其中可以实现实施例的计算设备1100的示例性实现方式。例如,数据服务器104、数据库应用106、第一用户设备108a、第二用户设备108b、数据库应用300和/或数据服务器600可以在类似于计算设备1100的一个或多个计算设备中的固定计算机实施例中实现,包括计算设备1100的一个或多个特征和/或备选特征。本文中所提供的计算设备1100的描述是为了说明的目的而提供的,并不旨在是限制的。如相关领域的技术人员将会知道的,实施例可以在其他类型的计算机系统中实现。
如图11所示,计算设备1100包括被称为处理器电路1102的一个或多个处理器、系统存储器1104和总线1106,该总线1106将包括系统存储器1104的各种系统部件耦合至处理器电路1102。处理器电路1102是在作为中央处理单元(CPU)、微控制器、微处理器和/或其他物理硬件处理器电路的一个或多个物理硬件电路设备元件和/或集成电路设备(半导体材料芯片或管芯)中实现的电路和/或光路。处理器电路1102可以执行被存储在计算机可读介质中的程序代码,诸如操作系统1130的程序代码、应用程序1132、其他程序1134等。总线1106表示几种类型的总线结构中的任一种类型的总线结构中的一个或多个总线结构,其包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用多种总线架构中的任一种总线架构的处理器或本地总线。系统存储器1104包括只读存储器(ROM)1108和随机存取存储器(RAM)1110。基本输入/输出系统1112(BIOS)被存储在ROM 1108中。
计算设备1100还具有以下驱动器中的一个或多个驱动器:用于从硬盘读取和写入该硬盘的硬盘驱动器1114、用于从可移除磁盘1118读取或写入该可移除磁盘1118的磁盘驱动器1116、以及用于从诸如CD ROM、DVD ROM或其他光学介质之类的可移除光盘1122读取或写入该可移除光盘1122的光盘驱动器1120。硬盘驱动器1114、磁盘驱动器1116和光盘驱动器1120分别通过硬盘驱动器接口1124、磁盘驱动器接口1126和光盘驱动器接口1128连接至总线1106。这些驱动器及其相关联的计算机可读介质为计算机提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。尽管描述了硬盘、可移除磁盘和可移除光盘,但是其他类型的基于硬件的计算机可读存储介质可以被用于存储数据,诸如闪存卡、数字视频盘、RAM、ROM和其他硬件存储介质。
若干个程序模块可以被存储在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作系统1130、一个或多个应用程序1132、其他程序1134和程序数据1136。应用程序1132或其他程序1134可以包括例如计算机程序逻辑(例如,计算机程序代码或指令),其用于实现数据库应用系统102、查询处理器112、数据库客户端114、应用116a、应用116b、数据库客户端302、表达式求值器304、解密器306、加密器308、查询处理器602、延迟求值确定器610、延迟表达式确定器612、流程图200、流程图400、流程图500、流程图700、流程图800、流程图900和/或流程图1000(包括流程图200,400,500,700,800,900,1000的任何合适的步骤);和/或本文中所描述的其他实施例。
用户可以通过诸如键盘1138和指点设备1140之类的输入设备将命令和信息输入到计算设备1100中。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏平板、卫星天线、扫描仪、触摸屏和/或触摸板、用于接收语音输入的语音识别系统、用于接收手势输入的手势识别系统等。这些和其他输入设备通常通过耦合到总线1106的串行端口接口1142连接至处理器电路1102,但是也可以通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其他接口来连接。
显示屏幕1144还经由诸如视频适配器1146之类的接口连接至总线1106。显示屏幕1144可以在计算设备1100的外部或并入计算设备1100中。显示屏幕1144可以显示信息,并且可以是用于接收用户命令和/或其他信息(例如,通过触摸、手指手势、虚拟键盘等)的用户接口。除了显示屏幕1144之外,计算设备1100可以包括诸如扬声器和打印机之类的其他外围输出设备(未示出)。
计算设备1100通过适配器或网络接口1150、调制解调器1152或用于通过网络建立通信的其他器件连接至网络1148(例如,因特网)。如图11所示,可以在内部或外部的调制解调器1152可以经由串行端口接口1142连接至总线1106,或者可以使用包括并行接口的另一接口类型连接至总线1106。
如本文中所使用的,术语“计算机程序介质”、“计算机可读介质”以及“计算机可读存储介质”用于是指物理硬件介质,诸如与硬盘驱动器1114相关联的硬盘、可移除磁盘1118、可移除光盘1122(诸如RAM、ROM、闪存卡、数字视频盘、zip盘、MEM、基于纳米技术的存储设备以及其他类型的物理/有形硬件存储介质(包括图12的存储器1220))。这样的计算机可读存储介质与通信介质区分开并且不与其重叠(不包括通信介质)。通信介质在诸如载波之类的调制数据信号中体现了计算机可读指令、数据结构、程序模块或其他数据。术语“调制数据信号”是指具有以对信号中的信息进行编码的方式设置或改变的其特性中的一个或多个特性的信号。作为示例而非限制,通信介质包括诸如声学、RF、红外和其他无线介质之类的无线介质以及有线介质。实施例还涉及与计算机可读存储介质的实施例分开且不重叠的这种通信介质。
如上文所指出的,计算机程序和模块(包括应用程序1132和其他程序1134)可以存储在硬盘、磁盘、光盘、ROM、RAM或其他硬件存储介质上。这样的计算机程序还可以经由网络接口1150、串行端口接口1142或任何其他接口类型来接收。这样的计算机程序当被应用执行或加载时,使得计算设备1100能够实现本文中所讨论的实施例的特征。因而,这样的计算机程序表示计算设备1100的控制器。
实施例还涉及包括存储在任何计算机可读介质上的计算机代码或指令的计算机程序产品。这样的计算机程序产品包括硬盘驱动器、光盘驱动器、存储器设备封装、便携式记忆棒、存储卡和其他类型的物理存储硬件。
IV.示例实施例
在一个实施例中,在至少一个计算设备中实现的数据服务器中提供了一种方法,其包括:从数据库应用接收查询,该查询已经由数据库应用从请求者接收;取回数据集合以对查询求值,该数据集合包括加密数据;由于至少一个预先确定的因素,由数据库应用而非数据服务器指定用于延迟求值的查询;确定用于在数据库应用处对查询的至少一部分求值的表达式求值信息;以及向数据库应用至少提供加密数据和表达式求值信息以用于在数据库应用处进行求值
在实施例中,该方法还包括:从数据库应用接收针对被配置成解密加密数据的数据加密密钥的请求;从包含使用至少一个主密钥加密的数据加密密钥的密钥存储器取回数据加密密钥的加密版本;以及向数据库应用提供数据加密密钥的加密版本。
在实施例中,该指定包括:确定数据集合包括加密数据;以及确定查询包括对加密数据的、在数据服务器处未被支持的操作。
在实施例中,确定数据集合包括加密数据包括:访问指示被存储在数据库中的哪些数据被加密的、在数据服务器处的元数据。
在实施例中,确定用于在数据库应用处对查询的至少一部分求值的表达式求值信息包括:将查询的至少一部分转换成包括关于多个变量的多个表达式的抽象语法树;针对将AST中每个表达式,将延迟标志设置为真值;执行迭代过程,其包括分析AST中每个表达式的阻止表达式的延迟求值的至少一个准则,针对满足至少一个准则的AST中每个表达式,将延迟标志设置为假,针对具有被设置为假的延迟标志的父表达式的AST中的每个表达式,将延迟标志设置为假,以及更新必须被及早求值的变量集合;以及迭代迭代过程,直到没有其他变量必须被及早求值为止。
在实施例中,分析AST中每个表达的至少一个准则包括:对于AST中的每个表达式,确定以下至少一项:表达式是否具有副作用,表达式是否被认为耗费太高而不能被推送到数据库应用,表达式是否包含控制流语句,或者表达式是否指派到必须被及早求值的变量。
在实施例中,确定用于在数据库应用处对查询的至少一部分求值的表达式求值信息包括:指示用于查询的至少一部分的求值步骤;以及指示求值步骤的顺序。
在实施例中,确定用于在数据库应用处对查询的至少一部分求值的表达式求值信息包括:在数据服务器处对查询的一部分求值。
在另一实施例中,至少一个计算设备包括数据服务器,其包括存储器和查询处理器,该查询处理器被配置成从数据库应用接收查询,该查询针对被存储在数据服务器处的数据集合,查询由数据库应用从请求者接收,查询处理器包括:延迟求值确定器,其被配置成分析查询并且由于至少一个预先确定的因素而由数据库应用指定用于延迟求值的查询;以及延迟表达式确定器,其被配置成确定用于在数据库应用处对查询的至少一部分求值的表达式求值信息;以及查询处理器被配置成向数据库应用至少提供加密数据和表达式求值信息,以在数据库应用处进行求值。
在实施例中,数据服务器还包括:密钥接口,其被配置成从数据库应用接收针对被配置成解密加密数据的数据加密密钥的请求,从包含使用至少一个主密钥加密的数据加密密钥的密钥存储装置取回数据加密密钥的加密版本,并且向数据库应用提供数据加密密钥的加密版本。
在实施例中,延迟求值确定器被配置成确定数据集合包括加密数据,并且确定该查询包括对加密数据的、在数据服务器处未被支持的操作,以分析该查询并且基于预先确定的因素由数据库应用指定用于延迟求值的查询。
在实施例中,延迟求值确定器被配置成访问指示被存储在数据库中的哪些数据被加密的、在数据服务器处的元数据,以确定数据集合包括加密数据。
在实施例中,延迟表达式确定器被配置成指示用于在数据服务器处对查询的至少一部分求值的求值步骤并且指示求值步骤的顺序。
在实施例中,延迟求值确定器被配置成将查询转换成包括关于多个变量的多个表达式的抽象语法树(AST);针对AST中的每个表达式,将延迟标志设置为真值;执行迭代过程,其包括分析AST中的每个表达式的阻止表达式的延迟求值的至少一个准则,针对满足至少一个准则的AST中的每个表达式,将延迟标志设置为假,针对具有被设置为假的延迟标志的父表达式的AST中的每个表达式,将延迟标志设置为假,以及更新必须被及早求值的变量的集合;以及迭代该迭代过程,直到没有其他变量必须被及早求值为止。
在实施例中,分析AST中每个表达的至少一个准则包括:对于AST中的每个表达式,确定以下至少一项:表达式是否具有副作用,表达式是否被认为耗费太高而不能被推送到数据库应用,表达式是否包含控制流语句,或者表达式是否指派到必须被及早求值的变量。
在实施例中,至少一个计算设备还包括数据库应用,其包括存储器和被配置成从请求者接收查询的数据库客户端,该数据库客户端包括数据服务器接口,其被配置成向数据服务器提供具有加密参数数据的查询,并且从数据服务器接收用于查询的所取回的加密数据以及表示用于对查询求值的表达式求值信息;以及表达式求值器,其被配置成用所取回的加密数据来对表达式求值信息求值,以生成查询的结果;并且数据库应用被配置成向请求者提供结果。
在另一实施例中,在数据库应用中提供了一种方法,该数据库应用在至少一个计算设备中实现,该方法包括:从请求者接收查询;向数据服务器提供查询;从数据服务器接收用于查询的所取回的加密数据以及用于对查询求值的表达式求值信息;使用所取回的加密数据对表达式求值信息求值以生成查询的结果;以及将结果提供给请求者。
在实施例中,该方法还包括:确定所取回的加密数据是用在数据库应用处不可获取的加密密钥加密的;提供被配置成对所取回的加密数据进行解密的数据加密密钥的请求;接收数据加密密钥的加密版本;用在数据库应用处可获取的主密钥解密数据加密密钥的加密版本;以及用数据加密密钥解密所取回的加密数据,以生成解密数据;使用解密数据执行所述求值。
在实施例中,求值包括:对表达式求值信息求值以对加密数据执行在数据服务器处未被支持的操作。
在实施例中,表达式求值信息指示用于查询的至少一部分的求值步骤以及求值步骤的顺序,所述求值包括:根据所指示的求值步骤执行求值步骤。
V.结论
虽然上文已经描述了本发明的各种实施例,但是应当理解,它们仅作为示例而非限制地呈现。相关领域的技术人员应当理解,在不背离如所附权利要求限定的本发明的精神和范围的情况下,可以在形式和细节上进行各种改变。因而,本发明的广度和范围不应该由上文所描述的示例性实施例中的任一个示例性实施例所限制,而应仅按照所附权利要求及其等同物来限定。
Claims (15)
1.一种在至少一个计算设备中实现的数据服务器中的方法,包括:
从数据库应用接收查询,所述查询已经由所述数据库应用从请求者接收;
取回数据集合以对所述查询求值,所述数据集合包括加密数据;
由于至少一个预先确定的因素,由所述数据库应用而非所述数据服务器指定用于延迟求值的所述查询;
确定用于在所述数据库应用处对所述查询的至少一部分求值的表达式求值信息;以及
向所述数据库应用至少提供所述加密数据和所述表达式求值信息以在所述数据库应用处进行求值。
2.根据权利要求1所述的方法,还包括:
从所述数据库应用接收针对被配置成解密所述加密数据的数据加密密钥的请求;
从包含使用至少一个主密钥加密的数据加密密钥的密钥存储装置,取回所述数据加密密钥的加密版本;以及
向所述数据库应用提供所述数据加密密钥的所述加密版本。
3.根据权利要求1所述的方法,其中所述指定包括:
确定所述数据集合包括加密数据;以及
确定所述查询包括对所述加密数据的、在所述数据服务器处未被支持的操作。
4.根据权利要求3所述的方法,其中所述确定所述数据集合包括加密数据,包括:
访问指示被存储在数据库中的哪些数据被加密的、在所述数据服务器处的元数据。
5.根据权利要求1所述的方法,其中所述确定用于在所述数据库应用处对所述查询的至少一部分求值的表达式求值信息,包括:
将所述查询转换成包括关于多个变量的多个表达式的抽象语法树(AST);
针对所述AST中的每个表达式,将延迟标志设置为真值;
执行包括以下各项的迭代过程:
针对至少一个准则分析所述AST中的每个表达式,所述准则阻止所述表达式的延迟求值;
针对满足所述至少一个准则的所述AST中的每个表达式,将所述延迟标志设置为假;
针对具有被设置为假的延迟标志的父表达式的所述AST中的每个表达式,将所述延迟标志设置为假;以及
更新必须被及早求值的所述变量的集合;以及
迭代所述迭代过程,直到没有其它变量必须被及早求值为止。
6.根据权利要求5所述的方法,其中所述针对至少一个准则分析所述AST中的每个表达式,包括:
对于所述AST中的每个表达式,确定以下至少一项:
所述表达式是否有副作用,
所述表达式是否被认为耗费太高而不能被推送到所述数据库应用,
所述表达式是否包含控制流语句,或
所述表达式是否指派到必须被及早求值的变量。
7.根据权利要求1所述的方法,其中所述确定用于在所述数据库应用处对所述查询的至少一部分求值的表达式求值信息,包括:
指示用于所述查询的所述至少一部分的求值步骤;以及
指示所述求值步骤的顺序。
8.根据权利要求1所述的方法,其中所述确定用于在所述数据库应用处对所述查询的至少一部分求值的表达式求值信息,包括:
在所述数据服务器处对所述查询的一部分求值。
9.至少一种计算设备,包括:
数据服务器,所述数据服务器包括存储器和查询处理器,所述查询处理器被配置成从数据库应用接收查询,所述查询针对被存储在所述数据服务器处的数据集合,所述查询由所述数据库应用从请求者接收,所述查询处理器包括:
延迟求值确定器,被配置成分析所述查询并且由于至少一个预先确定的因素而由所述数据库应用指定用于延迟求值的所述查询;以及
延迟表达式确定器,被配置成确定用于在所述数据库应用处对所述查询的至少一部分求值的表达式求值信息;以及
所述查询处理器被配置成向所述数据库应用至少提供所述加密数据和所述表达式求值信息,以在所述数据库应用处进行求值。
10.根据权利要求9所述的至少一个计算设备,其中所述数据服务器还包括:
密钥接口,被配置成从数据库应用接收针对被配置成解密所述加密数据的数据加密密钥的请求,从包含使用至少一个主密钥加密的数据加密密钥的密钥存储装置取回所述数据加密密钥的加密版本,并且向所述数据库应用提供所述数据加密密钥的所述加密版本。
11.根据权利要求9所述的至少一个计算设备,其中所述延迟求值确定器被配置成确定所述数据集合包括加密数据,并且确定所述查询包括对所述加密数据的、在所述数据服务器处未被支持的操作,以分析所述查询并且基于所述预先确定的因素来由所述数据库应用指定用于延迟求值的所述查询。
12.根据权利要求11所述的至少一个计算设备,其中所述延迟求值确定器被配置成访问指示被存储在数据库中的哪些数据被加密的、在所述数据服务器处的元数据,以确定所述数据集合包括所述加密数据。
13.根据权利要求9所述的至少一个计算设备,其中所述延迟表达式确定器被配置成指示用于在所述数据库应用处对所述查询的所述至少一部分求值的求值步骤,并且指示所述求值步骤的顺序。
14.根据权利要求9所述的至少一个计算设备,其中所述延迟求值确定器被配置成:
将所述查询转换成包括关于多个变量的多个表达式的抽象语法树(AST);
针对所述AST中的每个表达式,将延迟标志设置为真值;
执行包括以下各项的迭代过程:
针对至少一个准则分析所述AST中的每个表达式,所述准则阻止所述表达式的延迟求值,
针对满足所述至少一个准则的所述AST中的每个表达式,将所述延迟标志设置为假,
针对具有被设置为假的延迟标志的父表达式的所述AST中的每个表达式,将所述延迟标志设置为假,以及
更新必须被及早求值的所述变量的集合;以及
迭代所述迭代过程,直到没有其它变量必须被及早求值为止。
15.根据权利要求14所述的至少一个计算设备,其中所述针对至少一个准则分析所述AST中的每个表达式,包括:
对于所述AST中每个表达式,确定以下至少一项:
所述表达式是否有副作用,
所述表达式是否被认为耗费太高而不能被推送到所述数据库应用,
所述表达式是否包含控制流语句,或
所述表达式是否指派到必须被及早求值的变量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/676,574 | 2015-04-01 | ||
US14/676,574 US10482263B2 (en) | 2015-04-01 | 2015-04-01 | Computing on encrypted data using deferred evaluation |
PCT/US2016/025452 WO2016161221A1 (en) | 2015-04-01 | 2016-04-01 | Computing on encrypted data using deferred evaluation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107683481A true CN107683481A (zh) | 2018-02-09 |
CN107683481B CN107683481B (zh) | 2021-04-16 |
Family
ID=55745851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680032389.5A Active CN107683481B (zh) | 2015-04-01 | 2016-04-01 | 使用延迟求值计算加密数据 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10482263B2 (zh) |
EP (1) | EP3278263B1 (zh) |
CN (1) | CN107683481B (zh) |
WO (1) | WO2016161221A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160335371A1 (en) * | 2015-05-15 | 2016-11-17 | General Electric Company | System and method for querying graphs distributed over multiple machines |
US10127399B1 (en) * | 2015-12-29 | 2018-11-13 | EMC IP Holding Company LLC | Secrets as a service |
US10387210B2 (en) * | 2016-04-04 | 2019-08-20 | International Business Machines Corporation | Resource schedule optimization |
US10642828B2 (en) * | 2017-10-10 | 2020-05-05 | Sap Se | Searchable encryption scheme with external tokenizer |
JP6988918B2 (ja) * | 2017-12-18 | 2022-01-05 | 日本電信電話株式会社 | 秘密計算システム及び方法 |
US10637887B2 (en) | 2017-12-29 | 2020-04-28 | Cyphort Inc. | System for query injection detection using abstract syntax trees |
US10528556B1 (en) | 2017-12-31 | 2020-01-07 | Allscripts Software, Llc | Database methodology for searching encrypted data records |
US10528557B1 (en) * | 2017-12-31 | 2020-01-07 | Allscripts Software, Llc | Database methodology for searching encrypted data records |
US20220374885A1 (en) * | 2019-09-23 | 2022-11-24 | Visa International Service Association | System, method, and computer program product for secure key management |
GB2593244B (en) * | 2020-09-21 | 2022-04-06 | Impulse Innovations Ltd | System and method for executing data access transaction |
CN115130118A (zh) * | 2021-03-29 | 2022-09-30 | 华为技术有限公司 | 访问数据库的方法和装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040243799A1 (en) * | 2003-05-30 | 2004-12-02 | Hacigumus Vahit Hakan | Query optimization in encrypted database systems |
US20050273772A1 (en) * | 1999-12-21 | 2005-12-08 | Nicholas Matsakis | Method and apparatus of streaming data transformation using code generator and translator |
US20080208743A1 (en) * | 2007-02-22 | 2008-08-28 | First Data Corporation | Transfer of value between mobile devices in a mobile commerce system |
WO2013080365A1 (ja) * | 2011-12-01 | 2013-06-06 | 株式会社日立製作所 | 秘匿検索方法および秘匿検索装置 |
CN103270516A (zh) * | 2010-08-18 | 2013-08-28 | 安全第一公司 | 用于安全保护虚拟机计算环境的系统和方法 |
US20140181517A1 (en) * | 2012-12-12 | 2014-06-26 | Nokia Corporation | Cloud Centric Application Trust Validation |
US8843997B1 (en) * | 2009-01-02 | 2014-09-23 | Resilient Network Systems, Inc. | Resilient trust network services |
US20140298039A1 (en) * | 2006-12-08 | 2014-10-02 | Ashish A. Pandya | Programmable intelligent search memory enabled secure dram |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6029160A (en) | 1995-05-24 | 2000-02-22 | International Business Machines Corporation | Method and means for linking a database system with a system for filing data |
US6356887B1 (en) | 1999-06-28 | 2002-03-12 | Microsoft Corporation | Auto-parameterization of database queries |
US7194618B1 (en) | 2001-03-05 | 2007-03-20 | Suominen Edwin A | Encryption and authentication systems and methods |
US7500111B2 (en) | 2003-05-30 | 2009-03-03 | International Business Machines Corporation | Querying encrypted data in a relational database system |
US20050108518A1 (en) * | 2003-06-10 | 2005-05-19 | Pandya Ashish A. | Runtime adaptable security processor |
GB2430771A (en) | 2005-09-30 | 2007-04-04 | Motorola Inc | Content access rights management |
KR100859162B1 (ko) | 2007-10-16 | 2008-09-19 | 펜타시큐리티시스템 주식회사 | 암호화된 칼럼을 포함하는 데이터베이스에서의 쿼리의 암호화 변조를 통한 사용자 쿼리 처리 장치 및 방법 |
US8364751B2 (en) | 2008-06-25 | 2013-01-29 | Microsoft Corporation | Automated client/server operation partitioning |
US8874547B2 (en) | 2010-01-04 | 2014-10-28 | Microsoft Corporation | Parameter-sensitive plans |
US8751789B2 (en) | 2010-09-17 | 2014-06-10 | International Business Machines Corporation | General purpose distributed encrypted file system |
US8751828B1 (en) | 2010-12-23 | 2014-06-10 | Emc Corporation | Sharing encryption-related metadata between multiple layers in a storage I/O stack |
US8627107B1 (en) | 2011-09-29 | 2014-01-07 | Todd Michael Kennedy | System and method of securing private health information |
WO2013069776A1 (ja) | 2011-11-11 | 2013-05-16 | 日本電気株式会社 | データベース暗号化システムと方法及びプログラム |
US9087212B2 (en) | 2012-01-25 | 2015-07-21 | Massachusetts Institute Of Technology | Methods and apparatus for securing a database |
US9286488B2 (en) | 2013-03-13 | 2016-03-15 | Northrop Grumman Systems Corporation | System and method for secure database queries |
US10162858B2 (en) | 2013-07-31 | 2018-12-25 | Sap Se | Local versus remote optimization in encrypted query processing |
US20160055348A1 (en) | 2014-07-27 | 2016-02-25 | Jerzy Jozef Lewak | Double key coding methods of providing fast search, analysis, and data retrieval of encrypted data without decryption |
-
2015
- 2015-04-01 US US14/676,574 patent/US10482263B2/en active Active
-
2016
- 2016-04-01 EP EP16715979.7A patent/EP3278263B1/en active Active
- 2016-04-01 CN CN201680032389.5A patent/CN107683481B/zh active Active
- 2016-04-01 WO PCT/US2016/025452 patent/WO2016161221A1/en active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050273772A1 (en) * | 1999-12-21 | 2005-12-08 | Nicholas Matsakis | Method and apparatus of streaming data transformation using code generator and translator |
US20040243799A1 (en) * | 2003-05-30 | 2004-12-02 | Hacigumus Vahit Hakan | Query optimization in encrypted database systems |
US20140298039A1 (en) * | 2006-12-08 | 2014-10-02 | Ashish A. Pandya | Programmable intelligent search memory enabled secure dram |
US20080208743A1 (en) * | 2007-02-22 | 2008-08-28 | First Data Corporation | Transfer of value between mobile devices in a mobile commerce system |
US8843997B1 (en) * | 2009-01-02 | 2014-09-23 | Resilient Network Systems, Inc. | Resilient trust network services |
CN103270516A (zh) * | 2010-08-18 | 2013-08-28 | 安全第一公司 | 用于安全保护虚拟机计算环境的系统和方法 |
WO2013080365A1 (ja) * | 2011-12-01 | 2013-06-06 | 株式会社日立製作所 | 秘匿検索方法および秘匿検索装置 |
US20140181517A1 (en) * | 2012-12-12 | 2014-06-26 | Nokia Corporation | Cloud Centric Application Trust Validation |
Also Published As
Publication number | Publication date |
---|---|
CN107683481B (zh) | 2021-04-16 |
EP3278263B1 (en) | 2021-02-24 |
WO2016161221A1 (en) | 2016-10-06 |
US10482263B2 (en) | 2019-11-19 |
US20160292430A1 (en) | 2016-10-06 |
EP3278263A1 (en) | 2018-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107683481A (zh) | 使用延迟求值计算加密数据 | |
US9875370B2 (en) | Database server and client for query processing on encrypted data | |
US10719567B2 (en) | Database query processing on encrypted data | |
AU2019239311B2 (en) | Facilitating queries of encrypted sensitive data via encrypted variant data objects | |
US11256692B2 (en) | Systems and methods for bi-directional database application programming interface, extract transform and load system, and user computing device | |
CN107409040A (zh) | 用于推荐数据加密而不影响程序语义的代码分析工具 | |
US10515317B1 (en) | Machine learning algorithm for user engagement based on confidential data statistical information | |
WO2015136801A1 (ja) | 情報管理システム | |
CN107820614A (zh) | 隐私增强的个人搜索索引 | |
US10261958B1 (en) | Generating an association between confidential data and member attributes | |
US20240121085A1 (en) | Key rotation for sensitive data tokenization | |
US11080280B2 (en) | Enable merge join on encrypted data | |
US10484387B1 (en) | Tracking submission of confidential data in a computer system | |
US10565391B2 (en) | Expression evaluation of database statements for restricted data | |
WO2022233236A1 (en) | Secure data analytics | |
US10044693B1 (en) | Security for confidential data | |
US20200210593A1 (en) | Personal data hub system | |
US20200272753A1 (en) | Personal data hub method, apparatus, and system | |
US20100287603A1 (en) | Flexible identity issuance system | |
Davies et al. | Data Collection, Storage and Security | |
US20240104224A1 (en) | Privacy-preserving search using homomorphic encryption | |
US20220405770A1 (en) | System and methods for verifying merchandise authenticity | |
Kumar | A Secure And Trusted Mechanism for Industrial IOT Network Using Block Chain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |