(57)【特許請求の範囲】
【請求項１】
カーネル部と、
前記システムコールの実行の可否を決定する管理部と、を備え、
前記カーネル部は、
アプリケーションからの前記システムコールの実行要求があった場合に、前記システムコールの識別情報と実行内容とが対応づけられた情報を含むシステムコール情報を記憶する要求記憶部と、
前記システムコールの識別情報を前記管理部に対して通知する要求通知部と、
前記システムコールの実行の可否、及び実行保留を表す情報を前記管理部から取得する第２取得部と、
前記実行が許可、又は不許可である旨を表す情報を前記第２取得部が取得するまで前記システムコールの実行を保留する保留部と、
前記システムコールを実行するシステムコール実行部と、
を備え、
前記管理部は、
前記要求通知部から通知された前記システムコールの識別情報に基づいて前記実行内容を前記要求記憶部から取得する第１取得部と、
取得した前記実行内容を、所定の判定ルールに従って実行できるか否かを決定する実行判定部と、
前記実行の可否を前記カーネル部に送信する判定結果通知部と、
を備え、
前記要求記憶部は、受信した前記実行の可否を表す情報を、記憶された前記システムコールの識別情報と対応づけて記憶し、
前記保留部は、前記第２取得部が取得した、前記要求記憶部に記憶された前記実行の可否、及び実行保留を表す情報から、前記システムコールの実行の保留を解除するか否かを決定し、
前記システムコール実行部は、前記システムコールの実行の保留が解除された場合に、解除された前記システムコールを実行する
ことを特徴とする情報処理装置。
【請求項２】
前記情報処理装置の起動時に前記管理部を認証する認証部と、
認証した前記管理部の識別情報を登録する登録部と、
を更に備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記カーネル部は、
前記実行が許可もしくは不許可である旨を表す情報が所定の時間前記管理部から通知されていないことを検知し、再送回数が所定の回数以下の場合には前記要求通知部に再度前記実行要求を再送させるタイムアウト検出部と、
前記再送回数が、前記所定の回数を超えた場合、又は登録された前記管理部が存在しない場合に、予め定めたデフォルト動作を取得し、前記デフォルト動作に基づいて前記システムコールを実行するデフォルト実行部と、
を更に備えることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記カーネル部は、
前記管理部の動作状況を確認し、前記動作状況が異常状態の場合には、予め定めたデフォルト動作を取得し、前記デフォルト動作に基づいて前記システムコールを実行するデフォルト実行部、
を更に備えることを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記システムコール実行部は、前記管理部からの前記システムコールに対しては、前記管理部における実行の可否の判定を行うことなく、前記システムコールを実行する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
要求記憶部を備えるコンピュータを、
カーネル部と、
前記システムコールの実行の可否を決定する管理部と、として機能させるためのプログラムであって、
カーネル部は、
アプリケーションからの前記システムコールの実行要求があった場合に、前記システムコールの識別情報と実行内容とが対応づけられた情報を含むシステムコール情報を記憶する要求記憶部と、
前記システムコールの識別情報を前記管理部に対して通知する要求通知部と、
前記システムコールの実行の可否、及び実行保留を表す情報を前記管理部から取得する第２取得部と、
前記実行が許可、又は不許可である旨を表す情報を前記第２取得部が取得するまで前記システムコールの実行を保留する保留部と、
前記システムコールを実行するシステムコール実行部と、
を備え、
前記管理部は、
前記要求通知部から通知された前記システムコールの識別情報に基づいて前記実行内容を前記要求記憶部から取得する第１取得部と、
取得した前記実行内容を、所定の判定ルールに従って実行できるか否かを決定する実行判定部と、
前記実行の許可又は不許可を前記カーネル部に送信する判定結果通知部と、
を備え、
前記要求記憶部は、受信した前記実行の許可又は不許可を表す情報を、記憶された前記システムコールの識別情報と対応づけて記憶し、
前記保留部は、前記第２取得部が取得した、前記要求記憶部に記憶された前記実行の許可又は不許可、及び実行保留を表す情報から、前記システムコールの実行の保留を解除するか否かを決定し、
前記システムコール実行部は、前記システムコールの実行の保留が解除された場合に、解除された前記システムコールを実行する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、プログラムに関する。
【背景技術】
【０００２】
近年情報端末を利用する環境に応じて、情報端末の機能を制限することが要求されているが、その要求条件は利用する環境のセキュリティポリシーによって異なることが多く、柔軟に制限内容を変更できる必要がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２００４／０００３１３７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、カーネルにおいてシステムコールの実行許可又は不許可を判定するような設計の場合、システムコールの実行条件を様々な状況に対して詳細に対応できるように設定しようとすると、カーネル自体のソースコードを変更する必要があり、労力やメンテナンス性の観点から課題が残っていた。特に上述のように柔軟にセキュリティ制御の内容を変更したい場合には、カーネル自体のソースコードの変更を頻繁に行う必要が出てくるため、従来のカーネルのみでの実現ではコスト上の課題がある。
【課題を解決するための手段】
【０００５】
上述した課題を解決し、目的を達成するために、本発明の実施形態は、カーネル部と、前記システムコールの実行の許可又は不許可を決定する管理部と、を備える情報処理装置である。前記カーネル部は、アプリケーションからの前記システムコールの実行要求があった場合に、前記システムコールの識別情報と実行内容とが対応づけられた情報を含むシステムコール情報を記憶する要求記憶部と、前記システムコールの識別情報を前記管理部に対して通知する実行要求通知部と、前記管理部からの前記システムコールの実行のの許可又は不許可、及び実行保留を表す情報を取得する第２取得部と、前記実行の許可、又は不許可を表す情報を前記第２取得部が取得するまで前記システムコールの実行を保留する保留部と、前記システムコールを実行するシステムコール実行部と、を備える。
【０００６】
前記管理部は、前記実行要求通知部から通知された前記システムコールの識別情報に基づいて実行内容を前記要求記憶部から取得する第１取得部と、取得した前記実行内容を、所定の判定ルールに従って実行できるか否かを決定する実行判定部と、前記実行の許可又は不許可を前記カーネル部に送信する判定結果通知部と、を備える。そして、前記要求記憶部は、受信した前記実行の許可又は不許可に関する情報を、記憶された前記システムコールの識別情報と対応づけて記憶し、前記保留部は、前記第２取得部が取得した、前記要求記憶部に記憶された前記実行の許可又は不許可、及び実行保留に関する情報から、前記システムコールの実行の保留を解除するか否かを決定する。
【図面の簡単な説明】
【０００７】
【図１】本実施形態の情報処理装置の構成を示す図。
【図２】本実施形態の要求記憶部に記憶された実行要求のデータ例を示す図。
【図３】本実施形態のデフォルト動作を規定したデータの一例を示す図。
【図４】本実施形態のシステムコールの実行判定にかかる処理フロー図。
【図５】本実施形態の管理アプリケーションの登録にかかる処理フロー図。
【図６】本実施形態のシステムコールの実行を保留するまでの処理フロー図。
【図７】本実施形態のシステムコールの実行判定にかかる処理フロー図。
【図８】本実施形態のシステムコールの保留の解除にかかる処理フロー図。
【図９】本実施形態の管理アプリケーションの登録削除にかかる処理フロー図。
【発明を実施するための形態】
【０００８】
以下に、本発明にかかる情報処理装置を具体化した実施形態を図面に基づいて詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。
【０００９】
図１は、本実施形態の情報処理装置１の機能構成を示すブロック図である。図１に示されるように、情報処理装置１は、カーネル部１０、管理アプリケーション３０（管理部）、及びユーザアプリケーション４０を備えている。カーネル部１０は、デバイスやメモリ、プロセスの管理や、システムコールを受けて所定の機能をアプリケーションに対して提供する。管理アプリケーション３０は、カーネル部１０に対して要求されたシステムコールの実行の許可又は不許可を判定して、結果をカーネル部１０に対して通知する。カーネル部１０は、管理アプリケーション３０による判定結果に基づいて、システムコールに対する処理を行う。ユーザアプリケーション４０は、管理アプリケーション３０以外のアプリケーションを総称するものである。
【００１０】
カーネル部１０は、システムコール検出部１１、要求記憶部１２、要求通知部１３、管理アプリ登録部１４、保留部１５、第２取得部１６、システムコール実行部１７、認証部１８、デフォルト実行部１９、タイムアウト検出部２１、及びエラー通知部２０を備えている。システムコール検出部１１は、ユーザアプリケーション４０のシステムコール発行部４１からカーネル部１０に対して要求されたシステムコールを検出する。システムコール検出部１１は、検出したシステムコール情報を要求記憶部１２と要求通知部１３に送信する。
【００１１】
要求記憶部１２は、検出されたシステムコール情報を記憶する。図２は要求記憶部１２に記憶されたシステムコール情報のデータの形式の一例を示す図である。図２に示されるように、システムコール情報とは、システムコールの識別情報であるＩＤと実行内容とが対応づけられた情報を少なくとも含む情報をいう。例えば、検出されたシステムコールの識別情報であるＩＤや、ｒｅａｄやｗｒｉｔｅといった実行要求内容、要求元のプロセスの識別情報、管理アプリケーション３０からの実行許可又は不許可の判定情報、要求記憶部１２に記憶された日時、及び再送回数の項目が対応づけられた情報である。このように、システムコールの識別情報であるＩＤと実行内容とが対応づけられた情報以外の情報とが更に対応づけられていてもよい。実行許可又は不許可の情報は、システムコール検出部１１から送信された時点では、「未通知」が記憶され、その後管理アプリケーション３０からの実行許可又は不許可の通知を受けて更新される。また、再送回数とは、要求通知部１３からシステムコール情報を管理アプリケーション３０に送信した際に、所定の時間内に実行許可又は不許可の判定結果が返ってこずタイムアウトした場合などに再送処理がなされ、再送処理ごとに１ずつインクリメントされる。なお、再送処理がされた際に、登録日時も更新される。
【００１２】
要求通知部１３は、管理アプリケーション３０に対してシステムコールの識別情報を通知する。通知は、管理アプリ登録部１４に記憶されている管理アプリケーション３０を指定して行われる。管理アプリ登録部１４は、例えば、管理アプリケーション３０の起動時にカーネル部１０に対して登録を要求する通知を受付け、認証部１８によって、システムコール情報を通知する先のアプリケーションとして正しいものか認証した後に、管理アプリケーション３０のプロセスの識別情報を登録する。認証には、管理アプリケーションの固有の情報が用いられ、例えばファイル名やファイルのハッシュ、実行ファイルのオーナー名、署名情報などである。これらの認証用の情報は予めカーネル部１０にも記憶されており、管理アプリケーション３０から通知された認証情報と、記憶された情報とが一致する場合に、管理アプリ登録部１４は、管理アプリケーション３０のプロセスの識別情報を登録する。なお、認証部１８は必須の構成ではなく、問い合わせのあった管理アプリケーション３０を登録するようにしてもよい。
【００１３】
保留部１５は、システムコール情報が転送されてきた際に、システムコール実行部１７によるシステムコールの実行を、管理アプリケーション３０から実行許可又は不許可の通知があるまで保留する。実行の保留は、例えばコンテキストスイッチなどにより実現され、保留前のレジスタや、オペレーティングシステム固有の情報を保存しておく。第２取得部１６は、要求記憶部１２に管理アプリケーション３０から通知されて記憶された実行許可又は不許可の情報を取得し、システムコールの実行許可又は不許可を判定する。保留部１５は、第２取得部１６が実行が許可されている、又は実行が許可されていないと判定した場合、すなわち実行許可又は不許可の通知が行われた場合に、システムコールの実行保留を解除する。第２取得部１６は所定の時間以上、実行許可又は不許可に関する情報の通知がないかどうか判定するために、タイムアウト検出部２１を呼び出す機能を有しても良い。
【００１４】
システムコール実行部１７は、保留部１５によって保留を解除されたシステムコールを実行する。システムコール実行部１７はシステムコールの実行によって得られた結果をユーザアプリケーション４０に通知する。また、デフォルト実行部１９は、管理アプリケーション３０が登録されていない場合にシステムコールが検出された場合に、予め登録されたデフォルト動作を実行する。図３は、実行要求内容ごとのデフォルト動作を規定したデータの一例である。例えば、実行内容がｒｅａｄ（ｆｉｌｅ１）の場合は、デフォルト動作は「許可」であるため、そのシステムコールは実行される。なお、「許可」される実行要求の一例としては、システムコールを実行してもセキュリティ上障害が発生しないような内容の場合などである。
【００１５】
タイムアウト検出部２１は、登録日時欄の情報から前回管理アプリケーション３０へとシステムコールの判定要求を通知してから所定の時間が経過しているか否かを判定する。所定の時間が経過している場合、タイムアウト検出部２１は、要求通知部１３を介して管理アプリケーション３０にシステムコールの判定要求を再送する。また、タイムアウト検出部２１は、要求通知部１３による判定要求の再送回数が予め定めた再送限度回数を越えた場合にデフォルト実行部１９を呼び出す。なお、タイムアウト検出部２１は必須の構成ではない。
【００１６】
エラー通知部２０は、システムコールの実行が管理アプリケーション３０により実行不許可と判定された場合など、何らかの理由によりできないと判定された場合に、その旨をユーザアプリケーション４０へと通知する。
【００１７】
管理アプリケーション３０は、要求受信部３１、第１取得部３２、実行判定部３３、判定結果通知部３４、及び起動通知部３５を備えている。要求受信部３１は、カーネル部１０から通知されたシステムコールの識別情報を受信し、第１取得部３２へと転送する。第１取得部３２は、要求記憶部１２を参照し、システムコールの識別情報を用いて該当するシステムコールの要求内容を取得する。取得されたシステムコールの要求内容は、実行判定部３３により実行の許可又は不許可が判定される。実行の許可又は不許可の判定にあたっては、管理アプリケーション３０内に、判定ルールを規定した記憶部を設けてもよいし、ネットワークを通じて別の装置から取得するようにしてもよい。判定結果通知部３４は、実行判定部３３で判定したシステムコールの実行許可又は不許可の判定結果をシステムコールの識別情報とともに要求記憶部１２へと通知する。要求記憶部１２は、通知されたシステムコールの識別情報と実行許可又は不許可の判定結果で実行許可又は不許可の情報を更新する。
【００１８】
次いで、本実施形態のシステムコールの処理の流れを図４を用いて説明する。図４に示されるように、まず管理アプリケーション３０は、起動時にカーネル部１０の管理アプリ登録部１４にオープン要求、すなわちアプリの登録要求を送信する（ステップＳ１０１）。管理アプリ登録部１４は、登録の結果を管理アプリケーション３０へと返信する（ステップＳ１０２）。
【００１９】
また、ユーザアプリケーション４０は、システムコール発行部４１からシステムコールをカーネル部１０に向けて発行する（ステップＳ１０３）。カーネル部１０の要求通知部１３は、実行許可又は不許可の判定を管理アプリケーション３０に対し、システムコールの識別情報を指定して送信する（ステップＳ１０４）。管理アプリケーション３０の第１取得部３２は、識別情報を指定して、システムコールの内容をカーネル部１０の要求記憶部１２に対して取得要求する（ステップＳ１０５）。カーネル部１０の要求記憶部１２は、指定された識別情報で特定されるシステムコール実行要求内容と、要求元のプロセス名を管理アプリケーション３０へと返信する（ステップＳ１０６）。そして、管理アプリケーション３０は、判定結果を返信し、カーネル部１０の要求記憶部１２の該当するシステムコールの実行要求の情報を更新する（ステップＳ１０７）。カーネル部１０は、システムコールの実行結果、もしくは実行失敗した場合のエラー通知をユーザアプリケーション４０へと通知する（ステップＳ１０８）。最後に、管理アプリケーション３０は、カーネル部１０に対して、ダウン時などに管理アプリ登録部１４のクローズ要求、すなわちアプリの登録からの削除要求を送信する（ステップＳ１０９）。
【００２０】
次に、図５を参照して管理アプリケーションの登録にかかる処理を詳細に説明する。図５に示されるように、起動通知部３５は管理アプリケーションのオープン要求をカーネル部１０に送信する（ステップＳ２０１）。管理アプリ登録部１４は、オープン要求を検知すると（ステップＳ２０２）、管理アプリケーションのプロセス固有情報、すなわち管理アプリケーションのファイル名や、ファイルのハッシュなどの情報を取得する（ステップＳ２０３）。
【００２１】
そして、認証部１８は、カーネル部１０に予め記憶されている想定情報と、管理アプリケーション３０から取得したプロセス固有情報とが一致するか否かを判定する（ステップＳ２０４）。一致する場合（ステップＳ２０４：Ｙｅｓ）、管理アプリ登録部１４は、管理アプリケーション３０を登録して処理を終了する（ステップＳ２０５）。一方、一致しない場合（ステップＳ２０４：Ｎｏ）、管理アプリ登録部１４は、管理アプリケーション３０に対して登録できなかった旨のエラー通知を行う(ステップＳ２０６)。なお、ステップＳ２０３からステップＳ２０４およびステップＳ２０６の処理は必須ではない。
【００２２】
次いで、図６を参照し、システムコールの検出からシステムコールの実行保留にかかるまでの処理の流れを説明する。本処理はカーネル部１０内において行われる。図６に示されるように、システムコール発行部４１からシステムコールが発行されると（ステップＳ３０１）、カーネル部１０のシステムコール検出部１１においてシステムコールが検出される（ステップＳ３０２）。次いで、システムコール検出部１１は、システムコールが実行の許可又は不許可を管理アプリケーション３０へ問い合わせする対象の処理であるか否かを判別する（ステップＳ３０３）。実行許可又は不許可を問い合わせする対象であるか否かは、システムコールの内容によって予め決めることができ、例えばＷｉ−Ｆｉの接続要求の場合は問い合わせを除外するなどの設定が可能である。なお、ステップＳ３０３の処理は必須ではない。
【００２３】
管理アプリケーション３０への問い合わせを行う対象の処理であると判定された場合（ステップＳ３０３：Ｙｅｓ）、次いでシステムコールの要求元が管理アプリケーション３０であるか否かが判定される（ステップＳ３０４）。すなわち、要求元が管理アプリケーション３０である場合は、当然に管理アプリケーション３０に実行の許可又は不許可を問い合わせする必要がないため、問い合わせ対象から除外される。実行の許可又は不許可の問い合わせ対象でない場合（ステップＳ３０３：Ｎｏ）、又は要求元が管理アプリケーション３０である場合（ステップＳ３０４：Ｙｅｓ）、システムコール実行部１７は、システムコールを実行して処理を終了する（ステップＳ３１２）。
【００２４】
一方、要求元が管理アプリケーション３０でない場合（ステップＳ３０４：Ｎｏ）、管理アプリ登録部１４は、管理アプリケーション３０が登録済みであるか否かを判定する（ステップＳ３０５）。管理アプリケーション３０が登録済みであると判定された場合（ステップＳ３０５：Ｙｅｓ）、要求記憶部１２は、システムコールの実行要求のデータを登録する（ステップＳ３０６）。登録内容は、システムコールの識別情報、実行要求内容、要求元、登録日時である。また、実行の許可又は不許可の情報は、「未送信」となる。次いで、要求通知部１３は、システムコールの識別情報を指定して管理アプリケーション３０に判定要求を行う（ステップＳ３０７）。そして、保留部１５は、システムコールの実行保留をして、処理を終了する（ステップＳ３０８）。なお、ステップＳ３０４の処理は必須ではない。
【００２５】
一方、管理アプリケーション３０が登録済みでないと判定された場合（ステップＳ３０５：Ｎｏ）、デフォルト実行部１９はデフォルト動作を取得する（ステップＳ３０９）。そして、デフォルト実行部１９は取得したデフォルト動作からシステムコールの要求内容の実行が許可されているか否かを判定する（ステップＳ３１０）。実行が許可されている場合（ステップＳ３１０：Ｙｅｓ）、デフォルト実行部１９は、システムコールの実行要求を実行して処理を終了する（ステップＳ３１２）。一方、実行が許可されていない場合（ステップＳ３０１：Ｎｏ）、エラー通知部２０は、ユーザアプリケーション４０に対してエラー通知を行う（ステップＳ３１１）。
【００２６】
次いで、図７を参照して、管理アプリケーション３０におけるシステムコールの実行が許可又は不許可の判定にかかる処理について詳細に説明する。要求受信部３１が、カーネル部１０からのシステムコールの実行判定要求を受信すると（ステップＳ４０１）、第１取得部３２は、受信したシステムコールの識別情報をキーとして、要求記憶部１２に該当する実行要求の内容を問い合わせる（ステップＳ４０２）。次いで、要求記憶部１２は、問い合わせのあった識別情報が正しいＩＤであるか否か、すなわち要求記憶部１２に記憶されているかを判定する（ステップＳ４０３）。問い合わせのあった識別情報が正しいＩＤであると判定された場合（ステップＳ４０３：Ｙｅｓ）、次いで要求記憶部１２は、問い合わせのあった管理アプリケーション３０が登録されたアプリケーションであるかを判定する（ステップＳ４０４）。問い合わせのあった識別情報が正しいＩＤでないと判定された場合（ステップＳ４０３：Ｎｏ）、又は問い合わせのあった管理アプリケーション３０が登録されたアプリケーションでなかったと判定された場合（ステップＳ４０４：Ｎｏ）、要求記憶部１２は管理アプリケーション３０に対してエラー通知をして処理を終了する（ステップＳ４１１）。
【００２７】
一方、問い合わせのあった管理アプリケーション３０が登録されたアプリケーションであると判定された場合（ステップＳ４０４：Ｙｅｓ）、要求記憶部１２は、実行要求の内容を第１取得部３２へと送信する（ステップＳ４０５）。実行判定部３３は、問い合わせた実行要求の情報を元に、実行の許可又は不許可を判定し（ステップＳ４０６）、判定結果通知部３４は実行許可又は不許可の通知を要求記憶部１２に行う（ステップＳ４０７）。
【００２８】
要求記憶部１２は、通知のあった管理アプリケーション３０の識別情報が正しいＩＤであるか否か、すなわち要求記憶部１２に記憶されているかを判定する（ステップＳ４０８）。通知のあった識別情報が正しいＩＤであると判定された場合、次いで要求記憶部１２は、通知のあった管理アプリケーション３０が登録されたアプリケーションであるかを判定する（ステップＳ４０９）。通知のあった識別情報が正しいＩＤでないと判定された場合（ステップＳ４０８：Ｎｏ）、又は通知のあった管理アプリケーション３０が登録されたアプリケーションでなかったと判定された場合（ステップＳ４０９：Ｎｏ）、要求記憶部１２は管理アプリケーション３０に対してエラー通知をして処理を終了する（ステップＳ４１１）。
【００２９】
通知のあった管理アプリケーション３０が登録されたアプリケーションであると判定された場合（ステップＳ４０９：Ｙｅｓ）、要求記憶部１２は、通知された実行の許可又は不許可についての情報に基づき、該当する実行要求の情報を更新し、処理を終了する（ステップＳ４１０）。
【００３０】
次に、図８を参照し、システムコールの保留の解除にかかる処理の流れについて説明する。図８に示されるように、本処理はプロセス切替要求が検出されるごとに開始される（ステップＳ５０１）。プロセス切替要求は、明示的に切替命令が出されることで行われることもあるし、タイマー割り込みにより定期的に呼び出されて行われることもある。第２取得部１６は、要求記憶部１２から切り替えられたプロセスの識別情報に要求元のプロセス名が一致するシステムコールの情報を取得する（ステップＳ５０２）。そして、第２取得部１６は、切替された現在のプロセスのシステムコールの実行が保留中であるか否か、すなわち現在のプロセスの識別情報と一致する要求元のプロセス名が要求記憶部１２に記憶されているか否かを判定する（ステップＳ５０３）。切替された現在のプロセスのシステムコールの実行が保留中でないと判定された場合（ステップＳ５０３：Ｎｏ）、処理を終了する。
【００３１】
一方、切替された現在のプロセスのシステムコールの実行が保留中であると判定された場合（ステップＳ５０３：Ｙｅｓ）、第２取得部１６は、要求記憶部１２の該当するプロセスの実行許可又は不許可の通知の情報を取得する（ステップＳ５０４）。次いで、第２取得部１６は、取得した許可又は不許可の通知欄の情報が「通知済（実行不許可）」であるか否かを判定する（ステップＳ５０５）。取得した許可又は不許可の通知欄の情報が「通知済（実行不許可）」であると判定された場合（ステップＳ５０５：Ｙｅｓ）、保留部１５はシステムコールの保留を解除し、エラー通知部２０は、要求元のユーザアプリケーション４０に対してエラー通知を行い（ステップＳ５１６）、次いで、要求記憶部１２は、該当する実行要求のデータを削除して処理を終了する（ステップＳ５１５）。
【００３２】
一方、取得した許可又は不許可の通知欄の情報が「通知済（実行不許可）」でないと判定された場合（ステップＳ５０５：Ｎｏ）、取得した許可又は不許可の通知欄の情報が「通知済（実行許可）」であるか否かを判定する（ステップＳ５０６）。取得した許可又は不許可の通知欄の情報が「通知済（実行許可）」であると判定された場合（ステップＳ５０６：Ｙｅｓ）、保留部１５はシステムコールの保留を解除し、システムコール実行部１７がシステムコールを実行する（ステップＳ５１４）。次いで、要求記憶部１２は、該当する実行要求のデータを削除して処理を終了する（ステップＳ５１５）。
【００３３】
取得した許可又は不許可の通知欄の情報が「通知済（実行可）」でないと判定された場合（ステップＳ５０６：Ｎｏ）、第２取得部１６は、管理アプリケーション３０のプロセスが有効に存在しているか否かを判定する（ステップＳ５０７）。管理アプリケーション３０のプロセス情報は、要求記憶部１２に記憶されていてもよいし、他の記憶部に記憶されていてもよい。管理アプリケーション３０のプロセスが有効でないと判定された場合（ステップＳ５０７：Ｎｏ）、デフォルト実行部１９は、デフォルト動作を取得し（ステップＳ５１２）、取得したデフォルト動作から、切替えられたプロセスの実行要求が許可か、不許可かいずれであるかを判定する（ステップＳ５１３）。不許可であると判定された場合（ステップＳ５１３：Ｎｏ）、エラー通知部２０は、要求元のユーザアプリケーション４０に対してエラー通知を行い（ステップＳ５１６）、次いで、要求記憶部１２は、該当する実行要求のデータを削除して処理を終了する（ステップＳ５１５）。一方、許可であると判定された場合（ステップＳ５１３：Ｙｅｓ）、保留部１５はシステムコールの保留を解除し、システムコール実行部１７がシステムコールを実行する（ステップＳ５１４）。次いで、要求記憶部１２は、該当する実行要求のデータを削除して処理を終了する（ステップＳ５１５）。
【００３４】
一方、管理アプリケーション３０のプロセスが有効に存在していると判定された場合（ステップＳ５０７：Ｙｅｓ）、タイムアウト検出部２１は、登録日時欄の情報から前回管理アプリケーション３０へとシステムコールの判定要求を通知してから所定の時間が経過しているか否かを判定する（ステップＳ５０８）。所定の時間が経過していないと判定された場合（ステップＳ５０８：Ｎｏ）、処理は終了する。
【００３５】
一方、所定の時間が経過していると判定された場合（ステップＳ５０８：Ｙｅｓ）、タイムアウト検出部２１は、該当するプロセスの再送回数が予め定められた再送限度回数より大きいか否かを判定する（ステップＳ５０９）。再送限度回数より大きいと判定された場合（ステップＳ５０９：Ｙｅｓ）、すなわち管理アプリケーション３０側における実行許可又は不許可の判定にかかる処理が何らかの原因で出来なくなっていることが考えられるため、ステップＳ５１３からのデフォルト実行部１９による処理に移行する。
【００３６】
再送限度回数未満であると判定された場合（ステップＳ５０９：Ｎｏ）、要求通知部１３は、システムコールの実行許可又は不許可の判定要求を管理アプリケーション３０へと再送する（ステップＳ５１０）。また、要求記憶部１２は、再送回数の値を１インクリメントするとともに登録日時の情報を現在時刻に更新する（ステップＳ５１１）。
【００３７】
次に、システムコール実行後の管理アプリケーション３０のクローズにかかる処理を図９を参照して説明する。図９に示されるように、管理アプリケーション３０は、管理アプリ登録部１４に対してクローズ要求を送信する（ステップＳ６０１）。管理アプリ登録部１４は、クローズ要求を検出すると（ステップＳ６０２）、管理アプリケーション３０のプロセス情報を認証部１８から削除する（ステップＳ６０３）。
【００３８】
以上に示した本実施形態の情報処理装置１においては、カーネル部１０と、システムコールの実行判定を行う管理アプリケーション３０とを別に設ける構成としたため、それぞれのプログラムを個別に設計することができ、設計の自由度を高めることができる。また、管理アプリケーション３０は、起動時にそのプロセス情報が認証した後にカーネル部１０に登録され、カーネル部１０においては登録済みのプロセスの管理アプリケーション３０の実行許可又は不許可の判定結果のみを正常な情報として扱うようにしたため、異なるアプリケーション間の通信プロトコルを悪用して、不正な処理を行うことを防ぐことができる。
【００３９】
また、管理アプリケーションのプロセス情報が登録されていない場合に、予めデフォルトで許可するシステムコールの実行要求の内容を定義することで、処理の自由度を高めることができる。さらには、システムコールの実行要求に対する判定のルールを、ネットワークを通じて外部のサーバなどと通信して更新するようにすれば、アップデートが容易になり保守コストを抑えることができるようになる。
【００４０】
なお、上記の各実施の形態の情報処理装置におけるカーネル部、及び管理アプリケーションの機能はプログラムとして提供してもよい。その場合、プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００４１】
また、プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【００４２】
また、プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００４３】
ただし、生成部、及び転送指示部をプログラムとして提供した場合、実際のハードウェアとしてはＣＰＵ（プロセッサ）とは異なる電子回路やプロセッサによって記憶媒体からプログラムを読み出して実行することにより各部が主記憶部上にロードされ、生成部、及び転送指示部が主記憶部上に生成されるようになっている。
【００４４】
ここで、上述の実施形態に係る発明の利用場面について以下に説明する。情報処理装置に搭載されるソフトウェアは、基盤となるオペレーティングシステムと、その上で動作する各種のアプリケーションプログラムから構成される。情報処理装置に記憶されたデータは、オペレーティングシステムがファイルとして管理する。アプリケーションプログラムがメモリやＨＤＤ上のデータをアクセス（読み出し（ｒｅａｄ）、および、書き込み（ｗｒｉｔｅ）など）するときは、オペレーティングシステムに対してファイルの操作（ファイルの作成、書き込み、読み出し、および、削除など）を依頼するシステムコールを発行する。オペレーティングシステムの中でファイルの管理をする部分を、ファイルシステムと呼ぶ場合もある。
【００４５】
一方、タブレットやスマートフォンなどのモバイルで利用する情報端末が増加するにしたがって、端末内のソフトウェアは、従来のように単一のサプライヤーから提供され、事前にインストールされたものから、アプリケーションを追加でインストールし、ユーザーが自由にカスタマイズをすることができるように変化してきている。システムコールなどのイベント発生に対する実行を許可するか否かを行う制御は、カーネルといわれる部分に集約されていたが、Ａｎｄｒｏｉｄ（登録商標）などのサードパーティー用のオペレーション開発環境が整っていくに従って、イベント処理にかかる構成が、機能ごとに独立した別の組織により制作、及び流通されるようになってきている。
【００４６】
特に、タブレットやスマートフォンなどのモバイル端末をビジネス用途で利用しようとした場合、各企業のポリシーごとに端末の機能を制限する事が求められる。たとえば、ある企業ではタブレットに格納した情報の漏洩を防止するため、端末と外付けのＵＳＢメモリやＳＤカードなどの外部ストレージ機器の接続を禁止する事が求められる。また、別の企業では外部ストレージ機器の接続は許可するが端末とＢｌｕｅｔｏｏｔｈ（登録商標）機器の接続を禁止する事が求められるなど、その要求条件は各企業のセキュリティポリシーによって異なることが多く、柔軟に制限内容を変更できる必要がある。このような状況で、柔軟にセキュリティ制御の内容を変更したい場合には、カーネル自体のソースコードの変更を頻繁に行う必要が出てくるため、従来のカーネルのみでの実現ではコスト上の課題があるが、本実施の形態に係る発明はこの課題を解決することができる。
【００４７】
以上に、本発明の実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４８】
１  情報処理装置
１０  カーネル部
１１  システムコール検出部
１２  要求記憶部
１３  要求通知部
１４  管理アプリ登録部
１５  保留部
１６  第２取得部
１７  システムコール実行部
１８  認証部
１９  デフォルト実行部
２０  エラー通知部
２１  タイムアウト検出部
３０  管理アプリケーション
３１  要求受信部
３２  第１取得部
３３  実行判定部
３４  判定結果通知部
３５  起動通知部
４０  ユーザアプリケーション
４１  システムコール発行部
【図１】
0005591883.tif 000002
【図２】
0005591883.tif 000003
【図３】
0005591883.tif 000004
【図４】
0005591883.tif 000005
【図５】
0005591883.tif 000006
【図６】
0005591883.tif 000007
【図７】
0005591883.tif 000008
【図８】
0005591883.tif 000009
【図９】
0005591883.tif 000010