(57)【要約】【課題】複数の仮想計算機を備える仮想計算機システムにおいて、安全性の確保とセキュリティ処理のオーバーヘッドの低減とを実現すること。【解決手段】ハイパーバイザと、ハイパーバイザ上で動作する第一の仮想計算機および第二の仮想計算機からなる仮想計算機システムであって、ハイパーバイザは、第二の仮想計算機への切り替えを行うことなく第一の仮想計算機からアクセスすることが可能な領域であって、第一の仮想計算機上でデータ処理を行う際に用いる第一のプログラムが格納される第一の領域を生成する共有メモリアクセス管理部を備え、第二の仮想計算機は、第一の仮想計算機からの認証要求に対する結果に基づき第一の領域を制御することにより、第一の仮想計算機による第一のプログラムの実行可否を制御する第二のプログラムを備える。【選択図】図１
2013242644.tif 000002
【特許請求の範囲】
【請求項１】
ハイパーバイザと、前記ハイパーバイザ上で動作する第一の仮想計算機および第二の仮想計算機からなる仮想計算機システムであって、
前記ハイパーバイザは、前記第二の仮想計算機への切り替えを行うことなく前記第一の仮想計算機からアクセスすることが可能な領域であって、前記第一の仮想計算機上でデータ処理を行う際に用いる第一のプログラムが格納される第一の領域を生成する共有メモリアクセス管理部を備え、
前記第二の仮想計算機は、前記第一の仮想計算機からの認証要求に対する結果に基づき前記第一の領域を制御することにより、前記第一の仮想計算機による前記第一のプログラムの実行可否を制御する第二のプログラムを備える仮想計算機システム。
【請求項２】
前記第二の仮想計算機は、前記第一のプログラムを格納し、
前記第二のプログラムは、前記第一の仮想計算機からの認証要求が成功した場合に、前記第一のプログラムを前記第一の領域に格納することにより前記第一の領域を制御する、請求項１記載の仮想計算機システム。
【請求項３】
前記第二のプログラムは、前記第一の仮想計算機から前記第二の仮想計算機への認証状態が終了した場合に、前記第一の領域から前記第一のプログラムを消去することにより前記第一の領域を制御する、請求項２記載の仮想計算機システム。
【請求項４】
前記ハイパーバイザは、前記第一の領域のアクセス権限を設定する共有メモリアクセス管理部を備え、
前記第一の領域は、前記第一のプログラムが予め格納され、かつ、前記第一の仮想計算機からはアクセスを許可しないようにアクセス権限が設定されており、
前記第二のプログラムは、前記第一の仮想計算機からの認証要求が成功した場合に、前記共有メモリアクセス管理部に、前記第一の仮想計算機から前記第一の領域へのアクセスを許可するように設定する指示を行うことにより前記第一の領域を制御する、請求項１記載の仮想計算機システム。
【請求項５】
前記第一の領域は、前記第一の仮想計算機の起動時に、前記第一の仮想計算機からはアクセスを許可しないようにアクセス権限が設定される、請求項４記載の仮想計算機システム。
【請求項６】
前記第二のプログラムは、前記第一の仮想計算機から前記第二の仮想計算機への認証状態が終了した場合に、前記共有メモリアクセス管理部に、前記第一の仮想計算機から前記第一の領域へのアクセスを許可しないように設定する指示を行うことにより前記第一の領域を制御する、請求項５記載の仮想計算機システム。
【請求項７】
前記第一のプログラムは、前記第一の仮想計算機でデータの暗号化または復号化を行うためのプログラムである、請求項１記載の仮想計算機システム。
【請求項８】
前記ハイパーバイザは、前記第一の仮想計算機で扱うデータを格納する第二の領域を備える、請求項１記載の仮想計算機システム。
【請求項９】
前記第二の領域は、前記第一の仮想計算機の起動から前記第一の仮想計算機のシャットダウンまでの間、前記第一の仮想計算機が利用可能であるように認識される、請求項８記載の仮想計算機システム。
【請求項１０】
前記第二の領域は、前記第一の仮想計算機の認証開始から認証終了までの間、前記第一の仮想計算機が利用可能であるように認識される、請求項８記載の仮想計算機システム。
【請求項１１】
ハイパーバイザと、前記ハイパーバイザ上で動作する第一の仮想計算機および第二の仮想計算機からなる仮想計算機システムが行う制御方法であって、
前記ハイパーバイザが、前記第二の仮想計算機への切り替えを行うことなく前記第一の仮想計算機からアクセスすることが可能な領域であって、前記第一の仮想計算機上でデータ処理を行う際に用いる第一のプログラムが格納される第一の領域を生成する生成ステップと、
前記第二の仮想計算機が、前記第一の仮想計算機からの認証要求に対する結果に基づき前記第一の領域を制御することにより、前記第一の仮想計算機による前記第一のプログラムの実行可否を制御する制御ステップとを実行する制御方法。
【請求項１２】
コンピュータを、ハイパーバイザと、前記ハイパーバイザ上で動作する第一の仮想計算機および第二の仮想計算機からなる仮想計算機システムとして機能させるプログラムであって、
前記コンピュータに、
前記第二の仮想計算機への切り替えを行うことなく前記第一の仮想計算機からアクセスすることが可能な領域であって、前記第一の仮想計算機上でデータ処理を行う際に用いる第一のプログラムが格納される第一の領域を生成する生成ステップと、
前記第一の仮想計算機からの認証要求に対する結果に基づき前記第一の領域を制御することにより、前記第一の仮想計算機による前記第一のプログラムの実行可否を制御する制御ステップとを実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュアな仮想計算機（ＶＭ）と非セキュアな仮想計算機を動作させた環境で、暗復号処理を安全かつオーバーヘッドを抑えて行うための仮想計算機間の通信装置及び方法に関するものである。
【背景技術】
【０００２】
近年の情報処理装置の中には、個人情報や金銭を伴うサービスの情報など重要データを保持するものがある。このようなデータは悪意のあるプログラムによって盗まれる危険性がある。このプログラムはインターネットなどのオープンなネットワークから情報処理装置に不正にダウンロードされるものであり、ユーザの意図に反して動作するものである。上記プログラムは、上記重要データを読み込んで特定のユーザに送信することでデータを盗むことができる。そこでこのようなプログラムの攻撃から重要データを保護しなければならない。
【０００３】
重要データを保護するための技術として、安全なソフトウェア実行環境と通常のソフトウェア実行環境とを切り替えて、コンピュータプログラムを実行する技術が存在する。さらに、安全なソフトウェア実行環境と通常のソフトウェア実行環境とを切り替えて、コンピュータプログラムを実行する際に、暗号化や復号などの情報セキュリティ処理に直接関連しない処理によるオーバーヘッドを抑えることを可能とする技術が存在する（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１８２２９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、スマートフォンなどの携帯端末においては、重要データの安全性の確保とセキュリティ処理のオーバーヘッドの低減について、さらなる改善を図る必要がある。
【０００６】
そこで、本発明は、セキュア仮想計算機と非セキュア仮想計算機を動作させた仮想化環境において、安全性の確保とセキュリティ処理のオーバーヘッドの低減とを実現する仮想計算機システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
前記従来の課題を解決するために、本発明の仮想計算機システムは、ハイパーバイザと、前記ハイパーバイザ上で動作する第一の仮想計算機および第二の仮想計算機からなる仮想計算機システムであって、前記ハイパーバイザは、前記第二の仮想計算機への切り替えを行うことなく前記第一の仮想計算機からアクセスすることが可能な領域であって、前記第一の仮想計算機上でデータ処理を行う際に用いる第一のプログラムが格納される第一の領域を生成する共有メモリアクセス管理部を備え、前記第二の仮想計算機は、前記第一の仮想計算機からの認証要求に対する結果に基づき前記第一の領域を制御することにより、前記第一の仮想計算機による前記第一のプログラムの実行可否を制御する第二のプログラムを備える。
【発明の効果】
【０００８】
本発明の仮想計算機システムによれば、複数の仮想計算機を備える仮想計算機システムにおいて、安全性の確保とセキュリティ処理のオーバーヘッドの低減とを実現することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１における仮想計算機システムの機能ブロック図
【図２】実施の形態１におけるセキュアアプリケーションおよびセキュアデーモンの詳細構成のブロック図
【図３】ユーザ認証入力が入力された時のセキュアアプリケーションの動作の一例を示すフローチャート
【図４】実施の形態１における認証開始時のセキュアデーモンの動作の一例を示すフローチャート
【図５】の実施の形態１における認証終了時のセキュアデーモンの動作一例を示すフローチャート
【図６】認証設定時におけるセキュアデーモンの動作一例を示すフローチャート
【図７】データアクセスアプリケーションの詳細構成のブロック図
【図８】実施の形態１における暗号化メモリ領域のデータ読み込み時の動作一例を示すフローチャート
【図９】実施の形態１における暗号化メモリ領域のデータ書き込み時の動作一例を示すフローチャート
【図１０】実施の形態２における仮想計算機システムの機能ブロック図
【図１１】実施の形態２におけるセキュアアプリケーションおよびセキュアデーモンの詳細構成のブロック図
【図１２】実施の形態２の認証開始時のセキュアデーモンの動作一例を示すフローチャート
【図１３】実施の形態２の認証終了時のセキュアデーモンの動作一例を示すフローチャート
【図１４】実施の形態３における仮想計算機システムの機能ブロック図
【図１５】実施の形態３におけるセキュアアプリケーションおよびセキュアデーモンの詳細構成のブロック図
【図１６】実施の形態３の認証開始時のセキュアデーモンの動作一例を示すフロー  チャート
【図１７】実施の形態３の認証終了時のセキュアデーモンの動作一例を示すフローチャート
【発明を実施するための形態】
【００１０】
（本発明に係る一形態を得るに至った経緯）
重要データを保護するための手段の一つとして、複数の仮想計算機を管理・実行する仮想計算機システムの導入が考えられる。仮想計算機を用いた環境では、一つの物理的な計算機で複数の仮想的な計算機を動作できる。よって、秘匿性を必要とするプログラムを、一般的な処理をさせる仮想計算機（以下、「非セキュア仮想計算機」と称する）とは別の仮想計算機（以下、「セキュア仮想計算機」と称する）に処理させることにより、仮想計算機レベルで悪意のあるプログラムが他のプログラム処理の解析することを防止できる。また、非セキュア仮想計算機のシステム管理者権限が悪意のあるプログラムによって奪われてしまっても、セキュア仮想計算機のデータやプログラムを改ざんすることや読み取ることはできない。すなわち、セキュア仮想計算機に、暗号化アルゴリズムやキーなどのセキュアなデータを扱うためのプログラムを保持させて、セキュア仮想計算機内で実行させることで、システム管理者権限を奪取するプログラムからの攻撃に対しても、秘匿性を守ることができる。
【００１１】
ここで、複数の仮想計算機からなる仮想計算機システムでは、ある仮想計算機から別の仮想計算機への切り替え（以下、「ＶＭスイッチ」と称する）にあたっては、仮想計算機間の通信及びデータの退避処理が必要となり、多大なオーバーヘッドが発生する。前述のように、非セキュア仮想計算機とセキュア仮想計算機からなる仮想計算機の場合、セキュアなデータを扱う処理を行うたびに、非セキュア仮想計算機からセキュア仮想計算機への切り替えと、セキュア仮想計算機から非セキュア仮想計算機への切り戻しを行う必要がある。一般的な暗号化アルゴリズムではブロック単位で暗号化されるため、ブロックごとに暗号化処理を行うたびにＶＭスイッチが発生することになる。
【００１２】
特許文献１の技術は、仮想計算機を用いない情報処理において、通常モードと保護モードとの切り替えに伴うオーバーヘッドの削減を目的とするものである。特許文献１の技術は、この目的を実現するために、通常処理を行う実行環境と秘匿性を必要とする処理を行うセキュアな実行環境それぞれに暗復号処理部を設け、プログラムの改ざんを監視し、改ざんがないことが確認できたら、通常処理を行う実行環境の暗復号処理を実行させるというものである。
【００１３】
しかし、特許文献１の技術では、通常処理の実行環境に悪意のあるプログラムが混入し、システム管理者権限を奪われてしまうと、通常処理の実行環境が保持する暗号アルゴリズムやキーが解析できてしまうというセキュリティ面の課題がある。本発明者は、非セキュア仮想計算機においてセキュアなデータを扱うプログラムを、非セキュア仮想計算機からセキュア仮想計算機へのＶＭスイッチを行うことなくアクセス可能な領域に格納し、非セキュア仮想計算機内には保持しないようにすることにより、この課題を解決できることを見出し、本発明に至った。
【００１４】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００１５】
（実施の形態１）
図１は、実施の形態１における仮想計算機システム１００の機能ブロック図である。
【００１６】
仮想計算機システム１００は、非セキュア仮想計算機１、セキュア仮想計算機２、ハイパーバイザ３を備える。図１では非セキュア仮想計算機１は１つのみ記載したが、処理に応じて複数の非セキュア仮想計算機１が動作してもよい。
【００１７】
非セキュア仮想計算機１は、一般的な処理を実行するプログラムを動作させる実行環境である。非セキュア仮想計算機１は、例えばダウンロードアプリケーションなどの安全性が保証されていないアプリケーションが混在する実行環境である。本実施の形態においては、非セキュア仮想計算機１は、秘匿性のあるデータと秘匿性のないデータの両方を扱うが、秘匿性のあるデータについては、セキュア仮想計算機２から許可された場合に扱うことが可能な実行環境であるものとする。非セキュア仮想計算機１は、セキュアアプリケーション１１と、データアクセスアプリケーション１２と、非セキュアＯＳ１３を備える。
【００１８】
セキュアアプリケーション１１は、セキュア仮想計算機２のセキュアデーモン２１と通信することで、非セキュア仮想計算機１の実行環境から暗復号処理前の認証を要求するアプリケーションである。セキュアアプリケーション１１の詳細な構成は後述する。
【００１９】
データアクセスアプリケーション１２は、暗号化メモリ領域３３のデータを読み書きするアプリケーションである。データアクセスアプリケーション１２の例として、ダウンロードアプリケーションやファイル管理アプリケーションが挙げられる。データアクセスアプリケーション１２の詳細な構成は後述する。
【００２０】
非セキュアＯＳ１３は、一般的な処理を実行するプログラムを制御し管理するプログラムである。一般的な処理を行うプログラムには、前述のように、安全性が保障されていないアプリケーションが含まれる。非セキュアＯＳ１３は、暗号化領域読込部１３１と、暗号化領域書込部１３２と、非セキュアＯＳメモリ生成部１３３と、非セキュアＯＳローカルメモリ１３４と、一時バッファ１３５と、暗復号領域認識部１３６を備える。
【００２１】
暗号化領域読込部１３１は、暗号化メモリ領域３３から対象データを読み出して復号化し、復号化した対象データを、非セキュアＯＳローカルメモリ１３４に格納する。暗号化領域読込部１３１は、後述する、データアクセスアプリケーション１２が備える読込受付部１２１から呼ばれると、非セキュアＯＳメモリ生成部１３３を呼びだし、一時バッファ１３５を生成する。そして、暗号化領域読込部１３１は、暗号化メモリ領域３３から対象データを一時バッファ１３５に移動させる。その後、暗号化領域読込部１３１は、暗復号処理格納メモリ３４内に格納された暗復号処理バイナリ２４を呼ぶ。そして、暗号化領域読込部１３１は、呼びだした暗復号処理バイナリ２４により一時バッファ１３５のデータを復号化し、復号化したデータを非セキュアＯＳローカルメモリ１３４に格納する。
【００２２】
暗号化領域書込部１３２は、非セキュアＯＳローカルメモリ１３４内の対象データを暗号化して、暗号化メモリ領域３３に格納する。暗号化領域書込部１３２は、後述する、データアクセスアプリケーション１２が備える書込受付部１２２から呼ばれると、非セキュアＯＳメモリ生成部１３３を呼びだし、一時バッファ１３５を生成する。そして暗号化領域書込部１３２は、非セキュアＯＳローカルメモリ１３４から対象データを一時バッファ１３５に移動させる。その後、暗号化領域書込部１３２は、暗復号処理格納メモリ３４内にある暗復号処理バイナリ２４を呼ぶ。そして、暗号化領域書込部１３２は、呼びだした暗復号処理バイナリ２４により一時バッファ１３５のデータを暗号化し、暗号化メモリ領域３３に格納する。
【００２３】
非セキュアＯＳメモリ生成部１３３は、非セキュア仮想計算機１内のプログラムがアクセス可能なローカルなメモリ領域を生成する。ローカルなメモリ領域には、非セキュアＯＳローカルメモリ１３４や一時バッファ１３５が含まれる。また、非セキュアＯＳメモリ生成部１３３は、非セキュア仮想計算機１の起動時に、あらかじめ非セキュアＯＳローカルメモリ１３４を生成しておくようにしてもよい。
【００２４】
非セキュアＯＳローカルメモリ１３４は、非セキュア仮想計算機１内のアプリケーションのみアクセスできる領域である。
【００２５】
一時バッファ１３５は、データの暗号化または復号化の際に利用される領域である。本実施の形態では、一時バッファ１３５は、通常は、非セキュア仮想計算機１からは「読み込み」、「書込み」、「実行」が可能で、セキュア仮想計算機２からは「書込み」が可能となるようにアクセス権が設定されるものとする。このとき、セキュア仮想計算機２からの「読み込み」、「実行」のアクセス権限に関しては、可能であっても不可能であってもよい。なお、セキュア仮想計算機２から書き込み可能としておき、後述する認証用照合キー２３が「未認証」状態になった時点で、後述するセキュアデーモン２１が備える終了要求受付部２１３が一時バッファ１３５の内容を消去するようにして安全性を高めてもよい。
【００２６】
暗復号領域認識部１３６は、暗号化メモリ領域３３をマウント処理などで非セキュアＯＳ１３に認識させて利用可能にする処理を行う。この処理は、データアクセスアプリケーション１２が暗号化メモリ領域３３に格納されたデータを利用する前、もしくは暗号化メモリ領域３３に任意のデータを格納する前の任意の時点で行われればよい。実施の形態１では、非セキュアＯＳ１３の起動時に、非セキュアＯＳ１３により暗復号領域認識部１３６が呼ばれ、暗号化メモリ領域３３の認識処理が行われるものとする。
【００２７】
また、暗復号領域認識部１３６は、暗号化メモリ領域３３をアンマウント処理などで非セキュアＯＳ１３に認識させない状態にし、利用不可能にする処理も行う。この処理は、データアクセスアプリケーション１２が暗号化メモリ領域３３に格納されたデータを利用した後、もしくは暗号化メモリ領域３３に任意のデータを格納した後の任意の時点で行われればよい。実施の形態１では、非セキュアＯＳ１３のシャットダウン時に、非セキュアＯＳ１３により暗復号領域認識部１３６が呼ばれ、暗号化メモリ領域３３の認識解除処理が行われる。
【００２８】
セキュア仮想計算機２は、秘匿性を必要とするプログラムを動作させる実行環境である。ここで、秘匿性を必要とするとは、例えば、秘匿性を有するデータを扱うことを意味する。セキュア仮想計算機２は、ダウンロードアプリケーションなどの安全性が保証されないアプリを混在させない実行環境である。本実施の形態においては、セキュア仮想計算機２は、非セキュア仮想計算機１において秘匿性のあるデータ扱うことができるか否かを制御するプログラムを実行するための実行環境であるものとする。セキュア仮想計算機２は、セキュアデーモン２１と、セキュアＯＳ２２と、認証用照合キー２３と、暗復号処理バイナリ２４と、認証状態フラグ２５とを備える。
【００２９】
セキュアデーモン２１は、セキュアＯＳ２２上で認証を処理し、暗復号処理バイナリ２４を非セキュア仮想計算機１からアクセス可能にするかどうかを管理するプログラムである。なお、セキュアデーモン２１は、セキュアＯＳ２２上で常駐して動作することが好ましいが、この例に限らず、必要に応じて起動し、終了するプログラムであってもよい。セキュアデーモン２１の詳細な構成は後述する。
【００３０】
セキュアＯＳ２２は、秘匿性を必要とする処理を実行するプログラムを制御し管理するプログラムである。ここで、秘匿性を必要とする処理を実行するとは、例えば、秘匿性を有するデータを扱うプログラムを実行することを意味する。
【００３１】
認証用照合キー２３は、認証照合に用いられるキーである。認証用照合キー２３は、少なくともパスワードを含む情報である。このとき、パスワードは、ユーザＩＤ、仮想計算機のＩＤなどと対応付けられたものであればよい。このとき、認証用照合キー２３は、一例として、ＩＤとパスワードとが対応付けられたテーブル形式で管理される。
【００３２】
暗復号処理バイナリ２４は、暗号アルゴリズムを保持し暗復号処理を実行する。暗復号処理バイナリ２４は、非セキュアＯＳ１３上で実行可能な実行形式のバイナリファイルである。バイナリファイルの実行形式は、ＯＳにより異なる場合が多い。非セキュアＯＳ１３とセキュアＯＳ２２が同じＯＳの場合、セキュア仮想計算機２でも暗復号処理バイナリ２４を実行することができる。しかしながら、暗復号処理バイナリ２４は、少なくとも、非セキュアＯＳ１３上で実行可能であればよく、非セキュアＯＳ１３以外のＯＳ上で実行可能である必要はない。
【００３３】
認証状態フラグ２５は、認証状態を保持するフラグである。認証状態フラグ２５により管理される認証状態には、例えば、「認証中」、「未認証」といった状態が挙げられる。
【００３４】
ハイパーバイザ３は、仮想計算機間の共有メモリの管理や通信の管理を行う。ハイパーバイザ３は、ＶＭ間通信機能部３１と、共有メモリアクセス管理部３２と、暗号化メモリ領域３３と、暗復号処理格納メモリ３４とを備える。
【００３５】
ＶＭ間通信機能部３１は、仮想計算機間の通信を行うための通信パスを生成し管理することで、仮想計算機間の通信手段を確保する。通信の形式は通信する仮想計算機間がアクセスできる共有メモリを用いた手法や、ソケットを用いた手法でもよい。
【００３６】
共有メモリアクセス管理部３２は、仮想計算機間で共有するメモリのアクセス権限を設定し管理する。共有メモリアクセス管理部３２は、上記ＶＭ間通信機能部３１にて通信のために生成された共有メモリや暗号化メモリ領域３３を生成し、これらの領域に対する各仮想計算機からのアクセス権限の設定を行う。また、共有メモリアクセス管理部３２は、暗復号処理格納メモリ３４を生成し、セキュア仮想計算機２からは読み込み、書き込み、実行ができるように設定する。一方、共有メモリアクセス管理部３２は、暗復号処理格納メモリ３４を、非セキュア仮想計算機１からは読み込みと実行のみできるようアクセス権限を設定する。このようなアクセス権限の設定は、例えば、特開２０１０−１２３１４８号公報に記載されている技術と特開２００９−１７６２９７号公報に記載されている技術を用いて設定可能である。このようなアクセス権限の設定は、非セキュア仮想計算機１またはセキュア仮想計算機２のいずれかにより暗復号処理格納メモリ３４が利用される前の任意の時点で行われればよい。実施の形態１では、共有メモリアクセス管理部３２は、仮想計算機システム１００の起動時に、暗復号処理格納メモリ３４を前述したアクセス権限に設定するものとする。
【００３７】
暗号化メモリ領域３３は、データアクセスアプリケーション１２によって読み書きされるデータを格納するための領域である。データアクセスアプリケーション１２によって利用されるデータとしては、個人情報や金銭を伴うサービスの情報などが挙げられる。本実施の形態では、データアクセスアプリケーション１２によって利用されるデータは、暗号化して暗号化メモリ領域３３に格納されるものとする。暗号化メモリ領域３３は、非セキュア仮想計算機１、セキュア仮想計算機２のいずれからも、ＶＭスイッチを行うことなくアクセス可能な領域である。本実施の形態では、暗号化メモリ領域３３は、非セキュア仮想計算機１とセキュア仮想計算機２の両方とも読み込み、書き込み、実行が可能であるようにアクセス権限が設定されるものとする。
【００３８】
暗復号処理格納メモリ３４は、暗復号処理バイナリ２４を格納するための領域である。暗復号処理格納メモリ３４は、非セキュア仮想計算機１、セキュア仮想計算機２のいずれからも、ＶＭスイッチを行うことなくアクセス可能な領域である。暗復号処理格納メモリ３４は、共有メモリアクセス管理部３２により、非セキュア仮想計算機１、セキュア仮想計算機２それぞれからのアクセスに対して異なるアクセス権限が設定される。本実施の形態では、暗復号処理格納メモリ３４は、前述のように、セキュア仮想計算機２からは読み込み、書き込み、実行が可能であり、非セキュア仮想計算機１からは読み込みと実行のみ可能であるようにアクセス権限が設定されるものとする。
【００３９】
次に、セキュアアプリケーション１１、セキュアデーモン２１の詳細構成について説明する。
【００４０】
図２は、実施の形態１におけるセキュアアプリケーション１１およびセキュアデーモン２１の詳細構成のブロック図である。図２では、仮想計算機システム１００のうち、認証処理に関係する構成をあわせて示している。図２において、セキュアアプリケーション１１およびセキュアデーモン２１の詳細構成以外の部分については、図１と同様であるため説明を省略する。
【００４１】
セキュアアプリケーション１１は、前述のように、セキュア仮想計算機２のセキュアデーモン２１と通信することで、非セキュア仮想計算機１の実行環境から暗復号処理前の認証を要求するアプリケーションである。セキュアアプリケーション１１は、認証入力受付部１１１と認証要求部１１２と認証終了要求部１１３、認証設定要求部１１４を備える。
【００４２】
認証入力受付部１１１は、仮想計算機システム１００の外部からのユーザ認証入力として認証キーと認証要求を受け取る。外部からのユーザ認証入力は、ＧＵＩによる入力の他に、端末のロック機能発生時に発生してもよい。認証キーは、例えば、アルファベットや数字の羅列や図形を使ったパスパターン、ＩＤカード、指紋、声紋でもよい。認証要求は、認証開始要求、認証終了要求、または認証設定要求の３つがあり、例えば０や１といったフラグで表される。また、認証キーおよび認証要求は、ユーザが直接入力するか、セキュアアプリケーション１１とは別のアプリケーションが入力してもよい。
【００４３】
認証入力受付部１１１は、認証要求を受け取った後、認証要求が認証開始要求の場合は認証要求部１１２を呼び、認証キーを渡す。認証入力受付部１１１は、認証要求が認証終了要求の場合は認証終了要求部１１３を呼ぶ。認証入力受付部１１１は、認証要求が認証設定要求の場合は認証設定要求部１１４を呼び、認証キーを渡す。認証要求に対する結果は、認証要求部１１２、認証終了要求部１１３、認証設定要求部１１４を介して、成功コードまたはエラーコードとして認証入力受付部１１１に返ってくる。また、認証開始か認証終了かどうかの判断は、セキュア仮想計算機２の認証状態フラグ２５を確認してもよい。この場合、認証キーを受け取った後、ＶＭ間通信機能部３１を通じて、セキュアデーモン２１から認証状態フラグ２５を確認することになる。ただし、この場合、（１）認証状態フラグ２５の確認のために非セキュア仮想計算機１からセキュア仮想計算機２にスイッチする、（２）以後の処理を継続するためにセキュア仮想計算機２から非セキュア仮想計算機１にスイッチする、といったように、ＶＭスイッチが２回発生することになる。ＶＭスイッチの回数を抑えたい場合、認証状態フラグ２５を非セキュア仮想計算機１にも保持すればよい。しかし、この場合、非セキュア仮想計算機１が管理する認証状態とセキュアデーモン２１の認証状態がずれてしまう可能性もあるため、定期的にセキュアデーモン２１に問い合わせ、非セキュア仮想計算機１に保持する認証状態フラグ２５を更新する必要がある。
【００４４】
認証要求部１１２は、ＶＭ間通信機能部３１を呼び仮想計算機間通信手段を確保した後、認証入力受付部１１１から渡された認証キーを、後述する、セキュアデーモン２１の認証要求受付部２１１に送る。
【００４５】
認証終了要求部１１３は、認証入力受付部１１１から呼ばれ、ＶＭ間通信機能部３１を呼び仮想計算機間の通信手段を確保した後、後述する、セキュアデーモン２１の終了要求受付部２１３を呼ぶ。なお、認証終了時にも認証キーを用いて認証をさせる場合は、認証キーも終了要求受付部２１３に渡してもよい。
【００４６】
認証設定要求部１１４は、認証入力受付部１１１から認証キーを渡された後、ＶＭ間通信機能部３１を呼び仮想計算機間通信手段を確保し、渡された認証キーを、後述する、セキュアデーモン２１の認証設定受付部２１４に送る。ここで、セキュアアプリケーション１１は、初回起動時にユーザに初回認証キー設定をユーザに促す。ユーザの入力に基づく設定内容は、認証入力受付部１１１を介して認証設定要求部１１４が受け取り、認証用照合キー２３の初回設定を行う。
【００４７】
セキュアデーモン２１は、前述のように、セキュアＯＳ２２上で認証を処理し、暗復号処理バイナリ２４を非セキュア仮想計算機１からアクセス可能にするかどうかを管理する。セキュアデーモン２１は、認証要求受付部２１１と、暗復号処理展開部２１２と、終了要求受付部２１３と、認証設定受付部２１４を備える。
【００４８】
認証要求受付部２１１は、ＶＭ間通信機能部３１を介して認証要求部１１２から送られてきた認証キーを受け取り、認証キーと認証用照合キー２３が合致するかを確認する。確認する前に、認証要求受付部２１１は認証状態フラグ２５が「未認証」であることを確認する。認証キーと認証用照合キー２３が合致したら、認証要求受付部２１１は認証状態フラグ２５を「認証中」に変え、暗復号処理展開部２１２を呼ぶ。合致しなかった場合や認証状態フラグ２５が「未認証」でない場合、認証状態フラグ２５が存在しない場合は、ＶＭ間通信機能部３１を介して認証入力受付部１１１にエラーコードを返す。以上の処理が問題なく実行された場合、認証要求受付部２１１はＶＭ間通信機能部３１を介して認証入力受付部１１１に成功コードを送る。
【００４９】
暗復号処理展開部２１２は、暗復号処理バイナリ２４を非セキュア仮想計算機１から実行できる状態に変更する。認証要求受付部２１１から呼ばれると、セキュア仮想計算機２内に保持していた暗復号処理バイナリ２４を暗復号処理格納メモリ３４に格納する。格納するときは、セキュアＯＳ２２のメモリコピー部２２１に暗復号処理格納メモリ３４のアドレスと暗復号処理バイナリ２４のアドレスを渡して実行させる。メモリコピー部２２１は渡された移動元のアドレスのデータを移動先のアドレスへコピーする。
【００５０】
終了要求受付部２１３は、ＶＭ間通信機能部３１を介して認証終了要求部１１３から呼ばれる。終了要求受付部２１３では、まず認証状態フラグ２５が「認証中」であることを確認する。認証状態フラグ２５が「認証中」であれば、暗復号処理格納メモリ３４に格納された暗復号処理バイナリ２４を消去し、認証状態フラグ２５を「未認証」に変える。暗復号処理バイナリ２４を消去する時、終了要求受付部２１３はセキュアＯＳ２２のメモリ消去部２２２に暗復号処理格納メモリ３４のアドレスを渡し実行する。またメモリ消去部２２２は渡されたアドレスに格納されているデータを消去する。終了要求受付部２１３にて、暗復号処理バイナリ２４を消去できない場合などエラーが発生した場合は、認証終了要求部１１３にエラーコードを返す。以上の処理が問題なく実行された場合、終了要求受付部２１３は、ＶＭ間通信機能部３１を介して認証入力受付部１１１に成功コードを送る。
【００５１】
認証設定要求部２１４は、ＶＭ間通信機能部３１を介して認証設定要求部１１４から送られてきた認証キーを受け取り、認証キーを認証用照合キー２３に設定する。認証用照合キー２３の再設定は認証状態フラグ２５が「認証中」のときのみ行う。認証状態フラグ２５が「認証中」以外だった場合は、ＶＭ間通信機能部３１を介してエラーコードを認証入力受付部１１１に送る。例外として、セキュアアプリケーション１１の初回起動時に認証設定要求部２１４が呼ばれる場合は、認証状態フラグ２５が「認証中」でなくても設定を行う。その際は認証用照合キー２３がない状態なので、認証用照合キー２３の有無を確認することで、上記ケースを判断する。以上の処理が問題なく実行された場合、認証設定要求部２１４は、ＶＭ間通信機能部３１を介して認証入力受付部１１１に成功コードを送る。
【００５２】
セキュア仮想計算機２の説明は以上である。以降は、認証開始から認証終了までの流れ、および認証設定の流れを説明する。
【００５３】
図３は、ユーザ認証入力が入力された時のセキュアアプリケーション１１の動作の一例を示すフローチャートである。
【００５４】
まず、ユーザ認証入力として認証キーと認証要求を認証入力受付部１１１が受け付ける（Ｓ１００１）。ここで、ユーザ認証入力には、認証要求が認証開始要求であるか、認証終了要求であるか、認証設定要求であるかを識別するための情報が含まれているものとする。
【００５５】
次に、認証入力受付部１１１は、認証要求が認証開始要求であるか否かを判断する（Ｓ１００２）。
【００５６】
認証要求が認証開始要求である場合（Ｓ１００２がＹ）、認証キーを渡して認証要求部１１２を呼ぶ。認証要求部１１２は、ＶＭ間通信機能部３１を実行し、仮想計算機間の通信手段を確立したあと、渡された認証キーを認証要求受付部２１１に送る（Ｓ１００３）。
【００５７】
認証要求が認証開始要求でない場合（Ｓ１００２がＮ）、認証入力受付部１１１は、認証要求が認証終了要求であるか否かを判断する（Ｓ１００４）。
【００５８】
認証要求が認証終了要求である場合（Ｓ１００４がＹ）、認証入力受付部１１１は、認証終了要求部１１３を呼ぶ。認証終了要求部１１３は、ＶＭ間通信機能部３１を実行し、仮想計算機間の通信手段を確立した後、終了要求受付部２１３を呼ぶ（Ｓ１００５）。
【００５９】
認証要求が認証終了要求でない場合（Ｓ１００４がＮ）、認証入力受付部１１１は、認証要求が認証設定要求であると判断し、認証キーを渡して認証設定要求部１１４を呼ぶ。認証設定要求部１１４は、ＶＭ間通信機能部３１を実行し、仮想計算機間の通信手段を確立したあと、渡された認証キーを認証設定受付部２１４に送る（Ｓ１００６）。
【００６０】
以上が、ユーザ認証入力が入力された時のセキュアアプリケーション１１の動作である。
【００６１】
次に、実施の形態１の認証開始時のセキュアデーモン２１の動きを説明する。
【００６２】
図４は、実施の形態１の認証開始時のセキュアデーモン２１の動作の一例を示すフローチャートである。
【００６３】
まず、認証要求受付部２１１は、認証キーを受け付ける（Ｓ２００１）。ここで、認証要求受付部２１１が受け付ける認証キーは、前述した図３のＳ１００３の処理において、認証入力受付部１１１から送られたものである。また、例えば、認証用照合キー２３が、前述したＩＤとパスワードとが対応付けられたテーブル形式の場合、認証要求受付部２１１が受け付ける認証キーは、ＩＤとパスワードのセットであるものとする。ＩＤがユーザＩＤの場合、ユーザＩＤはユーザから入力されたものであり、ＩＤが仮想計算機ＩＤの場合、認証要求部１１２または認証設定要求部１１４がハイパーバイザに仮想計算機ＩＤを問い合わせることで入手するものとする。
【００６４】
次に、認証要求受付部２１１は、認証用照合キー２３が存在し、かつ、認証状態フラグ２５が「未認証」であるか否かを確認する（Ｓ２００２）。ここで、このステップにおける認証用照合キー２３が存在するか否かの確認は、セキュアアプリ初回起動時の認証用照合キー２３の初回設定をするかどうかの確認のためのものである。例えば、認証用照合キー２３が、前述したＩＤとパスワードとが対応付けられたテーブル形式の場合、テーブル内のＩＤとパスワードがＮＵＬＬの場合、初回起動時であると判断する。
【００６５】
認証用照合キー２３が存在しない、および／または認証状態フラグ２５が「未認証」でない場合（Ｓ２００２がＮ）、認証要求受付部２１１は、ＶＭ間通信機能部３１を介して認証入力受付部１１１に、認証開始処理が失敗した旨のエラーコードを返す（Ｓ２００４）。
【００６６】
一方、認証用照合キー２３が存在し、かつ認証状態フラグ２５が「未認証」である場合（Ｓ２００２がＹ）、認証要求受付部２１１は、渡された認証キーが認証用照合キー２３と合致するか否かを確認する（Ｓ２００３）。なお、認証用照合キー２３が、前述したＩＤとパスワードとが対応付けられたテーブル形式の場合、認証要求受付部２１１は、ＩＤとパスワードのセットと認証用照合キー２３内のＩＤとパスワードのセットが一致するかどうかを確認する。
【００６７】
認証キーと認証用照合キー２３が合致しない場合（Ｓ２００３がＮ）、認証要求受付部２１１は、ＶＭ間通信機能部３１を介して認証入力受付部１１１に、認証開始処理が失敗したことを示すエラーコードを返す（Ｓ２００４）。
【００６８】
認証キーと認証用照合キー２３が合致した場合（Ｓ２００３がＹ）、認証要求受付部２１１は、暗復号処理展開部２１２を呼ぶ（Ｓ２００５）。
【００６９】
暗復号処理展開部２１２は、暗復号処理バイナリ２４のアドレスと暗復号処理格納メモリ３４のアドレスを渡し、メモリコピー部２２１を呼ぶ。続いて、メモリコピー部２２１は、渡された暗復号処理格納メモリ３４のアドレスへ暗復号処理バイナリ２４をコピーする（Ｓ２００６）。
【００７０】
その後、認証要求受付部２１１は、認証状態フラグ２５を「認証中」に変えて、認証入力受付部１１１に、認証開始処理が成功したことを示す成功コードを返す（Ｓ２００７）。
【００７１】
以上が実施の形態１の認証開始時のセキュアデーモン２１の動きに関する説明である。
【００７２】
次に、実施の形態１の認証終了時のセキュアデーモン２１の動きを説明する。
【００７３】
図５は、実施の形態１の認証終了時のセキュアデーモン２１の動作を示すフローチャートである。
【００７４】
まず、終了要求受付部２１３は、認証終了要求を受け付ける（Ｓ３００１）。ここで、終了要求受付部２１３が受け付ける認証終了要求は、前述した図３のＳ１００５の処理において、認証入力受付部１１１から送られたものである。
【００７５】
次に、認証状態フラグ２５が「認証中」であるか否かを確認する（Ｓ３００２）。
【００７６】
認証状態フラグ２５が「認証中」でない場合（Ｓ３００２がＮ）、終了要求受付部２１３は、ＶＭ間通信機能部３１を介して、認証入力受付部１１１に、認証終了処理が失敗したことを示すエラーコードを返す（Ｓ３００４）。
【００７７】
一方、認証状態フラグ２５が「認証中」である場合（Ｓ３００２がＹ）、終了要求受付部２１３は、暗復号処理格納メモリ３４のアドレスを渡し、メモリ消去部２２２を呼ぶ。続いて、メモリ消去部２２２は、渡されたアドレスから、暗復号処理格納メモリ３４の中にある暗復号処理バイナリ２４のデータを消去する（Ｓ３００３）。
【００７８】
その後、終了要求受付部２１３は、認証状態フラグ２５を「未認証」に変え、ＶＭ間通信機能部３１を介して、認証入力受付部１１１に、認証終了処理が成功したことを示す成功コードを返す（Ｓ３００５）。
【００７９】
以上が、実施の形態１の認証終了時のセキュアデーモン２１の動きに関する説明である。
【００８０】
次に、認証設定時のセキュアデーモン２１の動きを説明する。
【００８１】
図６は、認証設定時のセキュアデーモン２１の動作を示すフローチャートである。
【００８２】
まず、認証設定受付部２１４は、認証キーを受け付ける（Ｓ３００１）。ここで、認証設定受付部２１４が受け付ける認証キーは、前述した図３のＳ１００６の処理において、認証入力受付部１１１から送られたものである。
【００８３】
次に、認証設定受付部２１４は、認証用照合キー２３が存在するか否かを確認する（Ｓ４００２）。
【００８４】
認証用照合キー２３が存在しない場合（Ｓ４００２がＮ）、認証設定受付部２１４は、受け付けた認証設定要求が認証用照合キーの初回設定であると判断し、渡された認証キーを認証用照合キー２３として設定する。その後、認証設定受付部２１４はＶＭ間通信機能部３１を介して、認証入力受付部１１１に、認証設定処理が成功したことを示す成功コードを返す（Ｓ４００４）。
【００８５】
認証用照合キー２３が存在する場合（Ｓ４００２がＹ）、認証設定受付部２１４は、認証状態フラグ２５が「認証中」であるか否かを確認する（Ｓ４００３）。
【００８６】
認証状態フラグ２５が「認証中」であった場合（Ｓ４００３がＹ）、渡された認証キーを認証用照合キー２３として再設定する。その後、ＶＭ間通信機能部３１を介して、認証入力受付部１１１に、認証設定処理が成功したことを示す成功コードを返す（Ｓ４００４）。
【００８７】
認証状態フラグ２５が「認証中」でなかった場合（Ｓ４００３がＮ）、認証設定受付部２１４は、ＶＭ間通信機能部３１を介して、認証入力受付部１１１に、認証設定処理が失敗したことを示すエラーコードを返す（Ｓ４００５）。
【００８８】
以上が認証設定時のセキュアデーモン２１の動きに関する説明である。以降は非セキュア仮想計算機１の説明に戻り、認証中状態時の暗復号処理の動作を説明する。
【００８９】
図７は、データアクセスアプリケーション１２の詳細構成のブロック図である。図７では、実施の形態１の仮想計算機システムにおける、データアクセスアプリケーション１２以外の構成についても記載しているが、これらについては図１と同様であるため説明を省略する。
【００９０】
データアクセスアプリケーション１２は、前述のように、暗号化メモリ領域３３のデータを読み書きするアプリケーションである。ここで、一例として、データアクセスアプリケーション１２がファイル管理アプリケーションであり、このファイル管理アプリケーションが、非セキュア仮想計算機１内のアプリケーションのみアクセスできる非セキュアＯＳローカルメモリ１３４と暗号化メモリ領域３３の間でファイル移動させることを想定する。非セキュアＯＳローカルメモリ１３４から暗号化メモリ領域３３にファイルを移す場合、対象ファイルを暗号化して暗号化メモリ領域３３にファイルを書き込む。反対に暗号化メモリ領域３３から非セキュアＯＳローカルメモリ１３４にファイルを移す場合、対象ファイルを暗号化メモリ領域３３から読み込み、復号化して非セキュアＯＳローカルメモリ１３４に移す。
【００９１】
データアクセスアプリケーション１２は、読込受付部１２１と、書込受付部１２２を備える。
【００９２】
読込受付部１２１は、暗号化メモリ領域３３からのデータ読み込み命令を受け付ける。読込受付部１２１は、データ読み込み命令を受け付けた後、暗号化メモリ領域３３に格納されている対象データアドレスを暗号化領域読込部１３１に渡す。暗号化メモリ領域３３からのデータ読み込み命令は、ユーザからのＧＵＩ入力から発生してもいいし、別のアプリケーションから送られてもよい。
【００９３】
書込受付部１２２は、暗号化メモリ領域３３へのデータ書き込み命令を受け付ける。読込受付部１２１は、データ書き込み命令を受け付けた後は、非セキュアＯＳローカルメモリ１３４に格納されているデータアドレスを暗号化領域書込部１３２に渡す。暗号化メモリ領域３３からのデータ書き込み命令は、ユーザからのＧＵＩ入力から発生してもいいし、別のアプリケーションから送られてもよい。
【００９４】
図８は、実施の形態１における、暗号化メモリ領域３３のデータの読み込み時のデータアクセスアプリケーション１２と非セキュアＯＳ１３の動作の一例を示すフローチャートである。
【００９５】
まず、読込受付部１２１が、暗号化メモリ領域３３の読み込み要求を受け付ける（Ｓ５００１）。読み込み要求には、暗号化メモリ領域３３内の読み込み対象データのアドレスかそのアドレスが分かる情報が含まれる。
【００９６】
その後、読込受付部１２１は、読み込み対象データのアドレスを渡し、暗号化領域読込部１３１を呼ぶ（Ｓ５００２）。
【００９７】
その後、暗号化領域読込部１３１が、非セキュアＯＳメモリ生成部１３３を呼ぶ。続いて、非セキュアＯＳメモリ生成部１３３は対象データの復号化を行うために利用する一時バッファ１３５を生成する（Ｓ５００３）。
【００９８】
その後、暗号化領域読込部１３１は、渡された暗号化メモリ領域３３内の対象データアドレスから、暗号化された状態の対象データを一時バッファ１３５にコピーする（Ｓ５００４）。
【００９９】
その後、暗号化領域読込部１３１は、暗復号処理格納メモリ３４内の暗復号処理バイナリ２４を実行し、一時バッファ１３５内の対象データを復号化し、復号化したデータを一時バッファ１３５内の別のメモリ領域に格納する（Ｓ５００５）。
【０１００】
対象データの復号化が全て完了した後、暗号化領域読込部１３１は、一時バッファ１３５内の復号化されたデータを非セキュアＯＳローカルメモリ１３４に書き込む（Ｓ５００６）。
【０１０１】
以上の手順を行うことで、ＶＭスイッチを行わずに暗号化メモリ領域３３内の読み込み対象のデータを復号化し、非セキュアＯＳローカルメモリ１３４に配置することができる。
【０１０２】
図９は、実施の形態１における暗号化メモリ領域３３のデータの書き込み時のデータアクセスアプリケーション１２と非セキュアＯＳ１３の動作の一例を示すフローチャートである。
【０１０３】
まず、書込受付部１２２が、暗号化メモリ領域３３への書き込み要求を受け付ける（Ｓ６００１）。書き込み要求には、非セキュアＯＳローカルメモリ１３４内の読み込み対象データのアドレスかそのアドレスが分かる情報が含まれる。
【０１０４】
その後、書込受付部１２２は、書き込み対象データのアドレスを渡し、暗号化領域書込部１３２を呼ぶ（Ｓ６００２）。
【０１０５】
その後、暗号化領域書込部１３２は、非セキュアＯＳメモリ生成部１３３を呼ぶ。続いて、非セキュアＯＳメモリ生成部１３３は、対象データの暗号化を行うために利用する一時バッファ１３５を生成する（Ｓ６００３）。
【０１０６】
その後、暗号化領域書込部１３２は、渡された非セキュアＯＳローカルメモリ１３４内の対象データアドレスから、対象データを一時バッファ１３５にコピーする（Ｓ６００４）。
【０１０７】
その後、暗号化領域書込部１３２は、暗復号処理格納メモリ３４内の暗復号処理バイナリ２４を実行し、一時バッファ１３５内の対象データを暗号化し、暗号化したデータを一時バッファ１３５内の別のメモリ領域に格納する（Ｓ６００５）。
【０１０８】
対象データの暗号化が全て完了した後、暗号化領域書込部１３２は、一時バッファ１３５内の暗号化されたデータを暗号化メモリ領域３３に書き込む（Ｓ６００６）。
【０１０９】
以上の手順を行うことで、ＶＭスイッチを行わずに非セキュアＯＳローカルメモリ１３４内の書き込み対象のデータを暗号化し、暗号化メモリ領域３３に配置することができる。
【０１１０】
以上の構成により、非セキュア仮想計算機１から認証要求を発行され、セキュア仮想計算機２において認証処理が成功しない限り、暗復号処理バイナリ２４はセキュア仮想計算機２に保持された状態を維持できる。よって、非セキュア仮想計算機１のシステム管理者権限が奪われたとしても、暗復号処理バイナリ２４にはアクセスできない。また、認証の正当性が認められた時間だけ、ＶＭスイッチを行うことなく非セキュア仮想計算機１からアクセス可能な領域に暗復号処理バイナリ２４が格納されるため、ＶＭスイッチによるオーバーヘッドを抑えることができる。
【０１１１】
（実施の形態２）
実施の形態１では、非セキュア仮想計算機からＶＭスイッチを行うことなくアクセス可能に設定された領域を設け、所定の場合に、通常はこの領域に格納されていない暗復号処理バイナリをこの領域にコピーし、処理が終了するとこの領域から暗復号処理バイナリを削除することにより、暗復号処理を安全かつオーバーヘッドを抑えて行うことを可能とする仮想計算機システムの例について説明した。
【０１１２】
実施の形態２では、非セキュア仮想計算機からはＶＭスイッチを行うことなくアクセス可能であるが、通常はアクセスを許可しないように設定された領域に暗復号処理バイナリを予め格納しておき、所定の場合に、この領域のアクセスを許可して暗復号処理バイナリを実行できるようにすることにより、暗復号処理を安全かつオーバーヘッドを抑えて行うことを可能とする仮想計算機システムの例について説明する。
【０１１３】
図１０に、実施の形態２における仮想計算機システム６００の構成を示す。実施の形態２における仮想計算機システム６００では、セキュアデーモン６２１の詳細構成および詳細動作と、共有メモリアクセス管理部６３２の詳細動作が、それぞれ、実施の形態１に係る仮想計算機システム１００のセキュアデーモン２１および共有メモリアクセス管理部３２と異なる。また、暗復号処理バイナリ２４を、ハイパーバイザが備える暗復号処理格納メモリ６３４に格納する点で実施の形態１と異なる。それ以外については実施の形態１と同様であり、詳細説明は省略する。
【０１１４】
セキュアデーモン６２１は、セキュアＯＳ２２上で認証を処理し、暗復号処理バイナリ２４を非セキュア仮想計算機１からアクセス可能にするかどうかを管理するプログラムである。なお、セキュアデーモン６２１は、セキュアＯＳ２２上で常駐して動作することが好ましいが、この例に限らず、必要に応じて起動し、終了するプログラムであってもよい。セキュアデーモン６２１の詳細構成および詳細動作は後述する。
【０１１５】
共有メモリアクセス管理部６３２は、仮想計算機間で共有するメモリのアクセス権限を設定し管理する。共有メモリアクセス管理部６３２は、ＶＭ間通信機能部３１にて通信のために生成された共有メモリや暗号化メモリ領域３３に対する各仮想計算機からのアクセス権限の設定を行う。また、共有メモリアクセス管理部６３２は、暗復号処理格納メモリ６３４を、非セキュア仮想計算機１からはアクセスできない権限に設定する。権限を設定した後、ハイパーバイザ３は暗復号処理格納メモリ６３４に暗復号処理バイナリ２４を格納する。このようなアクセス権限の設定は、非セキュア仮想計算機１により暗復号処理格納メモリ６３４が利用される前の任意の時点で行われればよい。実施の形態２では、仮想計算機システム６００起動時に、暗復号処理格納メモリ６３４を前述したアクセス権限に設定するものとする。
【０１１６】
図１１は、実施の形態２のセキュアアプリケーション１１およびセキュアデーモン６２１の詳細構成のブロック図である。図１１では、仮想計算機システム６００のうち、認証処理に関係する構成をあわせて示している。図１１において、セキュアアプリケーション１１およびセキュアデーモン６２１の詳細構成以外の部分については、図１０と同様であるため説明を省略する。また、セキュアアプリケーション１１の詳細構成については、図２と同様であるため説明を省略する。
【０１１７】
セキュアデーモン６２１は、認証要求受付部２１１と、暗復号処理展開部６１２と、終了要求受付部６１３と、認証設定受付部２１４を備える。
【０１１８】
認証要求受付部２１１と認証設定受付部２１４については、図２と同様のため説明を省略する。
【０１１９】
暗復号処理展開部６１２は、共有メモリアクセス管理部６３２を呼び、暗復号処理格納メモリ３４のアクセス権限を非セキュア仮想計算機１から実行と読み込みのみ可能な権限に設定する。
【０１２０】
終了要求受付部６１３は、ＶＭ間通信機能部３１を介して認証終了要求部１１３から認証終了要求が渡されると実行される。終了要求受付部６１３では、まず認証状態フラグ２５が「認証中」であることを確認する。認証状態フラグ２５が「認証中」であれば、共有メモリアクセス管理部６３２を呼び、暗復号処理格納メモリ３４を非セキュア仮想計算機１からはアクセスできない権限に設定する。その後、認証状態フラグ２５を「未認証」に変える。
【０１２１】
ここで、実施の形態２の認証開始時のセキュアデーモン６２１の動きを説明する。
【０１２２】
図１２は、実施の形態２の認証開始時のセキュアデーモン６２１の動作の一例を示すフローチャートである。
【０１２３】
まず、認証要求受付部２１１は、認証キーを受け付ける（Ｓ７００１）。ここで、認証要求受付部２１１が受け付ける認証キーは、前述した図３のＳ１００３の処理において、認証入力受付部１１１から送られたものである。
【０１２４】
次に、認証要求受付部２１１は、認証用照合キー２３が存在し、かつ、認証状態フラグ２５が「未認証」であるか否かを確認する（Ｓ７００２）。
【０１２５】
認証用照合キー２３が存在しない、および／または認証状態フラグ２５が「未認証」でない場合（Ｓ７００２がＮ）、認証要求受付部２１１は、ＶＭ間通信機能部３１を介して認証入力受付部１１１に、認証開始処理が失敗した旨のエラーコードを返す（Ｓ７００４）。
【０１２６】
一方、認証用照合キー２３が存在し、かつ認証状態フラグ２５が「未認証」である場合（Ｓ７００２がＹ）、認証要求受付部２１１は、渡された認証キーが認証用照合キー２３と合致するか否かを確認する（Ｓ７００３）。
【０１２７】
認証キーと認証用照合キー２３が合致しない場合（Ｓ７００３がＮ）、認証要求受付部２１１は、ＶＭ間通信機能部３１を介して認証入力受付部１１１に、認証開始処理が失敗した旨のエラーコードを返す（Ｓ７００４）。
【０１２８】
認証キーと認証用照合キー２３が合致した場合（Ｓ７００３がＹ）、認証要求受付部２１１は暗復号処理展開部６１２を呼ぶ（Ｓ７００５）。
【０１２９】
暗復号処理展開部６１２は、共有メモリアクセス管理部６３２を呼び、暗復号処理格納メモリ３４のアクセス権限を非セキュア仮想計算機１から実行と読み込みのみ可能な権限に設定する（Ｓ７００６）。
【０１３０】
その後、認証要求受付部２１１は、認証状態フラグ２５を「認証中」に変えて、認証入力受付部１１１に、認証開始処理が成功したことを示す成功コードを返す（Ｓ７００７）。
【０１３１】
以上が実施の形態２の認証開始時のセキュアデーモン６２１の動きに関する説明である。次に、本発明の実施の形態２の認証終了時のセキュアデーモン６２１の動きを説明する。
【０１３２】
図１３は、実施の形態２の認証終了時のセキュアデーモン６２１の動作の一例を示すフローチャートである。
【０１３３】
まず、終了要求受付部２１３は、認証終了要求を受け付ける（Ｓ８００１）。ここで、終了要求受付部２１３が受け付ける認証終了要求は、前述した図３のＳ１００５の処理において、認証入力受付部１１１から送られたものである。
【０１３４】
次に、終了要求受付部２１３は、認証状態フラグ２５が「認証中」であるか否かを確認する（Ｓ８００２）。
【０１３５】
認証状態フラグ２５が「認証中」でない場合（Ｓ８００２がＮ）、終了要求受付部６１３は、ＶＭ間通信機能部３１を介して、認証入力受付部１１１に、認証終了処理が失敗したことを示すエラーコードを返す（Ｓ８００４）。
【０１３６】
一方、認証状態フラグ２５が「認証中」である場合（Ｓ８００２がＹ）、終了要求受付部６１３は、共有メモリアクセス管理部６３２を呼び、暗復号処理格納メモリ３４を非セキュア仮想計算機１からはアクセスできない権限に設定する（Ｓ８００３）。
【０１３７】
その後、終了要求受付部６１３は、認証状態フラグ２５を「未認証」に変え、ＶＭ間通信機能部３１を介して、認証入力受付部１１１に、認証終了処理が成功したことを示す成功コードを返す（Ｓ８００５）。
【０１３８】
以上が、実施の形態２の認証終了時のセキュアデーモン６２１の動きに関する説明である。
【０１３９】
以上の構成により、非セキュア仮想計算機１からはＶＭスイッチを行うことなくアクセス可能な領域である暗復号処理格納メモリ３４が、通常はアクセスを許可しないように設定されているので、暗復号処理バイナリ２４を、暗復号処理格納メモリ３４に格納しておいても、非セキュア仮想計算機１から暗復号処理バイナリ２４を解析できない。また、暗復号処理展開部６１２実行時に、逐次、暗復号処理バイナリ２４のコピー処理を行わずに、非セキュア仮想計算機１から暗復号処理を行うことができる。その結果、暗復号処理を安全かつＶＭスイッチのオーバーヘッドを抑えて行うことが可能となる。
【０１４０】
（実施の形態３）
実施の形態１では、非セキュア仮想計算機からＶＭスイッチを行うことなくアクセス可能に設定された領域を設け、所定の場合に、通常はこの領域に格納されていない暗復号処理バイナリをこの領域にコピーし、処理が終了するとこの領域から暗復号処理バイナリを削除することにより、暗復号処理を安全かつオーバーヘッドを抑えて行うことを可能とする仮想計算機システムの例について説明した。このとき、データアクセスアプリケーションが利用するデータを格納する領域については、非セキュア仮想計算機の起動からシャットダウンまでの間は認識させることとしていた。つまり、データアクセスアプリケーションがデータを利用しない間も、このようなデータを格納した領域は非セキュア仮想計算機に認識される状態としていた。
【０１４１】
実施の形態３は、データアクセスアプリケーションが利用するデータを格納する領域を非セキュア仮想計算機に認識させる期間を制限することで、暗号化データのセキュリティを更に高めることを可能とする仮想計算機システムの例について説明する。
【０１４２】
図１４に、実施の形態３における仮想計算機システム７００の構成を示す。実施の形態３における仮想計算機システム７００では、図１４のように、非セキュアＯＳ７３が備える暗復号領域認識部７３６の詳細動作と、セキュアデーモン７２１の詳細構成および動作とが、それぞれ、実施の形態１に係る仮想計算機システム１００の暗復号領域認識部１３６およびセキュアデーモン２１と異なる。それ以外については実施の形態１と同様であり、詳細説明は省略する。
【０１４３】
非セキュアＯＳ７３は、一般的な処理を実行するプログラムを制御し管理するプログラムである。非セキュアＯＳ７３は、実施の形態１と異なり、非セキュアＯＳ７３の起動時に暗復号領域認識部７３６を呼ばない。また、非セキュアＯＳ７３のシャットダウン時も、暗復号領域認識部７３６を呼ばない。
【０１４４】
暗復号領域認識部７３６は、暗号化メモリ領域３３をマウント処理などで非セキュアＯＳ７３に認識させて利用可能にする処理を行う。この処理は、データアクセスアプリケーション１２が暗号化メモリ領域３３に格納されたデータを利用する前の任意の時点で行われればよい。実施の形態３では、暗復号処理展開部７１２から暗復号領域認識部７３６が呼ばれることにより、暗号化メモリ領域３３の認識処理が行われるものとする。
【０１４５】
また、暗復号領域認識部７３６は、暗号化メモリ領域３３をアンマウント処理などで非セキュアＯＳ７３に認識させない状態にし、利用不可能にする処理も行う。この処理は、データアクセスアプリケーション１２が暗号化メモリ領域３３に格納されたデータを利用した後の任意の時点で行われればよい。実実施の形態３では、暗復号処理展開部７１２から暗復号領域認識部７３６が呼ばれ、暗号化メモリ領域３３の認識解除処理が行われる。
【０１４６】
セキュアデーモン７２１は、セキュアＯＳ２２上で認証を処理し、暗復号処理バイナリ２４を非セキュア仮想計算機１からアクセス可能にするかどうかを管理するプログラムである。なお、セキュアデーモン７２１は、セキュアＯＳ２２上で常駐して動作することが好ましいが、この例に限らず、必要に応じて起動し、終了するプログラムであってもよい。セキュアデーモン７２１の詳細構成および詳細動作は後述する。
【０１４７】
図１５は、実施の形態３のセキュアアプリケーション１１およびセキュアデーモン７２１の詳細構成のブロック図である。図１５では、仮想計算機システム７００のうち、認証処理に関係する構成をあわせて示している。図１５において、セキュアアプリケーション１１およびセキュアデーモン７２１の詳細構成以外の部分については、図１４と同様であるため説明を省略する。また、セキュアアプリケーション１１の詳細については、図２と同様であるため説明を省略する。
【０１４８】
セキュアデーモン７２１は、認証要求受付部２１１と、暗復号処理展開部７１２と、終了要求受付部７１３と、認証設定受付部２１４を備える。
【０１４９】
認証要求受付部２１１と認証設定受付部２１４については、図２と同様のため説明を省略する。
【０１５０】
暗復号処理展開部７１２は、暗復号処理バイナリ２４を非セキュア仮想計算機１から実行できる状態に変更する。暗復号処理展開部７１２は、認証要求受付部２１１から呼ばれると、セキュア仮想計算機２内に保持していた暗復号処理バイナリ２４を暗復号処理格納メモリ３４に格納する。この格納処理は、セキュアＯＳ２２のメモリコピー部２２１に暗復号処理格納メモリ３４のアドレスと暗復号処理バイナリ２４のアドレスを渡すことにより実行させる。メモリコピー部２２１は、渡された移動元のアドレスのデータを移動先のアドレスへコピーする。その後、暗復号処理展開部７１２は、ＶＭ間通信機能部３１を介して暗復号領域認識部７３６を呼び、暗号化メモリ領域３３を非セキュアＯＳ７３に認識させる処理をさせる。
【０１５１】
終了要求受付部７１３は、ＶＭ間通信機能部３１を介して認証終了要求部１１３から認証終了要求が渡されると実行される。終了要求受付部７１３は、まず、認証状態フラグ２５が「認証中」であることを確認する。認証状態フラグ２５が「認証中」であれば、暗復号処理格納メモリ３４に格納された暗復号処理バイナリ２４を消去し、認証状態フラグ２５を「未認証」に変える。終了要求受付部７１３は、暗復号処理バイナリ２４を消去する時、セキュアＯＳ２２のメモリ消去部２２２に暗復号処理格納メモリ３４のアドレスを渡し実行する。また、メモリ消去部２２２は、渡されたアドレスに格納されているデータを消去する。また、終了要求受付部７１３にて、暗復号処理バイナリ２４を消去できないなどエラーが発生した場合は、認証入力受付部１１１にエラーコードを返す。終了要求受付部７１３は、データを消去した後、ＶＭ間通信機能部３１を介して暗復号領域認識部７３６を呼び、暗号化メモリ領域３３を非セキュアＯＳ７３に認識させない状態にする。
【０１５２】
ここで、実施の形態３の認証開始時のセキュアデーモン７２１の動きを説明する。
【０１５３】
図１６は、実施の形態３の認証開始時のセキュアデーモン７２１の動作の一例を示すフローチャートである。
【０１５４】
まず、認証要求受付部２１１は、認証キーを受け付ける（Ｓ９００１）。ここで、認証要求受付部２１１が受け付ける認証キーは、前述した図３のＳ１００３の処理において、認証入力受付部１１１から送られたものである。
【０１５５】
次に、認証要求受付部２１１は、認証用照合キー２３が存在し、かつ、認証状態フラグ２５が「未認証」であるか否かを確認する（Ｓ９００２）。
【０１５６】
認証用照合キー２３が存在しない、および／または認証状態フラグ２５が「未認証」でない場合（Ｓ９００２がＮ）、認証要求受付部２１１は、ＶＭ間通信機能部３１を介して認証入力受付部１１１に、認証開始処理が失敗した旨のエラーコードを返す（Ｓ９００４）。
【０１５７】
一方、認証用照合キー２３が存在し、かつ認証状態フラグ２５が「未認証」である場合（Ｓ９００２がＹ）、認証要求受付部２１１は、渡された認証キーが認証用照合キー２３と合致するか否かを確認する（Ｓ９００３）。
【０１５８】
認証キーと認証用照合キー２３が合致しない場合（Ｓ９００３がＮ）、認証要求受付部２１１は、ＶＭ間通信機能部３１を介して認証入力受付部１１１に、認証開始処理が失敗した旨のエラーコードを返す（Ｓ９００４）。
【０１５９】
認証キーと認証用照合キー２３が合致した場合（Ｓ９００３がＹ）、認証要求受付部２１１は、暗復号処理展開部７１２を呼ぶ（Ｓ９００５）。
【０１６０】
暗復号処理展開部７１２は、暗復号処理バイナリ２４のアドレスと暗復号処理格納メモリ３４のアドレスを渡し、メモリコピー部２２１を呼ぶ。メモリコピー部２２１は、渡された暗復号処理格納メモリ３４のアドレスへ暗復号処理バイナリ２４をコピーする（Ｓ９００６）。
【０１６１】
その後、暗復号処理展開部７１２は、ＶＭ間通信機能部３１を介して、暗復号領域認識部７３６を呼ぶ（Ｓ９００７）。
【０１６２】
暗復号領域認識部７３６は、暗号化メモリ領域３３を非セキュアＯＳ７３に認識させる（Ｓ９００８）。
【０１６３】
認識された後、認証要求受付部２１１は、認証状態フラグ２５を「認証中」に変えて、認証入力受付部１１１に、認証開始処理が成功したことを示す成功コードを返す（Ｓ９００９）。
【０１６４】
以上が、実施の形態３の認証開始時のセキュアデーモン７２１の動きに関する説明である。
【０１６５】
次に、実施の形態３の認証終了時のセキュアデーモン７２１の動きを説明する。
【０１６６】
図１７は、実施の形態３の認証終了時のセキュアデーモン７２１の動作の一例を示すフローチャートである。
【０１６７】
まず、終了要求受付部７１３は、認証終了要求を受け付ける（Ｓ１０００１）。ここで、終了要求受付部２１３が受け付ける認証終了要求は、前述した図３のＳ１００５の処理において、認証入力受付部１１１から送られたものである。
【０１６８】
次に、終了要求受付部７１３は、認証状態フラグ２５が「認証中」であるか否かを確認する（Ｓ１０００２）。
【０１６９】
認証状態フラグ２５が「認証中」でない場合（Ｓ１０００２がＮ）、終了要求受付部７１３は、ＶＭ間通信機能部３１を介して、認証入力受付部１１１に、認証終了処理が失敗したことを示すエラーコードを返す（Ｓ１０００４）。
【０１７０】
一方、認証状態フラグ２５が「認証中」状態である場合（Ｓ１０００２がＹ）、終了要求受付部７１３は、暗復号処理格納メモリ３４のアドレスを渡し、メモリ消去部２２２を呼ぶ。メモリ消去部２２２は、渡されたアドレスから、暗復号処理格納メモリ３４の中にある暗復号処理バイナリ２４のデータを消去する（Ｓ１０００３）。
【０１７１】
その後、終了要求受付部７１３は、ＶＭ間通信機能部３１を介して暗復号領域認識部７３６を呼ぶ（Ｓ１０００５）。
【０１７２】
暗復号領域認識部７３６は、暗号化メモリ領域３３を非セキュアＯＳ７３に認識させないよう処理する（Ｓ１０００６）。
【０１７３】
その後、終了要求受付部７１３は、認証状態フラグ２５を「未認証」に変え、ＶＭ間通信機能部３１を介して、認証入力受付部１１１に、認証終了処理が成功したことを示す成功コードを返す（Ｓ１０００７）。
【０１７４】
以上が、実施の形態３の認証終了時のセキュアデーモン７２１の動きに関する説明である。
【０１７５】
以上の構成により、非セキュア仮想計算機１から認証要求を発行され、セキュア仮想計算機２において認証処理が成功しない限り、暗復号処理バイナリ２４はセキュア仮想計算機２に保持された状態を維持できる。よって、非セキュア仮想計算機１のシステム管理者権限が奪われたとしても、暗復号処理バイナリ２４にはアクセスできない。また、認証の正当性が認められた時間だけ、ＶＭスイッチを行うことなく非セキュア仮想計算機１からアクセス可能な領域に暗復号処理バイナリ２４が保持されるため、ＶＭスイッチによるオーバーヘッドを抑えることができる。
【０１７６】
また、以上の構成により、仮想計算機システム７００は、認証処理が成功しない限り、非セキュア仮想計算機１から暗号化メモリ領域３３を認識できないので、暗号化データのセキュリティを更に高めることができる。
【０１７７】
以上、本発明の一態様に係る仮想計算機システムについて、実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したもの、あるいは異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【０１７８】
例えば、各実施の形態においては、仮想計算機システムを構成する仮想計算機の数は２以上であってもよい。
【０１７９】
また、各実施の形態において、ハイパーバイザ上で動作する仮想計算機は、セキュア仮想計算機、非セキュア仮想計算機と区別される必要はない。また、仮想計算機上で動作するＯＳは、セキュアＯＳ、非セキュアＯＳと区別される必要はない。
【０１８０】
また、各実施の形態において、暗復号化処理バイナリを例として説明したが、暗復号化処理バイナリに限らず、セキュアなデータを扱う処理を実行するためのプログラムに対して各実施の形態に係る手法を適用してもよい。これにより、ＶＭスイッチによるオーバーヘッドを抑えながら、安全にセキュアなデータを扱うことが可能となる。
【０１８１】
また、実施の形態３では、実施の形態１に係る仮想計算機システムにおいて、暗復号処理展開部から暗復号領域認識部を呼び出すこととしたが、実施の形態２に係る仮想計算機システムにおいて、暗復号処理展開部から暗復号領域認識部を呼び出すこととしてもよい。これにより、実施の形態２に係る仮想計算機システムにおいて、さらに、暗号化データのセキュリティを高めることが可能となる。
【０１８２】
なお、各実施の形態における仮想計算機システムが備える各機能ブロックは、典型的にはプロセッサと外部メモリとの協同で処理されるプログラムとして実現されるが、集積回路であるＬＳＩで実現してもよい。これらの各機能ブロックは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ又はウルトラＬＳＩと呼称されることもある。
【０１８３】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
【０１８４】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
【０１８５】
また、本発明は、プロセッサとメモリとを備えた計算処理装置であれば、あらゆる計算機、電子機器、情報機器、ＡＶ機器、通信機器及び家電機器にも適用可能であり、例えば、ＰＣ（パーソナルコンピュータ）、携帯情報端末（携帯電話、スマートフォン及びＰＤＡなど）、テレビ、ハーディスクレコーダー、ＤＶＤ及びブルーレイディスクなどを用いた各種ディスクレコーダー、ＤＶＤ及びブルーレイディスクなどを用いた各種ディスクプレイヤー、及びカーナビゲーションシステムなどにも応用できる。
【０１８６】
（補足）
以下、本発明の実施形態に係る仮想計算機システムの構成及びその変形例と各効果について説明する。
【０１８７】
本発明の一態様に係る仮想計算機システムは、ハイパーバイザと、前記ハイパーバイザ上で動作する第一の仮想計算機および第二の仮想計算機からなる仮想計算機システムであって、前記ハイパーバイザは、前記第二の仮想計算機への切り替えを行うことなく前記第一の仮想計算機からアクセスすることが可能な領域であって、前記第一の仮想計算機上でデータ処理を行う際に用いる第一のプログラムが格納される第一の領域を生成する共有メモリアクセス管理部を備え、前記第二の仮想計算機は、前記第一の仮想計算機からの認証要求に対する結果に基づき前記第一の領域を制御することにより、前記第一の仮想計算機による前記第一のプログラムの実行可否を制御する第二のプログラムを備える。
【０１８８】
これにより、第一の仮想計算機の認証結果に応じて、（１）第一の仮想計算機上でデータ処理を行う際に用いる第一のプログラムを第一の領域に格納する、（２）第一の仮想計算機上でデータ処理を行う際に用いる第一のプログラムを格納した第一の領域へのアクセスを許可する、といったように、第一の領域を制御することにより第一のプログラムの実行可否を制御することが可能となる。その結果、複数の仮想計算機を備える仮想計算機システムにおいて、安全性の確保とセキュリティ処理のオーバーヘッドの低減とを実現することが可能となる。
【０１８９】
また、前記第二の仮想計算機は、前記第一のプログラムを格納し、前記第二のプログラムは、前記第一の仮想計算機からの認証要求が成功した場合に、前記第一のプログラムを前記第一の領域に格納することにより前記第一の領域を制御することとしてもよい。
【０１９０】
これにより、第一の仮想計算機の認証が成功した場合に、第一の仮想計算機上でデータ処理を行う際に用いる第一のプログラムを第一の領域に格納することにより第一のプログラムの実行可否を制御することが可能となる。その結果、複数の仮想計算機を備える仮想計算機システムにおいて、安全性の確保とセキュリティ処理のオーバーヘッドの低減とを実現することが可能となる。
【０１９１】
また、前記第二のプログラムは、前記第一の仮想計算機から前記第二の仮想計算機への認証状態が終了した場合に、前記第一の領域から前記第一のプログラムを消去することにより前記第一の領域を制御することとしてもよい。
【０１９２】
これにより、第一の仮想計算機の認証状態が終了すると、第一の領域において第一のプログラムが格納されなくなるので、安全性が確保される。
【０１９３】
また、前記ハイパーバイザは、前記第一の領域のアクセス権限を設定する共有メモリアクセス管理部を備え、前記第一の領域は、前記第一のプログラムが予め格納され、かつ、前記第一の仮想計算機からはアクセスを許可しないようにアクセス権限が設定されており、前記第二のプログラムは、前記第一の仮想計算機からの認証要求が成功した場合に、前記共有メモリアクセス管理部に、前記第一の仮想計算機から前記第一の領域へのアクセスを許可するように設定する指示を行うことにより前記第一の領域を制御することとしてもよい。
【０１９４】
これにより、例えば、第一の仮想計算機の認証が成功した場合に、第一の仮想計算機上でデータ処理を行う際に用いる第一のプログラムを格納した第一の領域へのアクセスを許可することにより第一のプログラムの実行可否を制御することが可能となる。その結果、複数の仮想計算機を備える仮想計算機システムにおいて、安全性の確保とセキュリティ処理のオーバーヘッドの低減とを実現することが可能となる。
【０１９５】
また、前記第一の領域は、前記第一の仮想計算機の起動時に、前記第一の仮想計算機からはアクセスを許可しないようにアクセス権限が設定されることとしてもよい。
【０１９６】
これにより、第一の仮想計算機の起動時に、第一のプログラムを利用できない状態とすることが可能となる。その結果、安全性が確保される。
【０１９７】
また、前記第二のプログラムは、前記第一の仮想計算機から前記第二の仮想計算機への認証状態が終了した場合に、前記共有メモリアクセス管理部に、前記第一の仮想計算機から前記第一の領域へのアクセスを許可しないように設定する指示を行うことにより前記第一の領域を制御することとしてもよい。
【０１９８】
これにより、第一の仮想計算機の認証状態が終了すると、第一のプログラムを利用できない状態となるので、安全性が確保される。
【０１９９】
また、前記第一のプログラムは、前記第一の仮想計算機でデータの暗号化または復号化を行うためのプログラムであることとしてもよい。
【０２００】
これにより、第一の仮想計算機の認証結果に応じて、（１）第一の仮想計算機でデータの暗号化または復号化を行うためのプログラムを第一の領域に格納する、（２）第一の仮想計算機でデータの暗号化または復号化を行うためのプログラムを格納した第一の領域へのアクセスを許可する、といったように、第一の領域を制御することにより、第一の仮想計算機でデータの暗号化または復号化を行うためのプログラムの実行可否を制御することが可能となる。その結果、複数の仮想計算機を備える仮想計算機システムにおいて、安全性の確保とセキュリティ処理のオーバーヘッドの低減とを実現することが可能となる。
【０２０１】
また、前記ハイパーバイザは、前記第一の仮想計算機で扱うデータを格納する第二の領域を備えることとしてもよい。
【０２０２】
これにより、第一の仮想計算機上でデータ処理を行う際に用いる第一のプログラムが扱うデータを、第一の仮想計算機の外部に格納することができるので、安全性が確保される。
【０２０３】
また、前記第二の領域は、前記第一の仮想計算機の起動から前記第一の仮想計算機のシャットダウンまでの間、前記第一の仮想計算機が利用可能であるように認識されることとしてもよい。
【０２０４】
これにより、前記第一の仮想計算機の起動から前記第一の仮想計算機のシャットダウンまでの間、第一の仮想計算機上でデータ処理を行う際に用いる第一のプログラムが扱うデータが格納された領域を利用することが可能となる。
【０２０５】
また、前記第二の領域は、前記第一の仮想計算機の認証開始から認証終了までの間、前記第一の仮想計算機が利用可能であるように認識されることとしてもよい。
【０２０６】
これにより、前記第一の仮想計算機の認証開始から前記第一の仮想計算機の認証終了までの間、第一の仮想計算機上でデータ処理を行う際に用いる第一のプログラムが扱うデータが格納された領域を利用することが可能となる。
【産業上の利用可能性】
【０２０７】
本発明にかかる仮想計算機システムは、情報処理装置を用いるものであれば幅広い分野において有効である。例えば、大型計算機やパーソナルコンピュータのような形態のみならず、デジタルテレビや蓄積再生装置などの各種の家電機器、携帯電話などの通信機器、産業機器、制御機器、車載機器などでも利用可能である。
【符号の説明】
【０２０８】
１    非セキュア仮想計算機
２    セキュア仮想計算機
３    ハイパーバイザ
１１    セキュアアプリケーション
１２    データアクセスアプリケーション
１３，７３    非セキュアＯＳ
２１，６２１，７２１    セキュアデーモン
２２    セキュアＯＳ
２３    認証用照合キー
２４    暗復号処理バイナリ
２５    認証状態フラグ
３１    ＶＭ間通信機能部
３２，６３２    共有メモリアクセス管理部
３３    暗号化メモリ領域
３４，６３４    暗復号処理格納メモリ
１００，６００，７００    仮想計算機システム
１１１    認証入力受付部
１１２    認証要求部
１１３    認証終了要求部
１２１    読込受付部
１２２    書込受付部
１３１    暗号化領域読込部
１３２    暗号化領域書込部
１３３    非セキュアＯＳメモリ生成部
１３４    非セキュアＯＳローカルメモリ
１３５    一時バッファ
１３６，７３６    暗復号領域認識部
２１１    認証要求受付部
２１２，６１２，７１２    暗復号処理展開部
２１３，６１３，７１３    終了要求受付部
２２１    メモリコピー部
２２２    メモリ消去部
【図１】
2013242644.tif 000003
【図２】
2013242644.tif 000004
【図３】
2013242644.tif 000005
【図４】
2013242644.tif 000006
【図５】
2013242644.tif 000007
【図６】
2013242644.tif 000008
【図７】
2013242644.tif 000009
【図８】
2013242644.tif 000010
【図９】
2013242644.tif 000011
【図１０】
2013242644.tif 000012
【図１１】
2013242644.tif 000013
【図１２】
2013242644.tif 000014
【図１３】
2013242644.tif 000015
【図１４】
2013242644.tif 000016
【図１５】
2013242644.tif 000017
【図１６】
2013242644.tif 000018
【図１７】
2013242644.tif 000019