本發(fā)明屬于數(shù)據(jù)處理領(lǐng)域,涉及一種全同態(tài)加密方法,具體涉及一種單密文同態(tài)計(jì)算的全同態(tài)加密方法,可用于云計(jì)算環(huán)境下的數(shù)據(jù)安全外包計(jì)算。
背景技術(shù):
隨著新型互聯(lián)網(wǎng)絡(luò)的不斷發(fā)展,數(shù)據(jù)呈現(xiàn)爆發(fā)式增長(zhǎng)的態(tài)勢(shì),海量數(shù)據(jù)往往以委托計(jì)算服務(wù)的模式保存在云服務(wù)器中。存儲(chǔ)在云端的一些數(shù)據(jù)往往含有隱私信息,或者云端的保密機(jī)制不完善,容易泄露一部分?jǐn)?shù)據(jù)信息。因此,需要對(duì)隱私數(shù)據(jù)進(jìn)行加密保護(hù),然而,一旦對(duì)數(shù)據(jù)進(jìn)行加密處理后,原始數(shù)據(jù)的原有的數(shù)據(jù)結(jié)構(gòu)就遭到破壞了,因此,就失去了信息處理的功能。為此,需要一種密碼技術(shù),既能對(duì)數(shù)據(jù)進(jìn)行加密,又能保證可以對(duì)加密后的數(shù)據(jù)進(jìn)行信息處理。而全同態(tài)加密算法不僅僅可以實(shí)現(xiàn)原始數(shù)據(jù)的隱私保護(hù)功能,同時(shí)又支持對(duì)密文數(shù)據(jù)進(jìn)行任意次的同態(tài)加法和同態(tài)乘法計(jì)算,為云計(jì)算和大數(shù)據(jù)環(huán)境提供了通用的安全方案。
全同態(tài)加密問題在1978年就由rivest等人提出,成為密碼學(xué)中一個(gè)開放難題。最早提出的公鑰密碼rsa和elgamal加密算法都只具有乘法同態(tài)性質(zhì),應(yīng)用最廣泛的paillier加密系統(tǒng)滿足加法同態(tài)性。之后出現(xiàn)了淺同態(tài)加密方案,2005年提出的bgn密碼支持一次乘法同態(tài)和任意次加法同態(tài)。這些方案能夠解決的應(yīng)用問題有限,很難將其拓展應(yīng)用到更廣泛的應(yīng)用場(chǎng)景。
2009年gentry構(gòu)造了首個(gè)全同態(tài)加密方案,實(shí)現(xiàn)了歷史性的跨越。和淺同態(tài)加密方案相比,全同態(tài)加密方法不受運(yùn)算次數(shù)的限制,即支持密文任意次的同態(tài)加法運(yùn)算和同態(tài)乘法運(yùn)算。然而,現(xiàn)有可證明安全的全同態(tài)加密方案在密文中均引入了噪音,因此,在密文同態(tài)計(jì)算階段,隨著電路層數(shù)增加,同態(tài)計(jì)算的密文中的噪音也會(huì)逐漸積累,而當(dāng)噪音超過(guò)門限值時(shí)便需要對(duì)密文進(jìn)行刷新,導(dǎo)致整個(gè)加密方法效率低。現(xiàn)如今,全同態(tài)加密方案主要應(yīng)用于云計(jì)算環(huán)境下的數(shù)據(jù)安全外包計(jì)算,學(xué)術(shù)界對(duì)此做了大量的研究,例如,2016年yonggewang在“privacypreservingcomputationincloud加密usingnoise-freefullyhomomorphicencryption(fhe)schemes”(europeansymposiumonresearchincomputersecurity2016)公開了一種基于八元數(shù)的全同態(tài)加密方法,應(yīng)用于數(shù)據(jù)安全外包計(jì)算,該方法是:用戶將模數(shù)q、一個(gè)8維同性子空間、隨機(jī)數(shù)φ和8×8的可逆矩陣作為密鑰;用隨機(jī)數(shù)φ對(duì)明文處理,得到相應(yīng)的明文矩陣,使用8×8的可逆矩陣及其逆矩陣,對(duì)處理后的明文矩陣進(jìn)行加密,得到密文矩陣。由于在加解密階段及同態(tài)計(jì)算階段使用了8×8的可逆矩陣,該方法使得密文存儲(chǔ)空間大,計(jì)算繁瑣,導(dǎo)致全同態(tài)加密的效率低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明目的在于克服上述現(xiàn)有技術(shù)存在的缺陷,提出了一種單密文同態(tài)計(jì)算的全同態(tài)加密方法,旨在實(shí)現(xiàn)單密文同態(tài)計(jì)算的全同態(tài)加密,并提高全同態(tài)加密的效率。
為實(shí)現(xiàn)上述技術(shù)目的,本發(fā)明采取的技術(shù)方案包括如下步驟:
(1)用戶設(shè)置參數(shù):
用戶根據(jù)安全參數(shù)隨機(jī)生成兩個(gè)k比特長(zhǎng)的大素?cái)?shù)p和q,滿足p-1和q-1均與3互素并定義明文空間m*和密文空間c*,其中,k≥1024;
(2)用戶獲取加密公鑰pk和解密私鑰sk:
(2.1)用戶計(jì)算rsa模數(shù)n,n=pq,并令加密公鑰pk=n;
(2.2)用戶計(jì)算rsa模數(shù)n的歐拉函數(shù)值
(2.3)用戶采用擴(kuò)展歐幾里得算法計(jì)算3在
(2.4)用戶定義明文空間為
(3)用戶對(duì)明文m進(jìn)行加密:
(3.1)用戶根據(jù)需求選擇明文
(3.2)用戶利用加密公鑰pk,計(jì)算
u≡a3(modn),
v≡b3(modn);
(3.3)用戶在
(3.4)用戶利用二元多項(xiàng)式f(x,y),計(jì)算根為(a,b)的二元多項(xiàng)式f(x,y):
f(x,y)≡f(x,y)-f(a,b)(modn);
(3.5)用戶利用二元多項(xiàng)式f(x,y),計(jì)算密文二元多項(xiàng)式c(x,y):
c(x,y)≡f(x,y)+m(modn);
(3.6)用戶由
(4)用戶對(duì)密文c進(jìn)行解密,實(shí)現(xiàn)步驟為:
(4.1)用戶由密文c=(u,v,c(x,y))中的整數(shù)u、整數(shù)v和解密私鑰sk,計(jì)算整數(shù)a和整數(shù)b;
(4.2)用戶由整數(shù)a、整數(shù)b與密文二元多項(xiàng)式c(x,y),計(jì)算明文m:
m≡c(a,b)(modn);
(5)云服務(wù)器對(duì)密文進(jìn)行同態(tài)運(yùn)算:云服務(wù)器使用加密公鑰pk,對(duì)密文空間c*中任意一個(gè)密文進(jìn)行同態(tài)加法運(yùn)算和同態(tài)乘法運(yùn)算,實(shí)現(xiàn)步驟為:
(5.1)云服務(wù)器用加密公鑰pk,對(duì)密文c=(u,v,c(x,y))進(jìn)行同態(tài)加法計(jì)算,得到屬于密文空間c*的加法同態(tài)密文c+=(u,v,2c(x,y)(modn));
(5.2)云服務(wù)器根據(jù)整數(shù)u和v,構(gòu)造二元截?cái)喽囗?xiàng)式環(huán)
(5.3)云服務(wù)器用加密公鑰pk,對(duì)密文c=(u,v,c(x,y))進(jìn)行同態(tài)乘法計(jì)算,并使用二元截?cái)喽囗?xiàng)式環(huán)對(duì)密文同態(tài)計(jì)算結(jié)果進(jìn)行取模,得到屬于密文空間c*的同態(tài)乘法密文c×=(u,v,c2(x,y)(modn,x3-u,y3-v));
(6)用戶對(duì)同態(tài)密文進(jìn)行解密:
用戶使用解密私鑰sk對(duì)運(yùn)算后的密文進(jìn)行解密,得到相應(yīng)明文進(jìn)行相同計(jì)算的結(jié)果,實(shí)現(xiàn)步驟為:
(6.1)用戶使用解密私鑰sk=d和rsa模數(shù)n,對(duì)加法同態(tài)密文c+=(u,v,2c(x,y)(modn))進(jìn)行解密,得到對(duì)應(yīng)的明文m+,m+≡2m≡m+m(modn),解密過(guò)程為:
用戶用公式a≡u(píng)d(modn)、b≡vd(modn)計(jì)算,得到整數(shù)a和整數(shù)b,將整數(shù)a和整數(shù)b代入2c(x,y)≡2f(x,y)+2m(modn)中,得到2c(a,b)≡2m(modn);
(6.2)用戶使用解密私鑰sk=d和rsa模數(shù)n,對(duì)乘法同態(tài)計(jì)算之后獲得的密文c×=(u,v,c2(x,y)(modn,x3-u,y3-v))進(jìn)行解密,得到與同態(tài)計(jì)算密文相對(duì)應(yīng)的明文m×,m×≡m2≡mm(modn)解密過(guò)程為:
用戶用公式a≡u(píng)d(modn)、b≡vd(modn)計(jì)算,得到整數(shù)a和b并代入c2(x,y)≡f2(x,y)+2mf(x,y)+m2(modn,x3-u,y3-v)中,得到c2(a,b)≡m2(modn)。
本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn):
1、本發(fā)明由于在密文同態(tài)計(jì)算過(guò)程中,云服務(wù)器使用加密公鑰對(duì)密文空間c*中任意一個(gè)密文進(jìn)行同態(tài)加法運(yùn)算和同態(tài)乘法運(yùn)算,計(jì)算得到的結(jié)果仍是單個(gè)同態(tài)密文,實(shí)現(xiàn)了全同態(tài)加密單密文的同態(tài)計(jì)算。
2、本發(fā)明在密文同態(tài)乘法運(yùn)算中,采用二元截?cái)喽囗?xiàng)式環(huán)對(duì)密文同態(tài)乘法的計(jì)算結(jié)果取模,使二元多項(xiàng)式在乘法計(jì)算過(guò)程中的項(xiàng)數(shù)為常數(shù),控制了密文的增長(zhǎng),提高了全同態(tài)加密的效率。
附圖說(shuō)明
圖1為本發(fā)明的實(shí)現(xiàn)流程圖。
具體實(shí)施方式
以下結(jié)合附圖和具體實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。
參照?qǐng)D1,一種單密文同態(tài)計(jì)算的全同態(tài)加密方法,包括如下步驟:
步驟1)用戶設(shè)置參數(shù):
用戶根據(jù)安全參數(shù)隨機(jī)生成兩個(gè)k比特長(zhǎng)的大素?cái)?shù)p和q,滿足p-1和q-1均與3互素,并定義明文空間m*和密文空間c*,其中,k=1024;
步驟2)用戶獲取加密公鑰pk和解密私鑰sk:
步驟2.1)用戶計(jì)算rsa模數(shù)n,n=pq,并令加密公鑰pk=n;
步驟2.2)用戶計(jì)算rsa模數(shù)n的歐拉函數(shù)值
步驟2.3)用戶采用擴(kuò)展歐幾里得算法計(jì)算3在
步驟2.4)用戶定義明文空間為
步驟3)用戶對(duì)明文m進(jìn)行加密:
步驟3.1)用戶根據(jù)需求選擇明文
步驟3.2)用戶利用加密公鑰pk,計(jì)算
u≡a3(modn),
v≡b3(modn);
步驟3.3)用戶在
步驟3.4)用戶利用二元多項(xiàng)式f(x,y),計(jì)算含有根(a,b)的二元多項(xiàng)式f(x,y):
f(x,y)≡f(x,y)-f(a,b)(modn);
步驟3.5)用戶利用二元多項(xiàng)式f(x,y),計(jì)算密文二元多項(xiàng)式c(x,y):
c(x,y)≡f(x,y)+m(modn);
步驟3.6)用戶由
步驟4)用戶對(duì)密文c進(jìn)行解密,實(shí)現(xiàn)步驟為:
步驟4.1)用戶由密文c=(u,v,c(x,y))中的整數(shù)u、整數(shù)v和解密私鑰sk,計(jì)算整數(shù)a和整數(shù)b:
步驟4.1.1)用戶由密文c中的整數(shù)u和解密私鑰sk,計(jì)算整數(shù)a:
由u≡a3(modn),得ud≡a3d(modn),又由
步驟4.1.2)用戶由密文c中的整數(shù)v和解密私鑰sk,計(jì)算整數(shù)b:
計(jì)算過(guò)程與步驟4.1.1)相同,此過(guò)程利用v≡b3(modn),得到vd≡b3d(modn),最終得到b≡vd(modn);
步驟4.2)用戶由整數(shù)a、整數(shù)b與二元多項(xiàng)式c(x,y),計(jì)算明文m:
用戶將整數(shù)a和整數(shù)b代入二元多項(xiàng)式c(x,y)中,計(jì)算c(a,b)(modn):
c(a,b)≡f(a,b)+m(modn);
本發(fā)明能夠正確解密的原理在于:在對(duì)明文加密的過(guò)程中,用戶構(gòu)造了一個(gè)含有根(a,b)的二元多項(xiàng)式f(x,y),使得此二元多項(xiàng)式滿足f(a,b)≡0(modn),在對(duì)密文解密時(shí),用戶將根(a,b)代入密文二元多項(xiàng)式c(x,y)中,最終,得到明文m,m≡c(a,b)≡f(a,b)+m≡m(modn);
步驟5)云服務(wù)器對(duì)密文進(jìn)行同態(tài)運(yùn)算:云服務(wù)器使用加密公鑰pk,對(duì)密文空間c*中任意一個(gè)密文進(jìn)行同態(tài)加法運(yùn)算和同態(tài)乘法運(yùn)算,實(shí)現(xiàn)步驟為:
步驟5.1)云服務(wù)器用加密公鑰pk,對(duì)密文c=(u,v,c(x,y))進(jìn)行同態(tài)加法計(jì)算,得到屬于密文空間c*的加法同態(tài)密文c+=(u,v,2c(x,y)(modn));
在對(duì)密文進(jìn)行加法計(jì)算時(shí),只需將密文c=(u,v,c(x,y))中的密文二元多項(xiàng)式c(x,y)進(jìn)行加法計(jì)算,即c(x,y)+c(x,y)≡2c(x,y)(modn),得到加法同態(tài)密文c+=(u,v,2c(x,y)(modn)),因此,對(duì)于密文空間c*中的任意一個(gè)密文進(jìn)行同態(tài)加法計(jì)算,得到屬于密文空間c*的一個(gè)密文;
步驟5.2)云服務(wù)器根據(jù)整數(shù)u和整數(shù)v,構(gòu)造二元截?cái)喽囗?xiàng)式環(huán)
步驟5.3)云服務(wù)器用加密公鑰pk,對(duì)密文c=(u,v,c(x,y))進(jìn)行同態(tài)乘法計(jì)算,并使用二元截?cái)喽囗?xiàng)式環(huán)對(duì)密文同態(tài)計(jì)算結(jié)果進(jìn)行取模,得到屬于密文空間c*的同態(tài)乘法密文c×=(u,v,c2(x,y)(modn,x3-u,y3-v));
在對(duì)密文進(jìn)行乘法計(jì)算時(shí),只需將密文c=(u,v,c(x,y))中的密文二元多項(xiàng)式c(x,y)進(jìn)行乘法計(jì)算,即c(x,y)c(x,y)≡c2(x,y)(modn,x3-u,y3-v),得到乘法同態(tài)密文c×=(u,v,c2(x,y)(modn,x3-u,y3-v)),因此,對(duì)于密文空間c*中的任意一個(gè)密文進(jìn)行同態(tài)乘法計(jì)算,得到仍然屬于密文空間c*的一個(gè)密文;
云服務(wù)器在對(duì)密文c=(u,v,c(x,y))進(jìn)行同態(tài)乘法計(jì)算時(shí),會(huì)出現(xiàn)一個(gè)關(guān)于變量x,y的次數(shù)均不超過(guò)4、最多含有25項(xiàng)的二元多項(xiàng)式c2(x,y),因此,在同態(tài)乘法計(jì)算過(guò)程中出現(xiàn)了密文擴(kuò)張的現(xiàn)象,云服務(wù)器使用截?cái)喽囗?xiàng)式可以把密文長(zhǎng)度控制在常數(shù)級(jí),截?cái)噙^(guò)程如下:
在具體計(jì)算二元多項(xiàng)式c2(x,y)時(shí),對(duì)同態(tài)乘法計(jì)算的結(jié)果模上多項(xiàng)式x3-u和y3-v,也就是說(shuō),在計(jì)算的結(jié)果中碰到x4替換成ux,y4替換成vy,x3替換成u,y3替換成v,最終得到一個(gè)二元多項(xiàng)式:
c1(x,y)≡c2(x,y)≡(f(x,y)+m)2≡f2(x,y)+2mf(x,y)+m2(modn,x3-u,y3-v),且f1(x,y)同樣是一個(gè)關(guān)于x,y次數(shù)均不超過(guò)2、最多含有9項(xiàng)的二元多項(xiàng)式;
每一次同態(tài)乘法計(jì)算時(shí)都使用截?cái)喽囗?xiàng)式,使得二元多項(xiàng)式在乘法計(jì)算過(guò)程中的項(xiàng)數(shù)保持為常數(shù)級(jí),從而控制了密文的增長(zhǎng);
步驟6)用戶對(duì)同態(tài)密文進(jìn)行解密:
用戶使用解密私鑰sk對(duì)運(yùn)算后的密文進(jìn)行解密,得到相應(yīng)明文進(jìn)行相同計(jì)算的結(jié)果,實(shí)現(xiàn)步驟為:
步驟6.1)用戶使用解密私鑰sk和rsa模數(shù)n,對(duì)加法同態(tài)密文c+=(u,v,2c(x,y)(modn))進(jìn)行解密,得到對(duì)應(yīng)的明文m+,m+≡2m≡m+m(modn),在解密過(guò)程中,只需要對(duì)加法同態(tài)密文c+=(u,v,2c(x,y)(modn))中的二元多項(xiàng)式2c(x,y)進(jìn)行運(yùn)算:
步驟6.1.1)用戶由加法同態(tài)密文c+=(u,v,2c(x,y)(modn))中的整數(shù)u和解密私鑰sk,利用a≡u(píng)d(modn)計(jì)算,得到整數(shù)a;
用戶由加法同態(tài)密文c+=(u,v,2c(x,y)(modn))中的整數(shù)v和解密私鑰sk,利用b≡vd(modn)計(jì)算,得到整數(shù)b;
步驟6.1.2)用戶把得到的整數(shù)a和整數(shù)b代入二元多項(xiàng)式2c(x,y)中,即x=a,y=b,由于c(x,y)≡f(x,y)+m(modn),得到2c(x,y)≡2f(x,y)+2m(modn),把整數(shù)a和整數(shù)b代入二元多項(xiàng)式f(x,y)后,得到f(a,b)=0,進(jìn)而得到2c(a,b)≡2m(modn),即對(duì)加法同態(tài)密文c+=(u,v,2c(x,y)(modn))解密后得到明文m+=2m,明文m+是由單個(gè)明文m做加法計(jì)算得到的,即2m=m+m,因此,對(duì)任意一個(gè)密文同態(tài)加法計(jì)算的結(jié)果進(jìn)行解密,得到與相應(yīng)明文進(jìn)行加法運(yùn)算的結(jié)果;
步驟6.2)用戶使用解密私鑰sk=d和rsa模數(shù)n,對(duì)乘法同態(tài)密文c×=(u,v,c1(x,y))=(u,v,c2(x,y)(modn,x3-u,y3-v))進(jìn)行解密,得到相應(yīng)的明文m×,m×≡mm(modn),在解密過(guò)程中,只需要對(duì)乘法同態(tài)密文(u,v,c1(x,y))中的二元多項(xiàng)式c1(x,y)進(jìn)行運(yùn)算:
步驟6.2.1)用戶由乘法同態(tài)密文c×=(u,v,c1(x,y))(modn,x3-u,y3-v)中的整數(shù)u和解密私鑰sk,利用a≡u(píng)d(modn)計(jì)算,得到整數(shù)a;
用戶由乘法同態(tài)密文c×=(u,v,c1(x,y)(modn,x3-u,y3-v))中的整數(shù)v和解密私鑰sk,利用b≡vd(modn)計(jì)算,得到整數(shù)b;
步驟6.2.2)用戶把得到的整數(shù)a和整數(shù)b代入二元多項(xiàng)式c1(x,y)中,即令x=a,y=b,由于c1(x,y)≡c2(x,y)≡f2(x,y)+2mf(x,y)+m2(modn,x3-u,y3-v),于是存在
c1(x,y)+a(x,y)(x3-u)+b(x,y)(y3-v)≡f2(x,y)+2mf(x,y)+m2(modn)
由于f(a,b)≡0(modn),a3-u≡0(modn),b3-v≡0(modn),進(jìn)而得到c1(a,b)≡m2(modn),即對(duì)乘法同態(tài)密文c×=(u,v,c1(x,y)(modn,x3-u,y3-v))解密后得到明文m×=mm,明文m×是由單個(gè)明文m做乘法計(jì)算得到的,m2=mm,因此,對(duì)任意一個(gè)密文同態(tài)乘法計(jì)算的結(jié)果進(jìn)行解密,得到與相應(yīng)明文進(jìn)行乘法計(jì)算的結(jié)果。
在全同態(tài)計(jì)算過(guò)程中,密文c=(u,v,c(x,y))可以是由經(jīng)過(guò)加密得到的密文,也可是由經(jīng)過(guò)同態(tài)加法計(jì)算得到的密文,滿足對(duì)單個(gè)密文做任意次的同態(tài)加法計(jì)算和同態(tài)乘法計(jì)算,因此,本發(fā)明是一種單密文計(jì)算的全同態(tài)加密方法。