可信計(jì)算平臺(tái)中文件如何加密

可信計(jì)算平臺(tái)是在計(jì)算和通信系統(tǒng)中廣泛使用基于硬件安全模塊支持下的可信計(jì)算平臺(tái),以提高系統(tǒng)整體的安全性。那么可信計(jì)算平臺(tái)下的文件是如何加密的呢?我們接下來(lái)看看。

一、可信計(jì)算平臺(tái)的文件加密框架

在用戶空間文件系統(tǒng)開(kāi)發(fā)模型FUSE(File system in Userspace)、TPM及其軟件棧TSS(TCG Softvare Stack)的基礎(chǔ)之上,以FTP服務(wù)器作為存儲(chǔ)部件,開(kāi)發(fā)出基于可信計(jì)算平臺(tái)的加密文件系統(tǒng),系統(tǒng)中所有文件經(jīng)過(guò)客戶機(jī)上的TPM進(jìn)行加解密處理,存儲(chǔ)部件不參與任何加解密過(guò)程,從而保證系統(tǒng)的安全性。

系統(tǒng)的總體架構(gòu)如圖1所示,整個(gè)加密文件系統(tǒng)主要由6部分組成:FUSE內(nèi)核模塊、FUSE用戶模塊、TPM、TPM驅(qū)動(dòng)程序、TSS和文件服務(wù)器。其中FUSE內(nèi)核模塊和FUSE用戶模塊是整個(gè)系統(tǒng)的核心,F(xiàn)USE內(nèi)核模塊將虛擬文件系統(tǒng)VFS提交的讀寫請(qǐng)求傳遞給應(yīng)用層的FUSE用戶模塊,由FUSE用戶模塊來(lái)執(zhí)行具體的文件讀寫。FUSE用戶模塊除了執(zhí)行具體的文件讀寫外,還需要根據(jù)加密文件系統(tǒng)的邏輯結(jié)構(gòu)提供對(duì)所有加密文件的加密和解密處理。

可信計(jì)算平臺(tái)中文件如何加密

1、TPM和TSS

TPM是一個(gè)含有密碼運(yùn)算器件和存儲(chǔ)部件的小型嵌入式系統(tǒng)。在用戶初始化TPM時(shí),產(chǎn)生SRK密鑰,保存在TPM內(nèi)部,并通過(guò)該密鑰來(lái)加密保護(hù)所有將來(lái)產(chǎn)生的密鑰以及需要保護(hù)的外部數(shù)據(jù)。敏感的私鑰從來(lái)不會(huì)在硬件之外以明文的形式呈現(xiàn)。通過(guò)使用TPM進(jìn)行加密操作,可以將所加密的數(shù)據(jù)綁定到該TPM所在的平臺(tái)上。通過(guò)對(duì)在BDS里對(duì)TPM的狀態(tài)進(jìn)行配置,可以使得TPM拒絕加密任何信息。

TSS是可信平臺(tái)模塊的支撐軟件,它在TPM之上又?jǐn)U充了TPM的功能,由TSS Device DriverLbIary TSS Core Service和TSS Service PIDvider三層組成。它主要提供了TPM管理、上下文管理、密鑰管理、數(shù)據(jù)加解密、數(shù)據(jù)HASH、策略和屬性管理等功能。

2、FUSE

FUSE是一個(gè)用戶空間文件系統(tǒng)開(kāi)發(fā)模型。通過(guò)提供一個(gè)抽象的接口,使用戶可以復(fù)用已開(kāi)發(fā)的應(yīng)用層代碼來(lái)開(kāi)發(fā)自己的文件系統(tǒng)。FUSE主要由三個(gè)模塊組成:FUSE內(nèi)核模塊、FUSE開(kāi)發(fā)庫(kù)和FUSE用戶模塊,其工作原理如圖2所示。

可信計(jì)算平臺(tái)中文件如何加密

1)應(yīng)用程序通過(guò)系統(tǒng)調(diào)用中的讀寫函數(shù)進(jìn)行I/O調(diào)用。

