Windows XP Professional のスタンドアロン環境 (ドメイン環境でないシステム) で暗号化ファイルシステム (EFS: Encrypting File System) を使う場合の注意点


〔目次〕  〔全項展開〕


証明書をエクスポートすること − パスワードを覚えているだけではダメである

Windows XP Professional には NTFS の暗号化ファイルシステムを利用する機能がある。Windows XP Home Editionでは利用できない。使い方は簡単で、フォルダのプロパティの詳細設定で「内容を暗号化してデータをセキュリティで保護する」にチェックを入れるだけ。これだけでそのフォルダに保存したファイルは自動的に暗号化されるようになる。 (Windowsでは「セキュリティ」という言葉は「アクセス権」の意味でも使われるので、この翻訳表現は誤解を招きやすい。英語版の原文では “Encrypt contents to secure data” (「データを守るために内容を暗号化する」)となっていて、「セキュリティ」という言葉は使っていない。) Explorer ではファイル名が緑色で表示される (フォルダ オプションで無効にできる)。ただし NTFS の圧縮属性とは同時使用できない (圧縮か暗号化のどちらかだけ。圧縮も暗号化も「特定のアルゴリズムに基づいてファイルの内容を別のものに変換する」という点では非常によく似た操作であり、NTFS ではアルゴリズムを使い分けることで「圧縮・解凍」あるいは「暗号化・復号」を透過的に行ってくれるが、ファイル毎にどちらか一方しか選べない)。暗号化したファイルは、そのユーザーにとっては使い勝手は普通のファイルとまったく変わらない。使うたびにパスワードが必要になったりはしない。ユーザーは、暗号化ファイルを普通のファイルと同様に直接開き、編集し、保存できる。事前に暗号化解除などの手続きは必要ない。

【注意】
  1. フォルダ構造やファイル名は暗号化されないので、それらに重要な意味を持たせないように注意が必要。例えば秘密にするべき取引先名をファイル名に付けてはいけない。元々フォルダには暗号化という概念はなく、上記のプロパティは、「このフォルダに保存したファイルは自動的に暗号化する」というフラグに過ぎない。このため、アクセス権のある他の人がそのフォルダにファイルを置くと、置いたその人の暗号化ファイルとなる。
  2. そのフォルダからファイルを移動したりコピーしたりしても、NTFS ボリューム間である限り、ファイルは暗号化されたままである。NTFS の圧縮属性よりも暗号化属性の方が優先され、NTFS 圧縮されたファイルを暗号化フォルダに移動・コピーすると、圧縮が解除され暗号化に切り替えられるのに対し、暗号化ファイルを圧縮フォルダに移動・コピーしても圧縮されず暗号化されたままである。ただしフォルダに暗号化のフラグを設定していないと、暗号化ファイルを開いて更新し保存したときに、上書きしないタイプのアプリ (同名の新規ファイルを作るタイプのアプリ) だと暗号化が解除されてしまうので注意が必要である。
  3. NTFS ボリューム上の既存のファイルを暗号化または暗号化属性解除すると、ファイルの「更新日時」(タイムスタンプ)が現在の日時に更新される(※ Windows XP SP3 では修正された)。暗号化フォルダへの「移動」によって暗号化した場合も更新日時が変更される。更新日時を変更せずに暗号化したい場合は、他の場所から「移動」ではなく「コピー」(Ctrl キーを押しながらドラッグ)によって暗号化フォルダへ入れると更新日時を変更せずに暗号化される。暗号化属性解除の際に更新日時が変更されるのを防ぐには、NTFS ではない FAT32 フォーマットなどのディスクにコピーすると更新日時を変更せずに暗号化解除される。ただしこの場合 NTFS アクセス権などが維持できない。

EFS で暗号化されたファイルはそのシステムにログオンしたそのユーザーでのみ開くことができ、他のユーザーや他のシステムでは開けない。ただし開けない (「アクセスが拒否されました」というエラーとなる) のは本質的ではなく、EFS の目的は、ファイルの内容を暗号化することによって、アクセス制限 (セキュリティ) や物理的な読み取り能力の枠を超えて、他人にはファイルの内容 (暗号化前の内容) を知ることを不可能にすることにある。例えば他人でもアクセス権があれば暗号化ファイルの削除やボリューム内の移動はできる (これらはファイルではなくフォルダ構造に対する操作なので暗号化では防げない) し、Windows 上ではファイルへのアクセスはできず Explorer でのコピーもできないものの、Backup Operators 以上の権限があれば NTBackup や Retrospect などのバックアップツールによる複製 (暗号化したままのコピー) はできる。何より、ハードディスクを取り出して他の OS のシステムでファイルを直接読み出すことはその気になれば誰にでも可能である。ところが、これらのファイルは NTFS ボリューム上で暗号化されて記録されているので、たとえハードディスクを取り出して他の OS のシステムから強制的に内容を読み取ったとしても、データは無意味な内容になっており復元できない。すなわち、暗号化前の内容は、他人にはどんな手段を使っても手に入れることはできない。暗号化ファイルを開き (復号化し)、暗号化前のファイル内容を知ることができるのは、暗号化した本人だけである。

