景 泉 李曉東, 金 鑫 趙 耿,
1(西安電子科技大學 陜西 西安 710071)2(北京電子科技學院 北京 100070)
在企業里,當數據所有者想要把數據交給一個代理時,會面臨數據被代理方泄露的風險。比如:企業自己采集的用于機器學習的大批量圖片集,想利用云服務商的計算資源進行模型訓練,但是圖片集被服務商低價賣給了競爭者;類似的,公司一般會有幾個合作方,某些項目需要共享公司內部數據給合作方,而合作方發生了數據泄露。
這種數據泄露在世界各地不同行業會以各種情況發生,但并不存在一勞永逸的防范措施。而隨著大數據概念的興起,人們紛紛認識到了數據就是資本,脫離自己掌控的數據將給企業帶來一系列的商業風險,所以數據資產的管理和數據泄露的追蹤,成為了各個公司急需提升的重要能力。本文中針對用戶將數據委托給云端且明文不敏感的情形進行研究。抗雙方泄漏抵賴的數據托管協議所保障的是雙方都無法作偽抵賴,即數據擁有者不能故意散布數據而去找云端索賠,而云端泄露數據也可以被數據擁有者檢測。該協議利用密碼算法來實現。
在需要將數據托管到代理去進行計算的情況下,原數據擁有者對數據的控制力大大削弱,預防和檢測數據泄露不容易通過一般的控制做到。因此,需要一些特定的技術來維護數據擁有者的法律權益。相關技術分為兩類:一種基于明文,一種基于密文。
基于明文的數據泄露追蹤技術[1-2]包括標記式水印算法、信息傳輸決策點技術、誠信機制水印技術、便攜式數據綁定技術和流模型算法等。
近年提出的數據泄露追蹤技術采取一種新的數據分配策略,把不同的數據集托管給不同的代理,實現了不改變原有數據的前提下檢測數據由哪個代理方泄露。主流的泄露追蹤技術主要以過失模型為基礎[3],還有一部分人提出了影子模型和數據看守技術。Buneman等[4-5]研究了數據來源的問題,他們指出提高檢測出泄露代理概率的關鍵點在于被泄露數據組的線性關系。其他文獻也討論了責任檢測方面的問題。Cui[6]等提出了一些更有針對性的研究方案,例如對數據倉庫的線性跟蹤。Jagtap等[7]則對公司實際應用中的數據泄露和保護進行了研究,他提出數據看守者和泄露檢查者概念模型。
然而,上述方案都僅僅從數據擁有者角度考慮如何檢測數據的泄露,沒考慮到代理方是否會認可數據擁有者的檢測結果,因為數據擁有者有可能偽造泄露而去訛詐代理方。
基于密文的技術則是李順東等[8]所介紹的同態加密算法及其在云安全中的應用,這種技術可以保障數據即使泄露也無法令對方得到有效信息,但是會在托管計算的全程占用大量CPU和磁盤資源。由此,本文提出了一種性能適中的雙方都無法抵賴的數據托管協議。
本文中將用到同態加密算法,以及基于其同態操作的對稱加密算法,來達成協議的防抵賴性,結合泄露檢測技術,實現對數據擁有者和代理者雙方的有效約束。
本文中將數據擁有者稱為發布者用Dis表示,將代理用Ag表示,FDis表示由數據擁有者所執行的操作,FAg表示由代理方所執行的操作,M是明文,C是密文,CL是混沌logistics映射算法,FHE是全同態加密算法。
1978年Rivest[9]等注意到提出不久的RSA算法具有乘法同態特性,即Enc(x×y)=Enc(x)×Enc(y)。基于這一重要觀察,他們提出一個很自然的問題,如果擁有某種全同態加密(FHE-Fully homomorphic encryption)方案(既滿足乘法同態又滿足加法同態),可以對數據實施何種處理?當時,他們給出的一種解答是:一旦擁有全同態方案,即便不擁有解密密鑰,仍然可以對加密后的數據實施任意操作。
由于同態加密(homomorphic encryption)方案天生具有可延展性,因此許多加密方案所具有的某些同態特性已經被自然地應用于多種安全應用方案的構造中,例如:電子投票系統、抗碰撞的雜湊哈希函數,以及保密信息檢索等。
1982年,Goldwasser和Micali提出第一個具有語義安全的加法同態密碼體制GM[10],同時GM支持任意次加法(模2)同態操作。和RSA一樣,1985年提出的第一個基于離散對數困難問題的公鑰加密體制ElGamal[11]體制也是乘法同態密碼體制,它支持任意多次乘法同態操作。1998年,文獻[12]、文獻[13]分別提出OU體制和NS體制,兩者都屬于加法同態體制,均能支持任意多次加法同態操作。1999年,Paillier[14]體制被提出,它是第一個基于判定合數剩余類問題的加法同態加密體制。在滿足加法同態的同時,Paillier體制還滿足Enc(x×y)=Enc(x)·y,這個性質使得Paillier能夠勝任很多針對密文的復雜計算任務。2005年Boneh等[15]提出了BGN體制,該體制可以同時支持任意多次加法同態和一次乘法同態。這些構造,本質上都只能支持一種基本操作,例如:加法同態或者乘法同態,他們的工作取得了一些進步,但距離真正的全同態加密方案還很遠。
直到2009年,Gentry[16-17]實現了全同態加密構造的重大突破,在理論上解決了如何構造全同態加密體制的問題。Gentry利用理想格構造了可以支持任意深度電路的同態計算,其機制所包含的4個算法均為多項式時間,可達到語義安全。此后,對Gentry的工作進行了一系列的改進和變形,包括:基于Gentry初始方案的改進[18-21],基于整數全同態的加密構造[22-26],基于LWE和RLWE問題的構造[27-30]等。
由于需要支持加密算法的解密同態計算,本文將采用IBM的一個全同態算法加密庫[22],其加密方式是按位加密,可以適用于任何文件。
其算法描述如下:
Key generation:
Keygen(λ)密鑰是一個n-bit的奇數:
公鑰pk服從此分布:
如果x0和rp(x0)不是奇數則重新采樣:
pk=〈x0,…,xτ〉
Encryption:
Enc(pk,m∈{0,1}),隨機選擇一個子集S?{1,2,…,τ}和隨機整數r∈(-2ρ′,2ρ′);
輸出c←[m+2r+2∑i∈Sxi]x0
Decryption:
輸出m′←(cmodp)mod 2
Homomorphic Evaluation:
Eval(pk,C,c1,…,ct)給定有t個輸入的二進制電路Cε和t個密文ci,對密文執行電路的整數加法和乘法門,返回處理后的整數結果。
下文將以FHE(C1)表示,其中C1是經過CL算法加密過的密文。
這個算法用來進行初次加密,需要與上文中的全同態加密互相適配,即加密對象要相同,比如都是按位加密。本文選用混沌加密[31]中的logistics[32]產生隨機密鑰,按位和明文進行“異或”操作。后文將以CL代表此算法。
Key generation:
sk←Keygen(μ1,μ2,μ3,μ4):Xn+1=Xn×μ×(1-Xn)
式中:μ∈[0,4],X∈(0,1)。
特別的,當3.569 945 6<μ≤4時,序列處于混沌狀態。
4路logistics映射得出的結果進行“異或”合并成sk。
Encryption:
c←Encsk(ω),輸入密鑰sk和明文的一個比特位ω∈{0,1},輸出一個比特位的密文c。
Decryption:
ω*←Decsk(c),輸入密鑰sk和密文c,輸出明文ω*∈{0,1}。
追蹤技術現在大體分為兩類:需要修改原文件(以水印算法[33-34]為參考),其思想是把一些驗證信息以無法察覺的方式摻雜在原文件中,由于一類文件在分析時不可有絲毫改動,比如金融經濟類的數字,而且當代理方懷有惡意的時候,水印信息比較容易受到攻擊,所以水印方式適用面比較有限。
其二是無需修改原文件(以人造虛假對象[35]為代表),適用范圍比較廣。其思想是在原批量數據集中插入一些不易分辨的人工偽造數據文件,當數據發生泄露時,能以概率檢測出泄露者是哪個代理。
本文將采用水印方案,通過無法仿造的水印可以將對方的信息嵌入到數據中作為雙方共同承認的證據,這是本文的初衷。
首先,以原文本的哈希值HDis(M))作為RSA簽名內容,用DigAg(HDis(M))表示;然后根據簽名內容的字節數在原文本中加入隨機冗余字節RDis(M);最后用DigAg(HDis(M))和RDis(M)中對應的冗余位進行“異或”操作,完成水印嵌入。
數據泄露情況日益嚴重,各個公司都因此承擔了很大的商業風險,而目前的數據泄露檢測都是從數據擁有者的角度出發來思考解決方案,但是沒有考慮到代理方能否抵賴的問題,所以都無法在實際生產中應用。
本文結合實際,提出了一種雙方都無法抵賴的數據托管協議。本協議所保障的是雙方都無法作偽抵賴,數據擁有者也無法因為自己故意散布數據而去找代理索賠,而代理散布數據可以被檢測。
數據發布者(Dis)和代理方(Ag)的數據交換模型如圖1所示。

