CN114338017B - 一种基于秘密分享的排序方法和系统 - Google Patents
一种基于秘密分享的排序方法和系统 Download PDFInfo
- Publication number
- CN114338017B CN114338017B CN202210205867.5A CN202210205867A CN114338017B CN 114338017 B CN114338017 B CN 114338017B CN 202210205867 A CN202210205867 A CN 202210205867A CN 114338017 B CN114338017 B CN 114338017B
- Authority
- CN
- China
- Prior art keywords
- sequence
- fragment
- participant
- sorting
- sorted
- 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
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本说明书实施例公开了一种基于秘密分享的排序方法和系统,应用于多方安全计算,所述方法包括第一方基于待排序序列的第一分片,与所述第二参与方基于所述待排序序列的第二分片,通过秘密分享排列协议,对待排序序列乱序;第一方基于排序序列的第一分片,与所述第二参与方基于所述排序序列的第二分片,通过秘密分享排列协议,对排序序列乱序;第一参与方从第二参与方获得乱序排序序列的第二分片,得到乱序排序序列;第一方基于所述乱序排序序列和所述待排序乱序序列的第一分片,与所述第二参与方基于所述待排序乱序序列的第二分片,通过秘密分享排列协议,获得结果序列的第一分片;第二参与方获得结果序列的第二分片。
Description
技术领域
本说明书涉及信息安全技术领域,特别涉及一种基于秘密分享的排序方法和系统。
背景技术
数据在当今世界,起着越来越重要的作用,在很多应用场景下数据已成为一种资源需要对其进行保护。在实际业务场景中,由于需要保护数据隐私安全和数据隔离等原因,经常会遇到一些棘手的问题。例如,参与业务的多个合作者,希望共同完成建模、统计分析等任务,但是由于数据隐私和数据隔离等原因,无法将数据进行直接融合建模或统计分析。密码学中用于解决多方安全计算的工具可以用于实现这类该任务。
因此,本说明书提供了一种基于秘密分享的排序方法和系统,可作为一些多方安全计算的底层实现。
发明内容
本说明书实施例的一个方面提供一种基于秘密分享的排序方法。该方法应用于第一参与方,所述第一参与方持有待排序序列的第一分片和排序序列的第一分片,所述待排序序列的第二分片和所述排序序列的第二分片由第二参与方持有,所述方法包括:基于待排序序列的第一分片,与所述第二参与方基于所述待排序序列的第二分片,通过秘密分享排列协议,获得待排序乱序序列的第一分片;所述第二参与方获得所述待排序乱序序列的第二分片;基于排序序列的第一分片,与所述第二参与方基于所述排序序列的第二分片,通过秘密分享排列协议,获得乱序排序序列的第一分片;所述第二参与方获得所述乱序排序序列的第二分片;且对排序序列的乱序方式与待排序序列的乱序方式相同;从所述第二参与方获得所述乱序排序序列的第二分片,得到所述乱序排序序列;基于所述乱序排序序列和所述待排序乱序序列的第一分片,与所述第二参与方基于所述待排序乱序序列的第二分片,通过秘密分享排列协议,获得结果序列的第一分片;第二参与方获得结果序列的第二分片;所述结果序列等于基于所述排序序列对所述待排序序列进行排序的结果。
本说明书实施例的另一个方面提供一种基于秘密分享的排序系统。该系统设置于第一参与方,所述第一参与方持有待排序序列的第一分片和排序序列的第一分片,所述待排序序列的第二分片和所述排序序列的第二分片由第二参与方持有,所述系统包括:第一待排序乱序序列分片获取模块,用于基于待排序序列的第一分片,与所述第二参与方基于所述待排序序列的第二分片,通过秘密分享排列协议,获得待排序乱序序列的第一分片;所述第二参与方获得所述待排序乱序序列的第二分片;第一乱序排序序列分片获取模块,用于基于排序序列的第一分片,与所述第二参与方基于所述排序序列的第二分片,通过秘密分享排列协议,获得乱序排序序列的第一分片;所述第二参与方获得所述乱序排序序列的第二分片;且对排序序列的乱序方式与待排序序列的乱序方式相同;乱序排序序列获取模块,用于从所述第二参与方获得所述乱序排序序列的第二分片,得到所述乱序排序序列;第一结果序列获取模块,用于基于所述乱序排序序列和所述待排序乱序序列的第一分片,与所述第二参与方基于所述待排序乱序序列的第二分片,通过秘密分享排列协议,获得结果序列的第一分片;第二参与方获得结果序列的第二分片;所述结果序列等于基于所述排序序列对所述待排序序列进行排序的结果。
本说明书实施例的另一个方面提供一种基于秘密分享的排序装置包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现本说明书实施例提供的一种基于秘密分享的排序方法。
本说明书实施例的另一个方面提供另一种基于秘密分享的排序方法,应用于第二参与方,所述第二参与方持有待排序序列的第二分片和排序序列的第二分片,所述待排序序列的第一分片和所述排序序列的第一分片由第一参与方持有,所述方法包括:基于待排序序列的第二分片,与所述第一参与方基于所述待排序序列的第一分片,通过秘密分享排列协议,获得待排序乱序序列的第二分片;所述第一参与方获得所述待排序乱序序列的第一分片;基于排序序列的第二分片,与所述第一参与方基于所述排序序列的第一分片,通过秘密分享排列协议,获得乱序排序序列的第二分片;所述第一参与方获得所述乱序排序序列的第一分片;且对排序序列的乱序方式与待排序序列的乱序方式相同;将所述乱序排序序列的第二分片发送给第一参与方,以便第一参与方得到所述乱序排序序列;基于所述待排序乱序序列的第二分片,与所述第一参与方基于所述待排序乱序序列的第一分片和所述乱序排序序列,通过秘密分享排列协议,获得结果序列的第二分片;第一参与方获得结果序列的第一分片;所述结果序列等于基于所述排序序列对所述待排序序列进行排序的结果。
本说明书实施例的另一个方面提供另一种基于秘密分享的排序系统,所述系统设置于第二参与方,所述第二参与方持有待排序序列的第二分片和排序序列的第二分片,所述待排序序列的第一分片和所述排序序列的第一分片由第一参与方持有,所述系统包括:第二待排序乱序序列分片获取模块,用于基于待排序序列的第二分片,与所述第一参与方基于所述待排序序列的第一分片,通过秘密分享排列协议,获得待排序乱序序列的第二分片;所述第一参与方获得所述待排序乱序序列的第一分片;第二乱序排序序列分片获取模块,用于基于排序序列的第二分片,与所述第一参与方基于所述排序序列的第一分片,通过秘密分享排列协议,获得乱序排序序列的第二分片;所述第一参与方获得所述乱序排序序列的第一分片;且对排序序列的乱序方式与待排序序列的乱序方式相同;乱序排序序列分片发送模块,用于将所述乱序排序序列的第二分片发送给第一参与方,以便第一参与方得到所述乱序排序序列;第二结果序列获取模块,用于基于所述待排序乱序序列的第二分片,与所述第一参与方基于所述待排序乱序序列的第一分片和所述乱序排序序列,通过秘密分享排列协议,获得结果序列的第二分片;第一参与方获得结果序列的第一分片;所述结果序列等于基于所述排序序列对所述待排序序列进行排序的结果。
本说明书实施例的另一个方面提供一种基于秘密分享的排序装置包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现本说明书实施例提供的另一种基于秘密分享的排序方法。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的排序序列的示例性示意图;
图2是根据本说明书一些实施例所示的秘密排列协议接口(即输入输出数据形式)的示例性示意图;
图3是根据本说明书的一些实施例所示的基于秘密分享的排序方法的示例性交互流程图;
图4是根据本说明书一些实施例所示的秘密分享排列协议的示例性示意图;
图5是根据本说明书的一些实施例所示的基于秘密分享的排序方法获得待排序乱序序列的示例性交互流程图;
图6是根据本说明书的一些实施例所示的基于秘密分享的排序方法获得乱序排序序列的示例性交互流程图;
图7是根据本说明书一些实施例所示的基于秘密分享的排序系统的示例性模块图;
图8是根据本说明书另一些实施例所示的基于秘密分享的排序系统的示例性模块图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
多方安全计算能让参与的各方在不暴露各自数据隐私的情况下,实现基于各方数据的联合任务目标等。
在多方安全计算的过程中,经常会遇到对数据进行排序(比如,升序排序或降序排序)的情况,例如,机器学习所使用的训练样本的特征排序、统计分析的主键排序等。以机器学习的样本特征排序为例,在进行机器学习的模型训练时,可能会存在对训练样本集中的特征数据和标签数据进行排序的需求。比如,将特征数据按照其数值大小从小到大进行排序后,需要将特征数据对应的标签数据按照相应的排序方式进行排序,以使得在排序后标签数据能够与特征数据一一对应。这时,一种可行的排序做法是,对某特征对应的数据列进行基数排序(例如对该数据列的元素进行升序排列),得到排序序列(在本说明书一些实施例中也称为排序函数、排列序列、排序向量),再使用所述排序序列对标签列进行排序。
除了机器学习场景外,基于多方安全计算的对联合数据排序还可以用于其他多种场景,如统计分析场景。示例性的,可以基于学校学生的考试成绩排序来得到排序向量,在基于排序向量对各学生的学号进行排序,从而使得排序后的学生学号与考试成绩的对应关系正确。
在一些实施例中,可以使用排序序列标识对等长序列进行排序的操作,其元素指示所述等长序列中的对位元素在结果序列中的位置,即排序序列的第i个元素是被排序序列第i个元素在排序后序列(或称为结果序列)中的新下标(即元素位置)。在一些实施例中,排序序列可以等同于排序函数。图1是根据本说明书一些实施例所示的排序序列的示例性示意图。如图1所示,将待排序序列——k1序列[a, b, a, c, b]进行字典升序排序(即按照字母顺序进行排序)得到结果序列——k1'序列[ a ,a, b, b, c],k1的第1个元素a的新下标为0,k1的第2个元素b的新下标为2,以此类推,对应描述k1——>k1'这个排列操作的排序序列p为 [0, 2, 1, 4, 3],这个排序序列可以作为一个排列函数作用在序列k1上,进而得到对序列k1排序后的结果序列k1',可以表示为:p(k1)=k1'。需要说明的是,以例子仅出于示例的目的,例如,在一些实施例中,也可以使用排序序列将k1序列进行字典降序排列。
在本说明书的一些实施例中,在按照某排序规则(如降序或升序)排序时遵循稳定排序的原则,即待排序序列中的相同的两个或以上元素在结果序列中的先后关系与其在待排序序列中一致。例如,k1序列中的第一个a元素、第二个a元素的位置或下标分别为0、2,在结果序列k1'中,所述第一个a元素的下标为0,所述第二个a元素的下标为1,即两者的先后关系不变。在一些其他实施例中,本说明书方案同样适用于不稳定排序。
在一些场景下,数据可以基于秘密分享以数据分片的形式存在与两方或多方,该种方式可以实现对数据的安全保护,防止数据泄露。在一些实施例中,待排序序列和排序序列都是基于秘密分享以数据分片的形式存储于不同的参与方,例如第一方持有待排序序列的第一分片和排序序列的第一分片,第二方持有待排序序列的第二分片和排序序列的第二分片。
在排序序列和待排序序列以明文的形式存在时,其可以很容易的实现排序,例如获取明文的排序序列并将其作用于待排序序列,可以得到对应的结果序列。然而,当排序序列和待排序序列基于秘密分享以数据分片的形式存在于两方或多方时,由于各方无法得知数据分片的所对应的原始数据,也就是不能得知原始数据之间的大小关系,对其进行排序也就变得极为困难。因此,本说明书中的一些实施例提供了一种基于秘密分享的排序方法和系统,可以在有效地保护数据隐私安全的情况下实现对隐私数据的排序。需要说明的是,本说明书提供的方法适用于任意基于排序序列对待排序数据列进行安全排序的场景。以下通过对附图的解释详细阐述本说明书实施例所披露的技术方案。
图2是根据本说明书一些实施例所示的秘密排列协议接口(即输入输出数据形式)的示例性示意图。在一些实施例中,排序序列可以用𝜋表示,待排序序列可以用X表示,基于排序序列𝜋对待排序序列X排序得到的结果序列可以用Y表示,<>该符号表示数据为秘密分享。秘密排列协议可以是基于秘密分享进行的排列算法或算子,在一些实施例中可以描述为使用秘密分享的排序序列,将一个长度为n秘密分享序列进行秘密排列,得到仍然以秘密分享的形式存在的排列结果。秘密排序过程中,各方持有的数据不会被其他方知晓。图2所示的秘密排列协议又可记为Secret Permutation函数或算子:,<>表示密文形式,具体可以是分片形式。SecretPermutation函数可以理解为一个功能函数,其一组输入数据包括排列函数的第一分片<π>A和待排序序列的第一分片<X>A,来自A方,其另一组输入数据包括排列函数的第二分片<π>B和待排序序列的第二分片<X>B,来自B方;其输出数据为包括结果序列的第一分片<Y>A和第二分片<Y>B,结果序列的第一分片由A方获得,结果序列的第二分片由B方获得。在一些实施例中,Secret Permutation函数或算子可以通过A方和B方协同执行图3所示的交互流程实现。
图3是根据本说明书的一些实施例所示的基于秘密分享的排序方法的示例性交互流程图。
在一些实施例中,图示的交互流程可以由参与排序的两方的处理设备协同执行。例如,交互流程中由第一参与方执行的部分(如流程300)可以以程序或指令的形式存储在第一参与方的存储装置(如处理设备的自带存储单元或外接存储设备)中,交互流程中由第二参与方执行的部分可以以程序或指令的形式存储在第二参与方的存储装置中。所述程序或指令在被执行时,可以实现基于秘密分享的排序过程。
在一些实施例中,流程300可以由参与多方安全计算的任一方执行。在本说明书实施例中,主要以第一参与方执行为例进行了描述。第一参与方可以持有排序序列的第一分片和待排序序列的第一分片,第二参与方持有排序序列的第二分片和待排序序列的第二分片。待排序序列的第一分片和第二分片可以是指将待排序序列以秘密分享的形式进行划分后得到的两个分片。排序序列的第一分片和第二分片可以是指将排序序列以秘密分享的形式进行划分后得到的两个分片。其中,分片可以是加性分片,分片之和为原始数据。“第一”、“第二”仅用于区分存储于不同参与方的分片。当本说明书提及序列的分片时,主要是指将序列的各元素分别进行拆分,序列的第一分片包含序列各元素的其中一个分片,序列的第二分片包括序列各元素的另一个分片。
步骤302,基于待排序序列的第一分片,与所述第二参与方基于所述待排序序列的第二分片,通过秘密分享排列协议,获得待排序乱序序列的第一分片。
在一些实施例中,步骤302可以由第一待排序乱序序列分片获取模块710执行。
在一些实施例中,第一参与方与第二参与方可以相互协同实现基于秘密分享的排序协议,基于各自持有的待排序序列的分片,对待排序序列的元素进行随机排列即乱序,结果仍以分片形式表示,各方获得结果序列即待排序乱序序列的两个分片中的一个。
秘密分享排列协议可以是基于秘密分享进行的排列算法或算子,在一些实施例中可以描述为使用一方(例如,第一参与方或第二参与方)私有的排列函数(或称为排序序列、排列序列、排序向量),将一个长度为n的秘密分享序列进行秘密排列,得到仍然以秘密分享的形式存在的排列结果。图4是根据本说明书一些实施例所示的秘密分享排列协议的示例性示意图。如图4所示,以𝜋表示一方私有的排列函数,X表示待排序序列,其以秘密分享形式存储于各参与方处,如X的第一分片<X>A存储于第一参与方——A方,X的第二分片<X>B存储于第二参与方——B方。Y表示排列结果,也以秘密分享形式由各参与方获得,如Y的第一分片<Y>A由A方获得,Y的第二分片<X>B由B方获得。秘密排序过程中,各方持有的数据不会被其他方知晓。图4所示的秘密分享排列协议又可记为ObliviousPerm函数或算子:,<>表示密文形式,具体可以是分片形式。ObliviousPerm函数可以理解为一个功能函数,其一组输入数据包括排列函数𝜋和待排序序列的第一分片<X>A,来自A方,其另一组输入数据包括待排序序列的第二分片<X>B,来自B方;其输出数据为包括结果序列的第一分片<Y>A和第二分片<Y>B,结果序列的第一分片由A方获得,结果序列的第二分片由B方获得。
在一些实施例中,两方的处理设备可以分别执行ObliviousPerm函数中的流程,基于第一参与方的待排序序列的第一分片以及第二参与方的待排序序列的第二分片,获取得到待排序乱序序列的第一分片和待排序乱序序列的第二分片。目前已有ObliviousPerm函数的多种实现方式,本说明书不对其内部实现算法进行限制,只将其作为黑盒算子进行调用。应当理解,凡是目前已经出现的以及未来会出现的,能够实现ObliviousPerm函数功能的数据处理/运算单元、程序代码、机器学习模型等各种方式均可作为本说明书提到的基于秘密分享排列协议。
以第一参与方和第二参与方协同作为示例,其中,第一参与方持有目标排列向量、待排序数据列的第一分片,第二参与方持有所述待排序数据列的第二分片,ObliviousPerm函数的一种实现方式可以包括:
第一参与方从可信第三方获取第一排序向量、第一数据列的第一分片和基于所述第一排序向量对所述第一数据列进行排序的第一结果序列的第一分片。第二参与方从可信第三方处获取第一数据列的第二分片和第一结果序列的第二分片。
第一参与方基于目标排序向量和所述第一排序向量确定第二排序向量,并将其发送给第二参与方;在一些实施例中,基于所述第一排序向量对所述目标排序向量进行排序,得到的结果序列可以作为所述第二排序向量。
第一参与方将待排序数据列的第一分片与第一数据列的第一分片作差,获得第二数据列的第一分片,同时从第二方获取第二数据列的第二分片;第二数据列的第二分片为第二参与方将待排序数据列的第二分片与第一数据列的第二分片作差得到。
第一参与方基于第二数据列的第一分片以及第二数据列的第二分片,获得第二数据列,并基于目标排序向量对第二数据列进行排序,得到第二结果数据列;基于第二排序向量对所述第一结果数据列的第一分片进行排序,得到第三结果数据列;最后,对第二结果数据列和第三结果数据列求和,获得目标数据列的第一分片。
第二参与方基于第二排序向量对第一结果序列的第二分片进行排序,获得目标数据列的第二分片。所述目标数据列等于基于所述目标排序向量对所述待排序数据列进行排序的结果序列。
在一些实施例中,第一参与方和第二参与方可以分别生成随机序列作为ObliviousPerm函数的排序序列,将待排序序列作为ObliviousPerm函数待排序序列,通过秘密分享排序协议(如ObliviousPerm函数),对待排序序列进行乱序,得到待排序乱序序列的第一分片和第二分片。在一些实施例中,还可以通过其他可行的基于秘密分享排序协议的排序方法,对待排序序列进行乱序,得到待排序乱序序列的第一分片和第二分片。待排序乱序序列是指基于秘密分享排列协议对待排序序列的元素进行随机排列后得到的排列结果。第二参与方可以在与第一参与方协同执行步骤102后,获得待排序乱序序列的第二分片。
例如,在一些实施例中,处理设备可以基于待排序序列的第一分片以及第一随机排序序列与第二参与方基于待排序序列的第二分片,通过秘密分享排列协议,获得第一乱序中间序列的第一分片;第二参与方获得第一乱序中间序列的第二分片。以及基于第一乱序中间序列的第一分片与第二参与方基于第一乱序中间序列的第二分片以及第二随机排序序列,通过秘密分享排列协议,获得待排序乱序序列的第一分片;第二参与方获得待排序乱序序列的第二分片。
又例如,在一些实施例中,处理设备可以基于待排序序列的第一分片与第二参与方基于待排序序列的第二分片以及第二随机排序序列,通过秘密分享排列协议,获得第一乱序中间序列的第一分片;第二参与方获得第一乱序中间序列的第二分片。以及基于第一乱序中间序列的第一分片以及第一随机排序序列与第一参与方基于第二乱序中间序列的第二分片,通过秘密分享排列协议,获得待排序乱序序列的第一分片;第二参与方获得待排序乱序序列的第二分片。
关于上述实施例的更多说明可以参见图5和图6的详细描述,此处不再赘述。
步骤304,基于排序序列的第一分片,与所述第二参与方基于所述排序序列的第二分片,通过秘密分享排列协议,获得乱序排序序列的第一分片。
在一些实施例中,步骤304可以由第一乱序排序序列分片获取模块720执行。
在一些实施例中,处理设备可以通过与获取待排序乱序序列的第一分片相类似的方式获取得到乱序排序序列的第一分片。其中,第二参与方持有排序序列的第二分片,且第二参与方获得乱序排序序列的第二分片。
例如,在一些实施例中,处理设备可以基于排序序列的第一分片以及第一随机排序序列与第二参与方基于排序序列的第二分片,通过秘密分享排列协议,获得第二乱序中间序列的第一分片;第二参与方获得第二乱序中间序列的第二分片。以及基于第二乱序中间序列的第一分片与第二参与方基于第二乱序中间序列的第二分片以及第二随机排序序列,通过秘密分享排列协议,获得乱序排序序列的第一分片;第二参与方获得乱序排序序列的第二分片。
又例如,在一些实施例中,处理设备可以基于排序序列的第一分片与第二参与方基于排序序列的第二分片以及第二随机排序序列,通过秘密分享排列协议,获得第二乱序中间序列的第一分片;第二参与方获得第二乱序中间序列的第二分片。以及基于第二乱序中间序列的第一分片以及第一随机排序序列与第二参与方基于第二乱序中间序列的第二分片,通过秘密分享排列协议,获得乱序排序序列的第一分片;第二参与方获得乱序排序序列的第二分片。
关于上述实施例的更多说明可以参见图5及图6的详细描述,此处不再赘述。
通过步骤302和步骤304,排序序列与待排序序列的元素被乱序,且对排序序列的乱序方式与待排序序列的乱序方式相同,在后续对乱序排序序列以及待排序乱序序列的进一步处理中能有效隐匿排序序列与待排序序列中的原始信息,起到保护隐私的作用。
步骤306,从所述第二参与方获得所述乱序排序序列的第二分片,得到所述乱序排序序列。
在一些实施例中,步骤306可以由乱序排序序列获取模块730执行。
在一些实施例中,第二参与方可以将获得的乱序排序序列的第二分片公开给第一参与方,使得第一参与方可以获得第二参与方持有的乱序排序序列的第二分片。在一些实施例中,第二参与方可以直接将乱序排序序列的第二分片公开,第一参与方和其他各方可以从第二参与方或其他存储有公开的乱序排序序列的第二分片的设备或平台上获取乱序排序序列的第二分片。在一些实施例中,第二参与方也可以将持有的乱序排序序列的第二分片发送至第一参与方。
第一参与方获得乱序排序序列的第二分片后,可以基于乱序排序序列的第二分片与自身持有的乱序排序序列的第一分片得到乱序排序序列。例如,可以将乱序排序序列的第二分片和乱序排序序列的第一分片相加,得到乱序排序序列。
可以理解,由于乱序排序序列是经过第一参与方和第二参与方分别持有的第一随机排序序列和第二随机排序序列先后乱序后的结果序列,使得乱序排序序列中排序序列的原始信息被有效隐匿,所以即使将乱序排序序列的第二分片公开给第一参与方或其他方,也不会造成排序序列的信息泄露。
步骤308,基于所述乱序排序序列和所述待排序乱序序列的第一分片,与所述第二参与方基于所述待排序乱序序列的第二分片,通过秘密分享排列协议,获得结果序列的第一分片。
在一些实施例中,步骤308可以由第一结果序列获取模块740执行。
结果序列等于基于排序序列对待排序序列排序得到的结果。例如,排序序列为𝜋=[0,2,1,4,3],待排序序列为X=[a,b,a,c,b],基于该排序序列𝜋对待排序序列X排序得到结果序列𝜋 (X)= [a,a,b,b,c]。
在一些实施例中,由于乱序排序序列对于第一参与方来说为明文序列,第一参与方可以基于待排序乱序序列的第一分片以及乱序排序序列与第二参与方基于待排序乱序序列的第二分片,通过秘密分享排列协议(如ObliviousPerm函数),获得结果序列的第一分片;第二参与方获得结果序列的第二分片。
可以理解,由于待排序乱序序列和乱序排序序列的乱序方式相同,则基于乱序排序序列对待排序乱序序列排列得到的结果等同于基于排序序列对待排序序列排序得到的结果。继续以前述排序序列𝜋 =[0,2,1,4,3]和待排序序列为X=[a,b,a,c,b]为例,基于本说明书一些实施例所述的方法,基于随机排序序列P=[0,1,4,2,3]对𝜋乱序得到的乱序排序序列为P𝜋 =[0,2,4,3,1],基于随机排序序列P=[0,1,4,2,3]对X进行相同方式的乱序得到的待排序乱序序列为PX=[a,b,c,b,a],基于P𝜋对PX排序得到的结果为P𝜋 (PX)= [a,a,b,b,c],可见P𝜋 (PX)= 𝜋 (X)。
在本说明书一些实施例中,通过第一参与方与第二参与方的协同运算,实现了在排序序列和待排序序列都以秘密分享形式存在时,基于秘密分享的排序序列和待排序序列进行秘密排序,同时有效地保护了排序序列和待排序序列的数据隐私安全。
图5是根据本说明书的一些实施例所示的基于秘密分享的排序方法获得待排序乱序序列的示例性交互流程图。
在一些实施例中,交互流程可以由双方的处理设备协同执行。其中,部分流程(如流程500)由第一参与方的处理设备执行,剩余部分由第二参与方的处理设备执行。例如,交互可以以程序或指令的形式分别存储在各参与方的存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现交互。下面以流程500为主,阐述图5所示的交互流程,其中流程500可以包括以下操作。
步骤502,生成第一随机排序序列。
在一些实施例中,第一参与方的处理设备可以通过随机序列生成算法生成第一随机排序序列。
在一些实施例中,第一随机排序序列的序列长度与排序序列和待排序序列的长度相同。
在一些实施例中,第一随机排序序列也可以表示对等长序列进行排序的操作,其元素指示该等长序列中对位数据在结果序列中的位置。
步骤504,基于所述第一随机排序序列以及所述待排序序列的第一分片,与第二参与方基于所述待排序序列的第二分片,通过秘密分享排列协议,获得第一乱序中间序列的第一分片;第二参与方获得第一乱序中间序列的第二分片。
在一些实施例中,第一参与方的处理设备可以将第一随机排序序列、待排序序列的第一分片作为第一组输入参数、第二参与方的处理设备将待排序序列的第二分片作为另一组输入参数输入如图4所示的秘密分享排列算子,两者协同执行秘密分享排序算子,得到第一乱序中间序列的第一分片和第二分片。第一分片由第一参与方获得,第二分片由第二参与方获得。
步骤506,基于所述第一乱序中间序列的第一分片,与第二参与方基于第一乱序中间序列的第二分片以及第二随机排序序列,通过秘密分享排列协议,获得所述待排序乱序序列的第一分片;所述第二随机排序序列由第二参与方生成。
第一参与方的处理设备可以将第一乱序中间序列的第一分片作为第一组输入参数、第二参与方的处理设备将第一乱序中间序列的第二分片、第二随机排序序列作为另一组输入参数输入如图4所示的秘密分享排列算子,两者协同执行秘密分享排序算子,得到待排序乱序序列的第一分片和第二分片。第一分片由第一参与方获得,第二分片由第二参与方获得。其中,第二随机排序序列由第二参与方生成,其过程与第一随机排序序列类似。
秘密分享排序算子的相关说明可以参见图3中关于ObliviousPerm函数的相关说明,在此不再赘述。通过第一参与方生成的第一随机排序序列对待排序序列进行第一次乱序,再通过第二参与方生成的第二随机排序序列对一次乱序的结果再次乱序,双方都难以获知待排序序列的原始信息,可以更好的保护数据隐私。在一些替代性实施例中,也可以先通过第二参与方生成的第二随机排序序列对待排序序列进行第一次乱序,再通过第一参与方生成的第一随机排序序列对一次乱序的结果再次乱序,依然可以达到相同的技术效果。
图6是根据本说明书的一些实施例所示的基于秘密分享的排序方法获得乱序排序序列的示例性交互流程图。
在一些实施例中,交互流程可以由双方的处理设备协同执行。其中,部分流程(如流程600)由第一参与方的处理设备执行,剩余部分由第二参与方的处理设备执行。例如,交互流程可以以程序或指令的形式存储在各参与方的存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现图3所示的交互流程。下面以流程600为主,阐述图6所示的交互流程,其中流程600可以包括以下操作。
步骤602,获取所述第一随机排序序列(即流程500生成的第一随机排序序列)。
步骤604,基于所述排序序列的第一分片、所述第一随机排序序列,与第二参与方基于所述排序序列的第二分片,通过秘密分享排列协议,获得第二乱序中间序列的第一分片;第二参与方获得第二乱序中间序列的第二分片。
步骤606,基于所述第二乱序中间序列的第一分片与第二参与方基于第二乱序中间序列的第二分片、所述第二随机排序序列(即流程500生成的第二随机排序序列),通过秘密分享排列协议,获得所述乱序排序序列的第一分片;第二参与方获得乱序排序序列的第二分片。
本实施例中所涉及到的秘密分享排列协议与图5所描述的秘密分享排序协议(算子)相同,此处不再赘述。在一些替代性实施例中,也可以先通过第二参与方生成的第二随机排序序列对排序序列进行第一次乱序,再通过第一参与方生成的第一随机排序序列对一次乱序的结果再次乱序,得到乱序排序序列。通过与图5所示的乱序方式对排序序列进行同样的处理,可以保证待排序乱序序列与乱序排序序列始终保持对应关系,以便于后续处理。
应当注意的是,上述有关各流程的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,对本说明书有关流程步骤的改变,如添加预处理步骤和存储步骤等。
图7是根据本说明书一些实施例所示的基于秘密分享的排序系统的示例性模块图。
系统700可以设置于第一参与方,第一参与方持有待排序序列的第一分片和排序序列的第一分片,所述待排序序列的第二分片和所述排序序列的第二分片由第二参与方持有。如图7所示,系统700可以包括第一待排序乱序序列分片获取模块710、第一乱序排序序列分片获取模块720、乱序排序序列获取模块730和第一结果序列获取模块740。
第一待排序乱序序列分片获取模块710可以用于基于待排序序列的第一分片,与所述第二参与方基于所述待排序序列的第二分片,通过秘密分享排列协议,获得待排序乱序序列的第一分片;所述第二参与方获得所述待排序乱序序列的第二分片。
第一乱序排序序列分片获取模块720可以用于基于排序序列的第一分片,与所述第二参与方基于所述排序序列的第二分片,通过秘密分享排列协议,获得乱序排序序列的第一分片;所述第二参与方获得所述乱序排序序列的第二分片;且对排序序列的乱序方式与待排序序列的乱序方式相同。
乱序排序序列获取模块730可以用于从所述第二参与方获得所述乱序排序序列的第二分片,得到所述乱序排序序列。
第一结果序列获取模块740可以用于基于所述乱序排序序列和所述待排序乱序序列的第一分片,与所述第二参与方基于所述待排序乱序序列的第二分片,通过秘密分享排列协议,获得结果序列的第一分片;第二参与方获得结果序列的第二分片;所述结果序列等于基于所述排序序列对所述待排序序列进行排序的结果。
关于以上所示的系统的各模块的具体描述,可以参考本说明书流程图部分,例如,图3至图6的相关说明。
图8是根据本说明书另一些实施例所示的基于秘密分享的排序系统的示例性模块图。
系统800可以设置于第二参与方,第二参与方持有待排序序列的第二分片和排序序列的第二分片,所述待排序序列的第一分片和所述排序序列的第一分片由第一参与方持有。如图8所示,系统800可以包括第二待排序乱序序列分片获取模块810、第二乱序排序序列分片获取模块820、乱序排序序列分片发送模块830和第二结果序列获取模块840。
第二待排序乱序序列分片获取模块810可以用于基于待排序序列的第二分片,与所述第一参与方基于所述待排序序列的第一分片,通过秘密分享排列协议,获得待排序乱序序列的第二分片;所述第一参与方获得所述待排序乱序序列的第一分片。
第二乱序排序序列分片获取模块820可以用于基于排序序列的第二分片,与所述第一参与方基于所述排序序列的第一分片,通过秘密分享排列协议,获得乱序排序序列的第二分片;所述第一参与方获得所述乱序排序序列的第一分片;且对排序序列的乱序方式与待排序序列的乱序方式相同。
乱序排序序列分片发送模块830可以用于将所述乱序排序序列的第二分片发送给第一参与方,以便第一参与方得到所述乱序排序序列。
第二结果序列获取模块840可以用于基于所述待排序乱序序列的第二分片,与所述第一参与方基于所述待排序乱序序列的第一分片和所述乱序排序序列,通过秘密分享排列协议,获得结果序列的第二分片;第一参与方获得结果序列的第一分片;所述结果序列等于基于所述排序序列对所述待排序序列进行排序的结果。
关于以上所示的系统的各模块的具体描述,可以参考本说明书流程图部分,例如,图3至图6的相关说明。
应当理解,图7和图8所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于基于秘密分享的排序系统及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,在一些实施例中,第一待排序乱序序列分片获取模块710、第一乱序排序序列分片获取模块720、乱序排序序列获取模块730和第一结果序列获取模块740可以是一个系统中的不同模块,也可以是一个模块实现上述的两个或两个以上模块的功能。例如,各个模块可以共用一个存储模块,各个模块也可以分别具有各自的存储模块。诸如此类的变形,均在本说明书的保护范围之内。
本说明书实施例可能带来的有益效果包括但不限于:在排序序列和待排序序列都以秘密分享形式存在时,可以基于秘密分享的排序序列和待排序序列进行秘密排序,同时有效地保护了排序序列和待排序序列的数据隐私安全。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。
Claims (9)
1.一种基于秘密分享的排序方法,应用于第一参与方,所述第一参与方持有待排序序列的第一分片和排序序列的第一分片,所述待排序序列的第二分片和所述排序序列的第二分片由第二参与方持有,所述排序序列用于标识对等长序列进行排序的操作,其元素指示所述等长序列中对位数据在结果序列中的位置,所述方法包括:
基于待排序序列的第一分片,与所述第二参与方基于所述待排序序列的第二分片,通过秘密分享排列协议,获得待排序乱序序列的第一分片;所述第二参与方获得所述待排序乱序序列的第二分片;所述秘密分享排列协议用于对以秘密分享形式存储于多个参与方的序列进行秘密排序,得到排序结果,且所述排序结果以秘密分享形式由所述多个参与方获得;
基于排序序列的第一分片,与所述第二参与方基于所述排序序列的第二分片,通过秘密分享排列协议,获得乱序排序序列的第一分片;所述第二参与方获得所述乱序排序序列的第二分片;且对排序序列的乱序方式与待排序序列的乱序方式相同;
从所述第二参与方获得所述乱序排序序列的第二分片,得到所述乱序排序序列;
基于所述乱序排序序列和所述待排序乱序序列的第一分片,与所述第二参与方基于所述待排序乱序序列的第二分片,通过秘密分享排列协议,获得结果序列的第一分片;第二参与方获得结果序列的第二分片;所述结果序列等于基于所述排序序列对所述待排序序列进行排序的结果。
2.根据权利要求1所述的方法,所述基于待排序序列的第一分片,与所述第二参与方基于所述待排序序列的第二分片,通过秘密分享排列协议,获得待排序乱序序列的第一分片;所述第二参与方获得所述待排序乱序序列的第二分片,包括:
生成第一随机排序序列;
基于所述第一随机排序序列以及所述待排序序列的第一分片,与第二参与方基于所述待排序序列的第二分片,通过秘密分享排列协议,获得第一乱序中间序列的第一分片;第二参与方获得第一乱序中间序列的第二分片;
基于所述第一乱序中间序列的第一分片,与第二参与方基于第一乱序中间序列的第二分片以及第二随机排序序列,通过秘密分享排列协议,获得所述待排序乱序序列的第一分片;第二参与方获得待排序乱序序列的第二分片,所述第二随机排序序列由第二参与方生成;
或者,包括:
生成第一随机排序序列;
基于所述待排序序列的第一分片,与第二参与方基于所述待排序序列的第二分片以及第二随机排序序列,通过秘密分享排列协议,获得第一乱序中间序列的第一分片;第二参与方获得第一乱序中间序列的第二分片;所述第二随机排序序列由第二参与方生成;
基于所述第一随机排序序列以及所述第一乱序中间序列的第一分片,与第二参与方基于第一乱序中间序列的第二分片,通过秘密分享排列协议,获得所述待排序乱序序列的第一分片;第二方获得待排序乱序序列的第二分片。
3.根据权利要求2所述的方法,所述基于排序序列的第一分片,与所述第二参与方基于所述排序序列的第二分片,通过秘密分享排列协议,获得乱序排序序列的第一分片;所述第二参与方获得所述乱序排序序列的第二分片,包括:
基于所述第一随机排序序列以及所述排序序列的第一分片,与第二参与方基于所述排序序列的第二分片,通过秘密分享排列协议,获得第二乱序中间序列的第一分片;第二参与方获得第二乱序中间序列的第二分片;
基于所述第二乱序中间序列的第一分片,与第二参与方基于第二乱序中间序列的第二分片以及所述第二随机排序序列,通过秘密分享排列协议,获得所述乱序排序序列的第一分片;第二参与方获得乱序排序序列的第二分片;
或者,包括:
基于所述排序序列的第一分片,与第二参与方基于所述排序序列的第二分片以及第二随机排序序列,通过秘密分享排列协议,获得第二乱序中间序列的第一分片;第二参与方获得第二乱序中间序列的第二分片;
基于所述第一随机排序序列以及所述第二乱序中间序列的第一分片,与第二参与方基于第二乱序中间序列的第二分片,通过秘密分享排列协议,获得所述乱序排序序列的第一分片;第二方获得乱序排序序列的第二分片。
4.根据权利要求2所述的方法,所述第一随机排序序列和所述第二随机排序序列等长。
5.一种基于秘密分享的排序系统,所述系统设置于第一参与方,所述第一参与方持有待排序序列的第一分片和排序序列的第一分片,所述待排序序列的第二分片和所述排序序列的第二分片由第二参与方持有,所述排序序列用于标识对等长序列进行排序的操作,其元素指示所述等长序列中对位数据在结果序列中的位置,所述系统包括:
第一待排序乱序序列分片获取模块,用于基于待排序序列的第一分片,与所述第二参与方基于所述待排序序列的第二分片,通过秘密分享排列协议,获得待排序乱序序列的第一分片;所述第二参与方获得所述待排序乱序序列的第二分片;所述秘密分享排列协议用于对以秘密分享形式存储于多个参与方的序列进行秘密排序,得到排序结果,且所述排序结果以秘密分享形式由所述多个参与方获得;
第一乱序排序序列分片获取模块,用于基于排序序列的第一分片,与所述第二参与方基于所述排序序列的第二分片,通过秘密分享排列协议,获得乱序排序序列的第一分片;所述第二参与方获得所述乱序排序序列的第二分片;且对排序序列的乱序方式与待排序序列的乱序方式相同;
乱序排序序列获取模块,用于从所述第二参与方获得所述乱序排序序列的第二分片,得到所述乱序排序序列;
第一结果序列获取模块,用于基于所述乱序排序序列和所述待排序乱序序列的第一分片,与所述第二参与方基于所述待排序乱序序列的第二分片,通过秘密分享排列协议,获得结果序列的第一分片;第二参与方获得结果序列的第二分片;所述结果序列等于基于所述排序序列对所述待排序序列进行排序的结果。
6.一种基于秘密分享的排序装置,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现如权利要求1-4任一项所述的方法。
7.一种基于秘密分享的排序方法,应用于第二参与方,所述第二参与方持有待排序序列的第二分片和排序序列的第二分片,所述待排序序列的第一分片和所述排序序列的第一分片由第一参与方持有,所述排序序列用于标识对等长序列进行排序的操作,其元素指示所述等长序列中对位数据在结果序列中的位置,所述方法包括:
基于待排序序列的第二分片,与所述第一参与方基于所述待排序序列的第一分片,通过秘密分享排列协议,获得待排序乱序序列的第二分片;所述第一参与方获得所述待排序乱序序列的第一分片;所述秘密分享排列协议用于对以秘密分享形式存储于多个参与方的序列进行秘密排序,得到排序结果,且所述排序结果以秘密分享形式由所述多个参与方获得;
基于排序序列的第二分片,与所述第一参与方基于所述排序序列的第一分片,通过秘密分享排列协议,获得乱序排序序列的第二分片;所述第一参与方获得所述乱序排序序列的第一分片;且对排序序列的乱序方式与待排序序列的乱序方式相同;
将所述乱序排序序列的第二分片发送给第一参与方,以便第一参与方得到所述乱序排序序列;
基于所述待排序乱序序列的第二分片,与所述第一参与方基于所述待排序乱序序列的第一分片和所述乱序排序序列,通过秘密分享排列协议,获得结果序列的第二分片;第一参与方获得结果序列的第一分片;所述结果序列等于基于所述排序序列对所述待排序序列进行排序的结果。
8.一种基于秘密分享的排序系统,所述系统设置于第二参与方,所述第二参与方持有待排序序列的第二分片和排序序列的第二分片,所述待排序序列的第一分片和所述排序序列的第一分片由第一参与方持有,所述排序序列用于标识对等长序列进行排序的操作,其元素指示所述等长序列中对位数据在结果序列中的位置,所述系统包括:
第二待排序乱序序列分片获取模块,用于基于待排序序列的第二分片,与所述第一参与方基于所述待排序序列的第一分片,通过秘密分享排列协议,获得待排序乱序序列的第二分片;所述第一参与方获得所述待排序乱序序列的第一分片;所述秘密分享排列协议用于对以秘密分享形式存储于多个参与方的序列进行秘密排序,得到排序结果,且所述排序结果以秘密分享形式由所述多个参与方获得;
第二乱序排序序列分片获取模块,用于基于排序序列的第二分片,与所述第一参与方基于所述排序序列的第一分片,通过秘密分享排列协议,获得乱序排序序列的第二分片;所述第一参与方获得所述乱序排序序列的第一分片;且对排序序列的乱序方式与待排序序列的乱序方式相同;
乱序排序序列分片发送模块,用于将所述乱序排序序列的第二分片发送给第一参与方,以便第一参与方得到所述乱序排序序列;
第二结果序列获取模块,用于基于所述待排序乱序序列的第二分片,与所述第一参与方基于所述待排序乱序序列的第一分片和所述乱序排序序列,通过秘密分享排列协议,获得结果序列的第二分片;第一参与方获得结果序列的第一分片;所述结果序列等于基于所述排序序列对所述待排序序列进行排序的结果。
9.一种基于秘密分享的排序装置,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现如权利要求7所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210205867.5A CN114338017B (zh) | 2022-03-04 | 2022-03-04 | 一种基于秘密分享的排序方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210205867.5A CN114338017B (zh) | 2022-03-04 | 2022-03-04 | 一种基于秘密分享的排序方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114338017A CN114338017A (zh) | 2022-04-12 |
CN114338017B true CN114338017B (zh) | 2022-06-10 |
Family
ID=81029986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210205867.5A Active CN114338017B (zh) | 2022-03-04 | 2022-03-04 | 一种基于秘密分享的排序方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114338017B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115941181B (zh) * | 2023-02-02 | 2023-05-12 | 华控清交信息科技(北京)有限公司 | 一种乱序秘密分享方法、系统和可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112464287A (zh) * | 2020-12-12 | 2021-03-09 | 同济大学 | 基于秘密共享与联邦学习的多方XGBoost安全预测模型训练方法 |
WO2021228149A1 (zh) * | 2020-05-15 | 2021-11-18 | 支付宝(杭州)信息技术有限公司 | 一种隐私数据保护方法、系统及装置 |
CN113949505A (zh) * | 2021-10-15 | 2022-01-18 | 支付宝(杭州)信息技术有限公司 | 一种隐私保护的多方安全计算方法和系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102223309B (zh) * | 2011-07-07 | 2014-07-02 | 谢海春 | 基于报文载荷分片、加密、重排序的安全通讯系统及其安全通讯方法 |
US11126709B2 (en) * | 2019-01-28 | 2021-09-21 | Nec Corporation Of America | Secure multiparty computation of shuffle, sort, and set operations |
CN112751665B (zh) * | 2019-10-30 | 2022-12-09 | 阿里巴巴(中国)网络技术有限公司 | 一种安全多方计算方法、设备、系统及存储介质 |
US20220014355A1 (en) * | 2020-07-13 | 2022-01-13 | Inpher, Inc. | Oblivious Comparisons and Quicksort of Secret Shared Arithmetic Values in a Multi-Party Computing Setting |
CN114003962B (zh) * | 2021-12-28 | 2022-04-12 | 支付宝(杭州)信息技术有限公司 | 保护数据隐私的多方数据查询方法及装置 |
-
2022
- 2022-03-04 CN CN202210205867.5A patent/CN114338017B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021228149A1 (zh) * | 2020-05-15 | 2021-11-18 | 支付宝(杭州)信息技术有限公司 | 一种隐私数据保护方法、系统及装置 |
CN112464287A (zh) * | 2020-12-12 | 2021-03-09 | 同济大学 | 基于秘密共享与联邦学习的多方XGBoost安全预测模型训练方法 |
CN113949505A (zh) * | 2021-10-15 | 2022-01-18 | 支付宝(杭州)信息技术有限公司 | 一种隐私保护的多方安全计算方法和系统 |
Non-Patent Citations (1)
Title |
---|
保护私有信息的多方排序协议;黄宏升等;《微计算机信息》;20100625(第18期);75-76 * |
Also Published As
Publication number | Publication date |
---|---|
CN114338017A (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110969264B (zh) | 模型训练方法、分布式预测方法及其系统 | |
CN114282256B (zh) | 一种基于秘密分享的排序打乱方法和恢复方法 | |
CN110427969B (zh) | 数据处理方法、装置和电子设备 | |
TW202103034A (zh) | 資料處理方法、裝置和電子設備 | |
CN114172648B (zh) | 一种基于秘密分享的排序方法和系统 | |
CN114282076B (zh) | 一种基于秘密分享的排序方法和系统 | |
CN111027713B (zh) | 共享机器学习系统及方法 | |
Arapinis et al. | Privacy-supporting cloud computing by in-browser key translation | |
CN112016075B (zh) | 基于区块链的行程信息验证方法、电子设备和介质 | |
CN106789058B (zh) | 一种代理重加密算法描述及解析方法 | |
WO2023174018A1 (zh) | 一种纵向联邦学习方法、装置、系统、设备及存储介质 | |
CN114327371B (zh) | 一种基于秘密分享的多键排序方法和系统 | |
CN114153808B (zh) | 一种基于秘密分享的排序方法和系统 | |
CN114338017B (zh) | 一种基于秘密分享的排序方法和系统 | |
CN113704805B (zh) | 一种风控规则匹配方法、装置及电子设备 | |
CN114282255B (zh) | 一种基于秘密分享的排序序列合并方法和系统 | |
CN114172631B (zh) | 一种基于秘密分享的排序方法和系统 | |
US8607355B2 (en) | Social network privacy using morphed communities | |
CN116204903A (zh) | 一种财务数据安全管理方法、装置、电子设备及存储介质 | |
CN115329359A (zh) | 一种秘密查询方法和系统 | |
TW201933165A (zh) | 安全設計裝置、安全設計方法及安全設計程式產品 | |
CN111784078B (zh) | 一种针对决策树的分布式预测方法和系统 | |
Kostyuk et al. | Dueling Over Dual_EC_DRBG: The Consequences of Corrupting a Cryptographic Standardization Process | |
CN116187414A (zh) | 一种神经网络模型加解密方法以及相关系统 | |
Matney | Exploring the Cybersecurity Challenges of Quantum-Resistant Solution Implementations for Securing Internet of Things Data |
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 |