面向容災(zāi)系統(tǒng)的備份數(shù)據(jù)透明加密機(jī)制

在現(xiàn)存的容災(zāi)系統(tǒng)中,對(duì)敏感數(shù)據(jù)的保護(hù)非常的簡(jiǎn)單,更多的是采用額外的加密軟件來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的機(jī)密性保護(hù),加密軟件雖然可以在一定程度上保護(hù)數(shù)據(jù)安全,但應(yīng)用層的加密工具使用起來(lái)極不方便,每次進(jìn)行加密和解密操作都需要用戶的干預(yù),用戶的疏忽就會(huì)造成敏感信息的泄露。而將加密服務(wù)放入文件系統(tǒng)來(lái)實(shí)現(xiàn)是一種新思路,這種方式提高了安全強(qiáng)度和可操作性。基于這種思路,我們借鑒了層疊式文件系統(tǒng)開發(fā)原理,設(shè)計(jì)了一個(gè)面向容災(zāi)的備份數(shù)據(jù)透明加密機(jī)制。

一、現(xiàn)存容災(zāi)系統(tǒng)加密保護(hù)分析

數(shù)據(jù)是信息系統(tǒng)的核心,數(shù)據(jù)的破壞和不可恢復(fù)性將導(dǎo)致整個(gè)容災(zāi)的失敗,數(shù)據(jù)容災(zāi)是整個(gè)容災(zāi)系統(tǒng)的關(guān)鍵所在。因而數(shù)據(jù)存儲(chǔ)系統(tǒng)是搭建容災(zāi)系統(tǒng)的基礎(chǔ)。隨著存儲(chǔ)技術(shù)的發(fā)展,先后出現(xiàn)了直連式附加存儲(chǔ)(Direct Attached Storage.DAS)、網(wǎng)絡(luò)附加存儲(chǔ)(Network Attached Storage.NAS)、存儲(chǔ)區(qū)域網(wǎng)tStorage Area Network.SAN),虛擬存儲(chǔ)等存儲(chǔ)結(jié)構(gòu),基于不同的存儲(chǔ)結(jié)構(gòu)可以實(shí)現(xiàn)不同距離的容災(zāi),但是在這些容災(zāi)系統(tǒng)中,較少考慮到敏感信息的存儲(chǔ)問(wèn)題,造成了一定的安全隱患。華中科技大學(xué)的外存儲(chǔ)系統(tǒng)國(guó)家專業(yè)實(shí)驗(yàn)室提出了一種NAS環(huán)境下的安全堆棧文件系統(tǒng)…,在一定程度上保證了數(shù)據(jù)的安全,但其應(yīng)用局限于NAS環(huán)境,移植性較差。Symantec公司的Backup Exec lld軟件提供了較為完備的容災(zāi)功能,并且也提供了簡(jiǎn)單的數(shù)據(jù)加密保護(hù),但每進(jìn)行一次加密操作都需要用戶的手動(dòng)干預(yù),使用起來(lái)極不方便。

二、面向容災(zāi)的透明加密機(jī)制設(shè)計(jì)

根據(jù)上述分析,我們可以看到目前的容災(zāi)系統(tǒng)還存在以下問(wèn)題:現(xiàn)存的容災(zāi)系統(tǒng)未能對(duì)敏感數(shù)據(jù)提供較好的安全保護(hù),對(duì)備份數(shù)據(jù)的機(jī)密性造成了極大的威脅;通過(guò)配置額外的加密機(jī)制來(lái)保護(hù)數(shù)據(jù),又會(huì)對(duì)系統(tǒng)的性能造成較大的影響。而將這些數(shù)據(jù)處理功能放入文件系統(tǒng)來(lái)實(shí)現(xiàn)既可以提高系統(tǒng)效率又可以增加對(duì)用戶的透明度,這為開發(fā)提供了一種新的思路。

1、文件系統(tǒng)透明加密技術(shù)

根據(jù)實(shí)現(xiàn)方法的不同,文件系統(tǒng)透明加密技術(shù)可分為傳輸加密技術(shù)、基于NFS的磁盤加密技術(shù)和基于層疊文件系統(tǒng)的磁盤加密技術(shù)。

