一种基于秘密分享的排序方法和系统与流程

专利查询2023-8-14  122



1.本说明书涉及数据安全领域,特别涉及一种基于秘密分享的排序方法和系统。


背景技术:

2.数据在当今世界,起着越来越重要的作用,在很多应用场景下数据已成为一种资源需要对其进行保护。在实际业务场景中,由于需要保护数据隐私安全和数据隔离等原因,经常会遇到一些棘手的问题。例如,参与业务的多个合作者,希望共同完成建模、统计分析等任务,但是由于数据隐私和数据隔离等原因,无法将数据进行直接融合建模或统计分析。密码学中用于解决多方安全计算的工具可以用于实现这类该任务。
3.因此,本说明书提供了一种基于秘密分享的排序方法和系统,可作为一些多方安全计算的底层实现。


技术实现要素:

4.本说明书实施例之一提供一种基于秘密分享的排序方法,待排序数据列以和共享分片存储于第一方和第二方,第一方持有目标排序向量,排序向量用于标识对等长序列进行排序的操作,其元素指示所述等长序列中的对位元素在结果序列中的位置;该方法由所述第一方执行,其包括:获取第一排序向量、第一数据列的第一分片和基于所述第一排序向量对所述第一数据列进行排序的第一结果数据列的第一分片;所述第一数据列与所述待排序数据列等长;基于所述目标排序向量和所述第一排序向量确定第二排序向量;设中间结果序列为基于第一排序向量对等长序列进行排序的结果,则第二排序向量能够使得基于其对所述中间结果序列进行排序的结果序列等于基于所述目标排序向量对所述等长序列进行排序的结果序列;将所述第二排序向量发送给第二方;基于待排序数据列的第一分片与第一数据列的第一分片,获得第二数据列的第一分片,以及从第二方获取第二数据列的第二分片;基于第二数据列的第一分片以及第二数据列的第二分片,获得第二数据列;基于目标排序向量对第二数据列进行排序,得到第二结果数据列;基于第二排序向量对所述第一结果数据列的第一分片进行排序,得到第三结果数据列;基于第二结果数据列和第三结果数据列,获得目标数据列的第一分片;所述目标数据列等于基于所述目标排序向量对所述待排序数据列进行排序的结果序列。
5.本说明书实施例之一提供一种基于秘密分享的排序系统,其中,待排序数据列以和共享分片存储于第一方和第二方,第一方持有目标排序向量,排序向量用于标识对等长序列进行排序的操作,其元素指示所述等长序列中的对位元素在结果序列中的位置;该系统部署于第一方,其包括:第一获取模块,用于获取第一排序向量、第一数据列的第一分片和基于所述第一排序向量对所述第一数据列进行排序的第一结果数据列的第一分片;所述第一数据列与所述待排序数据列等长;第二排序向量确定模块,用于基于所述目标排序向量和所述第一排序向量确定第二排序向量;设中间结果序列为基于第一排序向量对等长序列进行排序的结果,则第二排序向量能够使得基于其对所述中间结果序列进行排序的结果
序列等于基于所述目标排序向量对所述等长序列进行排序的结果序列;第一发送模块,用于将所述第二排序向量发送给第二方;第二数据列分片获取模块,用于基于待排序数据列的第一分片与第一数据列的第一分片,获得第二数据列的第一分片,以及从第二方获取第二数据列的第二分片;第二数据列确定模块,用于基于第二数据列的第一分片以及第二数据列的第二分片,获得第二数据列;第二结果数据列确定模块,用于基于目标排序向量对第二数据列进行排序,得到第二结果数据列;第三结果数据列确定模块,用于基于第二排序向量对所述第一结果数据列的第一分片进行排序,得到第三结果数据列;第一目标数据列分片获取模块,用于基于第二结果数据列和第三结果数据列,获得目标数据列的第一分片;所述目标数据列等于基于所述目标排序向量对所述待排序数据列进行排序的结果序列。
6.本说明书实施例之一提供一种基于秘密分享的排序装置,包括处理器,所述处理器用于执行上述的基于秘密分享的排序方法。
7.本说明书实施例之一提供一种基于秘密分享的排序方法,待排序数据列以和共享分片存储于第一方和第二方,第一方持有目标排序向量,排序向量用于标识对等长序列进行排序的操作,其元素指示所述等长序列中的对位元素在结果序列中的位置;该方法由所述第二方执行,其包括:获取第一数据列的第二分片和基于第一排序向量对所述第一数据列进行排序的第一结果数据列的第二分片;所述第一数据列与所述待排序数据列等长;基于待排序数据列的第二分片与第一数据列的第二分片,获得第二数据列的第二分片,并传输给第一方;从第一方获取第二排序向量;设中间结果序列为基于第一排序向量对等长序列进行排序的结果,则第二排序向量能够使得基于其对所述中间结果序列进行排序的结果序列等于基于所述目标排序向量对所述等长序列进行排序的结果序列;基于第二排序向量对所述第一结果数据列的第二分片进行排序,得到目标数据列的第二分片;所述目标数据列等于基于所述目标排序向量对所述待排序数据列进行排序的结果序列。
8.本说明书实施例之一提供一种基于秘密分享的排序系统,待排序数据列以和共享分片存储于第一方和第二方,第一方持有目标排序向量,排序向量用于标识对等长序列进行排序的操作,其元素指示所述等长序列中的对位元素在结果序列中的位置;该系统部署于第二方,其包括:第二获取模块,用于获取第一数据列的第二分片和基于第一排序向量对所述第一数据列进行排序的第一结果数据列的第二分片;所述第一数据列与所述待排序数据列等长;第二发送模块,用于基于待排序数据列的第二分片与第一数据列的第二分片,获得第二数据列的第二分片,并传输给第一方;第二排序向量获取模块,用于从第一方获取第二排序向量;设中间结果序列为基于第一排序向量对等长序列进行排序的结果,则第二排序向量能够使得基于其对所述中间结果序列进行排序的结果序列等于基于所述目标排序向量对所述等长序列进行排序的结果序列;第二目标数据列分片获取模块,用于基于第二排序向量对所述第一结果数据列的第二分片进行排序,得到目标数据列的第二分片;所述目标数据列等于基于所述目标排序向量对所述待排序数据列进行排序的结果序列。
9.本说明书实施例之一提供一种基于秘密分享的排序装置,包括处理器,所述处理器用于执行上述的基于秘密分享的排序方法。
附图说明
10.本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进
行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:图1是根据本说明书一些实施例所示的基于秘密分享的排序方法的示例性交互流程图;图2是根据本说明书一些实施例所示的生成排序向量的示意图;图3是根据本说明书一些实施例所示的基于秘密分享的排序系统的示例性模块图;图4是根据本说明书另一些实施例所示的基于秘密分享的排序系统的示例性模块图。
具体实施方式
11.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
12.应当理解,本文使用的“系统”、“装置”、“单元”和/或“模块”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
13.如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
14.本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
15.多方安全计算能让参与的各方在不暴露各自数据隐私的情况下,实现基于各方联合数据的任务目标等。
16.在多方安全计算的过程中,经常会遇到对数据进行联合排序(比如,升序排序或降序排序)的情况。例如,机器学习所使用的训练样本的特征排序、联合统计分析的主键排序等。以机器学习的样本特征排序为例,在进行机器学习的模型训练时,可能会存在对训练样本集中的特征数据和标签数据进行排序的需求。比如,将特征数据按照其数值大小从小到大进行排序后,需要将特征数据对应的标签数据按照相应的排序方式进行排序,以使得在排序后标签数据能够与特征数据一一对应。这时,一种可行的排序做法是,对某特征对应的数据列进行基数排序(例如对该数据列的元素进行升序排列),得到排序向量,再使用所述排序向量对标签列进行排序。
17.图2是根据本说明书一些实施例所示的生成排序向量的示意图。排序向量用于标识对等长序列进行排序的操作,其元素指示所述等长序列中的对位元素在结果序列中的位
置。如图2所示,假设存在一个数据列k,其包括5个元素,index列标识了5个元素在数据列k中的位置,需要对数据列k进行字典升序排序(即按照字母顺序进行排序)。对数据列k进行排序后(如new index列),得到数据列k'。k的第1个元素a的新下标为0,第2个元素b的新下标为2,以此类推,最终得到描述k——》k'这个排列操作的排序向量p为 [0, 2, 1, 4, 3]。在一些实施例中,这个排序向量可以作为一个排列函数作用在数据列k上,可以表示为p(k)= k'。
[0018]
在一些实施例中,排序可以是稳定排序,即待排序的序列中可能存在两个或两个以上元素相同,以数据列k中的元素“a”为例,若排序前的序列中序号为0的元素“a”领先于序号为2的元素“a”,则在排序后的序列中序号为0的元素“a”依然领先于序号为2的元素“a”。在一些其他实施例中,本说明书方案同样适用于不稳定排序。
[0019]
在多方安全计算场景中,特征数据列可以是一方(如第一方)私有,第一方可以基于其特征数据列生成私有的排序向量,标签列由另一方私有,各方如何在不泄露私有数据的前提下,完成对标签列的排序,是有待解决的技术问题。
[0020]
为此,在本说明书一些实施例中,为保护数据隐私提供了一种基于秘密分享的排序方法。其中,第一方私有排序向量(以下或称为目标排序向量)以及待排序数据列的第一分片,第二方持有待排序数据列的第二分片。需要说明的是,本说明书提供的方法适用于任意基于排序向量对待排序数据列进行安全排序的场景。在一些实施例中,待排序数据列可以为一方,如第二方,独立持有,此时,第二方可以将待排序数据列拆分成和共享形式的分片,并将其中一分片发送给另一方,如第一方,此时可以继续使用本说明书提供的排序方法。
[0021]
图1是根据本说明书一些实施例所示的基于秘密分享的排序方法的示例性交互流程图。
[0022]
在一些实施例中,图1所示的交互流程可以由第一方和第二方协同完成,其中的流程100可以由第一方执行,流程200由第二方执行,交互流程包括:步骤110,获取第一排序向量、第一数据列的第一分片和基于所述第一排序向量对所述第一数据列进行排序的第一结果数据列的第一分片。在一些实施例中,步骤110可由第一获取模块310执行。
[0023]
步骤210,获取第一数据列的第二分片和基于第一排序向量对所述第一数据列进行排序的第一结果数据列的第二分片。在一些实施例中,步骤210可由第二获取模块410执行。
[0024]
在一些实施例中,所述第一排序向量、第一数据列的分片以及第一结果数据列的分片来自第三方,第三方可以生成两个随机序列分别作为第一排序向量和第一数据列,并基于第一排序向量对第一数据列进行排序,得到第一结果数据列。其中,随机序列与待排序数据列等长,或者说两者具有相同的元素个数。第三方可以进一步将第一数据列和第一结果序列分别拆分成和共享形式,并将第一排序向量、第一数据列的第一分片以及第一结果数据列的第一分片发送给第一方,将第一数据量的第二分片以及第一结果数据列的第二分片发送给第二方。在一些实施例中,可以将第一排序向量表示为,将第一数据列表示为r,则第一方获取的第一数据列的第一分片可以表示为,基于所述第一排序向量对
所述第一数据列进行排序的第一结果数据列的第一分片可以表示为。第二方获取的第一数据列的第二分片可以表示为,基于所述第一排序向量对所述第一数据列进行排序的第一结果数据列的第二分片可以表示为。由于第三方不接收来自第一方或第二方的信息,因此不会造成隐私的泄露。
[0025]
在一些实施例中,第三方可以是可信第三方或半可信第三方。在一些实施例中,可以是第三方在tee(可信执行环境)中运行特定程序,生成第一排序向量和第一数据列,并计算第一结果数据列,再将第一排序向量、第一数据列的第一分片以及第一结果数据列的第一分片发送至第一方,将第一数据列的第二分片以及第一结果数据列的第二分片发送至第二方。
[0026]
在一些实施例中,参与方以及第三方可以通过伪随机数算法,基于随机数种子生成随机数。在伪随机数算法中,需要预先设置一组伪随机数据种子,各方再基于预设好的随机数种子,生成一组随机数。当输入相同的随机数种子时,所生成的随机数序列也是相同的。需要说明的是,随机数种子可以在执行协议前提前配置于各参与方。
[0027]
在一些实施例中,第一排序向量、第一数据列的第一分片以及第一结果数据列的第一分片可以由第一方分别通过相应的伪随机数种子生成。具体的,第一方可以持有第一排序向量、第一数据列的第一分片以及第一结果数据列的第一分片的伪随机数种子,第一方通过伪随机数种子获取第一排序向量、第一数据列的第一分片和基于所述第一排序向量对所述第一数据列进行排序的第一结果数据列的第一分片。第三方可以持有第一排序向量、第一数据列、第一数据列的第一分片以及第一结果数据列的第一分片的伪随机数种子,第三方通过相应的伪随机数种子分别生成与第一方相同的第一排序向量、第一数据列的第一分片以及第一结果数据列的第一分片,另外,第三方还会随机生成第一数据列,基于第一排序向量对第一数据列进行排序得到第一结果数据列,计算第一数据列与第一数据列的第一分片的差得到第一数据列的第二分片,计算第一结果数据列和第一结果数据列的第一分片的差,得到第一结果数据列的第二分片,将第一数据列的第二分片和第一结果数据列的第二分片发送给第二方。需要说明的是,本说明书一些实施例提到序列的差或和,在无特别说明的情况下,一般是指将两个序列按位求差或按位求和。
[0028]
在一些实施例中,第一排序向量可以是第一方通过相应的伪随机数种子生成,第一数据列的第一分片以及第一结果数据列的第一分片则来自第三方,此时,第一数据列的第二分片以及第一结果数据列的第二分片可以由第二方分别通过相应的伪随机数种子生成。相应的,第三方持有第一排序向量、第一数据列、第一数据列的第二分片以及第一结果数据列的第二分片的随机数种子。第三方通过相应的伪随机数种子分别生成与第一方相同的第一排序向量、与第二方相同的第一数据列的第二分片以及第一结果数据列的第二分片,另外,第三方还会通过伪随机数种子随机生成第一数据列,基于第一排序向量对第一数据列进行排序得到第一结果数据列,计算第一数据列与第一数据列的第二分片的差得到第一数据列的第一分片,计算第一结果数据列和第一结果数据列的第二分片的差,得到第一结果数据列的第一分片,并将第一数据列的第一分片以及第一结果数据列的第一分片发送给第一方。
[0029]
可以看出,通过上述伪随机数算法,第三方只需要将第一数据列的第一分片以及第一结果数据列的第一分片发送给第一方或者只需要将第一数据列的第二分片以及第一结果数据列的第二分片发送给第二方,可以进一步减少数据传输量。
[0030]
步骤120,基于所述目标排序向量和所述第一排序向量确定第二排序向量。在一些实施例中,步骤120可由第二排序向量确定模块320执行。
[0031]
在一些实施例中,若存在中间结果序列为基于第一排序向量对等长序列进行排序的结果时,则第二排序向量可以使得基于其对所述中间结果序列进行排序的结果序列等于基于所述目标排序向量对所述等长序列进行排序的结果序列,第二排序向量可以与第一排序向量等长。
[0032]
在一些实施例中,第二排序向量可以基于所述第一排序向量对所述目标排序向量进行排列得到,具体的,可以将目标排序向量表示为,则在一些实施例中,第二排序向量可以表示为:(1)。
[0033]
作为示例,目标排序向量为(2,4,1,3,0),第一排序向量为(4,2,1,0,3),可以基于第一排序向量对目标排序向量进行排列,得到第二排序向量为(3,1,4,0,2)。
[0034]
可以验证,设等长序列x为(a,b,c,d,e),则有中间结果序列为(d,c,b,e,a),进而基于第二排序向量对所述中间结果序列进行排序的结果序列为(e,c,a,d,b)。基于目标排序向量对所述等长序列进行排序的结果序列为(e,c,a,d,b)。可见,。
[0035]
步骤130,将所述第二排序向量发送给第二方。在一些实施例中,步骤130可由第一发送模块330执行。
[0036]
步骤220,从第一方获取第二排序向量。在一些实施例中,步骤220可由第二排序向量获取模块430执行。
[0037]
在一些实施例中,由于第二排序向量通过目标排序向量和第一排序向量确定,在第二方不知晓第一排序向量的情况下,也难以知晓目标排序向量,不会泄露第一方的隐私数据。
[0038]
步骤140,基于待排序数据列的第一分片与第一数据列的第一分片,获得第二数据列的第一分片,以及从第二方获取第二数据列的第二分片。在一些实施例中,步骤140可由第二数据列分片获取模块340执行。
[0039]
步骤230,基于待排序数据列的第二分片与第一数据列的第二分片,获得第二数据列的第二分片,并传输给第一方。在一些实施例中,步骤230可由第二发送模块420执行。
[0040]
在一些实施例中,第二数据列可以看成用于计算目标数据列的中间量之一。在一些实施例中,第二数据列可以通过待排列数据列和第一数据列得到。
[0041]
在一些实施例中,第二数据列可以是待排列数据列与第一数据列的差,相应的,第
一方可以通过计算待排序数据列的第一分片与第一数据列的第一分片的差,得到所述第二数据列的第一分片。将待排列数据列表示为x,则待排序数据列的第一分片可以表示为

