CN111159730B - 数据处理方法、查询方法、装置、电子设备和系统 - Google Patents

数据处理方法、查询方法、装置、电子设备和系统 Download PDF

Info

Publication number
CN111159730B
CN111159730B CN201911285939.6A CN201911285939A CN111159730B CN 111159730 B CN111159730 B CN 111159730B CN 201911285939 A CN201911285939 A CN 201911285939A CN 111159730 B CN111159730 B CN 111159730B
Authority
CN
China
Prior art keywords
ciphertext
judgment
segment
result
segmentation
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
CN201911285939.6A
Other languages
English (en)
Other versions
CN111159730A (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
Original Assignee
Alipay Hangzhou Information Technology 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 filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN201911285939.6A priority Critical patent/CN111159730B/zh
Publication of CN111159730A publication Critical patent/CN111159730A/zh
Application granted granted Critical
Publication of CN111159730B publication Critical patent/CN111159730B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes

Landscapes

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

Abstract

本说明书提供数据处理方法、查询方法、装置、电子设备和系统的实施例。所述查询方法包括:获取判断对象特定取值的多个二进制段;对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同;对多个查询结果进行打包,得到打包数据密文;向判断条件方发送所述打包数据密文。本说明书的一个或多个实施例,可以在判断条件方不泄漏自身的判断条件、且数据方不泄漏自身的特定取值的前提下,由二者合作确定出判断条件的与判断对象的特定取值相对应的判断结果,从而实现了隐私保护。

Description

数据处理方法、查询方法、装置、电子设备和系统
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种数据处理方法、查询方法、装置、电子设备和系统。
背景技术
在业务实际中,通常一方拥有需要保密的判断条件(为了便于描述,以下称为判断条件方),另一方拥有需要保密的隐私数据(为了便于描述,以下称为数据方)。如何在所述判断条件方不泄漏所述判断条件、且所述数据方不泄漏所述隐私数据的条件下,合作确定出所述判断条件的与所述隐私数据相对应的判断结果,是当前亟需解决的技术问题。
发明内容
本说明书实施例提供一种数据处理方法、查询方法、装置、电子设备和系统,以便于在所述判断条件方不泄漏所述判断条件、且所述数据方不泄漏所述隐私数据的条件下,合作确定出所述判断条件的与所述隐私数据相对应的判断结果。
为实现上述目的,本说明书中一个或多个实施例提供的技术方案如下。
根据本说明书一个或多个实施例的第一方面,提供了一种数据处理方法,应用于判断条件方,包括:获取判断条件中基准数据的多个二进制段;根据基准数据的二进制段,将判断条件解析为多个分段判断条件;构建多个第一分段判断结果集合,每个第一分段判断结果集合包括由分段判断条件所得到的多个分段判断结果,每个分段判断结果对应有判断对象的二进制段;对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合;对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合;向数据方发送多个密文集合。
根据本说明书一个或多个实施例的第二方面,提供了一种查询方法,应用于数据方,所述数据方持有多个密文集合,每个密文集合对应有段位置,且包括多个对应有二进制段的分段判断结果密文,该方法包括:获取判断对象特定取值的多个二进制段;对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同;对多个查询结果进行打包,得到打包数据密文;向判断条件方发送所述打包数据密文。
根据本说明书一个或多个实施例的第三方面,提供了一种查询方法,应用于数据方,所述数据方持有多个密文集合,每个密文集合对应有段位置,且包括多个对应有二进制段的分段判断结果密文,该方法包括:获取判断对象特定取值的多个二进制段;对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同;对多个查询结果进行打包,得到打包数据密文;生成打包数据的第一份额,所述打包数据的第一份额包括随机数;根据打包数据密文和所述第一份额,计算打包数据第二份额的密文;向判断条件方发送打包数据第二份额的密文。
根据本说明书一个或多个实施例的第四方面,提供了一种数据处理装置,应用于判断条件方,包括:获取单元,用于获取判断条件中基准数据的多个二进制段;解析单元,用于根据基准数据的二进制段,将判断条件解析为多个分段判断条件;构建单元,用于构建多个第一分段判断结果集合,每个第一分段判断结果集合包括由分段判断条件所得到的多个分段判断结果,每个分段判断结果对应有判断对象的二进制段;编码单元,用于对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合;加密单元,用于对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合;发送单元,用于向数据方发送多个密文集合。
根据本说明书一个或多个实施例的第五方面,提供了一种查询装置,应用于数据方,所述数据方持有多个密文集合,每个密文集合对应有段位置,且包括多个对应有二进制段的分段判断结果密文,该装置包括:获取单元,用于获取判断对象特定取值的多个二进制段;查询单元,用于对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同;打包单元,用于对多个查询结果进行打包,得到打包数据密文;发送单元,用于向判断条件方发送所述打包数据密文。
根据本说明书一个或多个实施例的第六方面,提供了一种查询装置,应用于数据方,所述数据方持有多个密文集合,每个密文集合对应有段位置,且包括多个对应有二进制段的分段判断结果密文,该装置包括:获取单元,用于获取判断对象特定取值的多个二进制段;查询单元,用于对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同;打包单元,用于对多个查询结果进行打包,得到打包数据密文;生成单元,用于生成打包数据的第一份额,所述打包数据的第一份额包括随机数;计算单元,用于根据打包数据密文和所述第一份额,计算打包数据第二份额的密文;发送单元,用于向判断条件方发送打包数据第二份额的密文。
根据本说明书一个或多个实施例的第七方面,提供了一种电子设备,包括存储器和处理器;存储器,用于存储计算机指令;处理器,用于执行所述计算机指令以实现如第一方面所述的方法步骤。
根据本说明书一个或多个实施例的第八方面,提供了一种电子设备,包括存储器和处理器;存储器,用于存储计算机指令;处理器,用于执行所述计算机指令以实现如第二方面所述的方法步骤。
根据本说明书一个或多个实施例的第九方面,提供了一种电子设备,包括存储器和处理器;存储器,用于存储计算机指令;处理器,用于执行所述计算机指令以实现如第三方面所述的方法步骤。
根据本说明书一个或多个实施例的第十方面,提供了一种查询系统,包括数据方和判断条件方;所述数据方中设置如第五方面所述的装置;所述判断条件方用于接收所述打包数据密文;对所述打包数据密文进行解密,得到打包数据。
根据本说明书一个或多个实施例的第十一方面,提供了一种查询系统,包括数据方和判断条件方;所述数据方中设置如第六方面所述的装置;所述判断条件方用于接收所述打包数据第二份额的密文;对所述打包数据第二份额的密文进行解密,得到打包数据的第二份额。
在本说明书的一些实施例中,判断条件方可以将判断条件解析为多个分段判断条件;可以构建多个第一分段判断结果集合;可以对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合;可以对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合;可以向数据方发送多个密文集合。数据方可以接收所述多个密文集合;可以对判断对象的特定取值进行分段;可以根据特定取值的二进制段在所述多个密文集合中进行查询。这样一方面,可以在判断条件方不泄漏自身的判断条件、且数据方不泄漏自身的特定取值的前提下,由二者合作确定出判断条件的与判断对象的特定取值相对应的判断结果,从而实现了隐私保护。另一方面,第二分段判断结果集合的数据量比较小,判断条件方加密时花费的计算资源也较小;密文集合的数据量也比较小,也有利于数据方的查询。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一实施例的查询方法的流程图;
图2为本说明书一实施例的决策树的结构示意图;
图3为本说明书一实施例的查询方法的流程图;
图4为本说明书一实施例的数据处理方法的流程图;
图5为本说明书一实施例的查询方法的流程图;
图6为本说明书一实施例的查询方法的流程图;
图7为本说明书一实施例的数据处理装置的功能结构示意图;
图8为本说明书一实施例的查询装置的功能结构示意图;
图9为本说明书一实施例的查询装置的功能结构示意图;
图10为本说明书一实施例的电子设备的功能结构示意图。
具体实施方式
下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。应当理解,在本说明书中术语“唯一对应”可以理解为一一对应。例如,A唯一对应B可以理解为A与B之间一一对应。术语“比特数”可以理解为二进制位的位数。
本说明书提供查询系统的一个实施例。所述查询系统可以包括判断条件方和数据方。
在一些实施例中,所述判断条件方可以为服务器、手机、平板电脑或个人电脑等设备;或者,也可以为由多台设备组成的系统,例如由多个服务器组成的服务器集群。所述判断条件方可以持有判断条件。所述判断条件可以包括比较判断条件,所述比较判断条件可以用于确定判断对象的取值与阈值之间的大小关系。所述比较判断条件可以包括大于判断条件、大于或等于判断条件、等于判断条件、小于判断条件、小于或等于判断条件等等。例如,所述大于判断条件可以为x>t,x表示判断对象的取值,t表示阈值。
所述判断条件可以包括关系运算符和基准数据。具体地,所述判断条件可以包括比较判断条件。所述关系运算符可以包括比较运算符,所述基准数据可以包括阈值。其中,所述比较运算符可以包括大于运算符、大于或等于运算符、等于运算符、小于运算符、小于或等于运算符等等。
所述判断对象可以具有至少一个取值。所述取值可以为数值,或者,也可以为字符。例如,在一些业务场景下所述判断对象用于表示用户的收入状况,所述判断对象的取值可以为用户的年收入值。又例如,在一些业务场景下所述判断对象用于表示用户的房产状况,所述判断对象的取值可以为数值0或数值1,数值0表示不拥有房产,数值1表示不拥有房产。
根据所述判断条件可以获得至少一个判断结果,每个判断结果可以对应判断对象的至少一个取值。在实际应用中,判断对象的一个取值与基准数据按照关系运算符所表示的运算方式进行运算,便可以得到判断条件的一个判断结果。所述判断结果可以为数值,或者,也可以为字符。例如,所述判断结果可以为数值0或数值1,数值0表示判断条件不成立,数值1表示判断条件不成立。又例如,所述判断结果可以为字符False或字符True,字符False表示判断条件不成立,字符True表示判断条件成立。
在一些实施例中,所述数据方可以为服务器、手机、平板电脑或个人电脑等设备;或者,也可以为由多台设备组成的系统,例如由多个服务器组成的服务器集群。所述数据方可以持有判断对象的特定取值。
在一些实施例中,所述判断条件方和所述数据方可以理解为进行安全多方计算(SMC,Secure Multi-Party Computation)的双方,安全多方计算可以用于解决一组互不信任的参与方之间保护隐私的合作计算问题。具体地,所述判断条件方和所述数据方可以进行合作计算,得到所述判断条件的与所述判断对象的特定取值相对应的判断结果。出于隐私保护的考虑,在合作计算的过程中,所述判断条件方不能够向所述数据方泄漏自身持有的判断条件(例如关系运算符和/或基准数据等等),所述数据方不能够向所述判断条件方泄漏自身持有的判断对象的特定取值。
在实际应用中,所述判断条件方和所述数据方通过合作计算获得判断结果的过程,可以是一个独立的计算任务,或者,还可以是一个大的计算任务中的一部分。在一些场景示例中,所述判断条件方可以为金融机构,例如可以为银行、第三方支付机构等等。所述金融机构可以持有数据处理模型,所述数据处理模型可以包括决策树模型、评分卡模型等,所述数据处理模型可以包括至少一个判断条件。所述数据方可以为大数据公司,所述大数据公司可以持有用户的房产状况、婚姻状况和收入状况等隐私数据。所述金融机构和所述大数据公司可以进行合作计算,得到数据处理模型的预测结果,以便于所述金融机构能够基于所述预测结果来评估是否向所述用户借款。为了获得预测结果,所述金融机构和所述大数据公司需要合作计算以获得数据处理模型中判断条件的与判断对象的特定取值相对应的判断结果。通过合作计算获得判断结果的过程,便可以视为一个大的计算任务(获得数据处理模型的预测结果)中的一部分。关于所述金融机构和所述大数据公司通过合作计算获得预测结果的过程,在后续场景示例中会有详细的介绍。
在一些实施例中,为了实现隐私保护,在相关技术中,判断条件方可以根据判断条件构建明文表。所述明文表可以包括根据所述判断条件所得到的至少一个判断结果,每个判断结果可以对应判断对象的至少一个取值。判断条件方可以对所述明文表中的判断结果进行加密,得到密文表;可以向数据方发送所述密文表。所述数据方可以接收所述密文表;可以根据自身持有的判断对象的特定取值,从所述密文表中查询对应的判断结果密文;可以向判断条件方发送查询出的判断结果密文。判断条件方可以接收判断结果密文;可以对判断结果密文进行解密,得到最终的判断结果,即,判断条件的与判断对象的特定取值相对应的判断结果。在一些情况下,判断对象取值的数量非常多,使得明文表的数据量非常大。例如,若判断对象的取值为16bit整数,则判断对象具有65536个取值。这样一方面,在对明文表中的判断结果进行加密时花费的计算资源非常大;另一方面,使得密文表的数据量非常大,不利于数据方的查询。
若要确定两个数值之间的大小关系,可以将两个数值进行分段比较。
例如,数值value1=101100,数值value2=101011。那么,若要确定数值value1与数值value2之间的大小关系,可以先将数值value1的高位段101与数值value2的高位段101进行比较;由于二者的高位段均为101,因而可以进一步将数值value1的低位段100与数值value2的低位段011进行比较;由于数值value1的低位段100大于数值value2的低位段011,因而可以确定数值value1大于数值value2。
又例如,可以将数值value3的二进制形式按照由高位到低位的顺序分为value3[2]、value3[1]和value3[0]等3个二进制段;可以将数值value4的二进制形式按照由高位到低位的顺序分为value4[2]、value4[1]和value4[0]等3个二进制段。则确定value3≥value4是否成立可以等价于确定
value3[2]>value4[2]||((value3[2]==value4[2])&&(value3[1]>value4[1]))||((value3[2]==value4[2])&&(value3[1]==value4[1])&&(value3[0]>=value4[0]))是否成立。||表示或逻辑运算符,&&表示与逻辑运算符。
又例如,可以将数值value5的二进制形式按照由高位到低位的顺序分为value5[1]和value5[0]等2个二进制段;可以将数值value6的二进制形式按照由高位到低位的顺序分为value6[1]和value6[1]等2个二进制段。则确定value5==value6是否成立可以等价于确定(value5[1]==value6[1])&&(value5[0]==value6[0])是否成立。
基于以上的考虑,判断条件方可以将判断条件解析为多个分段判断条件;可以构建多个第一分段判断结果集合;可以对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合;可以对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合;可以向数据方发送多个密文集合。数据方可以接收所述多个密文集合;可以对判断对象的特定取值进行分段;可以根据特定取值的二进制段在所述多个密文集合中进行查询。这样一方面,可以在判断条件方不泄漏自身的判断条件、且数据方不泄漏自身的特定取值的前提下,由二者合作确定出判断条件的与判断对象的特定取值相对应的判断结果,从而实现了隐私保护。另一方面,第二分段判断结果集合的数据量比较小,判断条件方加密时花费的计算资源也较小;密文集合的数据量也比较小,也有利于数据方的查询。
本说明书提供查询方法的一个实施例。所述查询方法可以包括部署阶段和实施阶段,所述部署阶段可以包括步骤S101-步骤S113,所述实施阶段可以包括步骤S115-步骤S123。部署阶段的方法步骤并非是必须的。例如,可以预先执行部署阶段的方法步骤,这样在需要确定所需的判断结果时,仅执行实施阶段的方法步骤就可以了。
通过本实施例的查询方法,判断条件方可以获得打包数据;可以根据所述打包数据确定最终的判断结果,即,判断条件的与判断对象的特定取值相对应的判断结果。
请参阅图1。所述查询方法可以包括以下步骤。
步骤S101:判断条件方获取判断条件中基准数据的多个二进制段。
在一些实施例中,判断条件方可以持有判断条件,所述判断条件中的基准数据可以为非负整数。判断条件方可以对所述基准数据进行分段,得到多个二进制段。具体地,判断条件方可以对二进制形式的基准数据进行分段,得到多个二进制段。所述多个二进制段的比特数可以相同或不同。每个二进制段可以对应一个段位置,该段位置用于表示该二进制段在二进制数中的位置。在实际应用中,段位置可以为二进制段中的任一二进制位在二进制数中所在的位次。或者,段位置还可以由判断条件方直接生成。
例如,判断条件方可以持有判断条件x≥26=011010B。判断条件方可以对基准数据011010B进行分段,得到tx[2]=01、tx[1]=10、以及tx[0]=10等3个二进制段。tx[2]=01对应的段位置为2,tx[1]=10对应的段位置为1,tx[0]=10对应的段位置为0。
值得说明的是,判断条件方可以获取一个判断条件中基准数据的二进制段。或者,判断条件方还可以获取多个判断条件中基准数据的二进制段。
另外,判断条件方可以知晓判断对象的取值区间,所述取值区间内的整数构成了判断对象的所有可能取值。在一些情况下,判断条件中的基准数据为非负整数,所述取值区间内的整数也均为非负整数。则判断条件方可以直接获取基准数据的二进制段;在后续的步骤S105中可以直接根据所述取值区间,获取判断对象的多组二进制段。在另一些情况下,判断条件中的基准数据为负整数,和/或,所述取值区间内的部分或全部整数为负整数。则判断条件方可以对所述基准数据进行处理,得到新的基准数据;可以获取新的基准数据的二进制段。当然为了保持最终的判断结果不变,判断条件方需要对所述取值区间进行同样的处理,得到新的取值区间;在后续的步骤S105中可以根据新的取值区间,获取判断对象的多组二进制段。其中,新的基准数据为非负整数,以及,新的取值区间内的整数也均为非负整数。例如,判断条件方可以将基准数据与一个正整数进行求和,得到新的基准数据;可以根据该正整数对所述取值区间进行处理,得到新的取值区间。
步骤S103:判断条件方根据基准数据的二进制段,将判断条件解析为多个分段判断条件。
在一些实施例中,判断条件方可以根据判断条件中基准数据的二进制段数量、以及判断条件中运算符的类型,将判断条件解析为多个分段判断条件。具体地,判断条件中基准数据的二进制段数量可以表示为d。若判断条件中的运算符为大于运算符、大于或等于运算符、小于运算符、小于或等于运算符中的一个,则可以将判断条件解析为2d-1个分段判断条件;若判断条件中的运算符为等于运算符,则可以将判断条件解析为d个分段判断条件。
每个分段判断条件可以包括基准数据的一个二进制段,该二进制段可以作为为该分段判断条件中的基准数据。不同的分段判断条件可以包括相同或不同的二进制段。每个分段判断条件可以包括大于运算符、大于或等于运算符、等于运算符、小于运算符、小于或等于运算符中的一个。不同的分段判断条件可以包括相同或不同的运算符。每个分段判断条件可以对应一个段位置,该段位置可以为该分段判断条件中的二进制段所对应的段位置。不同的分段判断结果可以对应相同或不同的段位置。
由此所述判断条件可以表示为所述多个分段判断条件的逻辑表达式。根据所述多个分段判断条件的分段判断结果便可以确定出判断条件的判断结果。
延续前面的例子,判断条件方可以将判断条件x≥26=011010B解析为x[2]>tx[2]=01、x[2]==tx[2]=01、x[1]>tx[1]=10、x[1]==tx[1]=10、x[0]≥tx[0]=10等5个分段判断条件。判断条件x≥26=011010B可以表示为逻辑表达式:
x[2]>tx[2]||((x[2]==tx[2])&&(x[1]>tx[1]))||((x[2]==tx[2])&&(x[1]==tx[1])&&(x[0]>=tx[0]))。
又例如,判断条件方可以持有判断条件y>38=100110B。判断条件方可以对基准数据100110B进行分段,得到ty[2]=10、ty[1]=01、以及ty[0]=10等3个二进制段。ty[2]=10对应的段位置为2,ty[1]=01对应的段位置为1,ty[0]=10对应的段位置为0。判断条件方可以将判断条件解析为y[2]>ty[2]=10、y[2]==ty[2]=10、y[1]>ty[1]=01、y[1]==ty[1]=01、y[0]>ty[0]=10等5个分段判断条件。判断条件y>38=100110B可以表示为逻辑表达式:y[2]>ty[2]||((y[2]==ty[2])&&(y[1]>ty[1]))||((y[2]==ty[2])&&(y[1]==ty[1])&&(y[0]>ty[0]))。
又例如,判断条件方可以持有判断条件z==2=10B。判断条件方可以对基准数据10B进行分段,得到tz[2]=0、tz[1]=1和tz[0]=0等3个二进制段。tz[2]=0对应的段位置为2,tz[1]=1对应的段位置为1,tz[0]=0对应的段位置为0。判断条件方可以将判断条件z==2=10B解析为z[2]==tz[2]=0、z[1]==tz[1]=1、z[0]==tz[0]=0等3个分段判断条件。判断条件z==2=10B可以表示为逻辑表达式:(z[2]==tz[2])&&(z[1]==tz[1])&&(z[0]==tz[0])。
值得说明的是,判断条件方可以获取一个判断条件中基准数据的二进制段;可以根据该判断条件中基准数据的二进制段,将该判断条件解析为多个分段判断条件。或者,判断条件方可以获取多个判断条件中基准数据的二进制段;可以根据每个判断条件中基准数据的二进制段,将该判断条件解析为多个分段判断条件。
步骤S105:判断条件方构建多个第一分段判断结果集合。
在一些实施例中,所述第一分段判断结果集合的数量可以等于分段判断条件的数量。每个第一分段判断结果集合可以采用数据表、线性表、队列、栈或图等方式来实现。每个第一分段判断结果集合可以对应一个段位置,且可以包括由分段判断条件所得到的多个分段判断结果。其中,该分段判断条件所对应的段位置可以与该第一分段判断结果集合所对应的段位置相同。值得说明的是,由于不同的分段判断结果可以对应相同或不同的段位置,因而不同的第一分段判断结果集合可以对应相同或不同的段位置。
在一些实施例中,以下分情况介绍第一分段判断结果集合的构建过程。
情况(一):根据一个判断条件和一个判断对象构建多个第一分段判断结果集合。
每个第一分段判断结果集合可以包括由一个分段判断条件所得到的多个分段判断结果。其中,该分段判断条件来自所述判断条件,具体可以由所述判断条件解析得到。每个分段判断结果可以对应所述判断对象的至少一个二进制段。所述分段判断结果可以包括以下至少一种:第一类分段判断结果、第二类分段判断结果。所述第一类分段判断结果用于表示分段判断条件不成立,所述第二类分段判断结果用于表示分段判断条件成立。所述第一类分段判断结果例如可以采用数值0来表示,所述第二类分段判断结果例如可以采用数值1来表示。
判断条件方可以知晓所述判断对象的取值区间;可以根据所述取值区间,获取所述判断对象的多组二进制段。每组二进制段可以对应一个段位置,且可以包括多个具有相同比特数的二进制段,所述多个二进制段覆盖了判断对象的所有可能取值在该段位置处的二进制段。值得说明的是,不同组中的二进制段可以具有相同或不同的比特数。判断对象的二进制段与判断条件中基准数据的、且对应了相同段位置的二进制段,具有相同的比特数。
例如,某一判断对象的取值区间为0~64。则该判断对象取值的比特数为6。判断条件方可以获取该判断对象的3组二进制段。其中,第0组二进制段对应的段位置为0,具体可以包括v[0]0=00、v[0]1=01、v[0]2=10、v[0]3=11等4个二进制段。第1组二进制段对应的段位置为1,具体可以包括v[1]0=00、v[1]1=01、v[1]2=10、v[1]3=11等4个二进制段。第2组二进制段对应的段位置为2,具体可以包括v[2]0=00、v[2]1=01、v[2]2=10、v[2]3=11等4个二进制段。
在实际应用中,对于判断条件中基准数据的每个二进制段,判断条件方可以选取对应有相同段位置的至少一个分段判断条件。进而,对于选取的每个分段判断条件,判断条件方可以将该二进制段与判断对象的对应了相同段位置的一组二进制段,按照该分段判断条件进行比较,得到多个分段判断结果;可以将所述多个分段判断结果作为第一分段判断结果集合中的分段判断结果。该第一分段判断结果集合所对应的段位置可以与该二进制段所对应的段位置相同。
情况(二):根据多个判断条件和一个判断对象构建多个第一分段判断结果集合。
每个第一分段判断结果集合可以包括多个子集合。每个子集合可以对应一个判断条件,且可以包括由一个分段判断条件所得到的多个分段判断结果。其中,该分段判断条件来自该判断条件,具体可以由该判断条件解析得到。每个分段判断结果可以对应所述判断对象的至少一个二进制段。所述分段判断结果可以包括以下至少一种:第一类分段判断结果、第二类分段判断结果。所述第一类分段判断结果用于表示分段判断条件不成立,所述第二类分段判断结果用于表示分段判断条件成立。所述第一类分段判断结果例如可以采用数值0来表示,所述第二类分段判断结果例如可以采用数值1来表示。
判断条件方可以获取所述判断对象的多组二进制段,具体过程不再赘述。
在实际应用中,对于每个判断条件中基准数据的每个二进制段,判断条件方可以选取对应有相同段位置的至少一个分段判断条件。进而,对于选取的每个分段判断条件,判断条件方可以将该二进制段与判断对象的对应了相同段位置的一组二进制段,按照该分段判断条件进行比较,得到多个分段判断结果;可以将所述多个分段判断结果作为一个子集合中的分段判断结果;可以将该判断条件作为该子集合所对应的判断条件。该子集合可以隶属于一个第一分段判断结果集合,该第一分段判断结果集合所对应的段位置可以与该二进制段所对应的段位置相同。
情况(三):根据多个判断条件和多个判断对象构建多个第一分段判断结果集合。
每个第一分段判断结果集合可以包括多个子集合。每个子集合可以对应一个判断条件,且可以包括由一个分段判断条件所得到的多个分段判断结果。其中,该分段判断条件来自该判断条件,具体可以由该判断条件解析得到。子集合中的多个分段判断结果对应了所述多个判断对象的二进制段,每个分段判断结果具体对应至少一个判断对象的至少一个二进制段。所述分段判断结果可以包括以下至少一种:第一类分段判断结果、第二类分段判断结果和预设值。所述第一类分段判断结果用于表示分段判断条件不成立,所述第二类分段判断结果用于表示分段判断条件成立。关于所述预设值在后续过程中会有详细介绍。所述第一类分段判断结果例如可以采用数值0来表示,所述第二类分段判断结果例如可以采用数值1来表示,所述预设值例如采用数值0来表示。
对于所述多个判断条件中的每个判断条件,所述多个判断对象可以包括与该判断条件相关联的目标判断对象、以及与该判断条件无关的其它判断对象。目标判断对象的取值参与该判断条件的运算,其它判断对象的取值不参与该判断条件的运算。另外,对于所述多个判断对象,判断条件方可以获取每个判断对象的多组二进制段。具体过程不再赘述。
在实际应用中,对于所述多个判断条件中的每个判断条件可以分别按照如下方式来处理。具体地,一方面,对于该判断条件中基准数据的每个二进制段,判断条件方可以选取对应有相同段位置的至少一个分段判断条件。进而,对于选取的每个分段判断条件,判断条件方可以将该二进制段与目标判断对象的对应了相同段位置的一组二进制段,按照该分段判断条件进行比较,得到多个分段判断结果;可以将所述多个分段判断结果作为一个子集合中的分段判断结果;可以将该判断条件作为该子集合所对应的判断条件。该子集合隶可以属于一个第一分段判断结果集合,该第一分段判断结果集合所对应的段位置可以与该二进制段所对应的段位置相同。另一方面,判断条件方可以将预设值作为在该子集合中其它判断对象的二进制段所对应的分段判断结果。所述预设值可以为0。当然所述预设值还可以为其它的数值。
例如,判断条件方可以持有判断条件x≥26=011010B。判断条件方可以对基准数据011010B进行分段,得到tx[2]=01、tx[1]=10、以及tx[0]=10等3个二进制段。tx[2]=01对应的段位置为2,tx[1]=10对应的段位置为1,tx[0]=10对应的段位置为0。如此判断条件方可以将判断条件x≥26=011010B解析为x[2]>tx[2]=01、x[2]==tx[2]=01、x[1]>tx[1]=10、x[1]==tx[1]=10、x[0]≥tx[0]=10等5个分段判断条件。
判断条件方还可以持有判断条件y>38=100110B。判断条件方可以对基准数据100110B进行分段,得到ty[2]=10、ty[1]=01、以及ty[0]=10等3个二进制段。ty[2]=10对应的段位置为2,ty[1]=01对应的段位置为1,ty[0]=10对应的段位置为0。判断条件方可以将判断条件解析为y[2]>ty[2]=10、y[2]==ty[2]=10、y[1]>ty[1]=01、y[1]==ty[1]=01、y[0]>ty[0]=10等5个分段判断条件。
判断对象o1的取值可以为6bit无符号整数。判断条件方可以获取判断对象o1的3组二进制段。其中,第0组二进制段对应的段位置为0,具体可以包括v[0]0=00、v[0]1=01、v[0]2=10、v[0]3=11等4个二进制段。第1组二进制段对应的段位置为1,具体可以包括v[1]0=00、v[1]1=01、v[1]2=10、v[1]3=11等4个二进制段。第2组二进制段对应的段位置为2,具体可以包括v[2]0=00、v[2]1=01、v[2]2=10、v[2]3=11等4个二进制段。
判断对象o2的取值可以为6bit无符号整数。判断条件方可以获取判断对象o2的3组二进制段。其中,第0组二进制段对应的段位置为0,具体可以包括m[0]0=00、m[0]1=01、m[0]2=10、m[0]3=11等4个二进制段。第1组二进制段对应的段位置为1,具体可以包括m[1]0=00、m[1]1=01、m[1]2=10、m[1]3=11等4个二进制段。第2组二进制段对应的段位置为2,具体可以包括m[2]0=00、m[2]1=01、m[2]2=10、m[2]3=11等4个二进制段。
对于判断条件x≥26=011010B,判断对象o1为与该判断条件相关联的目标判断对象,判断对象o2为与该判断条件无关的其它判断对象。对于判断条件y>38=100110B,判断对象o2为与该判断条件相关联的目标判断对象,判断对象o1为与该判断条件无关的其它判断对象。
判断条件方可以构建如下表1、表2、表3、表4和表5所示的5个第一分段判断结果集合。
表1
Figure BDA0002317977880000121
表1所示的第一分段判断结果集合对应的段位置为2,可以包括2个子集合。
表1的第三行可以构成一个子集合。该子集合与判断条件x≥26=011010B相对应,可以包括由分段判断条件x[2]>tx[2]=01所得到的分段判断结果0和1。值得说明的是,判断对象o1为与判断条件x≥26=011010B相关联的目标判断对象,判断对象o2为与判断条件x≥26=011010B无关的其它判断对象。因而在该子集合中v[2]0=00、v[2]1=01、v[2]2=10和v[2]3=11对应的分段判断结果均通过比较得到,m[2]0=00、m[2]1=01、m[2]2=10和m[2]3=11对应的分段判断结果均为预设值。
表1的第四行可以构成另一个子集合。该子集合与判断条件y>38=100110B相对应,可以包括由分段判断条件y[2]>ty[2]=10所得到的分段判断结果0和1。值得说明的是,判断对象o1为与判断条件y>38=100110B无关的其它判断对象,判断对象o2为与判断条件y>38=100110B相关联的目标判断对象。因而在该子集合中v[2]0=00、v[2]1=01、v[2]2=10和v[2]3=11对应的分段判断结果均为预设值,m[2]0=00、m[2]1=01、m[2]2=10和m[2]3=11对应的分段判断结果均通过比较得到。
表2
Figure BDA0002317977880000131
表2所示的第一分段判断结果集合对应的段位置为2,可以包括2个子集合。
表2的第三行可以构成一个子集合。该子集合与判断条件x≥26=011010B相对应,可以包括由分段判断条件x[2]==tx[2]=01所得到的分段判断结果0和1。值得说明的是,判断对象o1为与判断条件x≥26=011010B相关联的目标判断对象,判断对象o2为与判断条件x≥26=011010B无关的其它判断对象。因而在该子集合中v[2]0=00、v[2]1=01、v[2]2=10和v[2]3=11对应的分段判断结果均通过比较得到,m[2]0=00、m[2]1=01、m[2]2=10和m[2]3=11对应的分段判断结果均为预设值。
表2的第四行可以构成另一个子集合。该子集合与判断条件y>38=100110B相对应,可以包括由分段判断条件y[2]==ty[2]=10所得到的分段判断结果0和1。值得说明的是,判断对象o1为与判断条件y>38=100110B无关的其它判断对象,判断对象o2为与判断条件y>38=100110B相关联的目标判断对象。因而在该子集合中v[2]0=00、v[2]1=01、v[2]2=10和v[2]3=11对应的分段判断结果均为预设值,m[2]0=00、m[2]1=01、m[2]2=10和m[2]3=11对应的分段判断结果均通过比较得到。
表3
Figure BDA0002317977880000132
Figure BDA0002317977880000141
表3所示的第一分段判断结果集合对应的段位置为1,可以包括2个子集合。
表3的第三行可以构成一个子集合。该子集合与判断条件x≥26=011010B相对应,可以包括由分段判断条件x[1]>tx[1]=10所得到的分段判断结果0和1。值得说明的是,判断对象o1为与判断条件x≥26=011010B相关联的目标判断对象,判断对象o2为与判断条件x≥26=011010B无关的其它判断对象。因而在该子集合中v[1]0=00、v[1]1=01、v[1]2=10和v[1]3=11对应的分段判断结果均通过比较得到,m[1]0=00、m[1]1=01、m[1]2=10和m[1]3=11对应的分段判断结果均为预设值。
表3的第四行可以构成另一个子集合。该子集合与判断条件y>38=100110B相对应,可以包括由分段判断条件y[1]>ty[1]=01所得到的分段判断结果0和1。值得说明的是,判断对象o1为与判断条件y>38=100110B无关的其它判断对象,判断对象o2为与判断条件y>38=100110B相关联的目标判断对象。因而在该子集合中v[1]0=00、v[1]1=01、v[1]2=10和v[1]3=11对应的分段判断结果均为预设值,m[1]0=00、m[1]1=01、m[1]2=10和m[1]3=11对应的分段判断结果均通过比较得到。
表4
Figure BDA0002317977880000142
表4所示的第一分段判断结果集合对应的段位置为1,可以包括2个子集合。
表4的第三行可以构成一个子集合。该子集合与判断条件x≥26=011010B相对应,可以包括由分段判断条件x[1]=tx[1]=10所得到的分段判断结果0和1。值得说明的是,判断对象o1为与判断条件x≥26=011010B相关联的目标判断对象,判断对象o2为与判断条件x≥26=011010B无关的其它判断对象。因而在该子集合中v[1]0=00、v[1]1=01、v[1]2=10和v[1]3=11对应的分段判断结果均通过比较得到,m[1]0=00、m[1]1=01、m[1]2=10和m[1]3=11对应的分段判断结果均为预设值。
表4的第四行可以构成另一个子集合。该子集合与判断条件y>38=100110B相对应,可以包括由分段判断条件y[1]==ty[1]=01所得到的分段判断结果0和1。值得说明的是,判断对象o1为与判断条件y>38=100110B无关的其它判断对象,判断对象o2为与判断条件y>38=100110B相关联的目标判断对象。因而在该子集合中v[1]0=00、v[1]1=01、v[1]2=10和v[1]3=11对应的分段判断结果均为预设值,m[1]0=00、m[1]1=01、m[1]2=10和m[1]3=11对应的分段判断结果均通过比较得到。
表5
Figure BDA0002317977880000151
表5所示的第一分段判断结果集合对应的段位置为0,可以包括2个子集合。
表5的第三行可以构成一个子集合。该子集合与判断条件x≥26=011010B相对应,可以包括由分段判断条件x[0]≥tx[0]=10所得到的分段判断结果0和1。值得说明的是,判断对象o1为与判断条件x≥26=011010B相关联的目标判断对象,判断对象o2为与判断条件x≥26=011010B无关的其它判断对象。因而在该子集合中v[0]0=00、v[0]1=01、v[0]2=10和v[0]3=11对应的分段判断结果均通过比较得到,m[0]0=00、m[0]1=01、m[0]2=10和m[0]3=11对应的分段判断结果均为预设值。
表5的第四行可以构成另一个子集合。该子集合与判断条件y>38=100110B相对应,可以包括由分段判断条件y[0]>ty[0]=10所得到的分段判断结果0和1。值得说明的是,判断对象o1为与判断条件y>38=100110B无关的其它判断对象,判断对象o2为与判断条件y>38=100110B相关联的目标判断对象。因而在该子集合中v[0]0=00、v[0]1=01、v[0]2=10和v[0]3=11对应的分段判断结果均为预设值,m[0]0=00、m[0]1=01、m[0]2=10和m[0]3=11对应的分段判断结果均通过比较得到。
又例如,判断条件方可以持有判断条件z==2=10B。判断条件方可以对基准数据10B进行分段,得到tz[2]=0、tz[1]=1和tz[0]=0等3个二进制段。tz[2]=0对应的段位置为2,tz[1]=1对应的段位置为1,tz[0]=0对应的段位置为0。判断条件方可以将判断条件z==2=10B解析为z[2]==tz[2]=0、z[1]==tz[1]=1、z[0]==tz[0]=0等3个分段判断条件。
判断对象o1的取值可以为6bit无符号整数。判断条件方可以获取判断对象o1的3组二进制段。其中,第0组二进制段对应的段位置为0,具体可以包括v[0]0=00、v[0]1=01、v[0]2=10、v[0]3=11等4个二进制段。第1组二进制段对应的段位置为1,具体可以包括v[1]0=00、v[1]1=01、v[1]2=10、v[1]3=11等4个二进制段。第2组二进制段对应的段位置为2,具体可以包括v[2]0=00、v[2]1=01、v[2]2=10、v[2]3=11等4个二进制段。
判断条件方可以构建如下表6、表7和表8所示的3个第一分段判断结果集合。
表6
Figure BDA0002317977880000161
表6所示的第一分段判断结果集合对应的段位置为2,可以包括由分段判断条件z[2]==tz[2]=0所得到的分段判断结果0和1。
表7
Figure BDA0002317977880000162
表7所示的第一分段判断结果集合对应的段位置为1,可以包括由分段判断条件z[1]==tz[1]=1所得到的分段判断结果0和1。
表8
Figure BDA0002317977880000163
表8所示的第一分段判断结果集合对应的段位置为0,可以包括由分段判断条件z[0]==tz[0]=0所得到的分段判断结果0和1。
步骤S107:判断条件方对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合。
在一些实施例中,经过步骤S105,判断条件方可以得到多个第一分段判断结果集合。每个第一分段判断结果集合可以对应有权重。第一分段判断结果集合的权重可以满足公式2i-1。i表示第一分段判断结果集合的位次。当然以上的公式仅为一种示例。在实际中第一分段判断结果集合的权重还可以满足其它的公式。
在实际应用中,判断条件方可以对所述多个第一分段判断结果集合进行排序,从而得到每个第一分段判断结果集合在排序后的多个第一分段判断结果集合中所在的位次。判断条件方可以按照任意方式对所述多个第一分段判断结果集合进行排序。例如,每个第一分段判断结果集合可以对应有段位置,段位置用于表示二进制段在二进制数中的位置。那么,判断条件方可以根据段位置对所述多个第一分段判断结果集合进行排序。具体地,例如,按照段位置所表示的位置由高到低的顺序,对所述多个第一分段判断结果集合进行排序;或者,按照段位置所表示的位置由低到高的顺序,对所述多个第一分段判断结果集合进行排序。当然,判断条件方还可以直接为每个第一分段判断结果集合直接生成位次。
以表1、表2、表3、表4和表5为例。排序后的表1、表2、表3、表4和表5所在位次分别为5、4、3、2、1。那么,表1对应的权重可以为25-1=16,表2对应的权重可以为24-1=8,表3对应的权重可以为23-1=4,表4对应的权重可以为22-1=2,表5对应的权重可以为21-1=0。
在一些实施例中,对于每个第一分段判断结果集合,判断条件方可以将该第一分段判断结果集合的权重与该第一分段判断结果集合中的分段判断结果相乘,得到一个第二分段判断结果集合;可以将该第一分段判断结果集合所对应的段位置作为该第二分段判断结果集合所对应的段位置。值得说明的是,由于不同的第一分段判断结果集合可以对应相同或不同的段位置,因而不同的第二分段判断结果集合可以对应相同或不同的段位置。
例如,判断条件方可以将表1所示第一分段判断结果集合的权重25-1=16与该第一分段判断结果集合中的分段判断结果相乘,得到表9所示的第二分段判断结果集合。
表9
Figure BDA0002317977880000171
判断条件方可以将表2所示第一分段判断结果集合的权重24-1=8与该第一分段判断结果集合中的分段判断结果相乘,得到表10所示的第二分段判断结果集合。
表10
Figure BDA0002317977880000172
Figure BDA0002317977880000181
判断条件方可以将表3所示第一分段判断结果集合的权重23-1=4与该第一分段判断结果集合中的分段判断结果相乘,得到表11所示的第二分段判断结果集合。
表11
Figure BDA0002317977880000182
判断条件方可以将表4所示第一分段判断结果集合的权重22-1=2与该第一分段判断结果集合中的分段判断结果相乘,得到表12所示的第二分段判断结果集合。
表12
Figure BDA0002317977880000183
判断条件方可以将表5所示第一分段判断结果集合的权重21-1=1与该第一分段判断结果集合中的分段判断结果相乘,得到表13所示的第二分段判断结果集合。
表13
Figure BDA0002317977880000184
步骤S109:判断条件方对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合。
在一些实施例中,经过步骤S107,判断条件方可以得到多个第二分段判断结果集合。
判断条件方可以采用加密算法对所述多个第二分段判断结果集合中的分段判断结果进行同态加密。所述加密算法可以包括确定性的加密算法和不确定性的加密算法。确定性的加密算法是指:采用加密算法对同一明文数据进行多次加密,得到的多个加密结果相同。不确定性的加密算法是指:采用加密算法对同一明文数据进行多次加密,得到的多个加密结果可以不同。所述加密算法可以包括对称加密算法和非对称加密算法。所述对称加密算法包括但不限于DES算法、AES算法和IDEA算法等,所述非对称加密算法包括但不限于RSA算法和ECC(Elliptic Curve Cryptography,椭圆曲线加密算法)等。所述加密算法可以包括同态加密算法。所述同态加密算法可以包括Paillier算法、Okamoto-Uchiyama算法、Damgard-Jurik算法等。同态加密(Homomorphic Encryption)是一种加密技术。它允许直接对密文数据进行运算得到仍是加密的结果,将其解密所得到的结果与对明文数据进行同样运算的结果相同。所述同态加密算法可以包括加法同态加密算法和乘法同态加密算法等。
在一些实施例中,每个密文集合可以采用数据表、线性表、队列、栈或图等方式来实现。每个密文集合可以对应一个段位置,且可以包括多个分段判断结果密文。每个分段判断结果密文可以对应至少一个判断对象的至少一个二进制段。在实际应用中,判断条件方可以对第二分段判断结果集合中的每个分段判断结果加密一次,得到一个分段判断结果密文作为密文集合中的分段判断结果密文;可以将该分段判断结果所对应的二进制段作为该分段判断结果密文所对应的二进制段;可以将该第二分段判断结果集合所对应的段位置作为该密文集合所对应的段位置。或者,判断条件方还可以对第二分段判断结果集合中的每个分段判断结果加密至少一次,得到至少一个分段判断结果密文作为密文集合中的分段判断结果密文;可以将该第二分段判断结果集合所对应的段位置作为该密文集合所对应的段位置。至于加密的次数可以等于该分段判断结果所对应的二进制段数量,以使得加密后的每个分段判断结果密文能够唯一对应一个二进制段。值得说明的是,判断条件方可以优先采用不确定性的加密算法对分段判断结果加密至少一次,以使得对于同一分段判断结果进行加密可以得到多个不同的分段判断结果密文,从而能够避免数据方根据分段判断结果密文是否相同来猜测基准数据的二进制段,进而来猜测基准数据。
在一些实施例中,所述第二分段判断结果集合可以直接包括多个分段判断结果。这样所述密文集合可以直接包括多个分段判断结果密文。或者,所述第二分段判断结果集合可以包括多个子集合,每个子集合可以包括多个分段判断结果。这样所述密文集合可以包括多个子密文集合,每个子密文集合可以包括多个分段判断结果密文。值得说明的是,由于不同的第二分段判断结果集合可以对应相同或不同的段位置,因而不同的密文集合可以对应相同或不同的段位置。
例如,判断条件方通过对表9、表10、表11、表12和表13所示第二分段判断结果集合中的分段判断结果进行加密,可以得到如下表14、表15、表16、表17和表18所示的密文集合。
表14
Figure BDA0002317977880000201
表14所示的密文集合对应的段位置为2,可以包括2个子密文集合。
表14的第三行可以构成一个子密文集合。该子密文集合可以包括分段判断结果密文Ex_o10(0)、Ex_o11(0)、Ex_o12(16)、Ex_o13(16)、Ex_o20(0)、Ex_o21(0)、Ex_o22(0)、Ex_o23(0)。分段判断结果密文Ex_o10(0)与二进制段v[2]0=00相对应,分段判断结果密文Ex_o11(0)与二进制段v[2]1=01相对应,分段判断结果密文Ex_o12(16)与二进制段v[2]2=10相对应,分段判断结果密文Ex_o13(16)与二进制段v[2]3=11相对应,分段判断结果密文Ex_o20(0)与二进制段m[2]0=00相对应,分段判断结果密文Ex_o21(0)与二进制段m[2]1=01相对应,分段判断结果密文Ex_o22(0)与二进制段m[2]2=10相对应,分段判断结果密文Ex_o23(0)与二进制段m[2]3=11相对应。
表14的第四行可以构成另一个子密文集合。该子密文集合可以包括分段判断结果密文Ez_o10(0)、Ez_o11(0)、Ez_o12(0)、Ez_o13(0)、Ez_o20(0)、Ez_o21(0)、Ez_o22(0)、Ez_o23(16)。分段判断结果密文Ez_o10(0)与二进制段v[2]0=00相对应,分段判断结果密文Ez_o11(0)与二进制段v[2]1=01相对应,分段判断结果密文Ez_o12(0)与二进制段v[2]2=10相对应,分段判断结果密文Ez_o13(0)与二进制段v[2]3=11相对应,分段判断结果密文Ez_o20(0)与二进制段m[2]0=00相对应,分段判断结果密文Ez_o21(0)与二进制段m[2]1=01相对应,分段判断结果密文Ez_o22(0)与二进制段m[2]2=10相对应,分段判断结果密文Ez_o23(16)与二进制段m[2]3=11相对应。
表15
Figure BDA0002317977880000202
表15所示的密文集合对应的段位置为2,可以包括2个子密文集合。
表15的第三行可以构成一个子密文集合。该子密文集合可以包括分段判断结果密文Ex_o10(0)、Ex_o11(8)、Ex_o12(0)、Ex_o13(0)、Ex_o20(0)、Ex_o21(0)、Ex_o22(0)、Ex_o23(0)。分段判断结果密文Ex_o10(0)与二进制段v[2]0=00相对应,分段判断结果密文Ex_o11(8)与二进制段v[2]1=01相对应,分段判断结果密文Ex_o12(0)与二进制段v[2]2=10相对应,分段判断结果密文Ex_o13(0)与二进制段v[2]3=11相对应,分段判断结果密文Ex_o20(0)与二进制段m[2]0=00相对应,分段判断结果密文Ex_o21(0)与二进制段m[2]1=01相对应,分段判断结果密文Ex_o22(0)与二进制段m[2]2=10相对应,分段判断结果密文Ex_o23(0)与二进制段m[2]3=11相对应。
表15的第四行可以构成另一个子密文集合。该子密文集合可以包括分段判断结果密文Ez_o10(0)、Ez_o11(0)、Ez_o12(0)、Ez_o13(0)、Ez_o20(0)、Ez_o21(0)、Ez_o22(8)、Ez_o23(0)。分段判断结果密文Ez_o10(0)与二进制段v[2]0=00相对应,分段判断结果密文Ez_o11(0)与二进制段v[2]1=01相对应,分段判断结果密文Ez_o12(0)与二进制段v[2]2=10相对应,分段判断结果密文Ez_o13(0)与二进制段v[2]3=11相对应,分段判断结果密文Ez_o20(0)与二进制段m[2]0=00相对应,分段判断结果密文Ez_o21(0)与二进制段m[2]1=01相对应,分段判断结果密文Ez_o22(8)与二进制段m[2]2=10相对应,分段判断结果密文Ez_o23(0)与二进制段m[2]3=11相对应。
表16
Figure BDA0002317977880000211
表16所示的密文集合对应的段位置为1,可以包括2个子密文集合。
表16的第三行可以构成一个子密文集合。该子密文集合可以包括分段判断结果密文Ex_o10(0)、Ex_o11(0)、Ex_o12(0)、Ex_o13(4)、Ex_o20(0)、Ex_o21(0)、Ex_o22(0)、Ex_o23(0)。分段判断结果密文Ex_o10(0)与二进制段v[1]0=00相对应,分段判断结果密文Ex_o11(0)与二进制段v[1]1=01相对应,分段判断结果密文Ex_o12(0)与二进制段v[1]2=10相对应,分段判断结果密文Ex_o13(4)与二进制段v[1]3=11相对应,分段判断结果密文Ex_o20(0)与二进制段m[1]0=00相对应,分段判断结果密文Ex_o21(0)与二进制段m[1]1=01相对应,分段判断结果密文Ex_o22(0)与二进制段m[1]2=10相对应,分段判断结果密文Ex_o23(0)与二进制段m[1]3=11相对应。
表16的第四行可以构成另一个子密文集合。该子密文集合可以包括分段判断结果密文Ez_o10(0)、Ez_o11(0)、Ez_o12(0)、Ez_o13(0)、Ez_o20(0)、Ez_o21(0)、Ez_o22(4)、Ez_o23(4)。分段判断结果密文Ez_o10(0)与二进制段v[1]0=00相对应,分段判断结果密文Ez_o11(0)与二进制段v[1]1=01相对应,分段判断结果密文Ez_o12(0)与二进制段v[1]2=10相对应,分段判断结果密文Ez_o13(0)与二进制段v[1]3=11相对应,分段判断结果密文Ez_o20(0)与二进制段m[1]0=00相对应,分段判断结果密文Ez_o21(0)与二进制段m[1]1=01相对应,分段判断结果密文Ez_o22(4)与二进制段m[1]2=10相对应,分段判断结果密文Ez_o23(4)与二进制段m[1]3=11相对应。
表17
Figure BDA0002317977880000221
表17所示的密文集合对应的段位置为1,可以包括2个子密文集合。
表17的第三行可以构成一个子密文集合。该子密文集合可以包括分段判断结果密文Ex_o10(0)、Ex_o11(0)、Ex_o12(2)、Ex_o13(0)、Ex_o20(0)、Ex_o21(0)、Ex_o22(0)、Ex_o23(0)。分段判断结果密文Ex_o10(0)与二进制段v[1]0=00相对应,分段判断结果密文Ex_o11(0)与二进制段v[1]1=01相对应,分段判断结果密文Ex_o12(2)与二进制段v[1]2=10相对应,分段判断结果密文Ex_o13(0)与二进制段v[1]3=11相对应,分段判断结果密文Ex_o20(0)与二进制段m[1]0=00相对应,分段判断结果密文Ex_o21(0)与二进制段m[1]1=01相对应,分段判断结果密文Ex_o22(0)与二进制段m[1]2=10相对应,分段判断结果密文Ex_o23(0)与二进制段m[1]3=11相对应。
表17的第四行可以构成另一个子密文集合。该子密文集合可以包括分段判断结果密文Ez_o10(0)、Ez_o11(0)、Ez_o12(0)、Ez_o13(0)、Ez_o20(0)、Ez_o21(2)、Ez_o22(0)、Ez_o23(0)。分段判断结果密文Ez_o10(0)与二进制段v[1]0=00相对应,分段判断结果密文Ez_o11(0)与二进制段v[1]1=01相对应,分段判断结果密文Ez_o12(0)与二进制段v[1]2=10相对应,分段判断结果密文Ez_o13(0)与二进制段v[1]3=11相对应,分段判断结果密文Ez_o20(0)与二进制段m[1]0=00相对应,分段判断结果密文Ez_o21(2)与二进制段m[1]1=01相对应,分段判断结果密文Ez_o22(0)与二进制段m[1]2=10相对应,分段判断结果密文Ez_o23(0)与二进制段m[1]3=11相对应。
表18
Figure BDA0002317977880000222
表18所示的密文集合对应的段位置为0,可以包括2个子密文集合。
表18的第三行可以构成一个子密文集合。该子密文集合可以包括分段判断结果密文Ex_o10(0)、Ex_o11(0)、Ex_o12(1)、Ex_o13(1)、Ex_o20(0)、Ex_o21(0)、Ex_o22(0)、Ex_o23(0)。分段判断结果密文Ex_o10(0)与二进制段v[0]0=00相对应,分段判断结果密文Ex_o11(0)与二进制段v[0]1=01相对应,分段判断结果密文Ex_o12(1)与二进制段v[0]2=10相对应,分段判断结果密文Ex_o13(1)与二进制段v[0]3=11相对应,分段判断结果密文Ex_o20(0)与二进制段m[0]0=00相对应,分段判断结果密文Ex_o21(0)与二进制段m[0]1=01相对应,分段判断结果密文Ex_o22(0)与二进制段m[0]2=10相对应,分段判断结果密文Ex_o23(0)与二进制段m[0]3=11相对应。
表18的第四行可以构成另一个子密文集合。该子密文集合可以包括分段判断结果密文Ez_o10(0)、Ez_o11(0)、Ez_o12(0)、Ez_o13(0)、Ez_o20(0)、Ez_o21(0)、Ez_o22(0)、Ez_o23(1)。分段判断结果密文Ez_o10(0)与二进制段v[0]0=00相对应,分段判断结果密文Ez_o11(0)与二进制段v[0]1=01相对应,分段判断结果密文Ez_o12(0)与二进制段v[0]2=10相对应,分段判断结果密文Ez_o13(0)与二进制段v[0]3=11相对应,分段判断结果密文Ez_o20(0)与二进制段m[0]0=00相对应,分段判断结果密文Ez_o21(0)与二进制段m[0]1=01相对应,分段判断结果密文Ez_o22(0)与二进制段m[0]2=10相对应,分段判断结果密文Ez_o23(1)与二进制段m[0]3=11相对应。
步骤S111:判断条件方向数据方发送多个密文集合。
步骤S113:数据方接收所述多个密文集合。
步骤S115:数据方获取判断对象特定取值的多个二进制段。
在一些实施例中,数据方可以持有判断对象的特定取值。数据方可以对所述特定取值进行分段,得到多个二进制段。在实际应用中,数据方可以对二进制形式的特定取值进行分段,得到多个二进制段。所述多个二进制段的比特数可以相同或不同。每个二进制段可以对应一个段位置,该段位置用于表示二进制段在二进制形式的特定取值中所处的位置。例如,数据方可以将二进制段中的任一二进制位在二进制形式的特定取值中的位置作为该二进制段的段位置。又例如,数据方还可以直接为二进制段生成一个段位置。
数据方可以获取一个判断对象特定取值的二进制段。或者,数据方还可以获取多个判断对象特定取值的二进制段。
在一些实施例中,数据方和判断条件方可以进行如下约定:若在步骤S101中,判断条件方直接获取所述基准数据的二进制段;则在步骤S115中,数据方可以直接获取判断对象特定取值的二进制段;若在步骤S101中,判断条件方对所述基准数据进行了处理,进而获取处理后的所述基准数据的二进制段;则在步骤S115中,数据方可以以同样的方式对判断对象的特定取值进行处理,进而获取处理后的特定取值的二进制段。
步骤S117:数据方根据特定取值的每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同。
在一些实施例中,不同的密文集合可以对应相同或不同的段位置。因而根据特定取值的每个二进制段,数据方可以选取得到一个或多个密文集合。选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同。
数据方可以在多个密文集合中进行查询,得到多个查询结果。
在本实施例的一些实施方式中,所述多个密文集合中的密文集合可以直接包括多个分段判断结果密文。数据方可以从选取的密文集合中查询得到一个分段判断结果密文,可以将该分段判断结果密文作为查询结果。这样所述多个查询结果可以包括多个分段判断结果密文。
在本实施例的另一些实施方式中,所述多个密文集合中的密文集合可以包括多个子密文集合。每个子密文集合可以包括多个分段判断结果密文。对于选取的密文集合,数据方可以从该密文集合的多个子密文集合中分别查询分段判断结果密文。
在步骤S115中,数据方可以获得一个判断对象特定取值的多个二进制段。如此对于选取的密文集合,数据方可以从该密文集合的每个子密文集合中查询得到一个分段判断结果密文;可以将查询得到的多个分段判断结果密文作为密文序列中的分段判断结果密文。这样所述多个查询结果可以包括多个密文序列。每个密文序列包括多个分段判断结果密文,所述多个分段判断结果密文在密文序列中的顺序可以与多个子密文集合在密文集合中的顺序相同。
或者,在步骤S115中,数据方可以获得多个判断对象特定取值的多个二进制段。如此对于对应了相同段位置的一组二进制段,数据方可以选取至少一个密文集合,其中,选取的密文集合所对应的段位置与该组二进制段的段位置相同;对于选取的密文集合,数据方可以从该密文集合的每个子密文集合中查询得到多个分段判断结果密文;可以对从每个子密文集合所查询得到的多个分段判断结果密文进行同态求和处理,得到求和结果;可以将多个子密文集合所对应的多个求和结果作为密文序列中的求和结果。这样所述多个查询结果可以包括多个密文序列。每个密文序列包括多个求和结果,所述多个求和结果在密文序列中的顺序可以与多个子密文集合在密文集合中的顺序相同。值得说明的是,由于求和结果是由多个分段判断结果密文相加得到的,且分段判断结果密文是由同态加密算法计算得到的,因而求和结果也可以为一种密文。
在一些实施例中,对于特定取值多个二进制段的查询操作可以串行执行。或者,为了加快查询速度,对于特定取值多个二进制段的查询操作也可以并行执行。
例如,数据方可以持有判断对象o1的特定取值48=110000B、以及判断对象o2的特定取值30=011110B。数据方可以对特定取值110000B进行分段,得到x[2]=11、x[1]=00、以及x[0]=00等3个二进制段。x[2]=11对应的段位置为2,x[1]=00对应的段位置为1,x[0]=00对应的段位置为0。数据方可以对特定取值011110B进行分段,得到y[2]=01、y[1]=11、以及y[0]=10等3个二进制段。y[2]=01对应的段位置为2,y[1]=11对应的段位置为1,y[0]=10对应的段位置为0。
数据方可以根据二进制段x[2]=11和y[2]=01,选取表14和表15所示的密文集合。对于表14所示的密文集合,数据方可以根据二进制段x[2]=11和y[2]=01,从表14第三行所对应的子密文集合中查询得到分段判断结果密文Ex_o13(16)和Ex_o21(0),可以对分段判断结果密文Ex_o13(16)和Ex_o21(0)进行同态求和处理,得到求和结果Ex_o13(16)+Ex_o21(0)=E(16+0)=E(16);可以根据二进制段x[2]=11和y[2]=01,从表14第四行所对应的子密文集合中查询得到分段判断结果密文Ez_o13(0)和Ez_o21(0),可以对分段判断结果密文Ez_o13(0)和Ez_o21(0)进行同态求和处理,得到求和结果Ez_o13(0)+Ez_o21(0)=E(0+0)=E(0)。这样数据方可以得到密文序列{E(16)、E(0)}。对于表15所示的密文集合,数据方可以根据二进制段x[2]=11和y[2]=01,从表15第三行所对应的子密文集合中查询得到分段判断结果密文Ex_o13(0)和Ex_o21(0),可以对分段判断结果密文Ex_o13(0)和Ex_o21(0)进行同态求和处理,得到求和结果Ex_o13(0)+Ex_o21(0)=E(0+0)=E(0);可以根据二进制段x[2]=11和y[2]=01,从表15第四行所对应的子密文集合中查询得到分段判断结果密文Ez_o13(0)和Ez_o21(0),可以对分段判断结果密文Ez_o13(0)和Ez_o21(0)进行同态求和处理,得到求和结果Ez_o13(0)+Ez_o21(0)=E(0+0)=E(0)。这样数据方可以得到密文序列{E(0)、E(0)}。
数据方可以根据二进制段x[1]=00和y[1]=11,选取表16和表17所示的密文集合。对于表16所示的密文集合,数据方可以根据二进制段x[1]=00和y[1]=11,从表16第三行所对应的子密文集合中查询得到分段判断结果密文Ex_o10(0)和Ex_o23(0),可以对分段判断结果密文Ex_o10(0)和Ex_o23(0)进行同态求和处理,得到求和结果Ex_o10(0)+Ex_o23(0)=E(0+0)=E(0);可以根据二进制段x[1]=00和y[1]=11,从表16第四行所对应的子密文集合中查询得到分段判断结果密文Ez_o10(0)和Ez_o23(4),可以对分段判断结果密文Ez_o10(0)和Ez_o23(4)进行同态求和处理,得到求和结果Ez_o10(0)+Ez_o23(4)=E(0+4)=E(4)。这样数据方可以得到密文序列{E(0)、E(4)}。对于表17所示的密文集合,数据方可以根据二进制段x[1]=00和y[1]=11,从表17第三行所对应的子密文集合中查询得到分段判断结果密文Ex_o10(0)和Ex_o23(0),可以对分段判断结果密文Ex_o10(0)和Ex_o23(0)进行同态求和处理,得到求和结果Ex_o10(0)+Ex_o23(0)=E(0+0)=E(0);可以根据二进制段x[2]=11和y[2]=01,从表17第四行所对应的子密文集合中查询得到分段判断结果密文Ez_o10(0)和Ez_o23(0),可以对分段判断结果密文Ez_o10(0)和Ez_o23(0)进行同态求和处理,得到求和结果Ez_o10(0)+Ez_o23(0)=E(0+0)=E(0)。这样数据方可以得到密文序列{E(0)、E(0)}。
数据方可以根据二进制段x[0]=00和y[0]=10,选取表18所示的密文集合。对于表18所示的密文集合,数据方可以根据二进制段x[0]=00和y[0]=10,从表18第三行所对应的子密文集合中查询得到分段判断结果密文Ex_o10(0)和Ex_o22(0),可以对分段判断结果密文Ex_o10(0)和Ex_o22(0)进行同态求和处理,得到求和结果Ex_o10(0)+Ex_o22(0)=E(0+0)=E(0);可以根据二进制段x[0]=00和y[0]=10,从表18第四行所对应的子密文集合中查询得到分段判断结果密文Ez_o10(0)和Ez_o22(0),可以对分段判断结果密文Ez_o10(0)和Ez_o22(0)进行同态求和处理,得到求和结果Ez_o10(0)+Ez_o22(0)=E(0+0)=E(0)。这样数据方可以得到密文序列{E(0)、E(0)}。
步骤S119:数据方对多个查询结果进行打包,得到打包数据密文。
在一些实施例中,通过打包可以减少数据方向判断条件方发送的数据量,从而减小网络带宽的占用。具体地,数据方可以将多个查询结果同态相加,得到打包数据密文。
在实际应用中,所述多个查询结果可以包括多个分段判断结果密文。数据方可以将多个分段判断结果密文同态相加,得到打包数据密文。这样所述打包数据密文可以为一个密文数据(为了便于描述,以下称为第一数据)。或者,所述多个查询结果可以包括多个密文序列。数据方可以将多个密文序列同态相加,得到打包数据密文。这样所述打包数据密文可以为一个密文序列(为了便于描述,以下称为第一数据序列)。将多个密文序列同态相加,具体可以为将多个密文序列中处于相同位置处的数据元素同态相加。
步骤S121:数据方向判断条件方发送打包数据密文。
步骤S123:判断条件方接收所述打包数据密文。
在一些实施例中,所述打包数据密文可以为第一数据。判断条件方可以对第一数据进行解密,得到打包数据。这样所述打包数据可以为一个明文数据(为了便于描述,以下称为第二数据)。所述第二数据对应了一个判断条件。
或者,所述打包数据密文可以为第一数据序列。判断条件方可以对第一数据序列中的数据元素进行解密,得到打包数据。这样所述打包数据可以为一个明文序列(为了便于描述,以下称为第二数据序列)。所述第二特定序列中的多个数据元素对应了多个判断条件。
在一些实施例中,判断条件方还可以对所述打包数据进行解码,得到多个分段判断结果;可以根据所述多个分段判断结果中的部分或全部确定所需的判断结果。
所述打包数据可以为第二数据。判断条件方可以对第二数据进行解码,得到多个分段判断结果;可以根据所述多个分段判断结果中的部分或全部确定一个判断条件所对应的最终判断结果。具体地,段位置的权重可以满足公式2i-1。判断条件方可以根据段位置的权重2i-1对第二数据进行解码。例如,判断条件方可以采用短除法对明文数据进行解码。具体地,例如,某一明文数据可以为A×23+B×22+C×2+D。判断条件方可以将该明文数据A×23+B×22+C×2+D除以2并取余数,得到4个分段判断结果A、B、C和D。
或者,所述打包数据可以为第二数据序列。对于第二特定序列中的每个数据元素,判断条件方可以对该数据元素进行解码,得到多个分段判断结果;可以根据所述多个分段判断结果中的部分或全部确定一个判断条件所对应的最终判断结果。
值得说明的是,判断条件方还可以采用其它方式获得分段判断结果。例如,判断条件方可以先对第一数据进行解码,得到多个分段判断结果密文;然后对多个分段判断结果密文进行解密,得到多个分段判断结果。或者,判断条件方还可以先对第一数据序列进行解码,得到多个密文序列;然后对多个密文序列中的数据元素进行解密,得到多个分段判断结果。
本实施例的查询方法,判断条件方可以将判断条件解析为多个分段判断条件;可以构建多个第一分段判断结果集合;可以对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合;可以对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合;可以向数据方发送多个密文集合。数据方可以接收所述多个密文集合;可以对判断对象的特定取值进行分段;可以根据特定取值的二进制段在所述多个密文集合中进行查询。这样一方面,可以在判断条件方不泄漏自身的判断条件、且数据方不泄漏自身的特定取值的前提下,由二者合作确定出判断条件的与判断对象的特定取值相对应的判断结果,从而实现了隐私保护。另一方面,第二分段判断结果集合的数据量比较小,判断条件方加密时花费的计算资源也较小;密文集合的数据量也比较小,也有利于数据方的查询。
下面结合一个具体地场景实例对上述实施例的实现方案进行说明。
在本场景示例中,所述判断条件方可以为金融机构,例如可以为银行、第三方支付机构等等。所述金融机构可以持有数据处理模型,所述数据处理模型可以包括决策树模型、评分卡模型等,所述数据处理模型可以包括至少一个判断条件。
图2示出了一种决策树模型,所述决策树模型可以包括节点1、2、3、4、5、6、7等7个节点。节点1、3、4为分裂节点(能够向下分裂的节点),节点2、5、6、7为叶子节点(不能够向下分裂的节点)。
分裂节点1、3、4对应的判断条件可以如下表19所示。
表19
Figure BDA0002317977880000271
Figure BDA0002317977880000281
u为判断对象o3的取值,判断对象o3用于表示用户的房产状况,u可以为数值0或1,数值0表示不拥有房产,数值1表示不拥有房产。v为判断对象o4的取值,判断对象o4用于表示用户的婚姻状况,v可以为数值0或1,数值0表示已婚,数值1表示未婚。w为判断对象o5的取值,判断对象o5用于表示用户的收入状况,w可以为用户的年收入值。
叶子节点2、5、6、7对应的预测结果可以如下表20所示。
表20
叶子节点 预测结果
节点2 可以偿还借款
节点5 可以偿还借款
节点6 可以偿还借款
节点7 不可以偿还借款
在本场景示例中,所述数据方可以为大数据公司。所述大数据公司可以持有用户的房产状况、婚姻状况和收入状况等隐私数据。
在本场景示例中,所述金融机构和所述大数据公司可以进行合作计算,得到所述数据处理模型的预测结果,以便于所述金融机构能够基于所述预测结果来评估是否向所述用户借款。在合作计算的过程中,所述金融机构不能够向所述大数据公司泄漏自身持有的数据处理模型(例如分裂节点1、3、4对应的判断条件),所述大数据公司不能够向所述金融机构泄漏自身持有的用户数据。
以下以图2所示的决策树模型为例,介绍所述金融机构和所述大数据公司进行合作计算,得到所述决策树模型的预测结果的过程。
所述金融机构可以采用前面的相关技术来获得分裂节点1对应的密文表、以及分裂节点2对应的密文表。具体地,所述金融机构可以根据分裂节点1对应的判断条件u==1和判断对象o3的至少一个取值,构建分裂节点1对应的明文表;可以对分裂节点1所对应明文表中的判断结果进行加密,得到分裂节点1对应的密文表。相类似地,所述金融机构可以根据分裂节点2对应的判断条件v==1和判断对象o4的至少一个取值,构建分裂节点2对应的明文表;可以对分裂节点2所对应明文表中的判断结果进行加密,得到分裂节点2对应的密文表。
所述金融机构可以采用上述实施例的查询方法来获得分裂节点4所对应的多个密文集合。具体地,所述金融机构可以将判断条件w≥80解析为多个分段判断条件;可以构建多个第一分段判断结果集合;可以对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合;可以对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合。
所述金融机构可以向所述大数据公司发送分裂节点1对应的密文表。所述大数据公司可以接收分裂节点1对应的密文表;可以根据自身持有的判断对象o3的特定取值,从该密文表中查询对应的判断结果密文;可以向所述金融机构发送查询到的判断结果密文。所述金融机构可以接收判断结果密文;可以对接收的判断结果密文进行解密,得到判断条件u==1的与判断对象o3的特定取值相对应的判断结果;可以根据解密得到的判断结果选择右侧的分支,从而到达分裂节点3。
所述金融机构可以向所述大数据公司发送分裂节点3对应的密文表。所述大数据公司可以接收分裂节点3对应的密文表;可以根据自身持有的判断对象o4的特定取值,从该密文表中查询对应的判断结果密文;可以向所述金融机构发送查询到的判断结果密文。所述金融机构可以接收判断结果密文;可以对接收的判断结果密文进行解密,得到判断条件v==1的与判断对象o4的特定取值相对应的判断结果;可以根据解密得到的判断结果选择左侧的分支,从而到达分裂节点4。
所述金融机构可以向所述大数据公司发送分裂节点4所对应的多个密文集合。所述大数据公司可以接收分裂节点4所对应的多个密文集合;可以获取自身持有的判断对象o5特定取值的多个二进制段;可以根据特定取值的每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果。所述大数据公司可以对多个查询结果进行打包,得到打包数据密文;可以向所述金融机构发送打包数据密文。所述金融机构可以接收所述打包数据密文;可以对所述打包数据密文进行解密,得到打包数据;可以对所述打包数据进行解码,得到多个分段判断结果;可以根据所述多个分段判断结果确定判断条件w≥80的与判断对象o5的特定取值相对应的判断结果;可以根据确定的判断结果选择左侧的分支,从而到达叶子节点5。
叶子节点5可以对应有预测结果“可以偿还借款”。由此所述金融机构便获得了决策树模型的预测结果“可以偿还借款”。
本说明书提供查询方法的另一个实施例。所述查询方法可以包括部署阶段和实施阶段,所述部署阶段可以包括步骤S201-步骤S213,所述实施阶段可以包括步骤S215-步骤S227。部署阶段的方法步骤并非是必须的。例如,可以预先执行部署阶段的方法步骤,这样在需要确定所需的判断结果时,仅执行实施阶段的方法步骤就可以了。
通过本实施例的查询方法,数据方和判断条件方均可以获得目标分段判断结果的一份份额。为了便于描述,以下将数据方获得的份额称为第一份额,将判断条件方获得的份额称为第二份额。每个分段判断结果的第一份额和第二份额的和等于该分段判断结果。判断条件方和数据方可以基于各自持有的份额继续后续的业务过程。
在一些场景示例中,数据方可以向判断条件方发送目标分段判断结果的第一份额。判断条件方可以接收目标分段判断结果的第一份额;可以将目标分段判断结果的第一份额和自身持有的目标分段判断结果的第二份额相加,得到目标分段判断结果;可以根据所述目标分段判断结果确定最终的判断结果,即,判断条件的与判断对象的特定取值相对应的判断结果。在另一些场景示例中,数据方和判断条件方可以采用不经意传输或混淆电路等技术,由判断条件方获得目标分段判断结果的第一份额。判断条件方可以将目标分段判断结果的第一份额和自身持有的目标分段判断结果的第二份额相加,得到目标分段判断结果;可以根据所述目标分段判断结果确定最终的判断结果。在另一些场景示例中,判断条件方可以向数据方发送目标分段判断结果的第二份额。数据方可以接收目标分段判断结果的第二份额;可以将目标分段判断结果的第二份额和自身持有的目标分段判断结果的第一份额相加,得到目标分段判断结果;可以根据所述目标分段判断结果确定最终的判断结果。在另一些场景示例中,数据方和判断条件方可以采用不经意传输或混淆电路等技术,由数据方获得目标分段判断结果的第二份额。数据方可以将目标分段判断结果的第二份额和自身持有的目标分段判断结果的第一份额相加,得到目标分段判断结果;可以根据所述目标分段判断结果确定最终的判断结果。
请参阅图3。所述查询方法可以包括以下步骤。
步骤S201:判断条件方获取判断条件中基准数据的多个二进制段。
步骤S203:判断条件方根据基准数据的二进制段,将判断条件解析为多个分段判断条件。
步骤S205:判断条件方构建多个第一分段判断结果集合。
步骤S207:判断条件方对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合。
步骤S209:判断条件方对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合。
在一些实施例中,判断条件方对多个第二分段判断结果集合中的分段判断结果进行加密的过程,可以参见前面实施例的步骤S109。
在一些场景示例中,判断条件方可以采用具有同态性的非对称加密算法对所述多个第二分段判断结果集合中的分段判断结果进行加密。例如,判断条件方可以持有用于进行同态加密的公私钥对,所述公私钥对中的公钥可以向数据方公开。判断条件方可以使用所述公钥对所述多个第二分段判断结果集合中的分段判断结果进行加密。
步骤S211:判断条件方向数据方发送多个密文集合。
步骤S213:数据方接收所述多个密文集合。
步骤S215:数据方获取判断对象特定取值的多个二进制段。
步骤S217:数据方根据特定取值的每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同。
步骤S219:数据方生成多个随机数作为多个目标分段判断结果的第一份额。
在一些实施例中,经过步骤S217,数据方可以获得多个查询结果,所述查询结果可以包括在一个密文集合中所查询得到的一个目标分段判断结果密文。如此数据方可以生成多个随机数作为多个目标分段判断结果的第一份额。所述随机数的取值例如可以为0或1。所述目标分段判断结果可以理解为所述目标分段判断结果密文所对应的明文。
在一些实施例中,经过步骤S217,数据方可以获得多个查询结果,所述查询结果可以包括密文序列,所述密文序列包括在一个密文集合的多个子密文集合中所查询到的多个目标分段判断结果密文。如此数据方可以生成多个随机数序列作为多个目标分段判断结果序列的第一份额。所述随机数序列可以包括多个随机数,所述随机数的取值例如可以为0或1。所述目标分段判断结果序列可以理解为所述密文序列所对应的明文,所述目标分段判断结果序列可以包括多个目标分段判断结果。
在一些实施例中,经过步骤S217,数据方可以获得多个查询结果,所述查询结果可以包括密文序列,所述密文序列可以包括一个密文集合的多个子密文集合所对应的多个相加结果。如此数据方可以生成多个随机数序列作为多个目标分段判断结果序列的第一份额。所述随机数序列可以包括多个随机数,所述随机数的取值例如可以为0或1。所述目标分段判断结果序列可以理解为所述密文序列所对应的明文,所述目标分段判断结果序列可以包括多个目标分段判断结果。
步骤S221:数据方根据查询结果和第一份额,计算多个目标分段判断结果第二份额的密文。
在一些实施例中,所述查询结果可以包括在一个密文集合中所查询得到的一个目标分段判断结果密文。如此数据方可以计算多个目标分段判断结果第二份额的密文。
数据方具体可以采用任意方式计算任一目标分段判断结果第二份额的密文。
在一些场景示例中,所述第一份额例如可以为0或1。如此若所述第一份额为数值0,数据方可以将目标分段判断结果密文作为目标分段判断结果第二份额的密文;若所述第一份额为数值1,数据方可以根据目标分段判断结果密文和数值1,利用同态加密算法计算目标分段判断结果第二份额的密文。例如,数据方可以利用同态加密算法,根据判断条件方的公钥对数值1进行加密,得到数值1的密文;可以将数值1的密文与目标分段判断结果密文同态相减,得到目标分段判断结果第二份额的密文。具体地,例如,第一份额可以为r,目标分段判断结果密文可以为E(v),目标分段判断结果第二份额的密文可以为E(c)。若r=0,则E(c)=E(v)。若r=1,则E(c)=E(1)-E(v)=E(1-v)。
在一些实施例中,所述查询结果可以包括密文序列,所述密文序列包括在一个密文集合的多个子密文集合中所查询到的多个目标分段判断结果密文。如此数据方可以计算多个目标分段判断结果序列第二份额的密文。
数据方具体可以采用任意方式计算任一目标分段判断结果序列第二份额的密文。
在一些场景示例中,所述密文序列可以为[E(v1),...,E(vi),...,E(vn)],E(vi)表示第i个目标分段判断结果密文。所述第一份额可以为随机数序列[r1,...,ri,...,rn],ri表示第i个目标分段判断结果的第一份额。所述目标分段判断结果序列第二份额的密文可以为[E(c1),...,E(ci),...,E(cn)]。ri例如可以为0或1。在实际过程中,若ri为0,则E(ci)=E(vi),若ri为1,则E(ci)=E(2i-1)-E(vi)=E(2i-1-vi)。
在一些实施例中,所述查询结果可以包括密文序列,所述密文序列可以包括一个密文集合的多个子密文集合所对应的多个相加结果。如此数据方可以计算多个目标分段判断结果序列第二份额的密文。
数据方具体可以采用任意方式计算任一目标分段判断结果序列第二份额的密文。
在一些场景示例中,所述密文序列可以为[E(v1),...,E(vi),...,E(vn)],E(vi)表示第i个相加结果。所述第一份额可以为随机数序列[r1,...,ri,...,rn],ri表示第i个目标分段判断结果的第一份额。所述目标分段判断结果序列第二份额的密文可以为[E(c1),...,E(ci),...,E(cn)]。在实际过程中,ri例如可以为0或1。在实际过程中,若ri为0,则E(ci)=E(vi),若ri为1,则E(ci)=E(2i-1)-E(vi)=E(2i-1-vi)。
步骤S223:数据方对多个目标分段判断结果第二份额的密文进行打包,得到打包数据密文。
在一些实施例中,经过步骤S221,数据方可以获得多个目标分段判断结果第二份额的密文。如此数据方可以将多个目标分段判断结果第二份额的密文同态相加,得到打包数据密文。所述打包数据密文可以为一个密文数据(为了便于描述,以下称为第一数据)。
或者,经过步骤S221,数据方可以获得多个目标分段判断结果序列第二份额的密文。如此数据方可以将多个目标分段判断结果序列第二份额的密文同态相加,得到打包数据密文。所述打包数据密文可以为一个密文序列(为了便于描述,以下称为第一数据序列)。值得说明的是,将多个目标分段判断结果序列第二份额的密文同态相加,可以理解为将多个序列中处于相同位置处的数据元素同态相加。例如,所述第一数据序列可以表示为[∑E(c1),...,∑E(ci),...,∑E(cn)]。
步骤S225:数据方向判断条件方发送打包数据密文。
在一些实施例中,数据方可以向判断条件方发送第一数据或第一数据序列。当然,为了进一步减少数据方向判断条件方发送的数据量,从而减小网络带宽的占用,数据方还可以再次对第一数据序列中的多个数据元素进行打包处理,从而向判断条件方发送再次打包的结果。例如,所述第一数据序列可以表示为[∑E(c1),...,∑E(ci),...,∑E(cn)]。数据方可以计算20×∑E(c1)+,...,+2ui×∑E(ci)+,...,+2un×∑E(cn)作为再次打包的结果。u表示正整数。
步骤S227:判断条件方接收所述打包数据密文。
在一些实施例中,所述打包数据密文可以为第一数据。判断条件方可以对第一数据进行解密,得到打包数据。这样所述打包数据可以为一个明文数据(为了便于描述,以下称为第二数据)。所述第二数据对应了一个判断条件。
或者,所述打包数据密文可以为第一数据序列。判断条件方可以对第一数据序列中的数据元素进行解密,得到打包数据。这样所述打包数据可以为一个明文序列(为了便于描述,以下称为第二数据序列)。所述第二特定序列中的多个数据元素对应了多个判断条件。
在一些实施例中,判断条件方还可以对所述打包数据进行解码,得到多个目标分段判断结果的第二份额。具体地,所述打包数据可以为第二数据。判断条件方可以对第二数据进行解码,得到多个目标分段判断结果的第二份额。或者,所述打包数据可以为第二数据序列。对于第二特定序列中的每个数据元素,判断条件方可以对该数据元素进行解码,得到多个目标分段判断结果的第二份额。
值得说明的是,判断条件方还可以采用其它方式获得目标分段判断结果的第二份额。例如,判断条件方可以先对第一数据进行解码,得到多个目标分段判断结果第二份额的密文;然后对多个目标分段判断结果第二份额的密文进行解密,得到多个目标分段判断结果的第二份额。或者,判断条件方还可以先对第一数据序列进行解码,得到多个目标分段判断结果序列第二份额的密文;然后对多个目标分段判断结果序列第二份额的密文进行解密,得到多个目标分段判断结果序列的第二份额。
本实施例的查询方法,判断条件方可以将判断条件解析为多个分段判断条件;可以构建多个第一分段判断结果集合;可以对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合;可以对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合;可以向数据方发送多个密文集合。数据方可以接收所述多个密文集合;可以对判断对象的特定取值进行分段;可以根据特定取值的二进制段在所述多个密文集合中进行查询。这样一方面,可以在判断条件方不泄漏自身的判断条件、且数据方不泄漏自身的特定取值的前提下,由二者合作确定出判断条件的与判断对象的特定取值相对应的判断结果,从而实现了隐私保护。另一方面,第二分段判断结果集合的数据量比较小,判断条件方加密时花费的计算资源也较小;密文集合的数据量也比较小,也有利于数据方的查询。
请参阅图4。基于同样的发明构思,本说明书还提供数据处理方法的一个实施例。该实施例以判断条件方为实施主体,可以包括以下步骤。
步骤S301:获取判断条件中基准数据的多个二进制段。
步骤S303:根据基准数据的二进制段,将判断条件解析为多个分段判断条件。
步骤S305:构建多个第一分段判断结果集合。
步骤S307:对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合。
步骤S309:对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合。
步骤S311:向数据方发送多个密文集合。
本实施例的数据处理方法,判断条件方可以获取判断条件中基准数据的多个二进制段;可以根据基准数据的二进制段,将判断条件解析为多个分段判断条件;可以对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合;可以对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合;可以向数据方发送多个密文集合。这样一方面,便于数据方在密文集合中进行查询。另一方面,第二分段判断结果集合的数据量比较小,加密时花费的计算资源也较小。
请参阅图5。基于同样的发明构思,本说明书还提供查询方法的另一个实施例。该实施例以数据方为实施主体。所述数据方持有多个密文集合,每个密文集合可以对应有段位置,且可以包括多个对应有二进制段的分段判断结果密文。该方法可以包括以下步骤。
步骤S401:获取判断对象特定取值的多个二进制段。
步骤S403:对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同。
步骤S405:对多个查询结果进行打包,得到打包数据密文。
步骤S407:向判断条件方发送所述打包数据密文。
本实施例的查询方法,数据方可以对自身持有的判断对象的特定取值进行分段;可以根据特定取值的多个二进制段在所述多个密文集合中进行查询。这样一方面,可以在判断条件方不泄漏自身的判断条件、且数据方不泄漏自身的特定取值的前提下,由二者合作确定出判断条件的与判断对象的特定取值相对应的判断结果,从而实现了隐私保护。另一方面,密文集合的数据量也比较小,有利于数据方的查询。
请参阅图6。基于同样的发明构思,本说明书还提供查询方法的另一个实施例。该实施例以数据方为实施主体。所述数据方持有多个密文集合,每个密文集合可以对应有段位置,且可以包括多个对应有二进制段的分段判断结果密文。该方法可以包括以下步骤。
步骤S501:获取判断对象特定取值的多个二进制段。
步骤S503:对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同。
步骤S505:生成多个随机数作为多个目标分段判断结果的第一份额。
步骤S507:根据查询结果和第一份额,计算多个目标分段判断结果第二份额的密文。
步骤S509:对多个目标分段判断结果第二份额的密文进行打包,得到打包数据密文。
步骤S511:向判断条件方发送打包数据密文。
本实施例的查询方法,数据方可以对自身持有的判断对象的特定取值进行分段;可以根据特定取值的多个二进制段在所述多个密文集合中进行查询。这样一方面,可以在判断条件方不泄漏自身的判断条件、且数据方不泄漏自身的特定取值的前提下,由二者合作确定出判断条件的与判断对象的特定取值相对应的判断结果,从而实现了隐私保护。另一方面,密文集合的数据量也比较小,有利于数据方的查询。
请参阅图7。基于同样的发明构思,本说明书还提供数据处理装置的一个实施例。该装置可以应用于判断条件方,可以包括以下单元。
获取单元601,用于获取判断条件中基准数据的多个二进制段;
解析单元603,用于根据基准数据的二进制段,将判断条件解析为多个分段判断条件;
构建单元605,用于构建多个第一分段判断结果集合,每个第一分段判断结果集合包括由分段判断条件所得到的多个分段判断结果,每个分段判断结果对应有判断对象的二进制段;
编码单元607,用于对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合;
加密单元609,用于对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合;
发送单元611,用于向数据方发送多个密文集合。
请参阅图8。基于同样的发明构思,本说明书还提供查询装置的一个实施例。该装置可以应用于数据方。所述数据方持有多个密文集合,所述密文集合对应有段位置,且包括多个对应有二进制段的分段判断结果密文。该装置可以包括以下单元。
获取单元701,用于获取判断对象特定取值的多个二进制段;
查询单元703,用于对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同;
打包单元705,用于对多个查询结果进行打包,得到打包数据密文;
发送单元707,用于向判断条件方发送所述打包数据密文。
请参阅图9。基于同样的发明构思,本说明书还提供查询装置的另一个实施例。该装置可以应用于数据方。所述数据方持有多个密文集合,所述密文集合对应有段位置,且包括多个对应有二进制段的分段判断结果密文。该装置可以包括以下单元。
获取单元801,用于获取判断对象特定取值的多个二进制段;
查询单元803,用于对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同;
生成单元805,用于生成多个随机数作为多个目标分段判断结果的第一份额;
计算单元807,用于根据查询结果和第一份额,计算多个目标分段判断结果第二份额的密文;
打包单元809,用于对多个目标分段判断结果第二份额的密文进行打包,得到打包数据密文;
发送单元811,用于向判断条件方发送打包数据密文。
下面介绍本说明书电子设备的一个实施例。图10是该实施例中电子设备的硬件结构示意图。如图10所示,该电子设备可以包括一个或多个(图中仅示出一个)处理器、存储器和传输模块。当然,本领域普通技术人员可以理解,图10所示的硬件结构仅为示意,其并不对上述电子设备的硬件结构造成限定。在实际中该电子设备还可以包括比图10所示更多或者更少的组件单元;或者,具有与图10所示不同的配置。
所述存储器可以包括高速随机存储器;或者,还可以包括非易失性存储器,例如一个或者多个磁性存储装置、闪存或者其他非易失性固态存储器。当然,所述存储器还可以包括远程设置的网络存储器。所述远程设置的网络存储器可以通过诸如互联网、企业内部网、局域网、移动通信网等网络连接至所述区块链客户端。所述存储器可以用于存储应用软件的程序指令或模块,例如本说明书图4、图5或图6所对应实施例的程序指令或模块。
所述处理器可以按任何适当的方式实现。例如,所述处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述处理器可以读取并执行所述存储器中的程序指令或模块。
所述传输模块可以用于经由网络进行数据传输,例如经由诸如互联网、企业内部网、局域网、移动通信网等网络进行数据传输。
本说明书还提供计算机存储介质的一个实施例。所述计算机存储介质包括但不限于随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard Disk Drive,HDD)、存储卡(Memory Card)等等。所述计算机存储介质存储有计算机程序指令。在所述计算机程序指令被执行时实现:本说明书图4、图5或图6所对应实施例的程序指令或模块。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于单侧实施的方法实施例(例如图4、图5和图6所对应的实施例)、装置实施例、电子设备实施例、以及计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。另外,可以理解的是,本领域技术人员在阅读本说明书文件之后,可以无需创造性劳动想到将本说明书列举的部分或全部实施例进行任意组合,这些组合也在本说明书公开和保护的范围内。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。