傳輸加密技術(shù)更注敢于文件的分布式共享,它對(duì)數(shù)據(jù)保護(hù)的側(cè)重點(diǎn)在于客戶端到服務(wù)器的通信鏈路,使用的是端到端加密機(jī)制。采用該技術(shù)的典型文件系統(tǒng)有AFS(Andrew FileSystem)和SFS(Self-certifying File System)。由于文件系統(tǒng)是以明文形式存儲(chǔ)敏感數(shù)據(jù)的,只要攻擊者獲得服務(wù)器管理員權(quán)限,就可以隨意地訪問(wèn)敏感數(shù)據(jù)了,并且在每次文件傳輸中,服務(wù)器和客戶端都要對(duì)數(shù)據(jù)進(jìn)行加解密操作和完整性檢查,對(duì)系統(tǒng)的性能有較大的影響。

NFS以目錄掛載的方式實(shí)現(xiàn)遠(yuǎn)程訪問(wèn),客戶端通過(guò)遠(yuǎn)程

過(guò)程淵用<RPCJ來(lái)進(jìn)行通信?;谠摷夹g(shù)的典型代表有CFS(Cryptographic File System)和TCFS(Transparent Cryptogra-phic File System)。在CFS,TCFS中,數(shù)據(jù)以密文的形式存儲(chǔ)在磁教上,有效提高了文件的安全性,但是CFS工作在用戶層,頻繁的上下文切換對(duì)UO效率有很大的影響。而TCFS雖然工作在內(nèi)核層,但它是基于NFS的工作機(jī)制,每次讀寫操作還會(huì)涉及到多次核心層與用戶層之問(wèn)的數(shù)據(jù)交換,所以I/o效率低下仍然難以避免。

層疊文件系統(tǒng)是在現(xiàn)行的文件系統(tǒng)基礎(chǔ)上快速便捷地添加功能層。其執(zhí)行流程如下:文件系統(tǒng)從上層文件系統(tǒng)接收設(shè)備對(duì)象f即數(shù)據(jù)與操作),并執(zhí)行其相關(guān)操作,然后調(diào)用下層文件系統(tǒng)的設(shè)備對(duì)象,因此層疊文件系統(tǒng)的上下層是獨(dú)它的。基于層疊文件系統(tǒng)開發(fā)的加密文件系統(tǒng)運(yùn)行在內(nèi)核層,有效提高了I/0效率,基于該技術(shù)的磁盤加密文件系統(tǒng)的主要代表有NCryptfs。

2、透明加密文件系統(tǒng)體系結(jié)構(gòu)

根據(jù)上述分析可以得出,基于層疊文件系統(tǒng)開發(fā)文件系統(tǒng)擴(kuò)展功能是一種高效、便捷的方式,本文基于這種方法,設(shè)計(jì)了一個(gè)層疊虛擬文件系統(tǒng)來(lái)實(shí)現(xiàn)數(shù)據(jù)容災(zāi)和加密保護(hù),如圖1所示。

面向容災(zāi)的備份數(shù)據(jù)透明加密機(jī)制

虛擬文件系統(tǒng)在原有文件系統(tǒng)的基礎(chǔ)上,添加透明加密層和數(shù)據(jù)容災(zāi)層,各層之闖相互獨(dú)立,每層只集中實(shí)現(xiàn)一種數(shù)據(jù)保護(hù)功能。

