JPWO2009044461A1 - デバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置 - Google Patents

デバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置 Download PDF

Info

Publication number
JPWO2009044461A1
JPWO2009044461A1 JP2009535919A JP2009535919A JPWO2009044461A1 JP WO2009044461 A1 JPWO2009044461 A1 JP WO2009044461A1 JP 2009535919 A JP2009535919 A JP 2009535919A JP 2009535919 A JP2009535919 A JP 2009535919A JP WO2009044461 A1 JPWO2009044461 A1 JP WO2009044461A1
Authority
JP
Japan
Prior art keywords
key
operating system
data
unit
guest
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009535919A
Other languages
English (en)
Other versions
JP4782871B2 (ja
Inventor
酒井 敦
敦 酒井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2009044461A1 publication Critical patent/JPWO2009044461A1/ja
Application granted granted Critical
Publication of JP4782871B2 publication Critical patent/JP4782871B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6236Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database between heterogeneous systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)

Abstract

複数のオペレーティングシステムを並列に実行するコンピュータにおいて、データを暗号処理するための鍵の不正な取得を防止する。鍵記憶手段(11)は、オペレーティングシステム(15),(16),(17)が扱うデータを暗号処理するための鍵を記憶する。暗号処理手段(12)は、鍵記憶手段(11)に記憶された鍵を用いて、オペレーティングシステム(15),(16),(17)が出力するデータについては暗号化してデバイスに対して転送し、デバイスから取得する暗号化されたデータについては復号してオペレーティングシステム(15),(16),(17)に対して転送する。

Description

