説明

情報処理装置

【課題】プロセッサが仮想化サポート機能を有するか否かにかかわらず、安全性を向上させる。
【解決手段】HV保護領域の全てのアクセス先にアクセス可能なハイパーバイザを記憶する保護メモリと、HV保護領域のうち全てのアクセス先より狭い範囲となるアクセス先にアクセス可能なソフトウェアと、ハイパーバイザと、を動作させるプロセッサと、保護メモリとプロセッサとを接続する通信路と、プロセッサが通信路を介して保護メモリのハイパーバイザが格納されたエントリ部のアドレスに対するフェッチを検出する検出部と、当該フェッチを検出の有無に応じてアクセス先を制御する第1及び第2HV領域保護回路と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、複数のソフトウェアが搭載されている情報処理装置に関するものである。
【背景技術】
【0002】
従来から、データベースシステムやミッションクリティカルな処理を実行するサーバマシンにおいては、その処理の重要性や内部で保持するデータの機密度などの要因から、信頼性やセキュリティが重要視されていた。しかし近年では、これら汎用計算機等に限らず、組込み機器等の様々な装置において信頼性やセキュリティを確保することが重要となっている。
【0003】
組込み機器では、一つの機器内で複数の機能を同時に実行したり、新しい機能をダウンロードして機能を追加するなど、機能の複雑化が進んでいる。このような複数の機能を実行可能な機器の開発または運用では、単機能の機器と比較すると、新たな問題が発生している。
【0004】
例えば、ある機能に不具合が含まれていた場合、それがごく一部の機能であったとしても機器全体が停止するという障害が発生するケースがある。また、ダウンロードして、機器に対して追加した機能が悪意のある不正なプログラムである場合、秘密を保持すべき情報、またはプログラムが外部に漏洩したり、破壊や改竄されるケースがある。このように、組み込み機器等においても信頼性及びセキュリティが問題となっている。
【0005】
上記の問題を解決するには、各機能を実現するプログラムに割り当てられたリソースへのアクセスを制御する必要がある。例えば、あるプログラムに割り当てたリソースへの他のプログラムや機能からのアクセスを禁止したり、複数の機能やプログラムから共有されるリソースへのアクセスを排他制御して管理する方法等が挙げられる。さらに、アクセス制御機構や制御情報自体も自由に操作できないように保護する必要がある。
【0006】
これらの保護を実現し、複数の機能を隔離して信頼性やセキュリティを高める手段として、計算機の仮想化技術が提案されている。この仮想化技術の実装には様々な形態が存在する。仮想化技術の例としては、ハードウェアとOS(Operating System)の間に仮想化層を設けて、当該仮想化層上に複数のOS(ゲストOS)を動作させる形態がある。この仮想化層は、一般にハイパーバイザ層と呼ばれている。このハイパーバイザ層は、メモリやデバイス及び割込み等のリソースを管理し、個々のゲストOSに対して割り当てたリソースで構成される仮想計算機を提供する。これにより複数のゲストOSが互いに干渉せず隔離された状態での実行が実現できる。このハイパーバイザ層の機能をソフトウェアで実現する場合、当該ソフトウェアはハイパーバイザと呼ばれている。
【0007】
汎用計算機に使用されるプロセッサでは、プロセッサ自体に仮想化をサポートするハードウェア機構が用意されている。例としては、非特許文献1に示したIntel(登録商標)社が提唱する技術が存在する。この技術を実装したプロセッサでは、実行中のプログラムの権限を示す特権モードを多数用意し、特定の命令の実行時に、より上位の特権モードへ移行するように設定することが可能となる。これにより、ゲストOSから共有リソースへのアクセスをハードウェアで監視し、アクセス時により上位の特権モードを付与したソフトウェアでそのアクセス内容をチェックすることが可能になる。
【0008】
他の例としては、Advanced Micro Devices社が提唱する技術(Pacifica)がある。当該技術(Pacifica)を実装したプロセッサでは、割込みをインターセプトする機構と、ソフトウェアから仮想割込みを発生させる機能とが用意されている。これにより、ハイパーバイザで割込みを一旦インターセプトした上で、その割込みを必要とするゲストOSへの割込み配送を管理することができる。また、ゲストOSによるアドレス変換テーブルへのアクセスを監視する機構が用意される。これにより、ゲストOSが自由にアドレス変換テーブルを書き換えて、他のゲストOSに割り当てられたメモリ領域をアクセスすることを防ぐことができる。
【0009】
【非特許文献1】“Intel(R) Virtualization Technology Specification for the IA-32 Intel(R) Architecture"、[online]、[平成17年5月31日検索]、インターネット<URL: ftp://download.intel.com/technology/computing/vptech/C97063-002.pdf>
【発明の開示】
【発明が解決しようとする課題】
【0010】
しかしながら、汎用計算機に使用されるような高機能なプロセッサと異なり、組込用に用いられる一般的なプロセッサには仮想化をサポートする機構が実装されていない。通常これらプロセッサでは、特権モードが少ないため、当該プロセッサで複数のゲストOSを実行した場合、各ゲストOSが最上位の特権モードで動作する。したがって、任意のゲストOSが、他のゲストOSに割り当てられたメモリ領域やデバイスを不正に参照・変更可能という問題がある。また、当該プロセッサでは、割込みの管理する割込みベクタテーブルを保護する機構がないため、ハイパーバイザが確実に割込みのインターセプトおよび配送を行えるという保証がないという問題がある。
【0011】
本発明は、上記に鑑みてなされたものであって、プロセッサが仮想化サポート機能を有するか否かにかかわらず、安全性を向上させる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0012】
上述した課題を解決し、目的を達成するために、本発明は、第1のアクセス範囲にアクセス可能な特権ソフトウェアを記憶する記憶部と、前記第1のアクセス範囲よりも狭い範囲である第2のアクセス範囲にアクセス可能なソフトウェアと、前記特権ソフトウェアと、を動作させるプロセッサと、前記記憶部と前記プロセッサとを接続し、前記特権ソフトウェアを前記プロセッサで実行するために必要なデータの通信を行う通信路と、前記プロセッサが前記通信路を介して行う、前記記憶部の前記特権ソフトウェアが格納された格納アドレスに対するフェッチを、検出する検出手段と、前記格納アドレスに対するフェッチの検出の有無に応じて、前記プロセッサのアクセス範囲を制御する制御手段と、を備えることを特徴とする。
【発明の効果】
【0013】
本発明によれば、プロセッサが仮想化サポート機能を有するか否かにかかわらず、安全性を向上させるという効果を奏する。
【発明を実施するための最良の形態】
【0014】
以下に添付図面を参照して、この発明にかかる情報処理装置の最良な実施の形態を詳細に説明する。また、後述する実施の形態においては、情報処理装置をシステムLSIに適用した例について説明する。なお、情報処理装置は、システムLSIに限らず、どのような装置に適用しても良い。
【0015】
(第1の実施の形態)
図1に示すように、システムLSI100は、メモリ150と、デバイス160とを接続している。また、システムLSI100は、プロセッサ101と、動作モード管理回路102と、メモリアクセス制御部103と、第1HV(Hyper Viser)領域保護回路104と、デバイスアクセス制御部105と、第2HV領域保護回路106と、保護メモリ107とを備える。
【0016】
また、本実施の形態にかかるシステムLSI100の内部では、第1〜第6通信路が配接されている。これら通信路は、プロセッサ101とメモリ/デバイス等の間でデータを伝える媒体である。少なくとも、アクセス先のアドレスと読み書きされるデータが通信路を介して伝送される。また、通信路はどのような形態でも良く、本実施の形態ではバスを用いることとする。このバスの例としては、アドレスのビット幅分のアドレスバス、データのビット幅分のデータバス、読み出し/書き込みを示す信号線から構成されることが考えられる。また、別の実施例としては、シリアルバスのように、アドレスやデータ等の区別なく少数の信号線で構成して、その信号線上に所定のプロトコルでプロセッサからのアクセス要求とメモリからの応答とを伝送してもよい。
【0017】
本実施の形態にかかるシステムLSI100では、プロセッサ101上で特権ソフトウェアが動作している場合に、当該システムLSI100が管理している最上位の動作モードで動作するように設定を行っている。そして、当該最上位の動作モードに限りHV保護領域に対する所定のアクセスを許可している。
【0018】
また、特権ソフトウェアとは、システムLSI100で動作するソフトウェアのうち真に信頼できるソフトウェアをいう。特権ソフトウェアの信頼性を保証する機構は、どのような手法で実現しても良い。本実施の形態では、読み込み及び書き込みが制限されている保護メモリ107に格納することで信頼性を保証している。また、本実施の形態は、特権ソフトとしてハイパーバイザを用いた例とする。当該ハイパーバイザでは、後述するHV保護領域に含まれるアクセス先全てがアクセス(可能な)範囲となる。そして、当該ハイパーバイザのソースコードを「HVコード」と呼ぶ。また、上記の最上位の動作モードを、「HVモード」と呼ぶ。
【0019】
次に、従来から存在する組み込み機器において、単にハイパーバイザが動作している時に最上位の動作モードとなるように設計をしたために、ハイパーバイザ以外のソフトウェアが最上位の動作モードで実行されてしまう例について説明する。図2において、左側のソースコードが不正な処理を行うソフトウェアコードであり、右側のソースコードがハイパーバイザのソースコード(以下、HVコードという)である。まず、不正な処理を行うソフトウェアでは、“enable interrupt”により割込み許可に設定する。その後、不正な処理を行うソフトウェアの実行時に、HVコードのエントリ部にジャンプする。これと同時に、動作モードが最上位の動作モードに変更される。
【0020】
そして、HVコードの実行中に、プロセッサが割込み許可である場合、他のソフトウェアにより割込みが発生すると最上位の動作モードが設定されたまま、割込み処理ルーチンにジャンプする。仮に、汎用計算機に使用されるプロセッサのように割込みベクタテーブルや割込み処理ルーチンを完全に保護できる場合には、このような割込み処理ルーチンへのジャンプが行われても、再びHVコードに戻るように記述しておけば問題ない。しかしながら、組込み向け機器に用いられるプロセッサでは、割込みベクタテーブルや割込み処理ルーチンを完全にハイパーバイザの保護下に置くことができない。このため、割込み発生時に任意のコードを実行されてしまう可能性がある。
【0021】
上記のような不正に対処する手段として、HVコードの実行中のみ最上位の動作モードになるようにすればよい。具体的にはハイパーバイザが格納された記憶領域から、命令をフェッチする場合に、最上位の動作モードで動作するという仕組みで、動作モードを遷移させることも考えられる。しかしながら、任意のソフトウェアから、ハイパーバイザの途中にジャンプした場合、最上位の動作モードに遷移するにもかかわらず、ハイパーバイザコードが正しく動作することが保証できない。また、割込み発生した場合にHVコードの実行が中断されることに変わりはない。そこで、本実施の形態では、以下の構成及び処理を実現することで、このような問題を解消する。
【0022】
メモリ150は、第1メモリ領域154と、第2メモリ領域155と、第3メモリ領域156と、第2のゲストOS格納領域152と、第3のゲストOS格納領域153とを備えている。そして、第1メモリ領域154は、第1のゲストOS格納領域151を保持している。
【0023】
また、第1のゲストOS格納領域151には第1のゲストOSのソースが、第2のゲストOS格納領域152には第2のゲストOSのソースが、第3のゲストOS格納領域153には第3のゲストOSのソースが格納されている。また、第1メモリ領域154、第2メモリ領域155及び第3メモリ領域156は、メモリアクセス制御部103により読み込み及び書き込みが制限される記憶領域とする。また、ゲストOSを格納する領域は、第1のゲストOS格納領域151のように、読み込み及び書き込みが制限される記憶領域内に確保されていても良い。
【0024】
デバイス160は、システムLSI100に接続され、システムLSI100に含まれるプロセッサ101により制御が行われるデバイスとする。また、デバイス160は、後述するデバイスアクセス制御部105によりアクセスが制限される。また、デバイス160は、システムLSI100の内部に備えるものでも、システムLSI100の外部に備えるものでもよい。なお、システムLSI100に接続されるデバイスの数について特に制限を設けるものではない。
【0025】
また、デバイス160の例としては、メモリモジュール、ハードディスクドライブ等の大容量外部記憶装置、ネットワークインターフェース等の外部通信装置、キーボードやマウスなど利用者が入力に用いる入力装置、さらにはディスプレイ等の外部出力装置が考えられるが、これらに限るものではない。
【0026】
プロセッサ101は、第1のゲストOS等のOS及びハイパーバイザなどのソフトウェアに従って処理又は演算等を行う。また、本実施の形態にかかるプロセッサ101は、仮想化を支援する機能を内蔵されていないプロセッサとする。
【0027】
また、プロセッサ101は、メモリ(メモリ150及び保護メモリ107)から命令を順次読み出し、読み出した命令を実行する。また、プロセッサ101は、読み出した命令に応じて、各通信路に接続されたメモリやデバイスに対してデータの読み出し/書き込みを行う。
【0028】
ところで、一般的なプロセッサでは、より上位の特権モードに移行するときは、システムコール命令に代表される特定の命令の実行によって行われる。このシステムコール命令の実行後、特権モードへの移行とともに、例外が発生してOSのカーネルコードへジャンプし、割込み禁止状態として、安全性を確保している。しかしながら、本実施の形態にかかるプロセッサ101は、このような機構を備えているものではない。
【0029】
そこで、本実施の形態では、プロセッサ101自体が持つ動作モードよりも上位のアクセス権限を有する動作モードであるHVモードを導入している。このため、プロセッサ101の外部に配置されたハードウェアでHVモードに切り替えることになる。この場合、プロセッサ101上で動作するソフトウェアの指示によるHVコードへのジャンプや割込み禁止状態への移行等は、プロセッサ内部の動作のため、外部に配置されたハードウェアからは制御できない。
【0030】
そこで、本実施の形態にかかるシステムLSI100では、HVコードへのジャンプや割込み禁止状態への移行はプロセッサ101上で動作するソフトウェア(例えば第1のゲストOS等)に任せ、プロセッサ101の外部のハードウェアで、適切にHVコードへジャンプしているか及び適切に割込み禁止状態になっているかチェックする。次に、このようなチェックを行う動作モード管理回路102について説明する。
【0031】
動作モード管理回路102は、検出部121と、モード切替部122とを備え、プロセッサ101と第2HV領域保護回路106とを接続する第1通信路に流れるデータを監視して、必要に応じて動作モードの切替を行う。
【0032】
また、動作モード管理回路102は、動作モードとして少なくともHVモードと通常モードの2個の状態を保持する状態遷移回路とする。動作モード管理回路102は、第1通信路に流れる信号を監視して、所定の条件が満たされた場合にHVモード/通常モードの状態遷移を起こす。また、動作モード管理回路102は、HVモード/通常モードの状態に応じて、モード情報信号を第1HV領域保護回路104及び第2HV領域保護回路106に出力する。これにより、第1HV領域保護回路104及び第2HV領域保護回路106は、動作モードに応じたアクセス制御を行うことができる。なお、動作モード管理回路102の動作に関する詳細については後述する。
【0033】
また、HVモードに遷移できる条件について説明する。上述から動作モード管理回路102が動作モードをHVモードに切り替えるために必要な処理は、HVコードのエントリ部に実行を移す処理(つまり実行が移ったことを保証する必要がある)、及び割込み禁止にする処理(つまり割込み禁止状態であることを保証する必要がある)とする。そして動作モード管理回路102は、これら2つの処理の実行を保証した上で、動作モードをHVモードに設定する処理を行うことができる。つまり、これら3つの処理が不可分に行われることが必要となる。なお、処理が不可分に行われるとは、これらの処理の間に別の処理が行われることがないとことを意味する。また、当然ながら、HVコードは、ゲストOS等の他のソフトウェアから修正できないように保護される必要がある。
【0034】
動作モード管理回路102が、上述した条件を満たすように処理を行うことで、動作モードを管理する。これにより、動作モード管理回路102がHVモードに切り替えたときには、HVコードのみ実行されていることが保証される。そして、後述するHV保護領域においては、後述する第1HV領域保護回路104及び第2HV領域保護回路106が、当該動作モードに基づいて、メモリ150、保護メモリ107上のアドレス、又はデバイス160においてアクセス範囲を変更する処理を行う。なお、アクセス範囲とは、アクセスが許可されたアクセス先の範囲を示すものとする。
【0035】
これにより、HVコードの実行時のみハイパーバイザのみがHV保護領域に含まれる全てのアクセス先にアクセスを許可される。そして、通常モードの場合には、第1のゲストOS等はHV保護領域に含まれる全てのアクセス先(範囲)よりも狭い範囲のアクセス範囲に対してアクセスが許可される。
【0036】
このようにHVコードに実行を移す処理、及び割込み禁止にする処理は、プロセッサ101上で動作するソフトウェアで行い、動作モード管理回路102がこれらの処理の実行要求又は実行結果の検出を行う。この検出チェック方法として、本実施の形態にかかる動作モード管理回路102は、プロセッサ101と保護メモリ107とを接続する第1通信路で送受信されるアクセス要求の種類や、アドレス、データを監視する。
【0037】
検出部121は、プロセッサ101と第2HV領域保護回路106とを接続する第1通信路を介して、後述する保護メモリ107のHVコード格納領域112に格納されたHVコードの所定のアドレスに対する命令のフェッチ等の検出を行う。なお、詳細な処理については後述する。
【0038】
モード切替部122は、検出部121の検出結果に従って、動作モードの切替を行う。例えば、モード切替部122は、検出部121がHVコードのエントリ部を示すHVエントリに対する命令のフェッチを検出した場合、モード切替部122は、ハイパーバイザがプロセッサ101上で動作するとみなして、動作モードをHVモードに切り替える。
【0039】
また、検出部121がHVコードの脱出部を示すHV脱出部に対する命令のフェッチを検出した場合、モード切替部122は、第1のゲストOS等のソフトウェアがプロセッサ101上で動作するとみなして、動作モードを通常モードに切り替える。なお、詳細な切り替え条件等については後述する。
【0040】
本実施の形態では、システムLSI100内部において、プロセッサ101上で動作するソフトウェアに応じてアクセス先として範囲の変更等が行われる領域を、HV(ハイパーバイザ)保護領域とする。図1に示すようにHV保護領域には、メモリアクセス制御部103と、デバイスアクセス制御部105と、保護メモリ107と、第1HV(ハイパーバイザ)領域保護回路104と、第2HV領域保護回路106とを含むものとする。
【0041】
このHV保護領域に格納された構成(メモリ又は回路)は、プロセッサ101からのアクセス(読出し/書込み)に対して所定の制限が設けられている。これにより、HV保護領域に格納されたメモリやデバイスの制御情報、ゲストOSの管理情報等が、HVコードのみがアクセス又は書き込み可能となり、ゲストOS等による不正な処理から保護することができる。
【0042】
なお、本実施の形態では、HV保護領域に上述した構成を含むものとするが、このような構成に制限するものではない。変形例として、システムLSIのHV保護領域に、HV領域保護回路とメモリアクセス制御部のみ含むものでも良いし、HV領域保護回路とデバイスアクセス制御部のみ含むものでも良いし、HV領域保護回路と保護メモリのみ含むものでも良いし、これらの2つ以上の組み合わせでも良い。なお、他の組み合わせの詳細な例については後述する。
【0043】
保護メモリ107は、HVコード格納領域112を格納する。また、保護メモリ107は、通常モードの場合は書き込み禁止とする。
【0044】
HVコード格納領域112は、HVコードを格納している。図3に示すようにHVコードは、エントリ部301に“store SR to CheckAdr”を保持し、脱出部302に“return”を保持する。
【0045】
また、当該HVコード格納領域112に格納されたHVコードは、ゲストOS等のソフトウェアから修正されてはならない。本実施の形態では、第2HV領域保護回路106により保護されることとするが、他の実施例としてはプロセッサ101から書換え不可能なROM(read only memory)上にHVコード格納領域112を設けても良い。
【0046】
また、本実施の形態では、HVコード格納領域112が、HV保護領域内に備えた保護メモリ107内に設けられている。そして、HVコード格納領域112は、後述する第2HV領域保護回路106により、動作モードがHVモード以外の時には書込みが禁止されている。これにより、ゲストOSからHVコードに対する修正を抑止することができる。なお、本実施の形態では、HVコード格納領域112をHV保護領域内部に設けたが、HV保護領域内部に制限するものではなく、ゲストOSからの修正を抑止できるのであればどこに設けても良く、例えばメモリ150内に設けても良い(ただし、メモリ150内に設けた場合、動作モード管理回路102は通信路6に接続する必要がある)。
【0047】
さらに、第2HV領域保護回路106は、HVコード格納領域112に対する書込みを禁止するだけではなく、HVコードのエントリ部を除いたHVコード本体のアドレスへの操作を全て禁止するように制御を行ってもよい。第2HV領域保護回路106がこのように制御を行うことで、通常モードにおいてHVコード本体の読み出しを抑止することも可能となる。これにより、HVコードの処理内容をゲストOSから隠蔽することができ、安全性をいっそう向上させることもできる。
【0048】
次に、HVコード格納領域112に格納されたハイパーバイザと、第1のゲストOS格納領域151に格納された第1のゲストOSと、第2のゲストOS格納領域152に格納された第2のゲストOSと、第3のゲストOS格納領域153に格納された第3のゲストOSと、について説明する。図4に示すように、本実施の形態にかかるシステムLSI100では、ハードウェア上にソフトウェアの最下層としてハイパーバイザ404が配置されている。さらに、そのハイパーバイザ404の上に第1のゲストOS401と、第2のゲストOS402と、第3のゲストOS403とが配置された構成となっている。なお、図4では説明を容易にするために、ハードウェアの構成としてメモリ150内部の第1メモリ領域154と、第2メモリ領域155と、第3メモリ領域156と、HV保護領域111のメモリアクセス制御部103及びデバイスアクセス制御部105内に格納された制御情報とを示したが、これら以外の構成に対しても、同様の制御が行われるものとする。
【0049】
そして、ハイパーバイザ404は、これらゲストOS401〜403の切り替え機能を提供する。システムLSI100では、ゲストOSの切替え時に、ゲストOSからハイパーバイザに処理を戻してから、現在のゲストOSの状態の保存、及び次のゲストOSの状態の復帰を行う。
【0050】
また、ゲストOSからハイパーバイザに処理が移ったときに、動作モードがHVモードとなる。この時、ハイパーバイザは、メモリアクセス制御部103及びデバイスアクセス制御部105が制御を行うときに参照する制御情報を更新することができる。そこで、ハイパーバイザは、次のゲストOSに対して割り当てられたメモリ及びデバイスのみアクセスできるように制御情報を更新する。このように、HVモードで動作しているハイパーバイザは、HV保護領域に含まれる全てのハードウェア(アクセス先)にアクセスすることができる。
【0051】
そして、ハイパーバイザから次のゲストOSに処理が移った段階で、動作モードが通常モードになる。この通常モードでは、制御情報に対して更新を行うことができない。これにより、後述するメモリアクセス制御部103は、更新された制御情報に従って、第1のゲストOS401に対して第1メモリ領域154のみアクセスを許可し、第2メモリ領域155及び第3メモリ領域156に対してアクセスを禁止することができる。これにより、本実施の形態にかかるシステムLSI100では、不正なゲストOSが、他のゲストOSに割り当てられたメモリやデバイスにアクセスすることを抑止することができる。本実施の形態にかかるシステムLSI100のソフトウェア構成では、このように複数のゲストOSを互いに隔離して動作させることとする。
【0052】
図1に戻り、第2HV領域保護回路106は、保護メモリ107とプロセッサ101との間に配置され、保護メモリ107を保護するための処理を行う。本実施の形態では、プロセッサ101と第2HV領域保護回路106とを第1通信路で接続し、第2HV領域保護回路106と保護メモリ107とを第3通信路で接続する。そして、第2HV領域保護回路106は、動作モード管理回路102から動作モードを示すモード情報信号が入力される。
【0053】
第2HV領域保護回路106は、第2制御部132を備え、第1通信路を介してプロセッサ101からのアクセス要求を受け付ける。そして、第2HV領域保護回路106は、動作モード管理回路102から入力されたモード情報信号がHVモードを示す値の場合、受け付けたアクセス要求を保護メモリ107に、第3通信路を介して出力する。
【0054】
そして、第2制御部132は、動作モードがHVモードである旨の入力された場合に、保護メモリ107に対してアクセス要求を許可する制御を行う。また動作モードが通常モードである旨の入力がされた場合に、保護メモリ107に対してアクセス要求を禁止する制御を行う。
【0055】
これにより、第2HV領域保護回路106は、入力されたモード情報信号がHVモード以外を示す値の場合、受け付けたアクセス要求を保護メモリ107に出力することを抑止される。この保護メモリ107に対するアクセスに対する制限の例としては、保護メモリ107のアドレスの一部に対してアクセスを禁止する例や、書き込みのみ禁止する例等がある。また、これらの制限を組み合わせてもよい。このような制限は、保護メモリ107の一部のみ通常モード時のアクセスを制限する場合や、一部の操作を禁止する(書込みのみ禁止等)場合に有効である。
【0056】
また、第2HV領域保護回路106は、HVコードの隠蔽を行う場合には、HVコード格納領域112のうちHVコードのエントリ部に対応するアドレスのみ常に読み出し可能にしておく。そして、HVコードの本体に対応するアドレスは、HVモードの時のみ読み出し可能にする。また、HVコード実行時に動作モードをHVモードに変更する手順については後述する。このような処理を行うことで、安全性をさらに向上させることができる。
【0057】
また、本実施の形態では、保護メモリ107と第2HV領域保護回路106とが別構成となる例について説明したが、これらの機能を1つの構成としてシステムLSI100に配置しても良い。
【0058】
第1HV領域保護回路104は、第1制御部131を備え、第1通信路を介してプロセッサ101からのアクセス要求を受け付ける。そして、第1HV領域保護回路104は、メモリアクセス制御部103及びデバイスアクセス制御部105とを第2通信路で接続する。また、第1HV領域保護回路104は、動作モード管理回路102からモード情報信号が入力される。
【0059】
そして、メモリアクセス制御部103とメモリ150とを第4通信路で接続し、デバイス160とデバイスアクセス制御部105とを第5通信路で接続する。
【0060】
メモリアクセス制御部103は、メモリ150に対するアクセスを制御する。また、本実施の形態にかかるシステムLSI100では、プロセッサ101とメモリアクセス制御部103を接続する通信路として第6通信路を備え、プロセッサ101からメモリアクセス制御部103の制御情報にアクセスするための通信路として第1通信路及び第2通信路を用意した。これにより、メモリ150へのアクセス要求は、第6通信路を介して出力される。また、デバイスアクセス制御部105についても同様の通信路を備えることにした。
【0061】
また、メモリアクセス制御部103は、プロセッサ101から第1通信路及び第1HV領域保護回路104を介して、制御情報の所定のアドレスに対するアクセス(少なくとも書込み、あるいは書込み/読出しの両方)を受け付ける。本実施の形態にかかるメモリアクセス制御部103では、保護対象となるのはこの制御情報とする。
【0062】
メモリアクセス制御部103は、プロセッサ101から第6通信路を介して伝送されたメモリ150へのアクセス要求を、第4通信路を介してメモリ150に伝送する。このとき、メモリアクセス制御部103は、予め設定された制御情報に従い、メモリ150に伝送するアクセス要求に制限を加える。
【0063】
また、メモリアクセス制御部103に設定される制御情報には様々な形態で実現できる。例えば、<開始アドレス,終了アドレス>の組を複数設定する。メモリへのアクセス要求のアドレスが、それらの組が表すアドレスの範囲内であれば、第4通信路へアクセス要求を伝える。そして、このようなアドレスの組をHVモードの場合に限り、編集することを可能とする。
【0064】
メモリアクセス制御部103は、第1HV領域保護回路104にHVモードを示すモード情報信号が入力されている場合に、制御情報の書込み/読出しに割り当てられたアドレスに対するアクセスを受け付ける。そして、メモリアクセス制御部103は、第1HV領域保護回路104にHVモード以外のモードを示すモード情報信号が入力されている場合に、制御情報の書込み/読出しに割り当てられたアドレスに対するアクセスを受け付けない。
【0065】
また、本実施の形態では、プロセッサ101とメモリアクセス制御部103を接続する経路として、第6通信路と、プロセッサ101から第1通信路、第1HV領域保護回路104及び第2通信路を経由する通信路との2つの経路を備えている。しかしながら、本実施の形態は、このような複数の経路を備えているものに制限するものではなく、例えばプロセッサ101から第1通信路、第1HV領域保護回路104及び第2通信路を経由する通信路のみとしてもよい。
【0066】
メモリアクセス制御部103は、このようにHVモードに限り制御情報の書き込み/読み出しが行われることで、ゲストOSを動作を切り替える際に、ハイパーバイザが当該にメモリアクセス制御部103の制御情報を切り替え先のゲストOSに適した設定を行うことで、次に動作するゲストOSのデータのみアクセス可能にすることができる。
【0067】
そして、第1制御部131は、動作モードがHVモードである旨の入力された場合に、メモリアクセス制御部103及びデバイスアクセス制御部105が有する制御情報に対するアクセスを許可する制御を行う。また動作モードが通常モードである旨の入力がされた場合に、メモリアクセス制御部103及びデバイスアクセス制御部105が有する制御情報に対するアクセスを禁止する制御を行う。
【0068】
そして、通信路をこのような構成としたことで、第1HV領域保護回路104は、メモリアクセス制御部103及びデバイスアクセス制御部105の制御情報の書込み/読出し以外のアクセス要求に対する処理を行わなくてよい。
【0069】
また、第1HV領域保護回路104は、プロセッサ101からメモリアクセス制御部103の制御情報の書込み/読出しに割り当てられたアドレスへのアクセス要求を受け付けた時、動作モード管理回路102から入力されるモード情報信号がHVモードを表す値の場合、当該アクセス要求を、第2通信路を介してメモリアクセス制御部103に出力する。また、第1HV領域保護回路104は、動作モード管理回路102から入力されるモード情報信号がHVモード以外を表す値の場合、当該アクセス要求を、メモリアクセス制御部103に出力するのを抑止する。
【0070】
なお、本実施の形態では、メモリアクセス制御部103の制御情報に対するアクセス要求を第1通信路及び第2通信路を介してデータの送受信を行い、制御情報以外のメモリアクセス制御部103に対するアクセス要求を第6通信路を介してデータの送受信を行うこととした。しかしながら、本実施の形態とは異なるが、これら別々となっている通信路を、第1HV領域保護回路104を介した1つの通信路で構成しても良い。この場合、メモリ150に対するアクセス要求も第1HV領域保護回路104を介してアクセス要求が行われることになる。また、第1HV領域保護回路104は、メモリアクセス制御部103の制御情報に対する書き込み/読み込みは上述したような制御を行うが、これら以外のアクセス要求(例えば、メモリ150に対するアクセス要求)については全てメモリアクセス制御部103に出力する。
【0071】
デバイスアクセス制御部105は、デバイス160に対するアクセスを制御する。また、デバイスアクセス制御部105は、上記のメモリアクセス制御部103と同様に第1HV領域保護回路104を介して、デバイスアクセス制御部105が有する制御情報に対するアクセス要求を受け付ける。なお、デバイスアクセス制御部105で行われる処理は、メモリアクセス制御部103と同様なので説明を省略する。
【0072】
また、デバイスアクセス制御部105に設定される制御情報には様々な形態で実現できる。例えば、<開始アドレス,終了アドレス>の組を複数設定する。デバイスへのアクセス要求のアドレスが、それらの組が表すアドレスの範囲内であれば、第5通信路へアクセス要求を伝える。そして、このようなアドレスの組をHVモードの場合に限り、編集することを可能とする。
【0073】
また制御情報の別の形態としては、複数のデバイスを接続されている場合、各デバイスに対応する<開始アドレス,終了アドレス>の組をあらかじめ設定しておき、さらに、当該アドレスに対してアクセスを許可するか否かを1ビットのビットマスクとして設定してもよい。この形態では、デバイスへのアクセス要求のアドレスが、ビットマスクが‘1’に対応するデバイスに割り当てられたアドレスの範囲内であれば、アクセス要求を出力する。
【0074】
本実施の形態では、例えばゲストOSを切り替える際に、ハイパーバイザがデバイスアクセス制御部105の制御情報の書き換えを行うことで、動作するゲストOSに割り当てられたデバイスにのみアクセスを許可することが可能となる。
【0075】
次に動作モード管理回路102の処理について説明する。動作モード管理回路102が行う動作は、大きく分けると以下の2つの動作になる。
【0076】
まず第1の動作として、動作モード管理回路102は、動作モードが通常モードの時、HVモードエントリのチェックを行い、所定の条件が満たされた時点で動作モードをHVモードに遷移させる。第2の動作として、動作モード管理回路102は、動作モードがHVモードの時、HVモード脱出のチェックを行い、所定の条件が満たされた時点で動作モードを通常モードへ遷移させる。
【0077】
図5に示すように、まず、動作モード管理回路102は、システムLSI100全体の起動時に初期化を行う(ステップS511)。ここでは動作モードを通常モードにする。
【0078】
その後、動作モード管理回路102の検出部121が、第1通信路を監視してHVモードエントリの検出を行う(ステップS512)。ここでは、検出部121が、第1通信路を監視して、所定の条件が満たされるまでチェックを行う。なお、詳細な処理手順については後述する。
【0079】
次に、モード切替部122が、動作モードをHVモードに切り替える処理を行う(ステップS513)。そして、動作モード管理回路102は、動作モードがHVモードであることを示すモード情報信号を、第1HV領域保護回路104及び第2HV領域保護回路106に対して出力する(ステップS514)。なお、本フローチャートでは説明を容易にするため、このタイミングでモード情報信号を出力しているが、実際には、動作モード管理回路102は、動作モード管理回路102は所定間隔毎に常にモード情報信号を出力している。なお、動作モード管理回路102が、モード情報信号を常に信号線に出力していてもよい。いずれにしても、動作モード管理回路102が、モード変更のタイミングを第1HV領域保護回路104及び第2HV領域保護回路106に伝えることが可能である。以上までが、上記第1の動作となる。
【0080】
そして、第1HV領域保護回路104は、動作モード管理回路102からモード情報信号の入力を受け付け、動作モードがHVモードに変更されたことを認識する(ステップS501)。これにより、第1制御部131は、メモリアクセス制御部103及びデバイスアクセス制御部105が有する制御情報に対するアクセスを許可する制御を行う(ステップS502)。
【0081】
同様に、第2HV領域保護回路106は、動作モード管理回路102からモード情報信号の入力を受け付けた場合、動作モードがHVモードに変更されたことを認識する(ステップS521)。これにより、第2制御部132は、保護メモリ107に対するアクセスを許可する制御を行う(ステップS522)。
【0082】
その後、動作モード管理回路102の検出部121が、第1通信路を監視してHVモード脱出の検出を行う(ステップS515)。ここでは、検出部121が、第1通信路を監視して、所定の条件が満たされるまでチェックを行う。なお、詳細な処理手順については後述する。
【0083】
次に、モード切替部122が、動作モードを通常モードに切り替える処理を行う(ステップS516)。そして、動作モード管理回路102は、動作モードが通常モードであることを示すモード情報信号を、第1HV領域保護回路104及び第2HV領域保護回路106に対して出力する(ステップS517)。以上までが、上記第2の動作となる。
【0084】
そして、第1HV領域保護回路104は、動作モード管理回路102からモード情報信号の入力を受け付けた場合、動作モードが通常モードに変更されたことを認識する(ステップS503)。これにより、第1制御部131は、メモリアクセス制御部103及びデバイスアクセス制御部105が有する制御情報に対するアクセスを禁止する制御を行う(ステップS504)。
【0085】
同様に、第2HV領域保護回路106は、動作モード管理回路102からモード情報信号の入力を受け付けた場合、動作モードが通常モードに変更されたことを認識する(ステップS523)。これにより、第2制御部132は、保護メモリ107に対するアクセスを禁止する制御を行う(ステップS524)。
【0086】
本実施の形態では、上述した処理を行うことで、動作モードに従って、HV保護領域に格納された構成を適切に保護することができる。
【0087】
次に、図5のステップS512で示したHVモードエントリの検出手順について説明する。HVモードエントリチェックは、HVコードのエントリ部との組合せに応じて複数の形態が存在する。本実施の形態では複数存在する形態のうち一形態について説明する。なお、他の形態の例については、後述する実施形態で説明する。
【0088】
本実施の形態にかかるHVモードエントリのチェックの手法は、HVコードのエントリ部で割込み禁止であることをチェックする手法とする。その前にHVコードについて詳細に説明する。
【0089】
まず、図3に示すように、HVコードが格納されている先頭アドレス(HVEntry)には、プロセッサ101の状態を所定のアドレスに書き込むストア命令が存在する。本実施の形態では、この命令がHVコードのエントリ部となる。そして、この命令はプロセッサ101が提供する機械語の1命令に相当する。
【0090】
そして、この命令に含まれる‘SR’は、プロセッサ101の状態を表す値が格納されているレジスタ(ステータスレジスタ)を示す。この‘SR’の値には、プロセッサ101が現在割込み禁止状態かどうかを示す情報が含まれている。
【0091】
この命令に含まれる‘CheckAdr’は‘SR’の値を書き込むアドレスとする。‘CheckAdr’は、プロセッサ101が制御するメモリやデバイスのアドレスとは異なる、実際には存在しないアドレスを選択することが望ましい。この場合、プロセッサ101が通信路に対してアクセス要求を伝送するが、当該通信路を介して接続されるメモリやデバイスは、伝送されたアクセス要求に応答して実際に読み書きを行うことがない。
【0092】
また、‘CheckAdr’に実際に存在するアドレスを選択する場合、ハイパーバイザ及びゲストOSを含む全てのプログラムが使用しないアドレスを選択する必要がある。仮に‘CheckAdr’で示されたアドレスにデバイスが存在する場合、当該命令によってデータ書き込み処理が行われることになる。この結果、デバイスの誤動作を引き起こす可能性がある。このため、実際に使用されているアドレスを選択しないように留意する必要がある。
【0093】
そして、HVコードのエントリ部が実行される時、プロセッサ101から第1通信路に以下の順序で信号が伝送される。
【0094】
まず、第1の処理として、プロセッサ101から、HVコード格納領域112内のアドレス‘HVEntry’に対して命令フェッチの要求を伝送する。そして、第2の処理として、当該要求に従い、HVコード格納領域112からプロセッサ101に対してデータ(HVEntryにある命令)を伝送する。
【0095】
さらに、第3の処理として、プロセッサ101が、アドレス‘CheckAdr’に対してデータ(プロセッサ状態を表す値)の書込みの要求を伝送する。
【0096】
そして、本実施の形態にかかる動作モード管理回路102では、第1の処理を確認することで、HVコードのエントリ部に実行を移したことを保証する。さらに第3の処理を確認することでプロセッサ101が割込み禁止状態であることを保証する。ただし、第3の処理においては、データ(プロセッサ状態を表す値)が、書き込み禁止状態であることを示している必要がある。これらが保証されたことで、動作モード管理回路102が動作モードをHVモードに遷移させる条件が満たされたことになる。
【0097】
図6に示すように、まず、検出部121は、第1通信路を監視して、プロセッサ101から伝送されてくる命令フェッチの要求を検出する(ステップS601)。
【0098】
次に、検出部121は、命令フェッチの要求を検出した場合、当該命令フェッチの要求で指定されたアドレスが‘HVEntry’と一致するか否か判断する(ステップS602)。そして、検出部121が、異なると判断した場合(ステップS602:No)、再び命令フェッチの検出を行う(ステップS601)。
【0099】
そして、検出部121は、アドレスが‘HVEntry’と一致すると判断した場合(ステップS602:Yes)、第1通信路を監視して、保護メモリ107から伝送されるデータ書き込みの要求を検出する(ステップS603)。
【0100】
次に、検出部121がデータ書込みの要求を検出した場合、当該データ書き込み要求で指定されたアドレスが‘CheckAdr’と一致するか否か判断する(ステップS604)。そして、検出部121が、異なると判断した場合(ステップS604:No)、再び命令フェッチの検出を行う(ステップS601)。
【0101】
そして、検出部121は、アドレスが‘CheckAdr’と一致すると判断した場合(ステップS604:Yes)、書込み要求で指定されたデータと割込み禁止を表す‘SR’の値が一致するか否か判断する(ステップS605)。そして、検出部121が、異なると判断した場合(ステップS605:No)、再び命令フェッチの検出を行う(ステップS601)。
【0102】
次に、検出部121は、書込みデータと割込み禁止を表す‘SR’の値が一致すると判断した場合(ステップS605:Yes)、HVモードエントリチェックが完了したものとする。そして、図5に示したステップS513以降の処理が行われることになる。
【0103】
なお、‘SR’が割込み禁止/許可のみを表す場合には、単純に書込みデータ全体を比較すれば良い。しかし、一般にはプロセッサ状態を表すレジスタは、割込み状態、アドレス変換モード、特権モードなどの異なる種類の状態をビット単位で表す場合が多い。このような場合、割込み状態に対応するビットのみを比較すれば良い。
【0104】
次に、図5のステップS515で示したHVモード脱出の検出手順について説明する。HVモード脱出のチェックは、上記のHVモードエントリチェックに対応するHVモード脱出の一例について説明する。後述する例は、HVモード脱出のチェックの第一の形態として、HVモードで動作すべき処理が終了したことが保証される命令(以降、HVモード脱出命令と呼ぶ)が実行されたことが保証されたときに動作モードを通常モードに遷移させる例である。
【0105】
HVモードで動作すべき処理が終了したことが保証される命令はHVコードに依存する。このため、当該命令は、HVコードに応じて様々な形態が存在する。例えば、図3で示したHVコードでは、符号302で示されるHVコードの最後の命令‘return’が呼び出された場合、HVコードによる処理が終了する。そこで、プロセッサ101が最後の命令302を呼び出して、実行されるソフトウェアをゲストOSに切り替える場合、これ以降の処理はHVモードで動作させる必要がない。そこで、図3に示すHVコードでは、当該最後の命令302を、HVモード脱出命令として用いる。なお、本実施の形態は、HVモード脱出命令をHVコードの最後の命令に制限するものではない。つまり、HVモードで動作すべき処理が終了したことが保証される命令であれば、HVコードの最後の命令より前の命令でも良い。
【0106】
そして、図3に示すHVモード脱出命令(最後の命令302)が実行される時、まず第1にプロセッサ101は、保護メモリ107のHVモード脱出命令が格納されているアドレス(以下、“HVExit”とする)に対して、命令フェッチの要求を伝送する。次に、保護メモリ107からHVコード格納領域112に格納されたデータ(“HVExit”に格納されている命令)をプロセッサ101に対して伝送する。
【0107】
そして、本実施の形態では、動作モード管理回路102は、HVモード脱出命令が格納されているアドレスに対するフェッチを検出した場合に、HVモードで動作すべき処理が終了したことを保証されたと判断し、動作モードを通常モードに切り替える。
【0108】
図7に示すように、まず、検出部121は、第1通信路を監視して、プロセッサ101から伝送されてくる命令フェッチの要求を検出する(ステップS701)。
【0109】
次に、検出部121は、命令フェッチの要求を検出した場合、当該命令フェッチの要求で指定されたアドレスが‘HVExit’と一致するか否か判断する(ステップS702)。そして、検出部121が、異なると判断した場合(ステップS702:No)、再び命令フェッチの検出を行う(ステップS701)。
【0110】
次に、検出部121は、当該命令フェッチの要求で指定されたアドレスが‘HVExit’と一致すると判断した場合(ステップS702:Yes)、HVモード脱出チェックが完了したものとする。そして、図5に示したステップS516以降の処理が行われることになる。
【0111】
なお、HV保護領域の制限手法として、本実施の形態以外の制限手法を用いても良い。例えば、HVモード以外の動作モードの場合は、HV保護領域に格納された全てのメモリ及びデバイスの全てのアドレスに対して、全ての操作(読出し/書込み)を禁止してもよい。他の例としては、HV保護領域に格納されたうちアドレスの一部に対してのみアクセスや書き込みを禁止しても良い。また、これらの制限を組み合わせても良い。
【0112】
なお、通信路を流れるデータにおいて、命令フェッチとデータ読出しを区別する信号が存在しない場合、通信路と別経路でプロセッサ101が出力する命令フェッチを示す信号を動作モード管理回路に入力する必要がある。これにより、命令フェッチとデータ読み出しを区別することができる。
【0113】
本実施の形態にかかるシステムLSI100を用いることで、プロセッサの仮想化サポート機能に依存することなく、HVコードの実行時にのみアクセス可能となる保護領域を確保することができる。この保護領域にメモリやデバイスのアクセス制御情報、ゲストOSの管理情報、HVコード本体といった情報を格納することにより、ゲストOSから不正にこれらの情報を読出し/書込みすることを抑止することができる。このように、確実にゲストOS間の隔離を実現することで、安全性を向上させることができる。
【0114】
また、上述した第1実施の形態に限定されるものではなく、以下に例示するような種々の変形が可能である。
【0115】
(第1の実施の形態の変形例1)
上述した第1の実施の形態では、動作モード管理回路102が管理する動作モードが、HVモードと通常モードの2種類の場合について説明した。しかしながら、動作モードを2種類に制限するものではない。そこで、第1の実施の形態の変形例1では、動作モードが3種類の場合について説明する。
【0116】
本変形例は、第1の実施の形態と同様のHVモードエントリチェックを適用するので、プロセッサ101から伝送された命令フェッチ検出してから、データ書込みの命令を検出するまでの間、待機する処理が必要となる。
【0117】
そこで、これらを考慮して動作モード管理回路を状態遷移回路として実装する場合、命令フェッチ(HVEntry)の検出を監視している状態を通常モード1と設定し、データ書き込みを待機している状態を通常モード2と設定し、命令フェッチ(HVモード脱出命令)を待機している状態をHVモードと設定する。
【0118】
このように、動作モード管理回路が3種類の状態を有する状態遷移回路として実装された場合、当該動作モード管理部が出力するモード情報信号では、通常モード1と通常モード2の時に‘0’を出力し、HVモードの時には‘1’を出力し、HVモード以外のモードについては同一の信号を出力することが望ましい。なお、他の処理については、第1の実施の形態と同様として説明を省略する。
【0119】
(第1の実施の形態の変形例2)
第1の実施の形態では、HV保護領域に、第1HV領域保護回路104、メモリアクセス制御部103、デバイスアクセス制御部105、第2HV領域保護回路106及び保護メモリ107を含む例について説明した。しかしながら、HV保護領域に含まれる構成をこれらに制限するものではない。そこで、第1の実施の形態の変形例2では、HV保護領域にさらに保護デバイス1301を含む例とする。
【0120】
図8に示したシステムLSI1300は、上述した第1の実施の形態に係るシステムLSI100とは、第2HV領域保護回路106と処理が異なる第2HV領域保護回路1302を備え、保護デバイス1301を追加された点のみ異なる。
【0121】
保護デバイス1301は、保護メモリ107と同様に、第2HV領域保護回路1302
を介してプロセッサ101からの要求を受け付ける。
【0122】
本変形例は、プロセッサ101と第2HV領域保護回路1302を第1通信路で接続し、第2HV領域保護回路1302と保護デバイス1301を第3通信路で接続する。そして、第2HV領域保護回路1302は、動作モード管理回路102からのモード情報信号が入力される。
【0123】
第2HV領域保護回路1302は、第2制御部1311を備え、第1の実施の形態の第2HV領域保護回路106とは、保護メモリ107のみならず保護デバイス1301のアクセスも制御する点とする。なお、第2HV領域保護回路1302は、それ以外の処理については第2HV領域保護回路106と同様なので説明を省略する。
【0124】
また、第2制御部1311は、動作モードがHVモードである旨の入力された場合に、保護メモリ107及び保護デバイス1301に対してアクセス要求を許可する制御を行う。
【0125】
そして、第2HV領域保護回路1302では、動作モードがHVモード以外のモードの場合、アクセス要求に対して各HV保護領域固有の制限を加えられている。このため、第2HV領域保護回路1302は、当該制限で禁止されるアクセス要求を、保護デバイス1301に出力することを抑止する。
【0126】
本変形例は、ゲストOSからは直接操作してはならないデバイスを保護する際に有効である。例えば、インターバルタイマや割込みコントローラ等は、一般に複数のゲストOSから制御するため、ゲストOSから直接それらのデバイスにアクセスしてはならない。そして、これらデバイスに対して制御を行う場合、ハイパーバイザが一旦それらの制御要求を受け付けて、不具合が生じない手順でこれらデバイスを制御する。このような手順で処理を行うことで安全性が向上する。
【0127】
(第2の実施の形態)
第1の実施の形態にかかるシステムLSI100では、HV保護領域内の保護メモリ107にHVコード格納領域を設けられた。しかしながら、HVコード格納領域をHV保護領域内に設けることに制限するものではなく、例えばシステムLSIに接続されたメモリ内に設けることにしても良い。そこで、第2の実施の形態では、システムLSIに接続されたメモリ内にHVコード格納領域を設けた例について説明する。また、HVモードエントリ及びHVモード脱出の別形態についても併せて説明する。
【0128】
図9に示すように、システムLSI1400は、上述した第1の実施の形態に係るシステムLSI100とは、第2HV領域保護回路106及び保護メモリ107が削除され、メモリ150とは格納された情報が異なるメモリ1450を備え、動作モード管理回路102とは処理が異なる動作モード管理回路1401を備えている点のみ異なる。なお、本実施の形態のシステムLSI1400の構成で、第1の実施の形態のシステムLSI100と共通な構成については、同一の符号を付して説明を省略する。
【0129】
メモリ1450は、メモリ150にさらにHVコード格納領域1451が追加されたものとする。また、メモリアクセス制御部103の制御により、動作モードが通常モードの場合、当該HVコード格納領域1451への書き込みも禁止される。また、HVコード格納領域1451の書込み禁止を指定する制御情報の設定は、HVコード自身が行う。
【0130】
HVコード格納領域1451は、HVコードを格納している。図10に示すようにHVコードは、エントリ部901に“disable interrupt”を保持し、脱出部902に“return”を保持する。
【0131】
図11に示すように、HVコード格納領域1001は、アドレス0100〜0600の間に格納されている。なお、図11上に示されていないが、第1のゲストOS格納領域151等についても同様にメモリ1450上に配置されている。これにより、アドレス0100〜0600以外のアドレスに対するフェッチの要求を受け付けた場合に、HVコードを脱出して、第1のゲストOS等に処理が切り替わったと判断することができる。
【0132】
動作モード管理回路1401は、検出部1411と、モード切替部122とを備え、プロセッサ101とメモリアクセス制御部103とを接続する第6通信路に流れるデータを監視して、必要に応じて動作モードの切替を行う。
【0133】
なお、検出部1411は、プロセッサ101とメモリアクセス制御部103とを接続する第6通信路を介して、メモリ1450のHVコード格納領域1451に格納されたHVコードの所定のアドレスに対する命令のフェッチ等の検出を行う。なお、詳細な処理については後述する。
【0134】
また、本実施の形態にかかるシステムLSI1400は、第1の実施の形態のシステムLSI100と同様に図5で示した処理手順に従って、動作モードの遷移に応じた制御情報の設定を行う。ただし、検出部1411が行うステップS512のHVモードエントリの検出と、ステップS515のHVモード脱出の検出のみ処理が異なる。そこで以下に、本実施の形態にかかる検出部1411が行う検出処理手順について説明する。
【0135】
次に、検出部1411が、図5のステップS512で行うHVモードエントリの検出について説明する。本実施の形態では、HVコードのエントリ部で割込み禁止状態に設定する場合の例とする。つまり、図10に示すHVコードでは、HVコードが格納されている先頭アドレス(HVEntry)に、割込みを禁止する命令(disable interrupt)が記載されている。この命令がHVコードのエントリ部である。この命令はプロセッサが提供する機械語の1命令に相当する。
【0136】
HVコードのエントリ部が実行される時に、まず、プロセッサ101は、第6通信路を介して、メモリ1450のHVコード格納領域1451のアドレス‘HVEntry’に対して命令フェッチの要求を伝送する。そして、当該命令フェッチの要求を受け付けたメモリ1450は、HVコード格納領域1451からデータ(‘HVEntry’にある命令)を伝送する。
【0137】
そして、本実施の形態にかかる動作モード管理回路1401は、‘HVEntry’に対する命令フェッチの要求を、第6通信路で確認した場合に、HVコードのエントリ部に実行を移したことを保証すると共に、同時に割込み禁止状態であることを保証する。この割り込み禁止状態であるのを保証できるのは、上述したように先頭アドレスには割り込みを禁止する命令が含まれているためである。これにより、動作モード管理回路1401は、動作モードをHVモードに遷移する条件を満たしたと判断できる。
【0138】
図12に示すように、まず、検出部1411は、第6通信路を監視して、プロセッサ101から伝送されてくる命令フェッチの要求を検出する(ステップS1101)。
【0139】
次に、検出部1411は、命令フェッチの要求を検出した場合、当該命令フェッチの要求で指定されたアドレスが‘HVEntry’と一致するか否か判断する(ステップS1102)。そして、検出部1411が、異なると判断した場合(ステップS1102:No)、再び命令フェッチの検出を行う(ステップS1101)。
【0140】
そして、検出部1411は、アドレスが‘HVEntry’と一致すると判断した場合(ステップS1102:Yes)、HVモードエントリチェックが完了したものとする。そして、図5に示したステップS513以降の処理が行われることになる。
【0141】
次に、検出部1411が、ステップS515のHVモード脱出の検出について説明する。本実施の形態では、検出部1411は、HVコード以外の命令のフェッチを検出した場合に、HVモード脱出したと判断する。
【0142】
図13に示すように、まず、検出部1411は、第6通信路を監視して、プロセッサ101からの命令フェッチの要求の検出を行う(ステップS1201)。
【0143】
次に検出部1411は、プロセッサ101からの命令フェッチの要求を検出した場合に、要求で指定されたアドレスが、HVコードが格納されているアドレスの範囲外か否かを判断する(ステップS1202)。つまり、図11で示した例では、HVコード格納領域であるアドレス0100〜アドレス0600の範囲内に含まれているか否か判断する。検出部1411が、当該範囲内に含まれていると判断した場合(ステップS1202:No)、再びプロセッサ101からの命令フェッチの要求を検出する(ステップS1201)。
【0144】
また、検出部1411は、命令フェッチの要求で指定されたアドレスが、当該範囲外だと判断した場合(ステップS1202:Yes)、HVモード脱出チェックが完了したと判断する。そして、図5のステップS516以降の処理が行われることになる。
【0145】
本実施の形態で示したHVモード脱出の検出処理手順では、HVコード自体に不具合があった場合や、将来的にHVコードのセキュリティホールが見つかった場合でも、HVコードの途中からゲストOSにジャンプされ、HVモードのままゲストOSが実行されることを防ぐことが可能となる。
【0146】
なお、本形態において命令アドレスの比較回路を簡潔にするために、図11に示すように、HVコードがメモリ1450内のHVコード格納領域1451で連続したアドレス上に存在することが望ましい。これは、HVコードとHVコード以外のプログラムが、メモリ1450のアドレス上で交互に存在する場合、比較すべきアドレス範囲が複数になり、比較回路が複雑になるためである。
【0147】
また、上述したHV脱出の検出手法は、プログラム等が格納されたメモリとプロセッサとを接続した通信路が一経路で、プロセッサ101からメモリに対するアクセスを全て監視できる場合のみとする。仮に、プロセッサ101に接続された通信路が複数あり、ゲストOSのコードを格納したメモリとHVコード格納領域が格納されたメモリとが別の通信路に接続されている場合(例えば第1の実施の形態)、ゲストOSのコードの命令をフェッチする要求を、動作モード管理回路で監視できないため、HVモードのままゲストOSが実行されてしまうことになる。したがって、このような通信路の構成をとる場合、上述したHV脱出の検出手法を適用できない。
【0148】
なお、本実施の形態で示したシステムLSI1400の構成で、第1の実施の形態で示した検出手法を用いて、動作モードの切り替えを行ってもよい。これに対し、第1の実施の形態では、第1経路を介して接続されている保護メモリ107に格納されたHVコード格納領域が配置され、第6通信路を介して接続されているメモリ150にゲストOS等が配置されているため、当該メモリへのアクセス要求を動作モード管理回路102が検出できない。このため、第1の実施の形態で示した構成では、第2の実施形態で示したHVコード脱出の検出手法を用いて、動作モードを切り替えることはできない。
【0149】
また、上述した各実施の形態に限定されるものではなく、以下に例示するような種々の変形が可能である。
【0150】
変形例1では、HVコード格納領域を有する保護メモリとプロセッサ101とが直接第1通信路で接続された例とする。
【0151】
図14に示すように、システムLSI1500は、上述した第1の実施の形態に係るシステムLSI100とは、第1HV領域保護回路104、第2HV領域保護回路106が削除され、動作モード管理回路102とは処理が異なる動作モード管理回路1502を備え、保護メモリ107と配置が異なる保護メモリ1501を備え、メモリアクセス制御部103と処理が異なるメモリアクセス制御部1505を備え、デバイスアクセス制御部105と処理が異なるデバイスアクセス制御部1504を備え、さらにメモリ1503が追加されている点のみ異なる。なお、本実施の形態のシステムLSI1500の構成で、第1の実施の形態のシステムLSI100と共通な構成については、同一の符号を付して説明を省略する。
【0152】
保護メモリ1501は、HV保護領域内に格納されておらず、プロセッサ101から自由に参照可能なメモリとする。なお、保護メモリ1501は、プロセッサ101からの書込みが不可能なROM(Read Only Memory)とする。これにより、ゲストOSからの修正を抑止することができる。HVコード格納領域1511に格納されたHVコードは、第1の実施の形態の図3で示したHVコードと同様として説明を省略する。本変形例のように、HVコードの書き換えを抑止できるのであれば、HVコード格納領域が、HV保護領域外に存在しても良い。
【0153】
動作モード管理回路1502は、検出部1521と、モード切替部1522とを備え、第1の実施の形態と同様に、プロセッサ101と保護メモリ1501とを接続する第1通信路に流れるデータを監視して、必要に応じて動作モードの切替を行う。なお、動作モードの切り替え手法は、第1の実施の形態と同様の手法を用いることとして、説明を省略する。
【0154】
また、本実施の形態にかかるシステムLSI1500では、HV保護領域にメモリアクセス制御部1505、デバイスアクセス制御部1504、メモリ1503が格納されている。
【0155】
また、メモリアクセス制御部1505、デバイスアクセス制御部1504及びメモリ1503は、それぞれ内部にHV領域保護回路と同等の機能を備えているものとする。これにより、メモリアクセス制御部1505、デバイスアクセス制御部1504及びメモリ1503は、動作モードに従ってアクセスを制御することができる。
【0156】
なお、メモリアクセス制御部1505、デバイスアクセス制御部1504及びメモリ1503は、HV領域保護回路と同等の機能を備えている以外、メモリアクセス制御部103、デバイスアクセス制御部105及び保護メモリ107(但しHVコード格納領域112を除く)と同等として説明を省略する。
【0157】
メモリ1503は、第4メモリ領域1504を備えている。そして、メモリ1503は、HV領域保護回路と同等の機能により、第4メモリ領域に格納された情報を保護する。
【0158】
このようにHVコード格納領域112をHV保護領域外に存在していたとしても、第1の実施の形態と同様に動作モードの切り替えで、安全性を確保することができる。
【産業上の利用可能性】
【0159】
以上のように、本発明にかかるデバイス制御装置は、プロセッサが仮想化サポート機能を有するか否かにかかわらず、ゲストOSで動作するときにアクセスを制御する技術として有用である。
【図面の簡単な説明】
【0160】
【図1】第1の実施の形態にかかるシステムLSIの構成を示すブロック図である。
【図2】従来のプロセッサ上でハイパーバイザの実行途中に、不正な処理を行うソフトウェアコードに実行が移る例を示した図である。
【図3】第1の実施の形態にかかるシステムLSIが有するHVコードのソースの例を示した図である。
【図4】第1の実施の形態にかかるシステムLSIのソフトウェア構成の例を示した図である。
【図5】第1の実施の形態にかかるシステムLSIにおいて、動作モードの遷移に応じて制御情報の設定を行う処理手順を示したフローチャートである。
【図6】第1の実施の形態にかかるシステムLSIにおいて、動作モード管理回路の検出部のHVモードエントリの検出手順を示すフローチャートである。
【図7】第1の実施の形態にかかるシステムLSIにおいて、動作モード管理回路の検出部のHVモード脱出の検出手順を示すフローチャートである。
【図8】第1の実施の形態の変形例2に係るシステムLSIの構成を示すブロック図である。
【図9】第2の実施の形態に係るシステムLSIの構成を示すブロック図である。
【図10】第2の実施の形態にかかるシステムLSIに接続されたメモリ内に格納されたHVコードのソースの例を示した図である。
【図11】第2の実施の形態にかかるシステムLSIに接続されたメモリ上に配置されたHVコード格納領域のアドレスの例を示した図である。
【図12】第2の実施の形態にかかるシステムLSIにおいて、動作モード管理回路の検出部のHVモードエントリの検出手順を示すフローチャートである。
【図13】第2の実施の形態にかかるシステムLSIにおいて、動作モード管理回路の検出部のHVモード脱出チェックのフローチャートである。
【図14】変形例1に係るシステムLSIの構成を示すブロック図である。
【符号の説明】
【0161】
100、1300、1400、1500 システムLSI
101 プロセッサ
102、1401、1502 動作モード管理回路
103、1505 メモリアクセス制御部
104 第1HV領域保護回路
105、1504 デバイスアクセス制御部
106、1302 第2HV領域保護回路
107、1501 保護メモリ
112、1451、1511 HVコード格納領域
121、1411、1521 検出部
122、1522 モード切替部
131 第1制御部
132、1311 第2制御部
150、1450、1503 メモリ
151 第1のゲストOS格納領域
152 第2のゲストOS格納領域
153 第3のゲストOS格納領域
154 第1メモリ領域
155 第2メモリ領域
156 第3メモリ領域
1301 保護デバイス