圖1 數據發布者和代理方的數據上傳交換模型
第一步,Dis先根據Ag方RSA簽名字節數對原文件做隨機字節冗余RDis(M),然后向Ag發送CL加密后的冗余文件CLDis(RDis(M)),和文件哈希值HDis(M),用以給代理方的簽名提供參數,HDis(CLDis(M))留給Ag用以作為驗證信息。
第二步,Ag向Dis發送數據,Ag在收到經過CL加密的數據集后,對該密文進行全同態加密,即FHEAg(CLDis(RDis(M))),然后根據HDis(M)生成簽名信息DigAg(HDis(M)),再用相同的全同態加密算法加密簽名信息,和FHEAg(1)、FHEAg(0)一同發送給Dis。
第三步,Dis收到Ag發來的全同態加密的密文和簽名后,根據CL算法的密鑰,按位用FHEAg(1)、FHEAg(0)合成一個FHEAg(KEYCL),利用全同態加密的特性,在密文上操作對自己的CL算法進行解密,得到FHEAg(RDis(M)),然后利用冗余嵌入水印(具體用什么方式需根據實際應用場景確定)在密文上操作:
M′=MIXDis(RDis(M),DigAg(HDis(M)))
將Ag方加密的水印信息混雜到明文數據集中,從而得到FHEAg(M′),發送給Ag。
最后由Ag將自己的全同態加密解開,得到M′,即已經摻雜了Ag方簽名信息的明文數據集。
如果檢測到數據泄露,根據自己留存的隨機冗余信息在對應字節進行“異或”就可以提取出其RSA簽名信息,再根據其公鑰得到簽名內容H(M)即可作為證據。
如圖2所示,首先Ag將攜帶自己簽名信息的文件進行全同態加密FHEAg(M′)和FHEAg(1)、FHEAg(0)發送給Dis。Dis根據留存的冗余信息將對應位的密文刪除,即可得到FHEAg(M),再根據FHEAg(1)、FHEAg(0)組合得到密鑰FHEAg(KEYCL),在密文下進行CL加密得到FHEAg(CLDis(M))發送給Ag。Ag解密得到CLDis(M)發送給Dis。Dis自己解密得到M。

