(57)【要約】  複数のオペレーティングシステムを並列に実行するコンピュータにおいて、データを暗号処理するための鍵の不正な取得を防止する。  鍵記憶手段（１１）は、オペレーティングシステム（１５），（１６），（１７）が扱うデータを暗号処理するための鍵を記憶する。暗号処理手段（１２）は、鍵記憶手段（１１）に記憶された鍵を用いて、オペレーティングシステム（１５），（１６），（１７）が出力するデータについては暗号化してデバイスに対して転送し、デバイスから取得する暗号化されたデータについては復号してオペレーティングシステム（１５），（１６），（１７）に対して転送する。
2009044461.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムを並列に実行するコンピュータにおけるデバイスへのアクセスを制御するデバイスアクセス制御プログラムにおいて、
前記コンピュータを、
前記オペレーティングシステムが入出力するデータを暗号処理するための鍵を、前記オペレーティングシステムと対応付けて、前記オペレーティングシステムが使用するメモリ領域と異なるメモリ領域に記憶する鍵記憶手段、
前記オペレーティングシステムによる前記デバイスへのアクセス要求に応答して、前記鍵記憶手段に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、前記オペレーティングシステムが出力するデータについては暗号化して前記デバイスに対して転送し、前記デバイスから取得する暗号化されたデータについては復号して前記オペレーティングシステムに対して転送する暗号処理手段、
として機能させることを特徴とするデバイスアクセス制御プログラム。
【請求項２】
前記鍵記憶手段は、前記オペレーティングシステムがアクセスする前記デバイス毎に鍵を記憶しており、
前記暗号処理手段は、アクセス対象のデバイスに対応する鍵を用いてデータの暗号化および復号を行う、
ことを特徴とする請求の範囲第１項記載のデバイスアクセス制御プログラム。
【請求項３】
前記コンピュータは、前記デバイスに接続された、暗号処理機能を有するＤＭＡコントローラを備えており、
前記暗号処理手段は、前記アクセス要求に応答して、前記要求元のオペレーティングシステムに対応する鍵を前記鍵記憶手段から取得して前記ＤＭＡコントローラに設定し、前記ＤＭＡコントローラを用いてデータの暗号化および復号を行う、
ことを特徴とする請求の範囲第１項記載のデバイスアクセス制御プログラム。
【請求項４】
前記デバイスのうち所定の記憶デバイスには、データを暗号処理するための鍵の一覧である鍵テーブルが暗号化されて記憶されており、
前記コンピュータは、前記鍵テーブルを暗号処理するための保護鍵が記憶された耐タンパ性を有するセキュアモジュールを備えており、
前記コンピュータを、更に、前記コンピュータの起動時に、前記所定の記憶デバイスから暗号化された前記鍵テーブルを取得し、前記セキュアモジュールに記憶された前記保護鍵を用いて復号し、前記鍵記憶手段に格納する鍵取得手段として機能させる、
ことを特徴とする請求の範囲第１項記載のデバイスアクセス制御プログラム。
【請求項５】
複数のオペレーティングシステムを並列に実行するコンピュータにおけるデバイスへのアクセスを制御するデバイスアクセス制御方法において、
暗号処理手段が、前記オペレーティングシステムによる前記デバイスへのアクセス要求に応答して、前記オペレーティングシステムが入出力するデータを暗号処理するための鍵を前記オペレーティングシステムと対応付けて前記オペレーティングシステムが使用するメモリ領域と異なるメモリ領域に記憶する鍵記憶手段に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、前記オペレーティングシステムが出力するデータについては暗号化して前記デバイスに対して転送し、前記デバイスから取得する暗号化されたデータについては復号して前記オペレーティングシステムに対して転送する、
ことを特徴とするデバイスアクセス制御方法。
【請求項６】
前記鍵記憶手段には、前記オペレーティングシステムがアクセスする前記デバイス毎に鍵が記憶されており、
前記暗号処理手段は、アクセス対象のデバイスに対応する鍵を用いてデータの暗号化および復号を行う、
ことを特徴とする請求の範囲第５項記載のデバイスアクセス制御方法。
【請求項７】
前記コンピュータは、前記デバイスに接続された、暗号処理機能を有するＤＭＡコントローラを備えており、
前記アクセス要求に応答して、前記暗号処理手段は、前記要求元のオペレーティングシステムに対応する鍵を前記鍵記憶手段から取得して前記ＤＭＡコントローラに設定し、前記ＤＭＡコントローラを用いてデータの暗号化および復号を行う、
ことを特徴とする請求の範囲第５項記載のデバイスアクセス制御方法。
【請求項８】
前記デバイスのうち所定の記憶デバイスには、データを暗号処理するための鍵の一覧である鍵テーブルが暗号化されて記憶されており、
前記コンピュータには、前記鍵テーブルを暗号処理するための保護鍵が記憶された耐タンパ性を有するセキュアモジュールが備えられており、
鍵取得手段が、前記コンピュータの起動時に、前記所定の記憶デバイスから暗号化された前記鍵テーブルを取得し、前記セキュアモジュールに記憶された前記保護鍵を用いて復号し、前記鍵記憶手段に格納する、
ことを特徴とする請求の範囲第５項記載のデバイスアクセス制御方法。
【請求項９】
複数のオペレーティングシステムを並列に実行するとともに、前記オペレーティングシステムからアクセスされるデバイスを備える情報処理装置において、
前記オペレーティングシステムが入出力するデータを暗号処理するための鍵を、前記オペレーティングシステムと対応付けて、前記オペレーティングシステムが使用するメモリ領域と異なるメモリ領域に記憶する鍵記憶手段と、
前記オペレーティングシステムによる前記デバイスへのアクセス要求に応答して、前記鍵記憶手段に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、前記オペレーティングシステムが出力するデータについては暗号化して前記デバイスに対して転送し、前記デバイスから取得する暗号化されたデータについては復号して前記オペレーティングシステムに対して転送する暗号処理手段と、
を有することを特徴とする情報処理装置。
【請求項１０】
前記鍵記憶手段は、前記オペレーティングシステムがアクセスする前記デバイス毎に鍵を記憶しており、
前記暗号処理手段は、アクセス対象のデバイスに対応する鍵を用いてデータの暗号化および復号を行う、
ことを特徴とする請求の範囲第９項記載の情報処理装置。
【請求項１１】
前記デバイスに接続された、暗号処理機能を有するＤＭＡコントローラをさらに有しており、
前記暗号処理手段は、前記アクセス要求に応答して、前記要求元のオペレーティングシステムに対応する鍵を前記鍵記憶手段から取得して前記ＤＭＡコントローラに設定し、前記ＤＭＡコントローラを用いてデータの暗号化および復号を行う、
ことを特徴とする請求の範囲第９項記載の情報処理装置。
【請求項１２】
前記デバイスのうち所定の記憶デバイスには、データを暗号処理するための鍵の一覧である鍵テーブルが暗号化されて記憶されており、
前記鍵テーブルを暗号処理するための保護鍵が記憶された耐タンパ性を有するセキュアモジュールと、
起動時に、前記所定の記憶デバイスから暗号化された前記鍵テーブルを取得し、前記セキュアモジュールに記憶された前記保護鍵を用いて復号し、前記鍵記憶手段に格納する鍵取得手段と、
を更に有することを特徴とする請求の範囲第９項記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オペレーティングシステムからデバイスへのアクセスを制御するデバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置に関し、特に並列に実行される複数のオペレーティングシステムからデバイスへのアクセスを制御するデバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置に関する。
【背景技術】
【０００２】
１台の物理的なコンピュータ上で、仮想的に複数のコンピュータの機能を実現するコンピュータ仮想化技術が知られている。コンピュータ上では、仮想的なコンピュータの機能に対応して、個別にオペレーティングシステム（Operating System）が実行される。コンピュータ上で実行される複数のオペレーティングシステムは、そのコンピュータが備えるＣＰＵ（Central Processing Unit）やＲＡＭ（Random Access Memory）などのハードウェア資源を共同で利用する。オペレーティングシステム上で実行されるアプリケーションプログラム（以下、アプリケーションという）は、同一コンピュータ上で実行されている他のオペレーティングシステムを意識することなく、処理を行うことができる。このように、複数のオペレーティングシステムが並列に実行されることで、外部からは複数のコンピュータが存在するかのように認識される。【０００３】
ここで、オペレーティングシステム上で実行されるアプリケーションは、コンピュータが備えるＨＤＤ（Hard Disk Drive）やＮＩＣ（Network Interface Card）などのデバイスを利用する場合がある。しかし、複数のオペレーティングシステムが実行されているコンピュータでは、複数のオペレーティングシステムによるデバイスへのアクセスの競合という問題が生じる。そこで、このようなコンピュータでは、デバイスへのアクセスを調停するアクセス制御プログラムが実行される。オペレーティングシステムからデバイスに対するアクセス要求が発行されると、アクセス制御プログラムがこのアクセス要求を取得する。そして、アクセス制御プログラムは、アクセスの競合を解消した上で、デバイスに対してアクセス要求を転送する。すなわち、アクセス制御プログラムが、複数のオペレーティングシステムからデバイスへのアクセス要求を一括して中継する。【０００４】
ところで、コンピュータが扱うデータの機密性を確保するために、データを暗号化してデバイスに出力することが一般的に行われている。暗号化されたデータは、復号するための鍵がなければ内容を参照することはできない。したがって、例えば記憶デバイスにデータを保存する際にデータを暗号化しておけば、記憶デバイスが盗難に遭った場合のデータの漏洩リスクを低減させることができる。【０００５】
このような暗号処理に関するする技術としては、記憶デバイス上の保護された領域に鍵を格納しておき、必要に応じて鍵をオペレーティングシステム上に読み込んで暗号処理を行う技術が知られている（例えば、特許文献１参照）。また、複数のオペレーティングシステムを実行するコンピュータにおいて、予めデータアクセスのポリシーを設定しておき、そのポリシーに基づいてオペレーティングシステムが暗号処理などを行う技術も知られている（例えば、特許文献２，３参照）。このように、アプリケーションの判断ではなくオペレーティングシステムの判断で自動的にデータの暗号処理などを行うことで、デバイスに出力するデータを確実に保護することができる。
【特許文献１】特開２００１−１５４９１９号公報
【特許文献２】特開２００２−３１８７１９号公報
【特許文献３】特開２００３−３４５６５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記特許文献１〜３に記載の方法では、少なくとも暗号処理を実行する際には、鍵はオペレーティングシステム上に読み込まれることになる。このため、オペレーティングシステムの機能の中枢部分（カーネル）がコンピュータウイルスなどの不正なプログラムによって攻撃を受けると、鍵が不正に取得されて外部に流出してしまう危険性がある。このようにオペレーティングシステムが攻撃を受けて鍵が流出する危険性は、複数のオペレーティングシステムを並列に実行するコンピュータでは顕著となる。【０００７】
本発明はこのような点に鑑みてなされたものであり、複数のオペレーティングシステムを並列に実行するコンピュータにおいて、オペレーティングシステムで扱うデータを暗号処理するための鍵の流出を防ぐことが可能なデバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明では、上記課題を解決するために、図１に示すような処理をコンピュータに実行させるためのデバイスアクセス制御プログラムが提供される。このデバイスアクセス制御プログラムは、複数のオペレーティングシステム１５，１６，１７を並列に実行するコンピュータ１０において、オペレーティングシステム１５，１６，１７からデバイス１８へのアクセスを制御するためのプログラムである。このデバイスアクセス制御プログラムを実行するコンピュータ１０は、鍵記憶手段１１および暗号処理手段１２を有する。鍵記憶手段１１は、オペレーティングシステム１５，１６，１７が入出力するデータを暗号処理するための鍵を、オペレーティングシステム１５，１６，１７と対応付けて、オペレーティングシステム１５，１６，１７が使用するメモリ領域と異なるメモリ領域に記憶する。暗号処理手段１２は、オペレーティングシステム１５，１６，１７によるデバイス１８へのアクセス要求に応答して、鍵記憶手段１１に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、オペレーティングシステム１５，１６，１７が出力するデータについては暗号化してデバイス１８に対して転送し、デバイス１８から取得する暗号化されたデータについては復号してオペレーティングシステム１５，１６，１７に対して転送する。【０００９】
このようなデバイスアクセス制御プログラムを実行するコンピュータ１０によれば、暗号処理手段１２により、オペレーティングシステム１５，１６，１７によるデバイス１８へのアクセス要求に応答して、オペレーティングシステム１５，１６，１７が出力するデータについては暗号化されてデバイス１８に対して転送され、デバイス１８から取得する暗号化されたデータについては復号されてオペレーティングシステム１５，１６，１７に対して転送される。【００１０】
また、上記課題を解決するために、複数のオペレーティングシステムを並列に実行するコンピュータにおけるデバイスへのアクセスを制御するデバイスアクセス制御方法において、暗号処理手段が、オペレーティングシステムによるデバイスへのアクセス要求に応答して、オペレーティングシステムが入出力するデータを暗号処理するための鍵をオペレーティングシステムと対応付けてオペレーティングシステムが使用するメモリ領域と異なるメモリ領域に記憶する鍵記憶手段に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、オペレーティングシステムが出力するデータについては暗号化してデバイスに対して転送し、デバイスから取得する暗号化されたデータについては復号してオペレーティングシステムに対して転送する、ことを特徴とするデバイスアクセス制御方法が提供される。【００１１】
このようなデバイスアクセス制御方法によれば、オペレーティングシステムによるデバイスへのアクセス要求に応答して、オペレーティングシステムが出力するデータについては暗号化されてデバイスに対して転送され、デバイスから取得する暗号化されたデータについては復号されてオペレーティングシステムに対して転送される。【００１２】
また、上記課題を解決するために、複数のオペレーティングシステムを並列に実行するとともに、オペレーティングシステムからアクセスされるデバイスを備える情報処理装置において、オペレーティングシステムが入出力するデータを暗号処理するための鍵を、オペレーティングシステムと対応付けて、オペレーティングシステムが使用するメモリ領域と異なるメモリ領域に記憶する鍵記憶手段と、オペレーティングシステムによるデバイスへのアクセス要求に応答して、鍵記憶手段に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、オペレーティングシステムが出力するデータについては暗号化してデバイスに対して転送し、デバイスから取得する暗号化されたデータについては復号してオペレーティングシステムに対して転送する暗号処理手段と、を有することを特徴とする情報処理装置が提供される。【００１３】
このような情報処理装置によれば、暗号処理手段により、オペレーティングシステムによるデバイスへのアクセス要求に応答して、オペレーティングシステムが出力するデータについては暗号化されてデバイスに対して転送され、デバイスから取得する暗号化されたデータについては復号されてオペレーティングシステムに対して転送される。
【発明の効果】
【００１４】
本発明では、オペレーティングシステムが使用するメモリ領域と異なるメモリ領域を用いて各オペレーティングシステムに対応する鍵を管理するとともに、オペレーティングシステムからデバイスへのアクセスの経路上で暗号処理を行うこととした。これにより、オペレーティングシステムは鍵を管理していなくても、デバイスとの間で暗号化されたデータを入出力することが可能となる。また、コンピュータウイルスなどの不正なプログラムによってオペレーティングシステムが攻撃を受けても、オペレーティングシステムから鍵を取得することはできず、鍵の流出を防ぐことができる。したがって、デバイスに出力されるデータの機密性を確保することができる。【００１５】
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１６】
【図１】本実施の形態の概要を示す図である。
【図２】第１の実施の形態のコンピュータのハードウェア構成図である。
【図３】第１の実施の形態のコンピュータの機能を示すブロック図である。
【図４】鍵テーブルの具体例を表す図である。
【図５】コンピュータの起動処理を示すフローチャートである。
【図６】ゲストＯＳの起動処理を示すフローチャートである。
【図７】ゲストＯＳに暗号鍵を追加する処理を示すフローチャートである。
【図８】第１の実施の形態のゲストＯＳの書き込み処理を示すフローチャートである。
【図９】第１の実施の形態のゲストＯＳの書き込み処理を表す模式図である。
【図１０】第１の実施の形態のゲストＯＳの読み出し処理を示すフローチャートである。
【図１１】第１の実施の形態のゲストＯＳの読み出し処理を表す模式図である。
【図１２】第２の実施の形態のコンピュータの機能を示すブロック図である。
【図１３】第２の実施の形態のゲストＯＳの書き込み処理を示すフローチャートである。
【図１４】第２の実施の形態のゲストＯＳの書き込み処理を表す模式図である。
【図１５】第２の実施の形態のゲストＯＳの読み出し処理を示すフローチャートである。
【図１６】第２の実施の形態のゲストＯＳの読み出し処理を表す模式図である。
【図１７】第３の実施の形態のコンピュータの機能を示すブロック図である。
【図１８】第４の実施の形態のコンピュータの機能を示すブロック図である。
【図１９】第５の実施の形態のコンピュータのハードウェア構成図である。
【図２０】第５の実施の形態のコンピュータの機能を示すブロック図である。
【図２１】第５の実施の形態のゲストＯＳの書き込み処理を示すフローチャートである。
【図２２】第５の実施の形態のゲストＯＳの書き込み処理を表す模式図である。
【図２３】第５の実施の形態のゲストＯＳの読み出し処理を示すフローチャートである。
【図２４】第５の実施の形態のゲストＯＳの読み出し処理を表す模式図である。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面を参照して説明する。まず、本実施の形態の概要について説明し、その後、本実施の形態の具体的な内容を説明する。
図１は、本実施の形態の概要を示す図である。図１に示すコンピュータ１０は、鍵記憶手段１１、暗号処理手段１２、アクセス要求取得手段１３およびデバイスアクセス手段１４を有しており、オペレーティングシステム１５，１６，１７を並列に実行する。（以下、オペレーティングシステムをＯＳと略記する。）また、コンピュータ１０はデバイス１８を有する。デバイス１８は、例えば、ＨＤＤやＮＩＣである。【００１８】
鍵記憶手段１１は、ＯＳ１５，１６，１７が入出力するデータを暗号処理するための鍵をＯＳ１５，１６，１７と対応付けて記憶する。ここで、鍵記憶手段１１は、ＯＳ１５，１６，１７が使用するメモリ領域と異なるメモリ領域に鍵を格納している。例えば、ＯＳ１５，１６，１７よりも高い実行権限で動作しているプロセスが使用するメモリ領域に格納することが考えられる。また、データを入出力するＯＳ１５，１６，１７とは異なる管理用ＯＳ（図示せず）が使用するメモリ領域に格納することも考えられる。【００１９】
暗号処理手段１２は、ＯＳ１５，１６，１７からのデバイス１８へのアクセス要求に応答して、鍵記憶手段１１に記憶された要求元のＯＳに対応する鍵を用いて、要求元のＯＳが出力するデータについては暗号化してデバイス１８に対して転送し、デバイス１８から取得する暗号化されたデータについては復号して要求元のＯＳに対して転送する。【００２０】
アクセス要求取得手段１３は、ＯＳ１５，１６，１７が発行したアクセス要求を取得する。そして、アクセス要求取得手段１３は、暗号処理手段１２とＯＳ１５，１６，１７との間で、暗号化されていないデータの転送を制御する。デバイスアクセス手段１４は、暗号処理手段１２とデバイス１８との間で、暗号化されたデータの転送を制御する。【００２１】
ここで、ＯＳ１５，１６，１７は、鍵記憶手段１１および暗号処理手段１２に直接アクセスすることができない。したがって、ＯＳ１５，１６，１７がコンピュータウイルスなどの不正なプログラムによって攻撃を受けることがあっても、鍵記憶手段１１および暗号処理手段１２に対して、不正なアクセスが行われることはない。このようにＯＳ１５，１６，１７で暗号処理用の鍵を管理するのではなく、ＯＳ１５，１６，１７からデバイス１８へのアクセスの経路上で鍵の管理および暗号処理を行うことで、デバイス１８に出力するデータを保護するための鍵の流出を防ぐことができる。【００２２】
［第１の実施の形態］
以下、第１の実施の形態を図面を参照して詳細に説明する。
図２は、第１の実施の形態のコンピュータのハードウェア構成図である。【００２３】
コンピュータ１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０６を介してＲＡＭ１０２、グラフィック処理装置１０３、入力インタフェース１０４、通信インタフェース１０５、ＨＤＤ１６０およびセキュアモジュール１７０が接続されている。【００２４】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳのプログラムやアプリケーションのプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。【００２５】
グラフィック処理装置１０３には、モニタ４０が接続されている。グラフィック処理装置１０３は、ＣＰＵ１０１からの命令に従って、画像をモニタ４０の画面に表示させる。入力インタフェース１０４には、キーボード５０とマウス６０とが接続されている。入力インタフェース１０４は、キーボード５０やマウス６０から送られてくる信号を、バス１０６を介してＣＰＵ１０１に送信する。通信インタフェース１０５は、ネットワーク３０に接続されている。通信インタフェース１０５は、ネットワーク３０を介して、他のコンピュータとの間でデータの送受信を行う。【００２６】
ＨＤＤ１６０は、データを記憶するためのディスク装置である。ＨＤＤ１６０には、ＯＳのプログラムやアプリケーションのプログラムが格納される。また、ＨＤＤ１６０には、ＣＰＵ１０１による処理に必要な各種データが格納される。【００２７】
セキュアモジュール１７０は、データの暗号処理やハッシュ計算をＣＰＵ１０１とは独立して実行する耐タンパ性をもつモジュールである。セキュアモジュール１７０は、暗号処理に使用する暗号鍵や復号鍵を生成し、保持する機能を有する。セキュアモジュール１７０としては、例えば、ＴＰＭ（Trusted Platform Module）を用いることができる。【００２８】
図３は、第１の実施の形態のコンピュータの機能を示すブロック図である。
コンピュータ１００は、仮想マシン管理部１１０、管理ＯＳ１２０およびゲストＯＳ１３０，１４０を有する。管理ＯＳ１２０およびゲストＯＳ１３０，１４０は、コンピュータ１００で並列に実行されるＯＳである。ここで、仮想マシン管理部１１０は、ゲストＯＳ１３０，１４０よりも高い実行権限で実行されている。【００２９】
仮想マシン管理部１１０は、ＯＳ間通信制御部１１１、鍵記憶部１１２、暗号処理部１１３、鍵取得部１１４、完全性検証部１１５および仮想マシン起動制御部１１６を有する。仮想マシン管理部１１０は、管理ＯＳ１２０およびゲストＯＳ１３０，１４０それぞれの実行環境を提供する。（以下、このような実行環境を仮想マシンと呼ぶ。）コンピュータ１００でＯＳを起動する場合、まず仮想マシン管理部１１０によりＯＳの実行環境としての仮想マシンが起動され、その仮想マシン上でＯＳが実行される。【００３０】
ＯＳ間通信制御部１１１は、管理ＯＳ１２０およびゲストＯＳ１３０，１４０の間のデータ転送を制御する。ここで、ＯＳ間通信制御部１１１は、ＯＳ間の転送データを必要に応じて暗号処理部１１３に転送し、暗号処理を実行させる。【００３１】
鍵記憶部１１２は、ゲストＯＳ１３０，１４０に対応付けられた、データを暗号処理するための鍵情報を記憶する。この鍵情報には、鍵そのものが含まれる他、鍵に対応付けられたゲストＯＳを識別する情報を含む。また、この鍵情報には、各ゲストＯＳのカーネルイメージやディスクイメージの完全性検証に使用するハッシュ値が含まれる。ここで、この鍵情報を格納したテーブルを、以降の説明では鍵テーブルと呼ぶこととする。鍵テーブルに関しての詳細な説明は後述するものとする。【００３２】
暗号処理部１１３は、鍵記憶部１１２に記憶された鍵を利用して、ＯＳ間通信制御部１１１から転送されたデータを暗号処理、すなわち、暗号化または復号する。暗号処理部１１３は、暗号処理後のデータをＯＳ間通信制御部１１１へ転送する。【００３３】
鍵取得部１１４は、鍵記憶部１１２とＨＤＤ１６０との間で鍵テーブルを暗号処理して転送する機能を有する。具体的には、鍵取得部１１４は、コンピュータ１００の起動時には、ＨＤＤ１６０から暗号化された鍵テーブルを読み出す。そして、鍵取得部１１４は、セキュアモジュール１７０に記憶された保護鍵を使用して、暗号化された鍵テーブルを復号する。その後、鍵取得部１１４は、復号した鍵テーブルを鍵記憶部１１２に格納する。【００３４】
また、鍵取得部１１４は、コンピュータ１００の停止時には、鍵記憶部１１２に記憶された鍵テーブルを読み出す。そして、鍵取得部１１４は、セキュアモジュール１７０に記憶された保護鍵を使用して、鍵テーブルを暗号化する。その後、鍵取得部１１４は、暗号化した鍵テーブルをＨＤＤ１６０に書き込む。【００３５】
完全性検証部１１５は、各仮想マシンを新たに起動する際に、当該仮想マシンで実行するゲストＯＳ１３０，１４０のカーネルイメージまたはディスクイメージの少なくとも一方のデータの完全性を検証する。完全性検証部１１５は、この検証の結果を仮想マシン起動制御部１１６に通知する。なお、検証対象としては、カーネルイメージのみ、ディスクイメージのみ、カーネルイメージとディスクイメージの両方の３つの場合が考えられる。いずれを検証対象とするかは、予め管理者によって設定されている。【００３６】
仮想マシン起動制御部１１６は、完全性検証部１１５による上記検証結果の通知を受け付ける。そして、仮想マシン起動制御部１１６は、イメージデータに対する改ざんがなければ起動対象となったゲストＯＳの起動処理を続行する。また、仮想マシン起動制御部１１６は、イメージデータに対する改ざんがある場合は、起動対象となったゲストＯＳの起動処理を停止する。【００３７】
ここで、完全性検証の方法として、例えば次の方法が挙げられる。完全性検証部１１５は、仮想マシンの起動要求が発生した場合に、鍵記憶部１１２に記憶された鍵テーブルから、仮想マシンで実行されるゲストＯＳのカーネルイメージまたはディスクイメージの少なくとも一方のハッシュ値（ゲストＯＳが前回終了した際に取得された値）を取得する。【００３８】
一方、完全性検証部１１５は、ＨＤＤ１６０に格納された起動対象のゲストＯＳのカーネルイメージまたはディスクイメージから検証用のハッシュ値を生成する。そして、完全性検証部１１５は、鍵記憶部１１２から取得したハッシュ値と、ＨＤＤ１６０のイメージから生成したハッシュ値を比較し、ハッシュ値が一致するか否かを検証して、その結果を仮想マシン起動制御部１１６に通知する。その結果、仮想マシン起動制御部１１６は、イメージの改ざんが無い場合には、対象の仮想マシンとゲストＯＳを起動させる。また、仮想マシン起動制御部１１６は、イメージの改ざんが有る場合には、対象の仮想マシンとゲストＯＳの起動を中止させる。【００３９】
管理ＯＳ１２０は、仮想マシン管理部１１０の起動後に自動で起動される管理用のＯＳである。管理ＯＳ１２０は、仮想マシン管理インタフェース１２１、デバイスアクセス中継部１２２およびデバイスドライバ１２３を有する。管理者は、管理ＯＳ１２０が有する仮想マシン管理インタフェース１２１を使用して、その他の仮想マシンおよびゲストＯＳの起動などの管理を行う。【００４０】
デバイスアクセス中継部１２２は、ＯＳ間通信制御部１１１とデバイスドライバ１２３との間のデータ転送用インタフェースである。
デバイスドライバ１２３は、コンピュータ１００が備えるデバイスへのアクセスを制御する。図３の例では、デバイスドライバ１２３は、ＨＤＤ１６０に対するアクセスを制御する。すなわち、鍵取得部１１４、完全性検証部１１５、ゲストＯＳ１３０，１４０からのＨＤＤ１６０に対するアクセスは、デバイスドライバ１２３によって中継される。【００４１】
ゲストＯＳ１３０，１４０は、コンピュータ１００上で稼動する仮想マシン上で実行される。ゲストＯＳ１３０，１４０は、管理ＯＳ１２０の指示によって起動されるユーザ用のＯＳである。ゲストＯＳ１３０は、デバイスドライバ１３１を有する。また、ゲストＯＳ１４０は、デバイスドライバ１４１を有する。【００４２】
デバイスドライバ１３１，１４１は、ＨＤＤ１６０などのデバイスに対するアクセス要求を発行する。ここで、ゲストＯＳ１３０，１４０それぞれがアクセスできる範囲は、仮想マシン管理部１１０によって定義されている。【００４３】
ＨＤＤ１６０は、データ記憶領域１６１と鍵記憶領域１６２とを有する。データ記憶領域１６１には、ゲストＯＳ１３０，１４０が扱うデータが格納される。鍵記憶領域１６２には、セキュアモジュール１７０が保持する保護鍵で暗号化された鍵テーブルが格納される。【００４４】
セキュアモジュール１７０は、保護鍵記憶部１７１を有する。保護鍵記憶部１７１は、鍵取得部１１４が鍵テーブルの暗号処理に使用する保護鍵を記憶する。これにより、ＨＤＤ１６０に格納された鍵テーブルを他のコンピュータで正常に読み出すことは困難となる。また、セキュアモジュール１７０に直接鍵テーブルを格納する場合と異なり、ゲストＯＳの数が増加して鍵テーブルのサイズが大きくなっても、記憶容量が不足する心配がない。【００４５】
なお、コンピュータ１００では、必要に応じて、仮想マシン管理部１１０で暗号処理するのではなく、ゲストＯＳ１３０，１４０で暗号処理するように設定することもできる。すなわち、仮想マシン管理部１１０で暗号処理するための鍵とは別に、ゲストＯＳ１３０，１４０で暗号処理するための鍵も設定できる。このような鍵は、デバイスドライバ１３１，１４１の責任により管理される。【００４６】
図４は、鍵テーブルの具体例を表す図である。図４に示す鍵テーブル１１２ａは、鍵記憶部１１２に格納されている。鍵テーブル１１２ａには、仮想マシン識別ＩＤを示す項目、仮想マシン用暗号鍵を示す項目、ハッシュ値Ａ（カーネル）を示す項目、ハッシュ値Ｂ（ディスク）を示す項目、ドライバ用暗号鍵Ａ、ドライバ用暗号鍵Ｂを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つの仮想マシンについての情報を構成する。【００４７】
仮想マシン識別ＩＤを示す項目には、仮想マシンを識別するためのＩＤが設定される。仮想マシン用暗号鍵を示す項目には、仮想マシン上で実行されるゲストＯＳに渡す暗号処理用の鍵が設定される。この鍵は、各ゲストＯＳに暗号処理を行わせるためのものである。この鍵が不要な場合、仮想マシン用暗号鍵を示す項目には、ＮＵＬＬが設定される。【００４８】
ハッシュ値Ａ（カーネル）を示す項目には、ゲストＯＳが前回終了した時点のカーネルイメージのハッシュ値が設定される。ハッシュ値Ｂ（ディスク）を示す項目には、ゲストＯＳが前回終了した時点のディスクイメージのハッシュ値が設定される。ハッシュ値Ａ（カーネル）およびハッシュ値Ｂ（ディスク）に設定されるハッシュ値は、完全性検証部１１５によって、次回ゲストＯＳ起動時にそれぞれのイメージデータの完全性検証に使用される。【００４９】
ドライバ用暗号鍵Ａを示す項目には、第１のデバイス（例えば、ＨＤＤ１６０）にアクセスする際に暗号処理部１１３で暗号処理を行うための鍵が設定される。ドライバ用暗号鍵Ｂを示す項目には、第２のデバイス（例えば、通信インタフェース１０５）にアクセスする際に暗号処理部１１３で暗号処理を行うための鍵が設定される。なお、暗号処理対象外のデバイスに対しては、ＮＵＬＬが設定される。【００５０】
ここで、図４の例では、暗号処理の方式として、共通鍵暗号方式を採用した場合を想定している。共通鍵暗号方式は、処理速度が速いため、大量のデータを暗号処理する場合に、一般的に用いられる。ただし、暗号処理の方式として、公開鍵暗号方式を採用してもよい。この場合、鍵テーブルには、公開鍵とそれに対応する秘密鍵とがそれぞれ格納される。【００５１】
また、図４に示した例のように、暗号処理するための鍵は、デバイスごとに設定することが鍵管理の柔軟性の観点から望ましい。ただし、全てのデバイスについて同一の鍵を設定してもよい。【００５２】
鍵テーブル１１２ａは、コンピュータ１００の運用時においては、ゲストＯＳ１３０，１４０のデータへのアクセス要求発生時や、管理ＯＳ１２０からのゲストＯＳ１３０，１４０の起動要求時などに適宜参照される。【００５３】
次に、以上のような構成におけるコンピュータ１００での処理の詳細を説明する。最初に、コンピュータ１００の起動処理について説明する。
図５は、コンピュータの起動処理を示すフローチャートである。以下、図５に示す処理をステップ番号に沿って説明する。【００５４】
［ステップＳ１１］管理者の操作によりコンピュータ１００の電源がＯＮになると、コンピュータ１００は、最初に仮想マシン管理部１１０を起動する。
［ステップＳ１２］仮想マシン起動制御部１１６は、管理ＯＳ１２０用の仮想マシンを起動する。そして、仮想マシン起動制御部１１６は、起動した仮想マシン上で管理ＯＳ１２０を起動する。【００５５】
［ステップＳ１３］鍵取得部１１４は、管理ＯＳ１２０経由で鍵テーブル１１２ａをＨＤＤ１６０の鍵記憶領域１６２から取得する。この時点では、鍵テーブル１１２ａは暗号化されている。【００５６】
［ステップＳ１４］鍵取得部１１４は、セキュアモジュール１７０の保護鍵記憶部１７１から保護鍵を取得する。そして、鍵取得部１１４は、鍵テーブル１１２ａを取得した保護鍵を使用して復号する。【００５７】
［ステップＳ１５］鍵取得部１１４は、ステップＳ１４で復号した鍵テーブル１１２ａを鍵記憶部１１２に格納する。
このように、鍵テーブル１１２ａは、コンピュータ１００の起動時に鍵取得部１１４によって復号され、鍵記憶部１１２に格納される。耐タンパ性をもつセキュアモジュール１７０で管理される保護鍵を使用して、鍵テーブル１１２ａを暗号化することによって、鍵テーブル１１２ａを安全に管理することができる。【００５８】
図６は、ゲストＯＳの起動処理を示すフローチャートである。以下、図６に示す処理をステップ番号に沿って説明する。以下の説明においては、ゲストＯＳ１３０が起動する処理に関するものとする。ただし、ゲストＯＳ１４０についても、同様の流れである。【００５９】
［ステップＳ２１］ＯＳ間通信制御部１１１は、仮想マシン管理インタフェース１２１からゲストＯＳ１３０の起動要求を受け付ける。
［ステップＳ２２］ＯＳ間通信制御部１１１は、鍵記憶部１１２から鍵テーブル１１２ａを読み出す。そして、ＯＳ間通信制御部１１１は、鍵テーブル１１２ａから、ゲストＯＳ１３０を実行する仮想マシンの仮想マシン識別ＩＤを取得する。【００６０】
［ステップＳ２３］ＯＳ間通信制御部１１１は、ステップＳ２２で取得した仮想マシン識別ＩＤを仮想マシン管理インタフェース１２１に通知する。仮想マシン管理インタフェース１２１は、管理ＯＳ１２０が保持するＨＤＤ１６０のファイル管理情報に基づいて、受け付けた仮想マシン識別ＩＤに対応するカーネルイメージとディスクイメージの格納場所（例えば、ＨＤＤ１６０のブロックアドレス）を同定する。そして、仮想マシン管理インタフェース１２１は、同定した格納場所の情報をＯＳ間通信制御部１１１に通知する。ＯＳ間通信制御部１１１は、受け付けた格納場所の情報を、仮想マシン起動制御部１１６に転送する。【００６１】
［ステップＳ２４］仮想マシン起動制御部１１６は、取得した格納場所の情報に基づいて、管理ＯＳ１２０経由で、データ記憶領域１６１からゲストＯＳ１３０のカーネルイメージとディスクイメージとを取得する。そして、仮想マシン起動制御部１１６は、完全性検証部１１５に、取得したカーネルイメージとディスクイメージとを転送する。完全性検証部１１５は、ゲストＯＳ１３０のカーネルイメージまたはディスクイメージのうち少なくとも一方のハッシュ値を生成する。【００６２】
［ステップＳ２５］完全性検証部１１５は、鍵テーブル１１２ａに設定されたゲストＯＳ１３０のカーネルイメージまたはディスクイメージのハッシュ値の少なくとも一方を取得する。そして、完全性検証部１１５は、鍵テーブル１１２ａからのハッシュ値と、ステップＳ２４で生成したハッシュ値とを比較する。【００６３】
［ステップＳ２６］完全性検証部１１５は、ステップＳ２５の比較の結果、ハッシュ値が等しいか否か判断する。等しい場合、すなわち、検証に成功した場合には、処理がステップＳ２７に進められる。等しくない場合、すなわち、検証に失敗した場合には、処理がステップＳ３０に進められる。【００６４】
［ステップＳ２７］完全性検証部１１５は、仮想マシン起動制御部１１６に検証成功を通知する。仮想マシン起動制御部１１６は、ゲストＯＳ１３０を実行させる仮想マシンを起動させる。そして、仮想マシン起動制御部１１６は、カーネルイメージおよびディスクイメージに基づいて、ゲストＯＳ１３０を起動させる。【００６５】
［ステップＳ２８］仮想マシン起動制御部１１６は、鍵テーブル１１２ａに、仮想マシン用の鍵が設定されているか否か判断する。仮想マシン用の鍵が設定されている場合、処理がステップＳ２９に進められる。設定されていない場合、ゲストＯＳ１３０の起動処理を終了する。【００６６】
［ステップＳ２９］仮想マシン起動制御部１１６は、ＯＳ間通信制御部１１１経由で、鍵テーブル１１２ａに格納されている仮想マシン用の鍵を、ゲストＯＳ１３０に保持させる。その後、仮想マシン起動制御部１１６は、ゲストＯＳ１３０の起動完了を、仮想マシン管理インタフェース１２１に通知する。【００６７】
［ステップＳ３０］完全性検証部１１５は、仮想マシン起動制御部１１６に検証失敗を通知する。仮想マシン起動制御部１１６は、仮想マシンおよびゲストＯＳ１３０の起動を中止する。その後、仮想マシン起動制御部１１６は、ゲストＯＳ１３０の起動失敗を、仮想マシン管理インタフェース１２１に通知する。【００６８】
このようにして、完全性検証部１１５にてゲストＯＳ１３０の起動前に完全性検証を行うことで、ゲストＯＳ１３０のカーネルイメージやディスクイメージが不正に改ざんされていないかを確認することができる。【００６９】
ここで、あるゲストＯＳに対して、利用可能なデバイスを追加する場合を考える。例えば、コンピュータ１００に新たなＨＤＤを接続する場合である。この場合、対象のゲストＯＳに関して、鍵テーブル１１２ａに利用可能とするデバイスに対する暗号処理用の鍵を新たに設定する必要がある。【００７０】
図７は、ゲストＯＳに暗号鍵を追加する処理を示すフローチャートである。以下、図７に示す処理をステップ番号に沿って説明する。以下の説明は、ゲストＯＳ１３０から、あるデバイス（デバイスＸと表記する）を新たに利用可能とする場合を想定している。以下の手順は、ゲストＯＳ１４０についても、同様の流れである。【００７１】
［ステップＳ４１］仮想マシン管理インタフェース１２１は、管理者によって発行された、ゲストＯＳ１３０に対するデバイスＸの登録作業要求を受け付ける。
［ステップＳ４２］仮想マシン管理インタフェース１２１は、デバイスＸに対して設定されたポリシー情報を取得する。このポリシー情報には、デバイスに対する暗号処理の要否や、暗号処理に用いる鍵をゲストＯＳ間で共有するか否かが定義されている。このポリシー情報は、仮想マシン管理インタフェース１２１にて管理される。【００７２】
［ステップＳ４３］仮想マシン管理インタフェース１２１は、ゲストＯＳ１３０からデバイスＸへのアクセス要求について、暗号処理を行うかを判断する。この判断は、ポリシー情報や管理者による明示の指定に基づいて行われる。暗号処理を行う場合、処理がステップＳ４４に進められる。暗号処理を行わない場合、処理がステップＳ４９に進められる。【００７３】
［ステップＳ４４］仮想マシン管理インタフェース１２１は、デバイスＸが既に他のゲストＯＳ（ここでは、ゲストＯＳ１４０）によって使用されているかを判断する。この判断は、例えば鍵テーブル１１２ａを参照することで行われる。使用されている場合、処理がステップＳ４５に進められる。使用されていない場合、処理がステップＳ４７に進められる。【００７４】
［ステップＳ４５］仮想マシン管理インタフェース１２１は、デバイスＸについての鍵が他のゲストＯＳと共有可能であるか判断する。この判断は、ポリシー情報や管理者による明示の指定に基づいて行われる。共有可能である場合、処理がステップＳ４６に進められる。共有可能でない場合、処理がステップＳ４７に進められる。【００７５】
［ステップＳ４６］仮想マシン管理インタフェース１２１は、他のゲストＯＳに対して既に生成されている鍵を、ゲストＯＳ１３０からデバイスＸへのアクセスに用いる鍵として指定する。そして、仮想マシン管理インタフェース１２１は、鍵の指定をＯＳ間通信制御部１１１に通知する。【００７６】
［ステップＳ４７］仮想マシン管理インタフェース１２１は、デバイスＸについての鍵を新たに生成する。そして、仮想マシン管理インタフェース１２１は、生成した鍵をＯＳ間通信制御部１１１に送信する。【００７７】
［ステップＳ４８］ＯＳ間通信制御部１１１は、ステップＳ４６で指定された鍵またはステップＳ４７で受け付けた鍵を、鍵記憶部１１２に記憶された鍵テーブル１１２ａに、ゲストＯＳ１３０のデバイスＸに対するドライバ用鍵として設定する。【００７８】
［ステップＳ４９］仮想マシン管理インタフェース１２１は、鍵を設定しない旨をＯＳ間通信制御部１１１に通知する。ＯＳ間通信制御部１１１は、ゲストＯＳ１３０のデバイスＸに対するドライバ用鍵としてＮＵＬＬを設定する。【００７９】
このように、仮想マシン管理インタフェース１２１は、ゲストＯＳ１３０に対して、任意のタイミングでデバイスを新たに定義することが可能である。また、仮想マシン管理インタフェース１２１は、デバイスを新たに定義する際に、ポリシー情報を参照したり、管理者に指定させることにより、そのデバイスを暗号処理対象とするかを判定する。そして、仮想マシン管理インタフェース１２１は、暗号処理の対象とするデバイスに対してのみ、鍵を生成する。なお、上記では管理ＯＳ１２０が鍵を生成することとしたが、仮想マシン管理部１１０が鍵を生成するようにしてもよい。【００８０】
図８は、第１の実施の形態のゲストＯＳの書き込み処理を示すフローチャートである。以下、図８に示す処理をステップ番号に沿って説明する。以下の説明は、ゲストＯＳ１３０での書き込み処理を行う場合とする。ゲストＯＳ１４０についても、同様の流れである。【００８１】
［ステップＳ５１］デバイスドライバ１３１は、ゲストＯＳ１３０上のアプリケーションが発行したＨＤＤ１６０へのデータの書き込み要求（Ｗｒｉｔｅ要求）を受け付ける。すると、デバイスドライバ１３１は、ＯＳ間通信制御部１１１に対して、書き込み対象データを伴うＷｒｉｔｅ要求を送信する。【００８２】
［ステップＳ５２］ＯＳ間通信制御部１１１は、デバイスドライバ１３１からのＷｒｉｔｅ要求を受け付ける。
［ステップＳ５３］ＯＳ間通信制御部１１１は、鍵記憶部１１２に記憶された鍵テーブル１１２ａに、ゲストＯＳ１３０からＨＤＤ１６０へのアクセスについて鍵が設定されているか判断する。鍵が設定されている場合、処理がステップＳ５４に進められる。鍵が設定されていない場合、ＯＳ間通信制御部１１１はデバイスアクセス中継部１２２にＷｒｉｔｅ要求を転送して、処理がステップＳ５５に進められる。【００８３】
［ステップＳ５４］ＯＳ間通信制御部１１１は、暗号処理部１１３に、設定された鍵を使用して書き込み対象データを暗号化させる。そして、ＯＳ間通信制御部１１１は、デバイスアクセス中継部１２２に暗号化したデータを伴うＷｒｉｔｅ要求を送信する。【００８４】
［ステップＳ５５］デバイスアクセス中継部１２２は、ＯＳ間通信制御部１１１から暗号化されたデータまたは暗号化されていないデータを伴うＷｒｉｔｅ要求を受け付ける。そして、デバイスアクセス中継部１２２は、デバイスドライバ１２３にＷｒｉｔｅ要求を転送する。【００８５】
［ステップＳ５６］デバイスドライバ１２３は、データ記憶領域１６１に対して、Ｗｒｉｔｅ要求に基づいてデータの書き込みを実行する。デバイスドライバ１２３は、書き込みが完了すると、デバイスアクセス中継部１２２に書き込み完了通知を送信する。デバイスアクセス中継部１２２は、この書き込み完了通知を、ＯＳ間通信制御部１１１に転送する。【００８６】
［ステップＳ５７］ＯＳ間通信制御部１１１は、デバイスアクセス中継部１２２からの完了通知を受け付ける。そして、ＯＳ間通信制御部１１１は、デバイスドライバ１３１に対して、完了通知を送信する。【００８７】
［ステップＳ５８］デバイスドライバ１３１は、ＯＳ間通信制御部１１１からの完了通知を受け付ける。その後、デバイスドライバ１３１は、要求元のアプリケーションに対する書き込み完了通知を発行する。【００８８】
図９は、第１の実施の形態のゲストＯＳの書き込み処理を表す模式図である。以下、ゲストＯＳ１３０の書き込み処理を図９により説明する。
図９では、コンピュータ１００の機能を３つの層に分割して表している。物理デバイス層は、コンピュータ１００が備えるデバイスを表す層である。例えば、物理的な記憶領域を提供するＨＤＤ１６０や、通信インタフェース１０５は、物理デバイス層の要素である。仮想マシン管理層は、コンピュータ１００で実行される仮想マシンを管理するプロセスを表す層である。仮想マシン管理部１１０は、仮想マシン管理層の要素である。仮想マシン層は、管理ＯＳ１２０とゲストＯＳ１３０のプロセスを表す層であり、仮想マシン管理層より上位の層である。【００８９】
非暗号化データ７００ａは、暗号化されていないデータである。ゲストＯＳ１３０にてアプリケーションにより利用されるデータは、非暗号化データ７００ａである。暗号化データ７００ｂは、ＨＤＤ１６０に格納される際に、必要に応じて非暗号化データ７００ａを暗号化して生成される。【００９０】
ゲストＯＳ１３０上のアプリケーションからＷｒｉｔｅ要求が発生すると、仮想マシン管理層を経由して、管理ＯＳ１２０に非暗号化データ７００ａを伴うＷｒｉｔｅ要求が転送される。このとき、仮想マシン管理層におけるデータ転送経路上で、非暗号化データ７００ａは暗号化され、暗号化データ７００ｂが生成される。管理ＯＳ１２０は、仮想マシン管理層より暗号化データ７００ｂを取得する。そして、管理ＯＳ１２０は、受け付けたＷｒｉｔｅ要求に基づいて、ＨＤＤ１６０に暗号化データ７００ｂを格納する。【００９１】
図１０は、第１の実施の形態のゲストＯＳの読み出し処理を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。なお、以下の説明は、ゲストＯＳ１３０で読み出し処理を行う場合とする。ゲストＯＳ１４０についても、同様の流れである。【００９２】
［ステップＳ６１］デバイスドライバ１３１は、ゲストＯＳ１３０上のアプリケーションが発行したデータの読み出し要求（Ｒｅａｄ要求）を受け付ける。すると、デバイスドライバ１３１は、ＯＳ間通信制御部１１１に対して、このＲｅａｄ要求を送信する。【００９３】
［ステップＳ６２］ＯＳ間通信制御部１１１は、デバイスドライバ１３１からのＲｅａｄ要求を受け付ける。そして、ＯＳ間通信制御部１１１は、受け付けたＲｅａｄ要求をデバイスアクセス中継部１２２へ転送する。【００９４】
［ステップＳ６３］デバイスアクセス中継部１２２は、ＯＳ間通信制御部１１１からのＲｅａｄ要求を受け付ける。そして、デバイスアクセス中継部１２２は、デバイスドライバ１２３に対してＲｅａｄ要求を転送する。【００９５】
［ステップＳ６４］デバイスドライバ１２３は、デバイスアクセス中継部１２２から転送されたＲｅａｄ要求を受け付ける。そして、デバイスドライバ１２３は、受け付けたＲｅａｄ要求に基づいて、データ記憶領域１６１に対してデータの読み出し処理を実行する。その後、デバイスドライバ１２３は、読み出したデータをデバイスアクセス中継部１２２に送信する。デバイスアクセス中継部１２２は、デバイスドライバ１２３から受け付けたデータをＯＳ間通信制御部１１１に転送する。【００９６】
［ステップＳ６５］ＯＳ間通信制御部１１１は、デバイスアクセス中継部１２２からデータを受け付ける。そして、ＯＳ間通信制御部１１１は、鍵記憶部１１２に記憶された鍵テーブル１１２ａに、ゲストＯＳ１３０からＨＤＤ１６０へのアクセスについて鍵が設定されているか判断する。鍵が設定されている場合、処理がステップＳ６６に進められる。鍵が設定されていない場合、処理がステップＳ６７に進められる。【００９７】
［ステップＳ６６］ＯＳ間通信制御部１１１は、暗号処理部１１３に、設定されている鍵を使用して取得したデータを復号させる。そして、ＯＳ間通信制御部１１１は、デバイスドライバ１３１に復号したデータを転送する。【００９８】
［ステップＳ６７］デバイスドライバ１３１は、ＯＳ間通信制御部１１１からデータを受け付ける。そして、デバイスドライバ１３１は、要求元のアプリケーションに対するデータの転送を行う。【００９９】
図１１は、第１の実施の形態のゲストＯＳの読み出し処理を表す模式図である。以下、ゲストＯＳ１３０の読み出し処理を図１１により説明する。なお、図９と同様の事項については、その説明を省略する。【０１００】
ゲストＯＳ１３０上のアプリケーションからＲｅａｄ要求が発生すると、仮想マシン管理層を経由して、管理ＯＳ１２０にＲｅａｄ要求が転送される。そして、管理ＯＳ１２０は、受け付けたＲｅａｄ要求に基づいて、ＨＤＤ１６０から暗号化データ７００ｂを取得する。管理ＯＳ１２０は、暗号化データ７００ｂを仮想マシン管理層に転送する。このとき、仮想マシン管理層におけるデータ転送経路上で、暗号化データ７００ｂは復号され、非暗号化データ７００ａが生成される。ゲストＯＳ１３０は、仮想マシン管理層より、非暗号化データ７００ａを取得する。【０１０１】
このように、ゲストＯＳ１３０にてデータへのアクセス要求が発生すると、仮想マシン管理層および管理ＯＳ１２０を経由してＨＤＤ１６０に対するアクセスが実行される。そして、鍵テーブル１１２ａは、仮想マシン管理層で管理され、ゲストＯＳ１３０と管理ＯＳ１２０との間のデータ転送経路上でデータの暗号処理が実行される。そのため、ゲストＯＳ１３０は暗号処理機能や鍵の存在を認識することはできない。したがって、コンピュータ１００は、コンピュータウイルスなどの不正なプログラムによるＯＳに対する攻撃を受けても鍵を参照される危険性はなく、鍵の流出を防ぐことができる。その結果、ＨＤＤ１６０に格納されたデータの機密性を高めることができる。【０１０２】
［第２の実施の形態］
次に、第２の実施の形態を、図面を参照して詳細に説明する。前述の第１の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。【０１０３】
図１２は、第２の実施の形態のコンピュータの機能を示すブロック図である。
コンピュータ１００ａは、仮想マシン管理部１１０ａ、管理ＯＳ１２０ａ、ゲストＯＳ１３０，１４０、ＨＤＤ１６０、セキュアモジュール１７０を有する。管理ＯＳ１２０ａ、ゲストＯＳ１３０，１４０は、コンピュータ１００ａで実行される仮想マシン上のＯＳである。ここで、仮想マシン管理部１１０ａは、ゲストＯＳ１３０，１４０よりも高い実行権限で実行されている。【０１０４】
仮想マシン管理部１１０ａは、ＯＳ間通信制御部１１１ａ、鍵記憶部１１２、鍵取得部１１４、完全性検証部１１５および仮想マシン起動制御部１１６を有する。仮想マシン管理部１１０ａは、管理ＯＳ１２０およびゲストＯＳ１３０，１４０それぞれの実行環境を提供する。コンピュータ１００ａでＯＳを起動する場合、まず仮想マシン管理部１１０ａによりＯＳの実行環境としての仮想マシンが起動され、その仮想マシン上でＯＳが実行される。【０１０５】
ここで、鍵記憶部１１２、鍵取得部１１４、完全性検証部１１５および仮想マシン起動制御部１１６の機能および構成は、図３に示した第１の実施の形態の機能および構成と同一である。【０１０６】
ＯＳ間通信制御部１１１ａは、管理ＯＳ１２０ａ、ゲストＯＳ１３０，１４０の間のデータ転送を制御する。また、ＯＳ間通信制御部１１１ａは、ゲストＯＳ１３０，１４０起動時に、ゲストＯＳ１３０，１４０に対応付けられた鍵情報を、鍵記憶部１１２から読み出して、管理ＯＳ１２０ａの鍵記憶部１２４に格納する。【０１０７】
管理ＯＳ１２０ａは、仮想マシン管理部１１０ａの起動後に自動で起動される管理用のＯＳである。管理ＯＳ１２０ａは、仮想マシン管理インタフェース１２１、デバイスアクセス中継部１２２ａ、デバイスドライバ１２３、鍵記憶部１２４および暗号処理部１２５を有する。管理者は、管理ＯＳ１２０ａが有する仮想マシン管理インタフェース１２１を使用して、その他の仮想マシンおよびゲストＯＳの起動などの管理を行う。【０１０８】
ここで、仮想マシン管理インタフェース１２１およびデバイスドライバ１２３の機能および構成は、図３に示した第１の実施の形態の機能および構成と同一である。
デバイスアクセス中継部１２２ａは、仮想マシン管理部１１０ａとデバイスドライバ１２３との間でのデータ転送用インタフェースである。ここで、デバイスアクセス中継部１２２ａは、ＯＳ間の転送データを必要に応じて暗号処理部１２５に転送し、暗号処理を実行させる。【０１０９】
鍵記憶部１２４は、稼動中のゲストＯＳに対応付けられた、データを暗号処理するための鍵情報を記憶する。この鍵情報は、ＯＳ間通信制御部１１１ａによって、ゲストＯＳが起動するたびに鍵記憶部１１２から読み出されて、鍵記憶部１２４に格納される。ここで、この鍵情報に含まれる情報は、図４で示した鍵テーブル１１２ａに含まれる項目のうち、仮想マシン識別ＩＤを示す項目、ドライバ用暗号鍵Ａ、ドライバ用暗号鍵Ｂを示す項目である。【０１１０】
暗号処理部１２５は、鍵記憶部１２４に記憶された鍵を利用して、デバイスアクセス中継部１２２ａから転送されたデータを暗号処理、すなわち暗号化または復号する。暗号処理部１２５は、暗号処理したデータをデバイスアクセス中継部１２２ａへ転送する。【０１１１】
ゲストＯＳ１３０，１４０、ＨＤＤ１６０およびセキュアモジュール１７０の機能および構成は、図３に示した第１の実施の形態の機能および構成と同一である。
図１３は、第２の実施の形態のゲストＯＳの書き込み処理を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。以下の説明は、ゲストＯＳ１３０での書き込み処理を行う場合とする。ゲストＯＳ１４０についても、同様の流れである。【０１１２】
［ステップＳ１１１］デバイスドライバ１３１は、ゲストＯＳ１３０上のアプリケーションが発行した、ＨＤＤ１６０へのデータの書き込み要求（Ｗｒｉｔｅ要求）を受け付ける。デバイスドライバ１３１は、ＯＳ間通信制御部１１１ａに対して、書き込み対象データを伴うＷｒｉｔｅ要求を送信する。【０１１３】
［ステップＳ１１２］ＯＳ間通信制御部１１１ａは、デバイスドライバ１３１からのＷｒｉｔｅ要求を受け付ける。そして、ＯＳ間通信制御部１１１ａは、受け付けたＷｒｉｔｅ要求をデバイスアクセス中継部１２２ａに転送する。【０１１４】
［ステップＳ１１３］デバイスアクセス中継部１２２ａは、ＯＳ間通信制御部１１１ａからのＷｒｉｔｅ要求を受け付ける。
［ステップＳ１１４］デバイスアクセス中継部１２２ａは、鍵記憶部１２４を参照して、ゲストＯＳ１３０からＨＤＤ１６０へのアクセスについて鍵が設定されているか判断する。鍵が設定されている場合、処理がステップＳ１１５に進められる。鍵が設定されていない場合、デバイスアクセス中継部１２２ａは、デバイスドライバ１２３にＷｒｉｔｅ要求を転送して、処理がステップＳ１１６に進められる。【０１１５】
［ステップＳ１１５］デバイスアクセス中継部１２２ａは、暗号処理部１２５に設定された鍵を使用して書き込み対象データを暗号化させる。そして、デバイスアクセス中継部１２２ａは、デバイスドライバ１２３にＷｒｉｔｅ要求を転送する。【０１１６】
［ステップＳ１１６］デバイスドライバ１２３は、デバイスアクセス中継部１２２ａから暗号化されたデータまたは暗号化されていないデータを伴うＷｒｉｔｅ要求を受け付ける。そして、デバイスドライバ１２３は、データ記憶領域１６１に対して、Ｗｒｉｔｅ要求に基づいてデータの書き込みを実行する。デバイスドライバ１２３は、書き込みが完了すると、デバイスアクセス中継部１２２ａに書き込み完了通知を送信する。デバイスアクセス中継部１２２ａは、この書き込み完了通知を、ＯＳ間通信制御部１１１ａに転送する。【０１１７】
［ステップＳ１１７］ＯＳ間通信制御部１１１ａは、デバイスアクセス中継部１２２ａからの完了通知を受け付ける。そして、ＯＳ間通信制御部１１１ａは、デバイスドライバ１３１に対して、完了通知を送信する。【０１１８】
［ステップＳ１１８］デバイスドライバ１３１は、ＯＳ間通信制御部１１１ａからの完了通知を受け付ける。その後、デバイスドライバ１３１は、要求元のアプリケーションに対する書き込み完了通知を発行する。【０１１９】
図１４は、第２の実施の形態のゲストＯＳの書き込み処理を表す模式図である。以下、ゲストＯＳ１３０の書き込み処理を図１４により説明する。なお、図９と同様の事項については、その説明を省略する。【０１２０】
ゲストＯＳ１３０上のアプリケーションからＷｒｉｔｅ要求が発生すると、仮想マシン管理層を経由して、管理ＯＳ１２０ａに非暗号化データ７００ａを伴うＷｒｉｔｅ要求が転送される。そして、管理ＯＳ１２０ａは、非暗号化データ７００ａを暗号化し、暗号化データ７００ｂを生成する。さらに、管理ＯＳ１２０ａは、受け付けたＷｒｉｔｅ要求に基づいて、ＨＤＤ１６０に暗号化データ７００ｂを格納する。【０１２１】
図１５は、第２の実施の形態のゲストＯＳの読み出し処理を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。以下の説明は、ゲストＯＳ１３０で読み出し処理を行う場合とする。ゲストＯＳ１４０についても、同様の流れである。【０１２２】
［ステップＳ１２１］デバイスドライバ１３１は、ゲストＯＳ１３０上のアプリケーションが発行した、データの読み出し要求（Ｒｅａｄ要求）を受け付ける。すると、デバイスドライバ１３１はＯＳ間通信制御部１１１ａに対して、このＲｅａｄ要求を送信する。【０１２３】
［ステップＳ１２２］ＯＳ間通信制御部１１１ａは、デバイスドライバ１３１からのＲｅａｄ要求を受け付ける。そして、ＯＳ間通信制御部１１１ａは、受け付けたＲｅａｄ要求をデバイスアクセス中継部１２２ａへ転送する。【０１２４】
［ステップＳ１２３］デバイスアクセス中継部１２２ａは、ＯＳ間通信制御部１１１ａからのアクセス要求を受け付ける。そして、デバイスアクセス中継部１２２ａは、デバイスドライバ１２３に対してＲｅａｄ要求を転送する。【０１２５】
［ステップＳ１２４］デバイスドライバ１２３は、デバイスアクセス中継部１２２ａから受け付けたＲｅａｄ要求に基づいて、データ記憶領域１６１に対してデータの読み出し処理を実行する。そして、デバイスドライバ１２３は、読み出したデータをデバイスアクセス中継部１２２ａに送信する。デバイスアクセス中継部１２２ａは、デバイスドライバ１２３から読み出されたデータを受け付ける。【０１２６】
［ステップＳ１２５］デバイスアクセス中継部１２２ａは、鍵記憶部１２４に記憶された鍵情報に、ゲストＯＳ１３０からＨＤＤ１６０へのアクセスについて鍵が設定されているか、すなわち、取得したデータが暗号化されているか判断する。鍵が設定されている場合、処理がステップＳ１２６に進められる。鍵が設定されていない場合、デバイスアクセス中継部１２２ａはＯＳ間通信制御部１１１ａに読み出したデータを転送して、処理がステップＳ１２６に進められる。【０１２７】
［ステップＳ１２６］デバイスアクセス中継部１２２ａは、暗号処理部１２５に、設定された鍵を使用して、取得した暗号化されたデータを復号させる。そして、デバイスアクセス中継部１２２ａは、復号したデータをＯＳ間通信制御部１１１ａに転送する。【０１２８】
［ステップＳ１２７］ＯＳ間通信制御部１１１ａは、デバイスアクセス中継部１２２ａから転送されたデータを受け付ける。そして、ＯＳ間通信制御部１１１ａは、デバイスドライバ１３１に対して、取得したデータを転送する。【０１２９】
［ステップＳ１２８］デバイスドライバ１３１は、ＯＳ間通信制御部１１１から転送されたデータを受け付ける。そして、デバイスドライバ１３１は、要求元のアプリケーションに対するデータの転送を行う。【０１３０】
図１６は、第２の実施の形態のゲストＯＳの読み出し処理を表す模式図である。以下、ゲストＯＳ１３０の読み出し処理を図１６により説明する。なお、図９と同様の事項については、その説明を省略する。【０１３１】
ゲストＯＳ１３０上のアプリケーションからＲｅａｄ要求が発生すると、仮想マシン管理層を経由して、管理ＯＳ１２０ａにＲｅａｄ要求が転送される。そして、管理ＯＳ１２０ａは、受け付けたＲｅａｄ要求に基づいて、ＨＤＤ１６０から暗号化データ７００ｂを取得する。そして、管理ＯＳ１２０ａは、暗号化データ７００ｂを復号し、非暗号化データ７００ａを生成する。そして、この非暗号化データ７００ａは、仮想マシン管理層を経由してゲストＯＳ１３０に転送される。【０１３２】
このように、ゲストＯＳ１３０にてデータへのアクセス要求が発生すると、仮想マシン管理層および管理ＯＳ１２０ａを経由してＨＤＤ１６０に対するアクセスが実行される。ここで、鍵テーブル１１２ａは、仮想マシン管理層で管理されており、ゲストＯＳ１３０が起動した時点で、ゲストＯＳ１３０に設定された暗号処理用の鍵は管理ＯＳ１２０ａに格納される。したがって、暗号処理に使用する鍵は、仮想マシン管理層と管理ＯＳ１２０ａとで管理される。そして、管理ＯＳ１２０ａは、自身に格納された鍵を使用して、データの暗号処理を実行する。このため、ゲストＯＳ１３０は、この暗号処理機能や鍵の存在を認識することはできない。したがって、コンピュータ１００ａは、コンピュータウイルスなどの不正なプログラムによるＯＳに対する攻撃を受けても鍵を参照される危険性はなく、鍵の流出を防ぐことができる。その結果、ＨＤＤ１６０に格納されたデータの機密性を高めることができる。【０１３３】
［第３の実施の形態］
次に、第３の実施の形態を、図面を参照して詳細に説明する。前述の第１の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。【０１３４】
図１７は、第３の実施の形態のコンピュータの機能を示すブロック図である。
コンピュータ１００ｂは、仮想マシン管理部１１０ｂ、管理ＯＳ１２０ｂ、ゲストＯＳ１３０、デバイスアクセス部１５０、ＨＤＤ１６０、セキュアモジュール１７０を有する。管理ＯＳ１２０ｂ、ゲストＯＳ１３０は、コンピュータ１００ｂで並列に実行されるＯＳである。なお、仮想マシン管理部１１０ｂは、ゲストＯＳ１３０よりも高い実行権限で実行されている。【０１３５】
仮想マシン管理部１１０ｂは、ＯＳ間通信制御部１１１ｂ、鍵記憶部１１２、暗号処理部１１３、鍵取得部１１４、完全性検証部１１５、仮想マシン起動制御部１１６を有する。仮想マシン管理部１１０ｂは、管理ＯＳ１２０ｂ、ゲストＯＳ１３０およびデバイスアクセス部１５０それぞれの実行環境を提供する。コンピュータ１００ｂでＯＳを起動する場合、まず仮想マシン管理部１１０ｂによりＯＳの実行環境としての仮想マシンが起動され、その仮想マシン上でＯＳが実行される。【０１３６】
ここで、鍵記憶部１１２、暗号処理部１１３、鍵取得部１１４、完全性検証部１１５および仮想マシン起動制御部１１６の機能および構成は、図３に示した第１の実施の形態の機能および構成と同一である。【０１３７】
ＯＳ間通信制御部１１１ｂは、管理ＯＳ１２０ｂ、ゲストＯＳ１３０およびデバイスアクセス部１５０の間のデータの転送を制御する。ここで、ＯＳ間通信制御部１１１ｂは、ＯＳ間の転送データを必要に応じて暗号処理部１１３に転送し、暗号処理を実行させる。【０１３８】
管理ＯＳ１２０ｂは、仮想マシン管理部１１０ｂの起動時にデバイスアクセス部１５０とともに自動で起動される管理用のＯＳである。管理ＯＳ１２０ｂは、仮想マシン管理インタフェース１２１およびデバイスドライバ１２３ｂを有する。【０１３９】
デバイスドライバ１２３ｂは、デバイスに対するアクセス要求を発行する。デバイスドライバ１２３ｂの機能は、図３に示したデバイスドライバ１３１，１４１の機能と同一である。【０１４０】
ゲストＯＳ１３０の機能および構成は、図３に示した第１の実施の形態の機能および構成と同一である。なお、図１７では、実行されるゲストＯＳとしてゲストＯＳ１３０のみを示したが、同時に複数のゲストＯＳが実行されてもよい。【０１４１】
デバイスアクセス部１５０は、デバイスアクセス中継部１５１、デバイスドライバ１５２を有する。デバイスアクセス部１５０は、仮想マシン管理部１１０ｂの起動時に管理ＯＳ１２０ｂとともに自動で起動される。【０１４２】
デバイスアクセス中継部１５１は、ＯＳ間通信制御部１１１ｂとデバイスドライバ１５２との間のデータ転送用インタフェースである。
デバイスドライバ１５２は、コンピュータ１００ｂが備えるデバイスへのアクセスを制御する。図１７の例では、デバイスドライバ１５２は、ＨＤＤ１６０に対するアクセスを制御する。すなわち、鍵取得部１１４、完全性検証部１１５、管理ＯＳ１２０ｂおよびゲストＯＳ１３０からのＨＤＤ１６０に対するアクセスは、デバイスドライバ１５２によって中継される。【０１４３】
ＨＤＤ１６０およびセキュアモジュール１７０の機能および構成は、図３に示した第１の実施の形態の機能および構成と同一である。
このように、第１、第２の実施の形態では管理ＯＳが有していたデバイスドライバを、デバイスアクセス部１５０にもたせて、管理ＯＳ１２０ｂから分離した構成とする。【０１４４】
なお、本実施の形態での書き込み処理および読み出し処理におけるデータの暗号処理の流れは、第１の実施の形態と同等のため説明を省略する（図８〜１１の説明と同等である）。ただし、図８〜１１の管理ＯＳ１２０の機能は、デバイスドライバ１５２が担う。【０１４５】
このような構成では、ゲストＯＳ１３０にてデータへのアクセス要求が発生すると、仮想マシン管理層およびデバイスアクセス部１５０を経由してＨＤＤ１６０に対するアクセスが実行される。そして、鍵テーブル１１２ａは、仮想マシン管理層で管理され、ゲストＯＳ１３０とデバイスアクセス部１５０との間のデータ転送経路上でデータの暗号処理が実行される。そのため、ゲストＯＳ１３０は暗号処理機能や鍵の存在を認識することはできない。したがって、コンピュータ１００は、コンピュータウイルスなどの不正なプログラムによるＯＳに対する攻撃を受けても鍵を参照される危険性はなく、鍵の流出を防ぐことができる。その結果、ＨＤＤ１６０に格納されたデータの機密性を高めることができる。【０１４６】
［第４の実施の形態］
次に、第４の実施の形態を、図面を参照して詳細に説明する。前述の第１〜第３の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。【０１４７】
図１８は、第４の実施の形態のコンピュータの機能を示すブロック図である。
コンピュータ１００ｃは、仮想マシン管理部１１０ｃ、管理ＯＳ１２０ｃ、ゲストＯＳ１３０、デバイスアクセス部１５０、ＨＤＤ１６０およびセキュアモジュール１７０を有する。管理ＯＳ１２０ｃおよびゲストＯＳ１３０は、コンピュータ１００ｃで並列に実行されるＯＳである。なお、仮想マシン管理部１１０ｃは、ゲストＯＳ１３０よりも高い実行権限で実行されている。【０１４８】
仮想マシン管理部１１０ｃは、ＯＳ間通信制御部１１１ｃ、鍵記憶部１１２、鍵取得部１１４、完全性検証部１１５および仮想マシン起動制御部１１６を有する。仮想マシン管理部１１０ｃは、管理ＯＳ１２０ｃ、ゲストＯＳ１３０およびデバイスアクセス部１５０ｃそれぞれの実行環境を提供する。コンピュータ１００ｃでＯＳを起動する場合、まず仮想マシン管理部１１０ｃによりＯＳの実行環境としての仮想マシンが起動され、その仮想マシン上でＯＳが実行される。【０１４９】
ここで、鍵記憶部１１２、鍵取得部１１４、完全性検証部１１５および仮想マシン起動制御部１１６の機能および構成は、図３に示した第１の実施の形態の機能および構成と同一である。【０１５０】
ＯＳ間通信制御部１１１ｃは、管理ＯＳ１２０ｃ、ゲストＯＳ１３０およびデバイスアクセス部１５０ｃの間のデータ転送を制御する。また、ＯＳ間通信制御部１１１ｃは、ゲストＯＳ１３０起動時に、ゲストＯＳ１３０に対応付けられた鍵情報を、鍵記憶部１１２から読み出して、デバイスアクセス部１５０の鍵記憶部１５３に格納する。【０１５１】
管理ＯＳ１２０ｃは、仮想マシン管理部１１０ｃの起動時にデバイスアクセス部１５０ｃとともに自動で起動される管理用のＯＳである。管理ＯＳ１２０ｃは、仮想マシン管理インタフェース１２１、デバイスドライバ１２３ｃを有する。【０１５２】
デバイスドライバ１２３ｃは、デバイスに対するアクセス要求を発行する。デバイスドライバ１２３ｃの機能は、図３に示したデバイスドライバ１３１，１４１の機能と同一である。【０１５３】
ゲストＯＳ１３０の機能および構成は、図３に示した第１の実施の形態の機能および構成と同一である。
デバイスアクセス部１５０ｃは、デバイスアクセス中継部１５１ｃ、デバイスドライバ１５２、鍵記憶部１５３および暗号処理部１５４を有する。デバイスアクセス部１５０ｃは、仮想マシン管理部１１０ｃの起動時に管理ＯＳ１２０ｃとともに自動で起動される。【０１５４】
デバイスアクセス中継部１５１ｃは、ＯＳ間通信制御部１１１ｃとデバイスドライバ１５２との間のデータ転送用インタフェースである。
デバイスドライバ１５２の機能および構成は、図１７に示した第３の実施の形態の機能および構成と同一である。【０１５５】
鍵記憶部１５３は、稼動中のゲストＯＳが扱うデータを暗号処理するための鍵を記憶する。鍵は、ＯＳ間通信制御部１１１ｃによって、ゲストＯＳが起動するたびに鍵記憶部１１２から読み出されて、鍵記憶部１５３に格納される。【０１５６】
暗号処理部１５４は、鍵記憶部１５３に記憶された鍵を利用して、デバイスアクセス中継部１５１ｃから転送されたデータを暗号処理、すなわち暗号化または復号する。そして、暗号処理部１５４は、暗号処理したデータをデバイスアクセス中継部１５１ｃへ転送する。【０１５７】
ＨＤＤ１６０およびセキュアモジュール１７０の機能および構成は、図３に示した第１の実施の形態の機能および構成と同一である。
このように、第４の実施の形態では、第３の実施の形態の説明で示したデバイスアクセス部に暗号処理機能をもたせる。【０１５８】
なお、本実施の形態での書き込み処理および読み出し処理におけるデータの暗号処理の流れは、第２の実施の形態と同等のため説明を省略する（図１３〜１６の説明と同等である）。ただし、図１３〜１６の管理ＯＳ１２０ａの機能は、デバイスアクセス部１５０ｃが担う。【０１５９】
このような構成では、ゲストＯＳ１３０にてデータへのアクセス要求が発生すると、仮想マシン管理層およびデバイスアクセス部１５０ｃを経由してＨＤＤ１６０に対するアクセスが実行される。ここで、鍵テーブル１１２ａは、仮想マシン管理層で管理されており、ゲストＯＳ１３０が起動した時点で、ゲストＯＳ１３０に設定された暗号処理用の鍵はデバイスアクセス部１５０ｃに格納される。すなわち、暗号処理に使用する鍵は、仮想マシン管理層とデバイスアクセス部１５０ｃとで管理される。このため、ゲストＯＳ１３０は、暗号処理機能や鍵の存在を認識することはできない。したがって、コンピュータ１００ｃは、コンピュータウイルスなどの不正なプログラムによるＯＳに対する攻撃を受けても鍵を参照される危険性はなく、鍵の流出を防ぐことができる。その結果、ＨＤＤ１６０に格納されたデータの機密性を高めることができる。【０１６０】
［第５の実施の形態］
次に、本発明の第５の実施の形態を、図面を参照して詳細に説明する。前述の第１の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。【０１６１】
図１９は、第５の実施の形態のコンピュータのハードウェア構成図である。第５の実施の形態に係るコンピュータは、ＤＭＡ（Direct Memory Access）の機能を備えている。
コンピュータ１００ｄは、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０６を介してＲＡＭ１０２、グラフィック処理装置１０３、入力インタフェース１０４、通信インタフェース１０５、ＨＤＤ１６０、セキュアモジュール１７０、ＤＭＡ再配置モジュール１８０、ＤＭＡコントローラ１９０が接続されている。【０１６２】
ここで、ＣＰＵ１０１、ＲＡＭ１０２、グラフィック処理装置１０３、入力インタフェース１０４、通信インタフェース１０５、ＨＤＤ１６０、セキュアモジュール１７０の機能および構成は、図２に示した第１の実施の形態の機能および構成と同一である。【０１６３】
ＤＭＡ再配置モジュール１８０は、ＯＳによって発行されるＤＭＡ要求（ＤＭＡの機能を用いてデバイスにアクセスすることを要求するアクセス要求）で指定される仮想メモリアドレスを、ＲＡＭ１０２の物理アドレスに変換する。ここで、ＯＳが管理しているメモリアドレスは、仮想マシン管理プログラムによって定義される仮想メモリアドレスである。ＯＳでＤＭＡ要求が発生すると、デバイスとの間のデータ入出力に使用するメモリ領域を特定するため、仮想メモリアドレスをＲＡＭ１０２の物理アドレスに変換する必要がある。ＤＭＡ再配置モジュール１８０は、ハードウェアによってこのアドレス変換機能を実現したものである。コンピュータ１００ｄは、ＤＭＡ再配置モジュール１８０を有することで、ＯＳによるデバイスアクセスに対して、仮想マシン管理プログラムによるアドレス変換が不要となり、ＣＰＵ１０１の負荷を軽減できる。【０１６４】
ＤＭＡコントローラ１９０は、ＯＳによって発行されるＤＭＡ要求に基づいて、コンピュータ１００ｄが備えるデバイスと、ＲＡＭ１０２との間のデータ転送を制御する。ＤＭＡコントローラ１９０は、ＤＭＡ再配置モジュール１８０でのアドレス変換によって得られる物理アドレスに基づいてデータ転送を実行する。図１９の構成では、ＲＡＭ１０２とＨＤＤ１６０との間のデータ送受信は、ＤＭＡコントローラ１９０によって、ＣＰＵ１０１を介さず直接実行される。【０１６５】
図２０は、第５の実施の形態のコンピュータの機能を示すブロック図である。
コンピュータ１００ｄは、仮想マシン管理部１１０ｄ、管理ＯＳ１２０ｄ、ゲストＯＳ１３０，１４０、ＨＤＤ１６０、セキュアモジュール１７０、ＤＭＡ再配置モジュール１８０およびＤＭＡコントローラ１９０を有する。管理ＯＳ１２０ｄおよびゲストＯＳ１３０，１４０は、コンピュータ１００ｄで並列に実行されるＯＳである。ここで、仮想マシン管理部１１ｄは、ゲストＯＳ１３０，１４０よりも高い実行権限で実行されている。【０１６６】
仮想マシン管理部１１０ｄは、ＯＳ間通信制御部１１１ｄ、鍵記憶部１１２、鍵取得部１１４、完全性検証部１１５、仮想マシン起動制御部１１６およびＤＭＡ要求転送部１１７を有する。仮想マシン管理部１１０ｄは、管理ＯＳ１２０ｄおよびゲストＯＳ１３０，１４０それぞれの実行環境を提供する。コンピュータ１００ｄでＯＳを起動する場合、まず仮想マシン管理部１１０ｄによりＯＳの実行環境としての仮想マシンが起動され、その仮想マシン上でＯＳが実行される。【０１６７】
ここで、鍵記憶部１１２、鍵取得部１１４、完全性検証部１１５および仮想マシン起動制御部１１６の機能および構成は、図３に示した第１の実施の形態の機能および構成と同一である。【０１６８】
ＯＳ間通信制御部１１１ｄは、管理ＯＳ１２０ｄ、ゲストＯＳ１３０，１４０の間のデータの転送を制御する。また、ＯＳ間通信制御部１１１ｄは、稼動しているゲストＯＳで扱うデータを暗号処理するための鍵を、鍵記憶部１１２から読み出して、ＤＭＡ再配置モジュール１８０の鍵記憶部１８２に格納する。【０１６９】
ＤＭＡ要求転送部１１７は、ゲストＯＳ１３０，１４０から発行されたＤＭＡ要求をＤＭＡ再配置モジュール１８０のＤＭＡアドレス変換部１８１に転送する。
管理ＯＳ１２０ｄは、仮想マシン管理部１１０ｄの起動時に自動で起動される管理用のＯＳである。管理ＯＳ１２０ｄは、仮想マシン管理インタフェース１２１、デバイスドライバ１２３ｄを有する。【０１７０】
ここで、仮想マシン管理インタフェース１２１の機能および構成は、図３に示した第１の実施の形態の機能および構成と同一である。
デバイスドライバ１２３ｄは、デバイスに対するアクセス要求を発行する。デバイスドライバ１２３ｄの機能は、図３に示したデバイスドライバ１３１，１４１の機能と同一である。【０１７１】
ゲストＯＳ１３０，１４０の機能および構成は、図３に示した第１の実施の形態の機能および構成と同一である。
ＤＭＡ再配置モジュール１８０は、ＤＭＡアドレス変換部１８１、鍵記憶部１８２を有する。【０１７２】
ＤＭＡアドレス変換部１８１は、ゲストＯＳ１３０，１４０からのＤＭＡ要求で指定されるデータ転送用の仮想メモリアドレスを、ＲＡＭ１０２の物理アドレスに変換する。そして、ＤＭＡアドレス変換部１８１は、変換して得た物理アドレスをＤＭＡコントローラ１９０に通知する。また、ＤＭＡアドレス変換部１８１は、必要に応じて鍵記憶部１８２からデータを暗号処理するための鍵を取得する。そして、取得した鍵をＤＭＡコントローラのＤＭＡ制御部１９１に転送する。【０１７３】
鍵記憶部１８２は、稼動中のゲストＯＳが扱うデータを暗号処理するための鍵を記憶する。各ゲストＯＳに対応する鍵は、ＯＳ間通信制御部１１１ｄによって、そのゲストＯＳが起動するたびに鍵記憶部１１２から読み出されて、鍵記憶部１８２へ格納される。【０１７４】
ＤＭＡコントローラ１９０は、ＤＭＡ制御部１９１、暗号処理部１９２を有する。
ＤＭＡ制御部１９１は、ＲＡＭ１０２とＨＤＤ１６０との間でのＤＭＡによるデータ転送を制御する。また、ＤＭＡ制御部１９１は、必要に応じてデータおよび暗号処理用の鍵を暗号処理部１９２に転送し、暗号処理を実行させる。【０１７５】
暗号処理部１９２は、ＤＭＡ制御部１９１から転送される鍵を利用して、ＤＭＡ制御部１９１から転送されたデータを暗号処理、すなわち、暗号化または復号する。そして、暗号処理部１９２は、暗号処理したデータをＤＭＡ制御部１９１へ転送する。【０１７６】
図２１は、第５の実施の形態のゲストＯＳの書き込み処理を示すフローチャートである。以下、図２１に示す処理をステップ番号に沿って説明する。以下の説明は、ゲストＯＳ１３０での書き込み処理を行う場合とする。ゲストＯＳ１４０についても、同様の流れである。【０１７７】
［ステップＳ２１１］デバイスドライバ１３１は、ＨＤＤ１６０への書き込み対象データを伴う書き込み要求（Ｗｒｉｔｅ要求）を発行する。
［ステップＳ２１２］ＯＳ間通信制御部１１１ｄは、デバイスドライバ１３１が発行したＷｒｉｔｅ要求を取得し、ＤＭＡ要求転送部１１７に転送する。そして、ＤＭＡ要求転送部１１７は、受け付けたＷｒｉｔｅ要求をＤＭＡアドレス変換部１８１に転送する。【０１７８】
［ステップＳ２１３］ＤＭＡアドレス変換部１８１は、ＤＭＡ要求転送部１１７からのＷｒｉｔｅ要求を受け付ける。ＤＭＡアドレス変換部１８１は、鍵記憶部１８２に、ゲストＯＳ１３０からＨＤＤ１６０へのアクセスについて鍵が設定されているか判断する。鍵が設定されている場合、処理がステップＳ２１４に進められる。鍵が設定されていない場合、処理がステップＳ２１５に進められる。【０１７９】
［ステップＳ２１４］ＤＭＡアドレス変換部１８１は、鍵記憶部１８２から、暗号処理用の鍵を取得する。
［ステップＳ２１５］ＤＭＡアドレス変換部１８１は、受け付けたＷｒｉｔｅ要求で指定されたデータ転送用の仮想メモリアドレスを物理アドレスに変換する。そして、ＤＭＡアドレス変換部１８１は、アドレス変換後のＷｒｉｔｅ要求をＤＭＡ制御部１９１に送信する。このとき、上記ステップＳ２１４により暗号処理のための鍵を取得している場合、ＤＭＡアドレス変換部１８１は、同時にこの鍵もＤＭＡ制御部１９１に送信する。【０１８０】
［ステップＳ２１６］ＤＭＡ制御部１９１は、ＤＭＡアドレス変換部１８１から、アドレス変換されたＷｒｉｔｅ要求を受け付ける。また、上記ステップＳ２１５の結果、ＤＭＡアドレス変換部１８１が、暗号処理用の鍵を送信した場合は、この鍵を受け付ける。そして、ＤＭＡ制御部１９１は、Ｗｒｉｔｅ要求で指定された物理アドレスに基づいて、ＨＤＤ１６０への書き込み対象データをＲＡＭ１０２から取得する。【０１８１】
［ステップＳ２１７］ＤＭＡ制御部１９１は、上記ステップＳ２１６で鍵を取得したかを判断する。鍵を取得した場合、処理がステップＳ２１８に進められる。鍵を取得していない場合、処理がステップＳ２１９に進められる。【０１８２】
［ステップＳ２１８］ＤＭＡ制御部１９１は、取得した鍵を使用して、書き込み対象のデータを暗号処理部１９２に暗号化させる。
［ステップＳ２１９］ＤＭＡ制御部１９１は、暗号化されたデータまたは暗号化されていないデータをデータ記憶領域１６１に格納する。ＤＭＡ制御部１９１は、書き込み処理が完了すると、ＤＭＡ要求転送部１１７に書き込み完了通知を送信する。【０１８３】
［ステップＳ２２０］ＤＭＡ要求転送部１１７は、受け付けた完了通知をＯＳ間通信制御部１１１ｄに転送する。そして、ＯＳ間通信制御部１１１ｄは、デバイスドライバ１３１に対して、完了通知を送信する。【０１８４】
［ステップＳ２２１］デバイスドライバ１３１は、ＯＳ間通信制御部１１１からの完了通知を受け付ける。
図２２は、第５の実施の形態のゲストＯＳの書き込み処理を表す模式図である。以下、ゲストＯＳ１３０の書き込み処理を図２２により説明する。なお、図９と同様の事項については、その説明を省略する。【０１８５】
ＤＭＡ制御層は、ゲストＯＳ１３０からのＤＭＡ要求を実行する機能を有する。ＤＭＡ再配置モジュール１８０およびＤＭＡコントローラ１９０はＤＭＡ制御層の要素である。
ゲストＯＳ１３０にてデータの書き込み要求（Ｗｒｉｔｅ要求）が発生すると、仮想マシン管理層およびＤＭＡ再配置モジュール１８０を経由して、ＤＭＡコントローラ１９０にＷｒｉｔｅ要求が転送される。【０１８６】
ここで、鍵テーブル１１２ａは、仮想マシン管理層で管理されている。ゲストＯＳ１３０が起動した時点で、ゲストＯＳ１３０について暗号処理用の鍵が設定されている場合には、鍵テーブル１１２ａから該当する鍵が取り出されて、ＤＭＡ再配置モジュール１８０に格納される。ＤＭＡ再配置モジュール１８０は、Ｗｒｉｔｅ要求発生時に、ＤＭＡ要求で指定されたデータ転送用の仮想メモリアドレスをＲＡＭ１０２の物理アドレスに変換する。そして、ＤＭＡ再配置モジュール１８０は、鍵とアドレス変換後のＷｒｉｔｅ要求とをＤＭＡコントローラ１９０に転送する。【０１８７】
ＤＭＡコントローラ１９０は、受け付けたＷｒｉｔｅ要求に基づいて、ＲＡＭ１０２からＨＤＤ１６０への書き込み対象の非暗号化データ７００ａを取得する。さらに、ＤＭＡコントローラ１９０は、取得した鍵を用いて非暗号化データ７００ａを暗号化し、暗号化データ７００ｂを生成する。そして、ＤＭＡコントローラ１９０は、暗号化データ７００ｂをＨＤＤ１６０に格納する。【０１８８】
図２３は、第５の実施の形態のゲストＯＳの読み出し処理を示すフローチャートである。以下、図２３に示す処理をステップ番号に沿って説明する。以下の説明は、ゲストＯＳ１３０での読み出し処理を行う場合とする。ゲストＯＳ１４０についても、同様の流れである。【０１８９】
［ステップＳ２３１］デバイスドライバ１３１は、ＨＤＤ１６０へのデータの読み出し要求（Ｒｅａｄ要求）を発行する。
［ステップＳ２３２］ＯＳ間通信制御部１１１ｄは、デバイスドライバ１３１が発行したＲｅａｄ要求を取得し、ＤＭＡ要求転送部１１７に転送する。そして、ＤＭＡ要求転送部１１７は、受け付けたＲｅａｄ要求をＤＭＡアドレス変換部１８１に転送する。【０１９０】
［ステップＳ２３３］ＤＭＡアドレス変換部１８１は、ＤＭＡ要求転送部１１７からのＲｅａｄ要求を受け付ける。ＤＭＡアドレス変換部１８１は、鍵記憶部１８２に、ゲストＯＳ１３０からＨＤＤ１６０へのアクセスについて鍵が設定されているか判断する。鍵が設定されている場合、処理がステップＳ２３４に進められる。鍵が設定されていない場合、処理がステップＳ２３５に進められる。【０１９１】
［ステップＳ２３４］ＤＭＡアドレス変換部１８１は、鍵記憶部１８２から、暗号処理用の鍵を取得する。
［ステップＳ２３５］ＤＭＡアドレス変換部１８１は、受け付けたＲｅａｄ要求で指定されたデータ転送用の仮想メモリアドレスを物理アドレスに変換する。ＤＭＡアドレス変換部１８１は、アドレス変換後のＲｅａｄ要求をＤＭＡ制御部１９１に送信する。このとき、上記ステップＳ２３４により暗号処理のための鍵を取得している場合、ＤＭＡアドレス変換部１８１は、同時にこの鍵もＤＭＡ制御部１９１に送信する。【０１９２】
［ステップＳ２３６］ＤＭＡ制御部１９１は、ＤＭＡアドレス変換部１８１から、アドレス変換されたＲｅａｄ要求を受け付ける。このとき、上記ステップＳ２３５の結果、ＤＭＡアドレス変換部１８１が、暗号処理用の鍵を送信した場合は、この鍵を受け付ける。【０１９３】
［ステップＳ２３７］ＤＭＡ制御部１９１は、受け付けたＲｅａｄ要求に基づいて、ＨＤＤ１６０から読み出し対象データを読み出す。
［ステップＳ２３８］ＤＭＡ制御部１９１は、上記ステップＳ２３６で鍵を取得したかを判断する。鍵を取得した場合、処理がステップＳ２３８に進められる。鍵を取得していない場合、ＤＭＡ制御部１９１は、読み出したデータをＲＡＭ１０２上に格納してＤＭＡ要求転送部１１７に読み出し完了を応答して、処理がステップＳ２３９に進められる。【０１９４】
［ステップＳ２３９］ＤＭＡ制御部１９１は、取得した鍵を使用して、読み出したデータを暗号処理部１９２に復号させる。そして、ＤＭＡ制御部１９１は、復号したデータをＲＡＭ１０２上に格納してＤＭＡ要求転送部１１７に読み出し完了を応答する。【０１９５】
［ステップＳ２４０］ＤＭＡ要求転送部１１７は、読み出されたデータをＯＳ間通信制御部１１１ｄに転送する。そして、ＯＳ間通信制御部１１１ｄは、受け付けたデータをデバイスドライバ１３１に送信する。【０１９６】
［ステップＳ２４１］デバイスドライバ１３１は、ＯＳ間通信制御部１１１ｄからの読み出しデータを受け付ける。
図２４は、第５の実施の形態のゲストＯＳの読み出し処理を表す模式図である。以下、ゲストＯＳ１３０の読み出し処理を図２４により説明する。なお、図９，２２と同様の事項については、その説明を省略する。【０１９７】
ゲストＯＳ１３０にてデータの読み出し要求（Ｒｅａｄ要求）が発生すると、仮想マシン管理層およびＤＭＡ再配置モジュール１８０を経由して、ＤＭＡコントローラ１９０にＲｅａｄ要求が転送される。【０１９８】
ここで、鍵テーブル１１２ａは、仮想マシン管理層で管理されている。ゲストＯＳ１３０が起動した時点で、ゲストＯＳ１３０について暗号処理用の鍵が設定されている場合には、鍵テーブル１１２ａから該当する鍵が取り出されて、ＤＭＡ再配置モジュール１８０に格納される。ＤＭＡ再配置モジュール１８０は、Ｒｅａｄ要求発生時に、ＤＭＡ要求で指定されたデータ転送用の仮想メモリアドレスをＲＡＭ１０２の物理アドレスに変換する。そして、ＤＭＡ再配置モジュール１８０は、鍵とアドレス変換後のＲｅａｄ要求とをＤＭＡコントローラ１９０に転送する。【０１９９】
ＤＭＡコントローラ１９０は、受け付けたＲｅａｄ要求に基づいて、ＨＤＤ１６０から読み出し対象の暗号化データ７００ｂを取得する。さらに、ＤＭＡコントローラ１９０は、取得した鍵を用いて暗号化データ７００ｂを復号し、非暗号化データ７００ａを生成する。そして、ＤＭＡコントローラ１９０は、非暗号化データ７００ａをＲＡＭ１０２に格納する。【０２００】
このように、本実施の形態では、暗号処理機能を有するＤＭＡコントローラ１９０に暗号処理のための鍵を渡して、暗号処理を実行させる。ＤＭＡ制御層は、仮想マシン管理層より下位の層でＲＡＭ１０２とデバイスとの間のデータ転送を制御する。なお、鍵テーブル１１２ａは、仮想マシン管理層で管理されており、ゲストＯＳ１３０が起動した時点で、ゲストＯＳ１３０に設定された暗号処理用の鍵はＤＭＡ再配置モジュール１８０に格納される。このため、ゲストＯＳ１３０，１４０は、この暗号処理機能や鍵の存在を認識することはできない。したがって、コンピュータ１００ｄは、コンピュータウイルスなどの不正なプログラムによるＯＳに対する攻撃を受けても鍵を参照される危険性はなく、鍵の流出を防ぐことができる。その結果、ＨＤＤ１６０に格納されたデータの機密性を高めることができる。さらに、本実施の形態で示したように、ＤＭＡ要求に対するアドレス変換処理をＤＭＡ再配置モジュール１８０に実行させ、暗号処理をＤＭＡコントローラ１９０に実行させることで、ＣＰＵ１０１の負荷を軽減させることができる。【０２０１】
以上、本発明のデバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置を図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、本発明に他の任意の構成物や行程が付加されてもよい。また、本発明は前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。【０２０２】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、コンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。【０２０３】
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体には、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc - Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto - Optical disk）などがある。【０２０４】
上記プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータに格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。【０２０５】
上記プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラム若しくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。【０２０６】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０２０７】
１０  コンピュータ
１１  鍵記憶手段
１２  暗号処理手段
１３  アクセス要求取得手段
１４  デバイスアクセス手段
１５，１６，１７  オペレーティングシステム
１８  デバイス
【図１】
2009044461.tif 000003
【図２】
2009044461.tif 000004
【図３】
2009044461.tif 000005
【図４】
2009044461.tif 000006
【図５】
2009044461.tif 000007
【図６】
2009044461.tif 000008
【図７】
2009044461.tif 000009
【図８】
2009044461.tif 000010
【図９】
2009044461.tif 000011
【図１０】
2009044461.tif 000012
【図１１】
2009044461.tif 000013
【図１２】
2009044461.tif 000014
【図１３】
2009044461.tif 000015
【図１４】
2009044461.tif 000016
【図１５】
2009044461.tif 000017
【図１６】
2009044461.tif 000018
【図１７】
2009044461.tif 000019
【図１８】
2009044461.tif 000020
【図１９】
2009044461.tif 000021
【図２０】
2009044461.tif 000022
【図２１】
2009044461.tif 000023
【図２２】
2009044461.tif 000024
【図２３】
2009044461.tif 000025
【図２４】
2009044461.tif 000026
【手続補正書】
【提出日】平成22年1月19日(2010.1.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムを並列に実行するコンピュータにおけるデバイスへのアクセスを制御するデバイスアクセス制御プログラムにおいて、
前記コンピュータを、
前記オペレーティングシステムが入出力するデータを暗号処理するための鍵を、前記オペレーティングシステムと対応付けて、前記オペレーティングシステムが使用するメモリ領域と異なるメモリ領域に記憶する鍵記憶手段、
前記オペレーティングシステムによる前記デバイスへのアクセス要求に応答して、前記鍵記憶手段に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、前記オペレーティングシステムが出力するデータについては暗号化して前記デバイスに対して転送し、前記デバイスから取得する暗号化されたデータについては復号して前記オペレーティングシステムに対して転送する暗号処理手段、
として機能させることを特徴とするデバイスアクセス制御プログラム。
【請求項２】
前記鍵記憶手段は、前記オペレーティングシステムがアクセスする前記デバイス毎に鍵を記憶しており、
前記暗号処理手段は、アクセス対象のデバイスに対応する鍵を用いてデータの暗号化および復号を行う、
ことを特徴とする請求項１記載のデバイスアクセス制御プログラム。
【請求項３】
前記コンピュータは、前記デバイスに接続された、暗号処理機能を有するＤＭＡコントローラを備えており、
前記暗号処理手段は、前記アクセス要求に応答して、前記要求元のオペレーティングシステムに対応する鍵を前記鍵記憶手段から取得して前記ＤＭＡコントローラに設定し、前記ＤＭＡコントローラを用いてデータの暗号化および復号を行う、
ことを特徴とする請求項１記載のデバイスアクセス制御プログラム。
【請求項４】
前記デバイスのうち所定の記憶デバイスには、データを暗号処理するための鍵の一覧である鍵テーブルが暗号化されて記憶されており、
前記コンピュータは、前記鍵テーブルを暗号処理するための保護鍵が記憶された耐タンパ性を有するセキュアモジュールを備えており、
前記コンピュータを、更に、前記コンピュータの起動時に、前記所定の記憶デバイスから暗号化された前記鍵テーブルを取得し、前記セキュアモジュールに記憶された前記保護鍵を用いて復号し、前記鍵記憶手段に格納する鍵取得手段として機能させる、
ことを特徴とする請求項１記載のデバイスアクセス制御プログラム。
【請求項５】
複数のオペレーティングシステムを並列に実行するコンピュータにおけるデバイスへのアクセスを制御するデバイスアクセス制御方法において、
暗号処理手段が、前記オペレーティングシステムによる前記デバイスへのアクセス要求に応答して、前記オペレーティングシステムが入出力するデータを暗号処理するための鍵を前記オペレーティングシステムと対応付けて前記オペレーティングシステムが使用するメモリ領域と異なるメモリ領域に記憶する鍵記憶手段に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、前記オペレーティングシステムが出力するデータについては暗号化して前記デバイスに対して転送し、前記デバイスから取得する暗号化されたデータについては復号して前記オペレーティングシステムに対して転送する、
ことを特徴とするデバイスアクセス制御方法。
【請求項６】
複数のオペレーティングシステムを並列に実行するとともに、前記オペレーティングシステムからアクセスされるデバイスを備える情報処理装置において、
前記オペレーティングシステムが入出力するデータを暗号処理するための鍵を、前記オペレーティングシステムと対応付けて、前記オペレーティングシステムが使用するメモリ領域と異なるメモリ領域に記憶する鍵記憶手段と、
前記オペレーティングシステムによる前記デバイスへのアクセス要求に応答して、前記鍵記憶手段に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、前記オペレーティングシステムが出力するデータについては暗号化して前記デバイスに対して転送し、前記デバイスから取得する暗号化されたデータについては復号して前記オペレーティングシステムに対して転送する暗号処理手段と、
を有することを特徴とする情報処理装置。
【国際調査報告】
2009044461.tif 000027
2009044461.tif 000028