叢集儲存系統資料安全研究論文

叢集儲存系統資料安全研究論文

  借鑑P2P的思想實現了一個基於叢集的安全儲存系統,並介紹了構建在該儲存體系結構之上的一種資料安全存取方案。引入基於共享鑑別金鑰的鑑別機制,以確保使用者資料的授權訪問,防止未授權使用者的閱讀和修改。系統採用廣泛用於加/解密技術中的SHA-1演算法作為密碼校驗函式,與採用數字簽名鑑別機制相比,該演算法具有較高的效能。初步分析和實驗表明,該系統在現實條件下,在消耗較低的維護頻寬的同時維持了較高的可靠性,並提供了較好的讀寫效能。

  近幾年來,基於P2P技術的分散式儲存系統[1,2]已經成為一個研究熱點。廣域網中的分散式檔案儲存系統能夠更好地為使用者提供檔案儲存服務,使使用者可以隨時隨地訪問存放在網上的資料,並且能夠為檔案共享、多使用者之間的協作提供支援。基於P2P構建的分散式檔案儲存系統,一般都是面向廣域網提供大規模網路儲存服務,利用其分佈在廣域網上的大量伺服器為使用者提供安全的、可靠的和高效的儲存訪問服務。P2P強調的是對等服務,不區分伺服器和客戶端,每個節點在索取其他節點服務的同時,也與其他節點相配合提供相同的服務,每個參與節點的位置均相等。借鑑P2P技術的思想,採用高速網路將普通PC機相連成一個可擴充套件叢集儲存系統方案[3~B6]相對於價格昂貴的大型磁碟陣列,具有極高的效能價格比。

  基於以上現狀,本文提出了一個基於叢集的安全儲存系統設計[3]。在以前的研究工作中[7]解決了叢集儲存系統的資料容錯問題。本文致力於解決叢集儲存系統的資訊保安性問題,保證儲存系統中的資料只被合法使用者讀寫。

  1系統架構

  叢集儲存系統將區域網內單個PC上的儲存資源整合成具有統一邏輯檢視的高效能儲存系統。如圖1所示,系統中的儲存節點是一臺PC機,每個節點執行Linux作業系統,透過區域網將各個節點連線起來,構成一個儲存實體,對外提供儲存服務。圖中LAN1的主要功能是實現節點之間的資料備份和恢復,以及節點的全域性管理等;LAN2則起到使用者之間進行資料交換的作用。LAN透過高速乙太網連線,採用通用的TCP/IP協議通訊形成一個叢集儲存系統。

  在圖1的體系結構中,本地主機上裝有儲存虛擬化的客戶端儲存代理軟體SA(storage agent)。使用者的請求由駐留在客戶端的這些SA截獲,並將請求傳送給適當的儲存節點。應用程式訪問資料物件的步驟如下:a)將使用者可理解的資料物件的名字透過一個目錄伺服器解析為資料物件的惟一標誌DOID(data object identification);b)將DOID作為偽隨機函式的種子提交給本地客戶端儲存代理SA,返回資料物件的位置;c)使用者直接與選中的儲存節點連線,完成資料的讀寫請求。

  2安全存取機制

  系統資料安全性的增強主要取決於儲存在各個節點的資料物件的安全性,只有授權的合法使用者有權存取資料。假設使用者從金鑰物件中得到了對稱加密金鑰(RC5金鑰),安全資料物件包含了足夠的資訊來保護其所包含資料的保密性和完整性。這就意味著即使惡意使用者能夠得到儲存節點中的所有資料,或是嗅探到所有在網路上傳輸的資料,仍能夠維持資料的保密性和完整性。

  2.1主要資料結構

  系統中主要有三個基本的資料結構,即安全資料物件包括加密的使用者資料和元資料;金鑰物件與一個或一組檔案相關,儲存各個使用者用於解密檔案資料的金鑰;認證物件儲存在每個儲存節點上,用於決定一個特定的使用者能否從一個數據物件中寫或刪除資料。

  1)安全資料物件每個資料物件由兩部分組成,即使用者資料和元資料,如圖2所示。使用者資料是加密儲存的。元資料包括檔案id、使用者id、檔案相對應金鑰檔案id。HMAC(hashed message authentication code)欄位用於證明資料的完整性和鑑別使用者的合法性;IV(初始向量)用於防止相同資料在相同金鑰加密時密文相同;timestamp欄位用於防止hacker用一個已經儲存過的檔案來覆蓋新的檔案。

  2)金鑰物件每個金鑰物件如圖3所示,包括兩種型別的資訊。金鑰物件的頭部:key file id是系統中惟一的檔案標誌;使用者標誌域(uid)是指出最後一個修改金鑰物件的使用者。當用戶修改了金鑰物件後,對整個金鑰物件用自己的私鑰簽名,將結果存放在signature中,這種機制能夠防止非授權使用者非法修改金鑰檔案。金鑰物件主體資訊是一組三元組,包括uid、encrypted key和許可權位。Uid不僅可以是一個使用者,還可以是幾個使用者或是一個使用者組;encrypted key是一個對稱金鑰用於加解密檔案,由使用者的公鑰加密;許可權位類似於UNIX系統的許可權位。一個金鑰物件可以不僅僅對應一個檔案,也可以是一組檔案,這樣這組檔案都用同樣的金鑰加/解密。

  3)認證物件每個儲存節點包含一個認證物件,如圖4所示。儲存節點利用認證物件來鑑別使用者,作出是否授權該使用者的寫操作的判斷。KeyMAC是一個共享金鑰,以密文形式儲存,用於HMAC生成及使用者與儲存節點之間的驗證。當儲存節點啟動時,將認證物件調入記憶體,keyMAC被解密快取在記憶體中。KeyPUB是使用者的公鑰,儲存使用者的公鑰主要是為方便查詢使用者的公鑰,而不用去求助於一個集中的金鑰伺服器。時戳欄位在一個檔案塊被寫入時更新,用於防止重演攻擊。

  uidkeyPUBkeyMACtimestamp

  uidkeyPUBkeyMACtimestamp

  …

  gidkeyPUBkeyMACtimestamp

  2.2鑑別機制

  系統的主要目標是提供鑑別和加密的儲存服務。加密和解密由客戶端來完成,儘管不容易減少加/解密的時間開銷,但是採用對稱加密演算法時間相對要快一些。目前的主要鑑別方法在安全性和速度上均有差別,最常用的是採用數字簽名機制。但是數字簽名是一個相對比較慢的操作,對使用者和儲存節點的CPU有較高的要求。本文提出一種基於金鑰的雜湊雜湊方法來保證整個系統的資料完整性。與數字簽名方案相比,該方法具有相對較快的鑑別速度。

  如圖5所示,在讀或寫操作時,儲存節點需要完成使用者身份的鑑別。在本系統中,每個儲存節點存有一個認證物件,其中存有各個使用者的使用者標誌、公鑰以及由儲存節點加密的共享鑑別金鑰所得的密文keyMAC和時戳資訊。每個使用者均與儲存節點有一個共享鑑別金鑰,這個鑑別金鑰僅由使用者和儲存節點兩方知道,用來完成使用者身份的鑑別。每當一個新使用者加入系統時,可以透過RSA加密機制將使用者的鑑別金鑰傳送到每個儲存節點,儲存節點在收到加密的密文keyMAC之後,在認證物件中,為該使用者新增一行資訊。

  在這種方案中並沒有採用數字簽名機制,而只是在寫資料時計算HMAC雜湊來鑑別寫者。HMAC不同於數字簽名之處,在於使用者端可以驗證一個基於金鑰的雜湊也可以建立這個雜湊。寫操作需要客戶端加密安全資料物件,並且計算HMAC,然後將這些資訊傳送給儲存節點。儲存節點使用儲存在認證物件中的共享鑑別金鑰重新計算HMAC來鑑別傳送者的身份。如果透過鑑別,客戶有權修改或建立安全資料物件,儲存節點完成寫操作,並更新相應的資料結構。注意儲存節點並不儲存HMAC。如果讀資料的使用者不是建立這個資料物件的使用者,那麼需要重新計算一個新的HMAC。

  2.3資料讀寫過程

  資料的讀寫過程大致相同,首先使用者將與儲存節點共享的鑑別金鑰私鑰提供給客戶端,這可以透過要求使用者輸入密碼形式或是鑑別伺服器來完成。對於每一個檔案,透過檔案的放置與定位演算法找到相應的儲存節點,完成儲存節點鑑別使用者的合法性。如果鑑別使用者有權對此檔案讀或寫操作,開啟檔案,獲得相應的金鑰檔案標誌,然後去讀金鑰檔案,得到該檔案的加/解密金鑰。如果是寫操作,這個金鑰用於加密資料;如果是讀操作,用於解密資料。

  2.4資料物件的複製機制

  隨著系統規模的擴大,節點失效和磁碟損壞現象不可避免,因此考慮到資料物件的冗餘是很有必要的。資料物件標誌符DOID由事先定義好的函式,根據檔案在其名字空間的全路徑和名字空間的標誌生成。將資料物件的全域性統一標誌DOID作為SHA-1演算法的輸入,產生一個160 bit的訊息摘要x;將160 bit的訊息摘要x分成五個32 bit偽隨機數k1~k5。如果需要更多的隨機數,可以將x作為SHA-1演算法的輸入,產生另外五個32 bit偽隨機數k6~k10。假定系統要求的副本數量是k,需要產生三倍於k的偽隨機數,再根據這些偽隨機數將資料物件雜湊到不同的磁碟上。產生三倍於k的偽隨機數降低了3k個偽隨機數全部雜湊到同一個磁碟的機率。

  2.5資料物件的修復機制

  系統在執行一段時間後,儲存在系統中的`資料副本可能會因為某些不可預知的原因而丟失或者被損壞,從而降低了儲存在系統中資料物件的可靠性。單獨使用冗餘機制無法有效地提高分散式儲存系統中資料儲存的可靠性。對於高可靠性的儲存系統,設計並實現一個簡單而且高效的修復演算法相當重要。在分散式檔案儲存系統中存在三種基本的修復機制,即本地資料維護、被動檢測和主動掃描。文獻[8]中詳細敘述了在OceanStore中如何應用這三種修復機制以及相應的效能分析。

  考慮到系統實現的複雜性及效能,本文設計了簡單的資料物件副本修復機制。系統中每個儲存節點定期掃描儲存在本地的檔案元資料資訊,並檢查在其他副本儲存節點上的元資料資訊,在多於quorum個(包括quorum)元資料資訊中找出具有最大時間戳的元資料資訊,並覆蓋其他副本。

  3效能分析

  3.1修復演算法的可行性

  首先分析修復演算法的可行性,包括頻寬消耗和檔案的可靠性。假定副本的死亡分佈服從負指數分佈,即Pdeath(t)=1-eλt。其中1/λ是副本的壽命期望。下面是推導過程中用到的其他符號的定義:bandwidth為系統節點的頻寬;N為系統的節點數目;F/N是每個節點儲存在系統中檔案的平均數目;filesize為系統中檔案的平均大小;uptime為每個節點每天的平均線上時間;T為系統的修復週期;R為一個檔案的副本數。

  假如沒有修復,一個檔案經過T時間後它存活的可能性為Pliving(1)=1-PRdeath(T)。檔案的修復是需要時間的,修復檔案所需時間的上界是一個節點修復所有丟失的副本所需的時間,即T2R=(filesize×R)/bandwidth。一個節點進行修復時可能由於下線等原因導致修復失敗,可以假定修復在上線期間是均勻進行的,則修復失敗的上限為T2r/uptime。如果修復時檔案還存活,從這一時刻往前看:如果修復成功,死亡分佈的無記憶性,檔案將以機率1存活下去;否則,檔案以Pliving(T)的機率繼續存活。由此可以得到檔案存活的遞推公式:

  3.2系統的可擴充套件性分析

  系統所採用的鑑別機制中,在客戶端和儲存節點執行的操作分工如表1所示。值得一提的是這種方案不需要產生簽名或驗證簽名,而在讀和寫操作時,儲存節點均要計算一次HMAC。因為加密比雜湊需要更長的時間,儲存節點的工作量還不到客戶端完成工作量的1/2,這將保證系統能夠擴充套件到更大規模。儲存節點的瓶頸主要是在網絡卡,因為完成雜湊的操作要比在100 Mbps鏈路上傳送包所花費的時間少得多。

  4結束語

  叢集儲存是一種網路儲存體系結構,本文重點介紹了構建在該儲存體系結構上的一種資料安全存取方案。它採用基於共享鑑別金鑰的鑑別機制,防止未授權使用者的閱讀和修改,並且對上層應用透明。系統採用廣泛用於加/解密技術中的SHA-1演算法作為密碼校驗函式,與採用數字簽名鑑別機制相比,該演算法具有較高的效能。系統修復機制能夠自動地修復系統中存在錯誤的資料物件,保證了系統的高可靠性。透過分析推導,證明系統的自動修復機制是可行的。透過比較客戶端和儲存節點所執行的任務,儲存節點的工作量不到客戶端的一半,從而保證系統能夠擴充套件到更大規模。

最近訪問