CN115952526A - 密文排序方法、设备及存储介质 - Google Patents

密文排序方法、设备及存储介质 Download PDF

Info

Publication number
CN115952526A
CN115952526A CN202310223469.0A CN202310223469A CN115952526A CN 115952526 A CN115952526 A CN 115952526A CN 202310223469 A CN202310223469 A CN 202310223469A CN 115952526 A CN115952526 A CN 115952526A
Authority
CN
China
Prior art keywords
sequence
ciphertext
stage
sequences
round
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.)
Granted
Application number
CN202310223469.0A
Other languages
English (en)
Other versions
CN115952526B (zh
Inventor
李飞飞
汪晟
李亦然
苏乐
顾振
邹宇
王义磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Cloud Computing Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Cloud Computing Ltd filed Critical Alibaba Cloud Computing Ltd
Priority to CN202310223469.0A priority Critical patent/CN115952526B/zh
Publication of CN115952526A publication Critical patent/CN115952526A/zh
Application granted granted Critical
Publication of CN115952526B publication Critical patent/CN115952526B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本申请实施例提供一种密文排序方法、设备及存储介质。在本申请实施例中,对于待排序的密文序列,可利用排序网络对密文序列进行并行排序,且可以密文序列为操作数,并行执行序列内排序所需的运算操作,无需对密文序列进行拆分,可提高密文排序的并行度,进而提高密文排序效率。

Description

密文排序方法、设备及存储介质
技术领域
本申请涉及信息安全技术领域,尤其涉及一种密文排序方法、设备及存储介质。
背景技术
随着云计算和云存储技术的发展,越来越多的数据上传至云端进行存储或处理。为了保护信息安全,通常会对数据进行加密。例如,在数据传输过程中,可将数据加密后的密文进程传输。
当需要使用这些数据时,可对密文进行解密,得到明文数据。之后,按照需求对明文数据进行处理,也会造成信息安全隐患。为了解决该问题,基于密文进行数据计算的技术应运而生。基于密文进行数据计算可降低数据泄露风险。
在基于密文进行数据计算的场景下,密文排序为密文计算的关键一环。因此,如何提高密文排序效率,是提高基于密文进行数据计算的效率的关键。
发明内容
本申请的多个方面提供一种密文排序方法、设备及存储介质,用以提高密文排序效率。
本申请实施例提供一种密文排序方法,包括:
获取待排序的第一密文序列;
将所述第一密文序列输入第一排序网络;
在所述第一排序网络中,以所述第一密文序列为操作数,并行执行对所述第一密文序列进行序列内排序所需的逻辑运算操作,以得到排序后的第二密文序列。
在一些实施例中,所述第一密文序列为多个,所述第二密文序列为多个,所述方法还包括:
将多个第二密文序列并行输入第二排序网络;
在所述第二排序网络中,以第二密文序列为操作数,并行执行对多个第二密文序列进行序列间的并行排序所需的逻辑运算,以得到排序后的多个第三密文序列。
本申请实施例还提供一种计算设备,包括:存储器和处理器;其中,所述存储器,用于存储计算机程序;
所述处理器耦合至所述存储器,用于执行所述计算机程序以用于执行上述密文排序方法中的步骤。
本申请实施例还提供一种存储有计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行上述密文排序方法中的步骤。
在本申请实施例中,对于待排序的密文序列,可利用排序网络对密文序列进行并行排序,且可以密文序列为操作数,并行执行序列内排序所需的逻辑运算操作,无需对密文序列进行拆分,可提高密文排序的并行度,进而提高密文排序效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的密文排序方法的流程示意图;
图2为本申请实施例提供的双调排序网络对密文序列进行序列内排序的流程示意图;
图3和图4为本申请实施例提供的双调排序网络对密文序列进行序列内排序过程中的比较交换操作的流程示意图;
图5为本申请实施例提供的字典序排序过程示意图;
图6为本申请实施例提供的双调排序网络进行序列间排序的流程示意图;
图7为本申请实施例提供的序列间排序的最大最小值操作的过程示意图;
图8为本申请实施例提供的另一密文排序方法的流程示意图;
图9为本申请实施例提供的计算设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在云计算技术领域,数据处理越来越多地被至云厂商的计算环境中执行,容易造成数据泄露的隐患。
在一些方案中,可通过可信执行环境(Trusted Execution Environment,TEE)保证数据在第三方环境中处理而不被泄露。其中,TEE作为基于硬件保护的隔离环境,支持丰富的操作,但是要求用户额外信任包括硬件供应商和软件开发者在内的多个不同实体。而密码学算法无需用户信任任何第三方,即可更强的安全性保证。基于密文进行数据计算可降低数据泄露风险。密文排序为密文计算的关键步骤。密文排序的效率可影响密文计算效率。
在本申请一些实施例中,为了提高密文排序效率,对于待排序的密文序列,可利用排序网络对密文序列进行并行排序,且可以密文序列为操作数,并行执行序列内排序所需的逻辑运算操作,无需对密文序列进行拆分,可提高密文排序的并行度,进而提高密文排序效率。
以下结合附图,详细说明本申请各实施例提供的技术方案。
应注意到:相同的标号在下面的附图以及实施例中表示同一物体,因此,一旦某一物体在一个附图或实施例中被定义,则在随后的附图和实施例中不需要对其进行进一步讨论。
图1为本申请实施例提供的密文排序方法的流程示意图。如图1所示,该方法主要包括:
101、获取待排序的第一密文序列A0。
102、将第一密文序列A0输入第一排序网络。
103、在第一排序网络中,以第一密文序列A0为操作数,并行执行对第一密文序列A0进行序列内排序所需的逻辑运算操作,以得到排序后的第二密文序列B0。
在本申请各实施例中,密文序列是指将多个数量的明文打包为一个密文包,得到的打包(packed)密文。该密文序列可包含多个数量的明文对应的多个密文。密文序列的大小可根据实际需求进行灵活配置。例如,在环上容错学习(Learning with Errors overRings,RLWE)问题中,一个密文序列,也可称为打包密文,可包括多个(如数千个)密文数据(也可称为元素)。RLWE作为难问题(hard problem),可作为构建全同态加密(FullyHomomorphic Encryption,FHE)密码系统的基础。
其中,FHE加密系统为支持在密文上进行任意操作的密码系统。因此,FHE经常用于基于密文的数据处理。本申请各实施例提供的各密文序列和密文子序列可为FHE密文序列。
在本实施例中,第一密文序列A0为待排序的密文序列。该密文序列可包括多个目标对象的1个或多个属性的数据的密文。多个是指2个或2个以上。例如,在一些实施例中,第一密文序列A0可为多种商品的价格的密文,则该第一密文序列A0包括价格这1个属性的密文。又例如,在另一些实施例中,第一密文序列A0包括:多种商品的价格和销量,则该第一密文序列A0包括价格和销量这2种属性的密文,等等。在本申请实施例中,不限定目标对象和目标对象的属性的具体内容。
一般地,对于包含多个属性的密文序列,可包括:多个属性对应的多个密文子序列。多个密文子序列包含的元素数量相同。每个属性可对应一个或多个密文子序列。每个密文子序列也是一个打包密文。根据实际需求和排序意义,在对第一密文序列进行排序时,对同一属性的密文子序列进行排序。这主要是因为不同属性之间进行排序无实际意义。例如,重量和长度之间无比较意义,价格和销量之间也无比较意义,等等。
密文排序是指将密文序列按照排列顺序需求(升序或降序)进行排序。在本实施例中,为了提高密文排序效率,引入排序网络。其中,排序网络(Sorting Network)是指采用不同的拓扑链接的比较器所组成的实现排序功能的一种网络,可采用线路和比较器表示排序流程的算法。排序网络可对每个输入序列,其输出序列均为单调递增或单调递减的一种比较网络。比较网络由线路和比较器构成。一条线路把一个值从一处传输到另一处,把比较器的输入端和输出端相连。排序网络可基于比较网络模型,可以同时执行多个比较操作。排序网络具有遗忘(Oblivious)特性,可实现硬件排序模块。遗忘特性是指不根据比较结果进行分支选择,即比较操作与输入数据无关的排序特性。其中,排序网络包括但不限于:奇偶排序网络、双调排序(Bitonic Sort)网络或冒泡排序网络等。
在本实施例中,为了提高密文排序效率,可利用排序网络对第一密文序列A0进行并行排序。具体地,在步骤102中,可将步骤101获取的待排序的第一密文序列A0输入至排序网络,并利用排序网络对第一密文序列A0进行并行排序。
为了提高比较操作的并行度,在步骤103中,在排序网络中,可以第一密文序列A0为操作数,并行执行对第一密文序列A0进行序列内排序所需的运算操作,得到排序后的第二密文序列B0。运算操作可包括:逻辑运算操作和/或算术运算操作。排序网络不同,序列内排序所需的运算操作不同。例如,对于双调排序网络,序列内排序所需的运算操作包括:逻辑运算操作和算术运算操作。其中,逻辑运算操作包括:比较操作、旋转操作等。算术运算操作包括:乘法操作、加减法操作等。
在本实施例中,对于待排序的密文序列,可利用排序网络对密文序列进行并行排序,且可以密文序列为操作数,并行执行序列内排序所需的运算操作,无需对密文序列进行拆分,可提高密文排序的并行度,进而提高密文排序效率。
下面以排序网络为双调排序网络为例,对上述步骤103的具体实施方式进行示例性说明。由于单指令多数据流(Single Instruction Multiple Data,SIMD)可并行处理多个操作数,即在多个数据上独立进行相同操作,同时输出多个计算结果。因此,可SIMD指令可以密文序列为操作数进行运算操作。
基于此,在双调排序网络中,可利用SIMD方式以第一密文序列A0为操作数,并行执行多阶段(Stage)的序列内的比较交换操作,实现对第一密文序列A0的序列内排序。执行比较交换操作的总阶段数S1=
Figure SMS_1
。其中,P1表示第一密文序列A0中密文(即元素)的数量,
Figure SMS_2
表示
Figure SMS_3
的向上取整。图2中仅以P1=16为例进行图示,但不构成限定。
例如,对于FHE密文序列,在双调排序网络中,可利用SIMD方式以第一密文序列A0为操作数,并行执行多阶段(Stage)的序列内的比较交换操作,实现对FHE密文序列的序列内排序。
在双调排序网络中,每个阶段按双调排序相同形式,利用SIMD执行该阶段对应轮数的序列内的比较交换操作。其中,第W1阶段执行序列内的比较交换操作的轮数等于W1,即第W1阶段执行W1轮的比较交换操作。其中,W1为整数,且1≤W1≤
Figure SMS_4
。根据双调排序特性,对于包含
Figure SMS_5
个元素的打包密文,排序共经过
Figure SMS_6
个阶段,共进行
Figure SMS_7
轮的比较交换操作。
上述第W1阶段的第R1轮的比较步长k1=
Figure SMS_8
,R1为整数,且1≤R≤W1。在本实施例中,序列内的比较交换操作的比较步长k1可反映每两个元素进行序列内的比较交换操作时需要间隔的密文数量,也可称为元素数量。例如,比较步长k1=1,则进行比较交换操作的2个元素之间的跨度为1个元素,即间隔1个元素;若比较步长k1=2,则进行比较交换操作的2个元素之间的跨度为2个元素,即间隔2个元素。例如,在图2中,比较步长k1=1,则相邻2个元素进行比较交换操作;比较步长k1=4,则进行比较交换操作的两个元素跨度为4个元素,例如,第1个元素和第4个元素进行比较交换操作,第5个元素和第8个元素进行比较交换操作等等。
相应地,针对第W1阶段的第R1轮比较交换操作,可利用SIMD方式,按照第W1阶段的各轮次的比较步长,并行对第W1阶段的输入密文序列,执行第W1阶段对应的轮数的序列内的比较交换操作,以得到第W1阶段的输出密文序列。其中,第1阶段的输入密文序列为第一密文序列A0;其它阶段的输入密文序列为前一阶段的输出密文序列。
例如,图2为本申请实施例提供的采用双调排序网络对密文序列进行序列内排序的流程示意图。在图2中,水平线表示第一密文序列A0的元素,每条水平线对应一个元素。箭头表示两个元素之间的比较交换操作;箭头指向表示比较交换后较大元素的位置。图2第一密文序列的密文数量P1=16。相应地,图2需要执行的序列内的比较交换操作的阶段数S=4。其中,第1阶段需要执行1轮序列内的比较交换操作,且该轮的比较步长为1。第2阶段需要执行2轮比较交换操作,且第1轮和第2轮的比较步长分别为2和1。第3轮需要执行3轮比较交换操作,且第1轮、第2轮和第3轮的比较步长依次为4、2和1。第4轮需要执行4轮比较交换操作,且第1轮、第2轮、第3轮和第4轮的比较步长依次为8、4、2和1。
在本申请实施例中,不限定对每轮执行比较交换操作的具体实施方式。下面以密文序列内排序的第W1阶段的第R1轮为例,对每轮执行的比较交换操作进行示例性说明。其中,W1=1,2,…,
Figure SMS_9
。R1=1,2,…,W1。相应地,第W1阶段的第R1轮的比较步长k1=
Figure SMS_10
。其中,第W1阶段的第1轮的输入密文序列为第(W1-1)阶段的输出密文序列Aw1-1;第W1阶段其它轮的输入为前一轮的输出密文序列。图3和图4仅以密文数量为8的密文序列,第2阶段的第1轮的序列内比较交换操作为例进行图示,但不构成限定。
结合图3和图4,针对第W1阶段的第R1轮,可利用SIMD方式将第R1轮的输入密文序列Aw1R1正向旋转第R1轮的比较步长k1,以得到第一旋转序列Bw1R1。在本申请实施例中,序列旋转时一种调整序列元素顺序的方法。序列的正向旋转是指将该序列的头部元素调整至该序列的尾部。针对本实施例,第R1轮的输入密文序列Aw1R1正向旋转第R1轮的比较步长k1,是指将第R1轮的输入密文序列Aw1R1的头部的前k1个元素调整至该输入密文序列Aw1R1的尾部。具体地,可将需要旋转的输入密文序列Aw1R1的头部的前k1个元素复制至临时缓冲区,再将该输入密文序列Aw1R1的其它元素移动至序列头部,之后再将临时缓冲区的元素复制到输入密文序列Aw1R1的至尾部。
在图3和图4中,第2阶段的第1轮的输入密文序列A21为第1阶段的输出密文序列A1=[2,3,5,4,0,7,6,1];第2阶段的第1轮的比较步长k1=2。将输入密文序列A21,正向旋转比较步长2,得到输入密文序列A21的旋转序列B21=[5,4,0,7,6,1,2,3,]。
进一步,可利用SIMD方式,确定第R1轮的输入密文序列Aw1R1和第一旋转序列Bw1R1的比较结果序列Cw1R1
在本申请实施例中,不限定确定比较结果序列的具体实施方式。下面结合几种可选实施方式进行示例性说明。
实施方式1:可基于比较操作实现比较交换。相应地,可利用SIMD方式,并行对第R1轮的输入密文序列Aw1R1和输入密文序列Aw1R1的旋转序列Bw1R1中相同位置的元素进行比较操作,以得到比较结果序列Cw1R1。例如,比较操作为Cw1R1= Aw1R1< Bw1R1,即对输入密文序列Aw1R1和Aw1R1的旋转序列Bw1R1进行按位比较操作,若在同一位置i上Aw1R1[i]< Bw1R1[i],则Cw1R1[i]=1;若同一位置i上Aw1R1[i]≥ Bw1R1[i],则Cw1R1[i]=0。
例如,在图3中,可利用SIMD方式,并行对输入密文序列A1和A1的旋转序列B21中相同位置的元素进行比较操作。图3中以比较操作为C21= A1< B21,即对输入密文序列A1和A1的旋转序列B21中相同位置的元素进行比较操作,若在同一位置i上A1[i]< B21[i],则C21[i]=1;若同一位置i上A1[i]≥ B21[i],则C21[i]=0。因此,图3中,C21=[1,1,0,1,1,0,0,1]。
实施方式2:可基于最大最小元素操作实现比较交换。相应地,可利用SIMD方式,并行对第W1阶段的第R1轮的输入密文序列Aw1R1和输入密文序列Aw1R1的旋转序列Bw1R1中相同位置的元素,进行求最大最小值操作,以得到最大值序列Cw1R1-max和最小值序列Cw1R1-min,作为输入密文序列Aw1R1和输入密文序列Aw1R1的旋转序列Bw1R1的比较结果序列Cw1R1。例如,最小值操作为Cw1R1-min=min(Aw1R1,Bw1R1),即对输入密文序列A1和A1的旋转序列B21中相同位置的元素进行求最小值操作,在同一位置i上Cw1R1-min[i]等于Aw1R1[i]和Bw1R1[i]中的较小值。因此,图4中,Cw1R1-min=[2,3,0,4,0,1,2,1]。最大值操作为Cw1R1-max=max(Aw1R1,Bw1R1),即对输入密文序列Aw1R1和Aw1R1的旋转序列Bw1R1中相同位置的元素进行求最大值操作,在同一位置i上Cw1R1-max[i]等于Aw1R1[i]和Bw1R1[i]中的较大值。
例如,在图4中,可利用SIMD方式,并行对输入密文序列A1和A1的旋转序列B21中相同位置的元素进行求最大最小值操作。图4中,最小值操作为Cw1R1-min=min(A1,B21),则在同一位置i上Cw1R1-min[i]等于A1[i]和B21[i]中的较小值。因此,图4中,Cw1R1-min=[2,3,0,4,0,1,2,1]。最大值操作为Cw1R1-max=max(A1,B21),即对输入密文序列A1和A1的旋转序列B21中相同位置的元素进行求最大值操作,则在同一位置i上Cw1R1-max[i]等于A1[i]和B21[i]中的较大值。因此,图4中,Cw1R1-max=[5,4,5,7,6,7,6,3]。
实施方式3:可利用SIMD方式,利用字典序(Lexical Order)方法,确定第W1阶段的第R1轮的输入密文序列Aw1R1和输入密文序列Aw1R1的旋转序列Bw1R1的比较结果序列Cw1R1。其中,字典序可基于多个属性对密文序列进行排序,主要对由多个元素组成的密文序列进行排序,当密文两个序列的第一个元素相同时依次比较两个密文序列其它元素,直至出现不同的元素。
下面对利用字典序方法,确定输入密文序列Aw1R1和输入密文序列Aw1R1的旋转序列Bw1R1的比较结果序列Cw1R1的具体实施方式进行示例性说明。
在字典序实施方式中,上述第一密文序列A0可包括:多个属性的多个密文子序列。其中,一个属性对应一个或多个密文子序列。一个属性对应的多个密文子序列包含的元素数量相同。多个是指2个或2个以上。相应地,第W1阶段第R1轮的输入密文序列Aw1R1包括:第W1阶段的第R1轮的多个输入密文子序列Aw1R1[j]。j=0,1,…(J-1),J表示第一密文序列A0包含的属性的数量,j表示第j个属性。输入密文序列Aw1R1的旋转序列Bw1R1包括:第W1阶段的第R1轮的多个输入密文子序列Aw1R1[j]对应的多个旋转子序列Bw1R1[j]。
相应地,利用字典序方法,确定第W1阶段的第R1轮的输入密文序列Aw1R1和输入密文序列Aw1R1的旋转序列Bw1R1的比较结果序列Cw1R1,可实现为利用SIMD方式执行以下运算操作:
运算操作1:利用SIMD方式,对第W1阶段的第R1轮的同一属性j的输入密文子序列Aw1R1[j]和旋转子序列Bw1R1[j]中相同位置的元素进行等值计算,以得到该属性j对应的等值结果子序列Ew1R1[j]。其中,等值计算为Ew1R1[j]=(Aw1R1[j]==Bw1R1[j]),若在同一位置i上Aw1R1[j][i]=Bw1R1[j][i],则Ew1R1[j] [i]=1;若在同一位置i上Aw1R1[j][i]≠Bw1R1[j][i],则Ew1R1[j] [i]=0。
运算操作2:对第W1阶段的第R1轮的同一属性j的输入密文子序列Aw1R1[j]和旋转子序列Bw1R1[j]中相同位置的元素进行比较操作,以得到该属性j对应的比较结果子序列Lw1R1[j]。比较操作为Lw1R1[j]= Aw1R1[j]<Bw1R1[j]),若在同一位置i上Aw1R1[j][i]<Bw1R1[j][i],则Lw1R1[j] [i]=1;若在同一位置i上Aw1R1[j][i]≥Bw1R1[j][i],则Lw1R1[j] [i]=0。
例如,在图5中,对于字典序的两个输入密文序列为A[j][i]和B[j][i]。其中,A[j][i]包括: A[0]= [2,3,5,4,0,7,6,1];A[1]= [5,1,7,2,4,6,3,0];A[2]= [1,3,0,5,7,2,6,4]等3个属性的密文子序列。B[j][i]包括:B[0]= [4,3,5,1,0,2,6,7];B[1]= [2,1,3,0,4,6,7,5];B[2]= [1,7,5,6,3,2,0,4]等3个属性的密文子序列。相应地,J=3,j=0,1,2。则,对同一属性j的输入密文子序列A [j]和B [j]进行等值计算,得到等值密文子序列E[j]分别为:E[0]= [0,1,1,0,1,0,1,0];E[1]= [0,1,0,0,1,1,0,0];E[2]= [1,0,0,0,0,1,0,1]。对同一属性j的输入密文子序列A [j]和B [j]进行比较计算,得到比较结果子序列L[j]分别为:E[0]= [1,0,0,0,0,0,0,1];E[1]= [0,0,0,0,0,0,1,1];E[2]= [0,1,1,1,0,0,0,0]。
进一步,可执行运算操作3:根据多个属性分别对应的等值结果子序列Ew1R1[j]、及多个属性分别对应的比较结果子序列Lw1R1[j],进行乘操作或与操作,得到多个属性分别对应的目标密文子序列R[j]。
具体地,针对前(J-1)个属性中的第j个属性,对第j个属性的比较结果子序列Lw1R1[j]、第j个属性的比较结果子序列Ew1R1[j]的取非结果(¬Ew1R1[j])及前(J-1)个属性的等值结果子序列中相同位置的元素,进行乘或与操作,以得到第j个属性的目标密文子序列R[j]。其中,j=0,1,…,(J-1)。对于按位乘操作,R[j]= Lw1R1[j]×(¬ Ew1R1[j])×
Figure SMS_11
。“¬”表示取非,也可称为取反。
针对第J个属性,对第J个属性的比较结果子序列Lw1R1[J]及前(J-1)个属性的等值结果子序列中相同位置的元素进行乘或与操作,以得到第J个属性的目标密文子序列R[J]。对于按位乘操作,R[J]= Lw1R1[J]×
Figure SMS_12
按照上述运算操作3的执行逻辑,对于乘操作,R[0]= L[0]×(¬E[0])=[1,0,0,0,0,0,0,1];R[1]= L[1]×(¬E[1])×E[0]= [0,0,0,0,0,0,1,0];R[2]= L [2]×E[0]×E[1]= [0,1,0,0,0,0,0,0]。
进一步,可执行运算操作4:对多个属性分别对应的目标密文子序列R[j]中相同位置的元素进行累加或逻辑或操作,以得到比较结果序列Cw1R1
例如,在图5中,按照累加操作,比较结果序列C= R[0]+ R[1]+ R[2]= [1,1,0,0,0,0,1,1]。
值得说明的是,上述图5仅以字典序的输入密文序列为上述A[j][i]和B[j][i]为例,对利用字典序确定输入密文序列的比较结果序列的过程进行示例性说明。在本实施例中,可将字典序的两个输入密文序列A[j][i]和B[j][i],替换为第W1阶段的第R1的输入密文序列Aw1R1和输入密文序列Aw1R1的旋转序列Bw1R1,而运算操作的逻辑相同。
上述实施方式1-3示出的确定利用SIMD方式,确定第W1阶段的第R1轮的输入密文序列Aw1R1和旋转序列Bw1R1的比较结果序列Cw1R1的实施方式仅为示例性说明,并不构成限定。
在对第W1阶段的输入密文序列,执行多阶段的比较交换操作时,针对第W1阶段的第R1轮比较交换操作,还可根据第一密文序列A0的排列顺序需求、第W1阶段的第R1轮对应的比较步长k1及阶段W1,生成明文序列N0。排列顺序需求是指密文序列的排序顺序为升序排序或降序排序。
其中,对于升序排列的顺序需求,明文序列N0[i]=(
Figure SMS_13
)。
Figure SMS_14
表示对
Figure SMS_15
向下取整。Mod表示对2取模。对于降序排列顺序需求,明文序列N0[i]=¬ (
Figure SMS_16
)。i表示第一密文序列A0的第i个元素。
基于此,如图3和图4所示,在第一密文序列A0的排列顺序需求为升序排序的情况下,明文序列N0=[0,0,0,0,1,1,1,1]。
进一步,还可根据第W1阶段的第R1轮对应的比较步长k1,生成掩码明文序列M0。其中,掩码明文序列M0可表示为:M0[i]=(
Figure SMS_17
)。相应地,图3和图4的示例中,M0=[1,1,0,0,1,1,0,0]。
进一步,可利用SIMD方式,以比较结果序列Cw1R1、明文序列N0及掩码明文序列M0为操作数,并行执行运算操作,以得到第W1阶段第R1轮的输出密文序列Ow1R1
在一些实施例中,在以比较结果序列Cw1R1、明文序列N0及掩码明文序列M0为操作数,并行执行运算操作时,可利用SIMD,以比较结果序列Cw1R1、明文序列N0及掩码明文序列M0为操作数,并行执行运算操作,得到第一目标密文序列Xw1R1和第二目标密文序列Yw1R1
在一可选实施例中,结合图3,基于上述实施方式1和3确定出的比较结果序列Cw1R1可利用SIMD方式对比较结果序列Cw1R1和明文序列N0中相同位置的元素进行异或操作,得到密文序列Dw1R1。Dw1R1= Cw1R1⊕N0。进一步,可利用SIMD方式对密文序列Dw1R1和掩码明文序列M0中相同位置的元素进行乘或与操作,以得到密文序列Fw1R1。对于乘操作,Fw1R1=Dw1R1×M0。图3中仅以对密文序列Dw1R1和掩码明文序列M0中相同位置的元素进行乘操作为例进行图示,但不构成限定。
进一步,可利用SIMD方式对掩码明文序列M0和密文序列Fw1R1中相同位置的元素进行减操作,以得到密文序列Gw1R1。即,Gw1R1= M0-Fw1R1。之后,可利用SIMD方式计算第W1阶段的第R1轮的输入密文序列Aw1R1和密文序列Fw1R1的乘积,与输入密文序列Aw1R1的旋转序列Bw1R1与密文序列Gw1R1的乘积之和,得到第一目标密文序列Xw1R1。即Xw1R1= Aw1R1×Fw1R1+ Bw1R1×Gw1R1。其中,第W1阶段的第R1轮的输入密文序列Aw1R1和密文序列Fw1R1的乘积是指第W1阶段的第R1轮的输入密文序列Aw1R1和密文序列Fw1R1的乘积中相同位置的元素进行乘法操作的计算结果。相应地,输入密文序列Aw1R1的旋转序列Bw1R1与密文序列Gw1R1的乘积为输入密文序列Aw1R1的旋转序列Bw1R1与密文序列Gw1R1中相同位置的元素进行乘法操作的计算结果。
同样地,还可利用SIMD方式计算第W1阶段的第R1轮的输入密文序列Aw1R1和密文序列Gw1R1的乘积,与输入密文序列Aw1R1的旋转序列Bw1R1与密文序列Fw1R1的乘积之和,得到第二目标密文序列Yw1R1。即Yw1R1= Aw1R1×Gw1R1+ Bw1R1×Fw1R1
按照上述运算方式,可得到图3中第2阶段的第1轮的比较结果序列C21和明文序列N0中相同位置的元素进行异或操作,得到密文序列D21= C21⊕N0=[1,1,0,1,0,1,1,0];对密文序列D21和掩码明文序列M0中相同位置的元素进行乘或与操作,以得到密文序列F21= D21×M0=[1,1,0,0,0,1,0,0]。对掩码明文序列M0和密文序列F21中相同位置的元素进行减操作,得到密文序列G21=M0-F21=[0,0,0,0,1,0,0,0];相应地,在图3中,第一目标密文序列X21=[2,3,0,0,6,7,0,0];第二目标密文序列Y21=[5,4,0,0,0,1,0,0]。
在另一可选实施例中,结合图4,图4中的比较结果序列Cw1R1为上述实施方式2确定出的比较结果序列C21,即比较结果序列C21包括:最大值序列C21-max和最小值序列C21-min。在图4中,C21-max=[5,4,5,7,6,7,6,3];C21-min=[2,3,0,4,0,1,2,1]。
基于最大值序列Cw1R1-max和最小值序列Cw1R1-min,利用SIMD方式,以比较结果序列Cw1R1、明文序列N0及掩码明文序列M0为操作数,并行执行运算操作,得到第一目标密文序列Xw1R1和第二目标密文序列Yw1R1的另一种实施方式为:结合图4,可利用SIMD方式对最小值序列Cw1R1-min和掩码明文序列M0中相同位置的元素进行乘操作,以得到密文序列Ew1R1,即Ew1R1=Cw1R1-min×M0。以及,利用SIMD方式,对最大值序列Cw1R1-max和掩码明文序列M中相同位置的元素进行乘操作,以得到密文序列Fw1R1,即Fw1R1=Cw1R1-max×M0。
进一步,如图4所示,可利用SIMD方式,计算密文序列Ew1R1和明文序列N0的逻辑取反结果的乘积,与密文序列Fw1R1和明文序列N0的乘积之和,得到第一目标密文序列Xw1R1。即Xw1R1= Ew1R1×(¬N0)+Fw1R1×N0。以及,利用SIMD方式,计算密文序列Ew1R1和明文序列N0的乘积,与密文序列Fw1R1和明文序列N0的的逻辑取反结果的乘积之和,得到第二目标密文序列Yw1R1。即Yw1R1= Ew1R1×N0+Fw1R1×(¬N0)。
结合图3,按照上述逻辑运算方式,D21= C21⊕N0=[1,1,0,1,0,1,1,0];E21= C21-min×M0=[2,3,0,0,0,1,0,0];F21=C21-max×M0=[5,4,0,0,6,7,0,0];X21=[2,3,0,0,6,7,0,0];Y21=[5,4,0,0,0,1,0,0]。
结合图3和图4,在确定出第一目标密文序列Xw1R1和第二目标密文序列Yw1R1之后,可利用SIMD方式,将第二目标密文序列Yw1R1逆向旋转第W1阶段的第R1轮的比较步长k1,得到目标密文序列Zw1R1。即Zw1R1=Yw1R1
Figure SMS_18
rotate(-k1)。“Yw1R1
Figure SMS_19
rotate(-k1)”表示将Yw1R1逆向旋转k1。
其中,序列逆向旋转是指将该序列的尾部元素调整至该序列的头部。针对本实施例,第二目标密文序列Yw1R1逆向旋转第W1阶段的第R1轮的比较步长k1,是指将第二目标密文序列Yw1R1的尾部的k1个元素调整至该序列的头部。具体地,可将需要旋转的第二目标密文序列Yw1R1的尾部的k1个元素复制至临时缓冲区,再将该第二目标密文序列Yw1R1的其它元素移动至序列尾部,之后再将临时缓冲区的元素复制到第二目标密文序列Yw1R1的尾部。例如,在图3和图4中,将Y21=[5,4,0,0,0,1,0,0]逆向旋转2,得到目标密文序列Z21=[0,0,5,4,0,0,0,1]。
进一步,可利用SIMD方式,对第一目标密文序列Xw1R1和密文序列Zw1R1中相同位置的元素进行加和操作,以得到第W1阶段第R1轮的输出密文序列Ow1R1。即Ow1R1= Xw1R1+ Zw1R1。例如,在图3和图4中,O21= X21+ Z21=[2,3,5,4,6,7,0,1]。图3和图4中实现的是第2阶段的第2轮的输出密文序列的求取。
上述实施例仅以第W1阶段的第R1轮为例,对每轮的比较交换操作进行示例性说明。对于每个阶段的每轮的比较交换操作,均可按照上述实施例示出的运算操作,进行SIMD的运算操作,实现按照排列顺序需求对第一密文序列A0进行序列内排序,得到排序后的第二密文序列B0。
在实际应用中,对于目标对象来说,可能具有多个属性。每个属性对应1个或多个密文序列。对于多个属性的目标对象来说,当一个属性的密文数据的排列顺序发生变化,其它数据的密文属性需要适应性调整在密文序列中的顺序。例如,对于商品来说,具有价格和销量等多种属性,在对商品按照价格的大小进行升序和降序排序之后,其销量也可适应性调整在销量对应密文序列中的排序顺序。
为了解决该问题,本申请实施例提出多属性排序方式。具体地,可从目标对象的多个属性中,确定出主属性。在本申请实施例中,不限定确定主属性的具体实施方式。在一些实施例中,主属性可为预先设置的属性;或者,可根据密文排序的应用需求,确定主属性。进一步,可按照上述各实施例示出的密文序列的序列内排序方式,对主属性的密文序列进行序列内排序,得到主属性的密文序列的排序结果。相应地,可按照主属性的密文序列的排序结果,对其它属性的密文序列进行序列内排序。
下面以上述第一密文序列A0对应的属性为主属性为例,对多属性排序方式进行示例性说明。在该实施例中,还可获取目标对象的其它属性的密文序列H1。其它属性可为1个或多个属性。多个是指2个或2个以上。相应地,密文序列H1可为1个或多个密文序列。
进一步,可根据第一密文序列A0的排序结果,对密文序列H1进行序列内排序。具体地,可根据上述对第一密文序列A0进行序列内排序的每个阶段的每一轮比较交换操作,对密文序列H1进行比较交换操作。对密文序列H1进行序列内排序的过程可参见上述实施例中对第一密文序列A0进行序列内排序的相关内容,在此不再赘述。
为了提高密文排序效率,在根据对第一密文序列A0进行序列内排序的每个阶段的每一轮比较交换操作,对密文序列H1进行比较交换操作时,可复用上述对第一密文序列A0进行排序内排序时的各阶段中每轮比较交换操作,执行的运算操作的比较结果。例如,结合图3和图5,基于上述实施方式1和3示出的确定比较结果序列的实施方式,可将第一目标密文序列Xw1R1和第二目标密文序列Yw1R1中的输入密文序列Aw1R1和旋转序列Bw1R1,替换为对密文序列H1的排序过程中第W1阶段第R1阶段的输入密文序列A1w1R1和A1w1R1的旋转序列Bw1R1,而无需重复计算在第一目标密文序列Xw1R1和第二目标密文序列Yw1R1之前的运算操作,有助于提高密文排序效率。
在一些实施例中,第一密文序列A0的数量可能为多个。多个第一密文序列包含的元素数量相同。多个是指2个或2个以上。例如,目标对象的属性的密文数据量较大,一个密文序列无法存储该属性的所有密文序列等。这就需要使用到密文序列间排序。
在本申请实施例中,为了提高密文排序效率,对于序列间排序时,可采用上述实施例示出的密文序列内排序的排序方式,对多个第一密文序列并行进行序列内排序,得到序列内排序后的多个第二密文序列Bi。i=0,1,…,P2。P2表示第一密文序列的总数量。P2≥2,且为整数。图6中仅以第一密文序列的数量为8个进行图示,但不构成限定。
在对多个第一密文序列进行序列间排序时,可将多个第二密文序列Bi并行输入排序网络中。在排序网络中,以第二密文序列为操作数,并行执行对多个第二密文序列Bi进行序列间的并行排序所需的运算操作,以得到排序后的多个第三密文序列Ti
下面以密文序列间排序的排序网络为双调排序网络为例,对多个第二密文序列Bi进行序列间的并行排序所需的运算操作的具体实施方式进行示例性说明。
为了实现双调排序,需要将多个第一密文序列Ai构建为双调序列,即第二密文序列Bi为奇偶位的密文序列为双调序列。相应地,可按照多个第二密文序列Bi中奇数位B(2h-1)的第二密文序列与偶数位B(2h)的密文序列的序列内排列顺序相反的排序方式,对每个第一密文序列Ai进行序列内排序。h=P2/2,且为整数。
相应地,可对多个第一密文序列Ai中的奇数位的第一密文序列A(2h-1)进行序列内升序排序,得到多个第二密文序列Bi中的奇数位的第二密文序列B(2h-1);并按照降序对第一密文序列A(2h)进行序列内排序,得到多个第二密文序列Bi中的奇数位的第二密文序列B(2h-1)。当然,也可按照降序对第一密文序列A(2h-1)进行序列内排序,得到多个第二密文序列Bi中的奇数位的第二密文序列B(2h-1);并按照升序对第一密文序列A(2h)进行序列内排序,得到的多个第二密文序列Bi中的奇数位的第二密文序列B(2h)。其中,对于第一密文序列进行序列内排序的具体实施方式,可参见上述实施例的相关内容,在此不再赘述。
针对按照上述奇偶位排列顺序相反的多个双调第二密文序列Bi进行序列间排序时,可在双调排序网络中,利用SIMD方式,以第二密文序列Bi为操作数,并行执行多阶段的序列间的插入排序操作,实现对多个第二密文序列的序列间排序。其中,执行的插入排序操作的阶段数S2由第一密文序列Ai的序列数量P2决定。具体地,S2=
Figure SMS_20
。图6中仅以P2=8为例进行图示,相应地,S2=3。
在双调排序网络中,每个阶段按双调排序相同形式,利用SIMD执行该阶段对应轮数的序列间的插入排序操作。具体地,针对第W2阶段,可利用SIMD方式按照第W2阶段的各轮次的比较步长k2,并行对第W2阶段的多个输入密文序列,执行第W2阶段对应的轮数的序列间的最大值或最小值操作,以得到第W2阶段的多个中间输出密文序列。
其中,第1阶段的输入密文序列为上述多个第二密文序列Bi。其它阶段的多个输入密文序列为前一阶段的多个输出密文序列。
其中,第W2阶段执行序列内的比较交换操作的轮数等于W2,即第W2阶段执行W2轮的插入排序操作。其中,W2为整数,且1≤W2≤
Figure SMS_21
。根据双调排序特性,对于序列内排序共经过
Figure SMS_22
个阶段,共进行
Figure SMS_23
轮的最大值或最小值操作。
相应地,第W2阶段的第R2轮的比较步长k2=
Figure SMS_24
,R2为整数,且1≤R2≤W2。在本实施例中,序列间的插入排序操作的比较步长k2可反映两个密文序列进行序列间的插入排序操作时需要间隔的密文序列的数量。例如,比较步长k2=1,则进行插入排序操作的2个密文序列之间的跨度为1个密文序列;若比较步长k2=2,则进行插入排序操作的2个密文序列之间的跨度为2个密文序列。
上述第W2阶段的多个输入密文序列BiW2对应的序列间的最大值或最小值操作由多个第一密文序列Ai的整体排列顺序需求决定。在一些实施例中,多个第一密文序列Ai的整体排列顺序需求为升序排列,则(1)第1阶段对应比较步长k2=1,则输入密文序列B(4n-3)W2与输入密文序列B(4n-2)W2之间执行最小值操作;输入密文序列B(4n-1)W2与输入密文序列B(4n)W2之间执行最大值操作。其中,n=1,2,…,(P3+2)/4。P3=
Figure SMS_25
。(2)针对第W2阶段,2≤W2<
Figure SMS_26
,则前(P3/2)的输入密文序列之间按照第W2阶段的各轮对应的比较步长,执行最小值操作;后(P3/2)的输入密文序列之间按照第W2阶段的各轮对应的比较步长,执行最大值操作。(3)第
Figure SMS_27
阶段,按照第
Figure SMS_28
阶段的各轮对应的比较步长,所有输入密文序列执行最小值操作。
相应地,对于多个第一密文序列Ai的整体排列顺序需求为降序排列,则(1)第1阶段对应比较步长k2=1,则输入密文序列B(4n-3)W2与输入密文序列B(4n-2)W2之间执行最大值操作;输入密文序列B(4n-1)W2与输入密文序列B(4n)W2之间执行最小值操作。其中,n=1,2,…,(P3+2)/4。P3=
Figure SMS_29
。(2)针对第W2阶段,2≤W2<
Figure SMS_30
,则前(P3/2)的输入密文序列之间按照第W2阶段的各轮对应的比较步长,执行最大值操作;后(P3/2)的输入密文序列之间按照第W2阶段的各轮对应的比较步长,执行最小值操作。(3)第
Figure SMS_31
阶段,按照第
Figure SMS_32
阶段的各轮对应的比较步长,所有输入密文序列执行最大值操作。
图6中仅以对第一密文序列进行升序排列为例进行图示,但不构成限定。图6中各阶段中的“>”和“<”分别表示最大值和最小值操作。
基于上述分析,针对第W2阶段的第R2轮,可利用SIMD方式按照第R2轮的比较步长k2,利用SIMD方式按照第R2轮的比较步长k2,并行对第R2轮的多个输入密文序列BiW2R2进行序列间的最大值或最小值操作,得到第W2阶段的第R2轮的多个中间输出密文序列。其中,第W2阶段的第1轮的多个输入密文序列为第(W2-1)阶段的多个输出密文序列;而第W2阶段其它轮的输入为第W2阶段的前一轮的输出密文序列。
其中,第W2阶段的第R2轮输入密文序列之间进行最大值操作,还是最小值操作,可根据上述对第一密文序列的排列顺序需求决定。
具体地,针对第W2阶段的第R2序列进行序列间的最大值或最小值操作的任意两个输入密文序列B1W2R2和B2W2R2,则可利用SIMD方式确定输入密文序列B1W2R2和B1W2R2的比较结果序列CW2R2。其中,关于确定输入密文序列B1W2R2和B2W2R2的比较结果序列CW2R2的具体实施方式,可参见上述对第一密文序列进行序列内排序时,确定输入密文序列AW1R1和旋转序列BW1R1的比较结果序列CW1R1的实施方式1和3,在此不再赘述。具体地,可将上述实施方式1和3中的输入密文序列AW1R1和旋转序列BW1R1,替换为本申请实施例中的输入密文序列B1W2R2和B2W2R2,并按照上述实施方式1或3示出的运算操作,对输入密文序列B1W2R2和B2W2R2中相同位置的元素进行运算操作,得到输入密文序列B1W2R2和B2W2R2的比较结果序列CW2R2
例如,如图7所示,假设输入密文序列B1W2R2和B2W2R2分别为:B1W2R2=[3,4,9…,D],B2W2R2=[C,A,8…,0],则采用上述实施方式1可确定输入密文序列B1W2R2和B2W2R2的比较结果序列CW2R2= B1W2R2<B2W2R2=[1,1,0…,0]。
进一步,可根据输入密文序列B1W2R2和B2W2R2对应的最大值操作或最小值操作,确定明文序列N1。若输入密文序列B1W2R2和B2W2R2之间为最大值操作,则明文序列N1全为1;若B1W2R2和B2W2R2之间为最小值操作,则明文序列N1全为0。图7中仅以B1W2R2和B2W2R2之间为最小值操作为例进行图示,但不构成限定。
进一步,可利用SIMD方式,以比较结果序列CW2R2和明文序列N1为操作数,并行执行运算操作,以得到输入密文序列B1W2R2对应的输出密文序列和输入密文序列B2W2R2对应的输出密文序列。其中,第W2阶段的第R2轮的多个输入密文序列BiW2R2各自对应的输出密文序列,组成第W2阶段的第R2轮的多个中间输出密文序列。
在一些实施例中,在以比较结果序列CW2R2和明文序列N1为操作数,并行执行运算操作时,可利用SIMD方式对比较结果序列CW2R2和明文序列N1中相同位置的元素进行异或操作,以得到密文序列FW2R2,即FW2R2= CW2R2⊕N1。例如,在图7中,FW2R2= CW2R2⊕N1=[1,1,0…,0]。
进一步,可利用SIMD方式确定密文序列FW2R2的取反结果序列GW2R2。可选地,可利用SIMD方式对密文序列FW2R2进行逻辑取反,得到取反结果序列GW2R2。或者,也可利用SIMD方式,使用全1序列减去密文序列FW2R2,得到取反结果序列GW2R2。例如,在图7中,使用全1序列减去密文序列FW2R2,得到取反结果序列GW2R2=1- FW2R2=[0,0,1…,1]。
进一步,可计算输入密文序列B1W2R2和密文序列FW2R2的乘积,与输入密文序列B2W2R2和取反结果序列GW2R2的乘积之和,得到输入密文序列B1W2R2对应的输出密文序列O1W2R2。即O1W2R2= B1W2R2×FW2R2+ B2W2R2×GW2R2。例如,在图7中,O1W2R2= B1W2R2×FW2R2+ B2W2R2×GW2R2=[3,4,8…,0]。
相应地,还可计算输入密文序列B1W2R2和取反结果序列GW2R2的乘积,与输入密文序列B2W2R2和密文序列FW2R2的乘积之和,得到输入密文序列B2W2R2对应的输出密文序列O2W2R2。即O2W2R2= B1W2R2×GW2R2+ B2W2R2×FW2R2。例如,在图7中,O2W2R2= B1W2R2×GW2R2+ B2W2R2×FW2R2=[C,A,9…,D]。
上述实施例仅以第W2阶段的第R2轮为例,对每轮的序列间的插入排序操作进行示例性说明。对于每个阶段的每轮的插入排序操作,均可按照上述实施例示出的运算操作,进行SIMD的运算操作,实现按照排列顺序需求对多个第二密文序列Bi进行序列间排序,得到每个阶段对应的多个中间输出密文序列。
针对第W2阶段得到的多个中间输出密文序列,如图6所示,还可利用SIMD方式对第W2阶段的多个中间输出密文序列,分别进行双调归并操作,以得到第W2阶段的多个输出密文序列OW2。具体地,如图6所示,针对第W2阶段进行最小值操作的输入密文序列对应的输出密文序列,可按照升序进行双调归并操作;对第W2阶段进行最大值操作的输入密文序列对应的输出密文序列可按照降序进行双调归并操作,得到第W2阶段的多个输出密文序列OW2。图6中“M”表示双调归并操作,向上箭头表示按照升序进行双调归并操作;向下箭头表示按照降序进行双调归并操作。
其中,对第W2阶段的多个中间输出密文序列进行双调归并操作可实现为:针对多个中间输出密文序列中任一中间输出密文序列(定义为第一中间输出密文序列),可以第一中间输出密文序列为操作数,并行执行对第一中间输出密文序列进行序列内排序时的第
Figure SMS_33
阶段的序列内的比较交换操作,实现对第一中间输出密文序列的双调归并操作。P3为第一中间输出密文子序列的元素的总数量。例如,第一中间输出密文序列的元素的总数量为16,则可以第一中间输出密文序列为操作数,并行执行对第一中间输出密文序列进行序列内排序时的第4阶段的序列内的比较交换操作,如图2中的阶段4示出的比较交换操作。其中,关于对第一中间输出密文子序列进行第
Figure SMS_34
阶段的序列内的比较交换操作的具体实施方式,可参见上述对第一密文序列A0进行序列内排序的相关内容,在此不再赘述。
按照上述实施例示出的方式,可按照多个第一密文序列的排列顺序需求,实现多个第一密文序列的序列间排序。
在实际应用中,对于目标对象来说,可能具有多个属性。每个属性对应1个或多个密文序列。对于多个属性的目标对象来说,当一个属性的密文数据的排列顺序发生变化,其它数据的密文属性需要适应性调整在密文序列中的顺序。
为了解决该问题,本申请实施例提出多属性排序方式。具体地,可从目标对象的多个属性中,确定出主属性。关于确定主属性的具体实施方式,可参见上述实施例的相关内容,在此不再赘述。在本实施例中,可按照上述各实施例示出的密文序列的序列间排序方式,对主属性的多个密文序列进行序列间排序,得到主属性的多个密文序列的排序结果。相应地,可按照主属性的多个密文序列的排序结果,对其它属性的多个密文序列进行序列内排序。
下面以上述第一密文序列Ai对应的属性为主属性为例,对多属性排序方式进行示例性说明。在该实施例中,还可获取目标对象的其它属性的密文序列Hi。其它属性可为1个或多个属性。多个是指2个或2个以上。
进一步,可根据第一密文序列Ai的序列内的排序结果,对密文序列Hi进行序列内排序。具体地,可根据上述对第一密文序列A0进行序列内排序的每个阶段的每一轮比较交换操作,对密文序列Hi进行比较交换操作。关于对密文序列Hi进行比较交换操作的具体实施方式,可参见上述实施例的相关内容。
进一步,可根据第一密文序列Ai的序列间的排序结果,对密文序列Hi进行序列间排序。具体地,可根据上述对第二密文序列Bi进行序列间排序的每个阶段的每一轮插入排序操作,对密文序列Hi的序列内排序结果进行插入排序操作。
为了提高密文排序效率,在根据对第二密文序列Bi进行序列内排序的每个阶段的每一轮插入排序操作,对密文序列Hi的序列间排序结果进行插入排序操作时,可复用上述对第二密文序列Bi进行序列间排序时的各阶段中每轮插入排序操作,执行的逻辑运算操作的比较结果。例如,结合图7,基于上述实施方式1和3示出的确定比较结果序列的实施方式,可将输出密文序列O1w2R2和输出密文序列O2w2R2中的输入密文序列B1w2R2和B2w2R2,替换为对密文序列A1的序列内排序结果的排序过程中第W2阶段第R2阶段的输入密文序列,而无需重复计算在输出密文序列O1w2R2和O2w2R2之前的运算操作,有助于提高密文排序效率。
同样地,本申请实施例提供的密文排序方法可部署于任意计算设备。可选地,本申请实施例提供的渲染方法还可部署于云服务器,作为一种软件即服务(Software as aService,SaaS)应用。对于部署有该SaaS应用的云服务器,可响应于调用目标服务的请求,执行上述渲染方法中的步骤。具体实施方式如图8所示,该方法适用于云服务器,主要包括:
801、响应于调用目标服务的请求,确定目标服务对应的处理资源。
802、利用目标服务对应的处理资源,获取待排序的第一密文序列A0。
803、利用目标服务对应的处理资源,将第一密文序列A0输入第一排序网络。
804、利用目标服务对应的处理资源在第一排序网络中,以第一密文序列A0为操作数,并行执行对第一密文序列A0进行序列内排序所需的运算操作,以得到排序后的第二密文序列B0。
在本实施例中,目标服务是指提供本申请上述实施例提供的密文排序方法的服务。目标服务对应的处理资源是指执行上述渲染方法所需的处理资源,包括但不局限于:处理器资源、内存资源及IO资源等。
本实施例提供的密文排序方法,可部署于云服务器,向用户提供密文排序服务,即目标服务。用户可为目标应用的服务方,也可为目标应用的用户或客户等。可选地,云服务端可向使用方提供应用编程接口(Application Program Interface,API)。服务请求方(即用户)可调用该API调用目标服务。相应地,调用目标服务的请求实现为调用API所产生的调用事件。服务请求方(即用户)也可通过远程过程调用(Remote Procedure Call,RPC)或远程直接数据存取(Remote Direct Memory Access,RDMA)技术调用目标服务。
针对云服务器,可响应于调用目标服务的请求,确定目标服务对应的处理资源;并利用目标服务对应的处理资源执行步骤802-步骤804的步骤,实现密文序列的序列内排序。关于步骤802-步骤804的具体实施方式,可参见上述图1及其可选实施方式的相关内容,在此不再赘述。
在本实施例中,对于待排序的密文序列,可利用排序网络对密文序列进行并行排序,且可以密文序列为操作数,并行执行序列内排序所需的逻辑运算操作,无需对密文序列进行拆分,可提高密文排序的并行度,进而提高密文排序效率。
本实施例提供的密文排序方法,同样可实现多属性排序。具体地,可利用标服务对应的处理资源从目标对象的多个属性中,确定出主属性;按照上述步骤802-804提供的序列内排序方法对主属性的密文序列进行序列内排序;进一步,利用标服务对应的处理资源,按照主属性的密文序列的排序结果,对其它属性的密文序列进行序列内排序。关于多属性排序具体实施方式可参见上述实施例的相关内容,在此不再赘述。
在一些实施例中,第一密文序列为多个,可采用上述实施例示出的密文序列内排序的排序方式,对多个第一密文序列并行进行序列内排序,得到序列内排序后的多个第二密文序列Bi。进一步,可对多个第一密文序列进行序列间排序。具体地,可利用上述目标应用对应的处理资源,将多个第二密文序列Bi并行输入排序网络中。利用上述目标应用对应的处理资源在排序网络中,以第二密文序列为操作数,并行执行对多个第二密文序列Bi进行序列间的并行排序所需的运算操作,以得到排序后的多个第三密文序列Ti。关于对多个第二密文序列进行序列间排序的具体实施方式,可参见上述实施例的相关内容,在此不再赘述。
值得说明的是,上述各实施例使用的排序网络也可采用硬件电路进行实现,对密文序列进行排序的运算操作可采用相应的运算器完成。例如,对于同一阶段特定比较步长的运算操作,可采用运算器完成。如按位比较操作,可采用比较器;乘操作,可采用乘法器;与操作,可采用与门计算器等等。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤101和102的执行主体可以为设备A;又比如,步骤101的执行主体可以为设备A,步骤102的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
相应地,本申请实施例还提供一种存储有计算机指令的计算机可读存储介质,当计算机指令被一个或多个处理器执行时,致使一个或多个处理器执行上述密文排序方法中的步骤。
图9为本申请实施例提供的计算设备的结构示意图。如图9所示,该计算设备包括:存储器90a和处理器90b。存储器,用于存储计算机程序。
处理器90b耦合至存储器90a,用于执行计算机程序以用于:获取待排序的第一密文序列;将第一密文序列输入第一排序网络;以及,在第一排序网络中,以第一密文序列为操作数,并行执行对第一密文序列进行序列内排序所需的运算操作,以得到排序后的第二密文序列。
在一些实施例中,第一密文序列为多个,第二密文序列为多个,方法还包括:将多个第二密文序列并行输入第二排序网络;在第二排序网络中,以第二密文序列为操作数,并行执行对多个第二密文序列进行序列间的并行排序所需的运算操作,以得到排序后的多个第三密文序列。
在一些实施例中,第一排序网络为双调排序网络;处理器90b在以第一密文序列为操作数,并行执行对第一密文序列进行序列内排序所需的运算操作时,具体用于:在双调排序网络中,利用单指令多数据流SIMD方式,以第一密文序列为操作数,并行执行多阶段的序列内的比较交换操作,以对第一密文序列进行序列内排序。
可选地,处理器90b在利用单指令多数据流SIMD方式,以第一密文序列为操作数,并行执行进行多阶段的序列内的比较交换操作时,具体用于:针对多阶段中的第W1阶段,利用SIMD方式,按照第W1阶段的各轮次的比较步长,并行对第W1阶段的输入密文序列,执行第W1阶段对应的轮数的序列内的比较交换操作,以得到第W1阶段的输出密文序列;其中,第1阶段的输入密文序列为第一密文序列;其它阶段的输入密文序列为前一阶段的输出密文序列;其中,W1为整数,且1≤W1≤
Figure SMS_35
, P1表示第一密文序列中密文的数量,
Figure SMS_36
表示
Figure SMS_37
的向上取整,为多阶段的总阶段数。
进一步,处理器90b在利用SIMD方式,按照第W1阶段的当前轮次的比较步长,并行对第W1阶段的输入密文序列,执行第W1阶段对应的轮数的比较交换操作时,具体用于:针对第W1阶段的第R1轮,利用SIMD方式将第R1轮的输入密文序列正向旋转第R1轮的比较步长k1,以得到第一旋转序列;其中,第W1阶段的第1轮的输入密文序列为第(W1-1)阶段的输出密文序列;第W1阶段其它轮的输入为前一轮的输出密文序列;R1为整数,且1≤R1≤W1,k=
Figure SMS_38
;利用SIMD方式,确定第R1轮的输入密文序列和第一旋转序列的第一比较结果序列;根据第一密文序列的排列顺序需求、比较步长k1和阶段W1,生成第一明文序列;根据比较步长k1,生成第一掩码明文序列;以及,利用SIMD方式,以第一比较结果序列、第一明文序列及第一掩码明文序列为操作数,并行执行逻辑运算操作,以得到第W1阶段第R1轮的输出密文序列。
可选地,处理器90b在利用SIMD方式,以第一比较结果序列、第一明文序列及第一掩码明文序列为操作数,并行执行运算操作,包括利用SIMD方式执行以下逻辑运算操作:
以第一比较结果序列、第一明文序列及第一掩码明文序列为操作数,并行执行运算操作,以得到第一目标密文序列和第二目标密文序列;
将第二目标密文序列逆向旋转第R1轮的比较步长k1,以得到第三目标密文序列;
对第一目标密文序列和第三密文序列中相同位置的元素进行加和操作,以得到第W1阶段第R1轮的输出密文序列。
可选地,处理器90b在根据第一密文序列的排列需求,利用SIMD方式,确定第R1轮的输入密文序列和第一旋转序列的第一比较结果序列时,具体用于:利用SIMD方式,并行对第R1轮的输入密文序列和第一旋转序列中相同位置的元素进行比较操作,以得到第一比较结果序列;或者,利用SIMD方式,利用字典序方法确定第R1轮的输入密文序列和第一旋转序列的第一比较结果序列。
相应地,处理器90b在以第一比较结果序列、第一明文序列及第一掩码明文序列为操作数,并行执行运算操作,包括利用SIMD方式执行以下逻辑运算操作:
对第一比较结果序列和第一明文序列中相同位置的元素进行异或操作,以得到第四密文序列;
对第四密文序列和第一掩码明文序列中相同位置的元素进行乘或与操作,以得到第五密文序列;
对第一掩码明文序列和第五密文序列中相同位置的元素进行减操作,以得到第六密文序列;
计算第R1轮的输入密文序列和第五密文序列的乘积,与第一旋转序列与第六密文序列的乘积之和,得到第一目标密文序列;
计算第R1轮的输入密文序列和第六密文序列的乘积,与第一旋转序列与第五密文序列的乘积之和,得到第二目标密文序列。
在另一些实施例中,处理器90b在利用SIMD方式,确定第R1轮的输入密文序列和第一旋转序列的第一比较结果序列时,具体用于:利用SIMD方式,并行对第R1轮的输入密文序列和第一旋转序列中相同位置的元素,进行求最大最小值操作,以得到第一最大值序列和第一最小值序列,作为第一比较结果序列。
相应地,处理器90b在利用SIMD方式,以第一比较结果序列、第一明文序列及第一掩码明文序列为操作数,并行执行运算操作,包括利用SIMD方式执行以下逻辑运算操作:
对第一最小值序列和第一掩码明文序列中相同位置的元素进行乘操作,以得到第七密文序列E;
对第一最大值序列和第一掩码明文序列中相同位置的元素进行乘操作,以得到第八密文序列F;
计算第七密文序列E与第一明文序列N的逻辑取反结果的乘积,与第八密文序列与第一明文序列的乘积之和,得到第一目标密文序列;
计算第七密文序列E与第一明文序列的乘积,与第八密文序列与第一明文序列的逻辑取反结果的乘积之和,得到第二目标密文序列Y。
在一些实施例中,第一密文序列包括:多个属性的多个密文子序列;第R1轮的输入密文序列包括:第R1轮的多个输入密文子序列;第一旋转序列包括:第R1轮的多个输入密文子序列对应的多个旋转子序列。相应地,处理器90b在利用SIMD方式,利用字典序方法确定第R1轮的输入密文序列和第一旋转序列的第一比较结果序列,包括利用SIMD方式执行以下运算操作:
对第R1轮的同一属性的输入密文子序列和旋转子序列中相同位置的元素进行等值计算,以得到同一属性对应的等值结果子序列;
对第R1轮的同一属性的密文子序列和旋转子序列中相同位置的元素进行比较操作,以得到同一属性对应的比较结果子序列;
根据多个属性分别对应的等值结果子序列及多个属性分别对应的比较结果子序列,进行乘或与操作,以得到多个属性分别对应的目标密文子序列;
对多个属性分别对应的目标密文子序列中相同位置的元素进行累加或逻辑或操作,以得到第一比较结果序列。
进一步,处理器90b在根据多个属性分别对应的等值结果子序列及多个属性分别对应的比较结果子序列,进行乘或与操作时,具体用于:针对前(J-1)个属性中的第j个属性,对第j个属性的比较结果子序列、第j个属性的等值结果子序列的取非结果及前(j-1)个属性的等值结果子序列中相同位置的元素,进行乘或与操作,以得到第j个属性的目标密文子序列;针对第J个属性,对第J个属性的比较结果子序列及前(J-1)个属性的等值结果子序列中相同位置的元素进行乘或与操作,以得到第J个属性的目标密文子序列;其中,J表示第一密文序列包含的属性的总数量;j=1,2,…,(J-1)。
在本申请一些实施例中,第二排序网络为双调排序网络;多个第二密文序列中奇数位的第二密文序列与偶数位的密文序列的序列内排列顺序相反。相应地,处理器90b在以第二密文序列为操作数,并行执行对多个第二密文序列进行序列间的并行排序所需的运算操作时,具体用于:在双调排序网络中,利用SIMD方式,以第二密文序列为操作数,并行执行多阶段的序列间的插入排序操作,以对多个第二密文序列进行序列间排序。
进一步,处理器90b在利用SIMD方式,以第二密文序列为操作数,并行执行多阶段的插入排序操作时,具体用于:针对第W2阶段,利用SIMD方式按照第W2阶段的各轮次的比较步长,并行对第W2阶段的多个输入密文序列,执行第W2阶段对应的轮数的序列间的最大值或最小值操作,以得到第W2阶段的多个中间输出密文序列;其中,第1阶段的输入密文序列为多个第二密文序列;其它阶段的多个输入密文序列为前一阶段的多个输出密文序列;以及,利用SIMD方式对多个中间输出密文序列,分别进行双调归并操作,以得到第W2阶段的多个输出密文序列。
其中,W2为整数,且1≤W2≤
Figure SMS_39
, P2表示第二密文序列的数量,
Figure SMS_40
表示
Figure SMS_41
的向上取整;第W2阶段的多个输入密文序列对应的序列间的最大值或最小值操作由多个第一密文序列的整体排列顺序需求决定。
进一步,处理器90b在按照第W2阶段的各轮次的比较步长,并行对第W2阶段的多个输入密文序列,执行第W2阶段对应的轮数的序列间的最大值或最小值操作时,具体用于:针对第W2阶段的第R2轮,利用SIMD方式按照第R2轮的比较步长k2,并行对第R2轮的多个输入密文序列进行序列间的最大值或最小值操作,以得到第W2阶段的第R2轮的多个中间输出密文序列;其中,第W2阶段的第1轮的多个输入密文序列为第(W2-1)阶段的多个输出密文序列;第W2阶段其它轮的输入为第W2阶段的前一轮的输出密文序列;R2为整数,且1≤R2≤W2,k=
Figure SMS_42
进一步,处理器90b在利用SIMD方式按照第R2轮的比较步长k2,并行对第R2轮的多个输入密文序列进行序列间的最大值或最小值操作时,具体用于:针对第R2轮进行序列间的最大值或最小值操作的第一输入密文序列和第二输入密文序列,利用SIMD方式确定第一输入密文序列和第二输入密文序列的第二比较结果序列;根据第一输入密文序列和第二输入密文序列对应的最大值或最小值操作,确定第二明文序列;利用SIMD方式,以第二比较结果序列和第二明文序列为操作数,并行执行运算操作,以得到第一输入密文序列对应的输出密文序列和第二输入密文序列对应的输出密文序列;其中,第W2阶段的第R2轮的多个输入密文序列各自对应的输出密文序列,为第W2阶段的第R2轮的多个中间输出密文序列。
进一步,处理器90b在利用SIMD方式,以第二比较结果序列和第二明文序列为操作数,并行执行运算操作,包括利用SIMD方式执行以下运算操作:
对第二比较结果序列和第二明文序列中相同位置的元素进行异或操作,以得到第九密文序列;
确定第九密文序列的取反结果序列;
计算第一输入密文序列和第九密文序列的乘积,与第二输入密文序列B与取反结果序列的乘积之和,得到第一输入密文序列对应的输出密文序列;
计算第一输入密文序列和取反结果序列的乘积,与第二输入密文序列与第九密文序列F的乘积之和,得到第二输入密文序列对应的输出密文序列。
在本申请一些实施例中,处理器90b还用于:获取目标对象的第十密文序列;第一密文序列和第十密文序列为目标对象的不同属性的密文序列;根据第一密文序列的序列内排序结果和/或序列间排序结果,对第十密文序列进行序列内排序和/或序列间排序。
在一些可选实施方式中,如图9所示,该计算设备还可以包括:通信组件90c、电源组件90d等可选组件。在一些实施例中,计算设备可实现为电脑、手机等终端设备。相应地,计算设备还可包括:显示组件90e和音频组件90d等组件。计算设备图9中仅示意性给出部分组件,并不意味着计算设备必须包含图9所示全部组件,也不意味着计算设备只能包括图9所示组件。
本实施例提供的计算设备,对于待排序的密文序列,可利用排序网络对密文序列进行并行排序,且可以密文序列为操作数,并行执行序列内排序所需的运算操作,无需对密文序列进行拆分,可提高密文排序的并行度,进而提高密文排序效率。
在本申请实施例中,存储器用于存储计算机程序,并可被配置为存储其它各种数据以支持在其所在设备上的操作。其中,处理器可执行存储器中存储的计算机程序,以实现相应控制逻辑。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random-Access Memory,SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read Only Memory,EEPROM),可擦除可编程只读存储器(Electrical Programmable Read Only Memory,EPROM),可编程只读存储器(Programmable Read Only Memory,PROM),只读存储器(Read Only Memory,ROM),磁存储器,快闪存储器,磁盘或光盘。
在本申请实施例中,处理器可以为任意可执行上述方法逻辑的硬件处理设备。可选地,处理器可以为中央处理器(Central Processing Unit,CPU)、图形处理器(GraphicsProcessing Unit,GPU)或微控制单元(Microcontroller Unit,MCU);也可以为现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程阵列逻辑器件(ProgrammableArray Logic,PAL)、通用阵列逻辑器件(General Array Logic,GAL)、复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)等可编程器件;或者为先进精简指令集(Reduced Instruction Set Compute,RISC)处理器(Advanced RISC Machines,ARM)或系统芯片(System on Chip,SoC)等等,但不限于此。
在本申请实施例中,通信组件被配置为便于其所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如无线保真(Wireless Fidelity,WiFi),2G或3G,4G,5G或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件还可基于近场通信(Near Field Communication,NFC)技术、射频识别(Radio Frequency Identification,RFID)技术、红外数据协会(Infrared DataAssociation,IrDA)技术、超宽带(Ultra Wide Band,UWB)技术、蓝牙(Bluetooth,BT)技术或其他技术来实现。
在本申请实施例中,显示组件可以包括液晶显示器(Liquid Crystal Display,LCD)和触摸面板(TouchPanel,TP)。如果显示组件包括触摸面板,显示组件可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。
在本申请实施例中,电源组件被配置为其所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
在本申请实施例中,音频组件可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(Microphone,MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。例如,对于具有语言交互功能的设备,可通过音频组件实现与用户的语音交互等。
需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU等)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (Random-Access Memory,RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机的存储介质为可读存储介质,也可称为可读介质。可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (Phase-Change Memory,PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (Dynamic Random Access Memory,DRAM)、其他类型的随机存取存储器(RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器 (CD-ROM)、数字多功能光盘 (Digital Video Disc,DVD) 或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上内容仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (18)

1.一种密文排序方法,包括:
获取待排序的第一密文序列;
将所述第一密文序列输入第一排序网络;
在所述第一排序网络中,以所述第一密文序列为操作数,并行执行对所述第一密文序列进行序列内排序所需的运算操作,以得到排序后的第二密文序列。
2.根据权利要求1所述的方法,所述第一密文序列为多个,所述第二密文序列为多个,所述方法还包括:
将多个第二密文序列并行输入第二排序网络;
在所述第二排序网络中,以第二密文序列为操作数,并行执行对多个第二密文序列进行序列间的并行排序所需的运算操作,以得到排序后的多个第三密文序列。
3.根据权利要求1所述的方法,所述第一排序网络为双调排序网络;所述在所述第一排序网络中,以所述第一密文序列为操作数,并行执行对所述第一密文序列进行序列内排序所需的运算操作,包括:
在所述双调排序网络中,利用单指令多数据流SIMD方式,以所述第一密文序列为操作数,并行执行多阶段的序列内的比较交换操作,以对所述第一密文序列进行序列内排序。
4.根据权利要求3所述的方法,所述利用单指令多数据流SIMD方式,以所述第一密文序列为操作数,并行执行进行多阶段的序列内的比较交换操作,包括:
针对所述多阶段中的第W1阶段,利用SIMD方式,按照所述第W1阶段的各轮次的比较步长,并行对所述第W1阶段的输入密文序列,执行所述第W1阶段对应的轮数的序列内的比较交换操作,以得到所述第W1阶段的输出密文序列;其中,第1阶段的输入密文序列为所述第一密文序列;其它阶段的输入密文序列为前一阶段的输出密文序列;
W1为整数,且1≤W1≤
Figure QLYQS_1
,P1表示所述第一密文序列中密文的数量,
Figure QLYQS_2
表示
Figure QLYQS_3
的向上取整,为所述多阶段的总阶段数。
5.根据权利要求4所述的方法,所述利用SIMD方式,按照所述第W1阶段的当前轮次的比较步长,并行对所述第W1阶段的输入密文序列,执行所述第W1阶段对应的轮数的比较交换操作,包括:
针对所述第W1阶段的第R1轮,利用SIMD方式将所述第R1轮的输入密文序列正向旋转所述第R1轮的比较步长k1,以得到第一旋转序列;其中,所述第W1阶段的第1轮的输入密文序列为第(W1-1)阶段的输出密文序列;第W1阶段其它轮的输入为前一轮的输出密文序列;R1为整数,且1≤R1≤W1,k=
Figure QLYQS_4
利用SIMD方式,确定所述第R1轮的输入密文序列和所述第一旋转序列的第一比较结果序列;
根据所述第一密文序列的排列顺序需求、所述比较步长k1和阶段W1,生成第一明文序列;
根据所述比较步长k1,生成第一掩码明文序列;
利用所述SIMD方式,以所述第一比较结果序列、所述第一明文序列及所述第一掩码明文序列为操作数,并行执行运算操作,以得到所述第W1阶段第R1轮的输出密文序列。
6.根据权利要求5所述的方法,所述利用所述SIMD方式,以所述第一比较结果序列、所述第一明文序列及所述第一掩码明文序列为操作数,并行执行逻辑运算操作,包括利用SIMD方式执行以下运算操作:
以所述第一比较结果序列、所述第一明文序列及所述第一掩码明文序列为操作数,并行对相同位置的元素进行运算操作,以得到第一目标密文序列和第二目标密文序列;
将所述第二目标密文序列逆向旋转所述第R1轮的比较步长k1,以得到第三目标密文序列;
对所述第一目标密文序列和所述第三密文序列中相同位置的元素进行加和操作,以得到所述第W1阶段第R1轮的输出密文序列。
7.根据权利要求6所述的方法,所述利用SIMD方式,确定所述第R1轮的输入密文序列和所述第一旋转序列的第一比较结果序列,包括:
利用SIMD方式,并行对所述第R1轮的输入密文序列和所述第一旋转序列中相同位置的元素进行比较操作,以得到所述第一比较结果序列;
或者,利用SIMD方式,利用字典序方法确定所述第R1轮的输入密文序列和所述第一旋转序列的第一比较结果序列;
所述以所述第一比较结果序列、所述第一明文序列及所述第一掩码明文序列为操作数,并行对相同位置的元素进行运算操作,包括利用SIMD方式执行以下逻辑运算操作:
对所述第一比较结果序列和所述第一明文序列中相同位置的元素进行异或操作,以得到第四密文序列;
对所述第四密文序列和所述第一掩码明文序列中相同位置的元素进行乘操作或与操作,以得到第五密文序列;
对所述第一掩码明文序列和所述第五密文序列中相同位置的元素进行减操作,以得到第六密文序列;
计算所述第R1轮的输入密文序列和所述第五密文序列的乘积,与所述第一旋转序列与所述第六密文序列的乘积之和,得到第一目标密文序列;
计算所述第R1轮的输入密文序列和所述第六密文序列的乘积,与所述第一旋转序列与所述第五密文序列的乘积之和,得到第二目标密文序列。
8.根据权利要求6所述的方法,所述利用SIMD方式,确定所述第R1轮的输入密文序列和所述第一旋转序列的第一比较结果序列,包括:
利用SIMD方式,并行对所述第R1轮的输入密文序列和所述第一旋转序列,进行按位求最大最小值操作,以得到所述第一最大值序列和所述第一最小值序列,作为所述第一比较结果序列;
所述利用所述SIMD方式,以所述第一比较结果序列、所述第一明文序列及所述第一掩码明文序列为操作数,并行执行按位逻辑运算操作,包括利用SIMD方式执行以下逻辑运算操作:
对所述第一最小值序列和所述第一掩码明文序列进行按位乘操作,以得到第七密文序列;
对所述第一最大值序列和所述第一掩码明文序列进行按位乘操作,以得到第八密文序列;
计算所述第七密文序列与所述第一明文序列的逻辑取反结果的乘积,与所述第八密文序列与所述第一明文序列的乘积之和,得到第一目标密文序列;
计算所述第七密文序列与所述第一明文序列的乘积,与所述第八密文序列与所述第一明文序列的逻辑取反结果的乘积之和,得到第二目标密文序列。
9.根据权利要求7所述的方法,所述第一密文序列包括:多个属性的多个密文子序列;所述第R1轮的输入密文序列包括:所述第R1轮的多个输入密文子序列;所述第一旋转序列包括:所述第R1轮的多个输入密文子序列对应的多个旋转子序列;
所述利用SIMD方式,利用字典序方法确定所述第R1轮的输入密文序列和所述第一旋转序列的第一比较结果序列,包括利用SIMD方式执行以下逻辑运算操作:
对所述第R1轮的同一属性的输入密文子序列和旋转子序列中相同位置的元素进行等值计算,以得到同一属性对应的等值结果子序列;
对所述第R1轮的同一属性的密文子序列和旋转子序列中相同位置的元素进行比较操作,以得到同一属性对应的比较结果子序列;
根据所述多个属性分别对应的等值结果子序列及所述多个属性分别对应的比较结果子序列,进行乘或与操作,以得到所述多个属性分别对应的目标密文子序列;
对所述多个属性分别对应的目标密文子序列中相同位置的元素进行累加或逻辑或操作,以得到所述第一比较结果序列。
10.根据权利要求9所述的方法,所述根据所述多个属性分别对应的等值结果子序列及所述多个属性分别对应的比较结果子序列,进行乘或与操作,包括:
针对前(J-1)个属性中的第j个属性,对所述第j个属性的比较结果子序列、所述第j个属性的等值结果子序列的取非结果及前(j-1)个属性的等值结果子序列中相同位置的元素,进行乘或按位与操作,以得到所述第j个属性的目标密文子序列;
针对第J个属性,对所述第J个属性的比较结果子序列及前(J-1)个属性的等值结果子序列中相同位置的元素进行按位乘或按位与操作,以得到所述第J个属性的目标密文子序列;
其中,J表示所述第一密文序列包含的属性的总数量;j=1,2,…,(J-1)。
11.根据权利要求2所述的方法,所述第二排序网络为双调排序网络;所述多个第二密文序列中奇数位的第二密文序列与偶数位的密文序列的序列内排列顺序相反;
所述以第二密文序列为操作数,并行执行对多个第二密文序列进行序列间的并行排序所需的逻辑运算,以得到排序后的多个第三密文序列,包括:
在双调排序网络中,利用SIMD方式,以所述第二密文序列为操作数,并行执行多阶段的序列间的插入排序操作,以对所述多个第二密文序列进行序列间排序。
12.根据权利要求11所述的方法,所述利用SIMD方式,以所述第二密文序列为操作数,并行执行多阶段的插入排序操作,包括:
针对第W2阶段,利用SIMD方式按照所述第W2阶段的各轮次的比较步长,并行对所述第W2阶段的多个输入密文序列,执行所述第W2阶段对应的轮数的序列间的最大值或最小值操作,以得到所述第W2阶段的多个中间输出密文序列;其中,第1阶段的输入密文序列为所述多个第二密文序列;其它阶段的多个输入密文序列为前一阶段的多个输出密文序列;
利用SIMD方式对所述多个中间输出密文序列,分别进行双调归并操作,以得到所述第W2阶段的多个输出密文序列;
其中,W2为整数,且1≤W2≤
Figure QLYQS_5
, P2表示第二密文序列的数量,
Figure QLYQS_6
表示
Figure QLYQS_7
的向上取整;所述第W2阶段的多个输入密文序列对应的序列间的最大值或最小值操作由所述多个第一密文序列的整体排列顺序需求决定。
13.根据权利要求12所述的方法,所述按照所述第W2阶段的各轮次的比较步长,并行对所述第W2阶段的多个输入密文序列,执行所述第W2阶段对应的轮数的序列间的最大值或最小值操作,包括:
针对所述第W2阶段的第R2轮,利用SIMD方式按照所述第R2轮的比较步长k2,并行对所述第R2轮的多个输入密文序列进行序列间的最大值或最小值操作,以得到所述第W2阶段的第R2轮的多个中间输出密文序列;
其中,所述第W2阶段的第1轮的多个输入密文序列为第(W-1)阶段的多个输出密文序列;第W2阶段其它轮的输入为所述第W2阶段的前一轮的输出密文序列;R2为整数,且1≤R2≤W2,k=
Figure QLYQS_8
14.根据权利要求13所述的方法,所述利用SIMD按照所述第R2轮的比较步长k2,并行对所述第R2轮的多个输入密文序列进行序列间的最大值或最小值操作,以得到所述第W2阶段的第R2轮的多个输出密文序列,包括:
针对所述第R2轮进行序列间的最大值或最小值操作的第一输入密文序列和第二输入密文序列,利用SIMD方式确定所述第一输入密文序列和所述第二输入密文序列的第二比较结果序列;
根据所述第一输入密文序列和所述第二输入密文序列对应的最大值或最小值操作,确定第二明文序列;
利用所述SIMD方式,以所述第二比较结果序列和所述第二明文序列为操作数,并行执行按位逻辑运算操作,以得到所述第一输入密文序列对应的输出密文序列和所述第二输入密文序列对应的输出密文序列;
其中,所述第W2阶段的第R2轮的多个输入密文序列各自对应的输出密文序列,为所述第W2阶段的第R2轮的多个中间输出密文序列。
15.根据权利要求14所述的方法,所述利用所述SIMD方式,以所述第二比较结果序列和所述第二明文序列为操作数,并行执行按位逻辑运算操作,包括利用SIMD方式执行以下逻辑运算操作:
对所述第二比较结果序列和所述第二明文序列进行按位异或操作,以得到第九密文序列;
确定所述第九密文序列的取反结果序列;
计算所述第一输入密文序列和所述第九密文序列的乘积,与所述第二输入密文序列B与所述取反结果序列的乘积之和,得到所述第一输入密文序列对应的输出密文序列;
计算所述第一输入密文序列和所述取反结果序列的乘积,与所述第二输入密文序列与所述第九密文序列的乘积之和,得到所述第二输入密文序列对应的输出密文序列。
16.根据权利要求2及11-15任一项所述的方法,还包括:
获取目标对象的第十密文序列;所述第一密文序列和所述第十密文序列为所述目标对象的不同属性的密文序列;
根据所述第一密文序列的序列内排序结果和/或序列间排序结果,对所述第十密文序列进行序列内排序和/或序列间排序。
17.一种计算设备,包括:存储器和处理器;其中,所述存储器,用于存储计算机程序;
所述处理器耦合至所述存储器,用于执行所述计算机程序以用于执行权利要求1-16任一项所述方法中的步骤。
18.一种存储有计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行权利要求1-16任一项所述方法中的步骤。
CN202310223469.0A 2023-03-06 2023-03-06 密文排序方法、设备及存储介质 Active CN115952526B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310223469.0A CN115952526B (zh) 2023-03-06 2023-03-06 密文排序方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310223469.0A CN115952526B (zh) 2023-03-06 2023-03-06 密文排序方法、设备及存储介质

Publications (2)

Publication Number Publication Date
CN115952526A true CN115952526A (zh) 2023-04-11
CN115952526B CN115952526B (zh) 2023-05-26

Family

ID=85891184

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310223469.0A Active CN115952526B (zh) 2023-03-06 2023-03-06 密文排序方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115952526B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116975935A (zh) * 2023-09-22 2023-10-31 北京天润基业科技发展股份有限公司 数据比较方法、存储介质及电子设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108228849A (zh) * 2018-01-10 2018-06-29 浙江理工大学 云网络中基于类别分组索引的密文排序搜索方法
CN111177739A (zh) * 2019-10-28 2020-05-19 腾讯云计算(北京)有限责任公司 一种数据处理方法、信息交互系统及计算机存储介质
US20210376998A1 (en) * 2020-05-29 2021-12-02 Seoul National University R&Db Foundation Electronic device for sorting homomorphic ciphertext using shell sorting and operating method thereof
CN114168977A (zh) * 2021-11-07 2022-03-11 西安电子科技大学 一种基于密文的数值安全排序方法及系统
CN114640448A (zh) * 2022-03-25 2022-06-17 重庆邮电大学 一种基于量子随机行走的量子隐私排序方法
CN114840568A (zh) * 2022-07-04 2022-08-02 华控清交信息科技(北京)有限公司 一种密文排序方法、装置和用于密文排序的装置
US20220255722A1 (en) * 2019-06-05 2022-08-11 Crypto Lab Inc. Practical sorting on large-scale encrypted data
CN115085912A (zh) * 2022-05-24 2022-09-20 华控清交信息科技(北京)有限公司 一种密文计算方法、装置和用于密文计算的装置
RU2787941C1 (ru) * 2022-05-04 2023-01-13 федеральное государственное казенное военное образовательное учреждение высшего образования "Краснодарское высшее военное орденов Жукова и Октябрьской Революции Краснознаменное училище имени генерала армии С.М. Штеменко" Министерства обороны Российской Федерации Способ и устройство обеспечения помехоустойчивости обработки данных на основе криптокодовых конструкций в комплексной плоскости
CN115630711A (zh) * 2022-12-19 2023-01-20 华控清交信息科技(北京)有限公司 一种训练XGBoost模型的方法和多方安全计算平台

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108228849A (zh) * 2018-01-10 2018-06-29 浙江理工大学 云网络中基于类别分组索引的密文排序搜索方法
US20220255722A1 (en) * 2019-06-05 2022-08-11 Crypto Lab Inc. Practical sorting on large-scale encrypted data
CN111177739A (zh) * 2019-10-28 2020-05-19 腾讯云计算(北京)有限责任公司 一种数据处理方法、信息交互系统及计算机存储介质
US20210376998A1 (en) * 2020-05-29 2021-12-02 Seoul National University R&Db Foundation Electronic device for sorting homomorphic ciphertext using shell sorting and operating method thereof
CN114168977A (zh) * 2021-11-07 2022-03-11 西安电子科技大学 一种基于密文的数值安全排序方法及系统
CN114640448A (zh) * 2022-03-25 2022-06-17 重庆邮电大学 一种基于量子随机行走的量子隐私排序方法
RU2787941C1 (ru) * 2022-05-04 2023-01-13 федеральное государственное казенное военное образовательное учреждение высшего образования "Краснодарское высшее военное орденов Жукова и Октябрьской Революции Краснознаменное училище имени генерала армии С.М. Штеменко" Министерства обороны Российской Федерации Способ и устройство обеспечения помехоустойчивости обработки данных на основе криптокодовых конструкций в комплексной плоскости
CN115085912A (zh) * 2022-05-24 2022-09-20 华控清交信息科技(北京)有限公司 一种密文计算方法、装置和用于密文计算的装置
CN114840568A (zh) * 2022-07-04 2022-08-02 华控清交信息科技(北京)有限公司 一种密文排序方法、装置和用于密文排序的装置
CN115630711A (zh) * 2022-12-19 2023-01-20 华控清交信息科技(北京)有限公司 一种训练XGBoost模型的方法和多方安全计算平台

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李宇溪;周福才;徐剑;徐紫枫;: "双服务器模型下支持相关度排序的多关键字密文搜索方案", 计算机研究与发展 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116975935A (zh) * 2023-09-22 2023-10-31 北京天润基业科技发展股份有限公司 数据比较方法、存储介质及电子设备
CN116975935B (zh) * 2023-09-22 2023-12-26 北京天润基业科技发展股份有限公司 数据比较方法、存储介质及电子设备

Also Published As

Publication number Publication date
CN115952526B (zh) 2023-05-26

Similar Documents

Publication Publication Date Title
CN107196926B (zh) 一种云外包隐私集合比较方法与装置
CN107276744B (zh) 一种文件存储加密方法及系统
CN110058843B (zh) 伪随机数的生成方法、装置和服务器
CN112200713A (zh) 一种联邦学习中的业务数据处理方法、装置以及设备
CN109714368B (zh) 报文加解密方法、装置、电子设备及计算机可读存储介质
CN115952526A (zh) 密文排序方法、设备及存储介质
CN115694777A (zh) 基于同态加密的隐私集合求交方法、装置、设备及介质
CN114095149B (zh) 信息加密方法、装置、设备及存储介质
US10476661B2 (en) Polynomial-based homomorphic encryption
CN109144472B (zh) 一种二元扩域椭圆曲线的标量乘法及其实现电路
CN115118411B (zh) 链下多方可信计算方法、装置、设备及存储介质
CN115952517A (zh) 一种杂凑值计算方法及系统
CN114553407A (zh) 基于秘密分享的数据处理方法及设备
CN110493003B (zh) 一种基于四基二进制底层模运算的快速加密系统
CN113505383A (zh) 一种ecdsa算法执行系统及方法
CN110071927B (zh) 一种信息加密方法、系统及相关组件
KR101562323B1 (ko) 공개키 암호를 위한 다중 제곱 연산 장치 및 방법
Seo et al. Portable and Efficient Implementation of CRYSTALS-Kyber Based on WebAssembly.
An et al. Efficient and privacy-preserving outsourcing of 2D-DCT and 2D-IDCT
CN112395624B (zh) 一种数据处理方法、装置和电子设备
CN115632782B (zh) 基于sm4计数器模式的随机数生成方法、系统及设备
CN101739233B (zh) 半循序输入的伽罗瓦乘法器与其执行方法
CN111052206B (zh) 秘密计算装置、秘密计算方法以及记录介质
CN117155572A (zh) 一种基于gpu并行实现密码技术中大整数乘法的方法
Aly et al. Progress in Cryptology–LATINCRYPT 2023: 8th International Conference on Cryptology and Information Security in Latin America, LATINCRYPT 2023, Quito, Ecuador, October 3–6, 2023, Proceedings

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