本発明は、オペレーティングシステムからデバイスへのアクセスを制御するデバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置に関し、特に並列に実行される複数のオペレーティングシステムからデバイスへのアクセスを制御するデバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置に関する。
1台の物理的なコンピュータ上で、仮想的に複数のコンピュータの機能を実現するコンピュータ仮想化技術が知られている。コンピュータ上では、仮想的なコンピュータの機能に対応して、個別にオペレーティングシステム(Operating System)が実行される。コンピュータ上で実行される複数のオペレーティングシステムは、そのコンピュータが備えるCPU(Central Processing Unit)やRAM(Random Access Memory)などのハードウェア資源を共同で利用する。オペレーティングシステム上で実行されるアプリケーションプログラム(以下、アプリケーションという)は、同一コンピュータ上で実行されている他のオペレーティングシステムを意識することなく、処理を行うことができる。このように、複数のオペレーティングシステムが並列に実行されることで、外部からは複数のコンピュータが存在するかのように認識される。
ここで、オペレーティングシステム上で実行されるアプリケーションは、コンピュータが備えるHDD(Hard Disk Drive)やNIC(Network Interface Card)などのデバイスを利用する場合がある。しかし、複数のオペレーティングシステムが実行されているコンピュータでは、複数のオペレーティングシステムによるデバイスへのアクセスの競合という問題が生じる。そこで、このようなコンピュータでは、デバイスへのアクセスを調停するアクセス制御プログラムが実行される。オペレーティングシステムからデバイスに対するアクセス要求が発行されると、アクセス制御プログラムがこのアクセス要求を取得する。そして、アクセス制御プログラムは、アクセスの競合を解消した上で、デバイスに対してアクセス要求を転送する。すなわち、アクセス制御プログラムが、複数のオペレーティングシステムからデバイスへのアクセス要求を一括して中継する。
ところで、コンピュータが扱うデータの機密性を確保するために、データを暗号化してデバイスに出力することが一般的に行われている。暗号化されたデータは、復号するための鍵がなければ内容を参照することはできない。したがって、例えば記憶デバイスにデータを保存する際にデータを暗号化しておけば、記憶デバイスが盗難に遭った場合のデータの漏洩リスクを低減させることができる。
このような暗号処理に関するする技術としては、記憶デバイス上の保護された領域に鍵を格納しておき、必要に応じて鍵をオペレーティングシステム上に読み込んで暗号処理を行う技術が知られている(例えば、特許文献1参照)。また、複数のオペレーティングシステムを実行するコンピュータにおいて、予めデータアクセスのポリシーを設定しておき、そのポリシーに基づいてオペレーティングシステムが暗号処理などを行う技術も知られている(例えば、特許文献2,3参照)。このように、アプリケーションの判断ではなくオペレーティングシステムの判断で自動的にデータの暗号処理などを行うことで、デバイスに出力するデータを確実に保護することができる。
特開2001−154919号公報 特開2002−318719号公報 特開2003−345654号公報
しかし、上記特許文献1〜3に記載の方法では、少なくとも暗号処理を実行する際には、鍵はオペレーティングシステム上に読み込まれることになる。このため、オペレーティングシステムの機能の中枢部分(カーネル)がコンピュータウイルスなどの不正なプログラムによって攻撃を受けると、鍵が不正に取得されて外部に流出してしまう危険性がある。このようにオペレーティングシステムが攻撃を受けて鍵が流出する危険性は、複数のオペレーティングシステムを並列に実行するコンピュータでは顕著となる。
本発明はこのような点に鑑みてなされたものであり、複数のオペレーティングシステムを並列に実行するコンピュータにおいて、オペレーティングシステムで扱うデータを暗号処理するための鍵の流出を防ぐことが可能なデバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置を提供することを目的とする。
本発明では、上記課題を解決するために、図1に示すような処理をコンピュータに実行させるためのデバイスアクセス制御プログラムが提供される。このデバイスアクセス制御プログラムは、複数のオペレーティングシステム15,16,17を並列に実行するコンピュータ10において、オペレーティングシステム15,16,17からデバイス18へのアクセスを制御するためのプログラムである。このデバイスアクセス制御プログラムを実行するコンピュータ10は、鍵記憶手段11および暗号処理手段12を有する。鍵記憶手段11は、オペレーティングシステム15,16,17が入出力するデータを暗号処理するための鍵を、オペレーティングシステム15,16,17と対応付けて、オペレーティングシステム15,16,17が使用するメモリ領域と異なるメモリ領域に記憶する。暗号処理手段12は、オペレーティングシステム15,16,17によるデバイス18へのアクセス要求に応答して、鍵記憶手段11に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、オペレーティングシステム15,16,17が出力するデータについては暗号化してデバイス18に対して転送し、デバイス18から取得する暗号化されたデータについては復号してオペレーティングシステム15,16,17に対して転送する。
このようなデバイスアクセス制御プログラムを実行するコンピュータ10によれば、暗号処理手段12により、オペレーティングシステム15,16,17によるデバイス18へのアクセス要求に応答して、オペレーティングシステム15,16,17が出力するデータについては暗号化されてデバイス18に対して転送され、デバイス18から取得する暗号化されたデータについては復号されてオペレーティングシステム15,16,17に対して転送される。
また、上記課題を解決するために、複数のオペレーティングシステムを並列に実行するコンピュータにおけるデバイスへのアクセスを制御するデバイスアクセス制御方法において、暗号処理手段が、オペレーティングシステムによるデバイスへのアクセス要求に応答して、オペレーティングシステムが入出力するデータを暗号処理するための鍵をオペレーティングシステムと対応付けてオペレーティングシステムが使用するメモリ領域と異なるメモリ領域に記憶する鍵記憶手段に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、オペレーティングシステムが出力するデータについては暗号化してデバイスに対して転送し、デバイスから取得する暗号化されたデータについては復号してオペレーティングシステムに対して転送する、ことを特徴とするデバイスアクセス制御方法が提供される。
このようなデバイスアクセス制御方法によれば、オペレーティングシステムによるデバイスへのアクセス要求に応答して、オペレーティングシステムが出力するデータについては暗号化されてデバイスに対して転送され、デバイスから取得する暗号化されたデータについては復号されてオペレーティングシステムに対して転送される。
また、上記課題を解決するために、複数のオペレーティングシステムを並列に実行するとともに、オペレーティングシステムからアクセスされるデバイスを備える情報処理装置において、オペレーティングシステムが入出力するデータを暗号処理するための鍵を、オペレーティングシステムと対応付けて、オペレーティングシステムが使用するメモリ領域と異なるメモリ領域に記憶する鍵記憶手段と、オペレーティングシステムによるデバイスへのアクセス要求に応答して、鍵記憶手段に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、オペレーティングシステムが出力するデータについては暗号化してデバイスに対して転送し、デバイスから取得する暗号化されたデータについては復号してオペレーティングシステムに対して転送する暗号処理手段と、を有することを特徴とする情報処理装置が提供される。
このような情報処理装置によれば、暗号処理手段により、オペレーティングシステムによるデバイスへのアクセス要求に応答して、オペレーティングシステムが出力するデータについては暗号化されてデバイスに対して転送され、デバイスから取得する暗号化されたデータについては復号されてオペレーティングシステムに対して転送される。
本発明では、オペレーティングシステムが使用するメモリ領域と異なるメモリ領域を用いて各オペレーティングシステムに対応する鍵を管理するとともに、オペレーティングシステムからデバイスへのアクセスの経路上で暗号処理を行うこととした。これにより、オペレーティングシステムは鍵を管理していなくても、デバイスとの間で暗号化されたデータを入出力することが可能となる。また、コンピュータウイルスなどの不正なプログラムによってオペレーティングシステムが攻撃を受けても、オペレーティングシステムから鍵を取得することはできず、鍵の流出を防ぐことができる。したがって、デバイスに出力されるデータの機密性を確保することができる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
本実施の形態の概要を示す図である。 第1の実施の形態のコンピュータのハードウェア構成図である。 第1の実施の形態のコンピュータの機能を示すブロック図である。 鍵テーブルの具体例を表す図である。 コンピュータの起動処理を示すフローチャートである。 ゲストOSの起動処理を示すフローチャートである。 ゲストOSに暗号鍵を追加する処理を示すフローチャートである。 第1の実施の形態のゲストOSの書き込み処理を示すフローチャートである。 第1の実施の形態のゲストOSの書き込み処理を表す模式図である。 第1の実施の形態のゲストOSの読み出し処理を示すフローチャートである。 第1の実施の形態のゲストOSの読み出し処理を表す模式図である。 第2の実施の形態のコンピュータの機能を示すブロック図である。 第2の実施の形態のゲストOSの書き込み処理を示すフローチャートである。 第2の実施の形態のゲストOSの書き込み処理を表す模式図である。 第2の実施の形態のゲストOSの読み出し処理を示すフローチャートである。 第2の実施の形態のゲストOSの読み出し処理を表す模式図である。 第3の実施の形態のコンピュータの機能を示すブロック図である。 第4の実施の形態のコンピュータの機能を示すブロック図である。 第5の実施の形態のコンピュータのハードウェア構成図である。 第5の実施の形態のコンピュータの機能を示すブロック図である。 第5の実施の形態のゲストOSの書き込み処理を示すフローチャートである。 第5の実施の形態のゲストOSの書き込み処理を表す模式図である。 第5の実施の形態のゲストOSの読み出し処理を示すフローチャートである。 第5の実施の形態のゲストOSの読み出し処理を表す模式図である。
以下、本発明の実施の形態を図面を参照して説明する。まず、本実施の形態の概要について説明し、その後、本実施の形態の具体的な内容を説明する。
図1は、本実施の形態の概要を示す図である。図1に示すコンピュータ10は、鍵記憶手段11、暗号処理手段12、アクセス要求取得手段13およびデバイスアクセス手段14を有しており、オペレーティングシステム15,16,17を並列に実行する。(以下、オペレーティングシステムをOSと略記する。)また、コンピュータ10はデバイス18を有する。デバイス18は、例えば、HDDやNICである。
鍵記憶手段11は、OS15,16,17が入出力するデータを暗号処理するための鍵をOS15,16,17と対応付けて記憶する。ここで、鍵記憶手段11は、OS15,16,17が使用するメモリ領域と異なるメモリ領域に鍵を格納している。例えば、OS15,16,17よりも高い実行権限で動作しているプロセスが使用するメモリ領域に格納することが考えられる。また、データを入出力するOS15,16,17とは異なる管理用OS(図示せず)が使用するメモリ領域に格納することも考えられる。
暗号処理手段12は、OS15,16,17からのデバイス18へのアクセス要求に応答して、鍵記憶手段11に記憶された要求元のOSに対応する鍵を用いて、要求元のOSが出力するデータについては暗号化してデバイス18に対して転送し、デバイス18から取得する暗号化されたデータについては復号して要求元のOSに対して転送する。
アクセス要求取得手段13は、OS15,16,17が発行したアクセス要求を取得する。そして、アクセス要求取得手段13は、暗号処理手段12とOS15,16,17との間で、暗号化されていないデータの転送を制御する。デバイスアクセス手段14は、暗号処理手段12とデバイス18との間で、暗号化されたデータの転送を制御する。
ここで、OS15,16,17は、鍵記憶手段11および暗号処理手段12に直接アクセスすることができない。したがって、OS15,16,17がコンピュータウイルスなどの不正なプログラムによって攻撃を受けることがあっても、鍵記憶手段11および暗号処理手段12に対して、不正なアクセスが行われることはない。このようにOS15,16,17で暗号処理用の鍵を管理するのではなく、OS15,16,17からデバイス18へのアクセスの経路上で鍵の管理および暗号処理を行うことで、デバイス18に出力するデータを保護するための鍵の流出を防ぐことができる。
[第1の実施の形態]
以下、第1の実施の形態を図面を参照して詳細に説明する。
図2は、第1の実施の形態のコンピュータのハードウェア構成図である。
コンピュータ100は、CPU101によって装置全体が制御されている。CPU101には、バス106を介してRAM102、グラフィック処理装置103、入力インタフェース104、通信インタフェース105、HDD160およびセキュアモジュール170が接続されている。
RAM102には、CPU101に実行させるOSのプログラムやアプリケーションのプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。
グラフィック処理装置103には、モニタ40が接続されている。グラフィック処理装置103は、CPU101からの命令に従って、画像をモニタ40の画面に表示させる。入力インタフェース104には、キーボード50とマウス60とが接続されている。入力インタフェース104は、キーボード50やマウス60から送られてくる信号を、バス106を介してCPU101に送信する。通信インタフェース105は、ネットワーク30に接続されている。通信インタフェース105は、ネットワーク30を介して、他のコンピュータとの間でデータの送受信を行う。
HDD160は、データを記憶するためのディスク装置である。HDD160には、OSのプログラムやアプリケーションのプログラムが格納される。また、HDD160には、CPU101による処理に必要な各種データが格納される。
セキュアモジュール170は、データの暗号処理やハッシュ計算をCPU101とは独立して実行する耐タンパ性をもつモジュールである。セキュアモジュール170は、暗号処理に使用する暗号鍵や復号鍵を生成し、保持する機能を有する。セキュアモジュール170としては、例えば、TPM(Trusted Platform Module)を用いることができる。
図3は、第1の実施の形態のコンピュータの機能を示すブロック図である。
コンピュータ100は、仮想マシン管理部110、管理OS120およびゲストOS130,140を有する。管理OS120およびゲストOS130,140は、コンピュータ100で並列に実行されるOSである。ここで、仮想マシン管理部110は、ゲストOS130,140よりも高い実行権限で実行されている。
仮想マシン管理部110は、OS間通信制御部111、鍵記憶部112、暗号処理部113、鍵取得部114、完全性検証部115および仮想マシン起動制御部116を有する。仮想マシン管理部110は、管理OS120およびゲストOS130,140それぞれの実行環境を提供する。(以下、このような実行環境を仮想マシンと呼ぶ。)コンピュータ100でOSを起動する場合、まず仮想マシン管理部110によりOSの実行環境としての仮想マシンが起動され、その仮想マシン上でOSが実行される。
OS間通信制御部111は、管理OS120およびゲストOS130,140の間のデータ転送を制御する。ここで、OS間通信制御部111は、OS間の転送データを必要に応じて暗号処理部113に転送し、暗号処理を実行させる。
鍵記憶部112は、ゲストOS130,140に対応付けられた、データを暗号処理するための鍵情報を記憶する。この鍵情報には、鍵そのものが含まれる他、鍵に対応付けられたゲストOSを識別する情報を含む。また、この鍵情報には、各ゲストOSのカーネルイメージやディスクイメージの完全性検証に使用するハッシュ値が含まれる。ここで、この鍵情報を格納したテーブルを、以降の説明では鍵テーブルと呼ぶこととする。鍵テーブルに関しての詳細な説明は後述するものとする。
暗号処理部113は、鍵記憶部112に記憶された鍵を利用して、OS間通信制御部111から転送されたデータを暗号処理、すなわち、暗号化または復号する。暗号処理部113は、暗号処理後のデータをOS間通信制御部111へ転送する。
鍵取得部114は、鍵記憶部112とHDD160との間で鍵テーブルを暗号処理して転送する機能を有する。具体的には、鍵取得部114は、コンピュータ100の起動時には、HDD160から暗号化された鍵テーブルを読み出す。そして、鍵取得部114は、セキュアモジュール170に記憶された保護鍵を使用して、暗号化された鍵テーブルを復号する。その後、鍵取得部114は、復号した鍵テーブルを鍵記憶部112に格納する。
また、鍵取得部114は、コンピュータ100の停止時には、鍵記憶部112に記憶された鍵テーブルを読み出す。そして、鍵取得部114は、セキュアモジュール170に記憶された保護鍵を使用して、鍵テーブルを暗号化する。その後、鍵取得部114は、暗号化した鍵テーブルをHDD160に書き込む。
完全性検証部115は、各仮想マシンを新たに起動する際に、当該仮想マシンで実行するゲストOS130,140のカーネルイメージまたはディスクイメージの少なくとも一方のデータの完全性を検証する。完全性検証部115は、この検証の結果を仮想マシン起動制御部116に通知する。なお、検証対象としては、カーネルイメージのみ、ディスクイメージのみ、カーネルイメージとディスクイメージの両方の3つの場合が考えられる。いずれを検証対象とするかは、予め管理者によって設定されている。
仮想マシン起動制御部116は、完全性検証部115による上記検証結果の通知を受け付ける。そして、仮想マシン起動制御部116は、イメージデータに対する改ざんがなければ起動対象となったゲストOSの起動処理を続行する。また、仮想マシン起動制御部116は、イメージデータに対する改ざんがある場合は、起動対象となったゲストOSの起動処理を停止する。
ここで、完全性検証の方法として、例えば次の方法が挙げられる。完全性検証部115は、仮想マシンの起動要求が発生した場合に、鍵記憶部112に記憶された鍵テーブルから、仮想マシンで実行されるゲストOSのカーネルイメージまたはディスクイメージの少なくとも一方のハッシュ値(ゲストOSが前回終了した際に取得された値)を取得する。
一方、完全性検証部115は、HDD160に格納された起動対象のゲストOSのカーネルイメージまたはディスクイメージから検証用のハッシュ値を生成する。そして、完全性検証部115は、鍵記憶部112から取得したハッシュ値と、HDD160のイメージから生成したハッシュ値を比較し、ハッシュ値が一致するか否かを検証して、その結果を仮想マシン起動制御部116に通知する。その結果、仮想マシン起動制御部116は、イメージの改ざんが無い場合には、対象の仮想マシンとゲストOSを起動させる。また、仮想マシン起動制御部116は、イメージの改ざんが有る場合には、対象の仮想マシンとゲストOSの起動を中止させる。
管理OS120は、仮想マシン管理部110の起動後に自動で起動される管理用のOSである。管理OS120は、仮想マシン管理インタフェース121、デバイスアクセス中継部122およびデバイスドライバ123を有する。管理者は、管理OS120が有する仮想マシン管理インタフェース121を使用して、その他の仮想マシンおよびゲストOSの起動などの管理を行う。
デバイスアクセス中継部122は、OS間通信制御部111とデバイスドライバ123との間のデータ転送用インタフェースである。
デバイスドライバ123は、コンピュータ100が備えるデバイスへのアクセスを制御する。図3の例では、デバイスドライバ123は、HDD160に対するアクセスを制御する。すなわち、鍵取得部114、完全性検証部115、ゲストOS130,140からのHDD160に対するアクセスは、デバイスドライバ123によって中継される。
ゲストOS130,140は、コンピュータ100上で稼動する仮想マシン上で実行される。ゲストOS130,140は、管理OS120の指示によって起動されるユーザ用のOSである。ゲストOS130は、デバイスドライバ131を有する。また、ゲストOS140は、デバイスドライバ141を有する。
デバイスドライバ131,141は、HDD160などのデバイスに対するアクセス要求を発行する。ここで、ゲストOS130,140それぞれがアクセスできる範囲は、仮想マシン管理部110によって定義されている。
HDD160は、データ記憶領域161と鍵記憶領域162とを有する。データ記憶領域161には、ゲストOS130,140が扱うデータが格納される。鍵記憶領域162には、セキュアモジュール170が保持する保護鍵で暗号化された鍵テーブルが格納される。
セキュアモジュール170は、保護鍵記憶部171を有する。保護鍵記憶部171は、鍵取得部114が鍵テーブルの暗号処理に使用する保護鍵を記憶する。これにより、HDD160に格納された鍵テーブルを他のコンピュータで正常に読み出すことは困難となる。また、セキュアモジュール170に直接鍵テーブルを格納する場合と異なり、ゲストOSの数が増加して鍵テーブルのサイズが大きくなっても、記憶容量が不足する心配がない。
なお、コンピュータ100では、必要に応じて、仮想マシン管理部110で暗号処理するのではなく、ゲストOS130,140で暗号処理するように設定することもできる。すなわち、仮想マシン管理部110で暗号処理するための鍵とは別に、ゲストOS130,140で暗号処理するための鍵も設定できる。このような鍵は、デバイスドライバ131,141の責任により管理される。
図4は、鍵テーブルの具体例を表す図である。図4に示す鍵テーブル112aは、鍵記憶部112に格納されている。鍵テーブル112aには、仮想マシン識別IDを示す項目、仮想マシン用暗号鍵を示す項目、ハッシュ値A(カーネル)を示す項目、ハッシュ値B(ディスク)を示す項目、ドライバ用暗号鍵A、ドライバ用暗号鍵Bを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つの仮想マシンについての情報を構成する。
仮想マシン識別IDを示す項目には、仮想マシンを識別するためのIDが設定される。仮想マシン用暗号鍵を示す項目には、仮想マシン上で実行されるゲストOSに渡す暗号処理用の鍵が設定される。この鍵は、各ゲストOSに暗号処理を行わせるためのものである。この鍵が不要な場合、仮想マシン用暗号鍵を示す項目には、NULLが設定される。
ハッシュ値A(カーネル)を示す項目には、ゲストOSが前回終了した時点のカーネルイメージのハッシュ値が設定される。ハッシュ値B(ディスク)を示す項目には、ゲストOSが前回終了した時点のディスクイメージのハッシュ値が設定される。ハッシュ値A(カーネル)およびハッシュ値B(ディスク)に設定されるハッシュ値は、完全性検証部115によって、次回ゲストOS起動時にそれぞれのイメージデータの完全性検証に使用される。
ドライバ用暗号鍵Aを示す項目には、第1のデバイス(例えば、HDD160)にアクセスする際に暗号処理部113で暗号処理を行うための鍵が設定される。ドライバ用暗号鍵Bを示す項目には、第2のデバイス(例えば、通信インタフェース105)にアクセスする際に暗号処理部113で暗号処理を行うための鍵が設定される。なお、暗号処理対象外のデバイスに対しては、NULLが設定される。
ここで、図4の例では、暗号処理の方式として、共通鍵暗号方式を採用した場合を想定している。共通鍵暗号方式は、処理速度が速いため、大量のデータを暗号処理する場合に、一般的に用いられる。ただし、暗号処理の方式として、公開鍵暗号方式を採用してもよい。この場合、鍵テーブルには、公開鍵とそれに対応する秘密鍵とがそれぞれ格納される。
また、図4に示した例のように、暗号処理するための鍵は、デバイスごとに設定することが鍵管理の柔軟性の観点から望ましい。ただし、全てのデバイスについて同一の鍵を設定してもよい。
鍵テーブル112aは、コンピュータ100の運用時においては、ゲストOS130,140のデータへのアクセス要求発生時や、管理OS120からのゲストOS130,140の起動要求時などに適宜参照される。
次に、以上のような構成におけるコンピュータ100での処理の詳細を説明する。最初に、コンピュータ100の起動処理について説明する。
図5は、コンピュータの起動処理を示すフローチャートである。以下、図5に示す処理をステップ番号に沿って説明する。
[ステップS11]管理者の操作によりコンピュータ100の電源がONになると、コンピュータ100は、最初に仮想マシン管理部110を起動する。
[ステップS12]仮想マシン起動制御部116は、管理OS120用の仮想マシンを起動する。そして、仮想マシン起動制御部116は、起動した仮想マシン上で管理OS120を起動する。
[ステップS13]鍵取得部114は、管理OS120経由で鍵テーブル112aをHDD160の鍵記憶領域162から取得する。この時点では、鍵テーブル112aは暗号化されている。
[ステップS14]鍵取得部114は、セキュアモジュール170の保護鍵記憶部171から保護鍵を取得する。そして、鍵取得部114は、鍵テーブル112aを取得した保護鍵を使用して復号する。
[ステップS15]鍵取得部114は、ステップS14で復号した鍵テーブル112aを鍵記憶部112に格納する。
このように、鍵テーブル112aは、コンピュータ100の起動時に鍵取得部114によって復号され、鍵記憶部112に格納される。耐タンパ性をもつセキュアモジュール170で管理される保護鍵を使用して、鍵テーブル112aを暗号化することによって、鍵テーブル112aを安全に管理することができる。
図6は、ゲストOSの起動処理を示すフローチャートである。以下、図6に示す処理をステップ番号に沿って説明する。以下の説明においては、ゲストOS130が起動する処理に関するものとする。ただし、ゲストOS140についても、同様の流れである。
[ステップS21]OS間通信制御部111は、仮想マシン管理インタフェース121からゲストOS130の起動要求を受け付ける。
[ステップS22]OS間通信制御部111は、鍵記憶部112から鍵テーブル112aを読み出す。そして、OS間通信制御部111は、鍵テーブル112aから、ゲストOS130を実行する仮想マシンの仮想マシン識別IDを取得する。
[ステップS23]OS間通信制御部111は、ステップS22で取得した仮想マシン識別IDを仮想マシン管理インタフェース121に通知する。仮想マシン管理インタフェース121は、管理OS120が保持するHDD160のファイル管理情報に基づいて、受け付けた仮想マシン識別IDに対応するカーネルイメージとディスクイメージの格納場所(例えば、HDD160のブロックアドレス)を同定する。そして、仮想マシン管理インタフェース121は、同定した格納場所の情報をOS間通信制御部111に通知する。OS間通信制御部111は、受け付けた格納場所の情報を、仮想マシン起動制御部116に転送する。
[ステップS24]仮想マシン起動制御部116は、取得した格納場所の情報に基づいて、管理OS120経由で、データ記憶領域161からゲストOS130のカーネルイメージとディスクイメージとを取得する。そして、仮想マシン起動制御部116は、完全性検証部115に、取得したカーネルイメージとディスクイメージとを転送する。完全性検証部115は、ゲストOS130のカーネルイメージまたはディスクイメージのうち少なくとも一方のハッシュ値を生成する。
[ステップS25]完全性検証部115は、鍵テーブル112aに設定されたゲストOS130のカーネルイメージまたはディスクイメージのハッシュ値の少なくとも一方を取得する。そして、完全性検証部115は、鍵テーブル112aからのハッシュ値と、ステップS24で生成したハッシュ値とを比較する。
[ステップS26]完全性検証部115は、ステップS25の比較の結果、ハッシュ値が等しいか否か判断する。等しい場合、すなわち、検証に成功した場合には、処理がステップS27に進められる。等しくない場合、すなわち、検証に失敗した場合には、処理がステップS30に進められる。
[ステップS27]完全性検証部115は、仮想マシン起動制御部116に検証成功を通知する。仮想マシン起動制御部116は、ゲストOS130を実行させる仮想マシンを起動させる。そして、仮想マシン起動制御部116は、カーネルイメージおよびディスクイメージに基づいて、ゲストOS130を起動させる。
[ステップS28]仮想マシン起動制御部116は、鍵テーブル112aに、仮想マシン用の鍵が設定されているか否か判断する。仮想マシン用の鍵が設定されている場合、処理がステップS29に進められる。設定されていない場合、ゲストOS130の起動処理を終了する。
[ステップS29]仮想マシン起動制御部116は、OS間通信制御部111経由で、鍵テーブル112aに格納されている仮想マシン用の鍵を、ゲストOS130に保持させる。その後、仮想マシン起動制御部116は、ゲストOS130の起動完了を、仮想マシン管理インタフェース121に通知する。
[ステップS30]完全性検証部115は、仮想マシン起動制御部116に検証失敗を通知する。仮想マシン起動制御部116は、仮想マシンおよびゲストOS130の起動を中止する。その後、仮想マシン起動制御部116は、ゲストOS130の起動失敗を、仮想マシン管理インタフェース121に通知する。
このようにして、完全性検証部115にてゲストOS130の起動前に完全性検証を行うことで、ゲストOS130のカーネルイメージやディスクイメージが不正に改ざんされていないかを確認することができる。
ここで、あるゲストOSに対して、利用可能なデバイスを追加する場合を考える。例えば、コンピュータ100に新たなHDDを接続する場合である。この場合、対象のゲストOSに関して、鍵テーブル112aに利用可能とするデバイスに対する暗号処理用の鍵を新たに設定する必要がある。
図7は、ゲストOSに暗号鍵を追加する処理を示すフローチャートである。以下、図7に示す処理をステップ番号に沿って説明する。以下の説明は、ゲストOS130から、あるデバイス(デバイスXと表記する)を新たに利用可能とする場合を想定している。以下の手順は、ゲストOS140についても、同様の流れである。
[ステップS41]仮想マシン管理インタフェース121は、管理者によって発行された、ゲストOS130に対するデバイスXの登録作業要求を受け付ける。
[ステップS42]仮想マシン管理インタフェース121は、デバイスXに対して設定されたポリシー情報を取得する。このポリシー情報には、デバイスに対する暗号処理の要否や、暗号処理に用いる鍵をゲストOS間で共有するか否かが定義されている。このポリシー情報は、仮想マシン管理インタフェース121にて管理される。
[ステップS43]仮想マシン管理インタフェース121は、ゲストOS130からデバイスXへのアクセス要求について、暗号処理を行うかを判断する。この判断は、ポリシー情報や管理者による明示の指定に基づいて行われる。暗号処理を行う場合、処理がステップS44に進められる。暗号処理を行わない場合、処理がステップS49に進められる。
[ステップS44]仮想マシン管理インタフェース121は、デバイスXが既に他のゲストOS(ここでは、ゲストOS140)によって使用されているかを判断する。この判断は、例えば鍵テーブル112aを参照することで行われる。使用されている場合、処理がステップS45に進められる。使用されていない場合、処理がステップS47に進められる。
[ステップS45]仮想マシン管理インタフェース121は、デバイスXについての鍵が他のゲストOSと共有可能であるか判断する。この判断は、ポリシー情報や管理者による明示の指定に基づいて行われる。共有可能である場合、処理がステップS46に進められる。共有可能でない場合、処理がステップS47に進められる。
[ステップS46]仮想マシン管理インタフェース121は、他のゲストOSに対して既に生成されている鍵を、ゲストOS130からデバイスXへのアクセスに用いる鍵として指定する。そして、仮想マシン管理インタフェース121は、鍵の指定をOS間通信制御部111に通知する。
[ステップS47]仮想マシン管理インタフェース121は、デバイスXについての鍵を新たに生成する。そして、仮想マシン管理インタフェース121は、生成した鍵をOS間通信制御部111に送信する。
[ステップS48]OS間通信制御部111は、ステップS46で指定された鍵またはステップS47で受け付けた鍵を、鍵記憶部112に記憶された鍵テーブル112aに、ゲストOS130のデバイスXに対するドライバ用鍵として設定する。
[ステップS49]仮想マシン管理インタフェース121は、鍵を設定しない旨をOS間通信制御部111に通知する。OS間通信制御部111は、ゲストOS130のデバイスXに対するドライバ用鍵としてNULLを設定する。
このように、仮想マシン管理インタフェース121は、ゲストOS130に対して、任意のタイミングでデバイスを新たに定義することが可能である。また、仮想マシン管理インタフェース121は、デバイスを新たに定義する際に、ポリシー情報を参照したり、管理者に指定させることにより、そのデバイスを暗号処理対象とするかを判定する。そして、仮想マシン管理インタフェース121は、暗号処理の対象とするデバイスに対してのみ、鍵を生成する。なお、上記では管理OS120が鍵を生成することとしたが、仮想マシン管理部110が鍵を生成するようにしてもよい。
図8は、第1の実施の形態のゲストOSの書き込み処理を示すフローチャートである。以下、図8に示す処理をステップ番号に沿って説明する。以下の説明は、ゲストOS130での書き込み処理を行う場合とする。ゲストOS140についても、同様の流れである。
[ステップS51]デバイスドライバ131は、ゲストOS130上のアプリケーションが発行したHDD160へのデータの書き込み要求(Write要求)を受け付ける。すると、デバイスドライバ131は、OS間通信制御部111に対して、書き込み対象データを伴うWrite要求を送信する。
[ステップS52]OS間通信制御部111は、デバイスドライバ131からのWrite要求を受け付ける。
[ステップS53]OS間通信制御部111は、鍵記憶部112に記憶された鍵テーブル112aに、ゲストOS130からHDD160へのアクセスについて鍵が設定されているか判断する。鍵が設定されている場合、処理がステップS54に進められる。鍵が設定されていない場合、OS間通信制御部111はデバイスアクセス中継部122にWrite要求を転送して、処理がステップS55に進められる。
[ステップS54]OS間通信制御部111は、暗号処理部113に、設定された鍵を使用して書き込み対象データを暗号化させる。そして、OS間通信制御部111は、デバイスアクセス中継部122に暗号化したデータを伴うWrite要求を送信する。
[ステップS55]デバイスアクセス中継部122は、OS間通信制御部111から暗号化されたデータまたは暗号化されていないデータを伴うWrite要求を受け付ける。そして、デバイスアクセス中継部122は、デバイスドライバ123にWrite要求を転送する。
[ステップS56]デバイスドライバ123は、データ記憶領域161に対して、Write要求に基づいてデータの書き込みを実行する。デバイスドライバ123は、書き込みが完了すると、デバイスアクセス中継部122に書き込み完了通知を送信する。デバイスアクセス中継部122は、この書き込み完了通知を、OS間通信制御部111に転送する。
[ステップS57]OS間通信制御部111は、デバイスアクセス中継部122からの完了通知を受け付ける。そして、OS間通信制御部111は、デバイスドライバ131に対して、完了通知を送信する。
[ステップS58]デバイスドライバ131は、OS間通信制御部111からの完了通知を受け付ける。その後、デバイスドライバ131は、要求元のアプリケーションに対する書き込み完了通知を発行する。
図9は、第1の実施の形態のゲストOSの書き込み処理を表す模式図である。以下、ゲストOS130の書き込み処理を図9により説明する。
図9では、コンピュータ100の機能を3つの層に分割して表している。物理デバイス層は、コンピュータ100が備えるデバイスを表す層である。例えば、物理的な記憶領域を提供するHDD160や、通信インタフェース105は、物理デバイス層の要素である。仮想マシン管理層は、コンピュータ100で実行される仮想マシンを管理するプロセスを表す層である。仮想マシン管理部110は、仮想マシン管理層の要素である。仮想マシン層は、管理OS120とゲストOS130のプロセスを表す層であり、仮想マシン管理層より上位の層である。
非暗号化データ700aは、暗号化されていないデータである。ゲストOS130にてアプリケーションにより利用されるデータは、非暗号化データ700aである。暗号化データ700bは、HDD160に格納される際に、必要に応じて非暗号化データ700aを暗号化して生成される。
ゲストOS130上のアプリケーションからWrite要求が発生すると、仮想マシン管理層を経由して、管理OS120に非暗号化データ700aを伴うWrite要求が転送される。このとき、仮想マシン管理層におけるデータ転送経路上で、非暗号化データ700aは暗号化され、暗号化データ700bが生成される。管理OS120は、仮想マシン管理層より暗号化データ700bを取得する。そして、管理OS120は、受け付けたWrite要求に基づいて、HDD160に暗号化データ700bを格納する。
図10は、第1の実施の形態のゲストOSの読み出し処理を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。なお、以下の説明は、ゲストOS130で読み出し処理を行う場合とする。ゲストOS140についても、同様の流れである。
[ステップS61]デバイスドライバ131は、ゲストOS130上のアプリケーションが発行したデータの読み出し要求(Read要求)を受け付ける。すると、デバイスドライバ131は、OS間通信制御部111に対して、このRead要求を送信する。
[ステップS62]OS間通信制御部111は、デバイスドライバ131からのRead要求を受け付ける。そして、OS間通信制御部111は、受け付けたRead要求をデバイスアクセス中継部122へ転送する。
[ステップS63]デバイスアクセス中継部122は、OS間通信制御部111からのRead要求を受け付ける。そして、デバイスアクセス中継部122は、デバイスドライバ123に対してRead要求を転送する。
[ステップS64]デバイスドライバ123は、デバイスアクセス中継部122から転送されたRead要求を受け付ける。そして、デバイスドライバ123は、受け付けたRead要求に基づいて、データ記憶領域161に対してデータの読み出し処理を実行する。その後、デバイスドライバ123は、読み出したデータをデバイスアクセス中継部122に送信する。デバイスアクセス中継部122は、デバイスドライバ123から受け付けたデータをOS間通信制御部111に転送する。
[ステップS65]OS間通信制御部111は、デバイスアクセス中継部122からデータを受け付ける。そして、OS間通信制御部111は、鍵記憶部112に記憶された鍵テーブル112aに、ゲストOS130からHDD160へのアクセスについて鍵が設定されているか判断する。鍵が設定されている場合、処理がステップS66に進められる。鍵が設定されていない場合、処理がステップS67に進められる。
[ステップS66]OS間通信制御部111は、暗号処理部113に、設定されている鍵を使用して取得したデータを復号させる。そして、OS間通信制御部111は、デバイスドライバ131に復号したデータを転送する。
[ステップS67]デバイスドライバ131は、OS間通信制御部111からデータを受け付ける。そして、デバイスドライバ131は、要求元のアプリケーションに対するデータの転送を行う。
図11は、第1の実施の形態のゲストOSの読み出し処理を表す模式図である。以下、ゲストOS130の読み出し処理を図11により説明する。なお、図9と同様の事項については、その説明を省略する。
ゲストOS130上のアプリケーションからRead要求が発生すると、仮想マシン管理層を経由して、管理OS120にRead要求が転送される。そして、管理OS120は、受け付けたRead要求に基づいて、HDD160から暗号化データ700bを取得する。管理OS120は、暗号化データ700bを仮想マシン管理層に転送する。このとき、仮想マシン管理層におけるデータ転送経路上で、暗号化データ700bは復号され、非暗号化データ700aが生成される。ゲストOS130は、仮想マシン管理層より、非暗号化データ700aを取得する。
このように、ゲストOS130にてデータへのアクセス要求が発生すると、仮想マシン管理層および管理OS120を経由してHDD160に対するアクセスが実行される。そして、鍵テーブル112aは、仮想マシン管理層で管理され、ゲストOS130と管理OS120との間のデータ転送経路上でデータの暗号処理が実行される。そのため、ゲストOS130は暗号処理機能や鍵の存在を認識することはできない。したがって、コンピュータ100は、コンピュータウイルスなどの不正なプログラムによるOSに対する攻撃を受けても鍵を参照される危険性はなく、鍵の流出を防ぐことができる。その結果、HDD160に格納されたデータの機密性を高めることができる。
[第2の実施の形態]
次に、第2の実施の形態を、図面を参照して詳細に説明する。前述の第1の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。
図12は、第2の実施の形態のコンピュータの機能を示すブロック図である。
コンピュータ100aは、仮想マシン管理部110a、管理OS120a、ゲストOS130,140、HDD160、セキュアモジュール170を有する。管理OS120a、ゲストOS130,140は、コンピュータ100aで実行される仮想マシン上のOSである。ここで、仮想マシン管理部110aは、ゲストOS130,140よりも高い実行権限で実行されている。
仮想マシン管理部110aは、OS間通信制御部111a、鍵記憶部112、鍵取得部114、完全性検証部115および仮想マシン起動制御部116を有する。仮想マシン管理部110aは、管理OS120およびゲストOS130,140それぞれの実行環境を提供する。コンピュータ100aでOSを起動する場合、まず仮想マシン管理部110aによりOSの実行環境としての仮想マシンが起動され、その仮想マシン上でOSが実行される。
ここで、鍵記憶部112、鍵取得部114、完全性検証部115および仮想マシン起動制御部116の機能および構成は、図3に示した第1の実施の形態の機能および構成と同一である。
OS間通信制御部111aは、管理OS120a、ゲストOS130,140の間のデータ転送を制御する。また、OS間通信制御部111aは、ゲストOS130,140起動時に、ゲストOS130,140に対応付けられた鍵情報を、鍵記憶部112から読み出して、管理OS120aの鍵記憶部124に格納する。
管理OS120aは、仮想マシン管理部110aの起動後に自動で起動される管理用のOSである。管理OS120aは、仮想マシン管理インタフェース121、デバイスアクセス中継部122a、デバイスドライバ123、鍵記憶部124および暗号処理部125を有する。管理者は、管理OS120aが有する仮想マシン管理インタフェース121を使用して、その他の仮想マシンおよびゲストOSの起動などの管理を行う。
ここで、仮想マシン管理インタフェース121およびデバイスドライバ123の機能および構成は、図3に示した第1の実施の形態の機能および構成と同一である。
デバイスアクセス中継部122aは、仮想マシン管理部110aとデバイスドライバ123との間でのデータ転送用インタフェースである。ここで、デバイスアクセス中継部122aは、OS間の転送データを必要に応じて暗号処理部125に転送し、暗号処理を実行させる。
鍵記憶部124は、稼動中のゲストOSに対応付けられた、データを暗号処理するための鍵情報を記憶する。この鍵情報は、OS間通信制御部111aによって、ゲストOSが起動するたびに鍵記憶部112から読み出されて、鍵記憶部124に格納される。ここで、この鍵情報に含まれる情報は、図4で示した鍵テーブル112aに含まれる項目のうち、仮想マシン識別IDを示す項目、ドライバ用暗号鍵A、ドライバ用暗号鍵Bを示す項目である。
暗号処理部125は、鍵記憶部124に記憶された鍵を利用して、デバイスアクセス中継部122aから転送されたデータを暗号処理、すなわち暗号化または復号する。暗号処理部125は、暗号処理したデータをデバイスアクセス中継部122aへ転送する。
ゲストOS130,140、HDD160およびセキュアモジュール170の機能および構成は、図3に示した第1の実施の形態の機能および構成と同一である。
図13は、第2の実施の形態のゲストOSの書き込み処理を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。以下の説明は、ゲストOS130での書き込み処理を行う場合とする。ゲストOS140についても、同様の流れである。
[ステップS111]デバイスドライバ131は、ゲストOS130上のアプリケーションが発行した、HDD160へのデータの書き込み要求(Write要求)を受け付ける。デバイスドライバ131は、OS間通信制御部111aに対して、書き込み対象データを伴うWrite要求を送信する。
[ステップS112]OS間通信制御部111aは、デバイスドライバ131からのWrite要求を受け付ける。そして、OS間通信制御部111aは、受け付けたWrite要求をデバイスアクセス中継部122aに転送する。
[ステップS113]デバイスアクセス中継部122aは、OS間通信制御部111aからのWrite要求を受け付ける。
[ステップS114]デバイスアクセス中継部122aは、鍵記憶部124を参照して、ゲストOS130からHDD160へのアクセスについて鍵が設定されているか判断する。鍵が設定されている場合、処理がステップS115に進められる。鍵が設定されていない場合、デバイスアクセス中継部122aは、デバイスドライバ123にWrite要求を転送して、処理がステップS116に進められる。
[ステップS115]デバイスアクセス中継部122aは、暗号処理部125に設定された鍵を使用して書き込み対象データを暗号化させる。そして、デバイスアクセス中継部122aは、デバイスドライバ123にWrite要求を転送する。
[ステップS116]デバイスドライバ123は、デバイスアクセス中継部122aから暗号化されたデータまたは暗号化されていないデータを伴うWrite要求を受け付ける。そして、デバイスドライバ123は、データ記憶領域161に対して、Write要求に基づいてデータの書き込みを実行する。デバイスドライバ123は、書き込みが完了すると、デバイスアクセス中継部122aに書き込み完了通知を送信する。デバイスアクセス中継部122aは、この書き込み完了通知を、OS間通信制御部111aに転送する。
[ステップS117]OS間通信制御部111aは、デバイスアクセス中継部122aからの完了通知を受け付ける。そして、OS間通信制御部111aは、デバイスドライバ131に対して、完了通知を送信する。
[ステップS118]デバイスドライバ131は、OS間通信制御部111aからの完了通知を受け付ける。その後、デバイスドライバ131は、要求元のアプリケーションに対する書き込み完了通知を発行する。
図14は、第2の実施の形態のゲストOSの書き込み処理を表す模式図である。以下、ゲストOS130の書き込み処理を図14により説明する。なお、図9と同様の事項については、その説明を省略する。
ゲストOS130上のアプリケーションからWrite要求が発生すると、仮想マシン管理層を経由して、管理OS120aに非暗号化データ700aを伴うWrite要求が転送される。そして、管理OS120aは、非暗号化データ700aを暗号化し、暗号化データ700bを生成する。さらに、管理OS120aは、受け付けたWrite要求に基づいて、HDD160に暗号化データ700bを格納する。
図15は、第2の実施の形態のゲストOSの読み出し処理を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。以下の説明は、ゲストOS130で読み出し処理を行う場合とする。ゲストOS140についても、同様の流れである。
[ステップS121]デバイスドライバ131は、ゲストOS130上のアプリケーションが発行した、データの読み出し要求(Read要求)を受け付ける。すると、デバイスドライバ131はOS間通信制御部111aに対して、このRead要求を送信する。
[ステップS122]OS間通信制御部111aは、デバイスドライバ131からのRead要求を受け付ける。そして、OS間通信制御部111aは、受け付けたRead要求をデバイスアクセス中継部122aへ転送する。
[ステップS123]デバイスアクセス中継部122aは、OS間通信制御部111aからのアクセス要求を受け付ける。そして、デバイスアクセス中継部122aは、デバイスドライバ123に対してRead要求を転送する。
[ステップS124]デバイスドライバ123は、デバイスアクセス中継部122aから受け付けたRead要求に基づいて、データ記憶領域161に対してデータの読み出し処理を実行する。そして、デバイスドライバ123は、読み出したデータをデバイスアクセス中継部122aに送信する。デバイスアクセス中継部122aは、デバイスドライバ123から読み出されたデータを受け付ける。
[ステップS125]デバイスアクセス中継部122aは、鍵記憶部124に記憶された鍵情報に、ゲストOS130からHDD160へのアクセスについて鍵が設定されているか、すなわち、取得したデータが暗号化されているか判断する。鍵が設定されている場合、処理がステップS126に進められる。鍵が設定されていない場合、デバイスアクセス中継部122aはOS間通信制御部111aに読み出したデータを転送して、処理がステップS126に進められる。
[ステップS126]デバイスアクセス中継部122aは、暗号処理部125に、設定された鍵を使用して、取得した暗号化されたデータを復号させる。そして、デバイスアクセス中継部122aは、復号したデータをOS間通信制御部111aに転送する。
[ステップS127]OS間通信制御部111aは、デバイスアクセス中継部122aから転送されたデータを受け付ける。そして、OS間通信制御部111aは、デバイスドライバ131に対して、取得したデータを転送する。
[ステップS128]デバイスドライバ131は、OS間通信制御部111から転送されたデータを受け付ける。そして、デバイスドライバ131は、要求元のアプリケーションに対するデータの転送を行う。
図16は、第2の実施の形態のゲストOSの読み出し処理を表す模式図である。以下、ゲストOS130の読み出し処理を図16により説明する。なお、図9と同様の事項については、その説明を省略する。
ゲストOS130上のアプリケーションからRead要求が発生すると、仮想マシン管理層を経由して、管理OS120aにRead要求が転送される。そして、管理OS120aは、受け付けたRead要求に基づいて、HDD160から暗号化データ700bを取得する。そして、管理OS120aは、暗号化データ700bを復号し、非暗号化データ700aを生成する。そして、この非暗号化データ700aは、仮想マシン管理層を経由してゲストOS130に転送される。
このように、ゲストOS130にてデータへのアクセス要求が発生すると、仮想マシン管理層および管理OS120aを経由してHDD160に対するアクセスが実行される。ここで、鍵テーブル112aは、仮想マシン管理層で管理されており、ゲストOS130が起動した時点で、ゲストOS130に設定された暗号処理用の鍵は管理OS120aに格納される。したがって、暗号処理に使用する鍵は、仮想マシン管理層と管理OS120aとで管理される。そして、管理OS120aは、自身に格納された鍵を使用して、データの暗号処理を実行する。このため、ゲストOS130は、この暗号処理機能や鍵の存在を認識することはできない。したがって、コンピュータ100aは、コンピュータウイルスなどの不正なプログラムによるOSに対する攻撃を受けても鍵を参照される危険性はなく、鍵の流出を防ぐことができる。その結果、HDD160に格納されたデータの機密性を高めることができる。
[第3の実施の形態]
次に、第3の実施の形態を、図面を参照して詳細に説明する。前述の第1の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。
図17は、第3の実施の形態のコンピュータの機能を示すブロック図である。
コンピュータ100bは、仮想マシン管理部110b、管理OS120b、ゲストOS130、デバイスアクセス部150、HDD160、セキュアモジュール170を有する。管理OS120b、ゲストOS130は、コンピュータ100bで並列に実行されるOSである。なお、仮想マシン管理部110bは、ゲストOS130よりも高い実行権限で実行されている。
仮想マシン管理部110bは、OS間通信制御部111b、鍵記憶部112、暗号処理部113、鍵取得部114、完全性検証部115、仮想マシン起動制御部116を有する。仮想マシン管理部110bは、管理OS120b、ゲストOS130およびデバイスアクセス部150それぞれの実行環境を提供する。コンピュータ100bでOSを起動する場合、まず仮想マシン管理部110bによりOSの実行環境としての仮想マシンが起動され、その仮想マシン上でOSが実行される。
ここで、鍵記憶部112、暗号処理部113、鍵取得部114、完全性検証部115および仮想マシン起動制御部116の機能および構成は、図3に示した第1の実施の形態の機能および構成と同一である。
OS間通信制御部111bは、管理OS120b、ゲストOS130およびデバイスアクセス部150の間のデータの転送を制御する。ここで、OS間通信制御部111bは、OS間の転送データを必要に応じて暗号処理部113に転送し、暗号処理を実行させる。
管理OS120bは、仮想マシン管理部110bの起動時にデバイスアクセス部150とともに自動で起動される管理用のOSである。管理OS120bは、仮想マシン管理インタフェース121およびデバイスドライバ123bを有する。
デバイスドライバ123bは、デバイスに対するアクセス要求を発行する。デバイスドライバ123bの機能は、図3に示したデバイスドライバ131,141の機能と同一である。
ゲストOS130の機能および構成は、図3に示した第1の実施の形態の機能および構成と同一である。なお、図17では、実行されるゲストOSとしてゲストOS130のみを示したが、同時に複数のゲストOSが実行されてもよい。
デバイスアクセス部150は、デバイスアクセス中継部151、デバイスドライバ152を有する。デバイスアクセス部150は、仮想マシン管理部110bの起動時に管理OS120bとともに自動で起動される。
デバイスアクセス中継部151は、OS間通信制御部111bとデバイスドライバ152との間のデータ転送用インタフェースである。
デバイスドライバ152は、コンピュータ100bが備えるデバイスへのアクセスを制御する。図17の例では、デバイスドライバ152は、HDD160に対するアクセスを制御する。すなわち、鍵取得部114、完全性検証部115、管理OS120bおよびゲストOS130からのHDD160に対するアクセスは、デバイスドライバ152によって中継される。
HDD160およびセキュアモジュール170の機能および構成は、図3に示した第1の実施の形態の機能および構成と同一である。
このように、第1、第2の実施の形態では管理OSが有していたデバイスドライバを、デバイスアクセス部150にもたせて、管理OS120bから分離した構成とする。
なお、本実施の形態での書き込み処理および読み出し処理におけるデータの暗号処理の流れは、第1の実施の形態と同等のため説明を省略する(図8〜11の説明と同等である)。ただし、図8〜11の管理OS120の機能は、デバイスドライバ152が担う。
このような構成では、ゲストOS130にてデータへのアクセス要求が発生すると、仮想マシン管理層およびデバイスアクセス部150を経由してHDD160に対するアクセスが実行される。そして、鍵テーブル112aは、仮想マシン管理層で管理され、ゲストOS130とデバイスアクセス部150との間のデータ転送経路上でデータの暗号処理が実行される。そのため、ゲストOS130は暗号処理機能や鍵の存在を認識することはできない。したがって、コンピュータ100は、コンピュータウイルスなどの不正なプログラムによるOSに対する攻撃を受けても鍵を参照される危険性はなく、鍵の流出を防ぐことができる。その結果、HDD160に格納されたデータの機密性を高めることができる。
[第4の実施の形態]
次に、第4の実施の形態を、図面を参照して詳細に説明する。前述の第1〜第3の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。
図18は、第4の実施の形態のコンピュータの機能を示すブロック図である。
コンピュータ100cは、仮想マシン管理部110c、管理OS120c、ゲストOS130、デバイスアクセス部150、HDD160およびセキュアモジュール170を有する。管理OS120cおよびゲストOS130は、コンピュータ100cで並列に実行されるOSである。なお、仮想マシン管理部110cは、ゲストOS130よりも高い実行権限で実行されている。
仮想マシン管理部110cは、OS間通信制御部111c、鍵記憶部112、鍵取得部114、完全性検証部115および仮想マシン起動制御部116を有する。仮想マシン管理部110cは、管理OS120c、ゲストOS130およびデバイスアクセス部150cそれぞれの実行環境を提供する。コンピュータ100cでOSを起動する場合、まず仮想マシン管理部110cによりOSの実行環境としての仮想マシンが起動され、その仮想マシン上でOSが実行される。
ここで、鍵記憶部112、鍵取得部114、完全性検証部115および仮想マシン起動制御部116の機能および構成は、図3に示した第1の実施の形態の機能および構成と同一である。
OS間通信制御部111cは、管理OS120c、ゲストOS130およびデバイスアクセス部150cの間のデータ転送を制御する。また、OS間通信制御部111cは、ゲストOS130起動時に、ゲストOS130に対応付けられた鍵情報を、鍵記憶部112から読み出して、デバイスアクセス部150の鍵記憶部153に格納する。
管理OS120cは、仮想マシン管理部110cの起動時にデバイスアクセス部150cとともに自動で起動される管理用のOSである。管理OS120cは、仮想マシン管理インタフェース121、デバイスドライバ123cを有する。
デバイスドライバ123cは、デバイスに対するアクセス要求を発行する。デバイスドライバ123cの機能は、図3に示したデバイスドライバ131,141の機能と同一である。
ゲストOS130の機能および構成は、図3に示した第1の実施の形態の機能および構成と同一である。
デバイスアクセス部150cは、デバイスアクセス中継部151c、デバイスドライバ152、鍵記憶部153および暗号処理部154を有する。デバイスアクセス部150cは、仮想マシン管理部110cの起動時に管理OS120cとともに自動で起動される。
デバイスアクセス中継部151cは、OS間通信制御部111cとデバイスドライバ152との間のデータ転送用インタフェースである。
デバイスドライバ152の機能および構成は、図17に示した第3の実施の形態の機能および構成と同一である。
鍵記憶部153は、稼動中のゲストOSが扱うデータを暗号処理するための鍵を記憶する。鍵は、OS間通信制御部111cによって、ゲストOSが起動するたびに鍵記憶部112から読み出されて、鍵記憶部153に格納される。
暗号処理部154は、鍵記憶部153に記憶された鍵を利用して、デバイスアクセス中継部151cから転送されたデータを暗号処理、すなわち暗号化または復号する。そして、暗号処理部154は、暗号処理したデータをデバイスアクセス中継部151cへ転送する。
HDD160およびセキュアモジュール170の機能および構成は、図3に示した第1の実施の形態の機能および構成と同一である。
このように、第4の実施の形態では、第3の実施の形態の説明で示したデバイスアクセス部に暗号処理機能をもたせる。
なお、本実施の形態での書き込み処理および読み出し処理におけるデータの暗号処理の流れは、第2の実施の形態と同等のため説明を省略する(図13〜16の説明と同等である)。ただし、図13〜16の管理OS120aの機能は、デバイスアクセス部150cが担う。
このような構成では、ゲストOS130にてデータへのアクセス要求が発生すると、仮想マシン管理層およびデバイスアクセス部150cを経由してHDD160に対するアクセスが実行される。ここで、鍵テーブル112aは、仮想マシン管理層で管理されており、ゲストOS130が起動した時点で、ゲストOS130に設定された暗号処理用の鍵はデバイスアクセス部150cに格納される。すなわち、暗号処理に使用する鍵は、仮想マシン管理層とデバイスアクセス部150cとで管理される。このため、ゲストOS130は、暗号処理機能や鍵の存在を認識することはできない。したがって、コンピュータ100cは、コンピュータウイルスなどの不正なプログラムによるOSに対する攻撃を受けても鍵を参照される危険性はなく、鍵の流出を防ぐことができる。その結果、HDD160に格納されたデータの機密性を高めることができる。
[第5の実施の形態]
次に、本発明の第5の実施の形態を、図面を参照して詳細に説明する。前述の第1の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。
図19は、第5の実施の形態のコンピュータのハードウェア構成図である。第5の実施の形態に係るコンピュータは、DMA(Direct Memory Access)の機能を備えている。
コンピュータ100dは、CPU101によって装置全体が制御されている。CPU101には、バス106を介してRAM102、グラフィック処理装置103、入力インタフェース104、通信インタフェース105、HDD160、セキュアモジュール170、DMA再配置モジュール180、DMAコントローラ190が接続されている。
ここで、CPU101、RAM102、グラフィック処理装置103、入力インタフェース104、通信インタフェース105、HDD160、セキュアモジュール170の機能および構成は、図2に示した第1の実施の形態の機能および構成と同一である。
DMA再配置モジュール180は、OSによって発行されるDMA要求(DMAの機能を用いてデバイスにアクセスすることを要求するアクセス要求)で指定される仮想メモリアドレスを、RAM102の物理アドレスに変換する。ここで、OSが管理しているメモリアドレスは、仮想マシン管理プログラムによって定義される仮想メモリアドレスである。OSでDMA要求が発生すると、デバイスとの間のデータ入出力に使用するメモリ領域を特定するため、仮想メモリアドレスをRAM102の物理アドレスに変換する必要がある。DMA再配置モジュール180は、ハードウェアによってこのアドレス変換機能を実現したものである。コンピュータ100dは、DMA再配置モジュール180を有することで、OSによるデバイスアクセスに対して、仮想マシン管理プログラムによるアドレス変換が不要となり、CPU101の負荷を軽減できる。
DMAコントローラ190は、OSによって発行されるDMA要求に基づいて、コンピュータ100dが備えるデバイスと、RAM102との間のデータ転送を制御する。DMAコントローラ190は、DMA再配置モジュール180でのアドレス変換によって得られる物理アドレスに基づいてデータ転送を実行する。図19の構成では、RAM102とHDD160との間のデータ送受信は、DMAコントローラ190によって、CPU101を介さず直接実行される。
図20は、第5の実施の形態のコンピュータの機能を示すブロック図である。
コンピュータ100dは、仮想マシン管理部110d、管理OS120d、ゲストOS130,140、HDD160、セキュアモジュール170、DMA再配置モジュール180およびDMAコントローラ190を有する。管理OS120dおよびゲストOS130,140は、コンピュータ100dで並列に実行されるOSである。ここで、仮想マシン管理部11dは、ゲストOS130,140よりも高い実行権限で実行されている。
仮想マシン管理部110dは、OS間通信制御部111d、鍵記憶部112、鍵取得部114、完全性検証部115、仮想マシン起動制御部116およびDMA要求転送部117を有する。仮想マシン管理部110dは、管理OS120dおよびゲストOS130,140それぞれの実行環境を提供する。コンピュータ100dでOSを起動する場合、まず仮想マシン管理部110dによりOSの実行環境としての仮想マシンが起動され、その仮想マシン上でOSが実行される。
ここで、鍵記憶部112、鍵取得部114、完全性検証部115および仮想マシン起動制御部116の機能および構成は、図3に示した第1の実施の形態の機能および構成と同一である。
OS間通信制御部111dは、管理OS120d、ゲストOS130,140の間のデータの転送を制御する。また、OS間通信制御部111dは、稼動しているゲストOSで扱うデータを暗号処理するための鍵を、鍵記憶部112から読み出して、DMA再配置モジュール180の鍵記憶部182に格納する。
DMA要求転送部117は、ゲストOS130,140から発行されたDMA要求をDMA再配置モジュール180のDMAアドレス変換部181に転送する。
管理OS120dは、仮想マシン管理部110dの起動時に自動で起動される管理用のOSである。管理OS120dは、仮想マシン管理インタフェース121、デバイスドライバ123dを有する。
ここで、仮想マシン管理インタフェース121の機能および構成は、図3に示した第1の実施の形態の機能および構成と同一である。
デバイスドライバ123dは、デバイスに対するアクセス要求を発行する。デバイスドライバ123dの機能は、図3に示したデバイスドライバ131,141の機能と同一である。
ゲストOS130,140の機能および構成は、図3に示した第1の実施の形態の機能および構成と同一である。
DMA再配置モジュール180は、DMAアドレス変換部181、鍵記憶部182を有する。
DMAアドレス変換部181は、ゲストOS130,140からのDMA要求で指定されるデータ転送用の仮想メモリアドレスを、RAM102の物理アドレスに変換する。そして、DMAアドレス変換部181は、変換して得た物理アドレスをDMAコントローラ190に通知する。また、DMAアドレス変換部181は、必要に応じて鍵記憶部182からデータを暗号処理するための鍵を取得する。そして、取得した鍵をDMAコントローラのDMA制御部191に転送する。
鍵記憶部182は、稼動中のゲストOSが扱うデータを暗号処理するための鍵を記憶する。各ゲストOSに対応する鍵は、OS間通信制御部111dによって、そのゲストOSが起動するたびに鍵記憶部112から読み出されて、鍵記憶部182へ格納される。
DMAコントローラ190は、DMA制御部191、暗号処理部192を有する。
DMA制御部191は、RAM102とHDD160との間でのDMAによるデータ転送を制御する。また、DMA制御部191は、必要に応じてデータおよび暗号処理用の鍵を暗号処理部192に転送し、暗号処理を実行させる。
暗号処理部192は、DMA制御部191から転送される鍵を利用して、DMA制御部191から転送されたデータを暗号処理、すなわち、暗号化または復号する。そして、暗号処理部192は、暗号処理したデータをDMA制御部191へ転送する。
図21は、第5の実施の形態のゲストOSの書き込み処理を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。以下の説明は、ゲストOS130での書き込み処理を行う場合とする。ゲストOS140についても、同様の流れである。
[ステップS211]デバイスドライバ131は、HDD160への書き込み対象データを伴う書き込み要求(Write要求)を発行する。
[ステップS212]OS間通信制御部111dは、デバイスドライバ131が発行したWrite要求を取得し、DMA要求転送部117に転送する。そして、DMA要求転送部117は、受け付けたWrite要求をDMAアドレス変換部181に転送する。
[ステップS213]DMAアドレス変換部181は、DMA要求転送部117からのWrite要求を受け付ける。DMAアドレス変換部181は、鍵記憶部182に、ゲストOS130からHDD160へのアクセスについて鍵が設定されているか判断する。鍵が設定されている場合、処理がステップS214に進められる。鍵が設定されていない場合、処理がステップS215に進められる。
[ステップS214]DMAアドレス変換部181は、鍵記憶部182から、暗号処理用の鍵を取得する。
[ステップS215]DMAアドレス変換部181は、受け付けたWrite要求で指定されたデータ転送用の仮想メモリアドレスを物理アドレスに変換する。そして、DMAアドレス変換部181は、アドレス変換後のWrite要求をDMA制御部191に送信する。このとき、上記ステップS214により暗号処理のための鍵を取得している場合、DMAアドレス変換部181は、同時にこの鍵もDMA制御部191に送信する。
[ステップS216]DMA制御部191は、DMAアドレス変換部181から、アドレス変換されたWrite要求を受け付ける。また、上記ステップS215の結果、DMAアドレス変換部181が、暗号処理用の鍵を送信した場合は、この鍵を受け付ける。そして、DMA制御部191は、Write要求で指定された物理アドレスに基づいて、HDD160への書き込み対象データをRAM102から取得する。
[ステップS217]DMA制御部191は、上記ステップS216で鍵を取得したかを判断する。鍵を取得した場合、処理がステップS218に進められる。鍵を取得していない場合、処理がステップS219に進められる。
[ステップS218]DMA制御部191は、取得した鍵を使用して、書き込み対象のデータを暗号処理部192に暗号化させる。
[ステップS219]DMA制御部191は、暗号化されたデータまたは暗号化されていないデータをデータ記憶領域161に格納する。DMA制御部191は、書き込み処理が完了すると、DMA要求転送部117に書き込み完了通知を送信する。
[ステップS220]DMA要求転送部117は、受け付けた完了通知をOS間通信制御部111dに転送する。そして、OS間通信制御部111dは、デバイスドライバ131に対して、完了通知を送信する。
[ステップS221]デバイスドライバ131は、OS間通信制御部111からの完了通知を受け付ける。
図22は、第5の実施の形態のゲストOSの書き込み処理を表す模式図である。以下、ゲストOS130の書き込み処理を図22により説明する。なお、図9と同様の事項については、その説明を省略する。
DMA制御層は、ゲストOS130からのDMA要求を実行する機能を有する。DMA再配置モジュール180およびDMAコントローラ190はDMA制御層の要素である。
ゲストOS130にてデータの書き込み要求(Write要求)が発生すると、仮想マシン管理層およびDMA再配置モジュール180を経由して、DMAコントローラ190にWrite要求が転送される。
ここで、鍵テーブル112aは、仮想マシン管理層で管理されている。ゲストOS130が起動した時点で、ゲストOS130について暗号処理用の鍵が設定されている場合には、鍵テーブル112aから該当する鍵が取り出されて、DMA再配置モジュール180に格納される。DMA再配置モジュール180は、Write要求発生時に、DMA要求で指定されたデータ転送用の仮想メモリアドレスをRAM102の物理アドレスに変換する。そして、DMA再配置モジュール180は、鍵とアドレス変換後のWrite要求とをDMAコントローラ190に転送する。
DMAコントローラ190は、受け付けたWrite要求に基づいて、RAM102からHDD160への書き込み対象の非暗号化データ700aを取得する。さらに、DMAコントローラ190は、取得した鍵を用いて非暗号化データ700aを暗号化し、暗号化データ700bを生成する。そして、DMAコントローラ190は、暗号化データ700bをHDD160に格納する。
図23は、第5の実施の形態のゲストOSの読み出し処理を示すフローチャートである。以下、図23に示す処理をステップ番号に沿って説明する。以下の説明は、ゲストOS130での読み出し処理を行う場合とする。ゲストOS140についても、同様の流れである。
[ステップS231]デバイスドライバ131は、HDD160へのデータの読み出し要求(Read要求)を発行する。
[ステップS232]OS間通信制御部111dは、デバイスドライバ131が発行したRead要求を取得し、DMA要求転送部117に転送する。そして、DMA要求転送部117は、受け付けたRead要求をDMAアドレス変換部181に転送する。
[ステップS233]DMAアドレス変換部181は、DMA要求転送部117からのRead要求を受け付ける。DMAアドレス変換部181は、鍵記憶部182に、ゲストOS130からHDD160へのアクセスについて鍵が設定されているか判断する。鍵が設定されている場合、処理がステップS234に進められる。鍵が設定されていない場合、処理がステップS235に進められる。
[ステップS234]DMAアドレス変換部181は、鍵記憶部182から、暗号処理用の鍵を取得する。
[ステップS235]DMAアドレス変換部181は、受け付けたRead要求で指定されたデータ転送用の仮想メモリアドレスを物理アドレスに変換する。DMAアドレス変換部181は、アドレス変換後のRead要求をDMA制御部191に送信する。このとき、上記ステップS234により暗号処理のための鍵を取得している場合、DMAアドレス変換部181は、同時にこの鍵もDMA制御部191に送信する。
[ステップS236]DMA制御部191は、DMAアドレス変換部181から、アドレス変換されたRead要求を受け付ける。このとき、上記ステップS235の結果、DMAアドレス変換部181が、暗号処理用の鍵を送信した場合は、この鍵を受け付ける。
[ステップS237]DMA制御部191は、受け付けたRead要求に基づいて、HDD160から読み出し対象データを読み出す。
[ステップS238]DMA制御部191は、上記ステップS236で鍵を取得したかを判断する。鍵を取得した場合、処理がステップS238に進められる。鍵を取得していない場合、DMA制御部191は、読み出したデータをRAM102上に格納してDMA要求転送部117に読み出し完了を応答して、処理がステップS239に進められる。
[ステップS239]DMA制御部191は、取得した鍵を使用して、読み出したデータを暗号処理部192に復号させる。そして、DMA制御部191は、復号したデータをRAM102上に格納してDMA要求転送部117に読み出し完了を応答する。
[ステップS240]DMA要求転送部117は、読み出されたデータをOS間通信制御部111dに転送する。そして、OS間通信制御部111dは、受け付けたデータをデバイスドライバ131に送信する。
[ステップS241]デバイスドライバ131は、OS間通信制御部111dからの読み出しデータを受け付ける。
図24は、第5の実施の形態のゲストOSの読み出し処理を表す模式図である。以下、ゲストOS130の読み出し処理を図24により説明する。なお、図9,22と同様の事項については、その説明を省略する。
ゲストOS130にてデータの読み出し要求(Read要求)が発生すると、仮想マシン管理層およびDMA再配置モジュール180を経由して、DMAコントローラ190にRead要求が転送される。
ここで、鍵テーブル112aは、仮想マシン管理層で管理されている。ゲストOS130が起動した時点で、ゲストOS130について暗号処理用の鍵が設定されている場合には、鍵テーブル112aから該当する鍵が取り出されて、DMA再配置モジュール180に格納される。DMA再配置モジュール180は、Read要求発生時に、DMA要求で指定されたデータ転送用の仮想メモリアドレスをRAM102の物理アドレスに変換する。そして、DMA再配置モジュール180は、鍵とアドレス変換後のRead要求とをDMAコントローラ190に転送する。
DMAコントローラ190は、受け付けたRead要求に基づいて、HDD160から読み出し対象の暗号化データ700bを取得する。さらに、DMAコントローラ190は、取得した鍵を用いて暗号化データ700bを復号し、非暗号化データ700aを生成する。そして、DMAコントローラ190は、非暗号化データ700aをRAM102に格納する。
このように、本実施の形態では、暗号処理機能を有するDMAコントローラ190に暗号処理のための鍵を渡して、暗号処理を実行させる。DMA制御層は、仮想マシン管理層より下位の層でRAM102とデバイスとの間のデータ転送を制御する。なお、鍵テーブル112aは、仮想マシン管理層で管理されており、ゲストOS130が起動した時点で、ゲストOS130に設定された暗号処理用の鍵はDMA再配置モジュール180に格納される。このため、ゲストOS130,140は、この暗号処理機能や鍵の存在を認識することはできない。したがって、コンピュータ100dは、コンピュータウイルスなどの不正なプログラムによるOSに対する攻撃を受けても鍵を参照される危険性はなく、鍵の流出を防ぐことができる。その結果、HDD160に格納されたデータの機密性を高めることができる。さらに、本実施の形態で示したように、DMA要求に対するアドレス変換処理をDMA再配置モジュール180に実行させ、暗号処理をDMAコントローラ190に実行させることで、CPU101の負荷を軽減させることができる。
以上、本発明のデバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置を図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、本発明に他の任意の構成物や行程が付加されてもよい。また、本発明は前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、コンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体には、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、HDD、フレキシブルディスク(FD)、磁気テープ(MT)などがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc - Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto - Optical disk)などがある。
上記プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータに格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
上記プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラム若しくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
符号の説明
10 コンピュータ
11 鍵記憶手段
12 暗号処理手段
13 アクセス要求取得手段
14 デバイスアクセス手段
15,16,17 オペレーティングシステム
18 デバイス

