田俊峰,張俊濤,王彥骉
(1.河北大學網絡空間安全與計算機學院,河北 保定 071002;2.河北省高可信信息系統重點實驗室,河北 保定 071002)
隨著互聯網信息時代的高速發展,用戶需求也變得多樣化,具有高性能和可擴展性等優點的分布式云存儲解決了這一困局。為了提供高速、可靠并且成本低的分布式存儲服務,云服務提供商一般將服務器節點分布在不同的地理位置[1]。數據一致性是分布式云存儲中的基本問題之一。在分布式系統中對各個節點間的數據進行同步,保持一致的狀態即為數據一致性。
數據一致性按照強度大小可分為最終一致性、因果一致性與嚴格一致性。最終一致性的強度最弱,例如亞馬遜的Dynamo[2]存儲平臺。嚴格一致性是一種強一致性,指的是每個節點中的更新都在其他節點中立即可見[3],對分布式系統的性能有極高的要求。因果一致性屬于中間強度的數據一致性,只需使每個節點中更新事件之間的因果順序對其他節點可見。因果一致性模型不僅能為用戶提供數據的及時更新,也能在因果依賴型的影響可見時為用戶事件提供因果序保障。
隨著信息技術的高速發展,現有的弱數據一致性平臺越來越難以滿足多樣化的用戶需求。強度更高、性能更好的因果一致性成為眾多學者的研究對象。Didona 等[4]提出的Okapi 是一種使用了混合邏輯時鐘(HLC,hybrid logical clock)[5]和全局穩定向量(GSV,global stable vector)的因果一致性方案。該方案通過一個GSV 來追蹤當前分區最新條目的時間戳,并規定當所有節點都將更新信息同步完成后才允許用戶查詢,這導致其更新可見性時延很高。Roohitavaf 等[6]提出了一種使用HLC 和數據中心穩定向量的因果一致性模型CausalSpartan。該模型提出了全新的分區穩定向量,降低了更新可見性時延。但該模型是在理想情況下實現的,并未提出對第三方篡改等風險的應對策略。Bravo 等[7]提出的Saturn 方案依靠元數據序列化標簽來傳遞元數據的因果序,數據副本據此對元數據的因果一致性約束進行校驗。此外,Saturn 還通過一組序列化器在彼此接近的2 個數據中心之間快速地建立起元路徑,加快標簽在拓撲網絡中的傳播速度。該方案很好地解決了吞吐量和更新可見性時延之間的權衡問題,也能充分利用部分地理復制策略的優勢。但序列化器運行在客戶端的關鍵路徑上,影響了系統的并發性,同時,該方案也并未考慮可能遇到的數據安全性問題。
隨著云存儲的不斷普及與應用,安全問題已成為制約其進一步發展的重要因素[8]。分布式的系統部署、開放的網絡環境、復雜的數據應用和眾多的用戶訪問,都使大數據在機密性、完整性、可用性等方面面臨更大的挑戰。服務的高可用性是用戶最關心的,為了提高系統的容災能力,應對節點失敗的情況,云服務平臺往往會創建冗余資源。冗余數據在提高服務可用性的同時,擴大了數據的信任域,帶來了一定的安全風險,需要云平臺在用戶訪問控制以及數據存儲過程的安全性方面付出更高的成本[9],勢必會對系統性能造成一定的影響。數據完整性避免了未經授權的用戶訪問數據,從而對數據進行篡改或其他非法操作[10]。身份認證能為用戶和云服務提供商的身份真實性提供保證[11],所以要在用戶連接、訪問和使用數據的過程中對用戶的身份進行驗證和確認[12]。針對現有基于公鑰基礎設施(PKI,public key infrastructure)的跨域身份認證機制存在信任路徑長、證書驗證效率低、域間信任路徑構建復雜等問題,楊小東等[11]利用代理重簽名技術提出了一種云環境下的跨域身份認證方案。可信計算是一種信息系統安全新技術,沈昌祥等[13]提出了以芯片為信任根、主板為平臺、軟件為核心、網絡為紐帶的應用成體系的可信計算體系框架。何欣楓等[14]對可信云平臺的構建與可信虛擬化技術進行了詳細的分類與介紹。劉川意等[15]提出了一種將虛擬可信平臺模塊(vTPM,virtual trusted platform module)和可信審計技術結合起來的用戶可信運行環境構建與審計機制。田俊峰等[16]基于可信平臺模塊(TPM,trusted platform module)提出了基于TPA 云聯盟的數據完整性驗證模型,改進了傳統單節點TPM 性能較低的缺點。
目前的數據因果一致性方案集中討論基于拜占庭容錯的建模方法對數據復制過程進行改進,旨在降低用戶數據同步時間等方面性能,而這些因果一致性平臺都是建立在理想環境下的,并未考慮實際云存儲環境下的節點可信問題。現有的可信云平臺節點管理、可信云平臺節點可信認證等研究方案中鮮有支持數據一致性的相關方案。Roohitavaf 等[17]提出了一種分布式鍵值框架(DKVF,distributed key-value framework),并且集成了性能測試與底層數據存儲接口,但并未考慮分布式存儲環境中的安全風險,不能提供安全約束下的節點管理方案。
目前,數據一致性方面的研究都是基于理想環境的,并未考慮網絡環境中的不安全因素[18],原因在于若針對所有的元數據提供安全認證和完整性校驗,勢必會造成極大的性能開銷。但現今網絡中的安全風險已是不可忽略的熱點問題,為了準確并高效地在實際云存儲環境中進行身份認證、一致性元數據的完整性校驗,保證數據因果一致性,本文在混合邏輯時鐘和HashGraph 的基礎上,結合現有的可信云平臺相關成果,提出了具有可信約束的分布式存儲因果一致性模型(CCT,causal consistency model with trusted constraint)。本文的主要工作如下。
1) 客戶端操作中,客戶端將客戶端可信簽名(TSc,trusted signature of client)隨相應的請求信息一起發送給服務端。當收到服務端返回的消息后,客戶端首先對其中的服務端可信簽名(TSs,trusted signature of service)進行驗證,若驗證成功,則依據響應消息更新本地依賴集。最后借鑒HashGraph共識機制對收到的數據可信證據(TPS,trusted proof of data series)在本地進行驗證。
2) 服務端操作中,在收到客戶端請求后,服務端對TSc 進行驗證,若結果為不可信,則拒絕處理該請求。若驗證為可信狀態,則將響應結果與對應的TSs 一起發送到客戶端。節點內部、節點間同步數據的過程中,將TSs 作為節點穩定狀態向量的一部分內容進行同步,從而為數據因果一致性協議提供最大程度的可信保障。
3) 采用部分地理復制策略,即當前數據中心只存儲完整數據集的任意子集[19],借鑒區塊鏈技術HashGraph 中的共識機制,各個節點使用混合邏輯時鐘隨機地向其他節點同步最新的記錄與可信狀態。每個節點的可信狀態具有一定期限,節點內部的分區共享當前節點的可信狀態。
云計算的可信問題是云服務廣泛推廣面臨的一個關鍵問題。構建可信云平臺是保障云計算安全的基礎之一。可信云平臺利用底層的TPM 作為可信任根,構建可信任鏈,通過平臺進行驗證,保證節點處于安全可信狀態[15]。可信云平臺的核心之一是可信虛擬化。可信云平臺通過vTPM 模擬硬件TPM 的功能,實現不同虛擬機對硬件TPM 的共享,同時保證了虛擬機之間的相對獨立,提高了安全性。目前,我國已經構建起相對完整的可行計算體系,并提出了可信密碼模塊(TCM,trusted cryptography module)標準[14]。
可信云平臺基于TPM 技術,提供安全內存的讀寫TSS_Pcr()、非易失性(NV,non-volatile)存儲的安全認證 TSS_Quote()以及安全信息的認證TSS_Sig()等安全機制。其中TSS_Pcr() 和TSS_Quote()可為當前云存儲環境提供可信認證,包含存儲狀態、服務端口以及通信地址等內容,確保了客戶端及服務端身份的真實性。實際分布式存儲環境中,在云服務商為用戶提供元數據的查詢、讀取等服務的過程中還存在數據被篡改的安全隱患。針對此風險提出的可信云平臺技術基于TPM 提供的可信度量機制,使用安全信息的認證機制TSS_Sig()可為同步后的數據提供完整性簽名,使客戶端在收到服務端響應后對數據進行完整性驗證,解決了非安全環境中數據完整性驗證的問題。
可信云平臺的可信認證與數據加密機制在最大程度上保障了實際環境中用戶身份與數據的可信度。但由于其節點動態管理的性能瓶頸與可信證據難以統一認證等問題,在實際分布式存儲環境中TPM 極難普遍采用。田俊峰等[20]提出的可信云聯盟方案是一種可信云平臺管理模型。該模型在TPM 的基礎上設計了數據保護與可信認證、可信證據度量等組件,并包含vTPM,提供了安全存儲、可信度量等接口。該云聯盟技術解決了不同位置TPM 之間的信任問題,即在TPM 的基礎上設置信任根(rTPM,root TPM),將可信證據的統一度量問題簡化為rTPM 之間對可信證據的傳遞。
數據一致性一般指在分布式存儲中,位于不同地理位置的用戶讀取到的數據保持一致。因果一致性作為一種中間強度的一致性,是目前數據一致性的重要方案之一。相比于最終一致性難以及時更新數據的缺點和嚴格一致性對性能開銷的高要求,因果一致性在保證數據能及時同步的前提下,為用戶提供保障因果序的存儲服務。
因果一致性是基于用戶操作之間的前后關系定義的,該關系的定義如下。
定義1用戶操作的前后關系。a和b定義為2 個操作,當且僅當至少以下條件之一成立時,a在b之前發生成立。
1)a、b在同一線程中執行,并且a在b之前提交。
2)a和b在不同線程中執行,a是PUT(k,v)操作,b是GET(k)操作,b返回由a寫入的值。
3) 存在操作c,使a→c并且c→b成立。
a與b之間的這種關系可表示為a→b,也稱為a因果依賴于b。
定義2因果關系。如果用X和Y分別表示鍵x和y的值,若PUT(x,X)→PUT(y,Y)成立,則X與Y為因果關系,可表示為XdepY。
定義3可見性。如果客戶端c的GET(k)操作結果為v',并且v'滿足v'=v或者┐(vdepv'),那么鍵k的值v對客戶端c是滿足可見性的。
定義4因果一致性。假設數據中心中存在2 個任意的鍵x和y,X為鍵x的值,Y為鍵y的值,在XdepY的情況下,如果X、Y對客戶端c可見,那么該數據中心滿足“因果一致性”。
在實際云環境中,不同地理位置的節點中的數據存儲方案一般分為2 種,一種為完全地理復制,即分布式系統中每個數據中心都存儲完整的數據集;另一種為部分地理復制,即當前數據中心只存儲完整數據集的任意子集。
本文提出的CCT 模型使用部分地理復制方案,基于可信機制為用戶的因果一致性元數據提供可信約束,用戶在當前節點寫入數據之后,當前的更新狀態也會與其余節點進行同步,同步過程中除了可信證據的傳遞,還包括節點穩定狀態同步與時鐘同步。
區塊鏈是一種非常優秀的分布式數據存儲技術,包含2 種核心思想:分布式賬本存儲與共識機制,解決了分布式節點中交易的信任和安全問題,可實現更廣泛意義上的安全多方計算[21]。HashGraph 是區塊鏈的一種改進方案,提供分布式賬本和共識機制的數據存儲,主要采用八卦同步和虛擬投票的方式對新產生的交易進行存儲和同步。
在HashGraph 中,共識機制是通過不同事件間的八卦同步實現的。如圖1 所示,用戶A將發生的事件隨機與相鄰的其余用戶進行交流,將其所有的事件歷史告訴用戶B。同樣B也執行相同操作,其余成員也是如此。這樣,如果環境中產生一個新的事件,該信息會以指數級的速度在整個環境中傳播,直到所有成員同步完成該事件。

