一種基于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設備端。設備端。設備端。