Claims (12)

  1. 複数のオペレーティングシステムを並列に実行するコンピュータにおけるデバイスへのアクセスを制御するデバイスアクセス制御プログラムにおいて、
    前記コンピュータを、
    前記オペレーティングシステムが入出力するデータを暗号処理するための鍵を、前記オペレーティングシステムと対応付けて、前記オペレーティングシステムが使用するメモリ領域と異なるメモリ領域に記憶する鍵記憶手段、
    前記オペレーティングシステムによる前記デバイスへのアクセス要求に応答して、前記鍵記憶手段に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、前記オペレーティングシステムが出力するデータについては暗号化して前記デバイスに対して転送し、前記デバイスから取得する暗号化されたデータについては復号して前記オペレーティングシステムに対して転送する暗号処理手段、
    として機能させることを特徴とするデバイスアクセス制御プログラム。
  2. 前記鍵記憶手段は、前記オペレーティングシステムがアクセスする前記デバイス毎に鍵を記憶しており、
    前記暗号処理手段は、アクセス対象のデバイスに対応する鍵を用いてデータの暗号化および復号を行う、
    ことを特徴とする請求の範囲第1項記載のデバイスアクセス制御プログラム。
  3. 前記コンピュータは、前記デバイスに接続された、暗号処理機能を有するDMAコントローラを備えており、
    前記暗号処理手段は、前記アクセス要求に応答して、前記要求元のオペレーティングシステムに対応する鍵を前記鍵記憶手段から取得して前記DMAコントローラに設定し、前記DMAコントローラを用いてデータの暗号化および復号を行う、
    ことを特徴とする請求の範囲第1項記載のデバイスアクセス制御プログラム。
  4. 前記デバイスのうち所定の記憶デバイスには、データを暗号処理するための鍵の一覧である鍵テーブルが暗号化されて記憶されており、
    前記コンピュータは、前記鍵テーブルを暗号処理するための保護鍵が記憶された耐タンパ性を有するセキュアモジュールを備えており、
    前記コンピュータを、更に、前記コンピュータの起動時に、前記所定の記憶デバイスから暗号化された前記鍵テーブルを取得し、前記セキュアモジュールに記憶された前記保護鍵を用いて復号し、前記鍵記憶手段に格納する鍵取得手段として機能させる、
    ことを特徴とする請求の範囲第1項記載のデバイスアクセス制御プログラム。
  5. 複数のオペレーティングシステムを並列に実行するコンピュータにおけるデバイスへのアクセスを制御するデバイスアクセス制御方法において、
    暗号処理手段が、前記オペレーティングシステムによる前記デバイスへのアクセス要求に応答して、前記オペレーティングシステムが入出力するデータを暗号処理するための鍵を前記オペレーティングシステムと対応付けて前記オペレーティングシステムが使用するメモリ領域と異なるメモリ領域に記憶する鍵記憶手段に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、前記オペレーティングシステムが出力するデータについては暗号化して前記デバイスに対して転送し、前記デバイスから取得する暗号化されたデータについては復号して前記オペレーティングシステムに対して転送する、
    ことを特徴とするデバイスアクセス制御方法。
  6. 前記鍵記憶手段には、前記オペレーティングシステムがアクセスする前記デバイス毎に鍵が記憶されており、
    前記暗号処理手段は、アクセス対象のデバイスに対応する鍵を用いてデータの暗号化および復号を行う、
    ことを特徴とする請求の範囲第5項記載のデバイスアクセス制御方法。
  7. 前記コンピュータは、前記デバイスに接続された、暗号処理機能を有するDMAコントローラを備えており、
    前記アクセス要求に応答して、前記暗号処理手段は、前記要求元のオペレーティングシステムに対応する鍵を前記鍵記憶手段から取得して前記DMAコントローラに設定し、前記DMAコントローラを用いてデータの暗号化および復号を行う、
    ことを特徴とする請求の範囲第5項記載のデバイスアクセス制御方法。
  8. 前記デバイスのうち所定の記憶デバイスには、データを暗号処理するための鍵の一覧である鍵テーブルが暗号化されて記憶されており、
    前記コンピュータには、前記鍵テーブルを暗号処理するための保護鍵が記憶された耐タンパ性を有するセキュアモジュールが備えられており、
    鍵取得手段が、前記コンピュータの起動時に、前記所定の記憶デバイスから暗号化された前記鍵テーブルを取得し、前記セキュアモジュールに記憶された前記保護鍵を用いて復号し、前記鍵記憶手段に格納する、
    ことを特徴とする請求の範囲第5項記載のデバイスアクセス制御方法。
  9. 複数のオペレーティングシステムを並列に実行するとともに、前記オペレーティングシステムからアクセスされるデバイスを備える情報処理装置において、
    前記オペレーティングシステムが入出力するデータを暗号処理するための鍵を、前記オペレーティングシステムと対応付けて、前記オペレーティングシステムが使用するメモリ領域と異なるメモリ領域に記憶する鍵記憶手段と、
    前記オペレーティングシステムによる前記デバイスへのアクセス要求に応答して、前記鍵記憶手段に記憶された要求元のオペレーティングシステムに対応する鍵を用いて、前記オペレーティングシステムが出力するデータについては暗号化して前記デバイスに対して転送し、前記デバイスから取得する暗号化されたデータについては復号して前記オペレーティングシステムに対して転送する暗号処理手段と、
    を有することを特徴とする情報処理装置。
  10. 前記鍵記憶手段は、前記オペレーティングシステムがアクセスする前記デバイス毎に鍵を記憶しており、
    前記暗号処理手段は、アクセス対象のデバイスに対応する鍵を用いてデータの暗号化および復号を行う、
    ことを特徴とする請求の範囲第9項記載の情報処理装置。
  11. 前記デバイスに接続された、暗号処理機能を有するDMAコントローラをさらに有しており、
    前記暗号処理手段は、前記アクセス要求に応答して、前記要求元のオペレーティングシステムに対応する鍵を前記鍵記憶手段から取得して前記DMAコントローラに設定し、前記DMAコントローラを用いてデータの暗号化および復号を行う、
    ことを特徴とする請求の範囲第9項記載の情報処理装置。
  12. 前記デバイスのうち所定の記憶デバイスには、データを暗号処理するための鍵の一覧である鍵テーブルが暗号化されて記憶されており、
    前記鍵テーブルを暗号処理するための保護鍵が記憶された耐タンパ性を有するセキュアモジュールと、
    起動時に、前記所定の記憶デバイスから暗号化された前記鍵テーブルを取得し、前記セキュアモジュールに記憶された前記保護鍵を用いて復号し、前記鍵記憶手段に格納する鍵取得手段と、
    を更に有することを特徴とする請求の範囲第9項記載の情報処理装置。
