CN113886418B - 一种数据处理方法、装置、电子设备及机器可读存储介质 - Google Patents

一种数据处理方法、装置、电子设备及机器可读存储介质 Download PDF

Info

Publication number
CN113886418B
CN113886418B CN202111143946.XA CN202111143946A CN113886418B CN 113886418 B CN113886418 B CN 113886418B CN 202111143946 A CN202111143946 A CN 202111143946A CN 113886418 B CN113886418 B CN 113886418B
Authority
CN
China
Prior art keywords
ciphertext
data
user
query
database
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
CN202111143946.XA
Other languages
English (en)
Other versions
CN113886418A (zh
Inventor
全方磊
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.)
Alipay Hangzhou Information Technology Co Ltd
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Ant Blockchain Technology Shanghai Co Ltd
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 Alipay Hangzhou Information Technology Co Ltd, Ant Blockchain Technology Shanghai Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202111143946.XA priority Critical patent/CN113886418B/zh
Publication of CN113886418A publication Critical patent/CN113886418A/zh
Application granted granted Critical
Publication of CN113886418B publication Critical patent/CN113886418B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/242Query formulation
    • G06F16/2433Query languages
    • 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/2455Query execution
    • G06F16/24553Query execution of query operations
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本说明书一个或多个实施例提供一种数据处理方法、装置、电子设备及机器可读存储介质,所述方法应用于数据库服务端;数据库服务端所维护的数据库中存储了由用户客户端上传的基于用户自主生成的用户公钥进行同态加密得到的密文数据;所述方法包括:接收用户客户端发送的SQL语句;所述SQL语句包含针对数据库中存储的密文数据进行数据处理的UDF相关的调用数据;响应于所述SQL语句,执行所述SQL语句包含的UDF,针对数据库中存储的密文数据进行数据处理,得到密文处理结果;将所述密文处理结果返回给用户客户端,以使用户客户端基于与所述用户公钥对应的用户私钥对所述密文处理结果进行解密,得到对应的数据处理结果。

Description

