本發(fā)明涉及一種適用于云計(jì)算環(huán)境的浮點(diǎn)數(shù)全同態(tài)加密方法,屬于信息安全技術(shù)領(lǐng)域。
背景技術(shù):
云服務(wù)為廣大用戶(hù)提供了廣大的存儲(chǔ)空間和強(qiáng)大的計(jì)算能力,但在人們享受便利的同時(shí),隱私安全問(wèn)題隨之而來(lái),這被認(rèn)為是云環(huán)境下最大的挑戰(zhàn)。研究者們一直在尋求構(gòu)造一種既能充分利用云端強(qiáng)大的計(jì)算能力和存儲(chǔ)空間,又能有效保護(hù)數(shù)據(jù)安全的方案。
同態(tài)加密與云環(huán)境中數(shù)據(jù)的機(jī)密性保護(hù)密切相關(guān),是解決云環(huán)境中隱私保護(hù)問(wèn)題的關(guān)鍵技術(shù)。公開(kāi)號(hào)為106452723a的發(fā)明專(zhuān)利申請(qǐng),公開(kāi)了一種基于模運(yùn)算的全同態(tài)加密處理方法,包括以下步驟:獲取加密過(guò)程中任意數(shù)值數(shù)據(jù)類(lèi)型的明文,并根據(jù)加密需要將其轉(zhuǎn)換為對(duì)應(yīng)的進(jìn)制位明文,對(duì)得到的進(jìn)制位明文中的各個(gè)數(shù)進(jìn)行加密運(yùn)算,將加密運(yùn)算得到的密文進(jìn)行組合,從而得到對(duì)應(yīng)的密文組合,采用基于模加密的密文原碼、密文反碼和密文補(bǔ)碼對(duì)得到的密文組合進(jìn)行加減乘除密文運(yùn)算,利用模除法對(duì)獲取的密文運(yùn)算結(jié)果進(jìn)行解密,以獲得解密后的明文。該方案能夠解決現(xiàn)有的基于模運(yùn)算的全同態(tài)加密處理方法中,由于密文乘法噪音難以控制,以及密文加法的結(jié)果等于進(jìn)制時(shí)密文求和的結(jié)果在解密過(guò)程中出錯(cuò)所導(dǎo)致的加密結(jié)果無(wú)法被正確解密的技術(shù)問(wèn)題。
另有公開(kāi)號(hào)為103259643b的發(fā)明專(zhuān)利申請(qǐng),公開(kāi)了一種矩陣全同態(tài)加密算法,包括:1)初始化模塊:根據(jù)待加密矩陣的維數(shù)、加密類(lèi)型和矩陣元素值的范圍,來(lái)生成加密、解密所需的密鑰;2)加密模塊:根據(jù)給定的明文矩陣,使用加密算法和密鑰對(duì)明文矩陣進(jìn)行加密,輸出密文矩陣;3)解密模塊:根據(jù)給定的密文矩陣,使用密鑰和解密算法對(duì)密文矩陣進(jìn)行解密,輸出明文矩陣;4)矩陣全同態(tài)模塊:矩陣的加法和乘法運(yùn)算都滿(mǎn)足矩陣同態(tài)的性質(zhì),矩陣加法和乘法產(chǎn)生的輸出仍然滿(mǎn)足同態(tài)的性質(zhì),即滿(mǎn)足矩陣全同態(tài)的性質(zhì)。該方案一是能夠滿(mǎn)足安全性需求;二是滿(mǎn)足矩陣全同態(tài)的要求;三是明顯提高了密文矩陣的運(yùn)算速度。
但是以上方案雖然在一定程度上滿(mǎn)足了安全性的需求,但是可應(yīng)用的數(shù)據(jù)類(lèi)型不廣。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是:針對(duì)如今對(duì)于安全計(jì)算的需求,提出了一種可應(yīng)用于云計(jì)算環(huán)境的浮點(diǎn)數(shù)全同態(tài)加密方法,通過(guò)對(duì)浮點(diǎn)數(shù)加密,增加方法可應(yīng)用的數(shù)據(jù)類(lèi)型,同時(shí)在不泄露隱私的前提下,實(shí)現(xiàn)對(duì)數(shù)據(jù)的安全計(jì)算。
本發(fā)明為解決上述技術(shù)問(wèn)題采用以下技術(shù)方案:
一種面向隱私保護(hù)的浮點(diǎn)數(shù)全同態(tài)加密方法,包括如下步驟:
(1)將待加密的浮點(diǎn)數(shù)表示為正規(guī)表達(dá)式,并將浮點(diǎn)數(shù)正規(guī)表達(dá)式的有效數(shù)轉(zhuǎn)換為二進(jìn)制的比特位明文數(shù)據(jù);
(2)生成隨機(jī)私鑰,結(jié)合偽隨機(jī)函數(shù)用私鑰定義公鑰元素,并根據(jù)生成的隨機(jī)噪聲參數(shù)計(jì)算出公鑰;
(3)利用隨機(jī)整數(shù)矩陣和公鑰對(duì)明文進(jìn)行運(yùn)算,實(shí)現(xiàn)對(duì)明文數(shù)據(jù)的部分同態(tài)加密;
(4)根據(jù)步驟(2)生成新的密鑰參數(shù),將新密鑰參數(shù)與步驟(3)部分同態(tài)加密的密文進(jìn)行運(yùn)算,實(shí)現(xiàn)密文的擴(kuò)展;然后利用同態(tài)解密刷新原密文,生成噪聲更小的新密文,從而實(shí)現(xiàn)全同態(tài)加密。
進(jìn)一步的,作為本發(fā)明的浮點(diǎn)數(shù)全同態(tài)加密方法,步驟(1)具體如下:
記fl為要加密的任意浮點(diǎn)數(shù),則用四個(gè)整數(shù)表示fl,即為:
fl=(-1)s′·sig·2e-k(1)
其中s′表示符號(hào)位,當(dāng)s′=0時(shí),fl為正數(shù),當(dāng)s′=1時(shí),fl為負(fù)數(shù);e表示指數(shù),用于控制浮點(diǎn)數(shù)的數(shù)值范圍大??;k表示精度,即為浮點(diǎn)數(shù)的有效位數(shù),用于控制浮點(diǎn)數(shù)的精度大??;sig表示有效數(shù),滿(mǎn)足2k-1≤sig≤2k-1,且sig為整數(shù);
在浮點(diǎn)數(shù)fl以正規(guī)表達(dá)式表示的基礎(chǔ)上,將有效數(shù)sig轉(zhuǎn)化為二進(jìn)制比特位形式,記為:
sig=d1d2…dk(2);
其中d1、d2、…、dk代表明文元素。
進(jìn)一步的,作為本發(fā)明的浮點(diǎn)數(shù)全同態(tài)加密方法,步驟(2)具體為:
令μ2表示私鑰的個(gè)數(shù),η表示每個(gè)私鑰的比特位數(shù),生成μ2個(gè)η比特的隨機(jī)素?cái)?shù){pu,v}1≤u,v≤μ,即為
令π表示私鑰的乘積,即為π=π1≤u,v≤μpu,v;
令γ表示公鑰元素的比特位數(shù),定義公鑰元素φ0為φ0=q0·π,其中
若x,y表示任意整數(shù),則定義模運(yùn)算xmody∈(-y/2,y/2);
令ri,b,u,v,ωi,b,u,v,σi,b,u,v分別為三個(gè)噪聲參數(shù),ρ為噪聲參數(shù)的比特位數(shù);
對(duì)于噪聲參數(shù)
φi,bmodpu,v=ri,b,u,v(3)
其中1≤i≤β,0≤b≤1,1≤u,v≤μ,β為第一個(gè)公鑰元素φi,0或φi,1的個(gè)數(shù);
對(duì)于噪聲參數(shù)
πi,bmodpu,v=2ωi,b,u,v+δi,b,u,v·2ρ+1(4)
對(duì)于噪聲參數(shù)
χi,bmodpu,v=2σi,b,u,v+δi,b,u,v(5)
其中1≤i≤μ,0≤b≤1,1≤u,v≤μ,函數(shù)δi,b,u,v定義如下:
令私鑰集合為sk,則sk={pu,v}1≤u,v≤μ,公鑰集合為pk,則
pk=<φ0,(φi,b)1≤i≤β,0≤b≤1,(πi,b)1≤i≤μ,0≤b≤1,(χi,b)1≤i≤μ,0≤b≤1>(7)。
進(jìn)一步的,作為本發(fā)明的浮點(diǎn)數(shù)全同態(tài)加密方法,步驟(3)具體如下:
令a,a′為隨機(jī)整數(shù)矩陣,生成規(guī)則如下:
其中ai,j,a′i,j∈(-2η,2η),
根據(jù)步驟(2)生成的密鑰和參數(shù),對(duì)(2)式中的明文s進(jìn)行加密,將明文元素d1、d2、…、dk打包存入矩陣m=[mi,j]1≤i,j≤μ,將明文mi,j加密,得到如下密文:
解密過(guò)程為:
1≤i,j≤μ,
進(jìn)一步的,作為本發(fā)明的浮點(diǎn)數(shù)全同態(tài)加密方法,步驟(4)具體如下:
a、按照步驟(2)中的規(guī)則生成私鑰sk={pu,v}1≤u,v≤μ和公鑰pk,具體包括:
若fl為任意浮點(diǎn)數(shù),則運(yùn)算[fl]表示fl四舍五入后的整數(shù);生成μ2個(gè)θ比特的二進(jìn)制私鑰向量su,v={su,v,0,…,su,v,θ-1},1≤u,v≤μ,θ為向量su,v中元素的個(gè)數(shù);
令每個(gè)私鑰向量的漢明重量為θ,即向量中有θ個(gè)元素為1,θ-θ個(gè)元素為0;令
令向量y=(y0,…,yθ-1),其中yi=ui/2γ+2,因此yi,0≤i≤θ-1均為小于2的有理正數(shù),且二進(jìn)制為精度均為γ+2,于是有下式成立:
其中εu,v為誤差參數(shù),且滿(mǎn)足|εu,v|<2-(γ+2);
則私鑰sk*為sk*={su,v}1≤u,v≤μ,公鑰pk*為pk*=(pk,y0,y1,…,yθ-1);
b、在步驟(3)加密的基礎(chǔ)上,將密文擴(kuò)展:令zi=c·yimod2,i=0,…,θ-1,令zi的二進(jìn)制精度為
該密文的解密過(guò)程如下:
將私鑰su,v,i用步驟(3)的部分同態(tài)加密方法,加密為密文αu,v,i,即為:
c、將該私鑰的密文放入上述公式(13)中與密文計(jì)算,即可得到噪聲更小的新密文,使同態(tài)計(jì)算能一直持續(xù)下去。
進(jìn)一步的,作為本發(fā)明的浮點(diǎn)數(shù)全同態(tài)加密方法,還包括同態(tài)性的驗(yàn)證步驟:
將明文mi,j,m′i,j分別加密為:
驗(yàn)證加法滿(mǎn)足同態(tài)性:
[(c+c′)modpi,j]2=mi,j+m′i,j(16)
驗(yàn)證乘法滿(mǎn)足同態(tài)性:
[(c·c′)modpi,j]2=mi,j·m′i,j(17)。
本發(fā)明采用以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下技術(shù)效果:
本發(fā)明解決了云計(jì)算實(shí)際應(yīng)用過(guò)程中要解決的兩個(gè)問(wèn)題:一是在數(shù)據(jù)保證機(jī)密性要求的前提下,云端服務(wù)器能夠直接對(duì)密文進(jìn)行運(yùn)算。二是針對(duì)如今數(shù)據(jù)量巨大,數(shù)據(jù)類(lèi)型豐富的現(xiàn)狀,該方法支持對(duì)于浮點(diǎn)數(shù)的同態(tài)加密,更加適用于一般情況。
附圖說(shuō)明
圖1是本發(fā)明的方法整體流程圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)說(shuō)明:
本技術(shù)領(lǐng)域技術(shù)人員可以理解的是,除非另外定義,這里使用的所有術(shù)語(yǔ)(包括技術(shù)術(shù)語(yǔ)和科學(xué)術(shù)語(yǔ))具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語(yǔ)應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣定義,不會(huì)用理想化或過(guò)于正式的含義來(lái)解釋。
本發(fā)明針對(duì)如今對(duì)于安全計(jì)算的需求,提出了一種可應(yīng)用于云計(jì)算環(huán)境的浮點(diǎn)數(shù)全同態(tài)加密方法,在密鑰生成階段,生成隨機(jī)私鑰,結(jié)合偽隨機(jī)函數(shù)用私鑰生成公鑰元素,生成隨機(jī)噪聲;在somewhat同態(tài)加密過(guò)程中,通過(guò)公鑰和明文進(jìn)行運(yùn)算,實(shí)現(xiàn)明文數(shù)據(jù)的部分同態(tài)加密;在全同態(tài)加密過(guò)程中,生成新參數(shù),將新參數(shù)與部分同態(tài)加密的密文進(jìn)行運(yùn)算,實(shí)現(xiàn)密文的擴(kuò)展,然后利用同態(tài)解密刷新原密文,生成噪聲更小的新密文,從而實(shí)現(xiàn)全同態(tài)加密。
如圖1所示,本發(fā)明具體包括以下步驟:
步驟一:浮點(diǎn)數(shù)的正規(guī)化表達(dá)式
記fl為要加密的任意浮點(diǎn)數(shù),則fl可以用四個(gè)整數(shù)表示,即為:
fl=(-1)s′·sig·2e-k(1)
其中s′表示符號(hào)位,當(dāng)s′=0時(shí),fl為正數(shù),當(dāng)s′=1時(shí),fl為負(fù)數(shù);e表示指數(shù),控制浮點(diǎn)數(shù)的數(shù)值范圍大??;k表示精度,即為浮點(diǎn)數(shù)的有效位數(shù),控制浮點(diǎn)數(shù)的精度大??;sig表示有效數(shù),滿(mǎn)足2k-1≤sig≤2k-1,且sig為整數(shù)。
步驟二:將十進(jìn)制明文轉(zhuǎn)化為二進(jìn)制的比特位明文
在浮點(diǎn)數(shù)fl以正規(guī)表達(dá)式表示的基礎(chǔ)上,將整數(shù)sig轉(zhuǎn)化為二進(jìn)制比特位形式,記為:
sig=d1d2…dk(2)
步驟三:對(duì)明文數(shù)據(jù)實(shí)現(xiàn)部分同態(tài)加密
首先生成密鑰。令μ2表示私鑰的個(gè)數(shù),η表示每個(gè)私鑰的比特位數(shù),生成μ2個(gè)η比特的隨機(jī)素?cái)?shù){pu,v}1≤u,v≤μ,即為
令ri,b,u,v,ωi,b,u,v,σi,b,u,v分別為三個(gè)噪聲參數(shù),ρ為噪聲參數(shù)的比特位數(shù)。
對(duì)于噪聲參數(shù)
φi,bmodpu,v=ri,b,u,v(3)
其中1≤i≤β,0≤b≤1,1≤u,v≤μ。β為第一個(gè)公鑰元素φi,0或φi,1的個(gè)數(shù)。
對(duì)于噪聲參數(shù)
πi,bmodpu,v=2ωi,b,u,v+δi,b,u,v·2ρ+1(4)
對(duì)于噪聲參數(shù)
χi,bmodpu,v=2σi,b,u,v+δi,b,u,v(5)
其中1≤i≤μ,0≤b≤1,1≤u,v≤μ,函數(shù)δi,b,u,v定義如下:
令私鑰集合為sk,則sk={pu,v}1≤u,v≤μ,公鑰集合為pk,則
pk=<φ0,(φi,b)1≤i≤β,0≤b≤1,(πi,b)1≤i≤μ,0≤b≤1,(χi,b)1≤i≤μ,0≤b≤1>(7)
令a,a′為隨機(jī)整數(shù)矩陣,生成規(guī)則如下:
其中ai,j,a′i,j∈(-2η,2η)。
根據(jù)上面生成的密鑰和參數(shù),對(duì)(2)式中的明文s進(jìn)行加密,將明文元素d1、d2、…、dk打包存入矩陣m=[mi,j]1≤i,j≤μ,將明文mi,j加密,得到如下密文:
解密過(guò)程為:
1≤i,j≤μ,
步驟四:壓縮解密電路,實(shí)現(xiàn)全同態(tài)加密
在步驟三的基礎(chǔ)上,生成新的密鑰和參數(shù)。首先按照步驟三中部分同態(tài)加密方案的規(guī)則生成私鑰sk={pu,v}1≤u,v≤μ和公鑰pk。若fl為任意浮點(diǎn)數(shù),則運(yùn)算[fl]表示fl四舍五入后的整數(shù)。生成μ2個(gè)θ比特的二進(jìn)制私鑰向量su,v={su,v,0,…,su,v,θ-1},1≤u,v≤μ,θ為向量su,v中元素的個(gè)數(shù)。令每個(gè)私鑰向量的漢明重量為θ,即向量中有θ個(gè)元素為1,θ-θ個(gè)元素為0。令
令向量y=(y0,…,yθ-1),其中yi=ui/2γ+2,因此yi,0≤i≤θ-1均為小于2的有理正數(shù),且二進(jìn)制為精度均為γ+2。于是有下式成立:
其中εu,v為誤差參數(shù),且滿(mǎn)足|εu,v|<2-(γ+2)。
則私鑰sk*為sk*={su,v}1≤u,v≤μ,公鑰pk*為pk*=(pk,y0,y1,…,yθ-1)。
在步驟三加密的基礎(chǔ)上,將密文擴(kuò)展,令zi=c·yimod2,i=0,…,θ-1,令zi的二進(jìn)制精度為
該密文的解密過(guò)程如下:
將私鑰su,v,i用步驟三的部分同態(tài)加密方法,加密為密文αu,v,i,即為:
將該私鑰的密文放入上述的解密電路中與密文計(jì)算,即可得到噪聲較小的新密文,使同態(tài)計(jì)算可以一直持續(xù)下去。
步驟五:同態(tài)性的驗(yàn)證
明文mi,j,m′i,j分別加密為:
加法滿(mǎn)足同態(tài)性:
[(c+c′)modpi,j]2=mi,j+m′i,j(16)
乘法滿(mǎn)足同態(tài)性:
[(c·c′)modpi,j]2=mi,j·m′i,j(17)
綜上所述,本發(fā)明首先將浮點(diǎn)數(shù)表示為正規(guī)表達(dá)式,然后將其進(jìn)行部分同態(tài)加密,壓縮解密電路,實(shí)現(xiàn)全同態(tài)加密。再上傳到云環(huán)境中,供使用者使用,在數(shù)據(jù)保密的基礎(chǔ)上,實(shí)現(xiàn)對(duì)數(shù)據(jù)的安全計(jì)算。
以下結(jié)合具體實(shí)例對(duì)本發(fā)明的原理做進(jìn)一步說(shuō)明:
步驟一:浮點(diǎn)數(shù)的正規(guī)化表達(dá)式
令浮點(diǎn)數(shù)x為2.25,即x=2.25,精度為20,即k=20。則x可用正規(guī)表達(dá)式表示為:
x=(-1)0·9·220·2-2-20(18)
步驟二:十進(jìn)制明文轉(zhuǎn)化位二進(jìn)制比特位
將表達(dá)式中的有效數(shù)部分轉(zhuǎn)化為二進(jìn)制形式,即
x=(-1)0·9·2-2(19)
則二進(jìn)制明文為9=1001。
步驟三:對(duì)密文數(shù)據(jù)實(shí)現(xiàn)部分同態(tài)加密
首先生成密鑰。生成隨機(jī)素?cái)?shù)p1,1=11,p1,2=13,p2,1=17,p2,2=19作為私鑰,π表示它們的乘積,即π=p1,1·p1,2·p2,1·p2,2=46189,令q0=23,則無(wú)差錯(cuò)公鑰元素φ0=q0·π=1062347,γ=20。將明文1001分成兩部分[0,0]、[1,1],用私鑰p1,1加密[0,0],用私鑰p1,2加密[1,1]。由以上參數(shù)計(jì)算第一類(lèi)公鑰元素:
由于第二類(lèi)公鑰元素需要滿(mǎn)足[πi,bmodp1,i]2=0,i=1,2,b=1,2,所以有:π1,0=13,π1,1=132,π2,0=143,π2,1=145。
第三類(lèi)公鑰元素需要滿(mǎn)足以下條件:
所以有χ1,0=78,χ1,1=221,χ2,0=66,χ2,1=209。
由p1,1加密的明文[0,0]打包加密為密文c1,由p1,2加密的明文[1,1]打包加密為密文c2。生成隨機(jī)整數(shù)矩陣a=(a1,a2)=(1,1),a′=(a1′,a2′)=(1,1),則可得密文如下:
將c1,c2解密可得:
解密正確。
步驟四:壓縮解密電路,實(shí)現(xiàn)全同態(tài)加密
在步驟三已有參數(shù)的基礎(chǔ)上,生成新的參數(shù),θ=2,θ=4,γ=20,令
即381300=u0+u1mod223,322639=u2+u3mod223,令
u0=4194304,u1=4575604,u2=4194304,u3=4516943(25)
可得公鑰元素
將步驟三中的密文c1,c2擴(kuò)展
zi,j小數(shù)點(diǎn)后的二進(jìn)制精度為2比特,其中i=1,2,j=0,1,2,3。
則擴(kuò)展后的密文為(-467324,0.00,0.00,0.00,0.00),(-436292,0.00,1.00,0.00,1.00)。
將擴(kuò)展密文解密可得:
解密正確。
利用解密電路同態(tài)解密,刷新密文,降低密文噪聲。首先將私鑰向量s1,1,s1,2加密,可得s1,1的密文向量為(-436292,-436292,-467324,-467324),s1,2的密文向量為(-467324,-467324,-436292,-436292)。輸入解密電路可得新密文分別為:
將新密文解密可得:
解密正確。
步驟五:同態(tài)性的驗(yàn)證
加法滿(mǎn)足同態(tài)性:
[(c1′+c3′)modp1]2=m1+m3=1(30)
乘法滿(mǎn)足同態(tài)性:
[(c1′·c3′)modp1]2=m1·m3=0(31)
以上所述僅是本發(fā)明的部分實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。