隨著穩(wěn)定性和可靠性的逐步提高,Windows 2000/XP已經(jīng)被越來越多的人使用,很多人還用Windows 2000/XP自帶的EFS加密功能把自己的一些重要數(shù)據(jù)加密保存。雖然EFS易用性不錯,不過發(fā)生問題后就難解決了,例如不做任何準(zhǔn)備就重裝了操作系統(tǒng),那很可能導(dǎo)致以前的加密數(shù)據(jù)無法解密。最近一段時間我們已經(jīng)可以在越來越多的論壇和新聞組中看到網(wǎng)友的求救,都是類似這樣的問題而導(dǎo)致重要數(shù)據(jù)無法打開,損失慘重。為了避免更多人受到損失,這里我把使用EFS加密的注事項寫出來,希望對大家有所幫助。
注意,下文中的Windows XP皆指Professional版,Windows XP Home版并不支持EFS加密。
什么是EFS加密
EFS(Encrypting File System,加密文件系統(tǒng))是Windows 2000/XP所特有的一個實用功能,對于NTFS卷上的文件和數(shù)據(jù),都可以直接被操作系統(tǒng)加密保存,在很大程度上提高了數(shù)據(jù)的安全性。
EFS加密是基于公鑰策略的。在使用EFS加密一個文件或文件夾時,系統(tǒng)首先會生成一個由偽隨機(jī)數(shù)組成的FEK (File Encryption Key,文件加密鑰匙),然后將利用FEK和數(shù)據(jù)擴(kuò)展標(biāo)準(zhǔn)X算法創(chuàng)建加密后的文件,并把它存儲到硬盤上,同時刪除未加密的原始文件。隨后系統(tǒng)利用你的公鑰加密FEK,并把加密后的FEK存儲在同一個加密文件中。而在訪問被加密的文件時,系統(tǒng)首先利用當(dāng)前用戶的私鑰解密FEK,然后利用FEK解密出文件。在首次使用EFS時,如果用戶還沒有公鑰/私鑰對(統(tǒng)稱為密鑰),則會首先生成密鑰,然后加密數(shù)據(jù)。如果你登錄到了域環(huán)境中,密鑰的生成依賴于域控制器,否則它就依賴于本地機(jī)器。
EFS加密有什么好處
首先,EFS加密機(jī)制和操作系統(tǒng)緊密結(jié)合,因此我們不必為了加密數(shù)據(jù)安裝額外的軟件,這節(jié)約了我們的使用成本。
其次,EFS加密系統(tǒng)對用戶是透明的。這也就是說,如果你加密了一些數(shù)據(jù),那么你對這些數(shù)據(jù)的訪問將是完全允許的,并不會受到任何限制。而其他非授權(quán)用戶試圖訪問加密過的數(shù)據(jù)時,就會收到“訪問拒絕”的錯誤提示。EFS加密的用戶驗證過程是在登錄Windows時進(jìn)行的,只要登錄到Windows,就可以打開任何一個被授權(quán)的加密文件。
如何使用EFS加密
要使用EFS加密,首先要保證你的操作系統(tǒng)符合要求。目前支持EFS加密的Windows操作系統(tǒng)主要有Windows 2000全部版本和Windows XP Professional。至于還未正式發(fā)行的Windows Server 2003和傳聞中的開發(fā)代號為Longhorn的新一帶操作系統(tǒng),目前看來也支持這種加密機(jī)制。其次,EFS加密只對NTFS5分區(qū)上的數(shù)據(jù)有效(注意,這里我們提到了NTFS5分區(qū),這是指由Windows 2000/XP格式化過的NTFS分區(qū);而由Windows NT4格式化的NTFS分區(qū)是NTFS4格式的,雖然同樣是NTFS文件系統(tǒng),但它不支持EFS加密),你無法加密保存在FAT和FAT32分區(qū)上的數(shù)據(jù)。
對于想加密的文件或文件夾,只需要用鼠標(biāo)右鍵點擊,然后選擇“屬性”,在常規(guī)選項卡下點擊“高級”按鈕,之后在彈出的窗口中選中“加密內(nèi)容以保護(hù)數(shù)據(jù)”,然后點擊確定,等待片刻數(shù)據(jù)就加密好了。如果你加密的是一個文件夾,系統(tǒng)還會詢問你,是把這個加密屬性應(yīng)用到文件夾上還是文件夾以及內(nèi)部的所有子文件夾。按照你的實際情況來操作即可。解密數(shù)據(jù)也是很簡單的,同樣是按照上面的方法,把“加密內(nèi)容以保護(hù)數(shù)據(jù)”前的鉤消除,然后確定。

