景 泉 李曉東, 金 鑫 趙 耿,
1(西安電子科技大學(xué) 陜西 西安 710071)2(北京電子科技學(xué)院 北京 100070)
在企業(yè)里,當(dāng)數(shù)據(jù)所有者想要把數(shù)據(jù)交給一個(gè)代理時(shí),會(huì)面臨數(shù)據(jù)被代理方泄露的風(fēng)險(xiǎn)。比如:企業(yè)自己采集的用于機(jī)器學(xué)習(xí)的大批量圖片集,想利用云服務(wù)商的計(jì)算資源進(jìn)行模型訓(xùn)練,但是圖片集被服務(wù)商低價(jià)賣(mài)給了競(jìng)爭(zhēng)者;類(lèi)似的,公司一般會(huì)有幾個(gè)合作方,某些項(xiàng)目需要共享公司內(nèi)部數(shù)據(jù)給合作方,而合作方發(fā)生了數(shù)據(jù)泄露。
這種數(shù)據(jù)泄露在世界各地不同行業(yè)會(huì)以各種情況發(fā)生,但并不存在一勞永逸的防范措施。而隨著大數(shù)據(jù)概念的興起,人們紛紛認(rèn)識(shí)到了數(shù)據(jù)就是資本,脫離自己掌控的數(shù)據(jù)將給企業(yè)帶來(lái)一系列的商業(yè)風(fēng)險(xiǎn),所以數(shù)據(jù)資產(chǎn)的管理和數(shù)據(jù)泄露的追蹤,成為了各個(gè)公司急需提升的重要能力。本文中針對(duì)用戶(hù)將數(shù)據(jù)委托給云端且明文不敏感的情形進(jìn)行研究??闺p方泄漏抵賴(lài)的數(shù)據(jù)托管協(xié)議所保障的是雙方都無(wú)法作偽抵賴(lài),即數(shù)據(jù)擁有者不能故意散布數(shù)據(jù)而去找云端索賠,而云端泄露數(shù)據(jù)也可以被數(shù)據(jù)擁有者檢測(cè)。該協(xié)議利用密碼算法來(lái)實(shí)現(xiàn)。
在需要將數(shù)據(jù)托管到代理去進(jìn)行計(jì)算的情況下,原數(shù)據(jù)擁有者對(duì)數(shù)據(jù)的控制力大大削弱,預(yù)防和檢測(cè)數(shù)據(jù)泄露不容易通過(guò)一般的控制做到。因此,需要一些特定的技術(shù)來(lái)維護(hù)數(shù)據(jù)擁有者的法律權(quán)益。相關(guān)技術(shù)分為兩類(lèi):一種基于明文,一種基于密文。
基于明文的數(shù)據(jù)泄露追蹤技術(shù)[1-2]包括標(biāo)記式水印算法、信息傳輸決策點(diǎn)技術(shù)、誠(chéng)信機(jī)制水印技術(shù)、便攜式數(shù)據(jù)綁定技術(shù)和流模型算法等。
近年提出的數(shù)據(jù)泄露追蹤技術(shù)采取一種新的數(shù)據(jù)分配策略,把不同的數(shù)據(jù)集托管給不同的代理,實(shí)現(xiàn)了不改變?cè)袛?shù)據(jù)的前提下檢測(cè)數(shù)據(jù)由哪個(gè)代理方泄露。主流的泄露追蹤技術(shù)主要以過(guò)失模型為基礎(chǔ)[3],還有一部分人提出了影子模型和數(shù)據(jù)看守技術(shù)。Buneman等[4-5]研究了數(shù)據(jù)來(lái)源的問(wèn)題,他們指出提高檢測(cè)出泄露代理概率的關(guān)鍵點(diǎn)在于被泄露數(shù)據(jù)組的線(xiàn)性關(guān)系。其他文獻(xiàn)也討論了責(zé)任檢測(cè)方面的問(wèn)題。Cui[6]等提出了一些更有針對(duì)性的研究方案,例如對(duì)數(shù)據(jù)倉(cāng)庫(kù)的線(xiàn)性跟蹤。Jagtap等[7]則對(duì)公司實(shí)際應(yīng)用中的數(shù)據(jù)泄露和保護(hù)進(jìn)行了研究,他提出數(shù)據(jù)看守者和泄露檢查者概念模型。
然而,上述方案都僅僅從數(shù)據(jù)擁有者角度考慮如何檢測(cè)數(shù)據(jù)的泄露,沒(méi)考慮到代理方是否會(huì)認(rèn)可數(shù)據(jù)擁有者的檢測(cè)結(jié)果,因?yàn)閿?shù)據(jù)擁有者有可能偽造泄露而去訛詐代理方。
基于密文的技術(shù)則是李順東等[8]所介紹的同態(tài)加密算法及其在云安全中的應(yīng)用,這種技術(shù)可以保障數(shù)據(jù)即使泄露也無(wú)法令對(duì)方得到有效信息,但是會(huì)在托管計(jì)算的全程占用大量CPU和磁盤(pán)資源。由此,本文提出了一種性能適中的雙方都無(wú)法抵賴(lài)的數(shù)據(jù)托管協(xié)議。
本文中將用到同態(tài)加密算法,以及基于其同態(tài)操作的對(duì)稱(chēng)加密算法,來(lái)達(dá)成協(xié)議的防抵賴(lài)性,結(jié)合泄露檢測(cè)技術(shù),實(shí)現(xiàn)對(duì)數(shù)據(jù)擁有者和代理者雙方的有效約束。
本文中將數(shù)據(jù)擁有者稱(chēng)為發(fā)布者用Dis表示,將代理用Ag表示,F(xiàn)Dis表示由數(shù)據(jù)擁有者所執(zhí)行的操作,F(xiàn)Ag表示由代理方所執(zhí)行的操作,M是明文,C是密文,CL是混沌logistics映射算法,F(xiàn)HE是全同態(tài)加密算法。
1978年Rivest[9]等注意到提出不久的RSA算法具有乘法同態(tài)特性,即Enc(x×y)=Enc(x)×Enc(y)?;谶@一重要觀(guān)察,他們提出一個(gè)很自然的問(wèn)題,如果擁有某種全同態(tài)加密(FHE-Fully homomorphic encryption)方案(既滿(mǎn)足乘法同態(tài)又滿(mǎn)足加法同態(tài)),可以對(duì)數(shù)據(jù)實(shí)施何種處理?當(dāng)時(shí),他們給出的一種解答是:一旦擁有全同態(tài)方案,即便不擁有解密密鑰,仍然可以對(duì)加密后的數(shù)據(jù)實(shí)施任意操作。
由于同態(tài)加密(homomorphic encryption)方案天生具有可延展性,因此許多加密方案所具有的某些同態(tài)特性已經(jīng)被自然地應(yīng)用于多種安全應(yīng)用方案的構(gòu)造中,例如:電子投票系統(tǒng)、抗碰撞的雜湊哈希函數(shù),以及保密信息檢索等。
1982年,Goldwasser和Micali提出第一個(gè)具有語(yǔ)義安全的加法同態(tài)密碼體制GM[10],同時(shí)GM支持任意次加法(模2)同態(tài)操作。和RSA一樣,1985年提出的第一個(gè)基于離散對(duì)數(shù)困難問(wèn)題的公鑰加密體制ElGamal[11]體制也是乘法同態(tài)密碼體制,它支持任意多次乘法同態(tài)操作。1998年,文獻(xiàn)[12]、文獻(xiàn)[13]分別提出OU體制和NS體制,兩者都屬于加法同態(tài)體制,均能支持任意多次加法同態(tài)操作。1999年,Paillier[14]體制被提出,它是第一個(gè)基于判定合數(shù)剩余類(lèi)問(wèn)題的加法同態(tài)加密體制。在滿(mǎn)足加法同態(tài)的同時(shí),Paillier體制還滿(mǎn)足Enc(x×y)=Enc(x)·y,這個(gè)性質(zhì)使得Paillier能夠勝任很多針對(duì)密文的復(fù)雜計(jì)算任務(wù)。2005年Boneh等[15]提出了BGN體制,該體制可以同時(shí)支持任意多次加法同態(tài)和一次乘法同態(tài)。這些構(gòu)造,本質(zhì)上都只能支持一種基本操作,例如:加法同態(tài)或者乘法同態(tài),他們的工作取得了一些進(jìn)步,但距離真正的全同態(tài)加密方案還很遠(yuǎn)。
直到2009年,Gentry[16-17]實(shí)現(xiàn)了全同態(tài)加密構(gòu)造的重大突破,在理論上解決了如何構(gòu)造全同態(tài)加密體制的問(wèn)題。Gentry利用理想格構(gòu)造了可以支持任意深度電路的同態(tài)計(jì)算,其機(jī)制所包含的4個(gè)算法均為多項(xiàng)式時(shí)間,可達(dá)到語(yǔ)義安全。此后,對(duì)Gentry的工作進(jìn)行了一系列的改進(jìn)和變形,包括:基于Gentry初始方案的改進(jìn)[18-21],基于整數(shù)全同態(tài)的加密構(gòu)造[22-26],基于LWE和RLWE問(wèn)題的構(gòu)造[27-30]等。
由于需要支持加密算法的解密同態(tài)計(jì)算,本文將采用IBM的一個(gè)全同態(tài)算法加密庫(kù)[22],其加密方式是按位加密,可以適用于任何文件。
其算法描述如下:
Key generation:
Keygen(λ)密鑰是一個(gè)n-bit的奇數(shù):
公鑰pk服從此分布:
如果x0和rp(x0)不是奇數(shù)則重新采樣:
pk=〈x0,…,xτ〉
Encryption:
Enc(pk,m∈{0,1}),隨機(jī)選擇一個(gè)子集S?{1,2,…,τ}和隨機(jī)整數(shù)r∈(-2ρ′,2ρ′);
輸出c←[m+2r+2∑i∈Sxi]x0
Decryption:
輸出m′←(cmodp)mod 2
Homomorphic Evaluation:
Eval(pk,C,c1,…,ct)給定有t個(gè)輸入的二進(jìn)制電路Cε和t個(gè)密文ci,對(duì)密文執(zhí)行電路的整數(shù)加法和乘法門(mén),返回處理后的整數(shù)結(jié)果。
下文將以FHE(C1)表示,其中C1是經(jīng)過(guò)CL算法加密過(guò)的密文。
這個(gè)算法用來(lái)進(jìn)行初次加密,需要與上文中的全同態(tài)加密互相適配,即加密對(duì)象要相同,比如都是按位加密。本文選用混沌加密[31]中的logistics[32]產(chǎn)生隨機(jī)密鑰,按位和明文進(jìn)行“異或”操作。后文將以CL代表此算法。
Key generation:
sk←Keygen(μ1,μ2,μ3,μ4):Xn+1=Xn×μ×(1-Xn)
式中:μ∈[0,4],X∈(0,1)。
特別的,當(dāng)3.569 945 6<μ≤4時(shí),序列處于混沌狀態(tài)。
4路logistics映射得出的結(jié)果進(jìn)行“異或”合并成sk。
Encryption:
c←Encsk(ω),輸入密鑰sk和明文的一個(gè)比特位ω∈{0,1},輸出一個(gè)比特位的密文c。
Decryption:
ω*←Decsk(c),輸入密鑰sk和密文c,輸出明文ω*∈{0,1}。
追蹤技術(shù)現(xiàn)在大體分為兩類(lèi):需要修改原文件(以水印算法[33-34]為參考),其思想是把一些驗(yàn)證信息以無(wú)法察覺(jué)的方式摻雜在原文件中,由于一類(lèi)文件在分析時(shí)不可有絲毫改動(dòng),比如金融經(jīng)濟(jì)類(lèi)的數(shù)字,而且當(dāng)代理方懷有惡意的時(shí)候,水印信息比較容易受到攻擊,所以水印方式適用面比較有限。
其二是無(wú)需修改原文件(以人造虛假對(duì)象[35]為代表),適用范圍比較廣。其思想是在原批量數(shù)據(jù)集中插入一些不易分辨的人工偽造數(shù)據(jù)文件,當(dāng)數(shù)據(jù)發(fā)生泄露時(shí),能以概率檢測(cè)出泄露者是哪個(gè)代理。
本文將采用水印方案,通過(guò)無(wú)法仿造的水印可以將對(duì)方的信息嵌入到數(shù)據(jù)中作為雙方共同承認(rèn)的證據(jù),這是本文的初衷。
首先,以原文本的哈希值HDis(M))作為RSA簽名內(nèi)容,用DigAg(HDis(M))表示;然后根據(jù)簽名內(nèi)容的字節(jié)數(shù)在原文本中加入隨機(jī)冗余字節(jié)RDis(M);最后用DigAg(HDis(M))和RDis(M)中對(duì)應(yīng)的冗余位進(jìn)行“異或”操作,完成水印嵌入。
數(shù)據(jù)泄露情況日益嚴(yán)重,各個(gè)公司都因此承擔(dān)了很大的商業(yè)風(fēng)險(xiǎn),而目前的數(shù)據(jù)泄露檢測(cè)都是從數(shù)據(jù)擁有者的角度出發(fā)來(lái)思考解決方案,但是沒(méi)有考慮到代理方能否抵賴(lài)的問(wèn)題,所以都無(wú)法在實(shí)際生產(chǎn)中應(yīng)用。
本文結(jié)合實(shí)際,提出了一種雙方都無(wú)法抵賴(lài)的數(shù)據(jù)托管協(xié)議。本協(xié)議所保障的是雙方都無(wú)法作偽抵賴(lài),數(shù)據(jù)擁有者也無(wú)法因?yàn)樽约汗室馍⒉紨?shù)據(jù)而去找代理索賠,而代理散布數(shù)據(jù)可以被檢測(cè)。
數(shù)據(jù)發(fā)布者(Dis)和代理方(Ag)的數(shù)據(jù)交換模型如圖1所示。
圖1 數(shù)據(jù)發(fā)布者和代理方的數(shù)據(jù)上傳交換模型
第一步,Dis先根據(jù)Ag方RSA簽名字節(jié)數(shù)對(duì)原文件做隨機(jī)字節(jié)冗余RDis(M),然后向Ag發(fā)送CL加密后的冗余文件CLDis(RDis(M)),和文件哈希值HDis(M),用以給代理方的簽名提供參數(shù),HDis(CLDis(M))留給Ag用以作為驗(yàn)證信息。
第二步,Ag向Dis發(fā)送數(shù)據(jù),Ag在收到經(jīng)過(guò)CL加密的數(shù)據(jù)集后,對(duì)該密文進(jìn)行全同態(tài)加密,即FHEAg(CLDis(RDis(M))),然后根據(jù)HDis(M)生成簽名信息DigAg(HDis(M)),再用相同的全同態(tài)加密算法加密簽名信息,和FHEAg(1)、FHEAg(0)一同發(fā)送給Dis。
第三步,Dis收到Ag發(fā)來(lái)的全同態(tài)加密的密文和簽名后,根據(jù)CL算法的密鑰,按位用FHEAg(1)、FHEAg(0)合成一個(gè)FHEAg(KEYCL),利用全同態(tài)加密的特性,在密文上操作對(duì)自己的CL算法進(jìn)行解密,得到FHEAg(RDis(M)),然后利用冗余嵌入水印(具體用什么方式需根據(jù)實(shí)際應(yīng)用場(chǎng)景確定)在密文上操作:
M′=MIXDis(RDis(M),DigAg(HDis(M)))
將Ag方加密的水印信息混雜到明文數(shù)據(jù)集中,從而得到FHEAg(M′),發(fā)送給Ag。
最后由Ag將自己的全同態(tài)加密解開(kāi),得到M′,即已經(jīng)摻雜了Ag方簽名信息的明文數(shù)據(jù)集。
如果檢測(cè)到數(shù)據(jù)泄露,根據(jù)自己留存的隨機(jī)冗余信息在對(duì)應(yīng)字節(jié)進(jìn)行“異或”就可以提取出其RSA簽名信息,再根據(jù)其公鑰得到簽名內(nèi)容H(M)即可作為證據(jù)。
如圖2所示,首先Ag將攜帶自己簽名信息的文件進(jìn)行全同態(tài)加密FHEAg(M′)和FHEAg(1)、FHEAg(0)發(fā)送給Dis。Dis根據(jù)留存的冗余信息將對(duì)應(yīng)位的密文刪除,即可得到FHEAg(M),再根據(jù)FHEAg(1)、FHEAg(0)組合得到密鑰FHEAg(KEYCL),在密文下進(jìn)行CL加密得到FHEAg(CLDis(M))發(fā)送給Ag。Ag解密得到CLDis(M)發(fā)送給Dis。Dis自己解密得到M。
圖2 數(shù)據(jù)發(fā)布者和代理方的數(shù)據(jù)下載交換模型
3.3.1 數(shù)據(jù)上傳協(xié)議
第一階段,Ag得到的是明文哈希值和CL算法加密過(guò)的文件與其哈希值,哈希算法和CL算法保證了其無(wú)法逆向得到明文,所以此階段Ag方無(wú)法泄露數(shù)據(jù)。第二階段Dis拿到的是FHE算法加密的密文、簽名文件和FHE(1)、FHE(0),由于全同態(tài)加密的特性,對(duì)相同值加密的密文空間很大[31],確保Dis無(wú)法根據(jù)FHE(1)、FHE(0)破解密文,而且簽名的參數(shù)是以明文哈希值作為輸入的,所以此階段Dis無(wú)法故意偽造Ag的簽名信息而去誣陷對(duì)方泄露數(shù)據(jù),只能在密文上操作混入水印信息。第三階段,Ag解密之后得到的就是混入了水印信息的明文,水印算法自帶冗余信息且無(wú)法和明文信息完全區(qū)分,可以做到一定程度的抗破壞,或者暴力破壞后明文信息失效。使得Ag不敢泄露數(shù)據(jù)或有效泄露數(shù)據(jù)。
3.3.2 數(shù)據(jù)下載協(xié)議
第一階段,Dis拿到FHE算法加密的密文和FHE(1)、FHE(0),之后可以根據(jù)保留的冗余信息按位將其從密文中刪除,但是無(wú)法從其中提取出簽名的明文信息,無(wú)法構(gòu)造Ag的簽名從而故意誣陷Ag。第二階段,Ag拿到的是CL算法加密的密文且水印信息已經(jīng)去掉,可由上傳協(xié)議第一階段的HDis(CLDis(M))來(lái)驗(yàn)證是否完全去除,確認(rèn)后才可將密文發(fā)送回Dis,由此Dis無(wú)法隨意刪除無(wú)關(guān)位而欺騙Ag。第三階段,Dis只能拿回初始明文,協(xié)議結(jié)束。
綜上所述,Dis方拿到的是Ag方的密文簽名無(wú)法解開(kāi),自己散布的數(shù)據(jù)也就無(wú)法攜帶Ag方標(biāo)識(shí)而成為誣陷的證據(jù)。而Ag方最后所拿到的明文是夾雜了自己無(wú)法有效清洗的簽名信息,所以也不敢散布數(shù)據(jù)。如此雙方都無(wú)法隨意散布對(duì)方的信息,有效地防止了數(shù)據(jù)泄露發(fā)生時(shí)的互相抵賴(lài)。
實(shí)驗(yàn)環(huán)境:
硬件環(huán)境:
CPU:I5-4200M,內(nèi)存:8 GB
軟件環(huán)境:
Win7 x64,VM11下的Ubuntu14.04 x64,內(nèi)核版本4.4.0-31-generic,虛擬化雙核,4 GHz。安裝NTL-10.5.0,GMP-6.1.2,g++4.8.4
對(duì)CL算法的參數(shù)設(shè)置為:
double u[4]={3.91,3.95,3.97,3.98};
int hd_inittimes=500;//預(yù)迭代次數(shù)
unsigned int mk[4]={0x13256FED,0x3257834F,0xC542DF68,0xEF63127D};//種子
對(duì)FHE算法的參數(shù)設(shè)置為:
long p=2;//明文空間
long r=1;//冪
long d=1;//域的擴(kuò)張度
long c=2;//密鑰交換矩陣的列數(shù)
long k=80;//安全參數(shù)
long L=0;//等級(jí)數(shù),密文的參數(shù)
long s=0;// 最小槽數(shù)
long seed=0;//PRG種子
long nt=1;//線(xiàn)程數(shù)
long w=64;//私鑰的海明權(quán)重
明文空間:Ζ[Χ]/(Φm(X),pr)。
簽名文件的大小為172字節(jié)。
圖3是本協(xié)議的正確性展示。test是初始明文,redundance是冗余之后的明文,randnum是Dis記錄的冗余信息,ciphertext_yh是CL算法加密過(guò)后的密文,fhe_enctxt是FHE算法加密后的密文,SignFile是簽名文件,YH_key是CL算法密鑰,dec_plaintxt是FHE算法解密后文件,extract是經(jīng)過(guò)對(duì)協(xié)議的模擬后,提取在A(yíng)g方的文件中所含簽名信息,輸出后和最初的簽名明文信息一致,可由其公鑰驗(yàn)證。
圖3 原文和解密后對(duì)比
圖4是程序運(yùn)行的結(jié)果圖,其中加密文件的大小n為617字節(jié),協(xié)議總的運(yùn)行時(shí)間為160.942 s,其中CL算法的時(shí)間復(fù)雜度為O(n),相對(duì)于全同態(tài)加密,其執(zhí)行時(shí)間可以忽略不計(jì);FHE算法加密時(shí)間平均約8字節(jié)/s;密文上執(zhí)行同態(tài)CL解密操作用時(shí)0.35 s,約1 763字節(jié)/s;FHE解密用時(shí)36.92 s,約21.3字節(jié)/s。因?yàn)槭菃尉€(xiàn)程,而且選用的是一般的硬件,所以在速度上還有很大提升空間。
圖4 程序運(yùn)行結(jié)果圖
但是在文件尺寸上,加密過(guò)后文件大小提升到了2.5 GB,達(dá)到了6.5×105倍的提升,所以加密大尺寸文件時(shí)應(yīng)注意切分。批處理時(shí)應(yīng)加密達(dá)到一定硬盤(pán)占用就執(zhí)行向?qū)Ψ降陌l(fā)送指令,確認(rèn)送達(dá)后馬上刪除,以節(jié)省硬盤(pán)空間。
表1 功能、性能對(duì)照表
相對(duì)于基于明文的技術(shù),我們的協(xié)議可以抗雙方泄露抵賴(lài),使數(shù)據(jù)托管計(jì)算更具可信度;相對(duì)于基于密文的技術(shù),我們的協(xié)議可以將這種文件尺寸擴(kuò)展限制在文件傳輸階段,存儲(chǔ)階段是無(wú)需保存全同態(tài)的密文形式的,極大減少了平均時(shí)間內(nèi)對(duì)磁盤(pán)的占用,且在托管計(jì)算時(shí)的速度上是明文級(jí)別的處理速度。
綜上所述,本協(xié)議在明文不敏感的情況下性能更接近于實(shí)用性要求。
本文提出了一種適應(yīng)于數(shù)據(jù)擁有者和云商互不信任的情況下,希望在云端對(duì)自己的數(shù)據(jù)明文進(jìn)行處理,且不希望云商得到己方數(shù)據(jù)的100%所有權(quán)和支配權(quán)的網(wǎng)絡(luò)環(huán)境下,保證數(shù)據(jù)被泄露時(shí)可以追蹤到的一種數(shù)據(jù)上傳協(xié)議。目前云計(jì)算服務(wù)推廣的障礙就在于對(duì)數(shù)據(jù)和隱私的保護(hù),這個(gè)協(xié)議對(duì)云計(jì)算服務(wù)的推廣具有十分重要的作用,以協(xié)議約束的方式有效地防止了雙方在泄露發(fā)生時(shí)的相互抵賴(lài),促使云商加大對(duì)數(shù)據(jù)的保護(hù)力度,增強(qiáng)了雙方的互信度。
通過(guò)實(shí)驗(yàn)證明,數(shù)據(jù)擁有者只需負(fù)擔(dān)首次簡(jiǎn)單加密的計(jì)算量和耗時(shí)相對(duì)較少的同態(tài)運(yùn)算操作,時(shí)間消耗上相較以往提升很大,內(nèi)存的占用也可以通過(guò)和磁盤(pán)IO次數(shù)來(lái)平衡,而磁盤(pán)占用問(wèn)題成本相對(duì)低廉,所以相對(duì)于在密文上進(jìn)行全同態(tài)操作的方案,在速度和磁盤(pán)占用上都擁有明顯優(yōu)勢(shì),具有重要的實(shí)用性意義。
本文提到的簽名算法使用了成熟的RSA算法。由于本次實(shí)驗(yàn)是按位加密,全同態(tài)加密下的水印算法需要針對(duì)不同的文件格式自行設(shè)計(jì),后續(xù)會(huì)對(duì)此和如何提升全同態(tài)加解密的速度繼續(xù)進(jìn)行研究。相關(guān)代碼已發(fā)布在文獻(xiàn)[36]中。