(57)【特許請求の範囲】
【請求項１】
コンピュータに対し、
アプリケーションのアクセスを制御するためのアクセス制御手段と、
画面描画命令をフックするための描画命令フック手段であって、仮想マシン・アプリケーションが発行する画面描画命令を選択的にフックする第１のモードと、アプリケーションが発行する画面描画命令をフックする第２のモードとを有する描画命令フック手段と、
フックした前記画面描画命令について秘密鍵を用いた排他的論理和演算による暗号処理を実行する暗号処理手段と、
前記描画命令フック手段の動作モードを切り替えるためのモード切替手段と
を実現するためのコンピュータ実行可能なプログラム。
【請求項２】
前記モード切替手段は、前記プログラムがインストールされたＯＳがホストＯＳまたはゲストＯＳのいずれであるかを判定する手段を備え、前記ＯＳがホストＯＳである実マシンモードのときに、前記描画命令フック手段を前記第１のモードにセットし、前記ＯＳがゲストＯＳである仮想マシンモードのときに、前記描画命令フック手段を前記第２のモードにセットする、請求項１に記載のプログラム。
【請求項３】
前記コンピュータに対し、さらに、前記暗号処理に使用する秘密鍵を管理するための秘密鍵管理手段を実現する、請求項２に記載のプログラム。
【請求項４】
前記秘密鍵管理手段は、
前記秘密鍵としてランダムキーを生成するためのキー生成手段と、
他のプロセスとの間で前記ランダムキーの送受信を実行するキー送受信手段とを含む、
請求項３に記載のプログラム。
【請求項５】
前記キー送受信手段は、
前記実マシンモードのときに、前記ランダムキーを前記他のプロセスに送信し、
前記仮想マシンモードのときに、前記ランダムキーを前記他のプロセスから受信する、
請求項４に記載のプログラム。
【請求項６】
前記キー送受信手段は、名前付きパイプを介して前記ランダムキーの送受信を実行する、請求項４または５に記載のプログラム。
【請求項７】
前記キー送受信手段は、共有フォルダ機構を介して前記ランダムキーの送受信を実行する、請求項４または５に記載のプログラム。
【請求項８】
前記秘密鍵管理手段は、外部からの設定入力に基づいて前記秘密鍵を設定する、請求項３に記載のプログラム。
【請求項９】
前記モード切替手段は、外部からのモード設定入力に応答して、前記描画命令フック手段を前記第１のモードまたは前記第２のモードにセットする、請求項１に記載のプログラム。
【請求項１０】
コンピュータに対し、
アプリケーションのアクセスを制御するためのアクセス制御手段と、
画面描画命令をフックするための描画命令フック手段であって、仮想マシン・アプリケーションが発行する画面描画命令を選択的にフックする第１のモードと、アプリケーションが発行する画面描画命令をフックする第２のモードとを有する描画命令フック手段と、
フックした前記画面描画命令について秘密鍵を用いた排他的論理和演算による暗号処理を実行する暗号処理手段と、
を実現するためのコンピュータ実行可能なプログラム。
【請求項１１】
請求項１〜１０のいずれか一項に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１２】
ホストＯＳ上に仮想マシンが構築された仮想化環境を備え、前記ホストＯＳ上に第１のセキュリティ・エージェントが常駐し、仮想マシンのゲストＯＳ上に第２のセキュリティ・エージェントが常駐するコンピュータ装置であって、
前記第１のセキュリティ・エージェントは、
前記ホストＯＳ上のアプリケーションのアクセスを制御するためのアクセス制御部と、
前記仮想マシンが発行する画面描画命令を選択的にフックするための第１の描画命令フック部と、
前記第１の描画命令フック部がフックした前記画面描画命令について秘密鍵を用いた排他的論理和演算による暗号処理を実行する暗号処理部と
を含み、
前記第２のセキュリティ・エージェントは、
前記ゲストＯＳ上のアプリケーションのアクセスを制御するためのアクセス制御部と、
前記ゲストＯＳ上のアプリケーションが発行する画面描画命令をフックするための第２の描画命令フック部と、
前記第２の描画命令フック部がフックした前記画面描画命令について秘密鍵を用いた排他的論理和演算による暗号処理を実行する暗号処理部と
を含む、
コンピュータ装置。
【請求項１３】
前記第１のセキュリティ・エージェントおよび前記第２のセキュリティ・エージェントは、前記暗号処理部が使用する秘密鍵を管理するための秘密鍵管理部を含む、請求項１２に記載のコンピュータ装置。
【請求項１４】
前記秘密鍵管理部は、
前記秘密鍵としてランダムキーを生成するためのキー生成部と、
他のプロセスとの間で前記ランダムキーの送受信を実行するキー送受信部とを含む、
請求項１３に記載のコンピュータ装置。
【請求項１５】
前記第１のセキュリティ・エージェントの前記キー送受信部は、前記ランダムキーを生成して前記第２のセキュリティ・エージェントの前記キー送受信部に送信する、
請求項１４に記載のコンピュータ装置。
【請求項１６】
前記キー送受信部は、名前付きパイプを介して前記ランダムキーの送受信を実行する、
請求項１４または１５に記載のコンピュータ装置。
【請求項１７】
前記キー送受信部は、共有フォルダ機構を介して前記ランダムキーの送受信を実行する、請求項１４または１５に記載のコンピュータ装置。
【請求項１８】
ユーザ端末について安全に管理された仮想マシンの実行環境の構築を促進するための方法であって、
ユーザ端末のホストＯＳ上に第１のセキュリティ・アプリケーションを管理者権限でインストールするステップと、
前記ユーザ端末のユーザに対し、第２のセキュリティ・アプリケーションを提供するステップとを含み、
前記第１のセキュリティ・アプリケーションは、
コンピュータに対し、
アプリケーションのアクセスを制御するためのアクセス制御手段と、
仮想マシン・アプリケーションが発行する画面描画命令を選択的にフックするための第１の描画命令フック手段と、
前記第１の描画命令フック手段がフックした前記画面描画命令について秘密鍵を用いた排他的論理和演算による暗号処理を実行する暗号処理手段と
を実現するためのコンピュータ実行可能なプログラムであり、
前記第２のセキュリティ・アプリケーションは、
コンピュータに対し、
アプリケーションのアクセスを制御するためのアクセス制御手段と、
アプリケーションが発行する画面描画命令をフックするための第２の描画命令フック手段と、
前記第２の描画命令フック手段がフックした前記画面描画命令について秘密鍵を用いた排他的論理和演算による暗号処理を実行する暗号処理手段と
を実現するためのコンピュータ実行可能なプログラムである、
方法。
【請求項１９】
前記第１のセキュリティ・アプリケーションが前記コンピュータに対して実現する前記アクセス制御手段と前記第２のセキュリティ・アプリケーションが前記コンピュータに対して実現する前記アクセス制御手段が同一のセキュリティポリシーに基づいて動作する、
請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーソナル・コンピュータのセキュリティ技術に関し、より詳細には、仮想化環境のセキュリティ状態を向上させるための手法に関する。
【背景技術】
【０００２】
近年、パーソナル・コンピュータ（ＰＣ）における仮想化環境の利用が注目を集めている。これに伴って、ＰＣ用の仮想化アプリケーションや、仮想化環境を標準搭載するＯＳが提供されるようになってきており、エンドユーザがＰＣ上で仮想化環境を利用する機会は、今後、ますます拡大することが予想される。ここで、ＰＣにおける仮想化について、以下概説する。
【０００３】
図１０は、いわゆるホストＯＳ型の仮想化環境が構築されたＰＣ２００（実マシン）を示す。ＰＣ２００（実マシン）は、ハードウェア２０２と、その上にインストールされたホストＯＳ２０４を備え、ホストＯＳ２０４の上に各種アプリケーションがインストールされている。仮想マシン４００は、ホストＯＳ２０４上で動作する１つのアプリケーションとして参照することができる。仮想マシン４００は、共通プラットフォーム４０１と、仮想ハードウェア領域４０２を備える。仮想ハードウェア領域４０２は、実マシンのハードウェア（ＣＰＵ，ハードディスク、ＢＩＯＳ、ＮＩＣ、キーボード、マウス等）をエミュレートする機能部であり、ユーザは、この仮想ハードウェア領域４０２の上にホストＯＳ２０４とは別のＯＳ（ゲストＯＳ４０４）をインストールすることができる。
【０００４】
図１１は、実マシン２００のホストＯＳ画面１０００の上位レイヤーに仮想マシン４００のウィンドウ画面２０００が表示された状態を示す。仮想マシン４００のウィンドウ画面２０００には、仮想マシン４００上にインストールされたゲストＯＳ４０４のＯＳ画面が表示されている。ユーザは、１つのディスプレイに表示される２つのＯＳ画面を切り替えながら、異なる２つのＯＳ環境を同時に利用することができる。
【０００５】
一般に、古いバージョンのＯＳでしか動作しないアプリケーションを最新のホストＯＳ上で動作させるといったことが仮想マシンの用途として想定されている。たとえば、実マシンのホストＯＳ２０４がアプリＤおよびアプリＥの動作をサポートしていない場合、ユーザは、仮想マシン４００のゲストＯＳ４０４（旧バージョンＯＳ）上にアプリＤおよびアプリＥをインストールすることによって、これらを使用することができる。ゲストＯＳ４０４は、アプリＤまたはアプリＥから発行される命令に応答して仮想ハードウェア領域４０２を本物のハードウェアとして制御しようとする。仮想マシン４００は、ゲストＯＳ４０４から発行されるハードウェア制御命令を実マシンが対応可能な形式に解釈し直して、ホストＯＳ２０４にこれを伝える。その結果、実マシン上のホストＯＳ２０４に対応していないアプリＤおよびアプリＥが実マシンのハードウェア２０２を制御することが可能になる。上述したように、ＰＣにおける仮想化技術は、ユーザの利便性を向上させるものであることは確かである。しかし、それは、一方で、管理者にとって悩ましい問題を生じさせる。以下、この点について説明する。
【０００６】
多くの企業は、セキュリティポリシーを遵守させるべく、社員が使用するＰＣに対してセキュリティ・アプリケーションを常駐させること義務付けている。この点につき、特開２００７−２８７０７８号公報（特許文献１）は、アプリケーションから出力されるデータにつき個人情報管理の必要性をリアルタイムに判定し、その判定結果に基づいて、アプリケーションの処理を続行または中断、修整するプログラムを開示する。このようなセキュリティ・アプリケーションは、ＯＳ上で動作するアプリケーションのファイル・アクセスやネットワーク・アクセスを、セキュリティポリシーに則って制御するものであるが、仮想化環境にこれを適用する場合、以下のような問題が生じる。
【０００７】
図１２は、仮想マシン環境を備える実マシンのホストＯＳ上に従来型のセキュリティ・アプリケーションであるセキュリティ・エージェント５００が導入された状態を示す。セキュリティ・エージェント５００は、セキュリティポリシーに基づいて所定のプロセスやオブジェクトに関連するアクセスを監視するアクセス制御部５０２や監査ログを記録するログ監査部５０４などを含んで構成されている。アクセス制御部５０２は、セキュリティポリシーに則って定義されたアクセス制御リストに基づいてアプリケーションのファイル・アクセスやネットワーク・アクセスを制御する機能部であり、セキュリティポリシーにおいて「アプリＡ」の使用禁止が定義されているような場合、アクセス制御部５０２が備えるＡＰＩフック手段は、ホストＯＳ２０４上で動作する「アプリＡ」からのファイル・アクセス等をフックし、これらに対してエラーを返す。
【０００８】
一方、セキュリティポリシーによって仮想マシン４００の利用が許可されている場合、アクセス制御部５０２のアクセス制御リストは、仮想マシン４００からのファイル・アクセス等を許可するように定義される。ここで問題となるのは、「アプリＡ」が仮想マシン４００のゲストＯＳ４０４上にインストールされた場合である。この場合、本来禁止されるべき「アプリＡ」からのファイル・アクセスは、アクセス制御部５０２をスルーしてしまう。なぜなら、アクセス制御部５０２は、ゲストＯＳ４０４上で動作する「アプリＡ」からのファイル・アクセスと、「アプリＤ」や「アプリＥ」からのファイル・アクセスを区別することができず、いずれも仮想マシン４００（というアプリケーション）からのファイル・アクセスとして認識するため、アクセス制御リストに基づいてこれを許可してしまうからである。
【０００９】
もちろん、この問題は、図１３に示すように、ホストＯＳ２０４上にインストールしたセキュリティ・エージェント５００と同じセキュリティ・エージェント５００をゲストＯＳ４０４上にも重ねてインストールすることによって、一応は解決する。しかし、残念ながら、ことはそう簡単ではない。なぜなら、管理者が強制的にゲストＯＳ４０４側にセキュリティ・エージェント５００をインストールしたとしても、ユーザは、自身の権限でこれを簡単にアンインストールすることができ、仮想マシン環境に権限を持たない管理者は、セキュリティ・エージェント５００が仮想マシンからアンインストールされた事実を知ることができないからである。したがって、管理者にできることと言えば、ユーザに対してセキュリティ・エージェントを導入するようにお願いすることしかなく、後はユーザの良心に任せるよりほか術がないのが現状である。つまり、現状では、仮想マシン環境は、管理者の目が届かないブラックボックスとなっており、これを放置することは、セキュリティ・リスクの増大に直結する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００７−２８７０７８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、上記従来技術における課題に鑑みてなされたものであり、本発明は、安全に管理された仮想マシンの実行環境を構築する方法およびそのために用いられるプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明者らは、安全に管理された仮想マシンの実行環境を構築する方法につき鋭意検討した結果、仮想マシンのウィンドウ画面を選択的にマスクする手段とセキュリティ機能が一体化したプログラムをユーザ端末のホストＯＳ上に管理者権限でインストールした上で、管理者が仮想マシンに導入させたいと考えるセキュリティ機能と上記マスクを解除するため手段が一体化したプログラムをユーザに提供する構成に想到し、本発明に至ったのである。
【００１３】
すなわち、本発明によれば、コンピュータに対し、アプリケーションのアクセスを制御するためのアクセス制御手段と、画面描画命令をフックするための描画命令フック手段であって、仮想マシン・アプリケーションが発行する画面描画命令を選択的にフックする第１のモードと、アプリケーションが発行する画面描画命令をフックする第２のモードとを有する描画命令フック手段と、フックした前記画面描画命令について共通鍵暗号方式による暗号処理を実行する暗号処理手段と、前記描画命令フック手段の動作モードを切り替えるためのモード切替手段とを実現するためのコンピュータ実行可能なプログラムが提供される。本発明においては、前記モード切替手段は、前記プログラムがインストールされたＯＳがホストＯＳまたはゲストＯＳのいずれであるかを判定する手段を備え、前記ＯＳがホストＯＳである実マシンモードのときに、前記描画命令フック手段を前記第１のモードにセットし、前記ＯＳがゲストＯＳである仮想マシンモードのときに、前記描画命令フック手段を前記第２のモードにセットするものとすることができ、前記コンピュータに対し、さらに、前記暗号処理に使用する秘密鍵を管理するための秘密鍵管理手段を実現するように構成することもできる。本発明においては、前記秘密鍵管理手段は、前記秘密鍵としてランダムキーを生成するためのキー生成手段と、他のプロセスとの間で前記ランダムキーの送受信を実行するキー送受信手段とを含むことができ、前記実マシンモードのときに、前記ランダムキーを前記他のプロセスに送信し、前記仮想マシンモードのときに、前記ランダムキーを前記他のプロセスから受信するように構成することができる。また、本発明においては、前記キー送受信手段は、名前付きパイプまたは共有フォルダ機構を介して前記ランダムキーの送受信を実行するように構成することができる。
【００１４】
また、本発明によれば、ユーザ端末について安全に管理された仮想マシンの実行環境の構築を促進するための方法であって、ユーザ端末のホストＯＳ上に第１のセキュリティ・アプリケーションを管理者権限でインストールするステップと、前記ユーザ端末のユーザに対し、第２のセキュリティ・アプリケーションを提供するステップとを含み、前記第１のセキュリティ・アプリケーションは、コンピュータに対し、アプリケーションのアクセスを制御するためのアクセス制御手段と、仮想マシン・アプリケーションが発行する画面描画命令を選択的にフックするための第１の描画命令フック手段と、前記第１の描画命令フック手段がフックした前記画面描画命令について共通鍵暗号方式による暗号処理を実行する暗号処理手段とを実現するためのコンピュータ実行可能なプログラムであり、前記第２のセキュリティ・プログラムは、コンピュータに対し、アプリケーションのアクセスを制御するためのアクセス制御手段と、アプリケーションが発行する画面描画命令をフックするための第２の描画命令フック手段と、前記第２の描画命令フック手段がフックした前記画面描画命令について共通鍵暗号方式による暗号処理を実行する暗号処理手段とを実現するためのコンピュータ実行可能なプログラムである方法が提供される。
【００１５】
さらに、本発明によれば、ホストＯＳ上に仮想マシンが構築された仮想化環境を備え、前記ホストＯＳ上に第１のセキュリティ・エージェントが常駐し、仮想マシンのゲストＯＳ上に第２のセキュリティ・エージェントが常駐するコンピュータ装置であって、前記第１のセキュリティ・エージェントは、前記ホストＯＳ上のアプリケーションのアクセスを制御するためのアクセス制御部と、前記仮想マシンが発行する画面描画命令を選択的にフックするための第１の描画命令フック部と、前記第１の描画命令フック部がフックした前記画面描画命令について共通鍵暗号方式による暗号処理を実行する暗号処理部とを含み、前記第２のセキュリティ・エージェントは、前記ゲストＯＳ上のアプリケーションのアクセスを制御するためのアクセス制御部と、前記ゲストＯＳ上のアプリケーションが発行する画面描画命令をフックするための第２の描画命令フック部と、前記第２の描画命令フック部がフックした前記画面描画命令について共通鍵暗号方式による暗号処理を実行する暗号処理部とを含むコンピュータ装置が提供される。
【発明の効果】
【００１６】
上述したように、本発明によれば、安全に管理された仮想マシンの実行環境を構築する方法およびそのために用いられるプログラムが提供される。
【図面の簡単な説明】
【００１７】
【図１】本実施形態のセキュリティ・エージェントの機能ブロック図。
【図２】本実施形態のセキュリティ・エージェントのインストール時のホストＯＳ画面を示す図。
【図３】仮想化環境が構築されたＰＣのホストＯＳ上に本実施形態のセキュリティ・エージェントがインストールされた状態を示す図。
【図４】判読不能な状態になった仮想マシンのウィンドウ画面を示す図。
【図５】「セットアップ・モード」を設定するためのプロパティ画面を示す図。
【図６】本実施形態のセキュリティ・エージェントが「セットアップ・モード」に設定された状態を示す図。
【図７】本実施形態のセキュリティ・エージェントのインストール時の仮想マシンのウィンドウ画面を示す図。
【図８】ホストＯＳおよびゲストＯＳの両方に本実施形態のセキュリティ・エージェントがイントールされた状態を示す図。
【図９】秘密鍵を動的に更新する構成を採用した本実施形態のセキュリティ・エージェントを搭載したＰＣを示す図。
【図１０】ホストＯＳ型の仮想化環境が構築されたＰＣを示す図。
【図１１】実マシンのホストＯＳ画面の上位レイヤーに仮想マシンのウィンドウ画面が表示された状態を示す図。
【図１２】仮想マシン環境を備える実マシンのホストＯＳ上に従来型のセキュリティ・エージェントが導入された状態を示す図。
【図１３】ホストＯＳおよびゲストＯＳの両方に従来型のセキュリティ・エージェントがイントールされた状態を示す図。
【発明を実施するための形態】
【００１８】
以下、本発明を図面に示した実施の形態をもって説明するが、本発明は、図面に示した実施の形態に限定されるものではない。なお、以下に参照する各図においては、共通する要素について同じ符号を用い、適宜、その説明を省略するものとする。
【００１９】
本発明の方法によれば、安全に管理された仮想マシンの実行環境を構築することができる。本発明の方法は、ホストＯＳ型の仮想化環境に適用されることを前提とするものであり、その実現のために本発明の新規なセキュリティ・アプリケーションを用いる。本発明のセキュリティ・アプリケーションは、ユーザ端末のホストＯＳおよび仮想マシンのゲストＯＳの両方にインストールされることを前提とするプログラム製品として提供される。ここでプログラム製品とは、プログラムを記録した記録媒体およびネットワークを介して提供される形態を含む。本発明に係るプログラム製品は、ＰＣにインストールされることによって以下に説明する機能手段をコンピュータ上に実現する。
【００２０】
図１は、本発明のセキュリティ・アプリケーションの実施形態であるセキュリティ・エージェント１００の機能ブロック図を示す。本実施形態のセキュリティ・エージェント１００は、セキュリティ機能部１１０と画面マスク処理部１２０を含んで構成される。セキュリティ機能部１１０は、少なくともアクセス制御部１１２を含んで構成される。アクセス制御部１１２は、ＯＳ上で動作するアプリケーションのファイル・アクセスおよびネットワーク・アクセスについて強制アクセス制御を実行する機能部であり、管理者が定義するセキュリティポリシーに則って、アプリケーションからのアクセスにつきその許否を判断する。具体的には、セキュリティポリシーがセットされたアクセス制御リスト（ＡＣＬ）に基づいて制御内容を決定する。なお、セキュリティ機能部１１０には、アクセス制御部１１２の他に、ログ監査部などの必要な機能部を適宜追加してもよい。
【００２１】
一方、画面マスク処理部１２０は、描画命令フック部１２２と、暗号処理部１２４と、秘密鍵管理部１２６と、モード切替部１２８とを含んで構成される。描画命令フック部１２２は、ＯＳ上で動作するアプリケーションからＧＤＩ（Graphical Device Interface）に対して発行される画面描画命令をフック（Hook）するＡＰＩフック手段であり、好ましくは、３つの動作モードを有する。すなわち、仮想マシン・アプリケーションが発行する画面描画命令をだけを選択的にフックする第１のモード、ＯＳ上で動作するアプリケーション（ＯＳ付属プログラムを含む）が発行する画面描画命令をフックする第２のモード、および、画面描画命令をフックしない第３のモードである。
【００２２】
暗号処理部１２４は、描画命令フック部１２２がフックした画面描画命令を共通鍵暗号方式によって暗号処理（暗号化／復号）する機能部である。本実施形態においては、共通鍵暗号方式として、ビットごとの排他的論理和演算を利用したブロック暗号やストリーム暗号などの既知の手法を採用することができる。
【００２３】
秘密鍵管理部１２６は、暗号処理部１２４が実行するビットごとの排他的論理和演算（以下、単に、ＸＯＲ演算という）において用いられる鍵データの基となる秘密鍵を管理する機能部である。ブロック暗号を採用する場合、暗号処理部１２４は、秘密鍵管理部１２６から読み出した秘密鍵に基づいて拡大鍵を生成し、これを使用してＸＯＲ演算を実行する。ストリーム暗号を採用する場合、暗号処理部１２４は、秘密鍵管理部１２６から読み出した秘密鍵を初期値とした疑似乱数列（鍵ストリーム）を生成し、これを使用してＸＯＲ演算を実行する。
【００２４】
本発明は、実マシンのホストＯＳおよび仮想マシンのゲストＯＳのそれぞれにインストールされる２つのセキュリティ・エージェント１００が同一の秘密鍵（すなわち、共通鍵）を管理することを前提として成立する。両者の間で秘密鍵の同一性を担保する最も単純な方法は、全てのプログラム製品の製造時に、同一の秘密鍵を設定しておく方法である。この場合、秘密鍵管理部１２６には当該秘密鍵が固定値として保持される。この他に、本発明は、管理者およびユーザのそれぞれがアプリケーションのインストール時に秘密鍵をセットする第２の方法、一方のセキュリティ・エージェント１００が秘密鍵を自動生成して他方にそれを通知する第３の方法を採用することができる。
【００２５】
セキュリティ・エージェント１００は、好ましくは、３つの動作モードを有する。１つめは、実マシンのホストＯＳ上で動作させるための「実マシンモード」であり、２つめは、仮想マシンのゲストＯＳ上で動作させるための「仮想マシンモード」である。３つめは、仮想マシンのゲストＯＳ上にセキュリティ・エージェント１００をインストールするための「セットアップ・モード」である。モード切替部１２８は、描画命令フック部１２２およびアクセス制御部１１２に働きかけてこれら３つの動作モードを実現するための機能部であり、外部からの指示に応じて、あるいは、自動的に、動作モードを切り替える。以上、本実施形態のセキュリティ・エージェント１００の構成について概説してきたが、続いて、セキュリティ・エージェント１００を用いることによって実現される本発明の方法、すなわち、安全に管理された仮想マシンの実行環境を提供する方法について説明する。
【００２６】
本発明の方法においては、管理者は、ユーザのＰＣに本実施形態のセキュリティ・エージェント１００をインストールした上で、これと同様のセキュリティ・エージェント１００をユーザに提供し、仮想マシン上にインストールするように命じる。この場合、一見すると、ユーザが管理者の命令に従う必然性が無いようにも見える。なぜなら、ユーザは、管理者が実際に仮想マシン上にセキュリティ・エージェント１００をインストールされている否かを確認できないことを知っているからである。この点につき、本発明の方法は、ユーザが管理者の命令に従わざるを得ないシチュエーションを創り出す。以下、その具体的な内容について順を追って説明する。なお、以下の説明においては、適宜、図１を参照するものとする。
【００２７】
（ステップ１）
まず、管理者は、ユーザのＰＣのホストＯＳ上に本実施形態のセキュリティ・エージェント１００をインストールする。このとき、セキュリティ・エージェント１００に対し、動作モードおよび秘密鍵が設定される。本発明においてはこれらを自動的に設定するように構成することもできるが、この点については後に説明するとものとし、ここでは、動作モードおよび秘密鍵を手動で設定する実施形態を例にとって説明する。
【００２８】
図２は、インストール作業時のホストＯＳ画面１０００を示す。ホストＯＳ画面１０００には、インストール・ウィザード１００４が表示されている。管理者は、図２(ａ)に示すインストール・ウィザードの動作モード選択画面１００４ａにおいて「実マシンモード」を選択する。続いて、管理者は、図２(ｂ)に示すインストール・ウィザードのパスワード設定画面１００４ｂを介してパスワードを入力する。上述した手順を経てＰＣのホストＯＳ上にインストールされたセキュリティ・エージェント１００のモード切替部１２８には、選択された「実マシンモード」が設定され、秘密鍵管理部１２６には、入力されたパスワードが秘密鍵として設定される。なお、本実施形態においては、セキュリティ・エージェント１００は、管理者権限でホストＯＳ上にインストールされ、ユーザは、これを勝手にアンインストールすることができず、設定内容（動作モード、パスワード）を変更することも制限される。なお、本実施形態においては、インストール・ウィザード画面に代えて、専用のダイアログ画面から動作モードおよびパスワード設定するように構成してもよく、本発明は、それらの具体的な構成に限定されない。
【００２９】
ＰＣのホストＯＳ上にのみセキュリティ・エージェント１００がインストールされた場合、仮想化環境は実質的に利用不能になる。以下、この点を図３に基づいて説明する。図３は、仮想化環境が構築されたＰＣのホストＯＳ２０４上にセキュリティ・エージェント１００がインストールされた状態を示す。図３に示す例の場合、ホストＯＳ２０４上に、「アプリＡ」、「アプリＢ」、「アプリＣ」という３つのアプリケーションとともに、仮想マシン・アプリケーション４００（以下、仮想マシン４００として参照する）が展開されている。なお、図３においては、仮想マシン４００の仮想ハードウェア領域および共通プラットフォームは省略して示す（以下の図において同様）。さらに、仮想マシン４００のゲストＯＳ４０４上には、「アプリＡ」、「アプリＤ」、「アプリＥ」という３つのアプリケーションが展開されている。ここで、「アプリＡ」については、セキュリティポリシーがその使用を禁止しているアプリケーションとして参照されたい。
【００３０】
先に述べたように、ホストＯＳ２０４上のセキュリティ・エージェント１００のモード切替部１２８は、「実マシンモード」に設定される。この場合、モード切替部１２８は、描画命令フック部１２２を第１のモード、すなわち、仮想マシン４００が発行する画面描画命令のみを選択的にフックするモードにセットする。この時、仮想マシン４００を表示するウィンドウが占める領域のうち、クライアント領域と呼ばれるウィンドウ内部のみをフックし、非クライアント領域と呼ばれるウィンドウ枠やタイトル領域はフックしない方式が望ましい。その結果、仮想マシン４００内で動く「アプリＡ」、「アプリＤ」、「アプリＥ」から発行される画面描画命令ならびにゲストＯＳ４０４に付属する描画アプリケーション（壁紙やデスクトップを描画する）から発行される画面描画命令が描画命令フック部１２２によってフックされる。これを受けて、暗号処理部１２４は、秘密鍵管理部１２６に設定されたパスワード（秘密鍵）を読み出し、描画命令フック部１２２がフックした画面描画命令について共通鍵暗号方式による暗号化を実行する。
【００３１】
暗号化された画面描画命令が、画面マスク処理部１２０からホストＯＳ２０４に転送され、図示しないＧＤＩおよびＶｉｄｅｏ Ｄｒｉｖｅｒの処理を経てディスプレイ装置に出力されると、図４に示すように、仮想マシン４００のウィンドウ画面２０００が判読不能な状態になり、ユーザは、画面上の操作ができなくなる。その結果、仮想化環境で動作する全てのアプリケーション（禁止された「アプリＡ」、「アプリＤ」、「アプリＥ」）を利用することが実質的に不可能になる。
【００３２】
（ステップ２）
ユーザのＰＣへのセキュリティ・エージェント１００のインストールが完了した後、管理者は、ユーザに対し、仮想マシン４００上にセキュリティ・エージェント１００をインストールされている場合に限り、ウィンドウ画面のマスクが解除される旨を伝える。その上で、管理者は、ホストＯＳ２０４のセキュリティ・エージェント１００に設定したパスワード情報（秘密鍵）とともに、ゲストＯＳ用のセキュリティ・エージェント１００をユーザに提供し、あとは、ユーザの自主性に任せるだけである。しかし、管理者によってこのようなシチュエーションが創出されると、仮想化環境を利用したいユーザは、管理者が所望するセキュリティ・エージェント１００を仮想マシン４００上にインストールすることを受け入れざるを得なくなる。
【００３３】
（ステップ３）
管理者からのアナウンスを受けて、ユーザは、自ら、仮想マシン４００上にセキュリティ・エージェント１００をインストールする。ただし、仮想マシン４００のウィンドウ画面２０００がマスクされた状態では、インストール作業自体を行うことができないので、ホストＯＳ２０４上のセキュリティ・エージェント１００を「セットアップ・モード」に設定する。先に述べたように、ホストＯＳ２０４上のセキュリティ・エージェント１００の設定内容を変更するには、基本的に管理者権限が必要となるが、本実施形態においては、「セットアップ・モード」の設定についてのみユーザに許可する。この場合、ユーザは、図５（ａ）に示すようなプロパティ画面１００６をセキュリティ・エージェント１００から呼び出して「セットアップ・モード」を設定することができる。
【００３４】
図６は、ホストＯＳ２０４上のセキュリティ・エージェント１００が「セットアップ・モード」に設定された状態を示す。「セットアップ・モード」において、モード切替部１２８は、描画命令フック部１２２を第３のモード、すなわち、画面描画命令をフックしないモードにセットする。その結果、仮想マシン４００から発行される画面描画命令は、セキュリティ・エージェント１００をスルーしてそのままホストＯＳ２０４に転送されるので、仮想マシン４００のウィンドウ画面２０００は、図５（ｂ）に示すような通常の状態に戻る。
【００３５】
併せて、「セットアップ・モード」において、モード切替部１２８は、仮想マシン４００についてのアクセス制限の内容を変更するようにアクセス制御部１１２に依頼する。具体的には、モード切替部１２８は、仮想マシン４００から発行されるファイル・アクセスの内、セキュリティ・エージェント１００のプログラムを収めたＥＸＥファイル２１０へのファイル・アクセスを除く全てのファイル・アクセスならびにネットワーク・アクセスを禁止するようにアクセス制御部１１２に依頼する。アクセス制御部１１２は、これを受けてＡＣＬをそのように修整する。上述した設定条件の下では、ユーザに、ウィンドウ画面２０００を操作してＥＸＥファイル２１０へアクセスすることが許可されるので、セキュリティ・エージェント１００のインストール作業を実行することが可能になる。
【００３６】
なお、「セットアップ・モード」においては、仮想マシン４００から発行される画面描画命令をフックすることなく転送するので、禁止された「アプリＡ」の画面を含む全ての画面が表示されることなるが、アクセス制御部１１２が制御内容を変更することによって仮想マシン４００からのファイル・アクセス（ＥＸＥファイル２１０を除く）ならびにネットワーク・アクセスが全て禁止されるため、この間、「アプリＡ」はフリーズした状態になり、使用することができなくなる。つまり、「セットアップ・モード」においては、ＰＣのセキュリティ状態は適正に維持されるのである。ただし、このままでは、本来許可されるべき「アプリＤ」、「アプリＥ」についても同様に使用することができないことに留意されたい。
【００３７】
図７は、インストール作業時の仮想マシン４００のウィンドウ画面２０００を示す。ウィンドウ画面２０００には、インストール・ウィザード２００４が表示されている。ユーザは、図７(ａ)に示すインストール・ウィザードの動作モード選択画面２００４ａにおいて「仮想マシンモード」を選択する。続いて、ユーザは、図７(ｂ)に示すインストール・ウィザードのパスワード設定画面１００４ｂを介して管理者から提供されたパスワードを入力する。ユーザは、インストール・ウィザードに従ってインストール作業を完了すると、ホストＯＳ２０４上のセキュリティ・エージェント１００のプロパティ画面１００６を再び呼び出して「セットアップ・モード」を解除する。これに応答して、ホストＯＳ２０４上のセキュリティ・エージェント１００は、「実マシンモード」に戻る。あるいは、ホストＯＳ２０４側がインストール完了を自動検出し、これに応答して、ホストＯＳ２０４上のセキュリティ・エージェント１００が「実マシンモード」に戻るように構成することもできる。
【００３８】
図８は、ホストＯＳ２０４およびゲストＯＳ４０４の両方にセキュリティ・エージェント１００がイントールされた状態を示す。なお、図８においては、２つのエージェントを区別するために、ホストＯＳ２０４側をセキュリティ・エージェント１００（Ｈ）とし、ゲストＯＳ４０４側をセキュリティ・エージェント１００（Ｇ）として示す。
【００３９】
図７（ａ）に示したユーザによる動作モード設定によって、セキュリティ・エージェント１００（Ｇ）は「仮想マシンモード」がセットされている。この場合、モード切替部１２８Ｇは、描画命令フック部１２２Ｇを第２のモード、すなわち、ＯＳ上のアプリケーションが発行する画面描画命令をフックするモードにセットする。その結果、仮想マシン４００内で動く「アプリＡ」、「アプリＤ」、「アプリＥ」から発行される画面描画命令ならびにゲストＯＳ４０４に付属する描画アプリケーションから発行される画面描画命令が描画命令フック部１２２Ｇによってフックされる。これを受けて、暗号処理部１２４Ｇは、秘密鍵管理部１２６Ｇに設定されたパスワード（秘密鍵）を読み出し、描画命令フック部１２２がフックした画面描画命令について共通鍵暗号方式による暗号処理（暗号化）を実行する。なお、図７（ｂ）に示したユーザによるパスワード設定によって、秘密鍵管理部１２６Ｇには、セキュリティ・エージェント１００（Ｈ）の秘密鍵管理部１２６Ｈにセットされたものと同一の秘密鍵がセットされていることに留意されたい。
【００４０】
画面マスク処理部１２０ＧにおけるＸＯＲ演算によって暗号化された画面描画命令は、仮想マシン４００からホストＯＳ２０４に対して発行される。このとき、実マシンモードで動作しているセキュリティ・エージェント１００（Ｈ）の描画命令フック部１２２Ｈは、仮想マシン４００から発行された画面描画命令（暗号化された画面描画命令）を選択的にフックする。これを受けて、暗号処理部１２４Ｈは、秘密鍵管理部１２６Ｈに設定されたパスワード（秘密鍵）を読み出し、描画命令フック部１２２Ｈがフックした画面描画命令（暗号化された画面描画命令）について共通鍵暗号方式による暗号処理（復号）を実行する。つまり、ホストＯＳ２０４およびゲストＯＳ４０４の両方にセキュリティ・エージェント１００がイントールされている場合には、同一の鍵データを用いたＸＯＲ演算が２回行われることになるので、仮想マシン４００内で発行される全ての画面描画命令は、平文に戻された状態でホストＯＳ２０４に転送され、その結果、禁止された「アプリＡ」の画面を含む全ての画面が表示されることなる。
【００４１】
一方、セキュリティ・エージェント１００（Ｇ）のアクセス制御部１１２Ｇは、セキュリティ・エージェント１００（Ｈ）のアクセス制御部１１２Ｈと同じ制御内容で動作しているので、「アプリＡ」からのファイル・アクセスならびにネットワーク・アクセスが全て禁止される一方、「アプリＤ」、「アプリＥ」からのアクセスは許可される。つまり、仮想マシン４００にセキュリティ・エージェント１００（Ｇ）が導入されたことにより、仮想マシン４００が実マシンと同じセキュリティ環境に置かれたのである。
【００４２】
以上、説明したように、ユーザは、セキュリティ・エージェント１００（Ｇ）を仮想マシン４００にインストールすること（すなわち、管理者の定義するセキュリティポリシーを遵守すること）と引き替えに、仮想マシン環境の利用を許されることになる。本発明の構成は、ユーザが、セキュリティ・エージェント１００（Ｇ）をアンインストールしたり、管理者の許可なく別の仮想マシン・アプリケーションをインストールしたりすることを強制的に排除するものではないが、実質的に等価な効果をユーザに及ぼすことができ、その結果、安全に管理された仮想マシンの実行環境が構築される。
【００４３】
なお、上述した実施形態においては、セキュリティ・エージェント１００の動作モード（実マシンモード／仮想マシンモード）をユーザの指示によって切り替える態様について示したが、セキュリティ・エージェント１００自身が自律的に動作モードを切り替えるように構成することもできる。この場合、モード切替部１２８は、セキュリティ・エージェント１００がインストールされたＯＳがホストＯＳまたはゲストＯＳのいずれであるかをＯＳから読み出したハードウェア属性やＢＩＯＳ情報に基づいて判定する手段を備える。モード切替部１２８は、セキュリティ・エージェント１００がインストールされたＯＳがホストＯＳであると判定した場合には、セキュリティ・エージェント１００を「実マシンモード」にセットし、ゲストＯＳであると判定した場合には、セキュリティ・エージェント１００を「仮想マシンモード」にセットする。
【００４４】
また、上述した実施形態においては、実マシンのホストＯＳおよび仮想マシンのゲストＯＳのそれぞれにインストールされる２つのセキュリティ・エージェント１００が共有する秘密鍵を固定鍵として設定する構成について説明したが、悪意あるプログラムによって秘密鍵情報が盗用されることを防止するため、秘密鍵が動的に更新されるように構成することもできる。この点について図９を参照して説明する。
【００４５】
図９は、秘密鍵を動的に更新する構成を採用したセキュリティ・エージェント１００を搭載したＰＣ２００（実マシン）を示す。本実施形態におけるセキュリティ・エージェント１００の秘密鍵管理部１２６は、ランダムキーを動的に生成するためのキー生成部１２５と、他のプロセスとの間でランダムキーの送受信を実行するためのキー送受信部１２７を備える。本実施形態における秘密鍵管理部１２６は、２つの動作モードを有する。すなわち、秘密鍵としてランダムキーを動的に生成しこれを他のプロセス宛てに送信する第１のモードと、他のプロセスからランダムキーを受信してこれを秘密鍵としてセット（更新）する第２のモードである。図示しないモード切替部１２８は、秘密鍵管理部１２６の２つの動作モードを切り替える。具体的には、セキュリティ・エージェント１００が「実マシンモード」に設定されている場合には、その秘密鍵管理部１２６を第１のモードにセットし、「仮想マシンモード」に設定されている場合には、その秘密鍵管理部１２６を第２のモードにセットする。
【００４６】
図９に示す例の場合、ホストＯＳ２０４上のセキュリティ・エージェント１００（Ｈ）の秘密鍵管理部１２６Ｈは、第１のモードで動作する。その結果、キー生成部１２５Ｈが秘密鍵としてランダムキーを動的に生成し、キー送受信部１２７Ｈが生成したランダムキーを他のプロセス（すなわち、セキュリティ・エージェント１００（Ｇ）の秘密鍵管理部１２６Ｇ）に宛てて送信する。一方で、ゲストＯＳ４０４上のセキュリティ・エージェント１００（Ｇ）の秘密鍵管理部１２６Ｇは、第２のモードで動作する。その結果、秘密鍵管理部１２６Ｇのキー送受信部１２７Ｇは、他のプロセス（すなわち、セキュリティ・エージェント１００（Ｈ）の秘密鍵管理部１２６Ｈ）からランダムキーを受信し、これを秘密鍵としてセット（更新）する。このとき、秘密鍵管理部１２６Ｈと秘密鍵管理部１２６Ｇの間のプロセス間通信は、名前付きパイプ２２０を介して実行することができる。
【００４７】
また、仮想マシン・アプリケーションが、ホストＯＳ２０４上の特定のファイルについて、ゲストＯＳ４０４からの読み書きを可能にする共有フォルダ機能を備えている場合には、共有フォルダ上に秘密鍵用のファイルを設け、これを介して秘密鍵を共有（送受信）することもできる。なお、秘密鍵情報に対する不正なアクセスを防止するため、秘密鍵の交換に使用する名前付きパイプや共有フォルダには、適切なアクセス制限を設ける他、通信データやファイルを暗号化するなどしてセキュアな状態に置くことが好ましい。
【００４８】
以上、本発明について、セキュリティ・エージェントが「実マシンモード」と「仮想マシンモード」の２つ動作モードを切替可能に有する実施形態をもって説明してきたが、本発明は、上述した実施形態に限定されるものではない。例えば、本発明の方法は、「実マシンモード」の動作設定をデフォルトとする第１のセキュリティ・アプリケーションと、「仮想マシンモード」の動作設定をデフォルトとする第２のセキュリティ・アプリケーションを別々に用意し、管理者が、ユーザ端末のホストＯＳ上に第１のセキュリティ・アプリケーションを管理者権限でインストールした上で、ユーザに対し、第２のセキュリティ・アプリケーションを提供することによって実現することができる。その他、当業者が推考しうる実施態様の範囲内において、本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【００４９】
また、本発明の上記機能は、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）などのオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、本実施形態のプログラムは、ハードディスク装置、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、フレキシブルディスク、ＥＥＰＲＯＭ、ＥＰＲＯＭなどの装置可読な記録媒体に格納して頒布することができ、また他装置が可能な形式でネットワークを介して伝送することができる。
【符号の説明】
【００５０】
１００…セキュリティ・エージェント
１１０…セキュリティ機能部
１１２…アクセス制御部
１２０…画面マスク処理部
１２２…描画命令フック部
１２４…暗号処理部
１２５…キー生成部
１２６…秘密鍵管理部
１２７…キー送受信部
１２８…モード切替部
２００…実マシン
２０２…ハードウェア
２０４…ホストＯＳ
２１０…ＥＸＥファイル
２２０…名前付きパイプ
４００…仮想マシン
４０１…共通プラットフォーム
４０２…仮想ハードウェア領域
４０４…ゲストＯＳ
５００…セキュリティ・エージェント
５０２…アクセス制御部
５０４…ログ監査部
１０００…ホストＯＳ画面
１００４…インストール・ウィザード
１００６…プロパティ画面
２０００…仮想マシンのウィンドウ画面
２００４…インストール・ウィザード
【図１】
0005719244.tif 000002
【図２】
0005719244.tif 000003
【図３】
0005719244.tif 000004
【図４】
0005719244.tif 000005
【図５】
0005719244.tif 000006
【図６】
0005719244.tif 000007
【図７】
0005719244.tif 000008
【図８】
0005719244.tif 000009
【図９】
0005719244.tif 000010
【図１０】
0005719244.tif 000011
【図１１】
0005719244.tif 000012
【図１２】
0005719244.tif 000013
【図１３】
0005719244.tif 000014