如果你不喜歡圖形界面的操作,還可以在命令行模式下用“cipher”命令完成對數(shù)據(jù)的加密和解密操作,至于“cipher”命令更詳細(xì)的使用方法則可以通過在命令符后輸入“cipher/?”并回車獲得。
注意事項:如果把未加密的文件復(fù)制到具有加密屬性的文件夾中,這些文件將會被自動加密。若是將加密數(shù)據(jù)移出來,如果移動到NTFS分區(qū)上,數(shù)據(jù)依舊保持加密屬性;如果移動到FAT分區(qū)上,這些數(shù)據(jù)將會被自動解密。被EFS加密過的數(shù)據(jù)不能在Windows中直接共享。如果通過網(wǎng)絡(luò)傳輸經(jīng)EFS加密過的數(shù)據(jù),這些數(shù)據(jù)在網(wǎng)絡(luò)上將會以明文的形式傳輸。NTFS分區(qū)上保存的數(shù)據(jù)還可以被壓縮,不過一個文件不能同時被壓縮和加密。最后一點,Windows的系統(tǒng)文件和系統(tǒng)文件夾無法被加密。
這里還有個竅門,用傳統(tǒng)的方法加密文件,必須打開層層菜單并依次確認(rèn),非常麻煩,不過只要修改一下注冊表,就可以給鼠標(biāo)的右鍵菜單中增添“加密”和“解密”的選項。
在運行中輸入“regedit”并回車,打開注冊表編輯器,定位到HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion /Explorer/Advanced ,在“編輯”菜單上點擊“新建-Dword值”,輸入“EncryptionContextMenu”作為鍵名,并設(shè)置鍵值為“1”?,F(xiàn)在退出注冊表編輯器,打開資源管理器,任意選中一個NTFS分區(qū)上的文件或者文件夾,然后點擊鼠標(biāo)右鍵,就可以在右鍵菜單中找到相應(yīng)的選項,直接點擊就可以完成加密解密的操作。
如果你想設(shè)置禁止加密某個文件夾,可以在這個文件夾中創(chuàng)建一個名為“Desktop.ini”的文件,然后用記事本打開,并添加如下內(nèi)容:
[Encryption]
Disable=1
之后保存并關(guān)閉這個文件。這樣,以后要加密這個文件夾的時候就會收到錯誤信息,除非這個文件被刪除。
而如果你想在本機(jī)上徹底禁用EFS加密,則可以通過修改注冊表實現(xiàn)。在運行中輸入“Regedit”并回車,打開注冊表編輯器,定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EFS,在“編輯”菜單上點擊“新建-Dword值”,輸入“EfsConfiguration”作為鍵名,并設(shè)置鍵值為“1”,這樣本機(jī)的EFS加密就被禁用了。而以后如果又想使用時只需把鍵值改為“0”。
如何保證EFS加密的安全和可靠
前面我們已經(jīng)了解到,在EFS加密體系中,數(shù)據(jù)是靠FEK加密的,而FEK又會跟用戶的公鑰一起加密保存;解密的時候順序剛好相反,首先用私鑰解密出FEK,然后用FEK解密數(shù)據(jù)??梢?,用戶的密鑰在EFS加密中起了很大作用。
密鑰又是怎么來的呢?在Windows 2000/XP中,每一個用戶都有一個SID(Security Identifier,安全標(biāo)示符)以區(qū)分各自的身份,每個人的SID都是不相同的,并且有唯一性??梢赃@樣理解:把SID想象成人的指紋,雖然世界上已經(jīng)有幾十億人(同名同姓的也有很多),可是理論上還沒有哪兩個人的指紋是完全相同的。因此,這具有唯一性的SID就保證了EFS加密的絕對安全和可靠。因為理論上沒有SID相同的用戶,因而用戶的密鑰也就絕不會相同。在第一次加密數(shù)據(jù)的時候,操作系統(tǒng)就會根據(jù)加密者的SID生成該用戶的密鑰,并把公鑰和私鑰分開保存起來,供用戶加密和解密數(shù)據(jù)。
這一切,都保證了EFS機(jī)制的可靠。
其次,EFS機(jī)制在設(shè)計的時候就考慮到了多種突發(fā)情況的產(chǎn)生,因此在EFS加密系統(tǒng)中,還有恢復(fù)代理(Recovery Agent)這一概念。
舉例來說,公司財務(wù)部的一個職工加密了財務(wù)數(shù)據(jù)的報表,某天這位職工辭職了,安全起見你直接刪除了這位職工的賬戶。直到有一天需要用到這位職工創(chuàng)建的財務(wù)報表時才發(fā)現(xiàn)這些報表是被加密的,而用戶賬戶已經(jīng)刪除,這些文件無法打開了。不過恢復(fù)代理的存在就解決了這些問題。因為被EFS加密過的文件,除了加密者本人之外還有恢復(fù)代理可以打開。
對于Windows 2000來說,在單機(jī)和工作組環(huán)境下,默認(rèn)的恢復(fù)代理是 Administrator ;Windows XP在單機(jī)和工作組環(huán)境下沒有默認(rèn)的恢復(fù)代理。而在域環(huán)境中就完全不同了,所有加入域的Windows 2000/XP計算機(jī),默認(rèn)的恢復(fù)代理全部是域管理員。
這一切,都保證了被加密數(shù)據(jù)的安全。
如何避免不慎使用EFS加密帶來的損失
如果你也和我一樣,由于對EFS加密不了解致使重要數(shù)據(jù)丟失,那么也別氣餒,就當(dāng)買了個教訓(xùn)。畢竟通過這事情你還是能學(xué)會很多東西的。那就是:備份密鑰!設(shè)置有效的恢復(fù)代理!
對于上面講到的情況1,備份密鑰可以避免這種悲劇的發(fā)生。在運行中輸入“certmgr.msc”然后回車,打開證書管理器。密鑰的導(dǎo)出和導(dǎo)入工作都將在這里進(jìn)行。
在你加密過文件或文件夾后,打開證書管理器,在“當(dāng)前用戶”-“個人”-“證書”路徑下,應(yīng)該可以看見一個以你的用戶名為名稱的證書(如果你還沒有加密任何數(shù)據(jù),這里是不會有證書的)。右鍵點擊這個證書,在“所有任務(wù)”中點擊“導(dǎo)出”。之后會彈出一個證書導(dǎo)出向?qū)В谙驅(qū)е杏幸徊綍儐柲闶欠駥?dǎo)出私鑰,在這里要選擇“導(dǎo)出私鑰”,其它選項按照默認(rèn)設(shè)置,連續(xù)點擊繼續(xù),最后輸入該用戶的密碼和想要保存的路徑并確認(rèn),導(dǎo)出工作就完成了。導(dǎo)出的證書將是一個pfx為后綴的文件。