圖2 數據發布者和代理方的數據下載交換模型
3.3.1 數據上傳協議
第一階段,Ag得到的是明文哈希值和CL算法加密過的文件與其哈希值,哈希算法和CL算法保證了其無法逆向得到明文,所以此階段Ag方無法泄露數據。第二階段Dis拿到的是FHE算法加密的密文、簽名文件和FHE(1)、FHE(0),由于全同態加密的特性,對相同值加密的密文空間很大[31],確保Dis無法根據FHE(1)、FHE(0)破解密文,而且簽名的參數是以明文哈希值作為輸入的,所以此階段Dis無法故意偽造Ag的簽名信息而去誣陷對方泄露數據,只能在密文上操作混入水印信息。第三階段,Ag解密之后得到的就是混入了水印信息的明文,水印算法自帶冗余信息且無法和明文信息完全區分,可以做到一定程度的抗破壞,或者暴力破壞后明文信息失效。使得Ag不敢泄露數據或有效泄露數據。
3.3.2 數據下載協議
第一階段,Dis拿到FHE算法加密的密文和FHE(1)、FHE(0),之后可以根據保留的冗余信息按位將其從密文中刪除,但是無法從其中提取出簽名的明文信息,無法構造Ag的簽名從而故意誣陷Ag。第二階段,Ag拿到的是CL算法加密的密文且水印信息已經去掉,可由上傳協議第一階段的HDis(CLDis(M))來驗證是否完全去除,確認后才可將密文發送回Dis,由此Dis無法隨意刪除無關位而欺騙Ag。第三階段,Dis只能拿回初始明文,協議結束。
綜上所述,Dis方拿到的是Ag方的密文簽名無法解開,自己散布的數據也就無法攜帶Ag方標識而成為誣陷的證據。而Ag方最后所拿到的明文是夾雜了自己無法有效清洗的簽名信息,所以也不敢散布數據。如此雙方都無法隨意散布對方的信息,有效地防止了數據泄露發生時的互相抵賴。
實驗環境:
硬件環境:
CPU:I5-4200M,內存:8 GB
軟件環境:
Win7 x64,VM11下的Ubuntu14.04 x64,內核版本4.4.0-31-generic,虛擬化雙核,4 GHz。安裝NTL-10.5.0,GMP-6.1.2,g++4.8.4
對CL算法的參數設置為:
double u[4]={3.91,3.95,3.97,3.98};
int hd_inittimes=500;//預迭代次數
unsigned int mk[4]={0x13256FED,0x3257834F,0xC542DF68,0xEF63127D};//種子
對FHE算法的參數設置為:
long p=2;//明文空間
long r=1;//冪
long d=1;//域的擴張度
long c=2;//密鑰交換矩陣的列數
long k=80;//安全參數
long L=0;//等級數,密文的參數
long s=0;// 最小槽數
long seed=0;//PRG種子
long nt=1;//線程數
long w=64;//私鑰的海明權重
明文空間:Ζ[Χ]/(Φm(X),pr)。
簽名文件的大小為172字節。
圖3是本協議的正確性展示。test是初始明文,redundance是冗余之后的明文,randnum是Dis記錄的冗余信息,ciphertext_yh是CL算法加密過后的密文,fhe_enctxt是FHE算法加密后的密文,SignFile是簽名文件,YH_key是CL算法密鑰,dec_plaintxt是FHE算法解密后文件,extract是經過對協議的模擬后,提取在Ag方的文件中所含簽名信息,輸出后和最初的簽名明文信息一致,可由其公鑰驗證。

