林耿豪,周子集,唐 鑫,周藝騰,鐘宇琪,齊天旸
(國際關系學院 網絡空間安全學院,北京 100091)
云存儲提供以數據存儲和管理為核心的云計算服務。隨著互聯網數據的激增,越來越多的用戶選擇將數據外包給云服務提供商(Cloud Service Provider,CSP)來減輕本地壓力。由于云存儲具有數據量大、受眾范圍廣等特點,云服務商面臨著冗余存儲的問題。有研究表明,近75%的云端存儲數據至少存在一份副本。此外,大量數據的重復上傳也給資源有限的用戶引入了沉重的通信開銷。鑒于此,Dropbox、Mozy、Mega、Bitcasa[1]、百度云、阿里云等云服務提供商都開始采用去重技術來解決數據冗余問題。根據發生位置的不同,可將去重技術分為目標端去重(又稱云端去重)和源端去重[2](又稱客戶端去重)。在目標端去重[3]中,客戶端不必與云服務器進行去重響應的交互,可以有效防范側信道攻擊,但是用戶必須先上傳完整的文件,再由云端判斷是否執行重復數據刪除。由此帶來的是通信開銷與存儲開銷的增加。源端去重[4]在上傳數據之前,首先將其哈希指紋上傳到服務器,如果服務器索引中存在數據指紋,則不會上傳相應的文件。該技術能在文件級、塊級和字節級檢測數據流中的相同數據對象,只傳輸和存儲惟一的數據對象,并使用指向惟一數據對象的指針替換其他重復副本,從而實現快速縮減海量數據的目的。具體來說,用戶在外包數據之前先計算目標文件的哈希值作為查詢標簽發送給云服務商,后者在本地查找確認是否已經存儲相同文件,如果是,則返回響應阻止用戶的進一步上傳。盡管這一方案提高了存儲效率和帶寬利用率,云服務商返回的確定性響應卻為攻擊者創建了一個側信道[5],一旦不需要后續上傳,目標文件的存在性隱私立即泄露。尤其對于包括電子郵件、企業合同、病歷、電子工資單、標底書等在內的含低最小熵敏感信息的文件,攻擊者完全可以猜測文件內容并發動文件確認、學習剩余信息[6]和附加塊攻擊[7]等側信道攻擊,竊取合法用戶的身份、職業、敏感文件等隱私信息,嚴重危害用戶數據安全[8]。
為抵抗側信道攻擊,已有研究主要分為以下幾類:①添加可信網關[9]。在客戶端和云服務器之間設置一個第三方可信存儲網關,由客戶端將數據先上傳至網關進行存儲,再由網關執行去重后上傳至云服務器中。然而可信網關在現實場景中的部署開銷嚴重阻礙了實際應用。②設置觸發閾值[10]。只有請求文件的云端副本數量超過設定的閾值后,才會觸發去重機制,使隱私程度較高的非流行文件得到更好的保護。然而云端需要存儲相同文件的多個副本,不可避免地引入大量開銷。并且一旦文件副本數量超過閾值,去重機制便失去了對文件存在性隱私的保護作用。③混淆響應值。即引入響應模糊化策略,使得無論請求文件中的目標敏感塊是否存在于云端,返回的去重響應對于攻擊者都是難以區分的。這在一定程度上提高了去重方案的安全性。然而考慮到隨機塊生成攻擊[11]這一更為復雜的側信道攻擊,現有方案的隱私泄露概率將急劇增加。具體來看,攻擊者可以將隨機生成的塊和含有敏感信息的目標塊混合在一起生成去重請求發送給云服務提供商,由于隨機生成的塊在云端存在的概率極低,將其視為未命中塊。一旦響應返回下邊界值,即要求用戶上傳的塊或線性組合的數量等于隨機生成塊的數量,目標敏感塊的云端存在性將泄露給攻擊者。此外,現有方案并未重視請求塊的位置與響應間的內在聯系。對于低熵文件,攻擊者可以構造特定排列的去重請求,結合學習剩余信息攻擊[12]和隨機塊生成攻擊提高成功竊取隱私的概率。
在此背景下,為實現抵抗側信道攻擊的安全性,筆者提出了一種新的基于隨機塊附加策略的云數據跨用戶安全去重技術(Random Chunks Attachment Strategy,RCAS)。RCAS是一個能夠很好地抵抗隨機塊生成攻擊的去重協議,尤其針對安全風險更高的可預測模板文件。具體來說,云服務商接收到用戶上傳的去重請求后,在請求末端附加一定數量且狀態未知的塊來模糊原有請求塊的存在狀態,并通過亂序處理改變原有請求塊間的位置關系,在新提的響應表的幫助下擴大響應值的取值區間,從而降低下邊界值返回的概率。文中的工作主要概括如下:
(1) 提出了基于隨機塊附加策略的跨用戶去重架構,這是一種簡單而有效的防御側信道攻擊的架構。在用戶不清楚具體塊的存在狀態的前提下,支持通過上傳少量冗余數據塊(數量可調節)來實現抗隨機塊生成攻擊、學習剩余信息攻擊等側信道攻擊的安全性。
(2) 提出了RCAS響應表、基于添加隨機塊的存在狀態模糊化以及上傳塊亂序處理方法,在去重架構的幫助下生成混淆響應。有效改善已有工作在安全與效率關系上失衡的問題,實現了低熵文件的隱私保護。
(3) 在安全性分析基礎上,通過真實數據集將RCAS與當前流行的ZEUS、ZEUS+、RARE、CIDER等方法對比,證實文中方法以增加少量開銷為代價提高了安全性。
本節將介紹已有抗側信道攻擊方案,并分析存在的缺陷。HARNIK等[1]首先提出基于隨機閾值的方法(Randomized Threshold Solution,RTS)和臟塊列表來降低去重響應與文件存在性之間的相關性,并降低攻擊者利用側信道重復攻擊的能力。服務器為每個文件分配一個在范圍[2,d]內隨機均勻選擇的閾值,其中d是一個公共的參數。當文件為流行文件,即上傳次數超過閾值時,才會啟用去重。然而,為保證安全性應選取較大的參數d,這導致去重啟動開銷較大。LEE等[13]在RTS基礎上提出了一種動態隨機化確定去重閾值的方法,服務器將上傳文件的實際數量減去集合中的隨機數確定為去重閾值,使去重的發生具有一定的隨機性。WANG等[14]基于博弈論提出混合策略納什均衡(Mixed-Strategy Nash Equilibrium,MSNE)方法來確定去重閾值,將重復數據消除建模為攻擊者和云之間的動態非合作博弈。但是,以上設置去重觸發閾值的方案需要用戶多次上傳文件副本,增加了去重的啟動開銷。類似地,TANG等[15]設計了一種通過基于拉格朗日插值的聚合策略來支持標簽去重和完整性審計的方案。該方案可以抵抗對文件所有權隱私的側信道攻擊。ZHANG等[16]提出一種基于k匿名策略的安全閾值去重方案,支持機密性保護和所有權驗證。然而,類似于RTS,上述兩種方案均無法保證流行文件的存在性隱私。
對此,ZUO等[7]基于隱私信息僅存在于一個數據塊的假設,提出了一種隨機冗余塊方法(Randomized Redundant Chunk Scheme,RRCS)。RRCS與RTS類似,設置一個取值范圍在[d1,d2]中的隨機數w。RRCS的隨機冗余塊策略指云端在命中塊中隨機選取w個塊,將它們標記為未命中塊,需要額外上傳。若敏感塊存在,則云端要求用戶上傳w個塊;若敏感塊不存在,則需要上傳敏感塊,以及其他隨機選取的w-1個塊,從而保證每次都需上傳w個塊,云端通過觀察目標敏感塊是否存在調整隨機選取塊的數目,實現無差別響應。在此基礎上,ZUO等提出了一種新的威脅模型“附加塊攻擊”(Appending Chunks Attack,ACA),攻擊者可以生成任意數量的未命中塊附加在上傳請求中,由于敏感塊未命中時與附加塊均為未命中塊,云端將無法通過判斷敏感塊的存在狀態返回無差別響應。在新模型下,RRCS的響應值區間為可區分區間,隱私泄露的風險從零提升至1/(d2-d1+1)。基于響應值開展側信道攻擊的成功率較低,但從塊的位置信息推測敏感塊是否命中的成功概率極高。RRCS的響應值并非未命中塊個數,而是各個塊的序列號。一旦敏感塊命中且沒有包含在隨機選擇的塊中,攻擊者立即得知它的云端存在性,這種情況的泄露概率高達w/(n-1),其中n為塊總數。為此,TANG等[12]提出請求合并方案(Request Merging based Deduplication Scheme,RMDS),用戶上傳所有塊的內容異或值。若敏感塊未命中,則云端可由其余存在塊和該異或值求出敏感塊內容;若敏感塊命中,則用戶也需上傳異或值,以實現無差別混淆。對于附加塊攻擊,RMDS需要不同用戶對同一目標文件請求去重至少兩次,云端可以根據兩次請求判斷附加塊的數量N,生成N+XOR作為響應值(N為附加隨機塊塊數),對附加塊與其余塊采取不同上傳策略,從而抵抗附加塊攻擊。但是,RRCS與RMDS均假設敏感信息僅存在于一個塊,這顯然不符合現實去重情況。
YU等[17]擴展了單敏感塊的應用場景,提出隱私感知重復數據消除方案(ZEro knowledge dedUplication reSponse,ZEUS)和ZEUS+方案。ZEUS根據相鄰兩塊的存在狀態生成去重響應,當兩個塊中至少有一個塊命中時,響應值為1,要求用戶上傳這兩個塊的異或值;否則響應值為2,用戶需要上傳兩個完整塊。同時,ZEUS引入了撤銷請求攻擊——攻擊者獲得響應值后拒絕上傳或者上傳不合規的塊以期望執行重復請求竊取隱私,以及“Sybil”攻擊——攻擊者可以操縱多個傀儡賬戶發起攻擊,增加泄露概率。為此,ZEUS設計臟塊列表抵御它們。當任何塊不合規請求去重時,該次請求去重的兩個塊均會被列入臟塊列表,標記為臟塊。若在后續上傳中任意一個塊為臟塊,則云端不論這兩個塊是否存在,都要求上傳兩塊的內容而不是兩塊的異或值。由此,臟塊列表使得同一敏感塊僅在第1次請求去重時存在泄露隱私的風險。在此基礎上,ZEUS+方案還額外引入隨機閾值的思想,進一步保護數據塊的不存在性隱私。隨后,POORANIAN等[18]提出隨機響應方案(RAndom REsponse,RARE),即在ZEUS基礎上采用了混淆性更強的響應方案,當兩個塊至少有一塊存在時,云端要求用戶上傳異或值或者兩塊的內容,兩種選擇的概率各為50%。然而,這些方案無法抵抗隨機塊生成攻擊[11],攻擊者可以構造敏感塊+隨機塊的上傳請求,由于隨機塊未命中,一旦敏感塊命中,兩種方案的隱私泄露概率分別高達100%和50%。文獻[19]提出基于編碼的客戶端重復數據消除響應方案(Coded clIent-side DEduplication Response,CIDER),將RARE的原理推廣到了兩個以上同時請求去重的數據塊。但是攻擊者仍可以構造一個敏感塊多個隨機塊的組合,在第1次攻擊中以50%概率得知敏感塊的存在狀態。隨后,HA等[20]提出了一種基于分組異或的抗側信道攻擊去重方案。具體來說,云服務商根據存在狀態將請求塊劃分為命中和非命中兩個集合,根據兩集合中塊數的比值,采用不同的方法將集合中元素兩兩配對,要求用戶上傳不同塊對的異或值。此方案在一定程度上擴大了響應的取值范圍。然而,一旦返回響應區間的下邊界值,則存在性隱私立即暴露。
本節介紹采用隨機塊附加策略的云數據安全去重機制網絡模型,并通過定義威脅模型來展現潛在的攻擊手段與安全威脅。
文中的網絡模型包含兩個實體:云服務提供商以及用戶。一個云服務提供商具有強大的計算能力,可以同時為多個用戶提供云存儲、跨用戶去重以及下載服務。具體來說,接收到去重請求后,云服務商在本地存儲進行比較,并根據去重協議生成響應返回給用戶,阻止相同文件的后需上傳。而用戶則通過外包文件來減輕本地存儲壓力。用戶將要上傳的文件f以固定長度φ劃分為多個塊Ci,i∈{1,2,…,n}。計算它們的哈希值Hi=Hash(Ci)作為查詢標簽發送給云端,其中Hash(·)是哈希摘要函數(例如SHA-256)。根據云端返回響應值R計算并上傳相應數目的線性組合,以供云端解碼得到未命中塊。
側信道攻擊是跨用戶源端去重的主要威脅。攻擊者偽裝成普通用戶,通過分析敏感塊Ci的云端響應值竊取該塊的存在狀態,即試圖得知云存儲中是否已經存在Ci的副本。在流量混淆策略下,響應值的最小值根據敏感塊是否存在而變化,因此攻擊者可通過觀察去重響應值是否等于已知未命中塊的塊數來判斷該敏感塊的存在狀態。如果云端響應值R等于已知未命中塊的塊數,則攻擊者得知敏感塊Ci已經存儲在云端。
文中方案主要考慮兩種復雜的側信道攻擊、隨機塊生成攻擊[11]和學習剩余信息攻擊[6]。
3.2.1 隨機塊生成攻擊
攻擊者構造一個內容為隨機比特流、長度為塊長度φ的隨機塊。由于一個隨機塊被云端檢索到的概率極小可以忽略不計,故認為該塊為未命中塊。攻擊者可以構造上傳請求,其包括一個含隱私信息狀態未知的塊、t個隨機塊和s個命中塊。除敏感塊以外所有塊的存在狀態已知。當敏感塊存在于云端時,云端響應值的最小值為t;而敏感塊不存在時,云端響應值的最小值為t+1。故一旦攻擊者接收到的響應值為t,則可判斷敏感塊命中。
3.2.2 學習剩余信息攻擊
對于低熵模板文件[21],攻擊者可以生成并請求上傳隱私信息的所有可能版本,以獲得它們各自的響應值。結合隨機塊生成攻擊,一旦生成的敏感塊命中且返回響應下邊界值,則該隱私信息的內容立即泄露。
文中方案不考慮撤銷請求攻擊、Sybil攻擊與所有權認證(Proof of OWnership,POW)問題。由于文中方案沿用ZEUS的臟塊列表機制,設計針對文件塊的黑名單機制,其可以在用戶抵賴、上傳內容無法通過完整性檢驗時將非法文件塊記錄為臟塊,阻止攻擊者通過撤銷請求攻擊、Sybil攻擊構造去重請求獲取更多信息[17]。此外,在文中模型下,攻擊者可以構造去重請求,則該請求的所有塊均為攻擊者所有,必然會通過所有權認證。因此不考慮模糊去重、密文去重[22]等涉及的所有權驗證威脅。
本節介紹基于上述系統模型構建的采用隨機塊附加策略的云數據安全去重方法(RCAS),從設計動機、去重模型框架和去重方法闡述該模型的設計與實現。
現有響應模糊化去重策略無法抵御側信道攻擊的原因主要有如下4個方面。
4.1.1 響應表的設計
現有流量混淆策略的去重模型將安全性僅依賴于響應表的模糊化。隨著隨機塊生成攻擊[11]的出現,攻擊者可以構造僅含有敏感塊與隨機塊的上傳請求,ZEUS、RARE、CIDER的響應表在這種攻擊中存在可區分響應,泄露隱私的概率分別為100%、50%和50%。并且,響應表的設計需要平衡安全性與性能,被要求上傳的命中塊數越多,模糊性越強,但額外通信開銷也越大。例如,若命中塊有50%概率被要求上傳,則側信道泄露隱私的概率降低至50%,但需要額外上傳50%的命中塊。因此,為實現安全級別較高的去重方案,僅憑借響應表模糊化會帶來大量額外傳輸開銷。
4.1.2 多敏感塊的缺陷
現有方案將安全性依賴于多敏感塊的上傳請求。根據CIDER[19],當多個敏感塊分散在l個分組中,當且僅當各分組響應值均等于分組內未命中塊數時泄露隱私,每個分組泄露隱私概率為50%,因此含l個敏感塊的上傳請求泄露所有敏感塊隱私的概率為2-l。但攻擊者可以構造多個獨立的上傳請求,每次請求僅包含單一敏感塊,每次請求泄露單個敏感塊隱私的概率為50%。攻擊者雖然竊取所有隱私的概率較低,但能夠以較大概率竊取半數敏感塊。
4.1.3 響應值區間大小的局限
現有方案通過擴大響應值區間大小以提高安全性,需要付出高昂傳輸開銷代價。在RTS方案中,門限最大值d的增大可以擴大門限取值區間;在RRCS中,隨機選取w個命中塊標記為未命中塊,w∈[d1,d2],該區間的擴大也可以提升安全性。可區分響應泄露隱私的概率取決于響應值等于其取值下界的概率,而以上策略為了降低該概率需要提高d和d2兩個參數,它們與隱私泄露概率的關系為d-1和(d2-d1+1)-1,與開銷的關系為d和(d2-d1)。因此,隨著參數變大,安全性提升速度減緩,開銷提高速度不變。文中方案考慮一種新型的隨機塊附加策略,以較小開銷為代價實現安全性大幅提升。將隨機塊定義為云端生成的存在狀態未知的塊,結合范德蒙德編碼方案模糊響應值和塊位置間的關系[19],可以在降低額外通信開銷的同時為去重方案帶來更高的安全性。以該機制結合CIDER為例,假設一個分組內有k個狀態隨機的附加塊,原有t個未命中塊和1個敏感塊,附加塊為命中塊概率α,則響應值區間由[t,t+1]擴大至[t,t+k+1],響應值為下邊界t時泄露隱私,隱私泄露概率p降低至αkp。
4.1.4 位置關系的泄露
現有方案未對塊與塊位置關系模糊化處理。現有方案中敏感塊在上傳請求的位置固定,因此攻擊者可以構造含有敏感塊的單一分組,該分組響應值由組內命中塊與非命中塊數目決定,響應值區間較小,模糊性較差。當采用位置關系模糊化處理時,敏感塊以等可能概率分布在任意分組,攻擊者僅能通過檢查整個上傳請求的響應值竊取隱私,響應值區間擴大。以概率計算為例,出現隱私泄露的排列為事件A,響應表泄露隱私為事件B,則現有方案泄露隱私的概率為P(B),在特定排列下且泄露隱私為事件A∩B,概率為P(AB),小于等于P(B)。因此,未進行位置模糊化處理是現有方案泄露隱私概率高的原因之一。
文中方案分別對以上4種因素采取措施:設計RCAS響應表,平衡模糊性與去重性能;所有實驗考慮一次上傳請求中僅含一個敏感塊的情形,在此基礎上開展安全性實驗;設計存在狀態模糊化機制,云端在每個上傳請求末尾附加k個狀態未知的塊,從而將特殊情況下泄露隱私的概率降低至原本的αk,其中α是每個附加塊為命中塊的概率;云端收到上傳請求后進行亂序處理,對請求中各塊位置模糊處理。
另外,文中方案沿用了3個現有方案的去重機制:①參考ZEUS在一定程度上改進臟塊列表,阻止攻擊者通過抵賴或上傳不符合完整性校驗的塊獲取額外信息并降低傳輸開銷。②參考CIDER響應表設計響應值新下邊界值,考慮攻擊者構造的1個敏感塊加n-1命中塊的上傳請求,其中n為該次上傳的總塊數,當敏感塊命中時,該上傳將消除亂序帶來的混淆性,將響應值下限從0提升至1,以阻止敏感塊命中帶來的可區分響應。③參考CIDER采用范德蒙德編碼解碼機制,云端只需發送未命中塊的數量信息以保護未命中塊的位置信息,阻止攻擊者通過判斷位置已知的敏感塊是否需要上傳來竊取信息。
基于隨機塊附加策略的明文去重方法,去重的流程通常由用戶發送去重請求開始。如圖1去重模型概念圖所示,首先用戶將文件分塊,并分別計算每個塊的哈希值作為查詢標簽發送給云端。接下來,通過圖1中響應值處理模塊的6個子模塊得到響應值:①云端從數據庫查詢用戶上傳的指紋,檢查各請求去重的塊的哈希值是否存在,獲取擬上傳塊的存在狀態數組;查詢臟塊列表,檢查每個塊是否被標記為臟塊,如果是,則在存在狀態數組中修改對應數據塊的臟塊狀態標識;②附加塊生成器向存在狀態數組附加k個狀態隨機的標簽;③執行亂序處理;④根據響應表生成針對該次上傳請求的響應值;⑤根據響應值的下邊界值修改響應值,令其最小為1;⑥返回響應值。用戶根據云服務提供商返回的響應值上傳指定數目的線性組合,非正常上傳的塊將被加入臟塊列表。云端對用戶上傳的線性組合解碼還原出相應的未命中塊,并在本地數據庫保存。此外,云服務提供商維護已存儲文件的塊列表,塊列表存儲文件所含塊在數據庫的實際地址。

