『壹』 什麼是EFS文件
EFS
EFS(Encrypting File System,加密文件系統)是Windows 2000/XP所特有的一個實用功能,對於NTFS卷上的文件和數據,都可以直接加密保存,在很大程度上提高了數據的安全性。
(1)什麼是EFS加密
EFS加密是基於公鑰策略的。在使用EFS加密一個文件或文件夾時,系統首先會生成一個由偽隨機數組成的FEK(File Encryption Key,文件加密鑰匙),然後將利用FEK和數據擴展標准X演算法創建加密後的文件,並把它存儲到硬碟上,同時刪除未加密的原始文件。隨後系統利用你的公鑰加密FEK,並把加密後的FEK存儲在同一個加密文件中。而在訪問被加密的文件時,系統首先利用當前用戶的私鑰解密FEK,然後利用FEK解密出文件。在首次使用EFS時,如果用戶還沒有公鑰/私鑰對(統稱為密鑰),則會首先生成密鑰,然後加密數據。如果你登錄到了域環境中,密鑰的生成依賴於域控制器,否則依賴於本地機器。
EFS加密系統對用戶是透明的。這也就是說,如果你加密了一些數據,那麼你對這些數據的訪問將是完全允許的,並不會受到任何限制。而其他非授權用戶試圖訪問加密過的數據時,就會收到「訪問拒絕」的錯誤提示。EFS加密的用戶驗證過程是在登錄Windows時進行的,只要登錄到Windows,就可以打開任何一個被授權的加密文件。
(2)EFS加密
選中NTFS分區中的一個文件,點擊滑鼠右鍵,選擇「屬性」命令,在出現的對話框中點擊「常規」選項卡,然後點擊「高級」按鈕,在出現的對話框中選中「加密內容以便保護數據」選項,點擊「確定」即可。
此時你可以發現,加密文件名的顏色變成了綠色,當其他用戶登錄系統後打開該文件時,就會出現「拒絕訪問」的提示,這表示EFS加密成功。而如果想取消該文件的加密,只需將「加密內容以便保護數據」選項去除即可
(3)EFS解密
如果其他人想共享經過EFS加密的文件或文件夾,又該怎麼辦呢?由於重裝系統後,SID(安全標示符)的改變會使原來由EFS加密的文件無法打開,所以為了保證別人能共享EFS加密文件或者重裝系統後可以打開EFS加密文件,必須要進行備份證書。
點擊「開始→運行」菜單項,在出現的對話框中輸入「certmgr.msc」,回車後,在出現的「證書」對話框中依次雙擊展開「證書-當前用戶→個人→證書」選項,在右側欄目里會出現以你的用戶名為名稱的證書。選中該證書,點擊滑鼠右鍵,選擇「所有任務→導出」命令,打開「證書導出向導」對話框。
在向導進行過程中,當出現「是否要將私鑰跟證書一起導出」提示時,要選擇「是,導出私鑰」選項,接著會出現向導提示要求密碼的對話框。為了安全起見,可以設置證書的安全密碼。當選擇好保存的文件名及文件路徑後,點擊「完成」按鈕即可順利將證書導出,此時會發現在保存路徑上出現一個以PFX為擴展名的文件。
當其他用戶或重裝系統後欲使用該加密文件時,只需記住證書及密碼,然後在該證書上點擊右鍵,選擇「安裝證書」命令,即可進入「證書導入向導」對話框。按默認狀態點擊「下一步」按鈕,輸入正確的密碼後,即可完成證書的導入,這樣就可順利打開所加密的文件。
『貳』 怎麼打開EFS文件
EFS是Encrypting File System,加密文件系統的縮寫,他可以被應用在windows 2000以上的操作系統且為NTFS5格式的分區上(windows xp home不支持).
EFS 只能對存儲在磁碟上的數據進行加密,是一種安全的本地信息加密服務.EFS使用核心的的文件加密技術在NTFS卷上存儲加密文件.
它可以防止那些未經允許的對敏感數據進行物理訪問的入侵者(偷取筆記本電腦,硬碟等)
EFS是如何工作的
當一個用戶使用EFS去加密文件時,必須存在一個公鑰和一個私鑰,如果用戶沒有,EFS服務自動產生一對。對於初級用戶來說,即使他完全不懂加密,也能加密文件,可以對單個文件進行加密,也可以對一個文件夾進行加密,這樣所有寫入文件夾的文件將自動被加密。
一旦用戶發布命令加密文件或試圖添加一個文件到一個已加密的文件夾中,EFS將進行以下幾步:
第一步:NTFS首先在這個文件所在卷的卷信息目錄下(這個目錄隱藏在根目錄下面)創建一個叫做efs0.log的日誌文件,當拷貝過程中發生錯誤時利用此文件進行恢復。
第二步:然後EFS調用CryptoAPI設備環境.設備環境使用Microsoft Base Cryptographic Provider 1.0 產生密匙,當打開這個設備環境後,EFS產生FEK(File Encryption Key,文件加密密匙).FEK的長度為128位(僅US和Canada),這個文件使用DESX加密演算法進行加密。
第三步: 獲取公有/私有密匙對;如果這個密匙還沒有的話(當EFS第一次被調用時),EFS產生一對新的密匙.EFS使用1024位的RSA演算法去加密FEK.
第四步:EFS為當前用戶創建一個數據解密塊Data Decryptong Field(DDF),在這里存放FEK然後用公有密匙加密FEK.
第五步:如果系統設置了加密的代理,EFS同時會創建一個數據恢復塊Data Recovery Field(DRF),然後把使用恢復代理密匙加密過的FEK放在DRF.每定義一個恢復代理,EFS將會創建一個Data Recovery Agent(DRA).Winxp沒有恢復代理這個功能,所以沒有這一步.,這個區域的目的是為了在用戶解密文件的中可能解密文件不可用。這些用戶叫做恢復代理,恢復代理在EDRP(Encryption Data Recovery Policy,加密數據恢復策略)中定義,它是一個域的安全策略。如果一個域的EDRP沒有設置,本地EDRP被使用。在任一種情況下,在一個加密發生時,EDRP必須存在(因此至少有一個恢復代理被定義)。DRF包含使用RSA加密的FEK和恢復代理的公鑰。如果在EDRP列表中有多個恢復代理,FEK必須用每個恢復代理的公鑰進行加密,因此,必須為個恢復代理創建一個DRF。
第六步:包含加密數據、DDF及所有DRF的加密文件被寫入磁碟。
第七步: 在加密文件所在的文件夾下將會創建一個叫做Efs0.tmp的臨時文件.要加密的內容被拷貝到這個臨時文件,然後原來的文件被加密後的數據覆蓋.在默認的情況下,EFS使用128位的DESX演算法加密文件數據,但是Windows還允許使用更強大的的168位的3DES演算法加密文件,這是FIPS演算法必須打開,因為在默認的情況下它是關閉的.
第八步:在第一步中創建的文本文件和第七步中產生的臨時文件被刪除。
加密過程圖片可參考 http://www.ntfs.com/images/encryption.gif
文件被加密後,只有可以從DDF或是DRF中解密出FEK的用戶才可以訪問文件.這種機制和一般的安全機制不同並意 味著要想訪問文件,除了要有訪問這個文件的權力外還必須擁有被用戶的公有密匙加密過的FEK.只有使用私有密匙解密文件的用戶才可以訪問文件.這樣的話會有一個問題:就是一個可以訪問文件的用戶可把文件加密之後,文件真正的擁有者卻不能訪問文件.解決這個問題的辦法:用戶加密文件的時候只創建一個文件解密塊Data Decryption Field(DDF),但是只後他可以增加附加用戶到密匙隊列.這種情況下,EFS簡單地把FEK用想給其他用戶訪問權的用戶的私有密匙加密.然後用這些用戶的公有密匙加密FEK,新增加的DDF和第一個DDF放在一起(這些新增加的用戶對文件只有訪問的權力).
解密的過程和加密的過程是相反的,參考http://www.ntfs.com/images/decryption.gif
首先,系統檢測用戶是否具有被EFS使用的私有密匙.如果有的話,系統將會在讀取EFS屬性,同時在DDF對列中尋找當前用戶的DDF.如果DDF找到的話,用戶私有密匙將會在那裡解密出FEK.使用解密出來的FEK,EFS去解密加密的文件數據.需要注意的是文件從來不會完全被加密,但是有時候會去加密一些特殊的扇區如果上層模塊要求的話.
EFS組成
EFS由EFS服務、EFS驅動、EFS文件系統運行庫(FSRTL)和Win32 API。EFS服務作為一個標准系統服務運行,它是Windows 2000安全子系統的一部分。它與CryptoAPI介面產生鑰匙、DDF和DRF,EFS驅動就象是NTFS的一部分,它呼叫EFS服務請求鑰匙,DDF和DRF作為需要被創建,一個EFS驅動的組成是EFS FSRTL,它定義了EFS驅動程序能作為NTFS的代表而執行的功能。
EFS和NTFS如何共存
EFS可以被認為除NTFS外的第二層防護,為訪問一個被加密的文件,用戶必須有訪問到文件的NTFS許可權。在相關NTFS許可權的用戶能看到文件夾中的文件,但不能打開文件除非有相應的解密鑰匙。同樣,一個用戶有相應的鑰匙但沒有相應的NTFS許可權也不能訪問到文件。所以一個用戶要能打開加密的文件,同時需要NTFS許可權和解密鑰匙。
然而,NTFS許可權可能被大量的方法穿越,包括口令破解程序、用戶在離開前沒有退出系統或系統內部的NTFSDOS。在NT4.0下,游戲結束了――硬碟上所有的數據都可以訪問了。在Windows 2000下,當一個文件用EFS加密後,一個未授權的用戶,即使訪問到磁碟上的文件,但也不能訪問文件上數據,因為沒有授權用戶的私鑰。
EFS 屬性
當NTFS加密文件的時候,它首先會為文件設置加密標志,然後在存儲DDF和DDR的地方為文件創建一個$EFS屬性.這個屬性的屬性ID=0x100,它可以被加長,佔有0.5k到若干k的大小,這個大小是由DDF和DRF的數量決定的.
http://www.ntfs.com/images/efs_header.gif
下面是一個詳細的EFS屬性的例子.
http://www.raid1.cn/efs/pic/attribute/EFS_example.gif
紫色:EFS屬性大小
天藍色:電腦安全標識符和用戶數字.它指定EFS存儲證書的文件夾.為了得到文件
夾的名字,EFS會做一些轉換.
5A56B378 1C365429 A851FF09 D040000 - 存儲在$EFS中的數據.
78B3565A 2954361C 09FF15A8 000004D0 - 轉換後的結果.
2025018970-693384732-167712168-1232 - 轉換成十進制.
S-1-5-21-2025018970-693384732-167712168-1232 - 加上安全標識符前綴.
得到的文件夾就是:
%UserProfile%\ApplicationData\Microsoft\Crypto\RSA\S-1-5-21-2025018970-693384732167712168-1232\
粉紅色:公有密匙特性
黃色:私有密匙全局唯一標識符(同時被當作容器名字).當EFS從CryptoAPI provider中獲取設備環境的時候使用這個名字.如果$EFS屬性只有一個DDF,容器的名字可以從$efs中計算出來.但是當更多的用戶加入這個文件的時候(就會有更多的DDF和DRF),私有密匙全局唯一標識符並不是保存所有的用戶,其它的必須從基於公有密匙存儲特性的證書中恢復.
紅色:加密提供器的名字(Microsoft Base Cryptographic Provider v.1.0)
綠色:用戶的名稱,DDF和DRF的所有者.
藍色:加密後的FEK.通常FEK是128位的,但是被1024位的RSA密匙加密後,長度變成1024位.