透明加密層:對(duì)文件系統(tǒng)驅(qū)動(dòng)層傳來(lái)的數(shù)據(jù)進(jìn)行加密和解密操作。在接收數(shù)據(jù)后,先根據(jù)文件的頭部信息判斷是否需要執(zhí)行加密操作。加密標(biāo)志位為0,則跳過(guò)該層的操作;加密標(biāo)志位為1,則執(zhí)行相關(guān)操作。該層以虛擬磁盤驅(qū)動(dòng)程序的形式實(shí)現(xiàn)。虛擬磁盤驅(qū)動(dòng)程序與一般物理磁融驅(qū)動(dòng)程序的功能基本一致,區(qū)別在于虛擬磁盤驅(qū)動(dòng)程序不直接訪問(wèn)物理磁盤設(shè)備,而是以訪問(wèn)物理磁盤的方式來(lái)訪問(wèn)一個(gè)卷文件,將這個(gè)卷文件虛擬成一個(gè)磁盤。在虛擬磁盤驅(qū)動(dòng)程序中實(shí)現(xiàn)一個(gè)加密和解密模塊,在驅(qū)動(dòng)程序處理I/0請(qǐng)求的過(guò)程中,則用這個(gè)加密和解密模塊對(duì)虛擬磁盤的數(shù)據(jù)流進(jìn)行實(shí)時(shí)的加加密和解密處理。當(dāng)虛擬磁盤驅(qū)動(dòng)程序收到吖數(shù)據(jù)請(qǐng)求的IRP時(shí),就調(diào)用加密模塊對(duì)IRP中的明文文件加密,然后將密文寫到卷文件中;當(dāng)虛擬磁盤驅(qū)動(dòng)程序收到讀數(shù)據(jù)請(qǐng)求的JRP時(shí),先從卷文件中讀出密文,然后調(diào)用解密模塊進(jìn)行解密,再將明文寫到IRP的數(shù)撂區(qū)中返回給應(yīng)用程序。這種在操作系統(tǒng)內(nèi)核模式下進(jìn)行的加解密過(guò)程具柯較高的效率和安全性,而且對(duì)上層的文件系統(tǒng)驅(qū)動(dòng)和應(yīng)用程序部沒有任何影響。

數(shù)據(jù)容災(zāi)層:僅負(fù)責(zé)對(duì)透明加密層傳來(lái)的數(shù)據(jù)進(jìn)行栩應(yīng)的備份、恢復(fù)操作。同樣,在執(zhí)行操作前,也要根據(jù)文件頭部信息進(jìn)行判斷。備份標(biāo)志位為0,則跳過(guò)該層的操作,備份標(biāo)志位為1,則執(zhí)行相關(guān)操作。備份操作通過(guò)時(shí)間或事件觸發(fā)器自動(dòng)執(zhí)行,無(wú)需用戶的任何干顱;并且根據(jù)網(wǎng)絡(luò)空閑判斷,決定備份數(shù)據(jù)是緩存在本地磁盤還足立即傳輸?shù)竭h(yuǎn)程磁盤,從而達(dá)到數(shù)據(jù)自動(dòng)備份的目的。

綜上所述,該虛擬文件系統(tǒng)具有以下優(yōu)點(diǎn):

(1)各層之間相互獨(dú)立,可實(shí)現(xiàn)較為完善的安全功能,層間沒有相互制約。

(2)透明加密層和數(shù)據(jù)容災(zāi)層起到了中間人的角色,它可以為操作系統(tǒng)提供安全和透明的數(shù)據(jù)存儲(chǔ)保護(hù)服務(wù)。

(3)透明加密層和數(shù)據(jù)容災(zāi)層采用了簡(jiǎn)單的頭文件標(biāo)識(shí)判斷,可以靈活地控制對(duì)數(shù)據(jù)文件加密和備份操作的選擇。

三、文件系統(tǒng)中的加密實(shí)現(xiàn)

1、 加密子層內(nèi)部結(jié)構(gòu)

為了適應(yīng)多密級(jí)保護(hù)需求,同時(shí)保證文件系統(tǒng)運(yùn)行效率,根據(jù)用戶對(duì)加密強(qiáng)度的要求,選用不同的加密算法,以達(dá)到加密強(qiáng)度與運(yùn)行效率之問(wèn)的平衡。

透明加密子層內(nèi)部結(jié)構(gòu)如圖2所示,由3個(gè)模塊組成,即信息獲取模塊、算法選擇模塊和執(zhí)行模塊。

面向容災(zāi)的備份數(shù)據(jù)透明加密機(jī)制

信息獲取模塊的住要功能是進(jìn)行加密判斷、緩存加密數(shù)據(jù)以及從元數(shù)據(jù)中提取加密強(qiáng)度標(biāo)識(shí)信息,為算法選擇模塊提供判斷依據(jù),并在算法選擇模塊完成選擇后將緩存的數(shù)據(jù)送往加密執(zhí)行模塊。

