李子臣, ,亞濤,3,,3, ,3
(1.北京印刷學(xué)院 信息工程學(xué)院,北京 102600; 2.北京電子科技學(xué)院 研究生系,北京 100070;3.西安電子科技大學(xué) 通信工程學(xué)院,西安 710071)
隨著云計(jì)算的發(fā)展,基于海量數(shù)據(jù)的云計(jì)算服務(wù)逐漸成為眾多企業(yè)關(guān)注的重點(diǎn)。采用云計(jì)算處理模式開(kāi)展業(yè)務(wù)十分便利,但云應(yīng)用存在的安全問(wèn)題也日漸凸顯[1-2],例如第三方服務(wù)提供商不可信,管理員窺探、竊取數(shù)據(jù),造成重要信息泄露、云端資料外泄,以及數(shù)據(jù)傳輸過(guò)程中存在的安全隱患。將解密數(shù)據(jù)的私鑰提供給服務(wù)端用于數(shù)據(jù)加解密及運(yùn)算處理,可以提高系統(tǒng)效率,但卻面臨更多的安全威脅,一旦云端數(shù)據(jù)庫(kù)[3]被攻陷,后果不堪設(shè)想。因此,只有用戶或合法授權(quán)用戶才能擁有解密數(shù)據(jù)的私鑰,以確保數(shù)據(jù)安全。但該方式云端服務(wù)器只作為存儲(chǔ)容器,無(wú)法進(jìn)行有效的數(shù)據(jù)處理。數(shù)據(jù)傳輸及處理需要占用大量的帶寬及客戶端開(kāi)銷,無(wú)法有效利用云端的數(shù)據(jù)處理能力。
同態(tài)密碼體制近乎為云計(jì)算量身打造,可以直接操作密文數(shù)據(jù),取得與操作明文相同的效果[4],在數(shù)據(jù)托管環(huán)境下可以確保信息的保密性,防止隱私信息泄露。文獻(xiàn)[4]分析了同態(tài)加密技術(shù)[5]的研究現(xiàn)狀及在云計(jì)算環(huán)境下的應(yīng)用[6]。文獻(xiàn)[7]探討了同態(tài)加密技術(shù)在金融云安全方面的應(yīng)用,但是并沒(méi)有給出具體的應(yīng)用及設(shè)計(jì)方案。文獻(xiàn)[8]提出一種同態(tài)加密在私有云中的設(shè)計(jì)方案,但未給出詳細(xì)的數(shù)據(jù)存儲(chǔ)及處理模式。文獻(xiàn)[9-10]探索部分同態(tài)、全同態(tài)加密在密文數(shù)據(jù)庫(kù)查詢中的應(yīng)用,其設(shè)計(jì)思想具有較高的參考價(jià)值。文獻(xiàn)[11]提出的全同態(tài)加密方案雖然相對(duì)原始基于理想格算法復(fù)雜度有所降低,但距離實(shí)用仍有一定差距。文獻(xiàn)[12]針對(duì)基于稀疏子集和問(wèn)題的全同態(tài)加密方案提出了一種有效的反饋攻擊方法,表明其存在安全隱患。
針對(duì)上述問(wèn)題,本文基于文獻(xiàn)[13]中的混合同態(tài)加密思想及文獻(xiàn)[14]提出的洋蔥加密方案,設(shè)計(jì)一種基于洋蔥加密模式的同態(tài)云平臺(tái)方案,以有效防止管理員窺探數(shù)據(jù),并且使云端服務(wù)器可直接對(duì)密文進(jìn)行操作而不會(huì)暴露明文狀態(tài),避免客戶端與服務(wù)端的頻繁交互,降低帶寬需求,實(shí)現(xiàn)數(shù)據(jù)安全存儲(chǔ)及運(yùn)算。
令E為加密函數(shù),D為解密函數(shù),⊕表示同態(tài)加運(yùn)算,?表示同態(tài)乘運(yùn)算,x和y表示明文,用如下關(guān)系定義同態(tài)特性:
1)加法同態(tài):如果存在有效算法⊕,使得E(x+y)=E(x)⊕E(y)或x+y=D(E(x)⊕E(y))成立,并且不泄漏x和y,則稱其具有加法同態(tài)性質(zhì)。
2)乘法同態(tài):如果存在有效算法?,使得E(x×y)=E(x)?E(y)或xy=D(E(x)?E(y))成立,并且不泄漏x和y,則稱其具有乘法同態(tài)性質(zhì)。
3)混合乘法同態(tài):如果存在有效算法,使得E(x×y)=E(x)y或xy=D(E(x)y)成立,并且不泄漏x,則稱其具有混合乘法同態(tài)性質(zhì)。
4)部分同態(tài)加密(SWHE):支持有限同態(tài)加密操作的特性[15],如只支持加法同態(tài)或乘法同態(tài)運(yùn)算。
1.2.1 Paillier公鑰密碼體制同態(tài)性分析
Paillier的同態(tài)性驗(yàn)證過(guò)程如下:
1)對(duì)明文x用Paillier加密算法加密處理:
2)對(duì)明文y用Paillier加密算法加密處理:
3)對(duì)明文x和明文y對(duì)應(yīng)密文進(jìn)行乘積運(yùn)算:
(gx+y·(r1r2)n)modn2=E(x+y)
由上述推理過(guò)程可知,對(duì)明文x和y對(duì)應(yīng)的密文進(jìn)行乘積運(yùn)算,所得結(jié)果與明文x和y加和后對(duì)應(yīng)的密文值相同。由此得證,Paillier公鑰密碼體制具有加法同態(tài)特性。
1.2.2 ElGamal公鑰密碼體制同態(tài)性分析
加密階段:選取與(p-1)互素的隨機(jī)數(shù)k,E(m)=(a,b)=(gkmodp,ykmmodp)。
解密階段:m=D[E(m)]=D(a,b)=b·a-x。
ElGamal的同態(tài)性驗(yàn)證過(guò)程如下:
1)對(duì)明文m1用ElGamal加密算法加密處理:
E(m1)=(a1,b1)=(gk1modp,yk1m1modp)
2)對(duì)明文m2用ElGamal加密算法加密處理:
E(m2)=(a2,b2)=(gk2modp,yk2m2modp)
3)對(duì)明文x和明文y對(duì)應(yīng)密文進(jìn)行乘積運(yùn)算:
E(m1)?E(m2)=(a1a2,b1b2)=
(gk1+k2modp,yk1+k2(m1·m2) modp)=
E(m1·m2)
由上述推理過(guò)程可知,對(duì)明文m1和m2對(duì)應(yīng)的密文進(jìn)行乘積運(yùn)算,所得結(jié)果與明文m1和m2相乘后對(duì)應(yīng)的密文值相同。由此得證,ElGamal公鑰密碼體制具有乘法同態(tài)特性。
本文旨在應(yīng)用同態(tài)加密技術(shù)解決云端數(shù)據(jù)安全存儲(chǔ)及處理等問(wèn)題,探索同態(tài)加密在私有云平臺(tái)應(yīng)用場(chǎng)景下的應(yīng)用方式,在此對(duì)私有云平臺(tái)具體功能模塊不作詳細(xì)說(shuō)明。銀行私有云平臺(tái)整體架構(gòu)如圖1所示。
圖1 銀行私有云平臺(tái)系統(tǒng)架構(gòu)
云服務(wù)門戶:接收用戶查詢、處理請(qǐng)求,以可視化方式進(jìn)行內(nèi)容發(fā)布和更新、參數(shù)管理,并提供外部系統(tǒng)的接口。
云服務(wù)管理平臺(tái):支持對(duì)系統(tǒng)提供服務(wù)的管理功能,根據(jù)銀行業(yè)務(wù)處理需求確定功能模塊。
云服務(wù)運(yùn)維平臺(tái):分析監(jiān)控?cái)?shù)據(jù),向監(jiān)控平臺(tái)提供監(jiān)控?cái)?shù)據(jù)和配置數(shù)據(jù),以確保整個(gè)運(yùn)維體系的完備性。
代理端(proxy):是本文設(shè)計(jì)方案的重要模塊,用于攔截應(yīng)用程序端發(fā)送的查詢、處理請(qǐng)求,對(duì)查詢語(yǔ)句、請(qǐng)求參數(shù)進(jìn)行重寫,并發(fā)送可執(zhí)行的SQL操作語(yǔ)句和密文參數(shù)給數(shù)據(jù)庫(kù)管理系統(tǒng)(Database Management System,DBMS),與DBMS聯(lián)合完成對(duì)密文的查詢處理。
資源池管理平臺(tái):將計(jì)算、網(wǎng)絡(luò)、存儲(chǔ)等資源進(jìn)行統(tǒng)一化、標(biāo)準(zhǔn)化并抽象為原子服務(wù)。
本文方案中銀行私有云安全系統(tǒng)由兩部分組成,一部分為客戶端(A),另一部分為云平臺(tái),即處理和存儲(chǔ)密文數(shù)據(jù)的服務(wù)端(B)??蛻舳藫碛蠵aillier加解密的公鑰(n,g)和私鑰(p,q),以及ElGamal加解密的公鑰(y,g,p)和私鑰x。服務(wù)器端已知客戶端公鑰,無(wú)解密數(shù)據(jù)的私鑰,無(wú)法解密密文數(shù)據(jù),確保了信息的安全性。
根據(jù)方案設(shè)計(jì),銀行私有云平臺(tái)客戶端A與服務(wù)器端B的數(shù)據(jù)交互過(guò)程如圖2所示。
圖2 銀行私有云平臺(tái)客戶端A與服務(wù)器端B的數(shù)據(jù)交互過(guò)程
下面以銀行賬戶存款、利息查詢操作為例,描述客戶端A和服務(wù)端B的數(shù)據(jù)交互過(guò)程。
1)數(shù)據(jù)初始化??蛻舳藫碛蠵aillier和ElGamal加解密算法的公私鑰對(duì)。對(duì)數(shù)值型數(shù)據(jù)初始化洋蔥層,使用Paillier算法加密數(shù)據(jù)形成oADD洋蔥,支持密文加運(yùn)算;使用ElGamal算法加密數(shù)據(jù)形成oMUL洋蔥層,支持乘法運(yùn)算。
2)存款??蛻舳烁鶕?jù)用戶命令,選取Paillier算法加密存款金額,發(fā)送存款請(qǐng)求命令到服務(wù)端。
3)服務(wù)端根據(jù)客戶端請(qǐng)求,對(duì)原始賬戶Paillier加密密文與接收的存款密文執(zhí)行加法同態(tài)運(yùn)算,將運(yùn)算結(jié)果寫入數(shù)據(jù)表并返回給客戶端;客戶端對(duì)返回結(jié)果使用Paillier私鑰解密,此時(shí)的明文即為存款后最新賬戶金額m_n。
4)客戶端發(fā)送利息查詢請(qǐng)求到服務(wù)端;服務(wù)端根據(jù)客戶端查詢命令,利用oMUL洋蔥的乘法同態(tài)特性完成利息運(yùn)算:ElGamal(m)?ElGamal(rate)?ElGamal(year)。
5)服務(wù)端將運(yùn)算結(jié)果返回給客戶端,由客戶端使用ElGamal私鑰進(jìn)行解密,獲取利息明文。
本文方案對(duì)數(shù)據(jù)的處理采用多洋蔥分層加密方式,根據(jù)操作目的的不同,設(shè)計(jì)了EQ、ORD、SEARCH、oADD、oMUL 5種洋蔥。
1)EQ洋蔥用于等值匹配查詢,由3個(gè)洋蔥層組成:最外層洋蔥(RND)采用概率加密算法提供最強(qiáng)的安全性,不用于支持密文操作;中間洋蔥層(DET)采用確定性加密算法,支持密文等值查詢功能,但安全性相對(duì)RND略弱;最內(nèi)層洋蔥層(JOIN)提供不同字段列的連接操作功能。
2)ORD洋蔥支持對(duì)密文數(shù)據(jù)大小關(guān)系的比較,由3個(gè)洋蔥層組成:最外層、最內(nèi)層與EQ洋蔥功能近似;中間洋蔥層采用保序?qū)ΨQ加密算法加密,使得密文與明文具有相同的大小偏序關(guān)系,可以支持?jǐn)?shù)據(jù)庫(kù)基礎(chǔ)ORDER BY、MIN、MAX等函數(shù)功能實(shí)現(xiàn)。
3)SEARCH洋蔥支持加密文本信息的關(guān)鍵字檢索,采用文獻(xiàn)[16]提出的可搜索加密方案實(shí)現(xiàn),檢索過(guò)程無(wú)需解密數(shù)據(jù),可確保信息的機(jī)密性。
4)oADD洋蔥支持?jǐn)?shù)值型數(shù)據(jù)的加法和減法同態(tài)運(yùn)算,為單洋蔥層結(jié)構(gòu),采用具有加法同態(tài)特性的密碼算法加密實(shí)現(xiàn),如Paillier加密算法。
5)oMUL洋蔥支持?jǐn)?shù)值型數(shù)據(jù)的乘法同態(tài)運(yùn)算,為單洋蔥層結(jié)構(gòu),采用具有乘法同態(tài)特性的密碼算法實(shí)現(xiàn),如RSA/ElGamal加密算法。
洋蔥的安全性等同于最外層洋蔥的安全性。一旦數(shù)據(jù)庫(kù)表創(chuàng)建,所有洋蔥都處于最安全的層次。5種洋蔥的層次結(jié)構(gòu)如圖3所示。
圖3 本文方案的洋蔥層次結(jié)構(gòu)
鑒于篇幅原因,前3種洋蔥在此不作詳細(xì)論述,本文主要針對(duì)oADD、oMUL洋蔥實(shí)現(xiàn)數(shù)值型數(shù)據(jù)的同態(tài)操作進(jìn)行闡述。在銀行私有云平臺(tái)應(yīng)用場(chǎng)景下,簡(jiǎn)化的存儲(chǔ)表結(jié)構(gòu)如圖4所示。其中,ID表示銀行賬戶編號(hào),NAME表示賬戶名,ACCOUNT表示賬戶金額。經(jīng)過(guò)洋蔥加密,云端數(shù)據(jù)表中存儲(chǔ)方式如圖5所示。其中,C1-EQ、C1-ORD、C1-oADD、C1-oMUL表示分別采用等值洋蔥、保序洋蔥、同態(tài)洋蔥進(jìn)行加密。
圖4 數(shù)據(jù)庫(kù)賬戶存儲(chǔ)簡(jiǎn)化表結(jié)構(gòu)
圖5 云端數(shù)據(jù)存儲(chǔ)方式
同態(tài)洋蔥是本文方案的重點(diǎn)設(shè)計(jì)模塊。對(duì)于數(shù)值型數(shù)據(jù),通常執(zhí)行等值匹配、大小比較、加減乘除等運(yùn)算,系統(tǒng)會(huì)根據(jù)數(shù)據(jù)類型創(chuàng)建并初始化洋蔥。根據(jù)用戶操作需求調(diào)整到特定的洋蔥層。以用戶的存款請(qǐng)求為例,需要對(duì)當(dāng)前賬戶金額執(zhí)行加運(yùn)算,服務(wù)端根據(jù)用戶的加操作請(qǐng)求查找ACCOUNT字段對(duì)應(yīng)的oADD洋蔥,獲取當(dāng)前層的密文數(shù)據(jù)。
update Account_t set C3-oADD=
對(duì)當(dāng)前C3-oADD字段值與使用Paillier密碼體制進(jìn)行加密的存款值執(zhí)行同態(tài)加運(yùn)算,并將該值存儲(chǔ)到數(shù)據(jù)庫(kù)中指定字段。將新的運(yùn)算結(jié)果返回客戶端,由用戶使用私鑰解密,終端會(huì)顯示新的賬戶存款金額。用戶請(qǐng)求查詢賬戶利息,服務(wù)端查找賬戶金額對(duì)應(yīng)的oMUL洋蔥,對(duì)當(dāng)前值與銀行利率、存款期限執(zhí)行同態(tài)乘運(yùn)算,并將運(yùn)算結(jié)果返回客戶端進(jìn)行解密,顯示賬戶利息金額。
Paillier與ElGamal公鑰密碼體制同態(tài)操作的深度與模數(shù)相關(guān),當(dāng)數(shù)據(jù)超過(guò)模數(shù)值時(shí),會(huì)存在數(shù)據(jù)重疊出錯(cuò),使數(shù)據(jù)無(wú)法正常解密。本文方案在加解密過(guò)程中,在每次密文操作后進(jìn)行取模處理,以降低密文的規(guī)模,實(shí)現(xiàn)密文噪聲控制。
銀行數(shù)據(jù)庫(kù)中除了用戶身份等文本信息,還包括大量的數(shù)值型數(shù)據(jù),涉及浮點(diǎn)型數(shù)據(jù)、大整數(shù)等,這就需要系統(tǒng)具有浮點(diǎn)數(shù)及大數(shù)處理能力。銀行賬戶金額、利率等數(shù)值通常為浮點(diǎn)數(shù),因此,將浮點(diǎn)數(shù)映射為整數(shù)進(jìn)行處理,最后通過(guò)逆映射還原數(shù)據(jù)。對(duì)于大數(shù)處理采用NTL庫(kù)實(shí)現(xiàn),可以對(duì)任意位數(shù)的數(shù)據(jù)進(jìn)行處理。映射方式如下:
1)y=α0.α1α2…αk,y為浮點(diǎn)數(shù),其中,α0表示整數(shù)部分,α1α2…αk表示小數(shù)點(diǎn)后k位。根據(jù)小數(shù)點(diǎn)后數(shù)值位數(shù)k進(jìn)行映射處理。
2)將浮點(diǎn)數(shù)放大k倍映射為y′=α0×100+α1×101+α2×102+…+αk×10k。浮點(diǎn)數(shù)存儲(chǔ)時(shí)可以表示為(y′,k)。
本文方案基于Paillier和ElGamal公鑰密碼體制的加法和乘法同態(tài)特性進(jìn)行數(shù)據(jù)運(yùn)算,在服務(wù)器端存儲(chǔ)密文數(shù)據(jù),客戶端擁有解密密文的密鑰??蛻舳讼蚍?wù)器端發(fā)送數(shù)據(jù)處理請(qǐng)求,服務(wù)器端沒(méi)有解密私鑰,只能操作密文數(shù)據(jù),無(wú)法解密密文,從而確保服務(wù)端管理員無(wú)法窺探用戶隱私信息,即使數(shù)據(jù)庫(kù)被攻陷也不會(huì)造成隱私信息泄露。
文獻(xiàn)[7]中用RSA同態(tài)特性實(shí)現(xiàn)乘法運(yùn)算的方案,其安全性依賴于大數(shù)分解,且密鑰產(chǎn)生受素?cái)?shù)產(chǎn)生限制,難以做到一次一密。而ElGamal算法安全性依賴于計(jì)算有限域上離散對(duì)數(shù)這一難題。相較于RSA,ElGamal體制隨機(jī)參數(shù)的選取每次均不同,即使使用相同的私鑰對(duì)相同明文進(jìn)行加密,得到的密文值也各不相同,使密文不僅依賴于明文,而且依賴于選取的隨機(jī)數(shù),相同的明文對(duì)應(yīng)不同的密文,可抵御選擇明文攻擊,具有更高的安全性。
本文方案是在銀行私有云平臺(tái)的應(yīng)用場(chǎng)景下,利用Paillier和ElGamal密碼體制的加法和乘法同態(tài)特性實(shí)現(xiàn),在服務(wù)端直接對(duì)密文執(zhí)行運(yùn)算,基本可以滿足銀行對(duì)賬戶數(shù)值型數(shù)據(jù)的處理需求。服務(wù)器端只需執(zhí)行簡(jiǎn)單的同態(tài)操作,降低了數(shù)據(jù)處理復(fù)雜性。
文獻(xiàn)[7]設(shè)計(jì)了基于RSA和Paillier同態(tài)特性的云計(jì)算方案,并與文獻(xiàn)[17]提出的DGHV全同態(tài)加密方案進(jìn)行對(duì)比分析。為論證本文方案的效率,對(duì)3種方案進(jìn)行仿真實(shí)現(xiàn),并進(jìn)行效率及安全性對(duì)比。以對(duì)104大小的整數(shù)進(jìn)行加解密處理為例,ElGamal、RSA密鑰長(zhǎng)度均為1 024 bit,由于操作環(huán)境的局限,在此簡(jiǎn)化仿真過(guò)程,在同一臺(tái)PC機(jī)上對(duì)方案同態(tài)運(yùn)算進(jìn)行仿真實(shí)現(xiàn)和效率分析。3種方案的平均運(yùn)算時(shí)間與安全性分析如表1所示。
表1 3種方案的同態(tài)運(yùn)算時(shí)間及安全性比較
由表1可知,對(duì)于同等長(zhǎng)度的密鑰,本文方案相比文獻(xiàn)[7]方案運(yùn)算效率略有降低,但效率明顯高于文獻(xiàn)[17]的全同態(tài)加密方案。相對(duì)于在服務(wù)器端解密數(shù)據(jù)完成操作,應(yīng)用同態(tài)特性運(yùn)算速率略有降低,但是具有更高的安全性,可防止明文信息被竊取。此外,采用同態(tài)加解密方式,可以在服務(wù)端直接操作密文,避免頻繁將數(shù)據(jù)傳回客戶端進(jìn)行解密,使交互雙方通信次數(shù)減少一半,降低了帶寬壓力及數(shù)據(jù)傳輸過(guò)程中的安全風(fēng)險(xiǎn)。
本文提出一種基于洋蔥加密模型的同態(tài)云平臺(tái)設(shè)計(jì)方案。在銀行私有云平臺(tái)應(yīng)用場(chǎng)景下,充分利用云計(jì)算能力,基于密碼體制的同態(tài)特性,結(jié)合可調(diào)整洋蔥加密策略,從而降低客戶端數(shù)據(jù)處理開(kāi)銷,提高系統(tǒng)的安全性和可靠性,并提供一種可用于數(shù)據(jù)存儲(chǔ)和管理的可擴(kuò)展結(jié)構(gòu)。仿真及安全性分析結(jié)果表明,本文方案在保證運(yùn)算效率的情況下,具有較高的安全性,可有效抵御選擇明文攻擊,滿足銀行業(yè)務(wù)處理需求。下一步將對(duì)該方案占用存儲(chǔ)空間略有增加的問(wèn)題進(jìn)行優(yōu)化。