本發(fā)明涉及一種云計算環(huán)境中的全同態(tài)加密方法,屬于信息安全技術(shù)領(lǐng)域。
背景技術(shù):
隨著計算機技術(shù)的高速發(fā)展,云計算、大數(shù)據(jù)等概念逐漸被人們所認識、接受,成為人們生活中的一部分;移動化浪潮的到來更是通過手機等移動終端將用戶全都連接到云端,用戶的個人隱私數(shù)據(jù)也更多地存儲在了應(yīng)用服務(wù)提供商的服務(wù)器中。隨著越來越多的隱私數(shù)據(jù)和個人信息匯集存儲到應(yīng)用提供商服務(wù)器,以及云安全事故的頻發(fā),大數(shù)據(jù)、云計算以及隱私保護等問題逐漸成為熱門話題。來自外部的攻擊者或內(nèi)部“不懷好意”的數(shù)據(jù)庫管理員都可能造成用戶隱私信息的泄露,給用戶造成困擾和不便。如何保證存儲在不可信云端服務(wù)器中數(shù)據(jù)的安全性,尤其是用戶敏感隱私數(shù)據(jù),逐漸成為熱門問題。
一種解決方案是使用hom(homomorphicencryption,同態(tài)加密方法)。hom是一種安全的概率加密方案(ind-cpa安全),不同于以往秉承“數(shù)據(jù)存儲安全”理念的加密算法,同態(tài)加密的關(guān)鍵之處在于其關(guān)注點為“數(shù)據(jù)處理安全”,允許人們直接對密文進行特定的數(shù)學(xué)運算操作,但是處理過程不會泄露任何原始內(nèi)容。只有持有密鑰的用戶才可以解密密文,獲得期待的計算結(jié)果。同態(tài)加密技術(shù)為云計算技術(shù)提供了安全保障:用戶將數(shù)據(jù)及對數(shù)據(jù)的操作權(quán)委托給第三方而不泄露自身隱私,保證了自身數(shù)據(jù)的安全性。hom理論上允許服務(wù)器端對加密后的密文數(shù)據(jù)進行任意的操作,且服務(wù)器端永遠存儲密文,除了擁有解密密鑰的用戶外其他人無法查看明文信息。這一特性適用于云計算場景,滿足將計算托付給云端計算資源的需求,兼顧數(shù)據(jù)安全性和實用性。
現(xiàn)有同態(tài)加密方案大多僅支持整數(shù)型的同態(tài)運算,不支持浮點型數(shù)據(jù)同態(tài)運算,因此無法滿足實際應(yīng)用需求。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是針對背景技術(shù)的缺陷,提供一種云計算環(huán)境中對隱私數(shù)據(jù)進行加密保護的支持浮點運算的并行全同態(tài)加密方案。通過使用本發(fā)明提出的并行加密方法,可以提高數(shù)據(jù)的加解密速度。
本發(fā)明為解決上述技術(shù)問題采用以下技術(shù)方案:
一種云計算環(huán)境中支持浮點運算的并行全同態(tài)加密方法,包括以下步驟:
步驟一:對待加密數(shù)據(jù)文件分片:
記需要加密文件中包含的明文長度為l,將明文分成b塊,每一塊的大小為li,1≤i≤b,且要求li為8字節(jié)的整倍數(shù),記為li=8n,n為正整數(shù);這樣前b-1塊為等長的數(shù)據(jù)塊,第b塊為剩余部分數(shù)據(jù),即:
步驟二:采用隨機方式和算法約束條件,生成用于加密的密鑰向量:
在加密文件中的浮點數(shù)數(shù)據(jù)之前,根據(jù)全同態(tài)浮點數(shù)加密方案的密鑰約束條件,生成加密密鑰向量;密鑰向量分為兩部分,記為k和s,每個向量包含n個元素,n為正整數(shù),密鑰由隨機函數(shù)生成的隨機浮點數(shù)組成,具體密鑰約束條件如下:
密鑰第一部分為向量k,其中每一個元素滿足:
ki≠0for1≤i≤n(2)
密鑰第二部分為向量s,其中每一個元素滿足:
密鑰生成操作執(zhí)行完成之后,需要按照約束條件進行檢查。如果生成的密鑰不滿足約束條件,則需要重新生成密鑰,直至滿足上述條件;
步驟三:使用用戶密鑰對文件分片內(nèi)的浮點數(shù)數(shù)據(jù)進行加密:
依次在分片的明文中取出一個浮點數(shù)明文數(shù)據(jù),記為m,經(jīng)過加密密鑰的加密操作,添加一定的隨機噪聲,記為r和p,得到加密結(jié)果的順序密文向量c′=[c1,…,ci,…,cn],計算過程為:
其中i代表子密文的序號,c1,c2,…,cn分別為明文m加密后的第1、2、…、n個子密文,在上述加密操作中,所有的噪聲部分r和p,組成了兩個數(shù)量均為n-1的噪聲集合;
步驟四:子密文亂序存儲:
定義映射函數(shù)f:
將順序密文c′的第i個子密文ci按照函數(shù)f的映射結(jié)果,映射為亂序密文的第j個子密文,記為
因此,子密文ci和
由公式(6)可知,函數(shù)f維系著順序密文c′和亂序密文c″子密文之間的關(guān)系;
最后,使用aes加密算法,將集合j加密,作為子密文cn+1,亂序密文c″和子密文cn+1即為明文m最終的加密結(jié)果,記為
進一步的,本發(fā)明的并行全同態(tài)加密方法,步驟二中,n的大小由用戶指定,且n越大算法安全性越高,相應(yīng)的也會占用更多的存儲空間。
進一步的,本發(fā)明的并行全同態(tài)加密方法,步驟三中,隨機噪聲r和p的取值范圍是:-1000<r<1000,-1000<p<1000。
本發(fā)明提出一種基于并行全同態(tài)加密方法的解密方法,步驟如下:
解密子密文cn+1,得到集合j,建立子密文與密鑰的對應(yīng)關(guān)系,通過公式(6)確定子密文
計算密鑰第二部分的向量s的前n-1個元素的和值,記為s:
之后求解明文值m:
進一步的,本發(fā)明還提出一種基于并行全同態(tài)加密方法實現(xiàn)加法同態(tài)加密的方法,將密文的同態(tài)加法操作定義為向量加,假設(shè)兩個明文數(shù)據(jù)為m1和m2,加密后的密文數(shù)據(jù)分別記為c1和c2:
首先解密子密文c1(n+1)、c2(n+1)得到函數(shù)f的映射結(jié)果集合j1和j2,通過公式(6)確定密文c1對應(yīng)的順序密文c′1中的第i個子密文為
重復(fù)公式(6)的步驟,逐漸將密文c1和c2分別還原為順序密文c1′和c2′;
此時,得到順序密文c1′和c2′對應(yīng)位置相加后的結(jié)果密文[c11+c21,…,c1n+c2n],將c1i+c2i記為c3i,并將順序密文和值記為c3′=[c11+c21,…,c1n+c2n]=[c31,…,c3n];由映射函數(shù)f生成一種新的映射方式j(luò)3,并將順序密文的和值c3′的子密文按照j3打亂順序,同時通過aes算法加密j3后作為子密文c3(n+1),最終得到加法結(jié)果為:
進一步的,本發(fā)明還提出一種基于并行全同態(tài)加密方法實現(xiàn)乘法同態(tài)加密的方法,步驟如下:
假設(shè)兩個明文數(shù)據(jù)為m1和m2,加密后的密文數(shù)據(jù)分別記為c1和c2:
密文c1和c2的乘積為對應(yīng)的亂序密文c″1和c″2的外積,具體表達式如下:
求外積的過程中,c1(n+1)、c2(n+1)不參與計算,得到n*n的密文矩陣;
對密文矩陣以行或者列為單位,進行解密操作,此處按行解密,即:
最終得到同態(tài)乘法的結(jié)果密文:
密文c*即為密文乘法的結(jié)果,其子密文順序與密文c1一樣,同理可知,如果按列解密,密文c*的子密文順序與密文c2保持一致。
本發(fā)明采用上述技術(shù)手段,與現(xiàn)有技術(shù)相比,具有以下技術(shù)效果:
本發(fā)明設(shè)計出一種支持浮點運算的并行全同態(tài)加密方案。下面安全性及效率這兩個角度說明本發(fā)明的有益效果。
一、安全性分析
本發(fā)明通過使用一種簡化的代數(shù)方程式實現(xiàn)全同態(tài)加密方案,通過增加一定量的隨機噪聲保障底層明文信息的安全性。本發(fā)明中的全同態(tài)加密方案可以實現(xiàn)任意深度同態(tài)加法和同態(tài)乘法,且同態(tài)操作后的密文不會發(fā)生膨脹,依然維持原密文大小n,因此本方案具有緊湊特性。
最后,對得到的密文序列進行隨機重排操作,使攻擊者無法定位子密文和密鑰的對應(yīng)關(guān)系,無法在線性時間復(fù)雜度內(nèi)破解密鑰,進一步加強全同態(tài)加密方案的安全性,保障密文信息的安全。
二、效率分析
本發(fā)明中的全同態(tài)方案基于簡化后的代數(shù)關(guān)系式實現(xiàn)全同態(tài)操作,安全性依賴于近似最大公約數(shù)問題(agcd)。以往工作中的全同態(tài)加密方案通常基于理想格、環(huán)等方案,操作復(fù)雜,難以實現(xiàn),效率較低。本發(fā)明的同態(tài)方案中的相關(guān)同態(tài)操作以多項式操作和向量操作實現(xiàn),比基于理想格、環(huán)等問題的方案簡單明了,效率優(yōu)于常見的同態(tài)加密。除此之外,本發(fā)明將此算法擴展成可以在并行計算框架上運行的并行版本算法,進一步提升了算法的執(zhí)行效率,更好地適應(yīng)云計算系統(tǒng)。
附圖說明
圖1是加密方案的流程圖。
具體實施方式
下面對技術(shù)方案的實施作進一步的詳細描述:
本發(fā)明針對云計算環(huán)境中需要對隱私數(shù)據(jù)進行隱私保護和計算的安全問題,提出了一種適用于云計算環(huán)境的并行全同態(tài)浮點數(shù)加密方法,其思路是:數(shù)據(jù)文件的所有者將待加密文件先進行分片操作,以供并行計算框架,如spark集群并行加密。然后并行地對明文分片進行加密操作,以保護云計算環(huán)境中用戶數(shù)據(jù)的隱私性,同時提供密文計算功能。
本發(fā)明通過一種簡化的代數(shù)關(guān)系式對數(shù)據(jù)進行同態(tài)加密操作,同時為了增強其安全性,通過一種隨機映射關(guān)系,使破解難度超過了線性時間復(fù)雜度。為了進一步說明技術(shù)方案,本發(fā)明首先給出相關(guān)符號定義與假設(shè),然后再給出技術(shù)方案詳細過程。
一、相關(guān)符號定義與假設(shè)
云計算環(huán)境中,用戶敏感數(shù)據(jù)需要進行加密以保障用戶的隱私信息安全。同態(tài)方案是一種既可以保護數(shù)據(jù)安全,同時又提供安全計算服務(wù)的加密算法,因此可以和云計算環(huán)境結(jié)合,為用戶提供安全的服務(wù)。
假設(shè)待加密文件的長度為l,分片過程中,將明文分成b片,每一塊的大小為li,1≤i≤b。算法初始化過程中,為用戶生成包含n個元素的密文向量k和s,均滿足算法約束條件。在加密過程中,對于前n-1個子密文ci,每一個子密文計算過程中,需要生成相應(yīng)的隨機噪聲pi和ri,而對于最后一個子密文分片,只涉及密鑰和前n-1個子密文的噪聲,不需要另外生成自己的噪聲。所有n個子密文分片組成的向量即為結(jié)果密文c′。最終,所有的子密文通過隨機映射函數(shù)f將結(jié)果密文c′重排為c″,并將映射關(guān)系通過確定性加密算法,如aes算法,加密后作為子密文cn+1與亂序密文c″一同作為結(jié)果密文c存儲到云端進行存儲。
二、方法流程
本發(fā)明提出一種云計算環(huán)境中支持浮點運算的全同態(tài)加密方案,參考圖1所示,該方法包括以下步驟:
步驟一:對待加密數(shù)據(jù)文件分片
記需要加密文件中包含的明文長度為l,將明文分成b塊,每一塊的大小為li,1≤i≤b,且要求li為8字節(jié)的整倍數(shù),記為li=8n,n為正整數(shù);這樣前b-1塊為等長的數(shù)據(jù)塊,第b塊為剩余部分數(shù)據(jù),即:
步驟二:采用隨機方式和算法約束條件,生成用于加密的密鑰向量
在加密文件中的浮點數(shù)數(shù)據(jù)之前,根據(jù)全同態(tài)浮點數(shù)加密方案的密鑰約束條件,生成加密密鑰向量。密鑰向量分為兩部分,記為k和s,每個向量包含n個元素,n為正整數(shù)。n的大小由用戶指定,且n越大算法安全性越高,相應(yīng)的也會占用更多的存儲空間。密鑰由隨機函數(shù)生成的隨機浮點數(shù)組成。具體密鑰約束條件如下:
密鑰第一部分為向量k,其中每一個元素滿足:
ki≠0for1≤i≤n(2)
密鑰第二部分為向量s,其中每一個元素滿足:
密鑰生成操作執(zhí)行完成之后,需要按照約束條件進行檢查。如果生成的密鑰不滿足約束條件,則需要重新生成密鑰,直至滿足上述條件。
步驟三:使用用戶密鑰對文件分片內(nèi)的浮點數(shù)數(shù)據(jù)進行加密
在為用戶生成了滿足約束條件的加密密鑰向量后,接著進行明文數(shù)據(jù)的加密。加密操作是依次在分片的明文中取出一個浮點數(shù)明文數(shù)據(jù),記為m,經(jīng)過加密密鑰的加密操作,添加一定的隨機噪聲,記為r和p,其中-1000<r<1000,-1000<p<1000。得到加密結(jié)果的順序密文向量,記為c′,計算過程為:
其中i代表子密文的序號,c1,c2,…,cn分別為明文m加密后的第1、2、…、n個子密文。在上述加密方法中,所有的噪聲部分r和p,組成了兩個數(shù)量均為n-1的噪聲集合。
步驟四:子密文亂序存儲
當(dāng)明文m經(jīng)過步驟三的加密操作后,得到順序密文向量c′=[c1,…,ci,…,cn]。定義映射函數(shù)f:
將順序密文c′的第i個子密文ci按照函數(shù)f的映射結(jié)果,映射為亂序密文的第j個子密文,記為
因此,子密文ci和
由公式(6)可知,函數(shù)f維系著順序密文c′和亂序密文c″子密文之間的關(guān)系。
最后,使用aes加密算法,將集合j加密,作為子密文cn+1。亂序密文c″和子密文cn+1即為明文m最終的加密結(jié)果,記為
步驟五:加密方案的解密算法
解密子密文cn+1,得到集合j,建立子密文與密鑰的對應(yīng)關(guān)系。通過公式(6)確定子密文
計算密鑰第二部分的向量s的前n-1個元素的和值,記為s:
之后求解明文值m:
步驟六:同態(tài)加法特性
密文的同態(tài)加法操作在本方案中被定義為向量加。
假設(shè)兩個明文數(shù)據(jù)為m1和m2,加密后的密文數(shù)據(jù)分別記為c1和c2:
首先解密子密文c1(n+1)、c2(n+1)得到函數(shù)f的映射結(jié)果集合j1和j2,通過公式(6)確定密文c1對應(yīng)的順序密文c1′中的第i個子密文為
重復(fù)公式(6)的步驟,逐漸將密文c1和c2分別還原為順序密文c1′和c2′。
此時,可以得到順序密文c1′和c2′對應(yīng)位置相加后的結(jié)果密文[c11+c21,…,c1n+c2n],將c1i+c2i記為c3i,并將順序密文和值記為c3′=[c11+c21,…,c1n+c2n]=[c31,…,c3n]。由映射函數(shù)f生成一種新的映射方式j(luò)3,并將順序密文的和值c3′的子密文按照j3打亂順序。同時通過aes算法加密j3后作為子密文c3(n+1)。最終得到加法結(jié)果為:
步驟七:同態(tài)乘法特性
由公式(9)可知明文數(shù)據(jù)m1和m2的加密結(jié)果密文分別為c1和c2。密文的乘積為對應(yīng)的亂序密文c″1和c″2的外積,具體表達式如下:
求外積的過程中,c1(n+1)、c2(n+1)不參與計算,得到n*n的密文矩陣。
對密文矩陣以行或者列為單位,進行解密算法。此處按行解密,即:
最終得到同態(tài)乘法的結(jié)果密文:
密文c*即為密文乘法的結(jié)果,其子密文順序與密文c1一樣。同理可知,如果按列解密,密文c*的子密文順序與密文c2保持一致。
以下舉具體實例來說明本發(fā)明的實施步驟。
步驟一:對待加密數(shù)據(jù)文件分片
設(shè)明文長度為56個字節(jié)的文件,即l=56。分成4塊,每一塊的最大長度為16個字節(jié),則有n=2。前3塊為等長的16個字節(jié)數(shù)據(jù)塊,第4塊為剩余部分數(shù)據(jù)8個字節(jié),即:
步驟二:采用隨機方式和算法約束條件,生成用于加密的密鑰向量
在加密文件中的浮點數(shù)數(shù)據(jù)之前,根據(jù)全同態(tài)浮點數(shù)加密方案的密鑰約束條件,生成加密密鑰向量。密鑰向量分為兩部分,記為k和s,每個向量包含n個元素,n為正整數(shù)。n的大小由用戶指定,且n越大算法安全性越高,相應(yīng)的也會占用更多的存儲空間。密鑰由隨機函數(shù)生成的隨機浮點數(shù)組成。具體密鑰約束條件如下:
密鑰第一部分為向量k,其中每一個元素滿足:
ki≠0for1≤i≤n(2)
密鑰第二部分為向量s,其中每一個元素滿足:
密鑰生成操作執(zhí)行完成之后,需要按照約束條件進行檢查。如果生成的密鑰不滿足約束條件,則需要重新生成密鑰,直至滿足上述條件。
n為系統(tǒng)需要用戶指定的參數(shù),表示密鑰中元素的數(shù)量,也表示加密后密鑰向量中子密文的數(shù)量。假設(shè)此處用戶選定參數(shù)n=5,則系統(tǒng)隨機生成的一組密鑰為:k=[70.1,20.4,83.7,14.3,-92.2],s=[17.8,41.7,-32.7,77.6,-56.8]。
根據(jù)約束條件(2)和(3)的檢查,發(fā)現(xiàn)密鑰k和s均滿足條件。不需要重新生成密鑰,可以進行下一步計算步驟。
步驟三:使用用戶密鑰對文件分片內(nèi)的浮點數(shù)數(shù)據(jù)進行加密
在為用戶生成了滿足約束條件的加密密鑰向量后,接著進行明文數(shù)據(jù)的加密。加密操作是依次在分片的明文中取出一個浮點數(shù)明文數(shù)據(jù),記為m=20.3,經(jīng)過加密密鑰的加密操作,添加一定的隨機噪聲,記為r和p,其中-1000<r<1000,-1000<p<1000。假設(shè)本次運行的過程中,生成的噪聲為r=[-79.0,87.2,25.0,-23.5],p=[69.7,45.0,60.0,76.0]。得到加密的結(jié)果密文向量c,計算過程為:
其中i代表子密文的序號,c1,c2,…,c5分別為明文m加密后的第1、2、…、5個子密文。由公式(4)可知,計算出的結(jié)果密文為c=[30136.904,18274.004,-50513.897,23589.804,1322347.4691404435]。
步驟四:子密文亂序存儲
當(dāng)對明文m=20.3進行加密操作后,得到密文向量c′=[c1,…,ci,…,c5]。定義映射函數(shù)f:
將順序密文c′的第i個子密文ci按照函數(shù)f的映射結(jié)果,映射為亂序密文的第j個子密文,記為
因此,子密文ci和
由公式(6)可知,函數(shù)f維系著順序密文c′和順序密文c″子密文之間的關(guān)系。
最后,使用aes加密算法,將集合j加密,作為子密文c6,加密結(jié)果"u2fsdgvkx19fs33qlbai4dniymnekcnylhqdp+xyqlo="。亂序密文c″和子密文c6即為明文m最終的加密結(jié)果,記為c=[c2,c1,c4,c5,c3,c6]。
步驟五:加密方案的解密算法
解密子密文c6,得到集合j,建立子密文與密鑰的對應(yīng)關(guān)系。通過公式(6)確定子密文
計算密鑰第二部分的向量s的前n-1個元素的和值,記為s:
此處求解s=104.4。
之后求解明文值m:
即可求解出明文值m=20.3。
步驟六:同態(tài)加法特性
密文的同態(tài)加法操作在本方案中被定義為向量加。
假設(shè)兩個明文數(shù)據(jù)為m1=20.3和m2=3.2,加密后的密文數(shù)據(jù)分別為c1和c2:
首先解密子密文c16、c26得到函數(shù)f的映射結(jié)果數(shù)組j1和j2,通過公式(6)確定密文c1的順序密文c1′中的第i個子密文為
重復(fù)公式(6)的步驟,逐漸將密文c1和c2分別還原為順序密文c1′=[c11,c12,c13,c14,c15]和c2′=[c21,c22,c23,c24,c25]。
此時,可以得到順序密文c1′和c2′對應(yīng)位置相加后的結(jié)果密文[c11+c21,…,c15+c25],將c1i+c2i記為c3i,并將順序密文和值記為c3′=[c11+c21,…,c1n+c2n]=[c31,…,c3n]。由映射函數(shù)f生成一種新的映射方式j(luò)3=[3,1,2,5,4],并將順序密文的和值結(jié)果c3′的子密文按照j3打亂順序,重新排列為[c33,c31,c32,c35,c34]。同時通過aes算法加密j3后作為子密文c36。最終得到加法結(jié)果為:
c1+c2=[c33,c31,c32,c35,c34,c36](10)
步驟七:同態(tài)乘法特性
假設(shè)兩個明文數(shù)據(jù)為m1=20.3和m2=3.2,由公式(9)可知其加密的結(jié)果密文為c1和c2。則密文的乘積為對應(yīng)的亂序密文c″1和c″2的外積,具體表達式如下:
求外積的過程中,cn+1不參與計算,得到n*n的密文矩陣。
對密文矩陣以行或者列為單位,進行解密算法。此處按行解密,即:
最終得到同態(tài)乘法的結(jié)果密文:
密文c*即為密文乘法的結(jié)果,其子密文順序與密文c1一樣。同理可知,如果按列解密,密文c*的子密文順序與密文c2保持一致。此處求解的同態(tài)乘法結(jié)果密文c*=[58476.8128,96438.0928,4231511.90124942,75487.3728,-161644.4704,c16],其中,c16為步驟四中的"u2fsdgvkx19fs33qlbai4dniymnekcnylhqdp+xyqlo="。繼續(xù)對密文c*解密,即可求出明文m1=20.3和m2=3.2的乘積64.96。
綜上所述,本發(fā)明結(jié)合云計算環(huán)境,提出了一種支持浮點運算的全同態(tài)加密算法,以及基于spark環(huán)境的并行算法,其目的是將加密算法從整數(shù)擴展到浮點數(shù),并結(jié)合spark框架,設(shè)計了并行浮點數(shù)全同態(tài)加密算法,利用集群優(yōu)勢提高算法執(zhí)行效率,實現(xiàn)快速加解密操作,減少同態(tài)操作時間。理論分析和實驗結(jié)果顯示,并行同態(tài)加密算法支持浮點運算,對浮點數(shù)據(jù)能夠進行快速的加解密操作,兼顧安全性和實用性,適用于云計算場景。
以上所述僅是本發(fā)明的部分實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。