JP7182470B2 - メッセージ処理装置およびメッセージ処理方法 - Google Patents

メッセージ処理装置およびメッセージ処理方法 Download PDF

Info

Publication number
JP7182470B2
JP7182470B2 JP2019003197A JP2019003197A JP7182470B2 JP 7182470 B2 JP7182470 B2 JP 7182470B2 JP 2019003197 A JP2019003197 A JP 2019003197A JP 2019003197 A JP2019003197 A JP 2019003197A JP 7182470 B2 JP7182470 B2 JP 7182470B2
Authority
JP
Japan
Prior art keywords
bit string
message
bit
value
event
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019003197A
Other languages
English (en)
Other versions
JP2020113893A (ja
Inventor
純 矢嶋
高行 長谷部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019003197A priority Critical patent/JP7182470B2/ja
Publication of JP2020113893A publication Critical patent/JP2020113893A/ja
Application granted granted Critical
Publication of JP7182470B2 publication Critical patent/JP7182470B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Small-Scale Networks (AREA)

Description

本発明は、メッセージ処理装置、メッセージ処理方法、及びネットワークへの攻撃を検知する方法に係わる。
自動車の車載ネットワークにおいて、CAN(Controller Area Network)と呼ばれるネットワーク技術が使用されることがある。CANを使用するネットワークにおいては、各ノードにECU(electronic control unit)が実装される。
ECUから送信されるメッセージには、識別情報(ID)が付与されている。このメッセージは、ネットワーク内のECUにブロードキャストされる。ここで、各ECUは、自分が取得すべきメッセージのIDを認識している。そして、各ECUは、受信メッセージのIDをチェックすることにより、必要なメッセージを取得する。
上記構成のCANシステムにおいて、悪意ある第3者によりECUが乗っ取られ、そのECUから悪意あるメッセージが出力される攻撃が行われることがある。例えば、CANシステムにおいて使用されるIDが、悪意あるメッセージに付与される。そうすると、そのメッセージを受信したECUは、意図しない処理を実行するおそれがある。
ところで、多くのCANシステムにおいて、ECUは、所定の周期でメッセージを出力する。したがって、メッセージが出力される周期が既知であるケースでは、各ECUは、メッセージの到着予定時刻と実際の到着時刻とを比較することにより、悪意のあるメッセージを検出できる。
なお、車載ネットワークに流れるデータフレームを処理する情報処理方法が提案されている(例えば、特許文献1、2)。一例としては、情報処理方法は、複数のデータフレームを順次受信する受信ステップと、複数のデータフレーム間の受信間隔を示す受信間隔情報をフレーム情報として記録するフレーム収集ステップと、受信間隔情報から、複数のデータフレーム間の受信間隔の分布に関する特徴量を取得する特徴量取得ステップと、特徴量を用いて、複数のデータフレームの中の不正なデータフレームの存否を判定する不正データ存否判定ステップとを含む。
国際公開第2018/168291号 国際公開第2018/105330号
上述したように、各メッセージが周期的に送信されるケースでは、到着予定時刻と実際の到着時刻とを比較することで、悪意のあるメッセージによるネットワークへの攻撃を検知できる。ところが、非周期的に送信されるメッセージが存在するときは、この方法でネットワークへの攻撃を検知することは困難である。
他の攻撃検知方法としては、例えば、正規に送信されるメッセージの内容の規則性を予め取得しておき、この規則性に従わないメッセージをモニタすることでネットワークへの攻撃を検知する手順が考えられる。ただし、このような規則性を発見することは容易ではない。
本発明の1つの側面に係わる目的は、ネットワークへの攻撃を検知する能力を向上させることである。
本発明の1つの態様のメッセージ処理装置は、ネットワーク内で送信される識別情報を含むメッセージを処理する。このメッセージ処理装置は、所定のモニタ期間内に受信したメッセージに含まれる識別情報ごとに、メッセージ中の単一ビットまたは連続する複数ビットで定義されるビット列それぞれについて、所定の事象が発生した回数をカウントするカウント部と、前記カウント部によりカウントされた回数が互いに一致する第1のビット列および第2のビット列を抽出する抽出部と、前記第1のビット列において前記所定の事象の中の第1の事象が発生したタイミングと、前記第2のビット列において前記所定の事象の中の第2の事象が発生したタイミングとの近似性に基づいて、前記第1のビット列と前記第2のビット列との間の関連性を判定する判定部と、を備える。
上述の態様によれば、ネットワークへの攻撃を検知する能力が向上する。
攻撃検知装置が実装されるネットワークの一例を示す図である。 メッセージを伝送するフレームのフォーマットの例を示す図である。 本発明の実施形態に係わる攻撃検知装置の一例を示す図である。 メッセージ処理装置および攻撃検知装置の一例を示す図である。 ログ収集装置および攻撃検知装置の一例を示す図である。 ログ情報の一例を示す図である。 ECUのハードウェア構成の一例を示す図である。 コンピュータのハードウェア構成の一例を示す図である。 メッセージ処理装置の処理の一例を示すフローチャートである。 特定値の出現回数をカウントする処理の一例を示す図である。 特定値の出現回数をカウントする処理を高速化する方法の一例を示す図である。 ビット列の値の変化をカウントする処理を高速化する方法の一例を示す図である。 近傍探索の一例を示す図である。 変化回数および出現回数をカウントする処理の実施例を示す図(その1)である。 変化回数および出現回数をカウントする処理の実施例を示す図(その2)である。 攻撃を検知する方法の実施例を示す図(その1)である。 攻撃を検知する方法の実施例を示す図(その2)である。 攻撃を検知する方法の実施例を示す図(その3)である。 攻撃を検知する方法の実施例を示す図(その4)である。
図1は、本発明の実施形態に係わる攻撃検知装置が実装されるネットワークの一例を示す。図1に示すネットワーク100は、複数のECU(ECU0~ECUk)を備える。複数のECUは、バスを介して互いに接続されている。なお、この実施例では、複数のECUは、CAN(Controller Area Network)システムを構成する。
各ECUは、バスを介してメッセージを送信することができる。このメッセージは、ネットワーク100の全てのECUにブロードキャストされる。また、各メッセージは、識別情報(ID)を含んでいる。ここで、各ECUは、自分が取得すべきメッセージのIDを認識している。そして、各ECUは、受信メッセージのIDをチェックすることにより必要なメッセージを取得する。
上記ネットワーク100において、複数のECUの中の1つに攻撃検知装置が実装される。図1に示す例では、ECU0に攻撃検知装置が実装されるものとする。攻撃検知装置は、ネットワーク100に対する攻撃を検知する。なお、以下の記載では、悪意あるメッセージを「攻撃メッセージ」と呼ぶことがある。
ECU1~ECUkのうちの少なくとも1つのECUは、所定の周期でメッセージを送信する機能を備えている。図1に示す例では、ECU1は、識別情報ID_Aを含むメッセージを所定の周期で送信し、ECU2は、識別情報ID_Bを含むメッセージを所定の周期で送信し、ECU3は、識別情報ID_Cを含むメッセージを所定の周期で送信する。メッセージの送信周期は、IDごとに予め決められている。たとえば、ID=0x123を含むメッセージは10m秒間隔で送信され、ID=0x456を含むメッセージは20m秒間隔で送信される。
また、ECU1~ECUkのうちの少なくとも1つのECUは、周期的でないメッセージを送信することができる。例えば、少なくとも1つのECUは、所定の周期でメッセージを送信しながら、指定されたイベントの発生に応じてメッセージを送信してもよい。この場合、送信周期が乱れる。
なお、車載ネットワークにおいては、複数のECUは、車両を制御するために使用される。例えば、ID=0x123を含むメッセージは、アクセル開度を表すデータを伝送し、ID=0x456を含むメッセージは、ブレーキ踏込み角度を表すデータを伝送するものとする。
ネットワーク100において送信される各メッセージは、上述したように、ブロードキャストされる。よって、すべてのメッセージが各ECUに到着する。なお、図1のタイミングチャートは、ECU1~ECU3から送信されるメッセージがECU0に到着する状況を示している。
図2は、メッセージを伝送するフレームのフォーマットの例を示す。なお、F1は、一般仕様のフレームのフォーマット例を示し、F2は、拡張仕様で使用されるフレームのフォーマット例を示す。
一般仕様のフレームF1は、SOF(Start of Frame)、調停(arbitration)フィールド、コントロールフィールド、データフィールド、CRCフィールド、ACKフィールド、およびEOF(End of Frame)を含む。調停フィールドは、IDおよびRTR(Remote Transmission Request)を含む。IDは、メッセージを識別するための識別情報を表す。コントロールフィールドは、IDE(Identifier Extension)、予約ビット、DLC(Data Length Code)を含む。CRCフィールドは、CRCシーケンスおよびCRCデリミタを含む。ACKフィールドは、ACKスロットおよびACKデリミタを含む。なお、図2において各情報要素に対して表記されている値は、ビット長を表す。例えば、IDの長さは11ビットであり、データフィールドの長さは0~64ビットの可変長である。
一般仕様のフレームF1と同様に、拡張仕様で使用されるフレームF2も、SOF、調停フィールド、コントロールフィールド、データフィールド、CRCフィールド、ACKフィールド、EOFを含む。ただし、拡張仕様では、より多くのビット数で識別情報が表される。
以下の記載では、一般仕様のフレームを利用してメッセージが伝送されるものとする。ただし、本発明の実施形態に係わるメッセージ処理方法は、拡張仕様のフレームを利用してメッセージが伝送されるケースにも適用される。また、CAN-FDと呼ばれる規格にも対応可能である。
図3Aは、本発明の実施形態に係わる攻撃検知装置の一例を示す。攻撃検知装置1は、図3Aに示すように、受信部2、ログ情報格納部3、メッセージ処理装置4、関連性データベース9、検知部10を備える。なお、攻撃検知装置1は、図3Aに示していない他の機能を備えてもよい。
受信部2は、ネットワーク100に実装されるECUから送信されるメッセージを受信する。なお、攻撃検知装置1は、各メッセージに付与されているID毎に受信時刻を検出できる。メッセージの受信時刻は、例えば、攻撃検知装置1に実装される不図示のタイマを利用して検出される。
ログ情報格納部3は、受信部2により受信されるメッセージについてのログ情報を格納する。ログ情報は、この例では、図4に示すように、各受信メッセージについてタイムスタンプ、ID、データを記録する。タイムスタンプは、受信部2がメッセージを受信した時刻を表す。IDは、各受信メッセージに付与されている識別情報を表す。データは、各受信メッセージのデータ領域から抽出される。なお、ログ情報は、図4に示してない他の情報要素を含んでもよい。
メッセージ処理装置4は、ネットワーク100への攻撃を検知するために使用される関連性情報を生成する。メッセージ処理装置4は、関連性情報を生成するために、カウント部5および関連性分析部6を備える。なお、メッセージ処理装置4は、ログ情報格納部3を含んでもよい。また、メッセージ処理装置4は、図3Aに示していない他の機能を備えてもよい。
カウント部5は、ログ情報格納部3に格納されているログ情報を参照し、所定のモニタ期間内に受信部2が受信したメッセージに含まれる識別情報ごとに、メッセージ中の単一ビットまたは連続する複数ビットで定義されるビット列それぞれについて、所定の事象が発生した回数をカウントする。カウント部5によりカウントされる事象は、例えば、ビット列に特定値が出現すること、及び/又は、ビット列の値が直前の受信メッセージ中の対応するビット列の値に対して変化することである。この場合、カウント部5は、各ビット列について、特定値が出現する回数を表す出現回数または直前の対応するビット列に対して値が変化する回数を表す変化回数をカウントする。関連性分析部6は、カウント部5によるカウント値に基づいて、関連性情報を生成する。
関連性分析部6は、抽出部7および判定部8を備える。抽出部7は、出現回数または変化回数が互いに一致する第1のビット列および第2のビット列を抽出する。このとき、抽出部7は、異なるID間で出現回数または変化回数が互いに一致するビット列を抽出してもよい。判定部8は、第1のビット列において第1の事象が発生したタイミングと、第2のビット列において第2の事象が発生したタイミングとの近似性に基づいて、第1のビット列と第2のビット列との間の関連性の有無を判定する。或いは、判定部8は、第1のビット列において発生する第1の事象と第2のビット列において発生する第2の事象との間の関連性の有無を判定する。そして、関連性が存在すると判定されたときは、関連性分析部6は、その関連性を表す関連性情報を生成する。
関連性データベース9は、メッセージ処理装置4により生成される関連性情報を格納する。検知部10は、ログ情報格納部3に格納されているログ情報および関連性データベース9に格納されている関連性情報を利用して、ネットワーク100への攻撃を検知する。
ただし、攻撃検知装置1として動作するECUの演算能力が十分でない場合には、コンピュータ500を用いて関連性分析を行ってもよい。この場合、コンピュータ500は、攻撃検知装置1として動作するECUと接続するためのインタフェースを有する。また、コンピュータ500は、図3Bに示すように、メッセージ処理装置4と同等の機能を備える。すなわち、コンピュータ500は、メッセージ処理装置4として動作する。また、攻撃検知装置1は、受信部2、ログ情報格納部3、関連性データベース9、検知部10を備えるが、メッセージ処理装置4を備えなくてもよい。
この場合、コンピュータ500および攻撃検知装置1は、下記の処理を実行する。
(1)コンピュータ500は、攻撃検知装置1により収集されたログ情報を取得する。攻撃検知装置1がOBD2ポートを備える場合は、コンピュータ500は、OBD2ポートを介してログ情報を取得してもよい。
(2)コンピュータ500は、取得したログ情報に基づいて関連性分析を行い、関連性データベースを作成する。
(3)コンピュータ500は、作成した関連性データベースを攻撃検知装置1にインストールする。
(4)攻撃検知装置1は、コンピュータ500によりインストールされた関連性データベースを用いて攻撃メッセージの検知を行う。
或いは、コンピュータ500は、関連性分析および攻撃検知を実行してもよい。この場合、コンピュータ500は、図3Cに示すように、メッセージ処理装置4、関連性データベース9、および検知部10と同等の機能を備える。すなわち、コンピュータ500は、攻撃検知装置として動作する。また、図1に示すECU0は、受信メッセージのログを収集するログ収集装置300として動作する。なお、ログ収集装置300は、受信部2およびログ情報格納部3を備える。
コンピュータ500は、下記の処理を実行する。
(1)コンピュータ500は、ログ収集装置300からログ情報を取得する。ログ収集装置300がOBD2ポートを備える場合は、コンピュータ500は、OBD2ポートを介してログ情報を取得してもよい。
(2)コンピュータ500は、取得したログ情報に基づいて関連性分析を行い、関連性データベースを作成する。
(3)コンピュータ500は、ログ収集装置からログ情報を取得する。
(4)コンピュータ500は、(3)で取得したログ情報に基づいて、(2)で作成した関連性データベースを用いて攻撃メッセージの検知を行う。
図5Aは、攻撃検知装置またはメッセージ収集装置が実装されるECUのハードウェア構成の一例を示す。ECU20は、この例では、CANトランシーバ21、CANコントローラ22、処理回路23を含む。処理回路23は、プロセッサ24およびメモリ25を含む。
CANトランシーバ21は、図2に示すフレームを送信および受信する機能を備える。CANコントローラ22は、CANトランシーバ21が受信したフレームからIDおよびデータを抽出すると共に、そのフレームの受信時刻を測定する。なお、CANコントローラ22は、受信フレームに対してCRCチェックを実行してもよい。また、CANコントローラ22は、送信フレームにIDおよびデータを設定することができる。
ECUが図3Aに示す攻撃検知装置1として動作するときは、プロセッサ24は、メモリ25に格納されているプログラムを実行することにより、攻撃検知を実現する。この場合、メモリ25には、図3Aに示すメッセージ処理装置4および検知部10の機能を記述したプログラムが格納される。そして、プロセッサ24は、このプログラムを実行することによりメッセージ処理装置4および検知部10の機能を提供する。また、ECUが図3Bに示す攻撃検知装置1として動作するときは、プロセッサ24は、メモリ25に格納されているプログラムを実行することにより検知部10の機能を提供する。
なお、図3A~図3Cに示す受信部2は、例えば、CANトランシーバ11により実現される。また、ログ情報格納部3および関連性データベース9は、メモリ25を用いて実現してもよいし、図5Aに示していない記憶装置を用いて実現してもよい。
図5Bは、メッセージ処理装置または攻撃検知装置が実装されるコンピュータのハードウェア構成の一例を示す。コンピュータ500は、プロセッサ501、メモリ502、記憶装置503、I/Oデバイス504、記録媒体デバイス505、通信インタフェース506を備える。
プロセッサ501は、記憶装置503に格納されているメッセージ処理プログラムを実行することにより、コンピュータ500の機能を提供することができる。すなわち、コンピュータ500が図3Bに示すメッセージ処理装置4として動作するときは、プロセッサ501は、記憶装置503に格納されているメッセージ処理プログラムを実行することにより、カウント部5および関連性分析部6の機能を提供する。また、コンピュータ500が図3Cに示す攻撃検知装置として動作するときは、プロセッサ501は、記憶装置503に格納されているメッセージ処理プログラムを実行することにより、カウント部5、関連性分析部6、および検知部10の機能を提供する。
メモリ502は、例えば半導体メモリであり、プロセッサ501の作業領域として使用される。記憶装置503は、コンピュータ500内に実装されていてもよいし、コンピュータ500に接続されてもよい。図3Cに示す関連性データベース9は、メモリ502または記憶装置503に保存される。I/Oデバイス504は、ユーザまたはネットワーク管理者の指示を受け付ける。また、I/Oデバイス504は、プロセッサ501による処理結果を出力する。記録媒体デバイス505は、可搬型記録媒体507に記録されている信号を読み取る。なお、上述したメッセージ処理プログラムは、可搬型記録媒体507に記録されていてもよい。通信インタフェース506は、データ通信のためのインタフェースおよび制御情報を通信するためのインタフェースを含む。
なお、以下の記載では、「メッセージ処理装置(または、メッセージ処理装置4)」は、図1に示す任意のECUまたは図3Bに示すコンピュータ500より実現される。また、「攻撃検知装置(または、攻撃検知装置1)」は、図1に示す任意のECUまたは図3Cに示すコンピュータ500より実現される。
上述したように、攻撃検知装置1は、関連性データベース9に格納されている関連性情報を利用して、ネットワーク100への攻撃を検知する。関連性情報は、例えば、あるIDを含むメッセージの送信における規則性と他のIDを含むメッセージの送信における規則性との関連性を表す。下記に関連性情報の例を示す。なお、この実施例では、関連性情報は「ルール」により表される。
ルール1:所定のモニタ期間において、ID_Xを含むメッセージの第xビットの値が変化する回数と、ID_Yを含むメッセージの第yビットの値が変化する回数とが互いに一致する。
ルール2:所定のモニタ期間において、ID_Aを含むメッセージの第aバイトが「00000000」となる回数と、ID_Bを含むメッセージの第bビットが「1」となる回数とが互いに一致する。
ルール3:所定のモニタ期間において、ID_Gを含むメッセージを受信した回数と、ID_Hを含むメッセージの第hビットの値が変化する回数とが互いに一致する。
検知部10は、上述のルールから逸脱するメッセージをモニタすることによりネットワーク100への攻撃を検知する。例えば、モニタ期間内に、ID_Xを含むメッセージの第xビットの値が5回変化したが、ID_Yを含むメッセージの第yビットの値は4回しか変化していないものとする。この場合、検知部10は、ID_Xを含む攻撃メッセージがネットワーク100に入力された可能性があると判定する。また、モニタ期間内に、ID_Aを含むメッセージの第aバイトが「00000000」となる回数が10回であったが、ID_Bを含むメッセージの第bビットが「1」となる回数は9回であったものとする。この場合、検知部10は、ID_Aを含む攻撃メッセージがネットワーク100に入力された可能性があると判定する。さらに、モニタ期間内に、ID_Gを含むメッセージを30個受信したが、ID_Hを含むメッセージの第hビットの値は31回変化したものとする。この場合、検知部10は、ID_Hを含む攻撃メッセージがネットワーク100に入力された可能性があると判定する。
攻撃検知の他の例を示す。ここでは、ログ情報格納部3に下記のログ情報が格納されているものとする。なお、ログ情報は、受信メッセージのタイムスタンプ、ID、データを時系列に表す。また、下記の例では、ネットワーク100において正規のメッセージのみが送信されたものとする。
ログ情報(攻撃なし):
TIME=0.500001 ID=0x100 DATA=00 01 12 13
TIME=0.600005 ID=0x200 DATA=00 F2 E3 C5
TIME=0.800005 ID=0x100 DATA=00 01 12 13
TIME=0.900002 ID=0x200 DATA=00 F2 E3 C5
TIME=1.100004 ID=0x100 DATA=00 01 12 13
TIME=1.200000 ID=0x200 DATA=00 F2 E3 C5
TIME=1.200003 ID=0x100 DATA=80 01 12 13
TIME=1.300009 ID=0x200 DATA=00 F2 E3 45
TIME=1.500003 ID=0x100 DATA=00 01 12 13
TIME=1.600001 ID=0x200 DATA=00 F2 E3 45
TIME=1.600003 ID=0x100 DATA=80 01 12 13
TIME=1.700005 ID=0x200 DATA=00 F2 E3 79
TIME=1.900002 ID=0x100 DATA=00 01 12 13
TIME=2.000004 ID=0x200 DATA=00 F2 E3 79
このログ情報をID毎に整理すると、下記の時系列データが得られる。
ID=0x100について:
TIME=0.500001 ID=0x100 DATA=00 01 12 13
TIME=0.800005 ID=0x100 DATA=00 01 12 13
TIME=1.100004 ID=0x100 DATA=00 01 12 13
TIME=1.200003 ID=0x100 DATA=80 01 12 13
TIME=1.500003 ID=0x100 DATA=00 01 12 13
TIME=1.600003 ID=0x100 DATA=80 01 12 13
TIME=1.900002 ID=0x100 DATA=00 01 12 13
ID=0x200について:
TIME=0.600005 ID=0x200 DATA=00 F2 E3 C5
TIME=0.900002 ID=0x200 DATA=00 F2 E3 C5
TIME=1.200000 ID=0x200 DATA=00 F2 E3 C5
TIME=1.300009 ID=0x200 DATA=00 F2 E3 45
TIME=1.600001 ID=0x200 DATA=00 F2 E3 45
TIME=1.700005 ID=0x200 DATA=00 F2 E3 79
TIME=2.000004 ID=0x200 DATA=00 F2 E3 79
これらの時系列データを分析すると、下記の規則性が得られる。
(1)いずれのIDについても、メッセージの送信周期は、基本的には約0.3秒である。
(2)いずれのIDについても、周期を逸脱したタイミングで次のメッセージが到着することがある。
(3)ID=0x100については、データの先頭ビットが「1」であるときに、通常よりも短い時間間隔でメッセージが送信される。
(4)ID=0x200については、データの最終バイトの値が変化したときに、通常よりも短い時間間隔でメッセージが送信される。
ここで、上記14個のメッセージに加えて、1個の攻撃メッセージがネットワーク100に入力されるケースについて検討する。攻撃メッセージは、ID=0x200を含み、時刻=1.400004に攻撃検知装置1に到着するものとする。この場合、下記のログ情報が得られる。
ログ情報(攻撃あり):
TIME=0.500001 ID=0x100 DATA=00 01 12 13
TIME=0.600005 ID=0x200 DATA=00 F2 E3 C5
TIME=0.800005 ID=0x100 DATA=00 01 12 13
TIME=0.900002 ID=0x200 DATA=00 F2 E3 C5
TIME=1.100004 ID=0x100 DATA=00 01 12 13
TIME=1.200000 ID=0x200 DATA=00 F2 E3 C5
TIME=1.200003 ID=0x100 DATA=80 01 12 13
TIME=1.300009 ID=0x200 DATA=00 F2 E3 45
TIME=1.400004 ID=0x200 DATA=00 F2 E3 91(攻撃)
TIME=1.500003 ID=0x100 DATA=00 01 12 13
TIME=1.600001 ID=0x200 DATA=00 F2 E3 45
TIME=1.600003 ID=0x100 DATA=80 01 12 13
TIME=1.700005 ID=0x200 DATA=00 F2 E3 79
TIME=1.900002 ID=0x100 DATA=00 01 12 13
TIME=2.000004 ID=0x200 DATA=00 F2 E3 79
このログ情報をID毎に整理すると、下記の時系列データが得られる。
ID=0x100について
TIME=0.500001 ID=0x100 DATA=00 01 12 13
TIME=0.800005 ID=0x100 DATA=00 01 12 13
TIME=1.100004 ID=0x100 DATA=00 01 12 13
TIME=1.200003 ID=0x100 DATA=80 01 12 13
TIME=1.500003 ID=0x100 DATA=00 01 12 13
TIME=1.600003 ID=0x100 DATA=80 01 12 13
TIME=1.900002 ID=0x100 DATA=00 01 12 13
ID=0x200について
TIME=0.600005 ID=0x200 DATA=00 F2 E3 C5
TIME=0.900002 ID=0x200 DATA=00 F2 E3 C5
TIME=1.200000 ID=0x200 DATA=00 F2 E3 C5
TIME=1.300009 ID=0x200 DATA=00 F2 E3 45
TIME=1.400004 ID=0x200 DATA=00 F2 E3 91(攻撃)
TIME=1.600001 ID=0x200 DATA=00 F2 E3 45
TIME=1.700005 ID=0x200 DATA=00 F2 E3 79
TIME=2.000004 ID=0x200 DATA=00 F2 E3 79
ここで、ID=0x200について得られている時系列データに注目すると、攻撃メッセージが入力されたときのメッセージの受信間隔は約0.1秒であり、通常の送信周期よりも短くなっている。ここで、この攻撃メッセージの最終バイトの値は、直前の受信メッセージの最終バイトの値に対して変化している。すなわち、上述した規則性(4)が満たされている。よって、この規則性を利用しただけでは、攻撃は検知されない。
ただし、攻撃メッセージが存在しないケースでは、上記した「ログ情報(攻撃なし)」に示すように、ID=0x200を含む受信メッセージのデータの最終バイトの値が変化したときには、その受信時刻の約0.1秒前に、ID=0x100を含み、且つ、データの先頭ビットの値が「1」であるメッセージが攻撃検知装置1に到着しているはずである。例えば、時刻=1.400004に攻撃検知装置1に到着したID=0x200を含むメッセージの最終バイトの値「45」は、その直前に攻撃検知装置1に到着したID=0x200を含むメッセージの最終バイトの値「C5」に対して変化している。そして、時刻=1.400004の約0.1秒前に、ID=0x100を含み、且つ、データの先頭ビットの値が「1」であるメッセージが攻撃検知装置1に到着している。しかしながら、「ログ情報(攻撃あり)」においては、そのようなメッセージは存在しない。すなわち、攻撃メッセージが存在しないときに得られる規則性から逸脱した事象が発生している。これにより、ネットワーク100への攻撃が検知される。
このように、攻撃検知装置1は、メッセージの受信タイミングだけでなく、メッセージの内容に係わる規則性を利用してネットワーク100への攻撃を検知する。ただし、このような検知を行うためには、ネットワーク100への攻撃がないときに、予め通信の規則性を検出しておくことが求められる。
通信の規則性は、例えば、以下の手順で検出される。
(1)ID毎に、メッセージの受信間隔が所定の周期から外れているメッセージの個数を測定する。
(2)ID毎に、単一ビットまたは連続する複数ビットで定義されるビット列それぞれについて、特定値が出現する回数および/または直前の対応するビット列に対して値が変化する回数をカウントする。
(3)上記(1)~(2)に基づいて、互いに関係する事象を発見する。例えば、所定のモニタ期間において、所定のビット列の値が変化する回数がN回であり、かつ、その変化したタイミングにおいてメッセージの受信間隔が、所定の周期から外れていたものとする。この場合、メッセージの受信間隔が所定の周期から外れることと、所定のビット列の値が変化することとの間に関係性があると推定される。
ところが、上記(1)の測定を精度よく行うことは困難である。この理由は、以下の通りである。即ち、周期的に送信されるメッセージであっても、実際には、その送信間隔は誤差を有する。このため、メッセージの受信間隔が所定の周期から外れているか否かを判定する場合、予定受信時刻に対して所定の許容誤差範囲が設定される。しかし、この許容誤差範囲の決定は容易ではない。例えば、許容誤差範囲が小さ過ぎると、正規の周期メッセージの受信時に周期はずれが検出されることがある。一方、許容誤差範囲が大き過ぎると、非周期メッセージが周期メッセージと判定されるおそれがある。そして、上記(1)の測定結果が正しくないときは、通信の規則性を正しく検出することができない。また、上記(1)に関連し、非周期メッセージにおいては周期が存在しないため、メッセージ間隔に基づく外れ箇所の特定はそもそも困難である。
<実施形態>
図6は、メッセージ処理装置4の処理の一例を示すフローチャートである。なお、ログ情報格納部3には、ネットワーク100への攻撃が存在しない期間における受信メッセージについてのログ情報が格納されているものとする。
S1において、メッセージ処理装置4は、ログ情報格納部3に格納されているログ情報を取得する。このとき、メッセージ処理装置4は、所定のモニタ期間において記録されたログ情報を取得する。
S2において、カウント部5は、ログ情報を参照し、所定のモニタ期間内に受信したメッセージに含まれるIDごとに、所定の事象が発生した回数をカウントする。所定の事象は、メッセージ内のビット列に所定値が出現すること、及び/又は、メッセージ内のビット列の値が直前の受信メッセージ内の同一ビット列の値に対して変化すること、と含む。すなわち、カウント部5は、特定値が出現する回数を表す出現回数、及び/又は、直前のメッセージに対して値が変化する回数を表す変化回数をカウントする。以下の記載では、S2のカウント動作により得られる値をカウント値と呼ぶことがある。
S3において、関連性分析部6は、S2で得られたカウント値を利用して、ビット列間での近傍探索を実行する。例えば、ID_Xを含むメッセージにおいて事象Xが発生した回数と、ID_Yを含むメッセージにおいて事象Yが発生した回数とが一致する場合、近傍探索が実行される。この場合、事象Xが発生した各タイミングおよび事象Yが発生した各タイミングが時間領域においてそれぞれ互いに近接していれば、ID_Xを含むメッセージにおいて発生する事象XとID_Yを含むメッセージにおいて発生する事象Yとの間に関連性(或いは、相関または因果関係)が存在すると判定される。
S4において、関連性分析部6は、一致判定を行う。例えば、モニタ期間において、ID_Xを含むメッセージの各受信タイミングとID_Yを含むメッセージの各受信タイミングとがそれぞれ互いに一致するときは、ID_XとID_Yとの間に関連性が存在すると判定される。或いは、モニタ期間において、ID_Xを含むメッセージの各受信間隔とID_Yを含むメッセージの各受信間隔とがそれぞれ互いに一致するときは、ID_XとID_Yとの間に関連性が存在すると判定される。
メッセージ処理装置4は、上述の関連性を表す関連性情報を出力する。なお、S4は必須の処理ではなく、メッセージ処理装置4は、S1~S3のみを実行してもよい。
このように、本発明の実施形態に係わるメッセージ処理方法においては、まず、所定の事象の発生回数が互いに一致するビット列が抽出される。ここで、所定の事象の発生回数は、メッセージが周期的に送信されるか否かに異存しない。よって、メッセージが周期的に送信されるか否かによらず、互いに関連するビット列の候補が正しく抽出される。
この後、抽出された2個以上のビット列間で、上述の事象の発生タイミングの近似性に基づいてビット列間の関連性の有無が判定される。ここで、ID毎のメッセージの受信間隔については、ログ情報を参照することにより、精度のよい情報が得られる。よって、本発明の実施形態に係わるメッセージ処理方法は、メッセージの送信周期の逸脱をモニタするのではなく、所定の事象が発生しているメッセージの受信間隔の近似性をモニタし、このモニタ結果に基づいてビット列間の関連性の有無を判定する。この結果、互いに関連するビット列を精度よく発見できる。
<特定値の出現回数のカウント>
カウント部5は、ID毎に、受信メッセージのデータ領域の各ビット列の値を検出する。この実施例では、図7に示すように、各メッセージのデータ領域は64ビットである。また、モニタ期間内に50個のメッセージが攻撃検知装置1に到着する。
カウント部5は、1ビットのビット列について特定値が出現する回数をカウントする。ここで、ビット列の長さが1ビットである場合、特定値は「0」または「1」である。そして、カウント部5は、各受信メッセージの各ビットの値を検出する。図7に示す実施例では、攻撃検知装置1に到着した50個のメッセージのうち、第0ビットの値が「0」であるメッセージは35個であり、第0ビットの値が「1」であるメッセージは15個である。この場合、第0ビットにおいて「0」が出現する回数は35回であり、第0ビットにおいて「1」が出現する回数は15回である。また、第1ビットにおいて「0」および「1」が出現する回数は、それぞれ10回および40回である。さらに、第2ビットにおいて「0」および「1」が出現する回数は、それぞれ20回および30回である。以下、同様に、第63ビットまでそれぞれ特定値の出現回数がカウントされる。この結果、64箇所でデータが得られる。
続いて、カウント部5は、2ビットのビット列について特定値が出現する回数をカウントする。ここで、ビット列の長さが2ビットである場合、特定値は「00」「01」「10」または「11」である。そして、図7に示す実施例では、第0~第1ビットにおいて「00」「01」「10」「11」が出現する回数は、それぞれ8回、27回、2回、13回である。また、第1~第2ビットにおいて「00」「01」「10」「11」が出現する回数は、それぞれ6回、4回、14回、26回である。以下、同様に、第62~第63ビットまでそれぞれ特定値の出現回数がカウントされる。この結果、63箇所でのデータが得られる。
さらに、カウント部5は、3ビットのビット列~64ビットのビット列についても同様のカウント動作を行う。この結果、合計で2080(=64+63+・・・+1)箇所のデータが得られる。
図8は、特定値の出現回数をカウントする処理を高速化する方法の一例を示す。この高速化方法では、カウント部5は、ログ情報を参照して各受信メッセージの64ビットデータの値を検出し、検出した値に対応するカウンタをインクリメントする。例えば、受信メッセージのデータの値が「000・・・000」であったときは、「000・・・000」に対応するカウンタがインクリメントされる。この結果、モニタ期間内に受信した各メッセージから検出される64ビットデータの各値の出現回数が検出される。なお、カウント部5は、受信メッセージから検出された値に対してのみカウンタを用意するようにしてもよい。すなわち、受信メッセージから検出されなかった値に対応するカウントは、用意しなくてもよい。
1ビットデータ~63ビットデータの各値の出現回数は、64ビットデータの各値の出現回数から計算される。例えば、第0~第62ビットの63ビットデータの値が「000・・・00(63ビット)」である回数は、「000・・・000(64ビット)」の出現回数と「000・・・001(64ビット)」の出現回数との和により得られる。図8に示す例では、130回である。同様に、第1~第63ビットの63ビットデータの値が「00・・・000(63ビット)」である回数は、「000・・・000(64ビット)」の出現回数と「100・・・000(64ビット)」の出現回数との和により得られる。図8に示す例では、150回である。
このように、1ビットデータ~63ビットデータの各値の出現回数は、64ビットデータの各値の出現回数から計算される。この方法によれば、カウント部5は、64ビットデータの各値の出現回数をカウントするためにログ情報をリードする必要があるが、1ビットデータ~63ビットデータの各値の出現回数をカウントするためにログ情報を繰り返しリードする必要はない。したがって、この高速化方法は、特に、ログ情報のサイズが大きいときに有効である。
<変化回数のカウント>
カウント部5は、ID毎に、受信メッセージのデータ領域の各ビット列の値とその直前の受信メッセージ中の同じビット列の値とを比較する。そして、比較結果が一致しないときは、ビット列の値が変化したと判定される。なお、カウント部5は、特定値の出現回数のカウントと同様に、1ビット~64ビットのデータ列のそれぞれについて変化回数をカウントする。
図9は、ビット列の値の変化をカウントする処理を高速化する方法の一例を示す。この例では、あるIDを含む1500個のメッセージがモニタ期間内に攻撃検知装置1に到着したものとする。
この高速化方法では、カウント部5は、ログ情報を参照し、データ領域内の各1ビットデータがそれぞれ変化した回数をカウントする。例えば、第0ビットの変化回数は35回であり、第1ビットの変化回数は12回である。また、第60ビット、第61ビット、第62ビット、第63ビットの変化回数は、それぞれ、950回、8回、12回、0回である。
次に、カウント部5は、各2ビットデータがそれぞれ変化した回数をカウントする。すなわち、第0~第1ビットの2ビットデータから第62~第63ビットの2ビットデータの変化回数がそれぞれカウントされる。
ただし、変化回数がゼロであるビット(以下、無変化ビット)を含むビット列の変化回数は、無変化ビットの変化回数に依存しない。例えば、第63ビットの変化回数はゼロである。この場合、第62~第63ビットの2ビットデータの変化回数は、第62ビットの変化回数のみに依存し、第63ビットの変化回数には依存しない。すなわち、第62~第63ビットの2ビットデータの規則性は、第62ビットの規則性と実質的に同じである。したがって、カウント部5は、複数ビットのビット列の変化回数をカウントする処理において、無変化ビットを含むビット列を除外する。図9に示す例では、第62~第63ビットの2ビットデータの変化回数は、カウントされない。この結果、プロセッサの演算量が削減される。
また、高い頻度で値が変化するビット(以下、高頻度変化ビット)について規則性を検出することは困難である。加えて、図6のS3の近傍判定において高頻度変化ビットを含むビット列を使用すると、その判定精度が低下するおそれがある。よって、カウント部5は、複数ビットのビット列の変化回数をカウントする処理において、高頻度変化ビットを含むビット列を除外してもよい。図9に示す例では、第60ビットの変化回数は非常に多い。したがって、図9に示す例では、第60~第61ビットの2ビットデータの変化回数は、カウントされない。この結果、プロセッサの演算量が削減される。なお、一例としては、モニタ期間において、あるビットの変化回数が受信メッセージ数に対して所定の割合(例えば、2分の1)を超えたときに、そのビットが高頻度変化ビットと判定される。
同様に、カウント部5は、3ビットデータ~64ビットデータの変化回数をそれぞれカウントする。但し、無変化ビットまたは高頻度変化ビットを含むビット列の変化回数はカウントされない。例えば、第61~第63ビットの3ビットデータは、無変化ビット(即ち、第63ビット)を含むので、変化回数のカウントは行われない。
このように、カウント部5は、ID毎に、特定値が出現する回数およびビット列が変化する回数をカウントする。そして、関連性分析部6は、図6のS3において、これらのカウント結果を利用してビット列間の関連性を検出する。
<近傍探索>
上述したように、カウント部5は、ID毎に、特定値が出現する回数を表す出現回数および直前の受信メッセージに対して値が変化する回数を表す変化回数を検出する。そうすると、抽出部7は、出現回数または変化回数が互いに一致するビット列を抽出する。そして、判定部8は、抽出部7により抽出された2個以上のビット列に対して近傍探索を実行する。すなわち、判定部8は、抽出部7により抽出されたビット列間で、特定値が出現したタイミングまたは値が変化したタイミングの近似性を判定する。
図10は、近傍探索の一例を示す。この例では、モニタ期間内に、ID=0x100を含むメッセージM11~M17およびID=0x200を含むメッセージM21~M27が攻撃検知装置1に到着したものとする。なお、図10においては、各メッセージの受信時刻およびデータの値が例示されている。例えば、「0.500001」は、メッセージM11の受信時刻を表し、「00 01 12 13」は、メッセージM11のデータの値を表す。
この実施例では、メッセージM13、M15、M17の先頭バイトに「08」が出現している。すなわち、メッセージM11~M17の先頭バイトに「08」が出現する回数は3回である。一方、メッセージM23の最終バイトの値は、メッセージM22の最終バイトの値に対して変化している。同様に、メッセージM25の最終バイトの値はメッセージM24の最終バイトの値に対して変化し、メッセージM27の最終バイトの値はメッセージM26の最終バイトの値に対して変化している。すなわち、メッセージM21~M27の最終バイトの値が変化する回数は3回である。したがって、抽出部7は、互いに関連する可能性があるビット列を含むIDとして、ID=0x100およびID=0x200を抽出する。具体的には、抽出部7は、互いに関連する可能性があるビット列として、ID=0x100を含むメッセージの先頭バイトおよびID=0x200を含むメッセージの最終バイトを抽出する。以下の記載では、抽出部7により抽出されたビット列を「注目ビット列」と呼ぶことがある。
判定部8は、抽出部7により抽出された各注目ビット列について、最初に特定値が出現したタイミングまたは最初に値が変化したタイミングを検出する。この実施例では、ID=0x100において、注目ビット列に最初に特定値「08」が出現したタイミングA0として、メッセージM13の受信時刻が得られる。また、ID=0x200において、注目ビット列の値が最初に変化したタイミングB0として、メッセージM23の受信時刻が得られる。
さらに、判定部8は、注目ビット列に特定値が出現する時間間隔または注目ビット列の値が変化する時間間隔を検出する。この実施例では、ID=0x100において、時間間隔ΔA1として、メッセージM13の受信時刻とメッセージM15の受信時刻との差分が計算され、時間間隔ΔA2として、メッセージM15の受信時刻とメッセージM17の受信時刻との差分が計算される。また、ID=0x200においては、時間間隔ΔB1として、メッセージM23の受信時刻とメッセージM25の受信時刻との差分が計算され、時間間隔ΔB2として、メッセージM25の受信時刻とメッセージM27の受信時刻との差分が計算される。
そして、判定部8は、判定1~判定3に基づいてビット列の関連性を判定する。
判定1:判定部8は、A0とB0との差分の自乗値と所定の閾値TH1とを比較する。そして、A0とB0との差分の自乗値が閾値TH1以上であれば、1組のビット列間に関連性がないと判定される。なお、判定部8は、A0とB0との差分の絶対値と閾値TH1とを比較してもよい。
判定2:判定部8は、時間間隔ΔAiと時間間隔ΔBiとの差分の自乗値Xiと所定の閾値TH2とを比較する。このとき、各自乗値Xi(i=1、2、...)がそれぞれ閾値TH2と比較される。この結果、1つ以上の自乗値Xiが閾値TH2以上であれば、1組のビット列間に関連性がないと判定される。尚、判定部8は、自乗値Xiの代わりに、時間間隔ΔAiと時間間隔ΔBiとの差分の絶対値と閾値TH2とを比較してもよい。
判定3:判定部8は、判定2で使用した自乗値Xiの総和と所定の閾値TH3とを比較する。この結果、自乗値Xiの総和が閾値TH3以上であれば、1組のビット列間に関連性がないと判定される。なお、判定部8は、判定2で使用した自乗値Xiの総和の代わりに、時間間隔ΔAiと時間間隔ΔBiとの差分の絶対値の総和と閾値TH3とを比較してもよい。また、判定部8は、総和値を「サンプル数-1」で割算した結果と閾値TH3とを比較してもよい。
このように、判定部8は、判定1~判定3に基づいてビット列間の関連性を判定する。具体的には、例えば、A0とB0との差分の自乗値が閾値TH1より小さく、且つ、時間間隔ΔAiと時間間隔ΔBiとの差分の自乗値Xiがいずれも閾値TH2より小さく、且つ、自乗値Xiの総和が閾値TH3より小さいときに、判定部8は、上記1組のビット列が互いに関連していると判定する。
ただし、本発明の実施形態は、この方法に限定されるものではない。例えば、判定部8は、判定3を行わず、判定1~判定2に基づいてビット列間の関連性を判定してもよい。或いは、判定部8は、判定1~判定3のうちのいずれか1つに基づいてビット列間の関連性を判定してもよい。
図10に示す例では、下記の判定結果が得られる。なお、閾値TH1~TH3は、以下の値であるものとする。
TH1=0.2
TH2=0.04
TH3=0.000001
ID=0x100を含むメッセージM11~M17において以下の値が得られる。
A0=0.900002
ΔA1=1.300003-0.900002=0.400001
ΔA2=1.700001-1.300003=0.399998
ID=0x200を含むメッセージM21~M27において以下の値が得られる。
B0=1.000009
ΔB1=1.400009-1.000009=0.400000
ΔB2=1.800009-1.400009=0.400000
判定1の結果は以下の通りである。
|A0-B0|=0.100007<TH1
判定2の結果は以下の通りである。
(ΔA1-ΔB1)2=0.000000000001<TH2
(ΔA2-ΔB2)2=0.000000000004<TH2
判定3の結果は以下の通りである。なお、図10に示す例では、サンプル数は「2」である。
(ΔA1-ΔB1)2+(ΔA2-ΔB2)2/(2-1)=0.000000000005<TH3
よって、判定部8は、ID=0x100を含むメッセージの先頭バイトとID=0x200を含むメッセージの最終バイトとが関連性を有すると判定する。
そうすると、関連性分析部6は、この関連性を表すルールを作成する。具体的には、関連性分析部6は、下記のルールを作成する。
「ID=0x100を含むメッセージの先頭バイトにおいて「08」が出現すると、それに近いタイミングでID=0x200を含むメッセージの最終バイトの値が変化する」
関連性分析部6により作成されたルールは、関連性データベース9に記録される。そして、検知部10は、このルールから逸脱するメッセージをモニタすることにより、ネットワーク100への攻撃を検知する。
なお、上述の実施例では、2つのビット列間での関連性が検出されるが、関連性分析部6は、3以上のビット列間での関連性を検出してもよい。また、ビット列間の近似性を分析するときに、差分の自乗値を使用してもよいし、差分の絶対値を使用してもよい。
関連性分析部6は、同一ID内でビット列間の関連性を検出してもよい。例えば、あるIDを含むメッセージにおいて「受信メッセージの先頭バイトに「xx」が出現すると、0.2秒後に受信するメッセージの第2バイトの値が変化する」という規則性が検出されたときは、この規則性を表すルールが作成される。
<実施例>
メッセージ処理装置4の処理についてのより具体的な実施例を記載する。この実施例では、ID=0x100を含むメッセージおよびID=0x200を含むメッセージがネットワーク100に入力される。各メッセージは、4ビットのデータを格納する。ID=0x100を含むメッセージは、通常、約1秒間隔で送信される。ただし、送信間隔が約0.3秒となることがある。ID=0x200を含むメッセージも同様である。そして、所定のモニタ期間内に下記の18個のメッセージが攻撃検知装置1に到着したものとする。なお、受信メッセージを表すログ情報は、ログ情報格納部3に格納される。
TIME=1.000000 ID=0x100 DATA=0100
TIME=1.100000 ID=0x200 DATA=1001
TIME=1.300000 ID=0x100 DATA=0110
TIME=1.400000 ID=0x200 DATA=0110
TIME=2.300000 ID=0x100 DATA=0000
TIME=2.400000 ID=0x200 DATA=1110
TIME=3.300000 ID=0x100 DATA=1100
TIME=3.400000 ID=0x200 DATA=1110
TIME=4.300000 ID=0x100 DATA=1000
TIME=4.400000 ID=0x200 DATA=0010
TIME=5.300000 ID=0x100 DATA=0000
TIME=5.400000 ID=0x200 DATA=0110
TIME=5.600000 ID=0x100 DATA=1010
TIME=5.700000 ID=0x200 DATA=1011
TIME=6.600000 ID=0x100 DATA=1100
TIME=6.700000 ID=0x200 DATA=1111
TIME=6.900000 ID=0x100 DATA=0010
TIME=7.000000 ID=0x200 DATA=0001
メッセージ処理装置4は、モニタ期間内に記録されたログ情報をID毎に整理する。ID=0x100を含むメッセージについてのログ情報を図11に示し、ID=0x200を含むメッセージについてのログ情報を図12に示す。なお、以下の記載では、モニタ期間内に攻撃検知装置1に到着したID=0x100を含む9個のメッセージを「メッセージM11~M19」と呼ぶことがある。モニタ期間内に攻撃検知装置1に到着したID=0x200を含む9個のメッセージを「メッセージM21~M29」と呼ぶことがある。
カウント部5は、ID毎に、変化回数および出現回数をカウントする。以下では、一例として、図11を参照しながら、ID=0x100を含むメッセージM11~M19について変化回数および出現回数をカウントする処理を記載する。
カウント部5は、メッセージM11~M19の第0ビットの値の変化を探索する。この実施例では、メッセージM13、M14間で第0ビットの値が「0」から「1」に変化している。同様に、メッセージM15、M16間で値が「1」から「0」に変化し、メッセージM16、M17間で値が「0」から「1」に変化し、メッセージM18、M19間で値が「1」から「0」に変化している。よって、メッセージM11~M19の第0ビットの値の変化回数は、4回である。
同様に、第1ビットの値の変化回数は5回であり、第2ビットの値の変化回数も5回である。ただし、第3ビットの値の変化回数はゼロである。この場合、カウント部5は、第3ビットの値の変化回数を表すデータを出力しなくてもよい。また、ビット列の変化を探索する以降の処理において、第3ビットを含むビット列は除外される。
カウント部5は、2ビットのビット列の変化回数をカウントする。この実施例では、メッセージM12、M13間で第0~第1ビットの値が「01」から「00」に変化している。同様に、メッセージM13、M14間、メッセージM14、M15間、メッセージM15、M16間、メッセージM16、M17間、メッセージM17、M18間、メッセージM18、M19間でそれぞれ第0~第1ビットの値が変化している。よって、メッセージM11~M19の第0~第1ビットの値の変化回数は7回である。同様に、第1~第2ビットの値の変化回数も7回である。
なお、上述しように、ビット列の変化を探索する処理において、第3ビットを含むビット列は除外される。よって、カウント部5は、第2~第3ビットの変化回数をカウントしない。
また、カウント部5は、変化回数が所定の閾値よりも多いときに、そのカウント結果を出力しなくてもよい。例えば、変化回数が受信メッセージ数の80パーセントよりも多いときは、カウント部5は、そのカウント結果を出力しなくてもよい。加えて、ビット列の変化を探索する以降の処理において、第0~第1ビットを含むビット列、および第1~第2ビットを含むビット列は除外される。したがって、カウント部5は、3ビットデータの変化回数および4ビットデータの変化回数をカウントしない。
次に、カウント部5は、各ビット列について特定値の出現回数をカウントする。なお、以下の記載では、図8を参照しながら説明した高速化処理を行わないものとする。
カウント部5は、メッセージM11~M19の第0ビットに「0」及び「1」が出現する回数をそれぞれカウントする。この実施例では、メッセージM11、M12、M13、M16、M19の第0ビットの値が「0」である。また、メッセージM14、M15、M17、M18の第0ビットの値が「1」である。よって、メッセージM11~M19の第0ビットに「0」及び「1」が出現する回数は、それぞれ5回および4回である。
同様に、カウント部5は、第1ビット、第2ビット、第3ビットに「0」及び「1」が出現する回数をそれぞれカウントする。なお、第3ビットに「1」が出現する回数はゼロである。この場合、カウント部5は、このカウント結果を出力しなくてもよい。
カウント部5は、メッセージM11~M19の第0~第1ビットにおいて「00」「01」「10」「11」が出現する回数をそれぞれカウントする。この実施例では、メッセージM13、M16、M19の第0~第1ビットの値が「00」である。メッセージM11、M12の第0~第1ビットの値が「01」である。メッセージM15、M17の第0~第1ビットの値が「10」である。メッセージM14、M18の第0~第1ビットの値が「11」である。よって、第0~第1ビットに「00」「01」「10」「11」が出現する回数は、それぞれ3回、2回、2回、2回である。
同様に、カウント部5は、第1~第2ビットおよび第2~第3ビットにおいて「00」「01」「10」「11」が出現する回数をそれぞれカウントする。また、カウント部5は、第0~第2ビットおよび第1~第3ビットにおいて「000」~「111」が出現する回数をそれぞれカウントする。更に、カウント部5は、第0~第3ビットにおいて「0000」~「1111」が出現する回数をそれぞれカウントする。
さらに、カウント部5は、ID=0x200を含むメッセージM21~M29について変化回数および出現回数をそれぞれカウントする。このカウント結果は、図12に示す通りである。
抽出部7は、カウント部5によるカウント結果に基づいて、変化回数または出現回数が一致するビット列を抽出する。以下、変化回数または出現回数が1回~6回であったビット列を列挙する。なお、以下の表記において、例えば「特定値=11、ビット位置=1、長さ=2」は、第1~第2ビットの値が「11」である状態を表す。また「特定値=001、ビット位置=0、長さ=3」は、第0~第2ビットの値が「001」である状態を表す。
変化回数または出現回数:1回
ID=0x100
特定値=11、ビット位置=1、長さ=2
特定値=001、ビット位置=0、長さ=3
特定値=010、ビット位置=0、長さ=3
特定値=011、ビット位置=0、長さ=3
特定値=100、ビット位置=0、長さ=3
特定値=101、ビット位置=0、長さ=3
特定値=110、ビット位置=1、長さ=3
特定値=0010、ビット位置=0、長さ=4
特定値=0100、ビット位置=0、長さ=4
特定値=0110、ビット位置=0、長さ=4
特定値=1000、ビット位置=0、長さ=4
特定値=1010、ビット位置=0、長さ=4
ID=0x200
特定値=000、ビット位置=0、長さ=3
特定値=001、ビット位置=0、長さ=3
特定値=010、ビット位置=1、長さ=3
特定値=011、ビット位置=1、長さ=3
特定値=100、ビット位置=0、長さ=3
特定値=101、ビット位置=0、長さ=3
特定値=111、ビット位置=1、長さ=3
特定値=0001、ビット位置=0、長さ=4
特定値=0010、ビット位置=0、長さ=4
特定値=1001、ビット位置=0、長さ=4
特定値=1011、ビット位置=0、長さ=4
特定値=1111、ビット位置=0、長さ=4
変化回数または出現回数:2回
ID=0x100
特定値=01、ビット位置=0、長さ=2
特定値=01、ビット位置=1、長さ=2
特定値=10、ビット位置=0、長さ=2
特定値=11、ビット位置=0、長さ=2
特定値=000、ビット位置=0、長さ=3
特定値=010、ビット位置=1、長さ=3
特定値=110、ビット位置=0、長さ=3
特定値=0000、ビット位置=0、長さ=4
特定値=1100、ビット位置=0、長さ=4
ID=0x200
変化回数、ビット位置=2、長さ=1
変化回数、ビット位置=3、長さ=1
特定値=00、ビット位置=0、長さ=2
特定値=00、ビット位置=1、長さ=2
特定値=0、ビット位置=2、長さ=1
特定値=01、ビット位置=0、長さ=2
特定値=01、ビット位置=1、長さ=2
特定値=01、ビット位置=2、長さ=2
特定値=10、ビット位置=0、長さ=2
特定値=11、ビット位置=2、長さ=2
特定値=001、ビット位置=1、長さ=3
特定値=011、ビット位置=0、長さ=3
特定値=0110、ビット位置=0、長さ=4
特定値=1110、ビット位置=0、長さ=4
変化回数または出現回数:3回
ID=0x100
特定値=1、ビット位置=2、長さ=1
特定値=00、ビット位置=0、長さ=2
特定値=00、ビット位置=1、長さ=2
特定値=10、ビット位置=1、長さ=2
特定値=10、ビット位置=2、長さ=2
特定値=000、ビット位置=1、長さ=3
特定値=100、ビット位置=1、長さ=3
ID=0x200
変化回数、ビット位置=2、長さ=2
特定値=11、ビット位置=0、長さ=2
特定値=111、ビット位置=0、長さ=3
変化回数または出現回数:4回
ID=0x100
変化回数、ビット位置=0、長さ=1
特定値=1、ビット位置=0、長さ=1
特定値=1、ビット位置=1、長さ=1
ID=0x200
特定値=0、ビット位置=0、長さ=1
特定値=0、ビット位置=1、長さ=1
特定値=1、ビット位置=3、長さ=1
特定値=110、ビット位置=1、長さ=3
変化回数または出現回数:5回
ID=0x100
変化回数、ビット位置=1、長さ=1
変化回数、ビット位置=2、長さ=1
特定値=0、ビット位置=0、長さ=1
特定値=0、ビット位置=1、長さ=1
ID=0x200
変化回数、ビット位置=0、長さ=1
特定値=1、ビット位置=0、長さ=1
特定値=1、ビット位置=1、長さ=1
特定値=10、ビット位置=2、長さ=2
変化回数または出現回数:6回
ID=0x100
特定値=0、ビット位置=2、長さ=1
特定値=00、ビット位置=2、長さ=2
ID=0x200
変化回数、ビット位置=1、長さ=1
変化回数、ビット位置=1、長さ=3
そして、抽出部7は、変化回数または出現回数が互いに一致するビット列を抽出する。以下では、一例として、変化回数または出現回数が3回であるビット列について記載する。なお、変化回数または出現回数が3回であるビット列は、以下の通りである。
ID=0x100
ビット列A:特定値=1、ビット位置=2、長さ=1
ビット列B:特定値=00、ビット位置=0、長さ=2
ビット列C:特定値=00、ビット位置=1、長さ=2
ビット列D:特定値=10、ビット位置=1、長さ=2
ビット列E:特定値=10、ビット位置=2、長さ=2
ビット列F:特定値=000、ビット位置=1、長さ=3
ビット列G:特定値=100、ビット位置=1、長さ=3
ID=0x200
ビット列α:変化回数、ビット位置=2、長さ=2
ビット列β:特定値=11、ビット位置=0、長さ=2
ビット列γ:特定値=111、ビット位置=0、長さ=3
判定部8は、特定値が出現したタイミングまたは値が変化したタイミングの近似性に基づいて、抽出部7により抽出されたビット列間の関連性を判定する。このとき、判定部8は、抽出された各ビット列について、差分系列を作成する。差分系列は、初回受信時刻および差分情報から構成される。差分情報は、この実施例では、あるIDを含むメッセージにおいてある事象(すなわち、特定値の出現または値の変化)が発生したタイミングから次に同じ事象が発生したタイミングまでの時間間隔を表す。
例えば、ビット列Aは、ID=0x100を含むメッセージの第2ビットから開始され、ビット長が1ビット列であり、且つ、値が「1」であるビット列を表す。ここで、ビット列Aを含むメッセージ(即ち、第2ビットの値が「1」となっている、ID=0x100を含むメッセージ)は、図11に示すように、M12、M17、M19である。また、これら3個のメッセージのうちで最初に攻撃検知装置1(または、ログ取得機能)に到着したメッセージの受信時刻が、初回受信時刻TA0に相当する。さらに、これら3個のメッセージの受信時刻の時間間隔が、差分情報に相当する。したがって、ビット列Aに対して得られる差分系列Aは以下の通りである。
ビット列A(特定値=1、ビット位置=2、長さ=1)
M12:TIME=1.300000(=初回受信時刻TA0)
M17:TIME=5.600000
M19:TIME=6.900000
ΔTA1=5.600000-1.300000=4.300000
ΔTA2=6.900000-5.600000=1.300000
同様に、ビット列B~Gおよびビット列α~γに対して得られる差分系列B~Gおよび差分系列α~γは以下の通りである。
ビット列B(特定値=00、ビット位置=0、長さ=2)
M13:TIME=2.300000(=初回受信時刻TB0)
M16:TIME=5.300000
M19:TIME=6.900000
ΔTB1=5.300000-2.300000=3.000000
ΔTB2=6.900000-5.300000=1.600000
ビット列C(特定値=00、ビット位置=1、長さ=2)
M13:TIME=2.300000(=初回受信時刻TC0)
M15:TIME=4.300000
M16:TIME=5.300000
ΔTC1=4.300000-2.300000=2.000000
ΔTC2=5.300000-4.300000=1.000000
ビット列D(特定値=10、ビット位置=1、長さ=2)
M11:TIME=1.000000(=初回受信時刻TD0)
M14:TIME=3.300000
M18:TIME=6.600000
ΔTD1=3.300000-1.000000=2.300000
ΔTD2=6.600000-3.300000=3.300000
ビット列E(特定値=10、ビット位置=2、長さ=2)
M12:TIME=1.300000(=初回受信時刻TE0)
M17:TIME=5.600000
M19:TIME=6.900000
ΔTE1=5.600000-1.300000=4.300000
ΔTE2=6.900000-5.600000=1.300000
ビット列F(特定値=000、ビット位置=1、長さ=3)
M13:TIME=2.300000(=初回受信時刻TF0)
M15:TIME=4.300000
M16:TIME=5.300000
ΔTF1=4.300000-2.300000=2.000000
ΔTF2=5.300000-4.300000=1.000000
ビット列G(特定値=100、ビット位置=1、長さ=3)
M11:TIME=1.000000(=初回受信時刻TG0)
M14:TIME=3.300000
M18:TIME=6.600000
ΔTG1=3.300000-1.000000=2.300000
ΔTG2=6.600000-3.300000=3.000000
ビット列α(変化回数、ビット位置=2、長さ=2)
M22:TIME=1.400000(=初回受信時刻Tα0)
M27:TIME=5.700000
M29:TIME=7.000000
ΔTα1=5.700000-1.400000=4.300000
ΔTα2=7.000000-5.700000=1.300000
ビット列β(特定値=11、ビット位置=0、長さ=2)
M23:TIME=2.400000(=初回受信時刻Tβ0)
M24:TIME=3.400000
M28:TIME=6.7000000
ΔTβ1=3.400000-2.400000=1.000000
ΔTβ2=6.700000-3.400000=3.300000
ビット列γ(特定値=111、ビット位置=0、長さ=3)
M23:TIME=2.400000(=初回受信時刻Tγ0)
M24:TIME=3.400000
M28:TIME=6.7000000
ΔTγ1=3.400000-2.400000=1.000000
ΔTγ2=6.700000-3.400000=3.300000
なお、差分系列Aおよび差分系列Eは、互いに同じである。差分系列Cおよび差分系列Fは、互いに同じである。差分系列Dおよび差分系列Gは、互いに同じである。差分系列βおよび差分系列γは、互いに同じである。
この後、判定部8は、差分系列間の相関を計算することにより、任意の2つのビット列間の関連性を判定する。具体的には、上述した判定1~判定3を実行することにより、任意の2つのビット列間の関連性が判定される。なお、この実施例では、判定1~判定3において使用される閾値TH1~TH3は、以下の通りである。
TH1=0.2
TH2=0.04
TH3=0.1
ビット列Aとビット列αとの関連性を判定するときは、判定部8は、例えば、下記の計算を実行する。なお、この例では、判定1において差分の絶対値が使用される。また、判定2および判定3において差分の自乗値が使用される。
判定1:|TA0-Tα0|=|1.300000-1.400000|=0.1<TH1
判定2a:(ΔTA1-ΔTα1)2=(4.300000-4.300000)2=0<TH2
判定2b:(ΔTA2-ΔTα2)2=(1.300000-1.300000)2=0<TH2
判定3:(ΔTA1-ΔTα1)2+(ΔTA2-ΔTα2)2=0<TH3
判定1において、初回受信時刻の差分が閾値TH1より小さい。よって、ビット列Aとビット列αとが関連する可能性があると判定される。また、判定2において、ビット列Aに特定値の出現するタイミングとビット列αの値が変化するタイミングとの差分の自乗値は、いずれも閾値TH2より小さい。よって、この評価においても、ビット列Aとビット列αとが関連する可能性があると判定される。さらに、判定3において、判定2で使用した自乗値の総和が閾値TH3より小さい。よって、この評価においても、ビット列Aとビット列αとが関連する可能性があると判定される。そして、判定1~判定3のそれぞれにおいてビット列Aとビット列αとが関連する可能性があると判定されると、判定部8は、ビット列Aとビット列αとが関連すると判定する。
そうすると、関連性分析部6は、この関連性を表すルールを作成する。ここで、ビット列Aに特定値が出現する各タイミングと、ビット列αの値が変化する対応するタイミングとの差分は、それぞれ約0.1秒である。また、ビット列Aは、ID=0x100を含むメッセージの第2ビットであり、その特定値は「1」である。ビット列αは、ID=0x200を含むメッセージの第2~第3ビットであり、その値が変化する。したがって、関連性分析部6は、下記のルールを作成する。
「ID=0x100を含み、第2ビットが「1」であるメッセージが送信されたときは、その約0.1秒後に、ID=0x200を含み、直前のメッセージに対して第2~第3ビットの値が変化したメッセージが送信される」
そして、このルールは、関連性データベース9に記録される。
ビット列Aとビット列βとの関連性を判定するときは、判定部8は、下記の計算を実行する。
判定1:|TA0-Tβ0|=|1.300000-2.400000|=1.1>TH1
判定2a:(ΔTA1-ΔTβ1)2=(4.300000-1.000000)2=10.890000>TH2
判定2b:(ΔTA2-ΔTβ2)2=(1.300000-3.300000)2=4.000000>TH2
判定3:(ΔTA1-ΔTβ1)2+(ΔTA2-ΔTβ2)2=14.890000>TH3
この例では、判定1~判定3の計算結果は、いずれも対応する閾値より大きい。したがって、この場合、判定部8は、ビット列Aとビット列βとの間に関連性が存在しないと判定する。
同様に、判定部8は、任意の2つのビット列間の関連性を判定する。このとき、判定部8は、異なるID間でビット列の関連性を判定することに加えて、同一ID内のビット列間の関連性を判定してもよい。
また、特定値の出現または値の変化のタイミングが互いに完全に一致する2以上のビット列をグループ化してもよい。例えば、上述の実施例では、差分系列Aおよび差分系列Eは互いに同じなので、ビット列Aおよびビット列Eはグループ化される。ここで、ビット列Aおよびビット列αは、互いに関連すると判定されている。よって、ビット列Eおよびビット列αも、互いに関連すると判定される。そして、この関連性に基づいて下記のルールが作成される。
「ID=0x100を含み、第2~第3ビットが「11」であるメッセージが送信されたときは、その約0.1秒後に、ID=0x200を含み、直前のメッセージに対して第2~第3ビットの値が変化したメッセージが送信される」
そして、このルールも、関連性データベース9に記録される。
なお、上述の実施例では、各IDの送信周期が同じであるものとして説明したが、ネットワーク100において、各IDの送信周期は互いに同じである必要はない。そして、各IDの送信周期が互いに同じでないときは、カウント部5によりカウントされるカウント値(出現回数または変化回数)を正規化することが好ましいことがある。
例えば、ID_Aの送信周期が20m秒であり、ID_Bの送信周期が10m秒であるものとする。そして、ID_Aのメッセージに起因してID_Bのメッセージのデータの値が影響を受けるものとする。この場合、ID_Bのメッセージと比較すると、ID_Aのメッセージの受信回数は2分の1である。よって、カウント部5は、各IDの送信周期に基づいてカウント値を正規化してよい。具体的には、カウント部5は、ID_Aにおいて得られたカウント値に、正規化係数として「2」を乗算する。あるいは、カウント部5は、ID_Bにおいて得られたカウント値に、正規化係数として「0.5」を乗算してもよい。
また、別の例として、ID_Cのメッセージの所定のビットが反転したときに、ID_Dのメッセージが2個送信されるものとする。この場合、ID_Cの変化回数を2倍にする正規化を行ってもよいし、ID_Dのメッセージに係わるカウント値を2分の1にする正規化を行ってもよい。
<攻撃の検知>
上述したように、攻撃検知装置1は、何らかの事象の発生に起因してメッセージ中のデータの値が変化する状態および/またはメッセージ中に特定値が出現する状態を利用してネットワークへの攻撃を検知する。この検知方法は、ネットワークが攻撃されていないときにデータの値が変化する回数および/または特定値が出現する回数を調べておき、その結果に基づいて検知ルールを作成しておくことで実現される。したがって、この方法によれば、非周期的にメッセージが送信され得るネットワークにおいても、攻撃検知装置1はネットワークへの攻撃を検知できる。以下では、検知ルールを利用してネットワークへの攻撃を検知する方法の例を記載する。
図13に示す例では、ID間でメッセージ内の所定のデータ領域に相関が存在する。すなわち、ネットワーク100に対する攻撃がないときは、図13(a)に示すように、ID=0x100を含むメッセージが送信されると、約0.1秒後に、ID=0x200を含むメッセージが送信される。例えば、メッセージM11が送信されると、その約0.1秒後にメッセージM21が送信される。また、ID=0x100を含むメッセージおよびID=0x200を含むメッセージそれぞれにおいて、常時、先頭バイトが変化する。例えば、メッセージM11~M14の先頭バイトの値は、順番に、00、15、32、F4と変化している。この場合、以下の検知ルールが作成される。
ルール1:ID=0x100を含むメッセージが送信されると、約0.1秒後にID=0x200を含むメッセージが送信される。
ルール2:各IDにおいて先頭バイトの値が常に変化する。
このケースにおいて、図13(b)に示すように、ID=0x200を含むメッセージM31がネットワーク100に入力されるものとする。なお、攻撃者は、メッセージM22をコピーすることによりメッセージM31を生成している。ここで、メッセージM13の受信時刻とメッセージM31の受信時刻との差分は約0.1秒であり、検知ルール1は満たされている。しかし、メッセージM31の先頭ビットの値は、メッセージM22に対して変化していない。すなわち、検知ルール2は満たされていない。したがって、攻撃検知装置1は、メッセージM31を用いたネットワーク100への攻撃を検知できる。
図14に示す例では、メッセージの送信タイミングとデータの変化との間に相関が存在する。すなわち、ネットワーク100に対する攻撃がないときは、図14(a)に示すように、基本的には、約0.3秒周期でメッセージが送信される。そして、メッセージの送信周期が変化するときは、最終バイトの値が変化する。例えば、メッセージM11~M13は、約0.3秒周期で送信されており、その最終バイトの値はそれぞれ「13」である。そして、メッセージM13から約0.1秒後にメッセージM14が送信されたとき、メッセージM14の最終バイトの値は「56」に変化している。この場合、以下の検知ルールが作成される。
ルール1:メッセージの送信周期が約0.3秒であるときは、最終バイトの値は、直前のメッセージの最終バイトの値と同じである。
ルール2:メッセージの送信周期が約0.3秒でないときは、最終バイトの値は、直前のメッセージの最終バイトの値に対して変化する。
このケースにおいて、図14(b)に示すように、メッセージM32がネットワーク100に入力されるものとする。ここで、メッセージM13の受信時刻とメッセージM32の受信時刻との差分は約0.05秒である。しかし、メッセージM32の最終バイトの値は、メッセージM13の最終バイトの値と同じであり、ルール2は満たされていない。したがって、攻撃検知装置1は、メッセージM32を用いたネットワーク100への攻撃を検知できる。
図15に示す例では、メッセージの送信タイミングと特定値の出現との間に相関が存在する。すなわち、ネットワーク100に対する攻撃がないときは、図15(a)に示すように、基本的には、約0.3秒周期でメッセージが送信される。そして、メッセージの送信周期が変化するときは、先頭バイト(または、先頭ビット)に特定値が出現する。たとえば、メッセージM11~M13は、約0.3秒周期で送信されており、その先頭バイトの値はそれぞれ「00」である。そして、メッセージM13から約0.1秒後にメッセージM14が送信されたとき、メッセージM14の先頭バイトに「80」が出現(或いは、先頭ビットに「1」が出現)している。この場合、以下の検知ルールが作成される。
ルール1:メッセージの送信周期が約0.3秒であるときは、先頭バイトに「00」が出現(或いは、先頭ビットに「0」が出現)する。
ルール2:メッセージの送信周期が約0.3秒でないときは、先頭バイトに「80」が出現(或いは、先頭ビットに「1」が出現)する。
このケースにおいて、図15(b)に示すように、メッセージM33がネットワーク100に入力されるものとする。ここで、メッセージM13の受信時刻とメッセージM33の受信時刻との差分は約0.05秒である。しかし、メッセージM33の先頭バイトまたは先頭ビットに特定値は出現しておらず、ルール2は満たされていない。したがって、攻撃検知装置1は、メッセージM33を用いたネットワーク100への攻撃を検知できる。
図16に示す例では、図13~図15に示す規則性が組み合わされている。すなわち、ネットワーク100に対する攻撃がないときは、図16(a)に示すように、ID毎に、約0.3秒周期でメッセージが送信される。ID=0x100を含むメッセージが送信されると、約0.1秒後に、ID=0x200を含むメッセージが送信される。ID=0x200を含むメッセージにおいて、メッセージの送信周期が変化するときは、先頭バイトに「00」が出現(先頭ビットに「0」が出現)し、且つ、直前の受信メッセージに対して最終バイトの値が変化する。この場合、以下の検知ルールが作成される。
ルール1:ID=0x100を含むメッセージが送信されると、約0.1秒後にID=0x200を含むメッセージが送信される。
ルール2:メッセージの送信周期が約0.3秒でないときは、先頭バイトに「00」が出現(或いは、先頭ビットに「0」が出現)する。
ルール3:ID=0x200を含むメッセージの送信周期が約0.3秒でないときは、最終バイトの値は、直前のメッセージの最終バイトの値に対して変化する。
このケースにおいて、図16(b)に示すように、ID=0x200を含むメッセージM34がネットワーク100に入力されるものとする。ここで、メッセージM24の受信時刻とメッセージM34の受信時刻との差分は約0.05秒である。また、メッセージM34の先頭バイトに「00」が出現(或いは、先頭ビットに「0」が出現)している。さらに、メッセージM34の最終バイトの値は、直前のメッセージの最終バイトの値に対して変化している。よって、ルール2およびルール3は満たされている。しかし、メッセージM34の受信時刻の約0.1秒前に、ID=0x100を含むメッセージが攻撃検知装置1に到着していない。すなわち、ルール1は満たされていない。したがって、攻撃検知装置1は、メッセージM34を用いたネットワーク100への攻撃を検知できる。
このように、攻撃検知装置1は、メッセージ処理装置4により作成された検知ルールを利用してネットワーク100への攻撃を検知する。ここで、メッセージ処理装置4は、上述したように、互いに関連するビット列を精度よく発見できるので、正確な検知ルールを作成できる。したがって、攻撃検知装置1は、ネットワーク100への攻撃を精度よく検知できる。
上述の実施例を含む実施形態に関し、さらに下記の付記を開示する。
(付記1)
ネットワーク内で送信される識別情報を含むメッセージを処理するメッセージ処理装置であって、
所定のモニタ期間内に受信したメッセージに含まれる識別情報ごとに、メッセージ中の単一ビットまたは連続する複数ビットで定義されるビット列それぞれについて、所定の事象が発生した回数をカウントするカウント部と、
前記カウント部によりカウントされた回数が互いに一致する第1のビット列および第2のビット列を抽出する抽出部と、
前記第1のビット列において前記所定の事象の中の第1の事象が発生したタイミングと、前記第2のビット列において前記所定の事象の中の第2の事象が発生したタイミングとの近似性に基づいて、前記第1のビット列と前記第2のビット列との間の関連性を判定する判定部と、
を備えるメッセージ処理装置。
(付記2)
前記抽出部は、第1の識別情報を含むメッセージから前記第1のビット列を抽出し、前記第1の識別情報と異なる第2の識別情報を含むメッセージから前記第2のビット列を抽出する
ことを特徴とする付記1に記載のメッセージ処理装置。
(付記3)
前記所定の事象は、ビット列に特定値が出現すること、又は、ビット列の値が直前の受信メッセージ中の対応するビット列の値に対して変化することであり、
前記カウント部は、受信メッセージに含まれる識別情報ごとに、各ビット列について、特定値が出現する回数を表す出現回数または直前の受信メッセージ中の対応するビット列に対して値が変化する回数を表す変化回数をカウントする
ことを特徴とする付記1または2に記載のメッセージ処理装置。
(付記4)
前記カウント部は、単一ビットのビット列から順番にビット長を1ビットずつ長くしながら各ビット列の変化回数をカウントするときに、前記モニタ期間における変化回数がゼロであるビット列を含むビット列については、カウント動作を行わない
ことを特徴とする付記3に記載のメッセージ処理装置。
(付記5)
前記カウント部は、単一ビットのビット列から順番にビット長を1ビットずつ長くしながら各ビット列の変化回数をカウントするときに、前記モニタ期間における変化回数が所定数より多いビット列を含むビット列については、カウント動作を行わない
ことを特徴とする付記4に記載のメッセージ処理装置。
(付記6)
前記カウント部は、
前記メッセージのデータ領域の長さと同じ長さのビット列において出現した値ごとにそれぞれ出現回数をカウントし、
前記値ごとの出現回数に基づいて、前記データ領域の長さより短い各ビット列において特定値が出現した回数を計算する
ことを特徴とする付記3に記載のメッセージ処理装置。
(付記7)
前記判定部は、前記第1のビット列において最初に前記第1の事象が発生したタイミングと、前記第2のビット列において最初に前記第2の事象が発生したタイミングとの差分に基づいて、前記第1のビット列と前記第2のビット列との間の関連性を判定する
ことを特徴とする付記1~6のいずれか1つに記載のメッセージ処理装置。
(付記8)
前記判定部は、前記差分の絶対値または前記差分の自乗値が第1の閾値以上であるときは、前記第1のビット列と前記第2のビット列との間に関連性がないと判定する
ことを特徴とする付記7に記載のメッセージ処理装置。
(付記9)
前記判定部は、前記第1のビット列において前記第1の事象が発生したタイミングから次に前記第1の事象が発生したタイミングまでの時間間隔と、前記第2のビット列において前記第2の事象が発生したタイミングから次に前記第2の事象が発生したタイミングまでの時間間隔との差分に基づいて、前記第1のビット列と前記第2のビット列との間の関連性を判定する
ことを特徴とする付記1~8のいずれか1つに記載のメッセージ処理装置。
(付記10)
前記判定部は、前記差分の絶対値または前記差分の自乗値が第2の閾値以上であるときは、前記第1のビット列と前記第2のビット列との間に関連性がないと判定する
ことを特徴とする付記9に記載のメッセージ処理装置。
(付記11)
前記判定部は、前記モニタ期間内での前記差分の総和が第3の閾値以上であるときは、前記第1のビット列と前記第2のビット列との間に関連性がないと判定する
ことを特徴とする付記9に記載のメッセージ処理装置。
(付記12)
ネットワーク内で送信される識別情報を含むメッセージを処理するメッセージ処理方法であって、
所定のモニタ期間内に受信したメッセージに含まれる識別情報ごとに、メッセージ中の単一ビットまたは連続する複数ビットで定義されるビット列それぞれについて、所定の事象が発生した回数をカウントし、
カウントされた回数が互いに一致する第1のビット列および第2のビット列を抽出し、
前記第1のビット列において前記所定の事象の中の第1の事象が発生したタイミングと、前記第2のビット列において前記所定の事象の中の第2の事象が発生したタイミングとの近似性に基づいて、前記第1のビット列と前記第2のビット列との間の関連性を判定する
ことを特徴とするメッセージ処理方法。
(付記13)
ネットワーク内で送信される識別情報を含むメッセージを処理するメッセージ処理装置において、
所定のモニタ期間内に受信したメッセージに含まれる識別情報ごとに、メッセージ中の単一ビットまたは連続する複数ビットで定義されるビット列それぞれについて、所定の事象が発生した回数をカウントし、
カウントされた回数が互いに一致する第1のビット列および第2のビット列を抽出し、
前記第1のビット列において前記所定の事象の中の第1の事象が発生したタイミングと、前記第2のビット列において前記所定の事象の中の第2の事象が発生したタイミングとの近似性に基づいて、前記第1のビット列と前記第2のビット列との間の関連性を判定する
処理をプロセッサに実行させるメッセージ処理プログラム。
(付記14)
識別情報を含むメッセージが送信されるネットワークへの攻撃を検知する攻撃検知装置であって、
第1のビット列において第1の事象が発生することと第2のビット列において第2の事象が発生することとの間の関連性に基づいて、前記ネットワークへの攻撃を検知する検知部を備える攻撃検知装置。
(付記15)
所定のモニタ期間内に受信したメッセージに含まれる識別情報ごとに、メッセージ中の単一ビットまたは連続する複数ビットで定義されるビット列それぞれについて、前記第1の事象および前記第2の事象が発生した回数をそれぞれカウントするカウント部と、
前記カウント部によりカウントされた回数が互いに一致する前記第1のビット列および前記第2のビット列を抽出する抽出部と、
前記第1のビット列において前記第1の事象が発生したタイミングと、前記第2のビット列において前記第2の事象が発生したタイミングとが互いに近似しているときに、前記第1のビット列において前記第1の事象が発生することと前記第2のビット列において前記第2の事象が発生することとの間に関連性が存在すると判定する判定部と、
をさらに備え、
前記検知部は、前記第1のビット列において前記第1の事象が発生することと前記第2のビット列において前記第2の事象が発生することとの間の関連性に基づいて、前記ネットワークへの攻撃を検知する
ことを特徴とする付記14に記載の攻撃検知装置。
1 攻撃検知装置
2 受信部
3 ログ情報格納部
4 メッセージ処理装置
5 カウント部
6 関連性分析部
7 抽出部
8 判定部
9 関連性データベース
10 検知部
24 プロセッサ
100 ネットワーク
500 コンピュータ

Claims (10)

  1. ネットワーク内で送信される識別情報を含むメッセージを処理するメッセージ処理装置であって、
    所定のモニタ期間内に受信したメッセージに含まれる識別情報ごとに、メッセージ中の単一ビットまたは連続する複数ビットで定義されるビット列それぞれについて、所定の事象が発生した回数をカウントするカウント部と、
    前記カウント部によりカウントされた回数が互いに一致する第1のビット列および第2のビット列を抽出する抽出部と、
    前記第1のビット列において前記所定の事象の中の第1の事象が発生したタイミングと、前記第2のビット列において前記所定の事象の中の第2の事象が発生したタイミングとの近似性に基づいて、前記第1のビット列と前記第2のビット列との間の関連性を判定する判定部と、
    を備えるメッセージ処理装置。
  2. 前記抽出部は、第1の識別情報を含むメッセージから前記第1のビット列を抽出し、前記第1の識別情報と異なる第2の識別情報を含むメッセージから前記第2のビット列を抽出する
    ことを特徴とする請求項1に記載のメッセージ処理装置。
  3. 前記所定の事象は、ビット列に特定値が出現すること、又は、ビット列の値が直前の受信メッセージ中の対応するビット列の値に対して変化することであり、
    前記カウント部は、受信メッセージに含まれる識別情報ごとに、各ビット列について、特定値が出現する回数を表す出現回数または直前の受信メッセージ中の対応するビット列に対して値が変化する回数を表す変化回数をカウントする
    ことを特徴とする請求項1または2に記載のメッセージ処理装置。
  4. 前記カウント部は、単一ビットのビット列から順番にビット長を1ビットずつ長くしながら各ビット列の変化回数をカウントするときに、前記モニタ期間における変化回数がゼロであるビット列を含むビット列については、カウント動作を行わない
    ことを特徴とする請求項3に記載のメッセージ処理装置。
  5. 前記カウント部は、単一ビットのビット列から順番にビット長を1ビットずつ長くしながら各ビット列の変化回数をカウントするときに、前記モニタ期間における変化回数が所定数より多いビット列を含むビット列については、カウント動作を行わない
    ことを特徴とする請求項4に記載のメッセージ処理装置。
  6. 前記カウント部は、
    前記メッセージのデータ領域の長さと同じ長さのビット列において出現した値ごとにそれぞれ出現回数をカウントし、
    前記値ごとの出現回数に基づいて、前記データ領域の長さより短い各ビット列において特定値が出現した回数を計算する
    ことを特徴とする請求項3に記載のメッセージ処理装置。
  7. 前記判定部は、前記第1のビット列において最初に前記第1の事象が発生したタイミングと、前記第2のビット列において最初に前記第2の事象が発生したタイミングとの差分に基づいて、前記第1のビット列と前記第2のビット列との間の関連性を判定する
    ことを特徴とする請求項1~6のいずれか1つに記載のメッセージ処理装置。
  8. 前記判定部は、前記第1のビット列において前記第1の事象が発生したタイミングから次に前記第1の事象が発生したタイミングまでの時間間隔と、前記第2のビット列において前記第2の事象が発生したタイミングから次に前記第2の事象が発生したタイミングまでの時間間隔との差分に基づいて、前記第1のビット列と前記第2のビット列との間の関連性を判定する
    ことを特徴とする請求項1~7のいずれか1つに記載のメッセージ処理装置。
  9. ネットワーク内で送信される識別情報を含むメッセージを処理するメッセージ処理方法であって、
    所定のモニタ期間内に受信したメッセージに含まれる識別情報ごとに、メッセージ中の単一ビットまたは連続する複数ビットで定義されるビット列それぞれについて、所定の事象が発生した回数をカウントし、
    カウントされた回数が互いに一致する第1のビット列および第2のビット列を抽出し、
    前記第1のビット列において前記所定の事象の中の第1の事象が発生したタイミングと、前記第2のビット列において前記所定の事象の中の第2の事象が発生したタイミングとの近似性に基づいて、前記第1のビット列と前記第2のビット列との間の関連性を判定する
    ことを特徴とするメッセージ処理方法。
  10. ネットワーク内で送信される識別情報を含むメッセージを処理するメッセージ処理装置において、
    所定のモニタ期間内に受信したメッセージに含まれる識別情報ごとに、メッセージ中の単一ビットまたは連続する複数ビットで定義されるビット列それぞれについて、所定の事象が発生した回数をカウントし、
    カウントされた回数が互いに一致する第1のビット列および第2のビット列を抽出し、
    前記第1のビット列において前記所定の事象の中の第1の事象が発生したタイミングと、前記第2のビット列において前記所定の事象の中の第2の事象が発生したタイミングとの近似性に基づいて、前記第1のビット列と前記第2のビット列との間の関連性を判定する
    処理をプロセッサに実行させるメッセージ処理プログラム。
JP2019003197A 2019-01-11 2019-01-11 メッセージ処理装置およびメッセージ処理方法 Active JP7182470B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019003197A JP7182470B2 (ja) 2019-01-11 2019-01-11 メッセージ処理装置およびメッセージ処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019003197A JP7182470B2 (ja) 2019-01-11 2019-01-11 メッセージ処理装置およびメッセージ処理方法

Publications (2)

Publication Number Publication Date
JP2020113893A JP2020113893A (ja) 2020-07-27
JP7182470B2 true JP7182470B2 (ja) 2022-12-02

Family

ID=71668317

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019003197A Active JP7182470B2 (ja) 2019-01-11 2019-01-11 メッセージ処理装置およびメッセージ処理方法

Country Status (1)

Country Link
JP (1) JP7182470B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000041015A (ja) 1998-07-23 2000-02-08 Toyo Commun Equip Co Ltd マルチフレーム同期検出装置
JP2001086140A (ja) 1999-07-14 2001-03-30 Deere & Co ネットワーク・メッセージの処理方法
JP2017112594A (ja) 2015-12-14 2017-06-22 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America セキュリティ装置、ネットワークシステム及び攻撃検知方法
JP2017123639A (ja) 2016-01-08 2017-07-13 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 不正検知方法、監視電子制御ユニット及び車載ネットワークシステム
WO2018105330A1 (ja) 2016-12-06 2018-06-14 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 情報処理方法、情報処理システム、及びプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000041015A (ja) 1998-07-23 2000-02-08 Toyo Commun Equip Co Ltd マルチフレーム同期検出装置
JP2001086140A (ja) 1999-07-14 2001-03-30 Deere & Co ネットワーク・メッセージの処理方法
JP2017112594A (ja) 2015-12-14 2017-06-22 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America セキュリティ装置、ネットワークシステム及び攻撃検知方法
JP2017123639A (ja) 2016-01-08 2017-07-13 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 不正検知方法、監視電子制御ユニット及び車載ネットワークシステム
WO2018105330A1 (ja) 2016-12-06 2018-06-14 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 情報処理方法、情報処理システム、及びプログラム

Also Published As

Publication number Publication date
JP2020113893A (ja) 2020-07-27

Similar Documents

Publication Publication Date Title
EP3598329B1 (en) Information processing method, information processing system, and program
US20170132523A1 (en) Periodicity Analysis on Heterogeneous Logs
WO2019184557A1 (zh) 定位根因告警的方法、装置和计算机可读存储介质
KR100473304B1 (ko) 응답시간측정장치및방법
US10866939B2 (en) Alignment and deduplication of time-series datasets
JP3957712B2 (ja) 通信監視システム
WO2013147226A1 (ja) 利用者体感品質推定装置、端末ボトルネック判定装置、類似操作抽出装置、及び方法、並びにプログラム
US11050771B2 (en) Information processing apparatus, communication inspecting method and medium
CN112787984A (zh) 一种基于相关分析的车载网络异常检测方法及系统
CN107682354B (zh) 一种网络病毒检测方法、装置及设备
JP2021527873A (ja) プロトコルに依存しない異常検出
CN115085948B (zh) 基于改进d-s证据理论的网络安全态势评估方法
CN112087450B (zh) 一种异常ip识别方法、系统及计算机设备
WO2021262344A1 (en) Method and apparatus to detect scripted network traffic
JP7182470B2 (ja) メッセージ処理装置およびメッセージ処理方法
CN113282920A (zh) 日志异常检测方法、装置、计算机设备和存储介质
CN112380073A (zh) 一种故障位置的检测方法、装置及可读存储介质
CN117216765A (zh) 一种漏洞可达性检测方法、装置、设备及可读存储介质
US11593245B2 (en) System, device and method for frozen period detection in sensor datasets
CN115296904B (zh) 域名反射攻击检测方法及装置、电子设备、存储介质
US20230246935A1 (en) Detecting behavioral change of iot devices using novelty detection based behavior traffic modeling
CN113535458B (zh) 异常误报的处理方法及装置、存储介质、终端
CN115426133B (zh) 基于异构特征簇的深度学习网络异常检测模型构建方法、检测方法和系统
US9317386B2 (en) Event processing method and apparatus performing the same
RU2787078C1 (ru) Способ выявления аномалий в работе высоконагруженной сети автоматизированной телекоммуникационной системы

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220706

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220922

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20220922

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221121

R150 Certificate of patent or registration of utility model

Ref document number: 7182470

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150