重裝操作系統(tǒng)之后找到之前導(dǎo)出的pfx文件,鼠標(biāo)右鍵點擊,并選擇“安裝PFX”,之后會出現(xiàn)一個導(dǎo)入向?qū)В凑諏?dǎo)入向?qū)У奶崾就瓿刹僮鳎ㄗ⒁?,如果你之前在?dǎo)出證書時選擇了用密碼保護(hù)證書,那么在這里導(dǎo)入這個證書時就需要提供正確的密碼,否則將不能繼續(xù)),而之前加密的數(shù)據(jù)也就全部可以正確打開。
對于情況2,我們對Windows XP和Windows 2000兩種情況分別加以說明。
由于Windows XP沒有默認(rèn)的恢復(fù)代理,因此我們加密數(shù)據(jù)之前最好能先指定一個默認(rèn)的恢復(fù)代理(建議設(shè)置Administrator為恢復(fù)代理,雖然這個賬戶沒有顯示在歡迎屏幕上,不過確實是存在的)。這樣設(shè)置:
首先要獲得可以導(dǎo)入作為恢復(fù)代理的用戶密鑰,如果你想讓Administrator成為恢復(fù)代理,首先就要用Administrator賬戶登錄系統(tǒng)。在歡迎屏幕上連續(xù)按Ctrl+Alt+Del兩次,打開登錄對話框,在用戶名處輸入Administrator,密碼框中輸入你安裝系統(tǒng)時設(shè)置的Administrator密碼,然后登錄。首先在硬盤上一個方便的地方建立一個臨時的文件,文件類型不限。這里我們以C盤根目錄下的一個1.txt文本文件文件為例,建立好后在運行中輸入“CMD”然后回車,打開命令提示行窗口,在命令提示符后輸入“cipher /r:c:\1.txt”,回車后系統(tǒng)還會詢問你是否用密碼把證書保護(hù)起來,你可以按照你的情況來決定,如果不需要密碼保護(hù)就直接按回車。完成后我們能在C盤的根目錄下找到1.txt.cer和1.txt.pfx兩個文件(為了顯示的清楚我在文件夾選項中設(shè)置了顯示所有文件類型的擴(kuò)展名,這樣我們可以更清楚地了解到底生成了哪些文件)。