圖1 采用隨機塊附加策略的云數據安全去重模型概念圖
以用戶A和用戶B的去重為例,在圖2所示基于隨機塊附加策略的云數據跨用戶安全去重模型框架圖中,用戶A將請求上傳的文件fA分割成n個長度相等的塊C1,C2,…,Cn,生成每個塊的標簽H1,H2,…,Hn,并以標簽集tagA的形式發送給云服務提供商作為去重請求。 接收到請求以后,云端首先查詢本地數據庫,分別比對tagA中H1,H2,…,Hn的存在狀態,生成存在狀態數組D。 接著,云端逐個檢查Hi,i∈[1,n]對應的數據塊是否為臟塊。 在圖中的例子里,經檢查,云服務提供商發現臟塊列表為空,所有請求去重的數據塊都不是臟塊。再下來,云端使用附加塊生成器生成k個狀態隨機的塊附加在存在狀態數組D末尾,然后將存在狀態數組重新排列,形成亂序數組Dshuffle。 云將該數組的元素按照相鄰順序排列,兩兩分為一組,根據RCAS響應表計算每小組的響應值rai。最后,執行求和算法計算總響應值RA,并將RA的最小值限定為1。云服務提供商將RA發送給用戶A。 用戶A通過范德蒙德矩陣編碼,計算并上傳包含C1,C2,…,Cn信息的RA個線性組合。
對用戶B,其準備上傳的文件fB與用戶A上傳的文件fA是相似文件。fB被用戶B分割成n個長度相等的塊C1,C2,C′3,…,C′n,其中C1和C2兩塊已由用戶A上傳,屬于命中塊,存在狀態為1。 在用戶B發送此去重請求之前,由于某用戶C未按要求上傳,導致C2被標記為臟塊。 因此通過查詢臟塊列表,云服務提供商將用戶B的去重請求標簽集tagB中的H2值更新為0。 接下來,云端生成k個狀態隨機的附加塊,再經過亂序、響應生成等流程,最終生成響應值RB。 用戶B計算并上傳RB個線性組合。 接收到用戶發來的線性組合后,云服務提供商解碼并恢復出fB。 由于fB所有塊最終都正常上傳,沒有塊被記錄為臟塊。