圖3 原文和解密后對比
圖4是程序運行的結果圖,其中加密文件的大小n為617字節,協議總的運行時間為160.942 s,其中CL算法的時間復雜度為O(n),相對于全同態加密,其執行時間可以忽略不計;FHE算法加密時間平均約8字節/s;密文上執行同態CL解密操作用時0.35 s,約1 763字節/s;FHE解密用時36.92 s,約21.3字節/s。因為是單線程,而且選用的是一般的硬件,所以在速度上還有很大提升空間。

圖4 程序運行結果圖
但是在文件尺寸上,加密過后文件大小提升到了2.5 GB,達到了6.5×105倍的提升,所以加密大尺寸文件時應注意切分。批處理時應加密達到一定硬盤占用就執行向對方的發送指令,確認送達后馬上刪除,以節省硬盤空間。

表1 功能、性能對照表
相對于基于明文的技術,我們的協議可以抗雙方泄露抵賴,使數據托管計算更具可信度;相對于基于密文的技術,我們的協議可以將這種文件尺寸擴展限制在文件傳輸階段,存儲階段是無需保存全同態的密文形式的,極大減少了平均時間內對磁盤的占用,且在托管計算時的速度上是明文級別的處理速度。
綜上所述,本協議在明文不敏感的情況下性能更接近于實用性要求。
本文提出了一種適應于數據擁有者和云商互不信任的情況下,希望在云端對自己的數據明文進行處理,且不希望云商得到己方數據的100%所有權和支配權的網絡環境下,保證數據被泄露時可以追蹤到的一種數據上傳協議。目前云計算服務推廣的障礙就在于對數據和隱私的保護,這個協議對云計算服務的推廣具有十分重要的作用,以協議約束的方式有效地防止了雙方在泄露發生時的相互抵賴,促使云商加大對數據的保護力度,增強了雙方的互信度。
通過實驗證明,數據擁有者只需負擔首次簡單加密的計算量和耗時相對較少的同態運算操作,時間消耗上相較以往提升很大,內存的占用也可以通過和磁盤IO次數來平衡,而磁盤占用問題成本相對低廉,所以相對于在密文上進行全同態操作的方案,在速度和磁盤占用上都擁有明顯優勢,具有重要的實用性意義。
本文提到的簽名算法使用了成熟的RSA算法。由于本次實驗是按位加密,全同態加密下的水印算法需要針對不同的文件格式自行設計,后續會對此和如何提升全同態加解密的速度繼續進行研究。相關代碼已發布在文獻[36]中。