Encrypting File System(暗号化ファイルシステム、EFS)とはMicrosoft WindowsにおいてNTFSバージョン3.0で追加された機能で、ファイルシステムレベルでの暗号化を提供する。この技術はコンピューターに物理的にアクセスする攻撃者から機密データを保護するために、ファイルの透過的暗号化を実現する。

EFSはWindows 2000以降の全てのビジネス向けエディションのWindowsで利用できる。既定では暗号化されたファイルは存在しないが、ユーザーの選択でファイルごと、ディレクトリーごと、あるいはドライブごとに暗号化を有効にすることができる。いくつかのEFS設定はWindowsドメイン環境のグループポリシーで強制させることもできる。

暗号ファイルシステム実装は他のオペレーティングシステムでも利用可能であるが、Microsoft EFSはそれらとの互換性はない。

## 動作原理

EFSはファイル暗号化キー (File Encryption Key ; FEK) という大量の対称鍵によってファイルを暗号化する。対称暗号化アルゴリズムを使用する理由は、非対称鍵暗号を用いるよりも暗号化および復号に掛かる時間が短くなるためである。使用される対称暗号化アルゴリズムはオペレーティングシステムのバージョンや設定によって異なる。FEK(ファイルの暗号化に用いられる対称鍵)はファイルの暗号化を行うユーザーと関連付けられた公開鍵によって暗号化され、この暗号化されたFEKは暗号化ファイルの$EFS代替データストリームに格納される。ファイルを復号する手順としては、EFSコンポーネントドライバーはファイルの暗号化に使われたEFSデジタル証明書に合致する秘密鍵を使い、$EFSストリームに格納されている対称鍵を復号する。そしてその対称鍵を使ってファイルを復号する。暗号化および復号処理はNTFSファイルシステム下のレイヤーで行われるため、ユーザーや全てのユーザーアプリケーションから見ると透過している。

コンテンツを含むフォルダーはファイルシステムによって暗号化属性でマークされた上で暗号化される。EFSコンポーネントドライバーはこの暗号化属性をNTFSにおけるアクセス許可(パーミッション)の継承と同様に扱い、フォルダーが暗号化としてマークされると、既定ではそのフォルダー下に作成される全てのファイルやサブフォルダーも暗号化される。暗号化ファイルをNTFSボリューム間で移動しても、ファイルは暗号化されたままである。

ファイルおよびフォルダーはFAT32のような他のファイルシステムでフォーマットされたボリュームにコピーされる場合に復号される。暗号化ファイルをSMB/CIFSプロトコル(Windowsのファイル共有サービスで使われるプロトコル)を使ってネットワーク越しにコピーしたとき、ファイルはネットワークに送信される前に復号される。

バックアップアプリケーションにも使われている、復号コピーを防止する最もよく使われる手法は "Raw" APIが知られる。バックアックアプリケーションはこれらのRaw APIを実装していて、暗号化ファイルストリームと$EFS代替データストリームを単一のファイルとして単純にコピーする。言い換えると、ファイルは暗号化状態でコピーされ、バックアップ中に復号されない。

Windows Vistaより、ユーザーの秘密鍵はスマートカードに格納できるようになった。データ回復エージェント (Data Recovery Agent ; DRA)もまたスマートカードに格納できる。

## サポートされるオペレーティングシステム

### Windows

- Windows 2000 Professional, Server, Advanced Server, Datacenter
- Windows XP Professional, Tablet PC Edition, Media Center Edition, x64 Edition
- Windows Server 2003, Windows Server 2003 R2
- Windows Vista Business, Enterprise, Ultimate
- Windows 7 Professional, Enterprise, Ultimate
- Windows Server 2008, Windows Server 2008 R2
- Windows 8, 8.1 Pro, Enterprise
- Windows Server 2012, Windows Server 2012 R2
- Windows 10 Pro, Enterprise, Education
- Windows Server 2016
- Windows Server 2019

### 他のオペレーティングシステム

他のオペレーティングシステムまたはファイルシステムでEFSをネイティブにサポートするものは存在しない。

## Windowsバージョン別の新機能

- クライアントサイドでの暗号化
- ドメイン公開鍵を使ったDPAPIマスターキーのバックアップの保護
- 暗号化済みファイルへのファイル単位の複数ユーザー共有アクセスと、暗号化ファイルを共有するときにその証明書の失効をチェック
- 暗号化ファイルを異なる色で表示(既定では緑)
- 強制回復エージェントが不要
- 暗号化がサポートされていないファイルシステムにファイルを移動したときに、復号されることを警告
- パスワードリセットディスク
- WebDAV越しのEFSとActive Directoryで委譲されたサーバーのリモート暗号化

- 既定で全てのEFS暗号化ファイルについてAES-256対称暗号化アルゴリズムの使用およびサポート

- 自己署名EFS証明書の適用をブロックする設定を追加

- デジタルID管理サービス
- 自己署名EFS証明書を適用する場合に最小鍵長の設定を強制するためのRSA鍵長設定

- クライアントサイド(オフラインファイル)のユーザー単位の暗号化
- PC/SCスマートカード上のRSA秘密鍵の格納をサポート
- EFSキー更新ウィザード
- EFSキーバックアップメッセージ
- PC/SCスマートカードからのDPAPIマスターキーの取得
- BitLockerを使ったEFS関係の秘匿情報の保護
- 統括管理のためのグループポリシー制御
  - ドキュメントフォルダーの暗号化
  - オフラインファイル暗号化
  - 暗号化ファイルのインデックス
  - EFS用のスマートカードの必要性
  - スマートカードからユーザーキーを生成
  - ユーザーキーが生成または変更されたときにキーバックアップ通知を表示
  - 強制的に自動で使われるEFS認証の認証テンプレートの指定

- Windows Server 2008サーバー上のEFS自己署名証明書で2048ビットRSA鍵長が既定に
- 全てのEFSテンプレート(ユーザーおよびデータ回復エージェント証明書)で2048ビットRSA鍵長が既定に

- Windows 7でECC(楕円曲線暗号)およびRSAアルゴリズムの混合モードを後方互換性のためにサポート
- ECC使用時にEFS自己署名証明書で256ビット鍵を既定に
- EFSで自己署名RSA証明書使用時に1k/2k/4k/8k/16kビット鍵、あるいはECC証明書使用時に256/384/521ビット鍵の使用が設定可能に。
- 下位エディションでも一部のEFS操作が可能に。

- FAT および exFAT での EFS サポート

## Windowsバージョン別の使用アルゴリズム

Windows EFSはいくつかの対称暗号化アルゴリズムをサポートし、ファイルの暗号化に用いられるアルゴリズムはWindowsのバージョンによって異なる。

| オペレーティングシステム | 既定のアルゴリズム | 他のアルゴリズム |
| --- | --- | --- |
| Windows 2000 | DES-X | (なし) |
| Windows XP RTM | DES-X | トリプルDES |
| Windows XP SP1 | AES | トリプルDES、DES-X |
| Windows Server 2003 | AES | トリプルDES、DES-X |
| Windows Vista | AES | トリプルDES、DES-X |
| Windows Server 2008 | AES | トリプルDES、DES-X (?) |
| Windows 7  Windows Server 2008 R2 | 混合 (AES, SHA, ECC) | トリプルDES、DES-X |