Claims (32)

1.一种数据处理方法,应用于判断条件方,包括:
获取判断条件中基准数据的多个二进制段,所述基准数据为判断条件中的阈值;
根据基准数据的二进制段,将判断条件解析为多个分段判断条件;
构建多个第一分段判断结果集合,每个第一分段判断结果集合包括由分段判断条件所得到的多个分段判断结果,每个分段判断结果对应有判断对象的二进制段;
对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合;
对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合;
向数据方发送多个密文集合。
2.如权利要求1所述的方法,每个第一分段判断结果集合对应有权重;所述对第一分段判断结果集合中的分段判断结果进行编码,包括:
将第一分段判断结果集合的权重与该第一分段判断结果集合中的分段判断结果相乘。
3.如权利要求2所述的方法,第一分段判断结果集合的权重满足公式:2i-1
i表示第一分段判断结果集合所在的位次。
4.如权利要求1所述的方法,所述对第二分段判断结果集合中的分段判断结果进行加密,包括:
对第二分段判断结果集合中的分段判断结果进行同态加密。
5.如权利要求1所述的方法,基准数据的每个二进制段具有一个段位置,每个第一分段判断结果集合对应一个所述段位置。
6.如权利要求1所述的方法,所述判断条件包括比较判断条件;
所述分段判断结果包括以下至少一种:第一类分段判断结果、第二类分段判断结果;所述第一类分段判断结果用于表示分段判断条件不成立,所述第二类分段判断结果用于表示分段判断条件成立。
7.如权利要求1所述的方法,所述获取判断条件中基准数据的多个二进制段,包括:
对于多个判断条件,获取每个判断条件中基准数据的多个二进制段;
所述将判断条件解析为多个分段判断条件,包括:
对于每个判断条件,根据该判断条件中基准数据的二进制段,将该判断条件解析为多个分段判断条件;
所述第一分段判断结果集合包括多个子集合,每个子集合对应一个判断条件,且包括由来自该判断条件的分段判断条件所得到的多个分段判断结果。
8.如权利要求7所述的方法,每个子集合中的多个分段判断结果对应了多个判断对象的二进制段。
9.一种查询方法,应用于数据方,所述数据方持有多个密文集合,每个密文集合对应有段位置,且包括多个对应有二进制段的分段判断结果密文,该方法包括:
获取判断对象特定取值的多个二进制段;
对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同;
对多个查询结果进行打包,得到打包数据密文;
向判断条件方发送所述打包数据密文。
10.如权利要求9所述的方法,所述分段判断结果密文由同态加密算法计算得到。
11.如权利要求9所述的方法,所述获取判断对象特定取值的多个二进制段,包括:
获取一个判断对象特定取值的多个二进制段。
12.如权利要求11所述的方法,所述查询结果包括在一个密文集合中所查询得到的一个分段判断结果密文;所述对多个查询结果进行打包,包括:
将多个分段判断结果密文同态相加。
13.如权利要求11所述的方法,所述密文集合包括多个子密文集合,每个子密文集合包括多个分段判断结果密文;所述查询结果包括密文序列,所述密文序列包括在一个密文集合的多个子密文集合中所查询到的多个分段判断结果密文;
所述对多个查询结果进行打包,包括:
将多个密文序列同态相加。
14.如权利要求9所述的方法,所述获取判断对象特定取值的多个二进制段,包括:
对于多个判断对象,获取每个判断对象特定取值的多个二进制段。
15.如权利要求14所述的方法,所述密文集合包括多个子密文集合,每个子密文集合包括多个分段判断结果密文;所述对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果,包括:
对于对应了相同段位置的一组二进制段,选取至少一个密文集合;其中,选取的密文集合所对应的段位置与该组二进制段的段位置相同;
对于选取的密文集合中的每个子密文集合,在该子密文集合中查询分段判断结果密文,得到多个分段判断结果密文,对多个分段判断结果密文同态相加。
16.如权利要求15所述的方法,所述查询结果包括密文序列,所述密文序列包括一个密文集合的多个子密文集合所对应的多个相加结果;
所述对多个查询结果进行打包,包括:
将多个密文序列同态相加。
17.一种查询方法,应用于数据方,所述数据方持有多个密文集合,每个密文集合对应有段位置,且包括多个对应有二进制段的分段判断结果密文,该方法包括:
获取判断对象特定取值的多个二进制段;
对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同;
生成多个随机数作为多个目标分段判断结果的第一份额;
根据查询结果和第一份额,计算多个目标分段判断结果第二份额的密文;
对多个目标分段判断结果第二份额的密文进行打包,得到打包数据密文;
向判断条件方发送打包数据密文。
18.如权利要求17所述的方法,所述分段判断结果密文由同态加密算法计算得到。
19.如权利要求17所述的方法,所述获取判断对象特定取值的多个二进制段,包括:
获取一个判断对象特定取值的多个二进制段。
20.如权利要求19所述的方法,所述查询结果包括在一个密文集合中所查询得到的一个目标分段判断结果密文;所述计算多个目标分段判断结果第二份额的密文,包括:
根据目标分段判断结果密文和第一份额,计算多个目标分段判断结果第二份额的密文;
所述对多个目标分段判断结果第二份额的密文进行打包,包括:
将多个目标分段判断结果第二份额的密文同态相加。
21.如权利要求20所述的方法,所述第一份额取自0和1;若所述第一份额为0,目标分段判断结果第二份额的密文等于目标分段判断结果密文;若所述第一份额为1,目标分段判断结果第二份额的密文由同态加密算法根据目标分段判断结果密文和数值1计算得到。
22.如权利要求19所述的方法,所述密文集合包括多个子密文集合,每个子密文集合包括多个分段判断结果密文;所述查询结果包括密文序列,所述密文序列包括在一个密文集合的多个子密文集合中所查询到的多个目标分段判断结果密文;
所述生成多个随机数作为多个目标分段判断结果的第一份额,包括:
生成多个随机数序列作为多个目标分段判断结果序列的第一份额;
所述计算多个目标分段判断结果第二份额的密文,包括:
根据密文序列和第一份额,计算多个目标分段判断结果序列第二份额的密文;
所述对多个目标分段判断结果第二份额的密文进行打包,包括:
将多个目标分段判断结果序列第二份额的密文同态相加。
23.如权利要求22所述的方法,所述第一份额为[r1,...,ri,...,rn],ri表示第i个目标分段判断结果的第一份额;所述密文序列为[E(v1),...,E(vi),...,E(vn)],E(vi)表示第i个目标分段判断结果密文;目标分段判断结果序列第二份额的密文为[E(c1),...,E(ci),...,E(cn)],E(ci)表示第i个目标分段判断结果第二份额的密文;
ri取自0和1;若ri为0,则
Figure FDA0003015396500000041
若ri为1,则E(ci)=E(2i-1)-E(vi)=E(2i-1-vi)。
24.如权利要求17所述的方法,所述获取判断对象特定取值的多个二进制段,包括:
对于多个判断对象,获取每个判断对象特定取值的多个二进制段。
25.如权利要求24所述的方法,所述密文集合包括多个子密文集合,每个子密文集合包括多个分段判断结果密文;所述对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果,包括:
对于对应了相同段位置的一组二进制段,选取至少一个密文集合;其中,选取的密文集合所对应的段位置与该组二进制段的段位置相同;
对于选取的密文集合中的每个子密文集合,在该子密文集合中查询分段判断结果密文,得到多个目标分段判断结果密文,对所述多个目标分段判断结果密文同态相加。
26.如权利要求25所述的方法,所述查询结果包括密文序列,所述密文序列包括一个密文集合的多个子密文集合所对应的多个相加结果;
所述生成多个随机数作为多个目标分段判断结果的第一份额,包括:
生成多个随机数序列作为多个目标分段判断结果序列的第一份额;
所述计算多个目标分段判断结果第二份额的密文,包括:
根据密文序列和第一份额,计算多个目标分段判断结果序列第二份额的密文;
所述对多个目标分段判断结果第二份额的密文进行打包,包括:
将多个目标分段判断结果序列第二份额的密文同态相加。
27.如权利要求26所述的方法,所述第一份额为[r1,...,ri,...,rn],ri表示第i个目标分段判断结果的第一份额;所述密文序列为[E(v1),...,E(vi),...,E(vn)],E(vi)表示第i个相加结果;目标分段判断结果序列第二份额的密文为[E(c1),...,E(ci),...,E(cn)],E(ci)表示第i个目标分段判断结果第二份额的密文;
ri取自0和1;若ri为0,则
Figure FDA0003015396500000042
若ri为1,则E(ci)=E(2i-1)-E(vi)=E(2i-1-vi)。
28.一种数据处理装置,应用于判断条件方,包括:
获取单元,用于获取判断条件中基准数据的多个二进制段,所述基准数据为判断条件中的阈值;
解析单元,用于根据基准数据的二进制段,将判断条件解析为多个分段判断条件;
构建单元,用于构建多个第一分段判断结果集合,每个第一分段判断结果集合包括由分段判断条件所得到的多个分段判断结果,每个分段判断结果对应有判断对象的二进制段;
编码单元,用于对第一分段判断结果集合中的分段判断结果进行编码,得到第二分段判断结果集合;
加密单元,用于对第二分段判断结果集合中的分段判断结果进行加密,得到密文集合;
发送单元,用于向数据方发送多个密文集合。
29.一种查询装置,应用于数据方,所述数据方持有多个密文集合,每个密文集合对应有段位置,且包括多个对应有二进制段的分段判断结果密文,该装置包括:
获取单元,用于获取判断对象特定取值的多个二进制段;
查询单元,用于对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同;
打包单元,用于对多个查询结果进行打包,得到打包数据密文;
发送单元,用于向判断条件方发送所述打包数据密文。
30.一种查询装置,应用于数据方,所述数据方持有多个密文集合,每个密文集合对应有段位置,且包括多个对应有二进制段的分段判断结果密文,该装置包括:
获取单元,用于获取判断对象特定取值的多个二进制段;
查询单元,用于对于每个二进制段,选取至少一个密文集合,在选取的至少一个密文集合中分别查询分段判断结果密文,得到至少一个查询结果;其中,选取的密文集合所对应的段位置与该二进制段在特定取值中的段位置相同;
生成单元,用于生成多个随机数作为多个目标分段判断结果的第一份额;
计算单元,用于根据查询结果和第一份额,计算多个目标分段判断结果第二份额的密文;
打包单元,用于对多个目标分段判断结果第二份额的密文进行打包,得到打包数据密文;
发送单元,用于向判断条件方发送打包数据密文。
31.一种电子设备,包括存储器和处理器;
存储器,用于存储计算机指令;
处理器,用于执行所述计算机指令以实现如权利要求1-27中任一项所述的方法步骤。
32.一种查询系统,包括数据方和判断条件方;
所述数据方设置有如权利要求29或30所述的装置;
所述判断条件方用于接收打包数据密文。
CN201911285939.6A 2019-12-13 2019-12-13 数据处理方法、查询方法、装置、电子设备和系统 Active CN111159730B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911285939.6A CN111159730B (zh) 2019-12-13 2019-12-13 数据处理方法、查询方法、装置、电子设备和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911285939.6A CN111159730B (zh) 2019-12-13 2019-12-13 数据处理方法、查询方法、装置、电子设备和系统