2)虛擬文件系統(tǒng)VFS根據(jù)文件系統(tǒng)的類型將應(yīng)用程序的讀寫請(qǐng)求轉(zhuǎn)交給FUSE內(nèi)核模塊去執(zhí)行。

3)FUSE內(nèi)核模塊同用戶層開(kāi)發(fā)的USE用戶模塊通過(guò)/dev/fiise虛擬設(shè)備和信號(hào)機(jī)制進(jìn)行通信,具體的文件讀寫和文件系統(tǒng)邏輯處理任務(wù)由FUSE用戶模塊來(lái)完成。

由于在TPM硬件上開(kāi)發(fā)出來(lái)的TSS軟件棧都處在用戶層,而本系統(tǒng)又要使用ⅡM的功能進(jìn)行數(shù)據(jù)的加密保護(hù),從而選擇借助用戶空間文件系統(tǒng)模型進(jìn)行開(kāi)發(fā)。

二、基于HMAC的數(shù)據(jù)檢驗(yàn)

基于密碼學(xué)的數(shù)據(jù)完整性檢驗(yàn)通常有兩種方式:一種是通過(guò)HMAC實(shí)現(xiàn),另一種是通過(guò)公鑰簽名實(shí)現(xiàn)。兩種方式都是公認(rèn)的具有較高安全性的完整性檢驗(yàn)方式。與前一種方式相比,采用后一種方式算法較為簡(jiǎn)單,但公鑰簽名同時(shí)在更大程度上增加了系統(tǒng)讀寫的時(shí)間消耗。綜合考慮系統(tǒng)的性能和用戶量,系統(tǒng)中采用基于HMAC的方式,其算法描述如下:

(1)在文件創(chuàng)建時(shí),由文件owner隨機(jī)產(chǎn)生一個(gè)HMAC密鑰,記為khmacw表示密鑰用于文件HMAC值的計(jì)算和驗(yàn)證,w表示密鑰由具有寫權(quán)限的用戶共享。

(2)當(dāng)需要授權(quán)給用戶A時(shí),如果是寫權(quán)限,則創(chuàng)建者將khmacw共享給A;如果是讀權(quán)限,則創(chuàng)建者根據(jù)khmacw計(jì)算出khmacri并共享給A。ri用來(lái)表示第i個(gè)具有讀權(quán)限的用戶。

(3)khmacri由磁khmacw通過(guò)one - way HASH函數(shù)計(jì)算得出:khmacri。=h(khmacw,i)。

(4)修改文件時(shí),修改者使用khmacw為所有具有寫權(quán)限的用戶計(jì)算文件HMAC檢驗(yàn)碼;使用khmacw為所有具有讀權(quán)限的用戶分別計(jì)算文件HMAC檢驗(yàn)碼。

(5)讀取文件時(shí),讀取者需找到自己的HMAC檢驗(yàn)碼。如果用戶具有寫權(quán)限,那么使用khmacw驗(yàn)證文件完整性;如果用戶僅具有讀權(quán)限,那么使用khmacri驗(yàn)證文件完整性。

綜上所述,修改文件時(shí),用戶必須計(jì)算系統(tǒng)中每個(gè)用戶的文件HMAC檢驗(yàn)碼;讀取文件時(shí),用戶獲取自己的文件檢驗(yàn)碼,并驗(yàn)證文件的完整性。所有具有寫權(quán)限的用戶的HMAC密鑰相同;任何一個(gè)僅具有讀權(quán)限的用戶的HMAC密鑰都不同。具有寫權(quán)限的用戶都有khmacw,所以能計(jì)算每個(gè)具有讀權(quán)限的用戶的HMAC密鑰。由于one - way HASH具有單向性,因此所有僅具有讀權(quán)限的用戶很難由khmacri計(jì)算出khmacw,從而保證了系統(tǒng)的安全性。將每個(gè)文件所對(duì)應(yīng)密鑰的集合稱作該文件的密碼元數(shù)據(jù)。具有寫權(quán)限的用戶利用khmacw冒充創(chuàng)建者對(duì)文件的密碼元數(shù)據(jù)進(jìn)行修改是算法的一個(gè)主要缺陷,在下一節(jié)中將運(yùn)用多層密鑰保護(hù)結(jié)構(gòu),將密碼元數(shù)據(jù)作為密鑰樹(shù)中的一個(gè)節(jié)點(diǎn)進(jìn)行保護(hù),從而來(lái)保證密碼元數(shù)據(jù)的機(jī)密性和完整性。

三、多層密鑰保護(hù)結(jié)構(gòu)與文件加密操作

在可信計(jì)算中,TPM通過(guò)硬件來(lái)保護(hù)根密鑰的安全性,然后采用密鑰樹(shù)的方式從根開(kāi)始層層加密,從而提供對(duì)整個(gè)樹(shù)中節(jié)點(diǎn)的安全保護(hù)。因此將整個(gè)文件系統(tǒng)樹(shù)型結(jié)構(gòu)中的各節(jié)點(diǎn)引入密鑰樹(shù),運(yùn)用TPM密鑰樹(shù)保護(hù)思想能夠?qū)φ麄€(gè)文件系統(tǒng)提供安全保護(hù)。其結(jié)構(gòu)如圖3所示。

可信計(jì)算平臺(tái)中文件如何加密

其基本思想是:

1)每個(gè)TPM中有且僅有一個(gè)存儲(chǔ)根密鑰SRK。SRK作為存儲(chǔ)保護(hù)的根密鑰,與硬件綁定在一起。用戶通過(guò)TPM產(chǎn)生一個(gè)用戶主密鑰UMK,UMK通過(guò)SRK直接進(jìn)行加密保護(hù)或者通過(guò)TPM產(chǎn)生的其他密鑰進(jìn)行加密保護(hù);

2)每個(gè)用戶的UMK都由兩對(duì)非對(duì)稱密鑰組成:一個(gè)用來(lái)加密,將其稱作用戶加密密鑰UEK,另一個(gè)用來(lái)簽名和驗(yàn)證,將其稱作用戶簽名密鑰USKa通過(guò)UEK的公鑰來(lái)加密保護(hù)文件主密鑰IMK,從而使得只有合法的用戶才可以得到IMK的明文。USK用來(lái)保護(hù)加密后的IMK的完整性;

3)每個(gè)IMK都由三類對(duì)稱密鑰組成:第一類密鑰用來(lái)對(duì)文件進(jìn)行加密保護(hù),將其稱作文件加密密鑰FEK;第二類密鑰用來(lái)計(jì)算文件HMAC校驗(yàn)值,由具有寫權(quán)限的用戶擁有,將其稱作文件寫密鑰rwK第三類密鑰用來(lái)對(duì)文件的HMAC進(jìn)行校驗(yàn)。由具有讀權(quán)限的用戶擁有,將其稱作文件讀密鑰FRKo上一章中的khmacw和khmacri分別對(duì)應(yīng)FWK和FRK。

1、創(chuàng)建文件

在系統(tǒng)中創(chuàng)建一個(gè)文件需要經(jīng)過(guò)以下步驟:

(1)在創(chuàng)建文件前,隨機(jī)產(chǎn)生三個(gè)密鑰FEK,F(xiàn)WK和FRK(對(duì)于具有寫權(quán)限的用戶FRK=FVVK)。

(2)同用戶交互,并從ⅡM中加載正確的UEK和USK.UEKH9來(lái)對(duì)(1)中隨機(jī)產(chǎn)生的三個(gè)密鑰進(jìn)行加密保護(hù),將加密結(jié)果稱為該用戶的EKB(加密密鑰塊)。

(3)對(duì)(2)中產(chǎn)生的E髓進(jìn)行HASH。并通過(guò)USK私鑰對(duì)該HASH進(jìn)行簽名,用來(lái)保證數(shù)據(jù)的完整性。

