天天看點

EFS加密

     注意,下文中的Windows XP皆指Professional版,Windows XP Home版并不支援EFS加密。 目前支援EFS的作業系統主要有:Windows 2000、Windows XP Professional(不包括Home版),還有Windows Server 2003、2008,Vista,7。

什麼是EFS加密

  EFS(Encrypting File System,加密檔案系統)是Windows 2000/XP所特有的一個實用功能,對于NTFS卷上的檔案和資料,都可以直接被作業系統加密儲存,在很大程度上提高了資料的安全性。

   EFS加密是基于公鑰政策的。在使用EFS加密一個檔案或檔案夾時,系統首先會生成一個由僞随機數組成的FEK (File Encryption Key,檔案加密鑰匙),然後将利用FEK和資料擴充标準X算法建立加密後的檔案,并把它存儲到硬碟上,同時删除未加密的原始檔案。随後系統利用你的公鑰 加密FEK,并把加密後的FEK存儲在同一個加密檔案中。而在通路被加密的檔案時,系統首先利用目前使用者的私鑰解密FEK,然後利用FEK解密出檔案。在 首次使用EFS時,如果使用者還沒有公鑰/私鑰對(統稱為密鑰),則會首先生成密鑰,然後加密資料。如果你登入到了域環境中,密鑰的生成依賴于域控制器,否 則它就依賴于本地機器。

  EFS加密有什麼好處

  首先,EFS加密機制和作業系統緊密結合,是以我們不必為了加密資料安裝額外的軟體,這節約了我們的使用成本。

   其次,EFS加密系統對使用者是透明的。這也就是說,如果你加密了一些資料,那麼你對這些資料的通路将是完全允許的,并不會受到任何限制。而其他非授權用 戶試圖通路加密過的資料時,就會收到“通路拒絕”的錯誤提示。EFS加密的使用者驗證過程是在登入Windows時進行的,隻要登入到Windows,就可 以打開任何一個被授權的加密檔案。

  如何使用EFS加密

  要使用EFS加密,首 先要保證你的作業系統符合要求。 目前支援EFS的作業系統主要有:Windows 2000、Windows XP Professional(不包括Home版),還有Windows Server 2003、2008,Vista,7。其次,EFS加密隻對NTFS5分區上的資料有效(注意, 這裡我們提到了NTFS5分區,這是指由Windows 2000/XP格式化過的NTFS檔案系統;而由Windows NT4格式化的NTFS檔案系統是NTFS4格式的,雖然同樣是NTFS檔案系統,但它不支援EFS加密),你無法加密儲存在FAT和FAT32分區上的數 據。

  對于想加密的檔案或檔案夾,隻需要用滑鼠右鍵點選,然後選擇“屬性”,在正常頁籤下點選“進階”按鈕,之後在彈出的視窗中選中 “加密内容以保護資料”,然後點選确定,等待片刻資料就加密好了。如果你加密的是一個檔案夾,系統還會詢問你,是把這個加密屬性應用到檔案夾上還是檔案夾 以及内部的所有子檔案夾。按照你的實際情況來操作即可。解密資料也是很簡單的,同樣是按照上面的方法,把“加密内容以保護資料”前的鈎消除,然後确定。

EFS加密

  還可以在指令行模式下用“cipher”指令完成對資料的加密和解密操作,至于“cipher”指令更詳細的使用方法則可以通過在指令符後輸入“cipher/?”并回車獲得。

  注意事項: 如果把未加密的檔案複制到具有加密屬性的檔案夾中,這些檔案将會被自動加密。若是将加密資料移出來(前提是使用的賬戶有相應的操作權限),如果移動到NTFS檔案系統上,資料依舊保持加密屬性;如 果移動到FAT分區上,這些資料将會被自動解密。被EFS加密過的資料不能在Windows中直接共享。如果通過網絡傳輸經EFS加密過的資料,這些資料 在網絡上将會以明文的形式傳輸。NTFS檔案系統上儲存的資料還可以被壓縮,不過一個檔案不能同時被壓縮和加密。最後一點,Windows的系統檔案和系統文 件夾無法被加密。

這裡還有個竅門,用傳統的方法加密檔案,必須打開層層菜單并依次确認,非常麻煩,不過隻要修改一下系統資料庫,就可以給滑鼠的右鍵菜單中增添“加密”和“解密”的選項。打開系統資料庫編輯器,定HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion \Explorer\Advanced,在這裡建立一個名為EncryptionContextMenu的DWORD值,并将其數值設定為“1”,這樣用 滑鼠右鍵點選一個檔案或檔案夾的時候,右鍵菜單中就會有加密(如果目标對象尚未被加密)或者解密(如果目标對象已經被加密)選項,隻要選擇相應的選項就可 以直接完成操作。

