(57)【要約】【課題】クライアントから利用される仮想計算機に割り当てられている記憶空間に格納された全てのコード群をスキャンできるようにする。【解決手段】ハイパバイザを有する計算機システムが、クライアントから利用される第一種の仮想計算機の外部に、第一種の仮想計算機に割り当てられている記憶空間からコード群を読み出しそのコード群をスキャンするスキャナを有する。具体的には、例えば、ハイパバイザの管理対象として、第一種の仮想計算機の他に、クライアントに対して隠蔽される第二種の仮想計算機が用意される。スキャナが、第一種の仮想計算機の記憶空間からコード群を読み出すアシストと、読み出されたコード群をスキャンするエンジンとで構成される。エンジンが、第二種の仮想計算機で実行され、アシストが、ハイパバイザで実行される。【選択図】図１
2010055318.tif 000002
【特許請求の範囲】
【請求項１】
クライアントから利用される第一種の仮想計算機を管理するハイパバイザと、
前記第一種の仮想計算機に割り当てられている記憶空間から、コード群を読み出し、読み出された前記コード群をスキャンする、前記第一種の仮想計算機の外部に設けられたスキャナと
を備える計算機システム。
【請求項２】
前記記憶空間は、前記第一種の仮想計算機で稼働する第一のＯＳ（オペレーティングシステム）が管理し前記第一種の仮想計算機に割り当てられている第一のメモリ空間であり、
前記ハイババイザが、前記第一種の仮想計算機の他に、前記クライアントに対して隠蔽されている第二種の仮想計算機を制御し、
前記第一種の仮想計算機が、前記第一のメモリ空間を構成する各ページを前記第一のＯＳが管理するための第一のページテーブルを管理し、
前記第二種の仮想計算機が、前記第二種の仮想計算機に割り当てられている第二のメモリ空間を構成する各ページを管理するための第二のページテーブルを管理し、
前記ハイババイザが、前記第一のページテーブルと同期した第一のシャドウページテーブルと、前記第二のページテーブルと同期した第二のシャドウページテーブルとを管理し、前記第二のシャドウページテーブルを基に特定された、前記第二のメモリ空間内のＭＭＩＯ（Memory Mapped I/O）空間に、仮想デバイスを割り当て、
前記仮想デバイスに、架空の空間であるイニシエータ空間が用意されており、
前記スキャナが、エンジンとアシストで構成されており、
前記第二種の仮想計算機が、前記エンジンを実行し、
前記ハイパバイザが、前記アシストと、実体としての空間であり前記イニシエータ空間と対をなすターゲット空間が用意された仮想デバイスエミュレータとを実行し、
前記エンジンが、
前記第一のメモリ空間内の読出し元アドレスを含んだ取得要求を仮想レジスタに設定し、前記ハイパバイザを意識しない命令である一般命令と異なり前記ハイパバイザを意識した特殊な命令であるハイパバイザ呼出し命令を発行する命令発行部と、
前記ハイパバイザ呼出し命令に対して前記ハイパバイザから前記仮想レジスタに設定された戻り値を解析する戻り値解析部と、
前記戻り値を基に特定されたターゲットアドレスを指定したＭＭＩＯアクセスを行うＭＭＩＯアクセス部と、
前記ＭＭＩＯアクセスの結果として受け取ったコード群をスキャンするスキャン部と
を有し、
前記アシストが、
前記仮想レジスタに設定されている前記取得要求を受理する要求受理部と、
前記取得要求の受理に応答して、前記第二のシャドウページテーブルを基に、前記ターゲット空間のうちの使用可能なメモリアドレスを検索する検索部と、
前記読出し元アドレスが表す前記第一のメモリ空間から、前記第一のページテーブルの改変を起こさない方式であるリードオンリー方式でコード群を読み出すデータ取得部と、
前記ハイパバイザによって前記ＭＭＩＯアクセスが捕捉された場合に、前記仮想デバイスエミュレータを呼び出し、前記ＭＭＩＯアクセスの結果に前記読み出されたコード群を含めるレスポンス生成部と
を有し、
前記ＭＭＩＯアクセスとは、前記イニシエータ空間に対するアクセスであり、
前記ターゲットアドレスは、前記検索部により見つけられたメモリアドレスである、
請求項１記載の計算機システム。
【請求項３】
前記ハイパバイザが、前記第二種の仮想計算機を作成し、前記作成した第二種の仮想計算機に割り当てられた前記第二のメモリ空間内の前記ＭＭＩＯ空間に、前記仮想デバイスを割り当て、
前記アシストが、前記ターゲット空間に、前記ハイパバイザの公開鍵を格納し、
前記エンジンが、
前記公開鍵が格納されている領域に対応したメモリアドレスを指定した前記ＭＭＩＯアクセスにより、前記ターゲット空間から前記公開鍵を取得し、所定の認証情報を前記公開鍵で暗号化することにより暗号文を生成し、前記生成した暗号文を前記ＭＭＩＯアクセスにより前記ターゲット空間に書き込む暗号化部、を有し、
前記命令発行部が、前記暗号文が格納されている領域に対応したメモリアドレスである暗号文アドレスを含んだ認証要求を前記仮想レジスタに設定して、前記ハイパバイザ呼出し命令を発行し、
前記要求受理部が、前記仮想レジスタに設定されている前記認証要求を受理し、
前記アシストが、
前記公開鍵とペアになっている秘密鍵と、
前記認証要求の受理に応答して、前記暗号文アドレスから特定される、前記ターゲット空間内の領域、に格納されている前記暗号文を、前記秘密鍵で復号化し、前記復号化により得られた認証情報が正当か否かの第一の判断を行う認証部と
を有し、
前記ハイパバイザ呼出し命令を前記ハイパバイザが受けた場合、前記ハイパバイザ呼出し命令の発行元が、前記認証部で前記第一の判断の結果が否定的となった仮想計算機であれば、前記ハイパバイザ呼出し命令の実行が不可である、
請求項２記載の計算機システム。
【請求項４】
前記ハイパバイザが、前記作成した第二種の仮想計算機のＩＤを前記認証部に設定し、
前記認証部は、前記認証要求の発行元の第二種の仮想計算機のＩＤが前記設定されたＩＤに適合するか否かの第二の判断を行い、前記第二の判断の結果が肯定的の場合に、前記第一の判断を行い、前記第二の判断の結果が否定的の場合に、前記第一の判断を非実行とする、
請求項３記載の計算機システム。
【請求項５】
前記アシストが、マッピング変換部を有し、
前記マッピング変換部は、前記第一のメモリ空間のメモリアドレスと前記ターゲットイニシエータ空間内のメモリアドレスとの対応関係を表す変換テーブルを保持し、前記読出し元アドレスに対して、前記見つけられたメモリアドレスである前記ターゲットアドレスがマッピングされるよう前記変換テーブルを更新し、
前記データ取得部が、前記ハイパバイザによって前記ＭＭＩＯアクセスが捕捉された場合に、前記更新後の変換テーブルを基に特定された、前記ターゲットアドレスに対応したメモリアドレスが表す、前記第一のメモリ空間内の領域から、前記リードオンリー方式でコード群を読み出す、
請求項２乃至４のうちのいずれかに記載の計算機システム。
【請求項６】
前記データ取得部が、前記読出し元アドレスが表す前記第一のメモリ空間から前記リードオンリー方式で読み出したコード群を、前記見つけられたメモリアドレスが表す、前記ターゲット空間内のコピー先領域にコピーし、
前記ＭＭＩＯアクセスの結果に含まれる、前記読み出されたコード群は、前記コピー先領域から取得されるコード群である、
請求項２乃至４のうちのいずれかに記載の計算機システム。
【請求項７】
前記ターゲット空間は、ヘッダ部とデータ部とを有し、
前記ヘッダ部に、前記読出し元アドレス及び前記ターゲットアドレスを含んだヘッダ情報が格納され、
前記ターゲットアドレスは、前記データ部のメモリアドレスである、
請求項２乃至６のうちのいずれか１項に記載の計算機システム。
【請求項８】
前記第一のページテーブルでは、前記第一のメモリ空間を構成する複数のページのうちのどのページが更新されたコード群を含んだダーティページであるかが管理されており、
前記データ取得部は、前記読出し元アドレスが表すページのうちダーティページからのみ前記リードオンリー方式でコード群を読み出す、
請求項２乃至７のうちのいずれか１項に記載の計算機システム。
【請求項９】
前記ハイパバイザが、前記第一種の仮想計算機の他に、前記クライアントに対して隠蔽されている第二種の仮想計算機を管理し、
前記スキャナが、前記記憶空間からコード群を読み出すアシストと、前記読み出されたコード群をスキャンするエンジンとで構成されており、
前記エンジンが、前記第二種の仮想計算機で実行され、
前記アシストが、前記ハイパバイザで実行される、
請求項１記載の計算機システム。
【請求項１０】
前記第二種の仮想計算機に割り当てられた第二のメモリ空間内のＭＭＩＯ（Memory Mapped I/O）空間に、仮想デバイスが割り当てられており、
前記エンジンが、前記仮想デバイスへのＭＭＩＯアクセスを行うことで、前記第一のメモリ空間から読み出されたコード群を取得する、
請求項９記載の計算機システム。
【請求項１１】
前記エンジンが、以下の（１１Ｅ−１）乃至（１１Ｅ−４）を実行し、
（１１Ｅ−１）前記第一のメモリ空間内の読出し元アドレスを含んだ取得要求を仮想レジスタに設定し、前記ハイパバイザを意識しない命令である一般命令と異なり前記ハイパバイザを意識した特殊な命令であるハイパバイザ呼出し命令を発行する、
（１１Ｅ−２）前記ハイパバイザ呼出し命令に対して前記ハイパバイザから前記仮想レジスタに設定された戻り値を解析する、
（１１Ｅ−３）前記戻り値を基に特定されたターゲットアドレスを指定したＭＭＩＯアクセスを行う、
（１１Ｅ−４）前記ＭＭＩＯアクセスの結果として受け取ったコード群をスキャンする、
前記アシストが、以下の（１１Ａ−１）乃至（１１Ａ−４）を実行し、
（１１Ａ−１）前記仮想レジスタに設定されている前記取得要求に応答して、前記ＭＭＩＯ空間に対応したメモリアドレスのうちの使用可能なメモリアドレスを検索する、
（１１Ａ−２）前記読出し元アドレスが表す第一のメモリ空間からコード群を読み出す、
（１１Ａ−３）前記ハイパバイザによって前記ＭＭＩＯアクセスが捕捉された場合に、前記ＭＭＩＯアクセスの結果に前記読み出されたコード群を含める、
前記ＭＭＩＯアクセスとは、前記ＭＭＩＯ空間に対するアクセスであり、
前記ターゲットアドレスは、前記検索部により見つけられたメモリアドレスである、
請求項１０記載の計算機システム。
【請求項１２】
前記ＭＭＩＯ空間は、ヘッダ部とデータ部とを有し、
前記ヘッダ部に、前記読出し元アドレス及び前記ターゲットアドレスを含んだヘッダ情報が格納され、
前記ターゲットアドレスは、前記データ部のメモリアドレスである、
請求項１１記載の計算機システム。
【請求項１３】
前記ヘッダ情報には、前記第一のメモリ空間からコード群が読み出された時刻を表す情報が含まれる、
請求項１２記載の計算機システム。
【請求項１４】
前記エンジンが、所定の認証情報を前記ハイパバイザの公開鍵で暗号化することにより暗号文を生成し、
前記アシストが、前記公開鍵とペアになっている秘密鍵を保持しており、前記暗号文を前記秘密鍵で復号化し、前記復号化により得られた認証情報が正当か否かの第一の判断を行い、
ハイパバイザ呼出し命令を前記ハイパバイザが受けた場合、前記ハイパバイザ呼出し命令の発行元が、前記認証部で前記第一の判断の結果が否定的となった仮想計算機であれば、前記ハイパバイザ呼出し命令の実行が不可である、
請求項９乃至１３のうちのいずれかに記載の計算機システム。
【請求項１５】
前記ハイパバイザが、前記第二種の仮想計算機を作成し、前記作成した第二種の仮想計算機のＩＤを前記アシストに設定し、
前記アシストは、前記要求の発行元の第二種の仮想計算機のＩＤが前記設定されたＩＤに適合するか否かの第二の判断を行い、前記第二の判断の結果が肯定的の場合に、前記第一の判断を行い、前記第二の判断の結果が否定的の場合に、前記第一の判断を非実行とする、
請求項１４記載の計算機システム。
【請求項１６】
前記第一種の仮想計算機では、前記第一のメモリ空間を構成する複数のページのうちのどのページが更新されたコード群を含んだダーティページであるかが管理されており、
前記アシストは、前記読出し元アドレスが表すページのうちダーティページからのみコード群を読み出す、
請求項９乃至１５のうちのいずれかに記載の計算機システム。
【請求項１７】
クライアントに利用される第一種の仮想計算機の他に、前記クライアントに対して隠蔽される第二種の仮想計算機を管理し、
第一種の仮想計算機に割り当てられている記憶空間から、前記第二種の仮想計算機においてエンジンによってスキャンされるコード群を読み出す、前記エンジンについてのアシストを有する、
ハイパバイザ。
【請求項１８】
前記第二種の仮想計算機を生成し、
前記生成した第二種の仮想計算機に割り当てられた第二のメモリ空間内のＭＭＩＯ（Memory Mapped I/O）空間に、仮想デバイスを割り当て、
前記仮想デバイスのエミュレータを有し、
前記エンジンからの前記仮想デバイスへのＭＭＩＯアクセスを捕捉し、前記アシストにより前記仮想デバイスエミュレータが呼び出され、前記ＭＭＩＯアクセスの結果に前記読み出されたコード群を含める、
請求項１７記載のハイパバイザ。
【請求項１９】
公開鍵を前記ＭＭＩＯ空間に格納し、
前記公開鍵とペアになっている秘密鍵を有し、
前記アシストが、前記エンジンにより前記公開鍵で所定の認証情報が暗号化された暗号文を前記ＭＭＩＯ空間から取得し、前記暗号文を前記秘密鍵で復号化し、前記復号化により得られた認証情報が正当か否かの第一の判断を行い、
ハイパバイザ呼出し命令を前記第二種の仮想計算機からハイパバイザが受けた場合、前記ハイパバイザ呼出し命令の発行元が、前記アシストで前記第一の判断の結果が否定的となった仮想計算機であれば、前記ハイパバイザ呼出し命令の実行を不可とする、
請求項１８記載のハイパバイザ。
【請求項２０】
前記記憶空間は、第一のメモリ空間であり、
前記第一種の仮想計算機では、前記第一のメモリ空間を構成する複数のページのうちのどのページが更新されたコード群を含んだダーティページであるかが管理されており、
前記アシストは、ダーティページからのみコード群を読み出す、
請求項１７乃至１９のうちのいずれかに記載のハイパバイザ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハイパバイザを有する計算機システムに関する。
【背景技術】
【０００２】
計算機システムとして、例えば、複数の仮想計算機を管理するハイパバイザを有した計算機システムが知られている（例えば特許文献１）。
【０００３】
【特許文献１】特開２０００−２５９４３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
一般に、仮想計算機は、クライアントに利用される。例えば、仮想計算機は、サーバとして、クライアントからの要求を処理する。
【０００５】
計算機システムのセキュリティは高い方が好ましい。一つのセキュリティ対策として、ウィルススキャナを実行する方法がある。ウィルススキャナは、通常、ＯＳ（オペレーティングシステム）上で動作する。このため、この方法を、ハイパバイザを有する計算機システムに適用した場合、各仮想計算機のＯＳ上でウィルススキャナが実行される。この場合、仮想計算機では、仮想計算機に割り当てられているメモリ空間からＯＳ経由でファイルがスキャンされる。それ故、メモリ空間に存在するコード群のうち、ＯＳが管理するファイルを構成するコード群をスキャンすることはできるが、それ以外のコード群をスキャンすることはできない。
【０００６】
別のセキュリティ対策として、計算機システムの外部に、通信ネットワークを経由して計算機システムに入力されるコード群をスキャンするセキュリティ装置を設置する方法が考えられる。しかし、この方法では、通信ネットワークを非経由で計算機システムに入力されるコード群（例えば、コンピュータプログラムのインストール或いは開発途中で入り込むコード群）をスキャンすることはできない。
【０００７】
従って、本発明の目的は、クライアントから利用される仮想計算機に割り当てられている記憶空間に格納された全てのコード群をスキャンできるようにすることにある。
【課題を解決するための手段】
【０００８】
ハイパバイザを有する計算機システムが、クライアントから利用される第一種の仮想計算機の外部に、第一種の仮想計算機に割り当てられている記憶空間からコード群を読み出しそのコード群をスキャンするスキャナを有する。具体的には、例えば、ハイパバイザの管理対象として、第一種の仮想計算機の他に、クライアントに対して隠蔽される第二種の仮想計算機が用意される。スキャナが、第一種の仮想計算機の記憶空間からコード群を読み出すアシストと、読み出されたコード群をスキャンするエンジンとで構成される。エンジンが、第二種の仮想計算機で実行され、アシストが、ハイパバイザで実行される。
【０００９】
例えば、第二種の仮想計算機に割り当てられた第二のメモリ空間内のＭＭＩＯ（Memory Mapped I/O）空間に、仮想デバイスが割り当てられる。エンジンが、その仮想デバイスへのＭＭＩＯアクセスを行うことで、第一のメモリ空間から読み出されたコード群を取得する。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して、本発明の幾つかの実施形態を説明する。
【実施例１】
【００１１】
図１は、本発明の第一実施形態の概要の説明図である。
【００１２】
計算機システム１００で、複数のＬＰＡＲ（Logical PARtition）１０１、１０２の管理などを行うコンポーネントであるハイパバイザ１０４が実行される。
【００１３】
ＬＰＡＲは、仮想計算機（例えば仮想サーバ）である。ＬＰＡＲとして、一つ以上（例えば二つ）の一般ＬＰＡＲ１０１Ａ及び１０１Ｂの他に、特殊ＬＰＡＲ１０２がある。一般ＬＰＡＲ１０１は、クライアント（クライアント計算機）５０に利用されるＬＰＡＲ（例えば、クライアント５０から通信ネットワーク５１を介してＩ／Ｏ（Input/Output）コマンドを受け付け、そのＩ／Ｏコマンドを処理するＬＰＡＲ）である。一方、特殊ＬＰＡＲ１０２は、ハイパバイザ１０４によりクライアント５０に対して隠蔽されるＬＰＡＲ（つまりクライアント５０からは利用されないＬＰＡＲ）である。
【００１４】
特殊ＬＰＡＲ１０２で、セキュリティエンジン（以下、単に「エンジン」と言う）１０２１が実行され、ハイパバイザ１０４で、エンジン１０２１のアシストをするセキュリティアシスト（以下、単に「アシスト」と言う）１０４１が実行される。アシスト１０４１は、一般ＬＰＡＲ１０１Ａ及び１０１Ｂにそれぞれ割り当てられている記憶空間（例えば、値が設定される仮想レジスタ、及び／又は、オペレーティングシステム等のコード群が格納されるメモリ空間）１０１１Ａ及び１０１１Ｂ内からコード群をそれぞれ読み出す。エンジン１０２１は、読み出されたコード群をスキャンしセキュリティリスク（例えばコンピュータウィルス）の有無を判断する。記憶空間１０１１Ａ及び１０１１Ｂ内のコード群のエンジン１０２１への転送方式として、本実施形態では、コピー方式とマッピング方式の一方を採用することが可能である。各転送方式については後に説明する。
【００１５】
特殊ＬＰＡＲ１０２に、セキュリティコミュニケータ（以下、単に「コミュニケータ」と言う）１０３が割り当てられる。コミュニケータ１０３は、ハイパバイザ１０４が特殊ＬＰＡＲ１０２にのみ見せる仮想デバイスである。具体的には、図４に示すように、特殊ＬＰＡＲ１０２に割り当てられたメモリ空間（仮想メモリ）内のＭＭＩＯ（Memory Mapped I/O）空間に、仮想デバイスであるコミュニケータ１０３が割り当てられる。エンジン１０２１は、コミュニケータ１０３（厳密には、後述のイニシエータ空間１０３５１）へのＭＭＩＯアクセスにより、アシスト１０４１によって読み出されたコード群を取得することができる。本実施形態において、「ＭＭＩＯアクセス」とは、ＭＭＩＯ空間内の、コミュニケータ１０３が割り当てられている空間（以下、コミュニケータ空間）１０３１に対するアクセスである。コミュニケータ空間１０３１は、ヘッダ部１０３２とデータ部１０３３とを有する。ヘッダ部１０３２には、記憶空間１０１１Ａ又は１０１１Ｂにおける要求メモリアドレス（読出し元アドレス）とその要求メモリアドレスに対応したマップ先メモリアドレス（ターゲットアドレス）とを含んだヘッダ情報が格納される。データ部１０３３には、マッピング方式が採用された場合には、要求メモリアドレスがマッピングされる。及び／又は、データ部１０３３には、コピー方式が採用された場合には、要求メモリアドレスが表す記憶空間１０１１又は１０１１Ｂから読み出されたコード群がコピーされる。
【００１６】
エンジン１０２１とアシスト１０４１間のインタフェースとしては、特殊命令（ハイパバイザ呼出し命令）を使用したハイパバイザ呼出し方式が採用される。具体的には、例えば、エンジン１０２１は、仮想レジスタ５０２２に、記憶空間１０１１Ａの要求メモリアドレスを含んだ取得要求を設定し、ハイパバイザ呼出し命令を発行する。ハイパバイザ１０４が、そのハイパバイザ呼出し命令によって呼び出される。ハイパバイザ１０４は、呼出し元が特殊ＬＰＡＲ１０２の場合、引数を、アシスト１０４１に渡す。引数は、例えば、仮想レジスタ５０２２に設定された取得要求である。アシスト１０４１は、その引数を基に特定された取得要求に応答して、要求メモリアドレスとマップ先メモリアドレスを含んだヘッダ情報をヘッダ部１０３２に格納する。ハイパバイザ１０４が、戻り値（例えば、そのヘッダ情報の格納先アドレス）を、仮想レジスタ５０２２に設定する。エンジン１０２１は、その戻り値を基に、マップ先メモリアドレスを特定し、特定したマップ先メモリアドレスが表す空間部分に対してＭＭＩＯアクセスを行う。これにより、エンジン１０２１は、要求メモリアドレスが表す記憶空間１０１１Ａから読み出されたコード群を取得し、そのコード群をスキャンすることができる。なお、記憶空間１０１１Ａ内のコード群は、ハイパバイザ権限のプロセスで読み出される（つまり、一般ＬＰＡＲ１０１Ａのプロセスに実行させる等の介入はされない）。
【００１７】
以下、本実施形態を詳細に説明する。
【００１８】
図２は、計算機システム１００でのハードウェア仮想化方式の一例を示す。なお、図２では、図１に示した一般ＬＰＡＲ１０１Ａ及び１０１Ｂのうち１０１Ａを代表的に示しており、１０１Ｂの図示を省略している。
【００１９】
計算機システム１００は、例えば、サーバシャーシに搭載された複数のブレードサーバ（物理的なサーバ）で構成されたサーバシステムである。計算機システム１００の物理ハードウェア資源１８００には、例えば、複数の物理プロセッサ１８０４、物理ＰＣＩ（Peripheral Component Interconnect）デバイス１８０３、物理メモリ１８０２及び物理ＢＭＣ（Baseboard Management Controller）１８０１が含まれる。この物理ハードウェア資源１８００上で、ハイパバイザ１０４が実行される。ハイパバイザ１０４によって、物理ハードウェア資源１８００が、タイムスライスにより時分割、もしくは論理分割されることにより、仮想ハードウェア資源１８２０（１８１０）を備えたＬＰＡＲ１０１Ａ、１０２が作成される。仮想ハードウェア資源１８２（１８１０）には、例えば、仮想プロセッサ１０２４（２０１Ａ）、仮想ＰＣＩデバイス２２２５（１２２５）、仮想メモリ（仮想メモリ本体）１０２６（２０３Ａ）、及び仮想ＢＭＣ２２３５（１２３５）が含まれる。ＬＰＡＲ１０２（１０１）では、仮想ハードウェア資源１８２０（１８１０）上で、ＯＳ１０２２（１０１３）が走行し、そのＯＳ１０２２（１０１３）で、エンジン１０２１（アプリケーション１０１２）が実行される。ＯＳ１０２２（１０１３）は、例えば、Windows（登録商標）、Linux（登録商標）である。なお、特殊ＬＰＡＲ１０２にはＯＳ１０２２が無くても良い。また、一般ＬＰＡＲ１０１Ａ（１０１Ｂ）と特殊ＬＰＡＲ１０２を実行する物理プロセッサ１８０４は区別されていても良い（つまり、或る以上の物理プロセッサでは、特殊ＬＰＡＲ１０２のみが実行され、一般ＬＰＡＲ１０１Ａ（１０１Ｂ）などは実行されなくても良い）。
【００２０】
図３は、一般ＬＰＡＲ１０１、特殊ＬＰＡＲ１０２及びハイパバイザ１０４の構成の概念図である。
【００２１】
一般ＬＰＡＲ１０１Ａ（１０１Ｂ）に、アプリケーション１０１２Ａ（１０１２Ｂ）、ＯＳ１０１３Ａ（１０１３Ｂ）、仮想プロセッサ２０１Ａ（２０１Ｂ）、仮想メモリ本体２０３Ａ（２０３Ｂ）の他に、ページテーブル２０２Ａ（２０２Ｂ）が備えられる。同様に、特殊ＬＰＡＲ１０２に、エンジン１０２１、ＯＳ１０２２、仮想プロセッサ１０２４、仮想メモリ本体１０２６の他に、ページテーブル１０２５が備えられる。ページテーブル２０２Ａ（２０２Ｂ）、１０２５は、ＯＳ１０１２Ａ（１０１２Ｂ）、１０２２によって作成されるテーブルであり、仮想メモリ本体２０３Ａ（２０３Ｂ）、１０２６を含んだアドレス空間を管理するためのテーブルである。例えばページテーブル１０２５では、図４に示したメモリ空間（仮想メモリ本体１０２６を含んだアドレス空間）が管理される。このテーブル１０２５を用いたメモリ管理機能によって、図４に示したＭＭＩＯ空間が用意することができる。仮想メモリ本体２０３Ａ（２０３Ｂ）、１０２６が、例えば仮想的なＲＡＭ（Random Access Memory）として使用される空間である。なお、「ページ」とは、メモリ空間を構成するサブメモリ空間（例えば４ＫＢ（キロバイト）或いは２ＭＢ（メガバイト））である。複数のページで、メモリ空間が構成される。コード群の読出しは、種々の単位、例えば、ページ単位、或いは、ページ単位よりも小さい単位（例えばページ配下の１バイト単位）で行われる。
【００２２】
コミュニケータ１０３は、仮想デバイス部１０３５とデバイスエミュレータ部１０３６とで構成される。仮想デバイス部１０３５は特殊ＬＰＡＲ１０２に割り当てられ、デバイスエミュレータ部１０３６がハイパバイザ１０４で実行される。仮想デバイス部１０３５に、架空の空間であるイニシエータ空間１０３５１が用意されており、デバイスエミュレータ部１０３６に、実体としての空間であり、イニシエータ空間１０３５１と対をなすターゲット空間１０３６１が用意される。イニシエータ空間１０３５１とターゲット空間１０３６１は、実質的に同一の空間であり、これらの空間１０３５１、１０３６１が、前述したコミュニケータ空間（ＭＭＩＯ空間部分）１０３１である。
【００２３】
ターゲット空間１０３６１は、図１に示したヘッダ部１０３２及びデータ部１０３３を有する空間である。具体的には、例えば、ターゲット空間１０３６１は、後述のコピー方式でのコード群のコピー先領域、仮想レジスタのデータ格納先、及び、公開鍵の格納領域のうちの少なくとも一つとして利用される。より具体的には、例えば、コピー方式の場合、コピー対象のコード群がターゲット空間１０３６１（データ部１０３３）に格納され、イニシエータ空間１０３５１に対するＭＭＩＯアクセスが、ハイパバイザ１０４で捕捉されて、デバイスエミュレータ１０３６によって、ターゲット空間１０３６１へのアクセスに置き換えられる。つまり、ＭＭＩＯアクセスで指定されるアドレスと、ターゲット空間１０３６１内のアドレスとが紐付けられる。また、コピー方式及びマッピング方式のいずれでも、保存したレジスタ情報が、このターゲット空間１０３６１のレジスタ用領域に保存され、エンジン１０２１が、ＭＭＩＯアクセスを使って、ターゲット空間１０３６１から値を取り出すことができる。また、マッピング方式では、アシスト１０４１が、シャドウページテーブル１０４３Ａ（１０４３Ｂ）などを使って、メモリ２０３Ａ（２０３Ｂ）から実体（アドレス）を引き当て、その結果をターゲット空間１０３６１にコピーしないでエンジン１０２１に見せるだけになるので、イニシエータ空間１０３５１へのＭＭＩＯアクセスは、転じて、メモリ２０３Ａ（２０３Ｂ）へのアクセスに置き換えられる。マッピング方式では、コピー方式のようにコピーされたコード群が実際にターゲット空間１０３６１に格納されていなくても、そのコード群は他の場所（メモリ２０３Ａ（２０３Ｂ））にあるため、コピー先の領域を不要とする分、ターゲット空間１０３６１全体の容量を節約することができる。さらに、メモリ２０３Ａ（２０３Ｂ）へのアクセスに置き換えつつ、ターゲット空間１０３６１（ヘッダ部１０３２及びデータ部１０３３）へのアクセスに置き換えることも可能であり、故に、公開鍵やヘッダ情報の取得のために、ターゲット空間１０３６１にアクセスさせることも可能である。
【００２４】
なお、イニシエータ空間１０３５１とターゲット空間１０３６１は、前述したように、実質的に同一の空間であり、故に、これらの空間１０３５１、１０３６１が、コミュニケータ空間（ＭＭＩＯ空間部分）１０３１となる。従って、以下の説明では、説明の冗長を避けるために、ＭＭＩＯアクセスは、コミュニケータ空間１０３１に対して行われるとする。
【００２５】
特殊ＬＰＡＲ１０２で、コミュニケータドライバ１０２３が実行される。コミュニケータドライバ１０２３は、仮想デバイス部１０３５を操作するためのドライバソフトウェアである。エンジン１０２１は、コミュニケータドライバ１０２３経由で、コミュニケータ空間１０３１に対するＭＭＩＯアクセスを行う。
【００２６】
ハイパバイザ１０４で、仮想プロセッサ２０１Ａ（２０１Ｂ）、１０２４に対応するプロセッサエミュレータ１０４２Ａ（１０４２Ｂ）、１０４４が実行される。仮想プロセッサ２０１Ａ（２０１Ｂ）、１０２４は、物理プロセッサ１８０４からＬＰＡＲ１０１Ａ（１０１Ｂ）、１０２に割り当てられたプロセッサ資源である。プロセッサエミュレータ１０４２Ａ（１０４２Ｂ）、１０４４は、仮想プロセッサ２０１Ａ（２０１Ｂ）、１０２４のプログラムの一つである。
【００２７】
ＯＳ１０１３Ａ（１０１３Ｂ）、１０２２（又は、アプリケーション１０１２Ａ（１０１２Ｂ、エンジン１０１２）からは、仮想プロセッサ２０１Ａ（２０１Ｂ）、１０２４は、物理プロセッサのように見える。例えば、ハイパバイザ１０４（プロセッサエミュレータ１０４４）が、命令の実行処理をエミュレートすることで、あたかもハイパバイザ呼出し命令が物理プロセッサで実行されたように見える。
【００２８】
なお、仮想プロセッサ２０１Ａ（２０１Ｂ）、１０２４とプロセッサエミュレータ１０４２Ａ（１０４２Ｂ）、１０４４は同一と考えられても良い。なぜなら、仮想プロセッサ２０１Ａ（２０１Ｂ）、１０２４は、ＬＰＡＲ１０１Ａ（１０１Ｂ）、１０２上のＯＳ１０１３Ａ（１０１３Ｂ）、１０２２（又は、アプリケーション１０１２Ａ（１０１２Ｂ、エンジン１０１２）からは物理プロセッサのように見え、ハイパバイザ１０４から見れば、ソフトウェア（エミュレータ）であるからである。ちなみに、ＬＰＡＲ１０１Ａ（１０１Ｂ）、１０２での仮想レジスタは、仮想プロセッサ２０１Ａ（２０１Ｂ）、１０２４が有している仮想的なレジスタである。仮想レジスタは、エミュレートを行うために備えられ、実体は、ハイパバイザ１０４で管理されているデータである。
【００２９】
また、ハイパバイザ１０４では、ページテーブル２０２Ａ（２０２Ｂ）、１０２５とそれぞれ同期したシャドウページテーブル１０４３Ａ（１０４３Ｂ）、１０４５が管理される。ハイパバイザ１０４は、シャドウページテーブル１０４３Ａ（１０４３Ｂ）、１０４５を参照することで、ＬＰＡＲ１０１Ａ（１０１Ｂ）、１０２内のメモリ空間（仮想メモリ本体２０３Ａ（２０３Ｂ）、１０２６を含んだ空間）の管理を行うことができる。
【００３０】
アシスト１０４１は、要求受理部１０４１３と、認証部１０４１５と、マッピング変換部１０４１２と、データ取得部１０４１１と、レスポンス生成部１０４１４とを有する。
【００３１】
要求受理部１０４１３は、ハイパバイザ１０４がハイパバイザ呼出し命令で呼び出されたときに、プロセッサエミュレータ１０４４から呼び出される。要求受理部１０４１３は、プロセッサエミュレータ１０２４から渡された仮想レジスタ１０２４（エンジン１０２１からの要求）から、どのような要求が発行されたかを解析し、その要求に応じたモジュール１０４１１、１０４１２又は１０４１５に処理を依頼する機能を有する。
【００３２】
認証部１０４１５は、適切なエンジン１０２１及びコミュニケータ１０３を有したＬＰＡＲからの要求であることを認証する機能を有する。また、認証部１０４１５は、取得要求の発行元ＬＰＡＲが認証済みであることをチェックする機能も有する。
【００３３】
マッピング変換部１０４１２は、図５に示すような、要求メモリアドレスとマップ先メモリアドレスとの対応関係を表す変換テーブルを保持し、変換テーブルを更新する機能を有する。
【００３４】
データ取得部１０４１１は、プロセッサエミュレータ１０４２Ａ（１０４２Ｂ）に問い合わせることで、仮想レジスタに設定された値を取得する機能を有する。また、データ取得部１０４１１は、シャドウページテーブル１０４３Ａ（１０４３Ｂ）に問い合わせることで、一般メモリ空間内の仮想メモリ本体２０３Ａ（２０３Ｂ）からコード群を読み出す機能を有する。その読出しは、リードオンリー方式で行われる。ここで、「リードオンリー方式」とは、ページテーブル２０２Ａ（２０２Ｂ）の改変が行われない、データの読み出しのみを実行する読出し方式、具体的には、ページテーブル２０２Ａ（２０２Ｂ）、シャドウページテーブル１０４３Ａ（１０４３Ｂ）（後述のダーティビットを含む）、仮想プロセッサ２０１Ａ（２０１Ｂ）などで管理されている情報が一切変更されないような読出し方式である。言い換えれば、アシスト１０４１からは、シャドウページテーブル１０４３Ａ（１０４３Ｂ）に対して、読み出しだけが許可されており、書き込みは許可されていない。
【００３５】
レスポンス生成部１０４１４は、リクエスト受理、コード群の読出し及び／又はマッピング変換等の処理の完了後に、特殊ＬＰＡＲ１０２に戻される戻り値の設定を行う機能を有する。また、レスポンス生成部１０４１４は、デバイスエミュレータ部１０３６を利用して、コミュニケータ空間１０３１のヘッダ部１０３２にヘッダ情報を書き込む機能を有する。
【００３６】
なお、前述した特殊命令（ハイパバイザ呼出し命令）とは、ハイパバイザ１０４を意識した命令であり、ハイパバイザ１０４を意識しない命令である一般命令とは異なる。
【００３７】
具体的には、例えば、ＯＳ１０１３Ａ、１０１３Ｂ及び１０２２やアプリケーション１０１２Ａ、１０１２Ｂは、プロセッサエミュレータ１０４２Ａ、１０４２Ｂ及び１０４４を、エミュレータとしてではなく物理プロセッサとして認識している。従って、ＯＳ１０１３Ａ、１０１３Ｂ及び１０２２やアプリケーション１０１２Ａ、１０１２Ｂからは、物理プロセッサに対して命令が発行された場合、その命令の実行によって実はハイパバイザ１０４が呼び出されていて、処理が化かされている、という事実はわからない。このような、ハイパバイザ１０４を意識しない命令を、本実施形態では「一般命令」と呼ぶ。一般命令は、プロセッサエミュレータ１０４２Ａ、１０４２Ｂ、１０４４で実行されることもあれば、プロセッサエミュレータ１０４２Ａ、１０４２Ｂ、１０４４で実行されず物理プロセッサ１８０４に実行されることがある。どちらで実行されるかは、ハイパバイザ１０４によって制御される。一方、ハイパバイザ１０４を意図的に呼び出しそれに見合った処理結果をハイパバイザ１０４に要求する命令を、一般命令に対して、本実施形態では「特殊命令」と呼ぶ。
【００３８】
図６は、エンジン１０２１の機能ブロック図を示す。
【００３９】
エンジン１０２１は、命令発行部１０２１１と、戻り値解析部１０２１２と、ＭＭＩＯアクセス部１０２１３と、スキャン部１０２１４と、暗号化部１０２１５とを有する。
【００４０】
命令発行部１０２１１は、要求を仮想レジスタ５０２２に設定し、ハイパバイザ呼出し命令を発行する。
【００４１】
戻り値解析部１０２１２は、発行されたハイパバイザ呼出し命令に対してハイパバイザ１０４から仮想レジスタ５０２２に設定された戻り値を解析する。
【００４２】
ＭＭＩＯアクセス部１０２１３は、戻り値を基に特定されたマップ先メモリアドレスを指定したＭＭＩＯアクセスを行う。
【００４３】
スキャン部１０２１４は、ＭＭＩＯアクセスの結果として受け取ったコード群をスキャンする。
【００４４】
暗号化部１０２１５は、エンジン１０２１が保有する認証識別子を、ハイパバイザ１０４の公開鍵で暗号化することにより暗号文を生成し、生成した暗号文をコミュニケータ空間１０３１に書き込む。
【００４５】
図７は、エンジン１０２１からアシスト１０４１への要求発行方式の説明図である。図８は、要求の発行から戻り値の受領までの流れを示す。以下、図７及び図８を参照して、要求の発行と戻り値の受領の流れを説明する。
【００４６】
エンジン１０２１の命令発行部１０２１１が、要求を決定し（Ｓ４０１）、要求（具体的には、例えば、要求メモリアドレスなど、要求に関する値）を仮想プロセッサ１０２４の仮想レジスタ５０２２に設定する（Ｓ４０２）。そして、命令発行部１０２１１は、ハイパバイザ呼出し命令を発行する（Ｓ４０３）。
【００４７】
ハイパバイザ呼出し命令によって呼び出されたハイパバイザ１０４が、呼出しの理由を検索する（Ｓ４０４）。「呼出しの理由」としては、例えば、一般命令のエミュレータ呼び出し、メモリアクセスの捕捉、Ｉ／Ｏアクセスの捕捉、割り込み、障害の検知などがあるが、このＳ４０４では、ハイパバイザ呼出し命令による呼び出しであるかどうかが検索される。呼出しの理由が、エンジン１０２１によるハイパバイザ呼出し命令発行によるものであった場合、仮想レジスタ５０２２の情報が、プロセッサエミュレータ１０４４に渡され、命令の処理として扱われる（Ｓ４０５）。プロセッサエミュレータ１０４４から、要求受理部１０４１３へ処理が依頼される（Ｓ４０６）。要求受理部１０４１３がその依頼に応答して、仮想レジスタ５０２２に設定された要求（値）を受け取ると、その要求に対応する処理が、アシスト１０４１で行われる（Ｓ４０７）。レスポンス生成部１０４１４が、プロセッサエミュレータ１０４４の仮想レジスタ５０２２に、戻り値を設定する（Ｓ４０８）。プロセッサエミュレータ１０４４が完了し、特殊ＬＰＡＲ１０２に処理が移行する（Ｓ４０９）。Ｓ４０９は、具体的には、例えば、物理プロセッサ１８０４のレジスタに、仮想プロセッサ１０２４の仮想レジスタの値が読み込まれ、処理モードを特殊ＬＰＡＲ１０２へと移す特別な命令をハイパバイザ１０４が実行することにより、行われる。
【００４８】
特殊ＬＰＡＲ１０２では、エンジン１０２１の戻り値解析部１０２１２が、仮想プロセッサ１０２４の仮想レジスタ５０２２から戻り値を読み出し、解析する（Ｓ４１０）。
【００４９】
以上の説明において、プロセッサエミュレータ１０４４が使用される場合、ハイパバイザ１０４は、物理プロセッサから物理レジスタの情報を読み出して仮想レジスタ５０２２にコピーする。そして、プロセッサエミュレータ１０４４を実行して処理を終えるとき（特殊ＬＰＡＲ１０２に処理が戻るとき）、ハイパバイザ１０４は、仮想レジスタ５０２２の値を物理レジスタに書き戻す。これによって、エミュレーションが成立する。このため、エンジン１０２１が仮想レジスタ５０２２に値を書き込み、ハイパバイザ呼出し命令を使ってハイパバイザ１０４を呼び出すということは、別の言い方をすれば、ハイパバイザ１０４が持っている仮想プロセッサ１０２４の管理データ群（仮想レジスタ）に引数などの値が書き込まれるということになる。
【００５０】
エンジン１０２１から発行された要求が、要求メモリアドレスが表す一般メモリ空間からのコード群の読出しである取得要求の場合、マッピング方式及びコピー方式のいずれかの方式で、コード群の読出しが行われる。マッピング方式及びコピー方式のいずれが行われるかは、例えば、エンジン１０２１及びアシスト１０４１間で予め決まっていても良いし、エンジン１０２１とアシスト１０４１のどちらが決定しても良いし、要求ＬＰＡＲ番号（取得要求の発行先の一般ＬＰＡＲの番号）によって決定されても良いし、計算機システム１００の負荷に応じて決定されても良い。
【００５１】
マッピング方式を、図９乃至図１１を参照して説明し、コピー方式を、図１２乃至図１４を参照して説明する。
【００５２】
図９は、マッピング方式の概要の説明図である。
【００５３】
ヘッダ部１０３２に、複数のヘッダテーブル５０１が用意されている。１件の取得要求についてのヘッダ情報が、１つのヘッダテーブル５０１に格納される。ヘッダテーブル５０１に格納されるヘッダ情報には、シーケンス番号、要求ＬＰＡＲ番号、要求メモリアドレス、マップ先メモリアドレス、データ長、取得時刻及びレジスタデータ格納アドレスなどが含まれる。
【００５４】
シーケンス番号は、要求が発行される都度に割り振られる、要求のＩＤ（識別子）である。
【００５５】
要求ＬＰＡＲ番号は、要求の発行先の一般ＬＰＡＲの番号、言い換えれば、コード群の読出し元となるメモリ空間の割当て先となっている一般ＬＰＡＲの番号である。
【００５６】
マップ先メモリアドレスは、コミュニケータ空間１０３１のデータ部１０３３内の領域を表すアドレスである。マップ先メモリアドレスは、特殊ＬＰＡＲ１０２が有するページテーブル１０２５から特定される。マッピング方式では、マップ先メモリアドレスが表すメモリ空間部分（一又は複数のページで構成された空間）にはコード群は格納されず、そのメモリ空間部分に、要求メモリアドレスがマッピングされる。従って、マップ先メモリアドレスを指定したＭＭＩＯアクセスがハイパバイザ１０４で捕捉された場合、ＭＭＩＯアクセスに従い、そのマップ先メモリアドレスが表すメモリ空間部分（データ部１０３３の一部分）にマッピングされている要求メモリアドレスが表すメモリ空間部分に、アクセスされる。ＭＭＩＯアクセスは、コミュニケータ空間１０３１の範囲へのアクセス（例えば、エンジン１０２１からドライバ１０２３を経由した、コミュニケータ空間１０３１の読み取りのためのアクセス）であり、ハイパバイザ１０４に処理を移行させることができる機能である。従って、ハイパバイザ１０４は、アクセスで指定されたアドレスが、コミュニケータ空間１０３１の範囲内のアドレスであることを検出した場合に、ＭＭＩＯアクセスを捕捉したことになる。
【００５７】
データ長は、読出し元のメモリ空間部分（要求メモリアドレスが表す空間部分）のサイズ（容量）である。
【００５８】
取得時刻は、読出し元のメモリ空間部分からコード群が読み出された時刻を表す。取得時刻は、例えば、いつどこから取得されたかをロギングすることに使用される。また、後に説明する第二実施形態のように、ダーティページの変化の時系列観測のために、ヘッダ部１０３２に格納された取得時刻が利用される。
【００５９】
レジスタデータ格納アドレスは、仮想レジスタに記憶されているデータ（コード群）のコピー先のアドレス（データ部１０３３の一部分を表すアドレス）である。マッピング方式では、レジスタデータ格納アドレスは無効値である。
【００６０】
マッピング方式では、以下の（９−１）乃至（９−７）の処理、
（９−１）エンジン１０２１が、要求ＬＰＡＲ番号及び要求メモリアドレスを含んだ取得要求を仮想レジスタ５０２２に設定して、ハイパバイザ呼出し命令を発行する、
（９−２）アシスト１０４１が、データ部１０３３内の空間部分（以下、図９乃至図１１の説明において「空間部分ＴＭ」と言う）に、要求メモリアドレスをマッピングする、
（９−３）アシスト１０４１が、要求ＬＰＡＲ番号、要求メモリアドレス及びマップ先メモリアドレス（空間部分ＴＭのアドレス）を含んだヘッダ情報をヘッダテーブル５０１に格納する、
（９−４）ハイパバイザ１０４から特殊ＬＰＡＲ１０２に処理が移行する、
（９−５）エンジン１０２１が、マップ先メモリアドレスを指定したＭＭＩＯアクセスを発行する、
（９−６）ハイパバイザ１０４でＭＭＩＯアクセスが捕捉された場合に、アシスト１０４１が、マップ先メモリアドレスが表す空間部分にマッピングされている要求メモリアドレスが表す空間部分（一般メモリ空間内の空間部分）から、リードオンリー方式でコード群を読み出す、
（９−７）ＭＭＩＯアクセスの結果として、読み出されたコード群がエンジン１０２１に受け取られる、
が行われる。
【００６１】
以下、図１０及び図１１を参照して、マッピング方式で行われるコード群取得の詳細な流れを説明する。
【００６２】
図１０に示すように、エンジン１０２１の命令発行部１０２１１が、仮想レジスタ５０２２に、取得要求を設定する（Ｓ６０１）。設定される取得要求には、例えば、要求種別を表す値（取得要求であることを表す値）、要求メモリアドレス及び要求ＬＰＡＲ番号などが含まれる。命令発行部１０２１１が、ハイパバイザ呼出し命令を発行する（Ｓ６０２）。
【００６３】
ハイパバイザ１０４におけるプロセッサエミュレータ１０４４が、ハイパバイザ呼出し命令を受け取り（Ｓ６０３）、要求受理部１０４１３を呼び出す（Ｓ６０４）。要求受理部１０４１３が、取得要求の発行元ＬＰＡＲ１０２が認証済みか否かを認証部１０４１５に問い合わせる（Ｓ６０５）。認証済みとの回答が来た場合、要求受理部１０４１３が、取得要求を解析し（Ｓ６０６）、マッピング変換部１０４１２を呼び出す（Ｓ６０７）。マッピング変換部１０４１２が、要求先ＬＰＡＲ１０１Ａ（又は１０１Ｂ）に対応したシャドウページテーブル１０４３Ａ（又は１０４３Ｂ）に、要求メモリアドレスの存在を問合せ（Ｓ６０８）、その問合せに対する回答から、その要求メモリアドレスが取得可能であることを確認する（Ｓ６０９）。マッピング変換部１０４１２が、シャドウページテーブル１０４５を基に、コミュニケータ空間１０３１のうちの使用可能な範囲を検索する（Ｓ６１０）。マッピング変換部１０４１２は、Ｓ６１０で見つかった範囲に属するアドレス（マップ先メモリアドレス）に要求メモリアドレスをマッピングするよう、変換テーブル（図５参照）を更新する（Ｓ６１１）。レスポンス生成部１０４１４が、マップ先メモリアドレスを、Ｓ６０１で設定された取得要求に対応するヘッダテーブル５０１に格納する（Ｓ６１２）。レスポンス生成部１０４１４は、エンジン１０２１への通知情報（例えば、Ｓ６１２でのマップ先メモリアドレスの格納先テーブル５０１のアドレスを含んだ情報）を、仮想レジスタ５０２２に設定する（Ｓ６１３）。通知情報が、前述した戻り値となる。ハイパバイザ１０４が、取得要求の発行元（特殊ＬＰＡＲ１０２）に処理を移行する（Ｓ６１４）。
【００６４】
特殊ＬＰＡＲ１０２において、エンジン１０２１の戻り値解析部１０２１２が、仮想レジスタ５０２２から通知情報を取り出す（Ｓ６１５）。戻り値解析部１０２１２が、通知情報から特定されるヘッダテーブル５０１から、例えばＭＭＩＯアクセス部１０２１３呼出しＭＭＩＯアクセスを実行させることで、マップ先メモリアドレスを取得する（Ｓ６１６）。ＭＭＩＯアクセス部１０２１３が、コミュニケータドライバ１０２３を利用して、そのマップ先メモリアドレスを指定したＭＭＩＯアクセスを行う（Ｓ６１７）。
【００６５】
図１１に示すように、ハイパバイザ１０４が、ＭＭＩＯアクセスを捕捉し（Ｓ６１８）、デバイスエミュレータ部１０３６を呼び出す（Ｓ６１９）。デバイスエミュレータ部１０３６が、マップ先メモリアドレスが表す空間部分内のコード群をマッピング変換部１０４１２に問い合わせる（Ｓ６２０）。マッピング変換部１０４１２が、変換テーブルを基に、マッピング先メモリアドレスに対応した要求メモリアドレスを特定し、データ取得部１０４１１が、その要求メモリアドレスを、要求ＬＰＡＲ番号に対応したシャドウページテーブル１０４３Ａ（又は１０４３Ｂ）に問い合わせることで、その要求メモリアドレスが表す空間部分（一般メモリ空間内の空間部分）に記憶されているコード群を取得する（Ｓ６２１）。データ取得部１０４１１が、コード群の取得をレスポンス生成部１０４１４に通知し、レスポンス生成部１０４１４が、プロセッサエミュレータ１０４４に問い合わせて、仮想レジスタ５０２２内の領域を獲得する（Ｓ６２２）。データ取得部１０４１１が、取得されたコード群を、レスポンス生成部１０４１４に送る（Ｓ６２３）。レスポンス生成部１０４１４が、デバイスエミュレータ部１０３６の結果に、取得されたコード群を含める（Ｓ６２４）。ハイパバイザ１０４が、取得要求の発行元（特殊ＬＰＡＲ１０２）に処理を移行する（Ｓ６２５）。
【００６６】
特殊ＬＰＡＲ１０２において、エンジン１０２１が、ＭＭＩＯアクセスの結果として、コード群を受け取る（Ｓ６２６）。スキャン部１０２１４が、そのコード群をスキャンする（Ｓ６２７）。
【００６７】
以上が、マッピング方式の説明である。次に、コピー方式を説明する。
【００６８】
図１２は、コピー方式の概要の説明図である。以下、図９との相違点を主に説明し、図９との共通点については説明を省略或いは簡略する。
【００６９】
マップ先メモリアドレスは、要求メモリアドレスが表す空間部分から読み出されたコード群のコピー先の空間部分（データ部１０３３内の空間部分）を表すアドレスである。
【００７０】
また、レジスタデータ格納アドレスは、有効な値である。レジスタデータ格納アドレスは、一般ＬＰＡＲ１０１Ａ（１０１Ｂ）が利用可能な仮想レジスタから読み出されたデータ（コード群）のコピー先の空間部分（データ部１０３３内の空間部分）を表すアドレスである。
【００７１】
コピー方式では、以下の（１２−１）乃至（１２−６）の処理、
（１２−１）エンジン１０２１が、要求ＬＰＡＲ番号及び要求メモリアドレスを含んだ取得要求を仮想レジスタ５０２２に設定して、ハイパバイザ呼出し命令を発行する、
（１２−２）アシスト１０４１が、要求メモリアドレスが表す空間部分（一般メモリ空間内の空間部分）から、リードオンリー方式でコード群を読み出し、そのコード群を、要求メモリアドレスに対応付けられるマップ先メモリアドレスが表す空間部分（以下、図８乃至図１０の説明において「コピー先空間」と言う）にコピーする、
（１２−３）アシスト１０４１が、要求ＬＰＡＲ番号、要求メモリアドレス及びマップ先メモリアドレス（コピー先空間のアドレス）を含んだヘッダ情報をヘッダテーブル５０１に格納する、
（１２−４）ハイパバイザ１０４から特殊ＬＰＡＲ１０２に処理が移行する、
（１２−５）エンジン１０２１が、マップ先メモリアドレスを指定したＭＭＩＯアクセスを発行する、
（１２−６）ハイパバイザ１０４でＭＭＩＯアクセスが捕捉された場合に、マップ先メモリアドレスが表す空間部分に記憶されているコード群が、ＭＭＩＯアクセスの結果として、エンジン１０２１に受け取られる、
が行われる。ターゲット空間は、デバイスエミュレータ部１０３６用のメモリ空間である。
【００７２】
以下、図１３及び図１４を参照して、マッピング方式で行われるコード群取得の詳細な流れを説明する。その際、図１０及び図１１との相違点を主に説明し、図１０及び図１１との共通点については説明を簡略する。
【００７３】
図１３に示すように、図１０のＳ６０１乃至Ｓ６０５と同様の処理が行われる（Ｓ９１１乃至Ｓ９１５）。
【００７４】
認証済みとの回答が来た場合、要求受理部１０４１３が、取得要求を解析し（Ｓ９１６）、データ取得部１０４１１を呼び出す（Ｓ９１７）。データ取得部１０４１１が、要求先ＬＰＡＲ１０１Ａ（又は１０１Ｂ）に対応したシャドウページテーブル１０４３Ａ（又は１０４３Ｂ）に、要求メモリアドレスの存在を問合せ（Ｓ９１８）、その問合せに対する回答から、その要求メモリアドレスが取得可能であることを確認する（Ｓ９１９）。マッピング変換部１０４１２が、シャドウページテーブル１０４５を基に、コミュニケータ空間１０３１のうちの使用可能な範囲を検索する（Ｓ９２０）。データ取得部１０４１１が、要求メモリアドレスを、要求ＬＰＡＲ番号に対応したシャドウページテーブル１０４３Ａ（又は１０４３Ｂ）に問い合わせることで、その要求メモリアドレスが表す空間部分（一般メモリ空間内の空間部分）に記憶されているコード群を取得し、そのコード群を、Ｓ９２０で見つかった範囲に属するターゲット空間（データ部１０３３内の空間部分）にコピーする（Ｓ９２１）。レスポンス生成部１０４１４が、プロセッサエミュレータ１０４４に問い合わせて、仮想レジスタ５０２２内の領域を獲得し、且つ、コピー先空間のアドレス（すなわち、マップ先メモリアドレス）を、Ｓ９１１で設定された取得要求に対応するヘッダテーブル５０１に格納し、エンジン１０２１への通知情報（例えば、マップ先メモリアドレスの格納先テーブル５０１のアドレスを含んだ情報）を、仮想レジスタ５０２２に設定する（Ｓ９２２）。ハイパバイザ１０４が、取得要求の発行元（特殊ＬＰＡＲ１０２）に処理を移行する（Ｓ９２３）。
【００７５】
特殊ＬＰＡＲ１０２において、エンジン１０２１の戻り値解析部１０２１２が、仮想レジスタ５０２２から通知情報を取り出す（Ｓ９２４）。戻り値解析部１０２１２が、通知情報から特定されるヘッダテーブル５０１から、マップ先メモリアドレスを取得する（Ｓ９２５）。ＭＭＩＯアクセス部１０２１３が、コミュニケータドライバ１０２３を利用して、そのマップ先メモリアドレスを指定したＭＭＩＯアクセスを行う（Ｓ９２６）。
【００７６】
図１４に示すように、ハイパバイザ１０４が、ＭＭＩＯアクセスを捕捉し（Ｓ９２７）、デバイスエミュレータ部１０３６を呼び出す（Ｓ９２８）。デバイスエミュレータ部１０３６が、マップ先メモリアドレスが表すターゲット空間１０３６１に記憶されているコード群を、デバイスエミュレータ部１０３６の呼び出し結果に含める（Ｓ９２９）。ハイパバイザ１０４が、取得要求の発行元（特殊ＬＰＡＲ１０２）に処理を移行する（Ｓ９３３）。その後、図１１のＳ６２６及びＳ６２７と同様の処理が行われる（Ｓ９３４及びＳ９３５）。
【００７７】
以上が、コピー方式の説明である。
【００７８】
さて、本実施形態では、前述したように、適切なエンジン１０２１及びコミュニケータ１０３を有したＬＰＡＲからの要求であることの認証処理が行われる。
【００７９】
図１５は、認証処理の概要の説明図である。
【００８０】
コミュニケータ１０３の割当てが鍵とされ、その鍵を使って、エンジン１０２１及びアシスト１０４１間の認証が行われる。具体的には、ハイパバイザ１０４の公開鍵１１０１が、コミュニケータ空間１０３１に格納される。エンジン１０２１が、所定の認証識別子を、その公開鍵１１０１で暗号化してコミュニケータ空間１０３１に格納し、暗号文（暗号化された認証識別子）の格納先アドレスを含んだ認証要求を仮想レジスタ５０２２に設定して、ハイパバイザ呼出し命令を発行する。アシスト１０４１の認証部１０４１５が、認証要求に応答して、その暗号化されている認証識別子（暗号文）を、公開鍵１１０１とペアになっている秘密鍵１１０３で復号化し、復号化された認証識別子が所定の認証識別子であるかどうかの判断を行う。
【００８１】
この判断の結果が肯定的の場合に、特殊ＬＰＡＲ１０２が認証済みとなり、以後、その特殊ＬＰＡＲ１０２がハイパバイザ呼出し命令を発行した場合に、その命令が実行される。逆に、この判断の結果が否定的となってしまうと、特殊ＬＰＡＲ１０２が認証済みとならず、以後、その特殊ＬＰＡＲ１０２がハイパバイザ呼出し命令を発行しても、その命令の実行は不可となる（命令実行不可を表す戻り値がハイパバイザ１０４から特殊ＬＰＡＲ１０２に送られる）。
【００８２】
図１６は、特殊ＬＰＡＲの生成から認証完了（認証済み）となるまでの詳細な流れを示す。
【００８３】
ハイパバイザ１０４が、内部に認証識別子（認証用のデータ）を有したエンジン１０２１が実行される特殊ＬＰＡＲ１０２を生成する（Ｓ１２０１）。
【００８４】
ハイパバイザ１４が、特殊ＬＰＡＲ１０２の特殊メモリ空間内のＭＭＩＯ空間に、コミュニケータ１０３を割り当て、アシスト１０４１が、生成された特殊ＬＰＡＲ１０２の番号を認証部１０４１５に設定する（Ｓ１２０２）。アシスト１０４１が、コミュニケータ空間１０３１（具体的には例えばヘッダ部１０３２）に、ハイパバイザ１０４の公開鍵１１０１を格納する（Ｓ１２０３）。アシスト１０４１が、生成された特殊ＬＰＡＲ１０２の状態を、アクティベイトに切り替える（特殊ＬＰＡＲ１０２の電源をターンオンする）（Ｓ１２０４）。なお、公開鍵の格納先は、所定の領域であっても良いし、ランダム値初期化によって決定された領域（つまり、ランダムに決定された領域）であっても良い。公開鍵の格納先が所定の領域の場合、暗号化部１０２１５は、予め、公開鍵の格納先を知っており、公開鍵の格納先の領域がランダムで決定された場合、ハイパバイザ１０４がエンジン１０２１に、格納先の領域のアドレスを通知しても良い。
【００８５】
アクティベイトにされた特殊ＬＰＡＲ１０２では、ＯＳ１０２２が起動し（Ｓ１２０５）、割り当てられているコミュニケータ１０３が初期化される（Ｓ１２０６）。次に、コミュニケータドライバ１０２３が初期化される（Ｓ１２０７）。次に、エンジン１０２１が起動される（Ｓ１２０８）。
【００８６】
エンジン１０２１の暗号化部１０２１５（図６参照）が、公開鍵１１０１をコミュニケータ空間１０３１からＭＭＩＯアクセスにより取得する（Ｓ１２０９）。暗号化部１０２１５が、エンジン１０２１の内部にある認証識別子を公開鍵１１０１で暗号化する（Ｓ１２１０）。暗号化部１０１２５が、コミュニケータ空間１０３１（具体的には例えばデータ部１０３３）に、公開鍵１１０１で暗号化された認証識別子（暗号文）を格納し、暗号文の格納先アドレスを含んだ認証要求を仮想レジスタ５０２２に設定し、ハイパバイザ呼出し命令を発行する（Ｓ１２１１）。
【００８７】
プロセッサエミュレータ１０４４が、ハイパバイザ呼出し命令を受理し、その命令の受理を要求受理部１０４１３に通知する（Ｓ１２１２）。要求受理部１０４１３は、仮想レジスタ５０２２から認証要求を特定し、認証部１０４１５を呼出し、認証部１０４１５が、Ｓ１２０２で設定されたＬＰＡＲ番号と、ハイパバイザ呼出し命令の発行元の特殊ＬＰＡＲ１０２の番号が等しいか否かの判断を行う（Ｓ１２１３）。この判断の結果が否定的であれば、後述のＳ１２１４以降の処理は行われない（例えば、認証失敗を表す戻り値が、ハイパバイザ呼出し命令の発行元の特殊ＬＰＡＲ１０２に返却される）。
【００８８】
認証部１０４１５は、Ｓ１２１３での判断の結果が肯定的の場合に、仮想レジスタ５０２２から取得された認証要求に含まれている格納先アドレスが表すコミュニケータ空間部分から、暗号文を取得する（Ｓ１２１４）。認証部１０４１５は、アシスト１０４１が予め保持している秘密鍵１１０３を用いて、その暗号文を復号化する（Ｓ１２１５）。認証部１０４１５は、復号化により得られた認証識別子が特定の規則に従う認証識別子であるか否か（例えば、予め保持している認証識別子と等しいか否か）の判断を行い、その判断の結果が肯定的の場合に、Ｓ１２０２で設定されたＬＰＡＲ番号に、認証済みを表すフラグを紐付ける（Ｓ１２１６）。この後、認証完了が、レスポンス生成部１０４１４及び仮想レジスタ５０２２経由で、エンジン１０２１に通知される。
【００８９】
以上の一連の流れにより、アシスト１０４１とエンジン１０２１の両方で、認証済みが認識される。
【００９０】
以上、上述した第一実施形態によれば、ハイパバイザ１０４が、一般ＬＰＡＲ１０１の他に、クライアントに対して隠蔽したＬＰＡＲである特殊ＬＰＡＲ１０２を管理する。特殊メモリ空間内のＭＭＩＯ空間に、仮想デバイス（コミュニケータ１０３）が割り当てられる。特殊ＬＰＡＲ１０２で、エンジン１０２１が実行され、ハイパバイザ１０４で、エンジン１０２１をアシストするアシスト１０４１が実行される。エンジン１０２１は、一般メモリ空間におけるアドレス（要求メモリアドレス）を指定した取得要求を発行したり、ＭＭＩＯ空間内のデータ部１０３３におけるアドレス（マップ先メモリアドレス）を指定したＭＭＩＯアクセスを行ったり、ＭＭＩＯアクセスの結果として受け取られたコード群（要求メモリアドレスが表す空間部分から読み出されたコード群）をスキャンしたりする。アシスト１０４１は、取得要求に応答してマップ先メモリアドレスをＭＭＩＯ空間内のヘッダ部１０３２に格納したり、シャドウページテーブル１０４３Ａ（１０４３Ｂ）を利用して要求メモリアドレスが表す空間部分からコード群をリードオンリー方式で読み出したり、ＭＭＩＯアクセスがハイパバイザ１０４で捕捉された場合にＭＭＩＯアクセスの結果に上記読み出されたコード群を含めたりする。以上の構成により、一般メモリ空間（及び、一般ＬＰＡＲ１０１Ａ（１０１Ｂ）が利用可能な仮想レジスタ）に記憶されている全てのコード群をスキャンすることが可能となる。
【００９１】
また、上述した第一実施形態によれば、認証済みとなっていない特殊ＬＰＡＲ１０２がハイパバイザ呼出し命令を発行しても、その命令の実行は不可となる（例えば、命令実行不可を表す戻り値がハイパバイザ１０４から特殊ＬＰＡＲ１０２に送られる）。これにより、例えば、或るＬＰＡＲが、不正に、一般メモリ空間内のコード群を取得しようとしても、認証済みとなっていなければ、一般メモリ空間内のコード群を取得することはできない（例えば、図１０のＳ６０５及び図１３のＳ９１５で、認証済みが確認できないと、ハイパバイザ呼出し命令の実行は不可とされる）。これは、セキュリティ向上の貢献となる。
【実施例２】
【００９２】
以下、本発明の第二実施形態を説明する。その際、本発明の第一実施形態との相違点を主に説明し、第一実施形態との共通点については説明を省略或いは簡略する。
【００９３】
第二実施形態では、一般メモリ空間（厳密にはそのうちの仮想メモリ本体）に、更新の生じたページ（以下、ダーティページ）があるかどうかが検出され、検出されたダーティページのみから、スキャンされるコード群が読み出される。言い換えれば、第二実施形態では、一般メモリ空間から全てのコード群が読み出される必要がない。ダーティページの変化の時系列観測のために、ヘッダ部１０３２に格納された取得時刻が利用される。
【００９４】
図１７を参照して、ダーティページの検出のための機構を説明する。
【００９５】
一般ＬＰＡＲで管理されるページテーブルは、複数の階層（図１７の例では４つの階層）がある。上位から下位にかけて、ＰＭＬ４（Page Map Level 4 table entry）、ＰＤＰ（Page Directory Pointer table entry）、ＰＤＥ（Page Directory Entry）、ＰＴＥ（Page Table Entry）である。ＰＭＬ４、ＰＤＰ、ＰＤＥ及びＰＴＥと辿った先で、物理メモリページ（仮想メモリ本体に対応した物理メモリ１８０２（図２参照）のページ）のアドレスと、そのページに格納されているコード群（データ）を得ることができる。
【００９６】
ここで、ＰＴＥには、複数のページにそれぞれ対応した複数のビットで構成されたビットマップがある。更新があったページに対応するビットが、例えば一般ＬＰＡＲ１０１Ａ（１０１Ｂ）内のＯＳ１０１３Ａ（１０１３Ｂ）によって、オン（“１”）とされる（つまりダーティビットとされる）。そのビットマップを含んだページテーブル２０１Ａ（２０１Ｂ）に対応したシャドウページテーブル１０４３Ａ（１０４３Ｂ）を参照することで、アシスト１０４１が、どれがダーティページであるか（ダーティビットに対応したページ）を検出することができる。
【００９７】
具体的には、例えば、エンジン１０２１が、定期的に、差分検出要求を仮想レジスタに設定してハイパバイザ呼出し命令を出す。ハイパバイザ１０４内のアシスト１４１が、シャドウページテーブル１０４３Ａ（１０４３Ｂ）を参照することで、メモリ２０３Ａ（２０３Ｂ）においてダーティページがあるか否かの差分検索を行い、その差分検索の結果を、エンジン１０２１に返す。エンジン１０２１は、差分検索の結果が、差分有りの場合、その結果から特定されるターディページに対応したアドレスを指定したＭＭＩＯアクセスを行うことで、ダーティページからコード群を読み出し、一方、差分検索の結果が、差分無しの場合、ＭＭＩＯアクセスを利用したコード群読出しを非実行とする。これにより、不要なコード群（つまり一度スキャンされたコード群）の読出し処理を避けることができる。
【００９８】
なお、ダーティビットのリセットは、ページテーブルもしくはシャドウページテーブルの本来のタスクとしてＯＳなどによって実施され、アシスト１０４１からは行われない。
【００９９】
図１８は、本発明の第二実施形態でのダーティページ検出の流れを示す。
【０１００】
エンジン１０２１が、コミュニケータ空間に各一般メモリ空間（仮想メモリ本体）を対応させる（Ｓ１７０１）。エンジン１０２１の命令発行部１０２１１が、要求ＬＰＡＲ番号を含んだ差分検出要求を仮想レジスタ５０２２に設定し、ハイパバイザ呼出し命令を発行する（Ｓ１７０２）。
【０１０１】
ハイパバイザ１０４におけるプロセッサエミュレータ１０４４が、ハイパバイザ呼出し命令を受け取り（Ｓ１７０３）、要求受理部１０４１３を呼び出す（Ｓ１７０４）。要求受理部１０４１３が、差分検出要求の発行元ＬＰＡＲ１０２が認証済みか否かを認証部１０４１５に問い合わせる（Ｓ１７０５）。認証済みとの回答が来た場合、要求受理部１０４１３が、取得要求を解析し（Ｓ１７０６）、データ取得部１０４１１（又はマッピング変換部１０４１２）を呼び出す（Ｓ１７０７）。データ取得部１０４１１が、要求先ＬＰＡＲ番号に対応したシャドウページテーブル１０４３Ａ（又は１０４３Ｂ）に問い合わせ、そのシャドウページテーブル１０４３Ａ（又は１０４３Ｂ）のＰＴＥを検索し（Ｓ１７０７）、そのＰＴＥ内の各ビットの状態（“オン”或いは“オフ”）を取得する（Ｓ１７０８）。コピー方式が採用されている場合には、データ取得部１０４１１が、コミュニケータ空間１０３１内のデータ部１０３３における、“オン”のビットに対応したページのコピー先領域に、そのページ内のコード群をコピーする（Ｓ１７０９）。レスポンス生成部１０４１４が、差分検索の結果を表す戻り値を仮想レジスタ５０２２に設定し（Ｓ１７１０）、差分検出要求に対応するヘッダテーブル５０１内の取得時刻を現在の時刻に更新する（Ｓ１７１１）。ハイパバイザ１０４が、特殊ＬＰＡＲ１０２に処理を移行する（Ｓ１７１２）。
【０１０２】
エンジン１０２１は、戻り値が表す差分検索の結果が、差分有りの場合、差分が検出されたページアドレス（つまりダーティページのアドレス）を要求メモリアドレスとして取得要求を発行することで、ダーティページからのみコード群を取得してスキャンを実行する（Ｓ１７１３）。具体的には、例えば、エンジン１０２１は、その読み出されたコード群（以下、コード群１）に対応した取得時刻（以下、取得時刻１）よりも前の取得時刻（以下、取得時刻２）を、ＭＭＩＯアクセスを行うことによりヘッダ部１０３２から特定する。エンジン１０２１は、特定された取得時刻２に対応するコード群（以下、コード群２）を、ＭＭＩＯアクセスによりデータ部１０３３から読み出し、コード群１とコード群２との比較に基づくセキュリティスキャンを行う（具体的には、例えば、コード群１のうち、コード群２との差分についてのみスキャンを行う）。これにより、例えば、取得時刻２と取得時刻１との間に、不正なコード（例えば、悪意を持って改竄されたシステムの実行コード）がメモリ２０３（又は２０３Ｂ）に埋め込まれた可能性を検査することができる。これにより、例えば、書き換えられるはずのない領域などを定点観測することで、セキュリティリスクの検出を期待することができる。
【０１０３】
なお、本実施形態では、取得要求が発行されても、その取得要求に対応したシーケンス番号は更新されない（前述の第一実施形態では、取得要求が発行される都度にシーケンス番号が更新される）。
【０１０４】
以上が、ダーティページ検出の流れである。なお、本実施形態では、以下の処理が行われても良い。すなわち、アシスト１０４１が、要求メモリアドレスを含んだ取得要求を受けたときに、ＰＴＥを検索し、ダーティページを検出した場合に、そのダーティページのアドレスに対応したマップ先メモリアドレスをヘッダ部１０３２に格納し、ダーティページを検出しなかった場合に、スキャン不要を表す戻り値を設定しても良い。つまり、エンジン１０２１は、差分検出要求の発行が不要で、第一の実施形態と同様に取得要求を発行すれば、アシスト１０４１が、ダーティページを検出した場合のみ、コード群を取得し、ダーティページが無い場合には、スキャン不要をエンジン１０２１に返す。
【０１０５】
以上、本発明の幾つかの実施形態を説明したが、本発明は、これらの実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【図面の簡単な説明】
【０１０６】
【図１】本発明の第一実施形態の概要の説明図である。
【図２】本発明の第一実施形態に係る計算機システムでのハードウェア仮想化方式の一例を示す。
【図３】一般ＬＰＡＲ、特殊ＬＰＡＲ及びハイパバイザの構成の概念図である。
【図４】特殊ＬＰＡＲに割り当てられた仮想メモリのマップの一例を示す。
【図５】マッピング変換部が保持する変換テーブルの一例を示す。
【図６】セキュリティエンジンの機能ブロック図を示す。
【図７】エンジンからアシストへの要求発行方式の説明図である。
【図８】要求の発行から戻り値の受領までの流れを示す。
【図９】マッピング方式の概要の説明図である。
【図１０】マッピング方式で行われるコード群取得の詳細な流れの一部分を示す。
【図１１】マッピング方式で行われるコード群取得の詳細な流れの残りの部分を示す。
【図１２】コピー方式の概要の説明図である。
【図１３】コピー方式で行われるコード群取得の詳細な流れの一部分を示す。
【図１４】コピー方式で行われるコード群取得の詳細な流れの残りの部分を示す。
【図１５】認証処理の概要の説明図である。
【図１６】特殊ＬＰＡＲの生成から認証完了（認証済み）となるまでの詳細な流れを示す。
【図１７】本発明の第二の実施形態におけるダーティページ検出機構の概要の説明図である。
【図１８】本発明の第二実施形態でのダーティページ検出の流れを示す。
【符号の説明】
【０１０７】
１０１…クライアントＬＰＡＲ  １０２…特殊ＬＰＡＲ  １０３…セキュリティコミュニケータ  １０４…ハイパバイザ  １０２１…セキュリティエンジン  １０３１…ＭＭＩＯ空間（Memory Mapped I/O）  １０４１…セキュリティアシスト
【図１】
2010055318.tif 000003
【図２】
2010055318.tif 000004
【図３】
2010055318.tif 000005
【図４】
2010055318.tif 000006
【図５】
2010055318.tif 000007
【図６】
2010055318.tif 000008
【図７】
2010055318.tif 000009
【図８】
2010055318.tif 000010
【図９】
2010055318.tif 000011
【図１０】
2010055318.tif 000012
【図１１】
2010055318.tif 000013
【図１２】
2010055318.tif 000014
【図１３】
2010055318.tif 000015
【図１４】
2010055318.tif 000016
【図１５】
2010055318.tif 000017
【図１６】
2010055318.tif 000018
【図１７】
2010055318.tif 000019
【図１８】
2010055318.tif 000020