Encrypting File System

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

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

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

動作原理 

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

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

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

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

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

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

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バージョン別の新機能 
Windows XP
 クライアントサイドでの暗号化（オフラインファイルデータベース）
 ドメイン公開鍵を使ったDPAPIマスターキーのバックアップの保護
 暗号化済みファイルへのファイル単位の複数ユーザー共有アクセスと、暗号化ファイルを共有するときにその証明書の失効をチェック
 暗号化ファイルを異なる色で表示（既定では緑）
 強制回復エージェントが不要
 暗号化がサポートされていないファイルシステムにファイルを移動したときに、復号されることを警告
 パスワードリセットディスク
 WebDAV越しのEFSとActive Directoryで委譲されたサーバーのリモート暗号化
Windows XP SP1
 既定で全てのEFS暗号化ファイルについてAES-256対称暗号化アルゴリズムの使用およびサポート
Windows XP SP2 + KB912761
 自己署名EFS証明書の適用をブロックする設定を追加
Windows Server 2003
 デジタルID管理サービス
 自己署名EFS証明書を適用する場合に最小鍵長の設定を強制するためのRSA鍵長設定
Windows VistaおよびWindows Server 2008
 クライアントサイド（オフラインファイル）のユーザー単位の暗号化
 PC/SCスマートカード上のRSA秘密鍵の格納をサポート
 EFSキー更新ウィザード
 EFSキーバックアップメッセージ
 PC/SCスマートカードからのDPAPIマスターキーの取得
 BitLockerを使ったEFS関係の秘匿情報の保護
 統括管理のためのグループポリシー制御
 ドキュメントフォルダーの暗号化
 オフラインファイル暗号化
 暗号化ファイルのインデックス
 EFS用のスマートカードの必要性
 スマートカードからユーザーキーを生成
 ユーザーキーが生成または変更されたときにキーバックアップ通知を表示
 強制的に自動で使われるEFS認証の認証テンプレートの指定
Windows Server 2008
 Windows Server 2008サーバー上のEFS自己署名証明書で2048ビットRSA鍵長が既定に
 全てのEFSテンプレート（ユーザーおよびデータ回復エージェント証明書）で2048ビットRSA鍵長が既定に
Windows 7およびWindows Server 2008 R2
 Windows 7でECC（楕円曲線暗号）およびRSAアルゴリズムの混合モードを後方互換性のためにサポート
 ECC使用時にEFS自己署名証明書で256ビット鍵を既定に
 EFSで自己署名RSA証明書使用時に1k/2k/4k/8k/16kビット鍵、あるいはECC証明書使用時に256/384/521ビット鍵の使用が設定可能に。
 下位エディションでも一部のEFS操作が可能に。
Windows 10 バージョン 1607 および Windows Server 2016
 FAT および exFAT での EFS サポート

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

関連項目 
 BitLocker
 Data Protection API (DPAPI)
 EncFS

脚注

参考文献 
 
 
 
 
 
 
 
 

OSのファイルシステム
Windows NT系
Windowsのコマンド
暗号ソフトウェア
Windowsのセキュリティ技術