借鑒P2P的思想實(shí)現(xiàn)了一個(gè)基于集群的安全存儲系統(tǒng),并介紹了構(gòu)建在該存儲體系結(jié)構(gòu)之上的一種數(shù)據(jù)安全存取方案。引入基于共享鑒別密鑰的鑒別機(jī)制,以確保用戶數(shù)據(jù)的授權(quán)訪問,防止未授權(quán)用戶的閱讀和修改。系統(tǒng)采用廣泛用于加/解密技術(shù)中的SHA-1算法作為密碼校驗(yàn)函數(shù),與采用數(shù)字簽名鑒別機(jī)制相比,該算法具有較高的性能。初步分析和實(shí)驗(yàn)表明,該系統(tǒng)在現(xiàn)實(shí)條件下,在消耗較低的維護(hù)帶寬的同時(shí)維持了較高的可靠性,并提供了較好的讀寫性能。
近幾年來,基于P2P技術(shù)的分布式存儲系統(tǒng)[1,2]已經(jīng)成為一個(gè)研究熱點(diǎn)。廣域網(wǎng)中的分布式文件存儲系統(tǒng)能夠更好地為用戶提供文件存儲服務(wù),使用戶可以隨時(shí)隨地訪問存放在網(wǎng)上的數(shù)據(jù),并且能夠?yàn)槲募蚕怼⒍嘤脩糁g的協(xié)作提供支持。基于P2P構(gòu)建的分布式文件存儲系統(tǒng),一般都是面向廣域網(wǎng)提供大規(guī)模網(wǎng)絡(luò)存儲服務(wù),利用其分布在廣域網(wǎng)上的大量服務(wù)器為用戶提供安全的、可靠的和高效的存儲訪問服務(wù)。P2P強(qiáng)調(diào)的是對等服務(wù),不區(qū)分服務(wù)器和客戶端,每個(gè)節(jié)點(diǎn)在索取其他節(jié)點(diǎn)服務(wù)的同時(shí),也與其他節(jié)點(diǎn)相配合提供相同的服務(wù),每個(gè)參與節(jié)點(diǎn)的位置均相等。借鑒P2P技術(shù)的思想,采用高速網(wǎng)絡(luò)將普通PC機(jī)相連成一個(gè)可擴(kuò)展集群存儲系統(tǒng)方案[3~B6]相對于價(jià)格昂貴的大型磁盤陣列,具有極高的性能價(jià)格比。
基于以上現(xiàn)狀,本文提出了一個(gè)基于集群的安全存儲系統(tǒng)設(shè)計(jì)[3]。在以前的研究工作中[7]解決了集群存儲系統(tǒng)的數(shù)據(jù)容錯(cuò)問題。本文致力于解決集群存儲系統(tǒng)的信息安全性問題,保證存儲系統(tǒng)中的數(shù)據(jù)只被合法用戶讀寫。
1系統(tǒng)架構(gòu)
集群存儲系統(tǒng)將局域網(wǎng)內(nèi)單個(gè)PC上的存儲資源整合成具有統(tǒng)一邏輯視圖的高性能存儲系統(tǒng)。如圖1所示,系統(tǒng)中的存儲節(jié)點(diǎn)是一臺PC機(jī),每個(gè)節(jié)點(diǎn)運(yùn)行Linux操作系統(tǒng),通過局域網(wǎng)將各個(gè)節(jié)點(diǎn)連接起來,構(gòu)成一個(gè)存儲實(shí)體,對外提供存儲服務(wù)。圖中LAN1的主要功能是實(shí)現(xiàn)節(jié)點(diǎn)之間的數(shù)據(jù)備份和恢復(fù),以及節(jié)點(diǎn)的全局管理等;LAN2則起到用戶之間進(jìn)行數(shù)據(jù)交換的作用。LAN通過高速以太網(wǎng)連接,采用通用的TCP/IP協(xié)議通信形成一個(gè)集群存儲系統(tǒng)。
在圖1的體系結(jié)構(gòu)中,本地主機(jī)上裝有存儲虛擬化的客戶端存儲代理軟件SA(storage agent)。用戶的請求由駐留在客戶端的這些SA截獲,并將請求發(fā)送給適當(dāng)?shù)拇鎯?jié)點(diǎn)。應(yīng)用程序訪問數(shù)據(jù)對象的步驟如下:a)將用戶可理解的數(shù)據(jù)對象的名字通過一個(gè)目錄服務(wù)器解析為數(shù)據(jù)對象的惟一標(biāo)志DOID(data object identification);b)將DOID作為偽隨機(jī)函數(shù)的種子提交給本地客戶端存儲代理SA,返回?cái)?shù)據(jù)對象的位置;c)用戶直接與選中的存儲節(jié)點(diǎn)連接,完成數(shù)據(jù)的讀寫請求。
2安全存取機(jī)制
系統(tǒng)數(shù)據(jù)安全性的增強(qiáng)主要取決于存儲在各個(gè)節(jié)點(diǎn)的數(shù)據(jù)對象的安全性,只有授權(quán)的合法用戶有權(quán)存取數(shù)據(jù)。假設(shè)用戶從密鑰對象中得到了對稱加密密鑰(RC5密鑰),安全數(shù)據(jù)對象包含了足夠的信息來保護(hù)其所包含數(shù)據(jù)的保密性和完整性。這就意味著即使惡意用戶能夠得到存儲節(jié)點(diǎn)中的所有數(shù)據(jù),或是嗅探到所有在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù),仍能夠維持?jǐn)?shù)據(jù)的保密性和完整性。
2.1主要數(shù)據(jù)結(jié)構(gòu)
系統(tǒng)中主要有三個(gè)基本的數(shù)據(jù)結(jié)構(gòu),即安全數(shù)據(jù)對象包括加密的用戶數(shù)據(jù)和元數(shù)據(jù);密鑰對象與一個(gè)或一組文件相關(guān),保存各個(gè)用戶用于解密文件數(shù)據(jù)的密鑰;認(rèn)證對象存儲在每個(gè)存儲節(jié)點(diǎn)上,用于決定一個(gè)特定的用戶能否從一個(gè)數(shù)據(jù)對象中寫或刪除數(shù)據(jù)。
1)安全數(shù)據(jù)對象每個(gè)數(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ù)在相同密鑰加密時(shí)密文相同;timestamp字段用于防止hacker用一個(gè)已經(jīng)存儲過的文件來覆蓋新的文件。
2)密鑰對象每個(gè)密鑰對象如圖3所示,包括兩種類型的信息。密鑰對象的頭部:key file id是系統(tǒng)中惟一的文件標(biāo)志;用戶標(biāo)志域(uid)是指出最后一個(gè)修改密鑰對象的用戶。當(dāng)用戶修改了密鑰對象后,對整個(gè)密鑰對象用自己的私鑰簽名,將結(jié)果存放在signature中,這種機(jī)制能夠防止非授權(quán)用戶非法修改密鑰文件。密鑰對象主體信息是一組三元組,包括uid、encrypted key和權(quán)限位。Uid不僅可以是一個(gè)用戶,還可以是幾個(gè)用戶或是一個(gè)用戶組;encrypted key是一個(gè)對稱密鑰用于加解密文件,由用戶的公鑰加密;權(quán)限位類似于UNIX系統(tǒng)的權(quán)限位。一個(gè)密鑰對象可以不僅僅對應(yīng)一個(gè)文件,也可以是一組文件,這樣這組文件都用同樣的密鑰加/解密。
3)認(rèn)證對象每個(gè)存儲節(jié)點(diǎn)包含一個(gè)認(rèn)證對象,如圖4所示。存儲節(jié)點(diǎn)利用認(rèn)證對象來鑒別用戶,作出是否授權(quán)該用戶的'寫操作的判斷。KeyMAC是一個(gè)共享密鑰,以密文形式存儲,用于HMAC生成及用戶與存儲節(jié)點(diǎn)之間的驗(yàn)證。當(dāng)存儲節(jié)點(diǎn)啟動時(shí),將認(rèn)證對象調(diào)入內(nèi)存,keyMAC被解密緩存在內(nèi)存中。KeyPUB是用戶的公鑰,存儲用戶的公鑰主要是為方便查找用戶的公鑰,而不用去求助于一個(gè)集中的密鑰服務(wù)器。時(shí)戳字段在一個(gè)文件塊被寫入時(shí)更新,用于防止重演攻擊。
uidkeyPUBkeyMACtimestamp
uidkeyPUBkeyMACtimestamp
…
gidkeyPUBkeyMACtimestamp
2.2鑒別機(jī)制
系統(tǒng)的主要目標(biāo)是提供鑒別和加密的存儲服務(wù)。加密和解密由客戶端來完成,盡管不容易減少加/解密的時(shí)間開銷,但是采用對稱加密算法時(shí)間相對要快一些。目前的主要鑒別方法在安全性和速度上均有差別,最常用的是采用數(shù)字簽名機(jī)制。但是數(shù)字簽名是一個(gè)相對比較慢的操作,對用戶和存儲節(jié)點(diǎn)的CPU有較高的要求。本文提出一種基于密鑰的哈希散列方法來保證整個(gè)系統(tǒng)的數(shù)據(jù)完整性。與數(shù)字簽名方案相比,該方法具有相對較快的鑒別速度。
如圖5所示,在讀或?qū)懖僮鲿r(shí),存儲節(jié)點(diǎn)需要完成用戶身份的鑒別。在本系統(tǒng)中,每個(gè)存儲節(jié)點(diǎn)存有一個(gè)認(rèn)證對象,其中存有各個(gè)用戶的用戶標(biāo)志、公鑰以及由存儲節(jié)點(diǎn)加密的共享鑒別密鑰所得的密文keyMAC和時(shí)戳信息。每個(gè)用戶均與存儲節(jié)點(diǎn)有一個(gè)共享鑒別密鑰,這個(gè)鑒別密鑰僅由用戶和存儲節(jié)點(diǎn)兩方知道,用來完成用戶身份的鑒別。每當(dāng)一個(gè)新用戶加入系統(tǒng)時(shí),可以通過RSA加密機(jī)制將用戶的鑒別密鑰發(fā)送到每個(gè)存儲節(jié)點(diǎn),存儲節(jié)點(diǎn)在收到加密的密文keyMAC之后,在認(rèn)證對象中,為該用戶添加一行信息。
本文來源:http://www.nvnqwx.com/shiyongwen/2164628.htm