Windowsにおける物理アクセス対策 − EFSとSYSKEY


Cyber Security Management 2004年10月号


本文書は、Cyber Security Management誌に寄稿した記事の原稿を、CSM編集部殿の許可を得た上で掲載したものです。




今回はWindows PCが盗難や紛失により、第三者の手に物理的に渡った場合の脅威や、それに対する防御策としてWindowsが装備しているファイル暗号化機能について述べる。




PCに対する物理アクセスの脅威


このところ、企業における個人情報等の機密情報漏洩事件が後を絶たない。つい先日も、ある生命保険会社でPC(パソコン)が盗難に遭い、多くの個人情報が外部に流出した。このように、ハードディスク内に機密情報を記録したPCが、盗難もしくは紛失によって第三者の手に渡った場合、OSによるユーザ認証や、ファイルへのアクセス制御の仕組みなどは、基本的に意味を成さなくなる。

通常、PCは内蔵されているハードディスクの中のOSを起動するように設定されているが、設定を変更することにより、外部記憶装置(フロッピーディスク装置、CD-ROM装置など)からOSを起動することも可能である。つまり、手に入れたPCのBIOS設定を変更し、他のOS(WindowsやLinux)を外部記憶装置から起動することは、一般的に極めて容易である。

一度別のOSを起動してしまえば、そのOSから内臓ハードディスクをマウントすることで、ハードディスク中のさまざまな情報を入手することができるようになる。その場合、ハードディスクのファイルは別のOSの支配下に置かれるため、ファイルに元々設定されていたアクセス制御(いわゆるパーミッション)は効力を発揮しない。

このようにPC上で他のOSを起動することを制限する方法として、BIOSパスワードがある。つまりBIOSにパスワードを設定することにより、第三者によるBIOS設定の変更を阻止する、あるいはPCの起動自体を阻止するというものである。

ただしBIOSパスワードは、もちろん設定しないよりはするに越したことはないが、それほど有効な手段とはいえない。BIOSパスワードをリセットする方法は、インターネット上でさまざまなものが公開されている[1]。またPCのハードディスクを取り出して、他のPCへ接続すれば、元のPCのBIOSパスワードはまったく保護の意味を持たない。

最近のノートPCは、このようなPCの盗難時におけるセキュリティ対策として、BIOSパスワードとは別にハードディスク自体にパスワードロックをかける、「ハードディスク・パスワード」の機能を持っているものが多い。

ハードディスク・パスワードは、基本的にハードディスクのユニット内に設定したパスワードが保存される。ハードディスクへアクセスするためにはそのパスワードを入力する必要があるため、ハードディスクを他のPCに接続しても、ハードディスク・パスワードを知らなければアクセスすることができない。

ハードディスク・パスワードの保護を破ってハードディスク内の情報にアクセスすることは、一般的には容易ではない。そのため、それほど重要度の高くない情報を保護するのであれば、ハードディスク・パスワードはそれなりに有効な手段といえよう。

だが、専用のツールや設備をもってすれば、ハードディスク・パスワードを回避して情報を入手することもできる。ハードディスク・データ復旧の専門業者の中には、ハードディスク・パスワードが設定されているハードディスクからデータを取り出すことを、サービスとして提供しているものもある[2]。

PCのハードディスクに記録されている情報に対し、どの程度のセキュリティ保護を施すべきかは、情報の価値や脅威の度合い、セキュリティ対策のコスト等、さまざまな要素が絡むため、一概には言い切れない。しかし一般論としては、個人情報等の機密データをノートPCに保存して持ち歩く場合、前述したBIOSパスワードやハードディスク・パスワードによる保護と併せ、ハードディスク上のデータ自体を暗号化しておくことが必要だと考えられる。


表1 一般的なデータ保護対策と、その効果の度合い





EFSによるファイルの暗号化


Windows 2000から導入された、ディスク上のファイルを暗号化するWindowsの標準機能が、EFS(Encrypting File System:暗号化ファイルシステム)である[3]。

EFSはNTFSフォーマットで初期化されたハードディスクに対して適用することができ、Windows 2000、Windows XP Professional、およびWindows Server 2003でサポートされている。

EFSはWindowsの機能として統合化されており、

  • データ回復機能を含めた暗号鍵の一元管理
  • ユーザの操作性を損なわない透過的な暗号化と復号
という特長を持つ。

暗号化機能を導入する際に検討しなければならない重要な事項の一つに、暗号鍵の管理および非常時におけるデータ回復がある。暗号鍵(秘密鍵)の管理に不備があり、それが第三者の手に渡った場合、いかにデータを暗号化していても意味がない。また暗号鍵の紛失や削除により、暗号化したファイルが二度と復号できなくなる(読めなくなる)ことを避けるため、管理者による何らかのデータ回復の手段というものが必要になる。

EFSでは「回復エージェント」というデータ回復用の暗号鍵を設定することができ、Windowsドメイン環境下では各ユーザの暗号鍵と共にドメインコントローラで一元的に管理することが可能になっている。そのため、ユーザは通常は暗号鍵の管理について気にする必要はなく、すべてWindowsドメインの管理者に任せておけばよいことになる。

