数据查询方法、装置、设备、存储介质及程序产品与流程

文档序号:26230381发布日期:2021-08-10 16:30阅读:65来源:国知局
本申请涉及人工智能
技术领域
:,涉及但不限于一种数据查询方法、装置、设备、存储介质及程序产品。
背景技术
::在信息化社会,充分有效地管理和利用各类信息资源,数据库差不多在每个行业都有应用。数据库查询是常用的数据库技术,通常来说,当前的数据库存储都是以(关键字key,值value)对的形式保存。数据库查询指的是用户利用key值,在数据库中,查找key对应的value。多表查询是指,数据分布在多个数据库表中,需要联合多个数据库表来进行查询,常见的连接方式包括:内连接、左连接、右连接和全连接。当多个表分布在不同的机构或者客户端时,由于需要防止隐私数据泄露,不能直接将这些表共享。相关技术中,首先对表中数据进行脱敏、匿名化、差分隐私或同态加密等隐私处理后,然后将多个表集中在一起进行连接,实现多表查询。相关技术通过加密或者匿名化技术虽然能够防止数据泄露,但会造成数据的可用性降低,而且违反了隐私保护法中数据出域的限制条件。如何在数据不出本地的前提下,联合多方数据实现跨表连接查询是亟需解决的问题之一。技术实现要素:本申请实施例提供一种数据查询方法、装置、设备、计算机可读存储介质及计算机程序产品,能够在确保数据不出本地、保护数据隐私的前提下,实现跨表连接查询。本申请实施例的技术方案是这样实现的:本申请实施例提供一种数据查询方法,所述方法应用于联邦学习的协调方,所述方法包括:生成用于加密的公钥和用于解密的私钥;根据至少两个待查询特征,从联邦学习的多个参与方中确定至少两个目标参与方,并确定对应于各目标参与方的查询请求,各目标参与方存储有部分待查询特征的特征数据;将所述公钥和对应于各目标参与方的查询请求发送至对应的目标参与方;接收所述各目标参与方发送的密文查询结果,所述密文查询结果由所述各目标参与方基于所述公钥和各自接收到的查询请求确定;根据所述私钥和所述各目标参与方发送的密文查询结果,确定目标数据。本申请实施例提供一种数据查询方法,所述方法应用于联邦学习的目标参与方,所述目标参与方为存储有部分待查询数据的参与方,所述方法包括:接收协调方发送的公钥和查询请求;对所述查询请求进行解析,得到所述查询请求携带的查询条件;基于所述查询条件在自身存储空间中进行查找,得到明文查询结果;利用所述公钥对所述明文查询结果进行加密,得到密文查询结果;将所述密文查询结果发送至所述协调方。本申请实施例提供一种数据查询装置,所述装置应用于联邦学习的协调方,所述装置包括:生成模块,用于生成用于加密的公钥和用于解密的私钥;第一确定模块,用于至少两个待查询特征,从联邦学习的多个参与方中确定至少两个目标参与方,各目标参与方存储有部分待查询特征的特征数据;第二确定模块,用于确定对应于各目标参与方的查询请求;第一发送模块,用于将所述公钥和对应于各目标参与方的查询请求发送至对应的目标参与方;第一接收模块,用于接收所述各目标参与方发送的密文查询结果,所述密文查询结果由所述各目标参与方基于所述公钥和各自接收到的查询请求确定;第三确定模块,用于根据所述私钥和所述各目标参与方发送的密文查询结果,确定目标数据。本申请实施例提供一种数据查询装置,所述装置应用于联邦学习的目标参与方,所述目标参与方为存储有部分待查询数据的参与方,所述装置包括:第二接收模块,用于接收协调方发送的公钥和查询请求;解析模块,用于对所述查询请求进行解析,得到所述查询请求携带的查询条件;查询模块,用于基于所述查询条件在自身存储空间中进行查找,得到明文查询结果;加密模块,用于利用所述公钥对所述明文查询结果进行加密,得到密文查询结果;第二发送模块,用于将所述密文查询结果发送至所述协调方。本申请实施例提供一种数据查询设备,所述设备包括:存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的方法。本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的方法。本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现本申请实施例提供的方法。本申请实施例具有以下有益效果:在本申请实施例提供的数据查询方法中,协调方根据至少两个待查询特征,从联邦学习的多个参与方中确定至少两个目标参与方,并确定对应于各目标参与方的查询请求,然后将预先生成的公钥和对应于各目标参与方的查询请求发送至对应的目标参与方。各目标参与方接收到查询请求后,分别查询自身的数据表,得到明文查询结果,再利用公钥对明文查询结果进行加密,得到密文查询结果。协调方接收各目标参与方发送的密文查询结果,根据私钥和各目标参与方发送的密文查询结果,确定目标数据。如此,在确保各参与方的数据不出各参与方本地的前提下,实现了数据的跨表查询,不仅能够保护数据隐私、防止数据泄露,而且未对数据进行匿名化等处理,不会影响查询到的目标数据的可用性。附图说明图1为本申请实施例提供的数据查询方法的网络架构示意图;图2是本申请实施例提供的数据查询设备的组成结构示意图;图3为本申请实施例提供的数据查询方法的一种实现流程示意图;图4为本申请实施例提供的数据查询方法的另一种实现流程示意图;图5为本申请实施例提供的数据查询方法的再一种实现流程示意图;图6为本申请实施例提供的数据库表分布示意图;图7为本申请实施例提供的联邦学习实现内连接的数据查询方法的一种实现流程示意图;图8为本申请实施例提供的联邦学习实现左连接的数据查询方法的一种实现流程示意图;图9为本申请实施例提供的联邦学习实现右连接的数据查询方法的一种实现流程示意图。具体实施方式为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。在以下的描述中,所涉及的术语“第一\第二\第三”仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的
技术领域
:的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。1)联邦学习(federatedlearning),一种新兴的人工智能基础技术,其设计目标是在保障大数据交换时的信息安全、保护终端数据和个人数据隐私、保证合法合规的前提下,在多参与方或多计算结点之间开展高效率的机器学习。2)连接查询,是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等,通过连接运算符可以实现多个表查询。3)同态加密(homomorphicencryption),同态加密是基于数学难题的计算复杂性理论的密码学技术。对经过同态加密的数据进行处理得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。下面说明实现本申请实施例的装置的示例性应用,本申请实施例提供的装置可以实施为终端设备。下面,将说明装置实施为终端设备时涵盖终端设备的示例性应用。图1为本申请实施例提供的数据查询方法的网络架构示意图,如图1所示,在该网络架构中包括协调方100、至少两个目标参与方(分别记为目标参与方200-1和目标参与方200-2,以示区分,在实际实现时,可以包括更多个目标参与方)和网络300。为实现支撑一个示例性应用,协调方100可以为联邦学习的服务终端,例如服务器等,协调方100可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是基于云技术的云服务器,用于在不泄露隐私前提下查询各银行或医院客户终端存储的用户的特征数据。目标参与方(包括目标参与方200-1、目标参与方200-2)可以为联邦学习的客户终端,例如各银行或医院等存储有用户的特征数据的参与方设备,客户终端可以是笔记本电脑,平板电脑,台式计算机。协调方100通过网络300连接目标参与方200-1和目标参与方200-2,网络300可以是广域网或者局域网,又或者是二者的组合,使用无线或有线链路实现数据传输。在该网络架构的应用场景中,首先协调方100根据待查询特征,从多个参与方中确定出目标参与方200-1和目标参与方200-2,然后根据待查询特征,确定对应于目标参与方200-1和目标参与方200-2的查询请求,然后将预先生成的公钥和查询请求分发至对应的目标参与方200-1和目标参与方200-2。目标参与方200-1和目标参与方200-2分别根据公钥和查询请求,确定密文查询结果,然后将密文查询结果返回给协调方100。协调方100接收到目标参与方200-1和目标参与方200-2返回的密文查询结果后,根据预先生成的私钥和各密文查询结果,确定目标数据。如此,在确保数据不出本地的前提下,实现了数据的跨表查询,不仅能够保护数据隐私、防止数据泄露,而且不会影响查询到的目标数据的可用性。本申请实施例提供的装置可以实施为硬件或者软硬件结合的方式,下面说明本申请实施例提供的装置的各种示例性实施。根据图2示出的数据查询设备的示例性结构,这里,数据查询设备以协调方100为例示出,可以预见数据查询设备的其他的示例性结构,因此这里所描述的结构不应视为限制,例如可以省略下文所描述的部分组件,或者,增设下文所未记载的组件以适应某些应用的特殊需求。图2所示的数据查询设备10包括:至少一个处理器110、存储器140、至少一个网络接口120和用户接口130。数据查询设备10中的每个组件通过总线系统150耦合在一起。可理解,总线系统150用于实现这些组件之间的连接通信。总线系统150除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统150。用户接口130可以包括显示器、键盘、鼠标、触感板和触摸屏等。存储器140可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,readonlymemory)。易失性存储器可以是随机存取存储器(ram,randomaccessmemory)。本申请实施例描述的存储器140旨在包括任意适合类型的存储器。本申请实施例中的存储器140能够存储数据以支持数据查询设备10的操作。这些数据的示例包括:用于在数据查询设备10上操作的任何计算机程序,如操作系统和应用程序。其中,操作系统包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序可以包含各种应用程序。作为本申请实施例提供的方法采用软件实施的示例,本申请实施例所提供的方法可以直接体现为由处理器110执行的软件模块组合,软件模块可以位于存储介质中,存储介质位于存储器140,处理器110读取存储器140中软件模块包括的可执行指令,结合必要的硬件(例如,包括处理器110以及连接到总线150的其他组件)完成本申请实施例提供的方法。作为示例,处理器110可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(dsp,digitalsignalprocessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。将结合本申请实施例提供的设备的示例性应用和实施,说明本申请实施例提供的数据查询方法。图3为本申请实施例提供的数据查询方法的一种实现流程示意图,应用于图1所示网络架构的协调方,将结合图3示出的步骤进行说明。步骤s301,生成用于加密的公钥和用于解密的私钥。本申请实施例中,协调方在进行联邦学习下的数据查询时,协调方生成用于加密的公钥和用于解密的私钥。通过公钥,使得各参与方无需将自身存储的用户特征数据发送至对方或协调方,能够保护各参与方数据的隐私。在一种实现方式中,协调方生成的公钥可以为用于同态加密的公钥,生成的私钥可以为用于同态解密的私钥。同态加密是基于数学难题的计算复杂性理论的密码学技术。对经过同态加密的数据进行处理得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。生成的公钥可用于加法同态加密、乘法同态加密、混合乘法同态加密、减法同态加密、除法同态加密、代数同态加密(又称全同态加密)和算术同态加密任一种同态加密。这里的全同态加密指加密函数既满足加法同态,又满足乘法同态。在一些实施例中,协调方生成的公钥可用于加法同态加密,生成的私钥可用于加法同态解密,或者,协调方生成的公钥可用于乘法同态加密,生成的私钥可用于乘法同态解密,又或者,协调方生成的公钥可用于全同态加密,生成的私钥可用于全同态解密。相较于采用全同态加解密,加解密时采用加法同态加解密,能够提高运算效率。步骤s302,根据至少两个待查询特征,从联邦学习的多个参与方中确定至少两个目标参与方。这里,各目标参与方存储有部分待查询特征的特征数据。结合本申请实施例的应用场景,若待查询特征的特征数据只存储在一个参与方,则无需进行连接查询,因此待查询特征至少为两个,且该至少两个待查询特征的特征数据存储在不同的参与方。基于此,在查询之前,需要根据至少两个待查询特征,确定各待查询特征的特征数据存储在哪一参与方,即需要从联邦学习的多个参与方中确定至少两个目标参与方,每个目标参与方存储有部分待查询特征的特征数据。举例说明,待查询特征有2个,分别为特征a和特征c。联邦学习参与方有3个:第一参与方、第二参与方和第三参与方。其中,第一参与方的数据表(记为table1)中存储有特征a、特征b的特征数据,第二参与方的数据表(记为table2)中存储有特征c、特征d的特征数据,第三参与方的数据表(记为table3)中存储有特征e、特征f的特征数据。各参与方的特征数据对其他参与方和协调方是保密的,但数据表的表属性是无需保密的,即协调方可以从各参与方获取各参与方数据表的表属性,具体的,从第一参与方获得的表属性为(table1;id、a、b),从第二参与方获得的表属性为(table2;id、c、d),从第三参与方获得的表属性为(table3;id、e、f),其中,获得的表属性中,table1、table2和table3为表名,id为区分不同用户的标识(如身份证号等能够区分不同用户的标识),a、b、c、d、e和f为特征。协调方根据待查询特征和获得的各参与方所存储的数据表的表属性,可以确定待查询特征a的特征数据存储在第一参与方的table1中,待查询特征c的特征数据存储在第二参与方的table2中,由此确定目标参与方为第一参与方和第二参与方。步骤s303,确定对应于各目标参与方的查询请求。在步骤s302中已经确定各待查询特征对应的数据表的表名和特征,基于此可以确定对应各目标参与方的查询条件,由查询条件确定待发送至各目标参与方的查询请求。仍以上述举例进行说明,由于需要确定特征a的特征数据和特征c的特征数据是来自同一个用户的,因此在查询特征a的特征数据时,需要同时查询各特征数据对应的标识id,根据标识id来确定哪些特征数据是属于同一个用户的。在一种实现方式中,可以先分别查询各目标参与方的特征数据,然后再进行连接查询。该种实现方式中,在确定了待查询特征a的特征数据存储在第一参与方的table1中,得到查询条件为:查询table1中所有用户的id和特征a的特征数据,记为:selecta.id,a.afromtable1a,这里的a为table1的别称。根据该查询条件生成发送至第一参与方的第一查询请求。同理,在确定了待查询特征c的特征数据存储在第二参与方的table2中,得到查询条件为:查询table2中所有用户的id和特征c的特征数据,记为:selectb.id,b.cfromtable2b,这里的b为table2的别称。根据该查询条件生成发送至第二参与方的第二查询请求。在另一种实现方式中,可以先查询一个特征在对应目标参与方的所有用户及该特征的特征数据;然后根据上一次查询结果中的用户标识,确定下一次查询时需要查询的用户特征,即该种实现方式是基于之前的查询结果确定当前的查询条件,进而生成发送至各参与方的各个查询请求。在该种实现方式中,在确定了待查询特征a的特征数据存储在第一参与方的table1中,得到查询条件为:查询table1中所有用户的id和特征a的特征数据,记为:selecta.id,a.afromtable1a。根据该查询条件生成发送至第一参与方的第一查询请求。将第一查询请求发送至第一参与方,第一参与方查询自身数据表,得到并返回第一查询结果至协调方。协调方从第一查询结果中提取出用户标识集合s1={s1,s2,s3};继续查询,在确定了待查询特征c的特征数据存储在第二参与方的table2中,得到查询条件为:查询table2中属于s1的用户id和特征c的特征数据,记为:selectb.id,b.cfromtable2bwhereb.idins1。根据该查询条件生成发送至第二参与方的第二查询请求。在又一种实现方式中,可以先分别查询各目标参与方的所有用户,对各目标参与方的用户进行连接查询确定共同用户,然后再分别查询共同用户的特征数据。该种实现方式中,在确定了待查询特征a的特征数据存储在第一参与方的table1中,得到查询条件为:查询table1中所有用户的id,记为:selecta.idfromtable1a。在确定了待查询特征c的特征数据存储在第二参与方的table2中,得到查询条件为:查询table2中所有用户的id,记为:selectb.idfromtable1b。然后根据两次查询结果确定共同用户,将共同用户的用户标识集合记为s2={s1,s2}。在确定了共同用户后,确定第一参与方的查询条件为:查询table1中属于s2的用户的特征a的特征数据,记为:selecta.id,a.afromtable1awherea.idins2。根据该查询条件生成发送至第一参与方的第一查询请求。同理,在确定了共同用户后,确定第二参与方的查询条件为:查询table2中属于s2的用户的特征c的特征数据,记为:selectb.id,b.cfromtable1bwhereb.idins2。根据该查询条件生成发送至第二参与方的第二查询请求。上述几种实现方式均可以确定发送至各目标参与方的查询请求,第一种实现方式中,协调方与各目标参与方只需交互一次,优点是交互次数少、协调方与各目标参与方之间的交互相互独立,可以并发查询,缺点是每次交互需要发送各目标参与方持有的待查询特征的所有用户的特征数据,大数据量的传输,传输速度慢,消耗网络资源。第二种实现方式中,协调方与各目标参与方只需交互一次,优点是交互次数少、传输数据量适中,缺点是下次查询需要依据上次的查询结果,无法并发查询,影响查询速度。第三种实现方式中,协调方与各目标参与方需要交互两次,优点是传输数据量少,在确定共同用户之后可以并发查询,缺点是协调方需要与每个目标参与方交互两次,交互次数多。在实际应用中可基于待查询数据量的大小、连接方式等实际情况选择其中一种实现方式。步骤s304,将公钥和对应于各目标参与方的查询请求发送至对应的目标参与方。步骤s305,接收各目标参与方发送的密文查询结果。该密文查询结果由各目标参与方基于公钥和各自接收到的查询请求确定。协调方将公钥和第一查询请求发送至第一参与方,第一参与方响应第一查询请求,在自身持有的数据表table1中进行查询,得到第一明文查询结果。为了确保数据不泄露,利用公钥对第一明文查询结果进行加密,得到第一密文查询结果,第一参与方将第一密文查询返回给协调方。同理,协调方将公钥和第二查询请求发送至第二参与方,第二参与方响应第二查询请求,在自身持有的数据表table2中进行查询,得到第二明文查询结果。利用公钥对第二明文查询结果进行加密,得到第二密文查询结果,第二参与方将第二密文查询返回给协调方。步骤s306,根据私钥和各目标参与方发送的密文查询结果,确定目标数据。协调方接收到第一参与方的第一密文查询结果和第二参与方的第二密文查询结果后,根据预定义的连接方式,对第一密文查询结果和第二密文查询结果进行跨表连接查询,得到连接查询的结果,该连接查询的结果为密文数据。协调方再利用私钥对密文数据进行解密,得到目标数据。如此,在确保数据不出各参与方本地的前提下,实现了数据的跨表查询,不仅能够保护数据隐私、防止数据泄露,而且不会影响查询到的目标数据的可用性。本申请实施例中,私钥仅协调方持有,即使其他参与方截获了密文查询结果,由于其他参与方无法获知私钥,因此无法对密文查询结果进行解密得到明文查询结果,如此在保护各参与方隐私数据的前提下,实现用户特征数据的跨表连接查询。本申请实施例提供的数据查询方法,协调方生成用于加密的公钥和用于解密的私钥;根据至少两个待查询特征,从联邦学习的多个参与方中确定至少两个目标参与方,并确定对应于各目标参与方的查询请求,各目标参与方存储有部分待查询特征的特征数据;将公钥和对应于各目标参与方的查询请求发送至对应的目标参与方;接收各目标参与方发送的密文查询结果,密文查询结果由各目标参与方基于公钥和各自接收到的查询请求确定;根据私钥和各目标参与方发送的密文查询结果,确定目标数据。在确保数据不出各参与方本地的前提下,实现了数据的跨表查询,不仅能够保护数据隐私、防止数据泄露,而且不会影响查询到的目标数据的可用性。在一些实施例中,上述图3所示实施例中步骤s302“根据至少两个待查询特征,从联邦学习的多个参与方中确定至少两个目标参与方”,可以通过以下步骤来实现:步骤s3021,从联邦学习的多个参与方获取各参与方所存储的数据表的表属性。本申请实施例提供的方法可以应用于两个及两个以上任意数量的待查询特征,需要说明的是,该至少两个待查询特征的特征数据,存储于不同的两个参与方。下面以待查询特征的数量为两个进行举例说明。将两个待查询特征记为特征a和特征c。协调方预先从联邦学习的所有参与方获取所有参与方的表属性。这里的表属性包括数据表的表名和特征。例如,联邦学习参与方有3个:第一参与方、第二参与方和第三参与方。第一参与方的数据表参见下表1,第二参与方的数据表参见下表2,第三参与方的数据表参见下表3表1第一参与方的数据表table1idab1a1b12a2b23a3b34a4b4表2第二参与方的数据表table2idcd2c2d24c4d45c5d56c6d6表3第三参与方的数据表table3idef2e2f25e5f57e7f78e8f8各参与方的特征数据,如第一参与方的(1,2,3,4,a1,a2,a3,a4,b1,b2,b3,b4)对其他参与方和协调方是保密的,但数据表的表属性,如第一参与方的(table1;id、a、b)是无需保密的,因此协调方可以从各参与方获取各参与方数据表的表属性。如协调方可以从上述3个表中获得各参与方所存储的数据表的表属性:从第一参与方获得的表属性为(table1;id、a、b),从第二参与方获得的表属性为(table2;id、c、d),从第三参与方获得的表属性为(table3;id、e、f),其中,获得的表属性中,table1、table2和table3为表名,id为区分不同用户的标识(如身份证号等能够区分不同用户的标识),a、b、c、d、e和f为特征。步骤s3022,根据至少两个待查询特征和各参与方所存储的数据表的表属性,确定各待查询特征对应的数据表。该至少两个待查询特征的特征数据存储于联邦学习的不同参与方。协调方根据待查询特征a、待查询特征c和获得的表属性(table1;id、a、b)、(table2;id、c、d)和(table3;id、e、f),确定待查询特征a对应的数据表为table1,待查询特征c对应的数据表为table2。步骤s3023,将各数据表对应的参与方确定为目标参与方。数据表对应的参与方,即为存储数据表的参与方,table1对应的参与方为第一参与方,table2对应的参与方为第二参与方,从而确定第一参与方和第二参与方为目标参与方。本申请实施例中,协调方在接收到查询指令后,从联邦学习的各参与方获得各参与方无需保密的表属性,表属性能够表征各参与方存储的特征,然后根据待查询特征和各参与方所存储的数据表的表属性,确定得到存储待查询特征的特征数据的目标参与方。通过从各参与方获取无需保密的表属性,能够确定出各待查询特征所对应的目标参与方,为保护数据隐私的前提下实现跨表连接查询提供可能。在一些实施例中,上述图3所示实施例中步骤s303“确定对应于各目标参与方的查询请求”,可以通过以下步骤来实现:步骤s3031,根据各待查询特征和各待查询特征对应的数据表,确定对应于各目标参与方的查询条件。在确定查询条件时,可以基于以下三种不同的实现方式来实现:第一种实现方式为:对各待查询特征进行排序,确定查询顺序;按照查询顺序确定本次待查询特征;根据本次待查询特征和本次待查询特征对应的数据表,确定本次查询对应的目标参与方的查询条件。该种实现方式可应用于连接方式为内连接、左连接、右连接和全连接的应用场景中。确定查询顺序的目的在于确定每个目标参与方均已交互。在实际实现时,若能够确保能够与每一目标参与方交互,可以不按照查询顺序进行查询。在实现时,在确定了待查询特征a的特征数据存储在第一参与方的table1中,得到查询条件为:查询table1中所有用户的id和特征a的特征数据,记为:selecta.id,a.afromtable1a。同理,在确定了待查询特征c的特征数据存储在第二参与方的table2中,得到查询条件为:查询table2中所有用户的id和特征c的特征数据,记为:selectb.id,b.cfromtable2b。该种实现方式中,协调方与各目标参与方只需交互一次,优点是交互次数少、协调方与各目标参与方之间的交互相互独立,可以并发查询,缺点是每次交互需要发送各目标参与方持有的待查询特征的所有用户的特征数据,大数据量的传输,传输速度慢,消耗网络资源。第二种实现方式为:对各待查询特征进行排序,确定查询顺序;按照查询顺序确定本次待查询特征;当本次查询为首次查询时,根据第1个待查询特征和第1个待查询特征对应的数据表,确定第1次查询对应的目标参与方的查询条件;当本次查询不为首次查询时,根据上次查询得到的密文查询结果,提取上次密文查询结果的密文标识;基于上次密文查询结果的密文标识、本次待查询特征和本次待查询特征对应的数据表,确定本次查询对应的目标参与方的查询条件。该种实现方式可应用于连接方式为内连接、左连接和右连接的应用场景中。当连接方式为内连接时,确定查询顺序的目的在于确定每个目标参与方均已交互。当连接方式为左连接或右连接时,确定查询顺序的目的不仅在于确定每个目标参与方均已交互,还在于能够确保每个结果均被查询到。当连接方式为左连接时,进行左连接的表需要先于其他表,这样才能保证左连接的表的所有用户的特征数据均被查询到。当连接方式为右连接时,进行右连接的表需要先于其他表,这样才能保证右连接的表的所有用户的特征数据均被查询到。该种实现方式不适用于连接方式为全连接查询的应用场景。在实现时,若确定的查询顺序为:先查询待查询特征a,再查询待查询特征c。在确定了待查询特征a的特征数据存储在第一参与方的table1中,得到第一查询条件为:查询table1中所有用户的id和特征a的特征数据,记为:selecta.id,a.afromtable1a。在确定查询待查询特征c的查询条件时,协调方需要先获取待查询特征a的第一查询结果,基于第一查询结果确定待查询特征c的查询条件。实现步骤为:协调方根据第一查询条件生成发送至第一参与方的第一查询请求。将第一查询请求发送至第一参与方,第一参与方查询自身数据表,得到第一明文查询结果,利用公钥对第一明文查询结果进行加密,得到并返回第一密文查询结果至协调方。协调方从第一密文查询结果中提取出用户标识集合s1={s1,s2,s3},这里的s1,s2,s3为加密后的用户标识。在确定了待查询特征c的特征数据存储在第二参与方的table2中,确定第二查询条件为:查询table2中属于s1的用户id和特征c的特征数据,记为:selectb.id,b.cfromtable2bwhereb.idins1。该种实现方式中,协调方与各目标参与方只需交互一次,优点是交互次数少、传输数据量适中,缺点是下次查询需要依据上次的查询结果,无法并发查询,影响查询速度。第三种实现方式为:对各待查询特征进行排序,确定查询顺序;获得各目标参与方的目标密文标识;按照查询顺序确定本次待查询特征;根据本次待查询特征、目标密文标识和本次待查询特征对应的数据表,确定本次查询对应的目标参与方的查询条件。该种实现方式可应用于连接方式为内连接和全连接的应用场景中。当连接方式为内连接时,目标密文标识为各目标参与方的密文标识的交集;当连接方式为全连接时,目标密文标识为各目标参与方的密文标识的并集。确定查询顺序的目的在于确定每个目标参与方均已交互。在实际实现时,若能够确保能够与每一目标参与方交互,可以不按照查询顺序进行查询。在实现时,可以先分别查询各目标参与方的所有用户,按照连接方式对各目标参与方的用户进行连接确定目标用户。如在确定了待查询特征a的特征数据存储在第一参与方的table1中,得到查询条件为:查询table1中所有用户的id,记为:selecta.idfromtable1a。在确定了待查询特征c的特征数据存储在第二参与方的table2中,得到查询条件为:查询table2中所有用户的id,记为:selectb.idfromtable1b。然后根据两次密文查询结果确定目标用户,将目标用户的用户标识集合记为s2={s1,s2},这里的s1,s2为加密后的用户标识。在确定了目标用户后,再分别向各目标参与方发送查询请求,以查询目标用户的特征数据。确定第一参与方的第一查询条件为:查询table1中属于s2的用户的特征a的特征数据,记为:selecta.id,a.afromtable1awherea.idins2。同理,确定第二参与方的第二查询条件为:查询table2中属于s2的用户的特征c的特征数据,记为:selectb.id,b.cfromtable1bwhereb.idins2。步骤s3032,基于对应于各目标参与方的查询条件,生成对应于各目标参与方的查询请求。本申请实施例提供的方法,根据各待查询特征和各待查询特征对应的数据表,确定对应于各目标参与方的查询条件,进而生成对应的查询请求,将对应查询请求发送至对应的目标参与方,实现对各目标参与方的数据查询。在一些实施例中,上述图3所示实施例中步骤s306“根据私钥和各目标参与方发送的密文查询结果,确定目标数据”,可以通过以下步骤来实现:步骤s3061,根据预定义的连接方式对各目标参与方发送的密文查询结果进行连接,得到密文数据。这里,连接方式包括内连接、左连接、右连接和全连接。本申请实施例中,当连接方式为内连接时,以上述步骤s3021中提供的数据表,结合步骤s3031中第一种实现方式确定查询条件进行举例说明。协调方发送至第一参与方的第一查询请求中携带的第一查询条件为selecta.id,a.afromtable1a。第一参与方根据第一查询条件在table1中进行查询,得到第一明文查询结果如表4所示:表4内连接得到的第一明文查询结果ida1a12a23a34a4第一参与方利用公钥对第一明文查询结果进行加密,得到第一密文查询结果,本申请实施例中,用“[[]]”表示加密,得到的第一密文查询结果参见表5:表5内连接得到的第一密文查询结果ida[[1]][[a1]][[2]][[a2]][[3]][[a3]][[4]][[a4]]协调方发送至第二参与方的第二查询请求中携带的第二查询条件为selectb.id,b.cfromtable2b。第二参与方根据第二查询条件在table2中进行查询,得到第二明文查询结果如表6所示:表6内连接得到的第二明文查询结果idc2c24c45c56c6第二参与方利用公钥对第二明文查询结果进行加密,得到的第二密文查询结果参见表7:表7内连接得到的第二密文查询结果idc[[2]][[c2]][[4]][[c4]][[5]][[c5]][[6]][[c6]]协调方从第一参与方接收到如表5所示的第一密文查询结果,从第二参与方接收到如表7所示的第二密文查询结果,对第一密文查询结果和第二密文查询结果进行内连接,得到的密文数据如表8所示:表8内连接得到的密文数据idac[[2]][[a2]][[c2]][[4]][[a4]][[c4]]本申请实施例中,当连接方式为左连接时,查询顺序为先查询待查询特征a,再查询待查询特征c。以上述步骤s3021中提供的数据表,结合步骤s3031中第二种实现方式确定查询条件进行举例说明。协调方发送至第一参与方的第一查询请求中携带的第一查询条件为selecta.id,a.afromtable1a。第一参与方根据第一查询条件在table1中进行查询,得到第一明文查询结果如表9所示:表9左连接得到的第一明文查询结果ida1a12a23a34a4第一参与方利用公钥对第一明文查询结果进行加密,得到的第一密文查询结果参见表10:表10左连接得到的第一密文查询结果ida[[1]][[a1]][[2]][[a2]][[3]][[a3]][[4]][[a4]]协调方从第一参与方接收到如表10所示的第一密文查询结果,从第一密文查询结果中提取出密文标识集合s1={[[1]],[[2]],[[3]],[[4]]}。确定待查询特征c对应的第二查询条件为:selectb.id,b.cfromtable2bwhereb.idins1。第二参与方根据第二查询条件在table2中进行查询,得到第二明文查询结果如表11所示:表11左连接得到的第二明文查询结果idc2c24c4第二参与方利用公钥对第二明文查询结果进行加密,得到的第二密文查询结果参见表12:表12左连接得到的第二密文查询结果idc[[2]][[c2]][[4]][[c4]]协调方从第一参与方接收到如表10所示的第一密文查询结果,从第二参与方接收到如表12所示的第二密文查询结果,对第一密文查询结果和第二密文查询结果进行左连接,得到的密文数据如表13所示:表13左连接得到的密文数据这里需要说明的是,由于第二密文查询结果中不具有id为[[1]]、[[3]]的特征数据,因此为空,表示为null。本申请实施例中,当连接方式为全连接时,以上述步骤s3021中提供的数据表,结合步骤s3031中第三种实现方式确定查询条件进行举例说明。协调方先分别查询各目标参与方的所有用户,按照全连接的连接方式对各目标参与方的用户进行连接确定目标用户。协调方向第一参与方发送携带有查询条件selecta.idfromtable1a的查询请求,得到密文标识集合sa={[[1]],[[2]],[[3]],[[4]]};协调方向第二参与方发送携带有查询条件selectb.idfromtable1b的查询请求,得到密文标识集合sb={[[2]],[[4]],[[5]],[[6]]}。将sa和sb进行全连接,得到目标用户s2={[[1]],[[2]],[[3]],[[4]],[[5]],[[6]]}。协调方发送至第一参与方的第一查询请求中携带的第一查询条件为selecta.id,a.afromtable1awherea.idins2。第一参与方根据第一查询条件在table1中进行查询,得到第一明文查询结果如表14所示:表14全连接得到的第一明文查询结果ida[[1]]a1[[2]]a2[[3]]a3[[4]]a4[[5]]null[[6]]null第一参与方利用公钥对第一明文查询结果进行加密,得到的第一密文查询结果参见表15:表15全连接得到的第一密文查询结果ida[[1]][[a1]][[2]][[a2]][[3]][[a3]][[4]][[a4]][[5]]null[[6]]null协调方发送至第二参与方的第二查询请求中携带的第二查询条件为selectb.id,b.cfromtable1bwhereb.idins2。第二参与方根据第二查询条件在table2中进行查询,得到第二明文查询结果如表16所示:表16全连接得到的第二明文查询结果idc[[1]]null[[2]]c2[[3]]null[[4]]c4[[5]]c5[[6]]c6第二参与方利用公钥对第二明文查询结果进行加密,得到的第二密文查询结果参见表17:表17全连接得到的第二密文查询结果idc[[1]]null[[2]][[c2]][[3]]null[[4]][[c4]][[5]][[c5]][[6]][[c6]]协调方从第一参与方接收到如表15所示的第一密文查询结果,从第二参与方接收到如表17所示的第二密文查询结果,对第一密文查询结果和第二密文查询结果进行全连接,得到的密文数据如表18所示:表18全连接得到的密文数据idac[[1]][[a1]]null[[2]][[a2]][[c2]][[3]][[a3]]null[[4]][[a4]][[c4]][[5]]null[[c5]][[6]]null[[c6]]步骤s3062,利用私钥对密文数据进行解密,得到目标数据。协调方利用预先生成的私钥对步骤s3061得到的密文数据进行解密,得到目标数据。例如,对步骤s3061中表8、表13和表18所示的密文数据进行解密,分别得到对应的目标数据如表19、表20和表21所示:表19内连接得到的目标数据idac2a2c24a4c4表20左连接得到的目标数据idac1a1null2a2c23a3null4a4c4表21全连接得到的目标数据本申请实施例中,协调方可根据预先生成的私钥对密文数据进行同态解密,得到目标数据,该目标数据即为待查询特征的特征数据。本申请实施例提供的方法,协调方根据预定义的连接方式对各目标参与方发送的密文查询结果进行对应连接方式的连接,得到密文数据,再利用私钥对其解密得到目标数据进行解密,得到待查询特征的特征数据。在确保数据不出本地的前提下,实现了数据的跨表查询,而且不会影响查询到的目标数据的可用性。基于前述的实施例,本申请实施例再提供一种数据查询方法,图4为本申请实施例提供的数据查询方法的另一种实现流程示意图,应用于图1所示的网络架构中的目标参与方,如图4所示,该数据查询方法包括以下步骤:步骤s401,接收协调方发送的公钥和查询请求。在进行跨表数据查询时,协调方生成用于加密的公钥和用于解密的私钥,然后将公钥发送至各目标参与方,使各目标参与方在确保各自数据隐私的前提下,利用公钥进行数据跨表查询。步骤s402,对查询请求进行解析,得到查询请求携带的查询条件。目标参与方接收到查询请求后,对其进行解析,得到查询请求携带的查询条件。仍以上述举例进行说明,当目标参与方为第一参与方时,对第一查询请求进行解析,得到第一查询条件。本申请实施例中的查询条件,由协调方根据待查询特征和待查询特征对应的数据表确定的,确定查询条件的实现方式可参见步骤s3031的详细描述。步骤s403,基于查询条件在自身存储空间中进行查找,得到明文查询结果。例如,目标参与方为第一参与方,其数据表table1如表1所示,协调方发送至第一参与方的第一查询请求中携带的第一查询条件为selecta.id,a.afromtable1a。第一参与方根据第一查询条件在表1所示的table1中进行查询,得到的第一明文查询结果如表4所示。步骤s404,利用公钥对明文查询结果进行加密,得到密文查询结果。第一参与方利用公钥对第一明文查询结果进行加密,得到的第一密文查询结果如表5所示。步骤s405,将密文查询结果发送至协调方。本申请实施例提供的数据查询方法,应用于联邦学习的目标参与方,目标参与方为存储有部分待查询数据的参与方,方法包括:接收协调方发送的公钥和查询请求;对查询请求进行解析,得到查询请求携带的查询条件;基于查询条件在自身存储空间中进行查找,得到明文查询结果;利用公钥对明文查询结果进行加密,得到密文查询结果;将密文查询结果发送至协调方。如此,在确保数据不出参与方本地的前提下,实现了数据的跨表查询,不仅能够保护数据隐私、防止数据泄露,而且不会影响查询到的目标数据的可用性。基于前述的实施例,本申请实施例再提供一种数据查询方法,图5为本申请实施例提供的数据查询方法的再一种实现流程示意图,应用于图1所示的网络架构,如图5所示,该数据查询方法包括以下步骤:步骤s501,协调方生成用于加密的公钥和用于解密的私钥。本申请实施例中,协调方在进行联邦学习下的数据查询时,协调方生成用于加密的公钥和用于解密的私钥。通过公钥,使得各参与方无需将自身存储的用户特征数据发送至对方或协调方,能够保护各参与方数据的隐私。在一种实现方式中,协调方生成的公钥可以为用于同态加密的公钥,生成的私钥可以为用于同态解密的私钥。步骤s502,协调方从联邦学习的多个参与方获取各参与方所存储的数据表的表属性。协调方获得各参与方所存储的数据表的表属性:从第一参与方获得的表属性为(table1;id、a、b),从第二参与方获得的表属性为(table2;id、c、d),从第三参与方获得的表属性为(table3;id、e、f),其中,获得的表属性中,table1、table2和table3为表名,id为区分不同用户的标识(如身份证号等能够区分不同用户的标识),a、b、c、d、e和f为特征。步骤s503,协调方根据至少两个待查询特征和各参与方所存储的数据表的表属性,确定各待查询特征对应的数据表。协调方根据待查询特征a、待查询特征c和获得的表属性(table1;id、a、b)、(table2;id、c、d)和(table3;id、e、f),确定待查询特征a对应的数据表为table1,待查询特征c对应的数据表为table2。步骤s504,协调方将各数据表对应的参与方确定为目标参与方。这里,各目标参与方存储有部分待查询特征的特征数据。数据表对应的参与方,即为存储数据表的参与方,table1对应的参与方为第一参与方,table2对应的参与方为第二参与方,从而确定第一参与方和第二参与方为目标参与方。步骤s505,协调方根据各待查询特征和各待查询特征对应的数据表,确定对应于各目标参与方的查询条件。在确定查询条件时,可以基于以下三种不同的实现方式来实现:第一种实现方式为:对各待查询特征进行排序,确定查询顺序;按照查询顺序确定本次待查询特征;根据本次待查询特征和本次待查询特征对应的数据表,确定本次查询对应的目标参与方的查询条件。第二种实现方式为:对各待查询特征进行排序,确定查询顺序;按照查询顺序确定本次待查询特征;当本次查询为首次查询时,根据第1个待查询特征和第1个待查询特征对应的数据表,确定第1次查询对应的目标参与方的查询条件;当本次查询不为首次查询时,根据上次查询得到的密文查询结果,提取上次密文查询结果的密文标识;基于上次密文查询结果的密文标识、本次待查询特征和本次待查询特征对应的数据表,确定本次查询对应的目标参与方的查询条件。第三种实现方式为:对各待查询特征进行排序,确定查询顺序;获得各目标参与方的目标密文标识;按照查询顺序确定本次待查询特征;根据本次待查询特征、目标密文标识和本次待查询特征对应的数据表,确定本次查询对应的目标参与方的查询条件。步骤s506,协调方基于对应于各目标参与方的查询条件,生成对应于各目标参与方的查询请求。步骤s507,协调方将公钥和对应于各目标参与方的查询请求发送至对应的目标参与方。步骤s508,目标参与方对查询请求进行解析,得到查询请求携带的查询条件。本申请实施例中,目标参与方以第一参与方和第二参与方示出。第一参与方接收到第一查询请求后,对其进行解析,得到第一查询请求携带的第一查询条件;第二参与方接收到第二查询请求后,对其进行解析,得到第二查询请求携带的第二查询条件。步骤s509,目标参与方基于查询条件在自身存储空间中进行查找,得到明文查询结果。第一参与方在数据表table1中以第一查询条件进行查询,得到的第一明文查询结果;第二参与方再数据表table2中以第二查询条件进行查询,得到第二明文查询结果。步骤s510,目标参与方利用公钥对明文查询结果进行加密,得到密文查询结果。第一参与方利用公钥对第一明文查询结果进行同态加密,得到第一密文查询结果;第二参与方利用公钥对第二明文查询结果进行同态加密,得到第二密文查询结果。步骤s511,目标参与方将密文查询结果发送至协调方。第一参与方将第一密文查询结果发送至协调方;第二参与方将第二密文查询结果发送至协调方。步骤s512,协调方根据预定义的连接方式对各目标参与方发送的密文查询结果进行连接,得到密文数据。这里,连接方式包括内连接、左连接、右连接和全连接。步骤s513,协调方利用私钥对密文数据进行解密,得到目标数据。本申请实施例中,协调方可根据预先生成的私钥对密文数据进行同态解密,得到目标数据,该目标数据即为待查询特征的特征数据。本申请实施例提供的数据查询方法,协调方根据至少两个待查询特征,从联邦学习的多个参与方中确定至少两个目标参与方,并确定对应于各目标参与方的查询请求,然后将预先生成的公钥和对应于各目标参与方的查询请求发送至对应的目标参与方。各目标参与方接收到查询请求后,分别查询自身的数据表,得到明文查询结果,再利用公钥对明文查询结果进行加密,得到密文查询结果。协调方接收各目标参与方发送的密文查询结果,根据私钥和各目标参与方发送的密文查询结果,确定目标数据。如此,在确保各参与方的数据不出各参与方本地的前提下,实现了数据的跨表查询,不仅能够保护数据隐私、防止数据泄露,而且未对数据进行匿名化等处理,不会影响查询到的目标数据的可用性。下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。数据库查询是常用的数据库技术,通常来说,当前的数据库存储都是以关键字(即上文中的标识)key和值(即上文中的特征数据)value组成的(key,value)对的形式保存。数据库查询指的是用户利用key值,在数据库中,查找key对应的value。多表查询是指,数据分布在多个数据库表中,需要联合多个数据库表来进行查询,比较典型的有内连接、左连接、右连接三种方式。当多个表分布在不同的机构或者客户端时,由于需要防止隐私数据泄露,我们不能够直接将这些表共享,那么如何在数据不共享的前提下,能够有效查询出连接结果呢?当前的隐私查询技术,要么会将多个表集中在一起,要么会通过加密或者匿名化技术来防止泄露,但会造成数据的可用性降低,本申请实施例介绍一种使用联邦学习实现数据库跨表连接查询技术。当前的数据库隐私保护查询技术有数据脱敏、匿名化、差分隐私和同态加密。但这些方案要么会将多个表集中在一起,违反了隐私保护法中数据出域的限制条件;要么会通过加密或者匿名化技术来防止数据泄露,但会造成数据的可用性降低。本申请实施例提出一种利用联邦学习技术,来实现跨表的连接查询。假如每一个数据库表都分布在不同客户端中,数据不允许出本地。参见图6,图6为本申请实施例提供的数据库表分布示意图,其中,数据库1至数据库n分布在服务端2下的不同的客户端1至客户端n中,数据库k分布在客户端k中,k为1至n之间的整数。为了方便讲解,不失一般性,下面以两个表的连接查询作为例子,其中两个表分别如下所示,其中table22分布在客户端a中,table23分布在客户端b中。表22客户端a中的数据库table22idab1a1b12a2b23a3b34a4b4表23客户端b中的数据库table23idcd2c2d24c4d45c5d56c6d6联邦学习实现内连接:内连接定义:返回两个表中连接字段相等的行。其语法如下所示:selecta.id,a.a,b.cfromtable22ajointable23b;这里的table22指的是客户端a中的表22,table23指的是客户端b中的表23。返回的结果值为:表24客户端a的table22和客户端b的table23的内连接结果idac2a2c24a4c4图7为本申请实施例提供的联邦学习实现内连接的数据查询方法的一种实现流程示意图,如图7所示,该数据查询方法包括以下步骤:步骤s701:服务端向客户端a和客户端b分别发送用于加密的公钥。步骤s702:服务端向客户端a发送第一sql语句。第一sql语句为:selecta.idfromtable22a。步骤s703:客户端a接收到第一sql语句,本地执行,得到所有id值,利用公钥加密后,返回到服务端。步骤s704:服务端提取客户端a返回的所有加密id,得到加密id集合s1,将s1和第二aql语句发送给客户端b。其中,从客户端a发送的查找结果中提取得到的加密id集合s1={[[1]],[[2]],[[3]],[[4]]},第二sql语句为:selectb.id,b.cfromtable23bwhereb.idins1。步骤s705:客户端b对自身的数据表进行加密,执行第二sql语句,得到加密状态下的查找结果,将查找结果发送回服务端。客户端b利用公钥对自身的数据表进行加密,在加密状态下,执行第二sql语句,得到的查找结果如表25所示:表25客户端b在加密状态下执行第二sql语句得到的查找结果idc[[2]][[c2]][[4]][[c4]]步骤s706:服务端提取出客户端b发送的查找结果的id值,得到加密id集合s2,将s2和第三sql语句发送给客户端a。其中,从客户端b发送的查找结果中提取得到的加密id集合s2={[[2]],[[4]]},第三sql语句为:selecta.id,a.afromtable22awherea.idins2。步骤s707:客户端a执行第三sql语句,得到查找结果,将查找结果返回给服务端。客户端a利用公钥对自身的数据表进行加密,在加密状态下,执行第三sql语句,得到的查找结果如表26所示:表26客户端a在加密状态下执行第三sql语句得到的查找结果ida[[2]][[a2]][[4]][[a4]]步骤s708:服务器在加密状态下,将客户端执行第二sql语句得到的查找结果和客户端a执行第三sql语句得到的查找结果联合起来,在服务端执行内连接操作,得到密文数据,对密文数据进行解密得到目标数据。在服务端执行内连接操作的sql语句为:selecta.id,a.a,b.cfromtable25ajointable26b,得到如下表27所示的结果。表27服务端执行内连接操作得到的密文数据idac[[2]][[a2]][[c2]][[4]][[a4]][[c4]]对其解密后,得到最终结果如表24所示。联邦学习实现左连接:左连接定义:又称为左外连接,执行左连接,左表的数据将全部保留,右表的数据,能匹配,正确保留,不能匹配其他表的字段都置空null。以表22和表23为例,表22为左表,表23为右表,其sql语句语法如下:selecta.id,a.a,b.cfromtable22aleftjointable23b;执行结果如下表28所示:表28客户端a的table22和客户端b的table23的左连接结果idac1a1null2a2c23a3null4a4c4图8为本申请实施例提供的联邦学习实现左连接的数据查询方法的一种实现流程示意图,如图8所示,该数据查询方法包括以下步骤:步骤s801:服务端向客户端a和客户端b发送用于加密的公钥。步骤s802:服务端向客户端a发送第一sql语句。第一sql语句为:selecta.id,a.afromtable22a。步骤s803:客户端a接收到第一sql语句,本地执行,得到明文查询结果,对明文查询结果进行加密,得到查找结果,将查找结果发送回服务端。客户端a利用公钥对第一sql语句的明文查询结果进行加密,得到的查找结果如表29所示:表29客户端a对执行第一sql语句得到的结果进行加密得到的查找结果ida[[1]][[a1]][[2]][[a2]][[3]][[a3]][[4]][[a4]]步骤s804:服务端提取客户端a返回的查找结果中的所有加密id,得到加密id集合s1,将s1和第二sql语句发送给客户端b。其中,从客户端a发送的查找结果中提取得到的加密id集合s1={[[1]],[[2]],[[3]],[[4]]},第二sql语句为:selectb.id,b.cfromtable23bwhereb.idins1。步骤s805:客户端b对自身的数据表进行加密,执行第二sql语句,得到加密状态下的查找结果,将查找结果发送回服务端。客户端b利用公钥对自身的数据表进行加密,在加密状态下,执行第二sql语句,得到的查找结果如表30所示:表30客户端b在加密状态下执行第二sql语句得到的查找结果idc[[2]][[c2]][[4]][[c4]]步骤s806:服务端将客户端a返回的查找结果和客户端b返回的查找结果联合起来,在服务端执行左连接操作,得到密文数据,对密文数据进行解密得到目标数据。在服务端执行左连接操作的sql语句为:selecta.id,a.a,b.cfromtable29aleftjointable30b,得到如下表31所示的结果。表31服务端执行左连接操作得到的密文数据idac[[1]][[a1]]null[[2]][[a2]][[c2]][[3]][[a3]]null[[4]][[a4]][[c4]]对其解密后,得到最终结果如表28所示。联邦学习实现右连接:右连接定义:又称为右外连接,执行右连接,右表的数据将全部保留,左表的数据,能匹配,正确保留,不能匹配其他表的字段都置空null。以表22和表23为例,表22为左表,表23为右表,其sql语句语法如下:selectb.id,a.a,b.cfromtable22arightjointable23b;执行结果如下表32所示:表32客户端a的table22和客户端b的table23的右连接结果idac2a2c24a4c45nullc56nullc6图9为本申请实施例提供的联邦学习实现右连接的数据查询方法的一种实现流程示意图,如图9所示,该数据查询方法包括以下步骤:步骤s901:服务端向客户端a和客户端b发送用于加密的公钥。步骤s902:服务端向客户端b发送第一sql语句。第一sql语句为:selectb.id,b.cfromtable23b步骤s903:客户端b接收到第一sql语句,本地执行,得到明文查询结果,对明文查询结果进行加密,得到查找结果,将查找结果发送回服务端。客户端b利用公钥对第一sql语句的明文查询结果进行加密,得到的查找结果如表33所示:表33客户端b对执行第一sql语句得到的结果进行加密得到的查找结果idc[[2]][[c2]][[4]][[c4]][[5]][[c5]][[6]][[c6]]步骤s904:服务端提取客户端b返回查找结果中的所有加密id,得到加密id集合s1,将s1发送和第二sql语句发送给客户端a。其中,从客户端b发送的查找结果中提取得到的加密id集合s1={[[2]],[[4]],[[5]],[[6]]},第二sql语句为:selecta.id,a.afromtable22awherea.idins1。步骤s905:客户端a对自身的数据表进行加密,执行第二sql语句,得到加密状态下的查找结果,将查找结果发送回服务端。客户端b利用公钥对自身的数据表进行加密,在加密状态下,执行第二sql语句,得到的查找结果如表30所示:表34客户端b在加密状态下执行第二sql语句得到的查找结果ida[[2]][[a2]][[4]][[a4]]步骤s906:服务端将客户端b返回的查找结果和客户端a返回的查找结果联合起来,在服务端执行右连接操作,得到密文数据,对密文数据进行解密得到目标数据。在服务端执行右连接操作的sql语句为:selecta.id,b.a,a.cfromtable33aleftjointable34b,得到如下表35所示的结果。表35服务端执行右连接操作得到的密文数据idac[[2]][[a2]][[c2]][[4]][[a4]][[c4]][[5]]null[[c5]][[6]]null[[c6]]对其解密后,得到最终结果如表32所示。本申请实施例提供的方法,在确保数据不出本地的前提下,能够实现数据的跨表连接查询,不仅能够保护数据隐私、防止数据泄露,而且不会影响查询到的目标数据的可用性。下面继续说明本申请实施例提供的数据查询装置的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器140的数据查询装置90应用于联邦学习的协调方,所述数据查询装置90中的软件模块可以包括:生成模块91,用于生成用于加密的公钥和用于解密的私钥;第一确定模块92,用于至少两个待查询特征,从联邦学习的多个参与方中确定至少两个目标参与方,各目标参与方存储有部分待查询特征的特征数据;第二确定模块93,用于确定对应于各目标参与方的查询请求;第一发送模块94,用于将所述公钥和对应于各目标参与方的查询请求发送至对应的目标参与方;第一接收模块95,用于接收所述各目标参与方发送的密文查询结果,所述密文查询结果由所述各目标参与方基于所述公钥和各自接收到的查询请求确定;第三确定模块96,用于根据所述私钥和所述各目标参与方发送的密文查询结果,确定目标数据。在一些实施例中,所述第一确定模块92,还用于:从联邦学习的多个参与方获取各参与方所存储的数据表的表属性;根据所述至少两个待查询特征和所述各参与方所存储的数据表的表属性,确定各待查询特征对应的数据表,所述至少两个待查询特征的特征数据存储于联邦学习的不同参与方;将各数据表对应的参与方确定为目标参与方。在一些实施例中,所述第二确定模块93,还用于:根据所述各待查询特征和所述各待查询特征对应的数据表,确定对应于各目标参与方的查询条件;基于所述对应于各目标参与方的查询条件,生成对应于各目标参与方的查询请求。在一些实施例中,所述第二确定模块93,还用于:对所述各待查询特征进行排序,确定查询顺序;按照查询顺序确定本次待查询特征;根据本次待查询特征和本次待查询特征对应的数据表,确定本次查询对应的目标参与方的查询条件。在一些实施例中,所述第二确定模块93,还用于:对所述各待查询特征进行排序,确定查询顺序;按照查询顺序确定本次待查询特征;当本次查询为首次查询时,根据第1个待查询特征和所述第1个待查询特征对应的数据表,确定第1次查询对应的目标参与方的查询条件;当本次查询不为首次查询时,根据上次查询得到的密文查询结果,提取上次密文查询结果的密文标识;基于上次密文查询结果的密文标识、本次待查询特征和本次待查询特征对应的数据表,确定本次查询对应的目标参与方的查询条件。在一些实施例中,所述第三确定模块96,还用于:根据预定义的连接方式对所述各目标参与方发送的密文查询结果进行连接,得到密文数据,所述连接方式包括内连接、左连接、右连接和全连接;利用所述私钥对所述密文数据进行解密,得到目标数据。基于前述的实施例,本申请实施例再提供一种数据查询装置,应用于联邦学习的目标参与方,所述目标参与方为存储有部分待查询数据的参与方,所述数据查询装置中的软件模块可以包括:第二接收模块,用于接收协调方发送的公钥和查询请求;解析模块,用于对所述查询请求进行解析,得到所述查询请求携带的查询条件;查询模块,用于基于所述查询条件在自身存储空间中进行查找,得到明文查询结果;加密模块,用于利用所述公钥对所述明文查询结果进行加密,得到密文查询结果;第二发送模块,用于将所述密文查询结果发送至所述协调方。这里需要指出的是:以上数据查询装置实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果。对于本申请数据查询装置实施例中未披露的技术细节,本领域的技术人员请参照本申请方法实施例的描述而理解。本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的数据查询方法。本申请实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图3示出的方法。在一些实施例中,存储介质可以是fram、rom、prom、eprom、eeprom、闪存、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(html,hypertextmarkuplanguage)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1