算法選擇模塊的t受功能足執(zhí)行加密強(qiáng)度判斷,并將選擇的加密算法標(biāo)識(shí)發(fā)往加密執(zhí)行模塊,以滿足用戶的不同需求。

執(zhí)行模塊是整個(gè)加密子層的核心部分,它根據(jù)信息獲取模塊和算法選擇模塊傳來(lái)的信息,執(zhí)行加密和解密操作,執(zhí)行完畢后,將數(shù)據(jù)送回信息獲取模塊,最后由信息獲取模塊將數(shù)據(jù)送往下一層。

2、內(nèi)核數(shù)據(jù)文件加密

對(duì)于數(shù)據(jù)文件加密,仍然選擇適于大量數(shù)據(jù)加密的分組加密算法,為了便于理解加密子層的體系結(jié)構(gòu),只描述了2個(gè)段具特點(diǎn)的算法:Blowfish和AES。Blowfish算法是中等安全加密等級(jí)、運(yùn)算量較小的一種加密算法,其算法結(jié)構(gòu)簡(jiǎn)單,易于實(shí)現(xiàn),執(zhí)行效率很高。密鑰長(zhǎng)度可以達(dá)到448位,因而完全不必?fù)?dān)心受到窮舉攻擊。AES加密算法的加密解密相似但不對(duì)稱,有較好的數(shù)學(xué)理論作為基礎(chǔ),該加密算法支持長(zhǎng)度為128位、192位和256位的密鑰。在安全性方面還沒有發(fā)現(xiàn)弱密鑰或補(bǔ)密鑰,能有效抵抗目前已知的攻擊算法。相比Blowfish加密算法,AES可以提供更強(qiáng)的加密保護(hù),但其執(zhí)行效率低于Blowfish。加密模式選擇CBC模式,但僅在數(shù)據(jù)塊內(nèi)使用,這樣系統(tǒng)便可以獨(dú)立解密每個(gè)塊,也可以減少數(shù)據(jù)的丟失,如果一個(gè)字節(jié)損壞了,最多影響一個(gè)數(shù)據(jù)塊的數(shù)據(jù)。

接下來(lái)將加密算法應(yīng)用到讀寫vnode操作中。執(zhí)行加密的塊大小是8 192 Byte。當(dāng)請(qǐng)求讀一個(gè)字節(jié)域,計(jì)算出到下一塊邊界的擴(kuò)展字節(jié)域,使用擴(kuò)展域?qū)⒉僮鲬?yīng)用到下層文件系統(tǒng)。操作成功后,請(qǐng)求的精確數(shù)返回給vnode操作的調(diào)用者。寫一個(gè)字節(jié)域比讀要復(fù)雜得多,如圖3所示。一個(gè)字節(jié)依賴于前一個(gè)字節(jié),必須讀取和加密塊的一部分,然后再寫入塊的另一部分。

面向容災(zāi)的備份數(shù)據(jù)透明加密機(jī)制

從9 000 Byte—25 000 Byte寫入文件的工作流程:

假設(shè)V表示虛擬節(jié)點(diǎn)層的字節(jié)流,V'表示透明加密層的字節(jié)流:

(1 )在V上的9 000~25 000域調(diào)用寫操作。

(2)計(jì)算這個(gè)區(qū)域的擴(kuò)展頁(yè)邊界,即8 192-32 767(共3頁(yè))。

(3)根據(jù)V定位V'。

(4)分配3個(gè)空頁(yè)。

(5)從V'讀取字節(jié)8 192~8 999(頁(yè)1),解密他們,將他們放在第一個(gè)分配的頁(yè)中。不需要讀或解密頁(yè)中9 000~16 383的字節(jié),因?yàn)樗麄儗⒈粡?fù)寫。

(6)跳過(guò)寫操作將要復(fù)寫的中間頁(yè)。在這種情況下,不打開文件的頁(yè)2(也是寫請(qǐng)求的第2頁(yè))。

