説明

情報処理システムの制御方法、中継装置の制御プログラム及びクライアント装置の制御プログラム

【課題】本発明の課題は、ユーザに煩わしさを与えず、かつ、セキュリティを維持してアプリを実行できる情報処理システムを提供することである。
【解決手段】課題を解決するために、アプリケーションプログラムを蓄積するアプリケーションサーバから前記アプリケーションプログラムを受信し、複数のコードの実行許可情報を記憶する記憶部を有する中継装置と、前記アプリケーションプログラムを実行するクライアント装置とを有する情報処理システムを制御する制御方法において、前記中継装置は、アクセス情報に基づいて、前記受信したアプリケーションに含まれる複数のコードと、前記複数のコードの実行許可情報とを対応付けた対応情報を生成し、前記受信したアプリケーションと、前記生成した対応情報とを前記クライアント装置に送信し、前記クライアント装置は、前記対応情報を参照して、コードを実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システムの制御方法、中継装置の制御プログラム及びクライアント装置の制御プログラムに関する。
【背景技術】
【0002】
パーソナルコンピュータ並の性能を持ったモバイル端末であるスマートフォンの普及が進んでいる。また、ホットスポットの充実等により、スマートフォンは常時ネットワークに接続できる環境が整っている。スマートフォンで実行可能なアプリケーションには、ネイティブアプリ、Webアプリ、Hybrid Mobile Applicationの3種類が存在する。
【0003】
ネイティブアプリは、一般的な形式であり、実行する端末に特化したアプリである。端末のローカルリソースやデバイスを自由に扱えるため何でもできるが、端末に特化させるためインストールが必要になり、開発者にとってはOS(Operating System)毎にカスタマイズしたアプリを作成しなければならない。Webアプリは、ブラウザ上で実行されるため、端末にインストールする必要がなく、OSに依存せずに実行出来る。しかし、Webアプリは、端末ではなく原則Webサーバ上で動作するものであり、ローカルリソースに対する操作は、Java(登録商標)ScriptのFileAPIを使用したファイル操作など一部で、ネイティブアプリに比べ出来ることが限られてしまう。Hybrid Mobile Applicationは、PhoneGapやWAC(Wholesale Applications Community)といった開発環境で作成することが出来るもので、WebアプリのようにOS依存なく実行することが可能で、かつネイティブアプリのようにローカルリソースやデバイスに自由にアクセスすることができる。
【0004】
これらアプリの実行時にセキュリティ問題は引き起こされる場合がある。主な要因の一つがマルウェアで、スマートフォンにおいて広がりを見せつつあり、マルウェアを含むアプリが増える傾向にある。スマートフォンにおいて、利用者がマルウェアを含むアプリをインストール、実行してしまう事例が増えている。マルウェアの実行を防ぐには、利用者がアプリのインストール時に表示されるアクセス許可の警告を確認し、アプリ本来の機能に必要ないアクセス許可が含まれていればインストールしなければ良いが、これでは利用者のスキルによってしまい全ての利用者がマルウェアの実行を防ぐことは難しい。
【0005】
先行技術文献としては、下記のものがある。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特表2003−507785号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本技術の開示での課題は、ユーザに煩わしさを与えず、かつ、セキュリティを維持してアプリを実行できる情報処理システムを提供することである。
【課題を解決するための手段】
【0008】
上記課題を解決するために、アプリケーションプログラムを蓄積するアプリケーションサーバから前記アプリケーションプログラムを受信し、複数のコードの実行許可情報を記憶する記憶部を有する中継装置と、前記アプリケーションプログラムを実行するクライアント装置とを有する情報処理システムを制御する制御方法は、前記中継装置は、アクセス情報に基づいて、前記受信したアプリケーションに含まれる複数のコードと、前記複数のコードの実行許可情報とを対応付けた対応情報を生成し、前記受信したアプリケーションと、前記生成した対応情報とを前記クライアント装置に送信し、前記クライアント装置は、前記中継装置から前記アプリケーション及び前記対応情報を受信し、前記アプリケーションに含まれる複数のコードを実行する場合、前記対応情報を参照して、実行許可されているコードは実行し、実行不許可されているコードは不実行とする。
【発明の効果】
【0009】
本開示の技術の一側面によれば、アプリ実行時に、許可されたコードは実行させ、許可されないコードは実行を止める。ゆえに、アプリは通常通り動作させながら、不正なデバイスアクセスやネットワークアクセスを防ぎセキュリティを高めることが可能となる。
【図面の簡単な説明】
【0010】
【図1】情報処理システムを示す図である。
【図2】アプリケーションサーバの構成を示すブロック図である。
【図3】パッケージャの構成を示すブロック図である。
【図4】クライアントの構成を示すブロック図である。
【図5】情報処理システムの詳細を示す図である。
【図6】解析ルールを示す図である。
【図7】コード抽出処理を示す図である。
【図8】ACLを示す図である。
【図9】パッケージャの処理を示すフローチャートである。
【図10】クライアントの実行環境を示す図である。
【図11】クライアントの処理を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、本実施形態における情報処理システムについて説明する。
【0012】
図1は、本実施形態における情報処理システムを示す図である。情報処理システムは、複数のアプリケーションサーバ100、ネットワーク400、パッケージャ200及び複数のクライアント300を有する。複数のアプリケーションサーバ100、パッケージャ200及び複数のクライアント300は、ネットワーク400によって互いに接続される。
【0013】
アプリケーションサーバ100は、Webアプリを公開する。中継装置であるパッケージャ200は、Webアプリを解析して、ACL(Application Control List)を生成し、生成したACLとWebアプリとを対応付けて公開する。ACLについては後述する。クライアント300は、アプリを実行する。なお、アプリケーションサーバ100、パッケージャ200とクライアント300とからなる構成を当該情報処理システムの最小構成としても良い。
【0014】
図2を用いて、本実施形態におけるアプリケーションサーバ100について説明する。アプリケーションサーバ100は、CPU(Central Processing Unit)101、主記憶装置102、システムコントローラ103、バス104、ネットワークコントローラ107、電源109、ディスクコントローラ112及びハードディスク113を有する。アプリケーションサーバ100は、CPU101によって制御されている。
【0015】
CPU101及び主記憶装置102には、システムコントローラ103が接続されている。システムコントローラ103は、CPU101と主記憶装置102との間のデータ転送や、CPU101とバス104との間のデータ転送を制御する。さらに、システムコントローラ103には、バス104を介して、ネットワークコントローラ107及びディスクコントローラ112が接続されている。
【0016】
主記憶装置102には、CPU101に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、主記憶装置102には、CPU101による処理に必要な各種データが格納される。主記憶装置102には、例えば、RAM(Random Access Memory)が用いられる。
【0017】
ディスクコントローラ112には、ハードディスク113が接続されている。ディスクコントローラ112は、ハードディスク113を制御する。ハードディスク113は、CPU101が主記憶装置102上で実行するアプリケーション1100、CPU101に当該アプリケーション1100の呼び出しなどの制御を行わせる制御プログラム1000、公開するWebアプリ120及び各種データを格納する。
【0018】
ネットワークコントローラ107は、図1に示したネットワーク400を介してパッケージャ200と接続されており、パッケージャ200との間で、Webアプリ120及び各種データの送受信を行う。
【0019】
電源109は、不図示の電源線を介してアプリケーションサーバ100内の各ハードェアに対して電力を供給する。
【0020】
このようなハードウェアによって、アプリケーションサーバ100の処理機能を実現することができる。
【0021】
図3を用いて、本実施形態におけるパッケージャ200について説明する。パッケージャ200は、CPU201、主記憶装置202、システムコントローラ203、バス204、ネットワークコントローラ207、電源209、ディスクコントローラ212及びハードディスク213を有する。パッケージャ200は、CPU201によって制御されている。
【0022】
CPU201及び主記憶装置202には、システムコントローラ203が接続されている。システムコントローラ203は、CPU201と主記憶装置202との間のデータ転送や、CPU201とバス204との間のデータ転送を制御する。さらに、システムコントローラ203には、バス204を介して、ネットワークコントローラ207及びディスクコントローラ212が接続されている。
【0023】
主記憶装置202には、CPU201に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、主記憶装置202には、CPU201による処理に必要な各種データが格納される。主記憶装置202には、例えば、RAMが用いられる。
【0024】
ディスクコントローラ212には、ハードディスク213が接続されている。ディスクコントローラ212は、ハードディスク213を制御する。ハードディスク213は、CPU201が主記憶装置202上で実行するアプリケーション2100、CPU201に当該アプリケーション2100の呼び出しなどの制御を行わせる制御プログラム2000、解析ルール210、ACL230及び各種データを格納する。
【0025】
ネットワークコントローラ207は、図1に示したネットワーク400を介してアプリケーションサーバ100及びクライアント300と接続されており、アプリケーションサーバ100及びクライアント300との間で、データの送受信を行う。
【0026】
電源209は、不図示の電源線を介してパッケージャ200内の各ハードウェアに対して電力を供給する。
【0027】
このようなハードウェアによって、パッケージャ200の処理機能を実現することができる。
【0028】
図4を用いて、本実施形態におけるクライアント300について説明する。クライアント300は、CPU301、主記憶装置302、システムコントローラ303、バス304、ネットワークコントローラ307、電源309、カメラ310、メモリコントローラ312及びハードディスク313を有する。クライアント300は、CPU301によって制御されている。
【0029】
CPU301及び主記憶装置302には、システムコントローラ303が接続されている。システムコントローラ303は、CPU301と主記憶装置302との間のデータ転送や、CPU301とバス304との間のデータ転送を制御する。さらに、システムコントローラ303には、バス304を介して、ネットワークコントローラ307及びメモリコントローラ312が接続されている。
【0030】
主記憶装置302には、CPU301に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、主記憶装置302には、CPU301による処理に必要な各種データが格納される。主記憶装置302には、例えば、RAMが用いられる。
【0031】
メモリコントローラ312には、フラッシュメモリ313が接続されている。メモリコントローラ312は、フラッシュメモリ313を制御する。フラッシュメモリ313は、CPU301が主記憶装置302上で実行するアプリケーションプログラム3100、CPU301に当該アプリケーションプログラム3100の呼び出しなどの制御を行わせる制御プログラム3000及び各種データを格納する。また、フラッシュメモリ313は、パッケージャ200から受信したWebアプリ120、ACL230やアプリ実行環境を構築するためのエンジンを格納する。
【0032】
ネットワークコントローラ307は、図1に示したネットワーク400を介してパッケージャ200と接続されており、パッケージャ200との間で、データの送受信を行う。
【0033】
カメラ310は画像を撮像し、撮像した画像をフラッシュメモリ313に格納する。
【0034】
電源309は、不図示の電源線を介してクライアント300内の各ハードウェアに対して電力を供給する。
【0035】
このようなハードウェアによって、クライアント300の処理機能を実現することができる。
【0036】
図5は、本実施形態における情報処理システムを示す図である。図5に示した各ブロックは、パッケージャ200のCPU201がアプリケーション2100を実行すること及びクライアント300のCPU301がアプリケーション3100を実行することによって実現される。
【0037】
パッケージャ200は、アプリ解析部220、解析ルール210及びACL230を有する。アプリ解析部220は、アプリケーションサーバ100から受信したWebアプリ120を解析ルール210に基づいて解析し、ACL230を生成する。解析ルール210は、Webアプリ120からACL230に抽出すべきデバイスアクセスやサイトアクセスを記載したルールである。ACL230は、アクセスを許可されたデバイスやサイトの一覧を記載したリストである。ダウンロード部320は、パッケージャ200からWebアプリ120及びACL230を受信する。アプリ判定部330は、ダウンロード部320が受信したACL230を参照して、ダウンロード部320が受信したWebアプリ120がデバイスやサイトにアクセスを実施する際に、アクセス制限を実施する。ドライバ部340は、クライアント300のインタフェースを制御する。なお、パッケージャ200は、ACL230の改竄を検知するために、ACL230に暗号鍵等を適用しても良い。
【0038】
図6に解析ルール210の一例を示す。解析ルール210は、オブジェクト2101、メソッド2102、抽出パラメータ2103及びACL記述ルール2104を有する。オブジェクト2101は、アクセス制限をかけたいデバイスや外部サイトを示す。メソッド2102は、操作を示す。抽出パラメータ2103は、関数名から抽出する情報を示す。ACL記述ルール2104は、ACL230に追加する情報を示す。
【0039】
図7を用いてアプリ解析部220がコードを抽出する処理を説明する。アプリ解析部220は、HTML(HyperText Markup Language)、javascriptで書かれたアプリのソースから特定のコードを抽出する。アプリ解析部220は、デバイスアクセスとして、WACのcameraオブジェクト、captureImageを抽出する。本実施形態では、アプリ解析部220は、アプリのソースからmainCamera.captureImage(onCaptureImageSuccess, onCaptureImageError, camopts)を抽出する。また、アプリ解析部220は、外部サイトへのアクセスとして、javascript XMLHttpRequestの第二引数を抽出する。本実施形態では、アプリ解析部220は、アプリのソースからhttp://hogehoge.comを抽出する。
【0040】
図8にACL230の一例を示す。アプリ解析部220は、解析ルール210に基づいて、図8に示した<access origin="http://www.aaabbb.com/*"/>、<access origin="http://www.aaabbb.co.jp/*"/>の部分に許可されたURLを記載する。また、アプリ解析部220は、解析ルール210に基づいて、図8に示した<FEATURE name="http://wacapps.net/api/camera"/>の部分に許可されたデバイス名を記載する。
【0041】
図9にパッケージャ200の処理を示す。
【0042】
ステップS001において、アプリ解析部220は、アプリケーションサーバ100からアプリ120を受信する。アプリ解析部220は処理をステップS002へ移行する。
【0043】
ステップS002において、アプリ解析部220は、解析ルール210を参照する。アプリ解析部220は処理をステップS003へ移行する。
【0044】
ステップS003において、アプリ解析部220は、解析ルール210に基づいてアプリ120から特定コードを抽出する。具体的には、アプリ解析部220は、図7を用いて説明したソースから特定コードを抽出する。アプリ解析部220は処理をステップS004へ移行する。
【0045】
ステップS004において、アプリ解析部220は、抽出した特定コードに基づき、ACL230にアクセスを許可するURL名及びデバイス名を記載する。具体的には、アプリ解析部220は、図8を用いて説明したACL230に許可されたURL名及びデバイス名を記載する。アプリ解析部220は処理をステップS005へ移行する。
【0046】
ステップS005において、アプリ解析部220は、アプリ120、アクセスを許可するURL名及びデバイス名を記載したACL230をクライアント300に送信する。アプリ解析部220は処理を終了する。
【0047】
図10にクライアント300が有するWAC準拠のアプリ実行環境とアプリとの関係を示す。アプリ実行環境は、クライアント300のフラッシュメモリ313に格納されたエンジンをCPU301が主記憶装置302で実行することで構築される。CPU301が当該エンジンを主記憶装置302で実行することによって、CPU301はJava Scriptエンジン508を処理し、Java Scriptで書かれたプログラムを実行する。CPU301が当該エンジンを主記憶装置302で実行することによって、CPU301はレンダリングエンジン506を処理し、ブラウザなどに組み込まれる、HTMLを表示する。本実施形態では、CPU301はレンダリングエンジン506を例えば、ネットワークアクセスなどが起こった時のイベントを取得するモジュールとして使用する。CPU301が当該エンジンを主記憶装置302で実行することによって、CPU301はデバイスAPI(Application Program Interface)504を処理し、アプリ120をWAC2.0準拠のデバイスにアクセスさせる。なお、デバイスAPI504の上位層でアプリ120が実行される。CPU301が当該エンジンを主記憶装置302で実行することによって、CPU301はACLチェッカ502を処理し、ランタイムでACL230をチェックする。
【0048】
図11に、クライアント装置300の処理を示す。
【0049】
ステップS101において、ダウンロード部320は、パッケージャ200からWebアプリ120及びACL230を受信する。ダウンロード部320は、処理をステップS102へ移行する。
【0050】
ステップS102において、アプリ判定部330は、ダウンロード部320からWebアプリ120を受信して起動する。アプリ判定部330は、処理をステップS103へ移行する。
【0051】
ステップS103において、アプリ判定部330は、全てのコードを実行したか否かを判定する。全てのコードを実行した場合、アプリ判定部330は、処理を終了する。一方、全てのコードを実行していない場合、アプリ判定部330は、処理をステップS104へ移行する。
【0052】
ステップS104において、アプリ判定部330は、実行しようとしているコードが、デバイスへのアクセスまたは外部へのアクセスか否かを判定する。当該判定を満たす場合、アプリ判定部330は、処理をステップS105へ移行する。一方、当該判定を満たさない場合、アプリ判定部330は、処理をステップS106へ移行する。
【0053】
ステップS105において、アプリ判定部330は、ACL230を参照して、アクセスしようとしているデバイスまたはURLが許可されているか否かを判定する。アクセスしようとしているデバイスまたはURLが許可されている場合、アプリ判定部330は、処理をステップS106へ移行する。一方、アクセスしようとしているデバイスまたはURLが許可されていない場合、アプリ判定部330は、処理をステップS107へ移行する。
【0054】
ステップS106において、アプリ判定部330は、コードを実行する。アプリ判定部330は、処理をステップS103へ戻す。
【0055】
ステップS107において、アプリ判定部330は、アクセス制限を行うため許可されていないコードを不実行とする。アプリ判定部330は、処理をステップS103へ戻し、全てのコードを実行完了するまで、上記処理を繰り返す。
【0056】
本実施形態によれば、通常通り、Webアプリはソースコードを上から順に実行される。実行中に、アプリ判定部330がACL230に記載されるデバイスアクセスやネットワークアクセスが起こる度にACL230で許可されているか否かをランタイムでチェックする。アプリ判定部330が許可されたコードは実行させ、許可されないコードは実行を止めることで、Webアプリは通常通り動作させながら、不正なデバイスアクセスやネットワークアクセスを防ぐことが可能となる。これによれば、Webサーバにて公開されているWebアプリを正規手段で入手し、これを逆アセンブリ、マルウェアを混入してアセンブリ、再パッケージングして公開する、という手順でマルウェアを仕込んだアプリがWebサーバにて公開されていても、アクセス制限がかかっているため、例えば、端末から個人情報を抜き取り、悪意あるユーザのサーバへ勝手に個人情報を送信されてしまうことを防止することができる。さらに、マルウェアを仕込まれたWebアプリであっても、正規アプリ部分だけを実行させながら、マルウェア部分を実行させないことができる。
【0057】
以上、本発明の例示的な実施の形態の情報処理システムについて説明したが、本発明は、具体的に開示された実施の形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【0058】
100 アプリケーションサーバ
101、201、301 CPU
102、202、302 主記憶装置
103、203、303 システムコントローラ
104、204、304 バス
107、207、307 ネットワークコントローラ
109、209、309 電源
112、212 ディスクコントローラ
113、213 ハードディスク
120 Webアプリ
200 パッケージャ
210 解析ルール
220 アプリ解析部
230 ACL
300 クライアント
312 メモリコントローラ
313 フラッシュメモリ
320 ダウンロード部
330 アプリ判定部
340 ドライバ部
400 ネットワーク
502 ACLチェッカ
504 デバイスAPI
506 レンダリングエンジン
508 JavaScriptエンジン
1000、2000、3000 制御プログラム
1100、2100、3100 アプリケーション

