EFS加密的工作原理

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

EFS加密的的工作原理

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

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

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

第三步: 獲取公有/私有密匙對;如果這個密匙還沒有的話(當EFS第一次被調用時),EFS產(chǎn)生一對新的密匙.EFS使用1024位的RSA算法去加密FEK.

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

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

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

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

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

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

 EFS組成

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

EFS和NTFS如何共存

EFS可以被認為除NTFS外的第二層防護,為訪問一個被加密的文件,用戶必須有訪問到文件的NTFS權限。在相關NTFS權限的用戶能看到文件夾中的文件,但不能打開文件除非有相應的解密鑰匙。同樣,一個用戶有相應的鑰匙但沒有相應的NTFS權限也不能訪問到文件。所以一個用戶要能打開加密的文件,同時需要NTFS權限和解密鑰匙。

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

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