借鑒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之后,在認證對象中,為該用戶添加一行信息。
本文來源:http://www.nvnqwx.com/shiyongwen/2164628.htm