如果你想設定禁止加密某個檔案夾,可以在這個檔案夾中建立一個名為“Desktop.ini”的檔案,然後用記事本打開,并添加如下内容:

[Encryption]

Disable=1

  之後儲存并關閉這個檔案。這樣,以後要加密這個檔案夾的時候就會收到錯誤資訊,除非這個檔案被删除。

   而如果你想在本機上徹底禁用EFS加密,則可以通過修改系統資料庫實作。在運作中輸入“Regedit”并回車,打開系統資料庫編輯器,定位到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EFS,在“編輯”菜單上點選“建立-Dword值”,輸入“EfsConfiguration”作為鍵名,并設定 鍵值為“1”,這樣本機的EFS加密就被禁用了。而以後如果又想使用時隻需把鍵值改為“0”。

如何保證EFS加密的安全和可靠

       前面我們已經了解到,在EFS加密體系中,資料是靠FEK加密的,而FEK又會跟使用者的公鑰一起加密儲存;解密的時候順序剛好相反,首先用私鑰解密出FEK,然後用FEK解密資料。可見,使用者的密鑰在EFS加密中起了很大作用。

   密鑰又是怎麼來的呢?在Windows 2000/XP中,每一個使用者都有一個SID(Security Identifier,安全标示符)以區分各自的身份,每個人的SID都是不相同的,并且有唯一性。這具有唯一性的SID就保證了EFS加密的絕對安全和可靠。因 為理論上沒有SID相同的使用者,因而使用者的密鑰也就絕不會相同。在第一次加密資料的時候,作業系統就會根據加密者的SID生成該使用者的密鑰,并把公鑰和私 鑰分開儲存起來,供使用者加密和解密資料。

  這一切,都保證了EFS機制的可靠。

  其次,EFS機制在設計的時候就考慮到了多種突發情況的産生,是以在EFS加密系統中,還有修復代理人(Recovery Agent)這一概念。

  對于Windows 2000來說,在單機和工作組環境下,預設的修復代理人是 Administrator ;Windows XP在單機和工作組環境下沒有預設的修復代理人。而在域環境中就完全不同了,所有加入域的Windows 2000/XP計算機,預設的修復代理人全部是域管理者。

  這一切,都保證了被加密資料的安全。

如何避免不慎使用EFS加密帶來的損失

  那就是:備份密鑰(重裝系統-情況1)!設定有效的修復代理人(共享EFS檔案-情況2)!

  對于上面講到的情況1,備份密鑰可以避免這種悲劇的發生。在運作中輸入“certmgr.msc”然後回車,打開證書管理器。密鑰的導出和導入工作都将在這裡進行。

   在你加密過檔案或檔案夾後,打開證書管理器,在“目前使用者”-“個人”-“證書”路徑下,應該可以看見一個以你的使用者名為名稱的證書(如果你還沒有加密 任何資料,這裡是不會有證書的)。右鍵點選這個證書,在“所有任務”中點選“導出”。之後會彈出一個證書導出向導,在向導中有一步會詢問你是否導出私鑰, 在這裡要選擇“導出私鑰”,其它選項按照預設設定,連續點選繼續,最後輸入該使用者的密碼和想要儲存的路徑并确認,導出工作就完成了。導出的證書将是一個 pfx為字尾的檔案。

EFS加密

   重裝作業系統之後找到之前導出的pfx檔案,滑鼠右鍵點選,并選擇“安裝PFX”,之後會出現一個導入向導,按照導入向導的提示完成操作(注意,如果你 之前在導出證書時選擇了用密碼保護證書,那麼在這裡導入這個證書時就需要提供正确的密碼,否則将不能繼續),而之前加密的資料也就全部可以正确打開。

  對于情況2,我們對Windows XP和Windows 2000兩種情況分别加以說明。

  由于Windows XP沒有預設的修復代理人,是以我們加密資料之前最好能先指定一個預設的修復代理人(建議設定Administrator為修復代理人,雖然這個賬戶沒有顯示在歡迎螢幕上,不過确實是存在的)。這樣設定:

   首先要獲得可以導入作為修復代理人的使用者密鑰,如果你想讓Administrator成為修復代理人,首先就要用Administrator賬戶登入系統。 在歡迎螢幕上連續按Ctrl+Alt+Del兩次,打開登入對話框,在使用者名處輸入Administrator,密碼框中輸入你安裝系統時設定的 Administrator密碼,然後登入。首先在硬碟上一個友善的地方建立一個臨時的檔案,檔案類型不限。這裡我們以C槽根目錄下的一個1.txt文本 檔案檔案為例,建立好後在運作中輸入“CMD”然後回車,打開指令提示行視窗,在指令提示符後輸入“cipher /r:c:\1.txt”,回車後系統還會詢問你是否用密碼把證書保護起來,你可以按照你的情況來決定,如果不需要密碼保護就直接按回車。完成後我們能在 C槽的根目錄下找到1.txt.cer和1.txt.pfx兩個檔案(為了顯示的清楚我在檔案夾選項中設定了顯示所有檔案類型的擴充名,這樣我們可以更清 楚地了解到底生成了哪些檔案)。

