以下に本発明の最良の形態を説明するが、開示される発明と実施の形態との対応関係を例示すると、次のようになる。本明細書中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
さらに、この記載は、明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現し、追加される発明の存在を否定するものではない。
本発明によれば、情報処理装置が提供される。この情報処理装置は、アプリケーションプログラムの実行環境を制御する情報処理装置において、前記アプリケーションプログラムが、正当な電子署名のあるトラステッドアプリケーションプログラムであるかどうかを判定する判定手段(例えば、図12のステップS11の処理を実行するセキュアレベルモ
ジュール71)と、前記判定手段により前記アプリケーションプログラムが前記トラステッドアプリケーションプログラムであると判定された場合、前記トラステッドアプリケーションプログラムが前記情報処理装置に要求する、前記アプリケーションプログラムで使用可能なリソースの範囲を表すセキュアレベルを認識する認識手段(例えば、図12のステップS12の処理を実行するセキュアレベルモジュール71)と、実行中、およびこれから実行しようとする前記トラステッドアプリケーションプログラムが前記情報処理装置に要求する前記セキュアレベルのうちの最も小さい前記リソースの範囲を表すセキュアレベルに基づいて、その範囲に前記リソースの範囲を制限する制限手段とを備え、前記制限手段は、前記トラステッドアプリケーションプログラムの実行が終了した場合、実行中の前記トラステッドアプリケーションプログラムが前記情報処理装置に要求する前記セキュアレベルのうちの最も小さい前記リソースの範囲を表すセキュアレベルに基づいて、その範囲に前記リソースの範囲を変更することを特徴とする。
前記トラステッドアプリケーションプログラムは、前記正当な電子署名と前記トラステッドアプリケーションが前記情報処理装置に要求するセキュアレベルを、少なくとも有するようにすることができる。
前記実行中、およびこれから実行しようとする前記トラステッドアプリケーションプログラムと、前記トラステッドアプリケーションプログラムが前記情報処理装置に要求する前記セキュアレベルとを対応づけたセキュアレベルテーブルを記憶する記憶手段(例えば、図1のRAM13)をさらに備え、前記制限手段は、前記記憶手段により記憶されたセキュアレベルテーブルに基づいて、前記リソースの範囲を制限するようにすることができる。
また、本発明によれば、情報処理方法も提供される。この情報処理方法は、アプリケーションプログラムの実行環境を制限する情報処理装置が、前記アプリケーションプログラムが、正当な電子署名のあるトラステッドアプリケーションプログラムであるかどうかを判定する判定ステップ(例えば、図12のステップS11)と、前記判定ステップの処理により前記アプリケーションプログラムが前記トラステッドアプリケーションプログラムであると判定された場合、前記トラステッドアプリケーションプログラムが前記情報処理装置に要求する、前記アプリケーションプログラムで使用可能なリソースの範囲を表すセキュアレベルを認識する認識ステップ(例えば、図12のステップS12)と、実行中、およびこれから実行しようとする前記トラステッドアプリケーションプログラムが前記情報処理装置に要求する前記セキュアレベルのうちの最も小さい前記リソースの範囲を表すセキュアレベルに基づいて、その範囲に前記リソースの範囲を制限する制限ステップと、前記トラステッドアプリケーションプログラムの実行が終了した場合、実行中の前記トラステッドアプリケーションプログラムが前記情報処理装置に要求する前記セキュアレベルのうちの最も小さい前記リソースの範囲を表すセキュアレベルに基づいて、その範囲に前記リソースの範囲を変更する変更ステップとを含むことを特徴とする。
さらに、本発明によれば、プログラムも提供される。このプログラムは、アプリケーションプログラムの実行環境を制限する処理を、コンピュータに行わせるプログラムにおいて、前記アプリケーションプログラムが、正当な電子署名のあるトラステッドアプリケーションプログラムであるかどうかを判定する判定ステップ(例えば、図12のステップS11)と、前記判定ステップの処理により前記アプリケーションプログラムが前記トラステッドアプリケーションプログラムであると判定された場合、前記トラステッドアプリケーションプログラムが前記コンピュータに要求する、前記アプリケーションプログラムで使用可能なリソースの範囲を表すセキュアレベルを認識する認識ステップ(例えば、図12のステップS12)と、実行中、およびこれから実行しようとする前記トラステッドアプリケーションプログラムが前記コンピュータに要求する前記セキュアレベルのうちの最も小さい前記リソースの範囲を表すセキュアレベルに基づいて、その範囲に前記リソースの範囲を制限する制限ステップと、前記トラステッドアプリケーションプログラムの実行が終了した場合、実行中の前記トラステッドアプリケーションプログラムが前記コンピュータに要求する前記セキュアレベルのうちの最も小さい前記リソースの範囲を表すセキュアレベルに基づいて、その範囲に前記リソースの範囲を変更する変更ステップとを含むことを特徴とする。
このプログラムは記録媒体に記録することができる。
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
図1は、本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
CPU(Central Processing Unit)11は、ROM(Read Only Memory)12に記憶されているプログラム、または、記憶部18からRAM(Random Access Memory)13にロードされたプログラムにしたがって各種の処理を実行する。RAM13にはまた、CPU11が各種の処理を実行する上において必要なデータなどが適宜記憶される。
CPU11、ROM12、およびRAM13は、バス14を介して相互に接続されている。このバス14にはまた、入出力インタフェース15も接続されている。
入出力インタフェース15には、キーボード、マウスなどよりなる入力部16、CRT(Cathode Ray Tube),LCD(Liquid Crystal Display)などよりなるディスプレイやスピーカなどよりなる出力部17、ハードディスクなどより構成される記憶部18、モデム、ターミナルアダプタなどより構成される通信部19が接続されている。通信部19は、電話回線やCATVを含む各種のネットワークを介しての通信処理を行なう。
入出力インタフェース15にはまた、必要に応じてドライブ20が接続されている。ドライブ20には、磁気ディスク、光ディスク、光磁気ディスク、あるいは半導体メモリなどよりなるリムーバブル記録媒体21が適宜装着され、それから読み出されたプログラムが、必要に応じて記憶部18にインストールされる。
また、記憶部18(のリードディスク)には、例えば、アプリケーションプログラムが利用可能な/etcディレクトリ、/binディレクトリ、/sbinディレクトリ、/user/binディレクトリ、/libディレクトリ、/user/libディレクトリ等が構成されている。さらに、記憶部18には、後述するセキュアレベルL0乃至L4のコンパートメントを指定する情報(コンパートメント指定情報)が記述された設定ファイルが記憶されている。
図2は、図1のコンピュータ上で実行されるプログラムを説明する図である。
なお、セキュアレベルは、プラットホームであるOS41に対して設定され、使用できるリソース、その影響の範囲等のプログラムの実行環境を制限するものである。図2では、セキュアレベルは、例えば、セキュアレベルL0乃至L4の5段階に設定される。なお、セキュアレベルLi(i=1,・・・,5)では、iが大きいほど、セキュリティが高くなる。即ち、セキュアレベルLiでは、iが大きいほど、セキュアレベルLiで制限される実行環境は広くなる。
また、セキュアレベルL0乃至L4で制限される実行環境を、それぞれセキュアレベルL0乃至L4のコンパートメントといい、後述するトラステッドアプリケーションプログラム42−1とトラステッドアプリケーションプログラム42−2によって制限される実行環境をトラステッドアプリのコンパートメントという。
図1のコンピュータでは、OS41上で、トラステッドアプリケーションプログラム42−1、トラステッドアプリケーションプログラム42−2、およびアントラステッドアプリケーションプログラム44や、ライブラリ45などが実行される。なお、以下、トラステッドアプリケーションプログラム42−1とトラステッドアプリケーションプログラム42−2をそれぞれトラステッドアプリ42−1、トラステッドアプリ42−2ともいい、アントラステッドアプリケーションプログラム44をアントラステッドアプリ44ともいう。また、以下、トラステッドアプリ42−1とトラステッドアプリ42−2を区別する必要がない場合、トラステッドアプリ42−1とトラステッドアプリ42−2をまとめて、トラステッドアプリ42と称する。
OS41は、コンピュータの基本的な動作を制御する基本プログラムである。
OS41は、OS41の基本機能を実装したプログラムであるカーネル51と、その他の部分とに分けることができる。カーネル51は、例えば、後述するセキュアレベルモジュール71を有し、そのセキュアレベルモジュール71により設定されたOS41のセキュアレベルL0乃至L4のコンパートメント指定情報を、記憶部18から読み出して、そのセキュアレベルL0乃至L4のコンパートメント指定情報に基づいて、後述するアントラステッドアプリ44のリソースの使用を制限する。
セキュアレベルモジュール71は、セキュアレベルテーブル(後述する図10と図11)をRAM13に記憶させる。セキュアレベルモジュール71は、OS41のセキュアレベルを設定することにより、トラステッドアプリ42とアントラステッドアプリ44の実行環境を制御する。
トラステッドアプリ42とアントラステッドアプリ44は、任意のアプリケーションプログラムである。但し、トラステッドアプリ42は、正当な電子署名のある信頼できるプログラムであり、アントラステッドアプリ44は、正当な電子署名のない、または電子署名自体がない信頼できないプログラムである。また、トラステッドアプリ42には、後述するように、OS41に要求するセキュアレベル(以下、要求セキュアレベルという)を含むトラステッドアプリ42のコンパートメント指定情報を有している。
なお、トラステッドアプリ42とアントラステッドアプリ44は、必要に応じて、後述するライブラリ45に格納されている複数の処理ルーチンを利用することができる。
ライブラリ45には、トラステッドアプリ42やアントラステッドアプリ44等が利用する複数の処理ルーチンが格納されている。
図1のコンピュータにおいて、セキュアレベルモジュール71がOS41のセキュアレベルを動的に設定する。そして、アントラステッドアプリ44が実行される場合、カーネル51は、セキュアレベルモジュール71により設定されたOS41のセキュアレベルのコンパートメント指定情報に基づいて、アントラステッドアプリ44のリソースの使用を制限(または許可)する。
トラステッドアプリ42とアントラステッドアプリ44は、必要に応じてライブラリ45に格納されている処理ルーチンを利用する。
図3は、トラステッドアプリ42の基本的なフォーマットの例を示している。
図3では、トラステッドアプリ42のフォーマットは、2重レイヤアプリケーションフォーマットとなっている。トラステッドアプリ42は、先頭から順に、signature101、平文102、dev_pkey(key)103、key(core)104が配置されて構成されている。
signature101は、平文102、dev_pkey(key)103、およびkey(core)104から構成されるパッケージの提供者の電子署名である。この電子署名は、トラステッドアプリ42の正当性を確認するために利用される。
平文102は、暗号化されていないコア(core)(例えば、無料のコンテンツやアントラステッドコンテンツを再生するための暗号化の必要がないプログラムの実行コード)である。平文102は、例えば、トラステッドアプリ42のコンパートメント指定情報を含んでいる。
なお、コンパートメント指定情報は、平文102ではなく、その他の部分に含まれるようにしてもよい。
dev_pkey(key)103は、特定のデバイスまたはシステムの公開鍵dev_pkeyで暗号化した共通鍵keyである。
key(core)104は、共通鍵keyで暗号化したコア(core)部分である。
図4は、セキュアレベルL1のコンパートメント指定情報の例を示している。
図4に示すように、セキュアレベルL1のコンパートメント指定情報は、プロセスケーパビリティ(Process capabilities)とマンダトリアクセスコントロール(Mandatory Access Controls(MAC))とに分項されるマンダトリセキュリティ(Mandatory security)、およびトラステッドパス(Trusted paths)から構成される。
なお、マンダトリセキュリティとは、セキュリティ方針論理とセキュリティ属性の指定とが、明確にあるセキュリティ方針管理者により管理されていることを意味する。マンダトリセキュリティのセキュリティ方針は、例えば、ルール形式で記述される。
マンダトリセキュリティにおけるプロセスケーパビリティとマンダトリアクセスコントロールは、例えば、POSIX(Portable Operating System Interface for UNIX(登録商標)) 1.eなどのような、任意のプラットホームに共通のインタフェースとして提供することができる。プロセスケーパビリティによれば、スーパーユーザの特権(権限)を分割して管理することができる。そして、あるプロセスケーパビリティで管理される特権が有効であるかどうかにより、カーネル51の振る舞いは異なる。
図4の例では、プロセスケーパビリティとして、カーネルスペースとなっているメモリ空間にアクセスするという特権(CAP_SYS_RAWIO)と、カーネルモジュールのロードおよびアンロードを行うという特権(CAP_SYS_MODULE)が記述されている。そして、その両方の特権を表すプロセスケーパビリティが無効(OFF)にされている。従って、セキュアレベルL1のコンパートメントでは、カーネルスペースとなっているメモリ空間へのアクセスと、カーネルモジュールのロードおよびアンロードとが許可されない。
マンダトリアクセスコントロールは、ある実体(エンティティ)が他の実体にどのようなモードでアクセスできるかを表す。
図4の例では、マンダトリアクセスコントロールにおいて、/etcがreadとされている。即ち、セキュアレベルL1のコンパートメントでは、/etcディレクトリに対する操作が読み出し(read)のみに制限される。また、マンダトリアクセスコントロールにおいて、/bin、/sbin、/use/bin、/lib、/user/libがreadとされているので、セキュアレベルL1のコンパートメントでは、/binディレクトリ、/sbinディレクトリ、/user/binディレクトリ、/libディレクトリ、/user/libディレクトリに対する操作が、いずれも読み出し(read)のみに制限される。
また、トラステッドパスは、トラステッドアプリ42の実体であるトラステッド実体と信頼できるパス(path)を結ぶための条件を表している。
例えば、トラステッドアプリ42−1とトラステッドアプリ42−2との間にトラステッドパスで表される条件が満たされている場合、トラステッドアプリ42−1がトラステッドアプリ42−2と通信するとき、トラステッドアプリ42−1は、トラステッドアプリ42−2が本当にトラステッドアプリ42−2であると信頼することができる。また、トラステッドアプリ42−2も、トラステッドアプリ42−1が本当にトラステッドアプリ42−2であると信頼することができる。
図4の例では、トラステッドパスにおいて、/libがsignatureとされ、/user/binがsignatureとされている。即ち、セキュアレベルL1のコンパートメントでは、/libディレクトリおよび/user/binディレクトリが、トラステッドアプリ42と信頼できるパスを結ぶために、トラステッドアプリ42のsignature101(図3)の電子署名(signature)が正当であるかどうかを判定するように指定されている。
上述した説明では、セキュアレベルL1のコンパートメントについて説明したが、同様に、コンパートメント指定情報として、プロセスケーパビリティ、マンダトリアクセスコントロール、およびトラステッドパスという3つの属性を、セキュアレベル毎に設定することにより、各セキュアレベルのコンパートメントを指定することができる。
コンパートメントは、OS41の動作空間や利用できるリソース、その利用が影響する範囲等のプログラムの実行環境を、プロセスケーパビリティ、マンダトリアクセスコントロール、およびトラステッドパスという3つの属性により制限することによって指定する。従って、OS41のリソースとは別に、コンパートメント毎にリソースを用意する必要がなく、リソースを効率よく利用することができる。
図5は、セキュアレベルL2のコンパートメント指定情報の例を示している。
図5のセキュアレベルL2のコンパートメント指定情報では、図4に示したセキュアレベルL1のコンパートメント指定情報のマンダトリアクセスコントロールに、“/tmp read”が加えられている。即ち、セキュアレベルL2のコンパートメント指定情報では、セキュアレベルL1のコンパートメント指定情報に、/tmpディレクトリに対する操作が読み出し(read)のみに制限するという条件が加えられている。
セキュアレベルL1では、コンパートメント指定情報のマンダトリアクセスコントロールにおいて、/tmpについての記載がないので、/tmpディレクトリに対して読み出しや書き込み等を行うことができるが、セキュアレベルL2では、コンパートメント指定情報のマンダトリアクセスコントロールにおいて、/tmpがreadとされているので、/tmpディレクトリに対する操作が読み出し(read)のみに制限される。
即ち、セキュアレベルL1では、/tmpディレクトリに対する操作(アクセス)が制限されないが、セキュアレベルL2では、その操作が制限される。つまり、セキュアレベルL2のコンパートメントは、セキュアレベルL1のコンパートメントより広く、セキュアレベルL1のコンパートメントを含んでいる。
図4と図5では、セキュアレベルL0、セキュアレベルL1のコンパートメント指定情報について説明したが、セキュアレベルL2乃至セキュアレベルL4のコンパートメント指定情報も同様に構成される。
図6は、セキュアレベルL0乃至セキュアレベルL4のコンパートメントの関係を表している。
なお、図中、四角は、各コンパートメントを表している。
図6に示すように、セキュアレベルL1のコンパートメントは、セキュアレベルL0のコンパートメントを含んでいる。同様に、セキュアレベルL2のコンパートメントは、セキュアレベルL1のコンパートメントを、セキュアレベルL3のコンパートメントは、セキュアレベルL2のコンパートメントを、セキュアレベルL4のコンパートメントは、セキュアレベルL3のコンパートメントをそれぞれ含んでいる。即ち、セキュアレベルLi(i=1,・・・,5)のiが大きいほど、セキュアレベルLiにより制限される実行環境であるコンパートメントが広いので、セキュリティが高くなっている。
図7は、トラステッドアプリ42−1のコンパートメント指定情報の例を示している。
なお、図7では、トラステッドアプリ42−1のコンパートメント指定情報について説明するが、トラステッドアプリ42−2のコンパートメント指定情報も同様に構成される。
図7に示すように、トラステッドアプリ42−1のコンパートメント指定情報には、OS41に対する要求セキュアレベルが含まれる。
要求セキュアレベルは、OS41に対して要求する最低限のセキュアレベルである。即ち、トラステッドアプリ42−1は、OS41に対して、要求セキュアレベル以上のセキュアレベルを要求する。従って、トラステッドアプリ42−1のコンパートメントは、要求セキュアレベルのコンパートメントを含む。
図7の例では、要求セキュアレベルがセキュアレベルL1となっているので、トラステッドアプリ42は、OS41に対してセキュアレベルL1以上のセキュアレベルを要求する。
要求セキュアレベルのセキュリティに追加して要求されるセキュリティがある場合は、そのセキュリティに関するプロセスケーパビリティ、マンダトリアクセスコントロール、またはトラステッドパスが、必要に応じて、トラステッドアプリ42−1のコンパートメント指定情報に記述される。
図7では、トラステッドアプリ42−1のコンパートメント指定情報のプロセスケーパビリティにおいて、CAP_SYS_PTRACEがOFFとされ、CAP_SYS_PROTMEMがONとされている。即ち、これにより、トレースケーパビリティ(CAP_SYS_PTRACE)が無効(OFF)にされ、トラステッドアプリ42−1のトレースが禁止される。また、トラステッドアプリ42−1が動作中に使用するRAM13上のメモリ空間の保護(CAP_SYS_PROTMEM)が行われる。即ち、トラステッドアプリ42−1が使用しているメモリ空間へのアクセスが、トラステッドアプリ42−1以外のアプリケーションプログラムによって行われないように制限される。
マンダトリアクセスコントロールにおいて、Anyがno_ptraceとされている。即ち、これにより、任意のリソース(Any)に対するトラステッドアプリ42−1のアクセスのトレースが不許可(no_ptrace)にされている。
トラステッドパスにおいて、/user/local/trusted_apli_Bがsignatureとencryptとされ、/user/local/libAがsignatureとされている。即ち、例えば、他のトラステッドアプリ42−2であるトラステッドアプリB(trusted_apli_B)が、トラステッドアプリ42−1と信頼できるパスを結ぶために、電子署名(signature)が正当であるかどうかを判定するように指定されている。また、トラステッドアプリ42−1とトラステッドアプリ42−2との間で通信を行う場合、トラステッドアプリ42−1とトラステッドアプリ42−2の間の通信の内容が改ざんされず、漏洩しないように、通信の内容の保護/暗号化(encrypt)を行うように指定されている。
さらに、例えば、ライブラリ45であるライブラリA(libA)が、トラステッドアプリ42と信頼できるパスを結ぶために、電子署名(signature)が正当であるかどうかを判定するように指定されている。
なお、以下においては、コンパートメントによる制限の対象として、リソースだけを考えることとする。
図8は、トラステッドアプリ42が実行されている場合のコンパートメントの例を表している。
なお、図中、四角は、各セキュアレベルのコンパートメントを表している。セキュアレベルL0乃至セキュアレベルL4のコンパートメントの関係は、図6と同様であるので説明は省略する。
また、トラステッドアプリ42には、固有のIDであるPID(Process ID)が付加されている。図6に示すPID100乃至PID102が付加された斜線部は、PIDが付加されたトラステッドアプリ42のコンパートメントをそれぞれ表している。
図8では、PID100乃至PID102の3つのトラステッドアプリ42が動作している。PID100のトラステッドアプリ42は、要求セキュアレベルがセキュアレベルL1となっており、セキュアレベルL1のコンパートメントは、PID100のトラステッドアプリ42のコンパートメントを含んでいる。同様に、PID100とPID102のトラステッドアプリ42は、要求セキュアレベルがセキュアレベルL2となっており、セキュアレベルL2のコンパートメントは、PID100とPID102のトラステッドアプリ42のコンパートメントを含んでいる。
PID100乃至PID102のトラステッドアプリ42が動作している場合、セキュアレベルモジュール71は、PID100乃至PID102のトラステッドアプリ42の要求セキュアレベルのうち一番高いセキュアレベルであるセキュアレベルL2をOS41のセキュアレベルに設定する。そして、OS41は、OS41のセキュアレベルであるセキュアレベルL2で保護するリソース空間以外のリソース空間を自由空間とする。その自由空間であるリソース空間は、アントラステッドアプリ44を含む任意のアプリケーションが使用することができる。
なお、アントラステッドアプリ44に対しては、コンパートメント指定情報が設定されず、特別な保護サービスは提供されない。これにより、リソースを節約することができる。
図9は、図8のPID100とPID102のトラステッドアプリ42の動作が停止(実行が終了)した場合のコンパートメントの例を示している。
図9に示すように、例えば、図8のPID100とPID102のトラステッドアプリ42の動作が停止すると、セキュアレベルモジュール71は、OS41のセキュアレベルを、動作中のPID101の要求セキュアレベルであるセキュアレベルL1に変更し、セキュアレベルL1で保護するリソース空間以外のリソース空間を自由空間とする。図8に示したPID100乃至PID102のトラステッドアプリ42が動作している場合よりも、セキュアレベルL2で保護するリソース空間が自由空間に加えられるので、アントラステッドアプリ44を含む任意のアプリケーションプログラムが使用可能なリソースは多くなる。
なお、OS41のセキュアレベルが変更される場合、OS41のセキュリティを保護するため、リソースのセーニタイジング(sanitizing)が行われる。リソースのセーニタイジングとは、例えば、RAM13に確保されたアプリケーションが使用していたメモリ空間や記憶部18に確保されたキャッシュの初期化などを行うことである。
図10と図11は、RAM13が記憶するセキュアレベルテーブルの概念図である。
図10と図11のセキュアレベルテーブルには、実行中、およびこれから実行しようとするトラステッドアプリ42のPIDの欄が、そのトラステッドアプリ42の要求セキュアレベルの見出しに、チェーン構造状(リスト構造状)に接続される。即ち、セキュアレベルテーブルでは、要求セキュアレベルと、実行中、およびこれから実行しようとするトラステッドアプリ42のPIDが対応づけられる。
図10は、セキュアレベルテーブルの初期状態を示している。
セキュアレベルL0乃至セキュアレベルL4(の見出し)に対して、PIDの欄は接続されておらず、セキュアレベルL0乃至セキュアレベルL4は、セキュアレベルL0乃至セキュアレベルL4に対するPIDの欄が空であることを表すNULLに接続されている。
図11は、要求セキュアレベルがセキュアレベルL2のPID100のトラステッドアプリ42、要求セキュアレベルがセキュアレベルL1のPID101のトラステッドアプリ42、要求セキュアレベルがセキュアレベルL1のPID102のトラステッドアプリ42が、順に実行された場合のセキュアレベルテーブルを示している。
まず最初に、要求セキュアレベルがセキュアレベルL2のPID100のトラステッドアプリ42が実行されると、セキュアレベルテーブルでは、セキュアレベルL2に対して、PID100のトラステッドアプリ42を表すPID100のPIDの欄が接続され、そのPIDの欄に、NULLが接続される。
次に、要求セキュアレベルがセキュアレベルL2のPID102のトラステッドアプリ42が実行されると、セキュアレベルテーブルでは、既に動作中のPID100のトラステッドアプリ42のPIDの欄、即ち、セキュアレベルL2に対して接続されているPID100のPIDの欄の前に、新たに実行されるPID102のトラステッドアプリ42を表すPID102の欄が挿入される。従って、図11に示すように、セキュアレベルテーブルでは、セキュアレベルL2に対して、PID102のPIDの欄、PID100のPIDの欄、NULLが順に接続される。
最後に、要求セキュアレベルがセキュアレベルL1のPID101のトラステッドアプリ42が実行されると、セキュアレベルテーブルでは、セキュアレベルL1に対して、PID101のトラステッドアプリ42を表すPID101のPIDの欄が接続され、そのPIDの欄にNULLが接続される。
セキュアレベルL0、セキュアレベルL3、およびセキュアレベルL4を要求セキュアレベルとするトラステッドアプリ42は、動作していないので、セキュアレベルL0、セキュアレベルL3、およびセキュアレベルL4に対してPIDの欄は接続されない。即ち、セキュアレベルL0、セキュアレベルL3、およびセキュアレベルL4(の見出し)は、PIDの欄が空であることを表すNULLに接続されている。
なお、セキュアレベルテーブルでは、セキュアレベルL0乃セキュアレベルL4のうちの1つがデフォルトレベルとされており、そのデフォルトレベルであるセキュアレベルの見出しに、不図示のデフォルトレベルを表すマーク(フラグ)が付加されている。このデフォルトレベルは、例えば、ユーザが設定することができる。トラステッドアプリ42が1つも動作していない場合、セキュアレベルモジュール71は、例えば、OS41のセキュアレベルをデフォルトレベルに設定する。
図12は、図2のセキュアレベルモジュール71がOS41のセキュアレベルを設定する第1のセキュアレベル設定処理を説明するフローチャートである。このセキュアレベル設定処理は、例えば、トラステッドアプリ42およびアントラステッドアプリ44を含むアプリケーションプログラムが実行されるとき、あるいは、アプリケーションプログラムからセキュリティレベルの設定の要求があったとき開始される。
ステップS11において、セキュアレベルモジュール71は、実行しようとするアプリケーションプログラムの電子署名が正当であるかどうかを判定し、正当であると判定した場合、即ち、実行しようとするアプリケーションプログラムがトラステッドアプリ42である場合、ステップS12に進む。
ステップS12において、セキュアレベルモジュール71は、実行しようとするトラステッドアプリ42の要求セキュアレベルを認識し、ステップS13に進む。
ステップS13において、セキュアレベルモジュール71は、セキュアレベルテーブル(図11)の、実行しようとするトラステッドアプリ42の要求セキュアレベルに対して接続されているPIDの欄が空であるかどうかを判定する。
例えば、図11に示すようなセキュアレベルテーブルがセキュアレベルモジュール71に記憶されている場合、セキュアレベルL0、セキュアレベルL3、およびセキュアレベルL4に対して、PIDの欄が空であることを表すNULLが接続されているので、セキュアレベルモジュール71は、トラステッドアプリ42の要求セキュアレベルがセキュアレベルL0、セキュアレベルL3、セキュアレベルL4のいずれかであるとき、トラステッドアプリ42の要求セキュアレベルに対して接続されているPIDの欄は空であると判定する。
ステップS13において、セキュアレベルテーブルの、実行しようとするトラステッドアプリ42の要求セキュアレベルに対して接続されているPIDの欄が空であると判定された場合、ステップS14に進み、その要求セキュアレベルに対して、実行しようとするトラステッドアプリ42のPIDのPIDの欄を接続(追加)して、ステップS16に進む。
例えば、実行しようとするトラステッドアプリ42の要求セキュアレベルがセキュアレベルL1であり、トラステッドアプリ42のPIDが101である場合、セキュアレベルモジュール71は、図11に示すように、要求セキュアレベルであるセキュアレベルL1に対して、PID101のPIDの欄を接続し、そのPID101の欄にNULLを接続する。
ステップS13において、セキュアレベルテーブルの、実行しようとするトラステッドアプリ42の要求セキュアレベルに対して接続されているPIDの欄が空ではないと判定された場合、セキュアレベルモジュール71は、ステップS15に進み、実行しようとするトラステッドアプリ42のPIDのPIDの欄を、そのトラステッドアプリ42の要求セキュアレベルに対して接続されているPIDの欄(要求セキュアレベルに対して存在するPIDの欄の最初のPIDの欄)の前に挿入し、ステップS16に進む。
例えば、実行しようとするトラステッドアプリ42の要求セキュアレベルがセキュアレベルL2であり、セキュアレベルL2に対してPID100のPIDの欄が接続されている場合、即ち、要求セキュアレベルがセキュアレベルL2であるPIDが100のトラステッドアプリ42が実行中の場合、セキュアレベルモジュール71は、図11に示すように、セキュアレベルL2に対して接続されているPID100のPIDの欄の前にPID102のPIDの欄を挿入する。
ステップS16において、セキュアレベルモジュール71は、セキュアレベルテーブルを一番上から下の方向へスキャンして、最初に検出される空ではないPIDの欄が接続されているセキュアレベルを、OS41の候補セキュアレベルに設定し、ステップS16に進む。即ち、セキュアレベルモジュール71は、PIDの欄のPIDが付加された実行中、およびこれから実行しようとするトラステッドアプリ42の要求セキュアレベルのうちの最も高いセキュアレベルを、OS41の候補セキュアレベルに設定する。
なお、ステップS16において、セキュアレベルモジュール71は、デフォルトレベルとしてマークされているセキュアレベルも検出し、最初に検出される空ではないPIDの欄が接続するセキュアレベルが、デフォルトレベルより低い場合、候補セキュアレベルを、デフォルトレベルに設定することもできる。
例えば、図11に示すようなセキュアレベルテーブルがセキュアレベルモジュール71に記憶されている場合、セキュアレベルモジュール71は、セキュアレベルテーブルを、セキュアレベルL4からセキュアレベルL0の方向にスキャンして、最初に検出される空ではないPIDの欄が接続しているセキュアレベルであるセキュアレベルL2を、OS41の候補セキュアレベルに設定する。
ステップS17において、セキュアレベルモジュール71は、OS41のセキュアレベルをステップS16で設定された候補セキュアレベルに設定し、処理を終了する。
例えば、候補セキュアレベルがセキュアレベルL2である場合、カーネル51は、図8に示したように、セキュアレベルL2で保護するリソース空間以外のリソース空間である自由空間を、アントラステッドアプリ44を含む任意のアプリケーションプログラムが使用することができるようにする。従って、トラステッドアプリ42が要求するセキュリティを確保し、かつアントラステッドアプリ44が自由空間を使用することができる。
ステップS12乃至ステップS17の処理によれば、OS41のセキュアレベルが、実行されるトラステッドアプリ42に対応して動的に変化する。そして、そのOS41のセキュアレベルに応じて自由空間が変化するので、その自由空間であるリソース空間を、アントラステッドアプリ42を含む任意のアプリケーションプログラムに使用させることにより、実行するトラステッドアプリ42に応じて、アントラステッドアプリ42の使用可能なリソース空間を変化させることができる。
一方、ステップS11において、アプリケーションプログラムの電子署名が正当ではないと判定された場合、即ち、電子署名を有しない、または電子署名を有していても、その電子署名が正当ではないアントラステッドアプリ44である場合、ステップS18に進み、セキュアレベルモジュール71は、OS41のセキュアレベルの設定を行わず、処理を終了する。この場合、アプリケーションプログラムは、自由空間であるリソース空間しか使用できない。
図13は、セキュアレベルモジュール71がOS41のセキュアレベルを設定する第2のセキュアレベル設定処理を説明するフローチャートである。このセキュアレベル設定処理は、トラステッドアプリ42の実行が終了したとき、開始される。
ステップS31において、セキュアレベルモジュール71は、実行が終了したトラステッドアプリ42のPIDのPIDの欄をセキュアレベルテーブルから削除し、ステップS32に進む。
ステップS32において、セキュアレベルモジュール71は、セキュアレベルテーブルを一番上から下の方向にスキャンして、最初に検出される空ではないPIDの欄が接続されたセキュアレベルを、OS41のセキュアレベルに設定する。即ち、セキュアレベルモジュール71は、OS41のセキュアレベルを、実行中のトラステッドアプリ42が要求するセキュアレベルのうちの最も高いセキュアレベルに変更する。
また、セキュアレベルモジュール71は、実行中のトラステッドアプリ42が1つもなくなった場合、即ち、セキュアレベルL0乃至セキュアレベルL4に対して、1つもPIDの欄が接続されていない場合、デフォルトレベルとしてマークされているセキュアレベルをOS41の候補セキュアレベルに設定する。
ステップS32の処理後は、ステップS33に進み、セキュアレベルモジュール71は、図12のステップS17と同様に、OS41のセキュアレベルをステップS32で設定された候補セキュアレベルに設定し、処理を終了する。
図14は、図2のカーネル51がアントラステッドアプリ44に対してリソースの使用を制限するリソース制限処理を説明するフローチャートである。このリソース制限処理は、例えば、アントラステッドアプリ44がリソースの使用を要求したとき、開始される。
ステップS51において、カーネル51は、図12のステップS17または図13のステップS33で設定されたOS41のセキュアレベルを認識し、ステップS52に進む。
ステップS52において、カーネル51は、OS41のセキュアレベルに応じて、アントラステッドアプリ44のリソースの使用を制限(拒否)し、処理を終了する。
例えば、OS41のセキュアレベルがセキュアレベルL2である場合、カーネル51は、図8に示すように、セキュアレベルL2で保護されるリソース空間以外のリソース空間を自由空間とし、アントラステッドアプリ44の使用可能なリソース空間を自由空間のみに制限する。
上述した説明では、セキュアレベルは、セキュアレベルL0乃至L4の5段階としたが、何段階でもよい。
なお、上述した処理は、専用ハードウェアにより実行することもできる。
ここで、本明細書において、コンピュータに各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。
また、プログラムは、1のコンピュータにより処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。
なお、本発明は、汎用のコンピュータ(ワークステーション)の他、携帯電話機、その他の電子機器上で実行されるOS等に適用することができる。
11 CPU, 12 ROM, 13 RAM, 14 バス, 15 入出力インタフェース, 16 入力部, 17 出力部, 18 記憶部, 19 通信部, 20 ドライブ, 21 リムーバブル記録媒体, 41 OS, 42 トラステッドアプリケーションプログラム, 44 アントラステッドアプリケーションプログラム, 45 ライブラリ, 51 カーネル, 71 セキュアレベルモジュール