【特許請求の範囲】
【請求項1】
第1のアクセス範囲にアクセス可能な特権ソフトウェアを記憶する記憶部と、
前記第1のアクセス範囲よりも狭い範囲である第2のアクセス範囲にアクセス可能なソフトウェアと、前記特権ソフトウェアと、を動作させるプロセッサと、
前記記憶部と前記プロセッサとを接続し、前記特権ソフトウェアを前記プロセッサで実行するために必要なデータの通信を行う通信路と、
前記プロセッサが前記通信路を介して行う、前記記憶部の前記特権ソフトウェアが格納された格納アドレスに対するフェッチを、検出する検出手段と、
前記格納アドレスに対するフェッチの検出の有無に応じて、前記プロセッサのアクセス範囲を制御する制御手段と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記検出手段は、さらに前記格納アドレスとして前記ソフトウェアの動作が開始することを示す開始アドレスに対するフェッチを検出し、
前記制御手段は、前記開始アドレスに対するフェッチを検出した場合に、アクセスを許可するアクセス範囲を前記第2のアクセス範囲から前記第1のアクセス範囲に変更する制御を行うこと、
を特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記検出手段は、さらに前記プロセッサにおいて、前記ソフトウェアによる割り込みが禁止されていることを検出し、
前記制御手段は、前記格納アドレスに対するフェッチ及び前記ソフトウェアによる割り込みが禁止されていることを検出した場合に、前記第1のアクセス範囲に対するアクセスを許可する制御を行うこと、
を特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記制御手段は、前記格納アドレスに対するフェッチを検出した場合に、アクセスを許可するアクセス範囲に含まれている記憶アドレスに書き込みを許可する制御を行うこと、
を特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記格納アドレスは、前記第1のアクセス範囲に含まれ、
前記制御手段は、前記格納アドレスに対するフェッチを検出した場合に、前記第1のアクセス範囲に対してアクセスを許可する制御を行うこと、
を特徴とする請求項1に記載の情報処理装置。
【請求項6】
前記検出手段は、さらに前記プロセッサからの書き込み命令を検出し、
前記制御手段は、前記書き込み命令で指し示されているアドレスがチェック用のアドレスであること、及び前記書き込み命令に含まれているデータが割り込み禁止を表す値であることを満たすか否かに応じて、前記プロセッサに対してアクセスを許可するアクセス範囲を制御すること、
を特徴とする請求項1に記載の情報処理装置。
【請求項7】
前記検出手段は、前記格納アドレスとしての前記プロセッサに対する割り込みを禁止する命令が記載されたアドレスに対するフェッチを検出すること、
を特徴とする請求項1に記載の情報処理装置。
【請求項8】
前記検出手段は、さらに前記格納アドレスに対してアクセスしないことが保証される特権ソフトウェア脱出命令を検出し、
前記制御手段は、前記特権ソフトウェア脱出命令を検出した場合に、アクセス範囲を前記第1のアクセス範囲から前記第2のアクセス範囲に変更すること、
を特徴とする請求項1に記載の情報処理装置。
【請求項9】
前記検出手段は、前記プロセッサからフェッチの要求がなされた要求アドレスが前記格納アドレスとは異なることを検出し、
前記制御手段は、前記要求アドレスが前記格納アドレスとは異なることを検出した場合に、アクセスを許可するアクセス範囲を前記第1のアクセス範囲から前記第2のアクセス範囲に変更すること、
を特徴とする請求項1に記載の情報処理装置。
【請求項10】
前記制御手段は、前記アクセス範囲に含まれている、データの格納に用いられるデータ記憶部内に確保されたアクセス可能な領域を変更する制御を行うこと、
を特徴とする請求項1に記載の情報処理装置。
【請求項11】
前記制御手段は、前記アクセス範囲に含まれている、アクセス可能なデバイスを変更する制御を行うこと、
を特徴とする請求項1に記載の情報処理装置。
【請求項12】
前記ソフトウェア毎に、データを格納するデータ記憶部が有する記憶領域に対してアクセス可能か否かを保持する制御情報に基づいて、前記データ記憶部へのアクセスを制御するメモリアクセス制御手段、をさらに備え、
前記制御手段は、前記格納アドレスに対するフェッチを検出した場合に、前記制御情報の書き込みを許可し、
前記プロセッサは、前記制御情報の書き込みが許可されている場合に、前記制御情報に対して書き込みを行うこと、
を特徴とする請求項1に記載の情報処理装置。
【請求項13】
前記ソフトウェア毎にデバイスに対してアクセス可能か否かを保持する制御情報に基づいて、デバイスに対するアクセスを制御するデバイスアクセス制御手段、をさらに備え、
前記制御手段は、前記格納アドレスに対するフェッチを検出した場合に、前記制御情報の書き込みを許可し、
前記プロセッサは、前記制御情報の書き込みが許可されている場合に、前記制御情報に対して書き込みを行うこと、
を特徴とする請求項1に記載の情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2008−176637(P2008−176637A)
【公開日】平成20年7月31日(2008.7.31)
【国際特許分類】
【出願番号】特願2007−10444(P2007−10444)
【出願日】平成19年1月19日(2007.1.19)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】