掌桥专利:专业的专利平台
掌桥专利
首页

一种基于隐私数据的查询方法及相关设备

文献发布时间:2024-01-17 01:14:25


一种基于隐私数据的查询方法及相关设备

技术领域

本说明书一个或多个实施例涉及数据计算技术领域,尤其涉及一种基于隐私数据的查询方法及相关设备。

背景技术

在大数据时代下,隐私保护和数据安全越来越被各方看重。其中,多方安全计算技术可以在数据不暴露的情况下,准确地完成隐私数据的计算任务,为数据的安全、合规使用提供了强力支撑。SQL是一种在商业智能(BusinessIntelligence,BI)场景下常用的编程语言。将SQL安全计算化可以使得用户在不感知安全计算逻辑的情况下,用SQL语言安全的处理数据。其中,利用SQL语言中的where子句进行有条件的查询以获得数据来执行后续计算是一种常见的场景。

因此,如何提升基于数据查询的计算效率,从而实现高效、可靠的多方安全计算是亟待解决的问题。

发明内容

有鉴于此,本说明书一个或多个实施例提供一种基于隐私数据的查询方法及相关设备。

第一方面,本说明书提供了一种基于隐私数据的查询方法,应用于第一计算设备,所述方法包括:

获取待执行的查询语句,确定所述查询语句对应的查询条件和待查询的数据表;所述数据表包括参与多方安全计算的所述第一计算设备和其他至少一个计算设备所持有的用户隐私数据;

基于安全乱序协议,对所述数据表中包括的多行数据进行安全乱序处理,获得对应的乱序数据表;

公开所述查询语句对应的明文执行结果,以基于所述明文执行结果,确定所述乱序数据表中满足所述查询条件的目标数据,并针对所述目标数据执行基于用户隐私数据的安全计算。

在一示出的实施方式中,所述查询语句包括SQL数据库语言中的where子句;所述where子句包括所述查询条件。

在一示出的实施方式中,所述数据表包括参与多方安全计算的所述第一计算设备和其他至少一个计算设备所持有的用户隐私数据构成的共享share形式的数据表。

在一示出的实施方式中,所述方法还包括:

执行所述查询语句,计算得到所述where子句对应的share形式的条件向量;

基于所述安全乱序协议,对所述条件向量包括的多个元素进行安全乱序处理,获得对应的share形式的乱序条件向量。

在一示出的实施方式中,所述公开所述查询语句对应的明文执行结果,包括:

在对所述数据表中包括的多行数据进行安全乱序处理,得到对应的所述乱序数据表后,基于所述share形式的乱序条件向量,公开对应的明文的乱序条件向量。

在一示出的实施方式中,所述明文的乱序条件向量中的每个元素为0或者1;所述基于所述明文执行结果,确定所述乱序数据表中满足所述查询条件的目标数据,包括:

如果所述明文的乱序条件向量中的第i个元素为1,则确定所述乱序数据表中的第i行数据为满足所述查询条件的所述目标数据;i为大于或者等于1的整数;

如果所述明文的乱序条件向量中的第i个元素为0,则确定所述乱序数据表中的所述第i行数据不满足所述查询条件。

在一示出的实施方式中,所述安全乱序协议包括基于秘密分享算法或者同态加密算法实现的安全乱序协议。

第二方面,本说明书提供了一种基于隐私数据的查询装置,应用于第一计算设备,所述装置包括:

获取单元,用于获取待执行的查询语句,确定所述查询语句对应的查询条件和待查询的数据表;所述数据表包括参与多方安全计算的所述第一计算设备和其他至少一个计算设备所持有的用户隐私数据;

安全乱序单元,用于基于安全乱序协议,对所述数据表中包括的多行数据进行安全乱序处理,获得对应的乱序数据表;

确定单元,用于公开所述查询语句对应的明文执行结果,以基于所述明文执行结果,确定所述乱序数据表中满足所述查询条件的目标数据,并针对所述目标数据执行基于用户隐私数据的安全计算。

在一示出的实施方式中,所述查询语句包括SQL数据库语言中的where子句;所述where子句包括所述查询条件。

在一示出的实施方式中,所述数据表包括参与多方安全计算的所述第一计算设备和其他至少一个计算设备所持有的用户隐私数据构成的共享share形式的数据表。

在一示出的实施方式中,所述装置还包括:

