以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
第1の実施の形態は、保護対象のデータが漏洩することを防止することができる情報処理装置である。この情報処理装置は、例えば、オフィスなどに設置されるパーソナルコンピュータであってもよく、携帯情報端末であってもよい。
図1は、第1の実施の形態に係る情報処理装置の機能構成例を示す図である。情報処理装置Sは、1または複数の第1のプログラム1aと1または複数の第2のプログラム1b,1cを実行する。第1のプログラム1aは、保護対象のデータ7を取り扱うプログラムである。第2のプログラムは、そのデータ7の取り扱いを想定していないプログラムである。なお、第1のプログラム1aと第2のプログラム1b,1cとは、例えば情報処理装置Sが有する記憶媒体に予め格納されている。
情報処理装置Sは、データ7を適切に保護するために、記憶手段2、判断手段3、制御手段4、実行時間割り当て手段6を有する。
記憶手段2は、脅威アクセス情報2aとアクセス対象資源情報2bとを記憶する。脅威アクセス情報2aは、保護対象のデータ7を取り扱う第1のプログラム1aの起動から終了までの間(動作中)に資源アクセスが行われたとすると、データ7の保護に対する脅威となる資源アクセスを示す情報である。図1の例では、名称「プログラムα」である第1のプログラム1aが取り扱うデータ7に対して脅威となるのは、メモリカードやネットワークへのアクセスであることが示されている。アクセス対象資源情報2bは、第2のプログラム1b,1cの実行によりアクセスする可能性のある資源を示す情報である。図1の例では、名称「プログラムβ」である第2のプログラム1bの実行により、ネットワークとメモリカードとにアクセスされる可能性があることが示されている。また名称「プログラムγ」である第2のプログラム1cの実行により、カメラにアクセスされる可能性があることが示されている。
判断手段3は、脅威アクセス情報2aとアクセス対象資源情報2bとを参照し、第2のプログラム1b,1cの実行により、データ7の保護に対する脅威となる資源アクセスが行われる可能性があるか否かを判断する。例えば判断手段3は、脅威アクセス情報2aに示されている資源アクセスの対象の資源を、アクセス対象資源として含む第2のプログラムをアクセス対象資源情報2bから検出する。そして判断手段3は、検出した第2のプログラムについて、そのプログラムの実行により、データ7の保護に対する脅威となる資源アクセスが行われる可能性があると判断する。
制御手段4は、第2のプログラム1bの実行により、データ7の保護に対する脅威となる資源アクセスが行われる可能性がある場合、第2のプログラム1bを制御対象とする。そして制御手段4は、第1のプログラム1aの処理が開始されてから終了するまで、データ7に対する第2のプログラム1bに基づくアクセスが行われないように、第2のプログラム1bの実行を制御する。例えば制御手段4は、第1のプログラム1aの処理が開始されてから終了するまで、データ7の保護に対する脅威となる資源アクセスが行われる可能性がある第2のプログラム1bの実行を抑止する。
実行時間割り当て手段6は、制御手段4からの指示に従って、プロセッサに実行させるタスク(プロセス)を切り替える。例えば第1のプログラム1aと第2のプログラム1b,1cそれぞれが起動されると、各プログラムを実行するためのタスク5a,5b,5cが生成される。実行時間割り当て手段6は、プロセッサに実行させるタスクを切り替えることで、複数のタスク5a,5b,5cを時分割で、プロセッサに実行させる。例えば実行時間割り当て手段6は、制御手段4により、第2のプログラム1bの実行を抑止する旨の指示を受けると、その第2のプログラム1bを実行するためのタスク5bに対して、プロセッサの実行時間の割り当てを抑止する。これにより、第2のプログラム1bは、実行されなくなる。
このような情報処理装置Sにおいて、例えば、最初に名称「プログラムβ」の第2のプログラム1bが起動されたものとする。第2のプログラム1bの起動により、第2のプログラム1b実行用のタスク5bが生成される。この段階では、第1のプログラム1aは起動されておらず、実行時間割り当て手段6により、タスク5bにプロセッサの実行時間が割り当てられ、プロセッサによりタスク5bを介して第2のプログラム1bが実行される。
次に、名称「プログラムα」の第1のプログラム1aが起動されたものとする。第1のプログラム1aの起動により、第1のプログラム1a実行用のタスク5aが生成される。ここで、判断手段3は、脅威アクセス情報2aを参照し、第1のプログラム1aの動作中に、データ7の保護に対して脅威となる資源アクセスが、メモリカードとネットワークへのアクセスであることを認識する。そして判断手段3は、アクセス対象資源情報2bを参照する。そして判断手段3は、名称「プログラムβ」の第2のプログラム1bは、実行中にメモリカードとネットワークとへのアクセスの可能性があり、データ7の保護に対する脅威となる資源アクセスが行われる可能性があると判断する。他方、判断手段3は、名称「プログラムγ」の第2のプログラム1cは、実行中にメモリカードまたはネットワークにアクセスする可能性がなく、データ7の保護に対する脅威となる資源アクセスが行われる可能性がないと判断する。すると、制御手段4は、データ7に対する第2のプログラム1bに基づくアクセスが行われないように、第2のプログラム1bの実行を制御する。例えば制御手段4は、実行時間割り当て手段6に、プロセッサに実行させるタスクを、第2のプログラム1b実行用のタスク5bに切り替えるのを抑止するように指示する。この指示に従って、実行時間割り当て手段6が、タスク5bへの切り替えを抑止する。その結果、名称「プログラムβ」の第2のプログラム1bの実行が抑止され、名称「プログラムα」の第1のプログラム1a実行用のタスク5aに対してのみ、プロセッサの実行時間が割り当てられる。プロセッサは、タスク5aを介して第1のプログラム1aを実行し、その実行過程で、第1のプログラム1a内の命令に従って保護対象のデータ7へアクセスする。
その後、名称「プログラムγ」の第2のプログラム1cが起動されたものとする。第2のプログラム1cの起動により、第2のプログラム1c実行用のタスク5cが生成される。判断手段3では、第2のプログラム1cについては、既に、データ7の保護に対する脅威となる資源アクセスが行われる可能性がないと判断している。そのため、制御手段4では、第2のプログラム1cの実行に関して、特別な制御は行わない。この場合、実行時間割り当て手段6は、名称「プログラムγ」の第2のプログラム1cへのプロセッサの実行時間の割り当てを許容する。その結果、名称「プログラムα」の第1のプログラム1aと名称「プログラムγ」の第2のプログラム1cとが、時分割で実行される。
その後、名称「プログラムα」の第1のプログラム1aの処理が終了したものとする。第1のプログラム1aの動作中ではなくなったため、制御手段4は、実行時間割り当て手段6に対して、第2のプログラム1bの実行の抑止を解除するように指示する。すると、実行時間割り当て手段6は、第2のプログラム1b実行用のタスク5bに対しても、プロセッサの実行時間を割り当てるようになる。その結果、2つの第2のプログラム5b,5cが時分割で並行して実行される。
このようにして、第1のプログラム1aの動作中は、データ7の保護に対して脅威となる資源アクセスを行う第2のプログラム1bの実行が抑止され、データ7の安全性を担保できる。他方、データ7の保護に対して脅威となる資源アクセスを行わない第2のプログラム1cについては、第1のプログラム1aの動作中であっても実行可能である。そのため、情報処理装置Sの利便性の低下を最小限に抑えることができる。
なお制御手段4は、第1のプログラム1aの実行が中断した場合、データ7を、第2のプログラム1bの実行によりアクセスされない記憶領域に退避し、その後、第2のプログラム1bを実行させてもよい。中断していた第1のプログラム1aの実行を再開する際には、制御手段4は、記憶領域に退避していたデータ7を退避前の場所に復元し、その後、第1のプログラム1aの実行を再開させる。
また、判断手段3は、第2のプログラム1b,1cが安全であることが設定された場合、第2のプログラム1b,1cの実行により、データ7の保護に対する脅威となる資源アクセスが行われる可能性はないと判断するようにしてもよい。
なお、判断手段3、制御手段4、および実行時間割り当て手段6は、例えば情報処理装置Sが有するプロセッサにより実現することができる。また、記憶手段2は、例えば情報処理装置Sが有するRAM(Random Access Memory)により実現することができる。
また、図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、スマートフォンなどの携帯情報端末にインストールした業務アプリケーションで利用されるデータ(業務データ)を保護するものである。すなわち、第2の実施の形態は、業務データを守りつつ、業務アプリケーションとさまざまな有用なアプリケーションとを携帯情報端末上に共存させるものである。
ここで、第2の実施の形態の詳細を説明する前に、他の技術における問題点について説明する。
業務データを守りつつ、業務アプリケーションとさまざまな有用なアプリケーションとを携帯情報端末上に共存させる方法として、いくつかの方法が考えられる。例えば、業務アプリ起動時に他のアプリケーションを停止させ、以降、業務アプリ終了までは他のアプリケーションの起動を制限するという方法が考えられる。また、業務アプリと併用してよいアプリケーション/併用してはいけないアプリケーションを管理するリストを持ち、そのリストから業務アプリ起動時に停止すべきアプリケーションを決める方法も考えられる。
しかし、これらの方法にはいくつかの問題点がある。まず、リストに基づいて併用可能なアプリケーションを管理する場合、リストが適正に管理される必要がある。しかし、スマートフォンではだれでもアプリケーションを作成でき、リストの管理者が知らないアプリケーションも数多く存在する。そのため、このようなリストを日々適切に更新して行くことは不可能である。リストに含まれないアプリケーションは業務アプリケーションと併用できてしまうため、業務データが危険にさらされることになる。
また、他のアプリケーションを確実に停止させることができない点も問題である。スマートフォンのアプリケーションはユーザが実際に操作するアプリケーション以外にも、ユーザには直接感知させずにバックグラウンドでさまざまな処理を行うアプリケーション(サービスアプリケーション)もある。このようなサービスアプリケーションは、一度停止をしても自動で再起動するものや停止要求を無視するものがある。また、バグなどにより、停止要求を無視するようなアプリケーションもある。業務アプリケーションと併用すると問題があるアプリケーションが、そのような停止できないアプリケーションであった場合、業務データが危険にさらされることになる。
また、業務データの存在を考慮に入れていない点も問題である。業務アプリケーションが終了しても、業務データが残っている場合には、業務アプリと併用すると問題があるアプリケーションが、業務データがあるにもかかわらず、起動、実行できてしまう。すると、その残された業務データを、問題のあるアプリケーションが外部ネットワークに送信してしまう可能性があり、業務データが危険にさらされることになる。
第2の実施の形態では、解決するアプローチとして、携帯情報端末において、業務利用の開始・終了を検出する。なお業務利用開始・終了の検出は、例えば業務アプリケーションの起動・終了や業務データの有無などから検出できる。そして携帯情報端末は、業務利用の開始から終了までの間、業務データの保護に対して脅威となるアプリケーションにとっては業務アプリケーションや業務データがあたかも存在しないかのように見えるように動作を制御する。
ここで、業務のデータの保護に対して脅威となるアプリケーションは、例えば「業務データの外部ネットワークへの送信」を行うアプリケーションである。「業務データの外部ネットワークへの送信」という処理を実行するアプリケーションが行うリソースアクセスとして、「業務データを読み出すリソースアクセス」と「業務データを外部に送信するリソースアクセス」の2種類のリソースアクセスがある。以下、これらのリソースアクセスが具体的にはどのようなリソースアクセスとなるのかを考える。
「業務データを読み出すリソースアクセス」は、業務アプリケーションと他のアプリケーションとで共用するリソースへのアクセスである。業務アプリケーション以外も読み書きできる領域に業務データが置かれる場合には、その領域の読み書きに必要なリソースアクセスを登録しているアプリケーションは、ユーザの意図に反して業務データを読み出してしまう可能性があると考える。このようなリソースアクセス制限を持つアプリケーションを制御対象とすることで、例えば、ストレージ同期サービスにおけるバックグラウンドでの同期動作など、ユーザが把握できないタイミングでの業務データの読み出しを抑止できる。スマートフォンでは、例えばメモリカードのような外部補助記憶領域へのアクセスが、「業務データを読み出すリソースアクセス」に相当する。
「業務データを外部に送信するリソースアクセス」は、ネットワークなどを用いて外部と通信を行うリソースの利用である。外部との通信を行うアプリケーションは、ユーザの意図に反して業務データの外部送信を行ってしまう可能性がある。このようなリソースアクセスを行う可能性のあるアプリケーションを制御対象とすることで、例えば、ストレージ同期サービスのフォルダに業務データを誤ってコピーしてしまった場合など、ユーザのミスによる業務データの外部送信を抑止できる。スマートフォンでは、「インターネット利用」や「SMS利用(SMS送信)」といった、外部との通信に必要なリソースアクセスが、「業務データを外部に送信するリソースアクセス」に相当する。
第2の実施の形態では、業務データの保護に対して脅威となるアプリケーションは、特定のリソースアクセスを行うアプリケーションとして、業務アプリケーションごとに設定できるものとする。
以下、第2の実施の形態について詳細に説明する。
図2は、第2の実施の形態のシステム構成例を示す図である。携帯情報端末100は、無線によって携帯基地局21と通信する。携帯基地局21は、ネットワーク10を介してサーバ11に接続されている。
携帯情報端末100は、携帯型のコンピュータである。例えば携帯情報端末100は、タッチセンサ付き表示装置110を有している。タッチセンサ付き表示装置110は、ユーザが画面に触れた位置を示す位置情報を取得することができる。携帯情報端末100は、例えばタッチセンサ付き表示装置110に、アプリケーションに対応するアイコン31〜35を表示する。そしてユーザが、タッチセンサ付き表示装置110の画面の任意のアイコンの位置に指で触れると、携帯情報端末100は、指が接触した位置のアイコンに対応するアプリケーションを実行する。
第2の実施の形態では、携帯情報端末100に、業務用のアプリケーションと、業務以外のアプリケーションとがインストールされているものとする。例えば、図2の例では、アイコン31,32が業務用のアプリケーションに対応付けられており、アイコン33〜35が業務以外のアプリケーションに対応付けられている。
また、携帯情報端末100には、複数の機能ボタンが設けられている。例えば携帯情報端末100に、ホームボタン127aが設けられる。ホームボタン127aは、画面表示をホーム画面に切り替えるためのボタンである。ホーム画面とは、携帯情報端末100の電源投入後に最初に表示される画面である。
次に、携帯情報端末100のハードウェア構成について説明する。
図3は、携帯情報端末のハードウェア構成例を示す図である。携帯情報端末100は、プロセッサ101によって装置全体が制御されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101の機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)などの電子回路で実現してもよい。プロセッサ101には、バス103を介してメモリ102と複数の周辺機器が接続されている。
メモリ102は、携帯情報端末100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションの少なくとも一部が一時的に格納される。またメモリ102には、プロセッサ101による処理に必要な各種データが格納される。メモリ102としては、例えばRAMなどの半導体記憶装置が用いられる。
バス103に接続されている周辺機器には、タッチセンサ付き表示装置110が構成要素であるLCD(Liquid Crystal Display)装置111とタッチセンサ112とがある。LCD装置111は、液晶を利用した表示装置である。タッチセンサ112は、接触を検知するための素子を配置した透明なスクリーンである。LCD装置111は、タッチセンサ112で表面が覆われている。そのため、LCD装置111に表示された要素をユーザが触れると、接触位置がタッチセンサで検出される。
バス103にはさらに、フラッシュメモリ121、カメラ122、モーションセンサ123、方位センサ124、位置センサ125、スピーカ126、機能ボタン127、無線通信インタフェース128、マイク129、およびメモリカードリーダライタ130が接続されている。
フラッシュメモリ121は、不揮発性記憶素子の一種である。フラッシュメモリ121としては、例えばNAND型フラッシュメモリがある。フラッシュメモリ121には、例えばOS、ドライバ、およびアプリケーションなどのソフトウェアが格納される。フラッシュメモリ121に格納されるソフトウェアには、業務に利用するアプリケーションや、ユーザが個人的に使用するアプリケーションがある。プロセッサ101は、フラッシュメモリ121からソフトウェアを読み出して、処理を実行する。
カメラ122は、CCDイメージセンサ(Charge Coupled Device Image Sensor)などの撮像素子によって、レンズを介して入射した画像を電気信号に変換する。モーションセンサ123は、3次元で加速度を検出するセンサである。方位センサ124は、携帯情報端末100の向き(方位)を検出するセンサである。位置センサ125は、例えばGPS(Global Positioning System)の衛星からの信号を受信して、携帯情報端末100の位置を検出する。スピーカ126は、プロセッサ101から送られた電気信号を音声に変換して出力する。機能ボタン127は、電源ボタンなどハードウェア的なボタンである。図2に示したホームボタン127aは、機能ボタン127の一種である。無線通信インタフェース128は、無線によって通話やデータ通信を行う。無線通信インタフェース128は、例えば第3世代移動通信システムによる通信、Wi−Fi(Wireless Fidelity)、LTE(Long Term Evolution)などによる通信を行うことができる。マイク129は、音を音声信号に変換する。マイク129は、音声信号をアナログ信号からディジタル信号に変換し、プロセッサ101に送信する。
メモリカードリーダライタ130は、メモリカード22に対するデータの書き込み、またはメモリカード22からのデータの読み出しを行う。メモリカードリーダライタ130には、メモリカード22を挿抜することができる。メモリカード22は、可搬型の記憶装置である。例えばメモリカード22には、フラッシュメモリが内蔵される。メモリカード22としては、例えばSD(商標)メモリカードがある。
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した情報処理装置も、図3に示した携帯情報端末100と同様のハードウェアにより実現することができる。
携帯情報端末100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。携帯情報端末100に実行させる処理内容を記述したプログラムは、さまざまな記録媒体に記録しておくことができる。例えば、携帯情報端末100に実行させるフラッシュメモリ121に格納しておくことができる。プロセッサ101は、フラッシュメモリ121内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また携帯情報端末100に実行させるプログラムを、メモリカード22などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、フラッシュメモリ121にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
次に、第2の実施の形態における業務データの保護方法について説明する。
図4は、第2の実施の形態における業務データの保護方法の概要を示す図である。第2の実施の形態では、業務用のアプリケーション(業務アプリケーション)を実行するためのタスク131の生成と終了とに基づいて、携帯情報端末100の業務の利用開始・終了が判断される。業務アプリケーションを実行するためのタスク131が存在している間は、業務データの保護に対して脅威となるアプリケーションを実行するためのタスク133の実行を制御する。ここで、業務データの保護に対して脅威となるアプリケーションとは、例えば、業務アプリケーションと共通のリソースへのアクセス命令が含まれるアプリケーションや、外部へのデータ送信命令が含まれるアプリケーションである。
例えば図4の例では、タスク131は、業務アプリケーションを実行しており、メモリカード22に業務データ23を格納している。この場合、メモリカード22へのアクセス要求が含まれるアプリケーションは、業務データの保護に対して脅威となる。すなわち、そのアプリケーションのタスク133の実行により、メモリカード22に対してアクセスされる場合がある。すると、業務データ23が格納された記憶領域にアクセスされる可能性もある。業務アプリケーション以外のアプリケーションの実行により、業務データ23に対するアクセスが行われたのでは、業務データ23の安全性が損なわれる。他方、タスク134により実行されるアプリケーションは、メモリカード22へのアクセス命令を含まないものとする。この場合、タスク134を実行しても、業務データの保護に対して脅威とはならないものと判断できる。
このような場合、業務アプリケーションを実行するためのタスク131が生成されてからそのタスク131が終了するまでの間、脅威の対象となるタスク133の実行が抑止される。タスク133の実行の抑止は、例えばスケジューラ140とディスパッチャ150の機能を利用できる。
スケジューラ140は、どのタスクに実行権を与えるのかを制御する。例えばスケジューラ140は、プロセッサ101の処理の実行時間を、細かい時間単位に分割し、その単位時間をタスクに割り当てる。プロセッサ101は、各単位時間において、その単位時間が割り当てられたタスクを実行する。これにより、マルチタスクと呼ばれる処理が実現され、ユーザからみると、複数のタスクが並列で実行されているように見える。
ディスパッチャ150は、スケジューラ140の立てたタスク実行のスケジュールに沿ってプロセッサ101がタスクを実行するように、タスクの切り替えを行う。ディスパッチャ150は、例えば、プロセッサ101のレジスタの値をメモリ102に退避し、次に実行するためのタスクに対応付けて退避されていた値を、レジスタに書き込むことで、プロセッサ101に実行させるタスクを切り替える。
ここで、スケジューラ140は、業務データの保護に対して脅威となるアプリケーションを実行するためのタスク133へは、プロセッサ101の実行時間を割り当てないように、タスクの実行スケジュールを立てる。すると、ディスパッチャ150は、業務アプリケーション実行用のタスク131や、業務データの保護に対して脅威とならないアプリケーション実行用のタスク134には、プロセッサ101の実行時間を割り当てる。これにより、各タスク131,134がプロセッサ101で実行される。他方、業務データの保護に対して脅威となるタスク133には、実行時間の割り当てが抑止される。プロセッサ101がタスク133を実行することがなくなる。このような制御が、例えば、業務アプリケーションを実行するためのタスク131が終了するまで継続される。
これにより、携帯情報端末100が業務で利用されている間は、業務データの保護に対して脅威となるアプリケーションの実行が抑止される。その結果、業務データ23の安全性が保たれる。また、携帯情報端末100が業務で利用されている間であっても、業務データの保護に対して脅威とならないアプリケーションであれば実行することができる。そのため、携帯情報端末100の高い利便性を維持することができる。
次に、図4に示したような業務データの保護を実現するための具体的な機能について説明する。
図5は、携帯情報端末の機能を示すブロック図である。なお図5に、携帯情報端末100が有する機能のうち、業務データの保護に使用される機能のみを示している。
携帯情報端末100はマルチタスクOSで制御されており、時分割で実行可能なタスク131〜135を有する。なおタスク131〜135は、ユーザからの要求などにより適宜生成され、処理が終了すれば消滅する。
タスク131〜135には、業務アプリケーションを実行するためのタスク131,132と、業務以外のアプリケーションを実行するためのタスク133〜135とがある。ここで、タスク131を用いて実行されている業務アプリケーションのアプリケーション名を「アプリA」とする。タスク132を用いて実行されている業務アプリケーションのアプリケーション名を「アプリB」とする。また、タスク133を用いて実行されているアプリケーションのアプリケーション名を「アプリX」とする。タスク134を用いて実行されているアプリケーションのアプリケーション名を「アプリY」とする。タスク135を用いて実行されているアプリケーションのアプリケーション名を「アプリZ」とする。
また携帯情報端末100は、図4に示したように、スケジューラ140とディスパッチャ150とを有している。さらに携帯情報端末100は、制御対象アクセス記憶部160、リソースアクセス情報記憶部170、制御対象アクセス抽出部181、制御対象アプリケーション抽出部182、業務利用判断部183、およびスケジューリング指示部184を有している。
制御対象アクセス記憶部160は、業務アプリケーションごとに、その業務アプリケーションの利用中に、業務データの保護に対して脅威となるアプリケーションからのアクセス制限を行うリソースアクセスを示す情報(制御対象アクセス情報)を記憶する。例えばメモリ102、フラッシュメモリ121、またはメモリカード22の記憶領域の一部が、制御対象アクセス記憶部160として使用される。
リソースアクセス情報記憶部170は、アプリケーションごとに、そのアプリケーションの実行時にアクセスされる可能性のあるリソースを記憶する。例えばメモリ102、フラッシュメモリ121、またはメモリカード22の記憶領域の一部が、リソースアクセス情報記憶部170として使用される。
制御対象アクセス抽出部181は、業務アプリケーションが利用中であれば、制御対象アクセス記憶部160から、その業務アプリケーションの業務データを保護するための制御対象のリソースアクセスを抽出する。また制御対象アクセス抽出部181は、利用中の業務アプリケーションの名称を、制御対象アクセス記憶部160から抽出する。
制御対象アプリケーション抽出部182は、リソースアクセス情報記憶部170から、制御対象のリソースアクセスを行うアプリケーションを抽出する。
業務利用判断部183は、携帯情報端末100の業務利用の開始・終了を判断する。例えば業務利用判断部183は、制御対象アクセス記憶部160に業務アプリケーションとして設定されているアプリケーションの起動や終了、アプリが生成したファイルの有無などから、業務利用の開始・終了を検出する。そして業務利用判断部183は、携帯情報端末100が業務利用の開始・終了をスケジューリング指示部184に通知する。例えば業務利用判断部183は、携帯情報端末100のプロセスの実行状況を監視し、制御対象アクセス情報に示されている業務アプリケーションが起動した段階で、業務の開始と判断する。そして業務利用判断部183は、その業務アプリケーションの終了をもって、業務の終了と判断する。携帯情報端末100が業務に利用されている状態において、さらに別の業務アプリケーションが開始されたときは、業務利用判断部183は、別の業務アプリケーションが起動されたことをスケジューリング指示部184に通知してもよい。また、開始された業務アプリを区別するために、業務利用判断部183は、開始された業務アプリケーションのアプリケーション名とともに、スケジューリング指示部184に通知してもよい。
スケジューリング指示部184は、業務利用の開始または終了の通知を受けると、制御対象アクセス抽出部181や制御対象アプリケーション抽出部182を用いて、業務アプリケーションを示す情報と制御対象アプリケーションを示す情報とを取得する。例えばスケジューリング指示部184は、制御対象アクセス抽出部181から、業務アプリケーションのアプリケーション名のリスト(業務アプリケーションリスト)を取得する。またスケジューリング指示部184は、制御対象アクセス抽出部181から、利用されている業務アプリケーションに応じた制御対象のリソースアクセスの名称のリスト(制御対象アクセスリスト)を取得する。またスケジューリング指示部184は、制御対象アプリケーション抽出部182から、制御対象リソースに応じた制御対象アプリケーションのアプリケーション名のリスト(制御対象アプリケーションリスト)を取得する。スケジューリング指示部184は、制御対象アクセス抽出部181や制御対象アプリケーション抽出部182から取得した情報に基づいて、スケジューラ140およびディスパッチャ150に対して、特定のタスクへのスイッチの可否などの制御指示を行う。なおスケジューリング指示部184は、動作指示をスケジューラ140に対してのみ行い、動作指示の内容をスケジューラ140からディスパッチャ150へ伝達するようにしてもよい。
このような機能の携帯情報端末100により、業務データを保護することができる。なお、図5に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
また、図5に示したスケジューラ140とディスパッチャ150以外の各機能を持つコンポーネントの配置としては、ミドルウェアとして実装してもよいし、OSのカーネル(kernel)に実装してもよい。ミドルウェアに実装する場合には、業務利用判断部183は、例えばOSのアプリケーションの起動・停止のフレームワークと連動して動作し、スケジューリング指示部184によるスケジューラへの指示はシステムコールとして実現できる。
またスケジューラ140とディスパッチャ150以外の各機能を、カーネルで実装する場合、スケジューリング指示部184からスケジューラへの指示は関数コールとして実現することができる。またリソースアクセス情報記憶部170がミドルウェア上に構築されている場合、スケジューリング指示部184は、リソースアクセス情報記憶部170内の情報をシステムコールなどの方法で入手することができる。
さらに、図5に示すスケジューリング指示部184は、図1に示す第1の実施の形態の判断手段3と制御手段4とを合わせた機能の一例である。また、図5に示すスケジューラ140とディスパッチャ150とを合わせた機能は、図1に示す第1の実施の形態の実行時間割り当て手段6の一例である。さらに、制御対象アクセス記憶部160とリソースアクセス情報記憶部170とを合わせた機能は、図1に示す第1の実施の形態の記憶手段1の一例である。
次に、制御対象アクセス記憶部160に記憶される制御対象アクセス情報について説明する。
図6は、制御対象アクセス記憶部のデータ構造の一例を示す図である。制御対象アクセス記憶部160には、制御対象テーブル161が格納されている。制御対象テーブル161には、業務アプリケーションごとの制御対象アクセス情報が登録されている。
制御対象テーブル161には、業務アプリ名、制御対象リソースアクセス、および制御要否の欄が設けられている。業務アプリ名の欄には、業務アプリケーションのアプリケーション名が設定される。制御対象リソースアクセスの欄には、対応する業務アプリケーションの利用中に、業務アプリケーション以外のアプリケーションからのアクセスの制限などの制御を行うリソースアクセス(制御対象リソースアクセス)の名称が設定される。リソースアクセスの名称には、リソースアクセスでのアクセス先となるリソースの名称が用いられる。制御要否の欄には、対応する業務アプリケーションの業務データを保護する制御を行うか否かを示すフラグが設定される。図6の例では、業務データの保護制御を行う場合、制御要否の欄に「要」と設定され、業務データの保護制御を行わない場合、制御要否の欄に「不要」と設定される。
ここで、制御対象リソースアクセスは、業務データの保護に対して脅威となるアプリケーションを、そのアプリケーションの行うリソースアクセスから判断するためのものである。例えばスマートフォンでは、各アプリケーションは、自身が行うリソースアクセスをOS上のデータベース(DB)に登録し、登録されていないアプリケーションからのリソースアクセスは禁止とすることができる。これにより、アプリが勝手にリソース(例えば電話帳など)へのアクセスを行うことが抑止される。このDBを、制御対象テーブル161として利用して、業務データの保護に対して脅威となるアプリケーションを抽出してもよい。
図6の例では、名称「アプリA」の業務アプリケーションが利用されているときの制御対象リソースアクセスは、「メモリカード、ネットワーク、SMS(Short Message Service)」である。名称「アプリB」の業務アプリケーションが利用されているときの制御対象リソースアクセスは、「メモリカード、ネットワーク、SMS、カメラ」である。また名称「アプリA」および「アプリB」それぞれの業務アプリケーションの業務データを保護する制御を行うことが設定されている。
次に、リソースアクセス情報記憶部170に記憶されるリソースアクセス情報について説明する。
図7は、リソースアクセス情報記憶部のデータ構造の一例を示す図である。リソースアクセス情報記憶部170には、リソースアクセステーブル171が格納されている。リソースアクセステーブル171には、アプリケーションごとのリソースアクセス情報が登録されている。
リソースアクセステーブル171には、アプリ名とリソースアクセスとの欄が設けられている。アプリ名の欄には、携帯情報端末100に実装されたアプリケーションのアプリケーション名が設定される。アクセス対象リソースの欄には、対応するアプリケーションの実行中にアクセスされる可能性のあるリソースの名称が設定される。
図7の例では、名称「アプリA」のアプリケーションの実行中は、メモリカードにアクセスが行われる可能性がある。また例えば名称「アプリX」のアプリケーションの実行中は、ネットワークとメモリカードとにアクセスが行われる可能性がある。
なお、図7に示したようなリソースアクセステーブル171は、例えば携帯情報端末100のOSによって生成され、保持される。
次に、業務データを保護するためのアプリケーションの実行制限処理の手順を説明する。
図8は、アプリケーションの実行制限処理の手順の一例を示すフローチャートである。
[ステップS101]業務利用判断部183は、業務利用の開始/終了のイベントを待つ。例えば業務利用判断部183は、タスクの実行状況を監視し、アプリケーションの開始または終了のイベントを検出する。業務利用判断部183は、アプリケーションの開始または終了のイベントを検出すると、制御対象テーブル161を参照し、開始または終了したアプリケーションのアプリケーション名が、業務アプリ名の欄に登録されているか否かを判断する。起動または終了したアプリケーションのアプリケーション名が、業務アプリ名の欄に登録されている場合、業務利用判断部183は、業務利用の開始または終了イベントが発生したと判断する。
[ステップS102]業務利用判断部183は、制御対象テーブル161における開始または終了イベントの対象となる業務アプリケーションの制御要否の値を更新する。例えば業務利用判断部183は、業務アプリケーションの開始イベントを検出した場合、その業務アプリケーションの制御要否を「要」に設定する。また業務利用判断部183は、業務アプリケーションの終了イベントを検出した場合、その業務アプリケーションの制御要否を「不要」に設定する。そして業務利用判断部183は、業務利用の開始または終了イベントの発生を、スケジューリング指示部184に通知する。
[ステップS103]スケジューリング指示部184は、制御対象アクセス抽出部181と連携し、利用されている業務アプリケーションを示す業務アプリケーションリスト、および利用されている業務アプリケーションに応じた制御対象アクセスリストを取得する。
例えばスケジューリング指示部184は、制御対象アクセス抽出部181に対して、業務アプリケーションリストと制御対象アクセスリストとを要求する。すると制御対象アクセス抽出部181は、制御対象テーブル161から、制御要否「要」と設定されている制御対象アクセス情報の業務アプリ名の欄に設定されているアプリケーション名を抽出する。次に制御対象アクセス抽出部181は、業務アプリ名の欄から抽出したアプリケーション名を列挙した、業務アプリケーションリストを作成する。さらに制御対象アクセス抽出部181は、制御対象テーブル161から、制御要否「要」と設定されている制御対象アクセス情報の制御対象リソースの欄に設定されているリソースアクセスの名称を抽出する。次に制御対象アクセス抽出部181は、抽出したリソースアクセスの名称を列挙した、制御対象アクセスリストを作成する。そして制御対象アクセス抽出部181は、業務アプリケーションリストと制御対象アクセスリストとを、スケジューリング指示部184に送信する。
[ステップS104]スケジューリング指示部184は、制御対象アプリケーション抽出部182と連携し、制御対象リソースに応じた制御対象アプリケーションリストを取得する。
例えばスケジューリング指示部184は、制御対象アプリケーション抽出部182に対して、制御対象アプリケーションリストを要求する。すると制御対象アプリケーション抽出部182は、リソースアクセステーブル171から、制御対象アクセスリストに含まれるリソースの少なくとも1つを、アクセス対象リソースとするリソースアクセス情報を検出する。次に制御対象アプリケーション抽出部182は、検出したリソースアクセス情報のアプリ名の欄に設定されているアプリケーション名を列挙した、制御対象アプリケーションリストを作成する。そして制御対象アプリケーション抽出部182は、作成した制御対象アプリケーションリストを、スケジューリング指示部184に送信する。
[ステップS105]スケジューリング指示部184は、制御対象アプリケーションから、利用中の業務アプリケーションを除外する。例えばスケジューリング指示部184は、制御対象アプリケーションリストに含まれるアプリケーション名のうち、業務アプリケーションリストにも含まれるアプリケーション名を特定する。そして、スケジューリング指示部184は、特定したアプリケーション名を、制御対象アプリケーションリストから削除する。
[ステップS106]スケジューリング指示部184は、制御対象アプリケーションがあるか否かを判断する。例えばスケジューリング指示部184は、制御対象アプリケーションリストに少なくとも1つのアプリケーション名が含まれていれば、制御対象アプリケーションがあると判断する。制御対象アプリケーションがある場合、処理がステップS107に進められる。制御対象アプリケーションがない場合、処理がステップS108に進められる。
[ステップS107]スケジューリング指示部184は、スケジューラ140への指示内容を、「制御対象アプリケーションへのタスクスイッチ不可」に決定する。その後、処理がステップS109に進められる。
[ステップS108]スケジューリング指示部184は、スケジューラ140への指示内容を、「すべてのアプリケーションへのタスクスイッチ可」に決定する。
[ステップS109]スケジューリング指示部184は、スケジューラ140およびディスパッチャ150へ、ステップS107またはS108で決定した指示内容での動作指示を送信する。制御対象アプリケーションへのタスクスイッチ不可を指示する場合、動作指示には、制御対象アプリケーションリストが含まれる。なおスケジューリング指示部184は、動作指示をスケジューラ140にのみ送信し、スケジューラ140からディスパッチャ150へ動作指示の内容を伝達するようにしてもよい。その後、処理がステップS101に進められる。
このようにして業務利用の開始/終了のイベントがあるごとに、スケジューリング指示部184から、スケジューラ140およびディスパッチャ150に動作指示が出される。 次に、スケジューリング指示部184からの動作指示を受けた、スケジューラ140とディスパッチャ150との動作について説明する。
図9は、スケジューラとディスパッチャとの動作の一例を示す図である。スケジューラ140は、実行待ちキュー141と待機状態キュー142とを有している。
実行待ちキュー141には、実行可能な状態のタスクが登録される。図9の例では、業務アプリケーションを実行するためのタスク41と、アイドルループ処理を実行するためのタスク42とが登録されている。アイドルループ処理は、プロセッサ101に実行させるプログラムがないときに、実行させる処理である。アイドルループ処理のタスク42は、優先順位が最も低く設定されており、実行待ちキュー141内のタスクがアイドルループ処理のタスク42のみとなったときに実行される。
待機状態キュー142には、待機状態のタスクが登録される。待機状態のタスクとは、例えばIO待ちなどで、すぐには実行できない状態のタスクである。図9の例では、一般のアプリケーション(業務アプリケーションと制御対象アプリケーション以外のアプリケーション)を実行するためのタスク43と、制御対象アプリケーションを実行するためのタスク44とが、待機状態キュー142に登録されている。
スケジューラ140は、さらに制御対象アプリケーション記憶部143とキュー操作部144とを有している。
制御対象アプリケーション記憶部143は、スケジューリング指示部184からの動作指示で指定に含まれる、制御対象アプリケーションリストを記憶する。制御対象アプリケーション記憶部143は、例えばスケジューラ140に割り当てられた、メモリ102内の記憶領域である。
キュー操作部144は、実行待ちキュー141と待機状態キュー142へのタスクの登録、実行待ちキュー141内のタスクのディスパッチャ150への実行指示、待機状態キュー142から実行待ちキュー141へのタスクの移動などを制御する。例えばキュー操作部144は、実行待ちキュー141に登録されているタスクを、優先度などに基づいた所定の順番でディスパッチャ150に出力する。
またキュー操作部144は、待機状態キュー142に登録されているタスクが実行可能な状態になると、そのタスクを実行待ちキュー141に移動する。ただし、キュー操作部144は、制御対象アプリケーション記憶部143を参照し、実行可能になったタスクで実行するアプリケーションが制御対象アプリケーションか否かを判断する。そして、キュー操作部144は、実行可能になったタスクで実行するアプリケーションが制御対象アプリケーションの場合、そのタスクは実行待ちキュー141に移動せずに、待機状態キュー142に留めておく。例えば図9の例では、タスク43は、制御対象アプリケーションを実行するためのものではないため、実行可能状態になると実行待ちキュー141に移される。他方、タスク44は、制御対象アプリケーションを実行するためのものであるため、実行可能状態となっても、実行待ちキュー141には移されない。なお、制御対象アプリケーションを実行するためのタスク44は、例えば携帯情報端末100の業務利用が終了した後であれば、実行待ちキュー141に移すことができる。
ディスパッチャ150は、アプリケーション判断部151とタスクスイッチ部152とを有する。ディスパッチャ150は、スケジューラ140からタスク45を取得すると、そのタスク45で実行されるアプリケーションが制御対象アプリケーションか否かを判断する。そしてアプリケーション判断部151は、取得したタスク45が、制御対象アプリケーション以外のアプリケーションを実行するためのタスクであれば、取得したタスク45をタスクスイッチ部152に渡す。なお、制御対象アプリケーション以外のアプリケーションには、業務アプリケーションが含まれる。またアプリケーション判断部151は、取得したタスク45が、制御対象アプリケーションを実行するためのタスクであれば、取得したタスク45をスケジューラ140に戻す。スケジューラ140に戻されたタスク45は、キュー操作部144により待機状態キュー142に登録される。
タスクスイッチ部152は、プロセッサ101に実行させるタスクを、渡されたタスクに切り替える。タスクの切り替え処理では、実行中のタスクのプリエンプションと、次に実行するタスクのディスパッチとが行われる。プリエンプションは、プロセッサ101が実行中のタスクを中断する処理である。ディスパッチは、プロセッサ101の計算応力をタスクに割り当てる処理である。プリエンプションを行う場合、タスクスイッチ部152は、中断するタスクを実行するためのプロセッサの状態(コンテキスト)をメモリに書き出す。またディスパッチを行う場合、タスクスイッチ部152は、プロセッサ101に実行させるタスクのコンテキストを、レジスタに書き込む。このようなプロセッサ101のレジスタ内のコンテキストの書き換え(コンテキストスイッチ)によって、プロセッサ101が実行するタスクが切り替えられる。
このように制御対象アプリケーションを実行するためのタスクは、待機状態キュー142から実行待ちキュー141に移されない。また、タスクが実行待ちキュー141に登録された後に、そのタスクにより実行するアプリケーションが制御対象アプリケーションになったとしても、そのタスクはディスパッチャ150でディスパッチが拒否され、スケジューラ140に戻される。これにより、制御対象アプリケーションを実行するためのタスクには、プロセッサ101の実行時間の割り当てが行われなくなり、そのタスクの実行が抑止される。
次に、1つのタスクの生成から終了までの、タスク制御処理の手順について説明する。
図10は、タスク制御処理の手順を示すフローチャートである。なおタスク制御処理は、タスクの生成により開始される。
[ステップS121]スケジューラ140は、生成されたタスクを管理対象のタスクとし、そのタスクを待機状態キュー142に登録する。
[ステップS122]スケジューラ140は、管理対象のタスクが実行可能となったことを検知する。例えばIOの応答待ちをしていたタスクに関し、IOの応答が返されたことを検知する。
[ステップS123]スケジューラ140は、制御対象アプリケーション記憶部143を参照し、制御対象アプリケーションのアプリケーション名を取得する。
[ステップS124]スケジューラ140は、管理対象のタスクを実行待ちキューに移動してよいか否かを判断する。例えばスケジューラ140は、管理対象のタスクにより実行するアプリケーションが、制御対象アプリケーションでなければ、実行待ちキューに移動してよいと判断する。実行待ちキューに移動してよい場合、処理がステップS125に進められる。また実行待ちキューに移動できない場合、処理がステップS121に進められる。
[ステップS125]スケジューラ140は、管理対象のタスクを、実行待ちキュー141に移動する。移動されたタスクは、実行待ちキュー141で保持される。
[ステップS126]スケジューラ140は、実行待ちキュー141におけるディスパッチの順番が、管理対象のタスクの実行順になると、管理対象のタスクをディスパッチの対象として、ディスパッチャ150に渡す。
[ステップS127]ディスパッチャ150は、制御対象アプリケーション記憶部143を参照し、制御対象アプリケーションのアプリケーション名を取得する。
[ステップS128]ディスパッチャ150は、管理対象のタスクが、ディスパッチをしてよいタスクか否かを判断する。例えばディスパッチャ150は、管理対象のタスクにより実行するアプリケーションが、制御対象アプリケーションでなければ、ディスパッチしてよいと判断する。ディスパッチしてよい場合、処理がステップS129に進められる。またディスパッチできない場合、処理がステップS131に進められる。
[ステップS129]ディスパッチャ150は、管理対象のタスクをディスパッチし、プロセッサ101に所定時間実行させる。その後、ディスパッチャ150は、管理対象のタスクをプリエンプションする。
[ステップS130]スケジューラ140は、管理対象のタスクが終了したか否かを判断する。例えば管理対象のタスクで実行するアプリケーションの処理が終了した場合、そのタスクは終了する。タスクが終了した場合、タスク制御処理が終了する。タスクが終了していなければ、処理がステップS131に進められる。
[ステップS131]スケジューラ140は、管理対象のタスクを待機状態キュー142へ移動する。移動されたタスクは、待機状態キュー142で保持される。その後、処理がステップS121に進められる。
このようにして、タスクに対してプロセッサ101の処理能力が時分割で割り当てられる。ただし、携帯情報端末100が業務に利用されている間は、制御対象アプリケーションを実行するためのタスクに対しては、プロセッサ101の処理能力の割り当ては行われない。これにより、業務アプリケーションの実行中は、業務データの保護に対して脅威となるプリケーションの実行が抑止される。
図11は、タスクのスケジューリングの一例を示す図である。各業務アプリケーションの制御対象リソースは、図6の制御対象テーブル161に示した通りであるものとする。すなわち「アプリA」は、メモリカード利用、ネットワーク、SMSのリソースアクセスによる脅威があり、「アプリB」はメモリカード利用、ネットワーク、SMSに加えて、カメラも脅威であると考えている。
またリソースアクセステーブル171の内容は図7に示した通りであるものとする。すなわち、業務用の「アプリA」、「アプリB」および、業務以外の「アプリX」、「アプリY」、「アプリZ」がある。また、「アプリA」のアクセス対象リソースは、メモリカードである。「アプリB」のアクセス対象リソースは、ネットワーク・カメラ・メモリカードである。「アプリX」のアクセス対象リソースは、ネットワーク・メモリカードである。「アプリY」のアクセス対象リソースは、カメラである。「アプリZ」のアクセス対象リソースは、GPSである。
図11の例では、まず「アプリX」が実行されている。そして時刻t1に「アプリA」のタスク131が起動されている。するとタスク131の起動が業務利用判断部183で検知される。そして業務利用判断部183からスケジューリング指示部184へ、「アプリA」の業務開始が通知される。
スケジューリング指示部184は、業務開始の通知を受けて、制御対象アクセス抽出部181に問い合わせる。制御対象アクセス抽出部181は、制御対象テーブル161を参照して、現在動作している業務アプリケーションは「アプリA」であり、「アプリA」の制御対象リソースアクセスは、メモリカード、ネットワーク、SMSへのアクセスであること判断する。そして、制御対象アクセス抽出部181は、スケジューリング指示部184へ、「アプリA」を含む業務アプリケーションリストと、「メモリカード」、「ネットワーク」、「SMS」を含む制御対象アクセスリストとを、スケジューリング指示部184に返答する。
さらに、スケジューリング指示部184は、「制御対象リソースアクセス」のアクセス先である「メモリカード、ネットワーク、SMS」を制御対象アプリケーション抽出部182に渡して、制御対象アプリケーションを問い合わせる。制御対象アプリケーション抽出部182は、リソースアクセステーブル171を参照して、「メモリカード、ネットワーク、SMS」のいずれかにアクセスする可能性のあるアプリケーション「アプリA」、「アプリB」、「アプリX」を抽出する。そして制御対象アプリケーション抽出部182は、抽出したアプリケーションの名称を列挙した制御対象アプリケーションリストをスケジューリング指示部184に返答する。
この段階でスケジューリング指示部184は、利用されている業務アプリケーションの名称として「アプリA」を取得し、制御対象アプリケーションの名称として、「アプリA」、「アプリB」、「アプリX」を取得したことになる。この情報を元に、スケジューリング指示部184は、「制御対象アプリケーション」から「業務アプリケーション」を除外した、「アプリB」、「アプリX」に対してタスクスイッチを抑止するようにスケジューラ140およびディスパッチャ150に指示を出す。なお「アプリB」は業務アプリケーションとして登録されているが、この段階では起動していないので、タスクスイッチの対象となることもない。これにより、「アプリA」を起動したことで「アプリX」へのタスクスイッチが抑止される。
その後、「アプリY」のタスク134が起動されている。「アプリY」は制御対象アプリケーションではない。そのため、「アプリA」を用いて携帯情報端末100が業務に利用されていても、「アプリY」のタスク134は実行される。
時刻t2に「アプリB」の業務が開始されると、「アプリB」は業務アプリケーションであるため、「アプリB」による業務開始が業務利用判断部183からスケジューリング指示部184に通知される。するとスケジューリング指示部184は、制御対象アクセス抽出部181から、業務アプリケーションリストと制御対象アクセスリストとを取得する。制御対象アクセス抽出部181から取得した業務アプリケーションリストには、「アプリA」、「アプリB」が含まれる。また制御対象アクセス抽出部181から取得した制御対象アクセスリストには、「メモリカード」、「ネットワーク」、「SMS」、「カメラ」が含まれる。またスケジューリング指示部184は、制御対象アプリケーション抽出部182から、制御対象アプリケーションリストを取得する。リソースアクセステーブル171を参照すると、「メモリカード、ネットワーク、SMS、カメラ」の少なくとも1つをアクセス対象リソースとしているのは、「アプリA」、「アプリB」、「アプリX」、「アプリY」である(図7参照)。そのため、制御対象アプリケーション抽出部182から取得した制御対象アプリケーションリストには、「アプリA」、「アプリB」、「アプリX」、「アプリY」が含まれる。ここで、業務アプリケーションは制御対象アプリケーションから除外され、制御対象アプリケーションに特定されるのは「アプリX」、「アプリY」となる。その結果、「アプリB」の業務開始の通知が出された後は、「アプリX」のタスク133と「アプリY」のタスク134とへのタスクスイッチが抑止される。
この状況でも「アプリZ」は制御対象アプリに含まれていないため、通常通り起動し、利用することができる。
時刻t3に「アプリA」のタスク131が終了している。すると、業務利用判断部183が「アプリA」の終了を検知する。そして業務利用判断部183からスケジューリング指示部184へ、「アプリA」の業務終了が通知される。この時点は「アプリB」のタスク132は依然として存在している。そのため制御対象アクセス抽出部181からスケジューリング指示部184へ、「アプリB」を含む業務アプリケーションリストが送信される。また制御対象アクセス抽出部181からスケジューリング指示部184へ、「メモリカード」、「ネットワーク」、「SMS」、「カメラ」を含む制御対象アクセスリストが送信される。さらに制御対象アプリケーション抽出部182からスケジューリング指示部184へ、「アプリX」、「アプリY」を含む制御対象アプリケーションリストが送信される。その結果、制御対象アプリケーションから業務アプリケーションを除外した、「アプリA」、「アプリX」、「アプリY」へのタスクスイッチが抑止される。なお、「アプリA」は終了済みであるためタスクスイッチの対象となることもなく、「アプリA」のタスクへのタスクスイッチを抑止しても動作上の問題はない。
その後、「アプリZ」のタスク135が起動されている。「アプリZ」は制御対象アプリケーションではないため、「アプリZ」のタスク135は実行される。
時刻t4に「アプリB」のタスク132が終了している。すると、業務利用判断部183からスケジューリング指示部184へ、「アプリB」の業務終了が通知される。この場合、制御対象アクセス抽出部181は、空の業務アプリケーションリストと、空の制御対象アクセスリストを、スケジューリング指示部184に送信する。さらに制御対象アプリケーション抽出部182は、空の制御対象アプリケーションリストを、スケジューリング指示部184へ送信する。制御対象アプリケーションリストが空となった場合には、すべてのアプリケーションのタスクへのタスクスイッチを許可するように、スケジューリング指示部184からスケジューラ140やディスパッチャ150に指示が出される。その結果、なにも制限されていない通常状態になる。移行は、すべてのアプリケーションが実行可能となり、「アプリX」、「アプリY」、「アプリX」が時分割で実行される。
このようにして、携帯情報端末100を業務で利用中は、実行されている業務アプリケーションに対応付けて制御対象リソースとして指定されているリソースにアクセスするアプリケーションは、プロセッサ101の実行時間の割り当て対象から除外される。その結果、業務データが、業務以外のアプリケーションの実行により外部に漏洩することが抑止され、業務データの安全性が確保される。
また、アプリケーションを停止させるのではなく、スケジューラにより実行させないようにすることで、業務利用が終わった後も速やかに業務開始前の状況を復元できるといった効果もある。
また、動作を制御する対象のアプリケーションをアプリケーション名ではなく特定のリソースアクセスとすることで、未知の危険性をはらんでいるアプリケーションとの併用を抑止することができ、業務データを安全に保つことができる。
さらに、携帯情報端末100上へのアプリケーション導入に特に制限がなく、携帯情報端末100を業務利用していない時には、ユーザが自由に使うことができる。
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、業務データを一時的に退避することで、携帯情報端末を業務で利用中であっても、業務以外の任意のアプリケーションを利用できるようにしたものである。
図12は、第3の実施の形態における業務データ保護方法の概要を示す図である。第3の実施の形態では、第2の実施の形態と同様に、業務アプリケーションを実行するためのタスク231の生成と終了とに基づいて、携帯情報端末200の業務の利用開始・終了が判断される。第3の実施の形態では、業務アプリケーションを実行するためのタスク231の動作中は、業務データ24の保護に対して脅威となるアプリケーションを実行するためのタスク233を実行する前に、業務データ24が退避データ記憶部290に退避される。退避データ記憶部290は、例えば携帯情報端末200のRAM内の、カーネル空間として管理されている記憶領域である。カーネルとは、OSの中核となる部分である。OSは、カーネル空間として管理されている記憶領域には、アプリケーションの実行に基づいたアクセスができないように設計されている。そのため、カーネルの管理領域に退避された業務データ25に、アプリケーションを実行に基づいてアクセスすることはできない。
例えば、業務アプリケーション実行用のタスク231の実行により、メモリカード22に業務データ24を格納されているものとする。このとき、メモリカード22にアクセスする可能性のあるアプリケーションのタスク233を実行させる場合を想定する。この場合、スケジューラ240は、そのタスク233へ切り替えの前に、退避アプリケーションのタスク236への切り替えをディスパッチャ250に指示する。すると、ディスパッチャ250は、退避アプリケーションのタスク236に、プロセッサ101の実行時間を割り当てる。これにより、プロセッサ101でタスク236が実行される。タスク236の実行により、メモリカード22に格納されている業務データ24が、退避データ記憶部290に移動される。さらにメモリカード22から業務データ24が削除される。
その後、ディスパッチャ250は、業務以外のアプリケーションのタスク233に、プロセッサの実行時間を割り当てる。するとプロセッサ101は、タスク233を用いてアプリケーションを実行する。このとき、アプリケーション内の命令に従ってプロセッサ101がメモリカード22にアクセスしても、業務データ24は既に退避されており、退避された業務データ25にアクセスされることはない。これにより、業務データの安全性が保たれる。
なお、第3の実施の形態に係る携帯情報端末200のハードウェア構成は、図3に示した第2の実施の形態に係る携帯情報端末100のハードウェア構成と同様である。
図13は、第3の実施の形態に係る携帯情報端末の機能を示すブロック図である。携帯情報端末200は、時分割で実行可能なタスク231〜237を有する。なおタスク231〜237は、ユーザからの要求などにより適宜生成され、処理が終了すれば消滅する。
タスク231〜235は、それぞれ第2の実施の形態のタスク131〜135と同じアプリケーションを実行する。タスク236は、退避アプリケーションを実行する。退避アプリケーションは、業務データを退避データ記憶部290に退避するためのアプリケーションである。タスク237は、データ復元アプリケーションを実行する。データ復元アプリケーションは、退避データ記憶部290に退避された業務データを、元の場所に復元するためのアプリケーションである。
また携帯情報端末200は、図12に示したように、スケジューラ240、ディスパッチャ250、および退避データ記憶部290を有している。さらに携帯情報端末200は、制御対象アクセス記憶部260、リソースアクセス情報記憶部270、制御対象アクセス抽出部281、制御対象アプリケーション抽出部282、業務利用判断部283、およびスケジューリング指示部284を有している。
リソースアクセス情報記憶部270、制御対象アプリケーション抽出部282は、図5に示した第2の実施の形態の同名の要素と同じ機能を有する。
制御対象アクセス記憶部260は、業務アプリケーションごとの制御対象アクセス情報を記憶する。第3の実施の形態における制御対象アクセス情報には、業務アプリケーションに対応する退避アプリケーションの名称や、復元アプリケーションの名称が含まれる。
制御対象アクセス抽出部281は、スケジューリング指示部284からの要求に応じて、制御対象アクセス記憶部260に基づいて、業務アプリケーションリストと制御対象サクセスリストとを生成する。そして、制御対象アクセス抽出部281は、生成した業務アプリケーションリストと制御対象サクセスリストとを、スケジューリング指示部284に渡す。なお第3の実施の形態における制御対象アクセス抽出部281は、業務アプリケーションリストに、各業務アプリケーション対応する退避アプリケーションと復元アプリケーションとの名称を含める。
業務利用判断部283は、業務アプリケーションの起動イベントや終了イベントを検知により、携帯情報端末200の業務利用開始・終了を判断する。また業務利用判断部283は、業務利用の中断・再開のイベントを検知する。例えば、業務利用判断部283は、アプリケーションの切り替え操作を検知して、業務アプリケーションを背面へ回す操作が行われた場合、退避アプリケーションを実行するためのタスク236を動作させるようにスケジューリング指示部284に通知する。そして業務利用判断部283は、退避アプリケーションを実行するためのタスク236から、データ退避完了の報告を受け取ると、業務利用が中断したと判断する。また業務利用判断部283は、業務アプリケーションを前面へ出す操作が行われた場合、復元アプリケーションを実行するためのタスク237を動作させるように、スケジューリング指示部284に通知する。そして業務利用判断部283は、復元アプリケーションを実行するためのタスク237から、データ復元完了の報告を受け取ると、業務利用が再開したと判断する。そして業務利用判断部283は、業務利用の開始・中断・再開・終了などの情報をスケジューリング指示部284に通知する。
スケジューリング指示部284は、業務利用判断部283からのデータ退避/復元要求を受け、退避・復元アプリケーションを起動する。退避アプリケーションを起動した場合、スケジューリング指示部284は、スケジューラ240とディスパッチャ250とに対して、制御対象アプリケーションと業務アプリケーションへのタスクスイッチの不可を指示する。データ復元アプリケーションを起動した場合も同様に、スケジューリング指示部284は、スケジューラ240とディスパッチャ250とに対して、制御対象アプリケーションと業務アプリケーションへのタスクスイッチの不可を指示する。
またスケジューリング指示部284は、制御対象アクセス抽出部281から、業務アプリケーションリストと制御対象アクセスリストとを取得する。またスケジューリング指示部284は、制御対象アプリケーション抽出部282から制御対象アプリケーションリストを取得する。そしてスケジューリング指示部284は、取得した情報を用い、業務利用の開始・中断・再開・終了の通知に応じて、スケジューラ240とディスパッチャ250とに対して、タスクスイッチを指示する。
次に、第3の実施の形態における、第2の実施の形態と相違する部分の詳細について説明する。
図14は、制御対象アクセス記憶部のデータ構造の一例を示す図である。制御対象アクセス記憶部260には、制御対象テーブル261が格納されている。第3の実施の形態の制御対象テーブル261は、第2の実施の形態の制御対象テーブル161(図6参照)に対して、退避アプリと復元アプリとの欄が追加されている。退避アプリの欄には、業務アプリ名に示される業務アプリケーションの業務データを退避させるための退避アプリケーションの名称が設定される。復元アプリの欄には、業務アプリ名に示される業務アプリケーションの業務データを復元させるための復元アプリケーションの名称が設定される。
次に、業務データを保護するためのアプリケーションの実行制限処理の手順を説明する。
図15は、第3の実施の形態におけるアプリケーション実行制限処理の手順を示すフローチャートである。
[ステップS201]業務利用判断部283は、業務利用の開始/中断/再開/終了/中断操作/再開操作のイベントを待つ。例えば業務利用判断部283は、タスクの実行状況を監視し、アプリケーションの開始/中断/再開/終了/中断操作/再開操作のイベントを検出する。業務利用判断部283は、アプリケーションの開始/中断/再開/終了/中断操作/再開操作のイベントを検出すると、制御対象テーブル261を参照し、イベント対象のアプリケーションが、業務アプリケーションか否かを判断する。イベント対象のアプリケーションが業務アプリケーションであれば、業務利用判断部283は、業務利用の開始/中断/再開/終了/中断操作/再開操作のイベントが発生したと判断する。
なお、業務利用の中断イベントは、例えば業務データの退避完了の通知の取得である。また業務利用の再開イベントは、例えば業務データの復元完了の通知の取得である。また業務利用の中断操作のイベントは、例えば業務アプリケーションを、画面上で背面へ移動させる操作入力である。また業務利用の再開操作のイベントは、例えば業務アプリケーションを、画面上で前面へ移動させる操作入力である。
[ステップS202]業務利用判断部283は、開始/終了のイベントを検出した場合、制御対象テーブル261における開始または終了イベントの対象となる業務アプリケーションの制御要否の値を更新する。そして業務利用判断部283は、業務利用の開始/中断/再開/終了のイベントが発生した場合、そのイベントの発生をスケジューリング指示部284に通知する。また業務利用判断部283は、業務利用の中断操作のイベントが発生した場合、業務データの退避要求をスケジューリング指示部284に通知する。さらに業務利用判断部283は、業務利用の再開操作のイベントが発生した場合、業務データの復元要求をスケジューリング指示部284に通知する。なお各通知には、イベントの対象となる業務アプリケーションの名称が含まれる。
[ステップS203]スケジューリング指示部284は、制御対象アクセス抽出部281と連携し、利用されている業務アプリケーションを示す業務アプリケーションリスト、および利用されている業務アプリケーションに応じた制御対象アクセスリストを取得する。なお、業務アプリケーションリストには、業務アプリケーションごとの退避/復元アプリケーションの名称が含まれるものとする。
[ステップS204]スケジューリング指示部284は、制御対象アプリケーション抽出部282と連携し、制御対象リソースに応じた制御対象アプリケーションリストを取得する。
[ステップS205]スケジューリング指示部284は、制御対象アプリケーションから、利用中の業務アプリケーションを除外する。
[ステップS206]スケジューリング指示部284は、業務利用判断部283からの通知内容を判断する。通知内容が退避要求であれば、処理がステップS207に進められる。通知内容が復元要求であれば、処理がステップS209に進められる。通知内容が業務利用の中断であれば、処理がステップS211に進められる。通知内容が業務利用の開始/再開/終了のいずれかであれば、処理がステップS212に進められる。
[ステップS207]スケジューリング指示部284は、退避要求を受け取った場合、イベントの対象となった業務アプリケーションの退避アプリケーションを起動する。
[ステップS208]スケジューリング指示部284は、指示内容を、「制御対象アプリケーションと業務アプリケーションへのタスクスイッチ不可」に決定する。その後、処理がステップS215に進められる。
[ステップS209]スケジューリング指示部284は、復元要求を受け取った場合、イベントの対象となった業務アプリケーションの復元アプリケーションを起動する。
[ステップS210]スケジューリング指示部284は、指示内容を、「制御対象アプリケーションと業務アプリケーションへのタスクスイッチ不可」に決定する。その後、処理がステップS215に進められる。
[ステップS211]スケジューリング指示部284は、指示内容を、「業務アプリケーションへのタスクスイッチ不可」に決定する。その後、処理がステップS215に進められる。
[ステップS212]スケジューリング指示部284は、通知が、業務利用の開始/再開/終了のいずれかであれば、制御対象アプリケーションがあるか否かを判断する。制御対象アプリケーションがある場合、処理がステップS213に進められる。制御対象アプリケーションがない場合、処理がステップS214に進められる。
[ステップS213]スケジューリング指示部284は、制御対象アプリケーションがあれば、指示内容を「制御対象アプリケーションへのタスクスイッチ不可」に決定する。その後、処理がステップS215に進められる。
[ステップS214]スケジューリング指示部284は、制御対象アプリケーションがなければ、指示内容を「すべてのアプリケーションへのタスクスイッチ可」に決定する。
[ステップS215]スケジューリング指示部284は、スケジューラ240およびディスパッチャ250へ、決定した指示内容での動作指示を送信する。なお、制御対象アプリケーションへのタスクスイッチ不可を指示する場合、動作指示には、制御対象アプリケーションリストが含まれる。また業務アプリケーションへのタスクスイッチ不可を指示する場合、動作指示には、業務アプリケーションリストが含まれる。
このようにして、スケジューリング指示部284からスケジューラ240およびディスパッチャ250へ、動作指示が出される。動作指示は、例えば図9に示した第2の実施の形態と同様に、スケジューラ240内の制御対象アプリケーション記憶部に格納される。そして、格納された動作指示に従って、スケジューラ240とディスパッチャ250とが、スイッチ不可に設定されたアプリケーションを実行するためのタスクへのスイッチを抑止する。
次にデータ退避/復元アプリケーションに関してさらに詳細に説明する。退避アプリケーションやデータ復元アプリケーションは、業務に固有なファイル(業務データを含んだファイル)を特定のデータ退避領域に退避・復元するものである。データ退避領域としてはメモリ空間、ストレージ空間、ネットワーク空間が考えられる。
まず、メモリ空間に業務データを退避する場合、例えば、制御対象アプリケーションからはアクセスできないメモリ空間領域に業務データが退避される。スマートフォンのOSは従来の汎用OSをベースとしていることが多い。そのため、タスクごとのメモリ空間は互いに独立している。そこで、例えば、退避アプリケーションのタスクの実行の生成により、保存したいファイルの大きさのメモリ空間を確保し、ファイルをそのメモリ空間上に展開し、元のファイルそのものは消去することがきる。この場合、退避アプリケーションとテータ復元アプリケーションとは同一のアプリケーションとすることができる。データ退避/復元アプリケーションを実行するためのタスクが実行されると、復元要求があった段階で、自身のメモリ空間に展開したファイル(業務データを含んだファイル)が、ファイルシステム上の既定の場所に戻される。また、多くのメモリが必要となる可能性があることから、退避アプリケーションを実行することで、業務データを圧縮して退避されるようにしてもよい。また退避/復元アプリケーションが、他のアプリの影響を受けないようにカーネルの機能として実行されるようにしてもよい。
また、ストレージ空間に業務データを退避させる場合、例えば制御対象アプリケーションからはアクセスできないファイルシステム領域に、業務データが退避される。スマートフォンでは、アプリケーション間で共通して利用できるストレージ空間以外に、アプリケーション専用のストレージを用意しているものもある。携帯情報端末200がこのようなスマートフォンであれば、退避/復元アプリケーションの実行により、退避/復元アプリケーション専用のストレージ領域を確保し、確保したストレージ領域をデータの退避先として利用することができる。なおアプリケーション専用のストレージ領域は利用可能な大きさが限定されていることも多い。そのため、圧縮などによりファイルサイズを小さくして、業務データを退避させてもよい。
また、ネットワーク空間に業務データを退避される場合、例えば制御対象アプリケーションからはアクセスできない退避用クラウドストレージ領域に、業務データが退避される。この場合、退避アプリケーションと復元アプリケーションのみアクセス可能なネットワーク上のストレージ装置の内の領域を定義する。そして、退避アプリケーションを実行することで、ネットワーク上のストレージ装置内の予め定義された領域に業務データが退避される。また復元アプリケーションを実行することで、その領域に退避された業務データが、携帯情報端末200内に復元される。この場合、途中の通信路の盗聴などを防ぐために、暗号化された通信路を、退避・復元のための通信路として用いることができる。また、退避・復元アプリケーションであることを確認するような認証の機構を組み込んでもよい。
図16は、データ退避処理の手順を示すフローチャートである。この処理は、退避アプリケーションが起動されたときに実行される。
[ステップS221]退避アプリケーションを実行するためのタスク236は、業務データの含まれるファイル(退避ファイル)一覧を取得する。例えば退避アプリケーションには、対応する業務アプリケーションの業務データを含むファイルの保管領域(フォルダなど)が予め定義されている。そして退避アプリケーションを実行するためのタスク236は、その保管領域に格納されているファイルを、退避ファイルとして抽出する。
[ステップS222]タスク236は、データ退避領域の必要量を算出する。例えばタスク236は、退避ファイルのファイルサイズの合計に、退避ファイルの復元場所を示す情報のデータ量を加算した値を、データ退避領域の必要量とする。
[ステップS223]タスク236は、データ退避領域を確保する。データ退避領域は、メモリ内、ストレージ装置内、ネットワーク上のサーバ内などに確保することができる。
[ステップS224]タスク236は、業務データの含まれる退避ファイルを、1つ読み込む。
[ステップS225]タスク236は、退避ファイルの退避前の保管場所を示す情報(例えば保管場所のディレクトリパス)を、データ退避領域に書き込む。
[ステップS226]タスク236は、退避ファイルの退避前の場所を示す情報に関連付けて、退避ファイルをデータ退避領域に書き込む。
[ステップS227]タスク236は、退避前の保管場所から退避ファイルを削除する。
[ステップS228]タスク236は、すべての退避ファイルの退避処理が完了したか否かを判断する。未処理の退避ファイルがあれば、処理がステップS224に進められる。すべての退避ファイルの退避処理が完了していれば、処理がステップS229に進められる。
[ステップS229]タスク236は、データ退避処理の完了を、業務利用判断部283に通知する。
このようにして、業務データを退避させることができる。次にデータ復元処理について説明する。
図17は、データ復元処理の手順を示すフローチャートである。この処理は、復元アプリケーションが起動されたときに実行される。
[ステップS241]復元アプリケーションを実行するためのタスク237は、データ退避領域のファイル一覧を取得する。
[ステップS242]タスク237は、データ退避領域から、退避ファイルの退避前の場所を示す情報を、1つ読み込む。
[ステップS243]タスク237は、データ退避領域から退避ファイルを読み込む。
[ステップS244]タスク237は、退避ファイルの退避前の場所に、読み込んだ退避ファイルを書き込む。
[ステップS245]タスク237は、書き込んだ退避ファイルを、データ退避領域から削除する。この際、タスク237は、削除した退避ファイルに関連付けられた、退避ファイルの退避前の場所を示す情報も、データ退避領域から削除する。
[ステップS246]タスク237は、すべての退避ファイルの復元処理が完了したか否かを判断する。未処理の退避ファイルがあれば、処理がステップS242に進められる。すべての退避ファイルの復元処理が完了した場合、処理がステップS247に進められる。
[ステップS247]タスク237は、データ復元処理の完了を、業務利用判断部283に通知する。
このようにして、業務データを復元することができる。
次に、業務データの退避と復元とを伴うタスクスケジューリング例について説明する。
図18は、第3の実施の形態によるタスクスケジューリングの一例を示す図である。図18の例では、業務アプリケーション「アプリA」、および、業務以外のアプリケーション「アプリX」があるものとする。また、それぞれのアプリのリソースアクセスは、図7のリソースアクセステーブル171に示した通りであるものとする。すなわち、業務アプリケーション「アプリA」に基づいて、メモリカードへのアクセスが行われる。またアプリケーション「アプリX」に基づいて、ネットワークまたはメモリカードへのアクセスが行われる。
また、業務アプリケーション「アプリA」に関する制御対象リソースは、図14に示した制御対象テーブル261の通りであるものとする。すなわち業務アプリケーション「アプリA」の業務データの保護に対して、メモリカード、ネットワーク、SMSのリソースアクセスによる脅威が存在する。
図18には、フォアグラウンドで実行されているアプリケーションの時間に伴う遷移が示されている。図18の例では、アプリXを実行するためのタスク233(図13参照)にプロセッサの時間が割り当てられ、タスク233が実行させているとき、時刻t21に、業務アプリケーション「アプリA」が起動されている。業務アプリケーション「アプリA」の起動により、業務利用判断部283からスケジューリング指示部284へ、「アプリA」による業務開始が通知される。するとスケジューリング指示部284は、制御対象アクセス抽出部281から、「アプリA」を含む業務アプリケーションリストと、メモリカード、ネットワーク、SMSを含む制御対象アクセスリストとを取得する。
またスケジューリング指示部284は、制御対象アプリケーション抽出部282から、「アプリA」と「アプリX」とを含む制御対象アプリケーションリストを取得する。スケジューリング指示部284は、取得した制御対象アプリケーションリストから、業務アプリケーションリストに含まれる「アプリA」を削除する。そしてスケジューリング指示部284は、制御対象アプリケーションリストに残った「アプリX」を実行するためのタスク233をスケジューリング対象から外すように、スケジューラ240とディスパッチャ250とに指示を出す。その結果、「アプリA」を実行するためのタスク231がフォアグラウンドに表示され、プロセッサで実行される。
その後、時刻t22に、「アプリA」のタスク231をバックグラウンドに回し、「アプリX」のタスク233をフォアグラウンドに表示する操作が行われたものとする。業務利用判断部283は、その操作を検知し、業務データの退避要求を、スケジューリング指示部284に通知する。
退避要求を受けたスケジューリング指示部284は、制御対象アクセス抽出部281からの情報の取得により、実行されている業務アプリケーションが「業務アプリA」であることを認識する。このときスケジューリング指示部284は、退避アプリケーションが「退避アプリA」であること、および復元アプリケーションが「復元アプリA」ことも合わせて認識する。またスケジューリング指示部284は、制御対象アクセス抽出部281と制御対象アプリケーション抽出部282とからの情報の取得により、制御対象のアプリケーションが「アプリX」であることを認識する。
このときの通知は、退避要求である。そこでスケジューリング指示部284は、「退避アプリA」が起動していなかったら、「退避アプリA」を起動する。そしてスケジューリング指示部284は、業務アプリケーション「アプリA」のタスク231と制御対象アプリケーション「アプリX」のタスク233とをスケジューリング対象から外すように、スケジューラ240とディスパッチャ250とに指示する。その後「退避アプリA」を実行するためのタスク236により、業務データ24が退避データ記憶部290に格納される。このようにすることで、業務データの退避中は業務アプリケーションも制御対象のアプリケーションも動作せず、安全な退避が可能となる。
時刻t23に業務データの退避が完了すると、退避アプリケーション「退避アプリA」を実行するためのタスク236は、業務利用判断部283に対して、「アプリA」の業務データ退避の完了を通知する。すると業務利用判断部283は、スケジューリング指示部284に対して、「アプリA」を用いた業務利用の中断を通知する。中断通知を受けたスケジューリング指示部284は、制御対象アクセス抽出部281から、業務アプリケーションが「アプリA」、退避アプリケーションが「退避アプリA」、復元アプリケーションが「復元アプリA」であることを取得する。またスケジューリング指示部284は、制御対象アクセス抽出部281から、制御対象アクセスが「メモリカード、ネットワーク、SMS」であることを取得する。さらにスケジューリング指示部284は、制御対象アプリケーション抽出部282から、制御対象アプリケーションが「アプリA」と「アプリX」とであることを取得する。このとき、スケジューリング指示部284は、通知内容が業務利用の中断であることから、業務アプリケーション「アプリA」をスケジューリングの対象から外すように、スケジューラ240とディスパッチャ250とに指示する。
時刻t24に、再び、業務アプリケーション「アプリA」をフォアグラウンドに回す操作(再開操作)が行われると、業務利用判断部283がその操作を検知する。操作を検知した業務利用判断部283は、「アプリA」の業務データの復元要求をスケジューリング指示部284に対して通知する。復元要求を受けたスケジューリング指示部284は、制御対象アクセス抽出部281から、業務アプリケーションが「アプリA」、退避アプリケーションが「退避アプリA」、復元アプリケーションが「復元アプリA」であることを取得する。またスケジューリング指示部284は、制御対象アクセス抽出部281から、制御対象アクセスが「メモリカード、ネットワーク、SMS」であることを取得する。さらにスケジューリング指示部284は、制御対象アプリケーション抽出部282から、制御対象アプリケーションが「アプリA」と「アプリX」とであることを取得する。
ここで、通知が復元要求であることから、スケジューリング指示部284は、「復元アプリA」が起動していなかったら起動する。そしてスケジューリング指示部284は、業務アプリケーション「アプリA」と制御対象アプリケーション「アプリX」とをスケジューリング対象から外すように、スケジューラ240とディスパッチャ250とに指示する。その後「復元アプリA」を実行するためのタスク237により、業務データ24が退避データ記憶部290から読み出され、元あった場所に格納される。
時刻t25に業務データ24の復元処理が完了すると、「復元アプリA」のタスク237から業務利用判断部283に対して、「アプリA」の業務データ24の復元処理の完了が通知される。すると業務利用判断部283は、スケジューリング指示部284に対して、「アプリA」を用いた業務利用の再開を通知する。業務利用の再開の通知を受けたスケジューリング指示部284は、制御対象アクセス抽出部281から、業務アプリケーションが「アプリA」、退避アプリケーションが「退避アプリA」、復元アプリケーションが「復元アプリA」であることを取得する。またスケジューリング指示部284は、制御対象アクセス抽出部281から、制御対象アクセスが「メモリカード、ネットワーク、SMS」であることを取得する。さらにスケジューリング指示部284は、制御対象アプリケーション抽出部282から、制御対象アプリケーションが「アプリA」と「アプリX」とであることを取得する。
スケジューリング指示部284は、通知内容が再開であることから、制御対象アプリケーションである「アプリA」と「アプリX」とから、業務アプリケーションである「アプリA」を除外する。そしてスケジューリング指示部284は、業務アプリケーションを除外後の制御対象アプリケーションである「アプリX」を、スケジューリングの対象から外すように、スケジューラ240とディスパッチャ250とに指示する。
このように第3の実施の形態では、業務アプリケーションのタスクの実行を中断する場合には、その業務アプリケーションの業務データを、脅威となるアプリケーションから安全な場所に退避させる。これにより、業務アプリケーションの実行を中断している間は、業務データの保護に対して脅威となるアプリケーションを実行しても、業務データが保護される。その結果、業務アプリケーションの実行を中断している間は、業務データの保護に対して脅威となるアプリケーションについても実行可能となり、携帯情報端末200の利便性が向上する。
〔第4の実施の形態〕
次に第4の実施の形態について説明する。第4の実施の形態は、スケジューラにおける制御対象アプリケーションの管理を、図9に示した制御対象アプリケーション記憶部143ではなく、各タスク(プロセス)の管理情報を用いて行うものである。
図19は、第4の実施の形態におけるタスク管理構造体の一例を示す図である。第4の実施の形態におけるタスク管理構造体50には、タスクの名前(Process Name)やタスクの識別子(ProcessID)に加え、「IsScheduleable」という追加フラグ51が設定されている。追加フラグ51は、タスク管理構造体で示されるタスクを実行してよいか否かを示すフラグである。例えば追加フラグ51には、「true」または「false」が設定される。「true」はタスクを実行してよいことを示し、「false」はタスクを実行してはならないことを示す。
このような追加フラグ51を用いて、各タスクの実行の要否を管理することができる。
図20は、第4の実施の形態におけるスケジューラとディスパッチャの動作の一例を示す図である。なお図20において、第2の実施の形態と同じ機能の要素には、図9に示した第2の実施の形態の要素と同じ符号を付し、説明を省略する。
第4の実施の形態におけるスケジューラ140aは、第2の実施の形態の制御対象アプリケーション記憶部143に代えて、フラグ設定部145を有する。フラグ設定部145は、スケジューリング指示部184からの指示を受け取ると、その指示に従って、各タスクのタスク管理構造体に追加フラグを設定する。例えばフラグ設定部145は、スケジューリング指示部184からタスクスイッチ不可と指定されたアプリケーションのタスクには、「IsScheduleable=false」という追加フラグを設定する。またフラグ設定部145は、スケジューリング指示部184からタスクスイッチ可と指定されたアプリケーションのタスクには、「IsScheduleable=true」という追加フラグを設定する。
図20の例では、業務アプリケーションのタスク41の追加フラグの値は「true」、制御対象アプリケーションのタスク44の追加フラグの値は「false」に設定されている。
キュー操作部144aは、追加フラグの値を参照して、各タスクへのスイッチの可否を判断する。例えばキュー操作部144aは、追加フラグの値が「false」のタスクのみを、待機状態キュー142から実行待ちキュー141に移動する。すなわち、追加フラグの値が「false」に設定されているタスク44は、実行可能状態となっても待機状態キュー142から実行待ちキュー141には移動されない。
またディスパッチャ150aのアプリケーション判断部151aは、スケジューラ140aから渡されたタスク45の追加フラグの値に基づいて、そのタスク45をディスパッチするか否かを判断する。例えばアプリケーション判断部151aは、タスク45の追加フラグの値が「false」であれば、そのタスク45をタスクスイッチ部152に渡し、プロセッサが実行するタスクを、タスク45に切り替えさせる。他方、タスク45の追加フラグの値が「false」であれば、アプリケーション判断部151aは、タスク45をスケジューラ140aの待機状態キュー142に戻す。このようにアプリケーション判断部151aは、追加フラグの値が「false」のタスクへのディスパッチを抑止する。
次に、1つのタスクの生成から終了までの、タスク制御処理の手順について説明する。
図21は、第4の実施の形態のタスク制御処理の手順を示すフローチャートである。なおタスク制御処理は、タスクの生成により開始される。なお図21のステップS301,S302,S305,S306,S309〜S311の処理は、それぞれ第2の実施の形態における図10のステップS121,S122,S125,S126,S129〜S131の処理と同様である。以下、第2の実施の形態と異なるステップS303,S307の処理について説明する。
[ステップS303]スケジューラ140aは、実行可能となった管理対象のタスクのタスク管理構造体における「IsScheduleable」の追加フラグを参照する。
[ステップS304]スケジューラ140aは、管理対象のタスクを実行待ちキューに移動してよいか否かを判断する。例えばスケジューラ140は、管理対象のタスクの「IsScheduleable」の値が「true」であれば、実行待ちキューに移動してよいと判断する。またスケシューら140aは、管理対象のタスクの「IsScheduleable」の値が「false」であれば、実行待ちキューに移動できないと判断する。実行待ちキューに移動してよい場合、処理がステップS305に進められる。また実行待ちキューに移動できない場合、処理がステップS301に進められる。
[ステップS307]ディスパッチャ150aは、スケジューラ140aから取得した管理対象のタスクのタスク管理構造体における「IsScheduleable」の追加フラグを参照する。
[ステップS308]ディスパッチャ150aは、管理対象のタスクに、ディスパッチをしてよいタスクか否かを判断する。例えばディスパッチャ150aは、管理対象のタスクの「IsScheduleable」の値が「true」であれば、ディスパッチしてよいと判断する。またスケシューら140aは、管理対象のタスクの「IsScheduleable」の値が「false」であれば、ディスパッチできないと判断する。ディスパッチしてよい場合、処理がステップS309に進められる。またディスパッチできない場合、処理がステップS311に進められる。
このようにして、タスク管理構造体に設定した追加フラグにより、タスクのスイッチの要否を判断することができる。タスク管理構造体は、タスクの管理上スケジューラ140aやディスパッチャ150aで受け渡されている。そのためタスク管理構造体内の追加フラグでタスクスイッチの可否判断を可能とすることで、タスクスイッチの可否判断の処理を効率的に行うことができる。例えば図9に示した制御対象アプリケーション記憶部143を用いた場合、タスクスイッチの可否判断のためには、制御対象アプリケーション記憶部143の内容と、判断対象のタスクを用いて実行するアプリケーションの名称との照合が必要となる。一方、判断対象のタスクのタスク構造体内に、タスクスイッチの可否を示すフラグが設定されていれば、そのフラグを参照するだけで、タスクスイッチの可否を判断できる。その結果、タスクスイッチの可否判断の処理効率が向上する。タスクスイッチは、マルチタスクのOSにおいて頻繁に行われる処理である。そのため、タスクスイッチの処理の効率化により、携帯情報端末のシステム全体として、大幅な処理効率の向上が期待できる。
〔第5の実施の形態〕
次に第5の実施の形態について説明する。第5の実施の形態は、実行中の業務アプリケーションに対して脅威となるリソースアクセスを行う他のアプリケーションであっても、予め指定したアプリケーションは実行できるようにしたものである。以下、第4の実施の形態における第2の実施の形態との相違点を中心に説明する。
図22は、第5の実施の形態の制御対象テーブルの一例を示す図である。第5の実施の形態では、制御対象テーブル161aが拡張され、実行可能アプリの欄が追加されている。実行可能アプリの欄には、制御対象アプリケーションとして抽出されたとしても、実行を許容するアプリケーションの名称が設定される。実行可能アプリの欄に設定されたアプリケーションを実行するためのタスクは、タスクスイッチの抑制対象から除外される。
以下、図5に示した第2の実施の形態の要素を用いて、制御対象アクセス記憶部160に図22に示すような制御対象テーブル161aを格納した場合の、タスク管理処理について説明する。
図23は、第5の実施の形態のリソースアクセステーブルの一例を示す図である。第5の実施の形態では、業務アプリケーションとして、「アプリA」と「アプリB」があり、業務以外のアプリケーションとして、「アプリX」、「アプリY」、「アプリZ」がある。アプリケーション「アプリA」は、メモリカードへのアクセス命令を含む。アプリケーション「アプリB」は、カメラとメモリカードへのアクセス命令を含む。アプリケーション「アプリX」は、ネットワークとメモリカードへのアクセス命令を含む。アプリケーション「アプリY」は、カメラへのアクセス命令を含む。アプリケーション「アプリZ」は、メモリカードとカメラへのアクセス命令を含む。
図22に示すように、業務アプリケーションである「アプリA」については、メモリカード、ネットワーク、SMSへのリソースアクセスが脅威となる。また業務アプリケーションである「アプリB」については、メモリカード、ネットワーク、SMS、カメラへのリソースアクセスが脅威となる。
ここで「アプリZ」は十分に安全が確認されており、「アプリZ」がカメラへアクセスしても、「アプリB」の脅威とはなりえないものとする。この場合、ユーザによって、図22に示すように、業務アプリケーション「アプリB」に対応する実行可能アプリの欄に、「アプリZ」が設定される。
アプリケーション「アプリB」が起動されると、「アプリB」は業務アプリケーションであるため、「アプリB」による業務利用開始が業務利用判断部183からスケジューリング指示部184に通知される。スケジューリング指示部184は、制御対象アクセス抽出部181からは、「アプリB」を含む業務アプリケーションリストを取得する。またスケジューリング指示部184は、制御対象アクセス抽出部181から、制御対象リソースとして、「メモリカード、ネットワーク、SMS、カメラ」を含む制御対象リソースリストを取得する。さらにスケジューリング指示部184は、制御対象アクセス抽出部181から、実行可能なアプリケーションの名称として「アプリZ」を取得する。またスケジューリング指示部184は、制御対象アプリケーション抽出部182から、「アプリA、アプリB、アプリX、アプリY、アプリZ」を含む制御対象アプリケーションリストを取得する。
スケジューリング指示部184は、制御対象アプリケーションリストから、業務アプリケーションリストに含まれている「アプリB」を除外する。さらにスケジューリング指示部184は、制御対象アプリケーションリストから、実行可能アプリケーションの名称「アプリZ」も除外する。その結果、制御対象アプリケーションリストには、「アプリA、アプリX、アプリY」が残る。制御対象アプリケーションリストに残されたアプリケーションを実行するためのタスクは、タスクスイッチの抑止対象となり、スケジューリングから外される。このようにすると、カメラを使うアプリでも、安全が確認されていない「アプリY」は動作しないが、安全が確認されている「アプリZ」は動作させることができ、利便性が向上する。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。