(57)【要約】  実行制御装置（１００）は、判断部（１２０）と、制御部（１３０）とを備える。判断部（１２０）は、メモリ操作システムコールの発行元のプロセスを起動した発行元ユーザが、発行されたメモリ操作システムコールによって操作されるメモリ領域の割り当て先のプロセスを起動した割り当て先ユーザと同じであるかどうかを判断する。メモリ操作システムコールとは、ユーザにより起動されたプロセスからオペレーティングシステムに対して発行されるシステムコールのうち、メモリ領域の操作のために発行されるシステムコールのことである。制御部（１３０）は、判断部（１２０）により発行元ユーザが割り当て先ユーザと異なると判断されたメモリ操作システムコールの実行を中止する。
2017042860.tif 000002
【特許請求の範囲】
【請求項１】
ユーザにより起動されたプロセスからオペレーティングシステムに対して発行されるシステムコールのうち、メモリ領域の操作のために発行されるシステムコールであるメモリ操作システムコールの発行元のプロセスを起動した発行元ユーザが、発行されたメモリ操作システムコールによって操作されるメモリ領域の割り当て先のプロセスを起動した割り当て先ユーザと同じであるかどうかを判断する判断部と、
前記判断部により前記発行元ユーザが前記割り当て先ユーザと異なると判断されたメモリ操作システムコールの実行を中止する制御部と
を備える実行制御装置。
【請求項２】
前記制御部は、前記判断部により前記発行元ユーザが前記割り当て先ユーザと同じであると判断されたメモリ操作システムコールをプロセッサに実行させ、前記発行元ユーザが前記オペレーティングシステムの管理者権限を持つスーパーユーザであっても、前記判断部により前記発行元ユーザが前記割り当て先ユーザと異なると判断されたメモリ操作システムコールを前記プロセッサに実行させない請求項１に記載の実行制御装置。
【請求項３】
前記制御部は、前記判断部により前記発行元ユーザが前記割り当て先ユーザと異なると判断されたメモリ操作システムコールの発行元のプロセスを削除する請求項１又は２に記載の実行制御装置。
【請求項４】
プロセスとして動作する仮想マシンをユーザに利用させるサービスを提供する提供部
をさらに備え、
前記判断部は、前記仮想マシンに割り当てられたメモリ領域に対するメモリ操作システムコールの発行を検知した場合に、前記発行元ユーザが前記割り当て先ユーザと同じであるかどうかを判断する請求項１から３のいずれか１項に記載の実行制御装置。
【請求項５】
仮想メモリのメモリ領域が割り当てられたプロセスの認証を行う認証部と、
前記認証部による認証が失敗したプロセスに割り当てられたメモリ領域のアドレスから物理メモリのアドレスへの変換を中止する管理部と
をさらに備える請求項１から４のいずれか１項に記載の実行制御装置。
【請求項６】
前記仮想メモリのメモリ領域であるページごとに、対応する前記物理メモリのアドレスへの変換を禁止するかどうかを示すフラグを含むページテーブルエントリを記憶する記憶部
をさらに備え、
前記管理部は、１つのページが１つのプロセスに割り当てられる際に、当該１つのページのページテーブルエントリとして、当該１つのページに対応する前記物理メモリのアドレスへの変換を禁止することを示すフラグを含むページテーブルエントリを前記記憶部に書き込み、
前記制御部は、前記管理部により書き込まれたページテーブルエントリのうち、前記認証部による認証が成功したプロセスに割り当てられたページのページテーブルエントリのフラグを更新する請求項５に記載の実行制御装置。
【請求項７】
前記管理部は、前記仮想メモリへのアクセスが要求され、当該アクセスが要求された要求先ページのページテーブルエントリのフラグにより、前記要求先ページに対応する前記物理メモリのアドレスへの変換が禁止されている場合に、例外処理を起動し、
前記認証部は、前記例外処理として、前記要求先ページが割り当てられたプロセスの認証を行い、
前記制御部は、前記例外処理として、前記認証部による認証が成功した場合に、前記要求先ページのページテーブルエントリのフラグを、前記要求先ページに対応する前記物理メモリのアドレスへの変換を許可することを示すフラグに更新する請求項６に記載の実行制御装置。
【請求項８】
前記制御部は、前記認証部による認証が失敗したプロセスを削除する請求項６又は７に記載の実行制御装置。
【請求項９】
コンピュータが、ユーザにより起動されたプロセスからオペレーティングシステムに対して発行されるシステムコールのうち、メモリ領域の操作のために発行されるシステムコールであるメモリ操作システムコールの発行元のプロセスを起動した発行元ユーザが、発行されたメモリ操作システムコールによって操作されるメモリ領域の割り当て先のプロセスを起動した割り当て先ユーザと同じであるかどうかを判断し、
前記コンピュータが、前記発行元ユーザが前記割り当て先ユーザと異なると判断したメモリ操作システムコールの実行を中止する実行制御方法。
【請求項１０】
コンピュータに、
ユーザにより起動されたプロセスからオペレーティングシステムに対して発行されるシステムコールのうち、メモリ領域の操作のために発行されるシステムコールであるメモリ操作システムコールの発行元のプロセスを起動した発行元ユーザが、発行されたメモリ操作システムコールによって操作されるメモリ領域の割り当て先のプロセスを起動した割り当て先ユーザと同じであるかどうかを判断する処理と、
前記発行元ユーザが前記割り当て先ユーザと異なると判断されたメモリ操作システムコールの実行を中止する処理と
を実行させる実行制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行制御装置及び実行制御方法及び実行制御プログラムに関するものである。
【背景技術】
【０００２】
近年、クラウドと呼ばれる、インターネット接続を前提として計算機リソースを提供するサービスが広く浸透している。サービスの形態としては、ウェブアプリケーションそのものを提供するＳａａＳ（Ｓｏｆｔｗａｒｅ・ａｓ・ａ・Ｓｅｒｖｉｃｅ）、アプリケーションの開発プラットフォームを提供するＰａａＳ（Ｐｌａｔｆｏｒｍ・ａｓ・ａ・Ｓｅｒｖｉｃｅ）、仮想マシンを提供するＩａａＳ（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ・ａｓ・ａ・Ｓｅｒｖｉｃｅ）等が知られている。【０００３】
通常、クラウドベンダとその顧客との間では、ＳＬＡ（Ｓｅｒｖｉｃｅ・Ｌｅｖｅｌ・Ａｇｒｅｅｍｅｎｔ）と呼ばれる、課金、サービスの信頼性、セキュリティ等に関する契約が結ばれる。しかし、悪意のあるアドミニストレータの存在は完全に否定できるものではない。アドミニストレータは、システム上の全ての権限を有するスーパーユーザである。したがって、契約上は顧客のストレージデータ或いはメモリデータの秘匿性が担保されていても、悪意のあるアドミニストレータによってデータが盗まれたり、改ざんされたりする可能性がある。【０００４】
ＩａａＳで提供される仮想マシンは、その仮想マシンが稼働するオペレーティングシステムにとっては単なるアプリケーションプログラムに過ぎない。したがって、オペレーティングシステムのスーパーユーザであれば、仮想マシンが使用するメモリ領域のデータを取得することが可能である。【０００５】
特許文献１には、アプリケーションプログラムからオペレーティングシステムへシステムコールが発行される際に、当該アプリケーションプログラムが当該システムコールのサービスを受ける権限を有するかどうかを検証する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−３３１１３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来の技術では、悪意のあるアドミニストレータの存在に対処することができない。特許文献１に記載の技術においても、スーパーユーザがシステムのあらゆるリソースにアクセスできる可能性は、依然として排除されていない。【０００８】
本発明は、スーパーユーザであっても、保護すべきメモリ領域のデータにアクセスできないシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様に係る実行制御装置は、
ユーザにより起動されたプロセスからオペレーティングシステムに対して発行されるシステムコールのうち、メモリ領域の操作のために発行されるシステムコールであるメモリ操作システムコールの発行元のプロセスを起動した発行元ユーザが、発行されたメモリ操作システムコールによって操作されるメモリ領域の割り当て先のプロセスを起動した割り当て先ユーザと同じであるかどうかを判断する判断部と、
前記判断部により前記発行元ユーザが前記割り当て先ユーザと異なると判断されたメモリ操作システムコールの実行を中止する制御部とを備える。
【発明の効果】
【００１０】
本発明では、メモリ領域の操作のために発行されたシステムコールの発行元のプロセスを起動したユーザが、そのメモリ領域の割り当て先のプロセスを起動したユーザと同じでなければ、そのシステムコールは実行されない。このため、本発明によれば、スーパーユーザであっても、保護すべきメモリ領域のデータにアクセスできないシステムを提供することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係る実行制御装置の構成を示すブロック図。
【図２】実施の形態１に係る実行制御装置の動作を示すフローチャート。
【図３】実施の形態２に係る実行制御装置の構成を示すブロック図。
【図４】実施の形態２に係る仮想メモリの実装例を示す図。
【図５】実施の形態２に係るページテーブルエントリの構成例を示す図。
【図６】実施の形態２に係る実行制御装置の動作を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
【００１３】
実施の形態１．
本実施の形態に係る装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。
【００１４】
＊＊＊構成の説明＊＊＊
図１を参照して、本実施の形態に係る装置である実行制御装置１００の構成を説明する。
【００１５】
実行制御装置１００は、提供部１１０と、判断部１２０と、制御部１３０とを備える。
【００１６】
本実施の形態において、実行制御装置１００は、コンピュータである。具体的には、実行制御装置１００は、ＩａａＳを提供するホストコンピュータである。提供部１１０、判断部１２０、及び、制御部１３０の機能は、ソフトウェアにより実現される。
【００１７】
実行制御装置１００は、プロセッサ１０１、ＭＭＵ１０２（Ｍｅｍｏｒｙ・Ｍａｎａｇｅｍｅｎｔ・Ｕｎｉｔ）、ＴＬＢ１０３（Ｔｒａｎｓｌａｔｉｏｎ・Ｌｏｏｋａｓｉｄｅ・Ｂｕｆｆｅｒ）、メモリコントローラ１０４、メモリ１０５、補助記憶装置１０６、通信装置１０７といったハードウェアを備える。プロセッサ１０１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１８】
プロセッサ１０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ・Ｃｉｒｃｕｉｔ）である。プロセッサ１０１は、具体的には、ＣＰＵ（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）である。
【００１９】
ＭＭＵ１０２は、仮想メモリのアドレスである仮想アドレスとメモリ１０５のアドレスである物理アドレスとの変換を行うＩＣである。
【００２０】
ＴＬＢ１０３は、仮想アドレスと物理アドレスとのマッピング情報を一時的に格納するバッファメモリである。
【００２１】
メモリコントローラ１０４は、プロセッサ１０１によりメモリ１０５に書き込まれるデータの流れ、及び、プロセッサ１０１によりメモリ１０５から読み取られるデータの流れを管理するＩＣである。
【００２２】
メモリ１０５は、メインメモリ、即ち、物理メモリである。メモリ１０５は、具体的には、ＲＡＭ（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）である。
【００２３】
補助記憶装置１０６は、少なくとも一部が仮想メモリとして機能する記憶装置である。補助記憶装置１０６は、具体的には、フラッシュメモリ、又は、ＨＤＤ（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ）である。
【００２４】
通信装置１０７は、データを受信するレシーバ及びデータを送信するトランスミッタを含む。通信装置１０７は、具体的には、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ・Ｉｎｔｅｒｆａｃｅ・Ｃａｒｄ）である。
【００２５】
実行制御装置１００は、ハードウェアとして、入力装置及びディスプレイの少なくともいずれかを備えていてもよい。
【００２６】
入力装置は、外部からデータをメモリ１０５に入力するために用いられる。入力装置は、具体的には、マウス、キーボード、又は、タッチパネルである。
【００２７】
ディスプレイは、メモリ１０５に記憶されたデータを表示するために用いられる。ディスプレイは、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）である。
【００２８】
補助記憶装置１０６には、プログラム群が記憶されている。プログラム群には、提供部１１０の機能を実現するプログラムが含まれる。このプログラムは、メモリ１０５にロードされ、プロセッサ１０１に読み込まれ、プロセッサ１０１によって実行される。プログラム群には、判断部１２０及び制御部１３０の機能を実現するオペレーティングシステムも含まれる。オペレーティングシステムの少なくとも一部がメモリ１０５にロードされ、プロセッサ１０１はオペレーティングシステムを実行しながら、提供部１１０の機能を実現するプログラムを実行する。
【００２９】
オペレーティングシステムの一般ユーザ、即ち、非スーパーユーザは、自分のプロセスの仮想メモリ領域をトレースすることはできるが、他ユーザのプロセスの仮想メモリ領域をトレースすることはできない。また、非スーパーユーザは、自分のプロセス間で仮想メモリ領域を共有することはできるが、自分のプロセスと他ユーザのプロセスとの間、或いは、他ユーザのプロセス間で仮想メモリ領域を共有することはできない。ＩａａＳのホストオペレーティングシステム上で稼働する仮想マシンも、このような非スーパーユーザのプロセスである。
【００３０】
従来は、スーパーユーザであれば、いずれのプロセスの仮想メモリ領域をトレースすることも許容され、また、いずれのプロセス間で仮想メモリ領域を共有することも許容される。しかし、それでは、ＩａａＳのホストオペレーティングシステムのアドミニストレータが、ホストオペレーティングシステム上で稼働する、いずれの仮想マシンのメモリデータも観察できることになってしまう。
【００３１】
後述するように、本実施の形態では、スーパーユーザであっても、他ユーザのプロセスの仮想メモリ領域をトレースすることが禁止され、また、他ユーザのプロセス間で仮想メモリ領域を共有することも禁止される。したがって、ＩａａＳのホストオペレーティングシステム上で稼働する仮想マシンのメモリデータを、悪意のあるアドミニストレータから保護することができる。
【００３２】
プロセスが、そのプロセスの仮想メモリ領域をトレースしたり、そのプロセスと同じユーザの他のプロセスとの間で仮想メモリ領域を共有したりするためには、オペレーティングシステムが管理するデータの変更が必要になる。プロセッサ１０１では、オペレーティングシステムが管理するデータを、プロセスとして実行されるアプリケーションプログラムが破壊することがないよう、プロテクティッドモードと称される実行モードの設定が可能となっている。プロテクティッドモードを設定することで、オペレーティングシステムが稼働する仮想アドレス空間と、アプリケーションプログラムが稼働する仮想アドレス空間とが明確に区分される。このため、システムコールという、プロテクティッドモードにおいてアプリケーションプログラムがオペレーティングシステムの空間にアクセスする手段が提供されている。
【００３３】
一般ユーザのプロセスとして稼働するアプリケーションプログラムは、システムコールを発行することで、そのプロセスの仮想メモリ領域をトレースする機能、そのプロセスと同じユーザの他のプロセスとの間で仮想メモリ領域を共有する機能といった、オペレーティングシステムの様々な機能を利用することができる。
【００３４】
なお、実行制御装置１００は、１つのプロセッサ１０１のみを備えていてもよいし、複数のプロセッサ１０１を備えていてもよい。複数のプロセッサ１０１がプログラム群を連携して実行してもよい。
【００３５】
提供部１１０、判断部１２０、及び、制御部１３０の処理の結果を示す情報、データ、信号値、及び、変数値は、補助記憶装置１０６、メモリ１０５、又は、プロセッサ１０１内のレジスタ又はキャッシュメモリに記憶される。
【００３６】
プログラム群は、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）等の可搬記録媒体に記憶されてもよい。
【００３７】
プロセッサ１０１、ＭＭＵ１０２、ＴＬＢ１０３、メモリコントローラ１０４、メモリ１０５を、総称して「プロセッシングサーキットリ」という。つまり、提供部１１０、判断部１２０、制御部１３０といった「部」の機能は、プロセッシングサーキットリにより実現される。
【００３８】
「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。
【００３９】
＊＊＊動作の説明＊＊＊
図２を参照して、実行制御装置１００の動作を説明する。実行制御装置１００の動作は、本実施の形態に係る実行制御方法に相当する。実行制御装置１００の動作は、本実施の形態に係る実行制御プログラムの処理手順に相当する。
【００４０】
ステップＳ１１からステップＳ１５の処理は、少なくとも提供部１１０が、プロセスとして動作する仮想マシンをユーザに利用させるサービスを提供しているときに実施される。本実施の形態において、提供部１１０は、そのようなサービスとして、ＩａａＳを提供する。具体的には、提供部１１０は、プロセッサ１０１を用いて仮想マシンをオペレーティングシステム上で稼働させる。提供部１１０は、通信装置１０７を用いてインターネット経由でデータを送受信することで、稼働中の仮想マシンをユーザに利用させる。
【００４１】
ステップＳ１１において、判断部１２０は、システムコールの発行を検知するまで待機する。具体的には、判断部１２０は、システムコールの発行によってプロセッサ１０１に割り込みが発生することで起動される。判断部１２０は、起動されることでシステムコールが発行されたことを検知する。また、判断部１２０は、少なくとも発行されたシステムコールの番号と、当該システムコールの引数と、当該システムコールの発行元のプロセスを起動したユーザの識別子とをプロセッサ１０１のレジスタから取得する。
【００４２】
判断部１２０によりシステムコールの発行が検知された場合、フローはステップＳ１２に進む。
【００４３】
ステップＳ１２において、判断部１２０は、ステップＳ１１で発行を検知したシステムコールがメモリ操作システムコールであるかどうかを判断する。メモリ操作システムコールとは、ユーザにより起動されたプロセスからオペレーティングシステムに対して発行されるシステムコールのうち、メモリ領域の操作のために発行されるシステムコールのことである。具体的には、判断部１２０は、ステップＳ１１で取得したシステムコールの番号とメモリ操作システムコールの番号とを比較し、比較結果をブール値として出力する。仮に番号が一致することを示すブール値が「１」であるとすると、「１」が出力された場合には、判断部１２０が、発行されたシステムコールがメモリ操作システムコールであると判断したことになる。一方、「０」が出力された場合には、判断部１２０が、発行されたシステムコールがメモリ操作システムコールではないと判断したことになる。
【００４４】
判断部１２０により、発行されたシステムコールがメモリ操作システムコールであると判断された場合、フローはステップＳ１３に進む。そうでない場合、フローはステップＳ１４に進む。
【００４５】
ステップＳ１３において、判断部１２０は、メモリ操作システムコールの発行元のプロセスを起動した発行元ユーザが、発行されたメモリ操作システムコールによって操作されるメモリ領域の割り当て先のプロセスを起動した割り当て先ユーザと同じであるかどうかを判断する。具体的には、判断部１２０は、ステップＳ１１で取得したシステムコールの引数から、メモリ操作システムコールによって操作されるメモリ領域の仮想アドレスを取得する。ＴＬＢ１０３には、前述したマッピング情報の一部として、仮想アドレス空間ごとに、割り当て先のプロセスの識別子が格納されている。判断部１２０は、取得した仮想アドレスを含む仮想アドレス空間の割り当て先の識別子としてＴＬＢ１０３に格納されているプロセスの識別子を、プロセッサ１０１を用いて、ＭＭＵ１０２を介して取得する。判断部１２０は、取得したプロセスの識別子から、当該プロセスを起動したユーザである割り当て先ユーザの識別子を特定する。判断部１２０は、ステップＳ１１で取得したユーザの識別子、即ち、発行元ユーザの識別子と、特定した割り当て先ユーザの識別子とを比較し、比較結果をブール値として出力する。仮に識別子が一致することを示すブール値が「１」であるとすると、「１」が出力された場合には、判断部１２０が、発行元ユーザが割り当て先ユーザと同じであると判断したことになる。一方、「０」が出力された場合には、判断部１２０が、発行元ユーザが割り当て先ユーザと異なると判断したことになる。
【００４６】
判断部１２０により、発行元ユーザが割り当て先ユーザと同じであると判断された場合、フローはステップＳ１４に進む。そうでない場合、フローはステップＳ１５に進む。
【００４７】
ステップＳ１４において、制御部１３０は、正常処理を行う。具体的には、制御部１３０は、判断部１２０によりメモリ操作システムコールではないと判断されたシステムコールをプロセッサに実行させる。また、制御部１３０は、判断部１２０により発行元ユーザが割り当て先ユーザと同じであると判断されたメモリ操作システムコールもプロセッサ１０１に実行させる。即ち、制御部１３０は、判断部１２０により発行元ユーザが割り当て先ユーザと異なると判断されたメモリ操作システムコールの実行を中止する。
【００４８】
ステップＳ１５において、制御部１３０は、エラー処理を行う。具体的には、制御部１３０は、発行元ユーザがオペレーティングシステムの管理者権限を持つスーパーユーザであっても、判断部１２０により発行元ユーザが割り当て先ユーザと異なると判断されたメモリ操作システムコールをプロセッサ１０１に実行させない。本実施の形態において、制御部１３０は、判断部１２０により発行元ユーザが割り当て先ユーザと異なると判断されたメモリ操作システムコールの発行元のプロセスを強制終了する。即ち、制御部１３０は、判断部１２０により発行元ユーザが割り当て先ユーザと異なると判断されたメモリ操作システムコールの発行元のプロセスを削除する。
【００４９】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、メモリ領域の操作のために発行されたシステムコールの発行元のプロセスを起動したユーザが、そのメモリ領域の割り当て先のプロセスを起動したユーザと同じでなければ、そのシステムコールは実行されない。このため、本実施の形態によれば、スーパーユーザであっても、保護すべきメモリ領域のデータにアクセスできないシステムを提供することが可能となる。
【００５０】
本実施の形態では、メモリ領域が割り当てられたユーザ以外のユーザによる当該メモリ領域への不正なアクセスを阻止できるだけでなく、悪意のあるスーパーユーザによる当該メモリ領域へのアクセスも阻止することができる。したがって、安全性の高いサービスを提供することが可能となる。メモリ領域が割り当てられたユーザによる当該メモリ領域のトレース、共有等の操作は正常に実施されるため、サービスの利便性は維持される。
【００５１】
本実施の形態では、メモリ領域のトレース、共有といったメモリ管理に関するシステムコールの処理中の権限チェックにおいて、スーパーユーザを「権限あり」とするロジックを排除することにより、仮想マシンのメモリデータを、悪意のあるスーパーユーザから保護することができる。
【００５２】
なお、判断部１２０は、ステップＳ１１で仮想マシンに割り当てられたメモリ領域に対するメモリ操作システムコールの発行を検知した場合のみ、ステップＳ１３で発行元ユーザが割り当て先ユーザと同じであるかどうかを判断してもよい。その場合でも、少なくとも仮想マシンが使用するメモリ領域のデータは保護することができる。
【００５３】
＊＊＊他の構成＊＊＊
実行制御装置１００は、プロセスとして仮想マシンを実行することでＩａａＳを提供するホストコンピュータに限定されるものではなく、任意のプロセスを実行するコンピュータであればよい。即ち、本実施の形態の変形例として、実行制御装置１００が提供部１１０を備えない構成を採用してもよい。
【００５４】
実施の形態２．
実施の形態１では、オペレーティングシステムが管理するユーザアカウントによって、仮想マシンが使用するメモリ領域へのアクセスが制御される。即ち、実施の形態１は、ユーザ管理機構を利用して、仮想マシンのメモリデータを保護するものである。
【００５５】
一般的なウェブサーバには、インターネット接続が可能ならば、誰でもアクセスすることができる。したがって、ウェブサービスでは、ユーザに対して認められる、オペレーティングシステムにおける権限レベルは、極めて限定的なものとされる。このため、銀行等が提供するウェブサービスでは、ユーザの要求に応じて、勘定系システムにセキュアにアクセスする手段が提供される。具体的には、ソフトウェアキーボード或いはパスワードに加え、乱数に対するハッシュコード等を使用した厳重な認証機構が提供される。
【００５６】
本実施の形態でも、仮想マシンが使用するメモリ領域にセキュアにアクセスする手段として、プロセスの認証を行う認証機構が提供される。メモリ管理機構には、その認証機構を利用するための仕組みが導入される。即ち、本実施の形態は、認証機構とメモリ管理機構とを利用して、仮想マシンのメモリデータを保護するものである。
【００５７】
本実施の形態に係る装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。主に実施の形態１との差異を説明する。
【００５８】
＊＊＊構成の説明＊＊＊
図３を参照して、本実施の形態に係る装置である実行制御装置１００の構成を説明する。
【００５９】
実行制御装置１００は、実施の形態１と同じように、提供部１１０と、判断部１２０と、制御部１３０とを備える。実行制御装置１００は、本実施の形態では、記憶部１４０と、管理部１５０と、認証部１６０とをさらに備える。なお、実行制御装置１００は、判断部１２０を備えなくてもよい。
【００６０】
記憶部１４０は、ＴＬＢ１０３により実現される。
【００６１】
管理部１５０は、ＭＭＵ１０２により実現される。
【００６２】
認証部１６０の機能は、ソフトウェアにより実現される。具体的には、認証部１６０の機能は、制御部１３０の機能と同じように、オペレーティングシステムにより実現される。
【００６３】
図４を参照して、仮想メモリの実装例を説明する。
【００６４】
一旦、プロセッサ１０１のステートがプロテクティッドモードになると、プロセッサ１０１は、仮想メモリの仮想アドレス２００を用いてオペレーティングシステム及びアプリケーションプログラムを実行する。
【００６５】
仮想アドレス２００は、プロセッサ１０１が仮想メモリ上で命令の実行、データの参照、及び、データの更新を行うために使用するアドレスである。仮想アドレス２００は、ページディレクトリテーブル２１０へのインデックス２０１と、ページテーブル２２０へのインデックス２０２と、オフセット２０３で構成される。本例では、ページディレクトリテーブル２１０へのインデックス２０１が１０ビット、ページテーブル２２０へのインデックス２０２が１０ビット、オフセット２０３が１２ビットである。即ち、仮想アドレス２００は、３２ビットである。
【００６６】
ページディレクトリテーブル２１０は、ページディレクトリエントリ２１１（ＰＤＥ）の配列を格納する。
【００６７】
ページテーブル２２０は、ページテーブルエントリ２２１（ＰＴＥ）の配列を格納する。ページテーブルエントリ２２１は、仮想アドレス２００とメモリバスに出力される物理アドレス３００とのマッピング情報に相当する。
【００６８】
プロセッサ１０１の制御レジスタ２３０（ＣＲ３）が操作されることによって、プロセッサ１０１のステートは、プロテクティッドモードに遷移する。一旦、プロセッサ１０１のステートが遷移すると、オペレーティングシステムは、仮想アドレス２００に基づいてページディレクトリテーブル２１０及びページテーブル２２０を参照する。
【００６９】
仮想アドレス２００と物理アドレス３００とのマッピングのハンドリングは、ＭＭＵ１０２によって行われる。近年のＬ１からＬ３のキャッシュを備えるＣＰＵにおいて、メモリアクセスは非常に大きな性能上のペナルティとなる。これは、ＭＭＵ１０２においても同様である。そのため、仮想アドレス２００と物理アドレス３００とのマッピング情報であるページテーブルエントリ２２１は、ＴＬＢ１０３にキャッシュされる。
【００７０】
ＣＰＵのクロックが数ギガヘルツとなった現在、メモリアクセスも１ナノ秒以下と高速になっているが、キャッシュミスの性能上のペナルティは非常に大きいものとなっている。ＴＬＢ１０３のキャッシュミスも同様である。メモリ１０５のアドレスとその中身という関係にＴＬＢ１０３とＣＰＵキャッシュは当たるため、両者はハードワイアードにて実装される。
【００７１】
図５を参照して、ページテーブルエントリ２２１の構成例を説明する。
【００７２】
ページテーブルエントリ２２１は、従来は「Ｉｇｎｏｒｅｄ」であるビット９からビット１１のうち、１つのビットがＩｎｈｉｂｉｔフラグ２２２になっている点を除き、従来と同じ構成である。Ｉｎｈｉｂｉｔフラグ２２２は、仮想アドレス２００から物理アドレス３００への変換を禁止するかどうかを示すフラグである。本例では、ビット１１がＩｎｈｉｂｉｔフラグ２２２になっているが、他のビットがＩｎｈｉｂｉｔフラグ２２２になっていてもよい。
【００７３】
Ｉｎｈｉｂｉｔフラグ２２２がオンになっていれば、ＭＭＵ１０２は、仮想アドレス２００を物理アドレス３００にマッピングする際にエクセプションをプロセッサ１０１に通知する。オペレーティングシステムは、新たにメモリ領域を確保する際に、Ｉｎｈｉｂｉｔフラグ２２２をオンにする。
【００７４】
＊＊＊動作の説明＊＊＊
図６を参照して、実行制御装置１００の動作を説明する。実行制御装置１００の動作は、本実施の形態に係る実行制御方法に相当する。実行制御装置１００の動作は、本実施の形態に係る実行制御プログラムの処理手順に相当する。
【００７５】
前述したように、ＴＬＢ１０３、即ち、記憶部１４０は、仮想メモリのメモリ領域であるページごとに、ページテーブルエントリ２２１を記憶する。各ページのページテーブルエントリ２２１には、各ページに対応する物理メモリのアドレスへの変換を禁止するかどうかを示すＩｎｈｉｂｉｔフラグ２２２が含まれる。即ち、それぞれのページテーブルエントリ２２１には、仮想アドレス２００から物理アドレス３００への変換を禁止するかどうかを示すＩｎｈｉｂｉｔフラグ２２２が含まれる。
【００７６】
ＭＭＵ１０２、即ち、管理部１５０は、１つのページが１つのプロセスに割り当てられる際に、当該１つのページのページテーブルエントリ２２１を記憶部１４０に書き込む。当該１つのページのページテーブルエントリ２２１には、当該１つのページに対応する物理メモリのアドレスへの変換を禁止することを示すＩｎｈｉｂｉｔフラグ２２２が含まれる。即ち、管理部１５０は、新たにページテーブルエントリ２２１を記憶部１４０に書き込む際には、そのページテーブルエントリ２２１に含まれるＩｎｈｉｂｉｔフラグ２２２をオンにする。
【００７７】
管理部１５０は、仮想メモリへのアクセスが要求され、当該アクセスが要求された要求先ページのページテーブルエントリ２２１のＩｎｈｉｂｉｔフラグ２２２により、要求先ページに対応する物理メモリのアドレスへの変換が禁止されている場合に、図６に示すような例外処理を起動する。即ち、管理部１５０は、仮想アドレス２００から物理アドレス３００への変換が要求されたときには、その仮想アドレス２００から特定されるページテーブルエントリ２２１のＩｎｈｉｂｉｔフラグ２２２を参照する。そして、管理部１５０は、Ｉｎｈｉｂｉｔフラグ２２２がオンになっていれば、例外処理を起動する。一方、管理部１５０は、Ｉｎｈｉｂｉｔフラグ２２２がオフになっていれば、仮想アドレス２００から物理アドレス３００への変換を行い、要求先ページのページテーブルエントリ２２１を更新する。具体的には、管理部１５０は、要求先ページのページテーブルエントリ２２１に含まれる、要求先ページへのアクセスの有無を示すフラグを更新する。
【００７８】
ステップＳ２１からステップＳ２３において、認証部１６０は、要求先ページが割り当てられたプロセスの認証を行う。具体的には、ステップＳ２１において、認証部１６０は、エクセプションが発生したプロセスが保持するハッシュキーと認証データとを取得する。ステップＳ２２において、認証部１６０は、ステップＳ２１で取得した認証データのハッシュ値を演算する。ステップＳ２３において、認証部１６０は、ステップＳ２２で演算したハッシュ値と、ステップＳ２１で取得したハッシュキーとを比較する。ハッシュ値とハッシュキーとが一致していれば、認証部１６０による認証が成功したことになり、フローはステップＳ２４に進む。一方、ハッシュ値とハッシュキーとが一致していなければ、認証部１６０による認証が失敗したことになり、フローはステップＳ２５に進む。
【００７９】
ステップＳ２４において、制御部１３０は、要求先ページのページテーブルエントリ２２１のＩｎｈｉｂｉｔフラグ２２２を更新する。具体的には、制御部１３０は、要求先ページのページテーブルエントリ２２１のＩｎｈｉｂｉｔフラグ２２２を、要求先ページに対応する物理メモリのアドレスへの変換を許可することを示すＩｎｈｉｂｉｔフラグ２２２に更新する。即ち、制御部１３０は、要求先ページのページテーブルエントリ２２１のＩｎｈｉｂｉｔフラグ２２２をオフにする。その後、例外処理が終了し、管理部１５０は、仮想アドレス２００から物理アドレス３００への変換を行い、要求先ページのページテーブルエントリ２２１を更新する。具体的には、管理部１５０は、要求先ページのページテーブルエントリ２２１に含まれる、要求先ページへのアクセスの有無を示すフラグを更新する。
【００８０】
ステップＳ２５において、制御部１３０は、エクセプションが発生したプロセスが不正アクセスを行ったと判断し、そのプロセスを強制終了する。即ち、制御部１３０は、認証部１６０による認証が失敗したプロセスを削除する。
【００８１】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、認証部１６０が、仮想メモリのメモリ領域が割り当てられたプロセスの認証を行う。管理部１５０は、認証部１６０による認証が失敗したプロセスに割り当てられたメモリ領域のアドレスから物理メモリのアドレスへの変換を中止する。このため、本実施の形態によれば、保護すべきメモリ領域のデータにセキュアにアクセスするシステムを提供することが可能となる。
【００８２】
本実施の形態では、管理部１５０により記憶部１４０に書き込まれるページテーブルエントリ２２１のＩｎｈｉｂｉｔフラグ２２２のデフォルト設定がオンである。制御部１３０は、管理部１５０により書き込まれたページテーブルエントリ２２１のうち、認証部１６０による認証が成功したプロセスに割り当てられたページのページテーブルエントリ２２１のＩｎｈｉｂｉｔフラグ２２２のみを更新する。このため、例外処理が異常終了した場合には、Ｉｎｈｉｂｉｔフラグ２２２がオンのままとなり、要求先ページのデータが確実に保護される。
【００８３】
本実施の形態では、メモリ領域のトレース又は共有がなされると、同一のデータに複数のＴＬＢエントリが登録される。いずれの場合も、いずれかのプロセスがメモリ領域の解放を実行した場合、そのプロセスは該当するＴＬＢエントリのシュートダウンを実行し、その一貫性を維持する。
【００８４】
本実施の形態は、ＳＭＰ（Ｓｙｍｍｅｔｒｉｃ・ＭｕｌｔｉＰｒｏｃｅｓｓｏｒ）型のシステムに適用することもできる。システムの最適化設計において、ページテーブル２２０をあるプロセッサ１０１が変更したときは全てのプロセッサ１０１のＴＬＢシュートダウンを行うという粒度の粗い実装が採用されてもよい。或いは、ＴＬＢエントリ単位に各プロセッサ１０１のＴＬＢシュートダウンを行うという実装が採用されてもよい。これらの実装は、システムのトータルな性能目標に基づいて選択されるものであり、本実施の形態の適用を排除するものではない。
【００８５】
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、いくつかを組み合わせて実施しても構わない。或いは、これらの実施の形態のうち、いずれか１つ又はいくつかを部分的に実施しても構わない。具体的には、これらの実施の形態の説明において「部」として説明するもののうち、いずれか１つのみを採用してもよいし、いくつかの任意の組み合わせを採用してもよい。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００８６】
１００  実行制御装置、１０１  プロセッサ、１０２  ＭＭＵ、１０３  ＴＬＢ、１０４  メモリコントローラ、１０５  メモリ、１０６  補助記憶装置、１０７  通信装置、１１０  提供部、１２０  判断部、１３０  制御部、１４０  記憶部、１５０  管理部、１６０  認証部、２００  仮想アドレス、２０１  インデックス、２０２  インデックス、２０３  オフセット、２１０  ページディレクトリテーブル、２１１  ページディレクトリエントリ、２２０  ページテーブル、２２１  ページテーブルエントリ、２２２  Ｉｎｈｉｂｉｔフラグ、２３０  制御レジスタ、３００  物理アドレス。
【図１】
2017042860.tif 000003
【図２】
2017042860.tif 000004
【図３】
2017042860.tif 000005
【図４】
2017042860.tif 000006
【図５】
2017042860.tif 000007
【図６】
2017042860.tif 000008
【国際調査報告】
2017042860.tif 000009
2017042860.tif 000010
2017042860.tif 000011
2017042860.tif 000012