專利名稱:一種云存儲(chǔ)環(huán)境下的安全網(wǎng)盤系統(tǒng)的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
云存儲(chǔ)環(huán)境下的安全網(wǎng)盤系統(tǒng)的實(shí)現(xiàn)方法屬于存儲(chǔ)安全領(lǐng)域,尤其涉及其中的安全訪問(wèn)控制、數(shù)據(jù)同步、密鑰分發(fā)管理和文件管理等技術(shù)領(lǐng)域。
背景技術(shù):
隨著云計(jì)算技術(shù)的飛速發(fā)展,云存儲(chǔ)也逐漸受到了廣泛的關(guān)注和應(yīng)用,文件所有者可將自己的機(jī)密文件上傳到云存儲(chǔ)中,由云存儲(chǔ)服務(wù)提供商進(jìn)行統(tǒng)一管理,網(wǎng)盤系統(tǒng)便是云存儲(chǔ)的一個(gè)典型應(yīng)用。通過(guò)網(wǎng)盤系統(tǒng),文件所有者可以授權(quán)其他用戶使用自己的文件,通過(guò)共享和數(shù)據(jù)同步的方式來(lái)實(shí)現(xiàn)用戶間的協(xié)同工作。雖然網(wǎng)盤系統(tǒng)能夠以云存儲(chǔ)作為媒介,方便的實(shí)現(xiàn)用戶間的協(xié)同工作,但如果沒(méi)有安全機(jī)制的保護(hù),用戶將自己的隱私數(shù)據(jù)存放在云存儲(chǔ)中將存在著巨大的安全隱患。就數(shù)據(jù)安全來(lái)說(shuō),第一個(gè)要素是數(shù)據(jù)的機(jī)密性。用戶將數(shù)據(jù)若以明文的形式存放在云存儲(chǔ)中,云存儲(chǔ)服務(wù)提供商將可以隨意的訪問(wèn)這些數(shù)據(jù),如果云存儲(chǔ)服務(wù)提供商將這些數(shù)據(jù)用于非法目的,那將給用戶帶來(lái)巨大的損失,甚至產(chǎn)生一些不可預(yù)計(jì)的后果。安全的第二個(gè)要素是數(shù)據(jù)的完整性。如果數(shù)據(jù)以明文形式在不安全的網(wǎng)絡(luò)中傳輸過(guò)程中被非法用戶篡改,或者云存儲(chǔ)服務(wù)提供商有意的刪除用戶數(shù)據(jù)中不利于自己的信息,以達(dá)到自己的非法目的,用戶需要能夠檢測(cè)出該數(shù)據(jù)是否真的是自己上傳的并且未被任何人篡改過(guò)。安全的第三要素是可用性,這一點(diǎn)一般的云存儲(chǔ)服務(wù)提供商都能夠保證。另外,在云存儲(chǔ)環(huán)境下的網(wǎng)盤系統(tǒng)中,安全的權(quán)限控制也是一個(gè)很重要的問(wèn)題,因?yàn)閿?shù)據(jù)的共享一定會(huì)破壞數(shù)據(jù)的機(jī)密性,那么如何在新的信任體系下構(gòu)建安全機(jī)制的架構(gòu)顯得十分重要。一般來(lái)說(shuō),在云存儲(chǔ)環(huán)境下的安全網(wǎng)盤系統(tǒng)中,數(shù)據(jù)擁有者和授權(quán)用戶都是可信的,他們不會(huì)惡意的泄漏或者破壞數(shù)據(jù);而云存儲(chǔ)服務(wù)提供商、網(wǎng)絡(luò)及非授權(quán)用戶都是不可信的,他們隨時(shí)可能泄漏用戶的數(shù)據(jù),網(wǎng)絡(luò)和非授權(quán)用戶甚至有可能惡意的將數(shù)據(jù)徹底毀壞。但云存儲(chǔ)服務(wù)提供商基于信譽(yù)的考慮,不會(huì)輕易做出用戶能夠發(fā)現(xiàn)并可以有力的指控自己的舉動(dòng)來(lái)。安全網(wǎng)盤系統(tǒng)是目的是在此信任體系下保證用戶數(shù)據(jù)的安全。它的一般實(shí)現(xiàn)方法如下首先數(shù)據(jù)擁有者計(jì)算本地文件的哈希值,接著在自己本地對(duì)的本地文件和哈希值進(jìn)行加密,然后才將數(shù)據(jù)與哈希值存放在云存儲(chǔ)中。這樣一來(lái),云存儲(chǔ)服務(wù)提供商和網(wǎng)絡(luò)竊聽者均無(wú)法獲取文件的明文,保證了數(shù)據(jù)的機(jī)密性。用戶從云存儲(chǔ)服務(wù)提供商出取回文件和該文件哈希值的密文后對(duì)其解密,然后再次對(duì)解密后的文件計(jì)算哈希值,若與先前存放在云端的哈希值相符,則該文件是完整且未被篡改的,由此保證了數(shù)據(jù)的完整性。用戶可以將自己的文件加密密鑰后傳遞給授權(quán)用戶,以達(dá)到數(shù)據(jù)共享中訪問(wèn)權(quán)限控制的目的。但由于文件加密密鑰的傳遞極有可能破壞系統(tǒng)本身的機(jī)密性和完整系,在云存儲(chǔ)環(huán)境下的安全網(wǎng)盤系統(tǒng)的架構(gòu)中,如何進(jìn)行訪問(wèn)權(quán)限的控制是最重要的一個(gè)環(huán)節(jié)?,F(xiàn)有的云存儲(chǔ)環(huán)境下的安全網(wǎng)盤系統(tǒng)大致可分為兩類一類是將數(shù)據(jù)的訪問(wèn)控制權(quán)完全交由數(shù)據(jù)擁有者來(lái)進(jìn)行,其他用戶若是想訪問(wèn)數(shù)據(jù)必須先與數(shù)據(jù)的擁有者取得聯(lián)系進(jìn)行身份認(rèn)證,通過(guò)身份認(rèn)證后才能獲得密鑰與數(shù)據(jù)的訪問(wèn)權(quán)限。這種方式看起來(lái)非常的安全合適,卻給系統(tǒng)帶來(lái)了新的弊端共享用戶必須等到共享數(shù)據(jù)擁有者上線后才能獲得訪問(wèn)權(quán)限,大大降低了系統(tǒng)的效率,同時(shí)對(duì)共享數(shù)據(jù)擁有者的系統(tǒng)造成了額外的開銷 ’另一類是由共享用戶自己保存密鑰,以外鏈的方式進(jìn)行數(shù)據(jù)共享過(guò)程中密鑰的傳遞,也在一定程度上破壞了數(shù)據(jù)的安全性。本發(fā)明實(shí)現(xiàn)了一種云存儲(chǔ)環(huán)境下的安全網(wǎng)盤系統(tǒng),保證了用戶數(shù)據(jù)的機(jī)密性和完整性,同時(shí)在數(shù)據(jù)共享的情況下能夠?qū)τ脩舻臋?quán)限進(jìn)行有效地管理,為用戶提供了高效的數(shù)據(jù)同步、版本控制等功能。該系統(tǒng)還具有良好的可拓展性。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種云存儲(chǔ)環(huán)境下的安全網(wǎng)盤系統(tǒng)的系統(tǒng)架構(gòu),使得用戶在安全網(wǎng)盤系統(tǒng)的信任體系中,即使失去了對(duì)系統(tǒng)物理資源的控制也仍然可以安全高效地保證數(shù)據(jù)及其在共享過(guò)程中的機(jī)密性、完整性,同時(shí)提供數(shù)據(jù)同步、版本控制等功能。 本發(fā)明的框架包括云存儲(chǔ)服務(wù)提供商、服務(wù)器、客戶端和網(wǎng)絡(luò)。其作用分別如下I)云存儲(chǔ)服務(wù)提供商一般的云存儲(chǔ)提供方,通過(guò)提供一套API提供數(shù)據(jù)的存取等服務(wù),在本系統(tǒng)中用來(lái)保存所有的數(shù)據(jù)及目錄元數(shù)據(jù)信息;2)服務(wù)器其作用是保存用戶信息,包括用戶操作日志,服務(wù)器端目錄樹等,同時(shí)作為橋梁將客戶端上傳的數(shù)據(jù)保存在云存儲(chǔ)中,并在客戶端需要時(shí)從云存儲(chǔ)中將數(shù)據(jù)取出并返回給客戶端;3)客戶端數(shù)據(jù)的擁有者,對(duì)自己的數(shù)據(jù)擁有絕對(duì)的控制權(quán),同時(shí)也是上傳、下載、訪問(wèn)權(quán)限修改等操作的發(fā)起者;4)網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)慕橘|(zhì),傳輸用戶的訪問(wèn)請(qǐng)求和文件信息;本發(fā)明的思路是I)使用開源的云存儲(chǔ)服務(wù)平臺(tái)本云存儲(chǔ)環(huán)境下的安全網(wǎng)盤系統(tǒng)采用了 OpenStack的swift項(xiàng)目作為系統(tǒng)的底層云存儲(chǔ)系統(tǒng)支持。OpenStack是一個(gè)美國(guó)國(guó)家航空航天局與Rackspace共同研發(fā)的云端運(yùn)算軟件,以Apache許可證授權(quán)。Swift是OpenStack的存儲(chǔ)子項(xiàng)目,它是一個(gè)多副本、可擴(kuò)展的分布式對(duì)象存儲(chǔ)系統(tǒng),可以擴(kuò)展到PB級(jí)。在實(shí)際應(yīng)用中,swift項(xiàng)目具有開源、高可靠性、易于擴(kuò)展等優(yōu)點(diǎn),能夠很好的滿足安全要素中對(duì)底層存儲(chǔ)介質(zhì)的可靠性、可用性要求。2)數(shù)據(jù)的機(jī)密性和完整性保護(hù)在本系統(tǒng)中,用戶在上傳數(shù)據(jù)之前先在本地使用哈希算法——SHAl算法對(duì)文件以塊為單位計(jì)算哈希值,然后使用自己的文件密鑰和加密算法AES算法對(duì)文件以塊為單位進(jìn)行加密,然后再將數(shù)據(jù)密文和哈希值上傳到云存儲(chǔ)區(qū)中存儲(chǔ),這樣就保證了用戶數(shù)據(jù)存放在云存儲(chǔ)中的機(jī)密性;用戶下載文件時(shí)先將數(shù)據(jù)密文和哈希值下載到本地,然后使用文件密鑰對(duì)其進(jìn)行解密并對(duì)解密后的數(shù)據(jù)重新計(jì)算哈希值,最后對(duì)兩個(gè)哈希值進(jìn)行比較來(lái)進(jìn)行數(shù)據(jù)完整性校驗(yàn),以保證數(shù)據(jù)的完整性。3)使用PKI體系對(duì)密鑰進(jìn)行層級(jí)管理本系統(tǒng)將密鑰分為三層進(jìn)行管理,理由是利用層級(jí)的組織方式對(duì)密鑰進(jìn)行組織管理,可以在保證安全性的同時(shí)降低系統(tǒng)開銷,同時(shí)可以減輕管理員的負(fù)擔(dān)。密鑰管理的層次如下i.文件加密密鑰文件加密密鑰是層級(jí)密鑰中的第一層。文件加密密鑰采用用戶指定或者隨機(jī)生成的方式,對(duì)于同一用戶,所有的數(shù)據(jù)文件及哈希值均采用此密鑰(或由此密鑰生成的新密鑰)進(jìn)行加密。在本類系統(tǒng)的信任體系中,用戶及被授權(quán)共享的用戶都是可以信賴的,而服務(wù)器(云存儲(chǔ) 服務(wù)提供方)、非授權(quán)用戶和通信網(wǎng)絡(luò)都是不可信的。因此,在保證文件加密密鑰不被泄露給不可信角色的前提下,這種密鑰的管理方式能夠帶來(lái)以下幾點(diǎn)好處第一,密鑰數(shù)量少,越少則越易于系統(tǒng)管理,同時(shí)能夠更方便的加強(qiáng)保護(hù)機(jī)制。第二,文件加密密鑰在寫進(jìn)目錄元數(shù)據(jù)的時(shí)候存在著一定比例的放大,因此密鑰數(shù)量的節(jié)省能夠?yàn)榉?wù)器節(jié)省不少空間;ii.目錄元數(shù)據(jù)目錄元數(shù)據(jù)是層級(jí)密鑰中的第二層。為了記錄目錄的附加屬性,我們?yōu)槊總€(gè)目錄設(shè)置了目錄元數(shù)據(jù)。目錄元數(shù)據(jù)與數(shù)據(jù)一起存放在云端,由服務(wù)器端控制,記錄了每個(gè)目錄的目錄類型(是否被共享)、目錄的絕對(duì)路徑、目錄擁有者、訪問(wèn)權(quán)限列表(包括授權(quán)用戶的用戶名和經(jīng)該用戶公鑰加密后的數(shù)據(jù)擁有者的文件密鑰對(duì));iii.用戶私鑰用戶私鑰是層級(jí)密鑰中的第三層,也是層級(jí)密鑰管理中的最高一層。用戶使用自己的私鑰從目錄元數(shù)據(jù)里面的訪問(wèn)控制列表中對(duì)應(yīng)自己的那項(xiàng)解密出文件擁有者的加密密鑰,然后再使用解密出的密鑰解密出數(shù)據(jù)的明文及哈希值,然后利用哈希值進(jìn)行完整性校驗(yàn)。4)對(duì)數(shù)據(jù)文件提供版本控制用戶上傳的小文件的歷史版本將在云存儲(chǔ)中保存,以方便用戶進(jìn)行歷史版本回滾。記錄在服務(wù)器端的目錄樹里面包含了版本信息記錄,用來(lái)對(duì)文件的所有歷史版本進(jìn)行
管理維護(hù)。5)可選擇的數(shù)據(jù)加密方式用戶數(shù)據(jù)可以選擇每個(gè)文件夾的加密方式,包括不加密、直接用文件密鑰加密、文件密鑰與目錄名共同生成加密密鑰等方式,可以靈活的調(diào)整用戶的加密粒度。本發(fā)明的特征在于所述的方法是在是在由客戶端計(jì)算機(jī)、服務(wù)器以及云存儲(chǔ)服務(wù)器共同組成的基于個(gè)人用戶共享的安全云存儲(chǔ)網(wǎng)絡(luò)中,依次按以下步驟實(shí)現(xiàn)的步驟(I),系統(tǒng)初始化;客戶端計(jì)算機(jī)以下簡(jiǎn)稱客戶端,設(shè)有數(shù)據(jù)加解密模塊,數(shù)據(jù)完整性驗(yàn)證模塊,本地監(jiān)聽模塊,文件夾共享模塊以及協(xié)議通信模塊;服務(wù)器端設(shè)有身份驗(yàn)證模塊,存儲(chǔ)控制模塊,訪問(wèn)控制模塊,版本控制模塊以及目錄元數(shù)據(jù)管理模塊,其中目錄元數(shù)據(jù)管理模塊用于對(duì)目錄元數(shù)據(jù)進(jìn)行查詢,更新在內(nèi)的維護(hù)操作,所述目錄元數(shù)據(jù)包括目錄類型,擁有者用戶名,絕對(duì)路徑,訪問(wèn)控制列表,授權(quán)用戶數(shù)量以及密鑰生成方式,其中訪問(wèn)控制列表包括用戶名和對(duì)應(yīng)的密鑰密文,所述密鑰密文是使用所對(duì)應(yīng)用戶的公鑰加密的,對(duì)應(yīng)用戶可使用自己的私鑰解密;云存儲(chǔ)服務(wù)器以下簡(jiǎn)稱云存儲(chǔ)端,設(shè)有存儲(chǔ)模塊和數(shù)據(jù)可靠模塊,其中存儲(chǔ)模塊設(shè)有一套供所述服務(wù)器端調(diào)用的存儲(chǔ)接口,以便把需要存儲(chǔ)的信息以對(duì)象的形式存放在所述z 存儲(chǔ)端;
數(shù)據(jù)可靠性模塊,根據(jù)所述服務(wù)器端的需要,為所有存放在云存儲(chǔ)端的文件創(chuàng)建一定數(shù)量的副本;步驟(2),為所述云存儲(chǔ)端構(gòu)建并初始化一個(gè)云存儲(chǔ)平臺(tái),步驟如下步驟(2. I ),在裝有Linux操作系統(tǒng)的各子云存儲(chǔ)中分別安裝一個(gè)多副本,可擴(kuò)展的分布式云存儲(chǔ)系統(tǒng)swift,并指定其中的一臺(tái)機(jī)器作為Proxy代理節(jié)點(diǎn),重配置Proxy代理服務(wù),創(chuàng)建賬戶,容器以及對(duì)象,將其配置成三層環(huán)的形式,啟動(dòng)Proxy代理服務(wù);步驟(2. 2),配置各云存儲(chǔ)服務(wù)計(jì)算機(jī),實(shí)現(xiàn)所述三層環(huán)之間的關(guān)聯(lián);步驟(2. 3),啟動(dòng)所述swift系統(tǒng),提供云存儲(chǔ)服務(wù);步驟(3),用戶初始化個(gè)人信息,步驟如下步驟(3. 1),在客戶端用戶通過(guò)調(diào)用所述的服務(wù)器接口向所述服務(wù)器注冊(cè)新用戶;步驟(3. 2),所述服務(wù)器端在確認(rèn)用戶注冊(cè)所用的用戶名與密碼后,向注冊(cè)機(jī)構(gòu)申請(qǐng)一個(gè)由公鑰基礎(chǔ)設(shè)施所授予的X509證書;步驟(3. 3),用戶申請(qǐng)步驟(3. 2)所述的證書后把其中的公鑰保存在所述的服務(wù)器端;步驟(3. 4),所述服務(wù)器端把包括用戶名、密碼的哈希值綁定郵箱在內(nèi)的基本信息保存在數(shù)據(jù)庫(kù)中的users表中,并創(chuàng)建該用戶的服務(wù)器端目錄樹,以文件的形式保存在所述云存儲(chǔ)端;步驟(4),客戶端采用一種目錄樹比對(duì)的方式按以下步驟生成一種在客戶端目錄樹、服務(wù)器端目錄樹和磁盤目錄樹執(zhí)行同步操作用的操作隊(duì)列步驟(4. 1),所述客戶端向所述服務(wù)器端發(fā)送同步請(qǐng)求;步驟(4. 2),所述服務(wù)器端在驗(yàn)證當(dāng)前用戶身份后返回用戶的最近操作列表,其中包括此用戶在該機(jī)器上兩次同步之間的這段時(shí)間里,該用戶在其他機(jī)器上對(duì)目錄或文件所作的刪除、移動(dòng)和重命名操作,其他用戶對(duì)此用戶所共享的目錄進(jìn)行的刪除、移動(dòng)、重命名操作以及當(dāng)前用戶的服務(wù)器端目錄樹;步驟(4. 3),所述用戶逐項(xiàng)執(zhí)行所述服務(wù)器端返回的操作列表,完成文件或目錄的以上三類操作的同步;步驟(4. 4),所述客戶端向服務(wù)器請(qǐng)求共享密鑰,所述服務(wù)器驗(yàn)證身份后根據(jù)訪問(wèn)控制列表中的信息將所有該用戶被授權(quán)的所有文件加密密鑰返回給客戶端;步驟(4. 5),客戶端構(gòu)造初始化目錄樹,步驟如下步驟(4. 5. 1),所述客戶端讀取保存在本地的客戶端目錄樹生成文件,在內(nèi)存中創(chuàng)建該用戶的客戶端目錄樹和組成該客戶端目錄樹的客戶端目錄樹結(jié)點(diǎn)所述客戶端目錄樹是一個(gè)二叉樹結(jié)構(gòu),它的格式包括root、nodes、nodesCount和 maxnodesCount,其中,nodes,以數(shù)組方式記錄了所述客戶端目錄樹的所有結(jié)點(diǎn);nodesCount,記錄了所述客戶端目錄樹中的總結(jié)點(diǎn)數(shù);maxNodesCount,表示所述客戶端目錄樹最多允許包含的結(jié)點(diǎn)數(shù);客戶端目錄樹結(jié)點(diǎn)的格式包括nodeType、name、appendAttribute、IastModiftTime、Ichild 和 rchild,其中
nodeType,記錄所述客戶端目錄樹中的結(jié)點(diǎn)所對(duì)應(yīng)的是目錄還是文件;name,記錄所述客戶端目錄樹中所述目錄或文件的名稱;appendAttribute,對(duì)所述客戶端目錄樹中的目錄而言,記錄的是是否被共享,對(duì)所述客戶端目錄樹中的文件而言,記錄的是最新版本的版本號(hào);Ichild,記錄了在所述客戶端目錄樹中該結(jié)點(diǎn)的左孩子的索引號(hào);rchild,記錄了在所述客戶端目錄樹中該結(jié)點(diǎn)的右孩子的索引號(hào);IastModifytime,記錄所述云存儲(chǔ)環(huán)境下的安全網(wǎng)盤系統(tǒng)CorsBox所維護(hù)的該結(jié)點(diǎn)的最新修改時(shí)間;步驟(4. 5. 2),客戶端計(jì)算機(jī)根據(jù)步驟(4. 5. I)的返回的服務(wù)器端目錄樹在內(nèi)存中創(chuàng)建該用戶的服務(wù)器端目錄樹,用于記錄所述云存儲(chǔ)服務(wù)器中的實(shí)時(shí)數(shù)據(jù)狀 態(tài),用戶服務(wù)器端目錄樹的結(jié)構(gòu)與客戶端目錄樹完全相同,只是nodes數(shù)組中的結(jié)點(diǎn)類型是用戶服務(wù)器端目錄樹結(jié)點(diǎn),用戶服務(wù)器端目錄樹結(jié)點(diǎn)包括nodeType、name、appendAttribute、Ichild 和 rchild,其中nodeType,記錄所述用戶服務(wù)器端目錄樹中的結(jié)點(diǎn)所對(duì)應(yīng)的是目錄或文件;name,記錄所述的目錄或文件的名稱;appendAttribute,對(duì)所述用戶服務(wù)器端目錄樹中的目錄而言,記錄的是是否被共享,對(duì)所述服務(wù)器端目錄樹中的文件而言,記錄的是最新版本的版本號(hào);Ichild,記錄了在所述用戶服務(wù)器端目錄樹中該結(jié)點(diǎn)的左孩子的索引號(hào);rchild,記錄了在所述用戶服務(wù)器端目錄樹中該結(jié)點(diǎn)的右孩子的索引號(hào);步驟(4. 5. 3),所述客戶端計(jì)算機(jī)在每次同步時(shí)掃描磁盤中的所述客戶端目錄樹的目錄及其子目錄,在內(nèi)存中創(chuàng)造磁盤目錄樹記錄用戶的實(shí)時(shí)數(shù)據(jù),用戶的磁盤目錄樹的結(jié)構(gòu)與客戶端目錄樹完全相同,只是nodes數(shù)組中的結(jié)點(diǎn)類型是磁盤目錄樹結(jié)點(diǎn),磁盤目錄樹結(jié)點(diǎn)包括:nodeType、name、IastModifyTime、Ichild 和 rchild,其中nodeType,記錄所述磁盤目錄樹中的結(jié)點(diǎn)所對(duì)應(yīng)的是目錄還是文件;name,記錄所述磁盤目錄樹中所述目錄或文件的名稱;IastModifytime,記錄了在所述客戶端計(jì)算機(jī)中該結(jié)點(diǎn)的最后修改時(shí)間;lchild,記錄了在所述磁盤目錄樹中該結(jié)點(diǎn)的左孩子的索引號(hào);rchild,記錄了在所述磁盤目錄樹中該結(jié)點(diǎn)的右孩子的索引號(hào);步驟(4. 6),客戶端通過(guò)比對(duì)步驟(4. 5)中構(gòu)建的目錄樹,生成待執(zhí)行操作的操作隊(duì)列,具體步驟如下步驟(4. 6. 1),客戶端比對(duì)客戶端目錄樹與磁盤目錄樹,并將比對(duì)結(jié)果保存在集合A中,用來(lái)記錄用戶在此機(jī)器上離線進(jìn)行的操作;步驟(4. 6.2),客戶端比對(duì)客戶端目錄樹與服務(wù)器端目錄樹,并將比對(duì)結(jié)果保存在集合B中,用來(lái)記錄此用戶在此機(jī)器上兩次同步之間其他客戶端進(jìn)行的操作;步驟(4. 6. 3 ),客戶端比對(duì)集合A與集合B中的內(nèi)容,并根據(jù)比對(duì)結(jié)果生成待執(zhí)行的操作隊(duì)列;步驟(4. 7),逐項(xiàng)執(zhí)行步驟(4. 6)中生成的操作隊(duì)列,完成同步操作;步驟(5 ),客戶端修改訪問(wèn)權(quán)限步驟(5. 1),客戶端共享某文件夾客戶端首先檢查待共享文件夾的祖先目錄與子孫目錄是否被共享,若已被共享,則提示用戶此文件夾不能被共享,否則向服務(wù)器發(fā)起共享請(qǐng)求,服務(wù)器收到請(qǐng)求后修改該目錄元數(shù)據(jù)中的共享標(biāo)志位,然后為此文件夾創(chuàng)建新的操作日志,接著刪除該文件夾下所有歷史版本,最后向客戶端返回共享成功的提示;步驟(5. 2),客戶端添加/刪除某用戶的訪問(wèn)權(quán)限只有數(shù)據(jù)的擁有者才能夠修改自己共享文件夾的訪問(wèn)權(quán)限;若是添加權(quán)限,客戶端向服務(wù)器發(fā)起添加權(quán)限請(qǐng)求,服務(wù)器驗(yàn)證用戶身份后將待添加用戶的公鑰返回給客戶端,客戶端用此公鑰加密該文件夾對(duì)應(yīng)的加密密鑰后發(fā)送給服務(wù)器端,服務(wù)器將此密鑰的密文寫入目錄元數(shù)據(jù)中,并在共享表中添加一條共享記錄,最后向客戶端返回添加權(quán)限成功的提示;若為刪除權(quán)限,服務(wù)器端驗(yàn)證用戶身份后將被取消權(quán)限用戶及其密鑰密文從目錄元數(shù)據(jù)中刪除,同時(shí)刪除共享表中對(duì)用的記錄,然后向客戶端返回刪除權(quán)限成功的提示;步驟(5. 3),客戶端查看共享內(nèi)容客戶端查看共享內(nèi)容依次按照以下步驟來(lái)完成 步驟(5. 3. 1),客戶端在啟動(dòng)時(shí)向服務(wù)器發(fā)起查看最新共享請(qǐng)求(可以隨時(shí)手動(dòng)請(qǐng)求);步驟(5. 3. 2),服務(wù)器收到請(qǐng)求后查找共享表,將客戶端未選擇是否接受共享的文件名稱和擁有者ID返回給客戶端,并在共享表中將這些路徑置為已處理;步驟(5. 3. 3),客戶端彈出對(duì)話框請(qǐng)求用戶操作,若用戶選擇接受共享則轉(zhuǎn)步驟(4. 3. 4),否則直接返回;步驟(5. 3. 4),服務(wù)器端將該共享目錄下的所有文件密文和該目錄的元數(shù)據(jù)中對(duì)應(yīng)此用戶的ACL項(xiàng)返回給客戶端;步驟(5. 3. 5),客戶端用自己的私鑰從返回的ACL項(xiàng)解密出該文件夾對(duì)應(yīng)的加密密鑰;步驟(5. 3. 6),客戶端解密出所有文件的明文,然后根據(jù)明文后面附著的哈希值做完整性校驗(yàn);步驟(5. 4),客戶端取消共享只有文件夾的擁有者才能取消共享,服務(wù)器收到驗(yàn)證用戶身份后刪除共享表中所有關(guān)于此文件夾的共享,接著將該文件夾的目錄元數(shù)據(jù)中的共享標(biāo)志位改為非共享并刪除掉所有的ACL項(xiàng),然后向客戶端返回修改成功的提示;客戶端接收到成功提示后修改客戶端目錄樹中該結(jié)點(diǎn)的共享狀態(tài);步驟(6):文件版本控制步驟(6. 1),當(dāng)客戶端上傳文件時(shí),服務(wù)器首先對(duì)該文件的大小進(jìn)行判斷,若是小文件則在文件名末尾添加版本號(hào),并保存在云端;若不是小文件,則直接保存在云端(若已存在則直接覆蓋);步驟(6. 2),客戶端隨時(shí)可以進(jìn)行小文件的歷史版本回滾,服務(wù)器驗(yàn)證用戶身份后返回文件版本列表,用戶可以根據(jù)自己的需要選擇合適的版本進(jìn)行回滾;步驟(7),用戶選擇加密方式客戶端會(huì)在工作目錄下自動(dòng)生成一個(gè)public文件夾,所有保存在此文件夾下的內(nèi)容都是不加密的;另外,用戶在客戶端可以手動(dòng)修改某個(gè)文件夾(非public夾)的密鑰生成方法,但一旦某個(gè)文件夾的密鑰生成方式被指定,其祖先目錄與子孫目錄都不得再被指定密鑰生成規(guī)則;密鑰生成是將用戶的加密密鑰和該文件夾的名稱通過(guò)一定的算法生成的,若非特別指定則默認(rèn)直接使用用戶的文件加密密鑰對(duì)其數(shù)據(jù)進(jìn)行加密。本發(fā)明在清華大學(xué)計(jì)算機(jī)系高性能計(jì)算技術(shù)研究所進(jìn)行過(guò)測(cè)試,測(cè)試結(jié)果表明,這種云存儲(chǔ)環(huán)境下的安全網(wǎng)盤系統(tǒng)可以在云存儲(chǔ)環(huán)境下為用戶提供高效的數(shù)據(jù)同步與文件共享功能的同時(shí),保證了數(shù)據(jù)的機(jī)密性、完整性和訪問(wèn)控制,性能開銷也在用戶可以接受的范圍之內(nèi)。
圖I系統(tǒng)架構(gòu)圖。圖2用戶上傳文件示意圖。
圖3用戶下載文件示意圖。圖4數(shù)據(jù)擁有者添加訪問(wèn)權(quán)限示意圖。
具體實(shí)施例方式本發(fā)明的具體實(shí)施方式
如下>步驟I :系統(tǒng)初始化??蛻舳擞?jì)算機(jī)以下簡(jiǎn)稱客戶端,設(shè)有數(shù)據(jù)加解密模塊,數(shù)據(jù)完整性驗(yàn)證模塊,本地監(jiān)聽模塊,文件夾共享模塊以及協(xié)議通信模塊;服務(wù)器端設(shè)有身份驗(yàn)證模塊,存儲(chǔ)控制模塊,訪問(wèn)控制模塊,版本控制模塊以及目錄元數(shù)據(jù)管理模塊,其中目錄元數(shù)據(jù)管理模塊用于對(duì)目錄元數(shù)據(jù)進(jìn)行查詢,更新在內(nèi)的維護(hù)操作,所述目錄元數(shù)據(jù)包括目錄類型,擁有者用戶名,絕對(duì)路徑,訪問(wèn)控制列表,授權(quán)用戶數(shù)量以及密鑰生成方式,其中訪問(wèn)控制列表包括用戶名和對(duì)應(yīng)的密鑰密文,所述密鑰密文是使用所對(duì)應(yīng)用戶的公鑰加密的,對(duì)應(yīng)用戶可使用自己的私鑰解密;云存儲(chǔ)服務(wù)器以下簡(jiǎn)稱云存儲(chǔ)端,設(shè)有存儲(chǔ)模塊和數(shù)據(jù)可靠模塊,其中存儲(chǔ)模塊設(shè)有一套供所述服務(wù)器端調(diào)用的存儲(chǔ)接口,以便把需要存儲(chǔ)的信息以對(duì)象的形式存放在所述z 存儲(chǔ)端;數(shù)據(jù)可靠性模塊,根據(jù)所述服務(wù)器端的需要,為所有存放在云存儲(chǔ)端的文件創(chuàng)建一定數(shù)量的副本;>步驟2 :為所述云存儲(chǔ)端構(gòu)建并初始化一個(gè)云存儲(chǔ)平臺(tái)。今步驟(2.I):在裝有Linux操作系統(tǒng)的各子云存儲(chǔ)中分別安裝一個(gè)多副本,可擴(kuò)展的分布式云存儲(chǔ)系統(tǒng)swift,并指定其中的一臺(tái)機(jī)器作為Proxy代理節(jié)點(diǎn),重配置Proxy代理服務(wù),創(chuàng)建賬戶,容器以及對(duì)象,將其配置成三層環(huán)的形式,啟動(dòng)Proxy代理服務(wù);令步驟(2.2):配置各云存儲(chǔ)服務(wù)計(jì)算機(jī),實(shí)現(xiàn)所述三層環(huán)之間的關(guān)聯(lián);今步驟(2.3):啟動(dòng)所述swift系統(tǒng),提供云存儲(chǔ)服務(wù);>步驟3 :用戶初始化個(gè)人信息今步驟3.I :用戶在注冊(cè)的同時(shí)申請(qǐng)獲得用戶標(biāo)識(shí)。用戶標(biāo)識(shí)是用戶在系統(tǒng)中唯一的身份標(biāo)識(shí),服務(wù)器是通過(guò)用戶的標(biāo)識(shí)來(lái)確定用戶的身份,判斷其的訪問(wèn)權(quán)限;為了安全有效地識(shí)別系統(tǒng)中主體(包括服務(wù)器和用戶)的身份,以便系統(tǒng)對(duì)進(jìn)行操作的用戶建立起相互之間的信任關(guān)系,系統(tǒng)需要一種獨(dú)立于底層存儲(chǔ)系統(tǒng)的安全的用戶身份標(biāo)識(shí)機(jī)制。在本系統(tǒng)中采用公鑰基礎(chǔ)設(shè)施(PKI, Public Key Infrastructure),通過(guò)數(shù)字證書來(lái)為系統(tǒng)提供用戶標(biāo)識(shí)。數(shù)字證書是由公正、權(quán)威的機(jī)構(gòu)簽發(fā)給主體的電子文檔,該文檔中記錄有主體名稱、證書序號(hào)、簽發(fā)方名稱、證書的有效期、密碼算法標(biāo)識(shí)、公鑰信息和其它信息,并經(jīng)過(guò)簽發(fā)方的數(shù)字簽名公鑰基礎(chǔ)設(shè)施是包括了硬件、軟件、人力、策略和過(guò)程的平臺(tái)或框架,它利用公鑰技術(shù)提供了對(duì)數(shù)字證書進(jìn)行創(chuàng)建、管理、分發(fā)、使用、存儲(chǔ)以及撤銷的功能。證書頒發(fā)機(jī)構(gòu)(CA, Cerfiticate Authority)和注冊(cè)機(jī)構(gòu)(RA, Registration Authority)是公鑰基礎(chǔ)設(shè)施的重要組成部分。前者是公鑰基礎(chǔ)設(shè)施的核心,它是一個(gè)可信的第三方,通過(guò)將用戶的公鑰與用戶的其他信息(包括用戶身份)綁定在一起來(lái)為用戶簽發(fā)數(shù)字證書,并提供證書的查詢、撤銷、生命周期管理以及密鑰管理;后者主要是面向用戶履行證書頒發(fā)機(jī)構(gòu)委派的一些責(zé)任。公鑰基礎(chǔ)設(shè)施是一種成熟的、被廣泛應(yīng)用的技術(shù)體系,具有統(tǒng)一的規(guī)范和標(biāo)準(zhǔn),并有很多較為完備的實(shí)現(xiàn)。利用公鑰基礎(chǔ)設(shè)施為系統(tǒng)提供用戶標(biāo)識(shí),可以將維護(hù)用戶標(biāo)識(shí)唯一性真實(shí)性的工作交給這個(gè)成熟的體系來(lái)完成,同時(shí)使系統(tǒng)用戶在不必了解復(fù)雜管理細(xì)節(jié)的情況下安全高效地驗(yàn)證其他系統(tǒng)主體的身份,實(shí)現(xiàn)用戶之間的相互信任,從而保證用戶信息的真實(shí)性、完整性、機(jī)密性和不可否認(rèn)性; 今步驟3.2:服務(wù)器將用戶的基本信息(包括用戶名、密碼的哈希值、綁定郵箱等)保存至數(shù)據(jù)庫(kù)中的users表中;令步驟3. 3 :客戶端初始化工作目錄,并在工作目錄下生成shares、public以及public/shares三個(gè)文件夾,其中shares文件夾下的內(nèi)容其他用戶的共享內(nèi)容(加密),public夾下的內(nèi)容為自己不加密上傳的文件、public/shares為其他用戶共享的非加密內(nèi)容;今步驟3.4:客戶端為當(dāng)前用戶生成初始的客戶端目錄樹,然后將它持久化到文件中,并在配置文件中標(biāo)明該文件所在的位置;今步驟3.5 :服務(wù)器初始化此用戶的服務(wù)器端目錄樹,然后將它持久化到文件中,并將此文件按照一定的命名規(guī)則保存至云存儲(chǔ)中;>步驟4 :客戶端執(zhí)行同步操作??蛻舳耸褂靡环N基于目錄樹的同步方式,執(zhí)行同步操作生成帶操作列表,然后根據(jù)列表中每個(gè)元素中記錄的待執(zhí)行操作類型逐一執(zhí)行同步操作 若待執(zhí)行操作為用戶上傳文件,用戶則按照如下步驟上傳文件,具體如圖2所示+步驟①客戶端使用某種哈希算法計(jì)算待上傳文件的哈希值;今步驟②客戶端使用相應(yīng)的加密密鑰對(duì)文件和哈希值進(jìn)行加密;
今步驟③客戶端將文件密文和加密后的哈希值拼接成一個(gè)文件,然后向服務(wù)器發(fā)起上傳請(qǐng)求;令步驟④服務(wù)器驗(yàn)證用戶身份后將客戶端上傳的數(shù)據(jù)以最新版本的方式(小文件)存放在云存儲(chǔ)中,并向客戶端返回上傳成功; 若待執(zhí)行操作為用戶下載文件,用戶按照如下步驟下載文件,具體如圖3所示令步驟①用戶向服務(wù)器發(fā)起某個(gè)文件的下載請(qǐng)求;今步驟②服務(wù)器驗(yàn)證用戶身份后將該文件從云存儲(chǔ)中取出并返回給客戶端;
今步驟③客戶端使用相應(yīng)的密鑰對(duì)服務(wù)器返回的文件進(jìn)行解密,然后根據(jù)解密出的文件分離出數(shù)據(jù)文件和哈希值,然后將數(shù)據(jù)文件保存在本地;令步驟④客戶端計(jì)算數(shù)據(jù)文件的哈希值,并將其與下載下來(lái)的哈希值做比對(duì),進(jìn)行數(shù)據(jù)的完整性校驗(yàn); 若待執(zhí)行操作為客戶端沖突處理,則說(shuō)明此文件同時(shí)被多個(gè)客戶端修改,那么客戶端需要對(duì)該文件進(jìn)行沖突處理操作,具體步驟如下 步驟①用戶將本地文件重命名;今步驟②客戶端調(diào)用下載接口下載服務(wù)器端的最新版文件; 步驟③客戶端調(diào)用上傳接口上傳本地重命名后的文件;令步驟④客戶端可以根據(jù)需要選擇刪除或重命名沖突文件;>步驟5 :客戶端修改訪問(wèn)權(quán)限??蛻舳颂砑釉L問(wèn)權(quán)限可以分為以下兩類 用戶添加訪問(wèn)權(quán)限只有數(shù)據(jù)擁有者才能按照如下步驟添加訪問(wèn)權(quán)限,具體如圖4所示令步驟①客戶端向服務(wù)器取得待授權(quán)用戶的公鑰;今步驟②用戶可以選擇是否向證書頒發(fā)機(jī)構(gòu)校驗(yàn)證書的真實(shí)性;今步驟③客戶端使用該公鑰加密自己的文件密鑰;今步驟④客戶端將此文件密鑰上傳至服務(wù)器,服務(wù)器驗(yàn)證權(quán)限后寫入該共享目錄的目錄元數(shù)據(jù),并在共享表中添加共享記錄; 用戶撤銷訪問(wèn)權(quán)限只有數(shù)據(jù)擁有者才能撤銷訪問(wèn)權(quán)限,具體步驟如下 步驟①客戶端向服務(wù)器發(fā)起撤銷請(qǐng)求;令步驟②服務(wù)器驗(yàn)證用戶權(quán)限后刪除該共享目錄對(duì)應(yīng)的目錄元數(shù)據(jù)中的ACL項(xiàng),同時(shí)刪除共享表中的記錄。>步驟6 :文件版本控制今步驟(5.I):當(dāng)客戶端上傳文件時(shí),服務(wù)器首先對(duì)該文件的大小進(jìn)行判斷,若是小文件則在文件名末尾添加版本號(hào),并保存在云端;若不是小文件,則直接保存在云端(若已存在則直接覆蓋);今步驟(5.2):客戶端隨時(shí)可以進(jìn)行小文件的歷史版本回滾,服務(wù)器驗(yàn)證用戶身份后返回文件版本列表,用戶可以根據(jù)自己的需要選擇合適的版本進(jìn)行回滾;>步驟7 :用戶選擇加密方式今客戶端會(huì)在工作目錄下自動(dòng)生成一個(gè)pubI i c文件夾,所有保存在此文件夾下的內(nèi)容都是不加密的;另外,用戶在客戶端可以手動(dòng)修改某個(gè)文件夾(非public夾)的密鑰 生成方法,但一旦某個(gè)文件夾的密鑰生成方式被指定,其祖先目錄與子孫目錄都不得再被指定密鑰生成規(guī)則;密鑰生成是將用戶的加密密鑰和該文件夾的名稱通過(guò)一定的算法生成的,若非特別指定則默認(rèn)直接使用用戶的文件加密密鑰對(duì)其數(shù)據(jù)進(jìn)行加密。本發(fā)明的系統(tǒng)架構(gòu)如圖I所示,發(fā)明的核心是提出了一種云存儲(chǔ)環(huán)境下的安全網(wǎng)盤系統(tǒng),其實(shí)現(xiàn)主要是由以下幾個(gè)部分以及其相應(yīng)的模塊組成 云存儲(chǔ)端云存儲(chǔ)端主要由以下幾個(gè)模塊構(gòu)成I.存儲(chǔ)模塊
本模塊提供了一套存儲(chǔ)接口,由服務(wù)器端調(diào)用這些接口,將需要存儲(chǔ)的信息以對(duì)象的形式存放在云存儲(chǔ)端。2.數(shù)據(jù)可靠性模塊本模塊為所有存放在云端的文件創(chuàng)建了 N個(gè)副本(N由服務(wù)器端根據(jù)需要指定),保證了數(shù)據(jù)的可靠性?;n客戶端客戶端主要由以下幾個(gè)模塊構(gòu)成I.數(shù)據(jù)加解密模塊該模塊承擔(dān)了所有的加解密相關(guān)的密碼學(xué)操作操作,包括使用文件塊密鑰加解密文件塊等,使用公私鑰加解密文件密鑰等。 2.數(shù)據(jù)完整性驗(yàn)證模塊該模塊提供文件塊內(nèi)容完整性驗(yàn)證等操作,以及文件塊內(nèi)容哈希值計(jì)算等操作。3.本地監(jiān)聽模塊本模塊用來(lái)監(jiān)聽用戶對(duì)本地工作目錄內(nèi)進(jìn)行的修改,包括刪除、移動(dòng)與重命名等操作。4.文件夾共享模塊本模塊提供了所有用戶共享文件夾的操作,包括請(qǐng)求文件夾、修改訪問(wèn)權(quán)限和撤銷共享等操作。5.協(xié)議通信模塊本模塊是客戶端最大的一個(gè)模塊,它包含了客戶端所有的涉及到通信的操作,主要有上傳、下載、沖突處理、注冊(cè)新用戶等。 服務(wù)器I.身份認(rèn)證模塊本模塊用來(lái)驗(yàn)證用戶的身份是否跟其在注冊(cè)中心注冊(cè)的相符,以防止網(wǎng)絡(luò)黑手或其他非法人員偽造用戶身份。2.存儲(chǔ)控制模塊本模塊調(diào)用云存儲(chǔ)接口,將用戶的服務(wù)器端目錄樹、目錄元數(shù)據(jù)和數(shù)據(jù)文件保存至云端。3.訪問(wèn)控制模塊根據(jù)用戶權(quán)限對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)權(quán)限的控制,但客戶端并不依賴于服務(wù)器的訪問(wèn)控制,即使服務(wù)器惡意的將數(shù)據(jù)交給非法用戶也無(wú)法讀取到數(shù)據(jù)明文。4.版本控制模塊服務(wù)器對(duì)用戶上傳的小文件進(jìn)行了版本控制,允許用戶將某個(gè)小文件回滾到某個(gè)歷史版本。本模塊包含了所有版本控制相關(guān)的操作。5.目錄元數(shù)據(jù)管理模塊本模塊用來(lái)對(duì)目錄元數(shù)據(jù)進(jìn)行維護(hù),包括查詢、更新等操作。目錄元數(shù)據(jù)在內(nèi)存中的結(jié)構(gòu)如下「n 目: 類型 m-m id I絕對(duì)路徑I i方丨4控-制列I授權(quán)用戶數(shù)I -密鑰中.
表量成方式訪問(wèn)控制列表(ACL)的結(jié)構(gòu)如下
用戶名密鑰密文
用戶名I密鑰密文 用戶名2密鑰密文
…密鑰密文
用戶名n密鑰密文其中每個(gè)用戶對(duì)應(yīng)的密鑰密文都是使用該用戶的公鑰進(jìn)行加密的,用戶可以使用自己的私鑰對(duì)其進(jìn)行解密。系統(tǒng)測(cè)試本發(fā)明在清華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系高性能計(jì)算研究所對(duì)本系統(tǒng)進(jìn)行了測(cè)試,其內(nèi)容包括功能測(cè)試和性能測(cè)試,分別對(duì)系統(tǒng)的安全性和性能進(jìn)行了測(cè)試,測(cè)試結(jié)果表明,本發(fā)明在云存儲(chǔ)共享的信任體系中能夠保證用戶數(shù)據(jù)的安全性,同時(shí)性能開銷在一個(gè)可以接受的范圍。 功能測(cè)試我們使用了十臺(tái)服務(wù)器對(duì)本系統(tǒng)進(jìn)行了功能測(cè)試。其中四臺(tái)服務(wù)器用來(lái)部署云存儲(chǔ)端,三臺(tái)服務(wù)器用來(lái)部署服務(wù)器端,另外三臺(tái)服務(wù)器作為客戶端,分別服務(wù)器并進(jìn)行操作。測(cè)試內(nèi)容與測(cè)試結(jié)果如下表所示
權(quán)利要求
1.一種云存儲(chǔ)環(huán)境下的安全網(wǎng)盤系統(tǒng)的實(shí)現(xiàn)方法其特征在于是在由客戶端計(jì)算機(jī)、月艮務(wù)器以及云存儲(chǔ)服務(wù)器共同組成的云存儲(chǔ)環(huán)境下的安全網(wǎng)盤系統(tǒng)的網(wǎng)絡(luò)中,依次按以下步驟實(shí)現(xiàn)的 步驟(I ),系統(tǒng)初始化; 客戶端計(jì)算機(jī)以下簡(jiǎn)稱客戶端,設(shè)有數(shù)據(jù)加解密模塊,數(shù)據(jù)完整性驗(yàn)證模塊,本地監(jiān)聽模塊,文件夾共享模塊以及協(xié)議通信模塊; 服務(wù)器端設(shè)有身份驗(yàn)證模塊,存儲(chǔ)控制模塊,訪問(wèn)控制模塊,版本控制模塊以及目錄元數(shù)據(jù)管理模塊,其中 目錄元數(shù)據(jù)管理模塊用于對(duì)目錄元數(shù)據(jù)進(jìn)行查詢,更新在內(nèi)的維護(hù)操作,所述目錄元數(shù)據(jù)包括目錄類型,擁有者用戶名,絕對(duì)路徑,訪問(wèn)控制列表,授權(quán)用戶數(shù)量以及密鑰生成方式,其中訪問(wèn)控制列表包括用戶名和對(duì)應(yīng)的密鑰密文,所述密鑰密文是使用所對(duì)應(yīng)用戶的公鑰加密的,對(duì)應(yīng)用戶可使用自己的私鑰解密; 云存儲(chǔ)服務(wù)器以下簡(jiǎn)稱云存儲(chǔ)端,設(shè)有存儲(chǔ)模塊和數(shù)據(jù)可靠模塊,其中 存儲(chǔ)模塊設(shè)有一套供所述服務(wù)器端調(diào)用的存儲(chǔ)接口,以便把需要存儲(chǔ)的信息以對(duì)象的形式存放在所述存儲(chǔ)端; 數(shù)據(jù)可靠性模塊,根據(jù)所述服務(wù)器端的需要,為所有存放在云存儲(chǔ)端的文件創(chuàng)建一定數(shù)量的副本; 步驟(2),為所述云存儲(chǔ)端構(gòu)建并初始化一個(gè)云存儲(chǔ)平臺(tái),步驟如下 步驟(2. 1),在裝有Linux操作系統(tǒng)的各子云存儲(chǔ)中分別安裝一個(gè)多副本,可擴(kuò)展的分布式云存儲(chǔ)系統(tǒng)swift,并指定其中的一臺(tái)機(jī)器作為Proxy代理節(jié)點(diǎn),重配置Proxy代理服務(wù),創(chuàng)建賬戶,容器以及對(duì)象,將其配置成三層環(huán)的形式,啟動(dòng)Proxy代理服務(wù); 步驟(2. 2),配置各云存儲(chǔ)服務(wù)計(jì)算機(jī),實(shí)現(xiàn)所述三層環(huán)之間的關(guān)聯(lián); 步驟(2. 3),啟動(dòng)所述swift系統(tǒng),提供云存儲(chǔ)服務(wù); 步驟(3),用戶初始化個(gè)人信息,步驟如下 步驟(3. I),在客戶端用戶通過(guò)調(diào)用所述的服務(wù)器接口向所述服務(wù)器注冊(cè)新用戶; 步驟(3. 2),所述服務(wù)器端在確認(rèn)用戶注冊(cè)所用的用戶名與密碼后,向注冊(cè)機(jī)構(gòu)申請(qǐng)一個(gè)由公鑰基礎(chǔ)設(shè)施所授予的X509證書; 步驟(3. 3),用戶申請(qǐng)步驟(3. 2)所述的證書后把其中的公鑰保存在所述的服務(wù)器端;步驟(3. 4),所述服務(wù)器端把包括用戶名、密碼的哈希值綁定郵箱在內(nèi)的基本信息保存在數(shù)據(jù)庫(kù)中的users表中,并創(chuàng)建該用戶的服務(wù)器端目錄樹,以文件的形式保存在所述云存儲(chǔ)端; 步驟(4),客戶端采用一種目錄樹比對(duì)的方式按以下步驟生成一種在客戶端目錄樹、月艮務(wù)器端目錄樹和磁盤目錄樹執(zhí)行同步操作用的操作隊(duì)列 步驟(4. 1),所述客戶端向所述服務(wù)器端發(fā)送同步請(qǐng)求; 步驟(4. 2),所述服務(wù)器端在驗(yàn)證當(dāng)前用戶身份后返回用戶的最近操作列表,其中包括此用戶在該機(jī)器上兩次同步之間的這段時(shí)間里,該用戶在其他機(jī)器上對(duì)目錄或文件所作的刪除、移動(dòng)和重命名操作,其他用戶對(duì)此用戶所共享的目錄進(jìn)行的刪除、移動(dòng)、重命名操作以及當(dāng)前用戶的服務(wù)器端目錄樹; 步驟(4. 3),所述用戶逐項(xiàng)執(zhí)行所述服務(wù)器端返回的操作列表,完成文件或目錄的以上三類操作的同步; 步驟(4. 4 ),所述客戶端向服務(wù)器請(qǐng)求共享密鑰,所述服務(wù)器驗(yàn)證身份后根據(jù)訪問(wèn)控制列表中的信息將所有該用戶被授權(quán)的所有文件加密密鑰返回給客戶端; 步驟(4. 5),客戶端構(gòu)造初始化目錄樹,步驟如下 步驟(4. 5. 1),所述客戶端讀取保存在本地的客戶端目錄樹生成文件,在內(nèi)存中創(chuàng)建該用戶的客戶端目錄樹和組成該客戶端目錄樹的客戶端目錄樹結(jié)點(diǎn) 所述客戶端目錄樹是一個(gè)二叉樹結(jié)構(gòu),它的格式包括root、nodes、nodesCount和maxnodesCount,其中, nodes,以數(shù)組方式記錄了所述客戶端目錄樹的所有結(jié)點(diǎn); nodesCount,記錄了所述客戶端目錄樹中的總結(jié)點(diǎn)數(shù); maxNodesCount,表示所述客戶端目錄樹最多允許包含的結(jié)點(diǎn)數(shù); 客戶端目錄樹結(jié)點(diǎn)的格式包括nodeType、name、appendAttribute、IastModifyTime>Ichild 和 rchild,其中 nodeType,記錄所述客戶端目錄樹中的結(jié)點(diǎn)所對(duì)應(yīng)的是目錄還是文件; name,記錄所述客戶端目錄樹中所述目錄或文件的名稱; appendAttribute,對(duì)所述客戶端目錄樹中的目錄而言,記錄的是是否被共享,對(duì)所述客戶端目錄樹中的文件而言,記錄的是最新版本的版本號(hào); Ichild,記錄了在所述客戶端目錄樹中該結(jié)點(diǎn)的左孩子的索引號(hào); rchild,記錄了在所述客戶端目錄樹中該結(jié)點(diǎn)的右孩子的索引號(hào); IastModifytime,記錄所述云存儲(chǔ)環(huán)境下的安全網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)CorsBox所維護(hù)的該結(jié)點(diǎn)的最新修改時(shí)間; 步驟(4. 5. 2),客戶端計(jì)算機(jī)根據(jù)步驟(4. 5. I)的返回的服務(wù)器端目錄樹在內(nèi)存中創(chuàng)建該用戶的服務(wù)器端目錄樹,用于記錄所述云存儲(chǔ)服務(wù)器中的實(shí)時(shí)數(shù)據(jù)狀態(tài),用戶服務(wù)器端目錄樹的結(jié)構(gòu)與客戶端目錄樹完全相同,只是nodes數(shù)組中的結(jié)點(diǎn)類型是用戶服務(wù)器端目錄樹結(jié)點(diǎn),用戶服務(wù)器端目錄樹結(jié)點(diǎn)包括nodeType、name、appendAttribute、Ichild和rchild,其中 nodeType,記錄所述用戶服務(wù)器端目錄樹中的結(jié)點(diǎn)所對(duì)應(yīng)的是目錄或文件; name,記錄所述的目錄或文件的名稱; appendAttribute,對(duì)所述用戶服務(wù)器端目錄樹中的目錄而言,記錄的是是否被共享,對(duì)所述服務(wù)器端目錄樹中的文件而言,記錄的是最新版本的版本號(hào); Ichild,記錄了在所述用戶服務(wù)器端目錄樹中該結(jié)點(diǎn)的左孩子的索引號(hào); rchild,記錄了在所述用戶服務(wù)器端目錄樹中該結(jié)點(diǎn)的右孩子的索引號(hào); 步驟(4. 5. 3),所述客戶端計(jì)算機(jī)在每次同步時(shí)掃描磁盤中的所述客戶端目錄樹的目錄及其子目錄,在內(nèi)存中創(chuàng)造磁盤目錄樹記錄用戶的實(shí)時(shí)數(shù)據(jù),用戶的磁盤目錄樹的結(jié)構(gòu)與客戶端目錄樹完全相同,只是nodes數(shù)組中的結(jié)點(diǎn)類型是磁盤目錄樹結(jié)點(diǎn),磁盤目錄樹結(jié)點(diǎn)包括nodeType> name、IastModifyTime> Ichild 和 rchild,其中 nodeType,記錄所述磁盤目錄樹中的結(jié)點(diǎn)所對(duì)應(yīng)的是目錄還是文件;name,記錄所述磁盤目錄樹中所述目錄或文件的名稱; IastModifytime,記錄了在所述客戶端計(jì)算機(jī)中該結(jié)點(diǎn)的最后修改時(shí)間;Ichild,記錄了在所述磁盤目錄樹中該結(jié)點(diǎn)的左孩子的索引號(hào); rchild,記錄了在所述磁盤目錄樹中該結(jié)點(diǎn)的右孩子的索引號(hào); 步驟(4. 6),客戶端通過(guò)比對(duì)步驟(4. 5)中構(gòu)建的目錄樹,生成待執(zhí)行操作的操作隊(duì)列,具體步驟如下 步驟(4. 6. I),客戶端比對(duì)客戶端目錄樹與磁盤目錄樹,并將比對(duì)結(jié)果保存在集合A中,用來(lái)記錄用戶在此機(jī)器上離線進(jìn)行的操作; 步驟(4. 6. 2 ),客戶端比對(duì)客戶端目錄樹與服務(wù)器端目錄樹,并將比對(duì)結(jié)果保存在集合B中,用來(lái)記錄此用戶在此機(jī)器上兩次同步之間其他客戶端進(jìn)行的操作; 步驟(4. 6. 3),客戶端比對(duì)集合A與集合B中的內(nèi)容,并根據(jù)比對(duì)結(jié)果生成待執(zhí)行的操作隊(duì)列; 步驟(4. 7),逐項(xiàng)執(zhí)行步驟(4. 6)中生成的操作隊(duì)列,完成同步操作; 步驟(5),客戶端修改訪問(wèn)權(quán)限 步驟(5. 1),客戶端共享某文件夾客戶端首先檢查待共享文件夾的祖先目錄與子孫目錄是否被共享,若已被共享,則提示用戶此文件夾不能被共享,否則向服務(wù)器發(fā)起共享請(qǐng)求,服務(wù)器收到請(qǐng)求后修改該目錄元數(shù)據(jù)中的共享標(biāo)志位,然后為此文件夾創(chuàng)建新的操作日志,接著刪除該文件夾下所有歷史版本,最后向客戶端返回共享成功的提示; 步驟(5. 2),客戶端添加/刪除某用戶的訪問(wèn)權(quán)限只有數(shù)據(jù)的擁有者才能夠修改自己共享文件夾的訪問(wèn)權(quán)限;若是添加權(quán)限,客戶端向服務(wù)器發(fā)起添加權(quán)限請(qǐng)求,服務(wù)器驗(yàn)證用戶身份后將待添加用戶的公鑰返回給客戶端,客戶端用此公鑰加密該文件夾對(duì)應(yīng)的加密密鑰后發(fā)送給服務(wù)器端,服務(wù)器將此密鑰的密文寫入目錄元數(shù)據(jù)中,并在共享表中添加一條共享記錄,最后向客戶端返回添加權(quán)限成功的提示; 若為刪除權(quán)限,服務(wù)器端驗(yàn)證用戶身份后將被取消權(quán)限用戶及其密鑰密文從目錄元數(shù)據(jù)中刪除,同時(shí)刪除共享表中對(duì)用的記錄,然后向客戶端返回刪除權(quán)限成功的提示; 步驟(5. 3),客戶端查看共享內(nèi)容客戶端查看共享內(nèi)容依次按照以下步驟來(lái)完成步驟(5. 3. 1),客戶端在啟動(dòng)時(shí)向服務(wù)器發(fā)起查看最新共享請(qǐng)求(可以隨時(shí)手動(dòng)請(qǐng)求);步驟(5. 3. 2),服務(wù)器收到請(qǐng)求后查找共享表,將客戶端未選擇是否接受共享的文件名稱和擁有者ID返回給客戶端,并在共享表中將這些路徑置為已處理; 步驟(5. 3. 3),客戶端彈出對(duì)話框請(qǐng)求用戶操作,若用戶選擇接受共享則轉(zhuǎn)步驟(4. 3. 4),否則直接返回; 步驟(5. 3. 4),服務(wù)器端將該共享目錄下的所有文件密文和該目錄的元數(shù)據(jù)中對(duì)應(yīng)此用戶的ACL項(xiàng)返回給客戶端; 步驟(5. 3. 5),客戶端用自己的私鑰從返回的ACL項(xiàng)解密出該文件夾對(duì)應(yīng)的加密密鑰;步驟(5. 3. 6),客戶端解密出所有文件的明文,然后根據(jù)明文后面附著的哈希值做完整性校驗(yàn); 步驟(5. 4),客戶端取消共享 只有文件夾的擁有者才能取消共享,服務(wù)器收到驗(yàn)證用戶身份后刪除共享表中所有關(guān)于此文件夾的共享,接著將該文件夾的目錄元數(shù)據(jù)中的共享標(biāo)志位改為非共享并刪除掉所有的ACL項(xiàng),然后向客戶端返回修改成功的提示;客戶端接收到成功提示后修改客戶端目錄樹中該結(jié)點(diǎn)的共享狀態(tài);步驟(6):文件版本控制 步驟(6.1),當(dāng)客戶端上傳文件時(shí),服務(wù)器首先對(duì)該文件的大小進(jìn)行判斷,若是小文件則在文件名末尾添加版本號(hào),并保存在云端;若不是小文件,則直接保存在云端(若已存在則直接覆蓋); 步驟(6. 2),客戶端隨時(shí)可以進(jìn)行小文件的歷史版本回滾,服務(wù)器驗(yàn)證用戶身份后返回文件版本列表,用戶可以根據(jù)自己的需要選擇合適的版本進(jìn)行回滾; 步驟(7),用戶選擇加密方式 客戶端會(huì)在工作目錄下自動(dòng)生成一個(gè)public文件夾,所有保存在此文件夾下的內(nèi)容都是不加密的;另外,用戶在客戶端可以手動(dòng)修改某個(gè)文件夾(非public夾)的密鑰生成方法,但一旦某個(gè)文件夾的密鑰生成方式被指定,其祖先目錄與子孫目錄都不得再被指定密鑰生成規(guī)則;密鑰生成是將用戶的加密密鑰和該文件夾的名稱通過(guò)一定的算法生成的,若非特別指定則默認(rèn)直接使用用戶的文件加密密鑰對(duì)其數(shù)據(jù)進(jìn)行加密。
全文摘要
在云存儲(chǔ)環(huán)境下安全網(wǎng)盤系統(tǒng)的實(shí)現(xiàn)方法屬于存儲(chǔ)安全技術(shù)領(lǐng)域,其特征在于在云存儲(chǔ)環(huán)境下的網(wǎng)盤系統(tǒng)的信任體系中,發(fā)明了一種系統(tǒng)架構(gòu),在服務(wù)器中根據(jù)用戶需求建立信任域,然后利用公鑰基礎(chǔ)設(shè)施PKI進(jìn)行身份認(rèn)證,保證了用戶的不可欺騙性和不可抵賴性;利用哈希算法對(duì)文件計(jì)算哈希值,利用密鑰和對(duì)稱加密算法AES算法對(duì)數(shù)據(jù)加密,之后再將文件密文上傳到云存儲(chǔ)區(qū)中的文件服務(wù)器,保證了數(shù)據(jù)的機(jī)密性和完整性;使用基于目錄樹的同步方式,提高了系統(tǒng)的同步效率與機(jī)密性;使用了層級(jí)密鑰管理的方式,在保證數(shù)據(jù)安全性的同時(shí)減少了系統(tǒng)的管理負(fù)擔(dān);提供了版本控制功能,保證了文件版本的連續(xù)性;提供了多種粒度的加密密鑰選擇方式,增加了系統(tǒng)的靈活性。
文檔編號(hào)H04L29/06GK102685148SQ20121017680
公開日2012年9月19日 申請(qǐng)日期2012年5月31日 優(yōu)先權(quán)日2012年5月31日
發(fā)明者傅穎勛, 舒繼武 申請(qǐng)人:清華大學(xué)