执行单元,用于执行所述查询语句,计算得到所述where子句对应的share形式的条件向量;

所述安全乱序单元,具体用于:

基于所述安全乱序协议,对所述条件向量包括的多个元素进行安全乱序处理,获得对应的share形式的乱序条件向量。

在一示出的实施方式中,所述确定单元,具体用于:

在对所述数据表中包括的多行数据进行安全乱序处理,得到对应的所述乱序数据表后,基于所述share形式的乱序条件向量,公开对应的明文的乱序条件向量。

在一示出的实施方式中,所述明文的乱序条件向量中的每个元素为0或者1;所述确定单元,具体用于:

如果所述明文的乱序条件向量中的第i个元素为1,则确定所述乱序数据表中的第i行数据为满足所述查询条件的所述目标数据;i为大于或者等于1的整数;

如果所述明文的乱序条件向量中的第i个元素为0,则确定所述乱序数据表中的所述第i行数据不满足所述查询条件。

在一示出的实施方式中,所述安全乱序协议包括基于秘密分享算法或者同态加密算法实现的安全乱序协议。

相应地,本说明书还提供了一种计算设备,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述第一方面所述的基于隐私数据的查询方法。

相应地,本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如上述第一方面所述的基于隐私数据的查询方法。

综上所述,在多方安全计算的场景下,为了不泄露各方数据以及中间计算结果,计算通常保持在共享(share)状态进行,相应的,各方数据和中间计算结果均以共享形式由各方持有,单方无法获知完整的数据。基于此,本申请在执行相应的查询语句以针对多方持有的数据进行有条件的数据查询时,可以先基于安全乱序协议,将参与多方安全计算的第一计算设备和其他方持有的用户隐私数据所构成的数据表进行安全乱序处理,使得该数据表中包含的多行数据的顺序打乱,从而得到对应的乱序数据表。然后,本申请可以直接公开上述查询语句的明文执行结果,即,使得本次查询语句的计算不再保持共享状态,从而可以根据已公开的明文执行结果直接从该乱序数据表中确定满足查询条件的数据,后续只需基于这些满足条件的数据进行相应计算,而不满足条件的数据则可以直接剔除,无需再参与后续计算。如此,由于数据表已进行安全乱序处理,即使直接公开了查询语句的执行结果,也并没有泄露满足查询条件的究竟是原本数据表中的哪几行数据,从而可以在保证多方安全计算的可靠性和用户隐私数据安全的前提下,极大程度上避免了不必要的计算,提升了计算效率。

附图说明

图1是一示例性实施例提供的一种基于隐私数据的查询方法的流程示意图;

图2是一示例性实施例提供的一种基于隐私数据的查询装置的结构示意图;

图3是一示例性实施例提供的一种计算设备的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。

需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。

此外,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。

首先,对本说明书中的部分用语进行解释说明,以便于本邻域技术人员理解。

(1)多方安全计算(Secure Multi-Party Computation,SMPC),用于解决一组互不信任的参与方之间保护隐私的协同计算问题。SMPC可以确保数据输入的独立性,数据计算的正确性,同时不泄露各输入数据给参与计算的其他方。