x
〉a,在一些实施例中,第二数据列的第一分片可以表示为。
[0042]
第二方可以计算待排序数据列的第二分片

x
〉b与第一数据列的第二分片
〈r〉b的差,得到所述第二数据列的第二分片,并传输给第一方,步骤150,基于第二数据列的第一分片以及第二数据列的第二分片,获得第二数据列。在一些实施例中,步骤150可由第二数据列确定模块350执行。
[0043]
在一些实施例中,第一方可以对第二数据列的第一分片和第二数据列的第二分片求和,得到第二数据列x-r。
[0044]
通过第一数据列r,待排序数据列x被隐匿,有效保护了数据隐私。
[0045]
步骤160,基于目标排序向量对第二数据列进行排序,得到第二结果数据列。在一些实施例中,步骤160可由第二结果数据列确定模块360执行。
[0046]
在一些实施例中,第一方基于目标排序向量π(

)对第二数据列x-r进行排序,得到的第二结果数据列可以表示为。
[0047]
步骤170,基于第二排序向量对所述第一结果数据列的第一分片进行排序,得到第三结果数据列。在一些实施例中,步骤170可由第三结果数据列确定模块370执行。
[0048]
在一些实施例中,第一方基于第二排序向量π2(

)对所述第一结果数据列的第一分片进行排序,得到第三结果数据列可以表示为。
[0049]
步骤180,基于第二结果数据列和第三结果数据列,获得目标数据列的第一分片。在一些实施例中,步骤180可由第一目标数据列分片获取模块380执行。
[0050]
步骤240,基于第二排序向量对所述第一结果数据列的第二分片进行排序,得到目标数据列的第二分片。在一些实施例中,步骤240可由第二目标数据列分片获取模块440执行。
[0051]
在一些实施例中,目标数据列等于基于所述目标排序向量对所述待排序数据列进行排序的结果序列,即排序的最终结果为目标数据列,并以和分片的形式分别存储于第一方和第二方。在一些实施例中,根据实际需要,第一方还可以将目标数据列的第一分片发送给第二方,以便第二方获取目标数据列。
[0052]
在一些实施例中,可以将目标数据列表示为y,所述目标数据列的第一分片
〈y〉a可以通过第一方计算第二结果数据列与第三结果数据列的和得到,在一些实施例中,目标数据列的第一分片
〈y〉a可以表示为:(2)。
[0053]
在一些实施例中,第二方获得的目标数据列的第二分片
〈y〉b可以表示为:(3)。
[0054]
在一些实施例中,第一方得到目标数据列的第一分片
〈y〉a、第二方得到标数据列
的第二分片
〈y〉b,两者的和即为目标数据列y。可以验证:,两者的和即为目标数据列y。可以验证:(4)。
[0055]
应当注意的是,上述图1中流程100和流程200的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程100和流程200进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,第二方可以先执行步骤230,然后再执行步骤220,或者步骤220和步骤230同时执行。
[0056]
图3是根据本说明书一些实施例所示的基于秘密分享的排序系统的示例性模块图。
[0057]
如图3所示,该基于秘密分享的排序系统300可以包括第一获取模块310、第二排序向量确定模块320、第一发送模块330、第二数据列分片获取模块340、第二数据列确定模块350、第二结果数据列确定模块360、第三结果数据列确定模块370和第一目标数据列分片获取模块380。
[0058]
第一获取模块310,用于获取第一排序向量、第一数据列的第一分片和基于所述第一排序向量对所述第一数据列进行排序的第一结果数据列的第一分片;所述第一数据列与所述待排序数据列等长。
[0059]
在一些实施例中,关于第一获取模块310的更多内容可以参见步骤110及其相关描述。
[0060]
第二排序向量确定模块320,用于基于所述目标排序向量和所述第一排序向量确定第二排序向量;设中间结果序列为基于第一排序向量对等长序列进行排序的结果,则第二排序向量能够使得基于其对所述中间结果序列进行排序的结果序列等于基于所述目标排序向量对所述等长序列进行排序的结果序列。
[0061]
在一些实施例中,关于第二排序向量确定模块320的更多内容可以参见步骤120及其相关描述。
[0062]
第一发送模块330,用于将所述第二排序向量发送给第二方。
[0063]
在一些实施例中,关于第一发送模块330的更多内容可以参见步骤130及其相关描述。
[0064]
第二数据列分片获取模块340,用于基于待排序数据列的第一分片与第一数据列的第一分片,获得第二数据列的第一分片,以及从第二方获取第二数据列的第二分片。
[0065]
在一些实施例中,关于第二数据列分片获取模块340的更多内容可以参见步骤140及其相关描述。
[0066]
第二数据列确定模块350,用于基于第二数据列的第一分片以及第二数据列的第二分片,获得第二数据列。
[0067]
在一些实施例中,关于第二数据列确定模块350的更多内容可以参见步骤150及其
相关描述。
[0068]
第二结果数据列确定模块360,用于基于目标排序向量对第二数据列进行排序,得到第二结果数据列。
[0069]
在一些实施例中,关于第二结果数据列确定模块360的更多内容可以参见步骤160及其相关描述。
[0070]
第三结果数据列确定模块370,用于基于第二排序向量对所述第一结果数据列的第一分片进行排序,得到第三结果数据列。
[0071]
在一些实施例中,关于第三结果数据列确定模块370的更多内容可以参见步骤170及其相关描述。
[0072]
第一目标数据列分片获取模块380,用于基于第二结果数据列和第三结果数据列,获得目标数据列的第一分片;所述目标数据列等于基于所述目标排序向量对所述待排序数据列进行排序的结果序列。
[0073]
在一些实施例中,关于第一目标数据列分片获取模块380的更多内容可以参见步骤180及其相关描述,此处不再赘述。
[0074]
图4是根据本说明书另一些实施例所示的基于秘密分享的排序系统的示例性模块图。
[0075]
如图4所示,该基于秘密分享的排序系统400可以包括第二获取模块410、第二发送模块420、第二排序向量获取模块430和第二目标数据列分片获取模块440。
[0076]
第二获取模块410,用于获取第一数据列的第二分片和基于第一排序向量对所述第一数据列进行排序的第一结果数据列的第二分片;所述第一数据列与所述待排序数据列等长。
[0077]
在一些实施例中,关于第二获取模块410的更多内容可以参见步骤210及其相关描述。
[0078]
第二发送模块420,用于基于待排序数据列的第二分片与第一数据列的第二分片,获得第二数据列的第二分片,并传输给第一方。
[0079]
在一些实施例中,关于第二发送模块420的更多内容可以参见步骤220及其相关描述。
[0080]
第二排序向量获取模块430,用于从第一方获取第二排序向量;设中间结果序列为基于第一排序向量对等长序列进行排序的结果,则第二排序向量能够使得基于其对所述中间结果序列进行排序的结果序列等于基于所述目标排序向量对所述等长序列进行排序的结果序列。
[0081]
在一些实施例中,关于第二排序向量获取模块430的更多内容可以参见步骤230及其相关描述。
[0082]
第二目标数据列分片获取模块440,用于基于第二排序向量对所述第一结果数据列的第二分片进行排序,得到目标数据列的第二分片;所述目标数据列等于基于所述目标排序向量对所述待排序数据列进行排序的结果序列。
[0083]
在一些实施例中,关于第二目标数据列分片获取模块440的更多内容可以参见步骤240及其相关描述。
[0084]
应当理解,图3和图4所示的系统300和系统400及其模块可以利用各种方式来实
现。例如,在一些实施例中,例如,在一些实施例中,装置及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行装置,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和装置可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、cd或dvd-rom的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的装置及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
[0085]
需要注意的是,以上对于系统300和图系统400及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,在一些实施例中,例如,图4中披露的第二获取模块410、第二发送模块420、第二排序向量获取模块430和第二目标数据列分片获取模块440可以是一个系统中的不同模块,也可以是一个模块实现上述的两个或两个以上模块的功能。例如,第二获取模块410、第二发送模块420可以是两个模块,也可以是一个模块同时具有发送和接收功能。例如,各个模块可以共用一个存储模块,各个模块也可以分别具有各自的存储模块。诸如此类的变形,均在本说明书的保护范围之内。
[0086]
本说明书实施例可能带来的有益效果包括但不限于:(1)各参与方可以在不暴露各自数据隐私的情况下,实现联合排序;(2)联合排序过程中参与方仅需从第三方获取少量数据,且该数据可以由第三方离线(offline)生成,使得该方法可以使用大规模计算的场景中。
[0087]
需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
[0088]
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
[0089]
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
[0090]
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本
说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
[0091]
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
[0092]
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有
±
20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
[0093]
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
[0094]
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。

