微軟公司為了彌補(bǔ)Windows NT 4.0的種種不足,在即將推出的Windows NT 5.0中,提供了一種基于新一代NTFS:NTFS V5(第5版本)的加密文件系統(tǒng)(Encrypted File System,簡(jiǎn)稱EFS)。
EFS實(shí)現(xiàn)的是一種基于公共密鑰的數(shù)據(jù)加密方式,它利用了Windows NT 5.0中的CryptoAPI結(jié)構(gòu)。對(duì)于需要加密的文件數(shù)據(jù),首先產(chǎn)生一個(gè)文件加密密鑰(File Encrypted Key)簡(jiǎn)稱FEK,然后對(duì)這個(gè)FEK使用一種快速的對(duì)稱加密算法實(shí)現(xiàn)對(duì)文件的加密。文件的FEK是隨機(jī)產(chǎn)生的,每一個(gè)文件的FEK都是唯一的。
我們知道,在公共密鑰機(jī)制中每一個(gè)用戶都有一個(gè)或多個(gè)密鑰對(duì)——公共/私有密鑰對(duì)。這種密鑰對(duì)使用的是非對(duì)稱的加密解密算法,由于這種算法的計(jì)算速度很慢,所以公共/私有密鑰對(duì)往往不是用來(lái)對(duì)文件數(shù)據(jù)進(jìn)行加密,而是對(duì)一些較短的信息如文件的加密密鑰進(jìn)行加密。在EFS系統(tǒng)中就是這樣:FEK用于對(duì)文件直接進(jìn)行快速加密,然后使用用戶的一個(gè)或者多個(gè)公共密鑰來(lái)加密FEK。加密后的FEK與加密文件存儲(chǔ)在一起,變成了文件的一個(gè)特殊屬性,也為文件增加了一個(gè)特殊的EFS屬性字段:DDF(數(shù)據(jù)解密字段:Data Decryption Field)。在解密時(shí),用戶用自己的私有密鑰解密存儲(chǔ)在文件DDF中的FEK,然后再用解密后得到的FEK對(duì)文件數(shù)據(jù)進(jìn)行解密,最后得到文件的明文(即未加密的文件,與密文相對(duì))。
文件的加密可以采用許多對(duì)稱加密算法,最初的EFS使用的是DES加密算法,今后推出的版本將允許使用其它加密算法。
大家知道,公共密鑰機(jī)制中,最重要的是如何存儲(chǔ)用戶的私有密鑰。EFS采用CryptoAPI處理用戶的私有密鑰的存儲(chǔ),這樣用戶可以把自己的私有密鑰存儲(chǔ)于一個(gè)安全設(shè)備上比如smart card。
EFS還支持對(duì)存儲(chǔ)在遠(yuǎn)程文件服務(wù)器上的文件進(jìn)行加密和解密操作。這里需要注意的是,EFS只能對(duì)存儲(chǔ)在硬盤(pán)上的文件進(jìn)行加密解密。對(duì)于在網(wǎng)絡(luò)上傳輸?shù)奈募?shù)據(jù),Windows NT使用的是SSL/PCT等協(xié)議提供的加密服務(wù)。
與其他加密機(jī)制不同,EFS與NTFS V5緊密結(jié)合在一起。當(dāng)生成臨時(shí)文件時(shí),只要臨時(shí)文件還位于NTFS V5分區(qū)中,原有文件的加密狀態(tài)將? 一種屬性拷貝到臨時(shí)文件上,這樣可以防止通過(guò)臨時(shí)文件竊取機(jī)密信息。同時(shí),EFS位于Windows NT的內(nèi)核部分,由于內(nèi)核中的線程使用內(nèi)存中的非分頁(yè)池部分(系統(tǒng)內(nèi)存)來(lái)存儲(chǔ)FEK,而頁(yè)交換文件使用的是內(nèi)存中的分頁(yè)池部分(用戶內(nèi)存),因此他人無(wú)法通過(guò)頁(yè)交換文件來(lái)獲取密鑰,從而加強(qiáng)了系統(tǒng)的安全性。
一個(gè)文件在使用之前不需要手工解密——加密和解密對(duì)用戶是透明的,加密和解密是自動(dòng)地發(fā)生在從硬盤(pán)中讀取數(shù)據(jù)以及向硬盤(pán)中寫(xiě)入數(shù)據(jù)時(shí)。當(dāng)發(fā)生磁盤(pán)I/O時(shí),EFS能夠自動(dòng)地檢測(cè)對(duì)象文件是否為加密過(guò)的文件。如果是加密文件,EFS從系統(tǒng)的密鑰存儲(chǔ)區(qū)得到一個(gè)用戶的私有密鑰。如果訪問(wèn)加密文件的用戶不是原來(lái)對(duì)文件進(jìn)行加密的用戶,他的私有密鑰必然與進(jìn)行加密的用戶是不同的。這樣,用私有密鑰還原出來(lái)的FEK必然是不正確的,這時(shí)得到的是一個(gè)對(duì)文件的拒絕訪問(wèn)信息。所有這一切都不需要用戶的參與,用戶訪問(wèn)一個(gè)經(jīng)過(guò)加密的文件或目錄只可能得到兩個(gè)結(jié)果:允許訪問(wèn)(與其它文件系統(tǒng)中的情況相同)或者拒絕訪問(wèn)。
同時(shí),Windows NT 5.0支持從單一文件到整個(gè)目錄的加密和解密功能。如果對(duì)一個(gè)目錄進(jìn)行加密,目錄中所有的文件(子目錄)都自動(dòng)地進(jìn)行加密。加密的操作也很簡(jiǎn)單,可以通過(guò)Windows NT Explorer來(lái)啟動(dòng)加密解密服務(wù)。同時(shí),對(duì)高級(jí)用戶還提供了基于命令行的和基于管理界面的操作。
EFS提供內(nèi)置的數(shù)據(jù)恢復(fù)支持,而且這是必須的。也就是說(shuō),只有為系統(tǒng)配置了一個(gè)或者多個(gè)恢復(fù)密鑰之后,才能對(duì)文件進(jìn)行加密?;謴?fù)密鑰和其實(shí)也是基于公共密鑰機(jī)制的,它也是一對(duì)密鑰對(duì)。用公共恢復(fù)密鑰來(lái)加密FEK,而用私有恢復(fù)密鑰來(lái)解密FEK。恢復(fù)密鑰對(duì)的作用是在用戶丟失了自己的私有密鑰時(shí),恢復(fù)代理可以用私有恢復(fù)密鑰得到FEK,從而恢復(fù)文件。這就為系統(tǒng)提供了容錯(cuò)的性能。
公共恢復(fù)密鑰作用于FEK之后,被加密的FEK同樣與加密文件存儲(chǔ)在一起,存放的地點(diǎn)也是一個(gè)EFS屬性字段,叫DRF(數(shù)據(jù)恢復(fù)字段)。在EFS系統(tǒng)中,公共恢復(fù)密鑰在任何時(shí)候都必須是有效的,任何一個(gè)文件被用戶加密時(shí),系統(tǒng)也用公共恢復(fù)密鑰來(lái)對(duì)FEK進(jìn)行加密。而私有恢復(fù)密鑰的使用就少多了,只有當(dāng)用戶遺失自己的私有密鑰或者當(dāng)一個(gè)雇員離開(kāi)了公司時(shí),恢復(fù)代理才需要使用私有恢復(fù)密鑰。
需要注意的是:恢復(fù)公共密鑰只能夠作用于隨機(jī)產(chǎn)生的FEK,而不能對(duì)用戶的私有密鑰進(jìn)行加密,這就保證了用戶的私有信息不會(huì)被恢復(fù)或使用私有密鑰來(lái)解密。
下面,讓我們具體地看一看EFS的結(jié)構(gòu),加密的過(guò)程如圖一所示:
圖1
圖中的五角星代表密鑰,用戶的文件明文使用隨機(jī)產(chǎn)生的FEK進(jìn)行加密操作,通過(guò)DES算法得到了文件的密文。而FEK又分別經(jīng)過(guò)了兩個(gè)公共密鑰:用戶的公共密鑰和公共恢復(fù)密鑰的處理,經(jīng)過(guò)RSA算法處理后的加密FEK被分別存放在文件的兩個(gè)屬性字段:DDF和DRF中。圖中只畫(huà)出了一個(gè)用戶和一個(gè)恢復(fù)代理——實(shí)際上可以是一系列的用戶和一系列的恢復(fù)代理,而他們使用互相獨(dú)立的密鑰對(duì)。在EFS的第一個(gè)版本中,只實(shí)現(xiàn)了對(duì)一個(gè)用戶和多個(gè)恢復(fù)代理的支持。圖二顯示了文件解密的過(guò)程:
圖2
在解密的過(guò)程中,用戶的私有密鑰作用于DDF中經(jīng)過(guò)加密的相應(yīng)FEK項(xiàng),用RSA算法得到FEK的明文形式,再用FEK來(lái)對(duì)加密文件進(jìn)行解密。文件解密的過(guò)程是基于讀取的文件塊的,也就是說(shuō)讀取文件時(shí)只解密從磁盤(pán)上讀出的特定數(shù)據(jù)塊,并不需要對(duì)整個(gè)文件進(jìn)行解密,這就大大減少了系統(tǒng)的負(fù)荷。
圖3
圖三顯示了文件的恢復(fù)過(guò)程。這個(gè)過(guò)程與文件解密過(guò)程基本相同,除了使用的是恢復(fù)代理的私有恢復(fù)密鑰,作用的對(duì)象是文件DRF中相應(yīng)的FEK項(xiàng)。
在Windows NT 5.0操作系統(tǒng)中,EFS包含以下組件:
EFS驅(qū)動(dòng)程序:EFS驅(qū)動(dòng)程序是位于NTFS V5之上的一層代碼,它向EFS服務(wù)發(fā)送對(duì)FEK、DDF、DRF以及其它密鑰管理服務(wù)的請(qǐng)求。然后它把得到的信息傳送到EFS文件系統(tǒng)的運(yùn)行時(shí)刻庫(kù)FSRTL,再由FSRTL實(shí)現(xiàn)不同的文件系統(tǒng)操作。
EFS FSRTL:FSRTL實(shí)際上是EFS驅(qū)動(dòng)程序的一個(gè)模塊,由它產(chǎn)生對(duì)NTFS V5分區(qū)的調(diào)用,實(shí)現(xiàn)對(duì)加密文件和目錄的各種操作。雖然EFS驅(qū)動(dòng)程序和FSRTL集成為一個(gè)組件,但它們從不直接進(jìn)行通信,它們相互之間使用NTFS文件控制調(diào)用機(jī)制來(lái)交換消息,這樣就保證了NTFS參與所有的文件操作。
圖4
EFS服務(wù):EFS服務(wù)是Windows NT 安全性子系統(tǒng)的一部分,它利用原有的LPC通信端口來(lái)和EFS驅(qū)動(dòng)程序進(jìn)行通信。在用戶模式下,它提供與CryptoAPI的接口并以此提供FEK,生成DDF和DRF,EFS還提供對(duì)Win32 API的支持
聯(lián)系客服