(57)【特許請求の範囲】
【請求項１】
到着した複数のパケットのうち、固定周期で送信された一連のパケットを到着周期が同じパケット群として分類する分類部と、
前記到着周期が同じパケット群ごとにパケットフォーマットを推定する推定部と
を備えるパケットフォーマット推定装置。
【請求項２】
前記複数のパケットのうち少なくとも一部のパケットに含まれる各パケットの同じ箇所から、同じ長さを持つデータを抽出し、抽出したデータの値を、各パケットの到着時刻に対応する振幅として示す第１時系列データを生成する生成部と、
前記生成部により生成された第１時系列データの周波数変換を行って第１周波数スペクトルを出力する変換部と、
前記変換部より出力された第１周波数スペクトルから前記固定周期に相当する周波数成分を抽出して第２周波数スペクトルを出力する抽出部と、
前記抽出部より出力された第２周波数スペクトルの周波数逆変換を行って第２時系列データを出力する逆変換部と
をさらに備え、
前記分類部は、前記逆変換部より出力された第２時系列データを参照して前記一連のパケットを識別する請求項１に記載のパケットフォーマット推定装置。
【請求項３】
前記変換部より出力された第１周波数スペクトルに含まれる、前記固定周期に相当する周波数成分が基準値よりも小さい場合、前記少なくとも一部のパケットに含まれる各パケットの、前記生成部によりデータが抽出される箇所を変更する変更部をさらに備える請求項２に記載のパケットフォーマット推定装置。
【請求項４】
前記生成部は、前記複数のパケットのうちいずれかのパケットをサンプルとして選択し、前記複数のパケットのうち、前記サンプルの値から設定範囲内の値を持つパケットを前記少なくとも一部のパケットとして利用する請求項２または３に記載のパケットフォーマット推定装置。
【請求項５】
前記生成部は、前記複数のパケットのうちいずれかのパケットをサンプルとして選択し、前記複数のパケットのうち、前記サンプルとのハミング距離が設定範囲内のパケットを前記少なくとも一部のパケットとして利用する請求項２または３に記載のパケットフォーマット推定装置。
【請求項６】
前記複数のパケットのうちいずれかのパケットをサンプルとして選択し、前記複数のパケットのうち少なくとも一部のパケットに含まれる各パケットと前記サンプルとのハミング距離を計算し、計算したハミング距離を、各パケットの到着時刻に対応する振幅として示す第１時系列データを生成する生成部と、
前記生成部により生成された第１時系列データの周波数変換を行って第１周波数スペクトルを出力する変換部と、
前記変換部より出力された第１周波数スペクトルから前記固定周期に相当する周波数成分を抽出して第２周波数スペクトルを出力する抽出部と、
前記抽出部より出力された第２周波数スペクトルの周波数逆変換を行って第２時系列データを出力する逆変換部と
をさらに備え、
前記分類部は、前記逆変換部より出力された第２時系列データを参照して前記一連のパケットを識別する請求項１に記載のパケットフォーマット推定装置。
【請求項７】
前記変換部より出力された第１周波数スペクトルに含まれる、前記固定周期に相当する周波数成分が基準値よりも小さい場合、前記生成部により計算される値を、前記少なくとも一部のパケットに含まれる各パケットと前記サンプルとのハミング距離を各パケットに共通の値から差し引いた値に変更する変更部をさらに備える請求項６に記載のパケットフォーマット推定装置。
【請求項８】
前記複数のパケットのうちいずれかのパケットをサンプルとして選択し、前記複数のパケットのうち少なくとも一部のパケットに含まれる各パケットと前記サンプルとのハミング距離を各パケットに共通の値から差し引いた値を計算し、計算した値を、各パケットの到着時刻に対応する振幅として示す第１時系列データを生成する生成部と、
前記生成部により生成された第１時系列データの周波数変換を行って第１周波数スペクトルを出力する変換部と、
前記変換部より出力された第１周波数スペクトルから前記固定周期に相当する周波数成分を抽出して第２周波数スペクトルを出力する抽出部と、
前記抽出部より出力された第２周波数スペクトルの周波数逆変換を行って第２時系列データを出力する逆変換部と
をさらに備え、
前記分類部は、前記逆変換部より出力された第２時系列データを参照して前記一連のパケットを識別する請求項１に記載のパケットフォーマット推定装置。
【請求項９】
前記変換部より出力された第１周波数スペクトルに含まれる、前記固定周期に相当する周波数成分が基準値よりも小さい場合、前記生成部により計算される値を、前記少なくとも一部のパケットに含まれる各パケットと前記サンプルとのハミング距離に変更する変更部をさらに備える請求項８に記載のパケットフォーマット推定装置。
【請求項１０】
コンピュータに、
到着した複数のパケットのうち、固定周期で送信された一連のパケットを到着周期が同じパケット群として分類する処理と、
前記到着周期が同じパケット群ごとにパケットフォーマットを推定する処理と
を実行させるパケットフォーマット推定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットフォーマット推定装置およびパケットフォーマット推定プログラムに関するものである。
【背景技術】
【０００２】
サイバー攻撃が多様化するなか、工場または発電所等の制御システムが攻撃対象として狙われている。制御システム同士をつなげて構築する制御システムネットワークは、通信のリアルタイム性と、信頼性および即応性とに特化したネットワークである。制御対象装置が制御される際には、制御対象装置に取り付けられたセンサから物理値が一定周期でフィードバックされて、操作の命令がネットワーク経由で行われる。そのため、制御システムネットワーク内には、一定期間ごとに同じ目的のパケットが流れる。【０００３】
非特許文献１には、パケットフォーマット推定の技術が記載されている。「パケットフォーマット推定」とは、データフォーマットが未知なパケットのデータセットを入力として受け、統計解析処理を主な処理として行い、推定したパケットフォーマットを出力する技術のことである。ここでいう「パケットフォーマット」とは、パケットデータの文法のことであり、データの意味づけまでは対象としない。パケットデータの文法としては、主に、データの切れ目と、データが文字、数字およびバイナリのいずれであるかがプロトコルによって規定される。【０００４】
非特許文献１には、具体的には、未知のパケットデータに対してバイト単位で頻度分析を行い、頻度の高い複数のバイトのかたまりを、遷移確率付きの状態遷移図で表現することによって、パケットフォーマット推定を行う技術が記載されている。【０００５】
特許文献１には、フルキャプチャしたトラフィックに対して、ランダムパケットサンプリングを行って得られたフローの特徴量を計算する処理を複数回繰り返した後、得られた全フローと、フローごとに識別されたプロトコルとを対応付けて分類器を生成する技術が記載されている。【０００６】
特許文献２には、ネットワークにおけるトラヒック量の変動の周期性の有無を判別する技術が記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−２０５１０５号公報
【特許文献２】特開２０１０−２８３６６８号公報
【非特許文献】
【０００８】
【非特許文献１】Ｗａｎｇ  ｅｔ  ａｌ．，  “Ｂｉｐｒｏｍｉｎｅｒ：  Ａｕｔｏｍａｔｉｃ  Ｍｉｎｉｎｇ  ｏｆ  Ｂｉｎａｒｙ  Ｐｒｏｔｏｃｏｌ  Ｆｅａｔｕｒｅｓ”，  ＩＥＥＥ  ＰＤＣＡＴ  ２０１１，  Ｏｃｔｏｂｅｒ  ２０１１
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来のパケットフォーマット推定の技術では、統計解析処理が繰り返し行われる。そのため、フォーマット推定に時間がかかる。【００１０】
本発明は、パケットフォーマット推定を高速化することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一態様に係るパケットフォーマット推定装置は、
到着した複数のパケットのうち、固定周期で送信された一連のパケットを到着周期が同じパケット群として分類する分類部と、
前記到着周期が同じパケット群ごとにパケットフォーマットを推定する推定部とを備える。
【発明の効果】
【００１２】
本発明では、パケットを通信周期によって分類することで、パケットフォーマット推定を高速化することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に係るパケットフォーマット推定装置の構成を示すブロック図。
【図２】実施の形態１に係るパケットフォーマット推定装置の動作を示すフローチャート。
【図３】図２に示したステップＳ１０１の処理の例を示す図。
【図４】図２に示したステップＳ１０２からステップＳ１０４の処理の例を示す図。
【図５】図２に示したステップＳ１０５の処理の例を示す図。
【図６】実施の形態１に係るパケットフォーマットの例を示す図。
【図７】実施の形態２に係るパケットフォーマット推定装置の構成を示すブロック図。
【図８】実施の形態２に係るパケットフォーマット推定装置の動作を示すフローチャート。
【図９】図９に示したステップＳ２０３の処理の例を示す図。
【図１０】実施の形態３に係るパケットフォーマット推定装置の動作を示すフローチャート。
【図１１】実施の形態５に係るパケットフォーマット推定装置の動作を示すフローチャート。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、図を用いて説明する。各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。なお、本発明は、以下に説明する実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。例えば、以下に説明する実施の形態のうち、２つ以上の実施の形態が組み合わせられて実施されても構わない。あるいは、以下に説明する実施の形態のうち、１つの実施の形態または２つ以上の実施の形態の組み合わせが部分的に実施されても構わない。
【００１５】
実施の形態１．
本実施の形態について、図１から図６を用いて説明する。
【００１６】
＊＊＊構成の説明＊＊＊
図１を参照して、本実施の形態に係るパケットフォーマット推定装置１０の構成を説明する。
【００１７】
パケットフォーマット推定装置１０は、コンピュータである。パケットフォーマット推定装置１０は、プロセッサ１１を備えるとともに、メモリ１２、入力インタフェース１３、補助記憶装置１４および表示器インタフェース１５といった他のハードウェアを備える。プロセッサ１１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１８】
パケットフォーマット推定装置１０は、パケットフォーマット推定を行うための機能要素として、生成部２２と、変換部２３と、抽出部２４と、逆変換部２５と、分類部２６と、推定部２７とを備える。生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６および推定部２７の機能は、ソフトウェアにより実現される。
【００１９】
プロセッサ１１は、パケットフォーマット推定等の演算処理を行うＩＣである。「ＩＣ」は、Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。プロセッサ１１は、例えば、ＣＰＵである。「ＣＰＵ」は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略語である。
【００２０】
メモリ１２は、演算結果等を保持する媒体である。メモリ１２は、例えば、フラッシュメモリまたはＲＡＭである。「ＲＡＭ」は、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略語である。
【００２１】
入力インタフェース１３は、ユーザからの入力を受け付ける装置を接続するインタフェースである。ユーザからの入力を受け付ける装置としては、例えば、マウス、キーボードまたはタッチパネルがある。
【００２２】
補助記憶装置１４は、データを記憶するための媒体である。補助記憶装置１４は、例えば、フラッシュメモリまたはＨＤＤである。「ＨＤＤ」は、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略語である。
【００２３】
表示器インタフェース１５は、画面に結果等を表示する表示器を接続するインタフェースである。表示器としては、例えば、ＬＣＤがある。「ＬＣＤ」は、Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙの略語である。
【００２４】
図示していないが、パケットフォーマット推定装置１０は、ハードウェアとして、通信装置を備えていてもよい。
【００２５】
通信装置は、データを受信するレシーバおよびデータを送信するトランスミッタを含む。通信装置は、例えば、通信チップまたはＮＩＣである。「ＮＩＣ」は、Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄの略語である。
【００２６】
パケットフォーマット推定装置１０は、フォーマットが不明な複数のパケットをパケットデータ４１、各パケットの到着時刻を到着時刻データ４２として保持するパケットデータセット２１を補助記憶装置１４から読み出す。パケットフォーマット推定装置１０は、パケットデータセット２１を用いてパケットフォーマット推定を行った後、推定したパケットフォーマット２８を補助記憶装置１４に書き込む。
【００２７】
パケットフォーマット推定装置１０は、入力インタフェース１３を介して、パケットデータセット２１の入力をユーザから受けてもよい。パケットフォーマット推定装置１０は、レシーバを介して、パケットデータセット２１を外部の装置から受信してもよい。
【００２８】
パケットフォーマット推定装置１０は、表示器インタフェース１５を介して、推定したパケットフォーマット２８を画面に表示してもよい。パケットフォーマット推定装置１０は、トランスミッタを介して、推定したパケットフォーマット２８を外部の装置に送信してもよい。
【００２９】
補助記憶装置１４には、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６および推定部２７の機能を実現するプログラムであるパケットフォーマット推定プログラムが記憶されている。パケットフォーマット推定プログラムは、メモリ１２にロードされ、プロセッサ１１によって実行される。補助記憶装置１４には、ＯＳも記憶されている。「ＯＳ」は、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍの略語である。プロセッサ１１は、ＯＳを実行しながら、パケットフォーマット推定プログラムを実行する。なお、パケットフォーマット推定プログラムの一部または全部がＯＳに組み込まれていてもよい。
【００３０】
パケットフォーマット推定装置１０は、プロセッサ１１を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、パケットフォーマット推定プログラムの実行を分担する。それぞれのプロセッサは、プロセッサ１１と同じように、パケットフォーマット推定等の演算処理を行うＩＣである。
【００３１】
生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６および推定部２７の処理の結果を示す情報、データ、信号値および変数値は、メモリ１２、補助記憶装置１４、または、プロセッサ１１内のレジスタまたはキャッシュメモリに記憶される。
【００３２】
パケットフォーマット推定プログラムは、磁気ディスクおよび光ディスクといった可搬記録媒体に記憶されてもよい。
【００３３】
＊＊＊動作の説明＊＊＊
図２を参照して、本実施の形態に係るパケットフォーマット推定装置１０の動作を説明する。パケットフォーマット推定装置１０の動作は、本実施の形態に係るパケットフォーマット推定方法に相当する。
【００３４】
ステップＳ１０１において、生成部２２は、複数のパケットのうち少なくとも一部のパケットに含まれる各パケットの同じ箇所から、同じ長さを持つデータを抽出する。本実施の形態では、パケットデータセット２１にパケットデータ４１として含まれる、フォーマットが不明な「複数のパケット」のうちすべてのパケットが、「少なくとも一部のパケット」に相当する。生成部２２は、抽出したデータの値を、各パケットの到着時刻に対応する振幅として示す第１時系列データ２９を生成する。
【００３５】
具体的には、生成部２２は、パケットデータセット２１を入力として補助記憶装置１４から読み出す。生成部２２は、パケットデータセット２１の各パケットで、先頭から１０バイトといったような同一箇所の一部分を等しく取り出し、到着時刻データ４２と対応付けることで、第１時系列データ２９を生成する。生成部２２は、第１時系列データ２９を変換部２３に出力する。
【００３６】
図３に、パケットデータセット２１から第１時系列データ２９を生成する処理の例を示す。図３の例では、パケットデータセット２１の各パケットの先頭部分が切り出されている。切り出された部分のバイナリ値が第１時系列データ２９の振幅、到着時刻が時間軸に対応付けられている。パケットから切り出される部分は、パケットの目的によって特徴の出る部分が望ましい。よって、いわゆるヘッダ部分、つまりパケットの先頭部分が切り出されることが望ましい。切り出す部分の長さは、処理を行うプロセッサ１１の性能によって変えてもよい。あるいは、プロセッサ１１のＳＩＭＤ機能を用いる場合には、切り出す部分の長さをＳＩＭＤで扱えるデータ長に合わせることで高速な処理が期待できる。「ＳＩＭＤ」は、Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａの略語である。
【００３７】
ステップＳ１０２において、変換部２３は、生成部２２により生成された第１時系列データ２９の周波数変換を行って第１周波数スペクトル３０を出力する。
【００３８】
具体的には、変換部２３は、第１時系列データ２９を入力として受ける。変換部２３は、図４に示す例のように、第１時系列データ２９の離散高速フーリエ変換を行うことで、第１周波数スペクトル３０を生成する。変換部２３は、第１周波数スペクトル３０を抽出部２４に出力する。
【００３９】
なお、周波数変換としては、任意のアルゴリズムを用いることができる。離散高速フーリエ変換の代わりに、他に離散フーリエ変換が用いられてもよい。変換部２３は、周波数変換を行う前に、第１時系列データ２９にハニング窓またはハミング窓等の窓関数を掛けてもよい。
【００４０】
ステップＳ１０３において、抽出部２４は、変換部２３より出力された第１周波数スペクトル３０から、ある周期Ｃｘに相当する周波数成分Ｆｘを抽出して第２周波数スペクトル３１を出力する。すなわち、抽出部２４は、ある周期Ｃｘの通信の成分Ｆｘを残し、それ以外の成分を０にする処理を行う。
【００４１】
具体的には、抽出部２４は、第１周波数スペクトル３０を入力として受ける。抽出部２４は、図４に示す例のように、抽出したい周期に相当するスペクトル成分のみを残して、それ以外を取り除き、第２周波数スペクトル３１を生成する。抽出部２４は、第２周波数スペクトル３１を逆変換部２５に出力する。
【００４２】
抽出したい周期は、あらかじめ複数設定される。抽出部２４は、設定された周期に該当する箇所を抽出したときの平均値が、スペクトル全体の平均値を上回っていたら、該当する周期信号があると判断し、それを取り出す。抽出部２４は、これを抽出したい周期の数だけ繰り返す。
【００４３】
抽出部２４は、第２周波数スペクトル３１を、抽出したい周期の数だけ出力する。抽出に使用するスペクトルは、本実施の形態では、周波数変換後の実部および虚部のそれぞれのスペクトルの二乗和の平方根であるパワースペクトルである。なお、実部および虚部をそれぞれ抽出に使用することも可能である。ただし、理想的な周期信号との位相ずれによって、実部および虚部の片方にしかスペクトルが出現しない可能性があるので、位相ずれを考慮する必要がある。
【００４４】
ステップＳ１０４において、逆変換部２５は、抽出部２４より出力された第２周波数スペクトル３１の周波数逆変換を行って第２時系列データ３２を出力する。
【００４５】
具体的には、逆変換部２５は、第２周波数スペクトル３１を入力として受ける。逆変換部２５は、第２周波数スペクトル３１に対して、変換部２３の演算の逆演算に相当する演算を行うことで、第２時系列データ３２を生成する。すなわち、逆変換部２５は、図４に示す例のように、第２周波数スペクトル３１の離散高速フーリエ逆変換を行うことで、第２時系列データ３２を生成する。逆変換部２５は、第２時系列データ３２を分類部２６に出力する。
【００４６】
なお、周波数逆変換としては、周波数変換に対応するものであれば、任意のアルゴリズムを用いることができる。離散高速フーリエ逆変換の代わりに、他に離散フーリエ逆変換が用いられてもよい。
【００４７】
逆変換部２５は、入力された第２周波数スペクトル３１の数だけ、第２時系列データ３２を出力する。
【００４８】
ステップＳ１０５において、分類部２６は、逆変換部２５より出力された第２時系列データ３２を参照して、周期Ｃｘで送信された一連のパケットを識別する。周期Ｃｘは、固定周期である。すなわち、「一連のパケット」は、等しい時間間隔で送信されたパケットである。分類部２６は、識別した一連のパケットを到着周期が同じパケット群３３として分類する。すなわち、分類部２６は、到着した複数のパケットのうち、固定周期で送信された一連のパケットを到着周期が同じパケット群３３として分類する。
【００４９】
具体的には、分類部２６は、第２時系列データ３２を入力として受ける。分類部２６は、図５に示す例のように、第２時系列データ３２のバイト値および時刻に対応するパケットを、パケットデータセット２１から探索し、抽出したパケットを同じパケット群３３に分類する。すなわち、分類部２６は、パケットデータセット２１のパケットを、抽出したい周期によって異なるパケット群３３に分類する。分類部２６は、周期ごとのパケット群３３を推定部２７に出力する。
【００５０】
パケットの探索においては、値または時刻が、ステップＳ１０２からステップＳ１０４の周波数解析処理による誤差等で、厳密に一致しないことがある。そのため、分類部２６は、パケットの切り出される部分のバイト値とパケットの到着時刻とが、第２時系列データ３２のバイト値と時刻とから、ユーザがあらかじめ設定した一定の範囲内であれば、両者が一致したとみなす。
【００５１】
分類部２６は、入力された第２時系列データ３２ごとに上記の処理を行うことで、パケットデータセット２１のパケットを複数のパケット群３３に分類する。
【００５２】
ステップＳ１０６において、推定部２７は、到着周期が同じパケット群３３ごとにパケットフォーマット２８を推定する。
【００５３】
具体的には、推定部２７は、周期ごとのパケット群３３を入力として受ける。推定部２７は、非特許文献１と同じアルゴリズムまたはその他のアルゴリズムを用いて、パケット群３３ごとのパケットフォーマット推定を行う。その結果、同じパケット群３３に分類されたパケットについては、１つの共通のパケットフォーマット２８が推定される。推定部２７は、推定したパケットフォーマット２８を出力として補助記憶装置１４に書き込む。パケットフォーマット２８のデータ構造としては、任意のデータ構造を用いることができるが、本実施の形態では図６に示す例のようなグラフが用いられる。
【００５４】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、パケットを通信周期によって分類することで、パケットフォーマット推定を高速化することができる。
【００５５】
前述した制御システムネットワークでは、周期通信が多く行われる。通信周期は、制御対象装置に合わせて設定される固有のものである。すなわち、通信周期は、目的とする通信内容と大きく関わりがある。例えば、モータの回転数を制御することを目的とした周期通信は、モータまたはそのモータが搭載された制御対象装置に合わせた周期で行われる。通信周期が通信内容と大きく関わりがあるということは、通信周期がパケット内容と対応付けられるということである。よって、本実施の形態のように、通信周期でパケットを分類するということは、パケットを内容ごとに分けることにつながる。本実施の形態では、パケットを通信周期で分類することで、同じ目的の通信で送信されるパケットを同じパケット群３３に分類することができ、結果として統計的に有意な差を出しやすくなる。すなわち、本実施の形態では、通信周期によってパケットを分類することで、同じ目的および特徴を持ったパケットを識別できるため、単純な統計解析処理だけでパケットフォーマット推定を行うことができる。よって、パケットフォーマット推定が高速になる。
【００５６】
＊＊＊他の構成＊＊＊
本実施の形態では、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６および推定部２７の機能がソフトウェアにより実現されるが、変形例として、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６および推定部２７の機能がハードウェアにより実現されてもよい。すなわち、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６および推定部２７の機能が専用の電子回路により実現されてもよい。
【００５７】
専用の電子回路は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＦＰＧＡまたはＡＳＩＣである。「ＧＡ」は、Ｇａｔｅ  Ａｒｒａｙの略語である。「ＦＰＧＡ」は、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略語である。「ＡＳＩＣ」は、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。
【００５８】
別の変形例として、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６および推定部２７の機能がソフトウェアとハードウェアとの組み合わせにより実現されてもよい。すなわち、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６および推定部２７の機能の一部が専用の電子回路により実現され、残りがソフトウェアにより実現されてもよい。
【００５９】
プロセッサ１１、メモリ１２および専用の電子回路を、総称して「プロセッシングサーキットリ」という。つまり、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６および推定部２７の機能がソフトウェアにより実現されるか、ハードウェアにより実現されるか、ソフトウェアとハードウェアとの組み合わせにより実現されるかに関わらず、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６および推定部２７の機能は、プロセッシングサーキットリにより実現される。
【００６０】
パケットフォーマット推定装置１０の「装置」を「方法」に読み替え、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６および推定部２７の「部」を「工程」に読み替えてもよい。あるいは、パケットフォーマット推定装置１０の「装置」を「プログラム」、「プログラムプロダクト」または「プログラムを記録したコンピュータ読取可能な媒体」に読み替え、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６および推定部２７の「部」を「手順」または「処理」に読み替えてもよい。
【００６１】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を、図７から図９を用いて説明する。
【００６２】
＊＊＊構成の説明＊＊＊
図７を参照して、本実施の形態に係るパケットフォーマット推定装置１０の構成を説明する。
【００６３】
パケットフォーマット推定装置１０は、パケットフォーマット推定を行うための機能要素として、生成部２２と、変換部２３と、抽出部２４と、逆変換部２５と、分類部２６と、推定部２７とのほかに、変更部３４を備える。生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６、推定部２７および変更部３４の機能は、ソフトウェアにより実現される。
【００６４】
補助記憶装置１４には、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６、推定部２７および変更部３４の機能を実現するプログラムであるパケットフォーマット推定プログラムが記憶されている。パケットフォーマット推定プログラムは、メモリ１２にロードされ、プロセッサ１１によって実行される。
【００６５】
生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６、推定部２７および変更部３４の処理の結果を示す情報、データ、信号値および変数値は、メモリ１２、補助記憶装置１４、または、プロセッサ１１内のレジスタまたはキャッシュメモリに記憶される。
【００６６】
＊＊＊動作の説明＊＊＊
図８を参照して、本実施の形態に係るパケットフォーマット推定装置１０の動作を説明する。パケットフォーマット推定装置１０の動作は、本実施の形態に係るパケットフォーマット推定方法に相当する。
【００６７】
実施の形態１では、ステップＳ１０２からステップＳ１０４の周波数解析処理にて、パケットの通信周期が周波数領域で抽出できるほどの有意な差が出ていることを前提としている。本実施の形態では、周波数領域で有意な差が出ず、周波数領域での抽出が困難になった場合の処理が追加されている。具体的には、有意な差がない場合に、第１時系列データ２９の生成から再度処理を実行する手順が追加されている。ここでの「有意な差」とは、周波数スペクトルの平均値よりもユーザがあらかじめ設定した閾値の範囲を超えるような差のことである。
【００６８】
ステップＳ２０１およびステップＳ２０２の処理については、ステップＳ１０１およびステップＳ１０２の処理と同じである。
【００６９】
ステップＳ２０３において、変更部３４は、変換部２３より出力された第１周波数スペクトル３０に含まれる、周期Ｃｘに相当する周波数成分Ｆｘと基準値Ｖｓとを比較する。周波数成分Ｆｘが基準値Ｖｓよりも大きいか、周波数成分Ｆｘが基準値Ｖｓと同じである場合、ステップＳ２０４以降の処理が行われる。一方、周波数成分Ｆｘが基準値Ｖｓよりも小さい場合、ステップＳ２０８の処理が行われる。
【００７０】
具体的には、変更部３４は、図９に示す例のように、第１周波数スペクトル３０から、基準値Ｖｓよりも大きい成分を抽出し、一定周期通信に相当するスペクトルが取り出せるほど、有意な差があるかどうかを判定する。有意な差があれば、ステップＳ２０４以降の処理が行われる。一方、有意な差がなければ、ステップＳ２０８の処理が行われる。
【００７１】
ステップＳ２０８において、変更部３４は、複数のパケットのうち少なくとも一部のパケットに含まれる各パケットの、生成部２２によりデータが抽出される箇所を変更する。そして、ステップＳ２０１以降の処理が再び行われる。実施の形態１と同じように、本実施の形態では、パケットデータセット２１にパケットデータ４１として含まれる、フォーマットが不明な「複数のパケット」のうちすべてのパケットが、「少なくとも一部のパケット」に相当する。
【００７２】
具体的には、変更部３４は、再度行われるステップＳ２０１の処理においてパケットから一部分を切り出す箇所を変更し、変更後の切り出し箇所を生成部２２に指定する。具体例として、最初のステップＳ２０１の処理では、生成部２２が先頭１０バイトを切り出していたとする。ステップＳ２０２の処理で有意な差が得られない場合は、次のステップＳ２０１の処理では、生成部２２が先頭から１１バイト目から１０バイト分を取り出す。それ以降、同様の処理が行われて、ステップＳ２０２の処理で有意な差が得られるまで、切り出し箇所を変更してステップＳ２０１の処理が実施される。なお、切り出し箇所の変更方法としては、上記の方法以外に、先頭６バイト目から１０バイト分、先頭１１バイト目から１０バイト分といった順番で、データの後ろ側にスライドしていく方法等、様々な方法を用いることができる。
【００７３】
変更部３４は、ユーザが設定した一定の回数、上記の処理を繰り返し、有意な差が得られない場合には、周期が抽出できない旨のエラーを出力する。
【００７４】
ステップＳ２０４からステップＳ２０７の処理については、ステップＳ１０３からステップＳ１０６の処理と同じである。
【００７５】
＊＊＊実施の形態の効果の説明＊＊＊
実施の形態１では、生成部２２によりパケットから切り出された部分がデータ部またはＣＲＣ等のようなランダムなビット列であった場合は、たとえそのパケットに周期的な信号が含まれていたとしても、切り出された部分はホワイトノイズのような時系列データになってしまう。「ＣＲＣ」は、Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋの略語である。一方、本実施の形態では、生成部２２により周期通信のパケットから切り出された部分が一定の値を持つデータでなければ、同じパケットから別のデータを切り出すことで、周期通信を検出できるような時系列データが得られる。その結果、より精度の高いパケット分類が可能になる。
【００７６】
＊＊＊他の構成＊＊＊
本実施の形態では、実施の形態１と同じように、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６、推定部２７および変更部３４の機能がソフトウェアにより実現されるが、実施の形態１の変形例と同じように、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６、推定部２７および変更部３４の機能がハードウェアにより実現されてもよい。あるいは、生成部２２、変換部２３、抽出部２４、逆変換部２５、分類部２６、推定部２７および変更部３４の機能がソフトウェアとハードウェアとの組み合わせにより実現されてもよい。
【００７７】
実施の形態３．
本実施の形態について、主に実施の形態２との差異を、図１０を用いて説明する。
【００７８】
＊＊＊構成の説明＊＊＊
本実施の形態に係るパケットフォーマット推定装置１０の構成については、図７に示した実施の形態２のものと同じである。
【００７９】
＊＊＊動作の説明＊＊＊
図１０を参照して、本実施の形態に係るパケットフォーマット推定装置１０の動作を説明する。パケットフォーマット推定装置１０の動作は、本実施の形態に係るパケットフォーマット推定方法に相当する。
【００８０】
実施の形態２では、同一の周期で別々の周期通信が発生していたときに、それらを区別することができない。一方、本実施の形態では、そのような別々の周期通信を区別することができる。
【００８１】
同一の周期で別々の周期通信が発生しているとき、周波数変換後の第１周波数スペクトル３０は意図したスペクトルにならず、周期Ｃｘに相当する周波数成分Ｆｘの抽出が困難となることが予想される。周期Ｃｘに相当する周波数成分Ｆｘの取り出しが困難と判断される場合は、時系列データから、値の近いデータを間引くことで対処できる。
【００８２】
ステップＳ３０１において、生成部２２は、複数のパケットのうちいずれかのパケットをサンプルとして選択する。本実施の形態では、パケットデータセット２１にパケットデータ４１として含まれる、フォーマットが不明な「複数のパケット」のうちいずれかのパケットがサンプルとしてランダムに選択される。生成部２２は、「複数のパケット」のうち、サンプルの値から設定範囲Ｒｓ内の値を持つパケットを「少なくとも一部のパケット」として利用する。すなわち、生成部２２は、サンプルの値から設定範囲Ｒｓ内の値を持つ各パケットの同じ箇所から、同じ長さを持つデータを抽出する。生成部２２は、抽出したデータの値を、各パケットの到着時刻に対応する振幅として示す第１時系列データ２９を生成する。
【００８３】
なお、「複数のパケット」を、サンプルの値から設定範囲Ｒｓ内の値を持つパケットに絞るフィルタリングの処理は、パケットデータセット２１に対して行われてもよいし、「複数のパケット」のうちすべてのパケットについて生成された時系列データに対して行われてもよい。前者の場合は、フィルタリング後のパケットのみについて生成された時系列データがそのまま第１時系列データ２９として出力される。後者の場合は、フィルタリング前のすべてのパケットについて生成された時系列データがフィルタリングによって第１時系列データ２９に変換される。
【００８４】
設定範囲Ｒｓは、±５といったような、ユーザによりあらかじめ設定された固定の範囲でもよいし、生成部２２により適宜設定される可変の範囲でもよい。後者の具体例として、値の範囲を増加させたときに該当するパケット数の関係を考えたときに、その２次微分を計算し、０になる値からの一定範囲を、抽出の許容範囲とすることが可能である。フィルタリング前に生成された時系列データがフィルタリングによって第１時系列データ２９に変換される場合は、フィルタリングを行った際に、得られた時系列データに対して理想的な周期信号と相互相関関数とを適用することで、フィルタリングがうまくいったかどうかを判定することができる。周期信号は、周期的デルタ関数あるいはコム関数と呼ばれる信号である。フィルタリングがうまくいっていれば、０の部分のみに相関が立つ。
【００８５】
ステップＳ３０２およびステップＳ３０３の処理については、ステップＳ２０２およびステップＳ２０３の処理と同じである。ステップＳ３０３において、有意な差があれば、ステップＳ３０４以降の処理が行われる。一方、有意な差がなければ、ステップＳ３０８の処理が行われる。
【００８６】
ステップＳ３０８において、変更部３４は、生成部２２により選択されるサンプルを変更する。そして、ステップＳ３０１以降の処理が再び行われる。
【００８７】
本実施の形態では、パケットをランダムにサンプリングするため、ランダムに選択されるパケットが周期通信のパケットであるとは限らない。そのため、上記のように、周期通信のパケットが選択され、有意な差が出るまでステップＳ３０１およびステップＳ３０２の処理が行われる。サンプリングを行う回数はユーザがあらかじめ設定する。なお、ステップＳ３０１において、ランダムにサンプリングを行う代わりに、到着時刻の早い順にパケットをサンプルとして選択する方法を用いてもよい。この方法を用いる場合は、到着順の先頭から、いくつのパケットまでを選択してよいかをユーザがあらかじめ設定する。
【００８８】
ステップＳ３０４からステップＳ３０７の処理については、ステップＳ２０４からステップＳ２０７の処理と同じである。
【００８９】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態によれば、同一の周期で別々の周期通信が発生していたときに、それらを区別することができる。その結果、より精度の高いパケット分類が可能になる。
【００９０】
＊＊＊他の構成＊＊＊
ステップＳ３０１において、生成部２２は、「複数のパケット」のうち、サンプルとのハミング距離が設定範囲内のパケットを「少なくとも一部のパケット」として利用してもよい。すなわち、変形例として、生成部２２は、サンプルとのハミング距離が設定範囲内の各パケットの同じ箇所から、同じ長さを持つデータを抽出してもよい。生成部２２は、抽出したデータの値を、各パケットの到着時刻に対応する振幅として示す第１時系列データ２９を生成する。
【００９１】
実施の形態４．
本実施の形態について、主に実施の形態３との差異を説明する。
【００９２】
実施の形態３では、値またはハミング距離が一定の範囲内であるパケットのみを抽出し、出力する時系列データには、抽出したパケットから切り出した値を使用するが、構成した時系列データが近似した値が連続するデータである場合には、この方法が適用できない。
【００９３】
時系列データの生成方法として、ランダムにサンプリングしたパケットとのハミング距離を、時系列データでとり得る最大値から引いた値を、新たに時系列データのバイナリ値として適用する方法を用いることができる。この方法により、値が似ているが、バイナリ列で見たときには異なるパケットを排除することができる。一般的には、任意のバイナリ列と、ランダムに生成したバイナリ列とのハミング距離は、ビット長の半分である。よって、新たに構成した時系列データから、とり得る値の半分に満たないものを切り捨てることで、周期通信のパケットに相当するデータを抽出しやすくなる。切り捨ての処理は実施しても実施しなくてもよいが、理想的な周期的デルタ関数との相関関数を算出することで、どちらがより抽出に成功しているかを判別することができる。
【００９４】
ステップＳ３０１において、生成部２２は、複数のパケットのうちいずれかのパケットをサンプルとして選択する。本実施の形態では、パケットデータセット２１にパケットデータ４１として含まれる、フォーマットが不明な「複数のパケット」のうちいずれかのパケットがサンプルとしてランダムに選択される。生成部２２は、「複数のパケット」のうち少なくとも一部のパケットに含まれる各パケットとサンプルとのハミング距離を各パケットに共通の値Ｖｃから差し引いた値を計算する。本実施の形態では、「複数のパケット」のうちすべてのパケットが、「少なくとも一部のパケット」に相当する。共通の値Ｖｃとしては、任意の固定値を用いることができるが、本実施の形態では、時系列データでとり得る最大値が用いられる。生成部２２は、計算した値を、各パケットの到着時刻に対応する振幅として示す第１時系列データ２９を生成する。
【００９５】
ステップＳ３０２以降の処理については、実施の形態３のものと同じである。
【００９６】
本実施の形態によれば、特定のパケットとバイナリ列で見たときに似たパケットを強調した時系列データを得ることができ、周期時間でのパケット分類の精度の向上が期待できる。
【００９７】
＊＊＊他の構成＊＊＊
時系列データの生成方法として、ランダムにサンプリングしたパケットとのハミング距離そのものを、新たに時系列データのバイナリ値として適用する方法を用いてもよい。すなわち、ステップＳ３０１において、生成部２２は、「少なくとも一部のパケット」に含まれる各パケットとサンプルとのハミング距離を各パケットに共通の値Ｖｃから差し引いた値の代わりに、各パケットとサンプルとのハミング距離を計算してもよい。生成部２２は、計算したハミング距離を、各パケットの到着時刻に対応する振幅として示す第１時系列データ２９を生成する。
【００９８】
実施の形態５．
本実施の形態について、主に実施の形態４との差異を、図１１を用いて説明する。
【００９９】
＊＊＊構成の説明＊＊＊
本実施の形態に係るパケットフォーマット推定装置１０の構成については、図７に示した実施の形態２のものと同じである。
【０１００】
＊＊＊動作の説明＊＊＊
図１１を参照して、本実施の形態に係るパケットフォーマット推定装置１０の動作を説明する。パケットフォーマット推定装置１０の動作は、本実施の形態に係るパケットフォーマット推定方法に相当する。
【０１０１】
１回目のステップＳ４０１において、生成部２２は、複数のパケットのうちいずれかのパケットをサンプルとして選択する。本実施の形態では、パケットデータセット２１にパケットデータ４１として含まれる、フォーマットが不明な「複数のパケット」のうちいずれかのパケットがサンプルとしてランダムに選択される。生成部２２は、「複数のパケット」のうち少なくとも一部のパケットに含まれる各パケットとサンプルとのハミング距離を各パケットに共通の値Ｖｃから差し引いた値を計算する。本実施の形態では、「複数のパケット」のうちすべてのパケットが、「少なくとも一部のパケット」に相当する。共通の値Ｖｃとしては、任意の固定値を用いることができるが、本実施の形態では、時系列データでとり得る最大値が用いられる。生成部２２は、計算した値を、各パケットの到着時刻に対応する振幅として示す第１時系列データ２９を生成する。
【０１０２】
ステップＳ４０２およびステップＳ４０３の処理については、ステップＳ３０２およびステップＳ３０３の処理と同じである。ステップＳ４０３において、有意な差があれば、ステップＳ４０４以降の処理が行われる。一方、有意な差がなければ、ステップＳ４０８の処理が行われる。
【０１０３】
ステップＳ４０８において、変更部３４は、生成部２２により計算される値を、「少なくとも一部のパケット」に含まれる各パケットとサンプルとのハミング距離に変更する。すなわち、変更部３４は、時系列データの生成方法を変更する。そして、ステップＳ４０１以降の処理が再び行われる。
【０１０４】
２回目のステップＳ４０１では、サンプルを選択する処理が省略される。すなわち、生成部２２は、「少なくとも一部のパケット」に含まれる各パケットと１回目のステップＳ４０１で選択したサンプルとのハミング距離を計算する。生成部２２は、計算したハミング距離を、各パケットの到着時刻に対応する振幅として示す第１時系列データ２９を生成する。そして、ステップＳ４０２の処理が行われる。
【０１０５】
２回目のステップＳ４０３では、有意な差がなければ、変更部３４は、周期が抽出できない旨のエラーを出力する。なお、このように時系列データの生成方法を変更しても有意な差が出ない場合は、実施の形態３と同じように、変更部３４が、生成部２２により選択されるサンプルを変更してもよい。サンプルの変更後は、ステップＳ４０１以降の処理が再び行われる。
【０１０６】
＊＊＊実施の形態の効果の説明＊＊＊
ランダムにサンプリングしたパケットとのハミング距離を、時系列データでとり得る最大値から引いた値を、新たに時系列データのバイナリ値として適用する方法は、抽出したい周期で送信されたパケットの１つがサンプルとして選択された場合に有効である。一方、ランダムにサンプリングしたパケットとのハミング距離そのものを、新たに時系列データのバイナリ値として適用する方法は、抽出したい周期で送信されたパケット以外のパケットがサンプルとして選択された場合に有効である。本実施の形態では、時系列データの生成方法として、上記２つの方法のうち一方を用いても有意な差が得られない場合に、同じサンプルに対して他方を用いることで有意な差を得やすくなる。
【０１０７】
＊＊＊他の構成＊＊＊
上記２つの方法のうちどちらを先に用いるかは、適宜変更することができる。
【符号の説明】
【０１０８】
１０  パケットフォーマット推定装置、１１  プロセッサ、１２  メモリ、１３  入力インタフェース、１４  補助記憶装置、１５  表示器インタフェース、２１  パケットデータセット、２２  生成部、２３  変換部、２４  抽出部、２５  逆変換部、２６  分類部、２７  推定部、２８  パケットフォーマット、２９  第１時系列データ、３０  第１周波数スペクトル、３１  第２周波数スペクトル、３２  第２時系列データ、３３  パケット群、３４  変更部、４１  パケットデータ、４２  到着時刻データ。
【図１】
0006501999.tif 000002
【図２】
0006501999.tif 000003
【図３】
0006501999.tif 000004
【図４】
0006501999.tif 000005
【図５】
0006501999.tif 000006
【図６】
0006501999.tif 000007
【図７】
0006501999.tif 000008
【図８】
0006501999.tif 000009
【図９】
0006501999.tif 000010
【図１０】
0006501999.tif 000011
【図１１】
0006501999.tif 000012