一种基于GPU的Paillier同态加解密计算方法及系统
一种基于gpu的paillier同态加解密计算方法及系统
技术领域
1.本发明属于信息安全技术领域,具体涉及一种基于gpu的paillier同态加解密计算方法及系统。
背景技术:
2.目前,随着外包计算模式的普及,数据存储和计算服务的外包已经成为了必然趋势。然而,外包计算在提供经济、可靠的共享计算服务的同时,也对数据外包过程中的安全性提出了新的挑战,保证外包计算过程中数据的机密性和完整性成为了云计算亟待解决的问题。
3.同态加密密码体系作为一种特殊的加密体制,其最大的优势在于能够在不泄露敏感信息的前提下,完成对密文的处理任务。但现有同态加密方案运算较为复杂且密文膨胀较大,目前计算效率仍然较低,在云环境下大量的同态运算将对客户端和服务器端造成极大的计算压力。paillier同态加密算法是一种支持加法同态属性的公钥密码系统,由于其相对高效、安全性证明完备的特点,在隐私保护方案设计中已经被广泛使用。但目前,随着设备计算能力的不断提高,paillier加密算法需要不断提高密钥长度来满足安全性的需要,造成其加解密效率显著的降低。
4.近年来,随着半导体产业的逐渐成熟以及多种硬件运算平台的完善,各种硬件设备的计算能力得到了飞速的发展,基于硬件系统架构处理计算密集型任务,非常适合于密码算法高效实现。但paillier同态加密算法具有算法结构逻辑复杂、运算结果和中间结果内存占用较大等特点,所依赖的经典优化算法无法直接适配各类硬件平台特性,将导致加解密运算及同态操作效率较差等问题。
5.目前,针对上述问题,已存在一些解决方法,但是现有解决方法存在的其中一个问题是:主要侧重于中央处理器(central processing unit,cpu)平台的低时延实现,对于图形处理器(graphic processing unit,gpu)平台的高效实现研究不够充分,难以发挥gpu平台计算能力。
技术实现要素:
6.为了解决相关技术中存在的上述问题,本发明提供了一种基于gpu的paillier同态加解密计算方法及系统。本发明要解决的技术问题通过以下技术方案实现:
7.本发明提供一种基于gpu的paillier同态加解密计算方法,应用于gpu设备端,包括:
8.根据cpu设备端发送的密码参数、滑动窗口参数和第一部分预计算表,通过所述gpu设备端的多个第一gpu线程并行生成第二部分预计算表,并根据所述第二部分预计算表和所述第一部分预计算表,得到全局预计算表;
9.根据所述全局预计算表、所述cpu设备端发送的待加密消息和同态加密参数,通过所述gpu设备端的多个第二gpu线程并行生成第一密文消息,并将所述第一密文消息发送至
所述cpu设备端;
10.根据所述cpu设备端发送的待解密消息和解密参数,通过所述gpu设备端的多个第三gpu线程并行生成明文消息,并将所述明文消息发送至所述cpu设备端;
11.根据所述cpu设备端发送的第二密文消息和第三密文消息,通过所述gpu设备端的多个第四gpu线程并行进行同态加法运算,生成第四密文消息,将所述第四密文消息发送至所述cpu设备端。
12.本发明还提供一种基于gpu的paillier同态加解密计算方法,应用于cpu设备端,包括:
13.获取安全参数、随机值、滑动窗口参数;
14.基于所述安全参数和所述随机值,生成密码参数;
15.基于所述滑动窗口参数,计算第一部分预计算表;
16.将所述密码参数、所述滑动窗口参数和所述第一部分预计算表,发送至gpu设备端;
17.获取待加密消息,并生成与所述待加密消息对应的同态加密参数;
18.将所述待加密消息和所述同态加密参数,发送至所述gpu设备端;
19.获取待解密消息和解密参数;
20.将所述待解密消息和所述解密参数,发送至所述gpu设备端;
21.获取第二密文消息和第三密文消息;
22.将所述第二密文消息和所述第三密文消息,发送至所述gpu设备端。
23.本发明还提供一种基于gpu的paillier同态加解密计算系统,包括:
24.同态操作运算模块和算术运算模块;所述算术运算模块用于被所述同态操作运算模块调用;
25.所述同态操作运算模块包括:
26.系统初始化与预计算模块,用于由cpu设备端获取安全参数、随机值、滑动窗口参数,基于所述安全参数和所述随机值,生成密码参数,基于所述滑动窗口参数,计算第一部分预计算表,将所述密码参数、所述滑动窗口参数和所述第一部分预计算表,发送至gpu设备端;由gpu设备端根据所述密码参数、所述滑动窗口参数和所述第一部分预计算表,通过所述gpu设备端的多个第一gpu线程并行生成第二部分预计算表,并根据所述第二部分预计算表和所述第一部分预计算表,得到全局预计算表;
27.加密计算模块,用于由所述cpu设备端获取待加密消息,并生成与所述待加密消息对应的同态加密参数,将所述待加密消息和所述同态加密参数,发送至所述gpu设备端;由所述gpu设备端根据所述全局预计算表、所述待加密消息和所述同态加密参数,通过所述gpu设备端的多个第二gpu线程并行生成第一密文消息,并将所述第一密文消息发送至所述cpu设备端;
28.解密计算模块,用于由所述cpu设备端获取待解密消息和解密参数,将所述待解密消息和所述解密参数,发送至所述gpu设备端;由所述gpu设备端根据所述待解密消息和所述解密参数,通过所述gpu设备端的多个第三gpu线程并行生成明文消息,并将所述明文消息发送至所述cpu设备端;
29.同态加法计算模块,用于由所述cpu设备端获取第二密文消息和第三密文消息,将
所述第二密文消息和所述第三密文消息,发送至所述gpu设备端;由所述gpu设备端根据所述第二密文消息和所述第三密文消息,通过所述gpu设备端的多个第四gpu线程并行进行同态加法运算,生成第四密文消息,将所述第四密文消息发送至所述cpu设备端;
30.所述算术运算模块包括:
31.基于滑动窗口法的非固定基底模幂运算模块,用于在通过所述多个第三gpu线程并行生成明文消息时,通过进行预计算窗口计算,生成局部预计算表,并通过调用基于蒙哥马利算法和karatsuba算法的模乘计算模块,执行基于蒙哥马利算法和karatsuba算法的模乘计算方法,通过查询所述局部预计算表进行非固定基底模幂运算;
32.基于barrett算法的模运算模块,用于在通过所述多个第三gpu线程并行生成明文消息时,进行取模处理;
33.基于预计算表的固定基底模幂运算模块,用于在通过所述多个第一gpu线程生成第二部分预计算表时,通过调用基于蒙哥马利算法和karatsuba算法的模乘计算模块,执行基于蒙哥马利算法和karatsuba算法的模乘计算方法;以及,在通过所述多个第二gpu线程并行生成第一密文消息时,通过查询所述全局预计算表进行固定基底模幂运算;
34.所述基于蒙哥马利算法和karatsuba算法的模乘计算模块,用于基于蒙哥马利算法进行模乘运算和模平方运算,以及基于karatsuba算法进行模乘运算和模平方运算中的多精度乘法运算;
35.基于gpu硬件的汇编指令的基础运算模块,用于执行加法运算、减法运算、乘法运算和移位运算。
36.本发明具有如下有益技术效果:
37.gpu设备端根据cpu设备端发送的密码参数、滑动窗口参数和第一部分预计算表,通过自身的多个gpu线程并行生成第二部分预计算表,并根据第二部分预计算表和第一部分预计算表,得到全局预计算表;根据全局预计算表、cpu设备端发送的待加密消息和同态加密参数,通过自身的多个gpu线程并行生成第一密文消息,并将第一密文消息发送至cpu设备端;根据cpu设备端发送的待解密消息和解密参数,通过自身的多个gpu线程并行生成明文消息,并将明文消息发送至cpu设备端;以及,根据cpu设备端发送的第二密文消息和第三密文消息,通过自身的多个gpu线程并行进行同态加法运算,生成第四密文消息,将第四密文消息发送至cpu设备端。这样,将全局预计算表的计算、加解密等同态操作转移至gpu进行并行计算,一方面,在gpu端生成全局预计算表,可以提高后续进行加密计算时的吞吐量;另一方面,gpu的计算能力强,因而可以允许采用更长的密码进行加密计算,从而提高了加密后的数据的安全性;再一方面,通过并行的同态操作运算,可以提高同态操作的计算效率。也就是说,由于gpu相比cpu而言拥有更多的计算单元,对于计算密集型的数据能够高效并行处理,本发明考虑gpu众核硬件架构特性,将全局预计算表的计算、加解密等同态操作转移至gpu,并对全局预计算表的计算、加解密等同态操作进行分解,进行细粒度并发的同态操作运算,不仅提高了计算时的吞吐量,提高了加密后的数据的安全性,更极大地提高了paillier加密、解密等同态操作运算的效率,能够为隐私保护场景下的同态加密外包计算服务提供高效的同态加密、解密等计算服务。
38.以下将结合附图及实施例对本发明做进一步详细说明。
附图说明
39.图1为本发明实施例提供的应用在gpu设备端的基于gpu的paillier同态加解密计算方法的一个可选的流程图;
40.图2为本发明实施例提供的应用在cpu设备端的基于gpu的paillier同态加解密计算方法的另一个可选的流程图;
41.图3为本发明实施例提供的示例性的基于gpu的paillier同态加解密计算系统的一个结构示意图。
具体实施方式
42.下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
43.在本发明的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
44.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。此外,本领域的技术人员可以将本说明书中描述的不同实施例或示例进行接合和组合。
45.尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
46.目前,针对paillier同态加密算法具有算法结构逻辑复杂、运算结果和中间结果内存占用较大等特点,所依赖的经典优化算法无法直接适配各类硬件平台特性,将导致加解密运算及同态操作效率较差等问题,已存在相关的解决方案,但是这些方案存在以下问题及缺陷是:
47.1、主要侧重于cpu平台的低时延实现,对于gpu平台的高效实现研究不够充分,而部分优化算法无法适应gpu的平台特性,难以发挥gpu平台计算能力。
48.2、对密码算法所依赖的算术运算模块在gpu平台的高效实现研究不够充分,如模运算、模乘运算、模幂运算都拥有较为复杂的算法结构,直接在gpu平台实现将造成严重的线程束分化现象,导致计算开销较高。
49.图1是本发明实施例提供的基于gpu的paillier同态加解密计算方法的一个可选的流程图,如图1所示,所述方法包括以下步骤:
50.s101、根据cpu设备端发送的密码参数、滑动窗口参数和第一部分预计算表,通过
gpu设备端的多个第一gpu线程并行生成第二部分预计算表,并根据第二部分预计算表和第一部分预计算表,得到全局预计算表。
51.本发明实施例中,cpu设备端可以通过获取安全参数、随机值、滑动窗口参数;基于安全参数和随机值,生成密码参数;基于滑动窗口参数,计算第一部分预计算表;并将密码参数、滑动窗口参数和第一部分预计算表,通过pcie总线传输至gpu设备端。
52.在一些实施例中,每个第一gpu线程通过基于预计算表的固定基底模幂运算方法,计算第二部分预计算表。
53.这里,安全参数为λ、随机值为p和q;滑动窗口参数包括全局滑动窗口值ω1和主机端滑动窗口值ω2。
54.在一些实施例中,全局预计算表包括多行预计算值;第一部分预计算表为多行预计算值中的第一部分预计算值;第二部分预计算表为多行预计算值中的第二部分预计算值;gpu设备端根据第一部分预计算值,确定第二部分预计算值为待计算的值;根据滑动窗口参数,确定出循环计算总次数,以及每次循环计算对应的多个第一gpu线程;在每次循环计算时,通过多个第一gpu线程,计算出多个预计算值;将循环计算总次数对应的预计算值,作为第二部分预计算值。
55.示例性的,cpu设备端生成密码参数、滑动窗口参数和第一部分预计算表,并将密码参数、滑动窗口参数和第一部分预计算表发送至gpu端,gpu端根据密码参数、滑动窗口参数和第一部分预计算表,通过自身的多个第一gpu线程并行生成第二部分预计算表,并根据第二部分预计算表和第一部分预计算表,得到全局预计算表的过程如下:
56.a)cpu端根据用户输入指令选择系统安全参数λ,并随机生成两个λ/2比特的素数p和q,计算n=p
×
q,μ=lcm(p-1,q-1),lcm(.)表示最小公倍数;随后,cpu端选择α,其中,α<λ且|α|=ω(|n|
ζ
),ζ>0,同时生成一个生成元g∈b
α
,其中,b
α
为中所有阶为nα元素的集合,最后,cpu端计算h=l(g
α
modn2)-1
,其中,g
α
modn2表示采用g
α
对n2取模,
57.b)cpu端根据用户输入的指令,选择全局滑动窗口值ω1和主机端滑动窗口值ω2,并在cpu端计算预计算表其中,g表示基于预计算表的固定基底模幂运算方法中的固定基底。
58.c)cpu端将生成的密码参数n、g、α、h及主机端预计算表p
x
传输到gpu端。
59.d)gpu端接收cpu端发送的n、g、α、h及主机端预计算表p
x
,并保存在gpu设备内存中。
60.e)gpu端启动个gpu流并行计算剩余的预计算表,其中,每个gpu线程计算剩余的预计算表中一行的预计算值。在每个gpu流中,执行ω
1-ω
2-1次循环,每次循环启动个gpu线程并行计算出个预计算值,其中,循环计算时i从l-1依次下降到0,且每次循环计算时先计算出再将得到的c值代入中,计算得到一个预计算值;如此,计算得到剩余的预计算表,并根据p
x
和剩余的预计算表,得到全
局预计算表。
61.在一些实施例中,在通过多个第一gpu线程生成第二部分预计算表时,每个第一gpu线程通过基于预计算表的固定基底模幂运算方法,计算第二部分预计算表。
62.这里,基于预计算表的固定基底模幂运算方法,用于执行基于蒙哥马利算法和karatsuba算法的模乘运算方法,以及,还用于通过查询初始化阶段生成的预计算表进行固定基底模幂运算。
63.karatsuba算法是一种快速乘法算法,主要应用于两个大数的相乘,原理是将大数分成两段后变成较小的数位,然后做3次乘法,并附带少量的加法操作和移位操作。
64.示例性的,cpu设备端计算第一部分预计算表,以及多个第一gpu线程基于预计算表的固定基底模幂运算方法,计算第二部分预计算表的过程如下:
65.(1)cpu端计算预计算表其中,其中,
66.(2)gpu设备端执行ω
1-ω
2-1次循环,其中每次循环启动个线程并行计算个预计算值,其中,每个线程每次计算2个预计算值;在每次循环中对于每一个线程z,先计算再根据计算此处的p表预计算表中的值。
67.s102、根据全局预计算表、cpu设备端发送的待加密消息和同态加密参数,通过gpu设备端的多个第二gpu线程并行生成第一密文消息,并将第一密文消息发送至cpu设备端。
68.本发明实施例中,cpu设备端可以获取待加密消息,并生成与待加密消息对应的同态加密参数;并将待加密消息和同态加密参数,发送至gpu设备端。
69.在一些实施例中,每个第二gpu线程通过基于预计算表的固定基底模幂运算方法、基于蒙哥马利算法和karatsuba算法的模乘运算方法和基于gpu硬件的汇编指令的基础运算方法,进行加密计算。
70.这里,待加密消息可以是待加密的明文消息序列,同态加密参数可以是随机值序列。cpu设备端可以通过接收用户输入的明文消息序列的方式获取待加密消息。
71.在一些实施例中,gpu设备端根据全局预计算表、待加密消息或同态加密参数,确定出并行的多个第一加密计算任务;将多个第一加密计算任务分配至多个第二gpu线程;通过每个第二gpu线程执行对应的第一加密计算任务,得到对应的第一加密计算数据;根据与多个第二gpu线程对应的多个第一加密计算数据,确定出多个第二加密计算任务,并将每个第二加密计算任务分配至一个第二gpu线程;通过每个第二gpu线程执行对应的第二加密计算任务,得到多个第二加密计算数据,根据多个第二加密计算数据,得到第一密文消息。
72.例如,gpu设备端会将待加密明文序列m和随机数序列r进行拆分,得到多组拆分数据,每组拆分数据包括明文数据和随机值,并将这多组拆分数据分配至多个gpu线程进行执行,以使得多个gpu线程执行对应的计算,得到多个第一加密计算数据。
73.示例性的,m={m1,m2,...,mk},r={r1,r2,...,rk},则gpu设备端接收明文消息序列m和随机值序列r后,先启动2k个gpu线程分别计算第一加密计算数据,且第一加密计算数
据为:据为:之后,启动k个gpu线程计算第二加密计算数据:c1=c
11
×c12 mod n2,c2=c
21
×c22 mod n2,
…
,ck=c
k1
×ck2 mod n2;之后,得到密文消息序列c={c1,c2,...,ck}。
74.在一些实施例中,通过每个第二gpu线程,采用基于预计算表的固定基底模幂运算方法、基于蒙哥马利算法和karatsuba算法的模乘运算方法和基于gpu硬件的汇编指令的基础运算方法,执行对应的第一加密计算任务,计算得到对应的第一加密计算数据。
75.在一些实施例中,通过每个第二gpu线程,采用基于预计算表的固定基底模幂运算方法、基于蒙哥马利算法和karatsuba算法的模乘运算方法和基于gpu硬件的汇编指令的基础运算方法,执行对应的第二加密计算任务,计算得到对应的第二加密计算数据。
76.本发明实施例中,基于gpu硬件的汇编指令的基础运算方法,用于基于gpu硬件ptx指令优化加、减、乘法及移位运算过程中的比特进位传播过程,减少不必要的指令开销,用于快速计算大整数的加、减、乘法以及移位操作。
77.本发明实施例中,基于蒙哥马利算法和karatsuba算法的模乘运算方法,用于基于蒙哥马利算法进行模乘运算和模平方运算,以及基于karatsuba算法进行模乘运算和模平方运算中的多精度乘法运算。
78.本发明实施例中,基于gpu硬件的汇编指令的基础运算方法包括:基于gpu硬件的汇编指令的加法运算方法、减法运算方法、乘法运算方法和移位运算方法。
79.示例性的,基于蒙哥马利算法和karatsuba算法的模乘运算方法包括以下步骤:
80.(1)蒙哥马利乘法算法:
81.输入:a,b,n,r,n',其中a《n,b《n,r=2k,n《r,n'=-n-1
modr
82.输出:ω=a
×b×
r-1
(modn)
83.计算步骤:计算ω=a
×
b,m=ω
×
n,以及ω=(ω+m
×
n)/r;
84.如果ω<m,则计算ω=ω-n;
85.输出ω。
86.(2)基于蒙哥马利算法的模乘运算方法:
87.输入:a,b<n,n<2k,n'=-n-1
modr,r=2k;
88.输出:c=a
×
bmodn;
89.计算步骤依次如下:a'=montmult(a,r2modn);
90.b'=montmult(b,r2modn);
91.c'=montmult(a',b');
92.c=montmult(c',1);
93.输出c;
94.其中,上述(1)算法是算法(2)在运算过程中的montmult(.)函数。
95.示例性的,gpu设备端可以将待加密明文序列m和随机数序列r进行拆分,对拆分后得到的每一部分在预计算表中进行查,如此,能够将原有固定基底的模幂运算拆分为一系列乘法运算,之后,这些乘法运算被分配到多个gpu计算单元执行,每个gpu计算单元通过执行一个gpu线程将调用基于蒙哥马利算法和karatsuba算法的模乘计算方法和基于gpu硬
件的汇编指令的基础运算方法中的乘法运算方法进行乘法运算。
96.需要说明的是,本发明中,不同的算法,以及不同的方法中,相同的字母表示的含义不同,每个算法或方法内的字母仅用于表示自身所在的方法或算法内的一个数值。
97.s103、根据cpu设备端发送的待解密消息和解密参数,通过gpu设备端的多个第三gpu线程并行生成明文消息,并将明文消息发送至cpu设备端。
98.本发明实施例中,cpu设备端可以获取待解密消息和解密参数,并将待解密消息和解密参数,发送至gpu设备端。cpu设备端可以通过接收用户输入的待解密消息和解密参数的方式,分别获取待解密消息和解密参数。
99.在一些实施例中,每个第三gpu线程通过基于barrett算法的模运算方法、基于滑动窗口算法的非固定基底模幂运算方法、基于蒙哥马利算法和karatsuba算法的模乘计算方法和基于gpu硬件的汇编指令的基础运算方法,进行解密计算。
100.在一些实施例中,gpu设备端可以根据待解密消息和解密参数,确定出并行的多个第一解密计算任务;将多个第一解密计算任务分配至多个第三gpu线程;通过每个第三gpu线程执行对应的第一解密计算任务,得到对应的第一解密计算数据;根据与多个第三gpu线程对应的多个第一解密计算数据,确定出多个第二解密计算任务,并将每个第二解密计算任务分配至一个第三gpu线程;通过每个第三gpu线程执行对应的第二解密计算任务,得到多个第二解密计算数据,根据多个第二解密计算数据,得到明文消息。
101.这里,可以采用中国剩余定理对解密运算过程进行拆分,从而得到并行的多个第一解密计算任务。
102.示例性的,gpu设备端可以将待解密序列c和解密密钥a进行拆分,得到多组拆分数据,每组拆分数据包括密文数据和密钥值,并将这多组拆分数据分配至多个gpu线程进行执行,以使得多个gpu线程执行对应的计算,得到多个第一解密计算数据。
103.示例性的,待解密消息可以为密文序列c={c1,c2,...,ck},解密参数为解密密钥α;gpu设备端可以启动2k个gpu线程分别计算第一解密计算数据,其中,第一解密计算数据为:m
p1
=l
p
(c
α
modp2)(modp),m
p2
=l
p
(c
α
modp2)(modp),m
pk
=l
p
(c
α
modp2)(modp),m
qk
=lq(c
α
modq2)(modq);之后,启动k个gpu线程计算第二解密计算数据:m1=crt(m
p1
,m
q1
)
·
h(modn),m2=crt(m
p2
,m
q2
)
·
h(modn),
…
,mk=crt(m
p2
,m
q2
)
·
h(modn);之后,得到明文消息序列m={m1,m2,...,mk},crt(.)表示根据中国剩余定理确定的解密函数。
104.在一些实施例中,通过每个第三gpu线程,采用基于barrett算法的模运算方法、基于滑动窗口算法的非固定基底模幂运算方法、基于蒙哥马利算法和karatsuba算法的模乘计算方法和基于gpu硬件的汇编指令的基础运算方法,执行对应的第一解密计算任务,得到对应的第一解密计算数据。
105.在一些实施例中,通过每个第三gpu线程,采用基于barrett算法的模运算方法、基于滑动窗口算法的非固定基底模幂运算方法、基于蒙哥马利算法和karatsuba算法的模乘计算方法和基于gpu硬件的汇编指令的基础运算方法,执行对应的第二解密计算任务,得到对应的第二解密计算数据。
106.这里,通过每个线程进行解密运算时,首先需要采用基于barrett算法的模运算方
法进行模运算、然后采用基于滑动窗口算法的非固定基底模幂运算方法进行模幂运算、继而需要采用基于蒙哥马利算法和karatsuba算法优化的模乘计算方法进行模乘运算,以及采用基于gpu硬件的汇编指令的基础运算方法进行加法运算。
107.这里,基于barrett算法的模运算方法用于利用预计算过程简化模运算,利用移位运算代替大整数除法运算。barrett算法又称barrett reduction算法,是利用移位代替除法。
108.示例性的,基于barrett算法的模运算方法包括:
109.(1)预计算步骤
110.对于模n的模运算,预计算参数其中k=logbn+1。
111.(2)模运算步骤
112.将步骤(1)计算得到的μ代入中,计算得到q,利用q计算c=(amodb
k+1
)-(q
·
nmodb
k+1
),得到c;
113.若c<0,则计算c=c+b
k+1
;
114.若c≥n,则计算c=c-n。
115.本发明中,基于滑动窗口算法的非固定基底模幂运算方法用于通过进行预计算窗口计算,生成局部预计算表,并执行基于蒙哥马利算法和karatsuba算法的模乘计算方法,以及,通过查询生成的局部预计算表进行非固定基底模幂运算。
116.示例性的,基于滑动窗口算法的非固定基底模幂运算方法包括:
117.(1)预计算步骤
118.设置t0=1,t1=a,t2=a,c=1;
119.将模幂运算的指数b表示为其的ω1进制表示形式,即
120.依次计算tj=t
j-1
·
t1,其中
121.这里,非固定基底模幂运算可以表示为c=a^b(mod n^2),b即为模幂运算的指数;t表示非固定基底模幂运算方法过程中需要使用到的临时预计算表。
122.(2)循环计算步骤
123.在上述(2)步骤中,在第一次循环时,i的值为l-1,第二次循环时,i的值为,直至i的值为0时,结束循环计算,每一个线程在每次循环计算时的步骤如下:
124.a)
125.b)将a)步骤计算得到的c代入中,继续计算c,并将计算出的c作为下一次循环计算时a)步骤的输入值;
126.(3)在循环计算结束时,输出b)步骤得到的c,其中,c=abmodn。
127.s104、根据cpu设备端发送的第二密文消息和第三密文消息,通过gpu设备端的多个第四gpu线程并行进行同态加法运算,生成第四密文消息,将第四密文消息发送至cpu设备端。
128.本发明实施例中,cpu设备端可以获取第二密文消息和第三密文消息;并将第二密文消息和第三密文消息,发送至gpu设备端。
129.这里,cpu设备端可以通过接收用户输入的第二密文消息和第三密文消息的方式,分别获取第二密文消息、第三密文消息。
130.在一些实施例中,每个第四gpu线程通过基于蒙哥马利算法和karatsuba算法的模乘计算方法,以及基于gpu硬件的汇编指令的基础运算方法,进行同态加法运算。
131.在一些实施例中,gpu设备端根据第二密文消息和第三密文消息,确定出并行的多个同态加法计算任务;将多个同态加法计算任务分配至多个第四gpu线程;通过每个第四gpu线程执行对应的同态加法计算任务,得到对应的同态加法计算数据;根据与多个同态加法计算任务对应的多个同态加法计算数据,得到第四密文消息。
132.这里,通过每个第四gpu线程,采用基于蒙哥马利算法和karatsuba算法的模乘计算方法,以及基于gpu硬件的汇编指令的基础运算方法,执行对应的同态加法计算任务,得到对应的同态加法计算数据。
133.这里,gpu设备端可以将密文序列c1和密文序列c2进行拆分,得到多组拆分数据,每组拆分数据包括密文序列c1中的密文数据和密文序列c2中的密文数据,并将这多组拆分数据分配至多个gpu线程进行执行,以使得多个gpu线程执行对应的计算,得到多个同态加法计算数据。
134.示例性的,密文序列c1={c
11
,c
12
,...,c
1k
},c2={c
21
,c
22
,...,c
2k
},则gpu设备端可以将密文序列c1和密文序列c2进行拆分,之后,启动k个gpu线程计算多个同态加法计算数据:c1'=c
11
×c21
modn2,c2'=c
12
×c22
modn2,
…
,ck'=c
1k
×c2k
modn2,并得到明文序列c'={c'1,c'2,...,c'k}。
135.本发明实施例中,第一gpu线程、第二gpu线程、第三gpu线程和第四gpu线程,可以是相同的gpu线程,也可以是不同的gpu线程,本发明实施例对此不作限定。
136.本发明实施例中,将全局预计算表的计算、加解密等同态操作转移至gpu进行并行计算,一方面,在gpu端生成全局预计算表,可以提高后续进行加密计算时的吞吐量;另一方面,gpu的计算能力强,因而可以允许更复杂的加密计算,从而提高了加密后的数据的安全性;再一方面,通过并行的同态操作运算,可以提高同态操作的计算效率。也就是说,由于gpu相比cpu而言拥有更多的计算单元,对于计算密集型的数据能够高效并行处理,本发明考虑gpu众核硬件架构特性,将全局预计算表的计算、加解密等同态操作转移至gpu,并对全局预计算表的计算、加解密等同态操作进行分解,进行细粒度并发的同态操作运算,不仅提高了计算时的吞吐量,提高了加密后的数据的安全性,更极大地提高了paillier加密、解密等同态操作运算的效率,能够为隐私保护场景下的同态加密外包计算服务提供高效的同态加密、解密等计算服务。
137.本发明实施例还提供一种基于gpu的paillier同态加解密计算方法,应用于cpu设备端,如图2所示,方法包括:
138.s201、获取安全参数、随机值、滑动窗口参数。
139.s202、基于安全参数和随机值,生成密码参数。
140.s203、基于滑动窗口参数,计算第一部分预计算表。
141.s204、将密码参数、滑动窗口参数和第一部分预计算表,发送至gpu设备端。
142.s205、获取待加密消息,并生成与待加密消息对应的同态加密参数。
143.s206、将待加密消息和同态加密参数,发送至gpu设备端。
144.s207、获取待解密消息和解密参数。
145.s208、将所述待解密消息和所述解密参数,发送至所述gpu设备端。
146.s209、获取第二密文消息和第三密文消息。
147.s210、将所述第二密文消息和所述第三密文消息,发送至所述gpu设备端。
148.本发明实施例还提供一种基于gpu的paillier同态加解密计算系统,如图3所示,该系统包括:同态操作运算模块1和算术运算模块2;算术运算模块2用于被同态操作运算模块1调用;其中,同态操作运算模块1包括:
149.系统初始化与预计算模块11,用于由cpu设备端获取安全参数、随机值、滑动窗口参数,基于安全参数和随机值,生成密码参数,基于滑动窗口参数,计算第一部分预计算表,将密码参数、滑动窗口参数和第一部分预计算表,发送至gpu设备端;由gpu设备端根据密码参数、滑动窗口参数和第一部分预计算表,通过gpu设备端的多个第一gpu线程并行生成第二部分预计算表,并根据第二部分预计算表和第一部分预计算表,得到全局预计算表;
150.加密计算模块12,用于由cpu设备端获取待加密消息,并生成与待加密消息对应的同态加密参数,将待加密消息和同态加密参数,发送至gpu设备端;由gpu设备端根据全局预计算表、待加密消息和同态加密参数,通过gpu设备端的多个第二gpu线程并行生成第一密文消息,并将第一密文消息发送至cpu设备端;
151.解密计算模块13,用于由cpu设备端获取待解密消息和解密参数,将待解密消息和解密参数,发送至gpu设备端;由gpu设备端根据待解密消息和解密参数,通过gpu设备端的多个第三gpu线程并行生成明文消息,并将明文消息发送至cpu设备端;
152.同态加法计算模块14,用于由cpu设备端获取第二密文消息和第三密文消息,将第二密文消息和第三密文消息,发送至gpu设备端;由gpu设备端根据第二密文消息和第三密文消息,通过gpu设备端的多个第四gpu线程并行进行同态加法运算,生成第四密文消息,将第四密文消息发送至cpu设备端;
153.算术运算模块2包括:
154.基于滑动窗口法的非固定基底模幂运算模块21,用于在通过多个第三gpu线程并行生成明文消息时,通过进行预计算窗口计算,生成局部预计算表,并通过调用基于蒙哥马利算法和karatsuba算法的模乘计算模块,执行基于蒙哥马利算法和karatsuba算法的模乘计算方法,通过查询局部预计算表进行非固定基底模幂运算;
155.基于barrett算法的模运算模块22,用于在通过多个第三gpu线程并行生成明文消息时,进行取模处理;
156.基于预计算表的固定基底模幂运算模块23,用于在通过多个第一gpu线程生成第二部分预计算表时,通过调用基于蒙哥马利算法和karatsuba算法的模乘计算模块,执行基于蒙哥马利算法和karatsuba算法的模乘计算方法;以及,在通过多个第二gpu线程并行生成第一密文消息时,通过查询全局预计算表进行固定基底模幂运算;
157.基于蒙哥马利算法和karatsuba算法的模乘计算模块24,用于基于蒙哥马利算法进行模乘运算和模平方运算,以及基于karatsuba算法进行模乘运算和模平方运算中的多精度乘法运算;
158.基于gpu硬件的汇编指令的基础运算模块25,用于执行加法运算、减法运算、乘法运算和移位运算。
159.如图3所示,基于gpu硬件的汇编指令的基础运算模块25,可以被基于滑动窗口法的非固定基底模幂运算模块21、基于barrett算法的模运算模块22、基于预计算表的固定基底模幂运算模块23和基于蒙哥马利算法和karatsuba算法的模乘计算模块24调用。
160.本发明针对基于同态加密技术的隐私保护外包计算过程中所涉及的同态加密、解密及同态运算操作计算开销较大的不足,提出了一种基于gpu的paillier同态加解密计算方法。本发明将paillier同态密码算法拆分为同态操作运算层和算术运算层,并分别设计优化方案对各计算模块进行优化:针对同态操作运算层,考虑gpu众核硬件架构特性,选择合适的加密算法变体,并对加解密等同态操作进行分解,设计细粒度并发的同态操作运算,极大地提高了同态操作计算效率;针对算术运算层,充分考虑gpu计算能力强但逻辑处理能力较弱的特性,对同态操作所使用到的基础算术运算进行优化实现,为上层同态操作运算层的实现提供高效运算构件块。本发明充分考虑gpu的硬件特点,对paillier同态加密算法进行分层、模块化优化,主要包含对同态操作运算层的细粒度并发计算设计以及多种底层算术运算优化设计。这些优化方法,利用gpu众核特性对算法进行并发和并行优化,大幅提升了paillier加密、解密、同态加法运算效率,可为隐私保护场景下的同态加密外包计算服务提供高效的同态加密、解密、计算服务。
161.以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
技术特征:
1.一种基于gpu的paillier同态加解密计算方法,其特征在于,应用于gpu设备端,包括:根据cpu设备端发送的密码参数、滑动窗口参数和第一部分预计算表,通过所述gpu设备端的多个第一gpu线程并行生成第二部分预计算表,并根据所述第二部分预计算表和所述第一部分预计算表,得到全局预计算表;根据所述全局预计算表、所述cpu设备端发送的待加密消息和同态加密参数,通过所述gpu设备端的多个第二gpu线程并行生成第一密文消息,并将所述第一密文消息发送至所述cpu设备端;根据所述cpu设备端发送的待解密消息和解密参数,通过所述gpu设备端的多个第三gpu线程并行生成明文消息,并将所述明文消息发送至所述cpu设备端;根据所述cpu设备端发送的第二密文消息和第三密文消息,通过所述gpu设备端的多个第四gpu线程并行进行同态加法运算,生成第四密文消息,将所述第四密文消息发送至所述cpu设备端。2.根据权利要求1所述的基于gpu的paillier同态加解密计算方法,其特征在于,所述根据所述全局预计算表、所述cpu设备端发送的待加密消息和同态加密参数,通过所述gpu设备端的多个第二gpu线程并行生成第一密文消息,包括:根据所述全局预计算表、所述待加密消息或所述同态加密参数,确定出并行的多个第一加密计算任务;将所述多个第一加密计算任务分配至所述多个第二gpu线程;通过每个第二gpu线程执行对应的第一加密计算任务,得到对应的第一加密计算数据;根据与所述多个第二gpu线程对应的多个第一加密计算数据,确定出多个第二加密计算任务,并将每个第二加密计算任务分配至一个第二gpu线程;通过每个第二gpu线程执行对应的第二加密计算任务,得到多个第二加密计算数据,根据所述多个第二加密计算数据,得到所述第一密文消息。3.根据权利要求2所述的基于gpu的paillier同态加解密计算方法,其特征在于,所述通过每个第二gpu线程执行对应的第一加密计算任务,得到对应的第一加密计算数据,所述包括:通过所述每个第二gpu线程,采用基于预计算表的固定基底模幂运算方法、基于蒙哥马利算法和karatsuba算法的模乘运算方法和基于gpu硬件的汇编指令的基础运算方法,执行对应的第一加密计算任务,计算得到对应的第一加密计算数据。4.根据权利要求1所述的基于gpu的paillier同态加解密计算方法,其特征在于,所述根据所述cpu设备端发送的待解密消息和解密参数,通过所述gpu设备端的多个第三gpu线程并行生成明文消息,包括:根据所述待解密消息和所述解密参数,确定出并行的多个第一解密计算任务;将所述多个第一解密计算任务分配至所述多个第三gpu线程;通过每个第三gpu线程执行对应的第一解密计算任务,得到对应的第一解密计算数据;根据与所述多个第三gpu线程对应的多个第一解密计算数据,确定出多个第二解密计算任务,并将每个第二解密计算任务分配至一个第三gpu线程;通过每个第三gpu线程执行对应的第二解密计算任务,得到多个第二解密计算数据,根
据所述多个第二解密计算数据,得到所述明文消息。5.根据权利要求4所述的基于gpu的paillier同态加解密计算方法,其特征在于,所述通过每个第三gpu线程执行对应的第一解密计算任务,得到对应的第一解密计算数据,包括:通过所述每个第二gpu线程,采用基于barrett算法的模运算方法、基于滑动窗口算法的非固定基底模幂运算方法、基于蒙哥马利算法和karatsuba算法的模乘计算方法和基于gpu硬件的汇编指令的基础运算方法,执行对应的第一解密计算任务,得到对应的第一解密计算数据。6.根据权利要求1所述的基于gpu的paillier同态加解密计算方法,其特征在于,所述根据所述cpu设备端发送的第二密文消息和第三密文消息,通过所述gpu设备端的多个第四gpu线程并行进行同态加法运算,生成第四密文消息,包括:根据所述第二密文消息和所述第三密文消息,确定出并行的多个同态加法计算任务;将所述多个同态加法计算任务分配至所述多个第四gpu线程;通过每个第四gpu线程执行对应的同态加法计算任务,得到对应的同态加法计算数据;根据与所述多个同态加法计算任务对应的多个同态加法计算数据,得到所述第四密文消息。7.根据权利要求6所述的基于gpu的paillier同态加解密计算方法,其特征在于,所述通过每个第四gpu线程执行对应的同态加法计算任务,得到对应的同态加法计算数据,包括:通过所述每个第四gpu线程,采用基于蒙哥马利算法和karatsuba算法的模乘计算方法,以及基于gpu硬件的汇编指令的基础运算方法,执行对应的同态加法计算任务,得到对应的同态加法计算数据。8.根据权利要求1所述的基于gpu的paillier同态加解密计算方法,其特征在于,所述全局预计算表包括多行预计算值;所述第一部分预计算表为所述多行预计算值中的第一部分预计算值;所述第二部分预计算表为所述多行预计算值中的第二部分预计算值;所述根据cpu设备端发送的密码参数、滑动窗口参数和第一部分预计算表,通过所述gpu设备端的多个第一gpu线程并行生成第二部分预计算表,包括:根据所述第一部分预计算值,确定所述第二部分预计算值为待计算的值;根据所述滑动窗口参数,确定出循环计算总次数,以及每次循环计算对应的所述多个第一gpu线程;在每次循环计算时,通过所述多个第一gpu线程,计算出多个预计算值;将所述循环计算总次数对应的预计算值,作为所述第二部分预计算值。9.一种基于gpu的paillier同态加解密计算方法,其特征在于,应用于cpu设备端,包括:获取安全参数、随机值、滑动窗口参数;基于所述安全参数和所述随机值,生成密码参数;基于所述滑动窗口参数,计算第一部分预计算表;将所述密码参数、所述滑动窗口参数和所述第一部分预计算表,发送至gpu设备端;获取待加密消息,并生成与所述待加密消息对应的同态加密参数;
将所述待加密消息和所述同态加密参数,发送至所述gpu设备端;获取待解密消息和解密参数;将所述待解密消息和所述解密参数,发送至所述gpu设备端;获取第二密文消息和第三密文消息;将所述第二密文消息和所述第三密文消息,发送至所述gpu设备端。10.一种基于gpu的paillier同态加解密计算系统,其特征在于,包括:同态操作运算模块和算术运算模块;所述算术运算模块用于被所述同态操作运算模块调用;所述同态操作运算模块包括:系统初始化与预计算模块,用于由cpu设备端获取安全参数、随机值、滑动窗口参数,基于所述安全参数和所述随机值,生成密码参数,基于所述滑动窗口参数,计算第一部分预计算表,将所述密码参数、所述滑动窗口参数和所述第一部分预计算表,发送至gpu设备端;由gpu设备端根据所述密码参数、所述滑动窗口参数和所述第一部分预计算表,通过所述gpu设备端的多个第一gpu线程并行生成第二部分预计算表,并根据所述第二部分预计算表和所述第一部分预计算表,得到全局预计算表;加密计算模块,用于由所述cpu设备端获取待加密消息,并生成与所述待加密消息对应的同态加密参数,将所述待加密消息和所述同态加密参数,发送至所述gpu设备端;由所述gpu设备端根据所述全局预计算表、所述待加密消息和所述同态加密参数,通过所述gpu设备端的多个第二gpu线程并行生成第一密文消息,并将所述第一密文消息发送至所述cpu设备端;解密计算模块,用于由所述cpu设备端获取待解密消息和解密参数,将所述待解密消息和所述解密参数,发送至所述gpu设备端;由所述gpu设备端根据所述待解密消息和所述解密参数,通过所述gpu设备端的多个第三gpu线程并行生成明文消息,并将所述明文消息发送至所述cpu设备端;同态加法计算模块,用于由所述cpu设备端获取第二密文消息和第三密文消息,将所述第二密文消息和所述第三密文消息,发送至所述gpu设备端;由所述gpu设备端根据所述第二密文消息和所述第三密文消息,通过所述gpu设备端的多个第四gpu线程并行进行同态加法运算,生成第四密文消息,将所述第四密文消息发送至所述cpu设备端;所述算术运算模块包括:基于滑动窗口法的非固定基底模幂运算模块,用于在通过所述多个第三gpu线程并行生成明文消息时,通过进行预计算窗口计算,生成局部预计算表,并通过调用基于蒙哥马利算法和karatsuba算法的模乘计算模块,执行基于蒙哥马利算法和karatsuba算法的模乘计算方法,通过查询所述局部预计算表进行非固定基底模幂运算;基于barrett算法的模运算模块,用于在通过所述多个第三gpu线程并行生成明文消息时,进行取模处理;基于预计算表的固定基底模幂运算模块,用于在通过所述多个第一gpu线程生成第二部分预计算表时,通过调用所述基于蒙哥马利算法和karatsuba算法的模乘计算模块,执行所述基于蒙哥马利算法和karatsuba算法的模乘计算方法;以及,在通过所述多个第二gpu线程并行生成第一密文消息时,通过查询所述全局预计算表进行固定基底模幂运算;
所述基于蒙哥马利算法和karatsuba算法的模乘计算模块,用于基于蒙哥马利算法进行模乘运算和模平方运算,以及基于karatsuba算法进行模乘运算和模平方运算中的多精度乘法运算;基于gpu硬件的汇编指令的基础运算模块,用于执行加法运算、减法运算、乘法运算和移位运算。
技术总结
本发明公开了一种基于GPU的Paillier同态加解密计算方法,应用于GPU设备端,包括:根据CPU设备端发送的密码参数、滑动窗口参数和第一部分预计算表,通过多个GPU线程并行生成第二部分预计算表,并根据第二部分预计算表和第一部分预计算表,得到全局预计算表;根据全局预计算表、待加密消息和同态加密参数,通过多个GPU线程并行生成第一密文消息,并将第一密文消息发送至CPU设备端;根据CPU设备端发送的待解密消息和解密参数,通过多个GPU线程并行生成明文消息,并将明文消息发送至CPU设备端;根据CPU设备端发送的第二密文消息和第三密文消息,通过多个GPU线程并行进行同态加法运算,生成第四密文消息,将第四密文消息发送至CPU设备端。设备端。设备端。