一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于秘密分享的多键分组信息获取方法和系统与流程

2022-03-09 05:54:39 来源:中国专利 TAG:


1.本说明书涉及信息技术领域,特别涉及一种基于秘密分享的多键分组信息获取方法和系统。


背景技术:

2.大数据时代,业务的多个参与方希望通过合作来完成数据任务。然而,由于数据隐私、数据隔离等原因,不能将各方数据直接集中起来处理。因此,如何在确保数据安全的前提下实现多方联合的数据任务成为亟待解决的问题。


技术实现要素:

3.本说明书实施例之一提供一种基于秘密分享的多键分组信息获取方法。其中,多个对象的多个信息项对应的数据列垂直分布于多方,各数据列的元素已基于作为排序键的至少两个信息项排列且各数据列中相同位置上的元素对应于同一对象。所述方法由所述多方中的一方执行,其包括:获得排序键对应的数据列的秘密分享分片;针对每一排序键,基于该排序键对应的数据列的秘密分享分片与其他方进行秘密分享运算,以获得该排序键对应的分组标记列的秘密分享分片,其中,分组标记列的元素指示该排序键对应的数据列中元素的分组信息;基于各排序键对应的分组标记列的秘密分享分片与其他方进行秘密分享运算,得到多键分组标记列的秘密分享分片,其中,所述多键分组标记列的元素指示各排序键对应的数据列中元素基于各排序键的联合分组信息。
4.本说明书实施例之一提供一种基于秘密分享的多键分组信息获取系统。其中,多个对象的多个信息项对应的数据列垂直分布于多方,各数据列的元素已基于作为排序键的至少两个信息项排列且各数据列中相同位置上的元素对应于同一对象。所述系统在所述多方中的一方实现,其包括:获得模块,用于获得排序键对应的数据列的秘密分享分片;第一秘密分享运算模块,用于针对每一排序键,基于该排序键对应的数据列的秘密分享分片与其他方进行秘密分享运算,以获得该排序键对应的分组标记列的秘密分享分片,其中,分组标记列的元素指示该排序键对应的数据列中元素的分组信息;第二秘密分享运算模块,用于基于各排序键对应的分组标记列的秘密分享分片与其他方进行秘密分享运算,得到多键分组标记列的秘密分享分片,其中,所述多键分组标记列的元素指示各排序键对应的数据列中元素基于各排序键的联合分组信息。
5.本说明书实施例之一提供一种基于秘密分享的多键分组信息获取装置,包括处理器和存储设备,所述存储设备用于存储指令,其中,当所述处理器执行指令时,实现如本说明书任一实施例所述的基于秘密分享的多键分组信息获取方法。
6.本说明书实施例之一提供一种基于秘密分享的数据聚合方法。其中,多个对象的多个信息项对应的数据列垂直分布于多方,各数据列的元素已基于作为排序键的至少两个信息项排列且各数据列中相同位置上的元素对应于同一对象。所述方法由所述多方中的一方执行,其包括:获得排序键对应的数据列的秘密分享分片;针对每一排序键,基于该排序
键对应的数据列的秘密分享分片与其他方进行秘密分享运算,以获得该排序键对应的分组标记列的秘密分享分片,其中,分组标记列的元素指示该排序键对应的数据列中元素的分组信息;基于各排序键对应的分组标记列的秘密分享分片与其他方进行秘密分享运算,得到多键分组标记列的秘密分享分片,其中,所述多键分组标记列的元素指示各排序键对应的数据列中元素基于各排序键的联合分组信息;公开多键分组标记列的秘密分享分片,以获得所述多键分组标记列;根据所述多键分组标记列获得所述多个信息项对应的数据列中待聚合的数据列的各分组对应的聚合结果和/或各分组对应的聚合结果的秘密分享分片。
7.本说明书实施例之一提供一种基于秘密分享的数据聚合系统。其中,多个对象的多个信息项对应的数据列垂直分布于多方,各数据列的元素已基于作为排序键的至少两个信息项排列且各数据列中相同位置上的元素对应于同一对象。所述系统在所述多方中的一方实现,其包括:获得模块,用于获得排序键对应的数据列的秘密分享分片;第一秘密分享运算模块,用于针对每一排序键,基于该排序键对应的数据列的秘密分享分片与其他方进行秘密分享运算,以获得该排序键对应的分组标记列的秘密分享分片,其中,分组标记列的元素指示该排序键对应的数据列中元素的分组信息;第二秘密分享运算模块,用于基于各排序键对应的分组标记列的秘密分享分片与其他方进行秘密分享运算,得到多键分组标记列的秘密分享分片,其中,所述多键分组标记列的元素指示各排序键对应的数据列中元素基于各排序键的联合分组信息;公开模块,用于公开多键分组标记列的秘密分享分片,以获得所述多键分组标记列;聚合模块,用于根据所述多键分组标记列获得所述多个信息项对应的数据列中待聚合的数据列的各分组对应的聚合结果和/或各分组对应的聚合结果的秘密分享分片。
8.本说明书实施例之一提供一种基于秘密分享的数据聚合装置,包括处理器和存储设备,所述存储设备用于存储指令,其中,当所述处理器执行指令时,实现如本说明书任一实施例所述的基于秘密分享的数据聚合方法。
附图说明
9.本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:图1是根据本说明书一些实施例所示的基于秘密分享的数据聚合的应用场景示意图;图2是根据本说明书一些实施例所示的基于秘密分享的数据聚合方法的示例性流程图;图3是根据本说明书一些实施例所示的多键排序的示意图;图4是根据本说明书一些实施例所示的用于实现秘密分享比较运算的算子的示意图;图5是根据本说明书一些实施例所示的分组标记列与数据列k等长的情形下,基于数据列k获得分组标记列的示例;图6是根据本说明书一些实施例所示的分组标记列与数据列k不等长的情形下,基于数据列k获得分组标记列的示例;
图7a~图7d是根据本说明书一些实施例所示的各排序键对应的分组标记列与多键分组标记列之间的等价关系示意图;图8a和图8b是根据本说明书一些实施例所示的根据多键分组标记确定分组情况的两种示例;图9是根据本说明书一些实施例所示的基于秘密分享的多键分组信息获取系统的示例性模块图;图10是根据本说明书一些实施例所示的基于秘密分享的数据聚合系统的示例性模块图。
具体实施方式
10.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
11.应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
12.如本说明书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
13.本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
14.首先介绍本说明书涉及的一些基本概念。
15.秘密分享(secret sharing),也称作秘密共享,是一种密码学技术,其将秘密(secret)以一定方式拆分,拆分得到的若干份额(share)由不同的参与方持有,单个参与方无法恢复秘密,只有若干参与方合作,例如公开各自持有的份额,才能恢复秘密。秘密可以是一维数值、数组、向量、矩阵等形式。拆分秘密得到的份额也可称作秘密分享分片,或者简称分片。
16.安全多方计算(secure multiparty computation, smpc),英文简称mpc,其解决的是在无可信第三方的情况下,如何安全地计算约定函数的问题。mpc需要同时保证输入的私密性和结果的正确性,即交互计算过程中不能泄露任意一方的私密数据(输入),还要保证计算结果与直接将各方私密数据输入约定函数得到的结果一致。
17.安全多方计算可以结合秘密分享实现,计算结果(输出)可以以分片形式分布于各方。具体地,通过交互计算,每个参与方可获得约定函数的输出分片,各方获得的输出分片相当于是将各方的私密数据直接输入约定函数后拆分函数输出(秘密)得到的。本说明书
中,这种结合秘密分享实现的安全多方计算也被称作秘密分享运算,具体而言可以是秘密分享合并、秘密分享排序等。在一些实施例中,秘密分享运算中,输入和/或中间计算结果也可以分片形式存在,以保护各方数据隐私。
18.图1是根据本说明书一些实施例所示的基于秘密分享的数据聚合的应用场景示意图。
19.参考图1,多个数据列垂直分布于第一方(记为a方)和第二方(记为b方)。数据的垂直分布是指,多方拥有相同的多个对象的信息项但各方拥有的信息项不同。假设用一张二维表格来存储多个对象的多个信息项,其中,每一行对应一个对象,或者说每一行对应一个id,每个id下的多个信息项可合称为该id下的一条记录,每一列对应一个信息项(或称为字段)。垂直分布就相当于将完整的二维表格沿垂直方向切分成多个部分,每个部分可以包括一个或多个数据列,所述多个部分可以分布于多方。垂直分布可以将数据的id对齐,即多方拥有的各数据列的同一行可对应同一id(对象)。在又一些实施例中,数据的垂直分布也可以是指,将二维表格的每一元素拆分为秘密分享分片,每一个元素的秘密分享分片分别由多方持有。在又一些实施例中,数据的垂直分布还可以指前述两种情形的混合。例如,所述完整的二维表格中一部分列由a方,另一部分列由b方持有,还有一部分列以秘密分享分片的形式为两方所持有,即a方持有这部分列的第一分片,b方持有这部分列的第二分片。
20.如图1所示,a方拥有作为排序键的三个信息项k1、k2、k3分别对应的数据列。b方拥有作为排序键的信息项k4对应的数据列,以及信息项v对应的待聚合的数据列(简称待聚合列)。可以理解,图1展示的数据垂直分布情况仅仅作为示例。在一些实施例中,任一方可以仅拥有一个排序键对应的数据列,也可以拥有多个排序键分别对应的多个数据列,待聚合列可以在任一方。为了便于描述,可通过键名区分数据列,如数据列k1、k2、k3、k4和待聚合列v。本说明书中,不妨假定第二方(b方)为拥有待聚合列v的一方。
21.a、b两方希望通过合作安全实现多键排序,以及基于多键排序的结果安全实现对待聚合列的分组聚合操作。在现实场景中,k1、k2、k3、k4可以表示不同维度的用户特征,v可以是待统计字段,a、b两方希望通过合作实现针对于特定分组用户的数据统计任务,这里的分组是指多维度的用户特征均满足特定条件(如k1、k2、k3、k4分别等于特定值)。
22.图2是根据本说明书一些实施例所示的基于秘密分享的数据聚合方法的示例性流程图。流程200可以由两方中的任一方执行。
23.其中,各数据列(如,排序键对应的数据列和待聚合列)的元素已基于作为排序键的至少两个信息项排列。也就是说,各数据列的元素是经过多键排序的。多键排序是指基于多个(至少两个)排序键对待排序序列进行排序,结果序列(即步骤210中的数据列)中元素的顺序由多个排序键共同决定。可以理解,当若干对象的多个排序键分别相同时,这些对象在结果序列中的对应位置(如对应行)是连续的,这些对象或其关联数据可以被划分至同一分组。参考图3,箭头左侧为未经多键排序的信息项k1、k2、k3、k4对应的数据列,依次以k4、k3、k2、k1作为排序键对数据列进行多轮迭代排序(升序),得到经过多键排序的结果如箭头右侧所示。当若干对象(通过编号区分)的k1相同、k2相同、k3相同且k4相同时,则这些对象在已排序的数据列k1、k2、k3、k4中的对应行是连续的,这些对象(id)或其关联数据(如id下的字段、记录)可以被划分至同一分组。如图3所示,编号为1、5的对象的k1都为0、k2都为1、k3都为0且k4都为1,则编号为1、5的对象在结果序列中的对应行是连续的,编号为1、5的对
象或其关联数据可以被划分至同一分组。编号为4、0的对象的k1都为1、k2都为1、k3都为1且k4都为1,则编号为0、4的对象在结果序列中的对应行是连续的,编号为0、4的对象或其关联数据可以被划分至同一分组。
24.针对一些依赖于排序的聚合操作,如求最大值、求最小值、求中位数等,可以优先基于待聚合的数据列(如图1中的待聚合列v)对应的信息项对各数据列进行排序,再分别基于多个排序键对各数据列进行排序、分组。需要说明的是,尽管在一些实施例中,待聚合数据列也会作为排序的依据对各数据列进行排列,但为了区别,在概念上待聚合数据列对应的信息项不被称为排序键。也就是说,本说明书中提及排序键对应的数据列时,意味着这些数据列不会作为待聚合数据列。在本说明书的一些实施例中,在按照某排序键排序(如降序或升序)时遵循稳定排序的原则,即数据列中的相同的两个或以上元素在结果序列中的先后关系与其在原数据列中一致。例如图3中,k1序列中的编号1的元素、编号5的元素均为0,在结果序列(箭头右侧)中,编号1的元素依然在编号5的元素前面。
25.多键排序可以通过秘密分享运算获得,两方中的任一方可以获得经过多键排序后的数据列的分片。具体地,数据列的分片可以包括该数据列中各元素的分片。
26.如图2所示,流程200可以包括以下步骤:步骤210,获得排序键对应的数据列的分片。
27.根据前述内容,步骤210中获得的排序键对应的数据列是经过多键排序的。
28.步骤220,针对每一排序键,基于该排序键对应的数据列的秘密分享分片与另一方进行秘密分享运算,以获得该排序键对应的分组标记列的分片。
29.其中,分组标记列的元素指示该排序键对应的数据列中元素的分组信息。由于排序键对应的数据列是经过多键排序的,因此,对于任一排序键对应的数据列的元素的排序结果是由多个排序键共同决定的。在一些实施例中,排序键对应的数据列中值连续相同的两个或以上的元素属于同一分组。当然,数据列中的单一元素与其前一位元素以及后一位元素均不相同,这个单一元素构成一个新的分组。
30.以图1为例,a方可以获得k1、k2、k3、k4分别对应的分组标记列的分片《g1》a、《g2》a、《g3》a、《g4》a,b方可以获得k1、k2、k3、k4分别对应的分组标记列的分片《g1》b、《g2》b、《g3》b、《g4》b。
31.在一些实施例中,分组标记列的分片可以通过秘密分享比较运算获得。具体地,以排序键k对应的数据列k为例,针对数据列k的每一对相邻位置(即相邻行),a方和b方可以基于该对相邻位置的元素的分片进行秘密分享比较运算,以获得排序键k对应的分组标记列的分片。在一些实施例中,分组标记列可以与数据列k等长,分组标记列的元素可以指示数据列k中对应的元素与其前一元素是否相同。例如,分组标记列的非首位(行)元素可以指示数据列k中的对位元素与其前一元素是否相同,若不同,则进一步指示数据列k中的对位元素与其前一元素之间有组分界点,否则进一步指示数据列k中的对位元素与其前一元素之间没有组分界点。特别地,分组标记列的首位(行)元素可以为预设值,具体可以参考后文的相关描述。在一些实施例中,分组标记列的长度可以与数据列k中相邻位置的对数一致,即分组标记列的每个元素对应数据列k中的一对相邻位置,分组标记列的元素可以指示对应的那对相邻位置的元素间是否有组分界点。
32.图4示例了一种用于实现秘密分享比较运算的算子(简称密文比较算子),该算子
展示了秘密分享比较运算的输入-输出关系。如图4所示,对于两方场景,密文比较算子的输入,即两组分片《m1》a、《m2》a和《m1》b、《m2》b由a、b两方分别提供,其中,m1和m2为参与比较的两个值(一般为数值)。a、b两方可各自获得比较结果m(用0/1表示异同)的分片,即a方获得分片《m》a,b方获得分片《m》b。可以理解,图4中对比较结果的表示规则仅仅作为示例,例如也可以是:当m1=m2时,m=0;当m1≠m2时,m=1。本说明书对秘密分享比较运算算子的内部实现不作限制,将其作为黑盒算子进行调用,已有的以及未来将会出现的能实现前述比较功能的算法均可为本说明书实施例使用。
33.图5和图6提供了应用图4所示的密文比较算子时基于数据列k获得分组标记列的示例。
34.分组标记列与数据列k等长的情形如图5所示,分组标记列的第2行元素为1,其指示数据列k中的第2行元素与第1行元素相同,进一步指示数据列k的第2行元素与第1行元素之间没有组分界点;分组标记列的第3行元素为1,其指示数据列k中的第3行元素与第2行元素相同,进一步指示数据列k的第3行元素与第2行元素之间没有组分界点;......;分组标记列的第9行元素为0,其指示数据列k中的第9行元素与第8行元素不同,进一步指示数据列k的第9行元素与第8行元素之间有组分界点;分组标记列的第10行元素为0,其指示数据列k中的第10行元素与第9行元素不同,进一步指示数据列k的第10行元素与第9行元素之间有组分界点。可以看出,分组标记列中0的分布反映了数据列k中组分界点的分布,或者反映数据列k中各个分组的起点的分布。在一些实施例中,分组标记列的第1行元素可以是0。不难理解,上述实施例中分组标记列的0、1元素可以对换。
35.分组标记列与数据列k不等长的情形如图6所示,分组标记列的第1行元素为1,其指示数据列k的第1行元素和第2行元素之间没有组分界点;分组标记列的第2行元素为1,其指示数据列的第2行元素和第3行元素之间没组分界点;分组标记列的第3行元素为0,其指示数据列k的第3行元素和第4行元素之间有组分界点;......;分组标记列的第8行元素为0,其指示数据列的第8行元素和第9行元素之间有组分界点;分组标记列的第9行元素为0,其指示数据列的第9行元素和第10行元素之间有组分界点。可以看出,分组标记列中0的分布反映了数据列k中组分界点的分布。不难理解,上述实施例中分组标记列的0、1元素可以对换。
36.步骤230,基于各排序键对应的分组标记列的分片与另一方进行秘密分享运算,得到多键分组标记列的分片。
37.其中,所述多键分组标记列的元素可以指示各数据列中元素基于各排序键的联合分组信息。当若干对象的各排序键相同时,这些对象在数据列中的对应元素属于同一(多键)分组。当然,数据列中的单一元素也可以构成一个(多键)分组。
38.由于多键分组由多个排序键共同决定,a方和b方可以基于各排序键对应的分组标记列的分片进行秘密分享运算,得到多键分组标记列的分片。以图1为例,a方和b方可以基于排序键k1、k2、k3、k4对应的分组标记列的分片进行秘密分享运算,得到多键分组标记列的分片。这里的秘密分享运算可以指秘密分享与运算或者秘密分享或运算。
39.在一些实施例中,分组标记列可以与数据列等长(元素一一对应),分组标记列的元素指示数据列中的对位元素与其前一元素是否相同。当一对相邻位置的元素相同时,其在后元素在分组标记列中的对位元素为1,否则为0。参考前文的相关内容,后者为0时意味
着该对相邻位置的元素间有组分界点。分组标记列的首位元素为0。基于此,多键分组标记列等于各排序键对应的分组标记列按位相与的结果。可以理解,由于与运算的任意一位输入为0则输出为0,多键分组标记列中的0的分布依旧可以反映数据列中组分界点的分布。图7a~图7d中的分组标记列基于图3所示的数据列(结果序列)获得。结合参考图3和图7a,对于长度为6的数据列,可以获得长度同样为6的分组标记列,图7a等式的左边为排序键k1、k2、k3、k4分别对应的分组标记列b1、b2、b3、b4,将其按位相与的结果,即等于多键分组标记列b。
40.在一些实施例中,分组标记列可以与数据列等长(元素一一对应),分组标记列的元素指示数据列中的对位元素与其前一元素是否相同。当一对相邻位置的元素相同时,其在后元素在分组标记列中的对位元素为0,否则为1。参考前文的相关内容,后者为1时意味着该对相邻位置的元素间有组分界点。分组标记列的首位元素为1。基于此,多键分组标记列等于各排序键对应的分组标记列按位相或的结果。可以理解,由于或运算的任意一位输入为1则输出为1,多键分组标记列中的1的分布依旧可以反映数据列中组分界点的分布。结合参考图3和图7b,对于长度为6的数据列,可以获得长度同样为6的分组标记列,图7b中等式左边为排序键k1、k2、k3、k4分别对应的分组标记列b1、b2、b3、b4,将其按位相或的结果,即等于多键分组标记列b。
41.在一些实施例中,分组标记列的长度可以与数据列中相邻位置的对数一致,即分组标记列的每个元素对应数据列中的一对相邻位置,分组标记列的元素指示对应的那对相邻位置的元素间是否有组分界点。当一对相邻位置的元素相同时,分组标记列中对应的元素为1,否则为0。参考前文的相关内容,后者为0时意味着该对相邻位置的元素间有组分界点。基于此,多键分组标记列等于各排序键对应的分组标记列按位相与的结果。可以理解,由于与运算的任意一位输入为0则输出为0,多键分组标记列中的0的分布依旧可以反映数据列中组分界点的分布。结合参考图3和图7c,对于长度为6的数据列,可以获得长度为5的分组标记列,图7c中等式左边为排序键k1、k2、k3、k4分别对应的分组标记列b1、b2、b3、b4,将其按位相与的结果,即等于多键分组标记列b。
42.在一些实施例中,分组标记列的长度可以与数据列中相邻位置的对数一致,即分组标记列的每个元素对应数据列中的一对相邻位置,分组标记列的元素指示对应的那对相邻位置的元素间是否有组分界点。当一对相邻位置的元素相同时,分组标记列中对应的元素为0,否则为1。参考前文的相关内容,后者为1时意味着该对相邻位置的元素间有组分界点。基于此,多键分组标记列等于各排序键对应的分组标记列按位相或的结果。可以理解,由于或运算的任意一位输入为1则输出为1,多键分组标记列中的1的分布依旧可以反映数据列中组分界点的分布。结合参考图3和图7d,对于长度为6的数据列,可以获得长度为5的分组标记列,图7c等式的左边为排序键k1、k2、k3、k4分别对应的分组标记列b1、b2、b3、b4,将其按位相或的结果,即等于多键分组标记列b。
43.步骤240,公开多键分组标记列的分片,以获得所述多键分组标记列。
44.公开多键分组标记列的分片意味着多键分组标记列也被公开。由于多键分组标记列的公开只会暴露各数据列中元素基于各排序键的联合分组信息(如组内元素个数、组内元素编号),不会暴露各数据列中的元素。因此,多键分组标记列的公开对于实际的业务场景来说是可接受的安全退让。
45.在一些实施例中,a方和b方可以交换多键分组标记列的分片,以获得所述多键分组标记列。在一些实施例中,可以将两方的多键分组标记列的分片集中于一方,如a方/b方/第三方,进而两方中的任一方可以获得所述多键分组标记列。
46.在一些实施例中,对于分组标记列的长度与数据列中相邻位置的对数一致的情况,获得多键分组标记列后,可以在多键分组标记列的头部(原首位之前)添加0/1作为新的首位元素,如此可以转换得到分组标记列与数据列等长的情况下获得的多键分组标记列,具体可以参考图7a~7d。
47.步骤250,根据所述多键分组标记列获得所述多个信息项对应的数据列中待聚合的数据列的各分组对应的聚合结果和/或各分组对应的聚合结果的分片。
48.所述多键分组标记列可以指示各数据列(结果序列)中元素基于各排序键的联合分组信息,如指示哪些对象在数据列中的对应元素属于一个分组。参考前述内容,在一些实施例中,所述多键分组标记列中0的分布可以反映数据列中组分界点的分布。在一些实施例中,所述多键分组标记列中1的分布可以反映数据列中组分界点的分布。进而,通过组分界点的分布可以确定分组情况。图8a和图8b提供了根据多键分组标记确定分组情况的两种示例。如图8a所示,对于长度为6的数据列,可以获得长度为6的多键分组标记列b,多键分组标记列b中的1的分布反映数据列中组分界点的分布,基于多键分组标记列b可以获得分组情况,分组情况用从上到下升序的组号列来表示,编号0~5的6个对象(或其关联数据)被划分成4个分组。其中,与加粗的组号同行的元素可视为组内首位元素。如图8b所示,对于长度为6的数据列,可以获得长度为5的多键分组标记列b,多键分组标记列b中的1的分布反映数据列中组分界点的分布,基于多键分组标记列b可以获得分组情况,分组情况与图8a相同,在此不再赘述。本说明书实施例提供的基于秘密分享的多键分组信息获取方法,通过公开多键分组标记列的分片,提供安全退让的组内聚合,可以在确保数据安全的前提下实现多方联合的数据任务。
49.在一些实施例中,所述聚合结果可以包括对组内元素进行以下一种或多种运算的结果:求和、求均值、计数、求最大值、求中值(即中位数)、求最小值等。即,所述聚合可以指求和、求均值、计数、求最大值、求中值、求最小值等中的一种或多种运算。
50.对于组内计数,可以根据所述多键分组标记列获得待聚合的数据列(即待聚合列)的各分组的元素个数。参考图8a或图8b,可以根据所述多键分组标记列对应的分组情况(每个对象对应的组号),确定待聚合列的各分组的元素个数,其中,每个组号的个数即对应分组的元素个数。
51.当待聚合数据列以分片形式存储于a方和b方时,双方可以根据分组情况对待聚合列中的同组元素的分片执行求和、求均值等运算,以获得各分组对应的聚合结果的分片。例如,对于求和,可以根据分组情况对待聚合列中的同组元素的分片执行求和运算,以获得各分组对应的和值的分片。对于求最大值、求中位数、求最小值等依赖于排序的运算,由于会优先基于待聚合数据列进行排序,因此各分组内的待聚合数据列的元素的分片也是有序的,可以直接在组内,基于分片求得最大值的分片、中位数分片或最小值分片。
52.当待聚合数据列为a方或b方的隐私数据时,a方或b方可以根据分组情况进行任一聚合运算,得到各分组的聚合结果。
53.需要说明的是,尽管本说明书主要以两方场景为例进行描述,但本说明书的原理
可以推广应用于多方(三个或以上参与方)场景。在多方场景中,任意两方可以作为一对相对方,执行前述的a方和b方的流程。另外,对于待聚合数据列为单方私有时,另一方可以只执行流程200中的步骤210~240。还需要说明的是,流程200中的步骤210~230同样适用于双方拥有排序键对应的各数据列的分片,需要协同获得多键分组标记列的分片的场景。此时,双方获得的多键分组标记列的分片可以作为其他多方安全计算任务的已知条件,进而帮助双方完成其他多方安全计算任务。
54.图9是根据本说明书一些实施例所示的基于秘密分享的多键分组信息获取系统的示例性模块图。系统900可以在多方中的任一方实现。
55.如图9所示,系统900可以包括获得模块910、第一秘密分享运算模块920、第二秘密分享运算模块930。
56.获得模块910可以用于获得排序键对应的数据列的分片。
57.第一秘密分享运算模块920可以用于:针对每一排序键,基于该排序键对应的数据列的秘密分享分片与其他方进行秘密分享运算,以获得该排序键对应的分组标记列的分片。
58.第二秘密分享运算模块930可以用于基于各排序键对应的分组标记列的分片与其他方进行秘密分享运算,得到多键分组标记列的分片。
59.图10是根据本说明书一些实施例所示的基于秘密分享的数据聚合系统的示例性模块图。系统1000可以在多方中的任一方实现。
60.如图10所示,系统1000可以包括获得模块1010、第一秘密分享运算模块1020、第二秘密分享运算模块1030、公开模块1040和聚合模块1050。
61.获得模块1010可以用于获得排序键对应的数据列的分片。
62.第一秘密分享运算模块1020可以用于:针对每一排序键,基于该排序键对应的数据列的秘密分享分片与其他方进行秘密分享运算,以获得该排序键对应的分组标记列的分片。
63.第二秘密分享运算模块1030可以用于基于各排序键对应的分组标记列的分片与其他方进行秘密分享运算,得到多键分组标记列的分片。
64.公开模块1040可以用于公开多键分组标记列的分片,以获得所述多键分组标记列。
65.聚合模块1050可以用于根据所述多键分组标记列获得所述多个信息项对应的数据列中待聚合的数据列的各分组对应的聚合结果和/或各分组对应的聚合结果的分片。
66.关于系统900、系统1000及其模块的更多细节,可以参考图2及其相关描述。
67.应当理解,图9、图10所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、cd或dvd-rom的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻
辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
68.需要注意的是,以上对于系统及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,在一些实施例中,第一秘密分享运算模块1020(或920)和第二秘密分享运算模块1030(或930)可以是两个分立模块,也可以合并为一个模块。诸如此类的变形,均在本说明书的保护范围之内。
69.本说明书实施例可能带来的有益效果包括但不限于:(1)在确保数据安全的前提下实现多方联合的数据任务;(2)通过公开多键分组标记列的分片,提供安全退让的组内聚合。(3)各排序键对应的分组标记列的分片可以并行计算,以提高计算效率;(3)获得明文形式的多键分组标记列后,组内聚合操作可在任一方本地进行而无需多方合作,使得聚合效率大大提高。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
70.上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书实施例的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书实施例进行各种修改、改进和修正。该类修改、改进和修正在本说明书实施例中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
71.同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
72.此外,本领域技术人员可以理解,本说明书实施例的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书实施例的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书实施例的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
73.计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、rf、或类似介质,或任何上述介质的组合。
74.本说明书实施例各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如java、scala、smalltalk、eiffel、jade、emerald、c 、
c#、vb.net、python等,常规程序化编程语言如c语言、visualbasic、fortran2003、perl、cobol2002、php、abap,动态编程语言如python、ruby和groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(lan)或广域网(wan),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(saas)。
75.此外,除非权利要求中明确说明,本说明书实施例所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书实施例流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的系统。
76.同理,应当注意的是,为了简化本说明书实施例披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书实施例对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
77.针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本技术权利要求最广范围有限制的文件(当前或之后附加于本技术中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
78.最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书实施例的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献