NTFSの機能の1つとして、EFS(暗号化ファイルシステム)があります。これはファイル保存時に自動的に暗号化し、読み取り時には復号化してくれるセキュリティ上大変よさそうな機能ですが、いくつか落とし穴があるので注意が必要です。ここではいくつか事例(架空)を挙げ、そのときEFSはどう動くのかを確認してみましょう。
事例1:FD紛失事件

XYZ株式会社のAさんは、取引先の連絡先が保存されたファイルをNTFSの暗号化ファイルシステムを使用して暗号化していました。Aさんは、この暗号化したファイルのバックアップを取るためFDにコピーしました。数日後、Aさんの机から連絡先のファイルが入ったFDが紛失していることに気がつきましたが、「EFSで暗号化されたファイルは暗号化した本人でしか復号化できない」と思い、特に対処を取りませんでした。ところがFD紛失後、暗号化されているはずのファイルが外部に流出していることが判明しました。なぜ暗号化したファイルが外部の人間に読み取られたのでしょうか?

解説:青字で示した「暗号化した本人でしか解読できない」というのは、ほぼ正解です。点数で言えば80点正解で20点不正解ですが、今回の原因は不正解分の20点ではありません。(詳細は後ほど)

確かに暗号化されたファイルは、たとえフルコントロール許可のアクセス許可を持った人間であっても、暗号化を解除することはできません。読み取ることすらできません。つまり、暗号化した本人にしか解読できません。

ところが、暗号化したファイルであっても次のことを行うと自動的に暗号化が解除されます。
  • FDにコピー(あるいは移動)する
  • FAT16やFAT32など、NTFSの暗号化ファイルシステムをサポートしないディスク領域にコピー・移動する
(※実は他にも暗号化が解除されるものはありますが、それは事例3で取り上げます。)

これらを行うと、EFSで暗号化していても自動的に暗号化が解除されます。そのため、FDに保存されたファイルは暗号化が解除されており、誰でも読み取ることができる状態になっていたため、外部に流出したと思われます。このような事態を防ぐため、暗号化したファイルは暗号化した本人でしか(暗号化が自動的に解除される領域への)コピー・移動はできないように制限されます。

また、先ほどの暗号化した本人でしか解読できないという不正解分20点ですが、回復エージェントと呼ばれる特殊な権限を持ったアカウントの場合、他人が暗号化したファイルを強制的に復号化することができます。よって、厳密に言えば暗号化した本人でしか解読できないというのは間違いになりますが、日常的に使用するのであれば、暗号化した本人でしか解読できないと考えてもらってもOKです。

また、回復エージェントはワークグループ環境であればローカルのAdministrator(管理者)が、ドメイン環境であればドメインのAdministratorがデフォルトで回復エージェントになります。

事例2:圧縮属性事件

あいうえお株式会社のBさんは、大変重要なファイルをHDDに保存しています。先日、NTFSのEFS機能を知り、さっそく重要なファイルに暗号化属性を設定しました。数日後、HDDの空き領域が少なくなってきたので、空き領域が少ないDドライブに圧縮属性を設定しました。暗号化したファイルはファイルサイズが大きいので、Dドライブへ移動させれば圧縮属性によりサイズが小さくなるだろうと考え暗号化が設定されたままDドライブへ移動しましたが、なぜかサイズが変わりません。試しに適当なファイルをCドライブに保存し、Dドライブへコピーするとサイズが減りました。移動するとサイズが変わらなくなると考え、今度はコピーではなく移動させると、やはりサイズが減りました。さて、なぜ暗号化されたファイルはサイズが減らなかったのでしょうか?

解説:NTFSドライブ上では暗号化属性と圧縮属性を設定することができますが、両方を一度に設定することはできません。つまり、暗号化か圧縮、あるいはどちらも設定しない状態でしか保存できないというわけです。

また、暗号化が設定されたファイルやフォルダは、事例1の通り暗号化をサポートしないファイルシステム上にコピー・移動するのであれば自動的に暗号化が解除されますが、NTFSでフォーマットされたドライブ同士でのコピー・移動では暗号化は解除されません。つまり、NTFS上では明示的に設定を解除しない限り暗号化は解除されることはありません。

次に圧縮属性が設定されたNTFSドライブへのファイルのコピー・移動ですが、基本的にコピー先・移動先の属性を反映しますので、何も属性が設定されていないファイルは自動的に圧縮されます。ただし、暗号化されたファイルは明示的に解除しない限り暗号化は解除されませんので、圧縮属性は適用されず、暗号化されたままの状態で保存される、というわけです。

暗号化とは関係ありませんが、次の場合元の属性を維持します。
  • 同一NTFSドライブ間での移動
この場合のみ、移動先の属性は反映されません。どうしても反映させたければ、移動ではなくコピーをするか、移動後に属性を設定する必要があります。
事例3:個人情報パケット流出事件

ワンツースリー株式会社のCさんは、HDDに会社の顧客の個人情報を保存しています。会社の個人情報保護の取り組みの一環として、顧客に関する情報はどんな些細なことであっても暗号化して保存するようにしています。また、暗号化が自動的に解除されるFDやCD・MOなどへの個人情報の書き込みは一切禁止するため、会社のPCにはFDDやCD-R/RWドライブ、MOドライブなどメディアに書き込めるドライブは1台も用意されておらず、ファイルの交換はネットワーク経由のみになっています。先日から会社の社内LANへの不正アクセスが多発しておりましたが、CさんはEFSで暗号化されているファイルはパケットキャプチャされても暗号化されているのだから解読できないだろうと考え、ネットワーク経由で顧客の個人情報のやり取りを行っていました。数ヵ月後、ワンツースリー株式会社から個人情報が流出し、会社は大打撃を受けました。原因はおそらく、社内LANのパケットをキャプチャしたものと思われますが、EFSで暗号化していたので暗号を解読されたとは思えません。さて、なぜ暗号化した個人情報が流出したのでしょうか?ただし、暗号は解読できないものとします。

解説:実際にありそうな事件ですが、ここでEFSの機能を確認したいと思います。

EFSはNTFSドライブ上で動作し、FAT16やFAT32、CDFS(CDのフォーマット形式)上で暗号化したまま保存することはできません。それと同時に、ネットワークを経由して転送されるファイルは暗号化が解除されてネットワークを流れます。

よって、パケットをキャプチャすれば解読処理など行わずにデータを読めてしまう、というわけです。このため、ネットワークを経由して転送するには別の暗号化方式(SSLやIPSecなどの暗号化プロトコル)を使用したほうがよいと思われます。