(57)【要約】【課題】ハッカー又は悪意のあるプログラムが特権的地位を持ち、当然の成り行きとして、その状態をリセットし、コードが改変されてしまう可能性がある。【解決手段】ハイパーバイザーは、ホストコンピューターシステム上で稼働し、少なくとも１つの仮想マシンを定義する。仮想マシンのアドレス空間が、ハイパーバイザーの制御の下、ホストコンピューターシステムの物理メモリ上にある。ゲストオペレーティングシステムが、仮想マシンにおいて稼働する。ハイパーバイザー及びホストオペレーティングシステムの少なくとも一方が、仮想マシンのアドレス空間の部分に対応するホストコンピューターシステムのアドレス空間の部分を、当該部分が読出し可能であるが書き込み不能なロック状態にセットする。【選択図】図４
2012190446.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ及び当該プロセッサ上で実行可能なプログラムコードを備えるホストコンピューターシステムであって、前記プログラムコードが、
少なくとも１つの仮想マシンを定義するハイパーバイザーのプログラムコードであって、前記仮想マシンのアドレス空間が、当該ハイパーバイザーの制御の下で前記ホストコンピューターシステムの物理メモリ上に存在する、プログラムコードと、
前記仮想マシンのゲストオペレーティングシステムのプログラムコードと、を含み、
前記ハイパーバイザー及び前記ホストコンピューターシステムのホストオペレーティングシステムの少なくとも一方が、前記仮想マシンのアドレス空間の部分に対応する前記ホストコンピューターシステムのアドレス空間の部分を、当該部分が読出し可能であるが書き込み不能なロック状態にセットするように動作する、ホストコンピューターシステム。
【請求項２】
前記仮想マシンのアドレス空間の前記部分が、前記ゲストオペレーティングシステムのプログラムコード、又は前記ゲストオペレーティングシステムの下で稼働するアプリケーションのプログラムコードにより占有される空間を含む、請求項１に記載のホストコンピューターシステム。
【請求項３】
前記ゲストオペレーティングシステムが、前記仮想マシンのアドレス空間の前記部分を、当該部分が読出し可能であるが書き込み不能なロック状態にセットするように動作する、請求項１又は２に記載のホストコンピューターシステム。
【請求項４】
前記仮想マシン内においてロック状態にセットされた前記仮想マシンのアドレス空間の一部に対応すると識別された前記ホストコンピューターシステムのアドレス空間の部分への書き込みのリクエストの受信を識別するべく更に動作する、請求項３に記載のホストコンピューターシステム。
【請求項５】
前記ゲストオペレーティングシステムは、前記ゲストオペレーティングシステムの他の構成要素又は前記ゲストオペレーティングシステムの下で稼働する前記プログラムの他の構成要素が、前記仮想マシンの動作メモリ中にロードされる後であり、前記他の構成要素の稼働の開始前、前記ハイパーバイザーへ信号送信するべく動作する構成要素を含み、
前記ハイパーバイザーは、前記信号に応答し、前記他の構成要素のプログラムコードを含む前記ホストコンピューターシステムのアドレス空間の部分を前記ロック状態にする、請求項１乃至４のいずれか一項に記載のホストコンピューターシステム。
【請求項６】
前記ハイパーバイザー又は前記ホストオペレーティングシステムが、前記仮想マシンのアドレス空間のページのページイン及びページアウトを許容するものであって、前記ロック状態のページがページインするとき、改変に対して保護された特定の記憶領域からのみの前記ページのロードが許容される、請求項１乃至５のいずれか一項に記載のホストコンピューターシステム。
【請求項７】
前記プログラムコードの健全性を、前記仮想マシンへのそのコードのロード時、前記仮想マシン外で検証するべく更に動作する、請求項１乃至６のいずれか一項に記載のホストコンピューターシステム。
【請求項８】
コンピューターシステムの保護方法であって、
少なくとも１つの仮想マシンを規定するハイパーバイザーを前記コンピューターシステム上で稼働させるステップであって、前記仮想マシンのアドレス空間が、前記ハイパーバイザーの制御の下で前記ホストコンピューターシステムの物理メモリ上に存在する、ステップと、
前記仮想マシン上でゲストオペレーティングシステムを稼働するステップと、
前記仮想マシンのアドレス空間の部分に対応する前記ホストコンピューターシステムのアドレス空間の部分を、当該部分が読出し可能であるが書き込み不能なロック状態にセットする、ステップと、
を含む、方法。
【請求項９】
前記仮想マシンのアドレス空間の前記部分が、前記ゲストオペレーティングシステム又は前記ゲストオペレーティングシステムの下で稼働するアプリケーションにより占有される、請求項８に記載のコンピューターシステムの保護方法。
【請求項１０】
前記仮想マシンのアドレス空間の前記部分を、当該仮想マシン内において当該部分が読出し可能であるが書き込み不能なロック状態にセットするステップを更に含む、請求項８又は９に記載のコンピューターシステムの保護方法。
【請求項１１】
前記仮想マシン内においてロックされたアドレス空間に対応するロックされたアドレス空間を前記ホストコンピューターシステムにおいて識別し、当該識別されたロック状態のアドレス空間への書き込みリスエストを前記ホストコンピューターシステムにおいて受信する時にレスポンスを生成する、請求項１０に記載のコンピューターシステムの保護方法。
【請求項１２】
前記ゲストオペレーティングシステムの他の構成要素又は前記ゲストオペレーティングシステムの下で稼働する前記プログラムの他の構成要素が、前記仮想マシンの動作メモリ中にロードされる後であり、前記他の構成要素の稼働の開始前、前記ゲストオペレーティングシステムが、前記ハイパーバイザーへ信号送信し、
前記ハイパーバイザーが、前記信号に応答し、前記他の構成要素のプログラムコードを含む前記ホストコンピューターシステムのアドレス空間の部分を前記ロック状態とする、請求項８乃至１１のいずれか一項に記載のコンピューターシステムの保護方法。
【請求項１３】
前記ハイパーバイザー又はホストオペレーティングシステムが、前記仮想マシンのアドレス空間のページのページイン及びページアウトを許容し、そして、前記ロック状態のページがページインするとき、改変に対して保護された特定の記憶領域からのみの前記ページのロードを許容する、請求項８乃至１２のいずれか一項に記載のコンピューターシステムの保護方法。
【請求項１４】
前記プログラムコードの健全性を、前記仮想マシンへのそのコードのロード時、前記仮想マシン外で検証する、請求項８乃至１３のいずれか一項に記載のコンピューターシステムの保護方法。
【請求項１５】
コンピューター上で実行される際、ホストオペレーティングシステム内のハイパーバイザーを生じさせ、かつ少なくとも１つの仮想マシンを規定させるべく機能するコンピュータープログラムコードを含む非一時的な記憶媒体であって、
前記仮想マシンのアドレス空間が、前記仮想マシンのゲストオペレーティングシステム及び前記ハイパーバイザーの制御の下で前記ホストコンピューターシステムの物理メモリ上に存在し、
前記ホストオペレーティングシステム及び前記ハイパーバイザーの少なくとも一方に、前記仮想マシンのアドレス空間の部分に対応する前記ホストコンピューターシステムのアドレス空間の部分を、当該部分が読出し可能であるが書き込み不能なロック状態にセットさせる、非一時的な記憶媒体。
【請求項１６】
前記コンピュータープログラムコードは、前記ゲストオペレーティングシステムの下で稼働するアプリケーションにより又は前記ゲストオペレーティングシステムにより占有された空間を含む前記仮想マシンのアドレス空間の部分に対応する前記ホストコンピューターシステムのアドレス空間の前記部分を前記ロック状態にセットさせるべく機能する、請求項１５に記載の非一時的な記憶媒体。
【請求項１７】
前記コンピュータープログラムコードが、前記ゲストオペレーティングシステムに、前記仮想マシンのアドレス空間の前記部分を、当該部分が読出し可能であるが書き込み不能なロック状態にセットさせるように機能するコードを含む、請求項１５又は１６に記載の非一時的な記憶媒体。
【請求項１８】
前記コンピュータープログラムコードは、前記ゲストオペレーティングシステムの他の構成要素又は前記ゲストオペレーティングシステムの下で稼働する前記プログラムの他の構成要素が、前記仮想マシンの動作メモリ中にロードされる後であり、前記他の構成要素の稼働の開始前、前記ゲストオペレーティングシステムから前記ハイパーバイザーへ信号送信させるコードを含み、
前記ハイパーバイザーに、前記信号に応答して、前記他の構成要素のプログラムコードを含む前記ホストコンピューターシステムのアドレス空間の部分を前記ロック状態にさせるコードを含む、請求項１５乃至１７のいずれか一項に記載の非一時的な記憶媒体。
【請求項１９】
前記ハイパーバイザー又は前記ホストオペレーティングシステムが、前記仮想マシンのアドレス空間のページのページイン及びページアウトを許容するものであって、
前記コンピュータープログラムコードが、前記ロック状態のページがページインするとき、改変に対して保護された特定の記憶領域からのみの前記ページのロードを許容させるコードを含む、請求項１５乃至１８のいずれか一項に記載の非一時的な記憶媒体。
【請求項２０】
前記プログラムコードの健全性を、前記仮想マシンへのそのコードのロード時、前記仮想マシン外で検証させるコードを更に含む、請求項１５乃至１９のいずれか一項に記載の非一時的な記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ホストコンピューター内の処理で独立コンピューターに見える、ホストコンピューター内の領域の「仮想マシン」（ＶＭ）にてコンピューター上の処理の実行が可能であるが、実際は、仮想マシンは、ホストコンピューターの他の部分において稼働する「ハイパーバイザー」の制御の下、ゲストとして稼働する小さな領域である。ハイパーバイザーは、仮想マシンの識別可能なリソースに対応する実機内での物理リソースを提供することを担う。ある場合には、ゲスト仮想マシンが、自身が物理コンピューター上で稼働するホスト仮想マシン内で稼働する。
【０００２】
例えば、セキュリティー又はリソース管理のために、そのような構成を使用し、仮想マシン内での処理がホストコンピューターの他の部分と干渉することを制限し、又は、実際の理由としては、例えば、アプリケーションが要求する場合、仮想マシンは、ホスト装置のネイティブのオペレーティングシステムとは異なるゲストオペレーティングシステム（ＯＳ）を提供する。
【０００３】
一般的に、ハイパーバイザーは、様々な形態をとることができ、限定するわけではないが、「ベアメタル」ハイパーバイザー、ホストコンピューターのオペレーティングシステムに組み込まれた又は一体化されたハイパーバイザー、又はホストコンピューターのオペレーティングシステムの下のアプリケーション空間で稼働する１以上のハイパーバイザーを含む。「ベアメタル」ハイパーバイザーは、典型的には、オペレーティングシステムが必要とする多くを含むが、仮想マシンの範囲内ではないアプリケーション処理はサポートしない。統合した又は別々のホストオペレーティングシステム及びハイパーバイザーの他の形態は、必須ではないが、ホストオペレーティングシステムの空間内でのアプリケーション処理をサポートしても良い。ホストオペレーティングシステム及びハイパーバイザーが十分に統合されていない場合には、それらの間での機能の分配が変動するかもしれない。
【０００４】
署名を認証して信頼されていないコードを阻止する、又は、それが不適切に改変されていればロードされることを阻止するホストコンピューター内のハードウェア装置、トラスティッド・プラットホーム・モジュール（ＴＰＭ）チップの使用がトラスティッド・コンピューティング・グループ（ＴＣＧ）により提案されている。そのような管理は、ホストコンピューター自身のコード及びオペレーティングシステムとゲスト仮想マシン内で稼働するべきアプリケーションコードの両方の検証（ベリファイ）も含み得る。
【０００５】
しかしながら、その取り組みによっても、ロード後、仮想マシン内のコードの改変を阻止するものではなく、仮に、ハッカー又は悪意のある又は欠陥のあるプログラムが、特権的地位を獲得できたならば、仮想マシンのオペレーティングシステムのレベルまで少なくとも他のコードを変更できてしまう。ＴＰＭは、不適切に修正されたコードのリロードを検出するが、仮想マシンがリブートされる次回まで検出されず、連続性確保のため、オペレーティングシステムは、数週間又はそれよりも長くリブートされないかもしれない。仮にハッカーが十分に用心深く恒常的な修正を残さないのであれば、ＴＰＭは何も検出しないかもしれない。このようなことは、ハッカーが次指令を簡単にすることよりも自身の軌跡を被覆することが重要と考える場合に生じるかもしれない。ハッカーは、自身の指令が検出されないとすれば、将来の好機に同様の方法にてシステムに再侵入することができると推測するかもしれない。また、ハッカーの中には同一のコンピューターに再訪問することを望まない者もいるかもしれず、従って、コードに対して永続的な改変を行わないかもしれない。
【０００６】
近代的オペレーティングシステムの多くにおいては、（オペレーティングシステム及びアプリケーションコード双方の）プログラムコードにより占有されるメモリページ群は、読出し／実行オンリー（ｒｅａｄ/ｅｘｅｃｕｔｅ  ｏｎｌｙ）に設定される。しかしながら、ハッカー又は悪意のあるプログラムが特権的地位を持ち、当然の成り行きとして、その状態をリセットし、コードが改変されてしまう可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００７】
本システム、方法、及びプログラムの一つの実施形態によれば、ゲスト仮想マシンのオペレーティングシステム又はプログラムコードを含むメモリページ群が、ホスト又はハイパーバイザーレベル、又はゲスト仮想マシン外の他のレベルにおいて識別される。そのようなページ群は、次に、ゲスト仮想マシン外において読出し／実行オンリーのステータスにセットされる。
【０００８】
ゲスト仮想マシン外で読出し／実行オンリーステータスを設定することにより、ゲスト仮想マシン内で特権的地位を獲得したハッカー又は悪意のあるプログラムが、これらのページ上のプログラムコードを改変することを妨げることができる。ゲスト仮想マシン内のプログラムコードの不適切な改変を絶対的に阻止するものではないが、それにより、そのような改変が格段に困難になる。これは、ハッカーが、ゲスト仮想マシンからメモリページ群が保護されているレベルまで脱することが必要になるためである。複合システムにおいては、メモリハードウェアとゲスト仮想マシンとの間に２以上の抽象レベルが存在し、システムオペレーターの都合又はハッカーの更なるフラストレーションのために、読出し／実行オンリーの保護が１、２、又はそれ以上のレベルにおいて設定され得る。
【０００９】
本発明の他の側面においては、方法、コンピューター、及びコンピューターシステム、コンピュータープログラム、及びコンピュータープログラムを含む非一時的なコンピューター読み取り可能記憶媒体を含む。
【００１０】
本発明の上述の及び他の側面、特徴、及び効果は、以下の図面と共に提示された本発明の実施形態に係る以下のより端的な説明からより明らかになるだろう。
【図面の簡単な説明】
【００１１】
【図１】図１は、コンピューターシステムの実施形態の模式図である。
【図２】図２は、コンピューターシステムの実施形態の機能ブロック図である。
【図３】図３は、コンピューターシステムの実施形態の機能ブロック図である。
【図４】図４は、フローチャートである。
【発明を実施するための形態】
【００１２】
本発明の実施形態の詳細な次の記述及びこれに付随する図面を参照することにより、本方法及び装置の様々な特徴及び効果を十分に理解することができるだろう。これらの図面により熟考された方法及び装置の実施形態が図示されるが、これらは、当業者にとって明白な代替又は均等な実施形態を排除するものと理解されるべきではない。
【００１３】
図面を参照して図１を最初に参照すると、参照番号２０により略して示されたコンピューター装置の一例は、他の装置と共に、プロセッサ２２、入力及び出力装置２４、２６、ランダムアクセスメモリ（ＲＡＭ）２８、リードオンリーメモリ（ＲＯＭ）３０、磁気ディスク又は他の長期ストレージ３２、及び外部ネットワーク又は他の通信メディアへのインターフェイス３４を有する。
【００１４】
ここで図２も併せて参照すると、コンピューター２０の動作の一例において、コンピューター２０のプロセッサ２２上においてハイパーバイザー３８が稼働する。ハイパーバイザー３８は、オペレーティングシステム（ＯＳ）を干渉することが無いコンピューター２０のハードウェア上で稼働する「ベアメタル」ハイパーバイザーであっても良く、実際上、それ自体の最小のオペレーティングシステムを含む。本実施形態においては、「ベアメタル」ハイパーバイザーは、次に、コンピューター２０のネイティブ環境とは異なる環境の仮想マシン（ＶＭ）４４を生成するために単に動作する。ハイパーバイザー３８は、どのプロセス（ハイパーバイザー３８自体を含む）がＲＡＭ２８及び長期ストレージ３２の各領域を使用することが許されるかをトラック（記録／記憶）するページ及びアドレス変換テーブル群４２を備えるメモリマネージャ４０を含む。ページテーブル群４２は、仮想マシン４４のアドレス空間内のメモリアドレスをメモリハードウェアの機械アドレスに適合させる。
【００１５】
ハイパーバイザー３８は、コンピューター２０のアドレス空間の領域を制御し、この範囲内でハイパーバイザー３８が仮想マシン４４に空間を割り当てることができる。仮想マシン４４は、仮想マシン４４のローカルなアドレス空間内で稼働する「ゲスト」オペレーティングシステム４６を有する。１以上のアプリケーション又は他のプロセス５０が、ゲストオペレーティングシステム４６の下、仮想マシン４４上で実行される。プロセス５０は、ゲストオペレーティングシステム４６により制御されたページテーブル群４８を介して仮想マシン４４のアドレス空間内でメモリアクセスが許される。プロセス５０は、ハイパーバイザー３８の制御の下、入出力装置２４、２６及び外部インターフェイス３４といったコンピューター２０の物理リソースに対するアクセスが許可される。しかしながら、ハイパーバイザー３８により許可される場合を除いて、仮想マシン４４外のリソース及び活動は、仮想マシン４４内のプロセス５０には不可視である。
【００１６】
図３も併せて参照すると、コンピューター２０の動作の他の例においては、オペレーティングシステム（ＯＳ）５２が、コンピューター２０のプロセッサ２２上で稼働する。ハイパーバイザー５６を含む様々なアプリケーションプログラム及び他のプロセス５４が、オペレーティングシステム５２の下で稼働する。オペレーティングシステム５２は、どのアプリケーション又は他のプロセス５４がＲＡＭ２８及び長期ストレージ３２の各領域を使用することが許されるのかをトラック（記録／記憶）するページテーブル群６０を有するメモリマネージャ５８を含む。ページテーブル群６０は、プロセス５４により使用されるメモリアドレスをメモリハードウェアの機械アドレスに適合させても良く、これにより、プロセス５４が、コンピューター２０の特定のハードウェア資源用に構成されることなく実行される。
【００１７】
ハイパーバイザー５６は、オペレーティングシステム５２のアドレス空間の領域を制御し、この範囲内で、ハイパーバイザー５６が１以上の仮想マシン７２に空間を割り当てることができる。各仮想マシン（ＶＭ）７２は、仮想マシン７２にローカルなアドレス空間内で稼働する「ゲスト」オペレーティングシステム７４を有する。ハイパーバイザー５６は、アドレス変換テーブル６２を管理し、これにより、仮想マシン７２のアドレス空間内のアドレスが「ホスト」オペレーティングシステム５２のアドレス空間内のアドレスにマップ化（対応／関連付け）される。１以上のアプリケーション又は他のプロセス７６が、ゲストオペレーティングシステム７４の下、仮想マシン７２上で実行される。プロセス７６は、ゲストオペレーティングシステム７４により制御されたページテーブル群７８を介して仮想マシン７２のアドレス空間の範囲内でメモリアクセスすることが許される。プロセス７６は、ハイパーバイザー５６の制御の下、入力及び出力装置２４、２６及び外部インターフェイス３４といったコンピューター２０の物理リソースへのアクセスが許可される。しかしながら、ハイパーバイザー５６により許可される場合を除いて、仮想マシン７２外のリソース及び活動は、仮想マシン７２内のプロセス７６には不可視である。
【００１８】
ページテーブル及びアドレス変換テーブルは、典型的には、これらが関連するメモリページの属性を記憶し、ページの内容が変更可能である程度／範囲の特定を含む。ある共通の属性値は、「読出し／実行オンリー」であり、この下では、オペレーティングシステムは、非特権（ｕｎｐｒｉｖｉｌｅｇｅｄ）のアプリケーションにページ上のデータの読み出しを許し、これは、ページ上のプログラムコードが特権無しに実行されることを包含するが、そのページが改変されることは許さない。ページテーブル自体が保護されており、これにより、非特権のプロセス又はユーザーによりそれが編集され得ることはない。
【００１９】
独自のコードを含むプログラムコードの望まない改変を防止するためには、ゲストオペレーティングシステム４６、７４は、ページテーブル４８、７８内の「読出し／実行オンリー」属性値を、保護されるべきコードを含むページ群に対して、スタートアップ時、関連するコードがこれらのページにロードされるや直ぐに割り当てても良い。しかしながら、もしハッカー又は悪意のある又は欠陥のあるコードが仮想マシン４４、７２内で特権的地位を獲得したとしたら、ページテーブル属性値を変更することができ、改変されるべきではないコードの改変が許容されてしまう。
【００２０】
ここで図４を参照すると、コンピューター２０が図３に示す構成にて起動すると、ステップ１０２においてホストオペレーティングシステム５２が起動／ブートする。ステップ１０４において、安全なメモリからのその起動、又は安全なハードウェア装置、例えば、オペレーティングシステムプログラムのハッシュ又はデジタル署名を検証するトラスティッド・プラットホーム・モジュール・チップにより、ホストオペレーティングシステム５２の健全性／完全性（ｉｎｔｅｇｒｉｔｙ）が確保されている。オペレーティングシステム５２は、起動される直前、ディスクストレージ３２上のプログラムを検査することにより、又は起動直後かつプロセッサ２２の制御がオペレーティングシステム５２へ移行する前にＲＡＭイメージを検査することにより検証／ベリファイされるかもしれない。簡潔の便宜において、ステップ１０４は、ステップ１０２の後に示されている。ステップ１０６では、オペレーティングシステム５２を含むページ群用のページテーブル６０のエントリー群が、読出し／実行オンリーにセットされる。現実のコンピューターシステムにおいては、典型的なオペレーティングシステム５２が、単一実行可能なプログラムよりも多くから構成されるものと理解でき、ステップ１０２、１０４、及び１０６が、繰り返し、連続的、並列的、又は重複して、オペレーティングシステム５２の異部分／異パーツのために実行される必要があるかもしれない。適切に順序立てをすることは、当該分野における通常の技術の範囲内にあり、適切な順序は、包含されるコンピューターハードウェア及びオペレーティングシステムに依存して変動するだろう。簡潔性の便宜においては、従って、繰り返し説明は、更に詳細には記述されない。
【００２１】
オペレーティングシステム５２が起動して保護された後に限り、ハイパーバイザー５６及び他のプロセス５４がステップ１０８にて立ち上げられる。アプリケーション群５４がオペレーティングシステム５２よりも信頼されていないため、オペレーティングシステム５２が保護された後に限り、それらは起動される。オペレーティングシステム５２が保護された後に限りアプリケーション群５４が起動されるため、それらは、オペレーティングシステム５２ほど信頼される必要がない。好ましくは、ステップ１０８が、ステップ１０２、１０４、及び１０６と同様、アプリケーション群５４の認証、起動、及び保護の各ステップを含む。特に、本実施形態においては、ハイパーバイザー５６が、十分に検証されて保護される。なぜなら、ハイパーバイザー５６との悪意性の干渉が、仮想マシン７２の健全性／完全性（ｉｎｔｅｇｒｉｔｙ）を脅かし得るためである。
【００２２】
図２に示す構成では、ハイパーバイザー３８及びホストオペレーティングシステムが異なる構成要素ではなく、ステップ１０３では、ハイパーバイザー３８が起動する。上述のように、これが、それ独自がオペレーティングシステムである「ベアメタル」ハイパーバイザーであっても良い。次に、ハイパーバイザー３８がステップ１０５において検証され、ステップ１０７においてそれ自身のメモリページ群をロックし、つまりは、ハイパーバイザーの起動のステップ１０８と差異がない。
【００２３】
ステップ１１０において、ハイパーバイザー３８、５６が仮想マシン４４、７２を作成する。ステップ１１２において、ゲストオペレーティングシステム４６、７４が、ステップ１０２、１０４、及び１０６と同様、起動され、検証され、そして保護される。ゲストオペレーティングシステム４６、７４の検証は、ロード後にＲＡＭイメージの検査によりなされるが、その検査は、ホスト装置内で所望のように行われる。しかしながら、仮に、ホストオペレーティングシステム５２又はハイパーバイザー３８及びゲストオペレーティングシステム４６、７４の双方が、トラスティッド・プラットホーム・モジュール・チップといったハードウェアによる検証をサポートするとしても、トラスティッド・プラットホーム・モジュール・チップが、両方のオペレーティングシステムにその検証を報告するように構成されるだろう。ホストオペレーティングシステム５２について上述したように、ゲストオペレーティングシステム４６、７４は、そのメモリページ群が自身のページテーブル４８、７８で読出し／実行オンリーに設定することにより保護される。しかしながら、ゲストオペレーティングシステム４６、７４が仮想マシン４４、７２にあるため、そのページテーブル４８、７８が、仮想メモリページ群に関連し、これは、図２のテーブル４２といったホストページ及びアドレス変換テーブル群を介してマッピングされ、又は図３においては、アドレス変換テーブル６２を介してページテーブル６０へマッピングされ、ページテーブル６０を介して実際の機械メモリハードウェアへマッピングされる。
【００２４】
ステップ１１４においては、ゲストオペレーティングシステム４６、７４は、ハイパーバイザー３８、５６に信号を送り、仮想マシンのアドレス空間の特定のページ群がロードされロックされる。本実施形態においては、その信号が、仮想マシン４４、７２のアドレス空間内におけるロックされるべきページの位置を含む。もし特定のゲストオペレーティングシステム４６、７４が十分に理解され、高度に予測可能なロード手順を有し、そして、変化しないのであれば、オペレーティングシステムが占有する仮想マシン４４、７２のアドレス空間の範囲を事前に同意することが可能であり、とすれば、ロックされるべきページがその信号により特定される必要がないかもしれない。ゲストオペレーティングシステム４６、７４が一般的に入手可能なオペレーティングシステムに基づくものであるとき、ハイパーバイザー３８、５６に信号を送信するコードが、本方法を実施するために改変された、ゲストオペレーティングシステム４６、７４の唯一の部分であるかもしれない。できる限り、ロックされたページ群にあるゲストオペレーティングシステム４６、７４の部分に仮想マシン４４、７２の制御が移行する前、ページテーブル４８、７８がロックされ、この信号が送信される。ゲストオペレーティングシステム４６、７４の信頼部分は、つまりは、あるオペレーティングシステムにおいては、ゲストオペレーティングシステム４６、７４のメインコードの部分というよりは、むしろ起動ローダーの部分にある。ゲストオペレーティングシステム４６、７４が、トラスティッド・プラットホーム・モジュール・チップ又はロード時にコードを認証するための他の規定（措置）をサポートする場合、その規定（措置）に信号が関連付けられて、認証されたものとコードを認定する通常工程への付加としてハイパーバイザー３８、５６に信号送信する。このコードを置く最適な場所は、ゲストオペレーティングシステム４６、７４として用いられる特定のオペレーティングシステムの設計及び挙動により大きく決定されるだろう。
【００２５】
ステップ１１６では、ゲストオペレーティングシステム４６、７４を含む特定のページ（群）を読出し／実行オンリーにロックするべく、ハイパーバイザー５６が、アドレス変換テーブル６２を、及び／又はホストオペレーティングシステム５２又はハイパーバイザー５６がページテーブル６０を、又はハイパーバイザー３８が、ページテーブル４２をセットする。ゲストオペレーティングシステム４６、７４から信号を受信するコードは、本方法を実行するために修正されたハイパーバイザー３８、５６の唯一の部分であるかもしれない。
【００２６】
ホストオペレーティングシステム５２又はハイパーバイザー３８が、仮想マシン４４、７２に可視的なページスワッピングをサポートするとき、ページテーブル４２又は６０又はアドレス変換テーブル６２で「ロック」されたページ群をスワップすることが必要になるかもしれない。この場合、スワップアウトされるページ群を単純に欠落させても良い。なぜなら、これらは、如何様にも改変されるべきものではなく、そして、スワップインされるページ群が、改変に対して保護されたＲＯＭ３０又は長期ストレージ３２内の特定の位置からのみロードされるように許可される。そして、もしロックされたページがなぜか改変されたとしても、その改変は、通常のページスワッピングの結果としてキャンセルされるかもしれない。典型的な構成においては、仮想マシン４４、７２のアドレス空間内のロックされたページ群の位置が変化せず、従って、問題のページ群が、仮想マシン側のページ及びアドレス変換テーブル４２又はアドレス変換テーブル６２上で簡単にトラックされ得る。しかしながら、もしロックされたページ群がホスト装置側のテーブル４２、６２上において、例えば、ページテーブル群６０においてトラックされるならば、どのページがロックされているのかを示す属性は、ページ変換業務の変化に動的にアップデート（更新）される必要があるだろう。
【００２７】
ゲストオペレーティングシステム４６、７４が十分に保護された後に限り、ステップ１１８において、アプリケーション５０、７６が、ゲストオペレーティングシステム４６、７４内で実行される。アプリケーション５４について上述したように、アプリケーション５０又は７６が、オペレーティングシステム４６又は７４よりも信頼されていないため、これらは、オペレーティングシステム４６又は７４が保護された後に限り立ち上げられる。アプリケーション５０、７６が、オペレーティングシステム４６又は７４が保護された後に限り起動するため、これらは、オペレーティングシステム４６又は７４ほど信頼される必要がない。好ましくは、ステップ１１８が、ステップ１１２、１１４、及び１１６と同様、アプリケーション群５０又は７６の検証、起動、及び保護の各ステップを含む。
【００２８】
ステップ１２０において、アプリケーション群５０又は７６が稼働し、意図したように稼働する利用価値がある任意の目的を達成する。
【００２９】
ステップ１２２では、ハッカー９０（図１参照）が、外部インターフェイス３４を介して仮想マシン４４、７２へのアクセスを獲得し、ステップ１２４において、ハッカーが、何らかの不正目的に従事させるようにゲストオペレーティングシステム４６、７４、又はアプリケーション５０、７６を改変又は改変しようと試みる。ゲストオペレーティングシステム４６、７４、及びアプリケーション５０、７６を含むページ群が、読出し／実行オンリーとしてページテーブル４８、７８により規定されるため、ハッカー９０は、そのように為すことができない。
【００３０】
ステップ１２６では、ハッカーが、仮想マシン４４、７２の範囲内で特権（レベル）を獲得し、これにより、ページテーブル４８、７８の保護を無効にすることが可能になり、そして、ゲストオペレーティングシステム４６、７４、又はアプリケーション５０、７６を含むメモリページ群の編集権限が与えられる。ステップ１２８では、ハッカーが、そのようなページ群を編集するように試みる。しかしながら、ステップ１３０において、編集が失敗する。なぜなら、問題となっているページは、依然として、ページテーブル６０又はアドレス変換テーブル６２、又は双方、又はページ及びアドレス変換テーブル４２において、読出し／実行オンリーとして規定されているためである。もしハッカー９０が、仮想マシンにいることを理解しないのであれば、この失敗は不可解であるだろう。仮に、ハッカー９０が、仮想マシン内にいることを理解していたとしても、ホスト装置のページテーブル４２、６０を編集するため、仮想マシン４４、７２から脱出するという課題にまず直面する。
【００３１】
通常の動作においては、ステップ１３０は生じるべきものではない。なぜなら、ステップ１３０にて阻止された如何なる書き込みは、ステップ１２４にて事前に阻止されるべきであったためである。メモリマネージャ４０、５８、又はハイパーバイザー５６が、ステップ１２４において阻止されるべきであったライト動作をステップ１３０において識別することができたならば、それは、何か不適当な事態が生じている強い示唆になるだろう。ページテーブル群４８、７８の保護が失敗した又はハッキングされた、又は、ホストシステム内の誤動作により、生じるべきではないメモリアクセスを生じさせていることが例示される。
【００３２】
専用のアドレス変換テーブル６２においてページ群がロックされているとき、唯一のロックされたページ群は、ステップ１１４において信号送信されたものであるべきであり、これらのページの全てがゲストページテーブル４８、７８においてロックされるべきである。この場合において、ロックされたページに対する如何なる書き込みトライも疑わしい。ページテーブル４２、６０においてページがロックされているとき、そのページテーブルは、ホストオペレーティングシステム５２、ハイパーバイザー３８、５６、及び／又はホストアプリケーション群５４のページをロックしているかもしれない。しかしながら、明示的な属性をページテーブル４２、６０に設定するか、又は、仮想マシンに割り当てられたことが既知であるアドレス空間の範囲に対してページ群を適合させることにより、ロックされた仮想マシンのページ群が識別されるだろう。これら実施形態の如何なる態様においても、不適切な書き込みトライが、ステップ１３０において阻止されると、その不適切な書き込みトライがそのように識別され、そして、ステップ１３２において、適切な警告が発令されるだろう。例えば、後の診断での使用のために侵犯がログ付され、コンソール上においてメッセージが表示され、そうでなければヒト管理者に対して送信され、又は、当業者に知られたように他の警戒策が活性化されるだろう。
【００３３】
ステップ１３４において、ハッキングが失敗し、コンピューター２０がステップ１２０に戻り、通常動作を継続する。
【００３４】
具体的な実施形態を記述してきたが、本発明の精神又は添付請求項の範囲から逸脱することなく様々な変形が可能であり、異なる実施形態の特徴が一つの実施形態に組み合わせることもできる。
【００３５】
例えば、簡潔性の便宜のため、単一のプロセッサ２２を有するコンピューター２０を記述してきた。実際には、コンピューター２０が、複数のプロセッサを有し、複数のコンピューターのネットワーク又は他の構成であっても良い。単一のホストオペレーティングシステム５２の下に稼働する単一の仮想マシン７２について記述してきたが、実際には、単一ハイパーバイザー下の複数の仮想マシンを含む構成、及び／又は物理コンピューターのネイティブオペレーティングシステム下で稼働するホスト仮想マシン群内で稼働するゲスト仮想マシン群を包含する複雑構成が可能である。
【００３６】
ベアメタルハイパーバイザー３８の実施形態、及び別々のプログラムとしてのホストオペレーティングシステム５２及びハイパーバイザー５６の実施形態であって、ホストオペレーティングシステム５２の下のアプリケーション空間で稼働するハイパーバイザー５６を具備する実施形態について記述してきた。更なる実施形態においては、ハイパーバイザー５６が、ホストオペレーティングシステム５２に統合され、ホストオペレーティングシステム５２が、ホストレベルプロセス５４及び／又は複数のハイパーバイザー５６をサポートする全面的なオペレーティングシステムである。
【００３７】
システム構成の選択を担当するヒト管理者の識別は、未決であれば、システム間で異なるだろう。しかしながら、大きなシステムにおいては、仮想マシン７２が、ホストコンピューター２０の管理者とは異なる「仮想」管理者を有するかもしれない。従って、ゲストオペレーティングシステム７４にとっては、ステップ１１４において信号を発行することができたほうが望ましく、信号の発行時点又はその事前のいずれかにおいて、仮想マシンとホストコンピューターの各領域間の他の通信を伴うことなく、ハイパーバイザー５６がこれらの信号に応じて稼働しても良い。
【００３８】
本実施形態においては、ハッカーによる外部からの直接攻撃に対して保護されるものとして仮想マシン７２を説明したが、当業者は、開示されたシステム及び方法が、仮想マシン７２の範囲内から生じる混乱、例えば、バギーコード（バグのあるコード）又は事前に潜在的に導入された悪意のあるコードにより生じる混乱に対して有効な保護も提供することができるものと理解するだろう。
【００３９】
ゲストページテーブル７８においてページをロックすることなく、ページテーブル６０又はアドレス変換テーブル６２においてアドレスページをロックすることも可能であろう。しかしながら、これにより、ゲストオペレーティングシステム７４がロックされたページの変更を真摯に許可し、仮想マシン７２内で解決することができないエラーが生じてしまうというリスクを招く。従って、ホストレベルにおいてロックされた全てのページ群が仮想マシン７２内でもロックされることが望ましい。
【００４０】
上述のところからすれば、本発明の範囲を示唆するものとして、前述の明細書よりは添付請求項を参照すべきである。
【符号の説明】
【００４１】
２０      ：ホストコンピューター
２２      ：プロセッサ
２４      ：入出力装置
３２      ：長期ストレージ
３４      ：外部インターフェイス
３８      ：ベアメタルハイパーバイザー
４０      ：メモリマネージャ
４２      ：ページテーブル
４２      ：アドレス変換テーブル
４４      ：仮想マシン
４６      ：ゲストオペレーティングシステム
４８      ：ページテーブル
５０      ：アプリケーション
５０      ：プロセス
５２      ：ホストオペレーティングシステム
５４      ：ホストアプリケーション群
５６      ：ハイパーバイザー
５８      ：メモリマネージャ
６０      ：ページテーブル群
６２      ：アドレス変換テーブル
７２      ：仮想マシン
７４      ：ゲストオペレーティングシステム
７６      ：プロセス
７８      ：ページテーブル
９０      ：ハッカー
【図１】
2012190446.tif 000003
【図２】
2012190446.tif 000004
【図３】
2012190446.tif 000005
【図４】
2012190446.tif 000006