CN116702215B - 一种查询处理方法、装置、设备及介质 - Google Patents
一种查询处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116702215B CN116702215B CN202310983316.6A CN202310983316A CN116702215B CN 116702215 B CN116702215 B CN 116702215B CN 202310983316 A CN202310983316 A CN 202310983316A CN 116702215 B CN116702215 B CN 116702215B
- Authority
- CN
- China
- Prior art keywords
- query
- data
- ciphertext
- identification
- party
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 35
- 238000000034 method Methods 0.000 claims abstract description 106
- 238000012545 processing Methods 0.000 claims description 132
- 239000013598 vector Substances 0.000 claims description 60
- 230000008569 process Effects 0.000 claims description 49
- 238000004590 computer program Methods 0.000 claims description 23
- 238000004364 calculation method Methods 0.000 description 75
- 230000006870 function Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 11
- 230000014509 gene expression Effects 0.000 description 10
- 238000010276 construction Methods 0.000 description 8
- 238000012795 verification Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003090 exacerbative effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6254—Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种查询处理方法、装置、设备及介质,其中的方法包括:响应于查询方发送的隐匿查询请求,获取M个分组中每个分组的标识密文;将M个分组的标识密文发送至查询方,使查询方从M个分组中确定出目标分组,并由查询方基于目标分组的标识密文得到目标分组对应的目标标识密文;接收查询方返回的目标标识密文,并基于目标标识密文为L个键值对生成加密对;将L个加密对返回至查询方,使得查询方从L个加密对中确定目标加密对,并解密目标加密对中的数据密文得到明文数据。采用本申请实施例有效减少隐匿查询的计算开销。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种查询处理方法、装置、设备及介质。
背景技术
隐匿查询是指数据查询的双方只感知查询事件的存在,而隐藏查询事件的查询信息的查询方式。
目前,在每次隐匿查询事件中,数据查询的双方需要基于全量数据进行计算。例如,在一次查询事件中,存储数据的数据方需要串行加密全量数据,而数据的查询方也需基于全量数据加密后的密文来隐藏待查询数据。这导致每次隐匿查询事件的计算复杂度较高,特别是数据方存储有海量数据时进一步加重计算开销。
因此,如何减少隐匿查询的计算开销显得尤为重要。
发明内容
本申请实施例提供一种查询处理方法、装置、设备及介质,能够有效减少隐匿查询的计算开销,节省查询成本。
一方面,本申请实施例提供了一种查询处理方法,该方法应用于数据方,数据方存储有L个键值对,每个键值对中包括一个查询标识及查询标识关联的明文数据;基于L个查询标识生成L个查询哈希值,L个查询哈希值被分配至M个分组中;L和M均为大于1的整数,且L≥M;该方法包括:
响应于查询方发送的隐匿查询请求,获取M个分组中每个分组的标识密文;标识密文用于隐匿数据方存储的查询标识;
将M个分组的标识密文发送至查询方,使查询方从M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并由查询方基于目标分组的标识密文,同态计算目标分组的零化多项式在待查询哈希值的取值所得到的目标标识密文,目标标识密文用于隐匿待查询哈希值;
接收查询方返回的目标标识密文,并基于目标标识密文为L个键值对生成加密对;每个加密对中包括一个标识向量和一个数据密文,标识向量用于表征加密对对应的键值对中的查询标识,数据密文是对加密对对应的键值对中的明文数据加密得到的;
将L个加密对返回至查询方,使得查询方从L个加密对中确定标识向量与待查询标识相匹配的目标加密对,并解密目标加密对中的数据密文得到明文数据。
另一方面,本申请实施例提供一种查询处理装置,该装置搭载于数据方,数据方存储有L个键值对,每个键值对中包括一个查询标识及查询标识关联的明文数据;基于L个查询标识生成L个查询哈希值,L个查询哈希值被分配至M个分组中;L和M均为大于1的整数,且L≥M;该装置包括:
获取单元,用于响应于查询方发送的隐匿查询请求,获取M个分组中每个分组的标识密文;标识密文用于隐匿数据方存储的查询标识;
处理单元,用于将M个分组的标识密文发送至查询方,使查询方从M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并由查询方基于目标分组的标识密文,同态计算目标分组的零化多项式在待查询哈希值的取值所得到的目标标识密文,目标标识密文用于隐匿待查询哈希值;
处理单元,还用于接收查询方返回的目标标识密文,并基于目标标识密文为L个键值对生成加密对;每个加密对中包括一个标识向量和一个数据密文,标识向量用于表征加密对对应的键值对中的查询标识,数据密文是对加密对对应的键值对中的明文数据加密得到的;
处理单元,还用于将L个加密对返回至查询方,使得查询方从L个加密对中确定标识向量与待查询标识相匹配的目标加密对,并解密目标加密对中的数据密文得到明文数据。
在一种实现方式中,M个分组的分配过程包括:
将每个查询哈希值分别和M进行取模运算,得到每个查询哈希值对应的取模结果;
按照每个查询哈希值对应的取模结果,将每个查询哈希值分别分配至M个候选分组;
若M个候选分组中存在至少两个候选分组所包括的查询哈希值的数量不同,则对M个候选分组进行哈希值补齐处理,得到M个分组;
其中,哈希值补齐处理后的每个分组所包括的查询哈希值的数量相同。
在一种实现方式中,L个查询哈希值中的任一个查询哈希值对应的取模结果表示为取模结果k,k为整数且k∈[1,M];处理单元,用于按照每个查询哈希值对应的取模结果,将每个查询哈希值分别分配至M个候选分组时,具体用于:
基于取模结果k,将任一个查询哈希值分配至M个候选分组中的第k个候选分组。
在一种实现方式中,处理单元,用于对M个候选分组进行哈希值补齐处理,得到M个分组时,具体用于:
从M个候选分组中确定参考候选分组,参考候选分组是M个候选分组中包括的查询哈希值的数量最多的候选分组;
获取参考候选分组所包括的查询哈希值的数量nmax,并基于数量nmax选择参考数量N,N≥nmax且N为整数;
基于数量nmax和参考数量N之间的关系,为M个候选分组中的全部或部分候选分组填充随机哈希值,生成M个分组;
其中,填充后的每个分组所包括的查询哈希值的数量均为N。
在一种实现方式中,处理单元,用于获取M个分组中每个分组的标识密文时,具体用于:
获取M个分组中每个分组的零化多项式,任一分组的零化多项式是基于任一分组所包括的至少一个查询哈希值预先构造的;零化多项式包括至少一个单项式,且每个单项式由不同阶数的变量和系数组成;
获取数据方和查询方之间的公钥PK,并采用公钥PK对每个分组的零化多项式分别进行系数加密处理,生成每个分组的标识密文;
其中,每个分组对应的标识密文的数量,和相应分组所包括的查询哈希值的数量相同。
在一种实现方式中,M个分组中的任一分组表示为第k个分组,k为整数且k∈[1,M];处理单元,用于采用公钥PK对每个分组的零化多项式分别进行系数加密处理,生成每个分组的标识密文时,具体用于:
从明文空间中为第k个分组的零化多项式所包括的各系数选取随机数;
基于为各系数选取的随机数和公钥PK,分别对各系数进行加密处理,生成第k个分组的标识密文;
其中,第k个分组的零化多项式中除最高阶单项式的系数外的其他每个系数对应一个标识密文。
在一种实现方式中,处理单元,还用于:
获取数据方和查询方之间的私钥sk,并基于私钥sk和目标标识密文验证待查询标识对应的待查询哈希值是否存储于数据方;
若是,则触发执行基于目标标识密文为L个键值对生成加密对的步骤。
在一种实现方式中,每个分组对应有一个随机多项式;随机多项式包括至少一个单项式,每个单项式由随机数和不同阶数的变量组成;M个分组中的任一分组表示为第k个分组,k为整数且k∈[1,M];处理单元,用于基于目标标识密文为L个键值对生成加密对时,具体用于:
获取第k个分组对应的数值组;数值组中包括:第k个分组所包括的各查询哈希值被分别带入至随机多项式中的变量时,变量的取值;数值组是数据方预先计算并存储的;
基于第k个分组对应的数值组,目标标识密文和包括第k个分组中各查询哈希值对应的查询标识的各键值对,生成包括第k个分组中各查询哈希值对应的查询标识的各键值对的加密对。
在一种实现方式中,目标标识密文表示为;处理单元,用于基于第k个分组对应的数值组,目标标识密文和包括第k个分组中各查询哈希值对应的查询标识的各键值对,生成包括第k个分组中各查询哈希值对应的查询标识的各键值对的加密对时,具体用于:
基于第k个分组对应的数值组和目标标识密文所包括的,计算第k个分组所包括的各查询哈希值对应的二进制数据;二进制数据包括从左至右分布的2λ比特位;
根据分布于各查询哈希值对应的二进制数据的左侧的λ比特位,生成包括相应查询哈希值的键值对中的查询标识的标识向量,以及根据分布于各查询哈希值对应的二进制数值的右侧的λ比特位,生成用于对包括相应查询哈希值的键值对中的明文数据进行加密的对称密钥;
分别采用各对称密钥对相应键值对中的明文数据进行加密处理,生成相应键值对中明文数据对应的数据密文。
在一种实现方式中,数据方存储的L个键值对按序排列;处理单元,用于将L个加密对返回至查询方时,具体用于:
获取预设返回规则;
按照预设返回规则,调整L个键值对的L个加密对之间的排列顺序;
将顺序调整后的L个加密对返回至查询方。
又一方面,本申请实施例提供了一种查询处理方法,该方法应用于查询方;该方法包括:
向数据方发送隐匿查询请求,使数据方响应于隐匿查询请求返回M个分组中每个分组对应的标识密文,标识密文用于隐匿数据方存储的查询标识;数据方存储有L个键值对,每个键值对中包括一个查询标识及查询标识关联的明文数据;基于L个查询标识生成L个查询哈希值,L个查询哈希值被分配至M个分组中;L和M均为大于1的整数,且L≥M;
接收数据方返回的每个分组对应的标识密文,并基于每个分组对应的标识密文,从M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并同态计算目标分组的零化多项式在待查询哈希值的取值所得到的目标标识密文;目标标识密文用于隐匿待查询哈希值;
将目标标识密文发送至数据方,使数据方基于目标标识密文为数据方存储的L个键值对生成加密对;
接收数据方返回的每个键值对生成加密对,并从L个加密对中确定标识向量与待查询标识的标识向量相匹配的目标加密对;
对目标加密对中的数据密文进行解密处理,得到明文数据。
又一方面,本申请实施例提供了一种查询处理装置,该装置搭载于查询方;该装置包括:
发送单元,用于向数据方发送隐匿查询请求,使数据方响应于隐匿查询请求返回M个分组中每个分组对应的标识密文,标识密文用于隐匿数据方存储的查询标识;数据方存储有L个键值对,每个键值对中包括一个查询标识及查询标识关联的明文数据;基于L个查询标识生成有L个查询哈希值, L个查询哈希值被分配至M个分组中;L和M均为大于1的整数,且L≥M;
处理单元,用于接收数据方返回的每个分组对应的标识密文,并基于每个分组对应的标识密文,从M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并同态计算目标分组的零化多项式在待查询哈希值的取值所得到的目标标识密文;目标标识密文用于隐匿待查询哈希值;
处理单元,还用于将目标标识密文发送至数据方,使数据方基于目标标识密文为数据方存储的L个键值对生成加密对;
处理单元,还用于接收数据方返回的每个键值对生成加密对,并从L个加密对中确定标识向量与待查询标识的标识向量相匹配的目标加密对;
对目标加密对中的数据密文进行解密处理,得到明文数据。
在一种实现方式中,处理单元,用于基于目标分组的标识密文,对在包含待查询哈希值的情况下的目标分组进行同态计算,得到目标分组对应的目标标识密文时,具体用于:
基于目标分组的标识密文,构造目标分组的零化多项式对应的密文多项式;
将待查询哈希值输入至密文多项式,同态计算得到目标标识密文。
另一方面,本申请实施例提供了一种计算机设备,该计算机设备包括:
处理器,用于加载并执行计算机程序;
计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时,实现上述查询处理方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行上述查询处理方法。
另一方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被处理器执行时,实现上述查询处理方法。
本申请实施例中,首先,支持利用分桶思想(或称为分组思想),按照分桶规则将数据方侧数据集中存储的L个查询标识对应的L个查询哈希值划分至M个分组,L和M均为大于1的整数,且L≥M。这样,数据方响应于查询方发送的隐匿查询请求,可以获取每个分组的标识密文,标识密文用于隐匿数据方存储的查询标识,并将每个分组的标识密文返回至查询方;使得查询方能够从M个分组中找到待查询标识的待查询哈希值被分配至应当所属的目标分组,并同态计算该目标分组包括待查询哈希值时该目标分组对应的目标标识密文。最后,数据方可以接收查询方返回的目标标识密文,并基于该目标标识密文为数据方存储的L个键值对生成L个加密对;这样,查询方在获得L个加密对后可以从L个加密对中确定标识向量与待查询标识相匹配的目标加密对,从而解密该目标加密对中的数据密文就得到的明文数据。由上述方案可知,本申请实施例提供一种信息的隐匿查询方案,该方案支持利用分桶思想对数据集中存储的海量查询标识的查询哈希值进行分桶;这样,隐匿查询的数据双方只需以分组为单位实现隐匿查询,不仅能确保查询双方的安全性,而且有效减小查询双方的计算开销和计算时间。如针对数据方而言,数据方基于分组所包括的查询哈希值计算各分组的标识密文,相比于针对数据集全量查询标识的查询哈希值计算标识密文而言,单个分组所包括的查询哈希值的数量远小于数据集中全部查询标识的查询哈希值,那么能够有效减少单个处理器针对单个分组的计算开销。进一步的,如果多个处理器并行对多个分组进行标识密文的计算,那么进一步减小计算时间,从而提高查询效率。同理,如针对查询方而言,查询方从数据方获取到M个分组的标识密文,并从M个分组中确定出目标分组后,只需基于目标分组的标识密文来同步计算目标标识密文;相比于未分组之前基于全量标识密文进行同态计算而言,显著减少计算量,减小计算开销并节省计算时间,从而提高查询效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例提供的一种隐匿处理系统的架构示意图;
图2是本申请一个示例性实施例提供的一种查询处理方法的流程示意图;
图3是本申请一个示例性实施例提供的一种基于目标标识密文生成键值对的加密对的生成示意图;
图4是本申请一个示例性实施例提供的另一种查询处理方法的流程示意图;
图5是本申请一个示例性实施例提供的一种查询方进行向量匹配并解密得到明文数据的示意图;
图6是本申请一个示例性实施例提供的另一种基于目标标识密文生成键值对的加密对的生成示意图;
图7是本申请一个示例性实施例提供的一种分组的示意图;
图8是本申请一个示例性实施例提供的一种查询处理装置的结构示意图;
图9是本申请一个示例性实施例提供的另一种查询处理装置的结构示意图;
图10是本申请一个示例性实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例涉及隐匿查询(Private Information Retrieval,PIR),隐匿查询又称为隐私信息检索、匿踪查询等。隐匿查询是一种在隐匿查询事件中隐匿查询双方的查询信息的隐私计算。其中,隐匿查询事件可以理解为一次在线隐匿查询所产生的查询事件。例如,隐匿查询事件为查询方向数据方发送隐匿查询请求时产生的查询事件,该查询方可以表示为Guest,是具有隐匿查询需求的一方,该数据方可以表示为Host,是持有数据集的一方。其中,数据集以键值对的形式存储数据,键值对中包括一个查询标识(或称为查询ID)和该查询标识关联的明文数据。为便于理解,一个键值对所包括的查询标识可以理解为该查询标识关联的明文数据的关键词,这样可以通过关键词“查询标识”找到(或检索到)相应的明文数据。示例性地,键值对表示为(key,data),该键值对所包括的key为查询标识,该键值对所包括的data为明文数据。
隐匿查询事件中查询双方的查询信息可以是指查询双方持有的任何数据。例如,在一次在线隐匿查询场景中,查询方需要隐匿待查询标识(即查询方想要从数据方中查询到的明文数据对应的查询ID),以避免数据方直接获取到查询方的待查询标识后,知晓查询方想要查询的明文数据。同理,数据方需要隐匿查询结果;如数据方向查询方返回键值对时,并不是直接返回键值对,而是返回该键值对的加密对,不仅确保双方数据传输的安全性,而且确保查询方不容易返推出数据方持有的数据。
进一步的,现有主流支持采用基于椭圆曲线(Ellipse Curve Cryptography,ECC)的ElGamal同态加密来实现隐匿查询。下面对基于椭圆曲线的ElGamal同态加密的基础概念进行介绍,其中:
①椭圆曲线群;椭圆曲线是在有限域进行加密的,如该有限域可以为素数域,此时将该素数域称为椭圆曲线群;该椭圆曲线群中包括素数(即质数,是指在大于1的自然数中除1和它本身以外不再有其他因数的自然数)。
②明文空间,是由所有明文数据(或简称为明文)组成的集合,表示之间的整数;此处的n是椭圆曲线群的阶数,表示该椭圆曲线群的集合大小,一般为256比特位。
③基于椭圆曲线的ElGamal同态加密涉及的加密算法参数可以包括:生成元G和生成元H,G且H,且G和H的离散对数是未知的(即和中的是难以计算的)。
④基于椭圆曲线的ElGamal同态加密需要生成密钥对,该密钥对包括私钥sk和公钥PK,且私钥sk公钥,公钥公开,私钥保密。
⑤加密算法Enc,加密过程可以包括:输入明文,随机数和公钥PK,输出密文,此处的和,此项表示椭圆曲线的标量乘法,为明文嵌入的点。
⑥解密算法Dec,解密过程可以包括:假设加密得到的密文,那么在解密过程中可以使用私钥sk计算,然后通过穷举恢复明文。需要注意的是,在解密过程中,用恢复明文本质上是求解离散对数问题;而当明文过大时(例如超过),恢复明文是一件困难的事情。
⑦基于椭圆曲线的ElGamal同态加密公开如下参数:三个哈希函数,分别为:,和,为安全参数,通常为128位。其中,为哈希函数1,表示该哈希函数的输入为位(或称为比特位)的二进制数据,该哈希函数的输出结果属于明文空间。为哈希函数2,表示该哈希函数的输入属于椭圆曲线群,该哈希函数的输出为位的二进制数据。为哈希函数3,表示该哈希函数3的输入为位的二进制数据,该哈希函数3的输出为位的二进制数据。
实际应用中,隐匿查询不仅需要确保数据方和查询方之间的多方安全,还需考虑隐匿查询的计算开销。例如,前述提及的基于椭圆曲线的ElGamal同态加密的隐匿查询方案,是以整个数据集为基准进行隐匿查询计算的,如在一次在线隐匿查询的过程中需要数据方基于数据集中的全量查询标识进行同态计算;这导致每次在线隐匿查询会耗费大量的计算资源和计算时间,不仅产生较大的计算开销,而且降低隐匿查询性能和效率,从而限制数据方的数据规模,降低隐匿查询的实用性。
为降低隐匿查询的计算开销,提升隐匿查询的效率,本申请实施例提供了一种查询处理方案。该查询处理方案主要是利用分桶思想扩展基于椭圆曲线的ElGamal同态加密的隐匿查询算法,在不牺牲数据方和查询方之间的多方计算的安全性的前提下,降低隐匿查询双方的计算开销。其中,分桶思想是指将多个元素划分至多个分组中,此处的“分组”和“分桶”等价;这样,每个分桶分别维护各自桶内部的信息,以分桶为处理问题的基本单位,实现快捷计算。在本申请实施例中被划分至多个分组中的元素可以是指数据集中的查询标识的查询哈希值。
为便于理解本申请实施例提出的查询处理方案,下面结合图1给出本申请实施例提供的一种隐匿查询系统的架构示意图。如图1所示,该隐匿查询系统中包括终端101和服务器102,其中:
终端101可以包括具有数据查询需求的查询方所持有的终端设备。终端设备可以包括但不限于:智能手机(如部署安卓(Android)系统的智能手机,或部署互联网操作系统(Internetworking Operating System,IOS)的智能手机)、平板电脑、便携式个人计算机、移动互联网设备(Mobile Internet Devices,MID)、车载设备、头戴设备和智能家居等终端设备,本申请实施例并不对终端设备的类型进行限定,在此说明。进一步的,终端中可以运行部署有查询处理方案的应用程序;这样,查询方可以通过该终端中运行的应用程序访问服务器,并从服务器中查询想要查询的数据。其中,部署有查询处理方案的应用程序可以包括但不限于:安装在终端中的客户端、无需下载安装即可使用的小程序(作为客户端的子程序)、通过浏览器打开的web(World Wide Web,全球广域网)应用程序等等;本申请实施例对应用程序在终端中的运行方式不作限定。当然,查询处理方案除了部署于应用程序外,还可以插件的形式作为某个应用程序中运行的子功能;例如,查询处理方案以插件形式部署于社交类应用中,这样在社交类应用中可以通过调用部署该查询处理方案的插件(或子功能),实现快速隐匿查询,而无需从社交类应用跳转至专属的查询类应用实现隐匿查询。
服务器102是持有数据集的数据方所持有的设备。服务器102主要用于与终端101进行数据交互以实现为终端101提供计算和应用服务支持。具体地,该服务器102可以是终端101中部署有查询处理方案的应用程序所对应的后台服务器,用于与终端101交互以为应用程序提供计算和服务。其中,服务器102可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(ContentDelivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。进一步的,该服务器102还持有数据集103,如该数据集103是独立于服务器102的外部存储设备,或者该数据集103是部署于服务器102的内部存储空间等,本申请实施例对数据集103的部署形式不作限定。
具体实现中,查询方通过其持有的终端101和数据方通过其持有的服务器102实现本申请实施例提供的查询处理方案的大致交互流程可以包括:
(1)离线阶段:本申请实施例支持数据方在离线阶段先对隐匿查询流程中的部分步骤进行预计算,这样在线隐匿查询的阶段可以有效减少查询时间和资源,从而减小计算开销,提升查询效率。其中,离线阶段的预计算可以包括但是不限于:①数据方可以在离线阶段预先对数据集中的各查询标识ID进行哈希处理,以得到各查询标识的查询哈希值(如用x表示)。②数据方可以在离线阶段预先将数据集中各查询标识的查询哈希值进行分组;假设数据集中存储有L个键值对,且分桶数为M,L和M均为大于1的整数且L≥M,那么可以将L个键值对所包括的L个查询标识的L个查询哈希值分配至M个分组。③数据方在构建好M个分组后,可以预先构建每个分组的零化多项式,该零化多项式是用于计算各分组的标识密文的多项式。④数据方可以预先计算好各分组中的查询哈希值被带入相应分组的随机多项式后的取值,以便于在在线隐匿查询阶段能够直接调用预先计算好的取值实现加密对的快速计算。
应当理解的是,上述只是几种本申请实施例提供的隐匿查询场景下支持离线阶段的预计算的示例性步骤;在实际应用中,每次隐匿查询均需冗余计算的步骤均可以在离线阶段先计算好,本申请实施例对预计算的步骤不作限定。
(2)在线隐匿查询阶段:在线隐匿查询阶段是指单次隐匿查询的场景。具体地,首先,具有数据查询需求的查询方可以向数据方发送的隐匿查询请求;这样数据方在接收到该隐匿查询请求后,可以响应于该隐匿查询请求调用预计算的各分组的零化多项式,计算每个分组的标识密文,并将每个分组的标识密文返回至查询方。然后,查询方在获取到L个分组的标识密文后,可以从L个分组中确定出查询方想要查询的待查询标识的待查询哈希值被分配时应当所属的目标分组。并且,查询方还基于目标分组的标识密文,同态计算所述目标分组的零化多项式在所述待查询哈希值的取值所得到的目标标识密文;即假设待查询哈希值属于该目标分组时,那么将该待查询哈希值带入至该目标分组的零化多项式时的取值对应的密文。其次,查询方将目标标识密文返回至数据方;这样,数据方基于该目标标识密文在确定待查询标识属于数据集的情况下,为数据集中的每个键值对生成加密对,且将L个加密对返回至查询方。最后,查询方在获取到L个加密对后,可以从L个加密对中找到与待查询标识匹配的目标加密对,从而对该目标加密对中的对称加密密文进行解密,以得到待查询标识关联的明文数据,实现数据的隐匿查询。
由此可见,一方面,本申请实施例支持对数据集所包括查询标识的查询哈希值进行分组;这样,数据方侧的服务器中处理器(如中央处理器(Central Processing Unit,CPU)),如CPU中的一个处理器核,每次针对单个分组所包括的少量查询哈希值进行隐匿计算,相比于对全量查询哈希值进行隐匿计算而言,在较大程度上减少单核处理时间,节省单核处理资源;进一步的,处理器的多个处理器核可以并行对多个分组进行隐匿计算,这种并行处理方式能够从整体上缩短隐匿计算时间,减小计算复杂度和时间复杂度,提升隐匿查询性能;更进一步的,通过对查询标识分组,使得数据方即使具有较大的数据规模(如数据集所包含键值对的数量),同样可以使用本申请实施例提供的查询处理方案,确保查询处理方案的实用性。另一方面,本申请实施例还支持在离线阶段,先将每次在线隐匿查询需要冗余计算的部分步骤进行预计算并缓存,这样任一次在线隐匿查询阶段,可以直接调用预计算并缓存的结果;不仅能够节省单次在线隐匿查询的查询时间,而且避免浪费查询资源,提高查询效率。
应当理解的是,上述图1所示的终端101和服务器102之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。此外,本申请实施例对终端和服务器的数量不作限定,在图1中以终端101和服务器102的数量均为单个仅为示例。在实际应用中,根据向数据方进行数据查询的查询方的数量不同,终端101的数量可以发生变化;同理,存储数据集的服务器可以包括分布式分布的多个服务器,特在此说明。此外,本申请实施例提供的查询处理方案是由上述图1所示的数据方持有的服务器102和查询方持有的终端101共同执行的。
进一步的,正如前述所描述的,本申请实施例通过分桶和预计算等手段,使得查询处理方案同时支持大规模和小规模的数据查询,具有较好地实用性;因此,本申请实施例提供的查询处理方案不受数据集的数据规模的限制,适用于任何需要隐匿查询的查询场景。示例性地,隐匿查询场景可以包括但是不限于:营销、身份核验、反欺诈、金融风控等查询场景;其中:
可选的,隐匿查询场景为营销场景。具体地,在营销场景下,营销公司可能需要从某些平台中查询部分消费者的消费数据(如历史时间内的消费商品、消费时间和消费金额等数据),以通过这些消费数据分析消费者的消费需求,从而实现更好的产品营销。而为了避免平台方感知营销公司的消费数据,从而造成被查询的这部分消费数据被平台方泄漏致营销公司的对手公司,可以使用本申请实施例提供的查询处理方案应用于营销场景,从而实现营销公司向平台隐匿查询消费者的消费数据。不仅维护消费者的消费数据不被泄露,而且有效保护营销公司的营销策略。
可选的,隐匿查询场景为身份核验场景。身份核验是为了核验某个用户的身份的真实性;例如,在乘坐交通工具(如飞机或高铁等)时往往需要由交通运输方从某些存储有用户身份的平台中获取乘坐用户的身份信息,以实现对乘坐用户的身份核验。为避免交通运输方获取到平台中除待核验用户外的其他用户的核验信息,也避免平台方知晓哪些用户乘坐了交通工具,支持采用本申请实施例提供的查询处理方案实现身份核验场景下的隐匿查询;在确保核验双方不知晓对方的数据的情况下,还能成功实现部分乘坐用户的身份核验。
可选的,隐匿查询场景为反欺诈场景。反欺诈是对包含非正常交易,电话欺骗,盗卡盗号等欺诈行为进行识别的一项服务。在反欺诈场景中,反欺诈系统往往需要从某些平台(如产生事件的平台)获取关于某个事件(如交易)的事件信息(如平台的注册信息或事件的产生时间等信息),以通过该事件信息来识别该某个事件是否欺诈事件,或者该某个事件是否存在欺诈行为。在一些情况下,可能反欺诈场景并不希望平台知晓自己具体的查询内容,那么可以使用本申请实施例提供的查询处理方案实现反欺诈场景下的隐匿查询,维护两方的安全性。
可选的,隐匿查询场景为金融风控场景。金融交易过程中准确把握金融风险,有利于确保金融交易的安全性。例如,在用户向金融机构进行借贷等行为时,金融机构往往需要评估用户的信用等级,此时金融机构可以向某平台查询用户的信用信息(如根据实际场景可能是失信记录或多头借贷等);以确保该用户为可信任用户,从而实现安全的金融交易。在金融风险识别过程中,如果金融机构直接通过用户的查询标识检索平台的数据,那么平台可能获取用户的查询标识,可能会产生泄露风险(如平台将用户的查询标识和信息转卖给该金融机构的竞争对手)。因此,可以采用本申请实施例提供的查询处理方案,实现金融机构与平台方的协同计算;这样,平台方的用户数据不出库,平台方和金融机构之间仅交换中间加密参数,避免平台方泄露被查用户的隐私信息;同时平台方也无法感知金融机构的查询名单,保护金融机构的用户的隐私信息。
需要说明的是,考虑到使用本申请实施例提供的查询处理方案在各种隐匿查询场景中实现隐匿查询的流程和原理是类似的,只是各隐匿查询场景所涉及的数据类型和数据量可能有所不同。因此,上述只是对各种查询场景下的大致查询原理进行说明,各隐匿场景的相关说明并不会对本申请实施例产生限定,特在此说明。
还需说明的是,本申请实施例中相关数据收集处理应该严格根据相关国家法律法规的要求,获取个人信息需得到个人主体的知情或同意(或具备信息获取的合法性基础),并在法律法规及个人信息主体的授权范围内,开展后续数据使用及处理行为。例如,本申请实施例运用到具体产品或技术中时,如查询方向数据方获取某个用户的相关数据时,需要获得用户的许可或者同意,且相关数据的收集、使用和处理(如对象发布的弹幕的收集和发布等)需要遵守相关国家和地区的相关法律法规和标准。
基于上述描述的查询处理方案,本申请实施例提出更为详细的查询处理方法,下面将结合附图对本申请实施例提出的查询处理方法进行详细介绍。
图2示出了本申请一个示例性实施例提供的一种查询处理方法的流程示意图;图2所示的查询处理方法可以由图1所示系统中的服务器执行,即由数据方持有的计算机设备执行,该查询处理方法可包括但不限于步骤S201-S204:
S201:响应于查询方发送的隐匿查询请求,获取M个分组中每个分组的标识密文。
具体实现中,在查询方具有向数据方查询数据的需求时,查询方可以使用其持有的终端(具体是终端中部署的具有隐匿查询功能的应用程序)向数据方发送隐匿查询请求;该隐匿查询请求用于指示查询方需要向数据方查询数据,但是该隐匿查询请求不会携带具体的查询内容(如待查询标识),以避免数据方感知查询方想要查询的内容。这样,数据方在接收到该隐匿查询请求后,可以响应于该隐匿查询请求,获取M个分组中每个分组的标识密文;任一分组的标识密文用于隐匿数据方存储的查询标识(即数据集所包括的键值对中的查询标识),具体是通过隐匿该任一分组中的查询哈希值来实现对该查询哈希值对应的查询标识的隐匿。
其中,任一键值对所包括的查询标识的查询哈希值,是采用哈希函数对该查询标识进行哈希处理得到的;也就是说,以数据集中各键值对所包含的查询标识ID作为哈希函数的输入,调用哈希函数对查询标识ID进行哈希处理,得到该查询标识对应的查询哈希值;关于哈希函数的相关内容可以参见前述相关描述,在此不作赘述。假设数据集中包括L个键值对,即数据方存储有L个键值对,那么在离线阶段可以基于L个键值对所包含的L个查询标识生成L个查询哈希值,一个查询标识对应一个查询哈希值,且L个查询哈希值被分配至M个分组中。
本申请实施例通过对数据方存储的查询标识进行哈希处理,至少包括如下有益效果:效果一、可以有效保护查询标识不被泄露;本申请实施例对查询标识对应的查询哈希值进行隐匿处理,相比于直接对查询标识进行隐匿处理而言,增加了查询标识被窃取的难度,避免查询方洞悉数据集中除被查询数据外的其他数据。效果二、正如前述所描述的,键值对所包括的查询标识是作为检索该键值对所包括的明文数据的关键词,该关键词可能是不同长度字符串,字符串由一个或多个字符组成,字符的个数用于表征字符串的长度;字符可以包括以下至少一种:中文字符(即汉字)、英文字符(即字母)、数字和符号(如逗号“,”、句号“。”、方括号“【】”、“@”)。考虑到不同键值对所包括的查询标识的长度可能不同,因此在隐匿处理过程中需要将不同长度的查询标识变换为长度相同的查询哈希值,以确保满足后续隐匿处理的数据格式。如本申请实施例采用的哈希函数表示为,表示将比特位的二进制形式的查询标识(的具体取值与查询标识的长度一致,不同查询标识对应的取值不同)输入至哈希函数,该哈希函数输出的查询哈希值属于明文空间,且属于明文空间中的查询哈希值的长度是相同的。
在上述对隐匿查询请求和查询哈希值的简单介绍的基础上,下面给出数据方获取M个分组中每个分组的标识密文的具体实现过程,该过程可以包括步骤(1)-步骤(2),其中:
(1)获取每个分组的零化多项式。
任一分组的零化多项式是基于该任一分组所包括的至少一个查询哈希值预先构造的。以数据方按序存储的L个查询标识对应的L个查询哈希值按序表示为:,那么以全量查询哈希值为基准构建的零化多项式可以表示为:
即零化多项式包括至少一个单项式,如单项式、单项式、单项式、…。每个单项式由不同阶数的变量和系数组成,如单项式由0阶的变量X和系数组成,单项式由1阶的变量X和系数组成,等等。
详细地,该零化多项式具体可以是由展开得到的;即=0,j=1、2、3、…、L。也就是说,属于数据集中的每个查询标识的查询哈希值均会使该零化多项式为零。
上述以全量查询哈希值为例对零化多项式的构建过程进行了简单介绍,那么针对单个分组所包括的部分查询哈希值构建该单个分组的零化多项式的构建过程是类似的。举例来说,假设M个分组中的任一分组表示为第k个分组,k为正整数且1≤k≤M,该第k个分组中包括查询哈希值为例,那么第k个分组的零化多项式可以表示为:,对该零化多项式展开可得到该任一分组的零化多项式的另一表达为:
上述零化多项式中的系数、系数、系数=及系数。
基于上述对零化多项式的构建过程可知,每个分组的零化多项式的构建只依赖分组所包括的查询哈希值。因此:
一方面,通过对数据集中的查询标识的查询哈希值进行分组,从而针对单个分组进行零化多项式的构建,能够有效降低计算开销。例如,对于主流隐匿查询而言需要针对全量查询哈希值构建零化多项式,那么需要消耗L次零化多项式(或L阶零化多项式)的计算开销,此时该计算复杂度为。然而,本申请实施例对全量查询哈希值分桶后,只需消耗M个次零化多项式的计算开销;可见,通过分桶能够将主流计算复杂度降低为。进一步的,如果服务器的多核处理器并行构造多个分组的零化多项式,即并行度为M,那么计算复杂度可以进一步降低为,从而高效减小计算开销。其中,上述提及的为全量L被分配到M个分组后每个分组的查询哈希值的平均数量,而考虑到每个分组中被分配的查询哈希值的数量不一定相同且平均,因此采用(取值接近零)来表示不同分组所包括的查询哈希值数量,如第k个分组对应的时,第k个分组所包括的查询哈希值数量为0.9。
另一方面,在数据集所包括的键值对不经常发生变化的情况下,本申请实施例支持数据方在离线阶段先为每个分组构建好零化多项式。这样,在获取到某个隐匿查询请求时能够响应该隐匿查询请求快速获取到各分组的零化多项式,省去在线构造每个分组的零化多项式所带来的计算开销,即避免在线隐匿查询阶段在零化多项式的构建过程浪费大量时间和资源,从而高效提高隐匿查询效率。
(2)获取数据方和查询方之间的公钥PK,并采用该公钥PK对每个分组的零化多项式分别进行系数加密处理,生成每个分组的标识密文。
在隐匿查询场景中,数据方还会预先生成公私钥对,且数据方保密存储私钥sk,且将公钥PK公开。
基于前述步骤(1)获取到每个分组的零化多项式后,数据方可以采用公钥PK,对各分组的零化多项式中的系数进行系数加密处理,从而得到每个系数对应的标识密文;零化多项式所包括的多个系数对应的标识密文组成该零化多项式所表征的分组的标识密文。考虑到零化多项式的次数(或阶数)是与该零化多项式所表征的分组所包括的查询哈希值的数量相同的;因此,每个分组对应的标识密文的数量,和相应分组所包括的查询哈希值的数量是相同的。
为便于理解,以M个分组中的任一个分组表示为第k个分组为例,对采用公钥PK实现针对该第k个分组的零化多项式的系数加密处理,生成该第k个分组的标识密文为例,对系数加密过程进行介绍。具体实现中,首先,可以从明文空间中为第k个分组的零化多项式所包括的各系数选取随机数r。然后,基于为各系数选取的随机数r和公钥PK,分别对各系数进行加密处理,生成第k个分组的标识密文;其中,第k个分组的零化多项式中除最高阶单项式的系数外的其他每个系数对应一个标识密文。
举例来说,假设第k个分组的零化多项式表示为;那么支持为该零化多项式中的系数选取随机数,为该零化多项式中的系数选取随机数,而实际计算中最高阶单项式的系数始终为1,因此不对系数加密。然后,采用公钥PK和随机数r对系数进行加密处理的过程包括:将公钥PK和随机数r带入密文表达式ct中,得到系数对应的标识密文;其中,密文表达式已在前述给出,为,且和。例如,系数对应的标识密文可以表示为;再如,系数对应的标识密文可以表示为。这样,第k个分组的标识密文可以包括:和。
综上,基于上述步骤(1)-(2)可以为每个分组生成相应的标识密文;也就是说,数据方侧的数据集中各查询标识的查询哈希值是满足零化多项式的(即查询哈希值使得零化多项式等于零),这样通过对该零化多项式来得到标识密文的方式,可以实现对数据方存储的查询标识的隐匿,避免查询方知晓数据方存储的查询标识。
S202:将M个分组的标识密文发送至查询方,使查询方从M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并由查询方基于目标分组的标识密文,同态计算目标分组的零化多项式在待查询哈希值的取值所得到的目标标识密文。
S203:接收查询方返回的目标标识密文,并基于目标标识密文为L个键值对生成加密对。
步骤S202-S203中,数据方在得到M个分组的标识密文后,可以将M个分组的标识密文发送至查询方,以使得查询方能够基于该M个分组的标识密文生成用于隐匿自己想要查询的待查询标识的目标标识密文。查询方具体是根据自己的待查询标识ID调用哈希函数计算得到待查询标识的待查询哈希值x,然后将待查询哈希值x分配到目标分组桶;不妨设待查询哈希值x被分配到M个分组中的第k个分组中,k为整数且k∈[1,M],那么可以根据该目标分组的标识密文,计算该目标分组的零化多项式在待查询哈希值x的取值时目标标识密文,并用随机数r盲化该目标标识密文(所谓盲化目标标识密文是指:采用随机数r对目标标识密文进行随机化操作,得到盲化后的目标标识密文,以增加目标标识密文的复杂性);该目标标识密文用于隐匿查询方的待查询哈希值,具体是隐匿查询方想要查询的待查询标识。进一步的,查询方将该目标标识密文返回至数据方后,数据方能够基于该目标标识密文判断查询方想要查询的待查询标识是否落入数据集。只有在待查询标识落入数据集的情况下,才执行后续的隐匿处理步骤;在待查询标识未落入数据集的情况下,不做后续的隐匿处理步骤;这样在数据方不包括查询方想要的查询的数据的情况下,数据方不必执行后续计算,避免时间和资源的浪费。
其中,查询方返回的采用随机数r盲化后的目标标识密文可以表示为,其中:参数为用于盲化密文的随机数。表示待查询哈希值被添加至目标分组后为该目标分组构建的新的零化多项式,且待查询哈希值被带入至时,会使得=0。为将待查询标识带入目标分组的随机多项式后的取值;目标分组的随机多项式是基于为零化多项式的各系数选取的随机数构成的,如以全量待查询哈希值为基准构建零化多项式时对应的随机多项式可以表示为:
由随机多项式的表达式可见,随机多项式的样式与零化多项式的样式是类似的,可以包括至少一个单项式,每个单项式由随机数和不同于阶数的变量组成。值得注意的是,数据方会以分组为基准,为每个分组构建随机多项式,即每个分组对应有一个随机多项式。
基于此,数据方从查询方接收到目标标识密文后,可以根据零化多项式具有的特性,即属于数据集的任一查询标识对应的查询哈希值,始终会使零化多项式为零,来判定查询方侧的待查询标识的待查询哈希值是否属于数据集,从而判断数据方是否为持有该待查询标识关联的明文数据的数据方。
下面结合图3对数据方基于目标标识密文进行加密对的生成过程进行介绍;如图3所示:
(1)数据方获取数据方和查询方之间的私钥sk,并基于私钥sk和目标标识密文验证待查询标识对应的待查询哈希值是否存储于数据方;具体是利用私钥sk来判断该目标标识密文对应的明文是否为零,即是否等于。如果,表示查询方想要查询的明文数据存储于数据方,则数据方可以执行基于目标标识密文为每个键值对生成加密对的步骤。反之,如果,表示查询方想要查询的明文数据未存储于数据方,则数据方可以终止隐匿查询,而隐匿查询可以被看做一个隐匿查询协议,因此数据方可以终止该隐匿查询协议。
(2)在的情况下,数据方将该目标标识密文与每个分组的随机多项式执行计算,以为数据集中的各键值对生成加密对。其中,每个加密对中包括一个标识向量和一个数据密文(或称为对称加密密文),任一加密对可以表示为(初始向量iv,对称加密密文)。其中,初始向量iv(或称为标识向量)和对称加密密文是数据方利用目标标识密文中的对每个查询标识ID派生得到的。具体是利用目标标识密文中的分别对每个分组中的每个查询标识ID派生得到相应查询标识ID对应的标识向量,该标识向量用于表征加密对对应的键值对中的查询标识;并且,利用目标标识密文中的分别对每个分组中的每个查询标识ID派生得到对称密钥key,并利用该对称密钥key加密该查询标识ID关联的明文数据得到数据密文,即该数据密文是对加密对对应的键值对中的明文数据加密得到的。
为便于理解,以M个分组中的任一分组表示为第k个分组为例,对基于目标标识密文为第k个分组所包括的各查询哈希值对应的键值对生成加密对的过程进行介绍。其中,第k个分组所包括的各查询哈希值对应的键值对是指,第k个分组所包括查询哈希值对应的查询标识所属的键值对。该过程大致可以概述为:获取第k个分组对应的数值组。然后,基于第k个分组对应的数值组,目标标识密文和包括第k个分组中各查询哈希值对应的查询标识的各键值对,生成第k个分组中各查询哈希值对应的查询标识的各键值对的加密对。其中,每个分组对应的数值组是数据方预先计算并存储的;例如,第k个分组的数值组中包括:第k个分组所包括的各查询哈希值被分别带入至第k个分组的随机多项式中变量时,该变量的取值。
下面对上述提及的数值组,以及加密对的生成过程进行详细介绍,其中:
①基于第k个分组对应的数值组和目标标识密文所包括的,计算第k个分组所包括的各查询哈希值对应的二进制数据;该二进制数据包括从左至右分布的2λ比特位。具体可以包括如下:
步骤1:计算第k个分组中的待查询哈希值(为第k个分组中的第j个查询哈希值)被输入至第k个分组的随机多项式时的取值。然后,在得到后,可以进一步计算。其中,取值可以表示为:
值得注意的是,由前述针对随机多项式的相关介绍可知,该随机多项式为多阶的多项式。因此:
一方面,通过对数据集中的查询标识的查询哈希值进行分组,从而针对单个分组计算,有效降低计算开销。例如,对于主流隐匿查询而言需要针对全量查询哈希值计算随机多项式的取值,那么需要消耗L次计算的计算开销,此时该计算复杂度为。然而,本申请实施例对全量查询哈希值分桶后,只需消耗M个的计算开销;可见,通过分桶能够将主流计算复杂度降低为。进一步的,如果服务器的多核处理器并行计算M个,即并行度为M,那么计算复杂度可以进一步降低为,从而高效减小计算开销。其中,关于上述提及的和的相关介绍可以参见前述针对零化多项式的构建部分内容的介绍,在此不作赘述。
另一方面,在数据集所包括的键值对不经常发生变化的情况下,本申请实施例支持数据方在离线阶段先为每个分组的随机多项式预计算好数值组,这样在在线隐匿查询场景中需要针对第k个分组计算时,可以直接获取第k个分组对应的数值组,有效减小的计算量,从而降低计算开销。
也就是说,本申请实施例利用查询哈希值可以离线计算的特点,来达到降低的计算开销。具体地,以全量查询哈希值为基准,预计算数值组为例,假设:
那么针对查询哈希值计算随机多项式的取值时,该取值可以表示为。通过该表达式可见,如果该表达式中的可以预计算并存储,和j为整数,且,那么的计算可以表示为两个向量的内积运算,即:,显著降低计算开销。此时如果数据方存储,即为第k个分组所包括的查询哈希值对应的数值组,那么所需的存储开销为。进一步的,将上述改进方法应用到每个分组对应的随机多项式中,则存储开销从变成。如果服务器的多核处理器并行多个分组的的计算,那么存储开销可以从进一步降低为,从而高效减小针对计算的开销。
为了进一步降低存储开销,不妨设,则针对单个分组中的任一查询哈希值计算随机多项式时,可以表示为:
其中,,X=x,=0、1、2…,该为的第个系数到第个系数构成的多项式。此情况下,如果数据方预计算并存储每个分组所包括的各查询哈希值的数值组:和,那么数据方所需的存储复杂度为。进一步的,将该方法应用到每个分组对应的随机多项式中,则数据方的存储开销变为。上述数值组可以表示为:;其中,,为M个分组中包括查询哈希值的数量最多的分组所包括的查询哈希值的数量。
步骤2:采用哈希函数将属于椭圆曲线群的,变化为比特位为2的二进制数据。该过程可以表示为:
其中,为哈希函数,该哈希函数的表达式在前述已给出,为。表示哈希函数的输出结果,该输出结果为二进制数据,且为该二进制数据从左至右分布的2λ比特位中左侧的λ比特位,而为二进制数据从左至右分布的2λ比特位中右侧的λ比特位。为拼接运算。
②根据分布于各查询哈希值对应的二进制数据的左侧的λ比特位,生成包括相应查询哈希值的键值对中的查询标识的标识向量,以及根据分布于各查询哈希值对应的二进制数值的右侧的λ比特位,生成用于对包括相应查询哈希值的键值对中的明文数据进行加密的对称密钥。
具体实现中,数据方将左侧的λ比特位和查询哈希值对应的查询标识进行拼接,并将拼接结果作为哈希函数的输入信息,将该哈希函数的输出结果作为用于表征该查询标识的标识向量。其中,拼接左侧的λ比特位和查询哈希值对应的查询标识的过程可以表示为:;利用哈希函数对拼接结果进行哈希处理,得到标识向量的过程可以表示为:。同时,数据方将右侧的λ比特位直接作为对称密钥,表示为:。
③分别采用各对称密钥对相应键值对中的明文数据进行加密处理,生成相应键值对中明文数据对应的数据密文。基于前述步骤得到每个分组所包括的各查询标识对应的对称密钥后,可以采用该对称密钥对包括相应查询标识的键值对中的明文数据进行加密处理,生成每个键值对的加密对。
综上,通过上述步骤①-步骤③,数据方可以分组为基准,为每个分组所包括的查询标识生成标识向量和对称密钥,并基于标识向量和对称密钥得到包括该查询标识的键值对的加密对。这种以分组为基准计算标识向量和对称密钥的方式,相比于以全量查询标识为基准计算标识向量和对称密钥而言,显著减小计算资源和计算时间,即减小计算开销,提高查询速度和效率。
S204:将L个加密对返回至查询方,使得查询方从L个加密对中确定标识向量与待查询标识相匹配的目标加密对,并解密目标加密对中的数据密文得到明文数据。
数据方基于前述步骤得到L个键值对的L个加密对后,可以将L个加密对返回至查询方;这种返回加密对而非返回键值对的方式,有效保证数据方存储的数据的安全性。这样,查询方在接收到L个加密对后,根据随机数和Host的公钥派生对称加密算法所需的目标标识向量iv(该标识向量用于表征查询方想要查询的待查询标识)和对称密钥key;具体是根据随机数r和公钥PK,得到二进制数据,并基于得到目标标识向量iv,以及根据key确定对称密钥为。然后,根据目标标识向量iv匹配L个加密对,以从L个加密对中匹配出目标加密对,并解密该目标加密对中的数据密文,此时解密后的数据为查询方的待查询标识ID在数据方侧匹配的明文数据。
综上所述,一方面,本申请实施例利用分桶思想对数据集中存储的海量查询标识的查询哈希值进行分桶;这样,隐匿查询的数据双方只需以分组为单位实现隐匿查询,不仅能确保查询双方的安全性,而且有效减小查询双方的计算开销和计算时间,即减小计算开销。另一方面,针对隐匿查询过程中支持离线处理的步骤,如每个分组的零化多项式的构建,再如每个分组的计算等步骤,本申请实施例数据方在离线计算预计算并存储;这样,在在线隐匿查询阶段可以直接调用,从而避免每次在线隐匿查询过程中的冗余计算,极大地减小计算开销。
图4示出了本申请一个示例性实施例提供的一种查询处理方法的流程示意图;图4所示的查询处理方法可以由图1所示系统中的终端执行,即由查询方所持有的计算机设备执行,该查询处理方法可包括但不限于步骤S401-S405:
S401:向数据方发送隐匿查询请求,使数据方响应于隐匿查询请求返回M个分组中每个分组对应的标识密文。
具体实现中,在查询方具有向数据方隐匿查询数据的需求时,查询方可以通过其持有的计算机设备(如终端)向数据方发送隐匿查询请求,具体可以是通过计算机设备中部署的具有隐匿查询功能的应用程序向数据方发送隐匿查询请求;该隐匿查询请求用于告知数据方,当前查询方需要隐匿查询数据。这样,数据方在接收到查询方发送的隐匿查询请求后,响应于该隐匿查询请求获取M个分组中每个分组的标识密文。需要说明的是,数据方响应于查询方发送的隐匿查询请求,获取M个分组中每个分组的标识密文的具体实现过程,与前述图2所示实施例中步骤S201所示的具体实现过程是相同,在此不作赘述。
S402:接收数据方返回的L个分组的标识密文,并从M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并基于目标分组的标识密文,同态计算目标分组的零化多项式在待查询哈希值的取值所得到的目标标识密文。
S403:将目标标识密文发送至数据方,使数据方基于目标标识密文为数据方存储的每个键值对生成加密对。
步骤S402-S403中,查询方向数据方发送隐匿查询请求后,数据方可以将预先划分的M个分组中每个分组的标识密文返回至查询方;此时,查询方可以基于M个分组的标识密文进行同态计算,以生成用于隐匿自己的待查询标识的目标标识密文。这样,通过传输该目标标识密文给数据方,不仅能有效保障待查询标识的隐私和安全,而且还能让数据方能够基于私钥sk对该目标标识密文进行判别,以判断查询方想要查询的数据是否属于数据方侧的数据集中的数据。其中,同态计算或称为同态加密,是一种可以直接密文进行运算,且对密文进行运算后的新的密文的解密结果,与对明文进行同样的运算后的运算结果相同的加密算法。也就是说,对明文进行加密得到密文后,可以对该密文进行目标运算(如任一种或多种运算),得到运算结果;然后,对该运算结果进行解密得到的解密结果,与直接对明文进行目标运算后的运算结果是相同的。
在本申请实施例中,查询方基于同态加密生成用于隐匿待查询标识的目标标识密文的具体过程可以包括:①数据方向查询方返回M个分组的标识密文时会一并向查询方发送每个分组的组标识;组标识可以用于唯一标识一个分组,如任一分组的组标识可以为该任一分组在M个分组中的排序位置。那么,查询方在接收到每个分组的组标识和相应的标识密文后,可以先按照分组规则(该分桶规则与数据方的分组规则相同)确定查询方的待查询标识的待查询哈希值被分配时应当所属的目标分组;也就是说,查询方会判断待查询哈希值被分配时应当被分配至哪个分组,当然,查询方并不存储每个分组所包括的查询哈希值,因此查询方并不会将待查询哈希值分配至该目标分组。
②查询方利用该目标分组的标识密文,同态计算目标分组的零化多项式在待查询哈希值的取值所得到的目标标识密文。具体地,查询方可以基于目标分组的标识密文,构造目标分组的零化多项式对应的密文多项式。然后,将待查询哈希值输入至该密文多项式(即将零化多项式中的自变量替换为该待查询哈希值),同态计算得到目标标识密文。
举例来说,假设目标分组为M个分组中的第k个分组,且第k个分组的标识密文包括和,且查询方的待查询哈希值表示为x,那么:首先,基于目标分组的标识密文构造的目标分组的零化多项式的密文多项式,该密文多项式可以表示为:
然后,将密文多项式中的自变量X替换为待查询哈希值x,同态计算得到目标标识密文:
式中,和是数据方生成目标分组的标识密文时所用到的多项式。
最后,采用随机数r对该目标标识密文进行盲化,得到盲化后的目标标识密文:
这样,查询方将盲化后的目标标识密文发送至数据方。
进一步的,数据方在获取到目标标识密文,可以计算sk=sk。考虑到PK=sk,因此,如果sk=sk==,那么确定=0,表示查询方的待查询哈希值可以使得,则确定该待查询哈希值是基于数据集中的某个查询标识生成的,即查询方想要查询的数据属于数据集,从而数据方可以执行后续操作以实现隐匿查询。反之,sk=sk≠=,那么确定≠0,表示查询方的待查询哈希值不能使得,则确定该待查询哈希值不是基于数据集中的某个查询标识生成的,即查询方想要查询的数据不属于数据集中,从而数据方终止隐匿查询协议,这样可以避免数据方执行后续操作,浪费计算开销。
S404:接收数据方返回的L个加密对,并从L个加密对中确定标识向量与待查询标识相匹配的目标加密对。
S405:对目标加密对中的数据密文进行解密处理,得到明文数据。
步骤S404-S405中,由前述描述可知,L个加密对是对数据方存储的L个键值对的加密表示,那么查询方在接收到L个加密对后,可以计算用于表征待查询标识的目标标识向量iv;具体是调用哈希函数计算,然后,计算目标标识向量,此处的ID为待查询标识。进一步的,查询方可以基于该目标标识向量iv从L个加密对中匹配标识向量与该目标标识向量iv相同的目标加密对。那么,查询方将作为对称密钥,对目标加密对进行解密,就可以得到明文数据。上述标识向量匹配的示例性过程可以参见图5。
综上所述,本申请实施例提供的查询处理方法对于查询方而言,在计算用于隐匿待查询标识的目标标识密文时,只需基于目标分组的少量标识密文进行计算;相比于以全量查询哈希值为基准计算F(X)而言,只需计算第k个分组(即目标分组)的,计算次数从变成,计算开销从变成;在保障隐匿查询场景中查询方的待查询标识的安全性的前提下,显著减少查询方的计算开销。
上述图2和图4所示实施例分别从数据方和查询方的角度对查询处理方法进行阐述;下面结合图6对数据方和查询方共同执行查询处理方法的具体实现过程进行介绍。图6示出了本申请一个示例性实施例提供的一种查询处理方法的流程示意图;图6所示的查询处理方法可以由图1所示系统中的终端和服务器共同执行,即由查询方所持有的计算机设备和数据方持有的计算机设备共同执行,该查询处理方法可包括但不限于步骤S601-S608:
S601:查询方向数据方发送隐匿查询请求。
S602:数据方接收查询方发送的隐匿查询请求,并响应于该隐匿查询请求,获取M个分组中每个分组的标识密文。
需要说明的是,步骤S601-S602所示的具体实施例过程,可以参见前述图2所示实施例中步骤S201所示的具体实施过程的相关描述,在此不作赘述。
如图7所示,数据方在离线阶段对每个查询标识的查询哈希值分配至分组时,M个分组的分配过程具体可以包括:
首先,将每个查询哈希值分别和M进行取模运算,得到每个查询哈希值对应的取模结果;形式化地,取模结果可以表示为:,此处的为查询标识IDj的查询哈希值,“%”为取模运算符号,M为分组数。
然后,按照每个查询哈希值对应的取模结果,将每个查询哈希值分别分配至M个候选分组;具体地,假设数据方存储的L个查询哈希值中的任一个查询哈希值对应的取模结果表示为取模结果k,那么基于该取模结果k,确定将该任一个查询哈希值分配至M个候选分组中的第k个候选分组。
最后,考虑到在分配过程中,可能M个候选分组中存在至少两个候选分组所包括的查询哈希值的数量不同;此情况下,数据方将差异性的分组的标识密文返回至查询方,查询方很可能基于各分组的标识密文的差异性(每个分组中的标识密文的数量与分组所包括的查询哈希值的数量是相同的)反推出数据集中的数据的分布,从而降低数据方侧的数据的安全性。
为了避免这种差异导致的数据泄漏,提升数据方的数据的安全性;本申请实施例支持若M个候选分组中存在至少两个候选分组所包括的查询哈希值的数量不同,则对M个候选分组进行哈希值补齐处理,得到M个分组,其中,哈希值补齐处理后的每个分组所包括的查询哈希值的数量相同。
详细地,哈希补齐处理的具体过程可以包括:从M个候选分组中确定参考候选分组,该参考候选分组是M个候选分组中包括的查询哈希值的数量最多的候选分组。然后,获取参考候选分组所包括的查询哈希值的数量nmax,并基于数量nmax选择参考数量N,N≥nmax且N为整数。最后,基于数量nmax和参考数量N之间的关系,为M个候选分组中的全部或部分候选分组填充随机哈希值,生成M个分组;其中,填充后的每个分组所包括的查询哈希值的数量均为N。其中:①若数量nmax=参考数量N,则为M个候选分组中的全部或部分候选分组填充随机哈希值,生成M个分组的过程包括:从M个候选分组中筛选出尺寸小于数量nmax的每个候选分组,并采用随机哈希值对该每个候选分组进行哈希值补齐,补齐后的该每个候选分组的尺寸为nmax。②数量nmax<参考数量N则为M个候选分组中的全部或部分候选分组填充随机哈希值,生成M个分组的过程包括:采用随机哈希值为M个分组中的每个分组进行哈希值补齐,补齐后的M个分组中每个分组的尺寸为N。
S603:数据方将M个分组的标识密文发送给查询方。
S604:查询方接收数据方发送的M个分组的标识密文,并从M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组;以及,查询方基于目标分组的标识密文,同态计算目标分组的零化多项式在待查询哈希值的取值所得到的目标标识密文。
S605:查询方将目标标识密文返回至数据方。
S606:数据方接收查询方返回的目标标识密文,并基于目标标识密文为L个键值对生成加密对。
S607:数据方将L个加密对发送给查询方。
需要说明的是,步骤S603-S607所示的具体实施过程,可以参见前述图2所示实施例中步骤S202-S204,以及图4实施例中步骤S402-S403所示的具体实施过程的相关描述,在此不作赘述。
此外,步骤S607所示的数据方将L个加密对发送给查询方的过程中,还值得说明的是:由前述所描述的,键值对在数据集中是按序存储的,因此生成的L个加密对之间也具有排序顺序;如果数据方将L个加密对按照其原本的排序顺序依次发送至查询方,那么查询方很可能基于该L个加密对的排序顺序对数据集中的数据分布进行窃取,从而给数据集中数据的安全性带来威胁。因此,本申请实施例支持数据方对L个加密对的排序顺序进行调整后再发送L个加密对,以增加查询方窃取的难度,从而加强数据的安全。具体地,数据方在需要传输L个加密对时,可以获取预设返回规则,并按照该预设返回规则调整L个键值对的L个加密对之间的排列顺序;再将顺序调整后的L个加密对返回至查询方。其中,预设返回规则是预先设定好的,且本申请实施例对预设返回规则的具体内容不作限定。例如,预设返回规则包括:对L个加密对的排序顺序进行随机打乱;再如,预设返回规则包括:按序排序的L个加密对中的位置靠前的S个加密对与L-S个加密对的位置调换,S为整数且S∈[1,L-1];等等。
S608:查询方接收到数据方发送的L个加密对,并从L个加密对中确定标识向量与待查询标识相匹配的目标加密对,以及解密目标加密对中的数据得到明文数据。
需要说明的是,步骤S608所示的具体实施过程,可以参见前述图4所示实施例中步骤S404-S405所示的具体实施过程的相关描述,在此不做赘述。
经过实践发现,本申请实施例提供的查询处理方案具有较好的隐匿查询性能,能够快速实现隐匿查询。例如,在操作系统为CentOS Linux,处理器型号为Intel Xeon(R)61332.50GHz且内存大小为32G内存的硬件条件下,本申请实施例提供的隐匿查询算法和现有主力算法的性能对可以参见表1:
表1
表1中的“1-100”表示从100个数据查询1个数据;同理,“1-1000”表示从1000个数据查询1个数据;同理,“1-10000”表示从10000个数据查询1个数据。由表1可见,本申请实施例提供的隐匿查询算法相比于主流算法,在计算速度上提升幅度为3.4~39.18倍,极大提升隐匿查询性能和效率。
上述详细阐述了本申请实施例的方法,为了便于更好地实施本申请实施例的上述方法,相应地,下面提供了本申请实施例的装置。
图8示出了本申请一个示例性实施例提供的一种查询处理装置的结构示意图,该查询处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码);该查询处理装置可以用于执行图2及图6所示的方法实施例中的部分或全部步骤;该装置搭载于数据方,数据方存储有L个键值对,每个键值对中包括一个查询标识及查询标识关联的明文数据;基于L个查询标识生成L个查询哈希值,L个查询哈希值被分配至M个分组中;L和M均为大于1的整数,且L≥M;该装置包括:
获取单元801,用于响应于查询方发送的隐匿查询请求,获取M个分组中每个分组的标识密文;标识密文用于隐匿数据方存储的查询标识;
处理单元802,用于将M个分组的标识密文发送至查询方,使查询方从M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并由查询方基于目标分组的标识密文,同态计算目标分组的零化多项式在待查询哈希值的取值所得到的目标标识密文,目标标识密文用于隐匿待查询哈希值;
处理单元802,还用于接收查询方返回的目标标识密文,并基于目标标识密文为L个键值对生成加密对;每个加密对中包括一个标识向量和一个数据密文,标识向量用于表征加密对对应的键值对中的查询标识,数据密文是对加密对对应的键值对中的明文数据加密得到的;
处理单元802,还用于将L个加密对返回至查询方,使得查询方从L个加密对中确定标识向量与待查询标识相匹配的目标加密对,并解密目标加密对中的数据密文得到明文数据。
在一种实现方式中,M个分组的分配过程包括:
将每个查询哈希值分别和M进行取模运算,得到每个查询哈希值对应的取模结果;
按照每个查询哈希值对应的取模结果,将每个查询哈希值分别分配至M个候选分组;
若M个候选分组中存在至少两个候选分组所包括的查询哈希值的数量不同,则对M个候选分组进行哈希值补齐处理,得到M个分组;
其中,哈希值补齐处理后的每个分组所包括的查询哈希值的数量相同。
在一种实现方式中,L个查询哈希值中的任一个查询哈希值对应的取模结果表示为取模结果k,k为整数且k∈[1,M];处理单元802,用于按照每个查询哈希值对应的取模结果,将每个查询哈希值分别分配至M个候选分组时,具体用于:
基于取模结果k,将任一个查询哈希值分配至M个候选分组中的第k个候选分组。
在一种实现方式中,处理单元802,用于对M个候选分组进行哈希值补齐处理,得到M个分组时,具体用于:
从M个候选分组中确定参考候选分组,参考候选分组是M个候选分组中包括的查询哈希值的数量最多的候选分组;
获取参考候选分组所包括的查询哈希值的数量nmax,并基于数量nmax选择参考数量N,N≥nmax且N为整数;
基于数量nmax和参考数量N之间的关系,为M个候选分组中的全部或部分候选分组填充随机哈希值,生成M个分组;
其中,填充后的每个分组所包括的查询哈希值的数量均为N。
在一种实现方式中,处理单元802,用于获取M个分组中每个分组的标识密文时,具体用于:
获取M个分组中每个分组的零化多项式,任一分组的零化多项式是基于任一分组所包括的至少一个查询哈希值预先构造的;零化多项式包括至少一个单项式,且每个单项式由不同阶数的变量和系数组成;
获取数据方和查询方之间的公钥PK,并采用公钥PK对每个分组的零化多项式分别进行系数加密处理,生成每个分组的标识密文;
其中,每个分组对应的标识密文的数量,和相应分组所包括的查询哈希值的数量相同。
在一种实现方式中,M个分组中的任一分组表示为第k个分组,k为整数且k∈[1,M];处理单元802,用于采用公钥PK对每个分组的零化多项式分别进行系数加密处理,生成每个分组的标识密文时,具体用于:
从明文空间中为第k个分组的零化多项式所包括的各系数选取随机数;
基于为各系数选取的随机数和公钥PK,分别对各系数进行加密处理,生成第k个分组的标识密文;
其中,第k个分组的零化多项式中除最高阶单项式的系数外的其他每个系数对应一个标识密文。
在一种实现方式中,处理单元802,还用于:
获取数据方和查询方之间的私钥sk,并基于私钥sk和目标标识密文验证待查询标识对应的待查询哈希值是否存储于数据方;
若是,则触发执行基于目标标识密文为L个键值对生成加密对的步骤。
在一种实现方式中,每个分组对应有一个随机多项式;随机多项式包括至少一个单项式,每个单项式由随机数和不同阶数的变量组成;M个分组中的任一分组表示为第k个分组,基于目标标识密文为L个键值对生成加密对;处理单元802,用于基于目标标识密文为L个键值对生成加密对时,具体用于:
获取第k个分组对应的数值组;数值组中包括:第k个分组所包括的各查询哈希值被分别带入至随机多项式中的变量时,变量的取值;数值组是数据方预先计算并存储的;
基于第k个分组对应的数值组,目标标识密文和包括第k个分组中各查询哈希值对应的查询标识的各键值对,生成包括第k个分组中各查询哈希值对应的查询标识的各键值对的加密对。
在一种实现方式中,目标标识密文表示为;处理单元802,用于基于第k个分组对应的数值组,目标标识密文和包括第k个分组中各查询哈希值对应的查询标识的各键值对,生成包括第k个分组中各查询哈希值对应的查询标识的各键值对的加密对时,具体用于:
基于第k个分组对应的数值组和目标标识密文所包括的,计算第k个分组所包括的各查询哈希值对应的二进制数据;二进制数据包括从左至右分布的2λ比特位;
根据分布于各查询哈希值对应的二进制数据的左侧的λ比特位,生成包括相应查询哈希值的键值对中的查询标识的标识向量,以及根据分布于各查询哈希值对应的二进制数值的右侧的λ比特位,生成用于对包括相应查询哈希值的键值对中的明文数据进行加密的对称密钥;
分别采用各对称密钥对相应键值对中的明文数据进行加密处理,生成相应键值对中明文数据对应的数据密文。
在一种实现方式中,数据方存储的L个键值对按序排列;处理单元802,用于将L个加密对返回至查询方时,具体用于:
获取预设返回规则;
按照预设返回规则,调整L个键值对的L个加密对之间的排列顺序;
将顺序调整后的L个加密对返回至查询方。
根据本申请的一个实施例,图8所示的查询处理装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,该查询处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2及图6所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图8中所示的查询处理装置,以及来实现本申请实施例的查询处理方法。计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
在本申请实施例中,支持利用分桶思想对数据集中存储的海量查询标识的查询哈希值进行分桶;这样,隐匿查询的数据双方只需以分组为单位实现隐匿查询,不仅能确保查询双方的安全性,而且有效减小查询双方的计算开销和计算时间。如针对数据方而言,数据方基于分组所包括的查询哈希值计算各分组的标识密文,相比于针对数据集全量查询标识的查询哈希值计算标识密文而言,单个分组所包括的查询哈希值的数量远小于数据集中全部查询标识的查询哈希值,那么能够有效减少单个处理器针对单个分组的计算开销。进一步的,如果多个处理器并行对多个分组进行标识密文的计算,那么进一步减小计算时间,从而提高查询效率。
图9示出了本申请一个示例性实施例提供的一种查询处理装置的结构示意图,该查询处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码);该查询处理装置可以用于执行图4及图6所示的方法实施例中的部分或全部步骤;该装置搭载于查询方,该装置包括:
发送单元901,用于向数据方发送隐匿查询请求,使数据方响应于隐匿查询请求返回M个分组中每个分组对应的标识密文,标识密文用于隐匿数据方存储的查询标识;数据方存储有L个键值对,每个键值对中包括一个查询标识及查询标识关联的明文数据;基于L个查询标识生成有L个查询哈希值, L个查询哈希值被分配至M个分组中;L和M均为大于1的整数,且L≥M;
处理单元902,用于接收数据方返回的每个分组对应的标识密文,并基于每个分组对应的标识密文,从M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并同态计算目标分组的零化多项式在待查询哈希值的取值所得到的目标标识密文;目标标识密文用于隐匿待查询哈希值;
处理单元902,还用于将目标标识密文发送至数据方,使数据方基于目标标识密文为数据方存储的L个键值对生成加密对;
处理单元902,还用于接收数据方返回的每个键值对生成加密对,并从L个加密对中确定标识向量与待查询标识的标识向量相匹配的目标加密对;
对目标加密对中的数据密文进行解密处理,得到明文数据。
在一种实现方式中,处理单元902,用于基于目标分组的标识密文,对在包含待查询哈希值的情况下的目标分组进行同态计算,得到目标分组对应的目标标识密文时,具体用于:
基于目标分组的标识密文,构造目标分组的零化多项式对应的密文多项式;
将待查询哈希值输入至密文多项式,同态计算得到目标标识密文。
根据本申请的一个实施例,图9所示的查询处理装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,该查询处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图4及图6所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图8中所示的查询处理装置,以及来实现本申请实施例的查询处理方法。计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
在本申请实施例中,支持利用分桶思想对数据集中存储的海量查询标识的查询哈希值进行分桶;这样,隐匿查询的数据双方只需以分组为单位实现隐匿查询,不仅能确保查询双方的安全性,而且有效减小查询双方的计算开销和计算时间。如针对查询方而言,查询方从数据方获取到M个分组的标识密文,并从M个分组中确定出目标分组后,只需基于目标分组的标识密文来同步计算目标标识密文;相比于未分组之前基于全量标识密文进行同态计算而言,显著减少计算量,减小计算开销并节省计算时间,从而提高查询效率。
图10示出了本申请一个示例性实施例提供的一种计算机设备的结构示意图。请参见图10,该计算机设备包括处理器1001、通信接口1002以及计算机可读存储介质1003。其中,处理器1001、通信接口1002以及计算机可读存储介质1003可通过总线或者其它方式连接。其中,通信接口1002用于接收和发送数据。计算机可读存储介质1003可以存储在计算机设备的存储器中,计算机可读存储介质1003用于存储计算机程序,计算机程序包括程序指令,处理器1001用于执行计算机可读存储介质1003存储的程序指令。处理器1001(或称CPU(Central Processing Unit,中央处理器))是计算机设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
本申请实施例还提供了一种计算机可读存储介质(Memory),计算机可读存储介质是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了计算机设备的处理系统。并且,在该存储空间中还存放了适于被处理器1001加载并执行的一条或多条的指令,这些指令可以是一个或多个的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器的计算机可读存储介质。
在一个实施例中,该计算机可读存储介质中存储有一条或多条指令;由处理器1001加载并执行计算机可读存储介质中存放的一条或多条指令,以实现上述查询处理方法实施例中的相应步骤。计算机可读存储介质中的一条或多条指令由处理器1001加载并执行数据方侧的查询方法,该数据方存储有L个键值对,每个键值对中包括一个查询标识及查询标识关联的明文数据;基于L个查询标识生成L个查询哈希值,L个查询哈希值被分配至M个分组中;L和M均为大于1的整数,且L≥M。具体实现中,计算机可读存储介质中的一条或多条指令由处理器1001加载并执行如下步骤:
响应于查询方发送的隐匿查询请求,获取M个分组中每个分组的标识密文;标识密文用于隐匿数据方存储的查询标识;
将M个分组的标识密文发送至查询方,使查询方从M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并由查询方基于目标分组的标识密文,同态计算目标分组的零化多项式在待查询哈希值的取值所得到的目标标识密文,目标标识密文用于隐匿待查询哈希值;
接收查询方返回的目标标识密文,并基于目标标识密文为L个键值对生成加密对;每个加密对中包括一个标识向量和一个数据密文,标识向量用于表征加密对对应的键值对中的查询标识,数据密文是对加密对对应的键值对中的明文数据加密得到的;
将L个加密对返回至查询方,使得查询方从L个加密对中确定标识向量与待查询标识相匹配的目标加密对,并解密目标加密对中的数据密文得到明文数据。
在一种实现方式中,M个分组的分配过程包括:
将每个查询哈希值分别和M进行取模运算,得到每个查询哈希值对应的取模结果;
按照每个查询哈希值对应的取模结果,将每个查询哈希值分别分配至M个候选分组;
若M个候选分组中存在至少两个候选分组所包括的查询哈希值的数量不同,则对M个候选分组进行哈希值补齐处理,得到M个分组;
其中,哈希值补齐处理后的每个分组所包括的查询哈希值的数量相同。
在一种实现方式中,L个查询哈希值中的任一个查询哈希值对应的取模结果表示为取模结果k,k为整数且k∈[1,M];计算机可读存储介质中的一条或多条指令由处理器1001加载并在执行按照每个查询哈希值对应的取模结果,将每个查询哈希值分别分配至M个候选分组时,具体执行如下步骤:
基于取模结果k,将任一个查询哈希值分配至M个候选分组中的第k个候选分组。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1001加载并在执行对M个候选分组进行哈希值补齐处理,得到M个分组时,具体执行如下步骤:
从M个候选分组中确定参考候选分组,参考候选分组是M个候选分组中包括的查询哈希值的数量最多的候选分组;
获取参考候选分组所包括的查询哈希值的数量nmax,并基于数量nmax选择参考数量N,N≥nmax且N为整数;
基于数量nmax和参考数量N之间的关系,为M个候选分组中的全部或部分候选分组填充随机哈希值,生成M个分组;
其中,填充后的每个分组所包括的查询哈希值的数量均为N。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1001加载并在执行获取M个分组中每个分组的标识密文时,具体执行如下步骤:
获取M个分组中每个分组的零化多项式,任一分组的零化多项式是基于任一分组所包括的至少一个查询哈希值预先构造的;零化多项式包括至少一个单项式,且每个单项式由不同阶数的变量和系数组成;
获取数据方和查询方之间的公钥PK,并采用公钥PK对每个分组的零化多项式分别进行系数加密处理,生成每个分组的标识密文;
其中,每个分组对应的标识密文的数量,和相应分组所包括的查询哈希值的数量相同。
在一种实现方式中,M个分组中的任一分组表示为第k个分组,k为整数且k∈[1,M];计算机可读存储介质中的一条或多条指令由处理器1001加载并在执行采用公钥PK对每个分组的零化多项式分别进行系数加密处理,生成每个分组的标识密文时,具体执行如下步骤:
从明文空间中为第k个分组的零化多项式所包括的各系数选取随机数;
基于为各系数选取的随机数和公钥PK,分别对各系数进行加密处理,生成第k个分组的标识密文;
其中,第k个分组的零化多项式中除最高阶单项式的系数外的其他每个系数对应一个标识密文。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1001加载并还执行如下步骤:
获取数据方和查询方之间的私钥sk,并基于私钥sk和目标标识密文验证待查询标识对应的待查询哈希值是否存储于数据方;
若是,则触发执行基于目标标识密文为L个键值对生成加密对的步骤。
在一种实现方式中,每个分组对应有一个随机多项式;随机多项式包括至少一个单项式,每个单项式由随机数和不同阶数的变量组成; M个分组中的任一分组表示为第k个分组,k为整数且k∈[1,M];计算机可读存储介质中的一条或多条指令由处理器1001加载并在执行基于目标标识密文为L个键值对生成加密对时,具体执行如下步骤:
获取第k个分组对应的数值组;数值组中包括:第k个分组所包括的各查询哈希值被分别带入至随机多项式中的变量时,变量的取值;数值组是数据方预先计算并存储的;
基于第k个分组对应的数值组,目标标识密文和包括第k个分组中各查询哈希值对应的查询标识的各键值对,生成包括第k个分组中各查询哈希值对应的查询标识的各键值对的加密对。
在一种实现方式中,目标标识密文表示为;计算机可读存储介质中的一条或多条指令由处理器1001加载并在执行基于第k个分组对应的数值组,目标标识密文和包括第k个分组中各查询哈希值对应的查询标识的各键值对,生成包括第k个分组中各查询哈希值对应的查询标识的各键值对的加密对时,具体执行如下步骤:
基于第k个分组对应的数值组和目标标识密文所包括的,计算第k个分组所包括的各查询哈希值对应的二进制数据;二进制数据包括从左至右分布的2λ比特位;
根据分布于各查询哈希值对应的二进制数据的左侧的λ比特位,生成包括相应查询哈希值的键值对中的查询标识的标识向量,以及根据分布于各查询哈希值对应的二进制数值的右侧的λ比特位,生成用于对包括相应查询哈希值的键值对中的明文数据进行加密的对称密钥;
分别采用各对称密钥对相应键值对中的明文数据进行加密处理,生成相应键值对中明文数据对应的数据密文。
在一种实现方式中,数据方存储的L个键值对按序排列;计算机可读存储介质中的一条或多条指令由处理器1001加载并在执行将L个加密对返回至查询方时,具体执行如下步骤:
获取预设返回规则;
按照预设返回规则,调整L个键值对的L个加密对之间的排列顺序;
将顺序调整后的L个加密对返回至查询方。
在另一个实施例中,该计算机可读存储介质中存储有一条或多条指令;由处理器1001加载并执行计算机可读存储介质中存放的一条或多条指令,以实现上述查询处理方法实施例中的相应步骤。计算机可读存储介质中的一条或多条指令由处理器1001加载并执行查询方侧的查询方法。具体实现中,计算机可读存储介质中的一条或多条指令由处理器1001加载并执行如下步骤:
向数据方发送隐匿查询请求,使数据方响应于隐匿查询请求返回M个分组中每个分组对应的标识密文,标识密文用于隐匿数据方存储的查询标识;数据方存储有L个键值对,每个键值对中包括一个查询标识及查询标识关联的明文数据;基于L个查询标识生成有L个查询哈希值,L个查询哈希值被分配至M个分组中;L和M均为大于1的整数,且L≥M;
接收数据方返回的每个分组对应的标识密文,并基于每个分组对应的标识密文,从M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并同态计算目标分组的零化多项式在待查询哈希值的取值所得到的目标标识密文;目标标识密文用于隐匿待查询哈希值;
将目标标识密文发送至数据方,使数据方基于目标标识密文为数据方存储的L个键值对生成加密对;
接收数据方返回的每个键值对生成加密对,并从L个加密对中确定标识向量与待查询标识的标识向量相匹配的目标加密对;
对目标加密对中的数据密文进行解密处理,得到明文数据。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1001加载并执行基于目标分组的标识密文,对在包含待查询哈希值的情况下的目标分组进行同态计算,得到目标分组对应的目标标识密文时,具体执行如下步骤:
基于目标分组的标识密文,构造目标分组的零化多项式对应的密文多项式;
将待查询哈希值输入至密文多项式,同态计算得到目标标识密文。
基于同一发明构思,本申请实施例中提供的计算机设备解决问题的原理与有益效果与本申请方法实施例中查询处理方法解决问题的原理和有益效果相似,可以参见方法的实施的原理和有益效果,为简洁描述,在这里不再赘述。
本申请实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述查询处理方法。
本领域普通技术对象可以意识到,结合本申请中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术对象可以对每个特定的应用,使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程设备。计算机指令可以存储在计算机可读存储介质中,或者通过计算机可读存储介质进行传输。计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如,同轴电缆、光纤、数字线(DSL))或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据处理设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术对象在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种查询处理方法,其特征在于,所述方法应用于数据方,所述数据方存储有L个键值对,每个键值对中包括一个查询标识及所述查询标识关联的明文数据;基于L个查询标识生成L个查询哈希值,所述L个查询哈希值被分配至M个分组中;L和M均为大于1的整数,且L≥M;所述方法包括:
响应于查询方发送的隐匿查询请求,获取所述M个分组中每个分组的标识密文;所述标识密文用于隐匿所述数据方存储的查询标识;
将所述M个分组的标识密文发送至所述查询方,使所述查询方从所述M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并由所述查询方基于所述目标分组的标识密文,同态计算所述目标分组的零化多项式在所述待查询哈希值的取值所得到的目标标识密文;
接收所述查询方返回的所述目标标识密文,并基于所述目标标识密文为所述L个键值对生成加密对;每个加密对中包括一个标识向量和一个数据密文,所述标识向量用于表征所述加密对对应的键值对中的查询标识,所述数据密文是对所述加密对对应的键值对中的明文数据加密得到的;
将L个加密对返回至所述查询方,使得所述查询方从所述L个加密对中确定标识向量与所述待查询标识相匹配的目标加密对,并解密所述目标加密对中的数据密文得到明文数据。
2.如权利要求1所述的方法,其特征在于,所述M个分组的分配过程包括:
将每个查询哈希值分别和M进行取模运算,得到所述每个查询哈希值对应的取模结果;
按照所述每个查询哈希值对应的取模结果,将所述每个查询哈希值分别分配至M个候选分组;
若所述M个候选分组中存在至少两个候选分组所包括的查询哈希值的数量不同,则对所述M个候选分组进行哈希值补齐处理,得到M个分组;
其中,哈希值补齐处理后的所述每个分组所包括的查询哈希值的数量相同。
3.如权利要求2所述的方法,其特征在于,所述L个查询哈希值中的任一个查询哈希值对应的取模结果表示为取模结果k,k为整数且k∈[1,M];所述按照所述每个查询哈希值对应的取模结果,将所述每个查询哈希值分别分配至M个候选分组,包括:
基于所述取模结果k,将所述任一个查询哈希值分配至M个候选分组中的第k个候选分组。
4.如权利要求2或3所述的方法,其特征在于,所述对所述M个候选分组进行哈希值补齐处理,得到M个分组,包括:
从所述M个候选分组中确定参考候选分组,所述参考候选分组是所述M个候选分组中包括的查询哈希值的数量最多的候选分组;
获取所述参考候选分组所包括的查询哈希值的数量nmax,并基于所述数量nmax选择参考数量N,N≥nmax且N为整数;
基于所述数量nmax和所述参考数量N之间的关系,为所述M个候选分组中的全部或部分候选分组填充随机哈希值,生成M个分组;
其中,填充后的每个分组所包括的查询哈希值的数量均为N。
5.如权利要求1所述的方法,其特征在于,所述获取所述M个分组中每个分组的标识密文,包括:
获取所述M个分组中每个分组的零化多项式,任一分组的零化多项式是基于所述任一分组所包括的至少一个查询哈希值预先构造的;所述零化多项式包括至少一个单项式,且每个单项式由不同阶数的变量和系数组成;
获取所述数据方和所述查询方之间的公钥PK,并采用所述公钥PK对所述每个分组的零化多项式分别进行系数加密处理,生成所述每个分组的标识密文;
其中,所述每个分组对应的标识密文的数量,和相应分组所包括的查询哈希值的数量相同。
6.如权利要求5所述的方法,其特征在于,所述M个分组中的任一分组表示为第k个分组,k为整数且k∈[1,M];所述采用所述公钥PK对所述每个分组的零化多项式分别进行系数加密处理,生成所述每个分组的标识密文,包括:
从明文空间中为所述第k个分组的零化多项式所包括的各系数选取随机数;
基于为所述各系数选取的随机数和所述公钥PK,分别对所述各系数进行加密处理,生成所述第k个分组的标识密文;
其中,所述第k个分组的零化多项式中除最高阶单项式的系数外的其他每个系数对应一个标识密文。
7.如权利要求1所述的方法,其特征在于,所述接收所述查询方返回的所述目标标识密文之后,还包括:
获取所述数据方和所述查询方之间的私钥sk,并基于所述私钥sk和所述目标标识密文验证所述待查询标识对应的待查询哈希值是否存储于所述数据方;
若是,则触发执行所述基于所述目标标识密文为所述L个键值对生成加密对的步骤。
8.如权利要求1或7所述的方法,其特征在于,所述每个分组对应有一个随机多项式;所述随机多项式包括至少一个单项式,每个单项式由随机数和不同阶数的变量组成;所述M个分组中的任一分组表示为第k个分组,k为整数且k∈[1,M];所述基于所述目标标识密文为所述L个键值对生成加密对,包括:
获取所述第k个分组对应的数值组;所述数值组中包括:所述第k个分组所包括的各查询哈希值被分别带入至所述随机多项式中的变量时,所述变量的取值;所述数值组是所述数据方预先计算并存储的;
基于所述第k个分组对应的数值组,所述目标标识密文和包括所述第k个分组中各查询哈希值对应的查询标识的各键值对,生成包括所述第k个分组中各查询哈希值对应的查询标识的各键值对的加密对。
9.如权利要求8所述的方法,其特征在于,所述目标标识密文表示为;所述基于所述第k个分组对应的数值组,所述目标标识密文和包括所述第k个分组中各查询哈希值对应的查询标识的各键值对,生成包括所述第k个分组中各查询哈希值对应的查询标识的各键值对的加密对,包括:
基于所述第k个分组对应的数值组和所述目标标识密文所包括的,计算所述第k个分组所包括的各查询哈希值对应的二进制数据;所述二进制数据包括从左至右分布的2λ比特位;
根据分布于所述各查询哈希值对应的二进制数据的左侧的λ比特位,生成包括相应查询哈希值的键值对中的查询标识的标识向量,以及根据分布于所述各查询哈希值对应的二进制数值的右侧的λ比特位,生成用于对包括相应查询哈希值的键值对中的明文数据进行加密的对称密钥;
分别采用各对称密钥对相应键值对中的明文数据进行加密处理,生成所述相应键值对中明文数据对应的数据密文。
10.如权利要求1所述的方法,其特征在于,所述数据方存储的所述L个键值对按序排列;所述将L个加密对返回至所述查询方,包括:
获取预设返回规则;
按照所述预设返回规则,调整所述L个键值对的L个加密对之间的排列顺序;
将顺序调整后的所述L个加密对返回至所述查询方。
11.一种查询处理方法,其特征在于,所述方法应用于查询方;所述方法包括:
向数据方发送隐匿查询请求,使所述数据方响应于所述隐匿查询请求返回M个分组的标识密文,所述标识密文用于隐匿所述数据方存储的查询标识;所述数据方存储有L个键值对,每个键值对中包括一个查询标识及所述查询标识关联的明文数据;基于L个查询标识生成L个查询哈希值,所述L个查询哈希值被分配至M个分组中;L和M均为大于1的整数,且L≥M;
接收所述数据方返回的所述M个分组的标识密文,并从所述M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并基于所述目标分组的标识密文,同态计算所述目标分组的零化多项式在所述待查询哈希值的取值所得到的目标标识密文;所述目标标识密文用于隐匿所述待查询标识;
将所述目标标识密文发送至所述数据方,使所述数据方基于所述目标标识密文为所述数据方存储的L个键值对生成加密对;
接收所述数据方返回的L个加密对,并从所述L个加密对中确定标识向量与所述待查询标识相匹配的目标加密对;
对所述目标加密对中的数据密文进行解密处理,得到明文数据。
12.如权利要求11所述的方法,其特征在于,所述基于所述目标分组的标识密文,同态计算所述目标分组的零化多项式在所述待查询哈希值的取值所得到的目标标识密文,包括:
基于所述目标分组的标识密文,构造所述目标分组的零化多项式对应的密文多项式;
将所述待查询哈希值输入至所述密文多项式,同态计算得到目标标识密文。
13.一种查询处理装置,其特征在于,所述查询处理装置搭载于数据方,所述数据方存储有L个键值对,每个键值对中包括一个查询标识及所述查询标识关联的明文数据;基于L个查询标识生成L个查询哈希值,所述L个查询哈希值被分配至M个分组中;L和M均为大于1的整数,且L≥M;所述装置包括:
获取单元,用于响应于查询方发送的隐匿查询请求,获取所述M个分组中每个分组的标识密文;所述标识密文用于隐匿所述数据方存储的查询标识;
处理单元,用于将所述M个分组的标识密文发送至所述查询方,使所述查询方从所述M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并由所述查询方基于所述目标分组的标识密文,同态计算所述目标分组的零化多项式在所述待查询哈希值的取值所得到的目标标识密文;
所述处理单元,还用于接收所述查询方返回的所述目标标识密文,并基于所述目标标识密文为所述L个键值对生成加密对;每个加密对中包括一个标识向量和一个数据密文,所述标识向量用于表征所述加密对对应的键值对中的查询标识,所述数据密文是对所述加密对对应的键值对中的明文数据加密得到的;
所述处理单元,还用于将L个加密对返回至所述查询方,使得所述查询方从所述L个加密对中确定标识向量与所述待查询标识相匹配的目标加密对,并解密所述目标加密对中的数据密文得到明文数据。
14.一种查询处理装置,其特征在于,所述查询处理装置搭载于查询方;所述装置包括:
发送单元,用于向数据方发送隐匿查询请求,使所述数据方响应于所述隐匿查询请求返回M个分组的标识密文,所述标识密文用于隐匿所述数据方存储的查询标识;所述数据方存储有L个键值对,每个键值对中包括一个查询标识及所述查询标识关联的明文数据;基于L个查询标识生成L个查询哈希值,所述L个查询哈希值被分配至M个分组中;L和M均为大于1的整数,且L≥M;
处理单元,用于接收所述数据方返回的所述M个分组的标识密文,并从所述M个分组中确定出待查询标识对应的待查询哈希值被分配时应当所属的目标分组,并基于所述目标分组的标识密文,同态计算所述目标分组的零化多项式在所述待查询哈希值的取值所得到的目标标识密文;所述目标标识密文用于隐匿所述待查询标识;
所述处理单元,还用于将所述目标标识密文发送至所述数据方,使所述数据方基于所述目标标识密文为所述数据方存储的L个键值对生成加密对;
所述处理单元,还用于接收所述数据方返回的L个加密对,并从所述L个加密对中确定标识向量与所述待查询标识相匹配的目标加密对;
所述处理单元,还用于对所述目标加密对中的数据密文进行解密处理,得到明文数据。
15.一种计算机设备,其特征在于,包括:
处理器,适于执行计算机程序;
计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,实现如权利要求1-10任一项所述的查询处理方法,或实现如权利要求11-12任一项所述的查询处理方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于被处理器加载并执行如权利要求1-10任一项所述的查询处理方法,或者执行如权利要求11-12任一项所述的查询处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310983316.6A CN116702215B (zh) | 2023-08-07 | 2023-08-07 | 一种查询处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310983316.6A CN116702215B (zh) | 2023-08-07 | 2023-08-07 | 一种查询处理方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116702215A CN116702215A (zh) | 2023-09-05 |
CN116702215B true CN116702215B (zh) | 2023-12-08 |
Family
ID=87829701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310983316.6A Active CN116702215B (zh) | 2023-08-07 | 2023-08-07 | 一种查询处理方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116702215B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118551122A (zh) * | 2024-06-19 | 2024-08-27 | 腾讯科技(深圳)有限公司 | 一种数据隐匿查询方法、装置、电子设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114329599A (zh) * | 2021-12-30 | 2022-04-12 | 北京瑞莱智慧科技有限公司 | 一种数据查询方法、装置及存储介质 |
CN115292359A (zh) * | 2022-08-11 | 2022-11-04 | 抖音视界有限公司 | 数据查询方法、装置、存储介质、服务端及查询端 |
CN115412356A (zh) * | 2022-09-02 | 2022-11-29 | 杭州趣链科技有限公司 | 数据查询设备法、装置、计算机设备以及存储介质 |
CN115422582A (zh) * | 2022-08-30 | 2022-12-02 | 中国工商银行股份有限公司 | 数据查询方法和风险管控方法、装置、设备和介质 |
CN115642999A (zh) * | 2022-09-13 | 2023-01-24 | 支付宝(杭州)信息技术有限公司 | 一种用于私有信息高效检索的方法及系统 |
CN115688167A (zh) * | 2022-10-13 | 2023-02-03 | 北京沃东天骏信息技术有限公司 | 匿踪查询方法、装置和系统及存储介质 |
CN115934707A (zh) * | 2022-11-03 | 2023-04-07 | 上海零数众合信息科技有限公司 | 数据查询方法、装置、设备及存储介质 |
CN116032667A (zh) * | 2023-03-29 | 2023-04-28 | 深圳市洞见智慧科技有限公司 | 支持高效更新的在线匿踪查询方法、系统及相关设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9031229B1 (en) * | 2012-03-26 | 2015-05-12 | Newline Software, Inc. | Computer-implemented system and method for providing data privacy in a cloud using discrete homomorphic encryption |
US9846785B2 (en) * | 2015-11-25 | 2017-12-19 | International Business Machines Corporation | Efficient two party oblivious transfer using a leveled fully homomorphic encryption |
-
2023
- 2023-08-07 CN CN202310983316.6A patent/CN116702215B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114329599A (zh) * | 2021-12-30 | 2022-04-12 | 北京瑞莱智慧科技有限公司 | 一种数据查询方法、装置及存储介质 |
CN115292359A (zh) * | 2022-08-11 | 2022-11-04 | 抖音视界有限公司 | 数据查询方法、装置、存储介质、服务端及查询端 |
CN115422582A (zh) * | 2022-08-30 | 2022-12-02 | 中国工商银行股份有限公司 | 数据查询方法和风险管控方法、装置、设备和介质 |
CN115412356A (zh) * | 2022-09-02 | 2022-11-29 | 杭州趣链科技有限公司 | 数据查询设备法、装置、计算机设备以及存储介质 |
CN115642999A (zh) * | 2022-09-13 | 2023-01-24 | 支付宝(杭州)信息技术有限公司 | 一种用于私有信息高效检索的方法及系统 |
CN115688167A (zh) * | 2022-10-13 | 2023-02-03 | 北京沃东天骏信息技术有限公司 | 匿踪查询方法、装置和系统及存储介质 |
CN115934707A (zh) * | 2022-11-03 | 2023-04-07 | 上海零数众合信息科技有限公司 | 数据查询方法、装置、设备及存储介质 |
CN116032667A (zh) * | 2023-03-29 | 2023-04-28 | 深圳市洞见智慧科技有限公司 | 支持高效更新的在线匿踪查询方法、系统及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116702215A (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chen et al. | When homomorphic encryption marries secret sharing: Secure large-scale sparse logistic regression and applications in risk control | |
CN112950367B (zh) | 生成和执行智能合约交易的方法及装置 | |
CN109716375B (zh) | 区块链账户的处理方法、装置和存储介质 | |
US10880100B2 (en) | Apparatus and method for certificate enrollment | |
US9325499B1 (en) | Message encryption and decryption utilizing low-entropy keys | |
CN116702215B (zh) | 一种查询处理方法、装置、设备及介质 | |
CN115225409B (zh) | 基于多备份联合验证的云数据安全去重方法 | |
CN114756895B (zh) | 基于同态加密的匿踪数据核验方法及系统 | |
CN111639345B (zh) | 基于同态加密的安全的多方云计算的方法和系统 | |
US11563566B2 (en) | Key splitting | |
CN114491613B (zh) | 高效可搜索的代理隐私集合求交方法及装置 | |
CN108197439A (zh) | 一种文件加密方法、装置及服务器 | |
CN115269938B (zh) | 基于同态加密的关键词匿踪查询方法、系统及相关装置 | |
CN111475690B (zh) | 字符串的匹配方法和装置、数据检测方法、服务器 | |
Erkin et al. | Privacy-preserving user clustering in a social network | |
CN108229192A (zh) | 一种文件解密方法、装置及客户端 | |
US8862893B2 (en) | Techniques for performing symmetric cryptography | |
CN116170142B (zh) | 分布式协同解密方法、设备和存储介质 | |
CN108141462B (zh) | 数据库查询的方法和系统 | |
CN116707778A (zh) | 数据混合加密传输方法、装置和电子设备 | |
CN114866317B (zh) | 多方的数据安全计算方法、装置、电子设备和存储介质 | |
Joseph et al. | Design a hybrid Optimization and Homomorphic Encryption for Securing Data in a Cloud Environment | |
Mahdavi et al. | {PEPSI}: Practically Efficient Private Set Intersection in the Unbalanced Setting | |
CN110048856A (zh) | 数据传输方法、装置和pos机系统 | |
CN112583580A (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 |