【特許請求の範囲】
【請求項1】
アプリケーションプログラムを蓄積するアプリケーションサーバから前記アプリケーションプログラムを受信し、複数のコードの実行許可情報を記憶する記憶部を有する中継装置と、前記アプリケーションプログラムを実行するクライアント装置とを有する情報処理システムを制御する制御方法において、
前記中継装置は、
アクセス情報に基づいて、前記受信したアプリケーションに含まれる複数のコードと、前記複数のコードの実行許可情報とを対応付けた対応情報を生成し、前記受信したアプリケーションと、前記生成した対応情報とを前記クライアント装置に送信し、
前記クライアント装置は、前記中継装置から前記アプリケーション及び前記対応情報を受信し、前記アプリケーションに含まれる複数のコードを実行する場合、前記対応情報を参照して、実行許可されているコードは実行し、実行不許可されているコードは不実行とする、
ことを特徴とする情報処理システムの制御方法。
【請求項2】
前記中継装置は、前記受信したアプリケーションに含まれる複数のコードのうち前記クライアント装置が有する所定の機器へのアクセスを行うコードを実行不許可とすることを特徴とする請求項1記載の制御方法。
【請求項3】
前記中継装置は、前記受信したアプリケーションに含まれる複数のコードのうち前記クライアント装置が外部装置へのアクセスを行うコードを実行不許可とすることを特徴とする請求項1記載の制御方法。
【請求項4】
アプリケーションプログラムを蓄積するアプリケーションサーバと、前記アプリケーションプログラムを実行し、複数のコードの実行許可情報を記憶する記憶部を有するクライアント装置とに接続可能な中継装置を制御する制御プログラムであって、
前記中継装置に、
前記アプリケーションサーバから前記アプリケーションプログラムを受信し、
アクセス情報に基づいて、前記受信したアプリケーションに含まれる複数のコードと、前記複数のコードの実行許可情報とを対応付けた対応情報を生成し、
前記受信したアプリケーションと、前記生成した対応情報とを前記クライアント装置に送信する、
処理を実行させることを特徴とする中継装置の制御プログラム。
【請求項5】
アプリケーションプログラムを蓄積するアプリケーションサーバから前記アプリケーションプログラムを受信し、複数のコードの実行許可情報を記憶する記憶部を有する中継装置に接続可能なクライアント装置を制御する制御プログラムであって、
前記クライアント装置に、
前記中継装置がアクセス情報に基づいて、前記受信したアプリケーションに含まれる複数のコードと、前記複数のコードの実行許可情報とを対応付けて生成した対応情報を受信し、
前記中継装置が前記アプリケーションサーバから受信した複数のコードからなるアプリケーションプログラムを受信し、
前記複数のコードを実行する場合、前記対応情報を参照して、実行許可されているコードは実行し、実行不許可されているコードは不実行とする、
ことを特徴とするクライアント装置の制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2013−65114(P2013−65114A)
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願番号】特願2011−202439(P2011−202439)
【出願日】平成23年9月15日(2011.9.15)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】