(57)【要約】【課題】ネットワーク上での攻撃を検知する精度を向上させる。【解決手段】攻撃検知装置は、受信部、複数のカウンタ、および検知部を備える。受信部は、ネットワーク内で送信される識別情報を含むメッセージを受信する。複数のカウンタは、互いに異なるタイミングで設定される同じ長さの複数の時間ウィンドウ内に受信部が受信するメッセージの個数をそれぞれカウントする。検知部は、対応するカウンタの値が所定の閾値を超えた状態が、所定数の時間ウィンドウについて連続して検出されたときに、ネットワークが攻撃を受けたと判定する。【選択図】図４
2019126003.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク内で送信される識別情報を含むメッセージを受信する受信部と、
互いに異なるタイミングで設定される同じ長さの複数の時間ウィンドウ内に前記受信部が受信するメッセージの個数をそれぞれカウントする複数のカウンタと、
対応するカウンタの値が所定の閾値を超えた状態が、所定数の時間ウィンドウについて連続して検出されたときに、前記ネットワークが攻撃を受けたと判定する検知部と、
を備える攻撃検知装置。
【請求項２】
設定される時間ウィンドウの数がｎ（ｎは、２以上の整数）であるときに、各時間ウィンドウの長さは、前記識別情報に対応して設定された前記メッセージが送信される周期のｎ倍であり、且つ、前記閾値はｎであり、
前記複数の時間ウィンドウは、前記周期と同じ時間だけ順番にシフトして設定され、
対応するカウンタの値が所定の閾値を超えた状態が、ｎ個の時間ウィンドウについて連続して検出されたときに、前記検知部は、前記ネットワークが攻撃を受けたと判定する
ことを特徴とする請求項１に記載の攻撃検知装置。
【請求項３】
ネットワーク内で送信される識別情報を含むメッセージを受信する受信部と、
互いに異なるタイミングで設定される同じ長さの複数の時間ウィンドウ内に前記受信部が受信するメッセージの個数をそれぞれカウントする複数のカウンタと、
各カウンタの値がそれぞれ対応する時間ウィンドウに対して設定される互いに異なる閾値を超えたときに、前記ネットワークが攻撃を受けたと判定する検知部と、
を備える攻撃検知装置。
【請求項４】
設定される時間ウィンドウの数がｎ（ｎは、２以上の整数）であるときに、各時間ウィンドウの長さは、前記識別情報に対応して設定された前記メッセージが送信される周期のｎ倍であり、
前記複数の時間ウィンドウは、前記周期と同じ時間だけ順番にシフトして設定され、
前記複数の時間ウィンドウのなかの最も古い時間ウィンドウに対して設定される閾値はｎであり、他の時間ウィンドウに対しては、古い順にｎを基準として１ずつ小さい閾値が設定される
ことを特徴とする請求項３に記載の攻撃検知装置。
【請求項５】
ネットワーク内で送信される識別情報を含むメッセージを受信する受信部と、
前記受信部により受信されるメッセージの頻度に基づいてそれぞれ前記ネットワークへの攻撃の有無を判定する第１の判定部および第２の判定部と、
前記第１の判定部および前記第２の判定部による判定結果に基づいて、前記ネットワークが攻撃を受けたか否かを判定する２次判定部と、を備え、
前記第１の判定部および前記第２の判定部は、それぞれ、
互いに異なるタイミングで設定される同じ長さの複数の時間ウィンドウ内に前記受信部が受信するメッセージの個数をそれぞれカウントする複数のカウンタと、
前記複数のカウンタの値に基づいて前記ネットワークへの攻撃を検知する検知部と、を含み、
前記第２の判定部の各時間ウィンドウは、前記第１の判定部の対応する時間ウィンドウに対してそれぞれ所定時間だけシフトして設定されている
ことを特徴とする攻撃検知装置。
【請求項６】
前記第２の判定部の各時間ウィンドウは、前記第１の判定部の対応する時間ウィンドウに対してそれぞれ前記識別情報に対応して設定された前記メッセージが送信される周期の２分の１だけシフトして設定されている
ことを特徴とする請求項５に記載の攻撃検知装置。
【請求項７】
前記２次判定部は、所定時間内に前記第１の判定部および前記第２の判定部の双方により前記ネットワークへの攻撃が検知されたときに、前記ネットワークが攻撃を受けたと判定する
ことを特徴とする請求項５に記載の攻撃検知装置。
【請求項８】
互いに異なるタイミングで設定される同じ長さの複数の時間ウィンドウ毎に、識別情報を含むメッセージの受信数をそれぞれカウントし、
対応するカウント値が所定の閾値を超えた状態が、所定数の時間ウィンドウについて連続して検出されたときに、前記識別情報を含むメッセージを伝送するネットワークが攻撃を受けたと判定する
ことを特徴とする攻撃検知方法。
【請求項９】
各カウント値がそれぞれ対応する時間ウィンドウに対して設定される互いに異なる閾値を超えたときに、前記ネットワークが攻撃を受けたと判定する
ことを特徴とする請求項８に記載の攻撃検知方法。
【請求項１０】
互いに異なるタイミングで設定される同じ長さの複数の時間ウィンドウ毎に、識別情報を含むメッセージの受信数をそれぞれカウントし、
対応するカウント値が所定の閾値を超えた状態が、所定数の時間ウィンドウについて連続して検出されたときに、前記識別情報を含むメッセージを伝送するネットワークが攻撃を受けたと判定する
処理をプロセッサに実行させる攻撃検知プログラム。
【請求項１１】
各カウント値がそれぞれ対応する時間ウィンドウに対して設定される互いに異なる閾値を超えたときに、前記ネットワークが攻撃を受けたと判定する
処理をさらにプロセッサに実行させる請求項１０に記載の攻撃検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、攻撃検知装置および攻撃検知方法に係わる。
【背景技術】
【０００２】
自動車の車載ネットワークにおいて、ＣＡＮ（Controller Area Network）と呼ばれるネットワーク技術が使用されることがある。ＣＡＮを使用するネットワークにおいては、各ノードにＥＣＵ（electronic control unit）が実装される。
【０００３】
ＥＣＵから送信されるメッセージには、識別情報（ＩＤ）が付与されている。このメッセージは、ネットワーク内のＥＣＵにブロードキャストされる。ここで、各ＥＣＵは、自分が取得すべきメッセージのＩＤを認識している。そして、各ＥＣＵは、受信メッセージのＩＤをチェックすることにより、必要なメッセージを取得する。
【０００４】
上記構成のＣＡＮシステムにおいて、悪意ある第３者によりＥＣＵが乗っ取られ、そのＥＣＵから悪意あるメッセージが出力される攻撃が行われることがある。例えば、ＣＡＮシステムにおいて使用されるＩＤが、悪意あるメッセージに付与される。そうすると、そのメッセージを受信したＥＣＵは、意図しない処理を実行するおそれがある。
【０００５】
ところで、多くのＣＡＮシステムにおいて、ＥＣＵは、所定の周期でメッセージを出力する。したがって、メッセージが出力される周期が既知であるケースでは、各ＥＣＵは、メッセージの到着予定時刻と実際の到着時刻とを比較することにより、悪意あるメッセージを検知できる。
【０００６】
なお、ネットワークに接続され、周期的にネットワークにデータを出力する複数の情報処理手段と、各情報処理手段が周期的にネットワークに出力するデータのうち、各情報処理手段が最短周期で出力するデータを判別し、最短周期で出力するデータがネットワークに出力されたか否かを監視することにより、車載通信システムの通信異常を検知する監視手段と、と備える車載通信システムが提案されている（例えば、特許文献１）。また、特許文献２〜４に関連技術が記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−２３６１８４号公報
【特許文献２】特開２０１４−６９７４２号公報
【特許文献３】特開２０１７−８５６６３号公報
【特許文献４】特開２０１０−２２１７７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述のＣＡＮシステムにおいて、複数のＥＣＵから同時にメッセージが出力されることがある。ここで、メッセージは、ブロードキャストされる。したがって、メッセージ間の衝突を回避するために、各メッセージは優先度を有している。この優先度は、各メッセージに付与されるＩＤにより表される。そして、複数のＥＣＵから同時にメッセージが出力されたときは、優先度の高いメッセージの通信が完了した後に、優先度の低いメッセージの送信が実行される。このため、優先度の低いメッセージの送信タイミングは、遅延することがある。
【０００９】
このように、ＣＡＮシステムにおいては、メッセージの遅延が発生することがある。このため、メッセージの到着予定時刻と実際の到着時刻とを比較する方式では、正規のメッセージが悪意のメッセージと判定されることがある。あるいは、悪意のメッセージが検知されないことがある。
【００１０】
この問題は、例えば、メッセージの到着予定時刻に対して所定のマージンを設けることで解決され得る。しかしながら、この方式では、正規のメッセージの送信タイミングが大きく遅延した場合、そのメッセージが悪意のメッセージと判定されるおそれがある。例えば、メッセージの送信周期よりも大きな遅延が発生した場合、遅延メッセージが悪意のメッセージと判定されることがある。すなわち、メッセージの送信タイミングが大きく遅延する環境下では、攻撃を検知する精度が低下することがある。
【００１１】
本発明の１つの側面に係わる目的は、ネットワーク上での攻撃を検知する精度を向上させることである。
【課題を解決するための手段】
【００１２】
本発明の１つの態様の攻撃検知装置は、ネットワーク内で送信される識別情報を含むメッセージを受信する受信部と、互いに異なるタイミングで設定される同じ長さの複数の時間ウィンドウ内に前記受信部が受信するメッセージの個数をそれぞれカウントする複数のカウンタと、対応するカウンタの値が所定の閾値を超えた状態が、所定数の時間ウィンドウについて連続して検出されたときに、前記ネットワークが攻撃を受けたと判定する検知部と、を備える。
【発明の効果】
【００１３】
上述の態様によれば、ネットワーク上での攻撃を検知する精度が向上する。
【図面の簡単な説明】
【００１４】
【図１】攻撃検知装置が実装されるネットワークの一例を示す図である。
【図２】メッセージを伝送するフレームのフォーマットの例を示す図である。
【図３】攻撃検知方法の一例を示す図である。
【図４】攻撃検知装置の一例を示す図である。
【図５】攻撃検知装置が実装されるＥＣＵのハードウェア構成の一例を示す図である。
【図６】第１の実施形態における攻撃検知方法の一例を示す図（その１）である。
【図７】第１の実施形態における攻撃検知方法の一例を示す図（その２）である。
【図８】第１の実施形態においてネットワークへの攻撃が検知されるケースの一例を示す図である。
【図９】第１の実施形態においてネットワークに複数の攻撃メッセージが入力されるケースの一例を示す図である。
【図１０】第１の実施形態において検知漏れが発生するケースの一例を示す図である。
【図１１】第２の実施形態における攻撃検知方法の一例を示す図である。
【図１２】時間ウィンドウのタイミングのずれについて説明する図である。
【図１３】第３の実施形態における攻撃検知方法の一例を示す図である。
【図１４】第３の実施形態の攻撃検知方法の一例を示すフローチャートである。
【図１５】各判定部により実行される検知処理の一例を示すフローチャートである。
【図１６】判定部により使用されるフラグ配列の一例を示す図である。
【発明を実施するための形態】
【００１５】
図１は、本発明の実施形態に係わる攻撃検知装置が実装されるネットワークの一例を示す。図１に示すネットワーク１００は、複数のＥＣＵ（ＥＣＵ０〜ＥＣＵｋ）を備える。複数のＥＣＵは、バスを介して互いに接続されている。そして、この実施例では、複数のＥＣＵは、ＣＡＮ（Controller Area Network）システムを構成する。
【００１６】
各ＥＣＵは、バスを介してメッセージを送信することができる。このメッセージは、ネットワーク１００の全てのＥＣＵにブロードキャストされる。このとき、メッセージは、送信元ノードにも到着する。また、各メッセージには、識別情報（ＩＤ）が付与されている。ここで、各ＥＣＵは、自分が取得すべきメッセージのＩＤを認識している。そして、各ＥＣＵは、受信メッセージのＩＤをチェックすることにより、必要なメッセージを取得する。なお、各ＥＣＵは、「通信装置」の一例である。
【００１７】
上記ネットワーク１００において、複数のＥＣＵの中の１つに攻撃検知装置が実装される。図１に示す例では、ＥＣＵ０に攻撃検知装置が実装されるものとする。攻撃検知装置は、ネットワーク１００に対する攻撃を検知する。すなわち、攻撃検知装置は、ネットワーク１００において悪意あるメッセージを検知する。
【００１８】
また、ＥＣＵ１〜ＥＣＵｋのうちの少なくとも１つのＥＣＵは、所定の周期でメッセージを送信する機能を備えている。図１に示す例では、ＥＣＵ１は、ID_Aを含むメッセージを所定の周期で送信し、ＥＣＵ２は、ID_Bを含むメッセージを所定の周期で送信し、ＥＣＵ３は、ID_Cを含むメッセージを所定の周期で送信する。ここで、メッセージの送信周期は、ＩＤごとに予め決められている。例えば、ＩＤ＝0x123が付与されるメッセージは１０ｍ秒間隔で送信され、ＩＤ＝0x456が付与されるメッセージは２０ｍ秒間隔で送信される。
【００１９】
なお、車載ネットワークにおいては、複数のＥＣＵは、車両を制御するために使用される。例えば、ＩＤ＝0x123が付与されるメッセージは、アクセル開度を表すデータを伝送し、ＩＤ＝0x456が付与されるメッセージは、ブレーキ踏込み角度を表すデータを伝送する。
【００２０】
ネットワーク１００において送信される各メッセージは、上述したように、ブロードキャストされる。よって、各ＥＣＵには、すべてのメッセージが到着する。なお、図１のタイミングチャートは、ＥＣＵ１〜ＥＣＵ３から送信されるメッセージがＥＣＵ０に到着する状況を示している。
【００２１】
図２は、メッセージを伝送するフレームのフォーマットの例を示す。なお、Ｆ１は、一般仕様のフレームのフォーマット例を示し、Ｆ２は、拡張仕様で使用されるフレームのフォーマット例を示す。
【００２２】
一般仕様のフレームＦ１は、ＳＯＦ（Start of Frame）、調停（arbitration）フィールド、コントロールフィールド、データフィールド、ＣＲＣフィールド、ＡＣＫフィールド、およびＥＯＦ（End of Frame）を含む。調停フィールドは、ＩＤおよびＲＴＲ（Remote Transmission Request）を含む。ＩＤは、メッセージを識別するための識別情報を表す。コントロールフィールドは、ＩＤＥ（Identifier Extension）、予約ビット、ＤＬＣ（Data Length Code）を含む。ＣＲＣフィールドは、ＣＲＣシーケンスおよびＣＲＣデリミタを含む。ＡＣＫフィールドは、ＡＣＫスロットおよびＡＣＫデリミタを含む。なお、図２において各情報要素に対して表記されている値は、ビット長を表す。例えば、ＩＤの長さは１１ビットであり、データフィールドの長さは０〜６４ビットの可変長である。
【００２３】
一般仕様のフレームＦ１と同様に、拡張仕様で使用されるフレームＦ２も、ＳＯＦ、調停フィールド、コントロールフィールド、データフィールド、ＣＲＣフィールド、ＡＣＫフィールド、ＥＯＦを含む。ただし、拡張仕様では、より多くのビット数で識別情報が表される。
【００２４】
以下の記載では、一般仕様のフレームを利用してメッセージが伝送されるものとする。ただし、本発明の実施形態に係わる攻撃検知方法は、拡張仕様のフレームを利用してメッセージが伝送されるケースにも適用される。また、本発明の実施形態に係わる攻撃検知方法は、他の仕様または規格（例えば、ＣＡＮ−ＦＤ）にも適用可能である。
【００２５】
図３は、攻撃検知方法の一例を示す。この例では、検知対象のＩＤを有するメッセージは、所定の周期Ｔで送信されるものとする。そして、攻撃検知装置は、メッセージの受信頻度に基づいて、ネットワークへの攻撃の有無を判定する。具体的には、所定のモニタ期間内に検出されるメッセージの個数が閾値を超えたときに、ネットワークへの攻撃があったと判定される。一例としては、モニタ期間の長さは５Ｔであり、閾値は５である。この場合、攻撃検知装置は、モニタ期間内に５個を超えるメッセージを受信すると、ネットワークへの攻撃があったと判定する。なお、図３において、△印は正規メッセージを表し、▲印は攻撃メッセージを表す。
【００２６】
図３（ａ）に示す例では、最初のモニタ期間に５個のメッセージが攻撃検知装置に到着する。この場合、攻撃検知装置は、攻撃が無いと判定する。次のモニタ期間においては、５個の正規メッセージの加えて１個の攻撃メッセージが送信されている。すなわち、このモニタ期間においては、６個のメッセージが攻撃検知装置に到着する。この場合、受信メッセージ数が閾値を超えているので、攻撃検知装置は、攻撃があったと判定する。このように、メッセージの受信頻度に基づいて、ネットワークへの攻撃が検知される。
【００２７】
図３（ｂ）に示す例では、攻撃メッセージは存在しないが、正規メッセージの送信タイミングが遅延している。この結果、２番目のモニタ期間において、７個のメッセージが攻撃検知装置に到着する。すなわち、閾値を超える数のメッセージが攻撃検知装置に到着する。この場合、実際には攻撃メッセージが存在しないにもかかわらず、攻撃検知装置は、攻撃があったと判定してしまう。すなわち、正規メッセージの送信が大きく遅延すると、攻撃を検知する精度が低下することがある。
【００２８】
本発明の実施形態に係わる攻撃検知装置は、上述の問題を解決または抑制する機能を備える。すなわち、本発明の実施形態に係わる攻撃検知装置は、所定の周期で送信されることが予め決められているメッセージの送信タイミングの遅延に起因する影響を抑制して、攻撃を検知する精度を向上させる機能を備える。なお、実施形態に係わる攻撃検知は、１周期時間以内の遅延だけでなく、１周期時間を超える遅延にも対応可能である。
【００２９】
図４は、本発明の実施形態に係わる攻撃検知装置の一例を示す。攻撃検知装置１は、図４に示すように、受信部２、複数の判定部３（３Ａ、３Ｂ）、２次判定部４を備える。受信部２には、ネットワーク１００に実装されるＥＣＵから送信されるメッセージが到着する。そして、受信部２は、検知対象のＩＤを含むメッセージを受信する。なお、攻撃検知装置１は、各メッセージに付与されているＩＤ毎に受信時刻を検出することができる。メッセージの受信時刻は、例えば、攻撃検知装置１に実装される不図示のタイマを利用して検出される。或いは、攻撃検知装置１は、メッセージに付加されているタイムスタンプ情報から受信時刻を検出してもよい。
【００３０】
複数の判定部３（３Ａ、３Ｂ）の構成および動作は、実質的に互いに同じである。そして、各判定部３は、図４に示すように、複数のカウンタ１１−１〜１１−ｎおよび検知部１２を備える。
【００３１】
判定部３は、メッセージの受信頻度をモニタするための複数の時間ウィンドウを設定する。複数の時間ウィンドウの長さは、互いに同じである。ここで、各時間ウィンドウの長さは、検知対象のメッセージの送信周期よりも長い。一例としては、各時間ウィンドウの長さは、検知対象のメッセージの送信周期の整数倍である。また、複数の時間ウィンドウは、互いに異なるタイミングで設定される。具体的には、複数の時間ウィンドウは、所定の時間ずつシフトした位相（或いは、タイミング）で設定される。例えば、時間ウィンドウの長さがＬであり、判定部３において設定される時間ウィンドウの数がｎである場合、複数の時間ウィンドウは、Ｌ／ｎずつシフトした位相（或いは、タイミング）で設定される。
【００３２】
判定部３Ｂの各時間ウィンドウは、判定部３Ａの対応する時間ウィンドウに対してそれぞれ所定時間だけシフトして設定される。一例としては、判定部３Ｂの各時間ウィンドウは、判定部３Ａの対応する時間ウィンドウに対して、それぞれ検知対象のメッセージの送信周期の２分の１だけシフトして設定される。
【００３３】
各カウンタ１１−１〜１１−ｎは、対応する時間ウィンドウ内に受信部２が受信するメッセージの個数をそれぞれカウントする。検知部１２は、カウンタ１１−１〜１１−ｎの値に基づいてネットワーク１００への攻撃を検知する。そして、判定部３は、検知部１２により攻撃が検知されたか否かを表す判定結果を出力する。
【００３４】
２次判定部４は、判定部３Ａによる判定結果および判定部３Ｂによる判定結果に基づいて、ネットワーク１００が攻撃を受けたか否かを判定する。一例としては、２次判定部４は、所定時間内に判定部３Ａおよび判定部３Ｂの双方によりネットワーク１００への攻撃が検知されたときに、ネットワーク１００が攻撃を受けたと判定する。
【００３５】
なお、図４に示す例では、攻撃検知装置１は、複数の判定部３を用いてネットワーク１００が攻撃を受けたか否かを判定するが、本発明はこの構成に限定されるものではない。例えば、攻撃検知装置１は、１つの判定部３を用いてネットワーク１００が攻撃を受けたか否かを判定してもよい。この場合、攻撃検知装置１は、受信部２および１つの判定部３を備える。そして、攻撃検知装置１は、判定部３による判定結果を出力する。
【００３６】
図５は、攻撃検知装置１が実装されるＥＣＵのハードウェア構成の一例を示す。ＥＣＵ２０は、この例では、ＣＡＮトランシーバ２１、ＣＡＮコントローラ２２、処理回路２３を含む。処理回路２３は、プロセッサ２４およびメモリ２５を含む。
【００３７】
ＣＡＮトランシーバ２１は、図２に示すフレームを送信および受信する機能を備える。ＣＡＮコントローラ２２は、受信フレームからデータを抽出する。このとき、ＣＡＮコントローラ２２は、受信フレームに対してＣＲＣチェックを実行してもよい。また、ＣＡＮコントローラ２２は、各受信フレームがＥＣＵ２０に到着した時刻を測定することができる。さらに、ＣＡＮコントローラ２２は、送信フレームにデータを格納する。なお、図４に示す受信部２は、例えば、ＣＡＮトランシーバ２１およびＣＡＮコントローラ２２により実現される。
【００３８】
プロセッサ２４は、メモリ２５に格納されているプログラムを実行することにより、攻撃検知を実現する。この場合、メモリ２５には、図４に示す判定部３（３Ａ、３Ｂ）および２次判定部４の機能を記述したプログラムが格納される。そして、プロセッサ２４は、このプログラムを実行することにより判定部３（３Ａ、３Ｂ）および２次判定部４の機能の機能を提供する。なお、判定部３（３Ａ、３Ｂ）の機能の一部は、ハードウェア回路で実現してもよい。例えば、カウンタ１１−１〜１１−ｎは、ハードウェア回路で実現してもよい。
【００３９】
＜第１の実施形態＞
第１の実施形態の攻撃検知装置は、図１に示すＥＣＵ０に実装され、ネットワーク１００を攻撃する悪意あるメッセージ（攻撃メッセージ）を検知する。なお、この例では、検知対象ＩＤが付与されたメッセージは、所定の周期Ｔで送信されるように設計されているものとする。また、ネットワーク１００において以下の通信が行われるものとする。
（１）メッセージは、予定送信時刻に対して遅延して送信されることはあるが、欠落することはない。遅延は、周期Ｔを超えることもある。
（２）遅延が発生したときは、対応するメッセージが後で送信されるので、合計メッセージ数は回復する。
（３）予定送信時刻よりも前にメッセージが送信されることはない（ただし、予定送信時刻よりも僅かに早くメッセージが送信されることはある）。
【００４０】
図６〜図７は、第１の実施形態における攻撃検知方法の一例を示す。なお、以下の記載において、「メッセージ」は、特に断らない限りは、検知対象のＩＤが付与されたメッセージを表すものとする。また、△印は、受信部２により正規メッセージが受信されたタイミングを表す。
【００４１】
判定部３は、この実施例では、５個の時間ウィンドウＷ１〜Ｗ５を設定する。各時間ウィンドウＷ１〜Ｗ５は、メッセージの受信頻度をモニタするために使用される。よって、判定部３は、時間ウィンドウＷ１〜Ｗ５内の受信メッセージの数をそれぞれカウントするために５個のカウンタ１１−１〜１１−５を備える。すなわち、カウンタ１１−１〜１１−５は、それぞれ時間ウィンドウＷ１〜Ｗ５内の受信メッセージの数をカウントする。
【００４２】
時間ウィンドウＷ１〜Ｗ５の長さは、互いに同じであり、検知対象のメッセージの送信周期Ｔよりも長い。一例としては、各時間ウィンドウＷ１〜Ｗ５の長さは、図６〜図７に示すように、５Ｔである。また、時間ウィンドウＷ１〜Ｗ５は、互いに異なるタイミングで設定される。具体的には、時間ウィンドウＷ１〜Ｗ５は、所定の時間ずつシフトした位相（即ち、タイミング）で設定される。この例では、時間ウィンドウＷ１〜Ｗ５は、時間Ｔずつシフトした位相（即ち、タイミング）で設定される。具体的には、時間ウィンドウＷ２は、時間ウィンドウＷ１に対して時間Ｔだけ遅れて設定される。同様に、時間ウィンドウＷ３は、時間ウィンドウＷ２に対して時間Ｔだけ遅れて設定される。時間ウィンドウＷ４は、時間ウィンドウＷ３に対して時間Ｔだけ遅れて設定される。時間ウィンドウＷ５は、時間ウィンドウＷ４に対して時間Ｔだけ遅れて設定される。
【００４３】
時間ウィンドウＷ１〜Ｗ５は、それぞれ繰り返し設定される。したがって、次の時間ウィンドウＷ１は、直前の時間ウィンドウＷ５に対して時間Ｔだけ遅れて設定される。すなわち、時間ウィンドウＷ１〜Ｗ５は、サイクリックに時間Ｔずつシフトした位相で設定される。
【００４４】
上述のようにして時間ウィンドウＷ１〜Ｗ５が設定されている状況において、攻撃検知装置１にメッセージが到着する。なお、図６等において各時間ウィンドウ内に表記されている数字は、対応するカウンタの値を表す。
【００４５】
攻撃検知装置１にメッセージＭ１が到着する。この時点では、時間ウィンドウＷ１のみが設定されている。よって、カウンタ１１−１がゼロから１にインクリメントされる。続いて、攻撃検知装置１にメッセージＭ２が到着する。このとき、時間ウィンドウＷ１、Ｗ２が設定されている。よって、カウンタ１１−１が１から２にインクリメントされ、カウンタ１１−２がゼロから１にインクリメントされる。さらに、攻撃検知装置１にメッセージＭ３が到着する。このとき、時間ウィンドウＷ１〜Ｗ３が設定されている。よって、カウンタ１１−１が２から３にインクリメントされ、カウンタ１１−２が１から２にインクリメントされ、カウンタ１１−３がゼロから１にインクリメントされる。
【００４６】
以降、同様に、攻撃検知装置１にメッセージが到着する毎に、時間ウィンドウＷ１〜Ｗ５に対応するカウンタ１１−１〜１１−５が１ずつインクリメントされる。ただし、各カウンタ１１−１〜１１−５は、対応する時間ウィンドウが終了して次の時間ウィンドウ内で受信メッセージが検出されたときにリセットされる。例えば、時間ウィンドウＷ１は、時刻５において次のウィンドウに切り替えられる。この場合、時間ウィンドウＷ１に対応するカウンタ１１−１は、時刻５以降に最初に攻撃検知装置１に到着したメッセージ（図６では、メッセージＭ４）の受信タイミングにおいてリセットされる。
【００４７】
検知部１２は、各カウンタ１１−１〜１１−５の値がそれぞれ閾値を超えたか否かをモニタする。ここで、この実施例では、設定される時間ウィンドウの数がｎ（ｎは、２以上の整数）であるときに、各時間ウィンドウの長さは送信周期Ｔのｎ倍であり、且つ、閾値はｎである。図６〜図７に示す例では、５個の時間ウィンドウＷ１〜Ｗ５が設定されるので、各時間ウィンドウＷ１〜Ｗ５の長さは５Ｔであり、閾値は５である。そして、検知部１２は、ある時点で最も古い時間ウィンドウに対応するカウンタの値が閾値を超えた後、最も古い時間ウィンドウに対応するカウンタの値が閾値を超える状態が所定回数連続して発生したときに、ネットワーク１００が攻撃を受けたと判定する。この実施例では、カウンタの値が閾値を超える状態が５回以上数連続して発生したときに、検知部１２は、ネットワーク１００が攻撃を受けたと判定する。
【００４８】
ここで、メッセージＭ４〜Ｍ８は、予定送信時刻に対して遅延して送信されるものとする。この場合、メッセージＭ４〜Ｍ９は、通常よりも短い間隔で攻撃検知装置１に到着する。この結果、いくつかのカウンタの値が閾値を超える。
【００４９】
具体的には、攻撃検知装置１にメッセージＭ９が到着したときに、時間ウィンドウＷ１〜Ｗ５の中で最も古い時間ウィンドウはＷ５である。このとき、時間ウィンドウＷ５に対応するカウンタの値は６であり、閾値を超えている。なお、図７において、最も古い時間ウィンドウに対応するカウンタが閾値を超えた状態は、そのカウント値に丸印が付与されている。攻撃検知装置１にメッセージＭ１０が到着したときは、古い時間ウィンドウはＷ１である。このとき、時間ウィンドウＷ１に対応するカウンタの値は７であり、閾値を超えている。攻撃検知装置１にメッセージＭ１１が到着したときは、古い時間ウィンドウはＷ２である。このとき、時間ウィンドウＷ２に対応するカウンタの値は７であり、閾値を超えている。攻撃検知装置１にメッセージＭ１２が到着したときは、古い時間ウィンドウはＷ３である。このとき、時間ウィンドウＷ３に対応するカウンタの値は６であり、閾値を超えている。
【００５０】
攻撃検知装置１にメッセージＭ１３が到着したときは、古い時間ウィンドウはＷ４である。ところが、このとき、時間ウィンドウＷ１に対応するカウンタの値は５であり、閾値を超えていない。
【００５１】
このように、図６〜図７に示すケースでは、送信遅延に起因して一時的に通常よりも短い間隔でメッセージが攻撃検知装置１に到着したため、いくつかのカウンタの値が閾値を超えている。しかし、カウンタの値が閾値を超える状態は、４回連続して発生した時点で終了しているので、検知部１２は、ネットワーク１００が攻撃を受けたとは判定しない。すなわち、図６〜図７に示すケースでは、正常メッセージが一時的に通常よりも短い間隔で攻撃検知装置１に到着しても、誤検知は生じていない。
【００５２】
なお、検知部１２は、メッセージの送信遅延が時間ウィンドウの長さ以下である場合、ネットワーク１００に対する攻撃の有無を正しく判定できると考えられる。換言すれば、設定する時間ウィンドウの数を増やし、且つ、時間ウィンドウの長さを大きくすれば、攻撃検知装置１は、より大きな送信遅延に対して攻撃の有無が正しく判定される。例えば、１０個の時間ウィンドウが時間Ｔずつシフトして設定され、且つ、各時間ウィンドウの長さが１０Ｔであれば、許容される送信遅延は１０Ｔ（検知対象のメッセージの送信周期の１０倍）である。
【００５３】
図８は、第１の実施形態においてネットワークへの攻撃が検知されるケースの一例を示す。この例では、正規メッセージＭ１〜Ｍ１３は、遅延なく送信されて攻撃検知装置１に到着する。ただし、第５周期において、正規メッセージＭ５に続いて攻撃メッセージＭＸが攻撃検知装置１に到着する。なお、▲印は、受信部２により攻撃メッセージが受信されたタイミングを表す。
【００５４】
この場合、攻撃メッセージＭＸが攻撃検知装置１に到着したときに、最も古い時間ウィンドウはＷ１である。そして、このとき、時間ウィンドウＷ１に対応するカウンタの値は６であり、閾値を超えている。この後、攻撃検知装置１にメッセージＭ６、Ｍ７、Ｍ８、Ｍ９が到着したときに、時間ウィンドウＷ２、Ｗ３、Ｗ４、Ｗ５に対応するカウンタの値は、それぞれ６であり、いずれも閾値を超えている。すなわち、最古の時間ウィンドウに対応するカウンタの値が閾値を超える状態が５回連続して発生している。よって、検知部１２は、ネットワーク１００が攻撃を受けたと判定する。
【００５５】
図９は、第１の実施形態においてネットワークに複数の攻撃メッセージが入力されるケースの一例を示す。この例では、第６周期および第９周期において、ネットワーク１００に攻撃メッセージが入力される。
【００５６】
第６周期においてネットワーク１００に攻撃メッセージが入力されたことに起因して、最古の時間ウィンドウＷ２に対応するカウンタの値が閾値（即ち、５）を超える。つづいて、第７周期、第８周期、第９周期においてそれぞれ最古の時間ウィンドウＷ３、Ｗ４、Ｗ５に対応するカウンタの値が閾値を超える。この時点で、最古の時間ウィンドウに対応するカウンタの値が閾値を超える状態が４回連続して発生している。
【００５７】
さらに、第１０周期において、最古の時間ウィンドウＷ１に対応するカウンタの値が閾値を超える。この時点で、最古の時間ウィンドウに対応するカウンタの値が閾値を超える状態が５回連続して発生している。よって、検知部１２は、ネットワーク１００が攻撃を受けたと判定する。
【００５８】
この後、第１１〜１４周期においてそれぞれ最古の時間ウィンドウＷ２〜Ｗ５に対応するカウンタの値が閾値を超える。そうすると、検知部１２は、第１１〜１４周期においてそれぞれ攻撃を検知する。
【００５９】
このように、図９に示すケースでは、ネットワーク１００が攻撃を受けたと判定する回数が実際の攻撃メッセージの個数よりも多くなっている。ただし、攻撃の有無については正しく判定されている。
【００６０】
図１０は、第１の実施形態において検知漏れが発生するケースの一例を示す。この例では、第６周期および第７周期においてネットワーク１００に攻撃メッセージが入力された後、大きな遅延が発生している。
【００６１】
この例では、第６周期および第７周期における攻撃メッセージに起因して、第６〜８周期においてそれぞれ最古の時間ウィンドウＷ２〜Ｗ４に対応するカウンタの値が閾値を超える。しかし、この後、正規メッセージの送信が大きく遅延し、第８〜第１１周期において攻撃検知装置１にメッセージが到着しない。このため、第９周期において、最古の時間ウィンドウＷ５に対応するカウンタの値は閾値を超えていない。すなわち、最古の時間ウィンドウに対応するカウンタの値が閾値を超える状態は５回連続しておらず、検知部１２は、ネットワーク１００が攻撃を受けたとは判定しない。
【００６２】
第１２周期において、遅延したメッセージがまとめて攻撃検知装置１に到着する。このため、幾つかの時間ウィンドウに対応するカウンタの値が閾値を超えるが、最古の時間ウィンドウに対応するカウンタの値が閾値を超える状態は４回しか連続していない。したがって、第１２周期以降においても、検知部１２は、ネットワーク１００が攻撃を受けたとは判定しない。
【００６３】
このように、第１の実施形態では、検知部１２が攻撃メッセージを検知できないことがある。例えば、攻撃検知装置１に攻撃メッセージが到着した後、正規メッセージが遅延すると、攻撃メッセージが検知されないことがある。そこで、検知部１２は、検知漏れを抑制するために、図６〜図１０に示すアルゴリズムに加えて、或いは、図６〜図１０に示すアルゴリズムに代わりに、第２の実施形態として説明する他のアルゴリズムで攻撃メッセージをモニタする。
【００６４】
＜第２の実施形態＞
第２の実施形態では、検知部１２は、攻撃検知装置１にメッセージが到着する毎に、各時間ウィンドウに対応するカウンタの値をモニタする。そして、検知部１２は、各カウンタの値がそれぞれ対応する時間ウィンドウに対して設定される閾値を超えていたときに、ネットワーク１００が攻撃を受けたと判定する。
【００６５】
攻撃検知装置１が５個の時間ウィンドウ（Ｗ１〜Ｗ５）を用いて攻撃メッセージをモニタする場合、各時間ウィンドウに対して設定される閾値は、互いに異なっており、例えば以下の通りである。
（１）最も古い時間ウィンドウ：ｎ（＝５）
（２）２番目に古い時間ウィンドウ：ｎ−１（＝４）
（３）３番目に古い時間ウィンドウ：ｎ−２（＝３）
（４）４番目に古い時間ウィンドウ：ｎ−３（＝２）
（５）最も新しい時間ウィンドウ：ｎ−４（＝１）
【００６６】
図１１は、第２の実施形態における攻撃検知方法の一例を示す。なお、攻撃検知装置１に到着するメッセージは、図１０および図１１において同じである。よって、時間ウィンドウＷ１〜Ｗ５に対応する各カウンタの値は、図１０および図１１において同じである。また、図面を見やすくするために、各時間ウィンドウの区切りの表記を省略している。
【００６７】
第６周期において、正規メッセージＭ５、攻撃メッセージＭＸ、正規メッセージＭ６が順番に攻撃検知装置１に到着するものとする。そして、攻撃検知装置１に正規メッセージＭ５が到着したときに、時間ウィンドウＷ１、Ｗ２、Ｗ３、Ｗ４、Ｗ５に対応する各カウンタの値は、図１１に示すように、それぞれ１、４、３、２、１であったものとする。なお、以下の記載では、各時間ウィンドウに対応するカウンタの値を下記の表記で表すことにする。
カウンタ：[1,4,3,2,1]
【００６８】
また、第６周期において、最も古い時間ウィンドウはＷ２であり、２番目、３番目、４番目に古い時間ウィンドウはそれぞれＷ３、Ｗ４、Ｗ５であり、最も新しい時間ウィンドウはＷ１であるものとする。この場合、時間ウィンドウＷ１、Ｗ２、Ｗ３、Ｗ４、Ｗ５に対応する閾値は、それぞれ１、５、４、３、２である。なお、以下の記載では、各時間ウィンドウに対応する閾値を以下の表記で表すことにする。
閾値：[1,5,4,3,2]
【００６９】
検知部１２は、各カウンタの値と対応する時間ウィンドウに対して設定される閾値とをそれぞれ比較する。この例では、各カウンタの値は、いずれも対応する閾値以下である。よって、検知部１２は、ネットワーク１００が攻撃を受けたとは判定しない。
【００７０】
続いて、攻撃検知装置１に攻撃メッセージＭＸが到着すると、各カウンタがインクリメントされ、下記の状態が得られる。
カウンタ：[2,5,4,3,2]
このとき、時間ウィンドウＷ１に対応するカウンタの値は２であり、対応する閾値「１」を超えている。しかし、他の時間ウィンドウに対応するカウンタの値は、いずれも対応する閾値以下である。よって、検知部１２は、ネットワーク１００が攻撃を受けたとは判定しない。
【００７１】
さらに、攻撃検知装置１に正規メッセージＭ６が到着すると、各カウンタがインクリメントされ、下記の状態が得られる。
カウンタ：[3,6,5,4,3]
このとき、各カウンタの値は、いずれも対応する閾値を越えている。この場合、検知部１２は、ネットワーク１００が攻撃を受けた判定する。
【００７２】
この後、第７周期において、攻撃メッセージＭＹ、正規メッセージＭ７が順番に攻撃検知装置１に到着するものとする。尚、第７周期においては、最も古い時間ウィンドウはＷ３であり、２番目、３番目、４番目に古い時間ウィンドウはそれぞれＷ４、Ｗ５、Ｗ１であり、最も新しい時間ウィンドウはＷ２である。この場合、時間ウィンドウＷ１、Ｗ２、Ｗ３、Ｗ４、Ｗ５に対応する閾値は、以下の通りである。
閾値：[2,1,5,4,3]
【００７３】
そして、攻撃検知装置１に攻撃メッセージＭＹが到着すると、各カウンタがインクリメントされ、下記の状態が得られる。
カウンタ：[4,1,6,5,4]
なお、第６周期から第７周期に移行するときに、第６周期において最も古かった時間ウィンドウＷ２に対応するカウンタはリセットされる。したがって、攻撃検知装置１に攻撃メッセージＭＹが到着したときに、時間ウィンドウＷ２に対応するカウンタの値は、ゼロから１にインクリメントされる。
【００７４】
ここで、検知部１２は、各カウンタの値と対応する時間ウィンドウに対して設定される閾値とをそれぞれ比較する。このケースでは、時間ウィンドウＷ１、Ｗ３、Ｗ４、Ｗ５に対応するカウンタの値はそれぞれ対応する閾値を超えているが、時間ウィンドウＷ２に対応するカウンタの値は１であり、閾値「１」を超えてない。よって、検知部１２は、ネットワーク１００が攻撃を受けたとは判定しない。
【００７５】
続いて、攻撃検知装置１に正規メッセージＭ７が到着すると、各カウンタがインクリメントされ、下記の状態が得られる。
カウンタ：[5,2,7,6,5]
このとき、各カウンタの値は、いずれも対応する閾値を越えている。よって、この場合、検知部１２は、ネットワーク１００が攻撃を受けた判定する。
【００７６】
このように、第２の実施形態のアルゴリズムを使用すれば、第１の実施形態のアルゴリズムでは検知できなかった攻撃を検知できることがある。すなわち、２つのアルゴリズムを並列に使用すれば、攻撃検知の精度が向上する。したがって、攻撃検知装置１は、第１の実施形態のアルゴリズムおよび第２の実施形態のアルゴリズムの双方を使用して攻撃メッセージをモニタすることが好ましい。
【００７７】
＜第３の実施形態＞
時間ウィンドウの長さは、上述したように、正規メッセージの送信周期Ｔの整数倍である。送信周期Ｔに関する情報は、例えば、自動車の設計から想定される周期から導出したり、ＣＡＮの中身を測定して導出したりすることで入手可能である。図６〜図１１に示す実施例では、時間ウィンドウの長さは５Ｔである。このため、攻撃検知装置１は、送信周期Ｔに同期して攻撃メッセージをモニタする処理を実行する。そして、時間ウィンドウは、図１２（ａ）に示すように、時間ウィンドウの終了タイミングが正規メッセージの予定受信時刻と一致しないように設定される。なお、△印は、遅延なく送信された正規メッセージが攻撃検知装置１に到着するタイミングを示している。
【００７８】
ところが、メッセージの送信元において送信周期Ｔは誤差を含む。また、攻撃検知装置１において送信周期Ｔの測定誤差が発生し得る。ここで、これらの誤差が蓄積すると、図１２（ｂ）に示すように、時間ウィンドウの終了タイミングが正規メッセージの予定受信時刻と一致することがある。そして、時間ウィンドウの終了タイミングがメッセージの受信時刻と一致すると、時間ウィンドウ内に到着するメッセージの数を正しくカウントできないことがある。例えば、図１２（ｂ）において、メッセージＭ６、Ｍ１１の双方が時間ウィンドウＷｘ内でカウントされると、検出される受信メッセージ数は７である。メッセージＭ６、Ｍ１１の一方が時間ウィンドウＷｘ内でカウントされると、検出される受信メッセージ数は６である。メッセージＭ６、Ｍ１１が時間ウィンドウＷｘ内でカウントされないときは、検出される受信メッセージ数は５である。そして、受信メッセージの数を正しくカウントされないと、攻撃検知装置１は、ネットワーク１００への攻撃を精度よく検知できない。そこで、第３の実施形態の攻撃検知装置１は、この問題を解消または緩和する機能を備える。
【００７９】
第３の実施形態の攻撃検知装置１は、図４に示す判定部３Ａ、判定部３Ｂ、２次判定部４を使用してネットワーク１００への攻撃をモニタする。ここで、判定部３Ａ、３Ｂの構成および動作は、実質的に互いに同じである。そして、各判定部３Ａ、３Ｂは、それぞれ第１の実施形態のアルゴリズム及び／又は第２の実施形態のアルゴリズムを利用してネットワーク１００への攻撃をモニタする。ただし、判定部３Ｂの各時間ウィンドウは、判定部３Ａの対応する時間ウィンドウに対してそれぞれ所定時間だけシフトして設定される。一例としては、判定部３Ｂの各時間ウィンドウは、判定部３Ａの対応する時間ウィンドウに対して、それぞれ検知対象のメッセージの送信周期の２分の１だけシフトして設定される。
【００８０】
ただし、判定部３Ａと判定部３Ｂとの間での時間ウィンドウのシフト量は、送信周期の２分の１に限定されるものではない。また、攻撃検知装置１は、３個以上の判定部３を用いてネットワーク１００への攻撃をモニタしてもよい。例えば、攻撃検知装置１が４個の判定部３を備える構成では、各判定部３の時間ウィンドウのタイミングを順番に送信周期の４分の１ずつシフトさせてもよい。
【００８１】
２次判定部４は、判定部３Ａによる判定結果および判定部３Ｂによる判定結果に基づいて、ネットワーク１００が攻撃を受けたか否かを判定する。一例としては、２次判定部４は、所定時間内に判定部３Ａおよび判定部３Ｂの双方によりネットワーク１００への攻撃が検知されたときに、ネットワーク１００が攻撃を受けたと判定する。この「所定時間」は、送信周期Ｔ以下であることが好ましく、例えば、Ｔ／２である。
【００８２】
図１３は、第３の実施形態における攻撃検知方法の一例を示す。この例では、判定部３Ｂの各時間ウィンドウは、判定部３Ａの対応する時間ウィンドウに対して、それぞれ検知対象のメッセージの送信周期Ｔの２分の１だけシフトして設定される。例えば、判定部３Ｂの時間ウィンドウＷ１は、判定部３Ａの時間ウィンドウＷ１に対してＴ／２だけ遅れて設定されている。他の時間ウィンドウＷ２〜Ｗ５についても同様である。
【００８３】
なお、図１３において、△印および▲印は、それぞれ攻撃検知装置１に正規メッセージおよび攻撃メッセージが到着したタイミングを表す。また、△印および▲印に付与されている数字は、モニタが開始された時点を基準として、各メッセージが攻撃検知装置１に何番目に到着したのかを表す。なお、図１３では、１〜４個目のメッセージは省略されている。
【００８４】
各判定部３Ａ、３Ｂは、それぞれ、第１の実施形態のアルゴリズムおよび第２の実施形態のアルゴリズムの双方を利用して攻撃をモニタする。そして、２次判定部４は、所定時間内に判定部３Ａ、３Ｂの双方によりネットワーク１００への攻撃が検知されたときに、ネットワーク１００が攻撃を受けたと判定する。尚、図１３に示す検知処理については、後で詳しく記載する。
【００８５】
図１４は、第３の実施形態の攻撃検知方法の一例を示すフローチャートである。このフローチャートの処理は、検知対象のメッセージＩＤごとに実行される。
【００８６】
Ｓ１において、攻撃検知装置１は、メッセージを受信する。このとき、受信部２は、このメッセージの受信時刻を記録する。Ｓ２〜Ｓ３において、判定部３Ａおよび判定部３Ｂは、ネットワーク１００への攻撃の有無を判定する検知処理を実行する。なお、攻撃検知装置１は、Ｓ２およびＳ３を順番に実行してもよいし、並列に実行してもよい。
【００８７】
Ｓ４において、２次判定部４は、所定時間内に判定部３Ａおよび判定部３Ｂの双方で攻撃が検知されたか判定する。そして、所定時間内に判定部３Ａおよび判定部３Ｂの双方で攻撃が検知されたときは、２次判定部４は、Ｓ５において、ネットワーク１００が攻撃されたと判定する。この場合、攻撃検知装置１は、ネットワーク１００が攻撃されたことを表す警告信号を出力する。一方、所定時間内に判定部３Ａおよび判定部３Ｂの双方で攻撃が検知されていなければ、Ｓ５はスキップされ、攻撃検知装置１の処理はＳ１に戻る。
【００８８】
このように、第３の実施形態においては、２つの判定部３（３Ａ、３Ｂ）に設定される時間ウィンドウの位相が互いにシフトしている。このため、例えば、一方の判定部３において図１２（ｂ）に示す状態に起因して受信メッセージ数が正しくカウントされなかったとしても、他方の判定部３において受信メッセージ数が正しくカウントされるので、攻撃検知の精度が向上する。また、実際にネットワーク１００への攻撃が発生した場合は、双方の判定部３において互いに近接したタイミングでその攻撃が検知されると考えられる。よって、所定時間内に双方の判定部３で攻撃が検知されたときに限って、２次判定部４がネットワーク１００への攻撃があったと判定することで、誤検知が抑制される。
【００８９】
なお、ネットワーク１００が車両の走行を制御する車載ＣＡＮシステムであるときは、ＥＣＵ１〜ＥＣＵｋは、例えば、攻撃検知装置１（ＥＣＵ０）から出力される警告信号に応じて、車両を停止または減速させようにしてもよい。或いは、攻撃検知装置１から出力される警告信号に応じて、ネットワーク１００と他のネットワークとの接続が切断されるように構成してもよい。
【００９０】
図１５は、各判定部３（３Ａ、３Ｂ）により実行される検知処理の一例を示すフローチャートである。このフローチャートの処理は、図１４に示すＳ２またはＳ３に相当する。よって、このフローチャートの処理は、攻撃検知装置１に新たなメッセージが到着したときに各判定部３により実行される。
【００９１】
Ｓ１１において、判定部３は、新たなメッセージの受信時刻（即ち、攻撃検知装置１にメッセージが到着した時刻）が時間ウィンドウの終端を越えたか否かを判定する。このとき、判定部３は、時間ウィンドウの終端時刻が直前のメッセージの受信時刻と新たなメッセージの受信時刻との間に現れる時間ウィンドウを抽出する。例えば、図１３に示すケースにおいて、５個目のメッセージの受信時刻と６個目のメッセージの受信時刻との間に時間ウィンドウＷ１の終端時刻が位置している。この場合、攻撃検知装置１に６個目のメッセージが到着したときに「新たなメッセージの受信時刻が時間ウィンドウＷ１の終端を越えた」と判定される。
【００９２】
メッセージの受信時刻が時間ウィンドウの終端を越えていれば、Ｓ１２において、判定部３は、Ｓ１１で抽出された時間ウィンドウに対応するカウンタをゼロにリセットする。また、Ｓ１３において、判定部３は、Ｓ１１で抽出された時間ウィンドウに対応するフラグをゼロに更新する。このフラグについては後で説明する。
【００９３】
Ｓ１４において、判定部３は、各時間ウィンドウに対応するカウンタをそれぞれインクリメントする。カウンタの値は、時間ウィンドウ内に攻撃検知装置１に到着したメッセージの数を表す。
【００９４】
Ｓ１５において、判定部３は、最も古い時間ウィンドウに対応するカウンタの値が閾値よりも大きいか判定する。なお、時間ウィンドウの長さが送信周期Ｔのｎ倍である場合、閾値はｎであることが好ましい。そして、最も古い時間ウィンドウに対応するカウンタの値が閾値よりも大きいときは、判定部３は、Ｓ１６において、最も古い時間ウィンドウに対応するフラグを設定する。すなわち、フラグは、対応する時間ウィンドウのカウンタの値が閾値を超えているか否かを表す。
【００９５】
図１６は、判定部３により使用されるフラグ配列の一例を示す。この例では、判定部３は、５個の時間ウィンドウＷ１〜Ｗ５を用いて攻撃をモニタするので、フラグ配列の長さは１０ビットである。第１、第６ビットは時間ウィンドウＷ１に割り当てられ、第２、第７ビットは時間ウィンドウＷ２に割り当てられ、第３、第８ビットは時間ウィンドウＷ３に割り当てられ、第４、第９ビットは時間ウィンドウＷ４に割り当てられ、第５、第１０ビットは時間ウィンドウＷ５に割り当てられる。図１６に示す例は、攻撃検知装置１にメッセージが到着したときに最も古い時間ウィンドウがＷ４であり、時間ウィンドウＷ４に対応するカウンタの値が閾値よりも大きかったケースを示している。
【００９６】
Ｓ１７において、判定部３は、フラグ配列中で所定数以上のフラグが連続して設定されているかを判定する。この例では、判定部３は、時間ウィンドウの個数以上のフラグが連続して設定されているかを判定する。すなわち、５以上のフラグが連続して設定されているか否かが判定される。ここで、フラグ配列中でｍ個のフラグが連続して設定されている状態は、ｍ個の時間ウィンドウについてカウンタの値が連続して所定の閾値を超えた状態を表す。よって、判定部３は、フラグ配列の状態に基づいて、何個の時間ウィンドウにおいてカウンタの値が連続して閾値を超えたかを検出できる。なお、Ｓ１６〜Ｓ１７は、第１の実施形態のアルゴリズムを実現する。
【００９７】
所定数以上のフラグが連続して設定されていれば（Ｓ１７：Ｙｅｓ）、判定部３は、Ｓ１９において、ネットワーク１００が攻撃されたと判定する。そうでないときは（Ｓ１７：Ｎｏ）、判定部３の処理はＳ１８に進む。
【００９８】
Ｓ１８において、判定部３は、各時間ウィンドウのカウンタの値がそれぞれ対応する閾値よりも大きいか判定する。各カウンタに対応する閾値は、互いに異なる。例えば、時間ウィンドウの個数がｎである場合、各時間ウィンドウに対応する閾値は、古い順に、ｎ、ｎ−１、ｎ−２．．．であり、最も新しい時間ウィンドウに対応する閾値は１である。なお、Ｓ１８は、第２の実施形態のアルゴリズムを実現する。
【００９９】
各時間ウィンドウのカウンタの値がそれぞれ対応する閾値より大きいときは（Ｓ１８：Ｙｅｓ）、判定部３は、Ｓ１９において、ネットワーク１００が攻撃されたと判定する。そうでないときは（Ｓ１８：Ｎｏ）、判定部３は、Ｓ２０において、ネットワーク１００が攻撃されていないと判定する。
【０１００】
なお、最も古い時間ウィンドウに対応するカウンタの値が閾値以下であるときは（Ｓ１５：Ｎｏ）、判定部３は、Ｓ１８を実行することなく、ネットワーク１００が攻撃を受けていないと判定してもよい。或いは、判定部３は、Ｓ１５〜Ｓ１７の前にＳ１８を実行してもよい。
【０１０１】
図１５に示すフローチャートの処理は、判定部３Ａおよび判定部３Ｂによりそれぞれ実行される。そして、２次判定部４は、それらの判定結果に応じて、ネットワーク１００が攻撃を受けたか否かを判定する。
【０１０２】
なお、上述の例ではフラグ配列のビット数は、ウィンドウの数の２倍であるが、本発明はこの構成に限定されるものではない。例えば、フラグ配列のビット数は、ウィンドウの数と同じであってもよい。
【０１０３】
次に、図１３に示すケースを参照して第３の実施形態の実施例を説明する。この実施例では、下記の条件で攻撃検知が行われるものとする。
（１）正規メッセージの送信周期Ｔは１０ｍ秒
（２）各判定部３はそれぞれ５個の時間ウィンドウＷ１〜Ｗ５を備える
（３）各時間ウィンドウの長さは送信周期Ｔの５倍（即ち、５０ｍ秒）
（４）時間ウィンドウＷ１〜Ｗ５はＴずつ（即ち、１０ｍ秒ずつ）シフトして設定される
（５）判定部３Ａ、３Ｂ間での時間ウィンドウのシフトは送信周期Ｔの２分の１（即ち、５ｍ秒）
（６）検知開始時刻を基準として、正規メッセージが９．５ｍ秒、１９．５ｍ秒、２９．５ｍ秒、３９．５ｍ秒、４９．５ｍ秒、５９．５ｍ秒、６９．５ｍ秒、１１２．０ｍ秒、１１４．０ｍ秒、１１４．８ｍ秒、１１７．５ｍ秒、１１９．９ｍ秒、１２９．５ｍ秒、１３９．５ｍ秒、１４９．５ｍ秒、１５９．５ｍ秒、１６９．５ｍ秒に攻撃検知装置１に到着する（なお、最初の４個のメッセージは、図１３では省略されている）
（７）すなわち、７０〜１１０ｍ秒において送信遅延が発生し、遅延したメッセージが１１０〜１２０ｍ秒の間に攻撃検知装置１に到着する
（８）攻撃メッセージは７２．５ｍ秒、８４．５ｍ秒に攻撃検知装置１に到着する
（９）第１の実施形態のアルゴリズム（以下、アルゴリズム１）の閾値は５
（１０）第２の実施形態のアルゴリズム（以下、アルゴリズム２）の閾値は、最も古い時間ウィンドウから順番に５、４、３、２、１
【０１０４】
上記（２）〜（５）によれば、判定部３Ａにおいては、時間ウィンドウＷ１は０〜５０ｍ秒、５０〜１００ｍ秒、１００〜１５０ｍ秒．．．に設定され、時間ウィンドウＷ２は１０〜６０ｍ秒、６０〜１１０ｍ秒、１１０〜１６０ｍ秒．．．に設定され、時間ウィンドウＷ３は２０〜７０ｍ秒、７０〜１２０ｍ秒、１２０〜１７０ｍ秒．．．に設定され、時間ウィンドウＷ４は３０〜８０ｍ秒、８０〜１３０ｍ秒、１３０〜１８０ｍ秒．．．に設定され、時間ウィンドウＷ５は４０〜９０ｍ秒、９０〜１４０ｍ秒、１４０〜１９０ｍ秒．．．に設定される。また、判定部３ｂにおいては、時間ウィンドウＷ１は５〜５５ｍ秒、５５〜１０５ｍ秒、１０５〜１５５ｍ秒．．．に設定され、時間ウィンドウＷ２は１５〜６５ｍ秒、６５〜１１５ｍ秒、１１５〜１６５ｍ秒．．．に設定され、時間ウィンドウＷ３は２５〜７５ｍ秒、７５〜１２５ｍ秒、１２５〜１７５ｍ秒．．．に設定され、時間ウィンドウＷ４は３５〜８５ｍ秒、８５〜１３５ｍ秒、１３５〜１８５ｍ秒．．．に設定され、時間ウィンドウＷ５は４５〜９５ｍ秒、９５〜１４５ｍ秒、１４５〜１９５ｍ秒．．．に設定される。
【０１０５】
初期設定において、判定部３Ａ、３Ｂにおいて、すべてのカウンタはゼロに初期化される。また、判定部３Ａ、３Ｂにおいて、図１６に示すフラグ配列の各ビットもゼロに初期化される。なお、以下の記載では、時間ウィンドウＷｉ（ｉ＝１〜５）に対応するカウンタを「カウンタｉ」と呼ぶことがある。
【０１０６】
（１）１個目のメッセージの受信（時刻９．５ｍ秒）
判定部３Ａにおいて、時刻ゼロに時間ウィンドウＷ１が開始される（終了時刻は、５０ｍ秒）。判定部３Ｂにおいて、時刻５ｍ秒に時間ウィンドウＷ１が開始される（終了時刻は、５５ｍ秒）。
【０１０７】
１個目のメッセージが時刻９．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａのカウンタ１がゼロから１にインクリメントされ、判定部３Ｂのカウンタ１もゼロから１にインクリメントされる。なお、時間ウィンドウの境界時刻（即ち、時間ウィンドウの終了時刻）ちょうどに攻撃検知装置１にメッセージが到着したときは、前の時間ウィンドウに対応するカウンタをインクリメントしてもよいし、後の時間ウィンドウに対応するカウンタをインクリメントしてもよいが、どちらのカウンタをインクリメントするのかが事前に決められているものとする。
【０１０８】
上記メッセージの受信により、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[1,0,0,0,0]
判定部３Ｂのカウンタ：[1,0,0,0,0]
【０１０９】
判定部３Ａ、３Ｂは、上記カウンタの値に基づいて図１５に示す判定を実行する。このとき、いずれのカウンタもアルゴリズム１の閾値を超えていないので、判定部３Ａ、３Ｂは、それぞれ「不検知」を出力する。なお、フラグ配列は下記の通りである。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
判定部３Ｂのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
【０１１０】
（２）２個目のメッセージの受信（時刻１９．５ｍ秒）
受信部２が２個目のメッセージを受信する前に、判定部３Ａにおいて、時刻１０ｍ秒に時間ウィンドウＷ２が開始される（終了時刻は、６０ｍ秒）。判定部３Ｂにおいて、時刻１５ｍ秒に時間ウィンドウＷ２が開始される（終了時刻は、６５ｍ秒）。
【０１１１】
２個目のメッセージが時刻１９．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａのカウンタ１、２がそれぞれインクリメントされ、判定部３Ｂのカウンタ１、２もそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[2,1,0,0,0]
判定部３Ｂのカウンタ：[2,1,0,0,0]
【０１１２】
判定部３Ａ、３Ｂは、上記カウンタの値に基づいて判定処理を実行する。このとき、いずれもカウンタもアルゴリズム１、２の閾値を超えていないので、判定部３Ａ、３Ｂは、それぞれ「不検知」を出力する。なお、フラグ配列は下記の通りである。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
判定部３Ｂのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
【０１１３】
（３）３個目のメッセージの受信（時刻２９．５ｍ秒）
受信部２が３個目のメッセージを受信する前に、判定部３Ａにおいて、時刻２０ｍ秒に時間ウィンドウＷ３が開始される（終了時刻は、７０ｍ秒）。判定部３Ｂにおいて、時刻２５ｍ秒に時間ウィンドウＷ３が開始される（終了時刻は、７５ｍ秒）。
【０１１４】
３個目のメッセージが時刻２９．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａのカウンタ１〜３がそれぞれインクリメントされ、判定部３Ｂのカウンタ１〜３もそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[3,2,1,0,0]
判定部３Ｂのカウンタ：[3,2,1,0,0]
【０１１５】
判定部３Ａ、３Ｂは、上記カウンタの値に基づいて判定処理を実行する。このとき、いずれもカウンタもアルゴリズム１、２の閾値を超えていないので、判定部３Ａ、３Ｂは、それぞれ「不検知」を出力する。なお、フラグ配列は下記の通りである。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
判定部３Ｂのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
【０１１６】
（４）４個目のメッセージの受信（時刻３９．５ｍ秒）
受信部２が４個目のメッセージを受信する前に、判定部３Ａにおいて、時刻３０ｍ秒に時間ウィンドウＷ４が開始される（終了時刻は、８０ｍ秒）。判定部３Ｂにおいて、時刻３５ｍ秒に時間ウィンドウＷ４が開始される（終了時刻は、８５ｍ秒）。
【０１１７】
４個目のメッセージが時刻３９．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａのカウンタ１〜４がそれぞれインクリメントされ、判定部３Ｂのカウンタ１〜４もそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[4,3,2,1,0]
判定部３Ｂのカウンタ：[4,3,2,1,0]
【０１１８】
判定部３Ａ、３Ｂは、上記カウンタの値に基づいて判定処理を実行する。このとき、いずれもカウンタもアルゴリズム１、２の閾値を超えていないので、判定部３Ａ、３Ｂは、それぞれ「不検知」を出力する。なお、フラグ配列は下記の通りである。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
判定部３Ｂのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
【０１１９】
（５）５個目のメッセージの受信（時刻４９．５ｍ秒）
受信部２が５個目のメッセージを受信する前に、判定部３Ａにおいて、時刻４０ｍ秒に時間ウィンドウＷ５が開始される（終了時刻は、９０ｍ秒）。判定部３Ｂにおいて、時刻４５ｍ秒に時間ウィンドウＷ５が開始される（終了時刻は、９５ｍ秒）。
【０１２０】
５個目のメッセージが時刻４９．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａのカウンタ１〜５がそれぞれインクリメントされ、判定部３Ｂのカウンタ１〜５もそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[5,4,3,2,1]
判定部３Ｂのカウンタ：[5,4,3,2,1]
【０１２１】
判定部３Ａ、３Ｂは、上記カウンタの値に基づいて判定処理を実行する。このとき、いずれもカウンタもアルゴリズム１、２の閾値を超えていないので、判定部３Ａ、３Ｂは、それぞれ「不検知」を出力する。なお、フラグ配列は下記の通りである。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
判定部３Ｂのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
【０１２２】
（６）６個目のメッセージの受信（時刻５９．５ｍ秒）
受信部２が６個目のメッセージを受信する前に、判定部３Ａにおいて、時刻５０ｍ秒に時間ウィンドウＷ１が再開始される（終了時刻は、１００ｍ秒）。また、判定部３Ｂにおいて、時刻５５ｍ秒に時間ウィンドウＷ１が再開始される（終了時刻は、１０５ｍ秒）。よって、判定部３Ａ、３Ｂにおいて、カウンタ１がそれぞれリセットされる。また、判定部３Ａ、３Ｂにおいて、フラグ配列の第６ビットがリセットされる。
【０１２３】
受信部２が６個目のメッセージを受信した時点では、判定部３Ａ、３Ｂにおいて、最も古い時間ウィンドウはＷ２である。よって、アルゴリズム２の閾値は以下の通りである。
判定部３Ａの閾値：[1,5,4,3,2]
判定部３Ｂの閾値：[1,5,4,3,2]
【０１２４】
６個目のメッセージが時刻５９．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂのカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[1,5,4,3,2]
判定部３Ｂのカウンタ：[1,5,4,3,2]
【０１２５】
この時点で判定部３Ａ、３Ｂにおいて最も古い時間ウィンドウは、上述したように、それぞれＷ２である。そして、判定部３Ａ、３Ｂにおいてカウンタ２の値はアルゴリズム１の閾値を超えていない。また、カウンタ１〜５の値は、いずれもアルゴリズム２の対応する閾値を超えていない。よって、判定部３Ａ、３Ｂは、それぞれ「不検知」を出力する。なお、フラグ配列は下記の通りである。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
判定部３Ｂのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
【０１２６】
（７）７個目のメッセージの受信（時刻６９．５ｍ秒）
受信部２が７個目のメッセージを受信する前に、判定部３Ａにおいて、時刻６０ｍ秒に時間ウィンドウＷ２が再開始される（終了時刻は、１１０ｍ秒）。また、判定部３Ｂにおいて、時刻６５ｍ秒に時間ウィンドウＷ２が再開始される（終了時刻は、１１５ｍ秒）。よって、判定部３Ａ、３Ｂにおいて、カウンタ２がそれぞれリセットされる。また、判定部３Ａ、３Ｂにおいて、フラグ配列の第７ビットがリセットされる。
【０１２７】
受信部２が７個目のメッセージを受信した時点では、判定部３Ａ、３Ｂにおいて、最も古い時間ウィンドウはＷ３である。よって、アルゴリズム２の閾値は以下の通りである。
判定部３Ａの閾値：[2,1,5,4,3]
判定部３Ｂの閾値：[2,1,5,4,3]
【０１２８】
７個目のメッセージが時刻６９．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂのカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[2,1,5,4,3]
判定部３Ｂのカウンタ：[2,1,5,4,3]
【０１２９】
この時点で判定部３Ａ、３Ｂにおいて最も古い時間ウィンドウは、上述したように、それぞれＷ３である。そして、判定部３Ａ、３Ｂにおいてカウンタ３の値はアルゴリズム１の閾値を超えていない。また、カウンタ１〜５の値は、いずれもアルゴリズム２の対応する閾値を超えていない。よって、判定部３Ａ、３Ｂは、それぞれ「不検知」を出力する。なお、フラグ配列は下記の通りである。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
判定部３Ｂのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
【０１３０】
（８）８個目のメッセージの受信（時刻７２．５ｍ秒）
受信部２が８個目のメッセージを受信する前に、判定部３Ａにおいて、時刻７０ｍ秒に時間ウィンドウＷ３が再開始される（終了時刻は、１２０ｍ秒）。よって、判定部３Ａにおいて、カウンタ３がリセットされ、フラグ配列の第８ビットがリセットされる。一方、判定部３Ｂにおいては、受信部２が８個目のメッセージを受信した時点で、時刻２５〜７５ｍ秒に設定された時刻ウィンドウＷ３は未だ終了していない。よって、判定部３Ｂにおいては、カウンタおよびフラグ配列はリセットされない。
【０１３１】
受信部２が８個目のメッセージを受信した時点では、判定部３Ａにおいて最も古い時間ウィンドウはＷ４であり、判定部３Ｂにおいて最も古い時間ウィンドウはＷ３である。よって、アルゴリズム２の閾値は以下の通りである。
判定部３Ａの閾値：[3,2,1,5,4]
判定部３Ｂの閾値：[2,1,5,4,3]
【０１３２】
８個目のメッセージが時刻７２．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[3,2,1,5,4]
判定部３Ｂのカウンタ：[3,2,6,5,4]
【０１３３】
この時点で判定部３Ａにおいて最も古い時間ウィンドウは、上述したように、Ｗ４である。そして、判定部３Ａにおいてカウンタ４の値は５であり、アルゴリズム１の閾値を超えていない。また、カウンタ１〜５の値は、それぞれアルゴリズム２の対応する閾値を超えていない。よって、判定部３Ａは「不検知」を出力する。
【０１３４】
一方、この時点で判定部３Ｂにおいて最も古い時間ウィンドウはＷ３である。そして、判定部３Ｂのカウンタ３の値は６であり、アルゴリズム１の閾値を超えている。よって、図１６に示すフラグ配列において時間ウィンドウＷ３に対応するビットが設定される。ここでは、フラグ配列の第３ビットが設定されるものとする。この場合、フラグ配列は下記のように更新される。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
判定部３Ｂのフラグ配列：[0,0,1,0,0,0,0,0,0,0]
【０１３５】
ここで、判定部３Ｂのフラグ配列において、フラグは連続して設定されていない。よって、アルゴリズム１の判定結果は「不検知」でる。ところが、判定部３Ｂにおいて、カウンタ１〜５の値は、それぞれアルゴリズム２の対応する閾値よりも大きい。よって、アルゴリズム２の判定結果は「検知」である。したがって、判定部３Ｂは、「検知（時刻：７２．５ｍ秒）」を出力する。
【０１３６】
そうすると、２次判定部４は、８個目のメッセージの受信時刻から５ｍ秒遡った時刻と８個目のメッセージの受信時刻との間の期間（即ち、時刻６７．５〜７２．５ｍ秒の期間）に判定部３Ａから「検知」が出力されたか否かを判定する。この例では、この期間内に判定部３Ａから「検知」が出力されていないので、２次判定部４は、ネットワーク１００が攻撃を受けたと判定しない。
【０１３７】
（９）９個目のメッセージの受信（時刻８４．５ｍ秒）
受信部２が９個目のメッセージを受信する前に、判定部３Ａにおいて、時刻８０ｍ秒に時間ウィンドウＷ４が再開始される（終了時刻は、１３０ｍ秒）。よって、判定部３Ａにおいて、カウンタ４がリセットされ、フラグ配列の第９ビットがリセットされる。また、判定部３Ｂにおいては、受信部２が９個目のメッセージを受信する前に、時刻７５ｍ秒に時間ウィンドウＷ３が再開始される（終了時刻は、１２５ｍ秒）。ただし、受信部２が９個目のメッセージを受信した時点で、時刻３５〜８５ｍ秒に設定された時刻ウィンドウＷ４は未だ終了していない。したがって、判定部３Ｂにおいては、カウンタ３はリセットされるが、カウンタ４はリセットされない。また、フラグ配列の第８ビットはリセットされるが、フラグ配列の第９ビットはリセットされない。
【０１３８】
受信部２が９個目のメッセージを受信した時点では、判定部３Ａにおいて最も古い時間ウィンドウはＷ５であり、判定部３Ｂにおいて最も古い時間ウィンドウはＷ４である。よって、アルゴリズム２の閾値は以下の通りである。
判定部３Ａの閾値：[4,3,2,1,5]
判定部３Ｂの閾値：[3,2,1,5,4]
【０１３９】
９個目のメッセージが時刻８４．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂのカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[4,3,2,1,5]
判定部３Ｂのカウンタ：[4,3,1,6,5]
【０１４０】
この時点で判定部３Ａにおいて最も古い時間ウィンドウは、上述したように、Ｗ５である。そして、判定部３Ａにおいてカウンタ５の値は５であり、アルゴリズム１の閾値を超えていない。また、いずれのカウンタもアルゴリズム２の閾値を超えていない。よって、判定部３Ａは「不検知」を出力する。
【０１４１】
一方、この時点で判定部３Ｂにおいて最も古い時間ウィンドウは、上述したように、Ｗ４である。そして、判定部３Ｂのカウンタ４の値は６であり、アルゴリズム１の閾値を超えている。よって、フラグ配列において時間ウィンドウＷ４に対応するビットが設定される。ここでは、フラグ配列の第４ビットが設定されるものとする。この場合、フラグ配列は下記のように更新される。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
判定部３Ｂのフラグ配列：[0,0,1,1,0,0,0,0,0,0]
【０１４２】
ここで、判定部３Ｂのフラグ配列において、連続して設定されているフラグは５ビット未満である。よって、アルゴリズム１の判定結果は「不検知」でる。また、判定部３Ｂにおいて、カウンタ３の値は、アルゴリズム２の対応する閾値を超えていない。よって、アルゴリズム２の判定結果も「不検知」でる。この結果、判定部３Ｂは「不検知」を出力する。
【０１４３】
（１０）１０個目のメッセージの受信（時刻１１２．０ｍ秒）
１０〜１４個目のメッセージは大きく遅延して攻撃検知装置１に到着する。このため、受信部２が１０個目のメッセージを受信する前に、判定部３Ａにおいて、時刻９０ｍ秒に時間ウィンドウＷ５が再開始され（終了時刻は、１４０ｍ秒）、時刻１００ｍ秒に時間ウィンドウＷ１が再開始され（終了時刻は、１５０ｍ秒）、時刻１１０ｍ秒に時間ウィンドウＷ２が再開始される（終了時刻は、１６０ｍ秒）。よって、判定部３Ａにおいて、カウンタ５、１、２がそれぞれリセットされ、フラグ配列の第１０ビット、第１ビット、第２ビットがそれぞれリセットされる。
【０１４４】
また、判定部３Ｂにおいては、受信部２が１０個目のメッセージを受信する前に、時刻８５ｍ秒に時間ウィンドウＷ４が再開始され（終了時刻は、１３５ｍ秒）、時刻９５ｍ秒に時間ウィンドウＷ５が再開始され（終了時刻は、１４５ｍ秒）、時刻１０５ｍ秒に時間ウィンドウＷ１が再開始される（終了時刻は、１５５ｍ秒）。よって、判定部３Ｂにおいて、カウンタ４、５、１がそれぞれリセットされ、フラグ配列の第９ビット、第１０ビット、第１ビットがそれぞれリセットされる。
【０１４５】
受信部２が１０個目のメッセージを受信した時点では、判定部３Ａにおいて最も古い時間ウィンドウはＷ３であり、判定部３Ｂにおいて最も古い時間ウィンドウはＷ２である。よって、アルゴリズム２の閾値は以下の通りである。
判定部３Ａの閾値：[2,1,5,4,3]
判定部３Ｂの閾値：[1,5,4,3,2]
【０１４６】
１０個目のメッセージが時刻１１２．０ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂのカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[1,1,3,2,1]
判定部３Ｂのカウンタ：[1,4,2,1,1]
【０１４７】
この時点で、判定部３Ａにおいて最も古い時間ウィンドウは、上述したようにＷ３である。そして、判定部３Ａにおいてカウンタ３の値は３であり、アルゴリズム１の閾値を超えていない。また、カウンタ１〜５の値は、いずれもアルゴリズム２の対応する閾値を超えていない。よって、判定部３Ａは「不検知」を出力する。
【０１４８】
また、判定部３Ｂにおいて最も古い時間ウィンドウは、上述したようにＷ２である。そして、判定部３Ｂにおいてカウンタ２の値は４であり、アルゴリズム１の閾値を超えていない。また、カウンタ１〜５の値は、いずれもアルゴリズム２の対応する閾値を超えていない。よって、判定部３Ｂも「不検知」を出力する。なお、フラグ配列は下記の通りである。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
判定部３Ｂのフラグ配列：[0,0,1,1,0,0,0,0,0,0]
【０１４９】
（１１）１１個目のメッセージの受信（時刻１１４．０ｍ秒）
受信部２が１１個目のメッセージを受信した時点では、判定部３Ａにおいて最も古い時間ウィンドウはＷ３であり、判定部３Ｂにおいて最も古い時間ウィンドウはＷ２である。よって、アルゴリズム２の閾値は、受信部２が１０個目のメッセージを受信した時点での値と同様に、以下の通りである。
判定部３Ａの閾値：[2,1,5,4,3]
判定部３Ｂの閾値：[1,5,4,3,2]
【０１５０】
１１個目のメッセージが時刻１１４．０ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂのカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[2,2,4,3,2]
判定部３Ｂのカウンタ：[2,5,3,2,2]
【０１５１】
この時点で、判定部３Ａにおいて最も古い時間ウィンドウは、上述したようにＷ３である。そして、判定部３Ａにおいてカウンタ３の値は４であり、アルゴリズム１の閾値を超えていない。また、カウンタ１〜５の値は、いずれもアルゴリズム２の対応する閾値を超えていない。よって、判定部３Ａは「不検知」を出力する。
【０１５２】
また、判定部３Ｂにおいて最も古い時間ウィンドウは、上述したようにＷ２である。そして、判定部３Ｂにおいてカウンタ２の値は５であり、アルゴリズム１の閾値を超えていない。また、カウンタ１〜５の値は、いずれもアルゴリズム２の対応する閾値を超えていない。よって、判定部３Ｂも「不検知」を出力する。なお、フラグ配列は下記の通りである。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
判定部３Ｂのフラグ配列：[0,0,1,1,0,0,0,0,0,0]
【０１５３】
（１２）１２個目のメッセージの受信（時刻１１４．８ｍ秒）
受信部２が１２個目のメッセージを受信した時点では、判定部３Ａにおいて最も古い時間ウィンドウはＷ３であり、判定部３Ｂにおいて最も古い時間ウィンドウはＷ２である。よって、アルゴリズム２の閾値は、受信部２が１０個目のメッセージを受信した時点での値と同様に、以下の通りである。
判定部３Ａの閾値：[2,1,5,4,3]
判定部３Ｂの閾値：[1,5,4,3,2]
【０１５４】
１２個目のメッセージが時刻１１４．８ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂのカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[3,3,5,4,3]
判定部３Ｂのカウンタ：[3,6,4,3,3]
【０１５５】
この時点で、判定部３Ａにおいて最も古い時間ウィンドウは、上述したようにＷ３である。そして、判定部３Ａにおいてカウンタ３の値は５であり、アルゴリズム１の閾値を超えていない。また、カウンタ３〜５の値は、アルゴリズム２の対応する閾値を超えていない。よって、判定部３Ａは「不検知」を出力する。
【０１５６】
一方、判定部３Ｂにおいて最も古い時間ウィンドウは、上述したようにＷ２である。ここで、判定部３Ｂにおいてカウンタ２の値は６であり、アルゴリズム１の閾値を超えている。よって、判定部３Ｂのフラグ配列において時間ウィンドウＷ２に対応するビットが設定される。ここでは、フラグ配列の第７ビットが設定されるものとする。この場合、フラグ配列は下記のように更新される。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,0,0,0]
判定部３Ｂのフラグ配列：[0,0,1,1,0,0,1,0,0,0]
【０１５７】
但し、判定部３Ｂのフラグ配列において、連続して設定されているフラグは５ビット未満である。よって、アルゴリズム１の判定結果は「不検知」である。また、カウンタ３、４の値がアルゴリズム２の対応する閾値を超えていないので、アルゴリズム２の判定結果も「不検知」である。したがって、判定部３Ｂは「不検知」を出力する。
【０１５８】
（１３）１３個目のメッセージの受信（時刻１１７．５ｍ秒）
受信部２が１３個目のメッセージを受信する前に、判定部３Ｂにおいて、時刻１１５ｍ秒に時間ウィンドウＷ２が再開始される（終了時刻は、１６５ｍ秒）。よって、判定部３Ｂにおいて、カウンタ２がリセットされ、フラグ配列の第２ビットがリセットされる。
【０１５９】
受信部２が１３個目のメッセージを受信した時点では、判定部３Ａ、３Ｂにおいて最も古い時間ウィンドウはいずれもＷ３である。よって、アルゴリズム２の閾値は、以下の通りである。
判定部３Ａの閾値：[2,1,5,4,3]
判定部３Ｂの閾値：[2,1,5,4,3]
【０１６０】
１３個目のメッセージが時刻１１７．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂのカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[4,4,6,5,4]
判定部３Ｂのカウンタ：[4,1,5,4,4]
【０１６１】
判定部３Ａの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようにＷ３である。そして、カウンタ３の値は６であり、アルゴリズム１の閾値を超えている。よって、フラグ配列において時間ウィンドウＷ３に対応するビットが設定される。ここでは、フラグ配列の第８ビットが設定されるものとする。この場合、フラグ配列は下記のように更新される。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,1,0,0]
【０１６２】
ここで、このフラグ配列においては、フラグは連続して設定されていない。よって、アルゴリズム１の判定結果は「不検知」である。しかし、カウンタ１〜５の値は、それぞれアルゴリズム２の対応する閾値よりも大きい。よって、アルゴリズム２の判定結果は「検知」である。この結果、判定部３Ａは「検知（時刻：１１７．５ｍ秒）」を出力する。
【０１６３】
判定部３Ｂの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようにＷ３である。ただし、カウンタ３の値は５であり、アルゴリズム１の閾値を超えていない。よって、アルゴリズム１の判定結果は「不検知」であり、フラグ配列は下記の通りである。
判定部３Ｂのフラグ配列：[0,0,0,1,0,0,1,0,0,0]
【０１６４】
また、カウンタ２〜４の値がアルゴリズム２の対応する閾値を超えていないので、アルゴリズム２の判定結果も「不検知」である。この結果、判定部３Ｂは「不検知」を出力する。
【０１６５】
このように、１３個目のメッセージが攻撃検知装置１に到着したときに、判定部３Ａから「検知（時刻：１１７．５ｍ秒）」が出力される。したがって、２次判定部４は、時刻１１２．５〜１１７．５ｍ秒の期間内に判定部３Ｂから「検知」が出力されたか否かを判定する。この例では、この期間内に判定部３Ｂから「検知」が出力されていないので、２次判定部４は、ネットワーク１００が攻撃を受けたと判定しない。
【０１６６】
（１４）１４個目のメッセージの受信（時刻１１９．９ｍ秒）
受信部２が１４個目のメッセージを受信した時点では、判定部３Ａ、３Ｂにおいて最も古い時間ウィンドウはいずれもＷ３である。よって、アルゴリズム２の閾値は、受信部２が１３個目のメッセージを受信した時点での値と同様に、以下の通りである。
判定部３Ａの閾値：[2,1,5,4,3]
判定部３Ｂの閾値：[2,1,5,4,3]
【０１６７】
１４個目のメッセージが時刻１１９．９ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂのカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[5,5,7,6,5]
判定部３Ｂのカウンタ：[5,2,6,5,5]
【０１６８】
判定部３Ａの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようにＷ３である。そして、カウンタ３の値は７であり、アルゴリズム１の閾値を超えている。よって、フラグ配列において時間ウィンドウＷ３に対応するビットが設定される。ただし、このビットは、１３個目のメッセージの受信に起因して既に設定されている。よって、フラグ配列は下記の通りである。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,1,0,0]
【０１６９】
ここで、このフラグ配列において、連続して設定されているフラグは５ビット未満である。よって、アルゴリズム１の判定結果は「不検知」である。しかし、カウンタ１〜５の値は、それぞれアルゴリズム２の対応する閾値よりも大きい。よって、アルゴリズム２の判定結果は「検知」である。この結果、判定部３Ａは「検知（時刻：１１９．９ｍ秒）」を出力する。
【０１７０】
判定部３Ｂの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようにＷ３である。そして、カウンタ３の値は６であり、アルゴリズム１の閾値を超えている。よって、フラグ配列において時間ウィンドウＷ３に対応するビットが設定される。ここでは、フラグ配列の第８ビットが設定されるものとする。この場合、フラグ配列は下記のように更新される。
判定部３Ｂのフラグ配列：[0,0,0,0,0,0,1,1,0,0]
【０１７１】
ここで、このフラグ配列において、連続して設定されているフラグは５ビット未満である。よって、アルゴリズム１の判定結果は「不検知」である。しかし、カウンタ１〜５の値は、それぞれアルゴリズム２の対応する閾値よりも大きい。よって、アルゴリズム２の判定結果は「検知」である。この結果、判定部３Ｂも「検知（時刻：１１９．９ｍ秒）」を出力する。
【０１７２】
このように、１４個目のメッセージが攻撃検知装置１に到着したときに、判定部３Ａ、３Ｂの双方から「検知（時刻：１１９．９ｍ秒）」が出力される。即ち、所定時間内（この例では、５ｍ秒）に判定部３Ａ、３Ｂの双方から「検知」が出力されている。したがって、２次判定部４は、ネットワーク１００が攻撃を受けたと判定する。
【０１７３】
なお、１３個目のメッセージに起因して判定部３Ａから出力される「検知」が示す時刻（即ち、１１７．５ｍ秒）と、１４個目のメッセージに起因して判定部３Ｂから出力される「検知」が示す時刻（即ち、１１９．９ｍ秒）との差分は５ｍ秒以下である。よって、２次判定部４は、これらの判定結果に基づいて、ネットワーク１００が攻撃を受けたと判定してもよい。
【０１７４】
（１５）１５個目のメッセージの受信（時刻１２９．５ｍ秒）
受信部２が１５個目のメッセージを受信する前に、判定部３Ａにおいて、時刻１２０ｍ秒に時間ウィンドウＷ３が再開始される（終了時刻は、１７０ｍ秒）。また、判定部３Ｂにおいて、時刻１２５ｍ秒に時間ウィンドウＷ３が再開始される（終了時刻は、１７５ｍ秒）。よって、判定部３Ａ、３Ｂにおいて、カウンタ３がそれぞれリセットされる。また、判定部３Ａ、３Ｂにおいて、フラグ配列の第３ビットがリセットされる。
【０１７５】
受信部２が１５個目のメッセージを受信した時点では、判定部３Ａ、３Ｂにおいて最も古い時間ウィンドウはいずれもＷ４である。よって、アルゴリズム２の閾値は、以下の通りである。
判定部３Ａの閾値：[3,2,1,5,4]
判定部３Ｂの閾値：[3,2,1,5,4]
【０１７６】
１５個目のメッセージが時刻１２９．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂのカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[6,6,1,7,6]
判定部３Ｂのカウンタ：[6,3,1,6,6]
【０１７７】
判定部３Ａの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようにＷ４である。そして、カウンタ４の値は７であり、アルゴリズム１の閾値を超えている。よって、フラグ配列において時間ウィンドウＷ４に対応するビットが設定される。この例では、第９ビットが設定され、フラグ配列は下記のように更新される。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,1,1,0]
【０１７８】
ここで、このフラグ配列において、連続して設定されているフラグは５ビット未満である。よって、アルゴリズム１の判定結果は「不検知」である。また、カウンタ３の値は、アルゴリズム２の対応する閾値以下である。よって、アルゴリズム２の判定結果も「不検知」である。この結果、判定部３Ａは「不検知」を出力する。
【０１７９】
判定部３Ｂの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようにＷ４である。そして、カウンタ４の値は６であり、アルゴリズム１の閾値を超えている。よって、フラグ配列において時間ウィンドウＷ４に対応するビットが設定される。この例では、第９ビットが設定され、フラグ配列は下記のように更新される。
判定部３Ｂのフラグ配列：[0,0,0,0,0,0,1,1,1,0]
【０１８０】
ここで、このフラグ配列において、連続して設定されているフラグは５ビット未満である。よって、アルゴリズム１の判定結果は「不検知」である。また、カウンタ３の値は、アルゴリズム２の対応する閾値以下である。よって、アルゴリズム２の判定結果も「不検知」である。この結果、判定部３Ａは「不検知」を出力する。
【０１８１】
（１６）１６個目のメッセージの受信（時刻１３９．５ｍ秒）
受信部２が１６個目のメッセージを受信する前に、判定部３Ａにおいて、時刻１３０ｍ秒に時間ウィンドウＷ４が再開始される（終了時刻は、１８０ｍ秒）。また、判定部３Ｂにおいて、時刻１３５ｍ秒に時間ウィンドウＷ４が再開始される（終了時刻は、１８５ｍ秒）。よって、判定部３Ａ、３Ｂにおいて、カウンタ４がそれぞれリセットされる。また、判定部３Ａ、３Ｂにおいて、フラグ配列の第４ビットがリセットされる。
【０１８２】
受信部２が１６個目のメッセージを受信した時点では、判定部３Ａ、３Ｂにおいて最も古い時間ウィンドウはいずれもＷ５である。よって、アルゴリズム２の閾値は、以下の通りである。
判定部３Ａの閾値：[4,3,2,1,5]
判定部３Ｂの閾値：[4,3,2,1,5]
【０１８３】
１６個目のメッセージが時刻１３９．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂのカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[7,7,2,1,7]
判定部３Ｂのカウンタ：[7,4,2,1,7]
【０１８４】
判定部３Ａの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようにＷ５である。そして、カウンタ５の値は７であり、アルゴリズム１の閾値を超えている。よって、フラグ配列において時間ウィンドウＷ５に対応するビットが設定される。この例では、第１０ビットが設定され、フラグ配列は下記のように更新される。
判定部３Ａのフラグ配列：[0,0,0,0,0,0,0,1,1,1]
【０１８５】
ここで、このフラグ配列において、連続して設定されているフラグは５ビット未満である。よって、アルゴリズム１の判定結果は「不検知」である。また、カウンタ３、４の値は、それぞれアルゴリズム２の対応する閾値以下である。よって、アルゴリズム２の判定結果も「不検知」である。この結果、判定部３Ａは「不検知」を出力する。
【０１８６】
判定部３Ｂの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようにＷ５である。そして、カウンタ５の値は７であり、アルゴリズム１の閾値を超えている。よって、フラグ配列において時間ウィンドウＷ５に対応するビットが設定される。この例では、第１０ビットが設定され、フラグ配列は下記のように更新される。
判定部３Ｂのフラグ配列：[0,0,0,0,0,0,1,1,1,1]
【０１８７】
ここで、このフラグ配列において、連続して設定されているフラグは５ビット未満である。よって、アルゴリズム１の判定結果は「不検知」である。また、カウンタ３、４の値は、それぞれアルゴリズム２の対応する閾値以下である。よって、アルゴリズム２の判定結果も「不検知」である。この結果、判定部３Ｂも「不検知」を出力する。
【０１８８】
（１７）１７個目のメッセージの受信（時刻１４９．５ｍ秒）
受信部２が１７個目のメッセージを受信する前に、判定部３Ａにおいて、時刻１４０ｍ秒に時間ウィンドウＷ５が再開始される（終了時刻は、１９０ｍ秒）。また、判定部３Ｂにおいて、時刻１４５ｍ秒に時間ウィンドウＷ５が再開始される（終了時刻は、１９５ｍ秒）。よって、判定部３Ａ、３Ｂにおいて、カウンタ５がそれぞれリセットされる。また、判定部３Ａ、３Ｂにおいて、フラグ配列の第５ビットがリセットされる。
【０１８９】
受信部２が１７個目のメッセージを受信した時点では、判定部３Ａ、３Ｂにおいて最も古い時間ウィンドウはいずれもＷ１である。よって、アルゴリズム２の閾値は、以下の通りである。
判定部３Ａの閾値：[5,4,3,2,1]
判定部３Ｂの閾値：[5,4,3,2,1]
【０１９０】
１７個目のメッセージが時刻１４９．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂのカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[8,8,3,2,1]
判定部３Ｂのカウンタ：[8,5,3,2,1]
【０１９１】
判定部３Ａの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようｎＷ１である。そして、カウンタ１の値は８であり、アルゴリズム１の閾値を超えている。よって、フラグ配列において時間ウィンドウＷ１に対応するビットが設定される。この例では、第１ビットが設定され、フラグ配列は下記のように更新される。
判定部３Ａのフラグ配列：[1,0,0,0,0,0,0,1,1,1]
【０１９２】
ここで、このフラグ配列において、連続して設定されているフラグは５ビット未満である。よって、アルゴリズム１の判定結果は「不検知」である。また、カウンタ３〜５の値は、それぞれアルゴリズム２の対応する閾値以下である。よって、アルゴリズム２の判定結果も「不検知」である。この結果、判定部３Ａは「不検知」を出力する。
【０１９３】
判定部３Ｂの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようにＷ１である。そして、カウンタ１の値は８であり、アルゴリズム１の閾値を超えている。よって、フラグ配列において時間ウィンドウＷ１に対応するビットが設定される。この例では、第１ビットが設定され、フラグ配列は下記のように更新される。
判定部３Ｂのフラグ配列：[1,0,0,0,0,0,1,1,1,1]
【０１９４】
このとき、５個のフラグが連続して設定されている。よって、アルゴリズム１の判定結果が「検知」であり、判定部３Ｂは「検知（時刻：１４９．５ｍ秒）」を出力する。
【０１９５】
２次判定部４は、時刻１４４．５〜１４９．５ｍ秒の期間内に判定部３Ａから「検知」が出力されたか否かを判定する。この例では、この期間内に判定部３Ａから「検知」が出力されていない。よって、２次判定部４は、ネットワーク１００が攻撃を受けたと判定しない。
【０１９６】
（１８）１８個目のメッセージの受信（時刻１５９．５ｍ秒）
受信部２が１８個目のメッセージを受信する前に、判定部３Ａにおいて、時刻１５０ｍ秒に時間ウィンドウＷ１が再開始される（終了時刻は、２００ｍ秒）。また、判定部３Ｂにおいて、時刻１５５ｍ秒に時間ウィンドウＷ１が再開始される（終了時刻は、２０５ｍ秒）。よって、判定部３Ａ、３Ｂにおいて、カウンタ１がそれぞれリセットされ、フラグ配列の第６ビットがそれぞれリセットされる。
【０１９７】
受信部２が１８個目のメッセージを受信した時点では、判定部３Ａ、３Ｂにおいて最も古い時間ウィンドウはいずれもＷ２である。よって、アルゴリズム２の閾値は、以下の通りである。
判定部３Ａの閾値：[1,5,4,3,2]
判定部３Ｂの閾値：[1,5,4,3,2]
【０１９８】
１８個目のメッセージが時刻１５９．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂのカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[1,9,4,3,2]
判定部３Ｂのカウンタ：[1,6,4,3,2]
【０１９９】
判定部３Ａの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようにＷ２である。そして、カウンタ２の値は９であり、アルゴリズム１の閾値を超えている。よって、フラグ配列において時間ウィンドウＷ１に対応するビットが設定される。この例では、第２ビットが設定され、フラグ配列は下記のように更新される。
判定部３Ａのフラグ配列：[1,1,0,0,0,0,0,1,1,1]
【０２００】
このとき、５個のフラグが連続して設定されている。よって、アルゴリズム１の判定結果が「検知」であり、判定部３Ａは「検知（時刻：１５９．５ｍ秒）」を出力する。
【０２０１】
判定部３Ｂの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようにＷ２である。そして、カウンタ２の値は６であり、アルゴリズム１の閾値を超えている。よって、フラグ配列において時間ウィンドウＷ２に対応するビットが設定される。この例では、第２ビットが設定され、フラグ配列は下記のように更新される。
判定部３Ｂのフラグ配列：[1,1,0,0,0,0,0,1,1,1]
【０２０２】
このとき、６個のフラグが連続して設定されている。よって、アルゴリズム１の判定結果が「検知」であり、判定部３Ｂも「検知（時刻：１５９．５ｍ秒）」を出力する。
【０２０３】
このように、１８個目のメッセージが攻撃検知装置１に到着したときに、判定部３Ａ、３Ｂの双方から「検知（時刻：１５９．５ｍ秒）」が出力される。即ち、所定時間内（この例では、５ｍ秒）に判定部３Ａ、３Ｂの双方から「検知」が出力されている。したがって、２次判定部４は、ネットワーク１００が攻撃を受けたと判定する。
【０２０４】
（１９）１９個目のメッセージの受信（時刻１６９．５ｍ秒）
受信部２が１９個目のメッセージを受信する前に、判定部３Ａにおいて、時刻１６０ｍ秒に時間ウィンドウＷ２が再開始される（終了時刻は、２１０ｍ秒）。また、判定部３Ｂにおいて、時刻１６５ｍ秒に時間ウィンドウＷ２が再開始される（終了時刻は、２１５ｍ秒）。よって、判定部３Ａ、３Ｂにおいて、カウンタ２がそれぞれリセットされ、フラグ配列の第７ビットがそれぞれリセットされる。
【０２０５】
受信部２が１９個目のメッセージを受信した時点では、判定部３Ａ、３Ｂにおいて最も古い時間ウィンドウはいずれもＷ３である。よって、アルゴリズム２の閾値は、以下の通りである。
判定部３Ａの閾値：[2,1,5,4,3]
判定部３Ｂの閾値：[2,1,5,4,3]
【０２０６】
１９個目のメッセージが時刻１６９．５ｍ秒に攻撃検知装置１に到着すると、判定部３Ａ、３Ｂのカウンタ１〜５がそれぞれインクリメントされる。この結果、各カウンタは下記のように更新される。
判定部３Ａのカウンタ：[2,1,5,4,3]
判定部３Ｂのカウンタ：[2,1,5,4,2]
【０２０７】
判定部３Ａの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようにＷ３である。ここで、カウンタ３の値は５であり、アルゴリズム１の閾値以下である。また、カウンタ１〜５の値は、それぞれ、アルゴリズム２の対応する閾値以下である。したがって、判定部３Ａは「不検知」を出力する。
【０２０８】
判定部３Ｂの動作は以下の通りである。すなわち、最も古い時間ウィンドウは、上述したようにＷ３である。そして、カウンタ３の値は５であり、アルゴリズム１の閾値以下である。また、カウンタ１〜５の値は、それぞれ、アルゴリズム２の対応する閾値以下である。したがって、判定部３Ｂも「不検知」を出力する。このように、判定部３Ａ、３Ｂから「不検知」が出力されるので、２次判定部４は、ネットワーク１００が攻撃を受けたと判定しない。
【０２０９】
なお、各時間ウィンドウの開始／終了時刻は、最初のメッセージの受信時刻を基準として設定してもよい。例えば、時刻９．５ｍ秒に攻撃検知装置１に最初のメッセージが到着した場合、判定部３Ａにおいて１２ｍ秒（＝９．５＋２．５）を基準として各時間ウィンドウの開始／終了時刻を設定し、判定部３Ｂにおいて１７ｍ秒（＝９．５＋２．５＋５）を基準として各時間ウィンドウの開始／終了時刻を設定してもよい。
【符号の説明】
【０２１０】
１  攻撃検知装置
２  受信部
３（３Ａ、３Ｂ）  判定部
４  ２次判定部
１１ａ〜１１ｎ  カウンタ
１２  検知部
２１  ＣＡＮトランシーバ
２２  ＣＡＮコントローラ
２４  プロセッサ
２５  メモリ
１００  ネットワーク
【図１】
2019126003.tif 000003
【図２】
2019126003.tif 000004
【図３】
2019126003.tif 000005
【図４】
2019126003.tif 000006
【図５】
2019126003.tif 000007
【図６】
2019126003.tif 000008
【図７】
2019126003.tif 000009
【図８】
2019126003.tif 000010
【図９】
2019126003.tif 000011
【図１０】
2019126003.tif 000012
【図１１】
2019126003.tif 000013
【図１２】
2019126003.tif 000014
【図１３】
2019126003.tif 000015
【図１４】
2019126003.tif 000016
【図１５】
2019126003.tif 000017
【図１６】
2019126003.tif 000018