之后開始設(shè)置恢復(fù)代理。對于1.txt.pfx這個文件,同樣需要用鼠標(biāo)右鍵點擊,然后按照向?qū)У奶崾景惭b。而1.txt.cer則有些不同,在運行中輸入“gpedit.msc”并回車,打開組策略編輯器。在“計算機(jī)配置-Windows設(shè)置-安全設(shè)置-公鑰策略-正在加密文件系統(tǒng)”菜單下,在右側(cè)窗口的空白處點擊鼠標(biāo)右鍵,并選擇“添加數(shù)據(jù)恢復(fù)代理”,然后會出現(xiàn)“添加故障恢復(fù)代理向?qū)?#8221;按照這個向?qū)Т蜷_1.txt.cer,如果一切無誤就可以看見圖五的界面,這說明我們已經(jīng)把本機(jī)的Administrator設(shè)置為故障恢復(fù)代理。

如果你愿意,也可以設(shè)置其它用戶為恢復(fù)代理。需要注意的是,你導(dǎo)入證書所用的1.txt.pfx和1.txt.cer是用哪個賬戶登錄后生成的,那么導(dǎo)入證書后設(shè)置的恢復(fù)代理就是這位用戶。
在設(shè)置了有效的恢復(fù)代理后,用恢復(fù)代理登錄系統(tǒng)就可以直接解密文件。但如果你在設(shè)置恢復(fù)代理之前就加密過數(shù)據(jù),那么這些數(shù)據(jù)恢復(fù)代理仍然是無法打開的。
而對于Windows 2000就更加簡單,Windows 2000有恢復(fù)代理,因此只要用恢復(fù)代理(默認(rèn)的就是Administrator)的賬號登錄系統(tǒng),就可以解密文件。
如何在本機(jī)上共享經(jīng)EFS加密過的數(shù)據(jù)
加密過的文件只有加密者本人和恢復(fù)代理可以打開,如果你要和本機(jī)的其它用戶共享加密文件又該怎么辦?這在Windows 2000中是不行的,不過在Windows XP中可以做到。
選中一個希望共享的加密文件(注意,只能是文件,而不能是文件夾),在文件上用鼠標(biāo)右鍵點擊,并選擇“屬性”,之后在屬性對話框的“常規(guī)”選項卡上點擊“高級”按鈕,然后再點擊“詳細(xì)信息”,之后你可以看見類似圖六的窗口,在這里你可以決定誰可以打開這個加密文件以及察看文件的恢復(fù)代理是具體是誰。