ただしWindowsドメインに属していないスタンドアローンPCの場合は、暗号鍵はPCのハードディスク上に保管されるため、暗号鍵の保護やバックアップといった鍵管理を個別に行う必要がある。

ファイル暗号化機能に求められるもう一つの大きな要件は、ユーザ操作性である。ユーザが暗号化機能を使用してファイルを暗号化・復号する際に、いちいち煩雑な操作を行わなければならないとすると、多くのユーザはその機能の使用に苦痛を感じ、最終的には使用を拒否することになるかも知れない。

EFSにおける暗号化と復号は前述のとおり、Windowsの操作と透過的に行われる。つまり、一旦設定してしまえば(図1)ユーザが暗号化や復号を意識することはない。ディスク上にファイルを作成した際に自動的に暗号化処理が行われ、またファイルを開いた際には自動的に復号処理が行われる。


図1 フォルダやファイルのプロパティの「詳細設定」にて、暗号化属性を設定する


EFSの基本的な仕組みを図2に示す。


図2 EFSの基本的仕組み。ファイル暗号化鍵でファイル自体を暗号化し(共通鍵暗号方式)、ユーザの公開鍵でファイル暗号化鍵を暗号化(公開鍵暗号方式)


このようにEFSではファイル自体の暗号化に共通鍵暗号方式を用い、その共通鍵(ファイル暗号化鍵)の暗号化にユーザの公開鍵・秘密鍵ペアによる公開鍵暗号方式を用いている。ユーザの公開鍵・秘密鍵ペアおよびそれに関連する証明書は、通常はユーザが初めてEFSを使用した際にOSが自動的に作成する。

暗号化されたファイルを復号する際には、まずユーザの秘密鍵でファイル暗号化鍵を復号した後、ファイル暗号化鍵で暗号化されたファイル自体を復号する。




EFS使用上の注意点


先に述べたとおり、WindowsのEFSは管理する上でも使用する上でも、非常にすぐれたファイル暗号化のソリューションだといえる。しかしEFSは使い方を誤ると、期待される効果(つまり第三者に対する機密情報の保護)を発揮することができない。また暗号鍵の削除等による紛失により、重要な情報を二度と読み込むことができなくなる可能性もある。

以下に、WindowsのEFSを使用する際の注意事項について述べる[4]。

    1) 暗号鍵(公開鍵・秘密鍵ペア)のバックアップを安全な場所に保管する

    どのような暗号化システムでも同じであるが、暗号鍵の適切な管理は必須事項といえる。EFSでは前述したように、ドメイン環境下では暗号鍵の管理はドメインコントローラで一括して行われるが、ドメインに所属しないスタンドアローンPCにおいては、EFSの暗号鍵の管理をユーザ自身が責任を持って行わなければならない。

    ユーザの暗号鍵(公開鍵・秘密鍵ペア)は、証明書の形で外部ファイルとしてエクスポートすることができるため、特にスタンドアローンPCの場合はバックアップのために必ず暗号鍵をエクスポートして安全な場所に保管することが求められる。

    2) フォルダ単位で暗号化の設定を行う

    EFSはフォルダに対して暗号化属性を設定し、以降、そのフォルダ内に作られるファイルを全て自動的に暗号化するような方法と、ファイルを指定してその暗号化属性を設定することにより、個々のファイルを明示的に暗号化する方法の、二種類の暗号化操作方法が用意されている。

    後者の場合、つまり各ファイルを明示的に暗号化する場合、EFSは暗号化処理中に障害が発生した際のリカバーの目的で、元ファイルのコピーを一時ファイルとして作成する。当然この一時ファイルは、暗号化が成功した後にファイルシステムからは削除されるのだが、ディスク中には物理的に存在し、かつそのファイル名も既知のものであるため、ハードディスクを物理的にスキャンしてその一時ファイル名を探し出し、暗号化前の元ファイルの内容を調べることも可能である。

    フォルダに対して暗号化属性を設定した場合は、ファイルがフォルダ内に作成されると同時に暗号化が行われ、一時ファイルは作られないので、EFSを使用する際にはフォルダ単位で暗号化の設定を行うことが推奨されている。

    3) リモートマシンのディスクへのコピーには注意

    EFSで暗号化されたファイルを、共有している(マウントしている)ファイルサーバ等リモートマシンのディスクへコピーする場合、送り先のフォルダに暗号化属性が設定されていればファイルサーバのディスク上でも暗号化された状態になるのだが、ネットワーク通信系路上は復号された平文の状態でデータが流れる。つまり、ローカルで一旦復号され、ネットワークを流れた後、リモートマシン上で改めて暗号化されるのである。

    暗号化ファイルをリモートマシンへコピーする際には、このことを考慮し、ネットワーク系路上で盗聴されないように留意する必要がある。

    4) 第三者に不正にログオンされないようにする

    EFSはWindowsのユーザアカウントと密接に関連しているため、前述のとおりユーザはファイルの暗号化や復号を意識せずにファイルアクセスの操作を行うことができる。一方でこのことはすなわち、そのユーザアカウントでWindowsシステムにログオンできさえすれば、EFSで暗号化されたファイルに自由にアクセスできることを意味している。

    例えば盗まれたノートPCを考えてみよう。EFSでファイルを暗号化していれば、たとえハードディスクを物理的に読み込まれたとしても、暗号を破ってファイルの情報を得ることは非常に困難である。だが仮にユーザのパスワードが容易に推測できるものであれば、OSを起動してそのユーザでログオンすることにより、いとも簡単にファイルの情報にアクセスすることが可能になる。

    EFSの暗号鍵をUSBデバイス等リムーバブルメディアに保存しておくことで、より安全性を高める方法はあるものの、一般的な環境つまり暗号鍵をハードディスク上に保持している場合は、ユーザアカウントの侵害によりEFSの暗号化は効力を失うと考えた方が良い。