圖1 相鄰事件之間的八卦同步
此外,用戶不僅會同步新發生的事件,還會確切地知道其他用戶什么時候同步了該事件。當所有成員都有HashGraph 的副本時,即達成了最新狀態的共識。
當所有節點都收到用戶A發生的事件后,當前環境下記錄事件歷史的賬單就完成了同步。這是因為HashGraph 所有副本都同步完事件歷史后,任意副本(例如用戶D)都知道“其他所有副本都已同步此事件”,即形成了全網共識。HashGraph 最終達成的效果就是所有用戶并沒有聚到一起進行表決,也能公認當前事件的完成,從而達成共識。
傳統的因果一致性協議采用單調的物理時鐘作為判斷因果序的依據,例如GentleRain 模型[22],在物理時鐘的基礎上定義了一個單向向量,即全局穩定時間(GTS,global stable time)。該向量使用數據條目的更新時間戳作為判斷因果序的依據。若采用物理時鐘,各個節點間的時鐘無法在同一段時間內完全達成一致,從而產生時鐘漂移,無法準確判斷用戶事件的因果序。在實際應用中,物理時鐘是單調遞增的,不能倒退。假設在一個由2 個數據中心A和B組成的系統中,2 個數據中心的GST 為5,這意味著2 個數據中心時間戳小于5 的所有值都能被用戶查詢到。假設數據中心A在時間戳為5 時更新了一條數據Item1,而此時數據中心B與數據中心A的時鐘存在偏差,向A同步一條時間戳為6 的數據Item2。由于該數據的時間戳高于GST,因此Item2不能被用戶查詢到,即該分布式系統無法為用戶提供準確的因果一致性數據的讀寫服務。
邏輯時鐘僅對定義2 中的因果關系有要求,即只記錄客戶端發生事件的前后順序,與事件發生的具體物理時間不相關。
HLC 結合了邏輯時鐘和物理時鐘兩者的優勢。事件E的HLC 時間戳表示為E.hlc,該時間戳是一個元組 算法1混合邏輯時鐘 輸入事件E,物理時間pt 輸出時間戳 算法1 是HLC 的計算過程,分別為客戶端產生事件時的時鐘定義方法與接收事件之后對2 個時間戳元素進行檢查的時鐘同步方法。若2 個事件m和n的l.E相同,但m在n之前發生,混合邏輯時鐘則將c.m設置為高于c.n的值,從而為事件m、n提供因果序判別依據。 本文提出的可信約束下的CCT 協議結合了可信云平臺中的可信認證機制,不僅對節點與客戶端的可信身份簽名TS 進行驗證,而且將節點可信證據的收集、管理與數據因果一致性協議相結合,為用戶一致性元數據的安全存儲與操作提供了保障。圖2 為CCT 模型的實體流程。 圖2 CCT 模型的實體流程 此外,CCT 協議借鑒HashGraph 共識機制,將用戶每次的存、取操作均看作一次事件,每次處理用戶的存、取請求之后都基于可信機制為該操作數據和依賴集分配一個TPS,作為事件歷史的簽名信息。分布式存儲副本在處理完用戶請求或在固定時間間隔內未處理任何請求的情況下,均隨機與其連接的其他副本同步最新狀態,最后各副本之間未聚合在一起進行投票,但都快速地達成了最新狀態的共識。 CCT 協議中對因果一致性操作提供的可信機制不僅包括客戶端以及服務端的身份認證,還包括數據因果一致性元數據的完整性驗證,即服務端處理PUT、GET 請求后均計算元數據和更新后依賴集的數據可信證據并發送到客戶端,以驗證操作和結果的完整性和可信性。 分布式環境中,數據一致性協議僅靠服務端提供的可信機制,難以提供可信證據的傳遞驗證,進而無法保證整體分布式環境的可信狀態。基于可信認證的CCT 因果一致性協議中不僅包括了客戶端與服務端的身份認證與一致性數據完整性校驗機制,還對服務端之間的數據同步過程進行了安全約束。 CCT 協議中客戶端與服務端之間的寫入(PUT)操作和查詢(GET)操作的具體過程如圖3(a)和圖3(b)所示,相對應的算法詳見算法2 和算法3。 圖3 CCT 協議中的PUT 和GET 操作 CCT 模型基于可信云平臺對客戶端與服務端之間的通信進行身份認證與因果一致性數據完整性校驗;同時對服務端之間的消息同步進行安全約束;通過使用HLC 與服務端部分穩定向量(PDSV,part data stable vector),減少了客戶端與服務端之間的消息傳播的體量;同時借鑒HashGroup 共識機制的消息傳播方式,加快了消息同步速度。因此,CCT 模型在為數據因果一致性系統規避安全風險的同時并沒有造成很高的性能開銷。相比于未考慮安全約束的因果一致性方案如 Okapi、CausalSpartan 等,CCT 模型在環境中存在不可信第三方時,可以為數據因果一致性操作提供安全保障,防止數據被篡改;與使用數據標簽提供安全校驗的Saturn 模型相比,大大降低了更新可見性時延,提高了系統性能。 算法2 是客戶端中的GET 操作和PUT 操作的算法。其中客戶端首次運行時先對自身運行環境、可信存儲空間做出認證,結合可信云平臺中的可信簽名機制,分配身份簽名TSc,作為服務端處理請求的依據。當客戶端中存在不安全因素使可信存儲空間或運行環境存在風險時,可信認證失敗,用戶可依據錯誤信息對客戶端進行檢查。 算法2客戶端c中的可信約束 GET 操作 輸入鍵k,DSVc,TSc 輸出值v,ds,PDSV,TSs,TPS PUT 操作 輸入鍵k,值v,TSc,DSVc 輸出ut,m,TSs,TPS 在GET 過程中,若客戶端分配可信簽名成功,用戶將客戶端可信簽名TSc 與查詢請求一起向服務端發送。查詢請求中還包含了客戶端數據穩定向量(DSVc,data stable vector of client),用來與節點同步最新狀態。客戶端收到服務端返回的響應消息之后,先對服務端簽名TSs 進行驗證。驗證通過后,根據其中的服務端部分穩定向量更新自身依賴關系集(DSc,dependency series client)。然后根據更新之后的依賴關系集計算數據可信證據,并與收到的服務端數據TPS 進行驗證。若驗證成功說明當前操作來源為已連接且認證為可信的服務節點,且基于可信認證機制驗證的數據滿足可信約束下的完整性、數據因果一致性,否則返回錯誤信息,由客戶端排查錯誤并重新發起申請。 客戶端中的PUT 過程與GET 過程相似,客戶端將自身可信身份簽名TSc 封裝進PUT 請求消息發送給服務端。客戶端在收到服務端響應后同樣首先結合TPM 2.0 可信認證機制校驗服務端的身份簽名TSs,然后根據響應消息中為數據條目分配的存儲位置m以及時間戳ut 更新本地依賴關系集。最后計算依賴關系集的數據可信證據,與服務端發來的數據TPS 進行校驗,若校驗失敗則返回錯誤信息并且駁回該請求,進行重新認證與發送。 服務端操作一般處理過程包含GET、PUT 這2 個操作,GET 過程如算法3 所示。首先生成TSs。在處理客戶端GET 請求之前,集群對客戶端可信簽名TSc 進行校驗,若身份認證通過則依據客戶端穩定狀態DSVc 更新副本的DSV。其次根據該查詢請求中的鍵在安全存儲中檢索對應鍵的最新值并更新依賴關系集ds。再次計算k-v條目和依賴關系集的數據TPS。最后將查詢到的值v、依賴關系集ds、服務端部分穩定向量PDSV、服務端可信簽名TSs 以及數據可信證據TPS 打包成為響應消息發送到客戶端。因為客戶端與服務端運行環境中的可信約束是基于可信云聯盟技術的,所以無論是客戶端還是服務端,均可對收到的可信身份簽名、數據可信證據進行校驗。 算法3服務端中的GET 和PUT 操作 GET 操作 輸入鍵k,DSVc,TSc 輸出值v,ds,PDSV,TSs,TPS PUT 操作 輸入鍵k,值v,DSVc,TSc 輸出ut,m,TSs,TPS 算法3 中還包含了服務端的PUT 操作過程。首先生成TSs 并對TSc 進行驗證,不僅能保障身份可信,更能對客戶端請求寫入數據進行安全認證。若客戶端身份滿足可信約束,則為該請求創建存儲空間,分配鍵值鏈空間,并更新本地穩定狀態和依賴關系集ds。最后計算數據TPS 并將響應消息發送到客戶端,其中內容包括時間戳ut、分配的存儲空間m、依賴集數據可信證據TPS 和服務端身份可信簽名TSs。此外,服務端處理完客戶端的PUT 請求后還要與其余分區共享當前最近寫入狀態,即向相鄰分區發送復制消息(Replicated),參照 HLC、HashGraph 共識機制,由數據中心根分區隨機與其余數據中心同步最新狀態,詳見3.3 節。 基于可信認證的CCT 因果一致性協議中包括了客戶端與服務端的可信認證過程,其中節點間同步的過程如圖4 所示。針對實際云環境中分布式數據的存取情況進行了調查與分析,其中用戶的存取請求大多集中在11:00—23:00,CCT 模型將服務運行周期設定為24 h,即在凌晨2 點為系統重新分配認證證據,在接下來的可信周期之內節點與客戶端能夠在彼此可信的前提下,提供數據一致性元數據的存取操作。 圖4 為CCT 模型中針對節點間狀態進行更新的過程,其滿足因果一致性的可信約束體現在兩方面。一方面為不同地點之間的副本更新步驟中,基于可信云聯盟機制運行為每個副本設置了DSV 和TSs。其中DSV 不僅是判斷客戶端存取請求的時鐘狀態是否落后于當前副本最新狀態的判斷依據,還是對副本之間最新狀態進行同步的依據。另一方面則為副本內部的數據存儲分區在處理存取請求時,也基于樹形拓撲結構與數據中心根分區共享彼此的分區可信穩定分量(PV,partion vector),該分量的生成依據為副本的穩定狀態,每次副本在分布式環境中與其副本同步穩定狀態后均將最新條目時間戳和可信副本鏈擴散到內部分區中,數據分區則以此為依據對自身存儲狀態進行更新。 圖4 CCT 模型中各數據中心間的同步 算法4服務端中的HEARTBEAT 消息 輸入無 輸出心跳消息 CCT 模型基于Berkeley DB 設計了底層數據存儲和檢索方式并通過Java 實現。本實驗在項目組開發的HBU-Cluster 平臺基礎上,將不同地點的集群副本在本地進行了模擬。HBU-Cluster 平臺是項目組開發的一個分布式鍵值存儲管理框架,使用Google 的Protocol Buffer 將數據因果一致性協議結構化并集成Yahoo 的YCSB 基準測試模塊作為性能測試工具。 HBU-Cluster 平臺還實現了 GentleRain 與CausalSpartan 協議,并提供了基準測試結果。為了模擬實際分布式環境中不穩定的用戶請求情況,實驗將測試負載均設置為共1 000 個操作,對不同模型處理不同并發請求的可信約束性能開銷進行了測試與統計。實驗基于具有自主知識產權的可信云平臺YF-I,規格如下:運行NeoKylin Linux Trusted OS V6(x64),CPU*12:Intel Xeon E5-2603,1.6 GHz,16 GB 內存,240 GB 存儲。 CCT 模型中服務端對存儲節點的存儲狀態和運行機制進行了安全認證,項目組在CCT 模型的基礎上,為分布式存儲環境設置了5 個存儲副本,每個副本均分配一個分區,副本距離則在本地的可信云服務器中進行模擬,與本地的首節點位置的距離分別模擬為100 km、500 km、1 000 km、1 500 km,以期模擬實際云環境中云服務商將數據副本分布在不同區域的情況。其中為末節點手動分配身份可信簽名,供其余節點校驗身份簽名,在不干擾客戶端存取操作的前提下進行驗證與測試。 為了模擬不可信環境中的風險,例如木馬等非法第三方對因果一致性數據依賴集進行篡改,本文實驗同時在末節點設置了不同比例的元數據條目修改與驗證機制,供HBU-Cluster 平臺對結果進行驗證與測試。為了使結果更清晰地展現,本節在客戶端模擬了不同并發請求的情況,例如低并發環境設置吞吐負載為5~10 個/s,同步心跳間隔為0.1 s;而高并發環境模擬條件降低副本同步心跳間隔為0.01 s,同時將吞吐負載增加至50~100 個/s。在處理完服務端PUT 操作后,將該條目對應依賴集的隨機一個條目篡改為0~9 的隨機數。為了避免偶然性誤差,實驗結果均是3 次完成1 000 個存取操作的平均值,最后分別針對不同的篡改比例進行數據完整性校驗,結果如圖5 所示。 圖5 不同并發環境下模擬依賴集篡改后可信驗證的結果 圖5 結果顯示,在不可信節點對數據依賴集進行篡改后,5 個不同比例均全部驗證了對應比例的數據風險。針對實際云環境中數據篡改的風險,CCT 模型針對25%以下的數據篡改風險只返回風險信息,超過該閾值后則拒絕提供一致性數據存取服務。圖5(a)結果中低負載情況下由于副本間同步更新間隔相對較長,即心跳間隔較大,造成數據依賴集模擬修改后,后續操作查詢結果中存在依賴集驗證失敗的情況,因此每個篡改比例的驗證結果均存在0.08%~1.09%的誤檢測率,平均誤檢測率為0.44%。 圖5(b)對實際存儲環境中普遍存在的高負載處理情況進行了模擬,除了降低副本同步心跳間隔和提高負載,其余條件并未進行改變,基于此條件在客戶端對隨機寫入的數據進行查詢同時進行驗證。結果顯示,相比于在低并發環境中,CCT 模型在高并發環境下有更好的性能表現,全部驗證出了不可信副本對一致性元數據的篡改,而誤檢測率范圍降低到了0.01%~0.32%。平均誤檢測率為0.094%,說明本節中CCT 模型在服務端設計可信約束的方案具有可行性。實驗中的高并發條件模擬了云服務提供商滿足不同用戶需求和應對一些常見風險的手段,即提升系統性能,在因果一致性服務處理過程中表現為更快的副本更新速度、更高的性能開銷,而CCT 在提升系統性能的基礎上相比低性能條件并未造成更高的開銷,且能提供更高效的一致性數據存取服務。 CCT 模型基于可信云聯盟技術為因果一致性服務提供了身份簽名和數據可信認證機制,但數據一致性存儲模型是針對客戶端請求提供服務的,不僅在服務端中提供了安全保障,對于客戶端中的身份簽名偽造、運行環境風險也提出了安全約束。實驗基于HBU-Cluster 平臺在本地可信云服務器中部署了6 個數據副本,包含8 個分區,并在可信云聯盟技術基礎上分別設置5、30、200 個客戶端,每個測試結果均將分布式存儲集群運行2 天,可信周期設置為24 h,并將集群重啟時間設置在凌晨2 點。為了模擬實際云環境中社交應用、Web 應用存取NoSQL 型數據的條件,實驗將同步心跳機制設置為0.05 s,負載設置為50 個/s。 為了對CCT 模型中客戶端安全風險的安全約束進行驗證與測試,實驗將客戶端中數據存取請求的發送方式設定為循環方式,并在11:00—23:00 進行客戶端單位吞吐量為100~500 個/s 的大量隨機存取,其余時間則為10~100 個/s。客戶端中身份簽名認證機制停止服務閾值為10%,即如果超過10%的客戶端請求可信驗證失敗,則對該客戶端進行報警處理并拒絕服務。實驗在停止服務閾值之下為客戶端請求隨機設計了2%、4%、6%、8%的身份偽造,對集群將客戶端偽造簽名重新認證的結果進行統計和分析,結果如圖6 所示。 圖6 不同客戶端數目環境中客戶端身份驗證表現 圖6 結果顯示,CCT 模型能將客戶端身份簽名偽造風險完全識別,但由于通信環境的復雜性與可信云聯盟技術對可信證據的驗證性能缺陷,造成模型中依然存在一定的誤檢率。圖6(a)為使用5 個客戶端以循環方式向服務端發送PUT、GET 請求并驗證簽名、統計的結果。在為低數量級客戶端提供因果一致性數據存取服務時,CCT 模型有著較好的表現,其平均誤檢率為0.015%。圖6(b)將客戶端數量增加了5 倍,在同樣條件下進行測試的結果略差于圖6(a)中結果,其平均誤檢測率為0.05%。圖6(c)為模擬實際環境中較高客戶端請求的情況,客戶端規模為200 個,其余條件不變的情況下對身份篡改的驗證比例進行統計,平均誤檢率為0.155%。 實驗基于可信云平臺中的可信機制,對CCT模型中客戶端一方的可信約束進行了仿真測試,相比于CausalSpartan、Okapi 等未提供安全約束的傳統因果一致性方案,實驗結果證明了CCT 模型中提出的可信約束能對客戶端中身份簽名偽造、非法第三方等安全風險進行識別并驗證,同時證明CCT模型在客戶端提出可信約束的方案是可行的。雖然局限于現有實際通信環境的復雜性和可信云平臺技術的性能瓶頸,仿真實驗結果存在一定的誤檢率,隨著客戶端連接數、處理用戶請求的并發量的提高,CCT 模型平均誤檢測率的遞增趨勢是比較穩定的。安全約束的設計難免帶來一定的性能開銷,CCT 模型中由于提供安全約束帶來的PUT 時延、更新可見性時延相關分析在4.3 節進行了討論。 可信云平臺在可信芯片TPM2.0 的基礎上提供安全策略管理、數據認證以及非對稱秘鑰協商等安全機制,在服務啟動、運行過程中均對身份認證、數據加密有著高標準的約束。基于可信云聯盟技術的CCT 模型提出了可信身份簽名、數據可信證據等安全約束,并將性能開銷控制在了較小的程度。本節參考文獻[6]中實驗環境(Intel Xeon E5-2680、3.75 GB 內存并運行Ubuntu 14.04)和文獻[7]中實驗環境(Intel Xeon E5-2680、8 GB 內存并運行Ubuntu 12.04),基于HBU-Cluster 平臺將實驗環境進行了設計和復現,最終針對CCT 模型中PUT 時延和更新可見性時延進行了分析,并與不包含安全約束的方案如GentleRain 和CausalSpartan,以及使用序列化標簽進行因果一致性安全校驗的方案Saturn 進行了對比。 實驗在本地可信服務器部署了7 個副本,共包含7 個分區,副本同步心跳間隔為0.05 s,客戶端規模為2 個,客戶端單位負載設置為50 個/s。其中模擬FaceBook 數據集,將隨機鍵值大小設置為2 B,并進行讀寫比例為1:1 的實驗和統計。數據副本地理位置均設置在本地,但實際存儲環境中云服務商往往鍵副本部署在世界各地,以滿足不同區域用戶的需求。為了使CCT 模型的性能開銷更加明確,實驗在本地手動設置了副本間的時鐘時延,即對分區間地理位置差異造成的通信時延進行模擬,并在分區間不同通信時延的條件下對更新可見性時延進行統計和分析。4.1 節和4.2 節實驗已對服務端安全約束、客戶端的安全機制進行了驗證與測試,因此本節只在可信云服務器環境中對安全約束進行性能開銷的測試和分析,并對未對身份偽造或數據篡改風險進行模擬,實驗將操作數設置為1 000 個,每個數據均是3 次實驗所取的平均值,其中累積分布函數(CDF,cumulative distribution function)指的是與主控節點通信時延小于當前最大時延閾值的分區比例,結果如圖7 所示。 圖7 分區間時延閾值為10 ms 時不同模型的性能開銷 實驗中通過在分區間設置不同通信時延,模擬不同地理位置之間服務器的通信開銷,對不同數據因果一致性方案的性能開銷進行了分析。圖7(a)為CCT 模型與GentleRain 之間的對比,結果顯示CCT模型明顯優于GentleRain,因為使用混合邏輯時鐘能避免時鐘漂移、網絡時鐘協議(NTP,network time protocol)同步失敗帶來的安全風險,結合HashGraph 共識機制,分區穩定狀態在拓撲樹中快速形成共識。圖7(b)結果為參照文獻[7]中數據,并在低通信時延環境下將GentleRain 方案復現并測試,同時對比CausalSpartan,可見CCT 模型的更新可見時延比 Saturn 平均降低了 45.03%,比CausalSpartan 平均增加了10.86%。 Saturn 由于在客戶端請求發送的關鍵路徑上使用標簽序列化為客戶端和服務端提供雙向追蹤依賴集的因果序的依據,并且在處理客戶端請求過程中通過構建一棵優化的結構樹的方式降低通信開銷,有一定的性能瓶頸。CCT 模型基于可信云聯盟技術,提供可信約束的前提下并未局限于TPM 的性能瓶頸,且結合HLC 同步方法有效降低了時鐘時延和通信時延造成的操作處理時延。因此CCT模型在較理想的環境中性能開銷明顯低于Saturn,證明3.1 節中結合HashGraph 對可信證據的同步機制進行優化的方案是可行的。 在CausalSpartan 方案中,同樣使用分區穩定向量標識分區最新狀態,并且都依據HLC 判別用戶存取數據事件的因果序。雖然CCT 模型中對集群拓撲結構中數據的同步方式結合HashGraph 共識機制設計了優化方案,對PUT 和GET 的事件使用Gossip about Gossip 進行同步的方式降低了分區間數據、狀態同步過程的時間開銷,但是客戶端與服務端之間的身份簽名、數據可信證據驗證機制消耗了一定性能,因而在低時延環境中CCT 模型的更新可見性時延也是略高于CausalSpartan。 最后一部分實驗模擬了相同副本和分區規模情況下的高通信時延環境,為了使數據對比Saturn模型具有權威性,分區時延閾值設置為107 ms,每個對比數據均為進行1 000 個操作負載后3 次結果的平均值。圖8 結果表明,在分區間通信最低為10 ms,按比例遞增至全分區通信時延為107 ms 的情況中,CCT 模型的性能表現明顯優于Saturn、GentleRain,比未提供安全約束的CausalSpartan 略高。 圖8 分區間時延閾值為107 ms 時不同模型的性能開銷 具體看來,Saturn 在高通信時延環境中的更新可見時延接近于使用物理時鐘標量追蹤因果序的GentleRain,通信時延接近107 ms 的分區占總數比例為10%~80%時,兩者更新可見時延非常接近,但在高于80%時,GentleRain 模型嚴格依賴物理時鐘同步的缺陷就非常明顯了。Saturn 模型在所有比例環境中表現相對穩定,因為該方案使用序列化的元數據標簽判別因果序并提供安全約束、構建一棵優化的結構樹的方式在分區規模增大時具有較明顯的性能頸。CCT 模型采用混合邏輯時鐘判別事件之間的因果序,在分區間時鐘漂移、通信時延較高的情況下均有非常優秀的表現,同樣包含安全約束的前提下在高通信時延環境中的更新可見時延比Saturn 平均降低了32.31%,且比GentleRain 平均降低32.92%。而在模擬實際云環境的分區間高通信時延條件下,與低通信時延條件下情況類似,CCT 模型的更新可見時延比CausalSpartan 模型平均增加了10.54%。 云服務商在為用戶提供因果一致性數據存取服務時,采用分布式服務器在降低運營成本的同時也可滿足用戶的多樣化需求,但針對分布式服務器、客戶端中的身份簽名偽造、數據竊聽或篡改等安全風險鮮有考慮。CCT 模型基于Java 實現,結合混合邏輯時鐘和HashGraph 共識機制的優化方案,并使用分區穩定向量標識分區最先狀態,基于可信云平臺中可信認證機制,在服務端和客戶端設計了身份簽名可信驗證、一致性元數據完整性驗證等可信約束。通過仿真實驗表明,CCT 模型針對安全風險能全部識別并記錄,存在較低的誤檢測率和較小的性能開銷。相比于使用標簽序列化保障數據安全的方案Saturn,更新可見性時延明顯降低。實驗結果表明,CCT 模型中設計的可信約束是具有可行性的。相比于未提供安全約束的CausalSpartan,CCT 模型的更新可見時延也僅增加了10%左右。在實際分布式數據存儲環境中,考慮到用戶因果一致性敏感數據的安全性,結合可信云平臺、可信認證機制設計安全約束所造成的較小性能開銷是可以接受的。

3 具有可信約束的CCT 協議


3.1 客戶端中的可信機制


3.2 服務端中的可信機制



3.3 服務端之間的同步機制


4 仿真實驗與結果分析
4.1 存在不可信節點的情況

4.2 客戶端身份重新認證的情況

4.3 可信約束造成的性能開銷


5 結束語