加密文件系统

基本想法

很長一段時間以來，作業系統執行在一個沒有檔案加密的系統上，存取檔案不得不只通過作業系統控制的用戶身分驗證和存取控制列表。如果攻擊者取得了電腦的物理存取權，那麼這些障礙都可以被輕易繞過。方法之一就是移除磁碟並將其放在另一個電腦中，用它的作業系統讀取讀取檔案系統，或者從一個可啟動光碟重新啟動電腦來讀取檔案系統。
最廣泛的可接受方案是將檔案加密儲存在物理媒介上（磁碟、USB驅動器、磁帶、光碟等）。
在微軟Windows作業系統家族中，EFS可完成這項舉措，儘管只能在NTFS驅動器上。它使用公鑰加密演算法和對稱密鑰加密的組合保證沒有正確的金鑰將極難解密檔案。
但是，EFS的加密金鑰在實踐中使用用戶帳戶的密碼保護，並因此容易受到大多數密碼攻擊。

操作

EFS使用對稱金鑰加密檔案，這被稱為檔案加密金鑰（File Encryption Key），簡稱FEK。使用對稱加密演算法是因為加密和解密大量資料時這比使用非對稱金鑰密碼本消耗更少的時間。在不同的作業系統版本和組態上將使用不同的對稱加密演算法，見下面的Algorithms used by Windows version。FEK（用來加密檔案的對稱金鑰）然後會使用一個與加密檔案的用戶相關聯的公鑰加密，加密的FEK將被儲存在加密檔案的$EFS可選資料流。要解密該檔案，EFS元件驅動程式使用符合EFS數位憑證（用於加密檔案）的私鑰解密儲存在$EFS流中的對稱金鑰。EFS元件驅動程式然後使用對稱金鑰來解密該檔案。因為加密和解密操作在NTFS底層執行，因此它對用戶及所有應用程式是透明的。
內容要被加密的資料夾會被檔案系統標記為「加密」屬性。EFS元件驅動程式會檢查此「加密」屬性，這類似NTFS中檔案權限的繼承：如果一個資料夾標記為加密，在裡面建立檔案和子資料夾就預設會被加密。在加密檔案移動到一個NTFS卷時，檔案會繼續保持加密。但是，在許多情況下，Windows可能不需詢問用戶就解密檔案。
被複製到另一種檔案系統（如FAT32）的檔案和資料夾會被解密。最後，加密的檔案使用SMB/CIFS協定通過網路複製時，檔案在傳送到網路前會被解密。
避免「複製時解密」的最有效方法是使用支援「原始資料」API的備份軟體。使用Raw API的備份軟體會直接複製已加密檔案的流和$EFS備用資料流為單個檔案。換句話說，這些檔案以加密形式被「複製」，備份過程中不牽扯解密。
從Windows Vista開始，用戶的私鑰可以儲存在智慧卡上；資料恢復代理（DRA）金鑰也可以儲存在智慧卡上。

漏洞

在Windows 2000的EFS中存在兩個重大安全漏洞。在那之後有遭遇不同程度的各種攻擊。

使用原生的Administrator帳戶解密檔案

在Windows 2000中，原生的administrator是預設的「資料恢復代理」，它可以解密任何本地用戶用EFS加密的所有檔案。在Windows 2000中的EFS在沒有「恢復代理」時不能正常運作，所以始終有一個人可以解密用戶已加密的檔案。任何未加入域的Windows 2000電腦將容易受到未授權的EFS解密，任何能取得本地Administrator帳戶權限的人都可以做到，而網際網路上有許多工具可以做到這點。
在Windows XP及之後的版本中已經沒有預設的「資料恢復代理」並且不再強制需要它。設定SYSKEY為模式2或3（在啟動時鍵入syskey或插入相應軟碟）將緩解未經授權的通過本地Administrator帳戶解密的風險。這是因為本地用戶密碼進行了雜湊處理，儲存在SAM檔案中，並使用Syskey加密，而且Syskey的值對於無法接觸Syskey口令/軟碟的離線攻擊者不可用。

通過密碼重設存取私鑰

