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