[C#] 加密檔案系統(EFS)

什麼是EFS呢?EFS是Windows內建的一種保護檔案的加密機制,舉例來說:Windows 7 內建可以直接加密檔案,讓其它人沒有辦法讀取,加密是使用非對稱式加密,所以如果私錀沒了,加密的檔案也就跟著無法解開,所以使用上要特別小心。

什麼是EFS呢?EFS是Windows內建的一種保護檔案的加密機制,舉例來說:Windows 7 內建可以直接加密檔案,讓其它人沒有辦法讀取,加密是使用非對稱式加密,所以如果私錀沒了,加密的檔案也就跟著無法解開,所以使用上要特別小心。另外,只能為 NTFS 檔案系統磁碟區上的檔案和資料夾加密,經過壓縮的檔案或資料夾也無法加密。詳細的條件請參考:使用 EFS 為硬碟加密保護資料

 

要加密檔案其實很簡單,只要從進階屬性去設定就可以了:

image

SNAGHTML4cc246

 

當你第一次加密檔案的時候,作業系統會自動幫你產生一張加密用的憑證,這種憑證很特別,他具有[增強式金鑰使用方法] 欄位。想要查看電腦的憑證可以透過開啟主控台(開始→執行→mmc),從檔案→新增/移除嵌入式管理單元→增加憑證(目前使用者)。

SNAGHTML4ec66b

 

 

當我們使用檔案加密的時候,作業系統就是利用這組帳號下的檔案加密憑證來進行加密和解密。如果你是設定在資料夾,則進入該資料夾的檔案都會被加密;在檔案總管我們可以看到被加密的檔案會是顯示綠色的字。因為這個憑證是專屬於這個帳號的,所以其它帳號登入的時候就無法檢視內容及複製。

SNAGHTML514654

 

也因此這個憑證很重要~所以如果要使用加密檔案系統最好一定要把憑證備份出來;另外為了保險起見,也可以再指定可以解密的人員或是進行修復的人員。如果是要增加使用者,在檔案加密完成之後,進入到詳細資料:

SNAGHTML57caee

 

這裡可以先看到這個檔案可以存取的人員是哪些,按下新增之後選取其它人員的憑證把他加入即可。

SNAGHTML5909f0

 

至於修復代理,一般都會用administrator的帳號來做,所以先產生Administrator的憑證之後把他匯出,再匯到修復代理去就可以了~不過只有在匯進去之後加密的檔案才可以修復哦。設定的位置在本機電腦原則→Windows設定→安全性設定→公開金鑰→加密檔案系統。

image

 

另外除了透過介面設定以外,.NET也提供了內建的函數可以指定檔案進行加密,在System.IO下:


File.Decrypt(FileName);

他會使用執行該程式的帳號對應的憑證來進行加密~非常簡單!

 

PS:

最近的文章都一直貼程式碼,好久沒有貼這麼多圖了XD

 

相關連結:

File.Encrypt Method

使用 EFS 為硬碟加密保護資料

 

Dotblogs 的標籤: ,