前回までで、Windows XPないしNTFS5におけるファイル暗号化の仕組みの概略を書いた。NTFS5では、ユーザ毎に一意で作成される証明書を用いて、ファイルの暗号化と復号化が行われる。ここでもっともおかしやすい失敗とは何だろうか?
最もよくある失敗は、ファイルを暗号化してあることを忘れて、オペレーティングシステムの再インストールなどを行ってしまう点だろう。つい考えがちなのが、再インストール後に同じユーザを登録すれば、前と同じようにファイルにアクセスできるということであるが、これはれっきとした誤りである。
Windows XP(というかNTも2000も)では、ユーザの識別をたとえば"naosan"という表向きの名称ではなくて、ユーザ識別子という内部的な文字列で行っている。だから、表向きは同じユーザ名でも、コンピュータが異なれば異なるユーザ識別子になる。もちろん、これは再インストールした場合など、異なるコンピュータだと見なされる場合にも同じことが言える。例外は、Active Directoryなどを導入した環境だが、これは今回は無意味なのでとりあえず無視して話を進める。
こう書くと何か特別のことに見えるが、UNIX環境ではごく当たり前のことだ。ユーザ名に一意的にユーザID(UID)を割り当て、その数値の方で実際のユーザの識別を行う。仮に異なるUIDを持つユーザが同じネットワークに参加して、それでNFSなどのファイル共有を行う場合には、ちょっと困ったことが起きる。なので、NISなどのドメイン管理システムが導入されるようになる。これも、今回の話とは直接の関係がないので、無視して話を進める。
話を冒頭に戻すと、暗号化されたファイルの存在する状態でWindows XPの再インストールなどを行うと、基本的にそのファイルにはアクセスできなくなる。ついうっかり、暗号化されたファイルの存在を忘れて再インストールなどを実行すると、あとで青くなることになる(顔が)。もし再インストール作業がファイルシステムの初期化を伴わないもので、ディスクの何処かに以前のユーザの証明書が残っていれば、暗号化を解除できる見込みはある。正しそうでない場合には、事態は絶望的になる。
このようなことを避けるために、暗号化を行うユーザは、自らの証明書をリムーバブルメディアに保存しておくことが推奨されている。復号化に必要な証明書を外部メディアに保存しておくことで、万が一の際にその証明書を用いてファイルの復号化が実行できる。このための手順はかなり単純である。
まず、暗号化を行ったユーザでログオンしておく。そして、コマンドプロンプトを開き、以下のように実行する。
cipher r:<filename>
cipherは、暗号という意味の単語である。同じ名前のコミックもあった。<filename>は、保存する証明書のファイル名だ。拡張子は不要である。たとえばnaosanと指定すれば、naosan.cerとnaosan.pfxという2つのファイルが作成される。このファイルを、リムーバブルメディアに移動しておき、そのメディアは自分しかわからない場所に保管する。
これで、とりあえず最悪の事態は防ぐことができる。なお、Windows 2000/XPには回復エージェントという復号化のためのユーザを特別に指定できるが(Windows 2000におけるデフォルトはAdministrator、Windows XPにおけるデフォルトはない)、これはあくまでもオペレーティングシステムが暗号化時と同様の状態でなければ何の役にも立たない。回復エージェントの役割は、たとえば社員が退職したなどで、その社員の作成した暗号化ファイルを復旧させることにある。なので、オペレーティングシステムを再インストールしたときなどでは、同様に証明書の保存が必要となる。
次回は、とりあえず管理者による暗号化ファイルの復号化を行えるように、Windows XPに回復エージェントを設定する手順を紹介する(なんてえらそーに)。