在Windows 2000中，用戶的RSA私鑰只儲存在「真正」的加密形式中，但用戶的RSA私鑰備份存在更脆弱的保護。如果攻擊者能物理存取Windows 2000電腦並重設本地帳戶的密碼，攻擊者可以登入為該用戶（或恢復代理）並獲得可解密所有檔案的RSA私鑰的權限。這是因為RSA私鑰使用一個LSA私鑰加密，而可提升登入到LocalSystem的攻擊者可以存取它，取得相關工具並不困難。
在Windows XP及之後版本，用戶的RSA私鑰使用一個離線公鑰來備份，與該公鑰對應的私鑰儲存在下列位置之一：密碼重設磁碟（如果該Windows XP不是一個域成員），活動目錄（如果該Windows XP是一個域的成員）。這意味著可以通過Windows XP本地系統身分驗證的攻擊者仍無法存取儲存在PC硬碟上的解密金鑰。
在Windows 2000、XP或更新版本中，用戶的RSA私鑰使用用戶的NTLM密碼雜湊加用戶名稱雜湊來加密——加鹽的雜湊使得在未獲知用戶密碼的情況下，很難逆轉此過程並得出用戶的私鑰。同樣，將系統模式設定為模式2或模式3（在啟動時鍵入或通過軟碟提供系統金鑰）將緩解此攻擊，因為本地用戶的密碼雜湊儲存在SAM檔案中。

其他問題

一旦用戶已成功登入，存取他的EFS加密檔案的請求都不會要求身分驗證，解密會靜默、透明完成。因此，任何被攻破的用戶密碼都將自動允許存取資料。Windows可以使用可逆加密儲存用戶帳戶密碼，不過這已不是預設情況；它還可以組態為儲存本地用戶帳戶密碼的Lan管理器雜湊，並且這在Windows XP和更早版本的原版中是預設行為，這可以被攻擊和更容易攻破。它還儲存本地用戶帳戶密碼的NTLM雜湊，如果密碼較弱，這可能使用「彩虹表」輕易攻破（Windows Vista和之後版本預設不允許弱密碼）。為了避免本地密碼遭受暴力破解，舊版本的Windows應該組態為永不儲存LM雜湊（在組策略的安全設定部分），當然，更不能啟用自動登入（那會在登錄檔中儲存明文密碼）。此外，使用超過14個字元的本地用戶帳戶密碼可避免Windows在SAM中儲存LM雜湊——以及加強對NTLM雜湊的暴力攻擊的抵抗性。
當使用EFS加密檔案時，即將明文檔案轉換為加密檔案時，明文檔案並不會被擦除，而只是被標記為已刪除（即在檔案系統中標記為「未使用」資料）。這意味著，除非它恰好儲存在一個支援TRIM的SSD上，從而（或者因其他設定）被儘快覆蓋，否則會容易找回它們。為充分減少對EFS這個已知的、非技術性的問題，你應該在資料夾級別組態加密（以便使在這些資料夾中建立檔案時即被加密，而不是被移動和留下一份明文檔案的殘留）。當想要加密單個檔案時，加其複製到一個加密的資料夾或者加密的檔案中，然後有效地擦除原儲存卷。用戶可以使用Windows Cipher實用工具（配以/W選項）或其他工具來有效擦除磁碟上的可用空間。
任何可以取得管理員權限的人都可以覆蓋、更改Data Recovery Agent的組態。這是一個非常嚴重的問題，因為攻擊者可能侵入管理員帳戶並將精心設計的任何DRA憑證設定為資料恢復代理，並等待。這有時被稱為雙階段攻擊（two-stage attack），其與PC遺失或被盜的風險顯著不同，更突出內部的惡意人士所產生的風險。
當用戶在這種攻擊的第一階段後對檔案加密時，將自動使用指定的DRA公鑰加密FEK。攻擊者只需要以管理員身分存取此電腦，就能對隨後使用EFS加密的檔案進行完全存取。即使已使用Syskey模式2或模式3，也並不能防止這種攻擊，因為攻擊者可以將加密檔案離線備份並還原到其他地方，然後使用DRA的私鑰解密檔案。當然，如果有惡意人員可以物理存取電腦，那麼您也可以考慮所有的安全功能都將失效，因為他們也可以在電腦上安裝Rootkit、特殊軟體，或者硬體鍵盤記錄器等。在惡意攻擊中，這可能比覆蓋DRA策略更為有效和全面。

恢復

使用EFS加密的檔案只能使用符合之前所用公鑰的RSA私鑰解密。用戶的私鑰副本本質上是使用用戶的登入密碼保護。從Windows外的其他作業系統（比如Linux）存取加密的檔案是不可能的——不只是因為目前沒有第三方的EFS元件驅動程式。此外，使用特殊工具重設用戶的登入密碼以解密用戶的私鑰和存取用戶的加密檔案也是不可能的。這也意味著用戶有可能導致資料遺失，如果用戶忘記了自己的密碼並且沒有備份加密金鑰。這成就了一個術語——「延遲的資源回收筒」，它表示沒有經驗的用戶使用此功能加密檔案似乎會不可避免的在未來遇到資料遺失。
如果EFS組態為使用一個公鑰基礎設施簽發的金鑰，並且PKI組態為啟用「金鑰存檔和恢復」，可以先恢復私鑰檔案，然後恢復加密檔案。

其他作業系統

沒有其他作業系統或檔案系統原生支援EFS。