集群存儲系統(tǒng)數據安全研究論文
借鑒P2P的思想實現了一個基于集群的安全存儲系統(tǒng),并介紹了構建在該存儲體系結構之上的一種數據安全存取方案。引入基于共享鑒別密鑰的鑒別機制,以確保用戶數據的授權訪問,防止未授權用戶的閱讀和修改。系統(tǒng)采用廣泛用于加/解密技術中的SHA-1算法作為密碼校驗函數,與采用數字簽名鑒別機制相比,該算法具有較高的性能。初步分析和實驗表明,該系統(tǒng)在現實條件下,在消耗較低的維護帶寬的同時維持了較高的可靠性,并提供了較好的讀寫性能。
近幾年來,基于P2P技術的分布式存儲系統(tǒng)[1,2]已經成為一個研究熱點。廣域網中的分布式文件存儲系統(tǒng)能夠更好地為用戶提供文件存儲服務,使用戶可以隨時隨地訪問存放在網上的數據,并且能夠為文件共享、多用戶之間的協(xié)作提供支持;赑2P構建的分布式文件存儲系統(tǒng),一般都是面向廣域網提供大規(guī)模網絡存儲服務,利用其分布在廣域網上的大量服務器為用戶提供安全的、可靠的和高效的存儲訪問服務。P2P強調的是對等服務,不區(qū)分服務器和客戶端,每個節(jié)點在索取其他節(jié)點服務的同時,也與其他節(jié)點相配合提供相同的服務,每個參與節(jié)點的位置均相等。借鑒P2P技術的思想,采用高速網絡將普通PC機相連成一個可擴展集群存儲系統(tǒng)方案[3~B6]相對于價格昂貴的大型磁盤陣列,具有極高的性能價格比。
基于以上現狀,本文提出了一個基于集群的安全存儲系統(tǒng)設計[3]。在以前的研究工作中[7]解決了集群存儲系統(tǒng)的數據容錯問題。本文致力于解決集群存儲系統(tǒng)的信息安全性問題,保證存儲系統(tǒng)中的數據只被合法用戶讀寫。
1系統(tǒng)架構
集群存儲系統(tǒng)將局域網內單個PC上的存儲資源整合成具有統(tǒng)一邏輯視圖的高性能存儲系統(tǒng)。如圖1所示,系統(tǒng)中的存儲節(jié)點是一臺PC機,每個節(jié)點運行Linux操作系統(tǒng),通過局域網將各個節(jié)點連接起來,構成一個存儲實體,對外提供存儲服務。圖中LAN1的主要功能是實現節(jié)點之間的數據備份和恢復,以及節(jié)點的全局管理等;LAN2則起到用戶之間進行數據交換的作用。LAN通過高速以太網連接,采用通用的TCP/IP協(xié)議通信形成一個集群存儲系統(tǒng)。
在圖1的體系結構中,本地主機上裝有存儲虛擬化的客戶端存儲代理軟件SA(storage agent)。用戶的請求由駐留在客戶端的這些SA截獲,并將請求發(fā)送給適當的存儲節(jié)點。應用程序訪問數據對象的步驟如下:a)將用戶可理解的數據對象的名字通過一個目錄服務器解析為數據對象的惟一標志DOID(data object identification);b)將DOID作為偽隨機函數的種子提交給本地客戶端存儲代理SA,返回數據對象的位置;c)用戶直接與選中的存儲節(jié)點連接,完成數據的讀寫請求。
2安全存取機制
系統(tǒng)數據安全性的增強主要取決于存儲在各個節(jié)點的數據對象的安全性,只有授權的合法用戶有權存取數據。假設用戶從密鑰對象中得到了對稱加密密鑰(RC5密鑰),安全數據對象包含了足夠的信息來保護其所包含數據的保密性和完整性。這就意味著即使惡意用戶能夠得到存儲節(jié)點中的所有數據,或是嗅探到所有在網絡上傳輸的數據,仍能夠維持數據的保密性和完整性。
2.1主要數據結構
系統(tǒng)中主要有三個基本的數據結構,即安全數據對象包括加密的用戶數據和元數據;密鑰對象與一個或一組文件相關,保存各個用戶用于解密文件數據的密鑰;認證對象存儲在每個存儲節(jié)點上,用于決定一個特定的用戶能否從一個數據對象中寫或刪除數據。
1)安全數據對象每個數據對象由兩部分組成,即用戶數據和元數據,如圖2所示。用戶數據是加密存儲的。元數據包括文件id、用戶id、文件相對應密鑰文件id。HMAC(hashed message authentication code)字段用于證明數據的完整性和鑒別用戶的合法性;IV(初始向量)用于防止相同數據在相同密鑰加密時密文相同;timestamp字段用于防止hacker用一個已經存儲過的文件來覆蓋新的文件。
2)密鑰對象每個密鑰對象如圖3所示,包括兩種類型的信息。密鑰對象的頭部:key file id是系統(tǒng)中惟一的文件標志;用戶標志域(uid)是指出最后一個修改密鑰對象的用戶。當用戶修改了密鑰對象后,對整個密鑰對象用自己的私鑰簽名,將結果存放在signature中,這種機制能夠防止非授權用戶非法修改密鑰文件。密鑰對象主體信息是一組三元組,包括uid、encrypted key和權限位。Uid不僅可以是一個用戶,還可以是幾個用戶或是一個用戶組;encrypted key是一個對稱密鑰用于加解密文件,由用戶的公鑰加密;權限位類似于UNIX系統(tǒng)的權限位。一個密鑰對象可以不僅僅對應一個文件,也可以是一組文件,這樣這組文件都用同樣的密鑰加/解密。
3)認證對象每個存儲節(jié)點包含一個認證對象,如圖4所示。存儲節(jié)點利用認證對象來鑒別用戶,作出是否授權該用戶的寫操作的判斷。KeyMAC是一個共享密鑰,以密文形式存儲,用于HMAC生成及用戶與存儲節(jié)點之間的驗證。當存儲節(jié)點啟動時,將認證對象調入內存,keyMAC被解密緩存在內存中。KeyPUB是用戶的公鑰,存儲用戶的公鑰主要是為方便查找用戶的公鑰,而不用去求助于一個集中的密鑰服務器。時戳字段在一個文件塊被寫入時更新,用于防止重演攻擊。
uidkeyPUBkeyMACtimestamp
uidkeyPUBkeyMACtimestamp
…
gidkeyPUBkeyMACtimestamp
2.2鑒別機制
系統(tǒng)的主要目標是提供鑒別和加密的存儲服務。加密和解密由客戶端來完成,盡管不容易減少加/解密的時間開銷,但是采用對稱加密算法時間相對要快一些。目前的主要鑒別方法在安全性和速度上均有差別,最常用的是采用數字簽名機制。但是數字簽名是一個相對比較慢的操作,對用戶和存儲節(jié)點的CPU有較高的要求。本文提出一種基于密鑰的哈希散列方法來保證整個系統(tǒng)的數據完整性。與數字簽名方案相比,該方法具有相對較快的鑒別速度。
如圖5所示,在讀或寫操作時,存儲節(jié)點需要完成用戶身份的鑒別。在本系統(tǒng)中,每個存儲節(jié)點存有一個認證對象,其中存有各個用戶的用戶標志、公鑰以及由存儲節(jié)點加密的共享鑒別密鑰所得的密文keyMAC和時戳信息。每個用戶均與存儲節(jié)點有一個共享鑒別密鑰,這個鑒別密鑰僅由用戶和存儲節(jié)點兩方知道,用來完成用戶身份的鑒別。每當一個新用戶加入系統(tǒng)時,可以通過RSA加密機制將用戶的鑒別密鑰發(fā)送到每個存儲節(jié)點,存儲節(jié)點在收到加密的密文keyMAC之后,在認證對象中,為該用戶添加一行信息。
在這種方案中并沒有采用數字簽名機制,而只是在寫數據時計算HMAC散列來鑒別寫者。HMAC不同于數字簽名之處,在于用戶端可以驗證一個基于密鑰的散列也可以創(chuàng)建這個散列。寫操作需要客戶端加密安全數據對象,并且計算HMAC,然后將這些信息發(fā)送給存儲節(jié)點。存儲節(jié)點使用存儲在認證對象中的共享鑒別密鑰重新計算HMAC來鑒別發(fā)送者的身份。如果通過鑒別,客戶有權修改或創(chuàng)建安全數據對象,存儲節(jié)點完成寫操作,并更新相應的數據結構。注意存儲節(jié)點并不存儲HMAC。如果讀數據的用戶不是創(chuàng)建這個數據對象的用戶,那么需要重新計算一個新的HMAC。
2.3數據讀寫過程
數據的讀寫過程大致相同,首先用戶將與存儲節(jié)點共享的鑒別密鑰私鑰提供給客戶端,這可以通過要求用戶輸入密碼形式或是鑒別服務器來完成。對于每一個文件,通過文件的放置與定位算法找到相應的存儲節(jié)點,完成存儲節(jié)點鑒別用戶的合法性。如果鑒別用戶有權對此文件讀或寫操作,打開文件,獲得相應的密鑰文件標志,然后去讀密鑰文件,得到該文件的加/解密密鑰。如果是寫操作,這個密鑰用于加密數據;如果是讀操作,用于解密數據。
2.4數據對象的復制機制
隨著系統(tǒng)規(guī)模的擴大,節(jié)點失效和磁盤損壞現象不可避免,因此考慮到數據對象的冗余是很有必要的。數據對象標志符DOID由事先定義好的函數,根據文件在其名字空間的全路徑和名字空間的標志生成。將數據對象的全局統(tǒng)一標志DOID作為SHA-1算法的輸入,產生一個160 bit的消息摘要x;將160 bit的消息摘要x分成五個32 bit偽隨機數k1~k5。如果需要更多的隨機數,可以將x作為SHA-1算法的輸入,產生另外五個32 bit偽隨機數k6~k10。假定系統(tǒng)要求的副本數量是k,需要產生三倍于k的偽隨機數,再根據這些偽隨機數將數據對象散列到不同的磁盤上。產生三倍于k的偽隨機數降低了3k個偽隨機數全部散列到同一個磁盤的概率。
2.5數據對象的修復機制
系統(tǒng)在運行一段時間后,存儲在系統(tǒng)中的`數據副本可能會因為某些不可預知的原因而丟失或者被損壞,從而降低了存儲在系統(tǒng)中數據對象的可靠性。單獨使用冗余機制無法有效地提高分布式存儲系統(tǒng)中數據存儲的可靠性。對于高可靠性的存儲系統(tǒng),設計并實現一個簡單而且高效的修復算法相當重要。在分布式文件存儲系統(tǒng)中存在三種基本的修復機制,即本地數據維護、被動檢測和主動掃描。文獻[8]中詳細敘述了在OceanStore中如何應用這三種修復機制以及相應的性能分析。
考慮到系統(tǒng)實現的復雜性及性能,本文設計了簡單的數據對象副本修復機制。系統(tǒng)中每個存儲節(jié)點定期掃描存儲在本地的文件元數據信息,并檢查在其他副本存儲節(jié)點上的元數據信息,在多于quorum個(包括quorum)元數據信息中找出具有最大時間戳的元數據信息,并覆蓋其他副本。
3性能分析
3.1修復算法的可行性
首先分析修復算法的可行性,包括帶寬消耗和文件的可靠性。假定副本的死亡分布服從負指數分布,即Pdeath(t)=1-eλt。其中1/λ是副本的壽命期望。下面是推導過程中用到的其他符號的定義:bandwidth為系統(tǒng)節(jié)點的帶寬;N為系統(tǒng)的節(jié)點數目;F/N是每個節(jié)點保存在系統(tǒng)中文件的平均數目;filesize為系統(tǒng)中文件的平均大小;uptime為每個節(jié)點每天的平均在線時間;T為系統(tǒng)的修復周期;R為一個文件的副本數。
假如沒有修復,一個文件經過T時間后它存活的可能性為Pliving(1)=1-PRdeath(T)。文件的修復是需要時間的,修復文件所需時間的上界是一個節(jié)點修復所有丟失的副本所需的時間,即T2R=(filesize×R)/bandwidth。一個節(jié)點進行修復時可能由于下線等原因導致修復失敗,可以假定修復在上線期間是均勻進行的,則修復失敗的上限為T2r/uptime。如果修復時文件還存活,從這一時刻往前看:如果修復成功,死亡分布的無記憶性,文件將以概率1存活下去;否則,文件以Pliving(T)的概率繼續(xù)存活。由此可以得到文件存活的遞推公式:
3.2系統(tǒng)的可擴展性分析
系統(tǒng)所采用的鑒別機制中,在客戶端和存儲節(jié)點執(zhí)行的操作分工如表1所示。值得一提的是這種方案不需要產生簽名或驗證簽名,而在讀和寫操作時,存儲節(jié)點均要計算一次HMAC。因為加密比散列需要更長的時間,存儲節(jié)點的工作量還不到客戶端完成工作量的1/2,這將保證系統(tǒng)能夠擴展到更大規(guī)模。存儲節(jié)點的瓶頸主要是在網卡,因為完成散列的操作要比在100 Mbps鏈路上傳送包所花費的時間少得多。
4結束語
集群存儲是一種網絡存儲體系結構,本文重點介紹了構建在該存儲體系結構上的一種數據安全存取方案。它采用基于共享鑒別密鑰的鑒別機制,防止未授權用戶的閱讀和修改,并且對上層應用透明。系統(tǒng)采用廣泛用于加/解密技術中的SHA-1算法作為密碼校驗函數,與采用數字簽名鑒別機制相比,該算法具有較高的性能。系統(tǒng)修復機制能夠自動地修復系統(tǒng)中存在錯誤的數據對象,保證了系統(tǒng)的高可靠性。通過分析推導,證明系統(tǒng)的自動修復機制是可行的。通過比較客戶端和存儲節(jié)點所執(zhí)行的任務,存儲節(jié)點的工作量不到客戶端的一半,從而保證系統(tǒng)能夠擴展到更大規(guī)模。
【集群存儲系統(tǒng)數據安全研究論文】相關文章:
云計算環(huán)境數據安全研究論文11-03
數據庫安全技術研究與用法的論文11-07
產業(yè)集群協(xié)同創(chuàng)新效率影響研究論文09-17
數據采集系統(tǒng)設計研究論文10-26
大數據營銷創(chuàng)新研究論文11-06