(57)【要約】【課題】サンドボックスの中で実行すると設定したプログラムを、より確実にサンドボックスの中で実行する実行装置を提供する。【解決手段】実行装置は、処理制御装置（ＣＰＵ）１０を備え、ＣＰＵ１０には、入力装置２１、出力装置２２、記憶装置２０が接続されている。更に、ＣＰＵ１０は、安全に実行したいプログラムを保存する特別保存領域を確保する特別保存領域確保手段１１、実行するプログラムが特別保存領域に保存されているか否か判定するプログラム判定手段１３、プログラム判定手段１３において、特別保存領域に保存されていると判断された場合、利用できる資源が制限された環境でプログラムを実行するプログラム実行手段１４等のモジュールを内蔵している。【選択図】図１
2006065493.tif 000002
【特許請求の範囲】
【請求項１】
記憶領域に保存されたプログラムを実行する実行装置であって、
安全に実行したいプログラムを保存する特別保存領域を確保する特別保存領域確保手段と、
実行するプログラムが前記特別保存領域に保存されているか否か判定する判定手段と、
前記判定手段において、前記特別保存領域に保存されていると判断された場合、利用できる資源が制限された環境でプログラムを実行する実行手段と
を備えることを特徴とする実行装置。
【請求項２】
前記特別保存領域にプログラムを保存する保存手段を更に備えることを特徴とする請求項１に記載の実行装置。
【請求項３】
前記判定手段において、前記特別保存領域に保存されていると判断された場合、プログラムが利用できる資源を設定する利用資源設定に基づいて、前記利用できる資源を判定する利用資源判定手段を更に備え、
前記実行手段は、前記利用資源判定手段によって利用可能と判定された資源のみを利用できる環境で、前記プログラムを実行することを特徴とする請求項１又は２に記載の実行装置。
【請求項４】
前記特別保存領域に保存されたプログラムを消去する消去手段を更に備えることを特徴とする請求項１〜３のいずれか１項に記載の実行装置。
【請求項５】
前記特別保存領域に保存されたプログラムを上書きする上書き手段を更に備えることを特徴とする請求項１〜４のいずれか１項に記載の実行装置。
【請求項６】
前記特別保存領域に保存されたプログラムを前記特別保存領域ではない別の領域に保存する第２の保存手段を更に備えることを特徴とする請求項１〜５のいずれか１項に記載の実行装置。
【請求項７】
前記実行手段によって、利用できる資源が制限された環境で実行されているプログラムに対して、利用できる資源の制限を解除する制限解除手段を更に備えることを特徴とする請求項１〜６のいずれか１項に記載の実行装置。
【請求項８】
利用できる資源の制限がない環境で実行されているプログラムに対して、前記実行手段による利用できる資源が制限された環境での実行を適用する制限適用手段を更に備えることを特徴とする請求項１〜７のいずれか１項に記載の実行装置。
【請求項９】
前記利用できる資源には、前記特別保存領域に存在する情報、あるいは、オペレーティングシステムが提供するシステムコールの一部が含まれることを特徴とする請求項１〜８のいずれか１項に記載の実行装置。
【請求項１０】
記憶領域に保存されたプログラムを実行する実行方法であって、
安全に実行したいプログラムを保存する特別保存領域を確保するステップと、
実行するプログラムが前記特別保存領域に保存されているか否か判定するステップと、
前記判定するステップにおいて、前記特別保存領域に保存されていると判断された場合、利用できる資源が制限された環境でプログラムを実行するステップと
を含むことを特徴とする実行方法。
【請求項１１】
記憶領域に保存されたプログラムを実行する実行装置に、
安全に実行したいプログラムを保存する特別保存領域を確保する手順と、
実行するプログラムが前記特別保存領域に保存されているか否か判定する手順と、
前記判定する手順において、前記特別保存領域に保存されていると判断された場合、利用できる資源が制限された環境でプログラムを実行する手順と
を実行させることを特徴とする実行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶領域に保存されたプログラムを実行する実行装置、実行方法及び実行プログラムに関する。
【背景技術】
【０００２】
ユーザがプログラムを入手する手段としては、店頭で製品を購入することの他に、ネットワークを介して取得することがある。後者の場合、ベンダが作成した製品の他に、個人や各種団体が作成したプログラムも多く存在する。このような状況において、ユーザがプログラムを実行するときには、事前にプログラムの実行内容を信頼する必要がある。しかし、プログラムは実行しないかぎり、正確な実行内容を把握することはできない。そこで、プログラムを安全に動作させるために利用可能な手段として、サンドボックス技術が存在する。
【０００３】
サンドボックスとは、プログラムが利用できる資源（ファイル、ネットワーク接続、システム設定、システムコール、デバイスなど）が制限された環境に閉じ込めた上で、プログラムを実行する実行環境のことである。代表的な例がＪａｖａ（登録商標）であり、Ｊａｖａ（登録商標）プログラムがＪａｖａ（登録商標）ＶＭによって提供されるサンドボックス内で実行される。他の例として、Ｊａｎｕｓ（例えば、非特許文献１参照。）では言語をＪａｖａ（登録商標）などに限定することなく、ＣＰＵが理解できるネイティブコードのプログラムをサンドボックス内で実行する。
【０００４】
また、別のサンドボックスとして、一つのサービスを実現する複数のプログラムを複数の記憶領域のいずれか一つに割り当て、サービスの実行が要求されたとき、同時に実行できるプログラムは、複数の記憶領域のうちの一つに保存されているプログラムのみに制限する。さらに、プログラムがアクセスできる領域はプログラムが割り当てられた領域のみに制限する技術が開示されている（例えば、特許文献１参照）。
【特許文献１】特開２００２−３５１５６７号公報
【非特許文献１】Ian Goldberg,David Wagner,Randi Thomas,and Eric A.Brewer,“A secure environment for untrusted helper applications: confining the wily hacker,”6th USENIX Security Symposium, July 1996.
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一般的にサンドボックスでプログラムを実行すると、制限した環境を提供するための処理分のオーバヘッドが生じてしまう。ただし、プログラム作成者が特定されているなどの理由により、ユーザ自身に不利益を与えないプログラムであると信頼できるのであれば、サンドボックスの中でプログラムを実行する必要はない。よって、このような場合には、プログラムをサンドボックスで実行するか否かを判別して、信頼できるプログラムはサンドボックスの中で実行しないようにすれば、オーバヘッドを生じなくなる。
【０００６】
プログラムをサンドボックスで実行する際には、プログラムに関連付けて保存された付加情報によって判別する。非特許文献１によると、この情報の一例としてファイル名が挙げられる。この場合は、ユーザもしくはシステムがサンドボックスで実行するプログラムのリストを記憶しておく。そして、プログラムを実行する際には、ユーザまたはシステム内に記憶されたリストによってサンドボックスで実行するか否かを判別する。
【０００７】
しかし、悪意のあるプログラムによってファイル名が変更されてしまうと、サンドボックスの中で実行しなければならないプログラムが、ユーザまたはシステム内で記憶されたリストにマッチしなくなるので、サンドボックスの中で実行されなくなる可能性がある。このように、ファイルの付加情報を用いる場合には、偽の付加情報が示されると、サンドボックスの中で実行すると設定したプログラムに対してサンドボックスが適用されなくなることが問題となる。
【０００８】
本発明は、上記の課題に鑑み、サンドボックスの中で実行すると設定したプログラムを、より確実にサンドボックスの中で実行する実行装置、実行方法及び実行プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の第１の特徴は、記憶領域に保存されたプログラムを実行する実行装置であって、（イ）安全に実行したいプログラムを保存する特別保存領域を確保する特別保存領域確保手段と、（ロ）実行するプログラムが特別保存領域に保存されているか否か判定する判定手段と、（ハ）判定手段において、特別保存領域に保存されていると判断された場合、利用できる資源が制限された環境でプログラムを実行する実行手段とを備える実行装置であることを要旨とする。
【００１０】
第１の特徴に係る実行装置によると、サンドボックスの中で実行すると設定したプログラムを、より確実にサンドボックスの中で実行することができる。
【００１１】
又、第１の特徴に係る実行装置は、特別保存領域にプログラムを保存する保存手段を更に備えてもよい。この実行装置によると、安全に実行したいプログラムを選択し、特別保存領域に保存することができる。
【００１２】
又、第１の特徴に係る実行装置は、判定手段において、特別保存領域に保存されていると判断された場合、プログラムが利用できる資源を設定する利用資源設定に基づいて、利用できる資源を判定する利用資源判定手段を更に備え、実行手段は、利用資源判定手段によって利用可能と判定された資源のみを利用できる環境で、プログラムを実行してもよい。この実行装置によると、利用する資源を任意に設定することができる。
【００１３】
又、第１の特徴に係る実行装置は、特別保存領域に保存されたプログラムを消去する消去手段を更に備えてもよい。この実行装置によると、特別保存領域に保存されるプログラムの増加を抑制することができる。
【００１４】
又、第１の特徴に係る実行装置は、特別保存領域に保存されたプログラムを上書きする上書き手段を更に備えてもよい。この実行装置によると、特別保存領域に保存されるプログラムを更新することができる。
【００１５】
又、第１の特徴に係る実行装置は、特別保存領域に保存されたプログラムを特別保存領域ではない別の領域に保存する第２の保存手段を更に備えてもよい。この実行装置によると、特別保存領域に保存したプログラムをその他の領域に保存することにより、サンドボックスなしでプログラムを実行することができる。
【００１６】
又、第１の特徴に係る実行装置は、実行手段によって、利用できる資源が制限された環境で実行されているプログラムに対して、利用できる資源の制限を解除する制限解除手段を更に備えてもよい。この実行装置によると、サンドボックスの中で実行されているプログラムをサンドボックスの外で実行するように変更することができる。このため、プログラム実行中にサンドボックスの中で実行するか否か切り替えることができる。
【００１７】
又、第１の特徴に係る実行装置は、利用できる資源の制限がない環境で実行されているプログラムに対して、実行手段による利用できる資源が制限された環境での実行を適用する制限適用手段を更に備えてもよい。この実行装置によると、サンドボックスの外で実行されているプログラムをサンドボックスの中で実行するように変更することができる。このため、プログラム実行中にサンドボックスの中で実行するか否か切り替えることができる。
【００１８】
又、第１の特徴に係る実行装置において、利用できる資源には、特別保存領域に存在する情報、あるいは、オペレーティングシステムが提供するシステムコールの一部が含まれていてもよい。
【００１９】
本発明の第２の特徴は、記憶領域に保存されたプログラムを実行する実行方法であって、（イ）安全に実行したいプログラムを保存する特別保存領域を確保するステップと、（ロ）実行するプログラムが特別保存領域に保存されているか否か判定するステップと、（ハ）判定するステップにおいて、特別保存領域に保存されていると判断された場合、利用できる資源が制限された環境でプログラムを実行するステップとを含む実行方法であることを要旨とする。
【００２０】
第２の特徴に係る実行方法によると、サンドボックスの中で実行すると設定したプログラムを、より確実にサンドボックスの中で実行することができる。
【００２１】
本発明の第３の特徴は、記憶領域に保存されたプログラムを実行する実行装置に、（イ）安全に実行したいプログラムを保存する特別保存領域を確保する手順と、（ロ）実行するプログラムが特別保存領域に保存されているか否か判定する手順と、（ハ）判定する手順において、特別保存領域に保存されていると判断された場合、利用できる資源が制限された環境でプログラムを実行する手順とを実行させる実行プログラムであることを要旨とする。
【００２２】
第３の特徴に係る実行プログラムによると、サンドボックスの中で実行すると設定したプログラムを、より確実にサンドボックスの中で実行することができる。
【発明の効果】
【００２３】
本発明によると、サンドボックスの中で実行すると設定したプログラムを、より確実にサンドボックスの中で実行する実行装置、実行方法及び実行プログラムを提供することができる。
【発明を実施するための最良の形態】
【００２４】
次に、図面を参照して、本発明の第１〜第５の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には、同一又は類似の符号を付している。ただし、図面は模式的なものであることに留意すべきである。
【００２５】
＜第１の実施の形態＞
（実行装置）
第１の実施の形態に係る実行装置は、図１に示すように、処理制御装置（ＣＰＵ）１０を備え、ＣＰＵ１０には、入力装置２１、出力装置２２、記憶装置２０が接続されている。更に、ＣＰＵ１０は、特別保存領域確保手段１１、プログラム保存手段１２、プログラム判定手段１３、プログラム実行手段１４等のモジュールを内蔵している。これらのモジュールは、パーソナルコンピュータ等の汎用コンピュータにおいて、所定のプログラム言語を利用するための専用プログラムを実行することにより実現することができる。尚、図１では、特別保存領域確保手段１１、プログラム保存手段１２、プログラム判定手段１３、プログラム実行手段１４、プログラム保存手段１２を、ＣＰＵ１０上に備えるが、これらの手段は、実行装置内の他の箇所、例えばメモリ上などに実装されても良いことは勿論である。後述する、図９、図１１、図１３、図１５についても同様である。
【００２６】
特別保存領域確保手段１１は、ユーザが入手したプログラムのうち、動作を信頼できないなどの理由により、安全に実行したいものを保存するための特別な保存領域（以下において、「特別保存領域」と呼ぶ。）を記憶装置２０内の記憶領域上に確保する。特別保存領域を確保する単位としては、図２（ａ）に示すように、記憶領域を分割した内の一部を割り当ててもよく、図２（ｂ）に示すように、複数の記憶領域が存在するならば、その内の一部の記憶領域を割り当ててもよい。図２（ａ）に示すように、記憶領域の一部を割り当てる単位としては、パーティション、ディレクトリ（フォルダ）などが考えられる。一方、図２（ｂ）に示すように、複数の記録領域の一部を特別保存領域とする単位としては、物理的な記録媒体（装置内のメモリ、ＳＤカード、フロッピー（登録商標）ディスク）などが考えられる。また、図２（ａ）と図２（ｂ）を同時に用いて割り当ててもよい。
【００２７】
記憶領域は、オペレーティングシステム（ＯＳ）やアプリケーションなどのプログラムや、システムやアプリ用の設定ファイル、ユーザが作成したファイルなどが保存されている。このうち、プログラムにはもともと装置に保存されたものや、後からユーザが追加したものなどがある。そして、特別保存領域、またはその他の領域に保存されている。
【００２８】
具体的な記憶装置２０の例としては、メモリ、ハードディスク、ＣＤ−Ｒ／ＲＷ、コンパクトフラッシュ（登録商標）などがあげられる。
【００２９】
プログラム保存手段１２は、安全に実行したいプログラムを特別保存領域に保存する。特別保存領域に保存するプログラムは、何らかの通信手段によってネットワークから取得してもよく、外部記憶媒体に保存されていてもよく、特別保存領域ではない別の領域（以下において、「その他の領域」と呼ぶ。）に保存されてもよい。
【００３０】
プログラムを保存するときには、図３で示す例のように、特別保存領域の中に存在するプログラム保存用のディレクトリに格納してもよい。このとき、特別保存領域とその他の領域に保存されるデータは、図４のようにマッピングして保存する。ただし、プログラムの保存方法はここで示した方法のみに限定せず、他の方法を用いてもかまわない。
【００３１】
又、プログラム保存手段１２は、一度、特別保存領域に保存されたプログラムをその他の領域に保存する。逆に、プログラム保存手段１２は、一度、その他の領域に保存されたプログラムを特別保存領域に保存する。
【００３２】
プログラム判定手段１３は、プログラムの実行を始める際に、プログラムが保存されている領域に基づいて、サンドボックスに閉じ込めて実行するか否かを判定する。実行するプログラムは、特別保存領域かその他の領域に保存されている。このとき、特別保存領域に保存されたプログラムであれば、サンドボックスの中で安全に実行すると判定し、その他の領域であれば、制限なしの環境で実行すると判定する。特別保存領域に保存されるプログラムとしては、ユーザが後から導入したプログラムのうち、安全に実行したいもの、例えば、その動作を信頼できないものを保存する。その他の領域に保存されるプログラムとしては、もともと装置に導入済みのプログラム、動作を信頼できるプログラム、ユーザ自身が作成したプログラムなどが考えられる。
【００３３】
プログラム実行手段１４は、プログラム判定手段１３の判定結果に基づいてプログラムを実行する。サンドボックスの中で実行すると判定された場合には、資源を制限された環境に閉じ込めた上でプログラムを実行する。そうでなれば、通常の制限のない環境でプログラムを実行する。ここで、「資源」とは、キー、ディスプレイ、スピーカー、記憶媒体など物理的なデバイスや、記憶媒体上の記憶領域、ファイル、ディレクトリなど論理的な資源、何らかの通信手段によるネットワークアクセスや接続可能なサーバなど通信関連の資源、システムコールなどＯＳが提供する資源などがあげられる。又、資源を特別保存領域に保存してもよい。これらの資源のうちプログラムがアクセスしてもよいと判定されるもののみ実行中に利用することができる。
【００３４】
入力装置２１は、キーボード、マウス等の機器を指す。入力装置２１から入力操作が行われると対応するキー情報が処理制御装置（ＣＰＵ）１０に伝達される。出力装置２２は、モニタ、スピーカー、ライト、プリンターなどの装置を指し、液晶表示装置（ＬＣＤ）、発光ダイオード（ＬＥＤ）パネル、エレクトロルミネッセンス（ＥＬ）パネル等が使用可能である。
【００３５】
又、図示していないが、実行装置は、特別保存領域確保処理、プログラム保存処理、プログラム判定処理、プログラム実行処理などを処理制御装置（ＣＰＵ）に実行させるための実行プログラムを蓄積する、プログラム保持部を備えてもよい。この実行プログラムを読み出すことにより、実行装置に上記の処理を実現させることが可能となる。プログラム保持部は、例えば、ＲＡＭ、ＲＯＭ、ハードディスク、フレキシブルディスク、コンパクトディスク、ＩＣチップ、カセットテープなどの記録媒体である。このような記録媒体によれば、実行プログラムの蓄積、運搬、販売などを容易に行うことができる。
【００３６】
（実行方法）
次に、第１の実施の形態に係る実行方法について、図５及び図６を用いて説明する。図５は、プログラムを管理するためのルーチンを示し、図６は、プログラムを実行するときのルーチンを示す。
【００３７】
尚、以下において説明する実行方法は、プログラム保持部などに保持された実行プログラムを読み出し、実行することによっても実現できる。即ち、実行方法における各ステップは、実行プログラムによって実行できる各手順に対応する。
【００３８】
まず、ステップＳ１０１において、特別保存領域確保手段１１は、安全に実行したいプログラムを保存するための特別保存領域を記憶領域上に確保する。
【００３９】
次に、ステップＳ１０２において、ユーザによる入力装置２１を用いた指示などにより、プログラム保存手段１２は、プログラムを保存するか否か判断し、保存する場合は、ステップＳ１０３へ進み、保存しない場合は、ステップＳ１０４へ進む。ステップＳ１０３において、安全に実行したいプログラムである場合には、当該プログラムを特別保存領域に保存し、そうでない場合には、プログラムをその他の領域に保存する。又、プログラム保存手段１２は、一度、特別保存領域に保存されたプログラムをその他の領域に保存することもできる。逆に、プログラム保存手段１２は、一度、その他の領域に保存されたプログラムを特別保存領域に保存することもできる。
【００４０】
次に、ステップＳ１０４において、ユーザによる入力装置２１を用いた指示などにより、プログラム実行手段１４は、プログラムを実行するか否か判断し、実行する場合は、ステップＳ１０５へ進み、実行しない場合は、ステップＳ１０２へ戻る。
【００４１】
次に、ステップＳ１０５において、プログラム実行手段１４は、プログラムを実行するがその詳細は図６に示す。
【００４２】
まず、プログラム判定手段１３は、ステップＳ２０１において、実行しようとするプログラムが特別保存領域に保存されているか否かを判定する。特別保存領域に保存されている場合は、ステップＳ２０２へ進み、その他の領域に保存されている場合は、ステップＳ２０３へ進む。
【００４３】
次に、ステップＳ２０２において、プログラム実行手段１４は、制限された資源、即ち、サンドボックスの中でプログラムを実行する。そして、プログラム実行ルーチンを終了する。
【００４４】
一方、ステップＳ２０３において、プログラム実行手段１４は、制限のない通常の実行を行う。そして、プログラム実行ルーチンを終了する。
【００４５】
（作用及び効果）
第１の実施の形態では、例えば、実行装置内の記憶領域に特別保存領域を確保するとすると、ユーザがネットワークを介してプログラムを入手した場合、プログラムを安全に実行したいのであれば、特別保存領域にそのプログラムを保存する。次に、ユーザが装置内に保存されたプログラムを実行するとき、プログラムが特別保存領域に保存されたプログラムであれば、サンドボックスの中に閉じ込めてプログラムを実行する。サンドボックスで実行されるとき、利用が許可された資源とは、プログラムが保存された特別保存領域としてもよいし、オペレーティングシステムが提供するシステムコール全部または一部としてもよい。もちろん、ここであげた以外の資源に制限してもよい。このように、プログラムが保存された領域に基づいて、サンドボックス内で実行するか否かを決定すると、保存された領域自体はファイル名のように偽ることが困難であるため、確実にサンドボックス内でプログラムを安全に実行することができる。
【００４６】
即ち、第１の実施の形態に係る実行装置、実行方法及び実行プログラムによると、プログラムを実行するときに、保存された領域（特別保存領域、その他領域）に基づいて、プログラムを安全に実行するか否かを判定する。そして、判定結果によって利用できる資源を指定された環境の下でプログラムを実行する。
【００４７】
このとき、例えば、図７に示すように、プログラムのファイル名をプログラムＡからプログラムＧへ変更するなど付加情報を変更しても、プログラムが保存された領域そのものを偽ることは困難である。
【００４８】
又、図８に示すように、プログラムＡの保存領域を特別保存領域からその他の領域へ改変したとしても、プログラムＡの保存領域を偽るとプログラムＡが読み出されないので、プログラムＡが実行されなくなる。
【００４９】
よって、第１の実施の形態において説明した手順によると、プログラムをサンドボックスに確実に閉じ込めて安全に実行することができる。
【００５０】
又、第１の実施の形態に係る実行装置は、特別保存領域にプログラムを保存するプログラム保存手段１２を備えることにより、安全に実行したいプログラムを選択し、特別保存領域に保存することができる。さらに、プログラム保存手段１２は、特別保存領域に保存されたプログラムをその他の領域に保存することができる。このため、特別保存領域に保存したプログラムをその他の領域に保存することにより、サンドボックスなしでプログラムを実行することができる。
【００５１】
＜第２の実施の形態＞
（実行装置）
第１の実施の形態では、実行時にプログラムが資源は領域ごとに決まる。つまり、特別保存領域に保存されたプログラムは前もって決められた資源を利用する。このため、利用できる資源の組み合わせが何通りか考えられる場合には、特別保存領域を複数確保することになる。
【００５２】
そこで、第２の実施の形態では、プログラムが利用できる資源を第１の実施の形態よりも細かく指定できるようにする。
【００５３】
第２の実施の形態に係る実行装置は、図９に示すように、処理制御装置（ＣＰＵ）１０を備え、ＣＰＵ１０には、入力装置２１、出力装置２２、記憶装置２０が接続されている。更に、ＣＰＵ１０は、特別保存領域確保手段１１、プログラム保存手段１２、プログラム判定手段１３、プログラム実行手段１４、利用資源判定手段１５等のモジュールを内蔵している。
【００５４】
利用資源判定手段１５は、プログラム判定手段１３において、特別保存領域に保存されていると判断された場合、プログラムが利用できる資源を設定する利用資源設定に基づいて、利用できる資源を判定する。
【００５５】
プログラム実行手段１４は、利用資源判定手段１５によって利用可能と判定された資源のみを利用できる環境で、プログラムを実行する。
【００５６】
プログラム実行手段１４のその他の機能、特別保存領域確保手段１１、プログラム保存手段１２、プログラム判定手段１３、入力装置２１、出力装置２２、記憶装置２０については、第１の実施の形態と同様であるので、ここでは説明を省略する。
【００５７】
（実行方法）
次に、第２の実施の形態に係る実行方法について、図５及び図１０を用いて説明する。図５は、プログラムを管理するためのルーチンを示し、図１０は、プログラムを実行するときのルーチンを示す。
【００５８】
尚、以下において説明する実行方法は、プログラム保持部などに保持された実行プログラムを読み出し、実行することによっても実現できる。即ち、実行方法における各ステップは、実行プログラムによって実行できる各手順に対応する。
【００５９】
図５は第１の実施の形態において、説明したとおりであるので、ここでは、図１０についてのみ説明する。
【００６０】
まず、ステップＳ３０１において、プログラム判定手段１３は、実行しようとするプログラムが特別保存領域に保存されているか否かを判定する。特別保存領域に保存されている場合は、ステップＳ３０２へ進み、その他の領域に保存されている場合は、ステップＳ３０５へ進む。
【００６１】
次に、ステップＳ３０２において、利用資源判定手段１５は、記憶領域に保存された利用資源設定に基づいて、プログラムが利用可能な資源を判定する。ここで、「利用資源設定」とは、プログラムが利用できる資源を設定するために用いられる。「利用資源設定」の例として、プログラムと利用可能な資源（ディレクトリ、ファイル、デバイス、ネットワーク接続先、など）の組が記述された形態が考えられる。そして、ステップＳ３０３において、利用資源判定手段１５は、利用資源の設定を行う。
【００６２】
次に、ステップＳ３０４において、プログラム実行手段１４は、制限された資源、即ち、サンドボックスの中でプログラムを実行する。そして、プログラム実行ルーチンを終了する。
【００６３】
一方、ステップＳ３０５において、プログラム実行手段１４は、制限のない通常の実行を行う。そして、プログラム実行ルーチンを終了する。
【００６４】
（作用及び効果）
第２の実施の形態に係る実行装置、実行方法及び実行プログラムによると、プログラムを安全に実行するか判定した後、プログラムを実行する前に、プログラムが利用できる資源を設定した利用資源設定によって、利用できる資源を決定して実行する。
【００６５】
これにより、プログラムまたはプログラムグループ毎に、利用可能な資源を設定してサンドボックスの中で実行することができる。
【００６６】
＜第３の実施の形態＞
（実行装置）
これまでに説明した第１及び第２の実施の形態では、プログラムを保存する手段を提供している。実行装置内の記憶領域が保存できるデータ量には上限があることが一般的であるため、記憶領域を有効利用できる手段を提供することが望ましい。
【００６７】
そこで、第３の実施の形態では、特別保存領域に保存したプログラムを消去できるようにする。
【００６８】
第３の実施の形態に係る実行装置は、図１１に示すように、処理制御装置（ＣＰＵ）１０を備え、ＣＰＵ１０には、入力装置２１、出力装置２２、記憶装置２０が接続されている。更に、ＣＰＵ１０は、特別保存領域確保手段１１、プログラム保存手段１２、プログラム判定手段１３、プログラム実行手段１４、プログラム消去手段１６等のモジュールを内蔵している。
【００６９】
プログラム消去手段１６は、特別保存領域に保存されたプログラムを消去する。
【００７０】
特別保存領域確保手段１１、プログラム保存手段１２、プログラム判定手段１３、プログラム実行手段１４、入力装置２１、出力装置２２、記憶装置２０については、第１の実施の形態と同様であるので、ここでは説明を省略する。
【００７１】
（実行方法）
次に、第３の実施の形態に係る実行方法について、図１２を用いて説明する。図１２は、プログラムを管理するためのルーチンを示し、プログラムを実行するときのルーチンについては、図６あるいは図１０のどちらを用いても構わない。
【００７２】
尚、以下において説明する実行方法は、プログラム保持部などに保持された実行プログラムを読み出し、実行することによっても実現できる。即ち、実行方法における各ステップは、実行プログラムによって実行できる各手順に対応する。
【００７３】
まず、ステップＳ４０１において、特別保存領域確保手段１１は、安全に実行したいプログラムを保存するための特別保存領域を記憶領域上に確保する。
【００７４】
次に、ステップＳ４０２において、プログラム保存手段１２は、ユーザによる入力装置２１を用いた指示などにより、プログラムを保存するか否か判断し、保存する場合は、ステップＳ４０３へ進み、保存しない場合は、ステップＳ４０４へ進む。ステップＳ４０３において、安全に実行したいプログラムである場合には、当該プログラムを特別保存領域に保存し、そうでない場合には、プログラムをその他の領域に保存する。
【００７５】
次に、ステップＳ４０４において、ユーザによる入力装置２１を用いた指示などにより、プログラム実行手段１４は、プログラムを実行するか否か判断し、実行する場合は、ステップＳ４０５へ進み、実行しない場合は、ステップＳ４０６へ進む。
【００７６】
次に、ステップＳ４０５において、プログラム実行手段１４は、プログラムを実行するがその詳細は図６あるいは図１０に示すとおりである。
【００７７】
次に、ステップＳ４０６において、ユーザによる入力装置２１を用いた指示などにより、プログラム消去手段１６は、特別保存領域に保存されたプログラムを消去するか否か判断する。消去する場合はステップＳ４０７へ進み、消去しない場合はステップＳ４０２へ戻る。そして、ステップＳ４０７において、プログラム消去手段１６は、特別保存領域に保存されたプログラムを消去する。
【００７８】
（作用及び効果）
第３の実施の形態に係る実行装置、実行方法及び実行プログラムによると、プログラムの保存、実行、消去の管理を行うことができる。
【００７９】
第３の実施の形態では、ユーザが特別保存領域に保存したプログラムを消去することができるため、特別保存領域を有効に利用することができる。
【００８０】
＜第４の実施の形態＞
（実行装置）
上述した第３の実施の形態では、プログラムの保存、実行、消去の手段を提供する。ところで、外部から入手したプログラムはバグ取りや機能拡張などによってバージョンアップするのが一般的である。このため、実行装置の記憶領域に保存したプログラムを更新できることが望ましい。
【００８１】
そこで、第４実施の形態では、特別保存領域に保存したプログラムを上書きできるようにする。
【００８２】
第４の実施の形態に係る実行装置は、図１３に示すように、処理制御装置（ＣＰＵ）１０を備え、ＣＰＵ１０には、入力装置２１、出力装置２２、記憶装置２０が接続されている。更に、ＣＰＵ１０は、特別保存領域確保手段１１、プログラム保存手段１２、プログラム判定手段１３、プログラム実行手段１４、プログラム消去手段１６、プログラム上書き手段１７等のモジュールを内蔵している。
【００８３】
プログラム上書き手段１７は、特別保存領域に保存されたプログラムを上書きする。
【００８４】
特別保存領域確保手段１１、プログラム保存手段１２、プログラム判定手段１３、プログラム実行手段１４、プログラム消去手段１６、入力装置２１、出力装置２２、記憶装置２０については、第３の実施の形態と同様であるので、ここでは説明を省略する。
【００８５】
（実行方法）
次に、第４の実施の形態に係る実行方法について、図１４を用いて説明する。図１４は、プログラムを管理するためのルーチンを示し、プログラムを実行するときのルーチンについては、図６あるいは図１０のどちらを用いても構わない。
【００８６】
尚、以下において説明する実行方法は、プログラム保持部などに保持された実行プログラムを読み出し、実行することによっても実現できる。即ち、実行方法における各ステップは、実行プログラムによって実行できる各手順に対応する。
【００８７】
まず、ステップＳ５０１において、特別保存領域確保手段１１は、安全に実行したいプログラムを保存するための特別保存領域を記憶領域上に確保する。
【００８８】
次に、ステップＳ５０２において、プログラム保存手段１２は、ユーザによる入力装置２１を用いた指示などにより、プログラムを保存するか否か判断し、保存する場合は、ステップＳ５０３へ進み、保存しない場合は、ステップＳ５０４へ進む。ステップＳ５０３において、安全に実行したいプログラムである場合には、当該プログラムを特別保存領域に保存し、そうでない場合には、プログラムをその他の領域に保存する。
【００８９】
次に、ステップＳ５０４において、ユーザによる入力装置２１を用いた指示などにより、プログラム実行手段１４は、プログラムを実行するか否か判断し、実行する場合は、ステップＳ５０５へ進み、実行しない場合は、ステップＳ５０６へ進む。
【００９０】
次に、ステップＳ５０５において、プログラム実行手段１４は、プログラムを実行するがその詳細は図６あるいは図１０に示すとおりである。
【００９１】
次に、ステップＳ５０６において、ユーザによる入力装置２１を用いた指示などにより、プログラム消去手段１６は、特別保存領域に保存されたプログラムを消去するか否か判断する。消去する場合はステップＳ５０７へ進み、消去しない場合はステップＳ５０８へ進む。そして、ステップＳ５０７において、プログラム消去手段１６は、特別保存領域に保存されたプログラムを消去する。
【００９２】
次に、ステップＳ５０８において、ユーザによる入力装置２１を用いた指示などにより、プログラム上書き手段１７は、特別保存領域に保存されたプログラムを上書きするか否か判断する。上書きする場合はステップＳ５０９へ進み、上書きしない場合はステップＳ５０２へ戻る。そして、ステップＳ５０９において、プログラム上書き手段１７は、特別保存領域に保存されたプログラムを上書きする。
【００９３】
（作用及び効果）
第４の実施の形態に係る実行装置、実行方法及び実行プログラムによると、プログラムの保存、実行、消去、上書きの管理を行うことができる。
【００９４】
第４の実施の形態は、ユーザが特別保存領域に保存したプログラムを別のプログラムコードで上書きすることができるため、特別保存領域に保存されたプログラムを容易にバージョンアップできる。
【００９５】
＜第５の実施の形態＞
（実行装置）
上述した第４の実施の形態では、プログラムの保存、実行、消去、上書きの手段を提供する。ところで、プログラムを実行する際に、保存された領域によって、サンドボックスの中で実行するか否かを決めていた。しかし、サンドボックスの管理をより柔軟に行うためには、プログラムを実行しているときにサンドボックスの中で実行するか否かを切り替えることができるのが望ましい。そこで、第５の実施の形態では、プログラム実行中に、サンドボックスの中で実行するか外で実行するかを切り替えられるようにする。
【００９６】
第５の実施の形態に係る実行装置は、図１５に示すように、処理制御装置（ＣＰＵ）１０を備え、ＣＰＵ１０には、入力装置２１、出力装置２２、記憶装置２０が接続されている。更に、ＣＰＵ１０は、特別保存領域確保手段１１、プログラム保存手段１２、プログラム判定手段１３、プログラム実行手段１４、利用資源判定手段１５、制限解除手段１８、制限適用手段１９等のモジュールを内蔵している。
【００９７】
制限解除手段１８は、プログラム実行手段１４によって、利用できる資源が制限された環境で実行されているプログラムに対して、利用できる資源の制限を解除する。
【００９８】
制限適用手段１９は、利用できる資源の制限がない環境で実行されているプログラムに対して、プログラム実行手段１４による利用できる資源が制限された環境での実行を適用する。
【００９９】
特別保存領域確保手段１１、プログラム保存手段１２、プログラム判定手段１３、プログラム実行手段１４、利用資源判定手段１５、入力装置２１、出力装置２２、記憶装置２０については、第２の実施の形態と同様であるので、ここでは説明を省略する。
【０１００】
（実行方法）
次に、第５の実施の形態に係る実行方法について、図１６を用いて説明する。図１６は、プログラムを実行するときのルーチンを示し、プログラムを管理するためのルーチンについては、図５、図１２、図１４のいずれを用いても構わない。
【０１０１】
尚、以下において説明する実行方法は、プログラム保持部などに保持された実行プログラムを読み出し、実行することによっても実現できる。即ち、実行方法における各ステップは、実行プログラムによって実行できる各手順に対応する。
【０１０２】
プログラムを管理するためのルーチンは、第１〜第４の実施の形態において、説明したとおりであるので、ここでは、図１６についてのみ説明する。
【０１０３】
まず、ステップＳ６０１において、プログラム判定手段１３は、実行しようとするプログラムが特別保存領域に保存されているか否かを判定する。特別保存領域に保存されている場合は、ステップＳ６０２へ進み、その他の領域に保存されている場合は、ステップＳ６０５へ進む。
【０１０４】
次に、ステップＳ６０２において、利用資源判定手段１５は、記憶領域に保存された利用資源設定に基づいて、プログラムが利用可能な資源を判定する。そして、ステップＳ６０３において、利用資源判定手段１５は、利用資源の設定を行う。
【０１０５】
次に、ステップＳ６０４において、プログラム実行手段１４は、制限された資源、即ち、サンドボックスの中でプログラムを実行する。このとき、ユーザによる入力装置２１を用いた指示などにより、制限解除手段１８は、ステップＳ６０６において、制限付きの実行ルーチン（Ｓ６０４）において実行されているプログラムを、制限なしの通常の実行ルーチン（Ｓ６０５）に移行させる。
【０１０６】
一方、ステップＳ６０５において、プログラム実行手段１４は、制限のない通常の実行を行う。このとき、ユーザによる入力装置２１を用いた指示などにより、制限適用手段１９は、ステップＳ６０７において、制限なしの通常の実行ルーチン（Ｓ６０５）において実行されているプログラムを、制限付きの実行ステップ（Ｓ６０４）に移行させる。
【０１０７】
（作用及び効果）
第５の実施の形態に係る実行装置、実行方法及び実行プログラムによると、プログラムの保存、実行、消去、上書き、実行切り替えの管理を行うことができる。
【０１０８】
第５の実施の形態は、実行中のプログラムをサンドボックスの中で実行するか否か切り替えることができるため、サンドボックスの管理をより柔軟に行うことができる。
【０１０９】
（その他の実施形態）
本発明は上記の実施形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例及び運用技術が明らかとなろう。
【０１１０】
例えば、本発明の実施の形態では、特別保存領域確保手段１１、プログラム保存手段１２、プログラム判定手段１３、プログラム実行手段１４等を一つの処理制御装置（ＣＰＵ）内にあるとして説明したが、それらが二つあるいはそれ以上の処理制御装置に分かれていても構わない。その際はそれらの処理制御装置間でデータのやりとりが行えるようにバスなどで装置間を接続しているとする。
【０１１１】
このように、本発明はここでは記載していない様々な実施形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【０１１２】
【図１】第１の実施の形態に係る実行装置の構成ブロック図である。
【図２】第１の実施の形態に係る実行装置の記憶領域を説明するための模式図である。
【図３】第１の実施の形態に係る実行装置のプログラムの保存方法を説明するための模式図である（その１）。
【図４】第１の実施の形態に係る実行装置のプログラムの保存方法を説明するための模式図である（その２）。
【図５】第１の実施の形態に係る実行方法を示すフローチャートである（その１）。
【図６】第１の実施の形態に係る実行方法を示すフローチャートである（その２）。
【図７】第１の実施の形態に係る実行装置の効果を説明するための図である（その１）。
【図８】第１の実施の形態に係る実行装置の効果を説明するための図である（その２）。
【図９】第２の実施の形態に係る実行装置の構成ブロック図である。
【図１０】第２の実施の形態に係る実行方法を示すフローチャートである。
【図１１】第３の実施の形態に係る実行装置の構成ブロック図である。
【図１２】第３の実施の形態に係る実行方法を示すフローチャートである。
【図１３】第４の実施の形態に係る実行装置の構成ブロック図である。
【図１４】第４の実施の形態に係る実行方法を示すフローチャートである。
【図１５】第５の実施の形態に係る実行装置の構成ブロック図である。
【図１６】第５の実施の形態に係る実行方法を示すフローチャートである。
【符号の説明】
【０１１３】
１０…ＣＰＵ
１１…特別保存領域確保手段
１２…プログラム保存手段
１３…プログラム判定手段
１４…プログラム実行手段
１５…利用資源判定手段
１６…プログラム消去手段
１７…プログラム上書き手段
１８…制限解除手段
１９…制限適用手段
２０…記憶装置
２１…入力装置
２２…出力装置
【図１】
2006065493.tif 000003
【図２】
2006065493.tif 000004
【図３】
2006065493.tif 000005
【図４】
2006065493.tif 000006
【図５】
2006065493.tif 000007
【図６】
2006065493.tif 000008
【図７】
2006065493.tif 000009
【図８】
2006065493.tif 000010
【図９】
2006065493.tif 000011
【図１０】
2006065493.tif 000012
【図１１】
2006065493.tif 000013
【図１２】
2006065493.tif 000014
【図１３】
2006065493.tif 000015
【図１４】
2006065493.tif 000016
【図１５】
2006065493.tif 000017
【図１６】
2006065493.tif 000018