對EFS加密的幾個錯誤認(rèn)識
很多人對EFS理解的不夠徹底,因此在使用過程中總會有一些疑問。一般情況下,我們最常見的疑問有以下幾種:
1, 為什么打開加密過的文件時沒有需要我輸入密碼?
這正是EFS加密的一個特性,同時也是EFS加密和操作系統(tǒng)緊密結(jié)合的最佳證明。因為跟一般的加密軟件不同,EFS加密不是靠雙擊文件,然后彈出一個對話框,然后輸入正確的密碼來確認(rèn)的用戶的;EFS加密的用戶確認(rèn)工作在登錄到Windows時就已經(jīng)進(jìn)行了。一旦你用適當(dāng)?shù)馁~戶登錄,那你就能打開相應(yīng)的任何加密文件,并不需要提供什么額外的密碼。
2, 我的加密文件已經(jīng)打不開了,我能夠把NTFS分區(qū)轉(zhuǎn)換成FAT32分區(qū)來挽救我的文件嗎?
這當(dāng)然是不可能的了。很多人嘗試過各種方法,例如把NTFS分區(qū)轉(zhuǎn)換成FAT32分區(qū);用NTFS DOS之類的軟件到DOS下去把文件復(fù)制到FAT32分區(qū)等,不過這些嘗試都以失敗告終。畢竟EFS是一種加密,而不是一般的什么權(quán)限之類的東西,這些方法對付EFS加密都是無濟(jì)于事。而如果你的密鑰丟失或者沒有做好備份,那么一旦發(fā)生事故所有加密過的數(shù)據(jù)就都沒救了。
3, 我加密數(shù)據(jù)后重裝了操作系統(tǒng),現(xiàn)在加密數(shù)據(jù)不能打開了。如果我使用跟前一個系統(tǒng)相同的用戶名和密碼總應(yīng)該就可以了吧?
這當(dāng)然也是不行的,我們在前面已經(jīng)了解到,跟EFS加密系統(tǒng)密切相關(guān)的密鑰是根據(jù)每個用戶的SID得來的。盡管你在新的系統(tǒng)中使用了相同的用戶名和密碼,但是這個用戶的SID已經(jīng)變了。這個可以理解為兩個同名同姓的人,雖然他們的名字相同,不過指紋絕不可能相同,那么這種想法對于只認(rèn)指紋不認(rèn)人名的EFS加密系統(tǒng)當(dāng)然是無效的。
4, 被EFS加密過的數(shù)據(jù)是不是就絕對安全了呢?
當(dāng)然不是,安全永遠(yuǎn)都是相對的。以被EFS加密過的文件為例,如果沒有合適的密鑰,雖然無法打開加密文件,不過仍然可以刪除(有些小人確實會這樣想:你竟然敢加密了不讓我看!那好,我就刪除了它,咱們都別看)。所以對于重要文件,最佳的做法是NTFS權(quán)限和EFS加密并用。這樣,如果非法用戶沒有合適的權(quán)限,將不能訪問受保護(hù)的文件和文件夾;而即使擁有權(quán)限(例如為了非法獲得重要數(shù)據(jù)而重新安裝操作系統(tǒng),并以新的管理員身份給自己指派權(quán)限),沒有密鑰同樣還是打不開加密數(shù)據(jù)。
5, 我只是用Ghost恢復(fù)了一下系統(tǒng),用戶賬戶和相應(yīng)的SID都沒有變,怎么以前的加密文件也打不開了?
這也是正常的,因為EFS加密所用到的密鑰并不是在創(chuàng)建用戶的時候生成,而是在你第一次用EFS加密文件的時候。如果你用Ghost創(chuàng)建系統(tǒng)的鏡像前還沒有加密過任何文件,那你的系統(tǒng)中就沒有密鑰,而這樣的系統(tǒng)制作的鏡像當(dāng)然也就不包括密鑰。一旦你加密了文件,并用Ghost恢復(fù)系統(tǒng)到創(chuàng)建鏡像的狀態(tài),解密文件所用的密鑰就丟失了。因此這個問題一定需要主意!
希望本文對你使用EFS加密有所幫助,希望你的數(shù)據(jù)能夠更加安全!