(57)【特許請求の範囲】
【請求項１】
プログラムのソースコードから通信関連のメソッドの呼び出し順序を抽出する抽出部と、
前記メソッドのそれぞれの引数に対する設定値を前記ソースコードから抽出し、抽出された設定値を前記呼び出し順序に基づいて配列した特徴情報を生成する生成部と、
を有することを特徴とする通信特徴抽出装置。
【請求項２】
前記抽出部は、
前記プログラムのソースコードにおいて呼び出されているメソッドごとに呼び出し順序の前後関係を前記ソースコードから抽出する第１の抽出部と、
通信関連のメソッドを示す情報に基づいて、前記前後関係から前記通信関連のメソッドの呼び出し順序を抽出する第２の抽出部とを含む、
ことを特徴とする請求項１記載の通信特徴抽出装置。
【請求項３】
前記生成部は、前記抽出部によって抽出されたメソッドごとに、前記前後関係に基づいて、前記ソースコードにおける当該メソッドの呼び出し箇所を特定し、当該呼び出し箇所において当該メソッドの引数に指定されている変数の代入元を辿ることで、当該引数に対する設定値を特定する、
ことを特徴とする請求項２記載の通信特徴抽出装置。
【請求項４】
請求項１乃至３いずれか一項記載の通信特徴抽出装置によって抽出された前記特徴情報に基づいて、パケットのキャプチャデータの中から前記プログラムに関するパケットを分類する分類部を有する、
ことを特徴とするパケット分類装置。
【請求項５】
コンピュータが、
プログラムのソースコードから通信関連のメソッドの呼び出し順序を抽出する抽出手順と、
前記メソッドのそれぞれの引数に対する設定値を前記ソースコードから抽出し、抽出された設定値を前記呼び出し順序に基づいて配列した特徴情報を生成する生成手順と、
を実行することを特徴とする通信特徴抽出方法。
【請求項６】
請求項１乃至３いずれか一項記載の通信特徴抽出装置によって抽出された前記特徴情報に基づいて、パケットのキャプチャデータの中から前記プログラムに関するパケットを分類する手順をコンピュータが実行することを特徴とするパケット分類方法。
【請求項７】
請求項１乃至３いずれか一項記載の各部としてコンピュータを機能させるためのプログラム。
【請求項８】
請求項４記載の分類部としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信特徴抽出装置、パケット分類装置、通信特徴抽出方法、パケット分類方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、モバイルネットワーク事業者が，自身のネットワークを流れるパケットをアプリケーションごとに分離するための特徴を抽出するための技術が検討されている。例えば、非特許文献１では、スマートフォンアプリケーションに含まれる広告のリクエストに付随するＩＤなどの特徴的な文字列を通信の特徴として、ネットワーク内でどのようなアプリケーションが動作しているかをパケットキャプチャ結果から抽出する手法が提案されている（以下、「従来技術Ａ」という。）。
【０００３】
また、スマートフォン内でアプリケーション毎に分類してパケットをキャプチャするアプリケーションが公開されており、これを用いることで、アプリケーションごとのパケットの宛先ＩＰアドレスを特定できる。このようにして収集された宛先ＩＰアドレスを用いることで、ネットワーク内でキャプチャされたパケットをアプリケーションごとに分類することができる（以下、「従来技術Ｂ」という。）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Shuaifu Dai, Alok Tongaonkar, Xiaoyin Wang, Antonio Nucci, and Dawn Song,"NetworkProfiler: Towards Automatic Fingerprinting of Android Apps," 2013 Proceedings IEEE INFOCOM.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術Ａは、アプリケーションの動作の有無を特定するための技術であり、複数のアプリケーションから送信されるパケットが混在するパケットキャプチャ結果をアプリケーションごとに分類するための特徴を抽出することはできない。
【０００６】
また、従来技術Ｂでは、複数のアプリケーションが共通のサーバと通信する場合、宛先のサーバのＩＰアドレスに基づいてパケットキャプチャ結果をアプリケーションごとに分類するのは困難である。
【０００７】
本発明は、上記の点に鑑みてなされたものであって、パケットキャプチャ結果をアプリケーションごとに分類可能とすることを目的とする。
【課題を解決するための手段】
【０００８】
そこで上記課題を解決するため、通信特徴抽出装置は、プログラムのソースコードから通信関連のメソッドの呼び出し順序を抽出する抽出部と、前記メソッドのそれぞれの引数に対する設定値を前記ソースコードから抽出し、抽出された設定値を前記呼び出し順序に基づいて配列した特徴情報を生成する生成部と、を有する。
【発明の効果】
【０００９】
パケットキャプチャ結果をアプリケーションごとに分類可能とすることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態における特徴抽出装置の概要を説明するための図である。
【図２】本発明の実施の形態における特徴抽出装置のハードウェア構成例を示す図である。
【図３】本発明の実施の形態における特徴抽出装置の機能構成例を示す図である。
【図４】特徴情報の抽出処理の一例を説明するためのフローチャートである。
【図５】呼び出し順序グラフの生成方法の一例を説明するための図である。
【図６】前後関係が特定される記述の第１の例を示す図である。
【図７】前後関係が特定される記述の第２の例を示す図である。
【図８】前後関係が特定される記述の第３の例を示す図である。
【図９】前後関係が特定される記述の第４の例を示す図である。
【図１０】部分グラフの生成方法の一例を説明するための図である。
【図１１】部分グラフへの通信内容の反映方法の一例を示す図である。
【図１２】特徴情報に基づくパケットの分類方法を説明するための図である。
【図１３】類似度の算出方法の一例を示す図である。
【図１４】類似度の算出結果の一例を示す図である。
【図１５】類似度の組み合わせの一例を示す図である。
【図１６】従来技術Ａと本実施の形態との比較を説明するための図である。
【図１７】従来技術Ｂと本実施の形態との比較を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態における特徴抽出装置の概要を説明するための図である。図１に示されるように、特徴抽出装置１０は、アプリα、アプリβ等のアプリケーションのバイナリファイルを解析して、アプリα、アプリβ等のアプリケーションごとに、それぞれの通信の特徴（通信の内容と、それらの順番）とを抽出することで、各アプリケーションの通信の特徴を示す情報（以下、「特徴情報」という。）を生成する。
【００１２】
図２は、本発明の実施の形態における特徴抽出装置のハードウェア構成例を示す図である。図２の特徴抽出装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、及びインタフェース装置１０５等を有する。
【００１３】
特徴抽出装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１４】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って特徴抽出装置１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００１５】
なお、特徴抽出装置１０は、例えば、図２に示されハードウェアを有する複数のコンピュータによって実現されてもよい。
【００１６】
図３は、本発明の実施の形態における特徴抽出装置の機能構成例を示す図である。図３において、特徴抽出装置１０は、バイナリファイル読込部１１、ソースコード生成部１２、順序情報生成部１３、部分グラフ生成部１４、通信内容反映部１５、及びパケット分類部１６等を有する。これら各部は、特徴抽出装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。特徴抽出装置１０は、また、通信関連メソッド一覧記憶部１７及び特徴情報記憶部１８等を利用する。これら各記憶部は、例えば、補助記憶装置１０２、又は特徴抽出装置１０にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【００１７】
バイナリファイル読込部１１は、解析対象のアプリケーションのバイナリファイルを読み込む。本実施の形態において、アプリケーションは、Ａｎｄｒｏｉｄ（登録商標）アプリケーションであるとする。したがって、バイナリファイル読込部１１は、ＡＰＫファイルを読み込む。
【００１８】
ソースコード生成部１２は、バイナリファイル読込部１１によって読み込まれたＡＰＫファイルからソースコードを生成する。
【００１９】
順序情報生成部１３は、ソースコード生成部１２によって生成されたソースコードにおいて呼び出されているメソッドの呼び出し順序の前後関係を示す情報を生成する。当該情報として、メソッドの呼び出し順序を表すグラフ（以下、「呼び出し順序グラフ」という。）が生成される。
【００２０】
部分グラフ生成部１４は、呼び出し順序グラフから、通信に関連するメソッド（以下、「通信関連メソッド」という。）に関する部分を抽出した部分グラフを生成する。各メソッドが通信関連メソッドに該当するか否かは、通信関連メソッド一覧記憶部１７を参照して判定可能である。通信関連メソッド一覧記憶部１７には、通信関連メソッドのメソッド名の一覧が記憶されている。
【００２１】
通信内容反映部１５は、部分グラフに含まれる通信関連メソッドの引数に対する設定値をソースコードから抽出し、当該設定値を通信の内容として、部分グラフに反映することで、解析対象のアプリケーションの通信の内容と通信の順序を表すグラフ構造を特徴情報として生成する。したがって、特徴情報は、通信関連メソッドの引数に対する設定値が、通信関連メソッドの呼び出し順序に基づいて配列された情報である。通信内容反映部１５は、生成した特徴情報を、特徴情報記憶部１８に記憶する。
【００２２】
パケット分類部１６は、特徴情報記憶部１８に記憶された特徴情報に基づいて、パケットのキャプチャ結果を分類する。
【００２３】
以下、特徴抽出装置１０が実行する処理手順について説明する。図４は、特徴情報の抽出処理の一例を説明するためのフローチャートである。
【００２４】
ステップＳ１０１において、バイナリファイル読込部１１は、解析対象のアプリケーション（以下、「対象アプリ」という。）のバイナリファイルを読み込む。対象アプリのバイナリアプリは、例えば、ＧｏｏｇｌｅＰｌａｙ（登録商標）等からダウンロードされてもよい。
【００２５】
続いて、ソースコード生成部１２は、対象アプリのバイナリファイルに基づいて、対象アプリのソースコードを生成する（ステップＳ１０２）。ソースコードの生成は、例えば、リバースエンジニアリングを用いて行われてもよい。リバースエンジニアリングには、Ｓｏｏｔ（http://sable.github.io/soot/）のような解析ツールが利用されてもよい。なお、当初から対象アプリのソースコードを入手可能であれば、ステップＳ１０１において、当該ソースコードが取得されてもよい。この場合、ステップＳ１０２は実行されなくてよい。
【００２６】
続いて、順序情報生成部１３は、対象アプリのソースコードからメソッドを抽出し、抽出されたメソッドの呼び出し順序を示す呼び出し順序グラフを生成する（ステップＳ１０３）。
【００２７】
図５は、呼び出し順序グラフの生成方法の一例を説明するための図である。図５には、対象アプリを構成するクラスＡ（Ｃｌａｓｓ  Ａ）のソースコードを表現する矩形が示されている。順序情報生成部１３は、ソースコードの先頭から順に、各記述（各行）を読み込み、メソッド内に別のメソッドの呼び出し等、メソッド間の前後関係が分かる記述を発見又は検出すると、当該記述に係る２つのメソッド間の前後関係を、呼び出し順序グラフＧ１として記録する。
【００２８】
図５に示されるように、呼び出し順序グラフＧ１は、呼び出し順の前後関係を構成する２つのメソッドごとにレコードを含む。各レコードは、「前」及び「後」の項目を含む。「前」には、前後関係において前に位置するメソッドのメソッド名が記録される。「後」には、前後関係において後に位置するメソッドのメソッド名が記録される。
【００２９】
図６は、前後関係が特定される記述の第１の例を示す図である。図６は、２つのメソッド間に明確な呼び出し関係が有る場合を示す。図６に示されるように、メソッドａ内からメソッドｂを呼び出している場合、ａ→ｂのメソッド間の前後関係が特定される。
【００３０】
図７は、前後関係が特定される記述の第２の例を示す図である。図７は、Ｉｎｔｅｎｔを使った呼び出し関係が有る場合を示す。Ａｎｄｒｏｉｄ（登録商標）では、Ｉｎｔｅｎｔを用いてＡｃｔｉｖｉｔｙ（画面）の遷移が行われるため、Ｉｎｔｅｎｔが使われている箇所を発見し、Ｉｎｔｅｎｔの引数に設定されているクラス名から、次のクラスのメソッドを特定することができる。図７では、次のクラスのメソッドとしてＣｌａｓｓ  ＢのメソッドｏｎＣｒｅａｔｅが特定され、ａ→ｏｎＣｒｅａｔｅの前後関係が特定された例が示されている。なお、ＩｎｔｅｎｔでＡｃｔｉｖｉｔｙが指定されている場合、次のメソッドはｏｎＣｒｅａｔｅとなることは予め決まっている。
【００３１】
図８は、前後関係が特定される記述の第３の例を示す図である。図８は、ＡｃｔｉｖｉｔｙやＡｓｙｎｃＴａｓｋ等、ライフサイクルが指定されている場合を示す。すなわち、Ａｎｄｒｏｉｄ（登録商標）では、ＡｃｔｉｖｉｔｙやＡｓｙｎｃＴａｓｋを継承したクラス内のメソッドは、予め決まった実行順序で呼び出されるため（例えば、ｏｎＣｒｅａｔｅ→ｏｎＳｔａｒｔ等）、その順序で前後関係を特定することができる。
【００３２】
図９は、前後関係が特定される記述の第４の例を示す図である。図９は、イベントリスナが有る場合を示す。ユーザの操作などをきっかけに実行されるメソッドが指定されている場合、イベントとの紐付けが行われるメソッドと、イベントの発生によって実行されるメソッドとの間に前後関係が有るため、ｓｅｔＯｎ＊＊＊Ｌｉｓｔｅｎｅｒ→ｏｎ＊＊＊のメソッド間の前後関係を特定することができる。なお、「＊＊＊」には、実際には「Ｃｌｉｃｋ」等のイベント名が入る。
【００３３】
続いて、部分グラフ生成部１４は、呼び出し順序グラフＧ１から通信関連メソッドの呼び出し順序を抽出して、通信関連メソッドの呼び出し順序を示す部分グラフを生成する（ステップＳ１０４）。
【００３４】
図１０は、部分グラフの生成方法の一例を説明するための図である。まず、部分グラフ生成部１４は、呼び出し順序グラフＧ１において、先頭のメソッドを特定する。先頭のメソッドは、呼び出し順序グラフＧ１のいずれのレコードにおいても、「次」の項目にそのメソッド名が記録されていない「前」の項目のメソッドである。図１０では、２番目のレコードの「前」のメソッドが先頭のメソッドとして特定された例が示されている。
【００３５】
続いて、部分グラフ生成部１４は、先頭メソッドを起点として、呼び出し順序グラフＧ１を順方向に辿る。すなわち、先頭メソッドのレコードの「次」のメソッドを特定し、当該メソッドを「前」に含むレコードを特定し、当該レコードの「次」メソッドを特定し、といったように、メソッドが呼び出し順に辿られる。図１０では、辿られる順序が破線によって示されている。部分グラフ生成部１４は、呼び出し順にメソッドを辿る過程において、辿られた順に、各メソッドのメソッド名を、通信関連メソッド一覧記憶部１７に記憶されている通信関連メソッド一覧Ｌ１と照合して、当該メソッドが通信関連メソッドであるか否かを判定する。当該メソッドが通信関連メソッドであれば、当該メソッドを、部分グラフＧ２の末尾に追加する。
【００３６】
なお、分岐が有る場合は、分岐の一方の順序を辿り、当該一方の順序において末尾のメソッドに到達したら、当該分岐に戻って他方の順序を辿る。ここでの「分岐」は、１つのメソッドの後に複数のメソッドが呼び出されている状況をいう。分岐において、部分グラフ生成部１４は、ソースコード内での出現順に分岐先を辿る。図１０では、Ｃｌａｓｓ  Ｂ  Ｍｅｔｈｏｄ  ｂにおいて、Ｃｌａｓｓ  Ｂ  Ｍｅｔｈｏｄ  ｂｂが先に出現する例が示されている。
【００３７】
続いて、通信内容反映部１５は、部分グラフＧ２に含まれるメソッドの引数の設定値をソースコードから特定し、当該設定値を通信内容として部分グラフＧ２に反映することで、対象アプリの通信内容と通信の順序を表す特徴情報を生成する（ステップＳ１０５）。
【００３８】
図１１は、部分グラフへの通信内容の反映方法の一例を示す図である。図１１では、図１０の部分グラフＧ２において先頭のメソッドであるメソッドｍ１についての通信内容の反映方法が示されている。
【００３９】
通信内容反映部１５は、まず、呼び出し順序グラフＧ１において、メソッドｍ１が「次」であるレコードを特定し、当該レコードの「前」のメソッドを特定する（Ｓ１０５−１〜Ｓ１０５−３）。すなわち、メソッドｍ１の呼び出し元の箇所に該当する記述ｄ１が特定される。続いて、通信内容反映部１５は、記述ｄ１において、メソッドｍ１の引数に設定されている値を特定する（Ｓ１０５−４）。引数が変数である場合には、変数への代入元（代入箇所）を具体的な値が特定されるまで辿ることで、当該引数の値が特定される。但し、代入されている値がソースコード内に文字列として定義されている場合等、具体的な値が特定できる範囲で特定が行われればよい。例えば、ファイルから読み込まれた文字列が代入される場合や、動的に文字列が生成される場合等のように、引数が複雑な処理によって決まる場合には、引数の値は特定されなくてもよい。
【００４０】
図１１の例では、記述ｄ１において、ｂメソッドに対する引数は、変数ｕである。変数ｕの代入元を辿ると、変数ｕの値は、「User-Agent: abc"」という文字列であることが特定される。
【００４１】
通信内容反映部１５は、メソッドｍ１の引数について特定された値を、部分グラフＧ２において、メソッドｍ１の位置（ノード）に適用（反映）する（Ｓ１０５−５）。
【００４２】
なお、図１１では、部分グラフＧ２のそれぞれの通信関連メソッドが、それぞれの引数の値によって置換された部分グラフが、特徴情報Ｇ２'として示されている。特徴情報Ｇ２'が、対象アプリによる通信の特徴（各通信の内容と、それらの順番）を示す情報である。特徴情報Ｇ２'は、対象アプリの識別情報に関連付けられて特徴情報記憶部１８に記憶される。
【００４３】
次に、特徴情報Ｇ２'を用いた、パケットの分類方法について説明する。
【００４４】
図１２は、特徴情報に基づくパケットの分類方法を説明するための図である。図１２には、対象アプリから抽出された特徴情報Ｇ２'と、ネットワーク上におけるパケットのキャプチャデータＤ１〜Ｄ５等とが示されている。なお、特徴情報Ｇ２'は、通信内容ｎ１〜ｎ３を含む。
【００４５】
パケット分類部１６は、特徴情報Ｇ２'の通信内容ｎ１〜ｎ３と、キャプチャデータＤ１〜Ｄ５との組み合わせごとに、類似度を算出する。なお、特徴情報Ｇ２'において先頭の通信内容ｎ１については、全てのキャプチャデータとの組み合わせについて類似度が算出される。先頭以外の通信内容ｎ２又はｎ３については、当該通信内容の一つ前の通信内容と組み合わされたキャプチャデータのうち、先頭のキャプチャデータを除くキャプチャデータとの組み合わせについて類似度が算出される。したがって、図１２では、矢印によって接続された組み合わせごとに類似度が算出される。
【００４６】
図１３は、類似度の算出方法の一例を示す図である。図１３では、通信内容ｎ１とキャプチャデータＤ１との類似度の算出例が示されている。
【００４７】
まず、パケット分類部１６は、通信内容ｎ１とキャプチャデータＤ１とのそれぞれを、「：」、「  」（スペース）、「／」、「；」等をデリミタとして分割する。
【００４８】
続いて、パケット分類部１６は、以下の式に基づいて、通信内容ｎ１とキャプチャデータＤ１との類似度を算出する。
類似度＝双方で一致する文字列数÷キャプチャデータのパケットに含まれる文字列数
ここで、「文字列」とは、分割された単位での文字列をいう。図１３において、通信内容ｎ１の分割後の文字列群ｓｎ１と、キャプチャデータＤ１の分割後の文字列群ｓＤ１との間で、一致する文字列の数は、２である。すなわち、文字列群ｓＤ１において破線で囲まれた２つの文字列が、文字列群ｓｎ１に含まれるいずれかの文字列に一致する。また、文字列群ｓＤ１の文字列数は２０である。したがって、この場合の類似度は、２÷２０＝０．１となる。
【００４９】
図１４は、類似度の算出結果の一例を示す図である。図１４では、通信内容ｎ１〜ｎ３と、キャプチャデータＤ１〜Ｄ５との間の類似度の算出結果が示されている。
【００５０】
続いて、パケット分類部１６は、通信内容ｎ１、ｎ２、及びｎ３のそれぞれについて算出された類似度の集合から一つずつ類似度を選択することで得られる３つの類似度の組み合わせごとに、類似度の平均値を求める。但し、或る組み合わせにおいて、２番目以降の通信内容について選択される類似度は、当該通信内容の一つ前の通信内容について選択された類似度に係るパケットデータよりも後のパケットデータとの類似度に限られる。
【００５１】
図１５は、類似度の組み合わせの一例を示す図である。図１５には、各ノードにキャプチャデータの符号が付与されたツリー構造が示されている。最上位のノードは、通信内容ｎ１と当該ノードの符号に係るキャプチャデータとの類似度に対応する。２階層目のノードは、通信内容ｎ２と当該ノードの符号に係るキャプチャデータとの類似度に対応する。最下位のノードは、通信内容ｎ３と当該ノードの符号に係るキャプチャデータとの類似度に対応する。
【００５２】
図１４からは、図１５に示される１０通りの類似度の組み合わせが生成され、各組み合わせについて類似度の平均値が算出される。パケット分類部１６は、当該平均値が閾値以上である組み合わせに係るキャプチャデータのパケットを、対象アプリのパケットとして分類する。
【００５３】
例えば、閾値が０．１５であれば、図１５において「Ｄ１−Ｄ４−Ｄ５」の組み合わせの平均値が０．１６７であるため、当該組み合わせに係るキャプチャデータＤ１、Ｄ４、及びＤ５のパケットが、対象アプリのパケットとして分類される。
【００５４】
なお、仮に、平均値の最大値の組み合わせに係るキャプチャデータが対象アプリのパケットとして分類された場合、実際には対象アプリの通信に係るパケットではないパケットについても対象アプリのパケットとして分類される可能性が高くなるため、本実施の形態では、閾値に基づいて判定が行われている。
【００５５】
また、キャプチャデータ内の複数箇所に、対象アプリのパケットが検出されてもよい。一方、キャプチャデータ内の特定箇所のパケットが、複数のアプリケーションのパケットと判定された場合は、類似度の高いアプリケーションのパケットであると判定されてもよし、人が見て決めてもよい。
【００５６】
上述したように、本実施の形態によれば、複数のアプリケーションのパケットが混在するパケットキャプチャ結果をアプリケーションごとに分類するための特徴（特徴情報）を、アプリケーションから抽出することができる。特徴情報を利用してアプリケーションごとのパケットの分類ができるようになると、モバイルネットワーク事業者が、自身が提供するネットワークにおいて、どのようなアプリケーションがどの程度のトラフィックを生成しているかを特定でき、輻輳の原因となるアプリケーションを特定できる。これにより、この様なアプリケーションの作成者に対して是正を促すことで、ネットワークの輻輳を抑えることができる。また、アプリケーションごとのトラフィック制御に必要な情報（ＩＰアドレス、ポート番号、特徴的な文字列）を分類後のパケットから抽出することで、当該トラヒック制御が可能となる。
【００５７】
なお、図１６は、従来技術Ａと本実施の形態との比較を説明するための図である従来技術Ａでは、アプリＡの広告の特徴的な文字列を含むパケット２のみを抽出可能であるが、本実施の形態によれば、アプリＡの通信の特徴に類似したパケット群を、その順序も含めて抽出することができる。
【００５８】
また、図１７は、従来技術Ｂと本実施の形態との比較を説明するための図である。従来技術Ｂでは、パケット１〜パケット５までの宛先が同じである場合、各パケットをアプリケーションごとに分類することができないが、本実施の形態によれば、宛先ではなく、通信に含まれる文字列と順序が各アプリケーションの特徴情報に類似している部分が抽出されるため、各パケットをアプリケーションごとに分類することができる。
【００５９】
なお、本実施の形態では、Ａｎｄｒｏｉｄ（登録商標）アプリケーションについて説明したが、他のアプリケーションに関して本実施の形態が適用されてもよい。この場合は、当該他のアプリケーションの開発言語等に対応させて、メソッドの前後関係の特定方法等が適宜変更されてもよい。また、アプリケーション以外のプログラムについて本実施の形態が適用されてもよい。
【００６０】
また、本実施の形態では、特徴抽出装置１０がキャプチャデータのパケットの分類を実行する例を示したが、特徴情報を抽出する装置とパケットの分類を行う装置とは、別々であってもよい。
【００６１】
なお、本実施の形態において、特徴抽出装置１０は、通信特徴抽出装置及びパケット分類装置の一例である。順序情報生成部１３及び部分グラフ生成部１４は、抽出部の一例である。順序情報生成部１３は、第１の抽出部の一例である。部分グラフ生成部１４は、第２の抽出部の一例である。通信内容反映部１５は、生成部の一例である。パケット分類部１６は、分類部の一例である。
【００６２】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００６３】
１０          特徴抽出装置
１１          バイナリファイル読込部
１２          ソースコード生成部
１３          順序情報生成部
１４          部分グラフ生成部
１５          通信内容反映部
１６          パケット分類部
１７          通信関連メソッド一覧記憶部
１８          特徴情報記憶部
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
Ｂ            バス
【図１】
0006412849.tif 000002
【図２】
0006412849.tif 000003
【図３】
0006412849.tif 000004
【図４】
0006412849.tif 000005
【図５】
0006412849.tif 000006
【図６】
0006412849.tif 000007
【図７】
0006412849.tif 000008
【図８】
0006412849.tif 000009
【図９】
0006412849.tif 000010
【図１０】
0006412849.tif 000011
【図１１】
0006412849.tif 000012
【図１２】
0006412849.tif 000013
【図１３】
0006412849.tif 000014
【図１４】
0006412849.tif 000015
【図１５】
0006412849.tif 000016
【図１６】
0006412849.tif 000017
【図１７】
0006412849.tif 000018