EFS加密的工作原理

EFS 只能對(duì)存儲(chǔ)在磁盤(pán)上的數(shù)據(jù)進(jìn)行加密,是一種安全的本地信息加密服務(wù).EFS使用核心的的文件加密技術(shù)在NTFS卷上存儲(chǔ)加密文件.EFS是Encrypting File System,加密文件系統(tǒng)的縮寫(xiě),他可以被應(yīng)用在windows 2000以上的操作系統(tǒng)且為NTFS5格式的分區(qū)上(windows xp home不支持),它可以防止那些未經(jīng)允許的對(duì)敏感數(shù)據(jù)進(jìn)行物理訪問(wèn)的入侵者(偷取筆記本電腦,硬盤(pán)等)。

EFS加密的的工作原理

當(dāng)一個(gè)用戶使用EFS去加密文件時(shí),必須存在一個(gè)公鑰和一個(gè)私鑰,如果用戶沒(méi)有,EFS服務(wù)自動(dòng)產(chǎn)生一對(duì)。對(duì)于初級(jí)用戶來(lái)說(shuō),即使他完全不懂加密,也能加密文件,可以對(duì)單個(gè)文件進(jìn)行加密,也可以對(duì)一個(gè)文件夾進(jìn)行加密,這樣所有寫(xiě)入文件夾的文件將自動(dòng)被加密。一旦用戶發(fā)布命令加密文件或試圖添加一個(gè)文件到一個(gè)已加密的文件夾中,EFS將進(jìn)行以下幾步:

第一步:NTFS首先在這個(gè)文件所在卷的卷信息目錄下(這個(gè)目錄隱藏在根目錄下面)創(chuàng)建一個(gè)叫做efs0.log的日志文件,當(dāng)拷貝過(guò)程中發(fā)生錯(cuò)誤時(shí)利用此文件進(jìn)行恢復(fù)。

第二步:然后EFS調(diào)用CryptoAPI設(shè)備環(huán)境.設(shè)備環(huán)境使用Microsoft Base Cryptographic Provider 1.0 產(chǎn)生密匙,當(dāng)打開(kāi)這個(gè)設(shè)備環(huán)境后,EFS產(chǎn)生FEK(File Encryption Key,文件加密密匙).FEK的長(zhǎng)度為128位(僅US和Canada),這個(gè)文件使用DESX加密算法進(jìn)行加密。

第三步: 獲取公有/私有密匙對(duì);如果這個(gè)密匙還沒(méi)有的話(當(dāng)EFS第一次被調(diào)用時(shí)),EFS產(chǎn)生一對(duì)新的密匙.EFS使用1024位的RSA算法去加密FEK.

第四步:EFS為當(dāng)前用戶創(chuàng)建一個(gè)數(shù)據(jù)解密塊Data Decryptong Field(DDF),在這里存放FEK然后用公有密匙加密FEK.

第五步:如果系統(tǒng)設(shè)置了加密的代理,EFS同時(shí)會(huì)創(chuàng)建一個(gè)數(shù)據(jù)恢復(fù)塊Data Recovery Field(DRF),然后把使用恢復(fù)代理密匙加密過(guò)的FEK放在DRF.每定義一個(gè)恢復(fù)代理,EFS將會(huì)創(chuàng)建一個(gè)Data Recovery Agent(DRA).Winxp沒(méi)有恢復(fù)代理這個(gè)功能,所以沒(méi)有這一步.,這個(gè)區(qū)域的目的是為了在用戶解密文件的中可能解密文件不可用。這些用戶叫做恢復(fù)代理,恢復(fù)代理在EDRP(Encryption Data Recovery Policy,加密數(shù)據(jù)恢復(fù)策略)中定義,它是一個(gè)域的安全策略。如果一個(gè)域的EDRP沒(méi)有設(shè)置,本地EDRP被使用。在任一種情況下,在一個(gè)加密發(fā)生時(shí),EDRP必須存在(因此至少有一個(gè)恢復(fù)代理被定義)。DRF包含使用RSA加密的FEK和恢復(fù)代理的公鑰。如果在EDRP列表中有多個(gè)恢復(fù)代理,F(xiàn)EK必須用每個(gè)恢復(fù)代理的公鑰進(jìn)行加密,因此,必須為個(gè)恢復(fù)代理創(chuàng)建一個(gè)DRF。

第六步:包含加密數(shù)據(jù)、DDF及所有DRF的加密文件被寫(xiě)入磁盤(pán)。

