CN107408135B - 用于对加密数据进行查询处理的数据库服务器和客户端 - Google Patents

用于对加密数据进行查询处理的数据库服务器和客户端 Download PDF

Info

Publication number
CN107408135B
CN107408135B CN201680018743.9A CN201680018743A CN107408135B CN 107408135 B CN107408135 B CN 107408135B CN 201680018743 A CN201680018743 A CN 201680018743A CN 107408135 B CN107408135 B CN 107408135B
Authority
CN
China
Prior art keywords
query
data
encryption
encrypted
database application
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.)
Active
Application number
CN201680018743.9A
Other languages
English (en)
Other versions
CN107408135A (zh
Inventor
P·安拓诺波洛斯
A·S·曼彻帕利
K·瓦斯瓦尼
于浩海
M·J·兹威灵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN107408135A publication Critical patent/CN107408135A/zh
Application granted granted Critical
Publication of CN107408135B publication Critical patent/CN107408135B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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/6227Protecting 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

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

Description

用于对加密数据进行查询处理的数据库服务器和客户端
背景技术
可以根据各种存储配置和实施方式在本地或远程存储数据。例如,云计算是与部署远程服务器和软件网络相关的最新发展,这些远程服务器和软件网络提供对资源和服务的集中式数据存储和在线访问,被称为“云服务”。一组云服务器可以为单个用户(“租户”)或多个相关或不相关用户(“多租户”系统)托管资源/服务。类似地,数据可以由实体“现场”存储,并且可以由该实体在该现场数据存储中访问。
数据泄露可能是遏制管理敏感的业务关键信息的应用采用云服务的主要因素。在公共云上,应用必须防范潜在的恶意云管理员、恶意合租户和其他可通过各种合法手段获取对数据的访问的实体。由于计算和存储平台本身不能被信任,所以以明文(未加密数据)出现在云平台上的任何位置(磁盘上、存储器中、电线上等)的任何数据都必须被视为容易受到泄漏或恶意破坏。在垂直行业中,例如金融、银行和医疗保健,合规性要求强制要求针对这些类型的威胁采取强有力的保护措施。
因此,在某些情况下,数据库服务器可以存储加密数据,但出于安全原因而无法访问加密密钥。这保证了存储在数据库中的任何数据都被加密,直到它传递到在受保护环境中运行的客户端应用(例如,由客户端实体管理的中间应用)。例如,数据库服务器可以使用部分同态加密(PHE)方案、安全硬件和/或计算的其他安全形式来处理加密形式的数据,这是因为数据库服务器不能访问加密密钥。PHE方案在不需要加密密钥的情况下,允许直接在加密数据上执行受限类别的操作,但不是所有操作。由于这些安全要求和加密数据的计算约束,难以实现以安全高效的方式来处理数据库上的查询。
发明内容
提供本发明内容以便以简化的形式介绍在下面的具体实施方式中进一步描述的构思的精华。本发明内容不旨在标识所要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求保护的技术方案的范围。
提供了数据服务器和数据库应用安全处理查询的方法、系统、装置和计算机程序产品。数据服务器从数据库应用接收参数化查询。参数化查询是数据库应用从请求者接收到的用户查询的参数化(包含非数据)版本。数据服务器分析参数化查询以确定用户查询的转换版本的加密配置。数据服务器能够在加密数据值上评估转换版本。如果参数化查询包括数据服务器处不支持的对加密数据的操作(例如,对不允许加和的利用加密方案加密的列进行加和),则数据服务器通过指示确定加密配置失败,来对数据库应用进行响应。或者,数据服务器通过向数据库应用提供确定的加密配置来进行响应。在这种情况下,数据库应用生成用户查询的转换版本,并将转换的版本提供给数据服务器。数据服务器评估用户查询的转换版本以生成查询结果,并将结果提供给数据库应用。数据库应用对结果进行解密,并将解密的结果提供给请求者。
本发明的其他特征和优点以及本发明的各种实施例的结构和操作,将在以下参照附图进行详细描述。应当注意,本发明不限于本文描述的具体实施例。在本文中给出这些实施例仅仅是为了说明的目的。基于本文包含的教导,附加实施例对相关领域的技术人员是显而易见的。
附图说明
并入本文并形成本说明书的一部分的附图图示了本申请的实施例,并且与说明书一起用于解释实施例的原理,使相关领域的技术人员能够进行和使用实施例。
图1示出了根据示例实施例的通信系统的框图,其中查询处理系统处理用户查询。
图2示出了提供根据示例实施例的在数据库应用中处理用户查询以维护数据安全的过程的流程图。
图3示出了根据示例实施例的包含数据库客户端的数据库应用的框图,数据库客户端被配置为基于用户查询生成参数化查询,基于由数据服务器提供的加密配置来生成用户查询的转换版本,并且提供转换版本到数据服务器以便执行。
图4示出了提供根据示例实施例的在数据库应用中用于从数据服务器取回用于对查询数据进行加密的数据加密密钥的过程的流程图。
图5示出了提供根据示例实施例的在数据库应用中用于从数据服务器取回用于解密查询结果的数据加密密钥的过程的流程图。
图6示出了提供根据示例实施例的在数据服务器中用于以维护数据安全的方式基于用户查询的转换版本来处理用户查询的过程的流程图。
图7示出了根据示例实施例的包含查询处理器的数据服务器的框图,查询处理器被配置为基于参数化的用户查询生成加密配置,向数据库应用提供加密配置,并且执行用户查询的转换版本。
图8和图9示出了提供根据示例实施例的在数据服务器中用于服务数据库应用对数据加密或解密密钥的请求的过程的流程图。
图10示出了可用于实现实施例的示例计算设备的框图。
从以下结合附图的详细描述中,本发明的特征和优点将变得更加明显。贯穿附图,相同附图标记标识相应元素。在附图中,相同附图标记通常指示相同的、功能上相似的和/或结构上相似的元件。元件首次出现的图由相应附图标记中最左边的数字指示。
具体实施方式
I.引言
本说明书和附图公开了包含本发明特征的一个或多个实施例。本发明的范围不限于所公开的实施例。所公开的实施例仅作为本发明的示例,并且所公开的实施例的修改版本也包括在本发明中。本发明的实施例由所附权利要求限定。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的参考指示所描述的实施例可以包括特定特征、结构或特点,但是每个实施例可能未必都包括该特定特征、结构或特点。此外,这样的短语不一定指代相同的实施例。另外,当结合一个实施例描述特定特征、结构或特点时,认为在本领域技术人员的知识范围内能够结合其他实施例来实现这种特征、结构或特点,不论这些其他实施例是否被明确描述。
以下描述了许多示例性实施例。应当注意,本文提供的任何节/小节标题不旨在限制。贯穿本文描述了实施例,并且任何类型的实施例都可以包括在任何节/小节中。此外,在任何节/小节中公开的实施例可以以任何方式与在同一节/小节和/或不同节/小节中描述的任何其它实施例组合。
II.安全有效处理查询的示例实施例
本文描述的实施例涉及使用加密来保护托管在不可信平台上的数据。虽然许多常规加密方案保留数据的机密性,但是这样的加密方案通常不允许不可信平台对加密数据运行任何计算。这大大降低了在云平台上托管应用的益处。
例如,数据服务器(例如,数据库服务器)可以使用部分同态加密(PHE)方案、安全硬件和/或其他安全形式的计算来处理一些加密数据,因为数据服务器可能不被认为是“可信的”,并因此其无法访问用于加密数据的加密密钥。PHE方案在不需要加密密钥的情况下,允许直接在加密数据上执行受限类别的操作,但不是所有操作。
根据实施例,当用户需要查询存储在数据服务器中的加密数据时,用户设备(“请求者”)通过数据库应用(也称为“客户端”)向数据服务器发送查询。由于数据服务器在非加密数据方面不值得信任,所以查询的所有参数、谓词等必须使用相应的加密密钥进行加密。返回给请求者的查询结果也被加密,并且必须被解密。通常,数据库应用解密数据并向请求者提供解密的数据。包括在查询本身中的数据(例如,参数值)在提供给数据服务器之前可能必须被加密,以避免在数据服务器处对查询数据的恶意利用。因此,在一个实施例中,可以将查询转换成安全形式,以提供给数据服务器。
因此,在一个实施例中,数据库应用被配置为在向数据服务器发送查询之前转换查询并加密查询参数。数据库应用还可以被配置为从另一个源获取用于数据加密/解密的加密密钥。
例如,数据库可以包括存储患者信息的“患者表”,对于每一个患者,在对应列中包括名字、姓和社会安全号码(SSN),每列可被加密。数据服务器可以为应用于数据库的查询服务,这些查询最初由数据库应用接收并提供给数据服务器。例如,用户可以在患者表上提交以下查询:
SELECT FirstName,LastName FROM Patients WHERE SSN=‘1234567’
该特定查询从表中的对应列请求SSN值为1234567的名字和姓的值。
由于表的SSN列被加密,因此数据库应用必须使用适当的加密算法和密钥对出现在查询谓词中的SSN参数值‘1234567’进行加密,使得数据服务器可以在加密数据上评估谓词。因为名字列和姓列是加密的,所以数据服务器为查询返回加密数据值。当查询结果返回到数据库应用时,数据库应用必须确定名字列和姓列的加密方案,以便对每行的值进行解密。对于具有中间变量、临时表等的复杂查询而言,该分析可能会变得复杂得多。
其他人试图通过在数据库客户端上添加用于分析查询的逻辑来解决这一问题。因此,数据库客户端必须具有加密元数据和查询编译器来分析查询,并确定哪些数据需要被加密以发送到数据服务器以及如何解密结果。这样的解决方案没有将数据服务器用作存储加密密钥的中心位置,而是希望每个数据库客户端通过其他方式获取加密密钥。这样的解决方案的缺点是必须扩展数据库客户端,使其具有卓越的查询编译能力,以管理加密元数据和使用资源来执行查询结果处理。这对于期望对存储在数据服务器中的数据进行查询的实体造成了困难,因为这些实体必须部署和管理更复杂的数据库客户端并提供适当的加密密钥。
根据实施例,扩展数据服务器以存储加密元数据,并分析用户查询,以确定它们是否可以在加密数据上执行。如果确定可以对加密数据执行查询,则数据服务器确定如何转换查询使得查询可以被执行,以及如何对每个参数进行加密。当数据服务器将查询结果返回到数据库应用时,数据服务器描述查询结果数据是如何被加密的,以便数据库应用能够解密结果。
此外,在一个实施例中,加密密钥可以存储在数据服务器处,使用数据库应用已知或可得的主加密密钥进行加密。以这种方式,数据库应用可以从中心位置(数据服务器)请求数据加密密钥,使用主密钥来解密数据加密密钥,并根据需要使用解密的密钥。
当用户提交查询时,用户可以像在未加密数据上执行查询一样提交查询。数据库应用向数据服务器发送查询的参数化形式,以便使用加密元数据进行分析。数据服务器回复数据库应用,指示如何转换查询,并指示要加密的查询参数以及加密方案和密钥。如果数据库应用没有适当的加密密钥,则数据库应用可以从数据服务器(或其他地方)请求密钥,并使用主密钥对密钥进行解密。
数据库应用向数据服务器发送转换的查询,并从数据服务器接收加密的查询结果以及如何解密查询结果的描述。数据库应用解密结果并将其返回给用户。
在一个实施例中,上述关于患者表的示例,当数据库应用接收到在谓词中有未加密值/参数的查询时,数据库应用向数据服务器提交请求以分析参数化查询。上述查询的示例参数化查询版本是“SELECT FirstName,LastName FROM Patients WHERE SSN=@pl”,其中谓词被参数化数据(“@p1”)填充,而不是从用户接收到的实际谓词数据(“1234567”)。数据服务器被配置为考虑列加密元数据来分析参数化查询。数据服务器验证相等谓词是否可以在SSN列上被评估。如果不能,数据服务器使查询失败。否则,数据服务器基于参数化查询生成加密配置,该加密配置描述应该被用来加密SSN参数数据以发送给数据服务器的加密算法和密钥。
一旦数据库应用从数据服务器接收到加密配置,数据库应用使用适当的加密方案对SSN参数值进行加密,并在数据服务器上执行查询。如果数据库应用没有适当的数据加密密钥,则数据库应用可以从数据服务器(或其他源)请求加密密钥,并使用数据库应用可得而数据服务器不可得的主密钥对数据加密密钥进行解密。一旦具有加密参数的查询被提交给了数据服务器,数据服务器就会在加密数据上执行查询。生成的结果集包括查询结果以及结果集的加密方案的指示。在该示例中,名字列和姓列被加密。因此,数据服务器将提供返回的名字列和姓列的加密方案与查询结果一起提供给数据库应用。使用该信息,数据库应用对每行中的结果值进行解密,并将结果返回给用户。
在实施例中,数据服务器具有查询编译和元数据管理能力,并且这些可被扩展以执行上述功能。因此,在数据服务器侧构建所描述的功能能够简化实施方式。
实施例还使数据库应用保持为相对较瘦(不复杂),并且数据库应用资源不被使用。数据库应用可以根据需要升级,而不必部署新的数据库应用。
此外,数据服务器可以用作数据加密密钥的中心位置,从而简化了实体的数据加密密钥管理。
因此,在实施例中,数据服务器处的数据库元数据跟踪表中哪些列被加密、这些列如何被加密以及加密密钥的加密版本如何被维护。提供数据库应用库的协议用于与数据服务器的交互,以识别查询或所存储过程中的哪些输入参数必须被加密以及如何加密。该协议也可以指示服务器需要的对查询的任何其他转换。该协议指示数据库应用如何接收从服务器取回的数据的加密信息。也提供了用于从数据服务器接收(加密形式的)加密密钥的协议。此外,在服务器中进行分析以确定是否可以基于加密数据来应答查询。
可以在各种环境中实现实施例。例如,图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可以各自是任何类型的固定或移动计算设备,包括移动计算机或移动计算设备(例如,
Figure BDA0001419931240000081
Figure BDA0001419931240000082
设备、个人数字助理(PDA)、膝上型计算机、笔记本电脑、诸如Apple iPadTM的平板电脑、上网本等),移动电话(例如,手机、诸如Microsoft
Figure BDA0001419931240000083
手机的智能手机、Apple iPhone、实现
Figure BDA0001419931240000084
AndroidTM操作系统的手机、
Figure BDA0001419931240000085
设备,
Figure BDA0001419931240000086
设备等),可穿戴式计算设备(例如,智能手表、包括诸如
Figure BDA0001419931240000087
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可以自动地使查询被提交。因此,应用116a和116b和/或用户设备108a和108b可以被认为是请求者。应用116a和116b的示例包括浏览器(例如,其导航到由数据库应用106提供的网站),移动或桌面应用,数据库访问应用以及能够向查询处理系统提交查询的任何其他类型的应用。
在图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可以包括Microsoft Corporation发布的ADO.NET客户端库,或数据库应用106处的数据库接口的其他示例。数据服务器104不被认为是关于查询128的可信实体。例如,在一个实施例中,数据服务器104可以由与数据库应用106的所有者无关的基于云的存储提供商来管理,或者由存储数据库应用106的用户/客户数据的其他实体来管理,但该实体在这些数据方面不被信任。因此,存储在数据服务器104处的至少一些数据被加密,使得数据不会在数据服务器104处受到危害。在一个示例中,数据服务器104可以包括由位于Redmond,Washington的Microsoft发布的SQL
Figure BDA0001419931240000101
的实例,或者可以包括替代数据库服务器机制(例如,由位于Redwood City,California的Oracle公司发布的
Figure BDA0001419931240000102
数据库等)的实例。
因此,在一个实施例中,数据库客户端114可以(通过网络118,如其存在)向查询处理器112传送查询128的参数化版本。查询128的参数化版本不包括敏感信息,而是可以包括参数化数据的虚拟值或其他指示符,因此其不会暴露与查询128相关联的一些或全部实际数据。例如,查询128可以包括个人的社会保险号码(SSN)。在该示例中,数据库客户端114处理查询128生成参数化查询,以包括@p1而不是实际的SSN,从而保护SSN不被暴露在数据服务器104处。
查询处理器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的加密配置。
如果查询处理器112在查询响应中指示失败,则数据库客户端114可以通过网络110将查询结果130从数据库应用106传送到第一用户设备108a,向应用116a指示失败。失败可以被呈现给第一用户设备108a的用户。
或者,如果查询处理器112在查询响应中提供了加密配置,则数据库客户端114可以生成查询128的转换版本,并(通过网络118,如其存在)将其提供给查询处理器112,该转换版本包括根据所接收的加密配置加密的内容。例如,继续当前的示例,可以根据加密配置中指示的特定加密技术对SSN值“1234567”进行加密,并且在查询128的转换版本中以这种加密形式提供。如本文所述,可以在转换版本中对查询128作进一步转换。
数据库客户端114(通过网络118,如其存在)向查询处理器112传送查询128的转换版本。数据库客户端114处理查询以生成查询结果,其(通过网络118,如其存在)被传送到数据库客户端114。查询结果可以包括的加密信息,其是从数据服务器104处的数据库的加密列提取的,和/或由查询处理器112对加密数据执行的操作(例如,加法、减法、除法、乘法等)而生成。数据库客户端114可以对加密的数据进行解密,并且通过网络110将查询结果的解密形式传送到第一用户设备108a中的应用116a。
注意,在一个实施例中,如果数据库客户端114不能访问用于加密(查询128的转换版本的)数据或用于解密(查询结果的)数据的数据加密密钥,则数据库客户端114可以向数据服务器104请求加密密钥。数据服务器104可以以加密形式存储加密密钥,使得加密密钥在数据服务器104中不能被用来危害查询128的转换版本的数据和/或数据库数据。应当注意,在系统100中,存储在数据服务器104的列中的加密数据以及加密/解密密钥,在数据服务器104中从来不是以明文形式出现的。数据服务器104可以根据请求或者自动(例如,与查询结果一起)向数据库客户端114传送加密的加密密钥。数据库客户端114可以使用在数据库应用106上维护的主加密密钥对加密的加密/解密密钥进行解密,并根据需要使用加密密钥来加密(例如,查询128的转换版本中)的数据和/或解密(例如,查询结果中)的数据。数据库客户端114可以将解密的查询结果包括在查询结果130中,并且通过网络110将查询结果130从数据库应用106传送到第一用户设备108a。查询结果可以被呈现给第一用户设备108a的用户。
因此,数据库应用系统102能够安全有效地处理查询。数据可以在数据服务器104中以加密形式被维护。接收到的查询的参数化形式可以由(数据库应用106处的)数据库客户端114生成,以由查询处理器112进行完整分析,从而避免在数据服务器104处暴露查询的实际数据。该分析指示查询处理器112是否可以对加密数据处理查询。如果无法处理查询,则查询处理器112向数据库客户端114指示失败。如果可以处理查询,则查询处理器112向数据库客户端114指示如何转换查询以保护所包括的数据,并且指示查询处理器112如何处理转换后的查询以生成查询结果。查询结果由数据库客户端114解密并提供给请求者。以这种方式,没有任何数据以未加密形式暴露在数据服务器104处(除非允许特定数据的暴露),从而提供了高等级的数据安全性。
在实施例中,图1的数据库应用系统102可以以各种方式配置,并且可以以各种方式操作,以实现安全查询处理。下一节(节II.A)提供了在数据库应用侧处理接收的查询的示例实施例,之后是提供在数据库服务器侧处理查询的示例实施例的节(节II.B)。这些节之后,是描述示例性计算设备实施例的节III和提供附加实施例的节IV。
A.用于处理查询的示例数据库应用侧实施例
在实施例中,可以以各种方式来配置数据库应用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示出的顺序发生,也可以按其他顺序发生。
图2的流程图200从步骤202开始。在步骤202,从请求者接收用户查询。例如,参考图3,数据库应用300的网络接口312可以(例如,从图1中的第一用户设备108a)接收查询128,并且可以转发查询128以使其被数据库客户端引擎304的查询参数化器320接收。网络接口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”的一行或多行中选择来自所指示表的所指示列的数据。
在流程图200中,操作从步骤202进行到步骤204。
在步骤204,查询被参数化。在一个实施例中,查询参数化器320被配置为参数化接收的用户查询128。例如,在一个实施例中,查询参数化器320可以被配置为解析查询128以得到参数值(实际数据),并且对于每个找到的参数值插入虚拟值,本质上是将参数值从可能敏感的数据值改变为一些其他的非敏感值。例如,参考上述基于SSN的查询示例,查询参数化器320可以生成相应的参数化查询。查询参数化器320可以在查询128中找到参数值“12345678”,并且可以在参数化查询中将该参数值改变为虚拟值,例如“@pl”。数据服务器绝对无法将虚拟值@p1与原始参数值“12345678”相关。
如图3中示出的,查询参数化器320生成参数化查询326。操作从步骤204进行到步骤206。
在步骤206,向数据服务器提供参数化查询,以接收用户查询的转换版本的加密配置,转换版本能够被数据服务器在加密数据值上评估。例如,如图3示出,数据服务器接口310可以接收参数化查询326。数据服务器接口310被配置为用于与一个或多个数据服务器(以及可选地与其他实体)通信的通信接口。在一些实施例中,数据服务器接口310可能不需要存在。数据服务器接口310被配置为(例如,通过图1的网络118)向数据服务器提供(例如,传送)参数化查询326。
在一个实施例中,数据服务器被配置为分析参数化查询326以确定查询128是否包含在数据服务器中被加密的数据,如果是,则确定查询128是否可以在数据服务器处在加密数据上被评估(例如,查询128的一个或多个参数值是否被加密,例如上面示例中的SSN值“12345678”)。操作从步骤206进行到步骤208。
在步骤208,从数据服务器接收响应。例如,如图3示出,数据服务器接口310可以接收查询分析响应328,并且可以将查询分析响应328转发到数据库客户端引擎304的转换查询生成器322。操作从步骤208进行到步骤210。
在步骤210,确定用户查询能否被数据服务器评估。在一个实施例中,转换查询生成器322评估查询分析响应328,以确定数据服务器是指示了失败(数据服务器不能在加密数据上评估查询128)还是成功(数据服务器可以在加密数据上评估查询128)。如果查询分析响应328指示失败,则操作从步骤210进行到步骤212。如果查询分析响应328指示成功,则操作从步骤210进行到步骤214。
在步骤212,接收结果,其指示在数据服务器处不能在加密数据值上评估用户查询。因此,在步骤212,在查询分析响应328中指示失败,因此数据服务器不能在加密数据值上评估查询128。因此,转换查询生成器322可以在查询结果130中提供处理查询128失败的指示,查询结果130可以由网络接口312传送给请求者。或者,可以实现另一过程来以另一种方式评估查询128。流程图200的操作在步骤212之后结束。
在步骤214,从数据服务器接收确定的加密配置。在一个实施例中,如果转换查询生成器322在查询分析响应328中找到由数据服务器提供的加密配置,这指示数据服务器已经确定其可以在加密数据上评估查询128,并且已经提供了用于将查询128格式化/转换成安全形式以提供给数据服务器进行评估的信息(例如,指令)。操作从步骤214进行到步骤216。
在步骤216中,基于加密配置生成用户查询的转换版本。在一个实施例中,转换查询生成器322使用在查询分析响应328中接收的加密配置,作为用于生成包括加密数据的查询128的转换版本的指令。转换查询生成器322基于加密配置生成转换查询。
例如,加密配置可以(例如,通过参数标识符,通过在查询128中的位置等)指示查询128的哪些参数要在转换版本中被加密,指示用于加密参数的一个或多个加密方案,以及(例如,通过密钥标识符等)指示将被一个或多个加密方案用于加密参数的一个或多个数据加密密钥。对于特定查询,可以在加密配置中列出任何数目的参数以及对应的加密方案和密钥。因此,转换查询生成器322可以被配置为请求加密器308根据指定的加密方案和密钥来加密一个或多个参数值。在实施例中,如相关领域的技术人员所知的,加密器308可以被配置为实现一种或多种的加密方案,以将明文数据加密成密文。这样的加密方案可以包括公开和/或私有密钥加密方案、同态加密方案(允许在密文上执行计算/操作)、部分同态加密方案(允许在密文上执行特定的一组计算/操作)、确定性加密方案(总是为相同的明文和密钥产生相同的密文)、概率性加密方案(特定明文可以加密成一组可能的密文中的任何一个,在加密过程期间随机选择)和/或其他类型的加密方案。
例如,对于示例性的基于SSN的查询,加密配置可以指示以下内容:
对于参数值@pl
使用加密方案X
使用加密密钥Y
因此,转换查询生成器322被配置为生成基于SSN的查询的转换版本,其包括使用加密密钥Y根据加密方案X加密的参数值“12345678”。使用具有加密密钥Y的加密方案X,可以通过加密器308加密参数值“12345678”,以生成加密值“!@#&HF%%”。在这样的示例中,基于SSN的查询可以用加密值表示为:SELECT FirstName,LastName,Base_Salary+Annual_Bonus From Employees WHERE SSN=!@#&HF%%如以下进一步描述的,加密配置还可以为转换查询生成器322提供用于对查询128进行其他转换的指令,包括改变参数的数据类型,改变操作和/或其他转换。
如图3示出,密钥存储库314包括主密钥316、第一密钥318a、第二密钥318b和任何附加数目的加密密钥。在某些情况下,在查询分析响应328中接收到的加密配置中指示的加密密钥可以存在于密钥存储库314中。因此,加密器308可以访问密钥存储库314中的加密密钥,并且按照加密配置指导的那样使用加密密钥来加密一个或多个参数。或者,查询分析响应328可以包括在加密配置中指示的一个或多个加密密钥。因此,加密器308可以使用与加密信息一起接收的加密密钥来按照指示加密一个或多个参数。
在另一个实施例中,加密器308可能无法访问数据库应用300处的、在加密配置中指示的加密密钥。因此,加密器308可以被配置为从诸如数据服务器的另一个源请求加密密钥。在一个实施例中,数据服务器可以存储加密形式的一个或多个加密密钥,其可以被提供给数据库应用300处的加密器308。
例如,在一个实施例中,加密器308可以根据图4进行操作。图4示出的流程图400提供了根据示例实施例的用于从数据服务器取回数据加密密钥以用于在用户查询的转换版本中加密查询数据的过程。下面描述流程图400。
流程图400从步骤402开始。在步骤402,确定在加密配置中指示的数据加密密钥不存在于数据库应用。在一个实施例中,如上所述,转换查询生成器322可以访问加密器308,以根据指定的加密方案和密钥来加密参数值。加密器308可以确定加密密钥不可用,例如无法从密钥存储库314或其他位置取回加密密钥,没有给加密配置提供加密密钥等。
在步骤404,向数据服务器提供对于不存在的数据加密密钥的请求。在一个实施例中,加密器308可以生成密钥请求334,其由数据服务器接口310提供给数据服务器。密钥请求334是对在数据库应用300处无法取回的加密密钥的请求。
在步骤406,所请求的数据加密密钥的加密版本被接收。在一个实施例中,如图3示出,数据服务器接口310可以响应于密钥请求334从数据服务器接收加密形式的加密密钥336,并且可以将加密密钥336的加密版本提供给加密器308。
在步骤408,用数据库应用处可用的主密钥来对数据加密密钥的加密版本进行解密。在一个实施例中,加密器308可以访问密钥存储库314中的主密钥316,并且使用主密钥316来解密所接收的加密密钥336的加密版本。此外,加密器308可以可选地将加密密钥336的解密(或加密)版本存储在密钥存储库314中以供后续使用。
在步骤410,使用数据加密密钥对参数数据值进行加密。在一个实施例中,加密器308可以使用加密密钥336的解密版本,来根据指定的加密方案来加密参数值。加密器308可以将加密的参数值提供给转换查询生成器322。
因此,转换查询生成器322根据在查询分析响应328中接收到的加密配置来生成查询128的转换版本。如图3示出,转换查询生成器322生成转换版本330。转换版本330是查询128的转换版本,并且以任何适当的格式包括查询128的任何加密的参数值(而不是未加密的值)以及查询128的其余元素(例如,任何操作、谓词、子句、变量等等)。此外,如以下在节II.B中的进一步详细描述的,转换版本330可以包括参数的一个或多个转换数据类型、一个或多个转换操作和/或转换查询生成器322根据加密配置执行的其他转换。操作从步骤216进行到步骤218。
在步骤218,用户查询的转换版本被提供给数据服务器。如图3示出,转换版本330被数据服务器接口310接收并(例如,通过图1的网络118)转发到数据服务器。操作从步骤218进行到步骤220。
在步骤220,从数据服务器接收用户查询的转换版本的评估结果。例如,如图3示出,数据服务器接口310从数据服务器接收评估查询结果332,并将其转发给数据库客户端引擎304的结果处理器324。评估查询结果332包括数据服务器处的查询处理器(例如,图1中数据服务器104中的查询112)处理转换版本330的结果。因此,评估查询结果332可以包括从一个或多个指定表取回的一个或多个行/列值、由在取回的数据上执行的一个或多个操作确定的一个或多个值。评估查询结果332可以包括加密结果(例如,加密列等),其中加密数据是从表中取回的,和/或从在加密值上执行的操作生成的。操作从步骤220进行到步骤222。
在步骤222,结果的至少一部分被解密。在一个实施例中,结果处理器324可以被配置为处理包括在评估查询结果332中的查询结果,例如对返回的数据进行格式化等。当评估查询结果332中包括加密数据时,结果处理器324可以请求解密器306对加密的数据进行解密。在实施例中,如相关领域的技术人员所知的,解密器306可以被配置为实现一种或多种类型的解密方案,以将密文解密为明文。例如,解密器306可以实现解密方案,以对根据本文其他地方提到的或其他已知的任何加密方案加密的数据进行解密。注意,在一个实施例中,解密器306和加密器308可被包括在相同的功能块中。
例如,对于上述示例性的基于SSN的查询,评估查询结果332可以指示包括在其中的任何加密数据的解密方案和密钥,例如:
对于加密的FirstName数据
使用解密方案W
使用解密密钥Z
在该示例中,解密器306可以使用解密方案W以及解密密钥Z来解密FirstName数据(例如,包含患者姓名的数据列)(注意,在某些情况下,相同的数据加密密钥值可以用于相关的加密和解密方案)。在为了说明的目的而提供的一个示例中,使用解密方案W与加密密钥Z,接收到的加密值“(&*^87&DF”可以通过解密器306解密,以生成解密值“Samuel”。
在一些情况下,在评估查询结果332中指示的解密密钥可以存在于密钥存储库314中。因此,解密器306可以访问密钥存储库314中的解密密钥,并且使用解密密钥来按照评估查询结果332所指示的那样来解密一个或多个参数。或者,评估查询结果332可以包括用于解密查询结果的一个或多个解密密钥。因此,解密器306可以按照指导,使用与评估查询结果332一起接收到的解密密钥来解密一个或多个数据值。
在另一个实施例中,解密器306可能无法访问数据库应用300处的、在加密数据的评估查询结果332中指示的解密密钥。因此,解密器306可以被配置为从诸如数据服务器的另一个源请求解密密钥。在一个实施例中,数据服务器可以以加密的形式存储一个或多个解密密钥,该解密密钥可以被提供给数据库应用300处的解密器306。
例如,在一个实施例中,解密器306可以根据图5进行操作。图5示出的流程图500提供了根据示例实施例的从数据服务器取回数据加密密钥以用于解密查询结果的过程。以下描述流程图500。
流程图500从步骤502开始。在步骤502,确定结果中的至少一个数据值的数据解密密钥不存在于数据库应用。在一个实施例中,如上所述,结果处理器324可以访问解密器306,以根据指定的解密方案和密钥来对评估查询结果332的加密数据进行解密。解密器306可以确定解密密钥不可用,例如无法从密钥存储库314或其他位置取回解密密钥,评估查询结果332中未提供解密密钥等。
在步骤504,向数据服务器提供对数据解密密钥的请求。在一个实施例中,解密器306可以生成密钥请求338,其由数据服务器接口310提供给数据服务器。密钥请求338是对数据库应用300中无法取回的解密密钥的请求。
在步骤506,从数据服务器接收数据解密密钥的加密版本。在一个实施例中,如图3示出,数据服务器接口310可以响应于密钥请求338,从数据服务器接收解密密钥340的加密版本,并且可以向解密器306提供解密密钥340的加密版本。
在步骤508,用数据库应用处可用的主密钥来对数据解密密钥的加密版本进行解密。在一个实施例中,解密器306可以根据指定的解密方案使用解密密钥340对解密密钥340的加密版本进行解密。解密器306可以可选地将解密密钥340的解密(或加密)版本存储在密钥存储库314中以供后续使用。
在步骤510,使用数据解密密钥对至少一个数据值进行解密。在一个实施例中,解密器306可以根据指定的解密方案使用解密密钥340的解密版本来解密数据值。因此,解密器306可以将解密数据提供给结果处理器324。
这样,结果处理器324从数据服务器接收评估查询结果332。结果处理器324可以根据需要对评估查询结果332的数据进行格式化,并且可以使用解密器306来解密任何加密的数据。如图3示出,结果处理器324生成查询结果130,以包括在评估查询结果332中接收的、根据需要进行格式化并解密的数据。操作从步骤222进行到步骤224。
在步骤224,向请求者传送解密结果。如图3示出,网络接口312从结果处理器324接收查询结果130,并且将查询结果130传送给请求者(例如,通过网络110传送给图1中第一用户设备108a处的应用116a)。以这种方式,用户查询128以安全有效的方式被处理,其中任何敏感数据在数据服务器(不可信实体)中被加密(密文),同时能够在数据库应用300(可信实体)处处于明文。流程图200的操作可以在步骤224之后结束。
B.用于处理查询的示例数据服务器侧实施例
在实施例中,可以以各种方式配置数据服务器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示出的顺序发生,也可以按其他顺序发生。
图6的流程图600从步骤602开始。在步骤602,从数据库应用接收参数化查询。例如,如图7示出,数据服务器700的数据库应用接口706可以(例如,从图1中的数据库应用106或图3的数据库应用300)接收参数化查询326,并且可以转发参数化查询326,使其被查询处理器702的加密配置生成器710接收。数据库应用接口706被配置为用于与一个或多个数据库应用(以及可选地与其他实体)进行通信的通信接口。在一些实施例中,数据库应用接口706可能不需要存在。
如上所述,参数化查询326是查询128的修改版本,其针对以任何形式存储在数据库714中的数据。参数化查询326包括代替查询128的实际参数值的虚拟值,使得敏感数据不被提供给数据服务器700。操作从步骤602进行到步骤604。
在步骤604,分析参数化查询以确定用户查询的转换版本的加密配置,转换版本能够被数据服务器在加密数据值上评估。在一个实施例中,加密配置生成器710被配置为分析参数化查询326,以确定是否存在查询128的加密配置,使得查询128可以由查询处理器702在加密数据值(例如,加密参数值)上进行评估,而不是在明文数据上进行评估。如果可以在加密数据值上评估查询128,则在数据服务器700处可以维护查询128的数据的安全性。
因此,在一个实施例中,在生成加密配置之前,加密配置生成器710可以分析参数化查询326,以确定是否可以生成加密配置。该分析可以以各种方式进行。例如,在一个实施例中,加密配置生成器710可以确定参数化查询326是否包括数据服务器处不支持的对加密数据的任何操作。如果是这样,则查询处理器702不能在加密数据上评估查询128。
例如,在一个实施例中,参数化查询326可以被加密配置生成器710转换成表达式树的形式,或者可以从数据库应用以这种形式被接收。在表达式树表示中,可以将每个参数值或其他类型的变量设置为向内分支的树的“叶”,并且表达式/操作可以在树的分支的交叉处。树的每个表达式接收参数值、变量和/或先前评估的表达式的解中的一个或多个,作为输入值,并且生成表达式解作为输出。因此,加密配置生成器710可以在叶子处开始评估表达式树,并且可以向内遍历以分析每个表达式/操作的输入,直到确定表达式树的最终结果。如果即使一个表达式/操作接收到在数据服务器700处被加密的输入值,以及已知特定表达式/操作不能在特定类型的加密(或者根本加密数据)上进行评估,则分析整个失败,并且查询128不能在数据服务器700处在加密数据上进行评估。然而,如果表达式树中的所有操作都被确定为即使它们的输入被加密时也能够在这些输入上进行评估,则可以在数据服务器700处在加密数据上对查询128进行评估,并且可以生成加密配置。
在一个实施例中,对于可以在查询128中接收到的每种类型的操作(例如,加法、减法、乘法、除法等),对该操作可以操作什么类型的加密输入维护一个记录(如果有的话)。例如,加密配置生成器710可以存储表或其他数据结构,其指示哪些操作可以在作为输入的哪些类型的加密数据上执行(如果有的话),或者可以使用另一种技术来维护哪些操作可以在哪些类型的加密数据上执行的记录。这样的数据结构可以存储在存储器704中或其他地方。
此外,元数据720可以包括以下元数据,其指示数据库714中的哪些数据(例如,哪些列)被加密,对于每个数据(例如,对于每一列)特定加密方案是什么,以及每个数据的加密密钥是什么。当分析参数化查询326的表达式树时,加密配置生成器710可以使用该元数据。例如,当分析数据库714中的一个或多个加密列上的特定操作时,加密配置生成器710可以检查元数据720以确定该列的加密方案,并且可以从上述数据结构确定当一列或多列根据其特定的加密方案被加密时,特定的操作是否可以在所述一列或多列上执行。
如果加密配置生成器710确定参数化查询326不包括数据服务器处不支持的对加密数据的任何操作,则加密配置生成器710确定参数化查询326的加密配置。加密配置生成器710可以通过解析参数化查询326的内容以获取参数值(例如,指示的列、谓词参数等)来执行该功能,这些参数值都是潜在加密查询项。加密配置生成器710搜索元数据720来识别对应于所有潜在加密查询项的列,以确定在数据库714中它们相应的加密方案和密钥,如果有的话。加密配置生成器710生成加密配置,以指示查询128的哪些参数被加密以及它们相应的加密方案和数据加密密钥。如图7示出,加密配置生成器710生成包括加密配置的查询分析响应328。
加密配置包括被配置为使数据库应用生成查询128的转换版本330的信息,以上有进一步描述。在一个实施例中,加密配置生成器710可以生成加密配置,其包括数据库应用为了生成转换版本330将遵循的指令,和/或可以包括对查询128的转换。这样的指令/转换可以包括一个或多个以下潜在类型:
(a)使用加密配置中指示的加密方案和密钥来在转换版本330中加密查询128的参数值;
(b)在转换版本330中转换查询128的参数的数据类型;和/或
(c)在转换版本330中转换查询128的操作。
出于说明的目的,下面重复上面的示例性的基于SSN的查询的参数版本:SELECTFirstName,LastName,Base_Salary+Annual_Bonus From Employees WHERE SSN=@pl在该示例中,Base_Salary和Annual_Bonus的类型是INT(整数),SSN的类型是CHAR(字符),SSN在数据库714中根据确定性的加密方案X被加密,Base_Salary和Annual_Bonus根据部分同态加密(PHE)方案Y被加密。
在一个实施例中,加密配置生成器710可以评估这种示例参数化查询是否能在加密数据上被评估,如果能,则可以为该示例参数化查询生成将被包括在加密配置中的指令,如下:
(1)通过根据以下动作确定是否存在对加密数据的任何不支持的操作,来确定参数化查询能否在加密数据上被评估:
(a)确认数据库714中的SSN列是通过支持相等(=)操作的加密方案而被加密的。SSN列从参数化查询中被识别/推断。该确认可以通过检查元数据720得到SSN的加密方案来执行,在该示例中加密方案为确定性加密方案X。确定性加密方案确实支持相等操作,所以针对SSN列不会发生失败(随机加密方案不支持相等操作,因为无法总是生成相同的加密结果。所以如果SSN的加密方案是随机方案,则这个检查就会失败)。
(b)确认数据库714中的Base_Salary和Annual_Bonus列是通过支持加法操作的加密方案被加密的。该确认可以通过检查元数据720得到Base_Salary和Annual_Bonus的加密方案来执行,在该示例中加密方案为PHE方案Y。该实例中,PHE方案Y支持加法操作,所以针对Base_Salary和Annual_Bonus列,不会发生失败(如果PHE方案Y不支持加法操作,则这个检查就会失败)。
因此,该示例性参数化查询能在加密数据上被评估,因为不存在对加密数据的不支持的操作,并且因此可以如下生成加密配置。
(2)生成具有指令的加密配置:
(a)加密指令:元数据720指示SSN列根据加密方案X被加密。因此,创建根据加密方案X来对在查询128的转换版本中提供给数据服务器700的SSN参数值进行加密的指令。
(b)数据类型转换:在查询128中,Base_Salary和Annual_Bonus是INT类型,SSN是CHAR类型。然而,因为Base_Salary和Annual_Bonus以加密形式物理地存储在数据库714中,所以它们的加密版本的数据类型是BINARY。因此,可以生成在转换版本中转换查询128以使用Base_Salary和Annual_Bonus的加密数据类型的指令。
(c)执行一个或多个操作:加密配置生成器710可以向数据库应用提供指令,所述指令用于在查询128的转换版本中的查询128的参数值上执行一个或多个任意操作/功能/表达式。任何数目和任何种类的操作都可以被执行,例如删除尾部或前导空格、转换字符串数据到大写(或其他)、转换字符串到整数、根据特定日期格式来格式化数据、转化时间的第一格式(例如,UTC时间)到时间的第二格式(例如,当地时间)等。正如相关领域技术人员将从本文教导中所知的,加密配置生成器710可以指导数据库应用执行其他类型的操作。
此外,加密配置生成器710可以指出转换查询评估器712将在查询128的转换版本上执行的操作转换(和/或转换查询评估器712可以自行确定这些)。例如,假设(出于说明的目的)对于加密方案Y,与非加密值上的加法等同的操作是加密值上的乘法。因此,加密配置生成器710可以指出这样的指令,该指令使转换查询评估器712在评估转换查询时将Base_Salary和Annual_Bonus的加法转换成Base_Salary和Annual_Bonus的加密版本的乘法。
因此,响应于上述示例参数化查询而提供给数据库应用的加密配置可以包括这些指令,以及可选的SSN的加密密钥的加密副本。
如此,在步骤606,如果参数化查询326的加密配置被确定(即确定可以在加密输入上评估),则操作从步骤606进行到步骤612。如果失败,则操作从步骤606进行到步骤608。
在步骤608,确定用户查询的能够被数据服务器在加密数据值上评估的转换版本的加密配置失败。如以上参照图6所描述的,基于参数化查询326的分析,由于参数化查询128包括数据服务器700处不支持的对加密数据的操作,所以确定查询128的能够被数据服务器在加密数据值上评估的转换版本的加密配置可能会失败。操作从步骤608进行到步骤610。
在步骤610,将该失败通知给数据库应用。在一个实施例中,指示失败的信息可以由加密配置生成器710在查询分析响应328中提供,查询分析响应328由数据库应用接口706传送给数据库应用。流程图600的操作在步骤610之后结束。
在步骤612,向数据库应用提供所确定的加密配置。例如,如图7示出,加密配置可以由加密配置生成器710在查询分析响应328中提供,查询分析响应328由数据库应用接口706传送给数据库应用。
注意,如上所述,数据库应用基于接收到的加密配置生成查询128的转换版本(例如,图2的步骤216)。在一个实施例中,加密配置可以指示将被数据库应用在转换版本330中加密的一个或多个参数值。如上所述,数据库应用可以访问用来加密参数值的加密密钥。或者,数据库应用可能必须从数据服务器700请求数据加密密钥的副本。
例如,图8示出的流程图800提供了根据示例实施例的在数据服务器中用于为数据库应用对数据加密密钥的请求进行服务的过程。下面描述流程图800。
流程图800从步骤802开始。在步骤802,从数据库应用接收对数据加密密钥的请求,该数据加密密钥被配置为加密用户查询的一个或多个参数值。在一个实施例中,如图7示出,数据库应用可以生成由数据库应用接口706接收并向密钥接口708转发的密钥请求334。如更早前所述,密钥请求334是对在数据库应用中无法取回的加密密钥的请求。
在步骤804,从包含使用至少一个主密钥加密的数据加密密钥的密钥存储库中取回数据加密密钥的加密版本。密钥接口708被配置为服务于数据库应用对密钥存储库716的加密/解密密钥的请求,例如第一密钥718a和第二密钥718b。任何数目的密钥都可以存储在密钥存储库716中。另外,存储在密钥存储库716中的密钥718a和718b(以及其他密钥)可以使用数据库应用处可得而数据服务器700处不可得的主密钥(例如,图3中的主密钥316)进行加密。通过这种方式,在数据服务器700处就无法滥用密钥718a和718b来解密和危害数据库714的加密数据。
因此,响应于密钥请求334,密钥接口708可以从密钥存储库716中取回密钥请求334中指定的一个或多个数据加密密钥。
在步骤806,向数据库应用提供数据加密密钥的加密版本。在一个实施例中,如图7示出,密钥接口708可以向数据库应用接口706提供(加密的)加密密钥336,数据库应用接口706再向数据库应用提供加密密钥336。数据库应用可以使用主密钥对加密密钥336进行解密,并且可以使用解密的密钥来在查询128的转换版本中加密数据,以再提供给数据服务器700。
回到图6,在步骤614,从数据库应用接收用户查询的转换版本。例如,如图7示出,用户查询128的转换版本330被数据库应用接口310从数据库应用接收,并被转发给转换查询评估器712。在一个实施例中,转换版本330包括一个或多个加密参数值,其是根据在查询分析响应328中传送到数据库应用的加密配置进行加密的。转换版本330可选地包括如上所述的针对数据库应用的指令。操作从步骤614进行到步骤616。
注意在一个实施例中,步骤614可以包括验证用户查询的转换版本的过程。该验证可以由转换查询评估器712来执行,以确认用户查询128的转换版本330是可执行的。任何合适类型的验证都可以被执行,包括检查转换版本330的语法的正确性,比较转换版本330和参数化查询326以确认与同一用户查询128的关系,检查加密配置中的所有指令都在数据库应用中被执行了,检查转换版本330中的参数使用的加密类型与数据库714中相应列的加密匹配(例如,通过参考元数据720),和/或通过执行其他任何种类或类型的验证的任何动作。如果转换版本330在验证过程中有错误,则转换查询评估器712可以与数据库应用通信,以请求对转换版本330进行更正。
在步骤616,评估用户查询的转换版本来生成结果。在一个实施例中,转换查询评估器712评估转换版本330来生成查询结果。在一个实施例中,以与查询引擎评估接收的常规查询类似的方式,转换查询评估器712评估转换版本330,例如,通过取回与转换版本330的参数值(其可以被加密或不被加密)对应的任意列(其可以被加密或不被加密),在列和/或参数值上执行操作,其可以包括在加密值上允许的操作和/或可以包括在参数值上转换操作(例如,执行加密值的乘法而不是非加密值的加法),以及生成查询所定义的查询结果,其可以包括加密数据。操作从步骤616进行到步骤618。
在步骤618,向数据库应用提供结果以及元数据,该元数据指示被配置为解密至少一部分结果的至少一个数据解密密钥。例如,如图7示出,转换查询评估器712生成评估查询结果332,其包括指示转换版本330的评估结果的信息。评估查询结果332被提供给数据库应用接口706,数据库应用接口706将评估查询结果332传送给数据库应用。
在一个实施例中,转换查询评估器712也可以在评估查询结果332中包括元数据,元数据指示(查询128的)原始参数的数据类型,指示哪些查询结果数据被加密,并且指示用于对加密数据进行解密的加密方案和密钥。以这种方式,在向请求者提供查询结果130之前(例如,图2中的步骤224),数据库应用可以对评估查询结果332的被加密(例如,图2中的步骤222)成相应数据类型的任何部分进行解密。
如上所述,数据库应用可以访问用来解密查询结果的解密密钥。或者,数据库应用可能必须从数据服务器700请求数据解密密钥的副本。
例如,图9示出的流程图900提供了根据示例实施例的在数据服务器中为数据库应用对数据解密密钥的请求进行服务的过程。下面描述流程图900。
流程图900从步骤902开始。在步骤902,从数据库应用接收对数据解密密钥的请求,该数据解密密钥被配置为解密至少一部分结果。数据库应用可以生成由数据库应用接口706接收并向密钥接口708转发的密钥请求338。如上所述,密钥请求338是对在数据库应用300中无法取回的解密密钥的请求。
在步骤904,从包含使用至少一个主密钥加密的数据加密密钥的密钥存储库中取回数据解密密钥的加密版本。响应于密钥请求338,密钥接口708可以从密钥存储库716中取回在密钥请求334中指定的一个或多个数据解密密钥。
在步骤906,向数据库应用提供数据解密密钥的加密版本。在一个实施例中,如图7示出,密钥接口708可以向数据库应用接口706提供(加密的)解密密钥340,数据库应用接口706再向数据库应用提供解密密钥340。数据库应用可以使用主密钥来对解密密钥340进行解密,并且可以使用解密的密钥来解密评估查询结果332的数据。III.示例移动和固定设备实施例
数据库应用系统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可以被实现为硬件逻辑/电路。
例如,在一个实施例中,数据库应用系统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中的一个或多个,以任何组合,可以一起在SoC中实现。SoC可以包括集成电路芯片,该芯片包括处理器(例如,中央处理单元(CPU)、微控制器、微处理器、数字信号处理器(DSP)等)、存储器、一个或多个通信接口和/或其他电路中的一个或多个,并且可以可选地执行接收的程序代码和/或包括嵌入式固件以执行功能。
图10描绘了可以在其中实现实施例的计算设备1000的示例性实现。例如,数据服务器104、数据库应用106、第一用户设备108a、第二用户设备108b、数据库应用300和/或数据服务器700可以在类似于固定计算机实施例中的计算设备1000的一个或多个计算设备中实现,包括计算设备1000的一个或多个特征和/或替代特征。本文提供的计算设备1000的描述是为了说明的目的而提供的,并不旨在限制。正如相关领域技术人员所知,实施例可以在其他类型的计算机系统中实现。
如图10示出,计算设备1000包括被称为处理器电路1002的一个或多个处理器、系统存储器1004和将包括系统存储器1004的各种系统部件耦合到处理器电路1002的总线1006。处理器电路1002是电路和/或光电路,作为中央处理单元(CPU)、微控制器、微处理器、和/或其他物理硬件处理器电路,在一个或多个物理硬件电路设备元件和/或集成电路设备(半导体材料芯片或裸片)中实现。处理器电路1002可以执行存储在计算机可读介质中的程序代码,例如操作系统1030、应用程序1032、其他程序1034等的程序代码。总线1006代表任何类型的总线结构中的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任何一种的处理器或本地总线。系统存储器1004包括只读存储器(ROM)1008和随机存取存储器(RAM)1010。基本输入/输出系统(BIOS)1012存储在ROM 1008中。
计算设备1000也具有一个或多个以下驱动器:用于读取和写入硬盘的硬盘驱动器1014,用于读取或写入可移动磁盘1018的磁盘驱动器1016,以及用于从诸如CD ROM,DVDROM或其他光学介质的可移动光盘1022读取或写入的光盘驱动器1020。硬盘驱动器1014、磁盘驱动器1016和光盘驱动器1020分别通过硬盘驱动器接口1024、磁盘驱动器接口1026和光驱接口1028连接到总线1006。驱动器及其相关联的计算机可读介质为计算机提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。虽然描述了硬盘、可移动磁盘和可移动光盘,但是可以使用其他类型的基于硬件的计算机可读存储介质来存储数据,诸如闪存卡、数字视频盘、RAM、ROM和其他硬件存储介质。
多个程序模块可以存储在硬盘、磁盘、光盘、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中任何合适的步骤)、和/或本文所述的其它实施例。
用户可以通过诸如键盘1038和指针设备1040的输入设备将命令和信息输入到计算设备1000中。其它输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、碟形卫星天线、扫描仪、触摸屏和/或触控板、接收语音输入的语音识别系统、接收手势输入的手势识别系统等。这些和其它输入设备通常通过耦合到总线1006的串行端口接口1042连接到处理器电路1002,但是也可以通过诸如并行端口、游戏端口或通用串行总线(USB)的其他接口来连接。
显示屏1044还经由诸如视频适配器1046的接口连接到总线1006。显示屏1044可以在计算设备1000的外部或并入其中。显示屏1044可以显示信息,以及作为用于(例如通过触摸、手指手势、虚拟键盘等)接收用户命令和/或其他信息的用户界面。除了显示屏1044之外,计算设备1000可以包括诸如扬声器和打印机的其它外围输出设备(未示出)。
计算设备1000通过适配器或网络接口1050、调制解调器1052或用于建立网络通信的其他装置来连接到网络1048(例如,因特网)。可以是内部或外部的调制解调器1052,可以经由串行端口接口1042连接到总线1006,如图10所示,或者可以使用包括并行接口的另一种接口类型连接到总线1006。
本文所使用的术语“计算机程序介质”、“计算机可读介质”和“计算机可读存储介质”用于指代物理硬件介质,例如与硬盘驱动器1014相关联的硬盘,可移动磁盘1018,可移动光盘1022,诸如RAM、ROM、闪存卡、数字视频盘、zip盘、MEM、基于纳米技术的存储设备的其他物理硬件介质,以及其他类型的物理/有形硬件存储介质(包括图12的存储器1220)。这样的计算机可读存储介质与通信介质区分开且并不重叠(不包括通信介质)。通信介质体现计算机可读指令、数据结构、程序模块或诸如载波的调制数据信号中的其他数据。术语“调制数据信号”是指以将信息编码在信号中的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如声学、RF、红外和其它无线介质的无线介质,以及有线介质。实施例还涉及这样的通信介质,其与涉及计算机可读存储介质的实施例分开且不重叠
如上所述,计算机程序和模块(包括应用1032和其他程序1034)可以存储在硬盘、磁盘、光盘、ROM、RAM或其他硬件存储介质上。这样的计算机程序也可以通过网络接口1050、串行端口接口1042或任何其他接口类型来接收。应用执行或加载这样的计算机程序时,计算设备1000能够实现本文讨论的实施例的特征。因此,这样的计算机程序表示计算设备1000的控制器。
实施例还涉及包括存储在任何计算机可读介质上的计算机代码或指令的计算机程序产品。该计算机程序产品包括硬盘驱动器、光盘驱动器、存储设备包、便携式记忆棒、存储卡和其他类型的物理存储硬件。
IV.示例实施例
在一个实施例中,在至少一个计算设备中实现的数据服务器中提供了一种方法,包括:从数据库应用接收参数化查询,参数化查询是数据库应用从请求者接收的用户查询的参数化版本;分析参数化查询以确定用户查询的转换版本的加密配置,转换版本能够被数据服务器在加密数据值上评估;对数据库应用进行响应。
在一个实施例中,该分析包括:确定用户查询的能够被数据服务器在加密数据值上评估的转换版本的加密配置失败,该失败是因为确定参数化查询包括数据服务器处不支持的对加密数据的操作;并且该响应包括:向数据库应用通知该失败。
在一个实施例中,用户查询被配置为在数据服务器处的至少一个表中存储的数据上被评估,该方法还包括:存储元数据,其指示加密数据值所在的、至少一个表的一个或多个列,并且指示加密数据值如何被加密。
在一个实施例中,该响应包括:向数据库应用提供确定的加密配置。
在一个实施例中,该加密配置包括数据库应用要执行的将用户查询转换为用户查询的转换版本的指令。
在一个实施例中,该加密配置指示用户查询的哪些参数将在转换版本中被加密,用于加密参数的一个或多个加密方案,以及一个或多个加密方案所使用的用于加密参数的一个或多个数据加密密钥。
在一个实施例中,该提供包括:将用于加密用户查询的至少一个参数的至少一个数据加密密钥与确定的加密配置一起提供给数据库应用。
在一个实施例中,该方法还包括:从数据库应用接收用户查询的转换版本,该用户查询的转换版本包括一个或多个加密参数值。
在一个实施例中,该方法还包括:从数据库应用接收对数据加密密钥的请求,数据机密密钥被配置为加密用户查询的一个或多个参数值;从包含使用至少一个主密钥加密的数据加密密钥的密钥存储库取回数据加密密钥的加密版本;向数据库应用提供数据加密密钥的加密版本。
在一个实施例中,该方法还包括:评估用户查询的转换版本以生成结果;将结果连同元数据一起提供给数据库应用,元数据指示至少一个数据解密密钥,该数据解密密钥被配置为解密至少一部分结果。
在一个实施例中,该方法还包括:从数据库应用接收对数据解密密钥的请求,数据解密密钥被配置为解密至少一部分结果;从包含使用至少一个主密钥加密的数据解密密钥的密钥存储库取回数据解密密钥的加密版本;向数据库应用提供数据解密密钥的加密版本,数据解密密钥的解密版本在该方法期间不存在于数据服务器上。
在另一个实施例中,至少一个计算设备包括:数据服务器,其包括存储器和被配置为从数据库应用接收查询的查询处理器,该查询由数据库应用从用户接收,该查询处理器包括配置为从数据库应用接收参数化查询的加密配置生成器,该参数化查询是由数据库应用从请求者接收的用户查询的参数化版本,该加密配置生成器被配置为分析参数化查询以确定用户查询的转换版本的加密配置,转换版本能够被数据服务器在加密数据值上评估,并且向数据库应用提供响应。
在一个实施例中,响应于确定参数化查询包括数据服务器处不支持的对加密数据的操作,加密配置生成器被配置为使确定加密配置失败,并在响应中向数据库应用通知失败;以及响应于成功确定加密配置,加密配置生成器被配置为在响应中向数据库应用提供确定的加密配置。
在一个实施例中,查询处理器还包括:转换查询分析器,被配置为从数据库应用接收用户查询的转换版本,用户查询的转换版本包括一个或多个加密参数值,评估用户查询的转换版本以生成结果,并且将结果连同元数据一起提供给数据库应用,元数据指示至少一个数据解密密钥,数据解密密钥被配置为解密至少一部分结果。
在一个实施例中,在至少一个计算设备中实现的数据库应用中提供一种方法,包括:从请求者接收用户查询;对查询参数化;向数据服务器提供参数化查询以接收用户查询的转换版本的加密配置,转换版本能够被数据服务器在加密数据值上评估;从数据服务器接收响应。
在一个实施例中,从数据服务器接收响应包括:接收不能在数据服务器处在加密数据值上评估用户查询的指示。
在一个实施例中,从数据服务器接收响应包括:从数据服务器接收确定的加密配置;该方法还包括:基于加密配置生成用户查询的转换版本,用户查询的转换版本包括一个或多个加密参数值;向数据服务器提供用户查询的转换版本。
在一个实施例中,加密配置指示用户查询的哪些参数将在转换版本中被加密,用于加密参数的一个或多个加密方案,以及一个或多个加密方案所使用的用于加密参数的一个或多个数据加密密钥,该生成包括:根据相应的指示的加密方案和数据加密密钥,对用户查询的被指示要被加密的参数的每个参数值进行加密。
在一个实施例中,加密包括:确定在加密配置中指示的数据加密密钥不存在于数据库应用;向数据服务器提供对不存在的数据加密密钥的请求;接收所请求的数据加密密钥的加密版本;用数据库应用处可用的主密钥来对数据加密密钥的加密版本进行解密;使用数据加密密钥对参数数据值进行加密。
在一个实施例中,该方法还包括:从数据服务器接收用户查询的转换版本的评估结果;解密结果的至少一部分;将解密的结果传送给请求者。
在一个实施例中,解密包括:确定数据库应用处不存在结果中的至少一个数据值的数据解密密钥;向数据服务器提供对数据解密密钥的请求;从数据服务器接收数据解密密钥的加密版本;用数据库应用处可用的主密钥来对数据解密密钥的加密版本进行解密;使用数据解密密钥对至少一个数据值进行解密。
V.结论
虽然以上已经描述了本发明的各种实施例,但是应当理解,它们仅以示例的方式呈现,而不是限制。相关领域的技术人员将会理解,在不脱离所附权利要求限定的本发明的精神和范围的情况下,可以在形式和细节上进行各种改变。因此,本发明的广度和范围不应受上述任何示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。

Claims (24)

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

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/669,848 2015-03-26
US14/669,848 US9875370B2 (en) 2015-03-26 2015-03-26 Database server and client for query processing on encrypted data
PCT/US2016/023334 WO2016200461A2 (en) 2015-03-26 2016-03-21 Database server and client for query processing on encrypted data

Publications (2)

Publication Number Publication Date
CN107408135A CN107408135A (zh) 2017-11-28
CN107408135B true CN107408135B (zh) 2020-07-24

Family

ID=56975603

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680018743.9A Active CN107408135B (zh) 2015-03-26 2016-03-21 用于对加密数据进行查询处理的数据库服务器和客户端

Country Status (6)

Country Link
US (1) US9875370B2 (zh)
EP (1) EP3275115B1 (zh)
CN (1) CN107408135B (zh)
AR (1) AR104107A1 (zh)
TW (1) TW201638798A (zh)
WO (1) WO2016200461A2 (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3042625B1 (fr) * 2015-10-14 2017-12-15 Commissariat Energie Atomique Methode d'interrogation confidentielle d'une base de donnees chiffree
US10205594B1 (en) * 2016-03-30 2019-02-12 EMC IP Holding Company LLC Crypto-erasure resilient to network outage
US11093635B2 (en) * 2016-05-05 2021-08-17 The Johns Hopkins University Apparatus and method for private information retrieval
US10210266B2 (en) * 2016-05-25 2019-02-19 Microsoft Technology Licensing, Llc Database query processing on encrypted data
US10505729B2 (en) * 2016-11-09 2019-12-10 Sap Se Secure database featuring separate operating system user
US10956519B2 (en) 2017-06-29 2021-03-23 Cisco Technology, Inc. Fine-grained encrypted access to encrypted information
CN111295656A (zh) * 2017-10-30 2020-06-16 Abb瑞士股份有限公司 隐私保护日志分析
US10586057B2 (en) * 2017-11-16 2020-03-10 Intuit Inc. Processing data queries in a logically sharded data store
US10873450B2 (en) 2017-11-16 2020-12-22 Intuit Inc. Cryptographic key generation for logically sharded data stores
US10733318B2 (en) 2017-11-21 2020-08-04 International Business Machines Corporation Processing analytical queries over encrypted data using dynamical decryption
TWI665580B (zh) * 2017-12-14 2019-07-11 國立成功大學 Authorization and search method for image files in cloud environment
EP3545640B1 (en) * 2018-11-07 2021-04-07 Advanced New Technologies Co., Ltd. Blockchain data protection using homomorphic encryption
CN109660602B (zh) * 2018-11-28 2022-08-09 天津字节跳动科技有限公司 数据增量传输方法及装置
US11074363B2 (en) * 2018-12-05 2021-07-27 Oracle International Corporation Selective and total query redaction
CN109597843A (zh) * 2018-12-19 2019-04-09 北京锐安科技有限公司 大数据环境的数据管理方法、装置、存储介质及电子设备
CN109992596A (zh) * 2019-02-25 2019-07-09 新智云数据服务有限公司 数据处理方法及装置
KR20200116010A (ko) 2019-03-29 2020-10-08 알리바바 그룹 홀딩 리미티드 아이덴티티 정보에 기초한 암호 키 관리
SG11201908931TA (en) 2019-03-29 2019-10-30 Alibaba Group Holding Ltd Cryptographic key management based on identity information
AU2019204724C1 (en) * 2019-03-29 2021-12-09 Advanced New Technologies Co., Ltd. Cryptography chip with identity verification
WO2019120323A2 (en) 2019-03-29 2019-06-27 Alibaba Group Holding Limited Securely performing cryptographic operations
CN110244976A (zh) * 2019-05-21 2019-09-17 深圳壹账通智能科技有限公司 应用程序版本切换方法及装置
US11157495B2 (en) * 2019-07-23 2021-10-26 International Business Machines Corporation Dynamically managing predicate expression columns in an encrypted database
CN110391895B (zh) * 2019-07-31 2020-10-27 创新先进技术有限公司 数据预处理方法、密文数据获取方法、装置和电子设备
US11797531B2 (en) * 2020-08-04 2023-10-24 Micron Technology, Inc. Acceleration of data queries in memory
CN112732789A (zh) * 2021-01-12 2021-04-30 宁波云麟信息科技有限公司 基于区块链的可搜索加密方法和电子设备
CN113111356A (zh) * 2021-03-09 2021-07-13 深圳市教育信息技术中心(深圳市教育装备中心) 数据加密方法、装置、设备和介质
CN113111357B (zh) * 2021-03-09 2022-02-22 深圳市教育信息技术中心(深圳市教育装备中心) 字段加密方法、装置、设备和介质
US11501013B1 (en) 2021-07-09 2022-11-15 Sotero, Inc. Autonomous machine learning methods for detecting and thwarting malicious database access
US11860868B2 (en) * 2021-12-14 2024-01-02 International Business Machines Corporation Secure database-as-a-service system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1255214A (zh) * 1997-01-24 2000-05-31 摩托罗拉公司 代理主计算机和用于在一个浏览器和一个代理计算机之间访问和检索信息的方法
CN101587479A (zh) * 2008-06-26 2009-11-25 北京人大金仓信息技术股份有限公司 面向数据库管理系统内核的数据加解密系统及其方法
CN103390124A (zh) * 2012-05-08 2013-11-13 迪斯克雷蒂克斯科技公司 安全输入和处理口令的设备、系统和方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
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
US7590644B2 (en) * 1999-12-21 2009-09-15 International Business Machine Corporation 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
KR100859162B1 (ko) * 2007-10-16 2008-09-19 펜타시큐리티시스템 주식회사 암호화된 칼럼을 포함하는 데이터베이스에서의 쿼리의 암호화 변조를 통한 사용자 쿼리 처리 장치 및 방법
US8874547B2 (en) * 2010-01-04 2014-10-28 Microsoft Corporation Parameter-sensitive plans
US8627107B1 (en) * 2011-09-29 2014-01-07 Todd Michael Kennedy System and method of securing private health information
EP2778951B1 (en) * 2011-11-11 2017-04-26 NEC Corporation Database encryption system, method and program
US9087212B2 (en) * 2012-01-25 2015-07-21 Massachusetts Institute Of Technology Methods and apparatus for securing a database
US20140214812A1 (en) * 2012-10-04 2014-07-31 Goole Inc. Source code priority ranking for faster searching
US9286488B2 (en) * 2013-03-13 2016-03-15 Northrop Grumman Systems Corporation System and method for secure database queries
US9092302B2 (en) * 2013-09-10 2015-07-28 Duo Security, Inc. System and method for determining component version compatibility across a device ecosystem
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1255214A (zh) * 1997-01-24 2000-05-31 摩托罗拉公司 代理主计算机和用于在一个浏览器和一个代理计算机之间访问和检索信息的方法
CN101587479A (zh) * 2008-06-26 2009-11-25 北京人大金仓信息技术股份有限公司 面向数据库管理系统内核的数据加解密系统及其方法
CN103390124A (zh) * 2012-05-08 2013-11-13 迪斯克雷蒂克斯科技公司 安全输入和处理口令的设备、系统和方法

Also Published As

Publication number Publication date
AR104107A1 (es) 2017-06-28
EP3275115B1 (en) 2019-04-24
EP3275115A2 (en) 2018-01-31
US9875370B2 (en) 2018-01-23
US20160283728A1 (en) 2016-09-29
WO2016200461A3 (en) 2017-01-12
WO2016200461A2 (en) 2016-12-15
TW201638798A (zh) 2016-11-01
CN107408135A (zh) 2017-11-28

Similar Documents

Publication Publication Date Title
CN107408135B (zh) 用于对加密数据进行查询处理的数据库服务器和客户端
US10719567B2 (en) Database query processing on encrypted data
US11120018B2 (en) Spark query method and system supporting trusted computing
EP3278263B1 (en) Computing on encrypted data using deferred evaluation
AU2019239311B2 (en) Facilitating queries of encrypted sensitive data via encrypted variant data objects
Sharma et al. Blockchain-based privacy preservation for IoT-enabled healthcare system
US11899816B2 (en) Batch tokenization service
US20190372880A1 (en) Deserialization service
CN111737720A (zh) 数据处理方法、装置及电子设备
US11966488B2 (en) De-tokenization patterns and solutions
CN112506481A (zh) 业务数据交互方法、装置、计算机设备和存储介质
CN111756684B (zh) 传输关键数据的方法、系统和非暂时性计算机可读存储介质
WO2022116761A1 (en) Self auditing blockchain
US20140156679A1 (en) Secure molecular similarity calculations
US10565391B2 (en) Expression evaluation of database statements for restricted data
CN114531247A (zh) 数据共享方法、装置、设备、存储介质及程序产品

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