EFS加密

   之後開始設定修復代理人。對于1.txt.pfx這個檔案,同樣需要用滑鼠右鍵點選,然後按照向導的提示安裝。而1.txt.cer則有些不同,在運作中 輸入“gpedit.msc”并回車,打開組政策編輯器。在“計算機配置-Windows設定-安全設定-公鑰政策-正在加密檔案系統”菜單下,在右側窗 口的空白處點選滑鼠右鍵,并選擇“添加資料修復代理人”,然後會出現“添加故障修復代理人向導”按照這個向導打開1.txt.cer,如果一切無誤就可以看見 圖五的界面,這說明我們已經把本機的Administrator設定為故障修復代理人。

EFS加密

  如果你願意,也可以設定其它使用者為修復代理人。需要注意的是,你導入證書所用的1.txt.pfx和1.txt.cer是用哪個賬戶登入後生成的,那麼導入證書後設定的修復代理人就是這位使用者。

  在設定了有效的修復代理人後,用修復代理人登入系統就可以直接解密檔案。但如果你在設定修復代理人之前就加密過資料,那麼這些資料修復代理人仍然是無法打開的。

  而對于Windows 2000就更加簡單,Windows 2000有修復代理人,是以隻要用修復代理人(預設的就是Administrator)的賬号登入系統,就可以解密檔案。

  如何在本機上共享經EFS加密過的資料

  加密過的檔案隻有加密者本人和修復代理人可以打開,如果你要和本機的其它使用者共享加密檔案又該怎麼辦?這在Windows 2000中是不行的,不過在Windows XP中可以做到。

   選中一個希望共享的加密檔案(注意,隻能是檔案,而不能是檔案夾),在檔案上用滑鼠右鍵點選,并選擇“屬性”,之後在屬性對話框的“正常”頁籤上點選 “進階”按鈕,然後再點選“詳細資訊”,之後你可以看見類似下圖的視窗,在這裡你可以決定誰可以打開這個加密檔案以及察看檔案的修復代理人是具體是誰。

EFS加密

對EFS加密的幾個錯誤認識

  1, 為什麼打開加密過的檔案時沒有需要我輸入密碼?

   這正是EFS加密的一個特性,同時也是EFS加密和作業系統緊密結合的最佳證明。因為跟一般的加密軟體不同,EFS加密不是靠輕按兩下檔案,然後彈出一個對 話框,然後輸入正确的密碼來确認的使用者的;EFS加密的使用者确認工作在登入到Windows時就已經進行了。一旦你用适當的賬戶登入,那你就能打開相應的 任何加密檔案,并不需要提供什麼額外的密碼。

  2, 我的加密檔案已經打不開了,我能夠把NTFS檔案系統轉換成FAT32分區來挽救我的檔案嗎?

   這當然是不可能的了。很多人嘗試過各種方法,例如把NTFS檔案系統轉換成FAT32分區;用NTFS DOS之類的軟體到DOS下去把檔案複制到FAT32分區等,不過這些嘗試都以失敗告終。畢竟EFS是一種加密,而不是一般的什麼權限之類的東西,這些方 法對付EFS加密都是無濟于事。而如果你的密鑰丢失或者沒有做好備份,那麼一旦發生事故所有加密過的資料就都沒救了。

  3, 我加密資料後重裝了作業系統,現在加密資料不能打開了。如果我使用跟前一個系統相同的使用者名和密碼總應該就可以了吧?

   這當然也是不行的,我們在前面已經了解到,跟EFS加密系統密切相關的密鑰是根據每個使用者的SID得來的。盡管你在新的系統中使用了相同的使用者名和密 碼,但是這個使用者的SID已經變了。這個可以了解為兩個同名同姓的人,雖然他們的名字相同,不過指紋絕不可能相同,那麼這種想法對于隻認指紋不認人名的 EFS加密系統當然是無效的。

  4, 被EFS加密過的資料是不是就絕對安全了呢?

繼續閱讀