(7)從V'讀取字節(jié)24 576N32 767(24 KB~32 KB)(文件的第3頁(yè)),解密他們,將其放在第3個(gè)分配的頁(yè)中。因?yàn)?4 576 v25 000部分的數(shù)據(jù)發(fā)生了變化,會(huì)對(duì)頁(yè)3中25 000以后的數(shù)據(jù)有影響,這次需要讀取和加密整個(gè)頁(yè)。

(8)將發(fā)送的字節(jié)復(fù)制糾分配的3頁(yè)中9 000 Byte—25 000 Byte域里。

(9)有3個(gè)包含未加密數(shù)據(jù)的有效數(shù)據(jù)頁(yè),執(zhí)行加密操作,這樣整個(gè)寫操作就完成了。

3、密鑰管理方案

加密數(shù)據(jù)的安全性依賴于保護(hù)密鑰使用的策略強(qiáng)健度。其中密鑰撤銷更新機(jī)制對(duì)加密系統(tǒng)的性能會(huì)產(chǎn)生較大的影響,特別是對(duì)于磁盤加密文件系統(tǒng),每進(jìn)行一次密鑰撤銷更新操作,就需要對(duì)受影響的文件塊最新執(zhí)行加密操作以及計(jì)算文件塊的哈希值,同時(shí)文件的擁有者需要對(duì)相關(guān)用戶重新分發(fā)密鑰。

在本文的虛擬文件系統(tǒng)中,就采用了一種懶惰撤銷密鑰更新機(jī)制,密鑰更新后,對(duì)文件的最新加密將推遲到下次對(duì)該文件執(zhí)行寫操作的時(shí)候。在本文沒計(jì)的虛擬文件系統(tǒng)中,將文件按照訪問(wèn)權(quán)限分組,在同一組的文件部具有相同的訪問(wèn)權(quán)限。初始時(shí)刻,同一組的所有文件使用同一個(gè)密鑰進(jìn)行加密,假設(shè)由文件的擁有者負(fù)責(zé)向已認(rèn)證用戶生成和分發(fā)密鑰,因此,在本文的密鑰更新模型中,用戶的擁有者是一個(gè)可信實(shí)體,它管理一個(gè)文件組的密鑰和對(duì)文件組具有訪問(wèn)權(quán)限的用戶。

當(dāng)一個(gè)用戶從一組文件的訪問(wèn)域中撤銷后,文件的擁有者運(yùn)行更新算法,以生成新的狀態(tài)和時(shí)間戳,然后文件擁有者將用戶密鑰分發(fā)給現(xiàn)在有權(quán)訪問(wèn)該文件的所有用戶。當(dāng)一個(gè)用戶要對(duì)該文件執(zhí)行寫操作時(shí),就使用最近的時(shí)間間隔產(chǎn)生的密鑰。而解密文件時(shí),用戶需要知道加密該文件時(shí)使用的密鑰版本。然后從用戶密鑰中提取出適當(dāng)?shù)募用苊荑€。

小知識(shí)之容災(zāi)系統(tǒng)

容災(zāi)系統(tǒng),對(duì)于IT而言,就是為計(jì)算機(jī)信息系統(tǒng)提供的一個(gè)能應(yīng)付各種災(zāi)難的環(huán)境。當(dāng)計(jì)算機(jī)系統(tǒng)在遭受如火災(zāi)、水災(zāi)、地震、戰(zhàn)爭(zhēng)等不可抗拒的自然災(zāi)難以及計(jì)算機(jī)犯罪、計(jì)算機(jī)病毒、掉電、網(wǎng)絡(luò)/通信失敗、硬件/軟件錯(cuò)誤和人為操作錯(cuò)誤等人為災(zāi)難時(shí),容災(zāi)系統(tǒng)將保證用戶數(shù)據(jù)的安全性(數(shù)據(jù)容災(zāi)),甚至,一個(gè)更加完善的容災(zāi)系統(tǒng),還能提供不間斷的應(yīng)用服務(wù)(應(yīng)用容災(zāi))??梢哉f(shuō),容災(zāi)系統(tǒng)是數(shù)據(jù)存儲(chǔ)備份的最高層次。