Publications (2)

Publication Number Publication Date
CN111159730A CN111159730A (zh) 2020-05-15
CN111159730B true CN111159730B (zh) 2021-07-09

Family

ID=70557159

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911285939.6A Active CN111159730B (zh) 2019-12-13 2019-12-13 数据处理方法、查询方法、装置、电子设备和系统

Country Status (1)

Country Link
CN (1) CN111159730B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112836239A (zh) * 2021-02-19 2021-05-25 支付宝(杭州)信息技术有限公司 保护隐私的双方协同确定目标对象数据的方法及装置
CN112966022B (zh) * 2021-03-10 2024-04-05 安徽航天信息科技有限公司 一种数据交易平台的信息查询方法、装置及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102404111A (zh) * 2011-12-28 2012-04-04 王勇 一种采用不确定加密算法的分段加密方法
CN105471575A (zh) * 2014-09-05 2016-04-06 阿里巴巴集团控股有限公司 一种信息加密、解密方法及装置
CN108052805A (zh) * 2017-11-20 2018-05-18 北京旋极信息技术股份有限公司 一种数据加解密方法和装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108629196B (zh) * 2017-03-21 2021-04-30 北京京东尚科信息技术有限公司 数据存储和查询的方法、装置、电子设备和可读存储介质
CN107832631A (zh) * 2017-11-13 2018-03-23 上海斐讯数据通信技术有限公司 一种数据发布的隐私保护方法和系统
CN109359480B (zh) * 2018-10-08 2019-10-08 温州大学瓯江学院 一种面向数字图书馆的用户隐私保护方法及系统
CN110363509B (zh) * 2019-07-19 2022-03-29 华中师范大学 一种信息保护方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102404111A (zh) * 2011-12-28 2012-04-04 王勇 一种采用不确定加密算法的分段加密方法
CN105471575A (zh) * 2014-09-05 2016-04-06 阿里巴巴集团控股有限公司 一种信息加密、解密方法及装置
CN108052805A (zh) * 2017-11-20 2018-05-18 北京旋极信息技术股份有限公司 一种数据加解密方法和装置