JP2009535919A 2007-10-03 2007-10-03 デバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置 Expired - Fee Related JP4782871B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/069357 WO2009044461A1 (ja) 2007-10-03 2007-10-03 デバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置

Publications (2)

Publication Number Publication Date
JPWO2009044461A1 true JPWO2009044461A1 (ja) 2011-02-03
JP4782871B2 JP4782871B2 (ja) 2011-09-28

Family

ID=40525894

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009535919A Expired - Fee Related JP4782871B2 (ja) 2007-10-03 2007-10-03 デバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置

Country Status (3)

Country Link
US (1) US20100153749A1 (ja)
JP (1) JP4782871B2 (ja)
WO (1) WO2009044461A1 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5006817B2 (ja) * 2008-03-04 2012-08-22 日本電信電話株式会社 認証情報生成システム、認証情報生成方法、クライアント装置及びプログラム
JP4631974B2 (ja) * 2009-01-08 2011-02-16 ソニー株式会社 情報処理装置、情報処理方法、プログラム、および情報処理システム
EP2278514B1 (en) * 2009-07-16 2018-05-30 Alcatel Lucent System and method for providing secure virtual machines
FR2948789B1 (fr) * 2009-07-28 2016-12-09 Airbus Composant logiciel et dispositif pour le traitement automatise de donnees multi-usages, mettant en oeuvre des fonctions ayant besoin de differents niveaux de surete ou limites de responsabilite
JP2011048661A (ja) * 2009-08-27 2011-03-10 Nomura Research Institute Ltd 仮想サーバ暗号化システム
US8458718B2 (en) * 2009-08-27 2013-06-04 The Boeing Company Statically partitioning into fixed and independent systems with fixed processing core
US8295481B2 (en) * 2009-08-31 2012-10-23 International Business Machines Corporation Virtualization of cryptographic keys
WO2011116459A1 (en) 2010-03-25 2011-09-29 Enomaly Inc. System and method for secure cloud computing
JP2013528872A (ja) * 2010-06-02 2013-07-11 ヴイエムウェア インク マルチ・テナント・クラウドにおける顧客仮想計算機の保護
US8694777B2 (en) * 2010-08-13 2014-04-08 International Business Machines Corporation Securely identifying host systems
WO2012101721A1 (ja) * 2011-01-25 2012-08-02 三洋電機株式会社 通信装置
JP5564453B2 (ja) * 2011-02-25 2014-07-30 株式会社エヌ・ティ・ティ・データ 情報処理システム、及び情報処理方法
JP2013029884A (ja) * 2011-07-26 2013-02-07 Ricoh Co Ltd データ転送装置、画像投影装置、データ転送方法およびプログラム
US9361305B2 (en) * 2011-08-09 2016-06-07 Kyocera Document Solutions Inc. Image forming apparatus having a file system
US9703723B2 (en) * 2011-08-29 2017-07-11 International Business Machines Corporation Method and apparatus for performing mapping within a data processing system having virtual machines
US8838968B2 (en) * 2012-05-14 2014-09-16 Ca, Inc. System and method for virtual machine data protection in a public cloud
US9009705B2 (en) * 2012-10-01 2015-04-14 International Business Machines Corporation Authenticated distribution of virtual machine images
US20140244513A1 (en) * 2013-02-22 2014-08-28 Miguel Ballesteros Data protection in near field communications (nfc) transactions
US9292331B2 (en) * 2013-03-15 2016-03-22 Bracket Computing, Inc. Expansion of services for a virtual data center guest
WO2015047285A1 (en) 2013-09-27 2015-04-02 Intel Corporation Protection scheme for remotely-stored data
US9792448B2 (en) * 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
WO2016018354A1 (en) * 2014-07-31 2016-02-04 Hewlett-Packard Development Company, L.P. Protecting memory storage content
WO2016106566A1 (zh) * 2014-12-30 2016-07-07 华为技术有限公司 虚拟化系统中加解密的方法、装置和系统
US20170277898A1 (en) * 2016-03-25 2017-09-28 Advanced Micro Devices, Inc. Key management for secure memory address spaces
US10740466B1 (en) 2016-09-29 2020-08-11 Amazon Technologies, Inc. Securing interfaces of a compute node
EP3574442A4 (en) 2017-01-26 2021-02-24 Semper Fortis Solutions, LLC MULTIPLE SINGLE SECURITY LEVELS (MSLS) IN A MULTI-TENANT CLOUD
US10474359B1 (en) 2017-02-28 2019-11-12 Amazon Technologies, Inc. Write minimization for de-allocated memory
US10901627B1 (en) 2017-02-28 2021-01-26 Amazon Technologies, Inc. Tracking persistent memory usage
US10404674B1 (en) * 2017-02-28 2019-09-03 Amazon Technologies, Inc. Efficient memory management in multi-tenant virtualized environment
US11537421B1 (en) * 2019-06-07 2022-12-27 Amazon Technologies, Inc. Virtual machine monitor providing secure cryptographic operations
CN112257092B (zh) * 2020-11-05 2023-10-27 海光信息技术股份有限公司 数据传输控制方法、密钥管理方法、配置方法及相关装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892900A (en) * 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
JP2002182560A (ja) * 2000-12-12 2002-06-26 Hitachi Ltd 暗号処理機能を備えた情報サーバ装置
JP4089171B2 (ja) * 2001-04-24 2008-05-28 株式会社日立製作所 計算機システム
US7428636B1 (en) * 2001-04-26 2008-09-23 Vmware, Inc. Selective encryption system and method for I/O operations
JP2003345654A (ja) * 2002-05-23 2003-12-05 Hitachi Ltd データ保護システム
JP4263976B2 (ja) * 2003-09-24 2009-05-13 株式会社東芝 オンチップマルチコア型耐タンパプロセッサ
US7908483B2 (en) * 2005-06-30 2011-03-15 Intel Corporation Method and apparatus for binding TPM keys to execution entities
US20070079120A1 (en) * 2005-10-03 2007-04-05 Bade Steven A Dynamic creation and hierarchical organization of trusted platform modules