技术特征:
1.一种基于秘密分享的排序方法,待排序数据列以和共享分片存储于第一方和第二方,第一方持有目标排序向量,排序向量用于标识对等长序列进行排序的操作,其元素指示所述等长序列中的对位元素在结果序列中的位置;该方法由所述第一方执行,其包括:获取第一排序向量、第一数据列的第一分片和基于所述第一排序向量对所述第一数据列进行排序的第一结果数据列的第一分片;所述第一数据列与所述待排序数据列等长;基于所述目标排序向量和所述第一排序向量确定第二排序向量;设中间结果序列为基于第一排序向量对等长序列进行排序的结果,则第二排序向量能够使得基于其对所述中间结果序列进行排序的结果序列等于基于所述目标排序向量对所述等长序列进行排序的结果序列;将所述第二排序向量发送给第二方;基于待排序数据列的第一分片与第一数据列的第一分片,获得第二数据列的第一分片,以及从第二方获取第二数据列的第二分片;基于第二数据列的第一分片以及第二数据列的第二分片,获得第二数据列;基于目标排序向量对第二数据列进行排序,得到第二结果数据列;基于第二排序向量对所述第一结果数据列的第一分片进行排序,得到第三结果数据列;基于第二结果数据列和第三结果数据列,获得目标数据列的第一分片;所述目标数据列等于基于所述目标排序向量对所述待排序数据列进行排序的结果序列。2.如权利要求1所述的方法,所述基于所述目标排序向量和所述第一排序向量确定第二排序向量,包括:基于所述第一排序向量对所述目标排序向量进行排列,得到所述第二排序向量。3.如权利要求1所述的方法,所述基于待排序数据列的第一分片与第一数据列的第一分片,获得第二数据列的第一分片,包括:计算待排序数据列的第一分片与第一数据列的第一分片的差,得到所述第二数据列的第一分片。4.如权利要求1所述的方法,基于第二结果数据列和第三结果数据列,获得目标数据列的第一分片,包括:计算第二结果数据列与第三结果数据列的和,得到所述目标数据列的第一分片。5.如权利要求1所述的方法,所述第一排序向量、第一数据列的第一分片以及第一结果数据列的第一分片来自第三方;或者,所述第一排序向量、第一数据列的第一分片以及第一结果数据列的第一分片分别通过相应的伪随机数种子生成;或者,所述第一排序向量通过相应的伪随机数种子生成,第一数据列的第一分片以及第一结果数据列的第一分片来自第三方。6.一种基于秘密分享的排序系统,其中,待排序数据列以和共享分片存储于第一方和第二方,第一方持有目标排序向量,排序向量用于标识对等长序列进行排序的操作,其元素指示所述等长序列中的对位元素在结果序列中的位置;该系统部署于第一方,其包括:第一获取模块,用于获取第一排序向量、第一数据列的第一分片和基于所述第一排序向量对所述第一数据列进行排序的第一结果数据列的第一分片;所述第一数据列与所述待
排序数据列等长;第二排序向量确定模块,用于基于所述目标排序向量和所述第一排序向量确定第二排序向量;设中间结果序列为基于第一排序向量对等长序列进行排序的结果,则第二排序向量能够使得基于其对所述中间结果序列进行排序的结果序列等于基于所述目标排序向量对所述等长序列进行排序的结果序列;第一发送模块,用于将所述第二排序向量发送给第二方;第二数据列分片获取模块,用于基于待排序数据列的第一分片与第一数据列的第一分片,获得第二数据列的第一分片,以及从第二方获取第二数据列的第二分片;第二数据列确定模块,用于基于第二数据列的第一分片以及第二数据列的第二分片,获得第二数据列;第二结果数据列确定模块,用于基于目标排序向量对第二数据列进行排序,得到第二结果数据列;第三结果数据列确定模块,用于基于第二排序向量对所述第一结果数据列的第一分片进行排序,得到第三结果数据列;第一目标数据列分片获取模块,用于基于第二结果数据列和第三结果数据列,获得目标数据列的第一分片;所述目标数据列等于基于所述目标排序向量对所述待排序数据列进行排序的结果序列。7.一种基于秘密分享的排序装置,包括处理器,所述处理器用于执行权利要求1~5中任一项所述的基于秘密分享的排序方法。8.一种基于秘密分享的排序方法,待排序数据列以和共享分片存储于第一方和第二方,第一方持有目标排序向量,排序向量用于标识对等长序列进行排序的操作,其元素指示所述等长序列中的对位元素在结果序列中的位置;该方法由所述第二方执行,其包括:获取第一数据列的第二分片和基于第一排序向量对所述第一数据列进行排序的第一结果数据列的第二分片;所述第一数据列与所述待排序数据列等长;基于待排序数据列的第二分片与第一数据列的第二分片,获得第二数据列的第二分片,并传输给第一方;从第一方获取第二排序向量;设中间结果序列为基于第一排序向量对等长序列进行排序的结果,则第二排序向量能够使得基于其对所述中间结果序列进行排序的结果序列等于基于所述目标排序向量对所述等长序列进行排序的结果序列;基于第二排序向量对所述第一结果数据列的第二分片进行排序,得到目标数据列的第二分片;所述目标数据列等于基于所述目标排序向量对所述待排序数据列进行排序的结果序列。9.如权利要求8所述的方法,所述基于待排序数据列的第二分片与第一数据列的第二分片,获得第二数据列的第二分片,包括:计算待排序数据列的第二分片与第一数据列的第二分片的差,得到所述第二数据列的第二分片。10.如权利要求8所述的方法,所述第一数据列的第二分片以及第一结果数据列的第二分片来自第三方;或者,第一数据列的第二分片以及第一结果数据列的第二分片分别通过相应的伪随机
数种子生成。11.一种基于秘密分享的排序系统,待排序数据列以和共享分片存储于第一方和第二方,第一方持有目标排序向量,排序向量用于标识对等长序列进行排序的操作,其元素指示所述等长序列中的对位元素在结果序列中的位置;该系统部署于第二方,其包括:第二获取模块,用于获取第一数据列的第二分片和基于第一排序向量对所述第一数据列进行排序的第一结果数据列的第二分片;所述第一数据列与所述待排序数据列等长;第二发送模块,用于基于待排序数据列的第二分片与第一数据列的第二分片,获得第二数据列的第二分片,并传输给第一方;第二排序向量获取模块,用于从第一方获取第二排序向量;设中间结果序列为基于第一排序向量对等长序列进行排序的结果,则第二排序向量能够使得基于其对所述中间结果序列进行排序的结果序列等于基于所述目标排序向量对所述等长序列进行排序的结果序列;第二目标数据列分片获取模块,用于基于第二排序向量对所述第一结果数据列的第二分片进行排序,得到目标数据列的第二分片;所述目标数据列等于基于所述目标排序向量对所述待排序数据列进行排序的结果序列。12.一种基于秘密分享的排序装置,包括处理器,所述处理器用于执行权利要求8~10中任一项所述的基于秘密分享的排序方法。

技术总结
本说明书涉及数据安全领域,特别涉及一种基于秘密分享的排序方法和系统,其中,待排序数据列以和共享分片存储于第一方和第二方,第一方持有目标排序向量,排序向量用于标识对等长序列进行排序的操作,其元素指示所述等长序列中的对位元素在结果序列中的位置;该方法由第一方执行,获得目标数据列的第一分片以及由第二方执行,获得目标数据列的第二分片。获得目标数据列的第二分片。获得目标数据列的第二分片。


技术研发人员:方文静 王力
受保护的技术使用者:支付宝(杭州)信息技术有限公司
技术研发日:2022.02.09
技术公布日:2022/3/8

最新回复(0)