なぜかEFSについて調べてたりしますが、理由はアレですよ、「パソコン無くなったけど大丈夫」ってヤツ、あれほんとかよ?とか思っちゃうわけですよ(爆笑)。
ほんでconnect24hMLでネタ出てるのを知らずにいろいろ調べちゃったんですが(笑)、まずそもそもこのEFSの仕組みとか鍵ってどうなってんの?という話ですね。
暗号化ファイルシステムに必要な鍵ってのは三つあるらしいですね。一つは公開鍵、もう一つは秘密鍵、そして共通鍵。で、Windowsの証明書ストアってところにどうやら公開鍵と秘密鍵が入っているらしいっす。で、この公開鍵と秘密鍵ってのはそのマシンでEFSを最初に使うときに生成されるんだそうです。・・・というとちょいと語弊があるらしいんですが、この公開鍵と秘密鍵のペアはユーザーごとに一組ってことだそうです。
で、各ファイル毎に共通鍵を生成してそれを使ってファイル自体を暗号化して、その共通鍵そのものを公開鍵によって暗号化して各ファイルにくっつけておく、というのが各ファイルを暗号化する段取りだそうです。復号化するときはファイルにくっついている共通鍵を秘密鍵で復号化して、ファイル自体を共通鍵で復号化する仕組みになっているとか。
てことはですね、結局Windows証明書ストアに入っている証明書(=鍵)ってのがポイントなんすよね。暗号化ファイルシステムを復元する、って言っても、結局この鍵をどうやって入手するか、がそれこそカギになるわけですね。
で、この証明書(=鍵)の実体はどこにあるのか、ってぇと、りょうわさんが二年前にプレゼンしてるネタにあったりします。
http://www.hidebohz.com/Meeting/20030322/ryouwa.pdf
りょうわさんの調査によれば、スタンドアローン環境では
[HKCU\SOFTWARE\Microsoft\SystemCertificates\ROOT\Certificates\] の配下(ユーザ)
[HKLM\SOFTWARE\Microsoft\SystemCertificates\ROOT\Certificates\] の配下(ローカルコンピュータ)
にあるらしいっす。
てことはこのあたりにあるブツを復元できれば、あるいはバックアップしとけば、ファイルを復号化できるわけですね。
復元する方法はもう一つあって、回復エージェントってのを使う方法があるようです。
http://homepage2.nifty.com/winfaq/c/ntdisk.html#950
この仕組みは、各ユーザーがやってるのと同じ仕組みで、使う鍵だけが違うようです。ファイル固有の共通鍵を使ってファイル自体を暗号化、のちに共通鍵をあらかじめAdministratorなどの権限で作成した公開鍵と秘密鍵を使って暗号化してファイルにひっつける、という段取りだそうですね。回復エージェントってのを指定しておけば、ファイルの暗号化のときに自動的に個別のユーザーの鍵を使った暗号化された共通鍵と、回復エージェントの鍵を使って暗号化された共通鍵のふたつがひっついているという仕組みらしいです。
で、この日本語完全対応とかっていいやがる(笑)http://www.elcomsoft.com/aefsdr.html とかも、結局各ユーザーの鍵が必要みたいですね。connect24hに流れていたURL=http://fumi.nu/pc/xp.htmにはこんな記述がありますね。
秘密鍵のバックアップを行わないままOSを再インストールしてしまった場合は、次の方法で暗号を解読できる可能性があります。
まずOSが入っていたHDDからデータ復旧ツールで、鍵の元になるファイルを復旧させます。鍵の元になるファイルは、*-*-*(*はワイルドカード)の条件で該当するファイルや、証明書関連、セキュリティ関連のファイルと思われます。Advanced EFS Data Recoveryにそれらのファイルを読み込ませ、「administratorとそのパスワード」「ユーザ名とそのパスワード」「旧OSのパスワード」などを設定します。対象の暗号化ファイルがピンクからグリーンに表示されれば復号可能となります。
鍵が無いと無理ってことすね(笑)。ぃぁ、逆に言えば鍵さえあれば復号できちゃう、ということであって、だいたい最近のディスクは大容量になってるから、データと鍵が同じディスクに存在する可能性は高いですし、ログオンできなかったとしても復号化できちゃう可能性はけっこうあったりするわけですね。ミクシでは「信頼性」が高いのかどうか?というプチ議論になってたりしたんですが、仕組みとしてはシンプルで良くできてると思いますけど、鍵とデータが同じ場所にある、というところではその程度のものだ、と思っていなければならないわけですね*1。しかし、このような危うさを回避する方法もあって、そのあたりは塩月先生がまとめておられるのですが(http://www.st.rim.or.jp/~shio/csm/efs/)、SYSKEYモードを変えることでセキュリティ的にはレベルアップできちゃうわけです。
Windows 2000におけるSYSKEYのデフォルト設定は、モード1である。モード1ではSYSKEYの鍵がディスク上に保持されているため、何らかの方法でOS にローカルログオンすることができれば、前述のとおりそのユーザのEFS暗号化ファイルを読むことは可能になる。
一方SYSKEYモード2やモード3の場合、通常は起動パスワードもしくはフロッピーディスクがないと、そもそもOSの起動自体ができない。仮にSYSKEYの機能を強制的にOFFにされたとしても、起動パスワードやフロッピーディスクがない限りSYSKEYの鍵が手に入らないため、 EFSで暗号化されたファイルは基本的に安全である。
使い勝手は落ちちゃいますけどねえ。でも暗号化ファイルシステムを使う場合は、単に暗号化する、というだけで安心しないで、このあたりのレベルアップまで検討して、使い勝手や扱う情報の重要さなどを考慮して決める必要があるのではないですかねえ。まー、起動パスワードくらい覚えておいて、それを使って起動する、ということにしちゃわないと、とは思います。
んで(笑)。
そもそも何でEFSを調べ始めたのかってぇと、
http://www.blackhat.com/presentations/bh-usa-05/bh-us-05-soeder.pdf
を読んだことがきっかけだったりするわけですね。で、このネタは果たしてSYSKEYモード2とモード3を回避できるものなのか?というのがひとつポイントかなあ。プレゼン読んでいるだけではよーわからんけど・・・
長々といろいろ書いた割りには結論が出てねーけど(爆笑)、ちょいとそのあたり聞くか調べるかしてみよっかなー(いつw?>自分)。まー詰めが甘いのも日記だからってことでヽ(´ー`)ノってゆかこの続きはたぶん某所で(とかいう。
参考:http://www.cybernetic-survival.net/efs.htm
*1:某所では実用的な仕組みだよ、などと曖昧な書き方しかしなくてすんまそん。しかし、暗号を使う仕組みってのは「使える」というのと「安全、しかもかなり」というのは別なレベルで考える必要があってですね(く、苦しいかな(笑))、そういう意味で「実用的」というニュアンスだったんですよ