注意するべきことは、同じマシンでも、何の準備もなく Windows を再インストール/リカバリした場合には、暗号化した本人にも暗号化ファイルが開けなくなってしまう点である。まったく同じユーザー名・同じパスワードのユーザーを再作成しても開くことはできない。その理由は、ファイルの暗号化に使われる暗号化鍵はユーザーのパスワードではないからである。ファイルの暗号化に使われる暗号化鍵は初めて暗号化ファイルを作成するときに自動的に生成されるが、それは常にユニーク (世界で唯一) なものであり、二度と同じものが生成されることはない。従って、その暗号化鍵をなくしてしまうと、二度と暗号化ファイルを復元することはできなくなる。ユーザーのパスワードは暗号化鍵を秘匿する (暗号化鍵自体を暗号化する) のに使われるに過ぎない。このため、もしも現在の Windows が破損して暗号化鍵が失われた場合には、たとえパスワードを覚えていても本人にすらファイルが開けなくなってしまう。このような事態を回避するために、暗号化鍵をあらかじめ別にバックアップ (エクスポート) しておくことは絶対に必要であり、その方法もきちんと提供されている (必要性が一般に周知されているとは言いがたいが)。

EFS では、暗号化には共通鍵(対称鍵)方式と公開鍵方式を組み合わせた方法を採用している。具体的には、各ファイルは自動生成された個別の共通鍵で暗号化され、その共通鍵を作成者の公開鍵で暗号化したものと、回復エージェント (DRA: Data Recovery Agent) の公開鍵で暗号化したものがそのファイルに付加される。従って作成者の秘密鍵か回復エージェントの秘密鍵のどちらかを入手すれば、共通鍵を取り出すことができ、ファイルを復号化できる。共通鍵はファイルごとに異なるものが使われるので、あるファイルの共通鍵を何らかの方法で探知しても、他のファイルの復号には使えない。これは既知の内容のファイルとその暗号化ファイルを比較することにより暗号鍵を推測するといった攻撃に対抗するために必要な措置である。このような EFS の構成により、ファイルの暗号化自体は高速な共通鍵方式で行いつつ、秘匿するべき暗号鍵の数は最小限で済み、秘匿した暗号鍵の変更の際もファイル全体を暗号化し直す必要がなく、なおかつ公開鍵方式の利便性を享受できるといった様々なメリットがある。

(採用された暗号化アルゴリズムは Windows のバージョンにより異なるので、異なるバージョンの Windows 間で暗号化ファイルを共用したいときは注意が必要。Windows 2000 と 初期の Windows XP では共通鍵暗号化方式に DESX (鍵長56ビットの DES を強化したもの) が、Windows XP SP1 以降と Windows Server 2003 では AES (鍵長256ビット) が使われる (Windows Vista でも256ビット AES が採用された)。公開鍵暗号化方式はいずれも RSA (鍵長1024ビット、Vista と Windows Server 2008 ("Longhorn") では2048ビット)。)

【EFS ファイルを開くと破損しているように見える】
http://support.microsoft.com/kb/329741/ja/
【Windows XP または Windows Server 2003 にファイルが Windows Vista で開かれた後に、 EFS-encrypted ファイルを開こうとすると、エラー メッセージ:「 Access is denied」】
http://support.microsoft.com/kb/939391/ja/

デフォルトでは、ユーザーは自分自身の秘密鍵しか持っていないので、他のユーザーが暗号化したファイルを開くことはできない。しかし暗号化ファイル作成者の秘密鍵や回復エージェントの秘密鍵をインポートすれば、それらを開くことができるようになり、暗号化ファイルの共用や非常時の復元ができる。

暗号化ファイル作成者の秘密鍵・公開鍵は“EFS 証明書”と呼ばれ、「目的」が「暗号化ファイル システム」と表示される。
回復エージェントの秘密鍵・公開鍵は“EFS DRA 証明書”と呼ばれ、「目的」が「ファイル回復」と表示される。
この二つの証明書ははっきりと別の目的で使われるものであり、互いに流用することはできない。従って、二つの証明書を混同しないように注意しなければならない。例えば、cipher.exe コマンドの /r パラメータで生成される証明書は (システムに登録するための新規の) EFS DRA 証明書であり、/x パラメータで作成されるのは (そのユーザーが現在使用している個人用の) EFS 証明書である。また「回復エージェント」とは特定のユーザーのことを指すものではなく、システムに登録した「ファイル回復」用の EFS DRA 証明書 (公開鍵) と対になる秘密鍵証明書をインポートしたユーザーのことを指す。

【EFS を使用したハード ドライブの暗号化でデータを保護する】
http://www.microsoft.com/japan/smallbiz/sgc/articles/protect_data_efs.mspx


〔目次〕  〔全項展開〕