(2)秘密共享(SecretSharing,SS),或者称之为秘密分享,是多方安全计算中的一种常用安全协议,在多方安全计算过程中,为了不泄露各方数据以及中间计算结果,计算通常保持在共享(share)状态进行。秘密分享通过将秘密信息(例如各方数据以及中间计算结果)以适当的方式进行拆分,并将拆分后的每一个部分交由不同的参与者进行管理,每个参与者无法独自恢复秘密信息,只有若干个参与者一同协作才能恢复秘密信息。多方安全计算中常用的几种秘密共享形式例如有算术共享(Arithmetic Sharing)、布尔共享(BooleanSharing)、姚氏共享(Yao's Sharing),等等,本说明书对此不做具体限定。

(3)安全乱序协议,参与安全计算的多方共同对彼此持有的数据进行安全乱序,使得彼此都不知道数据的关系。在一示出的实施方式中,安全乱序协议可以包括基于秘密分享算法或者同态加密算法实现的安全乱序协议。

(4)SQL(Structured Query Language),是具有数据操纵和数据定义等多种功能的数据库语言,SQL语言具有交互性特点,能为用户提供极大的便利。数据库管理系统可以充分利用SQL语言以提高计算机应用系统的工作质量与效率。SQL语言不仅能独立应用于终端,还可以作为子语言与其他程序语言一起参与程序设计,优化程序功能,进而为用户提供更多更全面的信息。SQL是一种在商业智能(BusinessIntelligence,BI)场景下常用的编程语言。所谓商业智能,是指从浩瀚的系统数据中查询并提取出有效、有价值的信息,从而为企业决策层的思维决策和战略发展提供有力服务,以充分提高企业市场快速反应力与竞争力的技术场景。

(5)where子句,是SQL数据库语言中常用的一种用于查询满足指定条件的数据的语句。示例性的,查询语句可以为:Select from emp where sal>2000and sal<3000,该查询语句表示查询emp表中SAL列中大于2000且小于3000的数据,其中,where子句的查询条件为“sal>2000and sal<3000”。示例性的,查询语句可以为:select max(a)where a>10,该查询语句表示在满足a大于10的所有数据中查询a最大的那个数据,其中,where子句的查询条件为“a>10”。

需要说明的是,where子句的计算结果通常可以表示为一个0\1条件向量(即向量中的每个元素为0或者1),用于描述数据表中对应的行是否满足where子句的查询条件。示例性的,以上述“select max(a)where a>10”查询语句为例,where子句的计算结果可以为向量(0,0,1,1),则表示数据表中的第3行和第4行的数据满足“a>10”的查询条件,又或者where子句的计算结果可以为向量(1,0,0,1),则表示数据表中的第1行和第4行的数据满足“a>10”的查询条件,等等。

然而,如上所述,在多方安全计算过程中,为了不泄露各方数据以及中间计算结果,计算通常保持在共享(share)状态。同理,为了避免直接泄漏数据表中哪几行的数据满足where子句的查询条件,从而保护用户隐私数据安全,where子句的计算结果(例如上述向量(0,0,1,1))也无法直接向各方揭示(或者说公开),而是会生成share形式的向量由各方持有,使得单方无法获知正确完整的where子句的计算结果,以防止where子句的计算结果的直接泄露。

但是,在上述方案中,由于计算结果保持在share状态,无法获知where子句实际的计算结果,则不满足where子句的查询条件的多行数据将无法直接剔除,而是在做相应处理后继续参与后续计算,如此,增加了很多不必要的计算,导致计算冗余、复杂、效率极低。并且,基于查询语句的条件不同,其在参与后续计算前所做的相应处理也会不同,从而使得计算进一步复杂化。例如,当执行完“select max(a)where a>10”查询语句时,无法直接剔除不满足“a>10”条件的数据,而是需要将其复制为最小的取值MIN,并继续参与后续安全计算。又例如,当执行完“select min(a)where a<10”查询语句时,也无法直接剔除不满足“a<10”条件的数据,而是需要将其复制为最大的取值MAX,并继续参与后续安全计算。

需要说明的是,例如“select a where a>10”等简单的查询语句,由于其执行结果本身就会泄漏哪些行的数据满足查询条件,因此直接泄露where子句的计算结果是无所谓的。但是,例如上述“select max(a)where a>10”,或者select b,max(a)where a>10groupby b等复杂的语句,由于其执行结果最终只会得到max(a),而不会直接泄露满足“a>10”条件的有哪些数据,因此,此时必须要避免where子句的计算结果泄露,以防止用户隐私数据泄露的安全隐患。

基于此,本说明书提供了一种通过将多方各自持有的数据进行安全乱序处理后,再公开查询语句的执行结果,从而根据已公开的执行结果,直接筛除不满足查询条件的数据,只需针对满足查询条件的数据进行后续安全计算,以实现在保证安全计算的前提下,提升计算效率的技术方案。

在实现时,本申请先获取待执行的查询语句,确定该查询语句对应的查询条件和待查询的数据表。其中,该数据表可以包括参与多方安全计算的第一计算设备和其他至少一个计算设备所持有的用户隐私数据。然后,本申请可以基于安全乱序协议,对该数据表中包括的多行数据进行安全乱序处理,获得对应的乱序数据表。最后,本申请可以直接公开该查询语句对应的明文执行结果,以基于该明文执行结果,确定上述安全乱序处理后得到的乱序数据表中满足该查询语句的查询条件的目标数据,并只需针对该目标数据执行基于用户隐私数据的安全计算。

在以上技术方案中,本申请在执行相应的查询语句以针对多方持有的数据进行有条件的数据查询时,可以先基于安全乱序协议,将参与多方安全计算的第一计算设备和其他方持有的用户隐私数据所构成的数据表进行安全乱序处理,使得该数据表中包含的多行数据的顺序打乱,从而得到对应的乱序数据表。然后,本申请可以直接公开上述查询语句的明文执行结果,即,使得本次查询语句的计算不再保持共享状态,从而可以根据已公开的明文执行结果直接从该乱序数据表中确定满足查询条件的数据,后续只需基于这些满足条件的数据进行相应计算,而不满足条件的数据则可以直接剔除,无需再参与后续计算。如此,由于数据表已进行安全乱序处理,即使直接公开了查询语句的执行结果,也并没有泄露满足查询条件的究竟是原本数据表中的哪几行数据,从而可以在保证多方安全计算的可靠性和用户隐私数据安全的前提下,极大程度上避免了不必要的计算,提升了计算效率。

请参阅图1,图1是一示例性实施例提供的一种基于隐私数据的查询方法的流程示意图。如图1所示,该方法可以应用于执行多方安全计算的第一计算设备。在一示出的实施方式中,该第一计算设备例如可以为智能可穿戴设备、智能手机、平板电脑、笔记本电脑、台式电脑、车载计算机和服务器,其中,第一计算设备可以是一台服务器,也可以是由多台服务器构成的服务器集群或者一个云计算服务中心,等等,本说明书对此不做具体限定。如图1所示,该基于隐私数据的查询方法具体可以包括如下步骤S101-步骤S103。

步骤S101,获取待执行的查询语句,确定所述查询语句对应的查询条件和待查询的数据表。

在一示出的实施方式中,在多方安全计算场景下,参与多方安全计算的多个计算设备可以各自持有相应的数据。该多个计算设备可以为多个不同平台(或者企业)下管理的设备。每个计算设备持有的数据可以为其收集到的用户隐私数据,例如为用户的姓名、性别、年龄、工龄、收入、居住地和婚姻状况,等等,本说明书对此不做具体限定。在多方安全计算场景下,每个计算设备持有的用户隐私数据可以不同,并且彼此之间不会互相泄露数据。

示例性的,平台A为游戏平台,其下管理的计算设备可能持有用户的姓名和年龄等数据。示例性的,平台B为招聘平台,其下管理的计算设备可能持有用户的姓名、性别、年龄和工龄、居住地等数据。示例性的,平台C为金融服务平台,其下管理的计算设备可能持有用户的姓名、性别、年龄和收入等数据。进一步地,这多个平台可以一同参与多方安全计算,例如进行秘密共享算法下的数据联合查询,比如联合平台B和平台C查询满足一定收入范围的用户的工龄段,等等,本说明书对此不做具体限定。

在一示出的实施方式中,参与多方安全计算的多个计算设备(例如包括第一计算设备和其他至少一个计算设备)各自持有的用户隐私数据所构成的实际的数据表可以如下表一所示。

表一

如上表一所示,该实际的数据表一共包括3行数据,每行数据可以包括用户的ID、收入(income)和年龄(age)三列数据。在一示出的实施方式中,参与多方安全计算的第一计算设备原本可以持有表一中的ID和收入数据,其他计算设备(例如第二计算设备)原本可以持有表一中的ID和年龄数据。同时,第一计算设备和第二计算设备之间彼此互不泄露各自持有的数据。在一些可能的实施方式中,表一所示的数据也可以为单方持有的数据,例如为第二计算设备单独持有的数据。

在一示出的实施方式中,在多方安全计算场景下,为了不泄露各方数据可以将参与多方安全计算的多个计算设备各自持有的用户隐私数据拆成share形式,从而形成share形式的数据表。应理解,在share状态下,单方无法获得完整正确的数据表,只有多方将数据融合后才能得到完整正确的数据表。以上述表一为例,在share状态下,第一计算设备所持有的share形式的数据表可以如下表二所示,第二计算设备所持有的share形式的数据表可以如下表三所示。显然,在将表二和表三融合后,可以得到上述表一。

表二

表三

在一示出的实施方式中,在多方安全计算过程中,第一计算设备和第二计算设备可以在share状态下,基于上述表二和表三进行联合数据查询。一般情况下,双方可以约定进行一系列的数据查询。

在一示出的实施方式中,以第一计算设备为例,第一计算设备可以先获取待执行的查询语句。进一步地,第一计算设备可以确定该查询语句对应的查询条件和待查询的数据表。

示例性的,该查询语句可以为基于SQL数据库语言的查询语句。示例性的,该查询语句可以包括SQL数据库语言中的where子句,该where子句可以包括上述查询条件。

示例性的,该待查询的数据表可以为上述表二和表三所示的包括参与多方安全计算的第一计算设备和其他至少一个计算设备(例如第二计算设备)所持有的用户隐私数据构成的share形式的数据表。在一些可能的实施方式中,该待查询的数据表也可以为其他计算设备单独持有的数据表,等等,本说明书对此不做具体限定。

示例性的,该待执行的查询语句可以为“select age max(income)where income>2000group by age”,表示查询在收入大于2000的所有用户中,收入最高的用户的年龄,其中,where子句的查询条件为“income>2000”。

进一步地,第一计算设备执行该查询语句,得到该查询语句的执行结果。应理解,如上所述,在多方安全计算过程中,为了不泄露各方数据以及中间计算结果,计算通常保持在share状态,则第一计算设备此时获得的查询语句的执行结果为share形式的执行结果。

在一示出的实施方式中,第一计算设备执行该查询语句,具体可以获得where子句对应的share形式的计算结果,该share形式的计算结果可以为share形式的条件向量。

需要说明的是,如上述名词解释中的描述,在非共享状态下,where子句对应的明文的条件向量可以包括多个元素,每个元素可以为0或者1。进一步地,如果该明文的条件向量中的第i个元素为1,则表示上述数据表中的第i行数据为满足查询条件(例如为“income>2000”)的数据。i为大于或者等于1的整数。

在一示出的实施方式中,以上述表一以及“select age max(income)whereincome>2000group by age”查询语句为例,表一中的第三行数据满足income>2000的查询条件,则执行该查询语句所得到的明文的条件向量可以为v(0,0,1)。如上所述,由于多方安全计算保持在共享状态下进行,因此,此时第一计算设备计算得到的其实是share形式的条件向量,例如可以包括向量v1(1,2,4)和向量v2(-1,-2,-3),易验证v1+v2=v。其中,向量v1(1,2,4)可以由第一计算设备持有,向量v2(-1,-2,-3)可以由第二计算设备持有。应理解,此时参与多方安全计算的各方仅仅获得share形式的条件向量,明文的条件向量未向各方公开,即各方并未获知满足查询条件“income>2000”的是数据表中的哪几行数据。

步骤S102,基于安全乱序协议,对所述数据表中包括的多行数据进行安全乱序处理,获得对应的乱序数据表。

在一示出的实施方式中,第一计算设备在执行完查询语句,得到where子句对应的share形式的条件向量后,可以基于安全乱序协议,对待查询的数据表中包括的多行数据进行安全乱序处理,获得对应的乱序数据表。

示例性的,第一计算设备和第二计算设备双方可以基于安全乱序协议,共同对上述表二和表三所示的share形式的数据表中包括的多行数据进行安全乱序处理,分别获得表二对应的乱序数据表和表三对应的乱序数据表。

示例性的,表二对应的乱序数据表可以如下表四所示。一并参阅表二和表四,可知,安全乱序处理后,原本数据表中的第二行数据与第三行数据互换了顺序。

表四

示例性的,表三对应的乱序数据表可以如下表五所示。一并参阅表三和表五,可知,安全乱序处理后,原本数据表中的第二行数据与第三行数据互换了顺序。

表五

相应的,表四和表五融合后得到的乱序后的实际数据表可以如下表六所示。一并参阅表一和表六,可知,安全乱序处理后,原本数据表中的第二行数据与第三行数据互换了顺序。

表六

示例性的,当表一为第二计算设备单独持有的数据表时,即待查询的数据表为单方持有的数据表时,第一计算设备和第二计算设备双方也可以基于安全乱序协议,共同对上述表一中包括的多行数据进行安全乱序处理,从而分别获得如上表四和表五所示的乱序数据表。

进一步地,在一示出的实施方式中,还可以基于安全乱序协议,对计算得到的share形式的条件向量中包括的多个元素也进行安全乱序处理,从而获得对应的share形式的乱序条件向量。示例性的,仍以上述向量v1(1,2,4)和向量v2(-1,-2,-3)为例,可以基于安全乱序协议,对向量v1(1,2,4)和向量v2(-1,-2,-3)中包括的多个元素进行安全乱序处理,从而得到share形式的乱序条件向量,例如包括向量v1’(1,4,2)和向量v2’(-1,-3,-2)。可知,安全乱序处理后,原本向量中的第二个元素与第三个元素互换了顺序。

一般情况下,条件向量的安全乱序处理和数据表的安全乱序处理的乱序规则相同。

需要说明的是,本说明书对数据表的安全乱序处理和条件向量的安全乱序处理的先后执行顺序不做具体限定。在一些可能的实施方式中,也可以先对条件向量进行安全乱序处理,然后再对数据表进行安全乱序处理,等等,本说明书对此不做具体限定。

此外,需要说明的是,第一计算设备和第二计算设备只是通过安全乱序处理分别得到了上述表四和表五以及share形式的乱序条件向量,但并不知道具体的乱序规则,从而支持后续即使公开了明文的条件向量,也不会泄露原本数据表中满足查询条件的是哪几行数据,以保证用户隐私数据安全,保证多方安全计算的可靠性。

在一示出的实施方式中,上述安全乱序协议可以包括基于秘密分享算法或者同态加密算法实现的安全乱序协议。在一示出的实施方式中,该安全乱序协议还可以基于其他算法实现,本说明书对此不做具体限定。

下面,将通过举例对本申请涉及的安全乱序的算法进行阐述。

在一示出的实施方式中,首先对单方持有数据(即数据没有拆分成share形式)情况下的单方安全乱序进行说明。

首先,第三方的服务器(例如为随机数分发服务器)可以生成一个随机数组(p,a,b,d)。其中,p表示一个乱序规则(或者称之为置换规则),并且,p,a,b,d满足如下关系:pa-b=d,其中,pa代表将置换p作用在a上。

示例性的,p,a,b,d各个数据具体可以如下:

p=[1,3,2,4]

a=[11,13,54,12]

pa=[11,54,13,12]

b=[7,8,11,23]

d=[4,46,2,-11]

然后,第三方的服务器可以将p、d分发至参与多方安全计算的0方(例如为第一计算设备),将a、b分发至参与多方安全计算的1方(例如为第二计算设备)。此时,0方持有p、d,1方持有a、b,双方无法获知彼此的数据。同时,1方可以持有数据x,该数据x可以为上述待查询的数据表。示例性的,数据x=[100,200,300,400]。

示例性的,0方与1方共同对数据x进行安全乱序的流程如下:

(1)1方计算x-a=[89,187,246,388],并将x-a发送至0方,同时,令b=y1=[7,8,11,23]。

(2)0方接收1方发送的x-a,并计算p(x-a)+d=[89,246,187,388]+[4,46,2,-11]=y0=[93,292,198,377]。

至此,完成了对数据x的安全乱序,得到了安全乱序后的数据x的share表示,包括y0和y1,其中,1方持有乱序后得到的y1,0方持有乱序后的到的y0,易验证p(y0+y1)=[100,300,200,400]=px。

在一示出的实施方式中,下面将对双方各自持有share形式的数据x的情况下的双方安全乱序进行说明。

示例性的,0方(例如第一计算设备)和1方(例如第二计算设备)分别持有数据x的share,该数据x可以为上述待查询的数据表(例如上述表一)。其中,0方持有x0(例如上述表二),1方持有x1(例如上述表三),x=x0+x1。

首先,通过第三方的服务器(例如为随机数服务器)生成两个随机数组,分别为(p0,d0,a0,b0)和(p1,d1,a1,b1)。其中p0和p1分别表示一个乱序规则(或者称之为置换规则)。并且,p0,a0,b0,d0满足如下关系:p0(a0)–b0=d0,其中,p0(a0)代表将乱序规则p0作用在a0上。同理,p1,a1,b1,d1满足如下关系:p1(a1)–b1=d1,其中,p1(a1)代表将乱序规则p1作用在a1上。

然后,第三方的服务器可以将p0、a0、b0、d0分发至参与多方安全计算的0方,并将p1、a1、b1、d1分发至参与多方安全计算的1方。此时,0方持有p0、a0、b0、d0,0方持有p1、a1、b1、d1,双方无法获知彼此的数据。

示例性的,0方与1方共同对share形式的数据x(包括x0和x1)进行安全乱序的流程如下:

(1)1方计算x1-a1,并将x1-a1发送至0方,同时,令r1=b1。

(2)0方接收1方发送的x1-a1,并计算r0=p0(x1-a1)+d0+p0(x0)。

(3)0方计算r0-a0,并将r0-a0发送至1方,同时,令y0=b0。

(4)1方接收0方发送的r0-a0,并计算y1=p1(r0-a0)+d1+p1(r1)。

至此,完成了双方对share形式的数据x的安全乱序,其中,y0(例如上述表四)为安全乱序后的x0,y1(例如上述表五)为安全乱序后的x1,易验证(y0+y1)=p1p0(x0+x1)。

需要说明的是,本说明书对进行安全乱序所采用的算法不做具体限定,在一些可能的实施方式中,本说明书也可以采用除上述算法外的其他任何可能的安全乱序算法,例如基于g-modules的安全乱序算法,等等,本说明书对此不做具体限定。

步骤S103,公开所述查询语句对应的明文执行结果,以基于所述明文执行结果,确定所述乱序数据表中满足所述查询条件的目标数据,并针对所述目标数据执行基于用户隐私数据的安全计算。

在一示出的实施方式中,进一步地,在完成对待查询的数据表的安全乱序,得到对应的乱序数据表后,可以直接公开上述查询语句对应的明文执行结果,以基于该明文执行结果,直接确定上述乱序数据表中满足查询条件的目标数据,并针对该目标数据执行基于用户隐私数据的安全计算。

在一示出的实施方式中,该查询语句对应的明文执行结果可以包括上述share形式的乱序条件向量所对应的明文表示,即明文的乱序条件向量。示例性的,share形式的乱序条件向量例如包括向量v1’(1,4,2)和向量v2’(-1,-3,-2),则可以得到对应的明文的乱序条件向量v’(0,1,0)。

在一示出的实施方式中,上述基于明文执行结果,确定乱序数据表中满足查询条件的目标数据可以包括:如果该明文的乱序条件向量中的第i个元素为1,则可以确定乱序数据表中的第i行数据为满足查询条件的目标数据;如果该明文的乱序条件向量中的第i个元素为0,则可以确定乱序数据表中的第i行数据不满足查询条件。其中,i为大于或者等于1的整数。

示例性的,以上述“select age max(income)where income>2000group by age”查询语句,上述安全乱序得到的表四和表五,以及明文的乱序条件向量v’(0,1,0)为例。基于该向量v’(0,1,0)可以确定上述表四和表五中的第二行数据满足“income>2000”的查询条件,上述表四和表五中的第一行数据和第三行数据不满足“income>2000”的查询条件。基于此,第一计算设备可以仅针对上述表四和表五中的第二行数据,继续在共享状态下执行后续一系列的基于用户隐私数据的安全计算,从而大大削减了计算规模,极大程度上提升了计算效率。

需要说明的是,在直接揭示了明文的乱序条件向量v’(0,1,0)后,仅仅是将乱序数据表中的第二行数据满足查询条件这一结果泄露给了参与多方安全计算的多方,但是,由于多方并不知晓乱序的具体规则,即并不知晓乱序数据表中的第二行数据实际是原本数据表中的那一行数据。因此,即使直接公开了明文的乱序条件向量,也不会泄露where子句实际的计算结果,保护了用户的隐私数据安全。

综上,本申请在执行相应的查询语句以针对多方持有的数据进行有条件的数据查询时,可以先基于安全乱序协议,将参与多方安全计算的第一计算设备和其他方持有的用户隐私数据所构成的数据表进行安全乱序处理,使得该数据表中包含的多行数据的顺序打乱,从而得到对应的乱序数据表。然后,本申请可以直接公开上述查询语句的明文执行结果,即,使得本次查询语句的计算不再保持共享状态,从而可以根据已公开的明文执行结果直接从该乱序数据表中确定满足查询条件的数据,后续只需基于这些满足条件的数据进行相应计算,而不满足条件的数据则可以直接剔除,无需再参与后续计算。如此,由于数据表已进行安全乱序处理,即使直接公开了查询语句的执行结果,也并没有泄露满足查询条件的究竟是原本数据表中的哪几行数据,从而可以在保证多方安全计算的可靠性和用户隐私数据安全的前提下,极大程度上避免了不必要的计算,提升了计算效率。

与上述方法流程实现对应,本说明书的实施例还提供了一种基于隐私数据的查询装置,应用于第一计算设备。请参阅图2,图2是一示例性实施例提供的一种基于隐私数据的查询装置的结构示意图。如图2所示,该装置30包括:

获取单元301,用于获取待执行的查询语句,确定所述查询语句对应的查询条件和待查询的数据表;所述数据表包括参与多方安全计算的所述第一计算设备和其他至少一个计算设备所持有的用户隐私数据;

安全乱序单元302,用于基于安全乱序协议,对所述数据表中包括的多行数据进行安全乱序处理,获得对应的乱序数据表;

确定单元303,用于公开所述查询语句对应的明文执行结果,以基于所述明文执行结果,确定所述乱序数据表中满足所述查询条件的目标数据,并针对所述目标数据执行基于用户隐私数据的安全计算。

在一示出的实施方式中,所述查询语句包括SQL数据库语言中的where子句;所述where子句包括所述查询条件。

在一示出的实施方式中,所述数据表包括参与多方安全计算的所述第一计算设备和其他至少一个计算设备所持有的用户隐私数据构成的共享share形式的数据表。

在一示出的实施方式中,所述装置30还包括:

执行单元304,用于执行所述查询语句,计算得到所述where子句对应的share形式的条件向量;

所述安全乱序单元302,具体用于:

基于所述安全乱序协议,对所述条件向量包括的多个元素进行安全乱序处理,获得对应的share形式的乱序条件向量。

在一示出的实施方式中,所述确定单元303,具体用于:

在对所述数据表中包括的多行数据进行安全乱序处理,得到对应的所述乱序数据表后,基于所述share形式的乱序条件向量,公开对应的明文的乱序条件向量。

在一示出的实施方式中,所述明文的乱序条件向量中的每个元素为0或者1;所述确定单元303,具体用于:

如果所述明文的乱序条件向量中的第i个元素为1,则确定所述乱序数据表中的第i行数据为满足所述查询条件的所述目标数据;i为大于或者等于1的整数;

如果所述明文的乱序条件向量中的第i个元素为0,则确定所述乱序数据表中的所述第i行数据不满足所述查询条件。

在一示出的实施方式中,所述安全乱序协议包括基于秘密分享算法或者同态加密算法实现的安全乱序协议。

上述装置30中各个单元的功能和作用的实现过程具体详见上述图1对应实施例的描述,在此不再进行赘述。应理解,上述装置30可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的CPU(Central Process Unit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了CPU以及存储器之外,上述装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元或模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

上述实施例阐明的装置、单元、模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

与上述方法实施例相对应,本说明书的实施例还提供了一种计算设备。请参阅图3,图3是一示例性实施例提供的一种计算设备的结构示意图。图3所示的计算设备1000可以为上述第一计算设备或者上述第二计算设备。如图3所示,该计算设备1000包括处理器1001和存储器1002,进一步还可以包括输入设备1004(例如键盘等)和输出设备1005(例如显示器等)。处理器1001、存储器1002、输入设备1004和输出设备1005之间可以通过总线或其他方式连接。如图3所示,存储器1002包括计算机可读存储介质1003,该计算机可读存储介质1003存储有能够由处理器1001运行的计算机程序。处理器1001可以是通用中央处理器,微处理器,或用于控制以上方法实施例执行的集成电路。处理器1001在运行存储的计算机程序时,可以执行本说明书实施例中基于隐私数据的查询方法的各个步骤,包括:获取待执行的查询语句,确定所述查询语句对应的查询条件和待查询的数据表;所述数据表包括参与多方安全计算的所述第一计算设备和其他至少一个计算设备所持有的用户隐私数据;基于安全乱序协议,对所述数据表中包括的多行数据进行安全乱序处理,获得对应的乱序数据表;公开所述查询语句对应的明文执行结果,以基于所述明文执行结果,确定所述乱序数据表中满足所述查询条件的目标数据,并针对所述目标数据执行基于用户隐私数据的安全计算,等等。对上述基于隐私数据的查询方法的各个步骤的详细描述请参见之前的内容,此处不再进行赘述。

与上述方法实施例相对应,本说明书的实施例还提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中基于隐私数据的查询方法的各个步骤。具体请参见上述图1对应实施例的描述,此处不再进行赘述。

以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

在一个典型的配置中,终端设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。

计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

技术分类

06120116072752