第七步: 在加密文件所在的文件夾下將會(huì)創(chuàng)建一個(gè)叫做Efs0.tmp的臨時(shí)文件.要加密的內(nèi)容被拷貝到這個(gè)臨時(shí)文件,然后原來(lái)的文件被加密后的數(shù)據(jù)覆蓋.在默認(rèn)的情況下,EFS使用128位的DESX算法加密文件數(shù)據(jù),但是Windows還允許使用更強(qiáng)大的的168位的3DES算法加密文件,這是FIPS算法必須打開(kāi),因?yàn)樵谀J(rèn)的情況下它是關(guān)閉的.

第八步:在第一步中創(chuàng)建的文本文件和第七步中產(chǎn)生的臨時(shí)文件被刪除。

文件被加密后,只有可以從DDF或是DRF中解密出FEK的用戶才可以訪問(wèn)文件.這種機(jī)制和一般的安全機(jī)制不同并意 味著要想訪問(wèn)文件,除了要有訪問(wèn)這個(gè)文件的權(quán)力外還必須擁有被用戶的公有密匙加密過(guò)的FEK.只有使用私有密匙解密文件的用戶才可以訪問(wèn)文件.這樣的話會(huì)有一個(gè)問(wèn)題:就是一個(gè)可以訪問(wèn)文件的用戶可把文件加密之后,文件真正的擁有者卻不能訪問(wèn)文件.解決這個(gè)問(wèn)題的辦法:用戶加密文件的時(shí)候只創(chuàng)建一個(gè)文件解密塊Data Decryption Field(DDF),但是只后他可以增加附加用戶到密匙隊(duì)列.這種情況下,EFS簡(jiǎn)單地把FEK用想給其他用戶訪問(wèn)權(quán)的用戶的私有密匙加密.然后用這些用戶的公有密匙加密FEK,新增加的DDF和第一個(gè)DDF放在一起(這些新增加的用戶對(duì)文件只有訪問(wèn)的權(quán)力).

 EFS組成

EFS由EFS服務(wù)、EFS驅(qū)動(dòng)、EFS文件系統(tǒng)運(yùn)行庫(kù)(FSRTL)和Win32 API。EFS服務(wù)作為一個(gè)標(biāo)準(zhǔn)系統(tǒng)服務(wù)運(yùn)行,它是Windows 2000安全子系統(tǒng)的一部分。它與CryptoAPI接口產(chǎn)生鑰匙、DDF和DRF,EFS驅(qū)動(dòng)就象是NTFS的一部分,它呼叫EFS服務(wù)請(qǐng)求鑰匙,DDF和DRF作為需要被創(chuàng)建,一個(gè)EFS驅(qū)動(dòng)的組成是EFS FSRTL,它定義了EFS驅(qū)動(dòng)程序能作為NTFS的代表而執(zhí)行的功能。

EFS和NTFS如何共存

EFS可以被認(rèn)為除NTFS外的第二層防護(hù),為訪問(wèn)一個(gè)被加密的文件,用戶必須有訪問(wèn)到文件的NTFS權(quán)限。在相關(guān)NTFS權(quán)限的用戶能看到文件夾中的文件,但不能打開(kāi)文件除非有相應(yīng)的解密鑰匙。同樣,一個(gè)用戶有相應(yīng)的鑰匙但沒(méi)有相應(yīng)的NTFS權(quán)限也不能訪問(wèn)到文件。所以一個(gè)用戶要能打開(kāi)加密的文件,同時(shí)需要NTFS權(quán)限和解密鑰匙。

然而,NTFS權(quán)限可能被大量的方法穿越,包括口令破解程序、用戶在離開(kāi)前沒(méi)有退出系統(tǒng)或系統(tǒng)內(nèi)部的NTFSDOS。在NT4.0下,游戲結(jié)束了――硬盤(pán)上所有的數(shù)據(jù)都可以訪問(wèn)了。在Windows 2000下,當(dāng)一個(gè)文件用EFS加密后,一個(gè)未授權(quán)的用戶,即使訪問(wèn)到磁盤(pán)上的文件,但也不能訪問(wèn)文件上數(shù)據(jù),因?yàn)闆](méi)有授權(quán)用戶的私鑰。

注意事項(xiàng):使用系統(tǒng)自帶的EFS加密的數(shù)據(jù),一定要備份密鑰,否則是無(wú)法解密的哦!