圖2 采用隨機塊附加策略的云數據安全去重模型框架
去重模型的基本流程大致可以劃分為4個步驟:用戶請求上傳、云端響應、數據存儲和數據還原。采用隨機塊附加策略的云數據安全去重模型(RCAS)偽代碼描述如下。
算法1RCAS。
輸出:filefwith chunk sizeφ,and user partitionsfinto chunksC1,C2,…,Cn
① if bit length |Cn|≠φ
② user performs padding toCnwith 0 最后一塊用比特0將長度補齊至塊長
③ if 0 ④ user addsT-nchunks to the end of filef ⑤ user setsn=T ⑥ user obtainsHi=Hash(Ci)(1≤i≤n) and uploads tag={H1,H2,…,Hn} 計算上傳請求標簽tag ⑦ CSP obtains listD=IsExist(tag) 云端檢查用戶上傳塊的存在狀態D并檢查臟塊列表 ⑧D′=RandRsp(D,α,k) 執行RandRsp函數,附加k個塊 ⑨Dshuffle=Shuffle(D′,w) 執行Shuffle函數,對D′亂序,w是置亂密鑰 ⑩R=GenRsp(Dshuffle) 執行GenRsp函數,獲取響應值R 4.2.1 用戶請求上傳階段 用戶對文件執行4個操作:分塊(Input行)、塊內補齊(步驟①~②行)、塊數補齊(步驟③~⑤)、計算上傳請求標簽(步驟⑥)。首先用戶按照給定的數據劃分策略——固定塊長φ(字節)將文件f分割成n個小的數據對象塊C1,C2,…,Cn。若最后一個塊長度不足φ,則補齊至φ。若塊數n不足閾值T,則用T-n個數據塊將文件補齊至T塊,這T-n個塊的內容為全0比特。特別地,全0比特塊由于存在于云端,無需額外傳輸開銷,但可以擴大響應值取值范圍從而保護敏感信息。用戶在本地基于每個數據塊的內容計算其哈希值作為指紋。塊指紋是數據庫存的惟一標識,一般選擇SHA-1和MD5等抗沖突加密哈希值作為其指紋。將塊指紋作為上傳請求標簽發送至云端。 4.2.2 云端響應階段 云服務提供商接收用戶發來的哈希值之后執行4個元算法:IsExist、RandRsp、Shuffle和GenRsp。他們分別對應塊存在性狀態查詢(步驟⑦)、添加附加塊(步驟⑧)、文件塊打亂(步驟⑨)和響應值生成(步驟⑩)。在IsExist算法的執行過程中,云服務提供商從本地數據庫中對用戶上傳的塊指紋進行查詢,獲取上傳塊的存在狀態數組D。接下來,云端創建用戶ID和文件指紋,文件內建立塊列表,將命中塊在數據庫的實際地址保存至塊列表。在RandRsp算法的執行過程中,云服務提供商在用戶擬上傳塊的存在狀態數組D尾部添加k個隨機塊。然后,云端執行Shuffle算法打亂存在狀態數組的排序,執行GenRsp算法獲取響應值R,并限制R的最小值為1(步驟~行)。最后,將響應值R發送給用戶(步驟)。 4.2.3 數據存儲階段 用戶執行VandEnc算法,云服務提供商執行VandDec算法。在接收到云端的響應值R后(步驟),用戶端執行VandEnc算法(步驟),以R作為輸入,輸出R個線性表達式并將它們上傳至云端(步驟)。云端執行VandDec算法對用戶上傳的R個線性表達式進行解碼(步驟),從而恢復出用戶發送的請求中未命中塊的內容。云服務提供商將未命中塊的實際地址保存到塊列表中,便于后續開展去重檢測和文件還原時使用(步驟)。 4.2.4 數據還原階段 云服務提供商首先對用戶開展身份認證,檢查用戶對文件的所有權。云根據用戶標識符ID以及文件指紋在云端查詢目標文件。若找到目標文件,根據目標文件的塊列表提供的各塊實際地址,將各塊內容按序拼接,還原文件。 本小節介紹實現文中方法所使用的核心算法,如存在狀態模糊化、上傳塊亂序、RCAS響應生成、范德蒙德矩陣編解碼和臟塊處理等內容。 4.3.1 存在狀態模糊化 存在狀態模糊化是一種通過對用戶請求去重的文件對應的數據塊標簽中,附加一定數量狀態隨機的塊,以實現混淆命中塊塊數的方法。 云服務提供商在接收到用戶發送的查詢標簽Hi之后,先分別檢查每一個標簽在云端的存在狀態,并將存在狀態存儲在一個數組D中。 數組中元素di,可表示為 (1) 由式(1)可知,D= {0,1}n,其中n為用戶本輪請求去重的文件中數據塊標簽的總數。接著,云服務提供商在D的末尾附加k個元素,每個元素以概率α取1,以概率1-α取0。 存在狀態模糊化通過對存在狀態數組D做出一定改變,可在響應值得出過程中實現有效混淆。 從實現上看,獲取存在狀態以及存在狀態模糊化可以用原算法形式表示如下: (1)D←IsExist(tag),其中輸入為集合tag,表示用戶上傳的請求去重的數據塊標簽的集合;輸出為數組D,表示云服務提供商返回的用戶擬上傳數據塊在云端的存在性狀態。 函數IsExist()用來判斷tag中的每個數據塊標簽是否存在于云端,并將結果記入D中。 (2)D′←RandRsp(D,α,k),其中輸入為數組D,附加元素取值概率α以及附加元素個數k,輸出為數組D′。 函數RandRsp()表示響應模糊化函數,向數組D中添加k個元素,其中每個元素以概率α取1,以概率1-α取0。 4.3.2 上傳塊亂序 亂序是將敏感塊等可能地分散至任一分組,從而擴大響應值的取值區間,以實現對攻擊者的混淆。 為了實現亂序,通常采用專門實現置亂的庫函數,輸入有序序列,得到等長亂序序列。 從實現上看,亂序可以用元算法形式表示如下: Dshuffle←Shuffle(D′,w),其中w為置亂密鑰,由CSP隨機生成。 該算法以經過云端模糊化處理的文件塊存在狀態數組D′為輸入,將亂序后的數組Dshuffle作為輸出。 4.3.3RCAS響應生成 R←GenRsp(Dshuffle),其中輸入是亂序后的存在狀態數組Dshuffle,輸出是該數組的響應值R。 該函數表示由存在狀態數組生成響應值的函數。 表1 RCAS響應表 4.3.4 范德蒙德矩陣編解碼 范德蒙德矩陣編解碼[19]由客戶端范德蒙德編碼與云端范德蒙德解碼組成。 假設待上傳的文件含有n個塊,其中t個為未命中塊,文件塊矩陣C=[C1,C2,…,Cn]T,云端返回的響應值為r。 客戶端線性表達式計算如下:用戶與云端約定了一個r×n的范德蒙德矩陣Vr,矩陣的秩R(Vr)=r。 用戶計算mr=VrCr,并將矩陣mr上傳至云端。 云端得到mr后,取其前t行,記為mt,云端由參數t計算矩陣Vt,計算(n-t)×n的In-t,In-t的內容為(E(n-t)×(n-t)?0(n-t)×t),E為單位矩陣,0為零矩陣;由于云端已經擁有n-t個塊,云端由這些塊得出矩陣Cn-t=[C1,C2,…,Cn-t]T;接著將In-t和Vt拼接,形成n×n的矩陣;將Cn-t與mt拼接,形成n×φ的矩陣。 由式(4),可得出C=[C1,C2,…,Cn]T。Vr、mr、Cn表達式為 (2) mr=VrCr, (3) (4) 從實現上看,范德蒙德編碼與解碼可以用元算法形式表示如下: (1)m←VandEnc(V,C),其中輸入為矩陣V和C,輸出為矩陣m,該函數表示范德蒙德編碼。 (2)C←VandDec(m,V),其中輸入為矩陣V和m,輸出為矩陣C,該函數表示范德蒙德解碼。 4.3.5 臟塊處理 云端設置臟塊列表,將所有未上傳的或上傳后未通過完整性校驗的塊定義為臟塊,記錄在臟塊列表中[17]。在請求去重階段,云服務提供商收到用戶發來的文件塊標簽后首先檢索它們是否在臟塊列表中。有別于ZEUS、CIDER的臟塊處理機制,若塊Ci為臟塊,則云端僅將該塊的存在性狀態設置為不存在,即0。無需將本組所有塊狀態設置為不存在,此改進可以有效減少傳輸開銷。 本節從理論上分析RCAS去重策略面對隨機塊生成攻擊的安全性。 定理1面對隨機塊生成攻擊時,當上傳塊數n遠大于附加塊k時,RCAS的響應值泄露隱私的概率小于目標敏感塊在云端存在概率的1%。 證明:假設攻擊者構造包含n個塊的去重請求,其中含1個狀態未知的目標敏感塊,目標敏感塊在云端存在概率為p,包含s個命中塊和t個未命中塊,n=s+t+1。 云端附加的隨機塊數為k,n>>k。令泄露隱私為事件A,云端響應值為響應值下邊界是事件B,敏感塊為命中塊是事件C,事件B|C為事件X,云端k個附加塊中有i個塊為命中塊是事件Zi。P(C)=p。 對于隨機塊生成攻擊,當敏感塊存在于云端且云端響應值為響應值下邊界時泄露隱私,此時有 P(A)=P(BC)=P(C)P(B|C)=pP(B|C) 。 (5) 計算全概率公式: P(B|C)=P(X)=P(Z0)P(X|Z0)+P(Z1)P(X|Z1)+…+P(Zk)P(X|Zk) 。 (6) 由于單個附加塊命中概率α,未命中概率1-α,且各個附加塊是否命中相互獨立,可得 (7) 因此,求P(X|Zi)可得P(A)。 事件X出現情景如下:當n+k個塊,所有命中塊靠左側排列,而所有非命中塊靠右排列時,根據RCAS響應表,響應值即為下邊界值,等于未命中塊塊數,泄露敏感塊存在性隱私,此時有 (8) 將式(7)、(8)代入式(5),可得 (9) 展開式(9),可得 (10) (11) (12) (13) (14) 定理2當上傳數據中含有臟塊,且上傳塊數n遠大于附加塊k時,泄露隱私的概率小于敏感塊在云端存在概率的1%。 證明:考慮以下場景,攻擊者可能無法從一次攻擊得知敏感塊狀態,因此考慮對同一敏感塊的多次攻擊。比如攻擊目標的薪資收入是40美元,攻擊者需要反復上傳驗證該具體數值。 一旦該敏感塊存儲至云端,竊取該塊存在性隱私的攻擊將沒有效果。 為保證后續驗證時目標塊未存儲于云端,攻擊者在得到第1次請求的響應后會選擇中斷上傳。 根據臟塊機制,中斷上傳將導致后續請求中包含臟塊。 假設后續請求總塊數為n,其中含1個敏感塊,目標敏感塊在云端存在概率為p,請求還包含s個命中塊和t個未命中塊,n=s+t+1。 若敏感塊為臟塊,且此外含若干臟塊。因為臟塊的存在狀態為0,即為非命中塊,故響應值下界大于等于t+1,大于t。 又因為當且僅當敏感塊為命中塊且響應值為t時泄露隱私,故敏感塊為臟塊時不會泄露隱私。 泄露隱私概率為0,小于0.01p。 通過實驗來測試文中方案抵抗側信道攻擊的安全性以及去重性能。比較對象為DEDUP、ZEUS[17]、ZEUS+[17]、RARE[18]、CIDER4[19]、CIDER8[19],其中DEDUP為未設置任何模糊化處理的跨用戶源端去重,CIDER4為每次上傳4個塊為一個分組的CIDER去重模型。實驗采用Python實現采用隨機塊附加策略的云數據安全去重方法。在該去重系統中,哈希摘要函數采用SHA-256算法。選取亞馬遜EC2來部署云端程序,選取一組配置為 Intel(R) Core(TM) i7-8565U CPU @ 1.80 GHz、8 GB RAM內存和512 GB容量 7 200 轉硬盤的服務器部署用戶端程序。在安全性驗證實驗部分采用UCI機器學習知識庫的薪資數據集Census Income[23],其包含48 842條薪資數據。在去重性能實驗部分采用Enron電子郵件數據集[24],其大小為1.5 GB。 模型中,塊大小φ為實驗變量,φ∈{64,128,256,512},單位為字節(B)。附加塊為公開塊的概率α,設置為0.5。附加塊塊數k為實驗變量,k∈{2,4,6},單位為塊。文件所含塊數閾值T默認為30,隨著塊數增加,安全性逐漸增強,當塊數大于等于30塊時,安全性趨于定值,因此選取T=30。 使用UCI機器學習知識庫的薪資數據集Census Income測試比較各個方法面對隨機塊生成攻擊結合學習剩余信息的混合攻擊時,泄露目標敏感塊存在性隱私的概率。場景如下:數據機構A將某公司員工工資信息表存放于云端,該文件只含部分敏感數據,其余部分均為公開數據。具體地,工資信息表包含年齡、階層、婚姻狀況等公開信息以及學位、每小時薪資、資本收入敏感信息。攻擊者在未經許可的情況下想要獲知其他員工的學位、薪資、資本收入,只需按照模板格式生成目標員工的公開信息,同時附加上猜測的敏感信息生成工資信息表,并生成去重請求,發送給云服務提供商觀察響應。一旦云服務提供商在本地發現相同的工資信息條目,則會阻斷當次上傳。此時該攻擊者就可確認猜測的學位、薪資、資本收入即為目標對象的真實信息。 該數據集含有3類低最小熵的可預測敏感信息,每條敏感信息存在于單一數據塊之中。在攻擊策略上,攻擊者采用學習剩余信息,即暴力字典攻擊,例如,攻擊者可以枚舉學位的所有可能選項,學士學位、碩士學位、博士學位,逐一構造含有以上選項的上傳請求,觀察各上傳請求是否被云端阻止。一旦某次上傳請求的敏感信息等于目標敏感信息,且上傳請求被阻斷,則泄露隱私。以上構造的多次上傳請求被視作一次學習剩余信息攻擊。由于目標敏感信息必然在上述可能選項之中,因此目標敏感塊在云端存在的概率p的值固定為1。對于學習剩余信息攻擊的每次上傳請求,攻擊者采用隨機塊生成攻擊策略,構造內容為1個敏感塊加s個命中塊加t個未命中塊的上傳請求。若目標敏感塊在云端存在,且響應值等于未命中塊數t,則泄露隱私。本實驗假設攻擊者試圖竊取所有可預測敏感信息,對每個目標敏感信息構造一次學習剩余信息攻擊,期望在所有可預測敏感信息中猜對盡可能多的信息。 實驗設置上,云端數據方面,將數據集所有薪資數據共48 842條上傳至云端數據庫。待去重的用戶端數據方面,薪資數據含有三類敏感信息,共146 526個敏感數據。隨機選取其中100 000個敏感數據作為敏感數據,攻擊者采用學習剩余信息策略構建含有敏感數據的上傳請求。若單次學習剩余信息攻擊構造的所有上傳請求中任意一次響應值為t,則此次攻擊成功竊取目標敏感信息,記錄100 000次攻擊中成功竊取隱私的次數。 接下來分別測試了所提方案與現有工作在上述場景中隱私泄露的概率。 6.2.1 響應值下限機制下RCAS的安全性 為了檢測設置響應值下限對隱私保護的作用,實驗首先測試了未設置該機制時模型的安全性。如圖3所示,在未命中塊數量t=0的場景下,隱私泄露率并沒有隨塊數增加而提升,而是固定在25%、6.25%和1.56%,此時有極大概率泄露隱私。原因如下:當未命中塊數t=0,且附加的k個塊全為命中塊時,該情況概率為αk,攻擊者構造的上傳請求全部為命中塊,響應值以100%概率等于0,即等于未命中塊塊數,從而泄露隱私。而當k個塊不全為命中塊時,此時t≥1,響應值等于未命中塊數的概率降低。因此泄露隱私的概率P(A)約等于附加的k個塊全為命中塊的概率αk。具體如圖3所示,當k=2時,P(A)=25%;當k=4時,P(A)=6.25%;當k=6時,P(A)=1.56%,與上述理論值相符。因此,未設置響應值下限時,方案有較高概率泄露敏感信息存在性隱私。 圖3 未設置響應值最小值時RCAS泄露隱 私次數圖(其中未命中塊數t=0) 圖4、5、6展示了設置響應值下限時模型的安全性。由于未命中塊數t=0時,響應值最小值為1而不為0,此時隱私泄露概率為0。方案僅在t≥1時泄露隱私。當附加塊數k=2時,模型泄露隱私概率均小于7%,而當k≥2時,模型泄露隱私概率降低至1%以下,體現了所提方法在側信道攻擊下的安全性。k和t的值越高,所提方法的安全性越強。隨著n的值增加,方法的安全性趨于穩定。用戶可以設置k的值,動態調整安全性。 圖4 RCAS泄露隱私次數圖(其中未命 中塊數t=1,已設置響應值下限) 圖5 RCAS泄露隱私次數圖(其中未命 中塊數t=2,已設置響應值下限) 圖6 RCAS泄露隱私次數圖(其中未命 中塊數t=4,已設置響應值下限) 6.2.2 RCAS與現有工作安全性性能對比 RCAS與比較對象在相同輸入參數下的隱私泄露次數如表2所示。在100 000次攻擊中,對照組方案DEDUP以及ZEUS隱私泄露的次數是100 000次,RARE、CIDER(4)、CIDER(8)方案隱私泄露的次數分別是50 054、50 090、49 986次。RCAS在不同的參數設置下,隱私泄露的次數分別為25 016、6 256、1 561、475和66次,顯著低于對比方案,并且用戶可以根據自己的需求設置不同附加塊塊數k以實現安全性的動態調整。因此,RCAS在面對隨機塊生成攻擊結合學習剩余信息攻擊的混合攻擊時,具有較高的安全性。產生這種現象的原因在于,在對照組DEDUP方案中,云服務提供商未對響應值做任何模糊化處理,響應值等于未命中塊塊數,因此暴露隱私的概率是100%;在ZEUS方案中,請求去重的塊被成對檢查,攻擊者構造目標敏感塊和未命中塊的配對,當目標塊命中時,響應值固定為1,要求用戶上傳這兩個塊的異或值,否則響應值固定為2,要求用戶上傳兩個塊本身。因此,攻擊者可以根據響應值為1確定目標塊的存在;而RARE對ZEUS方案的這兩種情況做了進一步混淆,具體為當敏感塊命中時,響應值等概率分布為U(1,2)。只要攻擊者接收到響應值等于下邊界值1,即未命中塊數,便能推測出敏感塊命中,因此隱私泄露概率為50%。對于CIDER,盡管將場景從兩個塊擴展到多個塊,本質上與RARE原理相同,當敏感塊命中,一旦響應返回下邊界,即未命中塊數,隱私立即泄露。 表2 安全性性能表 通過在Enron電子郵件數據集上開展去重實驗,比較各方案的去重效率。開展傳輸開銷與塊長關系實驗,探究保證效率下的最佳塊長;開展傳輸開銷與附加塊塊數關系實驗,探究方案參數附加塊塊數對去重效率的影響;開展上傳開銷與未命中塊比例關系實驗,比較各方案在不同未命中塊比例下的去重效率。 6.3.1 用戶端上傳開銷與文件塊長度的關系 實驗通過比較各模型在不同塊長下的傳輸開銷探究最佳塊長。塊長越小,去重的強度越高。然而,塊長越小,元數據量也會相應增加,客戶端指紋數目增加,指紋的傳輸開銷更高。為此,設計實驗以研究塊長對傳輸開銷的影響。 實驗設置如下:待去重的客戶端數據測試集為Enron電子郵件數據集中may-l文件夾,含1 600個總共大小為5.84 MB的文本數據文件。云端數據為該數據集除去測試集的所有文件夾內數據,包含51萬個文件共約1.5 GB的文本數據。場景如下:某公司的大多員工已經將各自的電子郵件數據存儲在云端,員工May最后一個上傳她的郵件。由于不同電子郵件間形式上極為相似,對于May,使用源端去重相比于目標端去重能夠節省更多傳輸開銷。除了ZEUS等方案,還比較了DEDUP和RAW兩個對照組模型的去重開銷。DEDUP為不經任何模糊化處理的源端去重方案,所有命中塊無需上傳。而RAW為目標端去重方案,所有塊無論命中與否都需要上傳。選取塊長φ為自變量,φ∈{64,128,256,512},單位字節(B)。參數選取k=2,α=0.5。 塊長與總傳輸開銷的關系如圖7所示。當塊長為128 B時,所有方案均有最佳的去重表現,所需總傳輸開銷維持在最低水平。而當塊長為64 B或256 B時,各方案去重傳輸開銷均有所上升,而塊長達到512 B時,需要額外傳輸大量數據。因此,128 B為各方案最佳塊長度。 圖7 各方案傳輸開銷與分塊長度的關系圖 6.3.2 用戶端上傳開銷與附加塊數量的關系 附加塊數量作為方案的可變參數,其與傳輸開銷的關系值得進一步研究。實驗沿用以上實驗的設置,調整附加塊數量k,觀察不同塊長下的傳輸開銷。如圖8所示,當附加塊數增加時,傳輸開銷沒有顯著變化。原因如下:①對每個上傳請求僅執行一次隨機塊附加算法,附加次數少,因此總附加塊數遠少于總塊數。②每個附加塊有α概率為命中塊,根據響應值表,命中塊僅有在特殊位置才會增加傳輸開銷,這進一步減少了附加塊數量對傳輸開銷的影響。③由于采用真實數據集開展實驗,被測數據含有一定數量的命中塊與未命中塊,多次測試中在亂序后由響應表帶來的額外傳輸開銷各不相同,存在一定的隨機性。在此隨機性因素下觀察附加塊數帶來的影響比較困難。 圖8 RCAS方案傳輸開銷與附加塊數量的關系圖 6.3.3 用戶端上傳開銷與未命中塊比例的關系 將文中模型RCAS在不同命中塊比例下傳輸開銷與ZEUS、RARE和CIDER進行比較。采用10%、50%和80%作為未命中塊比例的取值。這3個取值能夠較為全面地體現不同模型在低、中、高未命中塊比例下的傳輸開銷。具體實現上,每個文件將按照最佳塊長128 B進行分塊。以數據集所有文件作為云端數據選取范圍,隨機選取90%、50%、20%的文件預先存放在云端作為云端數據,因此未上傳的文件為未命中塊,比例分別為10%、50%和80%。選取may-l文件夾中所有文件作為待去重的用戶端數據,上傳用戶端所有數據,記錄總傳輸開銷。傳輸開銷由哈希傳輸開銷、未命中塊傳輸開銷組成。分別測試以上4種方案,各方案總傳輸開銷如圖9所示,額外傳輸開銷如圖10所示。在未命中塊比例較小時,RCAS需要10%的額外傳輸開銷,低于其他方案。當未命中塊占比達到50%時,根據圖10可知,RARE與ZEUS+的開銷過大,遠遠高于RCAS,而CIDER的性能則比RCAS要好。當未命中塊比例達到80%時,RCAS總傳輸開銷稍高于RARE以外的方案。總的來說,未命中塊比例較小時,文中方案在開銷上稍優于其他模型,而隨著自變量增大,傳輸開銷與比較對象持平。產生這種現象的原因如下: 圖9 各方案總傳輸開銷與未命中塊比例的關系圖 圖10 各方案額外傳輸開銷與未命中塊比例的關系圖 (1) ZEUS。根據ZEUS的響應表,當且僅當一個分組的兩個塊均為命中塊時,ZEUS會額外產生一個塊長的開銷。當未命中塊比例較低時,一個分組的兩個塊大概率均為命中塊,此時ZEUS會產生更多的額外開銷。而未命中塊比例較高時,兩塊均為命中塊的概率大大降低,ZEUS的額外開銷降低。 (2) ZEUS+。當云端存儲的文件塊副本數較少時,文件塊的存在狀態被調整為不存在,響應表與ZEUS保持一致,因此ZEUS+會由于閾值帶來比ZEUS更高傳輸開銷。 (3) RARE。根據RARE響應表,RARE在未命中塊比例較低時,分組內均為命中塊概率較高,額外開銷大。當未命中塊比例較高時,分組內均為未命中塊概率較高,額外開銷小。但額外開銷仍會高于同類型的ZEUS。 (4) CIDER。選取組內塊數分別為4和8的CIDER4和CIDER8作為RCAS比較的對象。在未命中塊數小于組內總塊數時,響應值為未命中塊數和未命中塊數+1的概率相等,因此額外傳輸開銷約等于一個塊的大小;否則,不存在額外開銷。因此,隨著未命中塊比例的增加,組內未命中塊塊數等于組內總塊數的概率增大,帶來的額外傳輸開銷減小。由于CIDER每4或8個塊產生一個塊長的額外傳輸開銷,因此傳輸開銷低于ZEUS。 (5) RCAS。根據RCAS響應表,當未命中塊比例較低時,組內未命中塊+命中塊比例由未命中塊塊數決定,該組合比例較低,帶來的額外傳輸開銷較少。當未命中塊塊數中等水平時,該組合概率達到最大值。當未命中塊比例較高時,該組合比例由命中塊塊數決定,比例同樣較低。但是此時未命中塊+命中塊組合比命中塊+命中塊組合比例更高,而前者增加RCAS額外傳輸開銷,不增加ZEUS的開銷,因此RCAS傳輸開銷比ZEUS高。 文中提出一種采用隨機塊附加策略的云數據安全去重方法RCAS,實現了抗隨機塊生成攻擊以及學習剩余信息攻擊等側信道攻擊的安全性。具體來說,該策略采用附加隨機塊、文件塊亂序、構造響應表等技術隱藏文件塊的存儲狀態和位置信息,擴大響應值的取值區間,在增加少量開銷的情況下,使響應值出現下邊界值的概率極大降低,從而將安全風險降低到概率可接受范圍。安全性分析和實驗結果表明,與當前流行技術相比,該方法以增加少量開銷為代價提高了抗側信道攻擊的安全性,在包括電子郵件、電子工資單、企業合同、病歷、標底書等在內的低熵文件去重領域擁有廣泛的應用前景。 但是,文中方法仍有進一步優化的空間。在接下來的研究中,針對附加塊為命中塊的概率α,可探究α的不同取值對去重方案抗側信道攻擊的安全性與通信開銷的影響;針對響應表的設計,可探究只有一個塊命中時響應值取非整數對通信開銷的優化效果。4.3 采用隨機塊附加策略的云數據安全去重方法


5 安全性分析








6 實驗驗證及結果分析
6.1 模型參數設置
6.2 安全性測試





6.3 去重效率




7 結束語