本發(fā)明涉及的是一種信息安全領域的技術,具體是一種基于系數(shù)映射變換的多項式完全同態(tài)加密方法及系統(tǒng)。
背景技術:
同態(tài)加密是這樣一種加密方法,即對經過同態(tài)加密的數(shù)據(jù)進行處理得到一個輸出,將這一輸出進行解密,其結果與用同一方法處理未加密的原始數(shù)據(jù)得到的輸出結果是一樣的。
1978年Rivest,Adleman and Dertouzos在On Data Banks and Privacy Homomorphisms.(Foundations of Secure Communication,pp.169‐177,Academic Press.)中首先提出了同態(tài)加密的概念,當時他們使用的術語是隱私同態(tài)(privacy homomorphism)。在這篇論文中Rivest等人同時提出了幾個候選的加密算法,具有同態(tài)運算的特性。多項式加密算法就是其中之一,雖然其具有原理簡單,實現(xiàn)容易,運算迅速等優(yōu)勢,但是由于極易受到明文攻擊,安全性沒有保障,因此無法直接使用。其他候選算法也很快發(fā)現(xiàn)安全隱患,同時又因為缺乏新的算法,該問題慢慢淡出了人們的視線。1991年同態(tài)加密問題再次被學術界所關注,F(xiàn)eigenbaum,Merritt的Open Questions,Talk Abstracts,and Summary of Discussions.(DIMACS Series in Discrete Mathematics and Theoretical Computer Science,Vol 2,pp.1‐45.)在回顧應用數(shù)學領域中幾個懸而未決的問題時重新提出了對這個重要問題的思考。但是之后的研究成果依舊寥寥無幾,毫無突破。
直到2009年,Craig Gentry在其博士論文A Fully Homomorphic Encryption Scheme中首度公開了一種基于理想格的同態(tài)加密算法,并正式使用了完全同態(tài)加密(Fully Homomorphic Encryption)的術語,這為之后該領域的研究奠定了基礎。該方法引入隨機噪聲用于加密,使用類似RSA算法的大數(shù)分解難題作為其安全性的基礎,并對每一步同態(tài)運算之后引入數(shù)據(jù)清洗操作,以使噪聲大小始終保持在不影響計算結果的范圍內。但是由于該算法十分復雜,運算過程繁復,并且針對明文的每一位(bit)進行加密,導致整體運算量十分巨大,同時其密文所需的存儲空間也相當龐大,因而很難應用到實際服務中。
其后幾乎所有的研究均圍繞著Craig的方法進行改進和加強。針對原方法計算量大、密文存儲空間大、密文擴展速度大等問題,作了大量深入的研究,也取得了不少研究成果。如Z.Brakerski,C.Gentry,and V.Vaikuntanathan.Fully Homomorphic Encryption without Bootstrapping.In ITCS 2012和Z.Brakerski and V.Vaikuntanathan.Efficient Fully Homomorphic Encryption from(Standard)LWE.In FOCS 2011(IEEE)基于原方法的框架提出了一種以誤差學習難題(LWE)作為安全基礎的BGV方法,減少了同態(tài)運算的計算量,使得噪音變量的增長更加緩慢,從而減少了數(shù)據(jù)清洗的操作。Lopez‐Alt,Tromer,Vaikuntanathan的On‐the‐Fly Multiparty Computation on the Cloud via Multikey Fully Homomorphic Encryption.(In STOC 2012 ACM)基于格上加密原理提出了LTV方法,也是以減少計算量,減緩噪音增長速度為優(yōu)化目標。Coron,Lepoin,Tibouchi的Batch Fully Homomorphic Encryption over the Integers(EUROCRYPT 2013Springer)在原方法的基礎上進行了改進,使得針對所有位的加密可以壓縮到同一個密文中,這樣有效的縮減了密文的大小,也一定程度上減少了計算量,但是卻無法有效控制噪音,因此仍舊需要數(shù)據(jù)清洗操作。
上面所列舉的研究成果,以及其他幾乎所有的研究均無法完全脫離Craig原方法的思路和框架,因此,雖然新的方法比原方法有了長足的改進,實際實施該算法需要消耗的計算資源和存儲資源仍然十分巨大,很難真正應用到實際服務中。這也是雖然需求明顯,但是至今全世界范圍尚未出現(xiàn)任何同態(tài)加密算法商業(yè)應用實例的原因。
技術實現(xiàn)要素:
本發(fā)明針對現(xiàn)有技術存在的上述不足,提出一種基于系數(shù)映射變換的多項式完全同態(tài)加密方法及系統(tǒng),在不泄露明文的情況下直接對密文進行運算,從而提供安全的數(shù)據(jù)存儲和運算環(huán)境。本發(fā)明基于改進的多項式同態(tài)加密原理,可以直接對任意整數(shù)或實數(shù)進行加密,并通過對多項式系數(shù)進行函數(shù)映射變換,將映射函數(shù)本身作為密鑰的一部分,依靠求解一般形態(tài)函數(shù)方程的困難性,消除了原方法的安全性隱患。其計算速度相對于現(xiàn)有技術有顯著提高,所要求的密文體積和擴張速度更小,更有利于各種方式的實現(xiàn),使得數(shù)據(jù)所有者可以放心地使用各種云計算服務而不必再擔心其敏感數(shù)據(jù)、保密數(shù)據(jù)會因此而泄露。云服務提供者也可以專心于實現(xiàn)客戶價值和提供優(yōu)質服務,而不必再擔心客戶會因為對數(shù)據(jù)安全的擔心而不敢使用其提供的服務。
本發(fā)明是通過以下技術方案實現(xiàn)的:
本發(fā)明涉及一種基于系數(shù)映射變換的多項式完全同態(tài)加密方法,首先將明文表達為指定映射函數(shù)的一組隨機取值、兩組隨機系數(shù)因子以及一個隨機常數(shù)組成的多項式,并將該多項式中的:指定映射函數(shù)的表達式與一組隨機系數(shù)因子作為密鑰;將另一組隨機系數(shù)因子、該映射函數(shù)的一組隨機自變量以及隨機常數(shù)作為可供同態(tài)運算的密文,通過對函數(shù)密鑰部分進行三種不同的映射后經過數(shù)值擬合,分別得到三個子函數(shù)構成的運算支持函數(shù)族,用于異地進行基于運算支持函數(shù)族的密文同態(tài)運算后返回本地通過密鑰進行解密。
本發(fā)明具體包括以下步驟:
步驟1、針對任意實數(shù)的明文P∈R,隨機選取實數(shù)向量A={ai|i∈I}以及Y={yi|i∈I},且滿足:
其中:實數(shù)向量X={xi|i∈I},B∈R,I為多項式密鑰維數(shù)下標集合,通常情況下I={1,2};f(xi)為函數(shù)密鑰部分,優(yōu)選復合函數(shù)f()為周期函數(shù)。
對應生成的密鑰為K={f(),Y},針對P的密文為:C={A,X,B}。
所述的數(shù)值擬合采用但不限于最小二乘法。
步驟2、在異地通過運算支持函數(shù)族G對密文之間或明文與密文之間進行同態(tài)運算得到密文同態(tài)運算結果Cr。
所述的同態(tài)運算包括:加、減、乘和除法及其任意組合。
步驟3、根據(jù)密文同態(tài)運算結果Cr代入密鑰K中的f和Y即可解密得到明文同態(tài)運算結果Pr。
本發(fā)明涉及一種實現(xiàn)上述方法的系統(tǒng),包括:客戶端和服務端,其中:
所述的客戶端用于生成密鑰K以及運算支持函數(shù)族G,并對明文P進行加密或對密文C進行解密操作;
所述的服務端用于接收密文C以及運算支持函數(shù)族G,并根據(jù)運算支持函數(shù)族G對所述密文進行同態(tài)運算操作。
所述的服務端優(yōu)選設有用于存儲密文的數(shù)據(jù)庫,進一步優(yōu)選設有與密文相對應的密文ID。
所述的同態(tài)運算操作包括:密文與明文或密文的四種基本運算,即加、減、乘、除法。
所述的密鑰K一旦生成,只存儲在客戶端,不允許外部程序或者非授權訪問者訪問密鑰,也不會以任何形式發(fā)送或者傳輸密鑰。因此,數(shù)據(jù)加密和解密運算都必需在客戶端本地完成。
所述的客戶端進一步優(yōu)選具有完備的密鑰訪問控制機制,例如密鑰保存在專有的加密存儲芯片中,讀取密鑰時需要訪問口令驗證、或指紋驗證等身份驗證手段確保訪問者擁有相應權限。
技術效果
與現(xiàn)有技術相比,本發(fā)明最大的改進在于同態(tài)運算的計算效率和密文存儲空間需求:本發(fā)明加密算法的明文空間為整個實數(shù)集R,密文空間為Rn,n=5時即可以提供足夠的安全性。整個密文存儲空間的需求大大小于現(xiàn)有技術。針對普通數(shù)值類型的明文,加密算法只要進行一 次計算就可以得到密文,而現(xiàn)有技術則需要進行反復迭代運算,這大大加快了加密解密的運算速度。同時,針對密文的同態(tài)運算,本發(fā)明方法的運算過程也具有更快的速度,更少的迭代步驟,運算結果的密文擴展速度也大大小于現(xiàn)有技術。
此外,在云計算服務被廣泛應用的大背景下,本發(fā)明的同態(tài)加密技術可以使得數(shù)據(jù)的真實取值僅對擁有密鑰的數(shù)據(jù)所有者可見,而對于不能保證其安全性的數(shù)據(jù)存儲方、數(shù)據(jù)傳輸管道和數(shù)據(jù)運算方,均以密文的形式出現(xiàn),存儲、傳輸和運算提供方只提供對應的存儲空間、傳輸帶寬和計算能力,卻完全不知道數(shù)據(jù)的真實取值。計算的結果仍舊用密文表達,數(shù)據(jù)擁有者憑借密碼就可以進行解密,從而得到所要的正確結果。
附圖說明
圖1為本發(fā)明基本應用示意圖。
圖2為本發(fā)明密鑰生成過程示意圖。
圖3為實施例數(shù)據(jù)加密過程示意圖。
圖4為實施例密文同態(tài)運算過程示意圖一。
圖5為實施例密文同態(tài)運算過程示意圖二。
圖6為實施例數(shù)據(jù)解密過程示意圖。
具體實施方式
下面對本發(fā)明的實施例作詳細說明,本實施例在以本發(fā)明技術方案為前提下進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
實施例1
本發(fā)明對應于不同的需求環(huán)境和應用場景可采用多種方式實現(xiàn),包括:USBKey實現(xiàn)方式、API實現(xiàn)方式、SDK實現(xiàn)方式、芯片實現(xiàn)方式、擴展卡實現(xiàn)方式、專用設備實現(xiàn)方式等。如圖1和圖2所示,任意一種實現(xiàn)方式中均包括:客戶端和服務器端,典型的同態(tài)加密運算過程的步驟如下:
1)客戶端調用本地存儲的密鑰對敏感明文數(shù)據(jù)進行加密,獲得密文;
2)客戶端將密文以及運算要求發(fā)送到服務端,密鑰保留于客戶端;
3)服務端調用對應的運算支持函數(shù)族,并使用同態(tài)運算功能,對客戶端上傳的密文進行其所要求的運算操作,隨后返回運算結果密文;
4)客戶端接收結果密文,調用本地密鑰進行解密,并輸出結果明文。
這樣的過程中,密鑰和明文數(shù)據(jù)僅僅出現(xiàn)在客戶端,而整個傳輸、運算、存儲操作中數(shù)據(jù)始終以密文的形式存在,因此不存在數(shù)據(jù)泄露的可能。
以下就上述同態(tài)加密運算進行詳細說明:
第一步、在客戶端生成由函數(shù)密鑰部分以及多項式密鑰部分組成的密鑰,具體如下:
1.1)隨機選擇若干種一元或多元函數(shù),并針對每個一元或多元函數(shù)隨機生成參數(shù)進行線性組合或者復合組合,形成函數(shù)密鑰部分,即f()。
所述的一元函數(shù)包括但不限于:各種解析函數(shù),例如:正比例函數(shù)、反比例函數(shù)、正弦函數(shù)、余弦函數(shù)、對數(shù)函數(shù)、指數(shù)函數(shù)、冪函數(shù)等。
如采用一元正弦函數(shù)sin(x)和一元冪函數(shù)x3進行線性組合可以組成函數(shù)密鑰f(x)=10sin(6x)+5x3,也可以進行復合組合得到函數(shù)密鑰f(x)=12sin(8x3+6)。
當需要提高加密強度時,可以選擇二元或多元函數(shù)構成函數(shù)密鑰部分,以二元函數(shù)為例:f(mi,nj),i∈I,j∈I,相應的密文會多一個維度,即C={A,M,N,B},同時運算支持函數(shù)族G會變得更加復雜,相應密鑰強度更高,但是相應運算量也更大。
所述的函數(shù)密鑰部分是一個可微的函數(shù),同時其定義域內取值應該大于0。
本實施例中優(yōu)選采用變化相對平緩的函數(shù)密鑰部分。
所述的變化是指:其中:D為f()的定義域,K為正實數(shù)即平緩指數(shù)。
本實施例中優(yōu)選平緩指數(shù)小于等于10。
本實施例中通過在客戶端中實現(xiàn)的密鑰生成算法中預置一個符合要求的基礎函數(shù)列表,在生成時可以隨機的組合這些基礎函數(shù),來獲得函數(shù)密鑰部分的函數(shù)形式。
1.2)隨機生成多項式密鑰部分Y={yi|i∈I},從而構成完整密鑰,即K={f(),Y}。
本實施例中優(yōu)選要求多項式密鑰部分yi均為正整數(shù)。
所述的密鑰可以保存在客戶端本地的任何加密介質中,例如加密文件,加密芯片,U盾或者其他同類存儲器內。
1.3)客戶端或服務器端通過函數(shù)擬合生成運算支持函數(shù)族G={g1,g2,g3},并由服務器端保存,由于每個運算支持函數(shù)族G都是與一個函數(shù)密鑰部分相對應的,在服務端在收到運算支持函數(shù)族G的同時,需要記錄其所對應的用戶,即密文發(fā)送端的唯一標識。
所述的擬合生成可以直接在客戶端進行,并將擬合結果,即運算支持函數(shù)族G的表達式傳輸?shù)椒掌鞫耍灰部梢栽诳蛻舳诉M行運算支持函數(shù)族G的離散采樣,并將采樣點數(shù)據(jù)輸出至服務器端,由服務器端根據(jù)局部擬合策略或者動態(tài)局部擬合策略計算得到運算支持函數(shù)族G;
由于計算機運算時,針對浮點數(shù)的運算有一個精度的問題。因此所述的擬合可根據(jù)具體硬件設置在初始化時設置所需的精度。
所述的運算支持函數(shù)族G包括
其中:α、β∈X,h1(α,β)和h2(α,β)為滿足h1(α,β)≠h2(α,β)≠α≠β的任意函數(shù)。
本實施例中取h1=α+β+1,h2=α+β+2,α>0,β>0。
所述的運算支持函數(shù)族G優(yōu)選不以表達式的形式出現(xiàn)以提高本發(fā)明的安全性;進一步優(yōu)選為以數(shù)值擬合的方式表達運算支持函數(shù)族G。
在某些情況下,例如函數(shù)密鑰部分f本身不夠復雜時,仍可以通過一些運算量十分巨大的方法進行一定程度的破解,通過運算支持函數(shù)族G局部還原出函數(shù)密鑰部分f。因此可以定義各種G的變形,來提高安全性,這樣的變形可以有很多種。
所述的數(shù)值擬合是指:通過對運算支持函數(shù)族G的定義域進行廣泛、密集的離散采樣,記錄每個采樣點所對應的G的取值,然后通過曲面擬合技術對G進行近似表達;本實施例中使用曲面擬合技術以及數(shù)值計算技術實現(xiàn),例如使用最小二乘法進行曲面擬合。
當運算支持函數(shù)族G的曲面過于復雜,所述的數(shù)值擬合可以采用局部擬合再拼接或者采用動態(tài)局部擬合的策略得到,即在需要進行求值運算時,針對求值點附近的曲面鄰域做局部曲面擬合,得到最終的取值。
僅僅通過運算支持函數(shù)族G的擬合表達式或者離散取值點信息,在不知道原函數(shù)f具體形式的情況下,要還原出f的表達式是非常困難的。這也是本發(fā)明加密方法的安全性保障之一。
這里所描述的是密鑰生成過程,即客戶端初始化過程。該過程只在某用戶第一次使用本系統(tǒng)前進行初始化,以后使用中只需直接訪問已生成的密鑰即可。
第二步、如圖3所示,通過上述生成的密鑰對敏感數(shù)據(jù)進行加密,具體如下:
本實施例中需要加密的數(shù)據(jù)為一個產品的生產成本P1和該產品的一個銷售合同總報價P2,這兩個數(shù)據(jù)都是浮點型數(shù)值數(shù)據(jù)。
2.1)針對函數(shù)密鑰部分f(),在其定義域中隨機選擇一個自變量xi,得到該點的函數(shù)值f(xi),然后乘以多項式密鑰的對應分量,得到f(xi)·yi,i∈I且I為多項式密鑰維度的下標集合。
所述的多項式密鑰維度的集合內的每一個元素是一個正整數(shù),最大取值為2就可以滿足 安全性要求,可以視加密強度要求進行增加,一般建議最大取值不要超過10。如果最大取值為4,則I等于集合{1,2,3,4}。
2.2)隨機選取ai,得到密文多項式的一個項,ai·f(xi)·yi。
2.3)重復步驟2.1~2.2,直到遍歷集合I,并最終得到
2.4)通過公式1)得到B,至此,密文的所有分量A={ai|i∈I}、X={xi|i∈I}以及B均已得到。使用該過程得到前述明文P1、P2對應的密文C1、C2。
當所述的函數(shù)密鑰部分為二元函數(shù)時,則對應的密文為C={A,M,N,B},相應加密強度得到大幅度提升。
第三步、如圖5所示,當服務器端獲得多個密文后,基于保存于服務器端的運算支持函數(shù)族G對密文進行包括加、減、乘、除的同態(tài)運算。
i)以同態(tài)運算中的加減法為例。假設某企業(yè)需要計算產品銷售合同的毛利,其中,產品的生產成本為敏感數(shù)據(jù),其密文為C1;合同的總報價為敏感數(shù)據(jù),其密文為C2;產品銷售數(shù)量為公開招標的非敏感數(shù)據(jù),無需加密,其取值為100,則可以計算得到該合同的毛利為密文C3,即C3=C2-100·C1,服務器通過依次計算100·C1和C2-100·C1,即可得到毛利C3,即C3={A3,X3,B3},其中:
A3={a3i|i∈I},a3i=a2i·g2(x1i,x2i)-100·a1i·g1(x1i,x2i)
X3={x3i|i∈I},x3i=h1(x2i,x1i)
B3=B2-100·B1
所述的同態(tài)加密計算的結果可以以密文方式保存在數(shù)據(jù)庫中,并且在之后的其他運算中使用,而不需要了解該密文的真實取值,只需要在表單顯示或者報表打印時,針對擁有密鑰的授權用戶,在客戶端調用解密算法,還原出明文即可。
ii)以同態(tài)運算中的乘法為例,假設某企業(yè)同時與若干客戶簽訂內容相同的上述產品銷售合同,其合同數(shù)量為敏感數(shù)據(jù),密文為C4,則總的毛利C5為:C5=C3·C4,C5={A5,X5,B5},其中:
A5={a5ij|i∈I,j∈I}∪{B4·a3i|i∈I}∪{B3·a4j|j∈I},a5ij=a3i·a4j·g3(x3,x4)
X5={x5ij|i∈I,j∈I}∪{x3i|i∈I}∪{x4j|j∈I},x5ij=h2(x3i,x4j)
B5=B3·B4
iii)以同態(tài)運算中的除法為例,使用多項式除法運算法則,引入分式表達,增加分母多項式之后,把除法轉化為加法和乘法的組合,最終得到計算結果。因此,在有除法運算的環(huán)境下,更加一般的明文表達式應該是分式形式如:
密文具體表達為:
Ca={A1,X1,B1,A2,X2,B2}
Cb={A3,X3,B3,A4,X4,B4}
則除法Cr=Ca/Cb的結果Cr={A5,X5,B5,A6,X6,B6}是:
A5={a5ij|i∈I,j∈I}∪{B3·a1i|i∈I}∪{B1·a3j|j∈I},a5ij=a1i·a3j·g3(x1,x3)X5={x5ij|i∈I,j∈I}∪{x1i|i∈I}∪{x3j|j∈I},x5ij=h2(x1i,x3j)B5=B1·B3
A6={a6ij|i∈I,j∈I}∪{B4·a2i|i∈I}∪{B2·a4j|j∈I},a6ij=a2i·a4j·g3(x2,x4)X6={x6ij|i∈I,j∈I}∪{x2i|i∈I}∪{x4j|j∈I},x6ij=h2(x2i,x4j)B6=B2·B4
分式形態(tài)下,進行密文同態(tài)加法運算時,需要先進行通分,即一個密文的分子部分乘以另一個密文的分母部分作為新的分子,然后與同樣運算后的另一個密文的新的分子部分進行加法運算,得到結果的分子。同時,將兩個密文的分母部分相乘作為結果的分母,化簡后得到最終結果。
分式形態(tài)下,進行密文同態(tài)乘法運算時,將兩個密文的分子部分與分母部分分別相乘,作為新的分子和分母,化簡后得到最終結果。
第三步中的服務器端在進行同態(tài)運算時,可采用基于密文ID的方式經檢索到預存的密文后進行同態(tài)計算,或直接通過接受客戶端發(fā)出的密文和運算符進行同態(tài)計算。
所述的密文ID是指對應預存密文的ID號碼,該ID號碼優(yōu)選保存于客戶端。
如圖4所示,為使用密文ID的同態(tài)運算過程,其具體步驟包括:
1)客戶端獲取運算指令,包含需要參與運算的密文ID,以及需要進行的運算操作符和其他參數(shù)。
2)發(fā)送密文ID、同態(tài)運算操作符和運算參數(shù)到服務端,用以檢索出對應的密文,等待進行運算,服務端收到指令后,首先讀取對應的運算支持函數(shù)族,然后根據(jù)運算指令對前一步檢索出的密文進行同態(tài)運算。
3)服務端將同態(tài)運算的結果返回運算請求方,該運算結果仍舊是密文的形式。
如圖5所示,為直接使用密文,而非密文ID的同態(tài)運算過程,其具體步驟包括:
i)獲取運算指令,包含待運算的密文,運算操作符,以及其他參數(shù)。
ii)將密文、運算操作符、運算參數(shù)等數(shù)據(jù)發(fā)送到服務端。
iii)服務端獲取運算指令后,讀取對應的運算支持函數(shù)族,并完成對密文的運算要求,得到運算結果密文。
iv)服務端將運算結果返回給運算請求方。
第四步、如圖6所示,當客戶端獲得來自服務器端的同態(tài)運算后的結果密文時,將結果密文代入加密公式(1)中,即可獲得對應的明文結果。
當原始明文數(shù)據(jù)為數(shù)值型,則上一步的解密結果即是最終結果,否則還需要進行類型轉換,才能得到最終解密結果。
實施例2
本實施例與實施例1不同之處在于,其采用的運算支持函數(shù)G包括:
其中:α、β∈X,h1(α,β)、h2(α,β)和h3(α,β)為滿足h1(α,β)≠h2(α,β)≠h3(α,β)≠α≠β的任意函數(shù);
對應的同態(tài)運算具體包括:
i)密文與密文的加減法:Cr=C2±C1,Cr={Ar,Xr,Br},其中:
Xr={xri|i∈I},xri=h1(x2i,x1i),
Br=B2±B1;
ii)密文與密文的乘法:Cr=C3·C4,Cr={Ar,Xr,Br},其中:
Ar={arij|i∈I,j∈I}∪{B4·a3i|i∈I}∪{B3·a4j|j∈I},arij=a3i·a4j·g2(x3,x4),
Xr={xrij|i∈I,j∈I}∪{x3i|i∈I}∪{x4j|j∈I},xrij=h2(x3i,x4j),
Br=B3·B4;
iii)密文與密文的除法:Cr=Ca/Cb,Cr={A5,X5,B5,A6,X6,B6},其中:
A5={a5ij|i∈I,j∈I}∪{B3·a1i|i∈I}∪{B1·a3j|j∈I},a5ij=a1i·a3j·g2(x1,x3),
X5={x5ij|i∈I,j∈I}∪{x1i|i∈I}∪{x3j|j∈I},x5ij=h2(x1i,x3j),
B5=B1·B3,
A6={a6ij|i∈I,j∈I}∪{B4·a2i|i∈I}∪{B2·a4j|j∈I},a6ij=a2i·a4j·g2(x2,x4),
X6={x6ij|i∈I,j∈I}∪{x2i|i∈I}∪{x4j|j∈I},x6ij=h2(x2i,x4j),
B6=B2·B4。
在本實施例中,g1變?yōu)槿瘮?shù),相應的其擬合計算量就會增加不少,對f的平緩度和復雜度要求也更高,但是對應的安全性較二元函數(shù)也會大幅提高。
實施例3
本實施例為了提高安全性,在生成運算支持函數(shù)G時引入函數(shù)f2,這個函數(shù)不需要添加至密鑰中,僅僅影響運算支持函數(shù)G的計算和表達,可以理解為對運算支持函數(shù)G做了加密。
具體表達式如下:其中:α、β∈X,h1(α,β)、h2(α,β)、h3(α,β)和h4(α,β)為滿足h1(α,β)≠h2(α,β)≠h3(α,β)≠h4(α,β)≠α≠β的任意函數(shù);f2()為用于對運算支持函數(shù)進行加密的隨機生成函數(shù),
對應的同態(tài)運算具體包括:
i)密文與密文的加減法:Cr=C2±C1,Cr={Ar,Xr,Br},其中:Ar={ari|i∈I},
ari=g6·[a2i·g1(x2i,x1i)·g3(h1(x2i,x1i),h2(x2i,x1i))±a1i·g2(x2i,x1i)·g4(h1(x2i,x1i),h2(x2i,x1i))],
Xr={xri|i∈I},
xri=h6(h4(h1(x2i,x1i),h2(x2i,x1i)),h3(h1(x2i,x1i),h2(x2i,x1i))),
Br=B2±B1;
ii)密文與密文的乘法:Cr=C3·C4,Cr={Ar,Xr,Br},其中:
Ar={arij|i∈I,j∈I}∪{B4·a3i|i∈I}∪{B3·a4j|j∈I},arij=a3i·a4j·g5(x3,x4),
Xr={xrij|i∈I,j∈I}∪{x3i|i∈I}∪{x4j|j∈I},xrij=h5(x3i,x4j),
Br=B3·B4;
iii)密文與密文的除法:Cr=Ca/Cb,Cr={A5,X5,B5,A6,X6,B6},其中:
A5={a5ij|i∈I,j∈I}∪{B3·a1i|i∈I}∪{B1·a3j|j∈I},a5ij=a1i·a3j·g5(x1,x3),
X5={x5ij|i∈I,j∈I}∪{x1i|i∈I}∪{x3j|j∈I},x5ij=h5(x1i,x3j),
B5=B1·B3,
A6={a6ij|i∈I,j∈I}∪{B4·a2i|i∈I}∪{B2·a4j|j∈I},a6ij=a2i·a4j·g5(x2,x4),
X6={x6ij|i∈I,j∈I}∪{x2i|i∈I}∪{x4j|j∈I},x6ij=h5(x2i,x4j),
B6=B2·B4。
這樣的運算支持函數(shù)G可以避免對三元函數(shù)進行擬合的龐大運算量,同時也大大提高了安全性。其中,f2僅在初始化過程中計算G的時候隨機生成,對f2的形式要求盡量簡單,避免使用過于復雜的表達式。同時f2的表達式既不需要保存在客戶端,也不需要保存在服務器端,因此在初始化過程后可以直接丟棄。這樣既不影響客戶端的加密、解密操作,也不影響服務器端的同態(tài)運算操作,因此這種情況下G的安全性就非常高,想要通過G還原出函數(shù)密鑰f的難度將更大。