Also Published As

Publication number Publication date
CN111159730A (zh) 2020-05-15

Similar Documents

Publication Publication Date Title
US11843687B2 (en) Systems, devices, and processes for homomorphic encryption
Tahir et al. CryptoGA: a cryptosystem based on genetic algorithm for cloud data security
JP7272363B2 (ja) 高精度プライバシ保護実数値関数評価
CN110457912B (zh) 数据处理方法、装置和电子设备
CN111125727B (zh) 混淆电路生成方法、预测结果确定方法、装置和电子设备
CN105122721B (zh) 用于管理针对加密数据的托管安全计算的方法和系统
US9900147B2 (en) Homomorphic encryption with optimized homomorphic operations
CN111143862B (zh) 数据处理方法、查询方法、装置、电子设备和系统
US20140233727A1 (en) Method for secure substring search
EP3959839A1 (en) Methods and systems for privacy preserving evaluation of machine learning models
CN110427969B (zh) 数据处理方法、装置和电子设备
JP2016509268A (ja) プライバシーを保護する計数の方法およびシステム
KR20160041028A (ko) 프라이버시 보호 행렬 분해를 위한 방법 및 시스템
CN111428887A (zh) 一种基于多个计算节点的模型训练控制方法、装置及系统
CN109687952A (zh) 数据处理方法及其装置、电子装置及存储介质
CN111159730B (zh) 数据处理方法、查询方法、装置、电子设备和系统
CN111046431B (zh) 数据处理方法、查询方法、装置、电子设备和系统
CN116561787A (zh) 视觉图像分类模型的训练方法、装置及电子设备
CN111046408A (zh) 判断结果处理方法、查询方法、装置、电子设备和系统
CN110874481A (zh) 一种基于gbdt模型的预测方法和装置
CN113055153A (zh) 一种基于全同态加密算法的数据加密方法、系统和介质
CN116094686B (zh) 用于量子卷积计算的同态加密方法、系统、设备及终端
He et al. PrivC—A framework for efficient secure two-party computation
CN114726580A (zh) 数据处理方法和装置
CN115085897A (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