天天看點

詳解EFS加密

随着穩定性和可靠性的逐漸提高,Windows 2000/XP已經被越來越多的人使用,很多人還用Windows 2000/XP自帶的EFS加密功能把自己的一些重要資料加密儲存。雖然EFS易用性不錯,不過發生問題後就難解決了,例如不做任何準備就重裝了作業系統,那很可能導緻以前的加密資料無法解密。最近一段時間我們已經可以在越來越多的論壇和新聞討論區中看到網友的求救,都 是類似這樣的問題而導緻重要資料無法打開,損失慘重。為了避免更多人受到損失,這裡我把使用EFS加密的注事項寫出來,希望對大家有所幫助。

  注意,下文中的Windows XP皆指Professional版,Windows XP Home版并不支援EFS加密。

  什麼是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加密的使用者驗證過程是在登入Wind ows時進行的,隻要登入到Windows,就可以打開任何一個被授權的加密檔案。

  如何使用EFS加密

  要使用EFS加密,首先要保證你的作業系統符合要求。目前支援EFS加密的Windows作業系統主要有Windows 2000全部版本和Windows XP Professional。至于還未正式發行的Windows Server 2003和傳聞中的開發代号為Longhorn的新一帶作業系統,目前看來也支援這種加密機制。其次,EFS加密隻對NTFS5分區上的資料有效(注意,這裡我們提到了NTFS5分區,這是指由Windows 2000/XP格式化過的NTFS檔案系統;而由Windows NT4格式化的NTFS檔案系統是NTFS4格式的,雖然同樣是NTFS檔案系統,但它不支援EFS加密),你無法加密儲存在FAT和FAT32分區上的資料。

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

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

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

  這裡還有個竅門,用傳統的方法密檔案,必須打開層層菜單并依次确認,非常麻煩,不過隻要修改一下系統資料庫,就可以給滑鼠的右鍵菜單中增添“加密”和“解密”的選項。

  在運作中輸入“regedit”并回車,打開系統資料庫編輯器,定位到 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion /Explorer/Advanced ,在“編輯”菜單上點選“建立-Dword值”,輸入“EncryptionContextMenu”作為鍵名,并設定鍵值為“1”。現在退出系統資料庫編輯器,打開資料總管,任意選中一個NTFS檔案系統上的檔案或者檔案夾,然後點選滑鼠右鍵,就可以在右鍵菜 單中找到相應的選項,直接點選就可以完成加密解密的操作。

  如果你想設定禁止加密某個檔案夾,可以在這個檔案夾中建立一個名為“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想象成人的指紋,雖然世界上已經有幾十億人(同名同姓的也有很多),可是理論上還沒有哪兩個人的指紋是完全相同的。是以,這具有唯一 性的SID就保證了EFS加密的絕對安全和可靠。因為理論上沒有SID相同的使用者,因而使用者的密鑰也就絕不會相同。在第一次加密資料的時候,作業系統就會根據加密者的SID生成該使用者的密鑰,并把公鑰和私鑰分開儲存起來,供使用者加密和解密資料。

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

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

  舉例來說,公司财務部的一個職工加密了财務資料的報表,某天這位職工辭職了,安全起見你直接删除了這位職工的賬戶。直到有一天需要用到這位職工建立的财務報表時才發現這些報表是被加密的,而使用者賬戶已經删除,這些檔案無法打開了。不過修復代理人的存在就解決 了這些問題。因為被EFS加密過的檔案,除了加密者本人之外還有修復代理人可以打開。

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

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

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

  如果你也和我一樣,由于對EFS加密不了解緻使重要資料丢失,那麼也别氣餒,就當買了個教訓。畢竟通過這事情你還是能學會很多東西的。那就是:備份密鑰!設定有效的修復代理人!

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

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

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

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

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

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

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

  如果你願意,也可以設定其它使用者為修復代理人。需要注意的是,你導入證書所用的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加密過的資料是不是就絕對安全了呢?

  當然不是,安全永遠都是相對的。以被EFS加密過的檔案為例,如果沒有合适的密鑰,雖然無法打開加密檔案,不過仍然可以删除(有些小人确實會這樣想:你竟然敢加密了不讓我看!那好,我就删除了它,咱們都别看)。是以對于重要檔案,最佳的做法是NTFS權限 和EFS加密并用。這樣,如果非法使用者沒有合适的權限,将不能通路受保護的檔案和檔案夾;而即使擁有權限(例如為了非法獲得重要資料而重新安裝作業系統,并以新的管理者身份給自己指派權限),沒有密鑰同樣還是打不開加密資料。

  5, 我隻是用Ghost恢複了一下系統,使用者賬戶和相應的SID都沒有變,怎麼以前的加密檔案也打不開了?

  這也是正常的,因為EFS加密所用到的密鑰并不是在建立使用者的時候生成,而是在你第一次用EFS加密檔案的時候。如果你用Ghost建立系統的鏡像前還沒有加密過任何檔案,那你的系統中就沒有密鑰,而這樣的系統制作的鏡像當然也就不包括密鑰。一旦你加密了 檔案,并用Ghost恢複系統到建立鏡像的狀态,解密檔案所用的密鑰就丢失了。是以這個問題一定需要主意!

  這裡還有個竅門,用傳統的方法加密檔案,必須打開層層菜單并依次确認,非常麻煩,不過隻要修改一下系統資料庫,就可以給滑鼠的右鍵菜單中增添“加密”和“解密”的選項。

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

繼續閱讀