(57)【要約】  プログラムを処理する情報処理装置を提供する。  情報処理装置は、アプリケーションのバイナリファイルからセキュリティ情報を抽出する抽出部と、前記抽出部により抽出された前記セキュリティ情報に基づいてセキュリティ設定を生成する処理部と、前記アプリケーションのバイナリファイルと前記セキュリティ設定を基に隔離環境を構築する構築部を具備する。前記処理部は、前記抽出部により抽出された前記セキュリティ情報と、前記アプリケーションに対して設定したいセキュリティを事前に定義したデータベースとを組み合わせて、セキュリティ設定を生成する。
2019150699.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションのバイナリファイルからセキュリティ情報を抽出する抽出部と、
前記抽出部により抽出された前記セキュリティ情報に基づいてセキュリティ設定を生成する処理部と、
前記アプリケーションのバイナリファイルと前記セキュリティ設定を基に隔離環境を構築する構築部と、
を具備する情報処理装置。
【請求項２】
前記抽出部は、前記アプリケーションのバイナリファイルを逆アセンブルしたアセンブラプログラムから、ｐｌｔ（ｐｒｏｃｅｄｕｒｅ  ｌｉｎｋａｇｅ  ｔａｂｌｅ）セクション情報を用いて前記セキュリティ情報を抽出する、
請求項１に記載の情報処理装置。
【請求項３】
前記抽出部は、前記アプリケーションのバイナリファイルに含まれる関数及び直接実行しているシステムコールを抽出し、抽出したシステムコールと、抽出した関数が呼び出すシステムコールをセキュリティ情報として出力する、
請求項１に記載の情報処理装置。
【請求項４】
前記抽出部は、関数とシステムコールとをマッピングするシステムコール定義データベースを参照して、前記アプリケーションのバイナリファイルから抽出した関数が呼び出すシステムコールをセキュリティ情報として出力する、
請求項３に記載の情報処理装置。
【請求項５】
前記抽出部は、前記アプリケーションのバイナリファイルからケーパビリティを必要とする処理フローを抽出して、前記処理フローに該当するケーパビリティの情報をセキュリティ情報として出力する、
請求項１に記載の情報処理装置。
【請求項６】
前記抽出部は、ケーパビリティを必要とする処理フローのバイナリコードと必要なケーパビリティの情報とをマッピングする処理フローケーパビリティ定義データベースを参照して、前記アプリケーションのバイナリファイルから抽出した処理フローに必要なケーパビリティの情報をセキュリティ情報として出力する、
請求項５に記載の情報処理装置。
【請求項７】
前記抽出部は、前記アプリケーションのバイナリファイルから、前記アプリケーションを実行する際に使用するファイル名を抽出して、当該ファイル名及び当該ファイルへのアクセス制御の情報をセキュリティ情報として出力する、
請求項１に記載の情報処理装置。
【請求項８】
前記抽出部は、ファイルアクセス関数を定義するファイルアクセス関数定義データベースを参照して、前記アプリケーションのバイナリファイルからファイルアクセス関数のコード箇所を抽出して、ファイルアクセス関数がアクセスするファイル名及びファイルアクセス時に指定するアクセス制御の情報をセキュリティ情報として出力する、
請求項７に記載の情報処理装置。
【請求項９】
前記抽出部は、セキュリティ設定を必要とする情報毎に、アプリケーションのバイナリファイルを解析する機能及び解析に使用するデータベースをプラグイン形式で追加するように構成される、
請求項１に記載の情報処理装置。
【請求項１０】
前記処理部は、前記抽出部による抽出結果と、前記アプリケーションに対して設定したいセキュリティを事前に定義したデータベースと組み合わせて、セキュリティ設定を生成する、
請求項１に記載の情報処理装置。
【請求項１１】
前記処理部は、
アプリケーション毎に許可される処理の名称を指定して登録した許可される処理情報データベースから該当アプリケーションの許可される処理の情報を取得し、
アプリケーション毎に適用するセキュリティ技術の名称を定義したセキュリティ技術情報データベースから該当アプリケーションに設定するセキュリティ技術の情報を取得し、
許可される処理とセキュリティ技術の組み合わせに対して一意に特定されるセキュリティ設定情報を定義したセキュリティ設定情報データベースから、許可される処理の情報と前記セキュリティ技術の情報を指定して特定したセキュリティ許可情報を抽出して、
セキュリティ設定を生成する、
請求項１０に記載の情報処理装置。
【請求項１２】
前記処理部は、前記の各データベースの組み合わせにより抽出された前記セキュリティ許可情報を前記抽出部により前記アプリケーションのバイナリファイルから抽出された前記セキュリティ情報と比較して、両者が同じ場合は、前記アプリケーションのバイナリファイルとを前記抽出部により抽出された前記セキュリティ情報に基づいて、前記アプリケーションのセキュリティ設定を生成するが、両者が一致しない場合はエラー処理を実施する、
請求項１１に記載の情報処理装置。
【請求項１３】
前記処理部は、前記エラー処理として、エラーとともに、前記の各データベースの組み合わせにより抽出された前記セキュリティ許可情報と前記抽出部により前記アプリケーションのバイナリファイルから抽出された前記セキュリティ情報との差分を通知する、
請求項１２に記載の情報処理装置。
【請求項１４】
前記処理部は、新たなセキュリティ設定の生成機能をプラグイン形式で追加するように構成される、
請求項１に記載の情報処理装置。
【請求項１５】
第１の端末から前記アプリケーションのバイナリファイルをネットワーク経由で受信し、前記アプリケーションのバイナリファイルと前記セキュリティ設定を基に構築した前記隔離環境をネットワーク経由で第２の端末に送信する、
請求項１に記載の情報処理装置。
【請求項１６】
アプリケーションのバイナリファイルからセキュリティ情報を抽出する抽出ステップと、
前記抽出ステップにおいて抽出された前記セキュリティ情報に基づいてセキュリティ設定を生成する処理ステップと、
前記アプリケーションのバイナリファイルと前記セキュリティ設定を基に隔離環境を構築する構築ステップと、
を有する情報処理方法。
【請求項１７】
アプリケーションのバイナリファイルからセキュリティ情報を抽出する抽出部、
前記抽出部により抽出された前記セキュリティ情報に基づいてセキュリティ設定を生成する処理部、
前記アプリケーションのバイナリファイルと前記セキュリティ設定を基に隔離環境を構築する構築部、
としてコンピュータを機能させるようにコンピュータ可読形式で記述されたコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示する技術は、隔離環境において実行するプログラムを処理する情報処理装置及び情報処理方法、並びにコンピュータプログラムに関する。
【背景技術】
【０００２】
プログラムのバグやマルウェアによって、プログラム実行中にシステムに悪影響を及ぼすことが懸念される。そこで、プログラムを保護された特定領域のみで動作させて、その外の領域への影響を最小限に抑えるように構築された環境として、「サンドボックス（ｓａｎｄｂｏｘ）」が知られている（例えば、特許文献１を参照のこと）。【０００３】
しかしながら、アプリケーションをサンドボックスのような隔離環境で実行するには、プラットフォームに応じたセキュリティ情報をアプリケーションに設定しなければならない。このため、アプリケーションの開発者は、プラットフォームにおけるセキュリティ設定に関する知見が必要であるとともに、セキュリティ情報を設定するためのプログラム開発の負担若しくはコストが生じる。【０００４】
なお、プログラムを動作させて、リソースへのアクセスポリシを自動生成するアクセスポリシ生成システムについて提案がなされている（例えば、特許文献２を参照のこと）。しかしながら、プログラムの動的な解析が必要になることや、リソースへのアクセスポリシに関する自動生成にしか対応していないなどの問題がある。【０００５】
また、バイナリから関数呼び出しやシステムコール呼び出しと呼び出し時の引数値、呼び出し時の条件を抽出し、あらかじめ用意された仕様書などから導き出された同様の情報を比較することで、意図しない不正なコードを検出する不正コード検出システムについて提案がなされている（例えば、特許文献３を参照のこと）。このようにシステムを利用するには、仕様書やホワイトリストデータベースなどの該当バイナリに関する事前情報が必要になる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−２３８８７０号公報
【特許文献２】特開２００５−２３４６６１号公報
【特許文献３】特開２００９−９８８５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本明細書で開示する技術の目的は、隔離環境において実行するプログラムを処理する情報処理装置及び情報処理方法、並びにコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本明細書で開示する技術の第１の側面は、
アプリケーションのバイナリファイルからセキュリティ情報を抽出する抽出部と、
前記抽出部により抽出された前記セキュリティ情報に基づいてセキュリティ設定を生成する処理部と、
前記アプリケーションのバイナリファイルと前記セキュリティ設定を基に隔離環境を構築する構築部と、
を具備する情報処理装置である。【０００９】
前記抽出部は、関数とシステムコールとをマッピングするシステムコール定義データベースを参照して、前記アプリケーションのバイナリファイルから抽出した関数が呼び出すシステムコールをセキュリティ情報として出力する。あるいは、前記抽出部は、ケーパビリティを必要とする処理フローのバイナリコードと必要なケーパビリティの情報とをマッピングする処理フローケーパビリティ定義データベースを参照して、前記アプリケーションのバイナリファイルから抽出した処理フローに必要なケーパビリティの情報をセキュリティ情報として出力する。あるいは、前記抽出部は、ファイルアクセス関数を定義するファイルアクセス関数定義データベースを参照して、前記アプリケーションのバイナリファイルからファイルアクセス関数のコード箇所を抽出して、ファイルアクセス関数がアクセスするファイル名及びファイルアクセス時に指定するアクセス制御の情報をセキュリティ情報として出力する。【００１０】
前記処理部は、アプリケーション毎に許可される処理の名称を指定して登録した許可される処理情報データベースから該当アプリケーションの許可される処理の情報を取得し、アプリケーション毎に適用するセキュリティ技術の名称を定義したセキュリティ技術情報データベースから該当アプリケーションに設定するセキュリティ技術の情報を取得し、許可される処理とセキュリティ技術の組み合わせに対して一意に特定されるセキュリティ設定情報を定義したセキュリティ設定情報データベースから、許可される処理の情報と前記セキュリティ技術の情報を指定して特定したセキュリティ許可情報を抽出して、セキュリティ設定を生成する。【００１１】
また、前記処理部は、前記の各データベースの組み合わせにより抽出された前記セキュリティ許可情報を前記抽出部により前記アプリケーションのバイナリファイルから抽出された前記セキュリティ情報と比較して、両者が同じ場合は、前記アプリケーションのバイナリファイルとを前記抽出部により抽出された前記セキュリティ情報に基づいて、前記アプリケーションのセキュリティ設定を生成するが、両者が一致しない場合はエラー処理を実施する。エラー処理として、エラーとともに情報の差分も通知する。【００１２】
また、本明細書で開示する技術の第２の側面は、
アプリケーションのバイナリファイルからセキュリティ情報を抽出する抽出ステップと、
前記抽出ステップにおいて抽出された前記セキュリティ情報に基づいてセキュリティ設定を生成する処理ステップと、
前記アプリケーションのバイナリファイルと前記セキュリティ設定を基に隔離環境を構築する構築ステップと、
を有する情報処理方法である。【００１３】
また、本明細書で開示する技術の第３の側面は、
アプリケーションのバイナリファイルからセキュリティ情報を抽出する抽出部、
前記抽出部により抽出された前記セキュリティ情報に基づいてセキュリティ設定を生成する処理部、
前記アプリケーションのバイナリファイルと前記セキュリティ設定を基に隔離環境を構築する構築部、
としてコンピュータを機能させるようにコンピュータ可読形式で記述されたコンピュータプログラムである。【００１４】
本明細書で開示する技術の第３の側面に係るコンピュータプログラムは、コンピュータ上で所定の処理を実現するようにコンピュータ可読形式で記述されたコンピュータプログラムを定義したものである。換言すれば、本明細書で開示する技術の第３の側面に係るコンピュータプログラムをコンピュータにインストールすることによって、コンピュータ上では協働的作用が発揮され、本明細書で開示する技術の第１の側面に係る装置と同様の作用効果を得ることができる。
【発明の効果】
【００１５】
本明細書で開示する技術によれば、隔離環境において実行するプログラムに対して、隔離のための設定を自動的に構築することができる、情報処理装置及び情報処理方法、並びにコンピュータプログラムを提供することができる。【００１６】
なお、本明細書に記載された効果は、あくまでも例示であり、本発明の効果はこれに限定されるものではない。また、本発明が、上記の効果以外に、さらに付加的な効果を奏する場合もある。【００１７】
本明細書で開示する技術のさらに他の目的、特徴や利点は、後述する実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【図面の簡単な説明】
【００１８】
【図１】図１は、本明細書で開示する技術を適用した情報処理システム１００の機能的構成を模式的に示した図である。
【図２】図２は、システムコール解析機能部２００の機能的構成を模式的に示した図である。
【図３】図３は、システムコール定義データベース２０１の構成例を示した図である。
【図４】図４は、システムコール解析機能部２００が、アプリケーションのバイナリファイル１０１を解析して、システムコールの情報をセキュリティ情報として出力する具体例を示した図である。
【図５】図５は、ケーパビリティ解析機能部５００の機能的構成を模式的に示した図である。
【図６】図６は、処理フローケーパビリティ定義データベース５０１の構成例を示した図である。
【図７】図７は、ケーパビリティ解析機能部５００が、アプリケーションのバイナリファイル１０１を解析して、ケーパビリティの情報をセキュリティ情報として出力する具体例を示した図である。
【図８】図８は、ＡＣＬ解析機能部８００の機能的構成を模式的に示した図である。
【図９】図９は、ファイルアクセス関数定義データベース８０１の構成例を示した図である。
【図１０】図１０は、ＡＣＬ解析機能部８００が、アプリケーションのバイナリファイル１０１を解析して、アクセスするファイル名及びファイルアクセス時に指定するアクセス制御の情報（例えば、ＡＣＬ）をセキュリティ情報として出力する具体例を示した図である。
【図１１】図１１は、セキュリティルール抽出部１１０が中間表現データ１０２に出力したセキュリティ情報の一例を示した図である。
【図１２】図１２は、セキュリティルール抽出部１１０が実施するセキュリティルール抽出処理の概略的な処理手順を示したフローチャートである。
【図１３】図１３は、システムコール解析機能部２００がアプリケーションのバイナリファイル１０１に含まれるシステムコールを抽出するための処理手順を示したフローチャートである。
【図１４】図１４は、ケーパビリティ解析機能部５００がアプリケーションのバイナリファイル１０１を逆アセンブルした情報に含まれる処理フローを実行するために必要なケーパビリティの情報を解析するための処理手順を示したフローチャートである。
【図１５】図１５は、ＡＣＬ解析機能部８００がアプリケーションを実行する際に使用するファイルのアクセス制御情報（ＡＣＬ）を解析するための処理手順を示したフローチャートである。
【図１６】図１６は、許可される処理情報データベースの構成例を示した図である。
【図１７】図１７は、セキュリティ技術情報データベースの構成例を示した図である。
【図１８】図１８は、セキュリティ設定情報データベースの構成例を示した図である。
【図１９】図１９は、アプリケーションに対してセキュリティを設定するための処理手順を示したフローチャートである。
【図２０】図２０は、セキュリティルール処理部１２０が、セキュリティルール抽出部１１０から中間表現データ１０２に出力されたセキュリティ情報に基づいて、アプリケーションに対してセキュリティを設定する具体例を示した図である。
【図２１】図２１は、セキュリティ許可情報と、セキュリティルール抽出部１１０から中間表現データ１０２に出力されたセキュリティ情報を比較する具体例を示した図である。
【図２２】図２２は、セキュリティ情報（実システム設定マージ結果）を基に生成するセキュリティ設定ファイル１０３の具体例を示した図である。
【図２３】図２３は、隔離環境構築部１３０が実施する処理手順を示したフローチャートである。
【図２４】図２４は、セキュリティ設定ファイル１０３を基に隔離されたアプリケーション実行環境を構築する具体例を示した図である。
【図２５】図２５は、隔離環境構築のオンラインサービスの概要を示した図である。
【図２６】図２６は、情報処理システム１００として動作することができる装置のハードウェア構成例を示した図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照しながら本明細書で開示する技術の実施形態について詳細に説明する。
【００２０】
アプリケーションなどのプログラムをサンドボックスのような隔離環境で実行するには、プラットフォームに応じたセキュリティ情報をプログラムに設定しなければならない。従来、アプリケーションに対して必要なセキュリティを、アプリケーションの開発者自らが設定する必要がある。このため、開発者は、プラットフォームにおけるセキュリティ設定に関する知見が必要であるとともに、セキュリティ情報を設定するためのプログラム開発の負担若しくはコストが生じる。
【００２１】
そこで、本明細書では、アプリケーションのバイナリの解析結果に基づいて必要なアプリケーションのセキュリティを自動設定する技術について、以下で提案する。本明細書で開示する技術によれば、アプリケーション開発における負担を軽減することができる。
【００２２】
Ａ．システム構成
図１には、本明細書で開示する技術を適用した情報処理システム１００の機能的構成を模式的に示している。情報処理システム１００は、アプリケーションのバイナリファイル１０１からセキュリティ情報を抽出し、抽出されたセキュリティ情報をアプリケーションに対して設定したいセキュリティを事前に定義したセキュリティ設定情報データベース１２３の内容と組み合わせてセキュリティ設定を生成し、このセキュリティ設定を基にして隔離されたアプリケーション実行環境を構築する。
【００２３】
隔離環境は、コンテナソフトウェアによって作成される。「コンテナ」とは、コンテナは、システムのその他の部分から分離された一連のプロセスであり、そのプロセスのサポートに必要なすべてのファイルを提供する個別のイメージから実行可能なプロセスである。また、コンテナは、システムの他の部分と同じオペレーティングシステムカーネルを共有する一方で、コンテナ内で実行されるアプリケーションプロセスを、システムの他の部分から独立させることにより、隔離することができる。さらに、コンテナにより、ユーザやグループにコンテナ内で特定のセキュリティ設定に基づく操作権限を与える一方で、コンテナ外ではその権限を与えないように隔離することができる。
【００２４】
情報処理システム１００が対象とするアプリケーションは、例えば、スマートフォンやタブレット、パーソナルコンピュータなどの情報端末、あるいはロボットや自動運転車、ドローンのような無人航空機といった自動機械上で実行される制御プログラムである。この種のアプリケーションは、情報端末若しくは自動機械本体の実機開発者自身（若しくは、システムの管理者）が開発する以外に、外部の開発者など第三者から提供される場合も多い。多くの場合、第三者からはバイナリファイルの形式でアプリケーションが提供される。
【００２５】
第三者から提供されたアプリケーションが実行中に第三者の故意又は過失により誤ったデータを出力すると、システム全体で障害を発生することが懸念される。このため、隔離されたアプリケーション実行環境を構築する必要がある。
【００２６】
情報処理システム１００は、情報端末や自動機械にアプリケーションを配布する前に、例えばオンラインのサービスという形態で、隔離されたアプリケーション実行環境を構築するためのサービスを提供するようにしてもよい。また、情報処理システム１００は、アプリケーションのバージョン変更の度に、隔離されたアプリケーション実行環境を構築するサービスを提供するようにしてもよい。
【００２７】
図１に示す情報処理システム１００は、セキュリティルール抽出部１１０と、セキュリティルール処理部１２０と、隔離環境構築部１３０を備えている。セキュリティルール抽出部１１０は、アプリケーションのバイナリファイル１０１を、逆アセンブルしたアセンブラプログラムを用いて解析して、セキュリティのルールとして必要なセキュリティ情報を抽出して、抽出されたセキュリティ情報を、システム１００のストレージ内の中間表現データ１０２に出力する。中間表現データ１０２は、キャッシュ内に一時的に記憶されるデータ構造でもよいし、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やフラッシュメモリなどの長期記憶装置にファイルやデータベースの形式で記憶されるものでもよい。セキュリティルール処理部１２０は、起動したいアプリケーションに対して事前に設定し、あらかじめ、許可される処理情報データベース１２１、セキュリティ技術情報データベース１２２、セキュリティ設定情報データベース１２３に記憶していたセキュリティの情報を適宜抽出して中間表現データ１０２と組み合わせることによって、セキュリティ設定ファイル１０３を作成する。なお、セキュリティの情報は、文字列、符号化されたデータ、暗号化されたデータ、配列、リスト、構造体など、多様なデータ形式のうちいずれの形式で表現されてもよい。そして、隔離環境構築部１３０は、このセキュリティ設定ファイル１０３を基に、隔離されたアプリケーション実行環境を構築する。情報処理システム１００によれば、入力されたアプリケーション１０１のバイナリデータ（あるいは、バイナリデータを逆アセンブルしたアセンブラプログラム）を解析して、アプリケーション１０１に対して自動的にセキュリティ設定を行うことで、設定されたセキュリティで保護された隔離実行環境を構築することが可能になる。
【００２８】
セキュリティルール抽出部１１０は、基本的には、アプリケーションのバイナリファイル１０１を逆アセンブルしたアセンブラプログラムを用いて、セキュリティルール抽出のための各種解析処理を実施する。
【００２９】
セキュリティルール抽出部１１０は、アプリケーションのバイナリファイル１０１をアセンブルしたときのフロー解析により、使用している関数や、その関数の引数から必要なシステムコールを特定する。例えば、セキュリティルール抽出部１１０は、バイナリファイル１０１中から、システムコールを発行することを示す番号を検出した場合には、その番号と実際に使われている関数と、該当する（直接実行している）システムコールを特定（逆引き）して、特定されたシステムコールの情報を、セキュリティ情報として中間表現データ１０２に出力する。その際、実行ファイルで使われる関数がエントリされているｐｌｔ（ｐｒｏｃｅｄｕｒｅ  ｌｉｎｋａｇｅ  ｔａｂｌｅ）セクション情報を用いて、関数を抽出することができる。
【００３０】
また、セキュリティルール抽出部１１０は、アプリケーションのバイナリファイル１０１を逆アセンブルしたアセンブラプログラムを用いて解析した結果、処理フローに必要なケーパビリティを特定した場合には、特定されたケーパビリティの情報を、セキュリティ情報として中間表現データ１０２に出力する。
【００３１】
また、セキュリティルール抽出部１１０は、アプリケーションのバイナリファイル１０１を逆アセンブルしたアセンブラプログラムを用いて解析した結果、アプリケーションを実行する際に使用される特定のファイル（あるいはオブジェクト）を特定した場合には、そのファイル名と、そのファイル（あるいはオブジェクト）へのアクセス制御情報（例えば、ＡＣＬ（Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｌｉｓｔ）と表現される情報）を、セキュリティ情報として中間表現データ１０２に出力する。
【００３２】
上記の、システムコールの情報、処理フローに必要なケーパビリティの情報、ファイル（あるいはオブジェクト）に対するアクセス制御の情報などの各セキュリティルールを、バイナリファイル（あるいは、バイナリファイルを逆アセンブルすることで得られるアセンブラプログラム）から抽出する機能は、それぞれ個別のプラグインとして提供することができる。勿論、システムコールの情報、処理フローに必要なケーパビリティの情報、ファイル（あるいはオブジェクト）に対するアクセス制御の情報以外についても、隔離環境下で実行する際にセキュリティ設定が必要となるセキュリティルールがあることが判った場合には、遂次プラグインとして提供するようにすればよい。
【００３３】
上述したようにセキュリティルール抽出部１１０により抽出されたセキュリティルールに基づいて、そのアプリケーションのバイナリファイル１０１を実行するために、許可しなければならないシステムコールに関する情報、許可しなければならない処理フローに必要なケーパビリティに関する情報、許可しなければならないファイル（あるいはオブジェクト）に対するアクセス制御に関する情報、といったセキュリティ情報を取得することができる。セキュリティルール抽出部１１０は、抽出したセキュリティルールを、中間表現データ１０２として出力する。中間表現データ１０２は、ストレージ装置内に記憶されるデータファイルであってもよい。また、情報処理システム１００は、各アプリケーションの中間表現データ１０２のファイルをアプリケーションと紐付けしてデータベース上で管理してもよい。
【００３４】
セキュリティルール処理部１２０は、セキュリティルール抽出部１１０によって取得できたセキュリティ情報を扱う。
【００３５】
システムの管理者はアプリケーション毎に、システムから許可されたセキュリティに関する情報を事前にデータベースに登録しておく。具体的には、アプリケーション毎に許可される処理の名称が許可される処理情報データベース１２１に登録され、アプリケーション毎に実際に適用するセキュリティ技術の名称がセキュリティ技術情報データベース１２２に登録され、許可される処理とセキュリティ技術の組み合わせに対して一意に特定される具体的なセキュリティ設定情報がセキュリティ設定情報データベース１２３に登録される。
【００３６】
セキュリティルール処理部１２０は、中間表現データ１０２に出力されたセキュリティ情報を、これらデータベース１２１〜１２３と組み合わせて、セキュリティとして許可すべき事項（セキュリティ情報）を決定して、アプリケーションに対してセキュリティを設定して、セキュリティ設定ファイル１０３を作成する。また、セキュリティルール処理部１２０は、上記のデータベース１２１〜１２３から取得される、システム管理者が事前に設定したセキュリティ情報（「セキュリティ許可情報」）と、セキュリティルール抽出部１１０により解析した結果として取得したセキュリティ情報とを比較して、一致しない場合にはセキュリティルール処理部１２０は、セキュリティ設定を行わず、所定のエラー処理（後述）を実施するようにしてもよい。
【００３７】
セキュリティルール処理部１２０は、プラグイン形式で、新たなセキュリティソフトウェアの生成機能を付与することができる。例えば、セキュリティルール処理部１２０に、ＳＥＬｉｎｕｘ（Ｓｅｃｕｒｉｔｙ−Ｅｎｈａｎｃｅｄ  Ｌｉｎｕｘ）向けのセキュリティ設定を作成する機能をプラグイン形式で追加した場合には、セキュリティルール処理部１２０のＳＥＬｉｎｕｘ向けのプラグイン作成に加えて、セキュリティルール抽出部１１０にＳＥＬｉｎｕｘに関するプラグインを追加して、セキュリティ技術情報データベース１２２とセキュリティ設定情報データベース１２３の各々にＳＥＬｉｎｕｘを加えることで、ＳＥＬｉｎｕｘに対応することができる。同様に、セキュリティルール処理部１２０にＡｐｐＡｒｍｏｒ（Ａｐｐｌｉｃａｔｉｏｎ  Ａｒｍｏｒ）向けのセキュリティ設定を作成する機能を、プラグイン形式で追加することができる。
【００３８】
なお、ＳＥＬｉｎｕｘは、ＮＳＡ（アメリカ国家安全保障局）が主体となって開発されたソフトウェアで、コンピュータ上で動作する各プロセスに対してオペレーティングシステムのレベルでアクセス制限を行う手法である。また、ＡｐｐＡｒｍｏｒは、アプリケーションにセキュリティプロファイルを結び付けて、アプリケーションができることに制限をかけるプログラムである。
【００３９】
そして、隔離環境構築部１３０は、アプリケーションのバイナリファイル１０１と、生成されたセキュリティ設定ファイル１０３を基に、隔離されたアプリケーション実行環境１０４を構築する。
【００４０】
本実施形態に係る情報処理システム１００によれば、システム管理者が事前に設定したセキュリティ設定に適合してさえいれば、アプリケーションの開発者は、アプリケーションのセキュリティ設定を自ら行う必要がなくなるという利点がある。
【００４１】
Ｂ．セキュリティルール抽出処理
セキュリティルール抽出部１１０は、例えば、アプリケーションのバイナリファイル１０１に含まれるシステムコールを解析するシステムコール解析機能部２００（図２を参照のこと）、アプリケーションのバイナリファイル１０１に含まれる処理フローを実行するために必要なケーパビリティの情報を解析するケーパビリティ解析機能部５００（図５を参照のこと）、並びに、アプリケーションを実行する際に使用するファイルのアクセス制御情報を解析するＡＣＬ解析機能部８００（図８を参照のこと）を備えている。
【００４２】
図２には、システムコール解析機能部２００の機能的構成を模式的に示している。システムコール解析機能部２００は、アプリケーションのバイナリファイル１０１に含まれるシステムコールを解析する。
【００４３】
システムコール解析機能部２００は、アプリケーションのバイナリファイル１０１又はこれを逆アセンブルしたアセンブラプログラムから、そのアプリケーションのバイナリファイル１０１が利用する関数と、そのアプリケーションのバイナリファイル１０１で直接実行しているシステムコールを抽出する。システムコール解析機能部２００は、例えば、ｐｌｔセクション情報を用いて、バイナリファイル１０１が利用している関数を抽出することができる。
【００４４】
システムコール解析処理部２００は、アプリケーションのバイナリファイル１０１又はアセンブラプログラムから抽出した関数に関しては、システムコール定義データベース２０１を参照して、その関数が呼び出すシステムコールを取得する。システムコール定義データベース２０１は、関数とシステムコールとをマッピングするデータベースであり、事前に生成されているものとする。図３には、システムコール解析処理部２００が備える、システムコール定義データベース２０１の構成例を示している。
【００４５】
そして、システムコール解析処理部２００は、アプリケーションのバイナリファイル１０１が利用する関数に対応するシステムコール、並びにアプリケーションのバイナリファイル１０１で直接実行しているシステムコールの情報を、セキュリティ情報として中間表現データ１０２に出力する。
【００４６】
図４には、システムコール解析機能部２００が、アプリケーションのバイナリファイル１０１を解析して、システムコールの情報をセキュリティ情報として出力する具体例を示している。
【００４７】
システムコール解析機能部２００は、入力されたアプリケーションのバイナリファイル１０１を逆アセンブルしたアセンブラプログラムから、関数を示す文字列「ｆｏｐｅｎ」を検出する。そして、システムコール解析機能部２００は、システムコール定義データベース２０１を参照して、関数「ｆｏｐｅｎ」が必要とするシステムコールを調査して、システムコール「ｏｐｅｎ」であることを突き止めると、このシステムコールの情報を、セキュリティ情報として中間表現データ１０２に出力する。
【００４８】
図５には、ケーパビリティ解析機能部５００の機能的構成を模式的に示している。ケーパビリティ解析機能部５００は、アプリケーションのバイナリファイル１０１に含まれる処理フローを実行するために必要なケーパビリティの情報を解析する。
【００４９】
ケーパビリティ解析機能部５００は、ケーパビリティを必要とする処理フローのバイナリコードと必要なケーパビリティの情報とをマッピングする処理フローケーパビリティ定義データベース５０１を備えている。図６には、ケーパビリティ解析機能部５００が備える、処理フローケーパビリティ定義データベース５０１の構成例を示している。そして、ケーパビリティ解析機能部５００は、アプリケーションのバイナリファイル１０１から、処理フローケーパビリティ定義データベース５０１で定義されている処理フローを検索して、発見した処理フローに対応するケーパビリティの情報を、セキュリティ情報として中間表現データ１０２に出力する。
【００５０】
図７には、ケーパビリティ解析機能部５００が、アプリケーションのバイナリファイル１０１を解析して、ケーパビリティの情報をセキュリティ情報として出力する具体例を示している。
【００５１】
ケーパビリティ解析機能部５００は、アプリケーションのバイナリファイル１０１を逆アセンブルした結果から、「ｂｅ  ０３  ００  ００  ００    ｍｏｖ        ＄０ｘ３，％ｅｓｉ」、「ｂｆ  １１  ００  ００  ００  ｍｏｖ        ＄０ｘ１１，％ｅｄｉ」、及び、「ｅ８  ６ｄ  ｆｅ  ｆｆ  ｆｆ  ｃａｌｌｑ    ４００７ｅ０」の３行からなる処理フローが処理フローケーパビリティ定義データベース５０１にエントリされていることを発見する。この３行の逆アセンブル情報に相当する処理フローは、トランスポート層プロトコル（ＴＣＰ、ＵＤＰなど）でカプセル化される標準的なｓｏｃｋｅｔ操作ではなく、生のネットワークパケットへのダイレクトな送受信を行う「ｒａｗ  ｓｏｃｋｅｔ」操作を実行するものであり、ネットワークを接続する特別なケーパビリティ「ＣＡＰ＿ＮＥＴ＿ＲＡＷ」を必要とする。したがって、ケーパビリティ解析機能部５００は、処理フローケーパビリティ定義データベース５０１でこの処理フローに対応付けられているケーパビリティ「ＣＡＰ＿ＮＥＴ＿ＲＡＷ」の情報を、セキュリティ情報として中間表現データ１０２に出力する。
【００５２】
図８には、ＡＣＬ解析機能部８００の機能的構成を模式的に示している。ＡＣＬ解析機能部８００は、アプリケーションを実行する際に使用するファイルのアクセス制御情報（ＡＣＬとして提供される情報）を解析する。
【００５３】
ＡＣＬ解析機能部８００は、ファイルアクセス関数を定義するファイルアクセス関数定義データベース８０１を備えている。図９には、ＡＣＬ解析機能部８００が備える、ファイルアクセス関数定義データベース８０１の構成例を示している。そして、ＡＣＬ解析機能部８００は、アプリケーションのバイナリファイル１０１から、ファイルアクセス関数定義データベース８０１で定義されているファイルアクセス関数を検索して、発見したファイルアクセス関数のファイル名を指定する引数箇所に対応するファイル名に対応するアドレスから、ファイル名とファイルアクセス時に指定するアクセス制御の情報を取得すると、アクセスするファイル名及びファイルアクセス時に指定するアクセス制御の情報を、セキュリティ情報として中間表現データ１０２に出力する。例えば、ｆｏｐｅｎ関数の場合には、ファイル名は当該関数の第１引数であり、ファイルアクセス時に指定するアクセス制御情報は第２引数に該当する部分に相当する。
【００５４】
図１０には、ＡＣＬ解析機能部８００が、アプリケーションのバイナリファイル１０１を解析して、アクセスするファイル名及びファイルアクセス時に指定するアクセス制御の情報をセキュリティ情報として出力する具体例を示している。
【００５５】
ＡＣＬ解析機能部８００は、アプリケーションのバイナリファイル１０１を解析して、バイナリ内部の情報から、ファイルアクセス情報を取得する。図１０に示す例では、ファイルアクセス関数「ｆｏｐｅｎ」の引数アドレスから、アクセスするファイル名「ａｃｌｔｅｓｔ．ｔｘｔ」と、ファイルアクセス時に指定するアクセス制御情報「ｒｅａｄ」が抽出される。同図中、一点鎖線の四角で囲んだ第１引数がファイル名に相当し、点線の四角で囲んだ第２引数がファイルアクセス時に指定するアクセス制御の情報に相当する。
【００５６】
図１１には、セキュリティルール抽出部１１０がアプリケーションのバイナリファイル１０１に対して、システムコール解析、ケーパビリティ解析、及びファイルアクセス制御情報の解析を実施した結果として中間表現データ１０２に出力されるセキュリティ情報の一例１１００を示している。
【００５７】
なお、図２に示したシステムコール解析処理部２００及びシステムコール定義データベース２０１、図５に示したケーパビリティ解析機能部５００及び処理フローケーパビリティ定義データベース５０１、図８に示したＡＣＬ解析機能部８００及びファイルアクセス関数定義データベース８０１といった、アプリケーションのバイナリファイル１０１の解析機能と、解析時に使用するデータベースは、例えばプラグイン形式でセキュリティルール抽出部１１０に追加することができる。
【００５８】
また、上述したシステムコール、ケーパビリティの情報、並びにアクセス制御情報以外のセキュリティ情報をアプリケーションのバイナリファイル１０１から抽出する新たな解析機能並びにその解析処理に使用するデータベースを後から作成した場合には、同様に、プラグイン形式でセキュリティルール抽出部１１０に逐次追加することができる、という点を十分理解されたい。
【００５９】
図１２には、セキュリティルール抽出部１１０が実施するセキュリティルール抽出処理の概略的な処理手順をフローチャートの形式で示している。
【００６０】
まず、セキュリティルール抽出部１１０は、対象となるアプリケーションのバイナリファイル１０１を読み込む（ステップＳ１２０１）。なお、必要に応じて、読み込んだバイナリファイル１０１を逆アセンブルしてアセンブラプログラムを生成しておく。
【００６１】
次いで、セキュリティルール抽出部１１０は、アプリケーションのバイナリファイル１０１、若しくはこれを逆アセンブルしたアセンブラプログラムから、各種のセキュリティ情報の抽出処理を実施する（ステップＳ１２０２）。
【００６２】
ステップＳ１２０２では、例えば、システムコール解析機能部２００がアプリケーションのバイナリファイル１０１に含まれるシステムコール情報を抽出し（図２〜図４を参照のこと）、ケーパビリティ解析機能部５００がアプリケーションのバイナリファイル１０１に含まれる処理フローを実行するために必要なケーパビリティの情報を解析し（図５〜図７を参照のこと）、ＡＣＬ解析機能部８００がアプリケーションを実行する際に使用するファイルのアクセス制御情報を解析する（図８〜図１０を参照のこと）。
【００６３】
そして、セキュリティルール抽出部１１０は、セキュリティ情報抽出のプラグインを実行して（ステップＳ１２０３）、本処理を終了する。
【００６４】
図１３には、図１２に示したフローチャート中のステップＳ１２０２において、システムコール解析機能部２００がアプリケーションのバイナリファイル１０１に含まれるシステムコールを抽出するための処理手順をフローチャートの形式で示している。
【００６５】
システムコール解析機能部２００は、入力されたアプリケーションのバイナリファイル１０１を逆アセンブルしたアセンブラプログラムから、そのアプリケーションのバイナリファイル１０１が利用する関数と、そのアプリケーションのバイナリファイル１０１で直接実行しているシステムコールを、それぞれ抽出する（ステップＳ１３０１）。システムコール解析機能部２００は、例えば、ｐｌｔセクション情報を用いて、バイナリファイル１０１が利用している関数を抽出することができる。
【００６６】
そして、システムコール解析機能部２００は、ステップＳ１３０１で抽出した、アプリケーションのバイナリファイル１０１で直接実行しているシステムコールについては、そのままセキュリティ情報として中間表現データ１０２に出力する（ステップＳ１３０２）。
【００６７】
また、システムコール解析機能部２００は、ステップＳ１３０１で抽出したすべての関数について、システムコール定義データベース２０１（図３を参照のこと）を参照して、その関数が呼び出すシステムコールを取得し（ステップＳ１３０３）、取得したシステムコールの情報を、セキュリティ情報として中間表現データ１０２に出力する（ステップＳ１３０４）、という処理（「システムコール抽出ループ」ＢＥＧＩＮからＥＮＤの間に定義される処理）を繰り返し実施する。
【００６８】
図１４には、図１２に示したフローチャート中のステップＳ１２０２において、ケーパビリティ解析機能部５００がアプリケーションのバイナリファイル１０１に含まれる処理フローを実行するために必要なケーパビリティの情報を解析するための処理手順をフローチャートの形式で示している。
【００６９】
ケーパビリティ解析機能部５００は、まず、処理フローケーパビリティ定義データベース５０１（図６を参照のこと）に登録されている、すべての処理フローを読み出す（ステップＳ１４０１）。
【００７０】
そして、ケーパビリティ解析機能部５００は、読み出したすべての処理フローについて、アプリケーションのバイナリファイル１０１から抽出する処理（「ケーパビリティ情報作成ループ」ＢＥＧＩＮからＥＮＤの間に定義される処理）を繰り返し実施する。
【００７１】
具体的には、ケーパビリティ解析機能部５００は、アプリケーションのバイナリファイル１０１から、対象の処理フローに該当するバイナリコード箇所を検索する（ステップＳ１４０２）。なお、バイナリコードの解析においては、バイナリコードを逆アセンブルした結果取得できるアセンブラプログラムを用いて解析してもよい。
【００７２】
そして、ケーパビリティ解析機能部５００は、アプリケーションのバイナリファイル１０１から、対象の処理フローに該当するバイナリコード箇所を発見したときには（ステップＳ１４０３のＹｅｓ）、発見した処理フローに対応するケーパビリティの情報を、セキュリティ情報として中間表現データ１０２に出力する（ステップＳ１４０４）。
【００７３】
図１５には、図１２に示したフローチャート中のステップＳ１２０２において、ＡＣＬ解析機能部８００がアプリケーションを実行する際に使用するファイルのアクセス制御に関する情報を解析するための処理手順をフローチャートの形式で示している。
【００７４】
ＡＣＬ解析機能部８００は、まず、ファイルアクセス関数定義データベース８０１（図９を参照のこと）に登録されているすべてのファイルアクセス関数を読み出す（ステップＳ１５０１）。
【００７５】
そして、ＡＣＬ解析機能部８００は、読み出したすべてのファイルアクセス関数について、ファイル名とファイルアクセス時に指定するアクセス制御情報を取得する処理（「アクセス制御情報作成ループ」ＢＥＧＩＮからＥＮＤの間に定義される処理）を繰り返し実施する。
【００７６】
具体的には、ＡＣＬ解析機能部８００は、アプリケーションのバイナリファイル１０１から、ファイルアクセス関数に該当するバイナリコード箇所を検索する（ステップＳ１５０２）。なお、バイナリコードの解析においては、バイナリコードを逆アセンブルした結果取得できるアセンブラプログラムを用いて解析してもよい。
【００７７】
そして、ＡＣＬ解析機能部８００は、アプリケーションのバイナリファイル１０１から、対象のファイルアクセス関数に該当するバイナリコード箇所を発見したときには（ステップＳ１５０３のＹｅｓ）、発見したファイルアクセス関数のファイル名を指定する引数箇所に、ファイル名に対応するアドレスが存在するかどうかをさらにチェックする（ステップＳ１５０４）。
【００７８】
発見したファイルアクセス関数のファイル名を指定する引数箇所に、ファイル名に対応するアドレスが存在する場合には（ステップＳ１５０４のＹｅｓ）、ＡＣＬ解析機能部８００は、ファイル名に対応するアドレスから、ファイル名とファイルアクセス時に指定するアクセス制御の情報を取得する（ステップＳ１５０５）。例えば、ｆｏｐｅｎ関数の場合には、ファイル名は当該関数の第１引数であり、ファイルアクセス時に指定するアクセス制御の情報は第２引数に該当する部分に相当する。
【００７９】
次いで、ＡＣＬ解析機能部８００は、アクセスするファイル名及びファイルアクセス時に指定するアクセス制御の情報を、セキュリティ情報として中間表現データ１０２に出力する（ステップＳ１５０６）。
【００８０】
Ｃ．セキュリティルール処理
セキュリティルール処理部１２０は、セキュリティルール抽出部１１０から中間表現データ１０２に出力されたセキュリティ情報に基づいてアプリケーションに対してセキュリティを設定して、セキュリティ設定ファイル１０３を作成する。また、セキュリティルール処理部１２０は、システム管理者が事前に設定したセキュリティ許可情報と、セキュリティルール抽出部１１０により解析した結果として得られたセキュリティ情報とが一致しない場合には、セキュリティルール処理部１２０は、セキュリティ設定を行わず、所定のエラー処理（後述）を実施する。
【００８１】
セキュリティルール処理のために、システムの管理者はアプリケーション毎に、システムから許可されたセキュリティ情報を事前にデータベースに登録しておく。具体的には、アプリケーション毎に許可される処理の名称が許可される処理情報データベース１２１に登録され、アプリケーション毎に実際に適用するセキュリティ技術の名称がセキュリティ技術情報データベース１２２に登録され、許可される処理とセキュリティ技術の組み合わせに対して一意に特定される具体的なセキュリティ設定情報がセキュリティ設定情報データベース１２３に登録される。
【００８２】
図１６には、許可される処理情報データベース１２１の構成例を示している。許可される処理情報データベース１２１は、アプリケーション毎に指定される許可される処理の名称を、アプリケーション名と対応付けて登録している。図示の例では、アプリケーションＡに対してネットワークサービスが許可される処理として設定され、アプリケーションＢに対して動画が許可される処理として設定されている。なお、１つのアプリケーションに複数の許可される処理を設定することもできる。
【００８３】
図１７には、セキュリティ技術情報データベース１２２の構成例を示している。セキュリティ技術情報データベース１２２は、アプリケーション毎に実際に適用するセキュリティ技術の名称を、アプリケーション名と対応付けて登録している。図示の例では、アプリケーションＡに対して、セキュリティ技術「ｃａｐａｂｉｌｉｔｙ」及びセキュリティ技術「ｓｙｓｃａｌｌ  ｆｉｌｔｅｒｉｎｇ（システムコールの実行の可否を設定できる機能）」を適用することができ、アプリケーションＢに対してセキュリティ技術「ＡＣＬ」を適用することができる。なお、１つのアプリケーションに対して複数のセキュリティ技術を設定することもできる。
【００８４】
図１８には、セキュリティ設定情報データベース１２３の構成例を示している。セキュリティ設定情報データベース１２３は、許可される処理とセキュリティ技術の組み合わせをキーとして一意に特定される具体的なセキュリティ設定情報を登録している。図示の例では、許可される処理「Ｎｅｔｗｏｒｋ  Ｓｅｒｖｉｃｅ」及びセキュリティ技術「ｃａｐａｂｉｌｉｔｙ」の組み合わせに対してセキュリティ設定情報「ケーパビリティ情報」が設定され、許可される処理「Ｎｅｔｗｏｒｋ  Ｓｅｒｖｉｃｅ」及びセキュリティ技術「ｓｙｓｃａｌｌ  ｆｉｌｔｅｒｉｎｇ」の組み合わせに対してセキュリティ設定情報「システムコール情報」が設定され、許可される処理「Ｖｉｄｅｏ」及びセキュリティ技術「ＡＣＬ」の組み合わせに対してセキュリティ設定情報「アクセス制御情報」が設定されている。
【００８５】
図１９には、セキュリティルール処理部１２０が、アプリケーションに対してセキュリティを設定するための処理手順をフローチャートの形式で示している。
【００８６】
セキュリティルール処理部１２０は、まず、対象とするアプリケーションの名称をキーとして、許可される処理情報データベース１２１（図１６を参照のこと）を検索して、該当するアプリケーションに許可される処理の情報を取得する（ステップＳ１９０１）。例えば、アプリケーションＡであれば、許可される処理情報データベース１２１から、許可される処理として「Ｎｅｔｗｏｒｋ」及び「ＧＰＳ」を取得する。
【００８７】
また、セキュリティルール処理部１２０は、対象とするアプリケーションの名称をキーとして、セキュリティ技術情報データベース１２２（図１７を参照のこと）を検索して、該当するアプリケーションに適用するすべてのセキュリティ技術を取得する（ステップＳ１９０２）。例えば、アプリケーションＡであれば、セキュリティ技術として「ｃａｐａｂｉｌｉｔｙ」、及び「ｓｙｓｃａｌｌ  ｆｉｌｔｅｒｉｎｇ」を取得する。
【００８８】
そして、セキュリティルール処理部１２０は、ステップＳ１９０１で取得したすべての許可される処理と、ステップＳ１９０２で取得したすべてのセキュリティ技術の組み合わせをキーとして、セキュリティ設定情報データベース１２３（図１８を参照のこと）を検索して、該当するアプリケーションに設定する実際の設定情報を取得して、一時記憶領域の「セキュリティ許可情報」に一時的に保存する（ステップＳ１９０３）、という処理を繰り返す（すなわち、「セキュリティ設定ループ１」及び「セキュリティ設定ループ２」のＢＥＧＩＮからＥＮＤの間に定義される処理を、すべての許可される処理及びセキュリティ技術の組み合わせについて繰り返す）。
【００８９】
許可される処理情報データベース１２１、セキュリティ技術情報データベース１２２、及びセキュリティ設定情報データベース１２３の情報を組み合わせることによって取得される、上記のセキュリティ許可情報は、システム管理者がアプリケーションに対して事前に設定したセキュリティ設定情報ということもできる。
【００９０】
アプリケーションＡであれば、許可される処理情報データベース１２１で「Ｎｅｔｗｏｒｋ」及び「ＧＰＳ」の２つが許可される処理として設定されるとともに、セキュリティ技術情報データベース１２２で「ｃａｐａｂｉｌｉｔｙ」及び「ｓｙｓｃａｌｌ  ｆｉｌｔｅｒｉｎｇ」の２つがセキュリティ技術として設定されている。したがって、セキュリティルール処理部１２０は、セキュリティ設定情報データベース１２３から、許可される処理「Ｎｅｔｗｏｒｋ  Ｓｅｒｖｉｃｅ」及びセキュリティ技術「ｃａｐａｂｉｌｉｔｙ」の組み合わせをキーとしてケーパビリティの情報を取得するとともに、許可される処理「Ｎｅｔｗｏｒｋ  Ｓｅｒｖｉｃｅ」及びセキュリティ技術「ｓｙｓｃａｌｌ  ｆｉｌｔｅｒｉｎｇ」の組み合わせをキーとしてシステムコールの情報を取得する。
【００９１】
そして、セキュリティルール処理部１２０は、セキュリティ許可情報（すなわち、システム管理者がアプリケーションに対して事前に設定したセキュリティ設定情報）と、セキュリティルール抽出部１１０から中間表現データ１０２に出力された、アプリケーションが必要とするセキュリティ情報を比較して、これらが同じであるかどうか（若しくは整合するかどうか）をチェックする（ステップＳ１９０４）。
【００９２】
セキュリティ許可情報と中間表現データ１０２に出力されたセキュリティ情報が同じである場合には（ステップＳ１９０４のＹｅｓ）、セキュリティルール処理部１２０は、対象とするアプリケーションに対してセキュリティ設定を生成する（ステップＳ１９０５）。
【００９３】
他方、セキュリティ許可情報と中間表現データ１０２に出力されたセキュリティ情報が同じでない（若しくは整合しない）場合には（ステップＳ１９０４のＹｅｓ）、セキュリティルール処理部１２０は、対象とするアプリケーションに対するセキュリティ設定を生成せず、エラー処理を実施する（ステップＳ１９０６）。
【００９４】
セキュリティルール処理部１２０は、例えばエラー処理として、セキュリティ許可情報と、アプリケーションのバイナリファイル１０１の解析結果として中間表現データ１０２に出力されたセキュリティ情報の差分を求め、その結果をユーザに通知する。ここで言うユーザは、システムの管理者、アプリケーションの開発者、又はアプリケーションを自動機械にインストールして利用する利用者（エンドユーザ）などである。
【００９５】
図１６〜図１８に例示した各データベースを使用する場合を例にとって、アプリケーションＡ及びアプリケーションＢの各々について、セキュリティルール処理部１２０がセキュリティ設定を生成する処理手順について説明しておく。
【００９６】
アプリケーションＡについては、まず図１６に示した許可される処理情報データベース１２１にアクセスすることで、許可される処理として「Ｎｅｔｗｏｒｋ  Ｓｅｒｖｉｃｅ」が許可されていることが分かる。次に、図１７に示したセキュリティ技術情報データベース１２２にアクセスすることで、アプリケーションＡは、セキュリティ技術「ｃａｐａｂｉｌｉｔｙ」及び「ｓｙｓｃａｌｌ  ｆｉｌｔｅｒｉｎｇ」を適用することが分かる。
【００９７】
これらの情報から、許可される処理「Ｎｅｔｗｏｒｋ  Ｓｅｒｖｉｃｅ」に関するセキュリティ技術「ｃａｐａｂｉｌｉｔｙ」を適用するためのセキュリティ設定情報と、許可される処理「Ｎｅｔｗｏｒｋ  Ｓｅｒｖｉｃｅ」に関するセキュリティ技術「ｓｙｓｃａｌｌ  ｆｉｌｔｅｒｉｎｇ」を適用するためのセキュリティ設定情報が、アプリケーションＡの隔離環境を構築するために必要であることが分かる。そして、これらについてあらかじめ設定されたセキュリティ設定情報については、図１８に示したセキュリティ設定情報データベース１２３にアクセスすることで、セキュリティ許可情報として取得することができる。
【００９８】
セキュリティルール処理部１２０は、取得したセキュリティ許可情報と、アプリケーションＡに対して中間表現データ１０２に出力されたセキュリティ情報とを比較する。そして、セキュリティ許可情報とセキュリティ情報が一致していれば、セキュリティ情報に基づいてセキュリティ設定を出力して、セキュリティ設定ファイル１０３を生成する。あるいは、許可される処理「Ｎｅｔｗｏｒｋ  Ｓｅｒｖｉｃｅ」に関するセキュリティ技術「Ｓｙｓｃａｌｌ  ｆｉｌｔｅｒｉｎｇ」のためのセキュリティ設定として必要とされるシステムコールの情報とは異なるシステムコールが、中間表現データ１０２に出力されているなど、セキュリティ許可情報とセキュリティ情報の相違点が検出された場合には、セキュリティルール処理部１２０は、ユーザにエラーを通知する。
【００９９】
また、アプリケーションＢについては、まず図１６に示した許可される処理情報データベース１２１にアクセスすることで、許可される処理「Ｖｉｄｅｏ」が許可されていることが分かる。次に、図１７に示したセキュリティ技術情報データベース１２２にアクセスすることで、アプリケーションＢは、セキュリティ技術「ＡＣＬ」を適用する必要があることが分かる。これらの情報から、許可される処理「Ｖｉｄｅｏ」に関するセキュリティ技術「ＡＣＬ」に必要とされるセキュリティ設定情報が、アプリケーションＢの隔離環境を構築するために必要であることが分かる。そして、この必要とされるセキュリティ設定情報については、図１８に示したセキュリティ設定情報データベース１２３にアクセスすることで、セキュリティ許可情報を取得することができる。セキュリティルール処理部１２０は、取得したセキュリティ許可情報と、中間表現データ１０２に出力されているアプリケーションＢに対するセキュリティ情報とを比較する。そして、セキュリティ許可情報とセキュリティ情報が一致していればセキュリティ情報に基づきセキュリティ設定を出力してセキュリティ設定ファイル１０３を生成するが、一致していなければユーザにエラーを通知する。
【０１００】
図２０には、セキュリティルール処理部１２０が、セキュリティルール抽出部１１０から中間表現データ１０２に出力されたセキュリティ情報に基づいて、アプリケーションに対してセキュリティ設定ファイル１０３を生成する具体例を示している。
【０１０１】
例えば、アプリケーションＡであれば、セキュリティルール処理部１２０は、許可される処理情報データベース１２１から許可される処理「Ｎｅｔｗｏｒｋ」及び「ＧＰＳ」を取得し、セキュリティ技術情報データベース１２２からセキュリティ情報「ｃａｐａｂｉｌｉｔｙ」及び「ｓｙｓｃａｌｌ  ｆｉｌｔｅｒｉｎｇ」を取得する。
【０１０２】
そして、セキュリティルール処理部１２０は、アプリケーションＡに対して指定されたすべての許可される処理とすべてのセキュリティ技術の組み合わせをキーとして、セキュリティ設定情報データベース１２３を検索して、アプリケーションＡに設定する実際の設定情報としてケーパビリティの情報及びシステムコールの情報を取得して、セキュリティ許可情報として保存する。セキュリティ許可情報は、アプリケーションＡに対するセキュリティ設定を生成する際に利用される。
【０１０３】
なお、セキュリティルール処理部１２０は、セキュリティルール抽出部１１０と同様に、後から対応が必要になったセキュリティ技術のルール生成プラグインを追加できるように構成されているものとする。図示の例では、ＳＥＬｉｎｕｘ向けルール生成プラグイン２００１と、ＡｐｐＡｒｍｏｒ向けルール生成プラグイン２００２がセキュリティルール処理部１２０に追加されている。
【０１０４】
図２１には、図１９に示したフローチャートのステップＳ１９０４において、セキュリティルール処理部１２０が、データベース１２１〜１２３を組み合わせて適用することにより生成したセキュリティ許可情報と、セキュリティルール抽出部１１０から中間表現データ１０２に出力されたセキュリティ情報を比較する具体例を示している。図２１に示す例では、セキュリティ許可情報と中間表現データ１０２のセキュリティ情報は同じなので、ステップＳ１９０５において、セキュリティルール処理部１２０は、対象とするアプリケーションに対してセキュリティ設定を生成することになる。
【０１０５】
また、図１９に示したフローチャートのステップＳ１９０５において、セキュリティルール処理部１２０は、生成したセキュリティ設定を、例えばデータファイルの形式で、アプリケーションと紐付けして出力する。図２２には、セキュリティルール処理部１２０が、セキュリティ情報（実システム設定マージ結果）を基に生成するセキュリティ設定ファイル１０３の具体例を示している。
【０１０６】
Ｄ．隔離環境構築
隔離環境構築部１３０は、セキュリティルール処理部１２０がアプリケーションに対して生成したセキュリティ設定ファイル１０３を基に、隔離されたアプリケーション実行環境を構築する。
【０１０７】
図２３には、隔離環境構築部１３０が実施する処理手順をフローチャートの形式で示している。
【０１０８】
隔離環境構築部１３０は、隔離環境で実行すべきアプリケーションのバイナリファイル１０１を入力する（ステップＳ２３０１）。このアプリケーションは、例えば第三者が開発したものである。
【０１０９】
次いで、隔離環境構築部１３０は、そのアプリケーションに対してセキュリティルール生成部１２０が生成したセキュリティ設定を入力する（ステップＳ２３０２）。
【０１１０】
隔離環境構築部１３０は、アプリケーションのバイナリファイル１０１と、そのアプリケーションに対して生成されたセキュリティ設定ファイル１０３を基に、隔離されたアプリケーション実行環境を構築する（ステップＳ２３０３）。
【０１１１】
また、図２４には、隔離環境構築部１３０が、セキュリティルール処理部１２０が作成したセキュリティ設定ファイル１０３を基に隔離されたアプリケーション実行環境を構築する具体例を示している。
【０１１２】
Ｅ．隔離環境構築のオンラインサービス化
例えばスマートフォンやタブレット、パーソナルコンピュータなどの情報端末、あるいはロボットや自動運転車、ドローンのような無人航空機といった、エンドユーザが使用する自動機械上で実行されるアプリケーションの多くは、第三者によって開発され、バイナリファイルの形式で配布される。
【０１１３】
第三者から提供されたアプリケーションが実行中に誤ったデータを出力することによって、システム全体で障害を発生することを防止するためには、隔離されたアプリケーション実行環境を構築する必要がある。
【０１１４】
従来、アプリケーションに対して必要なセキュリティを、アプリケーションの開発者自らが設定する必要がある。このため、開発者は、プラットフォームにおけるセキュリティ設定に関する知見が必要であるとともに、セキュリティ情報を設定するためのプログラム開発の負担若しくはコストが生じる。
【０１１５】
これに対し、本明細書で開示する技術によれば、情報処理システム１００がアプリケーションのバイナリファイル１０１を解析して、自動的にセキュリティ設定を行うことで、隔離されたアプリケーションの実行環境を構築する。したがって、アプリケーションを開発する第三者は、アプリケーションのセキュリティ設定を自ら行う必要がなくなるという利点がある。
【０１１６】
このような隔離環境構築サービスは、オンライン上でも展開することができる。図２５には、隔離環境構築のオンラインサービスの概要を示している。
【０１１７】
アプリケーションを開発する開発者（第三者）の端末２５０１と、本実施形態に係る情報処理システム１００と、エンドユーザが使用する端末２５０２とは、ネットワーク２５０３を経由して相互接続されている。
【０１１８】
エンドユーザが使用する端末２５０２は、例えば、スマートフォンやタブレット、パーソナルコンピュータなどの情報端末、あるいはロボットや自動運転車、ドローンのような無人航空機といった自動機械、若しくは自動機械をローカル接続する情報端末などである。
【０１１９】
ネットワーク２５０３は、例えばインターネットのような広域ネットワークを想定しているが、もちろんＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）のような小規模なネットワークでもよい。また、ネットワーク２５０３は、各端末２５０１、２５０３が接続（ログイン）する際に認証処理を必要とするプライベートなネットワークでもよい。
【０１２０】
第三者が開発したアプリケーションは、バイナリファイルの形式で、端末２５０１からネットワーク２５０３経由で配布される。
【０１２１】
情報処理システム１００は、アプリケーションのバイナリファイル１０１を受け取ると、これを解析して自動的にセキュリティ設定を行うことで、隔離されたアプリケーションの実行環境を構築し、ネットワーク２５０３経由で各エンドユーザの端末２５０２に提供する。
【０１２２】
このようにして、各エンドユーザの端末２５０２は、隔離環境下で、第三者から提供されるアプリケーションを実行することができる。したがって、アプリケーションにバグやマルウェアが故意又は過失により含まれていたとしても、端末２５０２上では、隔離環境下で（すなわち、保護された特定領域でのみ）動作するので、アプリケーションに潜在するバグやマルウェアによる影響を最小限に抑制することができる。
【０１２３】
もちろん、オンラインではなく、ＣＤなどの記憶媒体によって配布されるアプリケーションに対しても、本実施形態に係る隔離環境の構築サービスを同様に提供することができる。
【０１２４】
Ｆ．まとめ
図１などにも示したように、本実施形態に係る情報処理システム１００は、セキュリティルール抽出部１１０と、セキュリティルール処理部１２０と、隔離環境構築部１３０を備えている。
【０１２５】
セキュリティルール抽出部１１０は、アプリケーションのバイナリファイル１０１から事前に定義されたデータベース（前述）に含まれているセキュリティ情報を検出すると、データベースからそのセキュリティ情報に関連付けられたケーパビリティやアクセス制御などの情報を、中間表現データ１０２に出力する。
【０１２６】
セキュリティルール処理部１２０は、アプリケーションの名称をキーとして、許可される処理情報データベース１２１から該当アプリケーションの許可される処理の情報を取得するとともに、セキュリティ技術情報データベース１２２から該当アプリケーションを設定するセキュリティ技術の情報を取得する。
【０１２７】
次いで、セキュリティルール処理部１２０は、取得した許可される処理の情報とセキュリティ技術の情報の組み合わせに対して設定された実際のシステムで必要とされるセキュリティ設定情報を、セキュリティ設定情報データベース１２３から抽出して、セキュリティ許可情報を取得する。セキュリティ許可情報は、システム管理者がアプリケーションに対して事前に設定したセキュリティ設定情報である。
【０１２８】
そして、セキュリティルール処理部１２０は、その取得されたセキュリティ許可情報と、セキュリティルール抽出部１１０が出力する中間表現データ１０２に出力されているセキュリティ情報を比較する。セキュリティ許可情報とセキュリティ情報が同一であれば、その出力されたセキュリティ情報に基づいて、アプリケーションのセキュリティ設定を生成する。一方、セキュリティ許可情報とセキュリティ情報が同一でなければエラー処理を実施する。セキュリティルール処理部１２０は、このエラー処理として、例えば、ユーザへのエラーの通知を行い、その際に、抽出結果と中間表現データ１０２の差分を併せて提示するようにしてもよい。
【０１２９】
セキュリティ設定が成功裏に生成された場合、隔離環境構築部１３０は、アプリケーションのバイナリファイル１０１と、そのアプリケーションに対して生成されたセキュリティ設定ファイル１０３を基に隔離されたアプリケーション実行環境を構築する。
【０１３０】
したがって、本実施形態に係る情報処理システム１００によれば、特定のプラットフォームのセキュリティ設定に関する知見を持たなくても、第三者が提供するアプリケーションに対して、そのアプリケーションが動作するシステム管理者の意図した適切なセキュリティ設定を実施することができる。
【０１３１】
また、このような情報処理システム１００を利用することで、隔離環境を前提としないで開発されたアプリケーションに対しても、隔離環境を構築して、隔離環境下で実行するために必要なセキュリティ情報を抽出することができる。よって、システム管理者側が稼働させたいアプリケーションのセキュリティ情報に基づいて、システムに許可するセキュリティ設定情報を再度検討することなども可能である。
【０１３２】
Ｇ．情報処理システム１００のハードウェア構成
図２６には、本実施形態に係る情報処理システム１００として動作することができる装置のハードウェア構成例を示している。
【０１３３】
図示の情報処理システム１００は、主にＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２６０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２６０３と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２６０５を備え、さらに、ホストバス２６０７と、ブリッジ２６０９と、外部バス２６１１と、インターフェース２６１３と、入力装置２６１５と、出力装置２６１７と、ストレージ装置２６１９と、ドライブ２６２１と、接続ポート２６２３と、通信装置２６２５とを備えている。
【０１３４】
ＣＰＵ２６０１は、演算処理装置及び制御装置として機能し、ＲＯＭ２６０３、ＲＡＭ２６０５、ストレージ装置２６１９又はリムーバブル記録媒体２６２７に記録された各種プログラムに従って、情報処理システム１００内の動作全般又はその一部を制御する。ＲＯＭ２６０３は、ＣＰＵ２６０１が使用するプログラムや演算パラメータなどを不揮発的に記憶する。ＲＡＭ２６０５は、ＣＰＵ２６０１が使用するプログラムや、プログラムの実行において適宜変化するパラメータなどを一時的に記憶する。これらはＣＰＵバスなどの内部バスにより構成されるホストバス２６０７により相互に接続されている。なお、上述したような隔離環境の構築サービスの機能は、例えば、ＣＰＵ２６０１が所定のプログラムを実行することにより実現され得る。
【０１３５】
ＣＰＵ２６０１は、例えば、アプリケーションのバイナリファイル１０１を解析して、隔離されたアプリケーション実行環境を構築するための処理手順を記述したプログラムを実行する。
【０１３６】
ホストバス２６０７は、ブリッジ２６０９を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスなどの外部バス２６１１に接続されている。また、外部バス２６１１には、インターフェース２６１３を介して、入力装置２６１５、出力装置２６１７、ストレージ装置２６１９、ドライブ２６２１、接続ポート２６２３及び通信装置２６２５が接続されている。
【０１３７】
入力装置２６１５は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、 レバー及びペダルなどのユーザが操作する操作デバイスからなる。また、入力装置２６１５は、例えば、赤外線やその他の電波を利用したリモートコントローラ（いわゆる、リモコン）であってもよいし、情報処理システム１００の操作に対応した携帯電話若しくはスマートフォンやＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）などの外部接続機器２６２９であってもよい。さらに、入力装置２６１５は、例えば、上記の操作デバイスを用いてユーザにより入力された情報に基づいて入力信号を生成し、ＣＰＵ２６０１に出力する入力制御回路などから構成されている。情報処理システム１００のユーザは、入力装置２６１５を操作することにより、情報処理システム１００に対して各種のデータを入力したり処理動作を指示したりすることができる。
【０１３８】
出力装置２６１７は、取得した情報をユーザに対して視覚的又は聴覚的に通知することが可能な装置で構成される。このような装置として、ＣＲＴディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ＥＬディスプレイ装置及びランプなどの表示装置や、スピーカ及びヘッドホンなどの音声出力装置や、プリンタ装置などが挙げられる。出力装置２６１７は、例えば、情報処理システム１００が行なった各種処理により得られた結果を出力する。具体的には、表示装置は、情報処理システム１００が行なった各種処理により得られた結果をテキスト又はイメージで表示する。他方、音声出力装置は、再生された音声データや音響データなどからなるオーディオ信号をアナログ信号に変換して音声出力する。なお、セキュリティルール処理においてエラーとなった際には、例えば出力装置２６１７を通じてユーザに通知され得る。
【０１３９】
ストレージ装置２６１９は、情報処理システム１００の記憶部の一例として構成されたデータ格納用の装置である。ストレージ装置２６１９は、例えば、ＨＤＤなどの磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス又は光磁気記憶デバイスなどにより構成される。ストレージ装置２６１９は、ＣＰＵ２６０１が実行するプログラムや各種データなどを格納する。
【０１４０】
ドライブ２６２１は、記録媒体用リーダライタであり、情報処理システム１００に内蔵あるいは外付けされる。ドライブ２６２１は、装着されている磁気ディスク、光ディスク、光磁気ディスク又は半導体メモリなどのリムーバブル記録媒体２６２７に記録されている情報を読み出して、ＲＡＭ２６０５などに出力する。また、ドライブ２６２１は、装着されている磁気ディスク、光ディスク、光磁気ディスク又は半導体メモリなどのリムーバブル記録媒体２６２７に記録を書き込むことも可能である。リムーバブル記録媒体２６２７は、例えば、ＤＶＤメディア、ＨＤ−ＤＶＤメディア又はＢｌｕ−ｒａｙ（登録商標）メディアなどである。また、リムーバブル記録媒体２６２７は、コンパクトフラッシュ（登録商標）（ＣＦ：ＣｏｍｐａｃｔＦｌａｓｈ）、フラッシュメモリ又はＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）などであってもよい。また、リムーバブル記録媒体２１２７は、例えば、非接触型ＩＣチップを搭載したＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カード又は電子機器などであってもよい。
【０１４１】
接続ポート２６２３は、情報処理システム１００に直接接続するためのポートである。接続ポート２６２３の一例として、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）ポートなどがある。接続ポート２６２３の別の例として、ＲＳ−２３２Ｃポート、光オーディオ端子、ＨＤＭＩ（登録商標）（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）ポートなどがある。接続ポート２６２３に外部接続機器２６２９を接続することで、情報処理システム１００は、外部接続機器２６２９から直接各種のデータを取得したり、外部接続機器２６２９に各種のデータを提供したりする。
【０１４２】
通信装置２６２５は、例えば、通信網（ネットワーク）２６３１に接続するための通信デバイスなどで構成された通信インターフェースである。通信装置２６２５は、例えば、有線若しくは無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）又はＷＵＳＢ（Ｗｉｒｅｌｅｓｓ  ＵＳＢ）用の通信カードなどである。また、通信装置２６２５は、光通信用のルータ、ＡＤＳＬ（Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）用のルータ又は各種通信用のモデムなどであってもよい。通信装置２６２５は、例えば、インターネットや他の通信機器との間で、例えばＴＣＰ／ＩＰなどの所定のプロトコルに則って伝送信号を送受信することができる。また、通信装置２６２５に接続される通信網２６３１は、有線又は無線によって接続されたネットワークなどにより構成され、例えば、インターネット、家庭内ＬＡＮ、赤外線通信、ラジオ波通信又は衛星通信などであってもよい。
【０１４３】
通信装置２６２５は、通信網２６３１経由で、例えばアプリケーションの開発者の端末アプリケーションのバイナリファイル１０１を受信する。また、通信装置２６２５は、ＣＰＵ２６０１において、アプリケーションのバイナリファイル１０１を解析して構築した、隔離されたアプリケーション実行環境を、通信網２６３１経由で、例えば自動機械を使用するエンドユーザの端末に送信する。
【０１４４】
以上、本実施形態に係る情報処理システム１００のハードウェア構成の一例について説明した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。したがって、本実施形態を実施する時々の技術レベルに応じて、適宜、利用するハードウェア構成を変更することが可能である。
【０１４５】
なお、上述のような本実施形態に係る情報処理システム１００の各機能を実現するためのコンピュータプログラムを作製し、パーソナルコンピュータなどに実装することが可能である。また、このようなコンピュータプログラムが格納された、コンピュータで読み取り可能な記録媒体も提供することができる。記録媒体は、例えば、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリなどである。また、上記のコンピュータプログラムは、記録媒体を用いずに、例えばネットワークを介して配信してもよい。また、当該コンピュータプログラムを実行させるコンピュータの数は特に限定されない。例えば、当該コンピュータプログラムを、複数のコンピュータ（例えば、複数のサーバなど）が互いに連携して実行してもよい。なお、単数のコンピュータ、又は複数のコンピュータが連携するものを、「コンピュータシステム」とも称する。
【産業上の利用可能性】
【０１４６】
以上、特定の実施形態を参照しながら、本明細書で開示する技術について詳細に説明してきた。しかしながら、本明細書で開示する技術の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。【０１４７】
本明細書で開示する技術は、例えばスマートフォンやタブレット、パーソナルコンピュータなどの情報端末、あるいはロボットや自動運転車、ドローンのような無人航空機といった自動機械上で実行される、第三者から提供されるアプリケーションに対して適用して、隔離されたアプリケーション実行環境を構築することができる。また、本明細書で開示する技術は、アプリケーションのバージョン変更の度に適用するようにしてもよい。【０１４８】
要するに、例示という形態により本明細書で開示する技術について説明してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本明細書で開示する技術の要旨を判断するためには、特許請求の範囲を参酌すべきである。【０１４９】
なお、本明細書の開示の技術は、以下のような構成をとることも可能である。
（１）アプリケーションのバイナリファイルからセキュリティ情報を抽出する抽出部と、
前記抽出部により抽出された前記セキュリティ情報に基づいてセキュリティ設定を生成する処理部と、
前記アプリケーションのバイナリファイルと前記セキュリティ設定を基に隔離環境を構築する構築部と、
を具備する情報処理装置。
（２）前記抽出部は、前記アプリケーションのバイナリファイルを逆アセンブルしたアセンブラプログラムから、ｐｌｔ（ｐｒｏｃｅｄｕｒｅ  ｌｉｎｋａｇｅ  ｔａｂｌｅ）セクション情報を用いて前記セキュリティ情報を抽出する、
上記（１）に記載の情報処理装置。
（３）前記抽出部は、前記アプリケーションのバイナリファイルに含まれる関数及び直接実行しているシステムコールを抽出し、抽出したシステムコールと、抽出した関数が呼び出すシステムコールをセキュリティ情報として出力する、
上記（１）又は（２）のいずれかに記載の情報処理装置。
（４）前記抽出部は、関数とシステムコールとをマッピングするシステムコール定義データベースを参照して、前記アプリケーションのバイナリファイルから抽出した関数が呼び出すシステムコールをセキュリティ情報として出力する、
上記（３）に記載の情報処理装置。
（５）前記抽出部は、前記アプリケーションのバイナリファイルからケーパビリティを必要とする処理フローを抽出して、前記処理フローに該当するケーパビリティの情報をセキュリティ情報として出力する、
上記（１）乃至（４）のいずれかに記載の情報処理装置。
（６）前記抽出部は、ケーパビリティを必要とする処理フローのバイナリコードと必要なケーパビリティの情報とをマッピングする処理フローケーパビリティ定義データベースを参照して、前記アプリケーションのバイナリファイルから抽出した処理フローに必要なケーパビリティの情報をセキュリティ情報として出力する、
上記（５）に記載の情報処理装置。
（７）前記抽出部は、前記アプリケーションのバイナリファイルから、前記アプリケーションを実行する際に使用するファイル名を抽出して、当該ファイル名及び当該ファイルへのアクセス制御の情報をセキュリティ情報として出力する、
上記（１）乃至（６）のいずれかに記載の情報処理装置。
（８）前記抽出部は、ファイルアクセス関数を定義するファイルアクセス関数定義データベースを参照して、前記アプリケーションのバイナリファイルからファイルアクセス関数のコード箇所を抽出して、ファイルアクセス関数がアクセスするファイル名及びファイルアクセス時に指定するアクセス制御の情報をセキュリティ情報として出力する、
上記（７）に記載の情報処理装置。
（９）前記抽出部は、セキュリティ設定を必要とする情報毎に、アプリケーションのバイナリファイルを解析する機能及び解析に使用するデータベースをプラグイン形式で追加するように構成される、
上記（１）乃至（８）のいずれかに記載の情報処理装置。
（１０）前記処理部は、前記抽出部による抽出結果と、前記アプリケーションに対して設定したいセキュリティを事前に定義したデータベースと組み合わせて、セキュリティ設定を生成する、
上記（１）乃至（９）のいずれかに記載の情報処理装置。
（１１）前記処理部は、アプリケーション毎に許可される処理の名称を指定して登録した許可される処理情報データベースから該当アプリケーションの許可される処理の情報を取得し、アプリケーション毎に適用するセキュリティ技術の名称を定義したセキュリティ技術情報データベースから該当アプリケーションに設定するセキュリティ技術の情報を取得し、許可される処理とセキュリティ技術の組み合わせに対して一意に特定されるセキュリティ設定情報を定義したセキュリティ設定情報データベースから、許可される処理の情報と前記セキュリティ技術の情報を指定して特定したセキュリティ許可情報を抽出して、セキュリティ設定を生成する、
上記（１０）に記載の情報処理装置。
（１２）前記処理部は、前記の各データベースの組み合わせにより抽出された前記セキュリティ許可情報を前記抽出部により前記アプリケーションのバイナリファイルから抽出された前記セキュリティ情報と比較して、両者が同じ場合は、前記アプリケーションのバイナリファイルとを前記抽出部により抽出された前記セキュリティ情報に基づいて、前記アプリケーションのセキュリティ設定を生成するが、両者が一致しない場合はエラー処理を実施する、
上記（１１）に記載の情報処理装置。
（１３）前記処理部は、前記エラー処理として、エラーとともに、前記の各データベースの組み合わせにより抽出された前記セキュリティ許可情報と前記抽出部により前記アプリケーションのバイナリファイルから抽出された前記セキュリティ情報との差分を通知する、
上記（１２）に記載の情報処理装置。
（１４）前記処理部は、新たなセキュリティ設定の生成機能をプラグイン形式で追加するように構成される、
上記（１）乃至（１３）のいずれかに記載の情報処理装置。
（１５）第１の端末から前記アプリケーションのバイナリファイルをネットワーク経由で受信し、前記アプリケーションのバイナリファイルと前記セキュリティ設定を基に構築した前記隔離環境をネットワーク経由で第２の端末に送信する、
上記（１）乃至（１４）のいずれかに記載の情報処理装置。
（１６）アプリケーションのバイナリファイルからセキュリティ情報を抽出する抽出ステップと、
前記抽出ステップにおいて抽出された前記セキュリティ情報に基づいてセキュリティ設定を生成する処理ステップと、
前記アプリケーションのバイナリファイルと前記セキュリティ設定を基に隔離環境を構築する構築ステップと、
を有する情報処理方法。
（１７）アプリケーションのバイナリファイルからセキュリティ情報を抽出する抽出部、
前記抽出部により抽出された前記セキュリティ情報に基づいてセキュリティ設定を生成する処理部、
前記アプリケーションのバイナリファイルと前記セキュリティ設定を基に隔離環境を構築する構築部、
としてコンピュータを機能させるようにコンピュータ可読形式で記述されたコンピュータプログラム。
【符号の説明】
【０１５０】
１００…情報処理システム、１１０…セキュリティルール抽出部
１２０…セキュリティルール処理部
１２１…許可される処理情報データベース
１２２…セキュリティ技術情報データベース
１２３…セキュリティ設定情報データベース
１３０…隔離環境構築部
２００…システムコール解析機能部
２０１…システムコール定義データベース
５００…ケーパビリティ解析機能部
５０１…処理フローケーパビリティ定義データベース
８００…ＡＣＬ解析機能部
８０１…ファイルアクセス関数定義データベース
２６００…情報処理装置、２６０１…ＣＰＵ、２６０３…ＲＯＭ
２６０５…ＲＡＭ、２６０７…ホストバス、２６０９…ブリッジ
２６１１…外部バス、２６１３…インターフェース
２６１５…入力装置、２６１７…出力装置、２６１９…ストレージ装置
２６２１…ドライブ、２６２３…接続ポート、２６２５…通信装置
【図１】
2019150699.tif 000003
【図２】
2019150699.tif 000004
【図３】
2019150699.tif 000005
【図４】
2019150699.tif 000006
【図５】
2019150699.tif 000007
【図６】
2019150699.tif 000008
【図７】
2019150699.tif 000009
【図８】
2019150699.tif 000010
【図９】
2019150699.tif 000011
【図１０】
2019150699.tif 000012
【図１１】
2019150699.tif 000013
【図１２】
2019150699.tif 000014
【図１３】
2019150699.tif 000015
【図１４】
2019150699.tif 000016
【図１５】
2019150699.tif 000017
【図１６】
2019150699.tif 000018
【図１７】
2019150699.tif 000019
【図１８】
2019150699.tif 000020
【図１９】
2019150699.tif 000021
【図２０】
2019150699.tif 000022
【図２１】
2019150699.tif 000023
【図２２】
2019150699.tif 000024
【図２３】
2019150699.tif 000025
【図２４】
2019150699.tif 000026
【図２５】
2019150699.tif 000027
【図２６】
2019150699.tif 000028
【国際調査報告】
2019150699.tif 000029
2019150699.tif 000030
2019150699.tif 000031
2019150699.tif 000032