SYSKEYの設定変更によるEFSの安全性向上


EFSによるデータ保護をより確実なものとするためには、Windowsの「SYSKEY」という機能を活用することが望ましい。

SYSKEYはWindows NT 4.0のサービスパック3から導入された機能で、ローカルユーザのパスワード情報(パスワード・ハッシュ)をSYSKEY用の鍵で暗号化すると同時に、ハードディスク中のEFSの暗号鍵も同様に保護するものである。

SYSKEYには、鍵の管理方法の違いにより次の3つのモードがある。

  • SYSKEYモード1:SYSKEYの鍵は、ハードディスク上に保管され、OS起動時に自動的に読み込まれる
  • SYSKEYモード2:SYSKEYの鍵は、起動パスワードから導き出される形式をとる。OS起動時にこの起動パスワードを入力する必要がある
  • SYSKEYモード3:SYSKEYの鍵は、フロッピーディスク上に保管される。OS起動時にこのフロッピーディスクを挿入する必要がある
Windows 2000におけるSYSKEYのデフォルト設定は、モード1である。モード1ではSYSKEYの鍵がディスク上に保持されているため、何らかの方法でOSにローカルログオンすることができれば、前述のとおりそのユーザのEFS暗号化ファイルを読むことは可能になる。

一方SYSKEYモード2やモード3の場合、通常は起動パスワードもしくはフロッピーディスクがないと、そもそもOSの起動自体ができない。仮にSYSKEYの機能を強制的にOFFにされたとしても、起動パスワードやフロッピーディスクがない限りSYSKEYの鍵が手に入らないため、EFSで暗号化されたファイルは基本的に安全である。

物理的にアクセス可能なPCに対し、別のOSを起動してオフラインでWindowsのローカルアカウントのパスワードを削除したり、さらにはSYSKEYの機能をOFFに強制変更したりするようなツールは、インターネット上で広く公開されている。

図3はそのようなツールの一つ(「Offline NT Password & Registry Editor」[5])を実行させたところを示している。


図3 「Offline NT Password & Registry Editor」を実行しているところ。Linuxをベースとしており、ハードディスク上のWindowsのパスワード変更、レジストリ編集、SYSKEYの無効化といった機能を持つ


このようなツールを用いて、例えばローカルのAdministratorのパスワードを削除し、さらにSYSKEY機能をOFFにすることにより、OSを起動してログオンしたとしても、SYSKEYをモード2ないしモード3に設定していた場合はEFSで暗号化したファイルの安全性は保たれることになる[6]。(ただし起動したWindows上でパスワードを元に戻すと、再び暗号化したファイルを読むことができるようになる場合があるので、注意が必要)

ちなみにXP以降ではパスワードを強制的に変更・削除した場合、自動的にEFSの暗号鍵にアクセスできなくなるため、Windows 2000よりはこのようなオフライン攻撃に対して安全にできている。

いずれにせよ、SYSKEYはOSのセキュリティレベルを一段階高めるものであり、特にWindows 2000ではSYSKEYをモード2ないしモード3で使用することにより、EFSの安全性をより向上させることができる。モード2では起動パスワードを覚えなければならず、またモード3では起動時にフロッピーディスクを挿入する必要がある等、操作性の面ではデフォルトのモード1よりは劣るものの、盗難や紛失の危険性が高いノートPCではこのような追加的セキュリティ対策を施すことが推奨される。




[1]  How to Bypass BIOS Passwords
     http://labmice.techtarget.com/articles/BIOS_hack.htm

[2]  ThinkPad Password Solutions
     http://www.nortek.on.ca/hdd_pw.html

[3]  Encrypting File System
     http://www.microsoft.com/windows2000/techinfo/reskit/en-us/distrib/dsck_efs_xhkd.asp

[4]  暗号化ファイルシステムの最善の使用方法
     http://support.microsoft.com/default.aspx?scid=kb;JA;223316

[5]  Offline NT Password & Registry Editor
     http://home.eunet.no/~pnordahl/ntpasswd/

[6]  Windows 2000 Syskeyおよび暗号化ファイルシステムにおいて噂されている脆弱性の分析
     http://www.microsoft.com/JAPAN/technet/security/topics/efs.asp



2004年8月執筆
塩月 誠人
ネットワークセキュリティコンサルタント