Also Published As

Publication number Publication date
WO2009044461A1 (ja) 2009-04-09
JP4782871B2 (ja) 2011-09-28
US20100153749A1 (en) 2010-06-17

Similar Documents

Publication Publication Date Title
JP4782871B2 (ja) デバイスアクセス制御プログラム、デバイスアクセス制御方法および情報処理装置
US20170277898A1 (en) Key management for secure memory address spaces
TWI420300B (zh) 用於防毒加速之方法、裝置及電腦程式產品
JP6414863B2 (ja) 仮想化システムにおける暗号復号方法および装置、およびシステム
US8549313B2 (en) Method and system for integrated securing and managing of virtual machines and virtual appliances
JP6620595B2 (ja) 情報処理システム、情報処理装置、管理装置、処理プログラム、及び処理方法
CN102208001B (zh) 硬件支持的虚拟化密码服务
JP5460698B2 (ja) 安全なアプリケーションストリーミング
TWI540453B (zh) 以區段映射表為基礎之快速資料加密策略順從
JP5230797B2 (ja) ディスクドライブデータの暗号化
US8539605B2 (en) Data processing device and data processing method
TWI544332B (zh) 用於以經加密塊為基礎之快速資料加密策略順從的方法與電腦儲存媒體
JP5980050B2 (ja) 情報処理装置
JP2007157049A (ja) 暗号化機能内蔵ストレージシステム
WO2011136887A1 (en) Secure virtual machine
US20070038827A1 (en) Use management method for peripheral device, electronic system and component device thereof
US8750519B2 (en) Data protection system, data protection method, and memory card
KR20140051350A (ko) 디지털 서명 권한자 의존형 플랫폼 기밀 생성 기법
US7949137B2 (en) Virtual disk management methods
KR20050050530A (ko) 시스템 페이징 파일의 암호화
US20120144500A1 (en) Method and apparatus for protecting data using a virtual environment
US8972745B2 (en) Secure data handling in a computer system
US11829454B2 (en) Method and apparatus for preventing and investigating software piracy
US11068607B2 (en) Protecting cognitive code and client data in a public cloud via deployment of data and executables into a secure partition with persistent data
US10685106B2 (en) Protecting cognitive code and client data in a public cloud via deployment of data and executables into a stateless secure partition

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110705

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110707

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140715

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees