买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】用于对加密数据进行查询处理的数据库服务器和客户端_微软技术许可有限责任公司_201680018743.9 

申请/专利权人:微软技术许可有限责任公司

申请日:2016-03-21

公开(公告)日:2020-07-24

公开(公告)号:CN107408135B

主分类号:G06F21/62(20130101)

分类号:G06F21/62(20130101);H04L9/00(20060101)

优先权:["20150326 US 14/669,848"]

专利状态码:有效-授权

法律状态:2020.07.24#授权;2017.12.22#实质审查的生效;2017.11.28#公开

摘要:提供了方法、系统、装置和计算机程序产品,用于数据服务器DS和数据库应用DA安全处理查询。基于从请求者接收的用户查询,DS从DA接收参数化查询。DS分析参数化查询以尝试确定用户查询的转换版本的加密配置,转换版本能够被DS在加密数据值上评估。DS对DA进行响应,或者确定加密配置失败,或者向DA提供确定的加密配置。DA生成用户查询的转换版本,并向DS提供转换版本。DS评估用户查询的转换版本,并向DA提供结果。DA对结果进行解密,并向请求者提供解密的结果。

主权项:1.一种在至少一个计算设备中实现的数据服务器中的方法,包括:从数据库应用接收参数化查询,所述参数化查询是所述数据库应用从请求者接收到的用户查询的参数化版本;分析所述参数化查询以确定所述用户查询的转换版本的加密配置,所述用户查询的所述转换版本能够被所述数据服务器在加密数据值上评估;以及利用基于分析所述参数化查询所确定的信息来对所述数据库应用进行响应,所述响应包括:响应于成功确定所述用户查询的所述转换版本的加密配置,将所确定的所述加密配置包括在所述响应信息中,所确定的所述加密配置指示与包括在所述参数化查询中的参数相对应的加密方案或加密秘钥中的至少一项。

全文数据:用于对加密数据进行查询处理的数据库服务器和客户端背景技术[0001]可以根据各种存储配置和实施方式在本地或远程存储数据。例如,云计算是与部署远程服务器和软件网络相关的最新发展,这些远程服务器和软件网络提供对资源和服务的集中式数据存储和在线访问,被称为“云服务”。一组云服务器可以为单个用户(“租户”)或多个相关或不相关用户(“多租户”系统托管资源服务。类似地,数据可以由实体“现场”存储,并且可以由该实体在该现场数据存储中访问。[0002]数据泄露可能是遏制管理敏感的业务关键信息的应用采用云服务的主要因素。在公共云上,应用必须防范潜在的恶意云管理员、恶意合租户和其他可通过各种合法手段获取对数据的访问的实体。由于计算和存储平台本身不能被信任,所以以明文未加密数据)出现在云平台上的任何位置磁盘上、存储器中、电线上等)的任何数据都必须被视为容易受到泄漏或恶意破坏。在垂直行业中,例如金融、银行和医疗保健,合规性要求强制要求针对这些类型的威胁采取强有力的保护措施。[0003]因此,在某些情况下,数据库服务器可以存储加密数据,但出于安全原因而无法访问加密密钥。这保证了存储在数据库中的任何数据都被加密,直到它传递到在受保护环境中运行的客户端应用例如,由客户端实体管理的中间应用)。例如,数据库服务器可以使用部分同态加密PHE方案、安全硬件和或计算的其他安全形式来处理加密形式的数据,这是因为数据库服务器不能访问加密密钥。PHE方案在不需要加密密钥的情况下,允许直接在加密数据上执行受限类别的操作,但不是所有操作。由于这些安全要求和加密数据的计算约束,难以实现以安全高效的方式来处理数据库上的查询。发明内容[0004]提供本发明内容以便以简化的形式介绍在下面的具体实施方式中进一步描述的构思的精华。本发明内容不旨在标识所要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求保护的技术方案的范围。[0005]提供了数据服务器和数据库应用安全处理查询的方法、系统、装置和计算机程序产品。数据服务器从数据库应用接收参数化查询。参数化查询是数据库应用从请求者接收到的用户查询的参数化包含非数据版本。数据服务器分析参数化查询以确定用户查询的转换版本的加密配置。数据服务器能够在加密数据值上评估转换版本。如果参数化查询包括数据服务器处不支持的对加密数据的操作例如,对不允许加和的利用加密方案加密的列进行加和),则数据服务器通过指示确定加密配置失败,来对数据库应用进行响应。或者,数据服务器通过向数据库应用提供确定的加密配置来进行响应。在这种情况下,数据库应用生成用户查询的转换版本,并将转换的版本提供给数据服务器。数据服务器评估用户查询的转换版本以生成查询结果,并将结果提供给数据库应用。数据库应用对结果进行解密,并将解密的结果提供给请求者。[0006]本发明的其他特征和优点以及本发明的各种实施例的结构和操作,将在以下参照附图进行详细描述。应当注意,本发明不限于本文描述的具体实施例。在本文中给出这些实施例仅仅是为了说明的目的。基于本文包含的教导,附加实施例对相关领域的技术人员是显而易见的。附图说明[0007]并入本文并形成本说明书的一部分的附图图示了本申请的实施例,并且与说明书一起用于解释实施例的原理,使相关领域的技术人员能够进行和使用实施例。[0008]图1示出了根据示例实施例的通信系统的框图,其中查询处理系统处理用户查询。[0009]图2示出了提供根据示例实施例的在数据库应用中处理用户查询以维护数据安全的过程的流程图。[0010]图3示出了根据示例实施例的包含数据库客户端的数据库应用的框图,数据库客户端被配置为基于用户查询生成参数化查询,基于由数据服务器提供的加密配置来生成用户查询的转换版本,并且提供转换版本到数据服务器以便执行。[0011]图4示出了提供根据示例实施例的在数据库应用中用于从数据服务器取回用于对查询数据进行加密的数据加密密钥的过程的流程图。[0012]图5示出了提供根据示例实施例的在数据库应用中用于从数据服务器取回用于解密查询结果的数据加密密钥的过程的流程图。[0013]图6示出了提供根据示例实施例的在数据服务器中用于以维护数据安全的方式基于用户查询的转换版本来处理用户查询的过程的流程图。[0014]图7示出了根据示例实施例的包含查询处理器的数据服务器的框图,查询处理器被配置为基于参数化的用户查询生成加密配置,向数据库应用提供加密配置,并且执行用户查询的转换版本。[0015]图8和图9示出了提供根据示例实施例的在数据服务器中用于服务数据库应用对数据加密或解密密钥的请求的过程的流程图。[0016]图10示出了可用于实现实施例的示例计算设备的框图。[0017]从以下结合附图的详细描述中,本发明的特征和优点将变得更加明显。贯穿附图,相同附图标记标识相应元素。在附图中,相同附图标记通常指示相同的、功能上相似的和或结构上相似的元件。元件首次出现的图由相应附图标记中最左边的数字指示。具体实施方式[0018]I.引言[0019]本说明书和附图公开了包含本发明特征的一个或多个实施例。本发明的范围不限于所公开的实施例。所公开的实施例仅作为本发明的示例,并且所公开的实施例的修改版本也包括在本发明中。本发明的实施例由所附权利要求限定。[0020]说明书中对“一个实施例”、“实施例”、“示例实施例”等的参考指示所描述的实施例可以包括特定特征、结构或特点,但是每个实施例可能未必都包括该特定特征、结构或特点。此外,这样的短语不一定指代相同的实施例。另外,当结合一个实施例描述特定特征、结构或特点时,认为在本领域技术人员的知识范围内能够结合其他实施例来实现这种特征、结构或特点,不论这些其他实施例是否被明确描述。[0021]以下描述了许多示例性实施例。应当注意,本文提供的任何节小节标题不旨在限制。贯穿本文描述了实施例,并且任何类型的实施例都可以包括在任何节小节中。此外,在任何节小节中公开的实施例可以以任何方式与在同一节小节和或不同节小节中描述的任何其它实施例组合。[0022]II.安全有效处理查询的示例实施例[0023]本文描述的实施例涉及使用加密来保护托管在不可信平台上的数据。虽然许多常规加密方案保留数据的机密性,但是这样的加密方案通常不允许不可信平台对加密数据运行任何计算。这大大降低了在云平台上托管应用的益处。[0024]例如,数据服务器例如,数据库服务器可以使用部分同态加密PHE方案、安全硬件和或其他安全形式的计算来处理一些加密数据,因为数据服务器可能不被认为是“可信的”,并因此其无法访问用于加密数据的加密密钥。PHE方案在不需要加密密钥的情况下,允许直接在加密数据上执行受限类别的操作,但不是所有操作。[0025]根据实施例,当用户需要查询存储在数据服务器中的加密数据时,用户设备(“请求者”)通过数据库应用也称为“客户端”)向数据服务器发送查询。由于数据服务器在非加密数据方面不值得信任,所以查询的所有参数、谓词等必须使用相应的加密密钥进行加密。返回给请求者的查询结果也被加密,并且必须被解密。通常,数据库应用解密数据并向请求者提供解密的数据。包括在查询本身中的数据例如,参数值在提供给数据服务器之前可能必须被加密,以避免在数据服务器处对查询数据的恶意利用。因此,在一个实施例中,可以将查询转换成安全形式,以提供给数据服务器。[0026]因此,在一个实施例中,数据库应用被配置为在向数据服务器发送查询之前转换查询并加密查询参数。数据库应用还可以被配置为从另一个源获取用于数据加密解密的加密密钥。[0027]例如,数据库可以包括存储患者信息的“患者表”,对于每一个患者,在对应列中包括名字、姓和社会安全号码SSN,每列可被加密。数据服务器可以为应用于数据库的查询服务,这些查询最初由数据库应用接收并提供给数据服务器。例如,用户可以在患者表上提交以下查询:[0028]SELECTFirstName,LastNameFROMPatientsWHERESSN=‘1234567’[0029]该特定查询从表中的对应列请求SSN值为1234567的名字和姓的值。[0030]由于表的SSN列被加密,因此数据库应用必须使用适当的加密算法和密钥对出现在查询谓词中的SSN参数值‘1234567’进行加密,使得数据服务器可以在加密数据上评估谓词。因为名字列和姓列是加密的,所以数据服务器为查询返回加密数据值。当查询结果返回到数据库应用时,数据库应用必须确定名字列和姓列的加密方案,以便对每行的值进行解密。对于具有中间变量、临时表等的复杂查询而言,该分析可能会变得复杂得多。[0031]其他人试图通过在数据库客户端上添加用于分析查询的逻辑来解决这一问题。因此,数据库客户端必须具有加密元数据和查询编译器来分析查询,并确定哪些数据需要被加密以发送到数据服务器以及如何解密结果。这样的解决方案没有将数据服务器用作存储加密密钥的中心位置,而是希望每个数据库客户端通过其他方式获取加密密钥。这样的解决方案的缺点是必须扩展数据库客户端,使其具有卓越的查询编译能力,以管理加密元数据和使用资源来执行查询结果处理。这对于期望对存储在数据服务器中的数据进行查询的实体造成了困难,因为这些实体必须部署和管理更复杂的数据库客户端并提供适当的加密密钥。[0032]根据实施例,扩展数据服务器以存储加密元数据,并分析用户查询,以确定它们是否可以在加密数据上执行。如果确定可以对加密数据执行查询,则数据服务器确定如何转换查询使得查询可以被执行,以及如何对每个参数进行加密。当数据服务器将查询结果返回到数据库应用时,数据服务器描述查询结果数据是如何被加密的,以便数据库应用能够解密、结果。[0033]此外,在一个实施例中,加密密钥可以存储在数据服务器处,使用数据库应用已知或可得的主加密密钥进行加密。以这种方式,数据库应用可以从中心位置数据服务器请求数据加密密钥,使用主密钥来解密数据加密密钥,并根据需要使用解密的密钥。[0034]当用户提交查询时,用户可以像在未加密数据上执行查询一样提交查询。数据库应用向数据服务器发送查询的参数化形式,以便使用加密元数据进行分析。数据服务器回复数据库应用,指示如何转换查询,并指示要加密的查询参数以及加密方案和密钥。如果数据库应用没有适当的加密密钥,则数据库应用可以从数据服务器或其他地方请求密钥,并使用主密钥对密钥进行解密。[0035]数据库应用向数据服务器发送转换的查询,并从数据服务器接收加密的查询结果以及如何解密查询结果的描述。数据库应用解密结果并将其返回给用户。[0036]在一个实施例中,上述关于患者表的示例,当数据库应用接收到在谓词中有未加密值参数的查询时,数据库应用向数据服务器提交请求以分析参数化查询。上述查询的示例参数化查询版本是“SELECTFirstName,LastNameFROMPatientsWHERESSN=@pl”,其中谓词被参数化数据填充,而不是从用户接收到的实际谓词数据(“1234567”)。数据服务器被配置为考虑列加密元数据来分析参数化查询。数据服务器验证相等谓词是否可以在SSN列上被评估。如果不能,数据服务器使查询失败。否则,数据服务器基于参数化查询生成加密配置,该加密配置描述应该被用来加密SSN参数数据以发送给数据服务器的加密算法和密钥。[0037]—旦数据库应用从数据服务器接收到加密配置,数据库应用使用适当的加密方案对SSN参数值进行加密,并在数据服务器上执行查询。如果数据库应用没有适当的数据加密密钥,则数据库应用可以从数据服务器或其他源请求加密密钥,并使用数据库应用可得而数据服务器不可得的主密钥对数据加密密钥进行解密。一旦具有加密参数的查询被提交给了数据服务器,数据服务器就会在加密数据上执行查询。生成的结果集包括查询结果以及结果集的加密方案的指示。在该示例中,名字列和姓列被加密。因此,数据服务器将提供返回的名字列和姓列的加密方案与查询结果一起提供给数据库应用。使用该信息,数据库应用对每行中的结果值进行解密,并将结果返回给用户。[0038]在实施例中,数据服务器具有查询编译和元数据管理能力,并且这些可被扩展以执行上述功能。因此,在数据服务器侧构建所描述的功能能够简化实施方式。[0039]实施例还使数据库应用保持为相对较瘦(不复杂),并且数据库应用资源不被使用。数据库应用可以根据需要升级,而不必部署新的数据库应用。[0040]此外,数据服务器可以用作数据加密密钥的中心位置,从而简化了实体的数据加密密钥管理。[0041]因此,在实施例中,数据服务器处的数据库元数据跟踪表中哪些列被加密、这些列如何被加密以及加密密钥的加密版本如何被维护。提供数据库应用库的协议用于与数据服务器的交互,以识别查询或所存储过程中的哪些输入参数必须被加密以及如何加密。该协议也可以指示服务器需要的对查询的任何其他转换。该协议指示数据库应用如何接收从服务器取回的数据的加密信息。也提供了用于从数据服务器接收加密形式的)加密密钥的协议。此外,在服务器中进行分析以确定是否可以基于加密数据来应答查询。[0042]可以在各种环境中实现实施例。例如,图1示出了根据示例实施例的通信系统的框图,其中查询处理系统处理用户查询。如图1示出,通信系统100包括由第一网络110耦合在一起的数据库应用系统102、第一用户设备108a和第二用户设备108b。数据库应用系统102被配置为以安全有效的方式处理从用户设备l〇8a和108b接收的用户查询。数据库应用系统102可以以一个或多个计算设备的形式来实现。数据库应用系统102包括由第二网络118耦合在一起的数据服务器104和数据库应用106。数据服务器104包括查询处理器112,并且数据库应用106包括数据库客户端114。第一用户设备108a包括应用116a,第二用户设备108b包括应用116b。以下对系统100作进一步描述。[0043]第一和第二用户设备108a和108b可以各自是任何类型的固定或移动计算设备,包括移动计算机或移动计算设备例如,Microsoft⑧Surface®设备、个人数字助理PDA、膝上型计算机、笔记本电脑、诸如AppleiPad™的平板电脑、上网本等),移动电话例如,手机、诸如MicrosoftWindows®手机的智能手机、AppIeiPhone、实现Google®Android™操作系统的于·机、Palm⑧设备,:Blackberry®设备等),可穿戴式计算设备例如,智能手表、包括诸如Google®GlaSS™之类的智能眼镜的头戴式设备等),个人导航助手,照相机,或其他类型的移动设备例如,汽车),或诸如台式计算机或个人计算机PC的固定计算设备。虽然图1中示出了一对用户设备,但是在其他实施例中,系统loo中可能存在其他数目的用户设备,包括一个或其他单个数字数目的、数十、数百、数千或者甚至更多数目的用户设备。[0044]数据服务器104和数据库应用106可以各自被实现为一个或多个被配置为服务器设备的计算设备,或者在一个或多个被配置为服务器设备的计算设备中实现。在一个实施例中,数据服务器104和数据库应用106被包括在一个或多个计算设备的不同集合中,在另一个实施例中,数据服务器104和数据库应用106被包括在一个或多个计算设备的公共集合中。数据库应用106可以被认为是客户端或中间层应用,数据服务器104可以被认为是客户端的数据库服务器。在实施例中,数据服务器104可以服务任何数目的数据库应用106。[0045]数据服务器104、数据库应用106、第一用户设备108a和第二用户设备108b中的每一个可以包括能够通过网络110和118中的一个或两个进行通信的至少一个网络接口。这样的网络接口可以包括任何类型的有线或无线的网络接口(如网络接口卡NIC中的一个或多个,例如,IEEE802.11无线LANWLAN无线接口,全球互操作性微波接入Wi-MAX接口,以太网接口,通用串行总线USB接口,蜂窝网络接口,蓝牙™接口,近场通信NFC接口等。网络接口的其他示例在本文其他地方描述。网络110和118的示例包括局域网LAN、广域网WAN、个域网(PAN和或诸如因特网的通信网络的组合。当数据服务器104和数据库应用106被包括在相同的计算设备中时,网络118可以不存在。[0046]在一个实施例中,第一和第二用户设备108a和108b请求者之一可以向数据库应用系统102发出查询。查询可以由与在用户设备上执行的应用交互的个人用户客户发出,或者由用户设备上执行的应用自动发出。例如,用户可以分别与用户设备l〇8a和108b处的应用116a和116b交互以使得查询被提交,和或应用116a和116b可以自动地使查询被提交。因此,应用116a和116b和或用户设备108a和108b可以被认为是请求者。应用116a和116b的示例包括浏览器例如,其导航到由数据库应用106提供的网站),移动或桌面应用,数据库访问应用以及能够向查询处理系统提交查询的任何其他类型的应用。[0047]在图1中,示例查询128由第一用户设备108a处的应用116a提交给数据库应用系统102。查询128可以包括对数据服务器104管理的数据库的SQL结构化查询语言查询或其他类型查询。查询128通过网络110被发送,以被数据库应用系统102的数据库应用106接收。数据库应用106被认为是关于查询的可信实体。例如,在一个实施例中,数据库应用106可以由银行或其他服务提供商管理,并且可以提供用于从银行或其他服务提供商)的客户接收查询的前端。因此,查询128可以包括被用户请求者认为敏感的数据,和或可以被配置为访问数据服务器104处的被认为是敏感的数据。这些数据在数据库应用106中可以以明文未加密表示。例如,查询128可以是银行客户访问他她的账户数据的请求。查询128可以包括客户的标识信息,例如他们的银行帐号在银行环境中)、他们的社会保险号等。数据库客户端114处理查询128,并且处理与数据服务器104处的查询处理器112的交互以处理查询128。例如,数据库客户端114可以包括MicrosoftCorporation发布的ADO.NET客户端库,或数据库应用106处的数据库接口的其他示例。数据服务器104不被认为是关于查询128的可信实体。例如,在一个实施例中,数据服务器104可以由与数据库应用106的所有者无关的基于云的存储提供商来管理,或者由存储数据库应用106的用户客户数据的其他实体来管理,但该实体在这些数据方面不被信任。因此,存储在数据服务器104处的至少一些数据被加密,使得数据不会在数据服务器104处受到危害。在一个示例中,数据服务器104可以包括由位于Redmond,Washington的Microsoft发布的SQLSERVER⑧的实例,或者可以包括替代数据库服务器机制(例如,由位于RedwoodCity,California的Oracle公司发布的Oracle®数据库等的实例。[0048]因此,在一个实施例中,数据库客户端114可以通过网络118,如其存在)向查询处理器112传送查询128的参数化版本。查询128的参数化版本不包括敏感信息,而是可以包括参数化数据的虚拟值或其他指示符,因此其不会暴露与查询128相关联的一些或全部实际数据。例如,查询128可以包括个人的社会保险号码SSN。在该示例中,数据库客户端114处理查询128生成参数化查询,以包括Opl而不是实际的SSN,从而保护SSN不被暴露在数据服务器104处。[0049]查询处理器112分析参数化查询,以确定内容被加密的查询128是否可以在数据服务器104中被处理。换言之,在当前示例中,如果所包含的SSN的值被加密,而不是将实际的SSN提供给数据服务器104,则查询处理器112确定查询128是否可以在数据服务器104中被处理。如果查询处理器112从参数化查询的分析中确定基于加密数据不能在数据服务器104中处理查询128,则查询处理器112通过网络118,如其存在)向数据库客户端114传送查询响应,指示查询128不能被处理。如果查询处理器112从参数化查询的分析中确定可以基于加密数据在数据服务器104中处理查询128,则查询处理器112生成查询128的加密配置,该配置指示当查询128被呈现给数据服务器104时,查询128的哪些数据(例如,参数值、谓词等将被加密以及这些数据将被如何加密。查询处理器112通过网络118,如其存在)向数据库客户端114传送查询响应,用于提供查询128的加密配置。[0050]如果查询处理器112在查询响应中指示失败,则数据库客户端114可以通过网络110将查询结果130从数据库应用106传送到第一用户设备108a,向应用116a指示失败。失败可以被呈现给第一用户设备l〇8a的用户。[0051]或者,如果查询处理器112在查询响应中提供了加密配置,则数据库客户端114可以生成查询128的转换版本,并通过网络118,如其存在将其提供给查询处理器112,该转换版本包括根据所接收的加密配置加密的内容。例如,继续当前的示例,可以根据加密配置中指示的特定加密技术对SSN值“1234567”进行加密,并且在查询128的转换版本中以这种加密形式提供。如本文所述,可以在转换版本中对查询128作进一步转换。[0052]数据库客户端114通过网络118,如其存在)向查询处理器112传送查询128的转换版本。数据库客户端114处理查询以生成查询结果,其通过网络118,如其存在被传送到数据库客户端114。查询结果可以包括的加密信息,其是从数据服务器104处的数据库的加密列提取的,和或由查询处理器112对加密数据执行的操作例如,加法、减法、除法、乘法等)而生成。数据库客户端114可以对加密的数据进行解密,并且通过网络110将查询结果的解密形式传送到第一用户设备l〇8a中的应用116a。[0053]注意,在一个实施例中,如果数据库客户端114不能访问用于加密查询128的转换版本的数据或用于解密查询结果的数据的数据加密密钥,则数据库客户端114可以向数据服务器104请求加密密钥。数据服务器104可以以加密形式存储加密密钥,使得加密密钥在数据服务器104中不能被用来危害查询128的转换版本的数据和或数据库数据。应当注意,在系统100中,存储在数据服务器104的列中的加密数据以及加密解密密钥,在数据服务器104中从来不是以明文形式出现的。数据服务器104可以根据请求或者自动例如,与查询结果一起)向数据库客户端114传送加密的加密密钥。数据库客户端114可以使用在数据库应用106上维护的主加密密钥对加密的加密解密密钥进行解密,并根据需要使用加密密钥来加密例如,查询128的转换版本中)的数据和或解密例如,查询结果中)的数据。数据库客户端114可以将解密的查询结果包括在查询结果130中,并且通过网络110将查询结果130从数据库应用106传送到第一用户设备108a。查询结果可以被呈现给第一用户设备108a的用户。[0054]因此,数据库应用系统102能够安全有效地处理查询。数据可以在数据服务器104中以加密形式被维护。接收到的查询的参数化形式可以由(数据库应用106处的)数据库客户端114生成,以由查询处理器112进行完整分析,从而避免在数据服务器104处暴露查询的实际数据。该分析指示查询处理器112是否可以对加密数据处理查询。如果无法处理查询,则查询处理器112向数据库客户端114指示失败。如果可以处理查询,则查询处理器112向数据库客户端114指示如何转换查询以保护所包括的数据,并且指示查询处理器112如何处理转换后的查询以生成查询结果。查询结果由数据库客户端114解密并提供给请求者。以这种方式,没有任何数据以未加密形式暴露在数据服务器104处除非允许特定数据的暴露),从而提供了高等级的数据安全性。[0055]在实施例中,图1的数据库应用系统102可以以各种方式配置,并且可以以各种方式操作,以实现安全查询处理。下一节节Π.Α提供了在数据库应用侧处理接收的查询的示例实施例,之后是提供在数据库服务器侧处理查询的示例实施例的节节II.B。这些节之后,是描述示例性计算设备实施例的节III和提供附加实施例的节IV。[0056]A.用于处理查询的示例数据库应用侧实施例[0057]在实施例中,可以以各种方式来配置数据库应用106和数据库客户端114以处理接收的查询。例如,图2示出的流程图200提供了根据示例实施例的在数据库应用中处理用户查询以维护数据安全。在实施例中,数据库客户端114可以根据流程图200进行操作。出于说明的目的,下面参照图3描述流程图200。图3示出了根据示例实施例的包含数据库客户端302的数据库应用300的框图,数据库客户端302被配置为与查询处理器通信来以安全的方式处理用户查询。数据库应用300是数据库应用106的一个示例,数据库客户端302是图1中数据库客户端114的一个示例。如图3示出,数据库应用300包括数据库客户端302、网络接口312和密钥存储库314。数据库客户端302包括数据库客户端引擎304、解密器306、加密器308和数据服务器接口310。数据库客户端引擎304包括查询参数化器320、转换查询生成器322和结果处理器324。以下将描述数据库应用300、数据库客户端302和流程图200。应当注意,流程图200的步骤不一定按图2示出的顺序发生,也可以按其他顺序发生。[0058]图2的流程图200从步骤202开始。在步骤202,从请求者接收用户查询。例如,参考图3,数据库应用300的网络接口312可以(例如,从图1中的第一用户设备108a接收查询128,并且可以转发查询128以使其被数据库客户端引擎304的查询参数化器320接收。网络接口312是与网络例如,图1的网络110的通信接口,网络接口的其他示例和描述将在本文其他地方提供。[0059]查询128是请求者期望对由数据服务器例如,图1的数据服务器104管理的(例如,数据库中的数据执行的查询。查询128可以包括对数据服务器处的数据中的、所访问的一个或多个变量和或查询参数值的一个或多个操作。这样的操作可以被定义为在列数据上执行,在查询的谓词指定要评估的条件)中执行,等等。[0060]例如,在SQL结构化查询语言查询中,可以使用声明性的“Select”语句来表示查询。查询128可以在“Select”语句之后列出将出现在查询结果中的一个或多个数据库表的列。可以指示在列上执行操作(例如,“column_l+column_2”等)。“From”子句可以指示要从中取回数据的一个或多个表。“Where”子句包括比较谓词,其限制查询返回的行。如相关领域的技术人员所知的,许多其他类型的子句也可以出现在查询128中。[0061]例如,下面示出了示例性的基于SSN社会保障号码的查询:[0062]SELECTFirstName,LastName,Base_Salary+Annual_BonusFromEmployeesWHERESSN=12345678[0063]根据该示例,查询结果将包括来自“FirstName”和“LastName”列的数据以及“Base_Salary”和“Annual_Bonus”列的加和在“Base_Salary”和“Annual_Bonus”列执行逐行加法以生成加和结果)‘From”子句表示从数据服务器所管理的数据库中存储的“Emp1〇yees”表中选择所指示的列。“Where”子句提供限制,其指示从“SSN”列的值等于“12345678”的一行或多行中选择来自所指示表的所指示列的数据。[0064]在流程图200中,操作从步骤202进行到步骤204。[0065]在步骤204,查询被参数化。在一个实施例中,查询参数化器320被配置为参数化接收的用户查询128。例如,在一个实施例中,查询参数化器320可以被配置为解析查询128以得到参数值实际数据),并且对于每个找到的参数值插入虚拟值,本质上是将参数值从可能敏感的数据值改变为一些其他的非敏感值。例如,参考上述基于SSN的查询示例,查询参数化器320可以生成相应的参数化查询。查询参数化器320可以在查询128中找到参数值“12345678”,并且可以在参数化查询中将该参数值改变为虚拟值,例如“ΟρΓ。数据服务器绝对无法将虚拟值Opl与原始参数值“12345678”相关。[0066]如图3中示出的,查询参数化器320生成参数化查询326。操作从步骤204进行到步骤206。[0067]在步骤206,向数据服务器提供参数化查询,以接收用户查询的转换版本的加密配置,转换版本能够被数据服务器在加密数据值上评估。例如,如图3示出,数据服务器接口310可以接收参数化查询326。数据服务器接口310被配置为用于与一个或多个数据服务器以及可选地与其他实体通信的通信接口。在一些实施例中,数据服务器接口310可能不需要存在。数据服务器接口310被配置为例如,通过图1的网络118向数据服务器提供例如,传送参数化查询326。[0068]在一个实施例中,数据服务器被配置为分析参数化查询326以确定查询128是否包含在数据服务器中被加密的数据,如果是,则确定查询128是否可以在数据服务器处在加密数据上被评估例如,查询128的一个或多个参数值是否被加密,例如上面示例中的SSN值“12345678”)。操作从步骤206进行到步骤208。[0069]在步骤208,从数据服务器接收响应。例如,如图3示出,数据服务器接口310可以接收查询分析响应328,并且可以将查询分析响应328转发到数据库客户端引擎304的转换查询生成器322。操作从步骤208进行到步骤210。[0070]在步骤210,确定用户查询能否被数据服务器评估。在一个实施例中,转换查询生成器322评估查询分析响应328,以确定数据服务器是指示了失败数据服务器不能在加密数据上评估查询128还是成功数据服务器可以在加密数据上评估查询128。如果查询分析响应328指示失败,则操作从步骤210进行到步骤212。如果查询分析响应328指示成功,则操作从步骤210进行到步骤214。[0071]在步骤212,接收结果,其指示在数据服务器处不能在加密数据值上评估用户查询。因此,在步骤212,在查询分析响应328中指示失败,因此数据服务器不能在加密数据值上评估查询128。因此,转换查询生成器322可以在查询结果130中提供处理查询128失败的指示,查询结果130可以由网络接口312传送给请求者。或者,可以实现另一过程来以另一种方式评估查询128。流程图200的操作在步骤212之后结束。[0072]在步骤214,从数据服务器接收确定的加密配置。在一个实施例中,如果转换查询生成器322在查询分析响应328中找到由数据服务器提供的加密配置,这指示数据服务器已经确定其可以在加密数据上评估查询128,并且已经提供了用于将查询128格式化转换成安全形式以提供给数据服务器进行评估的信息(例如,指令)。操作从步骤214进行到步骤216〇[0073]在步骤216中,基于加密配置生成用户查询的转换版本。在一个实施例中,转换查询生成器322使用在查询分析响应328中接收的加密配置,作为用于生成包括加密数据的查询128的转换版本的指令。转换查询生成器322基于加密配置生成转换查询。[0074]例如,加密配置可以(例如,通过参数标识符,通过在查询128中的位置等)指示查询128的哪些参数要在转换版本中被加密,指示用于加密参数的一个或多个加密方案,以及例如,通过密钥标识符等指示将被一个或多个加密方案用于加密参数的一个或多个数据加密密钥。对于特定查询,可以在加密配置中列出任何数目的参数以及对应的加密方案和密钥。因此,转换查询生成器322可以被配置为请求加密器308根据指定的加密方案和密钥来加密一个或多个参数值。在实施例中,如相关领域的技术人员所知的,加密器308可以被配置为实现一种或多种的加密方案,以将明文数据加密成密文。这样的加密方案可以包括公开和或私有密钥加密方案、同态加密方案(允许在密文上执行计算操作)、部分同态加密方案允许在密文上执行特定的一组计算操作)、确定性加密方案总是为相同的明文和密钥产生相同的密文)、概率性加密方案特定明文可以加密成一组可能的密文中的任何一个,在加密过程期间随机选择和或其他类型的加密方案。[0075]例如,对于示例性的基于SSN的查询,加密配置可以指示以下内容:[0076]对于参数值@pl[0077]使用加密方案X[0078]使用加密密钥Y[0079]因此,转换查询生成器322被配置为生成基于SSN的查询的转换版本,其包括使用加密密钥Y根据加密方案X加密的参数值“12345678”。使用具有加密密钥Y的加密方案X,可以通过加密器308加密参数值“12345678”,以生成加密值“!_HF%%”。在这样的示例中,基于SSN的查询可以用加密值表不为:SELECTFirstName,LastName,Base_Salary+Annual_BonusFromEmployeesWHERESSN=%如以下进一步描述的,加密配置还可以为转换查询生成器322提供用于对查询128进行其他转换的指令,包括改变参数的数据类型,改变操作和或其他转换。[0080]如图3示出,密钥存储库314包括主密钥316、第一密钥318a、第二密钥318b和任何附加数目的加密密钥。在某些情况下,在查询分析响应328中接收到的加密配置中指示的加密密钥可以存在于密钥存储库314中。因此,加密器308可以访问密钥存储库314中的加密密钥,并且按照加密配置指导的那样使用加密密钥来加密一个或多个参数。或者,查询分析响应328可以包括在加密配置中指示的一个或多个加密密钥。因此,加密器308可以使用与加密信息一起接收的加密密钥来按照指示加密一个或多个参数。[0081]在另一个实施例中,加密器308可能无法访问数据库应用300处的、在加密配置中指示的加密密钥。因此,加密器308可以被配置为从诸如数据服务器的另一个源请求加密密钥。在一个实施例中,数据服务器可以存储加密形式的一个或多个加密密钥,其可以被提供给数据库应用300处的加密器308。[0082]例如,在一个实施例中,加密器308可以根据图4进行操作。图4示出的流程图400提供了根据示例实施例的用于从数据服务器取回数据加密密钥以用于在用户查询的转换版本中加密查询数据的过程。下面描述流程图400。[0083]流程图400从步骤402开始。在步骤402,确定在加密配置中指示的数据加密密钥不存在于数据库应用。在一个实施例中,如上所述,转换查询生成器322可以访问加密器308,以根据指定的加密方案和密钥来加密参数值。加密器308可以确定加密密钥不可用,例如无法从密钥存储库314或其他位置取回加密密钥,没有给加密配置提供加密密钥等。[0084]在步骤404,向数据服务器提供对于不存在的数据加密密钥的请求。在一个实施例中,加密器308可以生成密钥请求334,其由数据服务器接口310提供给数据服务器。密钥请求334是对在数据库应用300处无法取回的加密密钥的请求。[0085]在步骤406,所请求的数据加密密钥的加密版本被接收。在一个实施例中,如图3示出,数据服务器接口310可以响应于密钥请求334从数据服务器接收加密形式的加密密钥336,并且可以将加密密钥336的加密版本提供给加密器308。[0086]在步骤408,用数据库应用处可用的主密钥来对数据加密密钥的加密版本进行解密。在一个实施例中,加密器308可以访问密钥存储库314中的主密钥316,并且使用主密钥316来解密所接收的加密密钥336的加密版本。此外,加密器308可以可选地将加密密钥336的解密或加密版本存储在密钥存储库314中以供后续使用。[0087]在步骤410,使用数据加密密钥对参数数据值进行加密。在一个实施例中,加密器308可以使用加密密钥336的解密版本,来根据指定的加密方案来加密参数值。加密器308可以将加密的参数值提供给转换查询生成器322。[0088]因此,转换查询生成器322根据在查询分析响应328中接收到的加密配置来生成查询128的转换版本。如图3示出,转换查询生成器322生成转换版本330。转换版本330是查询128的转换版本,并且以任何适当的格式包括查询128的任何加密的参数值而不是未加密的值)以及查询128的其余元素例如,任何操作、谓词、子句、变量等等)。此外,如以下在节II.B中的进一步详细描述的,转换版本330可以包括参数的一个或多个转换数据类型、一个或多个转换操作和或转换查询生成器322根据加密配置执行的其他转换。操作从步骤216进行到步骤218。[0089]在步骤218,用户查询的转换版本被提供给数据服务器。如图3示出,转换版本330被数据服务器接口310接收并(例如,通过图1的网络118转发到数据服务器。操作从步骤218进行到步骤220。[0090]在步骤220,从数据服务器接收用户查询的转换版本的评估结果。例如,如图3示出,数据服务器接口310从数据服务器接收评估查询结果332,并将其转发给数据库客户端引擎304的结果处理器324。评估查询结果332包括数据服务器处的查询处理器例如,图1中数据服务器104中的查询112处理转换版本330的结果。因此,评估查询结果332可以包括从一个或多个指定表取回的一个或多个行列值、由在取回的数据上执行的一个或多个操作确定的一个或多个值。评估查询结果332可以包括加密结果例如,加密列等),其中加密数据是从表中取回的,和或从在加密值上执行的操作生成的。操作从步骤220进行到步骤222〇[0091]在步骤222,结果的至少一部分被解密。在一个实施例中,结果处理器324可以被配置为处理包括在评估查询结果332中的查询结果,例如对返回的数据进行格式化等。当评估查询结果332中包括加密数据时,结果处理器324可以请求解密器306对加密的数据进行解密。在实施例中,如相关领域的技术人员所知的,解密器306可以被配置为实现一种或多种类型的解密方案,以将密文解密为明文。例如,解密器306可以实现解密方案,以对根据本文其他地方提到的或其他已知的任何加密方案加密的数据进行解密。注意,在一个实施例中,解密器306和加密器308可被包括在相同的功能块中。[0092]例如,对于上述示例性的基于SSN的查询,评估查询结果332可以指示包括在其中的任何加密数据的解密方案和密钥,例如:[0093]对于加密的FirstName数据[0094]使用解密方案W[0095]使用解密密钥Z[0096]在该示例中,解密器306可以使用解密方案W以及解密密钥Z来解密FirstName数据例如,包含患者姓名的数据列)(注意,在某些情况下,相同的数据加密密钥值可以用于相关的加密和解密方案)。在为了说明的目的而提供的一个示例中,使用解密方案W与加密密钥Z,接收到的加密值“*~87DF”可以通过解密器306解密,以生成解密值“Samuel”。[0097]在一些情况下,在评估查询结果332中指示的解密密钥可以存在于密钥存储库314中。因此,解密器306可以访问密钥存储库314中的解密密钥,并且使用解密密钥来按照评估查询结果332所指示的那样来解密一个或多个参数。或者,评估查询结果332可以包括用于解密查询结果的一个或多个解密密钥。因此,解密器306可以按照指导,使用与评估查询结果332—起接收到的解密密钥来解密一个或多个数据值。[0098]在另一个实施例中,解密器306可能无法访问数据库应用300处的、在加密数据的评估查询结果332中指示的解密密钥。因此,解密器306可以被配置为从诸如数据服务器的另一个源请求解密密钥。在一个实施例中,数据服务器可以以加密的形式存储一个或多个解密密钥,该解密密钥可以被提供给数据库应用300处的解密器306。[0099]例如,在一个实施例中,解密器306可以根据图5进行操作。图5示出的流程图500提供了根据示例实施例的从数据服务器取回数据加密密钥以用于解密查询结果的过程。以下描述流程图500。[0100]流程图500从步骤502开始。在步骤502,确定结果中的至少一个数据值的数据解密密钥不存在于数据库应用。在一个实施例中,如上所述,结果处理器324可以访问解密器306,以根据指定的解密方案和密钥来对评估查询结果332的加密数据进行解密。解密器306可以确定解密密钥不可用,例如无法从密钥存储库314或其他位置取回解密密钥,评估查询结果332中未提供解密密钥等。[0101]在步骤504,向数据服务器提供对数据解密密钥的请求。在一个实施例中,解密器306可以生成密钥请求338,其由数据服务器接口310提供给数据服务器。密钥请求338是对数据库应用300中无法取回的解密密钥的请求。[0102]在步骤506,从数据服务器接收数据解密密钥的加密版本。在一个实施例中,如图3示出,数据服务器接口310可以响应于密钥请求338,从数据服务器接收解密密钥340的加密版本,并且可以向解密器306提供解密密钥340的加密版本。[0103]在步骤508,用数据库应用处可用的主密钥来对数据解密密钥的加密版本进行解密。在一个实施例中,解密器306可以根据指定的解密方案使用解密密钥340对解密密钥340的加密版本进行解密。解密器306可以可选地将解密密钥340的解密或加密版本存储在密钥存储库314中以供后续使用。[0104]在步骤510,使用数据解密密钥对至少一个数据值进行解密。在一个实施例中,解密器306可以根据指定的解密方案使用解密密钥340的解密版本来解密数据值。因此,解密器306可以将解密数据提供给结果处理器324。[0105]这样,结果处理器324从数据服务器接收评估查询结果332。结果处理器324可以根据需要对评估查询结果332的数据进行格式化,并且可以使用解密器306来解密任何加密的数据。如图3示出,结果处理器324生成查询结果130,以包括在评估查询结果332中接收的、根据需要进行格式化并解密的数据。操作从步骤222进行到步骤224。[0106]在步骤224,向请求者传送解密结果。如图3示出,网络接口312从结果处理器324接收查询结果130,并且将查询结果130传送给请求者例如,通过网络110传送给图1中第一用户设备108a处的应用116a。以这种方式,用户查询128以安全有效的方式被处理,其中任何敏感数据在数据服务器不可信实体)中被加密密文),同时能够在数据库应用300可信实体处处于明文。流程图200的操作可以在步骤224之后结束。[0107]B.用于处理查询的示例数据服务器侧实施例[0108]在实施例中,可以以各种方式配置数据服务器104和查询处理器112来处理所接收的查询。例如,图6示出的流程图600提供了根据示例实施例的在数据服务器中用于以维护数据安全的方式来处理用户查询的过程。在实施例中,查询处理器112可以根据流程图600来操作。为了说明的目的,下面参照图7描述流程图600。图7示出了根据示例实施例的包含被配置为与数据库应用进行通信以处理用户查询的查询处理器702的数据服务器700的框图。数据服务器700是数据服务器104的示例,查询处理器702是图1中查询处理器112的示例。如图7示出,数据服务器700包括查询处理器702、存储器704、数据库应用接口706和密钥接口708。查询处理器702包括加密配置生成器710和转换查询评估器712。存储器704存储数据库714、密钥存储库716和元数据720。下面描述数据服务器700、查询处理器702和流程图600。应当注意,流程图600的步骤不一定按照图6示出的顺序发生,也可以按其他顺序发生。[0109]图6的流程图600从步骤602开始。在步骤602,从数据库应用接收参数化查询。例如,如图7示出,数据服务器700的数据库应用接口706可以(例如,从图1中的数据库应用106或图3的数据库应用300接收参数化查询326,并且可以转发参数化查询326,使其被查询处理器702的加密配置生成器710接收。数据库应用接口706被配置为用于与一个或多个数据库应用(以及可选地与其他实体进行通信的通信接口。在一些实施例中,数据库应用接口706可能不需要存在。[0110]如上所述,参数化查询326是查询128的修改版本,其针对以任何形式存储在数据库714中的数据。参数化查询326包括代替查询128的实际参数值的虚拟值,使得敏感数据不被提供给数据服务器700。操作从步骤602进行到步骤604。[0111]在步骤604,分析参数化查询以确定用户查询的转换版本的加密配置,转换版本能够被数据服务器在加密数据值上评估。在一个实施例中,加密配置生成器710被配置为分析参数化查询326,以确定是否存在查询128的加密配置,使得查询128可以由查询处理器702在加密数据值例如,加密参数值上进行评估,而不是在明文数据上进行评估。如果可以在加密数据值上评估查询128,则在数据服务器700处可以维护查询128的数据的安全性。[0112]因此,在一个实施例中,在生成加密配置之前,加密配置生成器710可以分析参数化查询326,以确定是否可以生成加密配置。该分析可以以各种方式进行。例如,在一个实施例中,加密配置生成器710可以确定参数化查询326是否包括数据服务器处不支持的对加密数据的任何操作。如果是这样,则查询处理器702不能在加密数据上评估查询128。[0113]例如,在一个实施例中,参数化查询326可以被加密配置生成器710转换成表达式树的形式,或者可以从数据库应用以这种形式被接收。在表达式树表示中,可以将每个参数值或其他类型的变量设置为向内分支的树的“叶”,并且表达式操作可以在树的分支的交叉处。树的每个表达式接收参数值、变量和或先前评估的表达式的解中的一个或多个,作为输入值,并且生成表达式解作为输出。因此,加密配置生成器710可以在叶子处开始评估表达式树,并且可以向内遍历以分析每个表达式操作的输入,直到确定表达式树的最终结果。如果即使一个表达式操作接收到在数据服务器700处被加密的输入值,以及已知特定表达式操作不能在特定类型的加密或者根本加密数据上进行评估,则分析整个失败,并且查询128不能在数据服务器700处在加密数据上进行评估。然而,如果表达式树中的所有操作都被确定为即使它们的输入被加密时也能够在这些输入上进行评估,则可以在数据服务器700处在加密数据上对查询128进行评估,并且可以生成加密配置。[0114]在一个实施例中,对于可以在查询128中接收到的每种类型的操作例如,加法、减法、乘法、除法等),对该操作可以操作什么类型的加密输入维护一个记录如果有的话)。例如,加密配置生成器710可以存储表或其他数据结构,其指示哪些操作可以在作为输入的哪些类型的加密数据上执行如果有的话),或者可以使用另一种技术来维护哪些操作可以在哪些类型的加密数据上执行的记录。这样的数据结构可以存储在存储器704中或其他地方。[0115]此外,元数据720可以包括以下元数据,其指示数据库714中的哪些数据例如,哪些列)被加密,对于每个数据例如,对于每一列特定加密方案是什么,以及每个数据的加密密钥是什么。当分析参数化查询326的表达式树时,加密配置生成器710可以使用该元数据。例如,当分析数据库714中的一个或多个加密列上的特定操作时,加密配置生成器710可以检查元数据720以确定该列的加密方案,并且可以从上述数据结构确定当一列或多列根据其特定的加密方案被加密时,特定的操作是否可以在所述一列或多列上执行。[0116]如果加密配置生成器710确定参数化查询326不包括数据服务器处不支持的对加密数据的任何操作,则加密配置生成器710确定参数化查询326的加密配置。加密配置生成器710可以通过解析参数化查询326的内容以获取参数值例如,指示的列、谓词参数等来执行该功能,这些参数值都是潜在加密查询项。加密配置生成器710搜索元数据720来识别对应于所有潜在加密查询项的列,以确定在数据库714中它们相应的加密方案和密钥,如果有的话。加密配置生成器710生成加密配置,以指示查询128的哪些参数被加密以及它们相应的加密方案和数据加密密钥。如图7示出,加密配置生成器710生成包括加密配置的查询分析响应328。[0117]加密配置包括被配置为使数据库应用生成查询128的转换版本330的信息,以上有进一步描述。在一个实施例中,加密配置生成器710可以生成加密配置,其包括数据库应用为了生成转换版本330将遵循的指令,和或可以包括对查询128的转换。这样的指令转换可以包括一个或多个以下潜在类型:[0118]a使用加密配置中指示的加密方案和密钥来在转换版本330中加密查询128的参数值;[0119]⑹在转换版本330中转换查询128的参数的数据类型;和或[0120]c在转换版本330中转换查询128的操作。[0121]出于说明的目的,下面重复上面的示例性的基于SSN的查询的参数版本:SELECTFirstName,LastName,Base_Salary+Annual_BonusFromEmployeesWHERESSN=Opl在该示例中,Base_Salary和Annual_Bonus的类型是INT整数),SSN的类型是CHAR字符),SSN在数据库714中根据确定性的加密方案X被加密,Base_Salary和Annual_Bonus根据部分同态加密PHE方案Y被加密。[0122]在一个实施例中,加密配置生成器710可以评估这种示例参数化查询是否能在加密数据上被评估,如果能,则可以为该示例参数化查询生成将被包括在加密配置中的指令,如下:[0123]1通过根据以下动作确定是否存在对加密数据的任何不支持的操作,来确定参数化查询能否在加密数据上被评估:[0124]a确认数据库714中的SSN列是通过支持相等(=操作的加密方案而被加密的。SSN列从参数化查询中被识别推断。该确认可以通过检查元数据720得到SSN的加密方案来执行,在该示例中加密方案为确定性加密方案X。确定性加密方案确实支持相等操作,所以针对SSN列不会发生失败随机加密方案不支持相等操作,因为无法总是生成相同的加密结果。所以如果SSN的加密方案是随机方案,则这个检查就会失败)。[0125]⑹确认数据库714中的Base_Salary和Annual_Bonus列是通过支持加法操作的加密方案被加密的。该确认可以通过检查元数据720得到Base_Salary和Annual_Bonus的加密方案来执行,在该示例中加密方案为PHE方案Y。该实例中,PHE方案Y支持加法操作,所以针对Base_Salary和Annual_Bonus列,不会发生失败如果PHE方案Y不支持加法操作,则这个检查就会失败)。[0126]因此,该示例性参数化查询能在加密数据上被评估,因为不存在对加密数据的不支持的操作,并且因此可以如下生成加密配置。[0127]2生成具有指令的加密配置:[0128]a加密指令:元数据720指示SSN列根据加密方案X被加密。因此,创建根据加密方案X来对在查询128的转换版本中提供给数据服务器700的SSN参数值进行加密的指令。[0129]⑹数据类型转换:在查询128中,Base_Salary和Annual_Bonus是INT类型,SSN是0^1?类型。然而,因为886_31^和41111皿1_8〇而8以加密形式物理地存储在数据库714中,所以它们的加密版本的数据类型是BINARY。因此,可以生成在转换版本中转换查询128以使用Base_Salary和Annual_Bonus的加密数据类型的指令。[0130]c执行一个或多个操作:加密配置生成器710可以向数据库应用提供指令,所述指令用于在查询128的转换版本中的查询128的参数值上执行一个或多个任意操作功能表达式。任何数目和任何种类的操作都可以被执行,例如删除尾部或前导空格、转换字符串数据到大写或其他)、转换字符串到整数、根据特定日期格式来格式化数据、转化时间的第一格式例如,UTC时间)到时间的第二格式例如,当地时间)等。正如相关领域技术人员将从本文教导中所知的,加密配置生成器710可以指导数据库应用执行其他类型的操作。[0131]此外,加密配置生成器710可以指出转换查询评估器712将在查询128的转换版本上执行的操作转换和或转换查询评估器712可以自行确定这些)。例如,假设(出于说明的目的)对于加密方案Y,与非加密值上的加法等同的操作是加密值上的乘法。因此,加密配置生成器710可以指出这样的指令,该指令使转换查询评估器712在评估转换查询时将Base_Salary和Annual_Bonus的加法转换成Base_Salary和Annual_Bonus的加密版本的乘法。[0132]因此,响应于上述示例参数化查询而提供给数据库应用的加密配置可以包括这些指令,以及可选的SSN的加密密钥的加密副本。[0133]如此,在步骤606,如果参数化查询326的加密配置被确定(即确定可以在加密输入上评估),则操作从步骤606进行到步骤612。如果失败,则操作从步骤606进行到步骤608。[0134]在步骤608,确定用户查询的能够被数据服务器在加密数据值上评估的转换版本的加密配置失败。如以上参照图6所描述的,基于参数化查询326的分析,由于参数化查询128包括数据服务器700处不支持的对加密数据的操作,所以确定查询128的能够被数据服务器在加密数据值上评估的转换版本的加密配置可能会失败。操作从步骤608进行到步骤610〇[0135]在步骤610,将该失败通知给数据库应用。在一个实施例中,指示失败的信息可以由加密配置生成器710在查询分析响应328中提供,查询分析响应328由数据库应用接口706传送给数据库应用。流程图600的操作在步骤610之后结束。[0136]在步骤612,向数据库应用提供所确定的加密配置。例如,如图7示出,加密配置可以由加密配置生成器710在查询分析响应328中提供,查询分析响应328由数据库应用接口706传送给数据库应用。[0137]注意,如上所述,数据库应用基于接收到的加密配置生成查询128的转换版本例如,图2的步骤216。在一个实施例中,加密配置可以指示将被数据库应用在转换版本330中加密的一个或多个参数值。如上所述,数据库应用可以访问用来加密参数值的加密密钥。或者,数据库应用可能必须从数据服务器700请求数据加密密钥的副本。[0138]例如,图8示出的流程图800提供了根据示例实施例的在数据服务器中用于为数据库应用对数据加密密钥的请求进行服务的过程。下面描述流程图800。[0139]流程图800从步骤802开始。在步骤802,从数据库应用接收对数据加密密钥的请求,该数据加密密钥被配置为加密用户查询的一个或多个参数值。在一个实施例中,如图7示出,数据库应用可以生成由数据库应用接口706接收并向密钥接口708转发的密钥请求334。如更早前所述,密钥请求334是对在数据库应用中无法取回的加密密钥的请求。[0140]在步骤804,从包含使用至少一个主密钥加密的数据加密密钥的密钥存储库中取回数据加密密钥的加密版本。密钥接口708被配置为服务于数据库应用对密钥存储库716的加密解密密钥的请求,例如第一密钥718a和第二密钥718b。任何数目的密钥都可以存储在密钥存储库716中。另外,存储在密钥存储库716中的密钥718a和718b以及其他密钥)可以使用数据库应用处可得而数据服务器700处不可得的主密钥(例如,图3中的主密钥316进行加密。通过这种方式,在数据服务器700处就无法滥用密钥718a和718b来解密和危害数据库714的加密数据。[0141]因此,响应于密钥请求334,密钥接口708可以从密钥存储库716中取回密钥请求334中指定的一个或多个数据加密密钥。[0142]在步骤806,向数据库应用提供数据加密密钥的加密版本。在一个实施例中,如图7示出,密钥接口708可以向数据库应用接口706提供加密的)加密密钥336,数据库应用接口706再向数据库应用提供加密密钥336。数据库应用可以使用主密钥对加密密钥336进行解密,并且可以使用解密的密钥来在查询128的转换版本中加密数据,以再提供给数据服务器700〇[0143]回到图6,在步骤614,从数据库应用接收用户查询的转换版本。例如,如图7示出,用户查询128的转换版本330被数据库应用接口310从数据库应用接收,并被转发给转换查询评估器712。在一个实施例中,转换版本330包括一个或多个加密参数值,其是根据在查询分析响应328中传送到数据库应用的加密配置进行加密的。转换版本330可选地包括如上所述的针对数据库应用的指令。操作从步骤614进行到步骤616。[0144]注意在一个实施例中,步骤614可以包括验证用户查询的转换版本的过程。该验证可以由转换查询评估器712来执行,以确认用户查询128的转换版本330是可执行的。任何合适类型的验证都可以被执行,包括检查转换版本330的语法的正确性,比较转换版本330和参数化查询326以确认与同一用户查询128的关系,检查加密配置中的所有指令都在数据库应用中被执行了,检查转换版本330中的参数使用的加密类型与数据库714中相应列的加密匹配例如,通过参考元数据720,和或通过执行其他任何种类或类型的验证的任何动作。如果转换版本330在验证过程中有错误,则转换查询评估器712可以与数据库应用通信,以请求对转换版本330进行更正。[0145]在步骤616,评估用户查询的转换版本来生成结果。在一个实施例中,转换查询评估器712评估转换版本330来生成查询结果。在一个实施例中,以与查询引擎评估接收的常规查询类似的方式,转换查询评估器712评估转换版本330,例如,通过取回与转换版本330的参数值其可以被加密或不被加密对应的任意列(其可以被加密或不被加密),在列和或参数值上执行操作,其可以包括在加密值上允许的操作和或可以包括在参数值上转换操作例如,执行加密值的乘法而不是非加密值的加法),以及生成查询所定义的查询结果,其可以包括加密数据。操作从步骤616进行到步骤618。[0146]在步骤618,向数据库应用提供结果以及元数据,该元数据指示被配置为解密至少一部分结果的至少一个数据解密密钥。例如,如图7示出,转换查询评估器712生成评估查询结果332,其包括指示转换版本330的评估结果的信息。评估查询结果332被提供给数据库应用接口706,数据库应用接口706将评估查询结果332传送给数据库应用。[0147]在一个实施例中,转换查询评估器712也可以在评估查询结果332中包括元数据,元数据指示查询128的)原始参数的数据类型,指示哪些查询结果数据被加密,并且指示用于对加密数据进行解密的加密方案和密钥。以这种方式,在向请求者提供查询结果130之前例如,图2中的步骤224,数据库应用可以对评估查询结果332的被加密例如,图2中的步骤222成相应数据类型的任何部分进行解密。[0148]如上所述,数据库应用可以访问用来解密查询结果的解密密钥。或者,数据库应用可能必须从数据服务器700请求数据解密密钥的副本。[0149]例如,图9示出的流程图900提供了根据示例实施例的在数据服务器中为数据库应用对数据解密密钥的请求进行服务的过程。下面描述流程图900。[0150]流程图900从步骤902开始。在步骤902,从数据库应用接收对数据解密密钥的请求,该数据解密密钥被配置为解密至少一部分结果。数据库应用可以生成由数据库应用接口706接收并向密钥接口708转发的密钥请求338。如上所述,密钥请求338是对在数据库应用300中无法取回的解密密钥的请求。[0151]在步骤904,从包含使用至少一个主密钥加密的数据加密密钥的密钥存储库中取回数据解密密钥的加密版本。响应于密钥请求338,密钥接口708可以从密钥存储库716中取回在密钥请求334中指定的一个或多个数据解密密钥。[0152]在步骤906,向数据库应用提供数据解密密钥的加密版本。在一个实施例中,如图7示出,密钥接口708可以向数据库应用接口706提供加密的)解密密钥340,数据库应用接口706再向数据库应用提供解密密钥340。数据库应用可以使用主密钥来对解密密钥340进行解密,并且可以使用解密的密钥来解密评估查询结果332的数据。III.示例移动和固定设备实施例[0153]数据库应用系统102、数据服务器104、数据库应用106、第一用户设备108a、第二用户设备108b、查询处理器112、数据库客户端114、应用116a、应用116b、数据库应用300、数据库客户端302、数据库客户端引擎304、解密器306、加密器308、数据服务器接口310、查询参数化器320、转换查询生成器322、结果处理器324、数据服务器700、查询处理器702、数据库应用接口706、密钥接口708、加密配置生成器710、转换查询评估器712、流程图200、流程图400、流程图500、流程图600、流程图800和流程图900可以在硬件或与软件和或固件结合的硬件中实现。例如,数据库应用系统102、数据服务器104、数据库应用106、查询处理器112、数据库客户端114、应用116a、应用116b、数据库应用300、数据库客户端302、数据库客户端引擎304、解密器306、加密器308、查询参数化器320、转换查询生成器322、结果处理器324、数据服务器700、查询处理器702、加密配置生成器710、转换查询评估器712、流程图200、流程图400、流程图500、流程图600、流程图800和或流程图900可以被实现为计算机程序代码指令,其被配置为在一个或多个处理器中执行,并存储在计算机可读存储介质中。或者,数据库应用系统102、数据服务器104、数据库应用106、第一用户设备108a、第二用户设备108b、查询处理器112、数据库客户端114、应用116a、应用116b、数据库应用300、数据库客户端302、数据库客户端引擎304、解密器306、加密器308、数据服务器接口310、查询参数化器320、转换查询生成器322、结果处理器324、数据服务器700、查询处理器702、数据库应用接口706、密钥接口708、加密配置生成器710、转换查询评估器712、流程图200、流程图400、流程图500、流程图600、流程图800和或流程图900可以被实现为硬件逻辑电路。[0154]例如,在一个实施例中,数据库应用系统102、数据服务器104、数据库应用106、第一用户设备l〇8a、第二用户设备108b、查询处理器112、数据库客户端114、应用116a、应用116b、数据库应用300、数据库客户端302、数据库客户端引擎304、解密器306、加密器308、数据服务器接口310、查询参数器320、转换查询生成器322、结果处理器324、数据服务器700、查询处理器702、数据库应用接口706、密钥接口708、加密配置生成器710、转换查询评估器712、流程图200、流程图400、流程图500、流程图600、流程图800和或流程图900中的一个或多个,以任何组合,可以一起在SoC中实现。SoC可以包括集成电路芯片,该芯片包括处理器例如,中央处理单元CPU、微控制器、微处理器、数字信号处理器DSP等)、存储器、一个或多个通信接口和或其他电路中的一个或多个,并且可以可选地执行接收的程序代码和或包括嵌入式固件以执行功能。[0155]图10描绘了可以在其中实现实施例的计算设备1000的示例性实现。例如,数据服务器104、数据库应用106、第一用户设备108a、第二用户设备108b、数据库应用300和或数据服务器700可以在类似于固定计算机实施例中的计算设备1000的一个或多个计算设备中实现,包括计算设备1000的一个或多个特征和或替代特征。本文提供的计算设备1000的描述是为了说明的目的而提供的,并不旨在限制。正如相关领域技术人员所知,实施例可以在其他类型的计算机系统中实现。[0156]如图10示出,计算设备1000包括被称为处理器电路1002的一个或多个处理器、系统存储器1004和将包括系统存储器1004的各种系统部件耦合到处理器电路1002的总线1006。处理器电路1002是电路和或光电路,作为中央处理单元CPU、微控制器、微处理器、和或其他物理硬件处理器电路,在一个或多个物理硬件电路设备元件和或集成电路设备半导体材料芯片或裸片)中实现。处理器电路1002可以执行存储在计算机可读介质中的程序代码,例如操作系统1030、应用程序1032、其他程序1034等的程序代码。总线1006代表任何类型的总线结构中的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任何一种的处理器或本地总线。系统存储器1004包括只读存储器ROM1008和随机存取存储器RAM1010。基本输入输出系统BIOS1012存储在ROM1008中。[0157]计算设备1000也具有一个或多个以下驱动器:用于读取和写入硬盘的硬盘驱动器1014,用于读取或写入可移动磁盘1018的磁盘驱动器1016,以及用于从诸如CDR0M,DVDROM或其他光学介质的可移动光盘1022读取或写入的光盘驱动器1020。硬盘驱动器1014、磁盘驱动器1016和光盘驱动器1020分别通过硬盘驱动器接口1024、磁盘驱动器接口1026和光驱接口1028连接到总线1006。驱动器及其相关联的计算机可读介质为计算机提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。虽然描述了硬盘、可移动磁盘和可移动光盘,但是可以使用其他类型的基于硬件的计算机可读存储介质来存储数据,诸如闪存卡、数字视频盘、RAM、ROM和其他硬件存储介质。[0158]多个程序模块可以存储在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作系统1030、一个或多个应用程序1032、其他程序1034和程序数据1036。应用程序1032或其他程序1034可以包括例如计算机程序逻辑例如,计算机程序代码或指令),用于实现数据库应用系统102、查询处理器112、数据库客户端114、应用116a、应用116b、数据库客户端302、数据库客户端引擎304、解密器306、加密器308、查询参数化器320、转换查询生成器322、结果处理器324、查询处理器702、加密配置生成器710、转换查询评估器712、流程图200、流程图400、流程图500、流程图600、流程图800、和或流程图900包括流程图200、400、500、600、800、900中任何合适的步骤)、和或本文所述的其它实施例。[0159]用户可以通过诸如键盘1038和指针设备1040的输入设备将命令和信息输入到计算设备1000中。其它输入设备未示出)可以包括麦克风、操纵杆、游戏手柄、碟形卫星天线、扫描仪、触摸屏和或触控板、接收语音输入的语音识别系统、接收手势输入的手势识别系统等。这些和其它输入设备通常通过耦合到总线1006的串行端口接口1042连接到处理器电路1002,但是也可以通过诸如并行端口、游戏端口或通用串行总线(USB的其他接口来连接。[0160]显示屏1044还经由诸如视频适配器1046的接口连接到总线1006。显示屏1044可以在计算设备1000的外部或并入其中。显示屏1044可以显示信息,以及作为用于例如通过触摸、手指手势、虚拟键盘等接收用户命令和或其他信息的用户界面。除了显示屏1044之夕卜,计算设备1000可以包括诸如扬声器和打印机的其它外围输出设备未示出)。[0161]计算设备1000通过适配器或网络接口1050、调制解调器1052或用于建立网络通信的其他装置来连接到网络1048例如,因特网)。可以是内部或外部的调制解调器1052,可以经由串行端口接口1042连接到总线1006,如图10所示,或者可以使用包括并行接口的另一种接口类型连接到总线1006。[0162]本文所使用的术语“计算机程序介质”、“计算机可读介质”和“计算机可读存储介质”用于指代物理硬件介质,例如与硬盘驱动器1014相关联的硬盘,可移动磁盘1018,可移动光盘1022,诸如RAM、ROM、闪存卡、数字视频盘、zip盘、MEM、基于纳米技术的存储设备的其他物理硬件介质,以及其他类型的物理有形硬件存储介质包括图12的存储器1220。这样的计算机可读存储介质与通信介质区分开且并不重叠不包括通信介质)。通信介质体现计算机可读指令、数据结构、程序模块或诸如载波的调制数据信号中的其他数据。术语“调制数据信号”是指以将信息编码在信号中的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如声学、RF、红外和其它无线介质的无线介质,以及有线介质。实施例还涉及这样的通信介质,其与涉及计算机可读存储介质的实施例分开且不重叠[0163]如上所述,计算机程序和模块包括应用1032和其他程序1034可以存储在硬盘、磁盘、光盘、R〇M、RAM或其他硬件存储介质上。这样的计算机程序也可以通过网络接口1050、串行端口接口1042或任何其他接口类型来接收。应用执行或加载这样的计算机程序时,计算设备1000能够实现本文讨论的实施例的特征。因此,这样的计算机程序表示计算设备1000的控制器。[0164]实施例还涉及包括存储在任何计算机可读介质上的计算机代码或指令的计算机程序产品。该计算机程序产品包括硬盘驱动器、光盘驱动器、存储设备包、便携式记忆棒、存储卡和其他类型的物理存储硬件。[0165]IV.示例实施例[0166]在一个实施例中,在至少一个计算设备中实现的数据服务器中提供了一种方法,包括:从数据库应用接收参数化查询,参数化查询是数据库应用从请求者接收的用户查询的参数化版本;分析参数化查询以确定用户查询的转换版本的加密配置,转换版本能够被数据服务器在加密数据值上评估;对数据库应用进行响应。[0167]在一个实施例中,该分析包括:确定用户查询的能够被数据服务器在加密数据值上评估的转换版本的加密配置失败,该失败是因为确定参数化查询包括数据服务器处不支持的对加密数据的操作;并且该响应包括:向数据库应用通知该失败。[0168]在一个实施例中,用户查询被配置为在数据服务器处的至少一个表中存储的数据上被评估,该方法还包括:存储元数据,其指示加密数据值所在的、至少一个表的一个或多个列,并且指示加密数据值如何被加密。[0169]在一个实施例中,该响应包括:向数据库应用提供确定的加密配置。[0170]在一个实施例中,该加密配置包括数据库应用要执行的将用户查询转换为用户查询的转换版本的指令。[0171]在一个实施例中,该加密配置指示用户查询的哪些参数将在转换版本中被加密,用于加密参数的一个或多个加密方案,以及一个或多个加密方案所使用的用于加密参数的一个或多个数据加密密钥。[0172]在一个实施例中,该提供包括:将用于加密用户查询的至少一个参数的至少一个数据加密密钥与确定的加密配置一起提供给数据库应用。[0173]在一个实施例中,该方法还包括:从数据库应用接收用户查询的转换版本,该用户查询的转换版本包括一个或多个加密参数值。[0174]在一个实施例中,该方法还包括:从数据库应用接收对数据加密密钥的请求,数据机密密钥被配置为加密用户查询的一个或多个参数值;从包含使用至少一个主密钥加密的数据加密密钥的密钥存储库取回数据加密密钥的加密版本;向数据库应用提供数据加密密钥的加密版本。[0〃5]在一个实施例中,该方法还包括:评估用户查询的转换版本以生成结果;将结果连同元数据一起提供给数据库应用,元数据指示至少一个数据解密密钥,该数据解密密钥被配置为解密至少一部分结果。[0176]在一个实施例中,该方法还包括:从数据库应用接收对数据解密密钥的请求,数据解密密钥被配置为解密至少一部分结果;从包含使用至少一个主密钥加密的数据解密密钥的密钥存储库取回数据解密密钥的加密版本;向数据库应用提供数据解密密钥的加密版本,数据解密密钥的解密版本在该方法期间不存在于数据服务器上。[0177]在另一个实施例中,至少一个计算设备包括:数据服务器,其包括存储器和被配置为从数据库应用接收查询的查询处理器,该查询由数据库应用从用户接收,该查询处理器包括配置为从数据库应用接收参数化查询的加密配置生成器,该参数化查询是由数据库应用从请求者接收的用户查询的参数化版本,该加密配置生成器被配置为分析参数化查询以确定用户查询的转换版本的加密配置,转换版本能够被数据服务器在加密数据值上评估,并且向数据库应用提供响应。[0178]在一个实施例中,响应于确定参数化查询包括数据服务器处不支持的对加密数据的操作,加密配置生成器被配置为使确定加密配置失败,并在响应中向数据库应用通知失败;以及响应于成功确定加密配置,加密配置生成器被配置为在响应中向数据库应用提供确定的加密配置。[0179]在一个实施例中,查询处理器还包括:转换查询分析器,被配置为从数据库应用接收用户查询的转换版本,用户查询的转换版本包括一个或多个加密参数值,评估用户查询的转换版本以生成结果,并且将结果连同元数据一起提供给数据库应用,元数据指示至少一个数据解密密钥,数据解密密钥被配置为解密至少一部分结果。[0180]在一个实施例中,在至少一个计算设备中实现的数据库应用中提供一种方法,包括:从请求者接收用户查询;对查询参数化;向数据服务器提供参数化查询以接收用户查询的转换版本的加密配置,转换版本能够被数据服务器在加密数据值上评估;从数据服务器接收响应。[0181]在一个实施例中,从数据服务器接收响应包括:接收不能在数据服务器处在加密数据值上评估用户查询的指示。[0182]在一个实施例中,从数据服务器接收响应包括:从数据服务器接收确定的加密配置;该方法还包括:基于加密配置生成用户查询的转换版本,用户查询的转换版本包括一个或多个加密参数值;向数据服务器提供用户查询的转换版本。[0183]在一个实施例中,加密配置指示用户查询的哪些参数将在转换版本中被加密,用于加密参数的一个或多个加密方案,以及一个或多个加密方案所使用的用于加密参数的一个或多个数据加密密钥,该生成包括:根据相应的指示的加密方案和数据加密密钥,对用户查询的被指示要被加密的参数的每个参数值进行加密。[0184]在一个实施例中,加密包括:确定在加密配置中指示的数据加密密钥不存在于数据库应用;向数据服务器提供对不存在的数据加密密钥的请求;接收所请求的数据加密密钥的加密版本;用数据库应用处可用的主密钥来对数据加密密钥的加密版本进行解密;使用数据加密密钥对参数数据值进行加密。[0185]在一个实施例中,该方法还包括:从数据服务器接收用户查询的转换版本的评估结果;解密结果的至少一部分;将解密的结果传送给请求者。[0186]在一个实施例中,解密包括:确定数据库应用处不存在结果中的至少一个数据值的数据解密密钥;向数据服务器提供对数据解密密钥的请求;从数据服务器接收数据解密密钥的加密版本;用数据库应用处可用的主密钥来对数据解密密钥的加密版本进行解密;使用数据解密密钥对至少一个数据值进行解密。[0187]V.结论[0188]虽然以上已经描述了本发明的各种实施例,但是应当理解,它们仅以示例的方式呈现,而不是限制。相关领域的技术人员将会理解,在不脱离所附权利要求限定的本发明的精神和范围的情况下,可以在形式和细节上进行各种改变。因此,本发明的广度和范围不应受上述任何示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。

权利要求:1.一种在至少一个计算设备中实现的数据服务器中的方法,包括:从数据库应用接收参数化查询,所述参数化查询是所述数据库应用从请求者接收到的用户查询的参数化版本;分析所述参数化查询以确定所述用户查询的转换版本的加密配置,所述转换版本能够被所述数据服务器在加密数据值上评估;以及利用基于分析所述参数化查询所确定的信息来对所述数据库应用进行响应。2.如权利要求1所述的方法,其中所述分析包括:对所述用户查询的转换版本的加密配置的确定失败,所述转换版本能够被所述数据服务器在加密数据值上评估,所述失败是因为确定所述参数化查询包括所述数据服务器处不支持的、对加密数据的操作;以及所述响应包括:向所述数据库应用通知所述失败。3.如权利要求1所述的方法,其中所述用户查询被配置为在所述数据服务器处的至少一个表中所存储的数据上被评估,所述方法还包括:存储元数据,所述元数据指示加密数据值所位于的、所述至少一个表的一个或多个列,并指示所述加密数据值被如何加密。4.如权利要求1所述的方法,其中所述响应包括:向所述数据库应用提供确定的所述加密配置。5.如权利要求4所述的方法,其中所述加密配置包括供所述数据库应用执行的指令,所述指令用于将所述用户查询转换为所述用户查询的所述转换版本。6.如权利要求4所述的方法,其中所述加密配置指示以下各项中的一项或多项:所述用户查询的哪些参数将在所述转换版本中被加密,哪些参数将具有在所述转换版本中被转换的数据类型,用于加密要被加密的参数的一个或多个加密方案,要对所述用户查询的参数执行的一个或多个操作,或者所述一个或多个加密方案将使用的、用于加密要被加密的所述参数的一个或多个数据加密密钥。7.如权利要求4所述的方法,其中所述提供包括:利用确定的所述加密配置向所述数据库应用提供用于加密所述用户查询的至少一个参数的至少一个数据加密密钥。8.如权利要求4所述的方法,还包括:从所述数据库应用接收所述用户查询的所述转换版本,所述用户查询的所述转换版本包括一个或多个加密参数值。9.如权利要求7所述的方法,还包括:从所述数据库应用接收对数据加密密钥的请求,所述数据加密密钥被配置为加密所述用户查询的一个或多个参数值;从密钥存储库取回所述数据加密密钥的加密版本,所述密钥存储库包含使用至少一个主密钥被加密的数据加密密钥;以及向所述数据库应用提供所述数据加密密钥的所述加密版本。10.如权利要求7所述的方法,还包括:评估所述用户查询的所述转换版本以生成结果;以及将所述结果连同元数据一起提供给所述数据库应用,所述元数据指示至少一个数据解密密钥,所述至少一个数据解密密钥被配置为解密所述结果的至少一部分。11.如权利要求10所述的方法,其中所述提供包括:将指示的所述数据解密密钥与所述结果一起提供给所述数据库应用。12.如权利要求10所述的方法,还包括:从所述数据库应用接收对数据解密密钥的请求,所述数据解密密钥被配置为解密所述结果的至少一部分;从密钥存储库取回所述数据解密密钥的加密版本,所述密钥存储库包含使用至少一个主密钥而被加密的数据解密密钥;以及向所述数据库应用提供所述数据解密密钥的所述加密版本,所述数据解密密钥的解密版本在所述方法期间不存在于所述数据服务器上。13.至少一个计算设备,包括:数据服务器,其包括存储器和查询处理器,所述查询处理器被配置为从数据库应用接收查询,所述查询由所述数据库应用从用户接收,所述查询处理器包括:加密配置生成器,其被配置为从所述数据库应用接收参数化查询,所述参数化查询是由所述数据库应用从请求者接收到的用户查询的参数化版本,所述加密配置生成器被配置为分析所述参数化查询以确定所述用户查询的转换版本的加密配置,并且向所述数据库应用提供响应,所述转换版本能够被所述数据服务器在加密数据值上评估。14.如权利要求13所述的至少一个计算设备,其中响应于确定所述参数化查询包括所述数据服务器处不支持的、对加密数据的操作,所述加密配置生成器被配置为在所述响应中向所述数据库应用通知失败;以及响应于成功确定所述加密配置,所述加密配置生成器被配置为在所述响应中向所述数据库应用提供确定的所述加密配置。15.如权利要求13所述的至少一个计算设备,其中所述查询处理器还包括:转换查询分析器,其被配置为:从所述数据库应用接收所述用户查询的所述转换版本,所述用户查询的所述转换版本包括一个或多个加密参数值;评估所述用户查询的所述转换版本以生成结果;以及将所述结果连同元数据一起提供给所述数据库应用,所述元数据指示至少一个数据解密密钥,所述至少一个数据解密密钥被配置为解密所述结果的至少一部分。

百度查询: 微软技术许可有限责任公司 用于对加密数据进行查询处理的数据库服务器和客户端

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。