(4)EKB及其HASH簽名組成創(chuàng)建者訪問(wèn)該文件時(shí)需要用到的密碼元數(shù)據(jù),并保存在md-file中。

2、共享文件

假設(shè)Alice是文件的創(chuàng)建者,她要將文件的讀或?qū)憴?quán)限授予Boh需要經(jīng)過(guò)以下步驟:

(1)Alice通過(guò)某種方式得到Bob的UEK公鑰。

(2)Alice讀取該文件的md-file,通過(guò)自己的USK公鑰驗(yàn)證密碼元數(shù)據(jù)的完整性,然后從中獲取自己的密碼元數(shù)據(jù)。

(3)Alice用自己的UEK解密密碼元數(shù)據(jù)后,按照基于HMAC的數(shù)據(jù)檢驗(yàn)算法計(jì)算出Bob的HMAC密鑰FRK和FWK然后Ahce用Bob的UEK公鑰加密FEK,F(xiàn)WK和FRK。對(duì)于讀權(quán)限用戶FWKK無(wú)效。其加密結(jié)果是Bob的EKB。

(4)對(duì)(3)中產(chǎn)生的E髓進(jìn)行HASH。并通過(guò)Alice的USK私鑰對(duì)該HASH進(jìn)行簽名,用來(lái)保證數(shù)據(jù)的完整性。

(5)將EKB及其HASH簽名作為Bob訪問(wèn)該文件時(shí)的密碼元數(shù)據(jù),并增加到md-file中。

四、性能測(cè)試

系統(tǒng)運(yùn)行環(huán)境為Cele衛(wèi)Dn CPU 2 00GHz,256MB內(nèi)存,對(duì)稱密碼學(xué)采用128位密鑰的AES算法,公鑰密碼學(xué)采用1024位密鑰的RSA加密和簽名算法,用戶數(shù)目10個(gè)。實(shí)驗(yàn)數(shù)據(jù)如表1所示。因?yàn)樾枰a(chǎn)生加解密密鑰和HMAC密鑰,同時(shí)還要對(duì)文件數(shù)據(jù)和密碼元數(shù)據(jù)進(jìn)行加密、簽名等操作。因此文件操作要比NFS慢的多,對(duì)于1MB大小的文件,讀操作所花費(fèi)的時(shí)間是NFS的3倍左右,而寫操作所花費(fèi)的時(shí)間是NFS的8倍左右。與SIRUS對(duì)比,TCBFS的讀寫速度慢一些。從表1可以看出,TCBFS創(chuàng)建和共享文件的速度大約為SIRUS的1.4倍,對(duì)1MB文件進(jìn)行寫操作的速度為SIRUS的1.6倍,但由于采用基于HMAC的完整性校驗(yàn)方式,明顯提高了讀操作的速度,兩者基本相同。由于所有RSA密鑰及加解密操作都采用TPM硬件來(lái)完成,而目前的TPM硬件加密解密速度比openssl等軟件要慢,同時(shí)用戶空間文件系統(tǒng)開(kāi)發(fā)模型的使用也增加了系統(tǒng)運(yùn)行的時(shí)間消耗??紤]到上述因素的客觀性,在系統(tǒng)實(shí)現(xiàn)中,對(duì)目錄樹(shù)加密元數(shù)據(jù)和加密文件采用較好的緩存和索引算法來(lái)盡量提高系統(tǒng)的性能。

可信計(jì)算平臺(tái)中文件如何加密

 

可信計(jì)算平臺(tái)的文件加密就是這樣的,有需要的話,您也不妨試試。

小知識(shí)之FUSE

用戶空間文件系統(tǒng)(Filesystem in Userspace),是Linux 中用于掛載某些網(wǎng)絡(luò)空間,如SSH,到本地文件系統(tǒng)的模塊,在SourceForge上可以找到相關(guān)內(nèi)容。