一种数据处理方法、装置、电子设备及机器可读存储介质
技术领域
本说明书一个或多个实施例涉及数据安全技术领域,尤其涉及一种数据处理方法、装置、电子设备及机器可读存储介质。
背景技术
随着数据的资源价值不断提高,对于各类数据库的企业用户和个人用户而言,都需要确保自身持有的数据在存储、访问、处理等过程中的安全性,避免隐私数据被泄漏。
为了保证用户的数据安全,目前数据库的开发厂商们针对不同的数据使用阶段,分别制定了不同的保护措施。例如,在数据存储阶段,可以通过专用网络进行数据隔离;在数据传输阶段,可以使用SSL/TLS协议,来保证数据的隐私性和完整性;在数据处理阶段,可以基于TEE(可信执行环境),保证数据在隔离、可信的环境中进行处理;在向用户客户端返回数据处理结果时,可以使用假名、哈希、遮盖等数据脱敏策略。
由此可见,在未经用户授权的情况下,上述保护措施可以防止用户持有的数据被他人盗取、恶意篡改等。
发明内容
本申请提供一种数据处理方法,应用于数据库服务端;所述数据库服务端所维护的数据库中存储了由用户客户端上传的基于所述用户自主生成的用户公钥进行同态加密得到的密文数据;所述数据库中部署了若干用于针对所述数据库中存储的密文数据进行数据处理的UDF用户自定义函数;所述方法包括:
接收所述用户客户端发送的SQL语句;其中,所述SQL语句包含针对所述数据库中存储的密文数据进行数据处理的UDF相关的调用数据;
响应于所述SQL语句,执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果;
将所述密文处理结果返回给所述用户客户端,以使所述用户客户端基于与所述用户公钥对应的用户私钥对所述密文处理结果进行解密,得到对应的数据处理结果。
可选的,所述用户公钥包括基于所述用户自主生成的用户密钥派生出的公钥;所述用户私钥包括基于所述用户自主生成的所述用户密钥派生出的私钥。
可选的,针对所述密文数据进行的数据处理,包括针对所述密文数据的查询处理;所述SQL语句包含针对所述密文数据进行查询处理的第一类UDF;
所述执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果,包括:
执行所述SQL语句包含的所述第一类UDF,针对所述数据库中存储的密文数据进行查询处理,得到密文查询结果。
可选的,针对所述密文数据的查询处理,包括针对所述密文数据的全等查询处理;所述第一类UDF包括用于针对所述密文数据进行全等查询处理的全等查询UDF;所述数据库中还存储了由所述用户客户端上传的与所述密文数据对应的全等查询索引;其中,所述全等查询索引基于所述用户密钥或由所述用户密钥派生出的子密钥进行了SSE对称可搜索加密;
所述执行所述SQL语句包含的所述第一类UDF,针对所述数据库中存储的密文数据进行查询处理,得到密文查询结果,包括:
执行所述SQL语句包含的所述全等查询UDF,获取基于所述用户密钥或所述子密钥进行对称可搜索加密而得到的密文查询条件,并将所述密文查询条件与所述全等查询索引进行匹配,得到密文查询结果。
可选的,所述密文数据中还包括基于布隆过滤器实现的前置查询索引;
所述将所述密文查询条件与所述全等查询索引进行匹配,包括:
将所述密文查询条件与所述前置查询索引进行匹配;
如果所述密文查询条件与所述前置查询索引匹配,则进一步将所述密文查询条件与所述全等查询索引进行匹配。
可选的,针对所述密文数据的查询处理,包括针对所述密文数据的模糊查询处理;所述第一类UDF包括用于针对所述密文数据进行模糊查询处理的模糊查询UDF;所述数据库中还存储了由所述用户客户端上传的与所述密文数据对应的模糊查询索引;其中,所述模糊查询索引基于所述用户密钥或由所述用户密钥派生出的子密钥进行了对称可搜索加密;
所述执行所述SQL语句包含的所述第一类UDF,针对所述数据库中存储的密文数据进行查询处理,得到密文查询结果,包括:
执行所述SQL语句包含的所述模糊查询UDF,获取基于所述用户密钥或所述子密钥进行对称可搜索加密而得到的密文查询条件,并将所述密文查询条件与所述模糊查询索引进行匹配,得到密文查询结果。
可选的,针对所述密文数据进行的数据处理,包括针对所述密文数据的计算处理;所述SQL语句包含针对所述密文数据进行计算处理的第二类UDF;
所述执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果,包括:
执行所述SQL语句包含的所述第二类UDF,针对所述数据库中存储的密文数据进行计算处理,得到密文计算结果。
可选的,所述数据库包括公有云数据库;所述公有云数据库为所述用户客户端提供了用于部署UDF的SDK软件开发工具包;
所述方法还包括:
获取所述用户客户端通过搭载的所述SDK上传的UDF;
将获取到的所述UDF在所述公有云数据库进行部署。
本申请还提供另一种数据处理方法,应用于数据库服务端;所述数据库服务端所维护的数据库中存储了基于数据属主方自主生成的用户公钥进行同态加密得到的密文数据;所述数据库中部署了若干用于针对所述数据库中存储的密文数据进行数据处理的UDF用户自定义函数;所述方法包括:
接收数据使用方的客户端发送的SQL语句;其中,所述SQL语句包含针对所述数据库中存储的密文数据进行数据处理的UDF相关的调用数据;
响应于所述SQL语句,执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果;
将所述密文处理结果返回给所述数据使用方的客户端,以使所述数据使用方的客户端将所述密文处理结果发送给所述数据属主方的客户端,并得到所述数据属主方的客户端返回的数据处理结果;其中,所述数据处理结果是由所述数据属主方的客户端基于与所述用户公钥对应的用户私钥对所述密文处理结果进行解密而得到的。
可选的,所述用户公钥包括基于所述数据属主方自主生成的用户密钥派生出的公钥;所述用户私钥包括基于所述数据属主方自主生成的所述用户密钥派生出的私钥。
可选的,针对所述密文数据进行的数据处理,包括针对所述密文数据的查询处理;所述SQL语句包含针对所述密文数据进行查询处理的第一类UDF;
所述执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果,包括:
执行所述SQL语句包含的所述第一类UDF,针对所述数据库中存储的密文数据进行查询处理,得到密文查询结果。
可选的,针对所述密文数据的查询处理,包括针对所述密文数据的全等查询处理;所述第一类UDF包括用于针对所述密文数据进行全等查询处理的全等查询UDF;所述数据库中还存储了与所述密文数据对应的全等查询索引;其中,所述全等查询索引基于所述用户密钥或由所述用户密钥派生出的子密钥进行了SSE对称可搜索加密;
所述执行所述SQL语句包含的所述第一类UDF,针对所述数据库中存储的密文数据进行查询处理,得到密文查询结果,包括:
执行所述SQL语句包含的所述全等查询UDF,获取基于所述用户密钥或所述子密钥进行对称可搜索加密而得到的密文查询条件,并将所述密文查询条件与所述全等查询索引进行匹配,得到密文查询结果。
可选的,所述密文数据中还包括基于布隆过滤器实现的前置查询索引;
所述将所述密文查询条件与所述全等查询索引进行匹配,包括:
将所述密文查询条件与所述前置查询索引进行匹配;
如果所述密文查询条件与所述前置查询索引匹配,则进一步将所述密文查询条件与所述全等查询索引进行匹配。
可选的,针对所述密文数据的查询处理,包括针对所述密文数据的模糊查询处理;所述第一类UDF包括用于针对所述密文数据进行模糊查询处理的模糊查询UDF;所述数据库中还存储了与所述密文数据对应的模糊查询索引;其中,所述模糊查询索引基于所述用户密钥或由所述用户密钥派生出的子密钥进行了对称可搜索加密;
所述执行所述SQL语句包含的所述第一类UDF,针对所述数据库中存储的密文数据进行查询处理,得到密文查询结果,包括:
执行所述SQL语句包含的所述模糊查询UDF,获取基于所述用户密钥或所述子密钥进行对称可搜索加密而得到的密文查询条件,并将所述密文查询条件与所述模糊查询索引进行匹配,得到密文查询结果。
可选的,针对所述密文数据的数据处理,包括针对所述密文数据的计算处理;所述SQL语句包含针对所述密文数据进行计算处理的第二类UDF;
所述执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果,包括:
执行所述SQL语句包含的所述第二类UDF,针对所述数据库中存储的密文数据进行计算处理,得到密文计算结果。
可选的,所述数据库包括公有云数据库;所述公有云数据库为所述数据属主方的客户端或所述数据使用方的客户端提供了用于部署UDF的SDK;
所述方法还包括:
获取所述数据属主方的客户端或所述数据使用方的客户端通过搭载的所述SDK上传的UDF;
将获取到的所述UDF在所述公有云数据库进行部署。
本申请还提供一种数据处理装置,应用于数据库服务端;所述数据库服务端所维护的数据库中存储了由用户客户端上传的基于所述用户自主生成的用户公钥进行同态加密得到的密文数据;所述数据库中部署了若干用于针对所述数据库中存储的密文数据进行数据处理的UDF用户自定义函数;所述装置包括:
接收单元,用于接收所述用户客户端发送的SQL语句;其中,所述SQL语句包含针对所述数据库中存储的密文数据进行数据处理的UDF相关的调用数据;
执行单元,用于响应于所述SQL语句,执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果;
返回单元,用于将所述密文处理结果返回给所述用户客户端,以使所述用户客户端基于与所述用户公钥对应的用户私钥对所述密文处理结果进行解密,得到对应的数据处理结果。
本申请还提供另一种数据处理装置,应用于数据库服务端;所述数据库服务端所维护的数据库中存储了基于数据属主方自主生成的用户公钥进行同态加密得到的密文数据;所述数据库中部署了若干用于针对所述数据库中存储的密文数据进行数据处理的UDF用户自定义函数;所述装置包括:
接收单元,用于接收数据使用方的客户端发送的SQL语句;其中,所述SQL语句包含针对所述数据库中存储的密文数据进行数据处理的UDF相关的调用数据;
执行单元,用于响应于所述SQL语句,执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果;
返回单元,用于将所述密文处理结果返回给所述数据使用方的客户端,以使所述数据使用方的客户端将所述密文处理结果发送给所述数据属主方的客户端,并得到所述数据属主方的客户端返回的数据处理结果;其中,所述数据处理结果是由所述数据属主方的客户端基于与所述用户公钥对应的用户私钥对所述密文处理结果进行解密而得到的。
本申请还提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述方法中的任一方法。
本申请还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述方法中的任一方法。
通过以上实施例,由于数据库中存储的密文数据是基于数据属主方自主生成的用户公钥对数据属主方持有的数据进行同态加密而得到的,因此,可以在所述数据库中部署用于针对所述密文数据进行数据处理的UDF,以使数据库服务端响应于接收到的SQL语句,可以执行所述SQL语句包含的UDF,针对所述密文数据进行数据处理,并返回得到的密文处理结果;并且,由于仅能基于数据属主方自主生成的用户私钥,对所述密文数据进行解密以得到数据属主方持有的数据,或对所述密文处理结果进行解密以得到对应的数据处理结果,因此,对于除了数据属主方之外的其他数据使用方或数据库厂商而言,即使盗取了所述密文数据或所述密文处理结果,也无法实现解密,从而在充分利用数据库的存储能力和计算能力的同时,可以有效避免数据属主方持有的数据被泄漏。
另外,在数据属主方与数据使用方不同的场景中,由于数据使用方仅能获取到密文数据或密文处理结果,并且需要将上述密文处理结果发送给数据属主方进行解密,因此,数据属主方在将持有的数据以上述密文数据的形式共享给其他数据使用方的同时,仍然可以控制未加密数据的转移过程。
附图说明
图1是一示例性的实施例示出的一种数据处理系统的架构示意图;
图2是一示例性的实施例示出的一种数据处理方法的流程图;
图3(a)是一示例性的实施例示出的另一种数据处理方法的架构示意图;
图3(b)是一示例性的实施例示出的另一种数据处理方法的架构示意图;
图4是一示例性的实施例示出的另一种数据处理方法的流程图;
图5是一示例性的实施例示出的一种数据处理装置所在电子设备的结构示意图;
图6是一示例性的实施例示出的一种数据处理装置的框图;
图7是一示例性的实施例示出的另一种数据处理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
为了使本技术领域的人员更好地理解本说明书实施例中的技术方案,下面先对本说明书实施例涉及的相关技术,进行简要说明。
为了保证用户的数据安全,目前数据库的开发厂商们针对不同的数据使用阶段,分别制定了不同的保护措施。例如,在数据存储阶段,可以通过专用网络进行数据隔离;在数据传输阶段,可以使用SSL/TLS(Secure Socket Layer/Transport Layer Security,安全套接字层/传输层安全协议)协议,来保证数据的隐私性和完整性;在数据处理阶段,可以基于TEE(Trusted Execution Environment,可信执行环境),保证数据在隔离、可信的环境中进行处理;在向用户客户端返回数据处理结果时,可以使用假名、哈希、遮盖等数据脱敏策略。
对于数据库用户而言,上述保护措施虽然可以避免用户持有的数据被他人盗取、恶意篡改等情况的出现,但是,无法防止数据库的开发商可能产生的恶意行为。
例如,如果云厂商在未经用户授权的情况下,盗取用户存储在公有云数据库中的隐私数据,并将盗取的数据提供给相关利益方,会导致用户的隐私数据被泄露,甚至会对用户的利益造成巨大损失;然而,公有云数据库的用户通常无法感知、无法阻止云厂商的上述恶意行为。
另外,在数据属主方将持有的数据共享给其他数据使用方的场景中,为了使得其他数据使用方可以针对共享的数据进行数据处理,数据属主方通常需要为其他数据使用方授予访问上述共享的数据的权限,然而,在授权后数据属主方可能难以实现对数据转移过程的控制。
例如,如果数据属主方将自身持有的、未加密的数据共享给其他数据使用方,而其他数据使用方可能会针对共享的全部数据进行拷贝,导致数据属主方难以控制数据转移过程。
由此可见,在以上示出的实施例中,数据库用户难以完全地信任数据库厂商,因此,用户通常不愿意将自身持有的重要的、隐私的数据存储在数据库中;另外,在数据共享的场景中,数据属主方难以实现对数据转移过程的控制。
有鉴于此,本说明书旨在提出一种数据属主方可以基于自主生成的用户公钥对其持有的数据进行同态加密,并将加密得到的密文数据存储到数据库中,而数据库服务端无需对上述密文数据进行解密,就可以通过用户在上述数据库中部署的UDF针对上述密文数据进行数据处理,并返回密文处理结果的技术方案,以解决至少一个上述提出的问题。
在实现时,如果数据属主方与数据使用方相同,均为与同一用户客户端对应的同一用户,则数据库服务端可以接收用户客户端发送的SQL语句;响应于上述SQL语句,可以执行上述SQL语句包含的UDF,针对数据库中存储的密文数据进行数据处理,得到密文处理结果;进一步地,可以将上述密文处理结果返回给上述用户客户端,以使上述用户客户端基于与用户自主生成的用户公钥对应的用户私钥对上述密文处理结果进行解密,得到对应的数据处理结果。
在实现时,如果数据属主方与数据使用方不同,则数据库服务端可以接收数据使用方的客户端发送的SQL语句;响应于上述SQL语句,执行上述SQL语句包含的UDF,针对数据库中存储的密文数据进行数据处理,得到密文处理结果;进一步地,可以将上述密文处理结果返回给上述数据使用方的客户端,以使上述数据使用方的客户端将上述密文处理结果发送给数据属主方的客户端,并得到上述数据属主方的客户端返回的数据处理结果;其中,上述数据处理结果是由上述数据属主方的客户端基于与上述数据属主方自主生成的用户公钥对应的用户私钥对上述密文处理结果进行解密而得到的。
由此可见,在本说明书中的技术方案中,由于数据库中存储的密文数据是基于数据属主方自主生成的用户公钥对数据属主方持有的数据进行同态加密而得到的,因此,数据属主方可以在上述数据库中部署用于针对上述密文数据进行数据处理的UDF,并通过向数据库服务端发送包含相关调用数据的SQL语句,来调用已部署的UDF,以使数据库服务端响应于接收到的SQL语句,可以执行上述SQL语句包含的UDF,针对上述密文数据进行数据处理,并返回得到的密文处理结果;并且,由于仅能基于数据属主方自主生成的用户私钥,对上述密文数据进行解密以得到数据属主方持有的数据,或对上述密文处理结果进行解密以得到对应的数据处理结果,因此,对于除了数据属主方之外的其他数据使用方或数据库厂商而言,即使盗取了上述密文数据或上述密文处理结果,也无法实现解密,从而在充分利用数据库的存储能力和计算能力的同时,可以有效避免数据属主方持有的数据被泄漏。
另外,在数据属主方与数据使用方不同的场景中,由于数据使用方仅能获取到密文数据或密文处理结果,并且需要将上述密文处理结果发送给数据属主方进行解密,因此,数据属主方在将持有的数据以上述密文数据的形式共享给其他数据使用方的同时,仍然可以控制未加密数据的转移过程。
下面通过具体实施例,先对上述密文数据的数据结构进行介绍,再结合具体应用场景对本申请进行描述。
在本说明书中,上述数据属主方(owner),可以包括与上述数据库中存储的密文数据对应的未加密数据(也即明文数据)的拥有者,具体地,通常可以包括上述未加密数据的创建者;上述数据使用方(user),可以包括与上述数据库中存储的密文数据对应的未加密数据的使用者。
例如,用户A可以将自身持有的数据存储至数据库中,并且用户A可以向用于维护上述数据库的数据库服务器发送针对存储在上述数据库中的数据进行数据处理的请求,那么,用户A既是数据属主方,也是数据使用方。
又例如,用户A可以将自身持有的数据进行加密,并将加密得到的密文数据共享给用户B使用,用户B可以向数据库服务器请求针对上述共享的密文数据进行数据处理,那么,用户A为数据属主方,用户B为数据使用方。
在本说明书中,上述密文数据(ciphertext),可以包括基于上述数据属主方自主生成的用户公钥,对上述数据属主方持有的数据进行同态加密而得到的加密后的数据;相应地,可以基于与上述用户公钥对应的用户私钥,对上述密文数据进行解密,得到对应的明文数据。
在示出的一种实施方式中,上述数据属主方也可以先自主生成用户密钥(secretkey),再基于上述用户密钥派生出公私钥对(public key-private key);因此,基于上述数据属主方自主生成的用户密钥派生得到的用户公钥和对应的用户私钥,也可以认为是由上述数据属主方自主生成的用户公钥和用户私钥。
其中,上述数据属主方自主生成的用户密钥,可以理解为,仅由上述数据属主方持有的用户密钥,其他数据使用方或数据库厂商无法获取到上述用户密钥。具体地,上述用户密钥,可以包括由上述数据属主方的用户客户端本地生成的用户密钥,也可以包括由上述数据属主方信任的、与上述数据库无关的第三方生成的用户密钥,本说明书中不做特别限定。另外,关于上述用户密钥的具体生成方式,可以基于相关技术中的任一密钥生成算法实现,在此不作赘述。
在实现时,上述用户公钥,可以包括基于上述数据属主方自主生成的用户密钥派生出的公钥(public key);上述用户私钥,可以包括基于上述用户密钥派生出的私钥(private key)。
为了使本技术领域的人员更好地理解本说明书实施例中的技术方案,下面先对同态加密的相关技术进行简要说明。
同态加密(Homomorphic Encryption),是一种基于数学难题的计算复杂性理论的密码学技术。可以先对经过同态加密的密文数据进行处理得到一个密文输出,再将这一密文输出进行解密得到对应的明文输出,其结果与用同一方法对未加密的明文数据进行处理得到的输出结果是一样的。由此可见,利用同态加密技术,无密钥方不需要对存储在上述数据库中的密文数据进行解密,就可以实现对上述密文数据的数据处理,并且可以得到一个密文形式的数据处理结果。
在实际应用中,同态加密可以分为全同态加密和半同态加密;其中,全同态加密是指可以对密文数据进行全部运算,如加减乘除、幂函数、多种运算的组合等;半同态加密是指可以对密文数据进行指定计算,如指定函数等。关于对数据进行同态加密的具体实现方式,本说明书中不做特别限定。
需要说明的是,在相关技术的一种实施方式中,数据属主方通常将持有的明文数据提供给数据库服务端,以使数据库服务端先对数据属主方持有的数据进行同态加密,再将密文数据存储至数据库中;由此可见,数据库厂商可以盗取数据属主方上传的明文数据,也具备对同态加密后的密文数据进行解密的能力。而在本说明书请求保护的技术方案中,数据属主方可以基于自主生成的用户公钥对持有的数据进行同态加密,并且可以将同态加密后的密文数据存储至数据库,因此,数据库厂商无法获取到数据属主方持有的明文数据,也不具备对上述密文数据进行解密的能力。
在实际应用中,数据属主方可以根据需求采用不同的同态加密算法,还可以灵活地配置上述密文数据的数据结构;例如,上述密文数据可以由若干密文块构成。请参见表1,表1是一示例性的实施例示出的一种密文数据的数据结构。
密文块的编号 密文块的实际值
1 表名
2 列名
3 数据类型枚举
4 随机数
5 前置查询索引
6 全等查询索引
7 模糊查询索引
8 同态加密值
9 用户公钥
表1
在本说明书中,上述密文数据中至少可以包括表名、列名、数据类型枚举和随机数。其中,上述表名,可以是一个长度可变的密文块,具体可以包括明文数据中的表名;上述列名,可以是一个长度可变的密文块,具体可以包括明文数据中的列名;上述数据类型枚举,可以是长度为1字节的密文块,用于在对密文数据进行解密的过程中确定对应的明文数据的数据类型,上述数据类型具体可以包括字符串、数值型等;上述随机数,可以是一个长度为12字节的密文块,用于提高同态加密算法的安全性,具体地,上述随机数可以由随机数生成器生成。
在本说明书中,上述密文数据中还可以包括同态加密值和用户公钥。其中,上述同态加密值,可以是一个长度可变的密文块,具体可以包括利用上述用户公钥对明文数据中的字段值进行同态加密得到的值;上述用户公钥,可以是由上述数据属主方自主生成的;上述用户公钥,也可以是由上述用户自主生成的用户密钥派生得到的,也即,可以将上述用户密钥作为生成参数,生成上述用户公钥和与上述用户公钥对应的用户私钥。
需要说明的是,由于上述数据库针对经过同态加密过的上述密文数据进行数据处理的过程,需要用于进行同态加密的上述用户公钥参与,因此,可以将上述用户自主生成的用户公钥也上传至数据库。具体地,上述用户公钥可以直接作为上述密文数据中的一部分(如表1所示),上传至数据库中;或者,上述密文数据中也可以不包括上述用户公钥,可以将上述用户公钥与上述密文数据分别上传至数据库,并建立二者之间的对应关系。
在实际应用中,针对存储在上述数据库中的密文数据的查询处理,可以包括全等查询处理和模糊查询处理。其中,全等查询处理,是指在上述数据库中查询完全满足查询条件的密文数据,比如,在SQL语句中可以使用关键字where来指定全等查询处理的查询条件;模糊查询处理,是指在上述数据库中查询字段值中的部分内容满足查询条件的密文数据,比如,在SQL语句中可以使用关键字like来指定模糊查询的查询条件。
在本说明书中,上述数据库中还可以存储与上述密文数据对应的查询索引,上述查询索引可以用于提高针对存储在上述数据库中的上述密文数据的查询效率。具体地,上述查询索引可以直接作为上述密文数据中的一部分(如表1所示),上传至数据库中;或者,上述密文数据中也可以不包括上述查询索引,可以将上述查询索引与上述密文数据分别上传至数据库,并建立二者之间的对应关系。如表1所示,上述密文数据中还可以包括以下示出的一种或几种查询索引:全等查询索引、模糊查询索引、前置查询索引等。
其中,上述全等查询索引,可以用于提高针对上述密文数据进行全等查询处理的效率。在实现时,上述全等查询索引,具体可以包括基于上述用户密钥对明文数据中的字段值、和生成的随机数进行可搜索加密,再针对加密结果进行哈希计算而得到的hash值。
可选的,除了直接将上述用户密钥作为上述全等查询索引的生成参数,还可以先由上述用户密钥派生得到子密钥,再将上述子密钥作为上述全等查询索引的生成参数,也即,上述全等查询索引基于上述子密钥进行了SSE对称可搜索加密,从而进一步提高密文数据的安全性。
例如,上述全等查询索引,具体可以包括由上述用户密钥和上述表名派生出子密钥,并基于上述子密钥对明文数据中的字段值和随机数进行可搜索加密,再针对加密结果进行计算得到的hash值;从而实现针对明文数据中不同的表生成不同的全等查询索引,提高数据安全性。
又例如,上述全等查询索引,具体可以包括由上述用户密钥、上述表名和上述列名派生出子密钥,并基于上述子密钥对明文数据中的字段值和随机数进行可搜索加密,再针对加密结果进行计算得到的hash值;从而实现针对明文数据中不同的列生成不同的全等查询索引,进一步提高数据安全性。
需要说明的是,在以上示出的实施例中,除了可以基于由上述用户密钥派生出来的子密钥对上述全等查询索引进行对称可搜索加密,也可以基于由上述用户密钥派生出来的公私钥对,对上述全等查询索引进行ASE非对称可搜索加密,本说明书中不做限制。
其中,上述前置查询索引,可以用于进一步地提高针对上述密文数据进行全等查询处理的效率。在实现时,上述前置查询索引具体可以基于布隆过滤器实现,上述布隆过滤器包含的元素具体可以包括明文数据中的所有列名、所有字段值、上述子密钥等,本领域技术人员可以根据需求自行设置,本说明书中不做特别限定。
需要说明的是,基于上述前置查询索引和上述全等查询索引,针对上述密文数据进行全等查询处理时,可以先利用上述前置查询索引来过滤掉所有密文数据中的部分不满足查询条件的密文数据,进一步地再利用上述全等查询索引来针对剩下的可能满足上述查询条件的密文数据进行匹配,并将满足上述查询条件的密文数据作为全等查询处理的密文处理结果,从而既可以提高针对密文数据的全等查询处理效率,又可以避免得到错误的查询结果。
其中,上述模糊查询索引,可以用于提高针对上述密文数据进行模糊查询处理的效率。在实现时,上述模糊查询索引,具体可以包括先基于上述用户密钥对明文数据中的字段值的所有字符串片段(也即所有子字符串)、和生成的随机数进行可搜索加密,再针对加密结果进行哈希计算而得到的hash值。
与上述全等查询索引的生成方式相似的,除了可以直接将上述用户密钥作为上述模糊查询索引的生成参数,还可以先由上述用户密钥派生得到子密钥,再将上述子密钥作为上述农户查询索引的生成参数,也即,上述模糊查询索引基于上述子密钥进行了对称可搜索加密,从而进一步提高密文数据的安全性。
例如,上述模糊查询索引,具体可以包括由上述用户密钥和上述表名派生出子密钥,先基于上述子密钥对明文数据中的字段值的所有字符串片段和随机数进行可搜索加密,再针对加密结果进行计算得到的hash值;从而实现针对明文数据中不同的表生成不同的模糊查询索引,进一步提高数据安全性。
例如,上述模糊查询索引,具体可以包括由上述用户密钥、上述表名和上述列名派生出子密钥,先基于上述子密钥对明文数据中的字段值的所有字符串片段和随机数进行可搜索加密,再针对加密结果进行计算得到的hash值;从而实现针对明文数据中不同的列生成不同的模糊查询索引,进一步提高数据安全性。
需要说明的是,在以上示出的实施例中,除了可以基于由上述用户密钥派生出来的子密钥对上述模糊查询索引进行对称可搜索加密,也可以基于由上述用户密钥派生出来的公私钥对,对上述模糊查询索引进行非对称可搜索加密,本说明书中不做限制。
另外,需要说明的是,在如表1所示的密文数据结构中,关于上述密文数据中包含的密文块、以及各密文块的排列顺序,仅仅是一种示例性的描述,并不对本说明书做出特殊限定;在实际应用中,本领域技术人员可以根据需求,自行设置上述密文数据的数据结构。例如,如果用户不需要针对存储在数据库中的上述密文数据进行模糊查询处理,则上述密文数据中无需添加上述模糊查询索引;又例如,上述各密文块之间的顺序也可以调整,在此不再赘述。
在基于上述数据属主方自主生成的用户公钥对其持有的明文数据进行同态加密,得到上述密文数据,并将上述密文数据存储至上述数据库中之后,进一步地,可以在上述数据库中部署用于针对上述密文数据进行数据处理的UDF;以使数据库服务端响应于接收到包含上述UDF相关的调用数据的数据处理请求,可以针对上述密文数据进行数据处理,并得到相应的密文处理结果。
下面结合两类不同的应用场景,继续对本申请进行描述。
(一)数据属主方与数据使用方相同
请参见图1,图1是一示例性的实施例示出的一种数据处理系统的架构示意图。上述数据处理系统的架构至少可以包括用户客户端102和数据库服务端104。
其中,与用户客户端102对应的用户,既可以是上述数据属主方,同时也可以是上述数据使用方;上述用户持有的明文数据可以由用户客户端102进行本地存储,也可以存储在与用户客户端102对应的可信数据库中,本说明书中不做特别限定。
在基于上述用户自主生成的用户公钥对上述用户持有的明文数据进行同态加密,得到密文数据之后,可以由用户客户端102将上述密文数据上传给数据库服务端104,将上述密文数据存储在数据库服务端104所维护的数据库中。
数据库服务端104所维护的数据库,可以包括传统的关系型数据库或非关系型数据库,也可以包括公有云数据库;数据库服务端104所维护的数据库中部署了用于针对上述密文数据进行数据处理的UDF(User Defined Function,用户自定义函数);具体地,上述UDF可以是由上述用户部署在上述数据库中的。
需要说明的是,在本说明书中,由于只有上述用户持有其自主生成的用户公钥,并且,针对上述用户持有的明文数据进行同态加密所采用的加密算法、以及上述密文数据的数据结构,都是由上述用户自行配置的;因此,数据库厂商在上述数据库中预先部署的系统函数,可能无法直接用于针对上述密文数据进行数据处理,需要由上述用户在上述数据库中自行部署UDF,并调用由用户部署的上述UDF来针对上述密文数据进行数据处理。
下面分别以传统关系型数据库MySQL和公有云数据库ODPS为例,简要介绍在数据库中部署UDF的流程。
在示出的一种实施方式中,上述数据库可以包括传统的数据库。在实现时,上述数据库服务端可以获取上述用户客户端上传的UDF,并在上述数据库中部署获取到的上述UDF。
例如,上述数据库为MySQL数据库时,用户可以用C语言之类的编程语言,在每个源文件中分别编写每个UDF的函数执行逻辑;进一步地,可以将上述源文件编译为so文件(也即共享库文件或可执行文件),并将so文件上传到用于维护上述MySQL数据库的数据库服务端;进一步的,可以在上述MySQL数据库中创建函数function,并指定与创建的函数function对应的UDF和对应的so文件,即可在上述MySQL数据库中部署上述UDF。
在示出的另一种实施方式中,上述数据库可以包括公有云数据库;上述公有云数据库可以为上述用户客户端提供用于部署UDF的SDK(Software Development Kit,软件开发工具包)。在实现时,上述数据库服务端可以通过其搭载的上述SDK获取上述用户客户端上传的UDF,并将获取到的上述UDF在上述公有云数据库进行部署。
例如,上述数据库为公有云数据库ODPS(Open Data Processing Service,开放数据处理服务)时,用户可以针对每个UDF新建一个类,上述新建的类可以继承UDF类或Aggregator类,并用编程语言Java分别编写每个UDF的函数执行逻辑;进一步地,通过ODPS提供的SDK,可以上传针对上述新建的类生成的jar包、以及其依赖的jar包;通过ODPS提供的SDK,可以创建函数function、以及包package,再将创建的函数function以及与上述新建的类对应的jar包加入到创建的包package;进一步地,可以为需要使用上述UDF的project赋予相应的权限。
需要说明的是,在以上示出的实施例中,关于在编写和部署UDF的过程中采用的编程语言和具体流程,以上仅仅是示例性的描述,并不对本说明书做出特别限定;在实际应用中,本领域技术人员也可以通过其他方式,编写用于针对上述密文数据进行数据处理的UDF,并在上述数据库中部署上述UDF。
在实际应用中,关于上述UDF的函数执行逻辑,上述数据属主方或上述数据使用方可以根据需求,灵活地编写函数执行逻辑不同的UDF,并在上述数据库中进行部署。
请参见表2,表2中示出了若干UDF、以及执行UDF针对上述密文数据进行的数据处理。
表2
需要说明的是,表2中仅仅示例性地示出了若干用于针对上述密文数据进行数据处理的UDF,本说明书中不再一一列举;在实际应用中,本领域技术人员基于如表2所示的UDF,无需付出创造性的劳动,就可以得出用于针对上述密文数据进行数据处理的其他UDF。例如,根据表2中示出的用于对密文数据进行相加运算的UDF,可以推测出用于对密文数据进行相减运算的UDF;又例如,根据表2中示出的用于对密文数据进行指数运算的UDF,还可以推测出用于对密文数据进行对数运算、求绝对值运算、开根号运算的UDF。
在上述数据库中部署了用于针对上述密文数据进行数据处理的UDF之后,上述用户客户端可以向上述数据库服务端发送包含上述UDF相关的调用数据的数据处理请求,以使上述数据库服务端针对存储在上述数据库中的密文数据进行与上述UDF相应的数据处理。
具体地,上述数据处理请求,可以通过SQL(Structured Query Language,结构化查询语言)语句的形式实现。
请参见图2,图2是一示例性的实施例示出的一种数据处理方法的流程图。上述数据处理方法可以应用于如图1所示的系统结构中的数据库服务端104,以实现本说明书的技术方案。其中,上述数据处理方法可以执行以下步骤:
步骤202:接收用户客户端发送的SQL语句;其中,上述SQL语句包含针对数据库中存储的密文数据进行数据处理的UDF相关的调用数据;上述数据库中存储的密文数据,是基于用户自主生成的用户公钥进行同态加密而得到的;
步骤204:响应于上述SQL语句,执行上述SQL语句包含的UDF,针对上述数据库中存储的密文数据进行数据处理,得到密文处理结果;
步骤206:将上述密文处理结果返回给上述用户客户端,以使上述用户客户端基于与上述用户公钥对应的用户私钥对上述密文处理结果进行解密,得到对应的数据处理结果。
在本说明书中,上述数据库服务端可以接收上述用户客户端发送的SQL语句;其中,上述SQL语句可以包含用于针对上述数据库中存储的密文数据进行数据处理的UDF相关的调用数据。具体地,上述UDF相关的调用数据,可以包括但不限于UDF的函数名称、输入参数等等。
例如,数据库服务端可以接收用户客户端发送的如下所示的SQL语句,
select ciphertext_add_compute(id,money)from db.table whereciphertext_equal_query(row_blind_index,name,"zhang");
其中,请参见表2,上述SQL语句中包含的UDF相关的调用数据为“ciphertext_add_compute(id,money)”、以及“ciphertext_equal_query(row_blind_index,name,"zhang")”;其中,“ciphertext_add_compute(id,money)”可以用于针对存储在数据库中的密文数据中的id字段和money字段进行相加运算;“ciphertext_equal_query(row_blind_index,name,"zhang")”可以用于针对上述密文数据进行利用前置查询索引的全等查询处理,上述UDF中携带的查询参数“(row_blind_index,name,"zhang"”,用于指示前置查询索引为“row_blind_index”,查询条件为“明文数据中name字段的字段值为zhang”。
在本说明书中,由于上述数据库中已经预先部署了上述UDF,因此,上述数据库服务端响应于接收到上述SQL语句,可以执行上述SQL语句包含的UDF,针对上述数据库中存储的密文数据进行相应的数据处理,得到密文处理结果。
例如,数据库服务端响应于接收到上述SQL语句“select ciphertext_add_compute(id,money)from db.table where ciphertext_equal_query(row_blind_index,name,"zhang");”,可以执行上述包含UDF的SQL语句,针对上述数据库中存储的密文数据进行相应的数据处理,并得到密文处理结果;具体地,可以先执行上述UDF“ciphertext_equal_query(row_blind_index,name,"zhang")”,针对库名为db、表名为table的密文数据,先基于前置查询索引“row_blind_index”进行过滤,再针对过滤结果进行全等查询处理,查询与name字段的同态加密值对应的字段值为zhang的所有记录,再执行上述UDF“ciphertext_add_compute(id,money)”,针对查询到的上述记录进行密文计算,计算出id字段的同态加密值和money字段的同态加密值相加的结果,作为执行上述SQL语句得到的密文处理结果。
需要说明的是,在以上示出的实施例中,上述SQL语句指示的查询条件为“name字段的值为zhang”,也即上述SQL语句包含的UDF“ciphertext_equal_query(row_blind_index,name,"zhang")”中携带的查询参数,是明文形式的,无法直接用于针对上述密文数据进行查询处理。因此,上述数据库服务端可以先将上述明文查询条件或上述明文查询参数发送给上述用户客户端,以使上述用户客户端基于用户自主生成的上述用户公钥对上述明文查询条件或上述明文查询参数进行同态加密,得到对应的密文查询条件或密文查询参数,并将得到的上述密文查询条件或密文查询参数返回给上述数据库客户端;进一步地,上述数据库服务端可以根据上述密文查询条件或密文查询参数,针对存储在上述数据库中的密文数据执行上述UDF。
在实际应用中,针对上述密文数据进行的数据处理,可以包括针对上述密文数据的查询处理和计算处理。下面分为针对上述密文数据的查询处理、以及针对上述密文数据的计算处理,这两个部分分别进行说明。
(1)针对上述密文数据的查询处理
在本说明书中,除了可以基于同态加密技术实现针对上述密文数据的查询处理,还可以基于可搜索加密(SE,Searchable Encryption)技术,实现针对存储在上述数据库中的密文数据的查询处理。上述两种查询处理的实现方式的区别在于:前者是先基于用户自主生成的用户公钥对明文查询条件进行同态加密,再将同态加密得到的密文查询条件与密文数据中的同态加密值进行匹配,并将匹配的密文数据作为密文查询结果;而后者是基于用户自主生成的用户密钥或由上述用户密钥派生出的子密钥,对明文查询条件进行对称可搜索加密,或者基于由上述用户密钥派生出的公私钥对中的公钥对明文查询条件进行非对称可搜索加密,再将可搜索加密得到的密文查询条件与全等查询索引或模糊查询索引进行匹配,并将与匹配的查询索引对应的密文数据作为密文查询结果。
为了使本技术领域的人员更好地理解本说明书实施例中的技术方案,下面先对可搜索加密的相关技术进行简要说明。
可搜索加密技术,是指能在密文数据中进行关键词搜索的技术。具体地,可以由上述数据属主方基于上述用户密钥对明文数据进行加密,并将得到的密文数据上传到上述数据库服务端;上述数据属主方还可以基于上述用户密钥对明文查询条件进行加密,并将得到的密文查询条件发送给上述数据库服务端;上述数据库服务端可以将上述密文查询条件与上述密文数据中的查询索引进行匹配,并返回满足上述密文查询条件的密文数据,也即与匹配的查询索引对应的密文数据,作为密文查询结果;上述数据属主方可以基于与上述用户密钥对应的解密密钥对上述密文查询结果进行解密,得到对应的明文查询结果。
由此可见,当上述数据属主方持有的数据以密文的形式存储在公有云数据库中时,基于可搜索加密技术针对密文数据进行查询处理,既可以利用云服务端的强大的计算能力,又无需向云服务端提供由上述数据属主方自主生成的用户密钥,可以避免用户的隐私数据被泄露。
在实际应用中,可搜索加密可以分为对称可搜索加密(SSE,SymmetricSearchable Encryption)和非对称可搜索加密(ASE,Asymmetric SearchableEncryption)。上述二者的区别在于:在对称可搜索加密技术中,可以采用同一密钥对明文数据进行加密、对明文查询条件进行加密、以及对密文查询结果进行解密;而在非对称可搜索加密技术中,可以采用公私钥对中的公钥对明文数据和明文查询条件进行加密,采用公私钥对中的私钥对密文查询结果进行解密。
需要说明的是,关于利用可搜索加密技术实现针对上述密文数据的查询处理的具体实现方式,可以采用对称可搜索加密技术,也可以采用非对称可搜索加密技术,本说明书中不做限定。在实际应用中,由于非对称加密算法相较于对称加密算法更加复杂,处理速度也较慢,因此,可以采用对称加密算法实现可搜索加密,用于针对数据库中存储的上述密文数据进行密文查询,并采用非对称算法实现同态加密,用于针对数据库中存储的上述密文数据进行密文计算,从而兼顾数据安全性与处理速度。
下面以采用对称可搜索加密技术实现针对上述密文数据的查询为例,继续对本说明书中的技术方案进行描述。
在本说明书中,上述SQL语句可以包含用于针对上述密文数据进行查询处理的第一类UDF。在实现时,上述数据库服务端可以响应于上述SQL语句,执行上述SQL语句包含的上述第一类UDF,针对上述数据库中存储的密文数据进行查询处理,得到密文查询结果。
例如,请参见表2中示出的第1、2、3个UDF,即ciphertext_equal_query(column_name,"queryValue")、ciphertext_equal_query(row_blind_index,column_name,"queryValue")、ciphertext_like_query(column_name,"queryValue"),可以属于上述第一类UDF。
在示出的一种实施方式中,针对上述密文数据的查询处理,可以包括针对上述密文数据的全等查询处理;上述第一类UDF,可以包括用于针对上述密文数据进行全等查询处理的全等查询UDF;上述数据库中还存储了与上述密文数据对应的全等查询索引;其中,上述全等查询索引基于上述用户密钥或由上述用户密钥派生出的子密钥进行了对称可搜索加密。在实现时,上述执行上述SQL语句包含的上述第一类UDF,针对上述数据库中存储的密文数据进行查询处理,得到密文查询结果的过程,具体可以包括:执行上述SQL语句包含的上述全等查询UDF,获取基于上述用户密钥或上述子密钥进行对称可搜索加密而得到的密文查询条件,并将上述密文查询条件与上述全等查询索引进行匹配,得到密文查询结果。
其中,上述获取基于上述用户密钥或上述子密钥进行对称可搜索加密而得到的密文查询条件的过程,具体可以包括:上述数据库服务端可以将上述全等查询UDF中携带的明文查询参数发送给上述用户客户端,以使上述用户客户端基于上述用户密钥或上述子密钥对上述明文查询参数进行对称可搜索加密,得到对应的密文查询参数,并返回给上述数据库服务端;进一步地,上述数据库服务端响应于接收到上述用户客户端返回的密文查询参数,可以获取到密文查询条件。
例如,数据库服务端接收到的SQL语句中包含的全等查询UDF,具体可以包括如表2所示的第1个UDF;数据库服务端可以执行上述全等查询UDF,并通过OpenAPI将上述全等查询UDF中携带的明文查询参数发送给用户客户端,以得到上述用户客户端返回的对应的密文查询参数,获取到与上述SQL语句对应的密文查询条件,再将上述密文查询条件与上述密文数据中包括的全等查询索引进行匹配,得到密文查询结果;其中,上述用户客户端可以基于上述用户密钥或上述子密钥对上述明文查询参数进行对称可搜索加密,得到对应的密文查询参数。
在以上示出的实施方式中,上述密文数据中还可以包括上述前置查询索引,其中,上述前置查询索引可以基于布隆过滤器实现,从而提高针对上述密文数据进行全等查询处理的效率。在实现时,上述将上述密文查询条件与上述全等查询索引进行匹配的过程,具体可以包括:先将上述密文查询条件与上述前置查询索引进行匹配;如果上述密文查询条件与上述前置查询索引匹配,则进一步将上述密文查询条件与上述全等查询索引进行匹配。
例如,数据库服务端接收到的SQL语句中包含的全等查询UDF,具体可以包括如表2所示的第2个UDF,数据库服务端可以执行上述全等查询UDF,获取密文查询条件;可以先将上述密文查询条件与上述前置查询索引“row_blind_index”进行匹配;如果不匹配,则可以认为上述全等查询UDF执行完毕;如果匹配,可以进一步地将上述密文查询条件与上述密文数据中包括的全等查询索引进行匹配,得到密文查询结果。
在示出的另一种实施方式中,针对上述密文数据的查询处理,可以包括针对上述密文数据的模糊查询处理;上述第一类UDF,可以包括用于针对上述密文数据进行模糊查询处理的模糊查询UDF;上述数据库中还存储了与上述密文数据对应的模糊查询索引;其中,上述模糊查询索引基于上述用户密钥或由上述用户密钥派生出的子密钥进行了对称可搜索加密。在实现时,上述执行上述SQL语句包含的上述第一类UDF,针对上述数据库中存储的密文数据进行查询处理,得到密文查询结果的过程,具体可以包括:执行上述SQL语句包含的上述模糊查询UDF,获取基于上述用户密钥或上述子密钥进行对称可搜索加密而得到的密文查询条件,并将上述密文查询条件与上述模糊查询索引进行匹配,得到密文查询结果。
例如,数据库服务端接收到的SQL语句中包含的模糊查询UDF,具体可以包括如表2所示的第3个UDF,数据库服务端可以执行上述模糊查询UDF,通过OpenAPI将上述模糊查询UDF中携带的明文查询参数发送给用户客户端,以得到上述用户客户端返回的对应的密文查询参数,得到与上述SQL语句对应的密文查询条件,再将上述密文查询条件与上述密文数据中包括的模糊查询索引进行匹配,得到密文查询结果;其中,上述用户客户端可以基于上述用户密钥或上述子密钥对上述明文查询参数进行对称可搜索加密,得到对应的密文查询参数。
(2)针对上述密文数据的计算处理
在本说明书中,上述SQL语句包含用于针对上述密文数据进行计算处理的第二类UDF。在实现时,上述数据库服务端可以响应于上述SQL语句,执行上述SQL语句包含的上述第二类UDF,针对上述数据库中存储的密文数据进行计算处理,得到密文计算结果。
其中,上述第二类UDF,具体可以包括如表2中示出的第4-10个UDF;在实际应用中,上述第二类UDF具体还可以包括其他用于针对上述密文数据进行计算处理的UDF,本说明书中不再一一列举。
其中,上述针对上述数据库中存储的密文数据进行计算处理的过程,具体可以包括:根据上述第二类UDF相关的调用数据,针对上述数据库中存储的相关的密文数据,执行上述第二类UDF的函数执行逻辑,以进行相应的计算处理。
例如,数据库服务端接收到的SQL语句中包含的第二类UDF相关的调用数据,具体可以包括如表2所示的第6个UDF,也即,ciphertext_add_compute(id,money);数据库服务端可以执行上述第二类UDF,从与id字段和money字段对应的密文数据中,读取出同态加密值和对应的用户公钥,并利用获取到的上述同态加密值和上述用户公钥,进行相应的密文相加运算,得到密文计算结果。
在本说明书中,上述数据库服务端在执行上述SQL语句,得到上述密文处理结果之后,可以将上述密文处理结果返回给上述用户客户端;以使上述用户客户端可以基于与上述用户公钥对应的用户私钥对返回的上述密文处理结果进行解密,并得到对应的数据处理结果。
例如,数据库服务端在得到上述密文处理结果之后,可以将上述密文处理结果返回给用户客户端;进一步地,用户客户端响应于接收到数据库服务端返回的上述密文处理结果,可以基于与上述用户公钥对应的用户私钥,对上述密文处理结果进行解密,得到对应的明文形式的数据处理结果。
通过以上技术方案可知,在数据属主方与数据使用方相同的场景中,由于数据库中存储的密文数据是基于上述用户自主生成的用户公钥进行同态加密而得到的,因此,可以在上述数据库中部署用于针对上述密文数据进行数据处理的UDF,以使数据库服务端响应于接收到的SQL语句,可以执行上述SQL语句包含的UDF,针对上述密文数据进行数据处理,并返回得到的密文处理结果;并且,由于仅能基于上述用户自主生成的用户公钥,对上述密文数据进行解密以得到上述用户持有的明文数据,或对上述密文处理结果进行解密以得到明文形式的数据处理结果,因此,即使数据库厂商盗取了上述密文数据或上述密文处理结果,也无法实现解密,从而上述用户在充分利用数据库的存储能力和计算能力的同时,可以有效避免持有的隐私数据被泄漏。
(二)数据属主方与数据使用方不同
请参见图3(a),图3(a)是一示例性的实施例示出的另一种数据处理系统的架构示意图。上述数据处理系统的架构至少可以包括客户端302、客户端304和数据库服务端306。
其中,与客户端302对应的用户,可以是上述数据属主方,相应地,与客户端304对应的用户,可以是上述数据使用方;上述数据属主方持有的明文数据可以由客户端302进行本地存储,也可以存储在与客户端302对应的可信数据库中,本说明书中不做特别限定。
在基于上述数据属主方自主生成的用户公钥对上述数据属主方持有的明文数据进行同态加密,得到密文数据之后,可以由上述数据属主方的客户端302将上述密文数据上传给数据库服务端306,将上述密文数据存储在数据库服务端306所维护的数据库中;上述数据使用方对应的客户端304可以针对存储在数据库服务端306中的上述密文数据进行数据处理,并得到密文处理结果。
数据库服务端306,可以包括上述数据属主方的客户端302与上述数据使用方的客户端304共同接入的服务端;数据库服务端306所维护的数据库,可以包括传统的关系型数据库或非关系型数据库,也可以包括公有云数据库;数据库服务端306所维护的数据库中部署了用于针对上述密文数据进行数据处理的UDF;其中,上述UDF可以是由上述数据属主方或上述数据使用方部署在上述数据库中的。
需要说明的是,在如图3(a)所示的架构示意图中,上述数据属主方的客户端302和上述数据使用方对应的客户端304可以共用同一个数据库服务端306。由此可见,若上述数据属主方将上述密文数据共享给多个数据使用方,那么上述多个数据使用方针对上述密文数据进行数据处理的过程中所需的算力,全部是由数据库服务端306提供的。
请参见图3(b),图3(b)是一示例性的实施例示出的另一种数据处理系统的架构示意图。上述数据处理系统的架构至少可以包括客户端308、客户端310、客户端312、数据库服务端314和数据库服务端316。
其中,与客户端308对应的用户,可以是上述数据属主方;与客户端310和客户端312对应的用户,可以是上述数据使用方;上述数据属主方持有的明文数据可以由客户端308进行本地存储,也可以存储在与客户端308对应的可信数据库中,本说明书中不做特别限定。
在基于上述数据属主方自主生成的用户公钥对上述数据属主方持有的明文数据进行同态加密,得到密文数据之后,可以先由上述数据属主方的客户端308将上述密文数据发送给上述数据使用方的客户端310或客户端312;进一步地,再由上述数据使用方的客户端310将上述密文数据上传给对应的数据库服务端314,将上述密文数据存储在数据库服务端314所维护的数据库中,或者,由上述数据使用方的客户端312将上述密文数据上传给对应的数据库服务端316,将上述密文数据存储在数据库服务端316所维护的数据库中;上述数据使用方对应的客户端可以针对存储在数据库服务端所维护的数据库中的密文数据进行数据处理,并得到密文处理结果;进一步地,上述数据使用方的客户端310或客户端312可以将得到的密文处理结果发送给上述数据属主方的客户端308,以使上述数据属主方可以基于与上述用户公钥对应的用户私钥对上述密文处理结果进行解密,得到明文形式的数据处理结果;上述数据使用方的客户端310或客户端312可以获取上述解密得到的数据处理结果。
数据库服务端314、数据库服务端316所维护的数据库,可以包括传统的关系型数据库或非关系型数据库,也可以包括公有云数据库;数据库服务端314、数据库服务端316所维护的数据库中部署了用于针对上述密文数据进行数据处理的UDF;其中,上述UDF可以是由上述数据属主方或上述数据使用方部署在上述数据库中的。
需要说明的是,在如图3(b)所示的架构示意图中,上述数据属主方的客户端308,与上述数据使用方的客户端310或客户端312,可以分别接入不同的数据库服务端(客户端308接入的数据库服务端在图3(b)中未示出,可以是数据库服务端314、316之外的其他数据库服务端);并且,不同的数据使用方可以分别将上述数据属主方提供的密文数据上传到各自对应的不同的数据库服务端。由此可见,若上述数据属主方将上述密文数据共享给多个数据使用方,那么上述多个数据使用方针对上述密文数据进行数据处理的过程中所需的算力,是由与上述多个数据使用方各自对应的数据库服务端分别提供的;相较于如图3(a)所示的系统架构中由数据属主方接入的数据库服务端承担全部算力的实现方式,采用如图3(b)所示的系统架构,尤其是在数据使用方的数量较多,或者数据使用方向数据库服务端发起大量数据处理请求的场景中,可以分担数据库服务端的计算压力,提高数据处理效率。
另外,需要说明的是,在数据属主方与数据使用方不同的场景中,上述数据属主方可以将基于自主生成的用户公钥进行同态加密得到的密文数据共享给上述数据使用方,上述数据使用方仅能获取到上述数据属主方提供的密文数据、或这对上述密文数据进行数据处理得到的密文处理结果,无法获取到上述数据属主方持有的全部明文数据;另外,由于只有上述数据属主方持有其自主生成的用户公钥,因此,上述数据使用方也不具备针对上述密文数据或密文处理结果进行解密的能力;另外,对于上述数据使用方而言,由于上述密文数据的数据结构可以是公开的信息,因此上述数据使用方也可以编写并在数据库中部署用于针对上述密文数据进行数据处理的UDF。
关于上述数据属主方或上述数据使用方在上述数据库中部署UDF的流程、以及UDF的示例,请参见上述场景(一)中示出的各实施例,在此不再赘述。
在上述数据库中部署了用于针对上述密文数据进行数据处理的UDF之后,上述数据使用方的客户端可以向上述数据库服务端发送包含上述UDF相关的调用数据的数据处理请求,以使上述数据库服务端针对存储在上述数据库中的密文数据进行与上述UDF相应的数据处理。具体地,上述数据处理请求,可以通过SQL(Structured Query Language,结构化查询语言)语句的形式实现。
请参见图4,图4是一示例性的实施例示出的另一种数据处理方法的流程图。该数据处理方法可以应用于如图3(a)或图3(b)所示的系统结构中的任一数据库服务端,以实现本说明书的技术方案。其中,上述数据处理方法可以执行以下步骤:
步骤402:接收数据使用方的客户端发送的SQL语句;其中,上述SQL语句包含针对数据库中存储的密文数据进行数据处理的UDF相关的调用数据;上述数据库中存储的密文数据,是基于数据属主方自主生成的用户公钥进行同态加密而得到的;
步骤404:响应于上述SQL语句,执行上述SQL语句包含的UDF,针对上述数据库中存储的密文数据进行数据处理,得到密文处理结果;
步骤406:将上述密文处理结果返回给上述数据使用方的客户端,以使上述数据使用方的客户端将上述密文处理结果发送给上述数据属主方的客户端,并得到上述数据属主方的客户端返回的数据处理结果;其中,上述数据处理结果是由上述数据属主方的客户端基于与上述用户公钥对应的用户私钥对上述密文处理结果进行解密而得到的。
在本说明书中,上述数据库服务端可以接收上述数据使用方的客户端发送的SQL语句;其中,上述SQL语句可以包含用于针对数据库中存储的密文数据进行数据处理的UDF相关的调用数据。
例如,数据库服务端可以接收数据使用方的客户端发送的如下所示的SQL语句,
“select ciphertext_add_compute(id,money)from db.table whereciphertext_equal_query(row_blind_index,name,"zhang");”
其中,请参见表2,上述SQL语句中包含的UDF相关的调用数据为“ciphertext_add_compute(id,money)”、以及“ciphertext_equal_query(row_blind_index,name,"zhang")”;其中,“ciphertext_add_compute(id,money)”可以用于针对存储在数据库中的密文数据中的id字段和money字段进行相加运算;“ciphertext_equal_query(row_blind_index,name,"zhang")”可以用于针对上述密文数据进行利用前置查询索引的全等查询处理,上述UDF中携带的查询参数“(row_blind_index,name,"zhang"”,用于指示前置查询索引为“row_blind_index”,查询条件为“明文数据中name字段的字段值为zhang”。
在本说明书中,由于上述数据库中已经预先部署了上述UDF,因此,上述数据库服务端响应于接收到上述SQL语句,可以执行上述SQL语句包含的UDF,针对上述数据库中存储的密文数据进行相应的数据处理,得到密文处理结果。
例如,数据库服务端响应于接收到上述SQL语句“select ciphertext_add_compute(id,money)from db.table where ciphertext_equal_query(row_blind_index,name,"zhang");”,可以执行上述包含UDF相关的调用数据的SQL语句,针对上述数据库中存储的密文数据进行相应的数据处理,并得到密文处理结果;具体地,可以先执行上述UDF“ciphertext_equal_query(row_blind_index,name,"zhang")”,针对库名为db、表名为table的密文数据,先基于前置查询索引“row_blind_index”进行过滤,再针对过滤结果进行全等查询处理,查询与name字段的同态加密值对应的字段值为zhang的所有记录,再执行上述UDF“ciphertext_add_compute(id,money)”,针对查询到的上述记录进行密文计算,计算出id字段的同态加密值和money字段的同态加密值相加的结果,作为执行上述SQL语句得到的密文处理结果。
由于上述步骤404的具体实现方式与上述步骤204的具体实现方式相似,因此,对于二者的具体实现方式中的相似之处,在此不再赘述,可以参见关于上述步骤204的各实施例;下面仅对二者的不同之处进行描述。
其中,上述获取密文查询条件的过程,具体可以包括:上述数据库服务端可以将上述第一类UDF中携带的明文查询参数发送给上述数据属主方的客户端,以使上述数据属主方的客户端基于其自主生成的用户密钥或由上述用户密钥派生出的子密钥对上述明文查询参数进行可搜索加密,得到对应的密文查询参数,并返回给上述数据库服务端;进一步地,上述数据库服务端响应于接收到上述数据属主方的客户端返回的密文查询参数,可以获取到密文查询条件。
例如,数据库服务端接收到的SQL语句中包含的第一类UDF,具体可以包括如表2所示的第1个UDF;数据库服务端可以执行上述第一类UDF,并通过OpenAPI将上述第一类UDF中携带的明文查询参数发送给数据属主方的客户端,以得到上述数据属主方的客户端返回的对应的密文查询参数,获取到与上述SQL语句对应的密文查询条件,再将上述密文查询条件与上述密文数据进行匹配,得到密文查询结果;其中,上述数据属主方的客户端可以基于上述数据属主方自主生成的用户密钥或上述子密钥对上述明文查询参数进行可搜索加密,得到对应的密文查询参数。
需要说明的是,关于上述数据库服务端与上述数据属主方的客户端之间进行通信的具体方式,本说明书中不做限定。例如,上述数据库服务端可以通过OpenAPI将上述第一类UDF中携带的明文查询参数发送给上述数据属主方的客户端;又例如,在如图3(b)所示的系统架构中,上述数据库服务端可以通过上述数据使用方的客户端,与上述数据属主方的客户端进行通信,也即,上述数据库服务端可以先将上述明文查询参数发送给上述数据使用方的客户端,再由上述数据使用方的客户端将上述明文查询参数转发给上述数据使用方的客户端。
在本说明书中,上述数据库服务端在执行上述SQL语句,得到上述密文处理结果之后,可以将上述密文处理结果返回给上述数据使用方的客户端;以使上述数据使用方的客户端将上述密文处理结果发送给上述数据属主方的客户端,并得到上述数据属主方的客户端返回的数据处理结果;其中,上述数据属主方的客户端可以基于与上述数据属主方自主生成的用户公钥对应的用户私钥对上述密文处理结果进行解密,得到上述数据处理结果。
例如,数据库服务端在得到上述密文处理结果之后,可以将上述密文处理结果返回给数据使用方的客户端;进一步地,数据使用方的客户端响应于接收到数据库服务端返回的上述密文处理结果,可以将上述密文处理结果发送给上述数据属主方的客户端;上述数据属主方的客户端响应于接收到上述数据使用方发送的密文处理结果,可以基于与上述数据属主方自主生成的用户公钥对应的用户私钥对上述密文处理结果进行解密,得到对应的明文形式的数据处理结果,并返回给上述数据使用方的客户端;上述数据使用方的客户端可以接收上述明文形式的数据处理结果。
通过以上技术方案可知,由于数据库中存储的密文数据是基于数据属主方自主生成的用户公钥对数据属主方持有的数据进行同态加密而得到的,因此,可以在上述数据库中部署用于针对上述密文数据进行数据处理的UDF,以使数据库服务端响应于接收到的SQL语句,可以执行上述SQL语句包含的UDF,针对上述密文数据进行数据处理,并返回得到的密文处理结果;并且,由于仅能基于与数据属主方自主生成的用户公钥对应的用户私钥,对上述密文数据进行解密以得到数据属主方持有的数据,或对上述密文处理结果进行解密以得到对应的数据处理结果,因此,对于除了数据属主方之外的其他数据使用方或数据库厂商而言,即使盗取了上述密文数据或上述密文处理结果,也无法实现解密,从而在充分利用数据库的存储能力和计算能力的同时,可以有效避免数据属主方持有的数据被泄漏。
另外,在数据属主方与数据使用方不同的场景中,由于数据使用方仅能获取到密文数据或密文处理结果,并且需要将上述密文处理结果发送给数据属主方进行解密,因此,数据属主方在将持有的数据以上述密文数据的形式共享给其他数据使用方的同时,仍然可以控制未加密数据的转移过程。
与上述数据处理方法的实施例对应的,本说明书还提供了数据处理装置的实施例。
请参见图5,图5是一示例性的实施例示出的一种数据处理装置所在电子设备的硬件结构图。在硬件层面,该设备包括处理器502、内部总线504、网络接口506、内存508以及非易失性存储器510,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器502从非易失性存储器510中读取对应的计算机程序到内存508中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参见图6,图6是一示例性的实施例示出的一种数据处理装置的框图。该数据处理装置可以应用于如图5所示的电子设备中,以实现本说明书的技术方案。其中,上述数据处理装置可以包括:
接收单元602,用于接收上述用户客户端发送的SQL语句;其中,上述SQL语句包含针对上述数据库中存储的密文数据进行数据处理的UDF相关的调用数据;上述密文数据是基于上述用户自主生成的用户公钥进行同态加密而得到的;
执行单元604,用于响应于上述SQL语句,执行上述SQL语句包含的UDF,针对上述数据库中存储的密文数据进行数据处理,得到密文处理结果;
返回单元606,用于将上述密文处理结果返回给上述用户客户端,以使上述用户客户端基于与上述用户公钥对应的用户私钥对上述密文处理结果进行解密,得到对应的数据处理结果。
在本实施例中,上述用户公钥包括基于上述用户自主生成的用户密钥派生出的公钥;上述用户私钥包括基于上述用户自主生成的用户密钥派生出的私钥。
在本实施例中,针对上述密文数据进行的数据处理,包括针对上述密文数据的查询处理;上述SQL语句包含针对上述密文数据进行查询处理的第一类UDF;
上述执行单元604,具体用于执行上述SQL语句包含的上述第一类UDF,针对上述数据库中存储的密文数据进行查询处理,得到密文查询结果。
在本实施例中,针对上述密文数据的查询处理,包括针对上述密文数据的全等查询处理;上述第一类UDF包括用于针对上述密文数据进行全等查询处理的全等查询UDF;上述数据库中还存储了由上述用户客户端上传的与上述密文数据对应的全等查询索引;其中,上述全等查询索引基于上述用户密钥或由上述用户密钥派生出的子密钥进行了对称可搜索加密;
上述执行单元604,具体用于执行上述SQL语句包含的上述全等查询UDF,获取基于上述用户密钥或上述子密钥进行对称可搜索加密而得到的密文查询条件,并将上述密文查询条件与上述全等查询索引进行匹配,得到密文查询结果。
在本实施例中,上述密文数据中还包括基于布隆过滤器实现的前置查询索引;
上述执行单元604,具体用于:
将上述密文查询条件与上述前置查询索引进行匹配;
如果上述密文查询条件与上述前置查询索引匹配,则进一步将上述密文查询条件与上述全等查询索引进行匹配。
在本实施例中,针对上述密文数据的查询处理,包括针对上述密文数据的模糊查询处理;上述第一类UDF包括用于针对上述密文数据进行模糊查询处理的模糊查询UDF;上述数据库中还存储了由上述用户客户端上传的与上述密文数据对应的模糊查询索引;其中,上述模糊查询索引基于上述用户密钥或由上述用户密钥派生出的子密钥进行了对称可搜索加密;
上述执行单元604,具体用于执行上述SQL语句包含的上述模糊查询UDF,获取基于上述用户密钥或上述子密钥进行对称可搜索加密而得到的密文查询条件,并将上述密文查询条件与上述模糊查询索引进行匹配,得到密文查询结果。
在本实施例中,针对上述密文数据进行的数据处理,包括针对上述密文数据的计算处理;上述SQL语句包含针对上述密文数据进行计算处理的第二类UDF;
上述执行单元604,具体用于执行上述SQL语句包含的上述第二类UDF,针对上述数据库中存储的密文数据进行计算处理,得到密文计算结果。
在本实施例中,上述数据库包括公有云数据库;上述公有云数据库为上述用户客户端提供了用于部署UDF的SDK软件开发工具包;
上述装置还包括部署单元,用于:
获取上述用户客户端通过搭载的上述SDK上传的UDF;
将获取到的上述UDF在上述公有云数据库进行部署。
请参见图7,图7是一示例性的实施例示出的另一种数据处理装置的框图。该数据处理装置可以应用于如图5所示的电子设备中,以实现本说明书的技术方案。其中,上述数据处理装置可以包括:
接收单元702,用于接收数据使用方的客户端发送的SQL语句;其中,上述SQL语句包含针对上述数据库中存储的密文数据进行数据处理的UDF相关的调用数据;上述密文数据是基于数据属主方自主生成的用户公钥进行同态加密而得到的;
执行单元704,用于响应于上述SQL语句,执行上述SQL语句包含的UDF,针对上述数据库中存储的密文数据进行数据处理,得到密文处理结果;
返回单元706,用于将上述密文处理结果返回给上述数据使用方的客户端,以使上述数据使用方的客户端将上述密文处理结果发送给上述数据属主方的客户端,并得到上述数据属主方的客户端返回的数据处理结果;其中,上述数据处理结果是由上述数据属主方的客户端基于与上述用户公钥对应的用户私钥对上述密文处理结果进行解密而得到的。
在本实施例中,上述用户公钥包括基于上述数据属主方自主生成的用户密钥派生出的公钥;上述用户私钥包括基于上述数据属主方自主生成的用户密钥派生出的私钥。
在本实施例中,针对上述密文数据进行的数据处理,包括针对上述密文数据的查询处理;上述SQL语句包含针对上述密文数据进行查询处理的第一类UDF;
上述执行单元704,具体用于执行上述SQL语句包含的上述第一类UDF,针对上述数据库中存储的密文数据进行查询处理,得到密文查询结果。
在本实施例中,针对上述密文数据的查询处理,包括针对上述密文数据的全等查询处理;上述第一类UDF包括用于针对上述密文数据进行全等查询处理的全等查询UDF;上述数据库中还存储了与上述密文数据对应的全等查询索引;其中,上述全等查询索引基于上述用户密钥或由上述用户密钥派生出的子密钥进行了SSE对称可搜索加密;
上述执行单元704,具体用于执行上述SQL语句包含的上述全等查询UDF,获取基于上述用户密钥或上述子密钥进行对称可搜索加密而得到的密文查询条件,并将上述密文查询条件与上述全等查询索引进行匹配,得到密文查询结果。
在本实施例中,上述密文数据中还包括基于布隆过滤器实现的前置查询索引;
上述执行单元704,具体用于:
将上述密文查询条件与上述前置查询索引进行匹配;
如果上述密文查询条件与上述前置查询索引匹配,则进一步将上述密文查询条件与上述全等查询索引进行匹配。
在本实施例中,针对上述密文数据的查询处理,包括针对上述密文数据的模糊查询处理;上述第一类UDF包括用于针对上述密文数据进行模糊查询处理的模糊查询UDF;上述数据库中还存储了与上述密文数据对应的模糊查询索引;其中,上述模糊查询索引基于上述用户密钥或由上述用户密钥派生出的子密钥进行了对称可搜索加密;
上述执行单元704,具体用于执行上述SQL语句包含的上述模糊查询UDF,获取基于上述用户密钥或上述子密钥进行对称可搜索加密而得到的密文查询条件,并将上述密文查询条件与上述模糊查询索引进行匹配,得到密文查询结果。
在本实施例中,针对上述密文数据的数据处理,包括针对上述密文数据的计算处理;上述SQL语句包含针对上述密文数据进行计算处理的第二类UDF;
上述执行单元704,具体用于执行上述SQL语句包含的上述第二类UDF,针对上述数据库中存储的密文数据进行计算处理,得到密文计算结果。
在本实施例中,上述数据库包括公有云数据库;上述公有云数据库为上述数据属主方的客户端或上述数据使用方的客户端提供了用于部署UDF的SDK;
上述装置还包括部署单元,用于:
获取上述数据属主方的客户端或上述数据使用方的客户端通过搭载的上述SDK上传的UDF;
将获取到的上述UDF在上述公有云数据库进行部署。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例只是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (16)

1.一种数据处理方法,其特征在于,应用于数据库服务端;所述数据库服务端所维护的数据库中存储了由用户客户端上传的基于所述用户自主生成的用户公钥进行同态加密得到的密文数据;所述数据库中部署了若干用于针对所述数据库中存储的密文数据进行数据处理的UDF用户自定义函数;所述方法包括:
接收所述用户客户端发送的SQL语句;其中,所述SQL语句包含针对所述数据库中存储的密文数据进行数据处理的UDF相关的调用数据;
响应于所述SQL语句,执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果;
将所述密文处理结果返回给所述用户客户端,以使所述用户客户端基于与所述用户公钥对应的用户私钥对所述密文处理结果进行解密,得到对应的数据处理结果;
其中,针对所述密文数据进行的数据处理包括针对所述密文数据的模糊查询处理,所述SQL语句包含针对所述密文数据进行模糊查询处理的模糊查询UDF;所述数据库中还存储了由所述用户客户端上传的与所述密文数据对应的模糊查询索引,所述模糊查询索引基于所述用户密钥或由所述用户密钥派生出的子密钥进行了对称可搜索加密;
所述执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果,包括:执行所述SQL语句包含的所述模糊查询UDF,获取基于所述用户密钥或所述子密钥进行对称可搜索加密而得到的密文查询条件,并将所述密文查询条件与所述模糊查询索引进行匹配,得到密文查询结果。
2.根据权利要求1所述的方法,其特征在于,所述用户公钥包括基于所述用户自主生成的用户密钥派生出的公钥;所述用户私钥包括基于所述用户自主生成的所述用户密钥派生出的私钥。
3.根据权利要求1所述的方法,其特征在于,针对所述密文数据进行的数据处理包括针对所述密文数据的全等查询处理;所述SQL语句包含用于针对所述密文数据进行全等查询处理的全等查询UDF;所述数据库中还存储了由所述用户客户端上传的与所述密文数据对应的全等查询索引;其中,所述全等查询索引基于所述用户密钥或由所述用户密钥派生出的子密钥进行了SSE对称可搜索加密;
所述执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果,包括:
执行所述SQL语句包含的所述全等查询UDF,获取基于所述用户密钥或所述子密钥进行对称可搜索加密而得到的密文查询条件,并将所述密文查询条件与所述全等查询索引进行匹配,得到密文查询结果。
4.根据权利要求3所述的方法,其特征在于,所述密文数据中还包括基于布隆过滤器实现的前置查询索引;
所述将所述密文查询条件与所述全等查询索引进行匹配,包括:
将所述密文查询条件与所述前置查询索引进行匹配;
如果所述密文查询条件与所述前置查询索引匹配,则进一步将所述密文查询条件与所述全等查询索引进行匹配。
5.根据权利要求1所述的方法,其特征在于,针对所述密文数据进行的数据处理,包括针对所述密文数据的计算处理;所述SQL语句包含针对所述密文数据进行计算处理的第二类UDF;
所述执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果,包括:
执行所述SQL语句包含的所述第二类UDF,针对所述数据库中存储的密文数据进行计算处理,得到密文计算结果。
6.根据权利要求1所述的方法,其特征在于,所述数据库包括公有云数据库;所述公有云数据库为所述用户客户端提供了用于部署UDF的SDK软件开发工具包;
所述方法还包括:
获取所述用户客户端通过搭载的所述SDK上传的UDF;
将获取到的所述UDF在所述公有云数据库进行部署。
7.一种数据处理方法,其特征在于,应用于数据库服务端;所述数据库服务端所维护的数据库中存储了基于数据属主方自主生成的用户公钥进行同态加密得到的密文数据;所述数据库中部署了若干用于针对所述数据库中存储的密文数据进行数据处理的UDF用户自定义函数;所述方法包括:
接收数据使用方的客户端发送的SQL语句;其中,所述SQL语句包含针对所述数据库中存储的密文数据进行数据处理的UDF相关的调用数据;
响应于所述SQL语句,执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果;
将所述密文处理结果返回给所述数据使用方的客户端,以使所述数据使用方的客户端将所述密文处理结果发送给所述数据属主方的客户端,并得到所述数据属主方的客户端返回的数据处理结果;其中,所述数据处理结果是由所述数据属主方的客户端基于与所述用户公钥对应的用户私钥对所述密文处理结果进行解密而得到的;
其中,针对所述密文数据进行的数据处理包括针对所述密文数据的模糊查询处理,所述SQL语句包含针对所述密文数据进行模糊查询处理的模糊查询UDF;所述数据库中还存储了由所述用户客户端上传的与所述密文数据对应的模糊查询索引,所述模糊查询索引基于所述用户密钥或由所述用户密钥派生出的子密钥进行了对称可搜索加密;
所述执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果,包括:执行所述SQL语句包含的所述模糊查询UDF,获取基于所述用户密钥或所述子密钥进行对称可搜索加密而得到的密文查询条件,并将所述密文查询条件与所述模糊查询索引进行匹配,得到密文查询结果。
8.根据权利要求7所述的方法,其特征在于,所述用户公钥包括基于所述数据属主方自主生成的用户密钥派生出的公钥;所述用户私钥包括基于所述数据属主方自主生成的所述用户密钥派生出的私钥。
9.根据权利要求7所述的方法,其特征在于,针对所述密文数据进行的数据处理包括针对所述密文数据的全等查询处理;所述SQL语句包含用于针对所述密文数据进行全等查询处理的全等查询UDF;所述数据库中还存储了与所述密文数据对应的全等查询索引;其中,所述全等查询索引基于所述用户密钥或由所述用户密钥派生出的子密钥进行了SSE对称可搜索加密;
所述执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果,包括:
执行所述SQL语句包含的所述全等查询UDF,获取基于所述用户密钥或所述子密钥进行对称可搜索加密而得到的密文查询条件,并将所述密文查询条件与所述全等查询索引进行匹配,得到密文查询结果。
10.根据权利要求9所述的方法,其特征在于,所述密文数据中还包括基于布隆过滤器实现的前置查询索引;
所述将所述密文查询条件与所述全等查询索引进行匹配,包括:
将所述密文查询条件与所述前置查询索引进行匹配;
如果所述密文查询条件与所述前置查询索引匹配,则进一步将所述密文查询条件与所述全等查询索引进行匹配。
11.根据权利要求7所述的方法,其特征在于,针对所述密文数据的数据处理,包括针对所述密文数据的计算处理;所述SQL语句包含针对所述密文数据进行计算处理的第二类UDF;
所述执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果,包括:
执行所述SQL语句包含的所述第二类UDF,针对所述数据库中存储的密文数据进行计算处理,得到密文计算结果。
12.根据权利要求7所述的方法,其特征在于,所述数据库包括公有云数据库;所述公有云数据库为所述数据属主方的客户端或所述数据使用方的客户端提供了用于部署UDF的SDK;
所述方法还包括:
获取所述数据属主方的客户端或所述数据使用方的客户端通过搭载的所述SDK上传的UDF;
将获取到的所述UDF在所述公有云数据库进行部署。
13.一种数据处理装置,其特征在于,应用于数据库服务端;所述数据库服务端所维护的数据库中存储了由用户客户端上传的基于所述用户自主生成的用户公钥进行同态加密得到的密文数据;所述数据库中部署了若干用于针对所述数据库中存储的密文数据进行数据处理的UDF用户自定义函数;所述装置包括:
接收单元,用于接收所述用户客户端发送的SQL语句;其中,所述SQL语句包含针对所述数据库中存储的密文数据进行数据处理的UDF相关的调用数据;
执行单元,用于响应于所述SQL语句,执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果;
返回单元,用于将所述密文处理结果返回给所述用户客户端,以使所述用户客户端基于与所述用户公钥对应的用户私钥对所述密文处理结果进行解密,得到对应的数据处理结果;
其中,针对所述密文数据进行的数据处理包括针对所述密文数据的模糊查询处理,所述SQL语句包含针对所述密文数据进行模糊查询处理的模糊查询UDF;所述数据库中还存储了由所述用户客户端上传的与所述密文数据对应的模糊查询索引,所述模糊查询索引基于所述用户密钥或由所述用户密钥派生出的子密钥进行了对称可搜索加密;
所述执行单元,用于执行所述SQL语句包含的所述模糊查询UDF,获取基于所述用户密钥或所述子密钥进行对称可搜索加密而得到的密文查询条件,并将所述密文查询条件与所述模糊查询索引进行匹配,得到密文查询结果。
14.一种数据处理装置,其特征在于,应用于数据库服务端;所述数据库服务端所维护的数据库中存储了基于数据属主方自主生成的用户公钥进行同态加密得到的密文数据;所述数据库中部署了若干用于针对所述数据库中存储的密文数据进行数据处理的UDF用户自定义函数;所述装置包括:
接收单元,用于接收数据使用方的客户端发送的SQL语句;其中,所述SQL语句包含针对所述数据库中存储的密文数据进行数据处理的UDF相关的调用数据;
执行单元,用于响应于所述SQL语句,执行所述SQL语句包含的UDF,针对所述数据库中存储的密文数据进行数据处理,得到密文处理结果;
返回单元,用于将所述密文处理结果返回给所述数据使用方的客户端,以使所述数据使用方的客户端将所述密文处理结果发送给所述数据属主方的客户端,并得到所述数据属主方的客户端返回的数据处理结果;其中,所述数据处理结果是由所述数据属主方的客户端基于与所述用户公钥对应的用户私钥对所述密文处理结果进行解密而得到的;
其中,针对所述密文数据进行的数据处理包括针对所述密文数据的模糊查询处理,所述SQL语句包含针对所述密文数据进行模糊查询处理的模糊查询UDF;所述数据库中还存储了由所述用户客户端上传的与所述密文数据对应的模糊查询索引,所述模糊查询索引基于所述用户密钥或由所述用户密钥派生出的子密钥进行了对称可搜索加密;
所述执行单元,用于执行所述SQL语句包含的所述模糊查询UDF,获取基于所述用户密钥或所述子密钥进行对称可搜索加密而得到的密文查询条件,并将所述密文查询条件与所述模糊查询索引进行匹配,得到密文查询结果。
15.一种电子设备,其特征在于,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行权利要求1-6或7-12中任一项所述的方法。
16.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现权利要求1-6或7-12中任一项所述的方法。
CN202111143946.XA 2021-09-28 2021-09-28 一种数据处理方法、装置、电子设备及机器可读存储介质 Active CN113886418B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111143946.XA CN113886418B (zh) 2021-09-28 2021-09-28 一种数据处理方法、装置、电子设备及机器可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111143946.XA CN113886418B (zh) 2021-09-28 2021-09-28 一种数据处理方法、装置、电子设备及机器可读存储介质

Publications (2)

Publication Number Publication Date
CN113886418A CN113886418A (zh) 2022-01-04
CN113886418B true CN113886418B (zh) 2024-05-28

Family

ID=79007566

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111143946.XA Active CN113886418B (zh) 2021-09-28 2021-09-28 一种数据处理方法、装置、电子设备及机器可读存储介质

Country Status (1)

Country Link
CN (1) CN113886418B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114448702B (zh) * 2022-01-29 2024-02-27 中国工商银行股份有限公司 一种基于隐私集合求交的数据加密方法及装置
CN114760063A (zh) * 2022-03-18 2022-07-15 百安居信息技术(上海)有限公司 家装留资数据处理方法、系统、存储介质及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3683709A2 (en) * 2020-04-20 2020-07-22 CyberArk Software Ltd. Variable encryption techniques for secure and efficient searchable encryption
CN112800088A (zh) * 2021-01-19 2021-05-14 东北大学 基于双向安全索引的数据库密文检索系统及方法
CN113157778A (zh) * 2021-06-09 2021-07-23 富算科技(上海)有限公司 分布式数据仓库的可代理查询方法、系统、设备及介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9049023B2 (en) * 2011-05-24 2015-06-02 Zeutro Llc Outsourcing the decryption of functional encryption ciphertexts
US11902425B2 (en) * 2019-12-12 2024-02-13 Google Llc Encrypted search with a public key

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3683709A2 (en) * 2020-04-20 2020-07-22 CyberArk Software Ltd. Variable encryption techniques for secure and efficient searchable encryption
CN112800088A (zh) * 2021-01-19 2021-05-14 东北大学 基于双向安全索引的数据库密文检索系统及方法
CN113157778A (zh) * 2021-06-09 2021-07-23 富算科技(上海)有限公司 分布式数据仓库的可代理查询方法、系统、设备及介质

Also Published As

Publication number Publication date
CN113886418A (zh) 2022-01-04

Similar Documents

Publication Publication Date Title
CN110895611B (zh) 基于隐私信息保护的数据查询方法、装置、设备及系统
CN109936626B (zh) 区块链中实现隐私保护的方法、节点和存储介质
US10341103B2 (en) Data analytics on encrypted data elements
CN110032885B (zh) 区块链中实现隐私保护的方法、节点和存储介质
CN111523110B (zh) 基于链代码的权限查询配置方法及装置
CN108768951B (zh) 一种云环境下保护文件隐私的数据加密和检索方法
CN110689349B (zh) 一种区块链中的交易哈希值存储和搜索方法及装置
CN110020549B (zh) 区块链中实现隐私保护的方法、节点和存储介质
Salam et al. Implementation of searchable symmetric encryption for privacy-preserving keyword search on cloud storage
US9602280B2 (en) System and method for content encryption in a key/value store
CN110032876B (zh) 区块链中实现隐私保护的方法、节点和存储介质
US11621834B2 (en) Systems and methods for preserving data integrity when integrating secure multiparty computation and blockchain technology
EP2103032B1 (en) Privacy enhanced comparison of data sets
CN113886418B (zh) 一种数据处理方法、装置、电子设备及机器可读存储介质
CN114065252A (zh) 一种带条件检索的隐私集合求交方法、装置及计算机设备
CN110033265B (zh) 区块链中实现隐私保护的方法、节点和存储介质
EP4020265A1 (en) Method and device for storing encrypted data
CN108170753B (zh) 一种共有云中Key-Value数据库加密与安全查询的方法
CN113434555B (zh) 一种基于可搜索加密技术的数据查询方法和装置
CN115694921B (zh) 一种数据存储方法、设备及介质
CN113742370B (zh) 全加密数据库的数据查询方法、统计信息密文生成方法
JP6732887B2 (ja) データベースクエリのための方法及びシステム
CN114995949A (zh) 容器镜像构建方法及装置
CN113839773A (zh) 一种luks密钥离线提取方法、终端设备及存储介质
CN114546271B (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