(57)【要約】      （修正有）【課題】ネットワーク上での攻撃を検知する精度を向上させる。【解決手段】基準メッセージ指定部３１は、受信メッセージの中から検知対象識別情報を含む基準メッセージを指定する。再設定タイミング決定部３４は、基準メッセージ指定部３１が基準メッセージを指定したときから次の基準メッセージを指定するまでの期間に攻撃検知装置１０が受信すべき、検知対象識別情報を含むメッセージの数を表す受信メッセージ数を決定する。検知期間設定部３２は、基準メッセージに対して、再設定タイミング決定部３４により決定された受信メッセージ数と同数の検知期間を、検知対象識別情報に対応する送信周期に基づいて設定する。判定部３３は、検知対象識別情報を含むメッセージの受信時刻が対応する検知期間内に入っているか否かに応じて攻撃の有無を判定する。再設定タイミング決定部３４は、検知期間設定部３２が検知期間を設定する毎に受信メッセージ数を決定する。【選択図】図５
2020129785.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）を含む。ＣＲＣフィールドは、ＣＲＣシーケンスおよびＣＲＣデリミタを含む。ＡＣＫフィールドは、ＡＣＫスロットおよびＡＣＫデリミタを含む。なお、図３において各情報要素に対して表記されている値は、ビット長を表す。例えば、ＩＤの長さは１１ビットであり、データフィールドの長さは０〜６４ビットの可変長である。
【００３０】
一般仕様のフレームＦ１と同様に、拡張仕様で使用されるフレームＦ２も、ＳＯＦ、調停フィールド、コントロールフィールド、データフィールド、ＣＲＣフィールド、ＡＣＫフィールド、ＥＯＦを含む。ただし、拡張仕様では、より多くのビット数で識別情報が表される。
【００３１】
以下の記載では、一般仕様のフレームを利用してメッセージが伝送されるものとする。ただし、本発明の実施形態に係わる攻撃検知方法は、拡張仕様のフレームを利用してメッセージが伝送されるケースにも適用される。また、本発明の実施形態に係わる攻撃検知方法は、ＣＡＮ−ＦＤと呼ばれる規格にも対応可能である。
【００３２】
図４は、攻撃検知装置が実装されるＥＣＵのハードウェア構成の一例を示す。ＥＣＵ２００は、この例では、ＣＡＮトランシーバ２０１、ＣＡＮコントローラ２０２、処理回路２０３を含む。処理回路２０３は、プロセッサ２０４およびメモリ２０５を含む。
【００３３】
ＣＡＮトランシーバ２０１は、図３に示すフレームを送信および受信する機能を備える。ＣＡＮコントローラ２０２は、ＣＡＮトランシーバ２０１が受信したフレームからデータを抽出すると共に、そのフレームの受信時刻を測定する。なお、ＣＡＮコントローラ２０２は、受信フレームに対してＣＲＣチェックを実行してもよい。また、ＣＡＮコントローラ２０２は、送信フレームにデータを格納することができる。プロセッサ２０４は、メモリ２０５に格納されているプログラムを実行することにより、攻撃検知を実現する。
【００３４】
＜第１の実施形態＞
図５は、本発明の第１の実施形態に係わる攻撃検知装置の一例を示す。なお、第１の実施形態に係わる攻撃検知装置１０は、この実施例では、図２に示すネットワーク１００に接続される複数のＥＣＵの中の任意のＥＣＵ（例えば、ＥＣＵ０）に実装される。
【００３５】
攻撃検知装置１０は、この実施例では、送受信部２０、制御部３０、記憶部４０を備える。制御部３０は、基準メッセージ指定部３１、検知期間設定部３２、判定部３３、再設定タイミング決定部３４を備える。記憶部４０は、送信条件４１、基準時刻情報４２、受信状況情報４３、検知期間情報４４を保持する。なお、攻撃検知装置１０は、図５に示していない他の機能または要素を備えていてもよい。
【００３６】
送信条件４１は、ＩＤ毎に、ネットワーク１００において送信されるメッセージの送信周期を表す。各ＩＤの送信周期は、予め決められているものとする。また、送信条件４１は、送信周期のマージンを含む。図６（ａ）に示す例では、ID＝0x123により識別されるメッセージが、１００ｍ秒間隔で送信されることが記録されている。また、送信周期のマージンとして４０ｍ秒が設定されている。なお、基準時刻情報４２、受信状況情報４３、検知期間情報４４については後で記載する。
【００３７】
送受信部２０は、ネットワーク１００に接続される各ＥＣＵにメッセージを送信する。また、送受信部２０は、他のＥＣＵから送信されるメッセージを、ネットワーク１００を介して受信する。各メッセージの受信時刻は、送受信部２０により検出される。なお、送受信部２０は、例えば、図４に示すＣＡＮトランシーバ２０１により実現される。
【００３８】
基準メッセージ指定部３１は、ＩＤ毎に、送受信部２０が受信したメッセージの中から基準メッセージを指定する。基準メッセージは、同じＩＤを有する他のメッセージの受信順序をカウントするための基準として使用される。
【００３９】
制御部３０は、基準時刻情報４２として、ＩＤ毎に、基準メッセージの受信時刻を記憶部４０に記録する。図６（ｂ）に示す例では、ID＝0x123に対応する基準時刻として「ゼロ」が記録されている。また、制御部３０は、受信状況情報４３として、ＩＤ毎に、各受信メッセージの受信順序および受信時刻を記憶部４０に記録する。受信順序は、各メッセージが基準メッセージからカウントして何番目の受信メッセージであるのかを表す。受信時刻は、各メッセージの受信時刻を表す。図６（ｃ）に示す例では、基準メッセージおよび基準メッセージの後に攻撃検知装置１０に到着する３個の受信メッセージについて受信順序および受信時刻が記録されている。
【００４０】
検知期間設定部３２は、送信条件４１および基準時刻情報４２に基づいて、ＩＤ毎に、検知期間を設定する。この実施例では、検知対象の識別情報を含むメッセージの送信周期が１００ｍ秒であり、そのマージンが４０ｍ秒である。また、検知期間設定部３２は、基準メッセージに対して３個の検知期間を設定するものとする。この場合、図７に示すように、検知期間Ｚ１、Ｚ２、Ｚ３は、それぞれ、１００±４０ｍ秒、２００±４０ｍ秒、３００±４０ｍ秒に設定される。各検知期間の範囲を表す検知期間情報４４は、図６（ｄ）に示すように、記憶部４０に記録される。
【００４１】
判定部３３は、ＩＤ毎に、受信メッセージの受信順序を検出する。すなわち、判定部３３は、ＩＤ毎に、受信メッセージが基準メッセージからカウントして何番目のメッセージであるかを特定する。そして、判定部３３は、検知期間情報４４を参照し、各メッセージの受信時刻が対応する検知期間内に入っているか否かを判定する。すなわち、判定部３３は、基準メッセージからカウントして１番目のメッセージの受信時刻が検知期間Ｚ１の中に入っているか否かを判定する。同様に、２番目のメッセージの受信時刻が検知期間Ｚ２の中に入っているか否かが判定され、３番目のメッセージの受信時刻が検知期間Ｚ３の中に入っているか否かが判定される。そして、１以上のメッセージの受信時刻が対応する検知期間から外れているときは、判定部３３は、ネットワーク１００が攻撃されたと判定する。図７に示す例では、各メッセージＭ１、Ｍ２、Ｍ３の受信時刻は、それぞれ１０１ｍ秒、２００ｍ秒、３０１ｍ秒である。すなわち、各メッセージＭ１〜Ｍ３の受信時刻は、それぞれ対応する検知期間Ｚ１〜Ｚ３の中に入っている。よって、判定部３３は、ネットワーク１００が攻撃されていないと判定する。
【００４２】
基準メッセージ指定部３１は、検知期間設定部３２により設定された複数の検知期間のうちの最後の検知期間内に受信したメッセージを、次の検知動作のための基準メッセージとして指定する。図７に示す例では、検知期間Ｚ３内に攻撃検知装置１０が受信したメッセージＭ３が、次の検知動作のための基準メッセージとして指定される。
【００４３】
この後、検知期間設定部３２は、新たな基準メッセージの受信時刻に対して複数の検知期間を設定する。具体的には、検知期間設定部３２は、図８に示すように、メッセージＭ３を基準メッセージとして新たな検知期間Ｚ４〜Ｚ６を設定する。この場合、メッセージＭ３の受信時刻が３０１ｍ秒なので、検知期間Ｚ４、Ｚ５、Ｚ６の中心時刻は、それぞれ４０１ｍ秒、５０１ｍ秒、６０１ｍ秒に設定される。そして、判定部３３は、検知期間Ｚ４〜Ｚ６を用いてネットワーク１００への攻撃をモニタする。
【００４４】
なお、記憶部４０は、図４に示すメモリ２０５により実現される。また、基準メッセージ指定部３１、検知期間設定部３２、判定部３３、再設定タイミング決定部３４を含む制御部３０は、図４に示すプロセッサ２０４がメモリ２０５に格納されている攻撃検知プログラムを実行することにより実現される。なお、再設定タイミング決定部３４については後で説明する。
【００４５】
図９は、第１の実施形態においてネットワーク１００への攻撃が検知されるケースの一例を示す。図９に示す例では、図７に示すメッセージＭ１〜Ｍ３に加えて、攻撃メッセージＭＸがネットワーク１００に入力されている。この場合、攻撃検知装置１０は、攻撃メッセージＭＸを２番目のメッセージとして処理し、メッセージＭ２を３番目のメッセージとして処理し、メッセージＭ３を４番目のメッセージとして処理する。
【００４６】
攻撃メッセージＭＸは、１６５ｍ秒に攻撃検知装置１０に到着する。すなわち、２番目のメッセージが検知期間Ｚ２内に攻撃検知装置１０に到着する。この場合、攻撃検知装置１０は、攻撃メッセージＭＸを攻撃メッセージと判定しない。
【００４７】
この後、２００ｍ秒にメッセージＭ２が攻撃検知装置１０に到着する。ここで、メッセージＭ２は、３番目のメッセージとして処理される。すなわち、攻撃検知装置１０は、３番目のメッセージの受信時刻が３番目の検知期間Ｚ３内に入っていないと判定する。この場合、攻撃検知装置１０は、ネットワーク１００が攻撃されたと判定する。このように、ネットワーク１００に攻撃メッセージＭＸが挿入されると、攻撃検知装置１０は、ネットワーク１００が攻撃されたと判定することができる。
【００４８】
ただし、攻撃メッセージＭＸが挿入されるタイミングによっては、攻撃検知装置１０の動作が不安定になることがある。具体的には、基準メッセージに対して設定される複数の検知期間の中の最後の検知期間内に攻撃メッセージが入力されると、攻撃検知装置１０の動作が不安定になることがある。
【００４９】
図１０は、ネットワーク１００への攻撃が検知されないケースの一例を示す。この例では、メッセージＭ１、Ｍ２、Ｍ３は、それぞれ１０１ｍ秒、２００ｍ秒、３３５ｍ秒に攻撃検知装置１０に到着する。また、攻撃メッセージＭＸは、２６５ｍ秒に攻撃検知装置１０に到着するものとする。
【００５０】
この場合、メッセージＭ１、Ｍ２、ＭＸの受信時刻は、ぞれぞれ、対応する検知期間Ｚ１、Ｚ２、Ｚ３内に入っている。よって、この時点で判定部３３は、ネットワーク１００が攻撃されたとは判定しない。また、基準メッセージ指定部３１は、最後の検知期間内に受信したメッセージを、次の検知動作のための基準メッセージとして指定する。図１０に示す例では、検知期間Ｚ３内に攻撃検知装置１０が受信したメッセージＭＸが、次の検知動作のための基準メッセージとして指定される。
【００５１】
この後、検知期間設定部３２は、新たな基準メッセージの受信時刻に対して複数の検知期間を設定する。具体的には、検知期間設定部３２は、図１０に示すように、メッセージＭＸの受信時刻を基準として新たな検知期間Ｚ４〜Ｚ６を設定する。この場合、メッセージＭＸの受信時刻が２６５ｍ秒なので、検知期間Ｚ４、Ｚ５、Ｚ６の中心時刻は、それぞれ３６５ｍ秒、４６５ｍ秒、５６５ｍ秒に設定される。また、各検知期間のマージンは４０ｍ秒である。そして、判定部３３は、検知期間Ｚ４〜Ｚ６を用いてネットワーク１００への攻撃をモニタする。なお、図１０では、検知期間Ｚ６は省略されている。
【００５２】
検知期間Ｚ４、Ｚ５、Ｚ６が設定された後、メッセージＭ３が攻撃検知装置１０に到着する。ここで、メッセージＭ３の受信時刻は、３３５ｍ秒である。また、検知期間Ｚ４の範囲は、３２５〜４０５ｍ秒である。すなわち、メッセージＭ３の受信時刻は、検知期間Ｚ４内に入っている。この場合、判定部３３は、ネットワーク１００が攻撃されたとは判定しない。すなわち、図１０に示す例では、ネットワーク１００に攻撃メッセージＭＸが入力されたが、その攻撃は検知されない。
【００５３】
このように、最後の検知期間内に攻撃メッセージが入力されると、攻撃検知装置１０の動作が不安定になることがある。したがって、最後の検知期間が設定されるタイミングが既知であるものとすると、悪意ある第３者（以下、攻撃者）がそのタイミングを狙って攻撃メッセージを送信することでネットワーク１００に障害を発生させるおそれがある。
【００５４】
ここで、新たな基準メッセージに対して設定される検知期間の数が一定であるときは、攻撃者にとって、最後の検知期間が設定されるタイミングを推定しやすくなると考えられる。換言すれば、新たな基準メッセージに対して設定される検知期間の数が一定でなければ、攻撃者にとって、最後の検知期間を狙って攻撃メッセージを送信することが難しくなると考えられる。そこで、攻撃検知装置１０は、図７〜図９に示す検知動作を繰り返し実行するときに、新たな基準メッセージに対してランダムな数の検知期間を設定する。
【００５５】
図１１は、第１の実施形態の攻撃検知方法の一例を示す。この実施例では、攻撃検知装置１０は、検知対象ＩＤ（＝0x123）を含むメッセージをモニタするものとする。このＩＤを含むメッセージの送信周期は１００ｍ秒である。そして、時刻ゼロに攻撃検知装置１０に到着したメッセージＭ０が基準メッセージとして選択される。メッセージＭ０に続いて、メッセージＭ１〜Ｍ１２および攻撃メッセージＭＸ１〜ＭＸ２が攻撃検知装置１０に到着する。これらのメッセージの受信時刻は、以下の通りである。
Ｍ１：１０１ｍ秒
Ｍ２：１９８ｍ秒
ＭＸ１：２６５ｍ秒
Ｍ３：３０５ｍ秒
Ｍ４：４００ｍ秒
Ｍ５：４９９ｍ秒
ＭＸ２：５５０ｍ秒
Ｍ６：５９４ｍ秒
Ｍ７：６９８ｍ秒
Ｍ８：８０５ｍ秒
Ｍ９：９００ｍ秒
Ｍ１０：１００１ｍ秒
Ｍ１１：１０９９ｍ秒
Ｍ１２：１２００ｍ秒
【００５６】
攻撃検知装置１０は、基準メッセージＭ０に対して１又は複数の検知期間を設定する。ここで、図５に示す再設定タイミング決定部３４は、基準メッセージの変更まで（すなわち、基準メッセージ指定部３１が基準メッセージを指定したときから次の基準メッセージを指定するまでの期間）に攻撃検知装置１０が受信すべきメッセージの数を表すメッセージ数Ｙを決定する。すなわち、検知期間の再設定が行われるまでに攻撃検知装置１０が受信すべきメッセージ数Ｙを決定する。なお、メッセージ数Ｙは、例えば、基準メッセージの変更までに攻撃検知装置１０が受信すべき正規メッセージの数を表す。
【００５７】
再設定タイミング決定部３４は、例えば、乱数発生器を用いて実現される。そして、検知期間設定部３２は、再設定タイミング決定部３４により決定されたメッセージ数Ｙと同数の検知期間を設定する。この例では、メッセージ数Ｙは「５」である。この場合、検知期間設定部３２は、基準メッセージＭ０に対して５個の検知期間Ｚ１〜Ｚ５を設定する。なお、再設定タイミング決定部３４は、例えば、検知期間設定部３２が検知期間を設定する毎にメッセージ数Ｙを決定する。
【００５８】
なお、メッセージ数Ｙは、乱数発生器を使用することなく他の方法で決定してもよい。メッセージ数Ｙを決定する方法は、後で詳しく説明する。また、ランダム性を高めるため、再設定されたメッセージ数Ｙが、過去の所定数の検知期間のそれぞれで決定されたメッセージ数のいずれかと同じになった場合、他の値に変更してもよい。
【００５９】
検知期間Ｚ１〜Ｚ５は、基準メッセージＭ０の受信時刻を基準として、検知対象ＩＤを含むメッセージの送信周期と同じ間隔で設定される。すなわち、検知期間Ｚ１〜Ｚ５は、１００ｍ秒間隔で設定される。また、この実施例では、送信周期のマージンは±４０ｍ秒である。よって、検知期間Ｚ１〜Ｚ５の範囲は、以下の通りである。
Ｚ１：１００±４０ｍ秒
Ｚ２：２００±４０ｍ秒
Ｚ３：３００±４０ｍ秒
Ｚ４：４００±４０ｍ秒
Ｚ５：５００±４０ｍ秒
【００６０】
判定部３３は、各受信メッセージの受信時刻が対応する検知期間内に入っているか否かに基づいてネットワーク１００への攻撃の有無を判定する。この実施例では、メッセージＭ１〜Ｍ３の受信時刻は、それぞれ検知期間Ｚ１〜Ｚ３内に入っている。よって、判定部３３は、ネットワーク１００は攻撃を受けていないと判定する。
【００６１】
攻撃メッセージＭＸ１は、基準メッセージＭ０からカウントして４番目のメッセージである。そして、攻撃メッセージＭＸ１の受信時刻は、検知期間Ｚ４内に入っている。よって、攻撃検知装置１０が攻撃メッセージＭＸ１を受信したときは、判定部３３は、ネットワーク１００は攻撃を受けていないと判定する。
【００６２】
メッセージＭ４は、基準メッセージＭ０からカウントして４番目の正規メッセージである。ただし、メッセージＭ３とメッセージＭ４との間に攻撃メッセージＭＸ１が挿入されているので、メッセージＭ４は、基準メッセージＭ０からカウントして５番目のメッセージとして処理される。すなわち、メッセージＭ４の受信時刻が検知期間Ｚ５内に入っているか否かが判定される。ところが、攻撃メッセージＭ４の受信時刻は、検知期間Ｚ５内に入っていない。したがって、判定部３３は、ネットワーク１００が攻撃を受けたと判定する。
【００６３】
メッセージＭ５は、基準メッセージＭ０からカウントして６番目のメッセージである。ただし、上述したように、攻撃検知装置１０にメッセージＭ４が到着したときに、ネットワーク１００への攻撃が検知されている。そして、攻撃が検知されたときは、基準メッセージＭ０を基準としてカウントされる受信メッセージの数が調整される。具体的には、攻撃検知装置１０が受信したメッセージの数から、攻撃検知装置１０により検知された攻撃の回数が減算される。よって、メッセージＭ５は、基準メッセージＭ０からカウントして５番目のメッセージとして処理される。すなわち、判定部３３は、メッセージＭ５に対応する検知期間は「Ｚ５」である。そうすると、メッセージＭ５の受信時刻は、検知期間Ｚ５内に入っている。よって、判定部３３は、ネットワーク１００は攻撃を受けていないと判定する。
【００６４】
ここで、検知期間Ｚ５は、基準メッセージＭ０に対して設定された最後の検知期間である。よって、基準メッセージ指定部３１は、検知期間Ｚ５内に攻撃検知装置１０に到着したメッセージＭ５を、次の検知動作のための基準メッセージとして指定する。
【００６５】
検知期間設定部３２は、新たな基準メッセージ（即ち、メッセージＭ５）に対して検知期間を設定する。このとき、再設定タイミング決定部３４は、さらに次の基準メッセージが指定されるまでに攻撃検知装置１０が受信すべきメッセージ数Ｙを決定する。即ち、基準メッセージＭ５に対して設定すべき検知期間の数が決定される。この実施例では、新たに決定されるメッセージ数Ｙは「２」である。この場合、検知期間設定部３２は、基準メッセージＭ５に対して２個の検知期間Ｚ１１〜Ｚ１２を設定する。
【００６６】
検知期間Ｚ１１〜Ｚ１２は、基準メッセージＭ５の受信時刻を基準として設定される。ここで、メッセージＭ５の受信時刻は４９９ｍ秒である。よって、検知期間Ｚ１１〜Ｚ１２の範囲は、以下の通りである。
Ｚ１１：５９９±４０ｍ秒
Ｚ１２：６９９±４０ｍ秒
【００６７】
判定部３３は、攻撃検知装置１０に検知対象ＩＤを含むメッセージが到着する毎に、検知期間Ｚ１１〜Ｚ１２を用いてネットワーク１００への攻撃の有無を判定する。即ち、攻撃メッセージＭＸ２の受信時刻は、検知期間Ｚ１１内に入っていない。よって、判定部３３は、ネットワーク１００が攻撃を受けたと判定する。この後、メッセージＭ６、Ｍ７の受信時刻は、それぞれ検知期間Ｚ１１、Ｚ１２内に入っている。よって、判定部３３は、ネットワーク１００が攻撃を受けていないと判定する。
【００６８】
この後、攻撃検知装置１０は、同様の方法で検知動作を繰り返す。すなわち、検知期間設定部３２は、新たな基準メッセージ（即ち、メッセージＭ７）に対して検知期間を設定する。このとき、再設定タイミング決定部３４は、さらに次の基準メッセージが指定されるまでに攻撃検知装置１０が受信すべきメッセージ数Ｙを決定する。この実施例では、メッセージ数Ｙは「４」である。この場合、検知期間設定部３２は、基準メッセージＭ７に対して４個の検知期間Ｚ２１〜Ｚ２４を設定する。
【００６９】
検知期間Ｚ２１〜Ｚ２４は、基準メッセージＭ７の受信時刻を基準として設定される。ここで、メッセージＭ７の受信時刻は６９８ｍ秒である。よって、検知期間Ｚ２１〜Ｚ２４の範囲は、以下の通りである。
Ｚ２１：７９８±４０ｍ秒
Ｚ２２：８９８±４０ｍ秒
Ｚ２３：９９８±４０ｍ秒
Ｚ２４：１０９８±４０ｍ秒
【００７０】
図１２は、第１の実施形態に係わる攻撃検知方法の一例を示すフローチャートである。このフローチャートの処理は、例えば、ユーザまたはネットワーク管理者により検知対象ＩＤが指定されたときに実行される。以下の記載では、攻撃検知装置１０は、検知対象ＩＤを含むメッセージをモニタするものとする。
【００７１】
Ｓ１において、検知期間設定部３２は、記憶部４０に保存されている送信条件４１を参照し、検知対象ＩＤの送信周期ＴおよびマージンＭを決定する。また、検知期間設定部３２は、基準メッセージの変更までに攻撃検知装置１０が受信するメッセージ数Ｙを決定する。メッセージ数Ｙは、例えば、乱数発生器により生成される。
【００７２】
Ｓ２において、攻撃検知装置１０は、検知対象ＩＤを含むメッセージを受信する。ここで、基準メッセージ指定部３１は、この受信メッセージを基準メッセージとして指定するものとする。この場合、このメッセージの受信時刻ｔ(0)は、基準時刻情報４２として記憶部４０に記録される。
【００７３】
Ｓ３において、検知期間設定部３２は、メッセージ数Ｙと同数の検知期間を設定する。すなわち、基準メッセージに対してＹ個の検知期間が設定される。各検知期間は、受信時刻ｔ(0)、送信周期Ｔ、およびマージンＭに基づいて計算される。この例では、ｉ（ｉ＝１〜Ｙ）番目の検知期間ｚ(i)は、下式で表される。
ｚ(i)＝ｔ(0)＋ｉ×Ｔ±Ｍ
また、検知期間設定部３２は、変数ｋを１に初期化する。変数ｋは、攻撃検知装置１０が受信するメッセージをカウントする。
【００７４】
Ｓ４において、攻撃検知装置１０は、検知対象ＩＤを含むメッセージを受信する。このとき、このメッセージの受信時刻ｔ(k)は、受信状況情報４３として記憶部４０に記録される。
【００７５】
Ｓ５において、判定部３３は、受信メッセージの受信時刻が対応する検知期間内に入っているか否かを判定する。すなわち、受信時刻ｔ(k)が検知期間ｚ(k)の中に入っているか否かが判定される。
【００７６】
受信時刻ｔ(k)が検知期間ｚ(k)の中に入っているときは、判定部３３は、ネットワーク１００が攻撃を受けたと判定しない。この場合、判定部３３は、Ｓ６において、変数ｋがメッセージ数Ｙに一致するか否かを判定する。すなわち、基準メッセージの後に検知対象ＩＤを含むＹ個のメッセージが攻撃検知装置１０に到着したか否かが判定される。
【００７７】
変数ｋがメッセージ数Ｙに一致しないときは、Ｓ７において変数ｋがインクリメントされた後、攻撃検知装置１０の処理はＳ４に戻る。すなわち、ネットワーク１００への攻撃が検知されないときは、Ｓ４〜Ｓ７の処理が繰り返し実行される。そして、変数ｋがメッセージ数Ｙに一致すると、攻撃検知装置１０の処理はＳ８に進む。すなわち、基準メッセージの後に検知対象ＩＤを含むＹ個のメッセージが攻撃検知装置１０に到着すると、基準メッセージおよび検知期間の再設定が実行される。
【００７８】
Ｓ８において、基準メッセージ指定部３１は、基準メッセージからカウントして攻撃検知装置１０がＹ番目に受信したメッセージの受信時刻ｔ(Y)を、次の検知動作のための基準時刻ｔ(0)として設定する。すなわち、基準メッセージからカウントして攻撃検知装置１０がＹ番目に受信したメッセージは、次の検知動作のための新たな基準メッセージとして指定される。
【００７９】
Ｓ９において、再設定タイミング決定部３４は、次の検知動作のためのメッセージ数Ｙを決定する。メッセージ数Ｙは、例えば、乱数発生器により新たに生成される。
【００８０】
この後、攻撃検知装置１０の処理はＳ３に戻る。すなわち、検知期間設定部３２は、Ｓ９で決定されたメッセージ数Ｙと同数の検知期間を設定する。そして、攻撃検知装置１０は、新たに設定された検知期間を利用してネットワーク１００への攻撃の有無をモニタする。
【００８１】
受信時刻ｔ(k)が検知期間ｚ(k)の中に入っていないときは、Ｓ１０において、判定部３３は、ネットワーク１００が攻撃を受けたと判定する。この場合、攻撃検知装置１０の処理はＳ４に戻る。このとき、Ｓ７のインクリメント処理は実行されない。よって、変数ｋは、実質的に、攻撃メッセージ以外のメッセージ（即ち、正規メッセージ）をカウントする。
【００８２】
このように、第１の実施形態の攻撃検知方法においては、基準メッセージの変更までに攻撃検知装置１０が受信するメッセージ数Ｙは、一定ではなく、ランダムに決定される。すなわち、検知期間が再設定されるときに、検知期間の個数がランダムに決定される。よって、各基準メッセージに対応する最後の検知期間が設定されるタイミングを予測することは困難である。このため、各基準メッセージに対応する最後の検知期間を狙った攻撃が抑制される。したがって、攻撃検知装置の動作が不安定になることが少なくなり、ネットワーク上での攻撃を検知する精度が向上する。
【００８３】
なお、検知期間を再設定することにより、送信周期の誤差の累積に起因する影響が抑制される。例えば、ネットワークへの攻撃の誤検知および／または検知漏れが抑制される。
【００８４】
＜第２の実施形態＞
第１の実施形態と同様に、第２の実施形態の攻撃検知装置も、例えば、ＣＡＮシステムにおいて使用される。この場合、第２の実施形態の攻撃検知装置も、図２に示すネットワーク１００に接続される複数のＥＣＵの中の任意のＥＣＵ（例えば、ＥＣＵ０）に実装される。
【００８５】
ＣＡＮシステムにおいては、予定時刻よりも早く正規メッセージが送信されることがある。すなわち、各ＥＣＵにおいて、到着予定時刻よりも早くその正規メッセージが到着することがある。この場合、メッセージの到着予定時刻と実際の到着時刻とを比較する方法では、悪意あるメッセージを正しくモニタできないことがある。例えば、予定時刻よりも早く送信された正規メッセージが悪意のメッセージと判定されるおそれがある。
【００８６】
第２の実施形態の攻撃検知装置は、周期的に送信されるべきメッセージが予定時刻よりも早く送信されたことに起因する誤検知を抑制して、攻撃を検知する精度を向上させる機能を備える。なお、以下の記載では、予定時刻よりも早く攻撃検知装置にメッセージが到着する状態を「早着」と呼ぶことがある。また、予定時刻よりも早く攻撃検知装置に到着するメッセージを「早着メッセージ」と呼ぶことがある。
【００８７】
図１３は、本発明の第２の実施形態に係わる攻撃検知装置の一例を示す。攻撃検知装置５０は、図１３に示すように、受信部５１、予測部５２、カウント部５３、判定部５４、再設定制御部５５、再設定タイミング決定部５６を備える。なお、攻撃検知装置５０は、図１３に示していない他の機能または要素を備えていてもよい。
【００８８】
受信部５１は、ネットワーク１００に実装されるＥＣＵから周期的に送信されるメッセージを受信する。なお、攻撃検知装置５０は、各メッセージに含まれるＩＤ毎に受信時刻を検出できる。メッセージの受信時刻は、例えば、攻撃検知装置５０に実装される不図示のタイマを利用して検出される。
【００８９】
予測部５２は、検知対象ＩＤに対してモニタ期間を設定する。そして、予測部５２は、検知対象ＩＤの送信周期に基づいて、そのモニタ期間内に受信部５１が受信すると見込まれるメッセージの個数を予測する。カウント部５３は、モニタ期間内に受信部５１が実際に受信したメッセージの個数をカウントする。ただし、カウント部５３により得られるカウント値は、攻撃メッセージと判定されたメッセージをカウントしないように補正されてもよい。
【００９０】
判定部５４は、予測部５２により得られる予測値およびカウント部５３により得られるカウント値に基づいてネットワーク１００が攻撃されたか否かを判定する。具体的には、判定部５４は、予測部５２により得られる予測値、その予測値に予め指定される早着許容値を加算することで得られる参照値、およびカウント部５３により得られるカウント値を用いて、ネットワーク１００が攻撃されたか否かを判定する。たとえば、判定部５４は、カウント値が予測値よりも大きく且つ参照値以下である状態を検出したときは、早着許容値に対応する早着猶予期間が経過した後に、カウント値と予測値との比較の結果に基づいて、ネットワーク１００が攻撃されたか否かを判定してもよい。なお、猶予期間が経過するまでの期間については、カウント値が参照値を超えているかどうかに基づいて、ネットワーク１００が攻撃されたか否かを判定する。
【００９１】
早着許容値は、正規メッセージが予定到着時刻よりも早く攻撃検知装置５０に到着したときに、その正規メッセージが攻撃メッセージであると判定されないようにするために使用される。具体的には、早着許容値は、正規メッセージと判定することを許容する、早着メッセージの最大数を表す。
【００９２】
例えば、所定の周期で送信される正規メッセージに加えて、ネットワーク１００に攻撃メッセージが入力されると、攻撃検知装置５０において受信メッセージの数が予測値よりも多くなる。ところが、攻撃メッセージが入力されないときであっても、正規メッセージが予定到着時刻よりも早く攻撃検知装置５０に到着すると、受信メッセージの数が一時的に予測値よりも多くなる。よって、攻撃検知の精度を高くするためには、攻撃メッセージと早着メッセージとを識別することが要求される。
【００９３】
ここで、メッセージの早着に起因して受信メッセージの数が一時的に予測値よりも多くなったときは、その後、一時的に、受信メッセージの到着頻度が低くなると考えられる。すなわち、攻撃メッセージがない場合は、早着メッセージに起因してカウント値が一時的に予測値を超えても、そのカウント値は、やがて予測値に一致すると見込まれる。具体的には、ｅ個のメッセージが予定到着時刻よりも早く到着したときは、正規メッセージの送信周期のｅ倍以上の時間が経過すれば、カウント値が予測値に一致する状態が回復すると見込まれる。
【００９４】
そこで、カウント値が予測値よりも大きく且つ「予測値＋早着許容値」以下となったときには、判定部５４は、警告フラグをＯＦＦ状態からＯＮ状態に変更する。そして、判定部５４は、早着許容値に対応する早着猶予期間が経過した後に、カウント値と予測値との比較の結果に基づいてネットワーク１００が攻撃されたか否かを判定する。この比較の結果、カウント値が予測値以下であれば、警告フラグの原因が早着メッセージであったと推定されるので、判定部５４は、ネットワーク１００が攻撃されたと判定しない。一方、早着猶予期間が経過した後においてもなおカウント値が予測値よりも大きければ、警告フラグの原因が攻撃メッセージであったと推定されるので、判定部５４は、ネットワーク１００が攻撃されたと判定する。なお、早着猶予期間は、早着メッセージに起因してカウント値が予測値を超えたときから、カウント値が予測値に一致する状態が回復すると見込まれるまでの時間に相当する。
【００９５】
再設定制御部５５は、所定の条件が満たされたときに、予測部５２により得られる予測値およびカウント部５３により得られるカウント値をそれぞれ再設定する。たとえば、カウント値が所定の閾値以上であるときに、再設定制御部５５は、予測値およびカウント値をそれぞれ再設定する。このとき、再設定制御部５５は、次のモニタ期間を設定してもよい。
【００９６】
再設定タイミング決定部５６は、再設定制御部５５においてカウント値と比較される閾値を決定する。ここで、閾値が大きいときは、再設定が実行されるまでに受信部５１が受信するメッセージの数が多くなる。反対に、閾値が小さいときは、再設定が実行されるまでに受信部５１が受信するメッセージの数が少なくなる。したがって、この閾値は、実質的に、予測値およびカウント値を再設定するタイミングを指定する。そして、再設定タイミング決定部５６は、再設定が実行される毎に閾値を決定する。このとき、再設定が実行される毎に再設定タイミング決定部５６決定される閾値は一定でない。
【００９７】
なお、受信部５１は、図４に示すＣＡＮトランシーバ２０１により実現される。また、プロセッサ２０４は、メモリ２０５に格納されているプログラムを実行することにより、攻撃検知を実現する。この場合、メモリ２０５には、予測部５２、カウント部５３、判定部５４、再設定制御部５５、再設定タイミング決定部５６の機能を記述したプログラムが格納される。そして、プロセッサ２０４は、このプログラムを実行することにより、予測部５２、カウント部５３、判定部５４、再設定制御部５５、再設定タイミング決定部５６の機能を提供する。
【００９８】
図１４は、第２の実施形態に係わる攻撃検知装置５０の動作の一例を示す。攻撃検知装置５０は、図２に示すＥＣＵ０に実装され、ネットワーク１００を攻撃する悪意あるメッセージ（すなわち、攻撃メッセージ）を検知する。なお、この例では、検知対象ＩＤを含むメッセージは、所定の周期で送信されるように設計されているものとする。また、ネットワーク１００において以下の通信が行われるものとする。
（１）メッセージは、欠落することはない。
（２）メッセージ送信が遅延したときは、そのメッセージは後で送信されるので、合計メッセージ数は回復する。
（３）メッセージ送信が予定時刻よりも早く行われたときは、そのメッセージは既に送信済みであり、あらためて送信されることはないので、合計メッセージ数は回復する。
【００９９】
なお、以下の記載において、「メッセージ」は、特に断らない限りは、検知対象ＩＤを含むメッセージを表すものとする。また、△印は、受信部５１により正規メッセージが攻撃検知装置５０に到着したタイミングを表す。
【０１００】
図１４において、カウント値ｎは、受信部５１により受信されたメッセージの個数を表し、カウント部５３によりカウントされる。予測値ｘは、モニタ期間内に受信部５１が受信すると見込まれるメッセージの個数を表し、予測部５２により算出される。
【０１０１】
予測部５２は、メッセージの送信周期ＴＣに基づいてモニタ期間を設定する。モニタ期間は、基準メッセージの受信時刻に対して設定される。例えば、時刻ＴＳにおいて攻撃検知装置５０に基準メッセージＭ０が到着するものとする。この場合、モニタ期間は、時刻ＴＳに対して設定される。また、モニタ期間は、１または複数のカウント領域を含む。たとえば、最初のモニタ期間ＴＳ〜ｔ(1)は、カウント領域Ｃ１から構成される。モニタ期間ＴＳ〜ｔ(2)は、カウント領域Ｃ１、Ｃ２から構成される。モニタ期間ＴＳ〜ｔ(5)は、カウント領域Ｃ１〜Ｃ５から構成される。各カウント領域の長さは、送信周期ＴＣと同じである。ただし、最初のカウント領域Ｃ１の長さは、送信周期ＴＣに「１＋ｐ」を乗算することで得られる。タイミングパラメータｐは、ゼロよりも大きく、１よりも小さい実数である。また、タイミングパラメータｐは、例えば、メッセージが遅延なく送信周期ＴＣで送信されたときに、各カウント領域の中心で受信部５１が対応するメッセージを受信するように決定される。この場合、タイミングパラメータｐの値は0.5である。
【０１０２】
モニタ期間は、基準メッセージＭ０の受信時刻に対して設定される。例えば、時刻ＴＳにおいて攻撃検知装置５０に基準メッセージＭ０が到着するものとする。この場合、モニタ期間の終了時刻ｔ(i)は、下式で表される。
ｔ(i)＝ＴＳ＋（ｉ＋ｐ）×ＴＣ
ｉは、各モニタ期間を識別する自然数である。よって、例えば、最初のモニタ期間の終了時刻ｔ(1)はTS＋1.5TCで表され、２番目のモニタ期間の終了時刻ｔ(2)はTS＋2.5TCで表される。なお、ｐは0.5である。
【０１０３】
さらに、予測部５２は、モニタ期間内に受信部５１が受信すると見込まれるメッセージの個数を予測する。すなわち、各モニタ期間に対してそれぞれ予測値ｘが生成される。この例では、最初のモニタ期間（時刻ＴＳ〜ｔ(1)）に対して予測値ｘとして「１」が算出され、２番目のモニタ期間（時刻ＴＳ〜ｔ(2)）に対して予測値ｘとして「２」が算出される。同様に、ｉ番目のモニタ期間（時刻ＴＳ〜ｔ(i)）に対して予測値ｘとして「ｉ」が算出される。
【０１０４】
判定部５４は、攻撃検知装置５０にメッセージが到着する毎に、ネットワーク１００に攻撃メッセージが入力された否かを判定する。なお、以下の記載では、攻撃検知装置５０に到着するメッセージ（攻撃メッセージを含む）は、検知対象ＩＤを含むものとする。
【０１０５】
攻撃検知装置５０にメッセージＭ１が到着すると、カウント値ｎがゼロから１にインクリメントされる。このとき、予測部５２により算出される予測値ｘは１である。そして、判定部５４は、カウント値ｎと予測値ｘとを比較する。ここで、カウント値ｎは、予測値ｘを超えていない。この場合、判定部５４は、ネットワーク１００は攻撃を受けていないと判定する。なお、図１４に示す「ＯＫ」は、攻撃が検知されなかった状態を表す。
【０１０６】
攻撃検知装置５０にメッセージＭ２が到着すると、カウント値ｎが１から２にインクリメントされる。このとき、予測部５２により算出される予測値ｘは２である。そして、判定部５４は、カウント値ｎと予測値ｘとを比較する。この場合も、カウント値ｎは予測値ｘを超えていないので、判定部５４は、ネットワーク１００は攻撃を受けていないと判定する。
【０１０７】
同様に、判定部５４は、攻撃検知装置５０にメッセージが到着する毎に、ネットワーク１００に攻撃メッセージが入力された否かを判定する。ただし、各ＥＣＵのクロックは、誤差を有する。そして、この誤差が蓄積すると、攻撃検知装置５０は、各モニタ期間内で正しく受信メッセージの数をカウントできないことがある。この場合、攻撃検知装置５０は、ネットワーク１００が攻撃されたか否かを正しく判定できないことがある。したがって、攻撃検知装置５０は、誤差の蓄積を解消するために、予測値ｘおよびカウント値ｎを再設定する機能を備える。
【０１０８】
具体的には、カウント値ｎが所定の閾値ｒ以上になったときに、予測値ｘおよびカウント値ｎが再設定される。閾値ｒは、図１４に示す例では、５である。そして、カウント値ｎが閾値ｒ以上になると、カウンタ値ｎは、ゼロに初期化される。予測値ｘは、「ｘ」から「ｘ−ｎ」に更新される。図１４に示す例では、予測値ｘは、「５」から「ゼロ」に更新されている。ただし、予測値ｘは、ケースによっては、ゼロ以外の値に更新されることがある。
【０１０９】
閾値ｒは、再設定が実行される間隔を表す。具体的には、閾値ｒは、再設定を実行するまでに攻撃検知装置５０が受信すべきメッセージの数を表す。なお、閾値ｒは、一定ではなく、再設定が実行される毎にランダムに決定される。
【０１１０】
このように、攻撃検知装置５０は、攻撃検知装置５０にメッセージが到着する毎に、モニタ期間内に受信部５１が受信したメッセージの個数を表すカウント値ｎとその予測値ｘとを比較する。そして、カウント値ｎが予測値ｘ以下であるときには、攻撃検知装置５０は、ネットワーク１００は攻撃を受けていないと判定する。また、カウント値ｎが閾値ｒ以上になったときに、予測値ｘおよびカウント値ｎが再設定される。
【０１１１】
図１５〜図１８は、第２の実施形態における攻撃検知方法の動作例を示す。△印は、正規メッセージが攻撃検知装置５０に到着したタイミングを表す。▲印は、攻撃メッセージが攻撃検知装置５０に到着したタイミングを表す。そして、攻撃検知装置５０は、基準メッセージＭ０を受信すると、受信メッセージをカウントする処理を開始する。なお、基準メッセージＭ０は、例えば、攻撃検知処理が開始された後に最初に攻撃検知装置５０に到着したメッセージである。
【０１１２】
モニタ期間は、上述したように、１または複数のカウント領域から構成される。たとえば、最初のモニタ期間は、カウント領域Ｃ１から構成される。２番目のモニタ期間は、カウント領域Ｃ１〜Ｃ２から構成される。ここで、各カウント領域の長さは、メッセージの送信周期ＣＴと同じである。ただし、最初のカウント領域Ｃ１の長さは、送信周期ＣＴの１．５倍である。
【０１１３】
予測値ｘは、各モニタ期間内に攻撃検知装置５０に到着することが期待されるメッセージの個数を表し、予測部５２により算出される。換言すれば、予測値ｘは、各カウント領域の終了時刻までに攻撃検知装置５０に到着することが期待されるメッセージの個数を表す。なお、カウント値ｎが再設定されるときに、予測値ｘも再設定される。ただし、再設定において、予測値ｘは「ｘ−ｎ」に更新される。
【０１１４】
カウント値ｎは、攻撃検知装置５０に到着したメッセージの個数を表し、カウント部５３によりカウントされる。また、カウント値ｎは、カウント値ｎが閾値ｒ以上となったときに再設定される。閾値ｒは、図１５〜図１８に示す例では５であるが、実際には、再設定タイミング決定部５６によりランダムに決定される。また、この実施例では、カウント値ｎは、警告フラグがＯＦＦ状態であり、且つ、カウント値ｎが閾値ｒ以上となると、再設定されるものとする。再設定においては、カウント値ｎはゼロに更新される。
【０１１５】
図１５に示す例では、攻撃メッセージは存在しない。ただし、メッセージＭ４は、予定到着時刻よりも早く攻撃検知装置５０に到着している。具体的には、メッセージＭ４は、カウント領域Ｃ４に到着することが見込まれていたが、実際には、カウント領域Ｃ３に到着している。なお、攻撃検知処理の開始時において、警告フラグはＯＦＦ状態に初期化されているものとする。
【０１１６】
攻撃検知装置５０にメッセージＭ１が到着すると、カウント値ｎがゼロから１にインクリメントされる。また、メッセージＭ１は、カウント領域Ｃ１内に攻撃検知装置５０に到着しているので、予測部５２により算出される予測値ｘは１である。そして、判定部５４は、カウント値ｎと予測値ｘとを比較する。ここで、カウント値ｎは、予測値ｘを超えていない。この場合は、判定部５４は、ネットワーク１００は攻撃を受けていないと判定する。
【０１１７】
攻撃検知装置５０にメッセージＭ２が到着すると、カウント値ｎが１から２にインクリメントされる。また、メッセージＭ２は、カウント領域Ｃ２内に攻撃検知装置５０に到着しているので、予測値ｘは２である。そして、判定部５４は、カウント値ｎと予測値ｘとを比較する。この場合も、カウント値ｎは予測値ｘを超えていないので、判定部５４は、ネットワーク１００は攻撃を受けていないと判定する。攻撃検知装置５０にメッセージＭ３が到着したときも、同様に、判定部５４は、ネットワーク１００は攻撃を受けていないと判定する。
【０１１８】
攻撃検知装置５０にメッセージＭ４が到着すると、カウント値ｎが３から４にインクリメントされる。ただし、メッセージＭ４は、カウント領域Ｃ３内に攻撃検知装置５０に到着しているので、予測値ｘは３である。即ち、カウント値ｎは予測値ｘよりも大きい。そうすると、判定部５４は、警告フラグをチェックする。このとき、警告フラグはＯＦＦ状態である。この場合、判定部５４は、警告フラグをＯＦＦ状態からＯＮ状態に変更する。ただし、判定部５４は、ネットワーク１００が攻撃されたとは判定しない。
【０１１９】
攻撃検知装置５０にメッセージＭ５が到着すると、カウント値ｎが４から５にインクリメントされる。また、メッセージＭ５は、カウント領域Ｃ５内に攻撃検知装置５０に到着しているので、予測値ｘは５である。そして、判定部５４は、カウント値ｎと予測値ｘとを比較する。ここで、カウント値ｎは、予測値ｘを超えていない。したがって、判定部５４は、ネットワーク１００は攻撃を受けていないと判定する。また、判定部５４は、警告フラグをＯＮ状態からＯＦＦ状態に変更する。
【０１２０】
このように、攻撃検知装置５０に正規メッセージが早着したときは、警告フラグがＯＦＦ状態からＯＮ状態に変更される。すなわち、攻撃検知装置５０は、ネットワーク１００が攻撃された可能性があると判定する。ただし、この時点では、攻撃検知装置５０は、正規メッセージが早着したのか、攻撃メッセージが入力されたのかを判定しない。そして、攻撃検知装置５０は、次のメッセージが予定到着時刻の近傍で到着するか否かをモニタする。図１５に示す例では、攻撃検知装置５０は、次のメッセージ（すなわち、メッセージＭ５）が予定到着時刻の近傍で到着している。この場合、メッセージＭ４が到着したときからメッセージＭ５が到着するまでの間に予測値が３から５へインクリメントされる。この結果、カウント値ｎは予測値ｘ以下となり、判定部５４は、ネットワーク１００は攻撃されていないと判定する。すなわち、攻撃検知装置５０は「警告フラグは、攻撃メッセージではなく、早着した正規メッセージに起因してＯＮ状態に設定された」と判定する。したがって、第１の実施形態によれば、正規メッセージの早着に起因する誤検知が回避または抑制される。
【０１２１】
図１６に示す例では、攻撃検知装置５０は、図１５に示すメッセージＭ１〜Ｍ１０に加えて、攻撃メッセージを受信する。なお、メッセージＭ４が攻撃検知装置５０に到着したときに、カウント値ｎは３から４にインクリメントされ、また、警告フラグがＯＦＦ状態からＯＮ状態に変更される。そして、メッセージＭ４の次に攻撃メッセージＭＸが攻撃検知装置５０に到着する。
【０１２２】
カウント領域Ｃ４において攻撃検知装置５０に攻撃メッセージＭＸが到着すると、カウント値ｎが４から５にインクリメントされる。このとき、予測部５２により算出される予測値ｘは４である。すなわち、カウント値ｎは、予測値ｘよりも大きい。そうすると、判定部５４は、警告フラグをチェックする。このとき、警告フラグはＯＮ状態である。この場合、判定部５４は、ネットワーク１００が攻撃されたと判定する。
【０１２３】
このように、警告フラグがＯＮ状態であるとき受信したメッセージに起因してカウント値ｎが予測値ｘよりも大きくなると、判定部５４は、ネットワーク１００が攻撃されたと判定する。すなわち、早着メッセージの後に攻撃メッセージが到着した場合、攻撃検知装置５０は、その攻撃メッセージを検知することができる。
【０１２４】
図１７に示す例では、メッセージＭ４〜Ｍ６が遅延している。なお、攻撃メッセージは存在しない。
【０１２５】
メッセージＭ１〜Ｍ３に続いて、カウント領域Ｃ６において、メッセージＭ４〜Ｍ５が攻撃検知装置５０に到着すると、カウント値ｎが３から５にインクリメントされる。このとき、予測値ｘは６である。すなわち、カウント値ｎは、予測値ｘを超えていない。この場合、判定部５４は、ネットワーク１００は攻撃を受けていないと判定する。また、カウント値ｎが閾値ｒに達しているので、判定部５４は、カウント値ｎおよび予測値ｘを再設定する。このとき、カウント値ｎは５からゼロに更新され、予測値ｘは「ｘ−ｎ」に更新される。すなわち、予測値ｘは、６から１に更新される。
【０１２６】
カウント領域Ｃ７においてメッセージＭ６〜Ｍ７が攻撃検知装置５０に到着すると、カウント値ｎがゼロから２にインクリメントされる。一方、予測値ｘは、１から２にインクリメントされる。すなわち、カウント値ｎは、予測値ｘを超えていない。この場合、判定部５４は、ネットワーク１００は攻撃を受けていないと判定する。このように、攻撃検知装置５０は、正規メッセージが遅延した場合、そのメッセージを攻撃メッセージと判定しない。
【０１２７】
図１８に示す例では、メッセージＭ１とメッセージＭ２との間に攻撃メッセージが送信されている。また、メッセージＭ２〜Ｍ７は、指定された送信周期ＴＣよりも短い時間間隔で送信されている。なお、この実施例では、以下の３つの条件が満たされたときに、カウント値ｎおよび予測値ｘは再設定されるものとする。
（１）カウント値ｎが閾値ｒ以上
（２）警告フラグがＯＦＦ状態
（３）最も新しく攻撃検知装置５０に到着した２個のメッセージの受信時刻の差分が、送信周期ＴＣに対して所定の誤差の範囲内（例えば、送信周期ＴＣが１０ｍ秒であり、所定の誤差が１０パーセントである場合、２個のメッセージの受信時刻の差分が９〜１１ｍ秒であることが要求される）
【０１２８】
カウント領域Ｃ２において攻撃検知装置５０に攻撃メッセージＭＸが到着すると、カウント値ｎが１から２にインクリメントされる。このとき、予測値ｘは２であり、カウント値ｎは、予測値ｘを超えていない。この場合、判定部５４は、ネットワーク１００が攻撃されたとは判定しない。また、警告フラグもＯＦＦ状態のまま維持される。
【０１２９】
カウント領域Ｃ５において、メッセージＭ２〜Ｍ４が攻撃検知装置５０に到着すると、カウント値ｎが２から５にインクリメントされる。このとき、予測値ｘは５である。すなわち、カウント値ｎは予測値ｘを超えていないので、判定部５４は、ネットワーク１００は攻撃を受けていないと判定する。なお、メッセージＭ４が攻撃検知装置５０に到着したとき、カウント値ｎは５であり、閾値ｒに達している。ただし、メッセージＭ４、Ｍ５の受信時刻の差分が小さく、上述した条件（３）は満たされない。よって、カウント値ｎおよび予測値ｘは再設定されない。
【０１３０】
カウント領域Ｃ６において、メッセージＭ５〜Ｍ６が攻撃検知装置５０に到着すると、カウント値ｎが５から７にインクリメントされる。このとき、予測値ｘは６であり、カウント値ｎは予測値ｘよりも大きい。しかし、警告フラグはＯＦＦ状態なので、判定部５４は、ネットワーク１００が攻撃されたとは判定しない。ただし、警告フラグは、ＯＦＦ状態からＯＮ状態に変更される。なお、このケースでも、メッセージＭ５、Ｍ６の受信時刻の差分が小さく、上述した条件（３）が満たされないので、カウント値ｎおよび予測値ｘは再設定されない。
【０１３１】
カウント領域Ｃ７において、メッセージＭ７が攻撃検知装置５０に到着すると、カウント値ｎが７から８にインクリメントされる。このとき、予測値ｘは７であり、カウント値ｎは予測値ｘよりも大きい。ここで、警告フラグはＯＮ状態なので、判定部５４は、ネットワーク１００が攻撃されたと判定する。そうすると、判定部５４は、カウント値ｎを１だけデクリメントする。また、警告フラグは、ＯＮ状態からＯＦＦ状態に変更される。なお、このケースにおいても、メッセージＭ６、Ｍ７の受信時刻の差分が小さく、上述した条件（３）が満たされないので、カウント値ｎおよび予測値ｘは再設定されない。
【０１３２】
カウント領域Ｃ８において、メッセージＭ８が攻撃検知装置５０に到着すると、カウント値ｎが７から８にインクリメントされる。このとき、予測値ｘは８であり、カウント値ｎは予測値ｘを超えていない。よって、判定部５４は、ネットワーク１００は攻撃を受けていないと判定する。なお、このケースでは、メッセージＭ７、Ｍ８の受信時刻の差分が大きく、上述した条件（３）が満たされないので、カウント値ｎおよび予測値ｘは再設定されない。
【０１３３】
カウント領域Ｃ９において、メッセージＭ９が攻撃検知装置５０に到着すると、カウント値ｎが８から９にインクリメントされる。このとき、予測値ｘは９であり、カウント値ｎは予測値ｘを超えていない。よって、判定部５４は、ネットワーク１００は攻撃を受けていないと判定する。なお、このケースでは、メッセージＭ８、Ｍ９の受信時刻の差分が送信周期ＴＣとほぼ同じなので、上述した条件（３）が満たされる。加えて、上述した条件（１）および（２）も満たされている。したがって、カウント値ｎおよび予測値ｘがそれぞれゼロに更新される。
【０１３４】
図１９は、第２の実施形態の攻撃検知方法の一例を示すフローチャートである。このフローチャートの処理は、例えば、検知対象ＩＤが指定されたときに攻撃検知装置５０により実行される。なお、図１９〜図２０に係わる記載において、「メッセージ」は、検知対象ＩＤを含むメッセージを表す。
【０１３５】
Ｓ２１において、攻撃検知装置５０は、制御パラメータを取得する。この制御パラメータは、検知対象ＩＤの送信周期ＴＣ、タイミングパラメータｐを含む。また、制御パラメータは、例えば、図４に示すメモリ２０５に予め格納されている。或いは、制御パラメータは、ユーザまたはネットワーク管理者から与えられる。なお、制御パラメータは、閾値ｒの初期値を含んでいてもよい。
【０１３６】
Ｓ２２において、受信部５１は、基準メッセージを受信する。基準メッセージは、例えば、図１９に示すフローチャートの処理が開始された後に最初に攻撃検知装置５０に到着したメッセージであってもよい。このとき、受信部５１は、基準メッセージの受信時刻ＲＴ(0)を記録する。
【０１３７】
Ｓ２３において、攻撃検知装置５０は、初期化処理を実行する。すなわち、カウント部５３は、カウント値ｎをゼロに初期化する。予測部５２は、最初のモニタ期間の終了時刻ｔ(i)を算出する。この実施例では、最初のモニタ期間の終了時刻ｔ(i)は、基準メッセージの受信時刻ＲＴ(0)に（１＋ｐ）×ＴＣを加算することで算出される。ＴＣは検知対象ＩＤの送信周期を表し、ｐは予め決められたタイミングパラメータ（例えば、0.5）を表す。予測部５２は、予測値ｘに１を設定する。判定部５４は、警告フラグをＯＦＦ状態に設定する。
【０１３８】
また、初期化処理において、再設定タイミング決定部５６は、閾値ｒを決定する。一例としては、再設定タイミング決定部５６は、乱数発生器を用いて閾値ｒを決定する。ただし、閾値ｒの初期値は、ユーザまたはネットワーク管理者から与えられてもよい。あるいは、閾値ｒの初期値は、図４に示すメモリ２０５に予め格納されていてもよい。なお、閾値ｒは、再設定を実行する周期を表す。具体的には、閾値ｒは、再設定を実行するまでに攻撃検知装置５０が受信すべきメッセージの数を表す。
【０１３９】
Ｓ２４において、受信部５１は、メッセージを受信する。このとき、受信部５１は、このメッセージの受信時刻ＲＴ(i)を検出する。また、カウント部５３は、カウント値ｎを１だけインクリメントする。
【０１４０】
Ｓ２５〜Ｓ２６において、攻撃検知装置５０は、メッセージの受信時刻ＲＴ(i)がモニタ期間の終了時刻ｔ(i)よりも前であるか判定する。メッセージの受信時刻ＲＴ(i)がモニタ期間の終了時刻ｔ(i)よりも前でないときは、攻撃検知装置５０は、予測値ｘを１だけインクリメントすると共に、終了時刻ｔ(i)に送信周期ＴＣを加算する。なお、Ｓ２５〜Ｓ２６の処理は、モニタ期間の終了時刻ｔ(i)がメッセージの受信時刻ＲＴ(i)より後ろになるまで繰返し実行される。そして、モニタ期間の終了時刻ｔ(i)がメッセージの受信時刻ＲＴ(i)よりも後ろになると、攻撃検知装置５０の処理はＳ２７に進む。
【０１４１】
Ｓ２７において、攻撃検知装置５０は、ネットワーク１００が攻撃を受けたか否か（即ち、ネットワーク１００に攻撃メッセージが入力されたか否か）を判定する判定処理を実行する。判定処理は、主に、判定部５４により実行される。
【０１４２】
図２０は、第２の実施形態の判定処理の一例を示すフローチャートである。この判定処理は、図１９に示すＳ２７に相当し、攻撃検知装置５０にメッセージ（正規メッセージおよび攻撃メッセージを含む）が到着するごとに実行される。
【０１４３】
Ｓ４１において、判定部５４は、カウント値ｎと予測値ｘとを比較する。そして、カウント値ｎが予測値ｘ以下であれば、Ｓ４２において、判定部５４は、ネットワーク１００は攻撃されていないと判定する。続いて、Ｓ４３において、判定部５４は、警告フラグをＯＦＦ状態に設定する。一方、カウント値ｎが予測値ｘよりも大きいときは、Ｓ４４において、判定部５４は、カウント値ｎがｘ＋１（即ち、予測値ｘに１を加算することで得られる参照値）であるか否かを判定する。
【０１４４】
カウント値ｎがｘ＋１であるときは、Ｓ４５において、判定部５４は、警告フラグの状態をチェックする。警告フラグがＯＦＦ状態であれば、Ｓ４６において、判定部５４は、ネットワーク１００は攻撃されていないと判定する。ただし、判定部５４は、Ｓ４７において、警告フラグをＯＦＦ状態からＯＮ状態に変更する。
【０１４５】
一方、警告フラグがＯＮ状態であれば（Ｓ４５：Ｙｅｓ）、Ｓ４８において、判定部５４は、ネットワーク１００が攻撃されたと判定する。また、判定部５４は、カウント値ｎを１だけデクリメントする。この後、Ｓ４９において、判定部５４は、警告フラグをＯＮ状態からＯＦＦ状態に変更する。
【０１４６】
カウント値ｎがｘ＋１より大きいときは（Ｓ４４：Ｎｏ）、Ｓ５０において、判定部５４は、ネットワーク１００が攻撃されたと判定する。また、判定部５４は、カウント値ｎを１だけデクリメントする。
【０１４７】
このように、カウント値ｎが予測値ｘ以下であれば、判定部５４は、ネットワーク１００は攻撃されていないと判定する。また、警告フラグがＯＦＦ状態であるときに受信したメッセージに起因してカウント値ｎが予測値ｘより大きくなったときも、判定部５４は、ネットワーク１００が攻撃されたとは判定しない。ただし、この場合、警告フラグがＯＦＦ状態からＯＮ状態に変更される。一方、警告フラグがＯＮ状態であるときに受信したメッセージに起因してカウント値ｎが予測値ｘより大きくなったときは、判定部５４は、ネットワーク１００が攻撃されたと判定する。なお、カウント値ｎがｘ＋１より大きいときは、判定部５４は、警告フラグの状態にかかわりなく、ネットワーク１００が攻撃されたと判定してもよい。
【０１４８】
また、判定部５４は、ネットワーク１００が攻撃されたと判定したときは、カウント値ｎを１だけデクリメントする。図１６に示す例では、カウント領域Ｃ４において攻撃が検出されると、カウント値ｎは５から４に更新される。このように、カウント値ｎは、攻撃メッセージが検出されたときはデクリメントされる。すなわち、カウント値ｎは、正規メッセージの個数をカウントする。
【０１４９】
なお、ネットワーク１００が攻撃されたと判定したときは、攻撃検知装置５０は、アラーム信号を出力する。アラーム信号は、ネットワーク１００が攻撃されたことをユーザに通知する。このとき、攻撃検知装置５０は、ネットワーク１００と外部ネットワークとを切断してもよい。また、ネットワーク１００が車載ネットワークである場合、攻撃検知装置５０は、車両を停止するための制御信号を出力してもよい。
【０１５０】
このように、攻撃検知装置５０に正規メッセージが早着したときは、警告フラグがＯＦＦ状態からＯＮ状態に変更される。すなわち、攻撃検知装置５０は、ネットワーク１００が攻撃された可能性があると判定する。ただし、この時点では、攻撃検知装置５０は、正規メッセージが早着したのか、攻撃メッセージが入力されたのかを判定しない。そして、攻撃検知装置５０は、次のメッセージが予定到着時刻の近傍において到着するのか否かをモニタする。図１５に示す例では、メッセージＭ４の受信時に警告フラグがＯＦＦ状態からＯＮ状態に変更された後、攻撃検知装置５０は、次のメッセージ（すなわち、メッセージＭ５）を予定到着時刻の近傍で受信している。この場合、攻撃検知装置５０は、メッセージＭ４は攻撃メッセージではなく、早着した正規メッセージであると判定する。したがって、第１の実施形態によれば、正規メッセージの早着に起因する誤検知が回避または抑制される。
【０１５１】
図２０に示す判定処理が終了すると、攻撃検知装置５０は、再設定処理を実行するか否かを決定する。即ち、Ｓ２８において、再設定制御部５５は、カウント値ｎと閾値ｒとを比較する。ここで、閾値ｒは、再設定を実行する周期を表す。具体的には、閾値ｒは、再設定を実行するまでに攻撃検知装置５０が受信すべきメッセージの数を表す。そして、カウント値ｎが閾値ｒより小さいときは、攻撃検知装置５０の処理はＳ２４に戻る。一方、カウント値ｎが閾値ｒ以上であれば、Ｓ２９において、再設定制御部５５は、警告フラグの状態をチェックする。
【０１５２】
警告フラグがＯＦＦ状態であるときには、Ｓ３０において、再設定制御部５５は、再設定処理を実行する。再設定処理においては、予測値ｘは、「ｘ」から「ｘ−ｎ」に更新される。また、カウント値ｎは、ゼロに初期化される。さらに、次のモニタ期間の終了時刻ｔ(i)として、ＲＴ(i)＋ｐ×ＴＣが設定される。ＲＴ(i)は、受信部５１が直前に受信したメッセージの受信時刻を表す。ＴＣは、検知対象ＩＤの送信周期を表し、ｐはタイミングパラメータを表す。再設定タイミング決定部５６は、次の検知動作のための閾値ｒを決定する。一例としては、再設定タイミング決定部５６は、乱数発生器を用いて閾値ｒを決定する。この後、攻撃検知装置５０の処理はＳ２４に戻る。
【０１５３】
なお、再設定制御部５５は、再設定処理においてＳ２９の処理を実行しなくてもよい。この場合、カウント値ｎが閾値ｒに達したときには、警告フラグの状態にかかわらず再設定処理が実行される。
【０１５４】
また、Ｓ３０において閾値ｒが乱数発生器を使用することなく決定される場合には、Ｓ２７とＳ２８との間でＳ１０１の処理が実行される。Ｓ１０１では、再設定タイミング決定部５６は、変数ｑを更新する。変数ｑは、例えば、受信メッセージのタイムスタンプに基づいて計算され、Ｓ３０において閾値ｒを計算するために使用される。なお、変数ｑの更新については、後で図２２または図２３に示す実施例を参照しながら説明する。
【０１５５】
このように、第２の実施形態においては、所定のモニタ期間内に攻撃検知装置が受信するメッセージのカウント値とその予測値とを比較することで、ネットワークへの攻撃の有無が判定される。このとき、メッセージの送信周期の誤差等の累積に起因する検知精度の低下を防止するために、受信メッセージ数が閾値を超えると、カウント値および予測値が再設定される。
【０１５６】
ただし、カウント値および予測値の再設定が実行されるタイミングでネットワークに攻撃メッセージが入力されると、攻撃検知装置の動作が不安定になることがある。例えば、攻撃メッセージが攻撃検知装置に到着したことで受信メッセージ数を表すカウント値ｎが閾値ｒに到達し、その後、正規メッセージの送信が遅延した場合には、上述の攻撃を検知できないおそれがある。
【０１５７】
このため、第２の実施形態では、閾値ｒは、一定ではなく、ランダムに決定される。すなわち、再設定が実行されるまでに攻撃検知装置が受信すべきメッセージ数がランダムに決定される。よって、再設定が実行されるタイミングを予測することは困難である。このため、再設定が実行されるタイミングを狙った攻撃が抑制される。したがって、攻撃検知装置の動作が不安定になることが少なくなり、ネットワーク上での攻撃を検知する精度が向上する。
【０１５８】
＜ランダムな値の決定方法＞
第１の実施形態では、基準メッセージの変更までに攻撃検知装置１０が受信すべきメッセージ数Ｙがランダムに決定される。また、第２の実施形態では、再設定を実行するまでに攻撃検知装置５０が受信すべきメッセージの数を表す閾値ｒがランダムに決定される。以下の記載では、これらの値を「ランダム値」と呼ぶことがある。
【０１５９】
ランダム値は、例えば、乱数発生器により生成される。この場合、攻撃検知装置１０、５０は、乱数発生器を備える。ただし、攻撃検知装置１０、５０は、乱数発生器を用いることなくランダム値を決定してもよい。例えば、攻撃検知装置１０、５０は、下記の方法でランダム値を計算してもよい。
（１）受信タイムスタンプに対してモジュロ演算を実行する。
（２）受信タイムスタンプを表すビット列から一部のビットを抽出する。
（３）複数のメッセージから上記（２）のビットをそれぞれ抽出し、抽出したビットに対して加算演算または排他的論理和（ＸＯＲ）演算を実行する。
（４）メッセージのデータ部の値に対してモジュロ演算を実行する。
（５）メッセージのデータ部の値を表すビット列から一部のビットを抽出する。
（６）複数のメッセージから上記（５）のビットをそれぞれ抽出し、抽出したビットに対して加算演算またはＸＯＲ演算を実行する。
【０１６０】
なお、上記（１）〜（３）において、受信タイムスタンプの代わりに送信タイムスタンプを使用してもよい。また、矛盾のない範囲で上記（１）〜（６）を任意に組み合わせてランダム値を計算してもよい。更に、上記（１）〜（６）は、検知対象ＩＤを含むメッセージのみを使用してもよいし、検知対象ＩＤを含まないメッセージを使用してもよいし、全メッセージを使用してよい。
【０１６１】
＜実施例１＞
実施例１においては、第２の実施形態に従って攻撃を検知する。即ち、攻撃検知装置５０にメッセージが到着する毎に、図１９〜図２０に示すフローチャートの処理が実行される。ここで、攻撃検知装置５０は、乱数発生器を用いて閾値ｒを決定するものとする。また、実施例１においては以下のパラメータが使用される。
送信周期ＴＣ：１秒
タイミングパラメータｐ：０．５
【０１６２】
攻撃検知装置５０は、図２１に示すように、メッセージＭ０〜Ｍ２、ＭＸ、Ｍ３〜Ｍ５を受信する。メッセージＭ０〜Ｍ２、ＭＸ、Ｍ３〜Ｍ５は、それぞれ、検知対象ＩＤを含む。また、メッセージＭ０〜Ｍ５は正規メッセージであり、メッセージＭＸは攻撃メッセージである。そして、メッセージＭ０が基準メッセージとして指定される。
【０１６３】
（１）時刻5.00（＝ＲＴ(0)）においてメッセージＭ０が到着すると、攻撃検知装置５０は攻撃検知を開始する。具体的には、攻撃検知装置５０は、以下のようにパラメータを設定する。このとき、再設定タイミング決定部５６は、乱数発生器を用いて、閾値ｒを計算する。
モニタ期間の終了時刻ｔ(1)：6.5ｍ秒（t(1)＝RT(0)＋1.5×1）
カウント値ｎ：ゼロ
予測値ｘ：１
警告フラグ：ＯＦＦ
閾値ｒ＝４
【０１６４】
（２）時刻5.98（＝ＲＴ(1)）においてメッセージＭ１が到着すると、カウント値ｎがゼロから１にインクリメントされる。ここで、メッセージＭ１は、ｔ(1)よりも前に到着している。よって、予測値ｘは変化しない。そして、カウント値ｎは予測値ｘ以下なので、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。なお、警告フラグは、ＯＦＦ状態を維持する。また、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０１６５】
（３）時刻7.03（＝ＲＴ(2)）においてメッセージＭ２が到着すると、カウント値ｎが１から２にインクリメントされる。ここで、メッセージＭ２は、ｔ(1)よりも後に到着している。よって、予測値ｘが１から２に更新される。また、下式により次のモニタ期間の終了時刻ｔ(2)が計算される。
t(2)＝t(1)＋1＝7.5
カウント値ｎは、予測値ｘ以下である。したがって、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。なお、警告フラグは、ＯＦＦ状態を維持する。また、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０１６６】
（４）時刻7.50（＝ＲＴ(3)）において攻撃メッセージＭＸが到着すると、カウント値ｎが２から３にインクリメントされる。ここで、攻撃メッセージＭＸは、ｔ(2)以前に到着している。よって、予測値ｘは変化しない。すなわち、予測値ｘは２である。そうすると、カウント値ｎは条件「ｎ＝ｘ＋１」を満足するので、警告フラグがチェックされる。ここで、警告フラグはＯＦＦ状態なので、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。ただし、警告フラグは、ＯＦＦ状態からＯＮ状態に変更される。また、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０１６７】
（５）時刻8.00（＝ＲＴ(4)）においてメッセージＭ３が到着すると、カウント値ｎが３から４にインクリメントされる。ここで、メッセージＭ３はｔ(2)よりも後に到着している。よって、予測値ｘが２から３に更新される。また、下式により次のモニタ期間の終了時刻ｔ(4)が計算される。
t(3)＝t(2)＋1＝8.5
【０１６８】
カウント値ｎは条件「ｎ＝ｘ＋１」を満足するので、警告フラグがチェックされる。ここで、警告フラグはＯＮ状態なので、攻撃検知装置５０は、ネットワークが攻撃されたと判定する。この後、カウント値ｎは４から３に更新され、警告フラグはＯＮ状態からＯＦＦ状態に変更される。ただし、更新された後のカウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０１６９】
（６）時刻8.95（＝ＲＴ(5)）においてメッセージＭ４が到着すると、カウント値ｎが３から４にインクリメントされる。ここで、メッセージＭ４はｔ(3)よりも後に到着している。よって、予測値ｘが３から４に更新される。また、下式により次のモニタ期間の終了時刻ｔ(4)が計算される。
t(4)＝t(3)＋1＝9.5
【０１７０】
カウント値ｎは予測値ｘ以下なので、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。なお、警告フラグは、ＯＦＦ状態を維持する。ただし、カウント値ｎが閾値ｒに達しているので、攻撃検知装置５０は再設定を実行する。すなわち、カウント値ｎは４からゼロに更新され、予測値ｘも４からゼロに更新される。また、モニタ期間の終了時刻ｔ(4)が下式により再計算される。
t(4)＝RT(5)＋0.5×1＝9.45
さらに、再設定タイミング決定部５６は、乱数発生器を用いて閾値ｒを決定する。ここでは、ｒ＝５が得られるものとする。この場合、次の再設定が実行されるまでの期間は、攻撃検知装置５０は、図１９に示すフローチャートにおいて閾値ｒが５であるものとしてＳ２８の処理を実行する。
【０１７１】
（７）時刻10.03（＝ＲＴ(6)）においてメッセージＭ５が到着すると、カウント値ｎがゼロから１にインクリメントされる。ここで、メッセージＭ５は、ｔ(4)よりも後に到着している。よって、予測値ｘがゼロから１に更新される。また、下式により次のモニタ期間の終了時刻ｔ(5)が計算される。
t(5)＝t(4)+1＝10.45
【０１７２】
カウント値ｎは予測値ｘ以下なので、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。なお、警告フラグは、ＯＦＦ状態を維持する。また、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０１７３】
この後、攻撃検知装置５０は、検知対象ＩＤを含むメッセージを受信する毎に、図１９〜図２０に示すフローチャートの処理を実行してネットワークへの攻撃をモニタする。このとき、攻撃検知装置５０は、ｒ個のメッセージ（攻撃メッセージを除く）を受信する毎にカウント値ｎおよび予測値を再設定する。ｒの値は、一定ではなく、再設定が実行される毎に乱数発生器により生成される。
【０１７４】
＜第２の実施例＞
第１の実施例と同様に、第２の実施例でも、攻撃検知装置５０は、検知対象ＩＤを含むメッセージを受信する毎に、図１９〜図２０に示すフローチャートの処理を実行してネットワークへの攻撃をモニタする。また、攻撃検知装置５０は、図２２に示すメッセージＭ０〜Ｍ２、ＭＸ、Ｍ３〜Ｍ６を受信する。ただし、第２の実施例では、検知対象ＩＤを含むメッセージの受信タイムスタンプを利用して閾値ｒが決定される。
【０１７５】
また、実施例２においては以下のパラメータが使用される。
送信周期ＴＣ：１秒
タイミングパラメータｐ：０．５
閾値ｒの初期値：５
【０１７６】
（１）時刻5.00（＝ＲＴ(0)）においてメッセージＭ０が到着すると、攻撃検知装置５０は攻撃検知を開始する。具体的には、攻撃検知装置５０は、以下のようにパラメータを設定する。このとき、再設定タイミング決定部５６は、メモリ２０５に格納されている閾値ｒの初期値を取得する。
モニタ期間の終了時刻ｔ(1)：6.5ｍ秒（t(1)＝RT(0)＋1.5×1）
カウント値ｎ：ゼロ
予測値ｘ：１
警告フラグ：ＯＦＦ
閾値ｒ：５
変数ｑ：５００
なお、変数ｑは、閾値ｒを計算するために使用される。また、変数ｑの初期値は、この実施例では、基準メッセージの受信時刻（即ち、受信タイムスタンプ）を表す。
【０１７７】
（２）時刻5.98（＝ＲＴ(1)）においてメッセージＭ１が到着すると、カウント値ｎがゼロから１にインクリメントされる。ここで、メッセージＭ１は、ｔ(1)よりも前に到着している。よって、予測値ｘは変化しない。そして、カウント値ｎは予測値ｘ以下なので、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。なお、警告フラグは、ＯＦＦ状態を維持する。
【０１７８】
再設定タイミング決定部５６は、メッセージＭ１の受信時刻を利用して変数ｑを更新する。図１９に示すフローチャートでは、Ｓ１０１において変数ｑが更新される。この例では、新たな変数ｑは、現在の変数ｑとメッセージＭ１の受信時刻とのＸＯＲ演算により得られる。ここで、現在の変数ｑは５００であり、メッセージＭ１の受信時刻は５９８である。よって、現在の変数ｑとメッセージＭ１の受信時刻とのＸＯＲ演算は、以下の通りである。
５００：０００００００１１１１１０１００
５９８：００００００１００１０１０１１０
ＥＸＯ：００００００１１１０１０００１０（＝９３０）
そして、再設定タイミング決定部５６は、この演算結果を変数ｑとして保存する。なお、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０１７９】
（３）時刻7.03（＝ＲＴ(2)）においてメッセージＭ２が到着すると、カウント値ｎが１から２にインクリメントされる。ここで、メッセージＭ２は、ｔ(1)よりも後に到着している。よって、予測値ｘが１から２に更新される。また、下式により次のモニタ期間の終了時刻ｔ(2)が計算される。
t(2)＝t(1)＋1＝7.5
【０１８０】
カウント値ｎは、予測値ｘ以下である。したがって、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。なお、警告フラグは、ＯＦＦ状態を維持する。また、変数ｑは、メッセージＭ２の受信時刻「７０３」とのＸＯＲ演算により「２８５」に更新される。ただし、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０１８１】
（４）時刻7.50（＝ＲＴ(3)）において攻撃メッセージＭＸが到着すると、カウント値ｎが２から３にインクリメントされる。ここで、攻撃メッセージＭＸは、ｔ(2)以前に到着している。よって、予測値ｘは変化しない。すなわち、予測値ｘは２である。そうすると、カウント値ｎは条件「ｎ＝ｘ＋１」を満足するので、警告フラグがチェックされる。ここで、警告フラグはＯＦＦ状態なので、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。ただし、警告フラグは、ＯＦＦ状態からＯＮ状態に変更される。また、変数ｑは、攻撃メッセージＭＸの受信時刻「７５０」とのＸＯＲ演算により「１０１１」に更新される。ただし、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０１８２】
（５）時刻8.00（＝ＲＴ(4)）においてメッセージＭ３が到着すると、カウント値ｎが３から４にインクリメントされる。ここで、メッセージＭ３はｔ(2)よりも後に到着している。よって、予測値ｘが２から３に更新される。また、下式により次のモニタ期間の終了時刻ｔ(4)が計算される。
t(3)＝t(2)＋1＝8.5
【０１８３】
カウント値ｎは条件「ｎ＝ｘ＋１」を満足するので、警告フラグがチェックされる。ここで、警告フラグはＯＮ状態なので、攻撃検知装置５０は、ネットワークが攻撃されたと判定する。この後、カウント値ｎは４から３に更新され、警告フラグはＯＮ状態からＯＦＦ状態に変更される。また、変数ｑは、メッセージＭ３の受信時刻「８００」とのＸＯＲ演算により「２１１」に更新される。ただし、更新された後のカウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０１８４】
（６）時刻8.95（＝ＲＴ(5)）においてメッセージＭ４が到着すると、カウント値ｎが３から４にインクリメントされる。ここで、メッセージＭ４はｔ(3)よりも後に到着している。よって、予測値ｘが３から４に更新される。また、下式により次のモニタ期間の終了時刻ｔ(4)が計算される。
t(4)＝t(3)＋1＝9.5
【０１８５】
カウント値ｎは予測値ｘ以下なので、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。警告フラグは、ＯＦＦ状態を維持する。変数ｑは、メッセージＭ４の受信時刻「８９５」とのＸＯＲ演算により「９４０」に更新される。なお、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０１８６】
（７）時刻10.03（＝ＲＴ(6)）においてメッセージＭ５が到着すると、カウント値ｎが４から５にインクリメントされる。ここで、メッセージＭ５は、ｔ(4)よりも後に到着している。よって、予測値ｘが４から５に更新される。また、下式により次のモニタ期間の終了時刻ｔ(5)が計算される。
t(5)＝t(4)+1＝10.5
【０１８７】
カウント値ｎは予測値ｘ以下なので、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。警告フラグは、ＯＦＦ状態を維持する。変数ｑは、メッセージＭ５の受信時刻「１００３」とのＸＯＲ演算により「７１」に更新される。このとき、カウント値ｎが閾値ｒに達している。よって、攻撃検知装置５０は再設定を実行する。すなわち、カウント値ｎは５からゼロに更新され、予測値ｘも５からゼロに更新される。また、モニタ期間の終了時刻ｔ(5)が下式により再計算される。
t(5)＝RT(6)＋0.5×1＝10.53
さらに、再設定タイミング決定部５６は、変数ｑの下位５ビットを抽出することにより新たな閾値ｒを決定する。この例では、ｒ＝７が得られる。
【０１８８】
この後、攻撃検知装置５０は、次の再設定が行われるまで、閾値ｒが７である状態で攻撃検知を行う。そして、攻撃検知装置５０が７個の正規メッセージを受信すると、カウント値および予測値の再設定が実行される。
【０１８９】
（８）時刻11.05（＝ＲＴ(7)）においてメッセージＭ６が到着すると、カウント値ｎがゼロから１にインクリメントされる。ここで、メッセージＭ２は、ｔ(5)よりも後に到着している。よって、予測値ｘがゼロから１に更新される。また、下式により次のモニタ期間の終了時刻ｔ(6)が計算される。
t(6)＝t(5)＋1＝11.53
【０１９０】
カウント値ｎは、予測値ｘ以下である。したがって、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。警告フラグは、ＯＦＦ状態を維持する。変数ｑは、メッセージＭ６の受信時刻「１１０５」とのＸＯＲ演算により「１０４６」に更新される。ただし、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０１９１】
この後、攻撃検知装置５０は、検知対象ＩＤを含むメッセージを受信する毎に、図１９〜図２０に示すフローチャートの処理を実行してネットワークへの攻撃をモニタする。このとき、攻撃検知装置５０は、ｒ個のメッセージ（攻撃メッセージを除く）を受信する毎にカウント値ｎおよび予測値を再設定する。ここで、ｒの値は、一定ではなく、再設定が実行される毎に検知対象ＩＤを含むメッセージの受信タイムスタンプに基づいて決定される。なお、再設定時に計算される閾値ｒがゼロであるときは、例えば、前回の閾値ｒを使用してもよいし、変数ｑの上位ビットに基づいて決定してもよい。
【０１９２】
＜第３の実施例＞
第２の実施例では、検知対象ＩＤを含むメッセージの受信タイムスタンプに基づいて閾値ｒが決定される。これに対して、第３の実施例では、検知対象ＩＤを含むメッセージおよび他のＩＤを含むメッセージの受信タイムスタンプに基づいて閾値ｒが決定される。図２３に示す例では、ＩＤ＿１は検知対象ＩＤを表し、ＩＤ＿２は他のＩＤを表す。なお、検知動作の開始時に設定されるパラメータは、第２の実施例および第３の実施例において同じであり、以下の通りである。
送信周期ＴＣ：１秒
タイミングパラメータｐ：０．５
閾値ｒの初期値：５
【０１９３】
第１〜第２の実施例と同様に、第３の実施例でも、攻撃検知装置５０は、検知対象ＩＤを含むメッセージ（Ｍ０〜Ｍ２、ＭＸ、Ｍ３〜Ｍ６）を受信する毎に、図１９〜図２０に示すフローチャートの処理を実行してネットワークへの攻撃をモニタする。また、攻撃検知装置５０は、検知対象でないＩＤ（ここでは、ＩＤ＿２）を含むメッセージＭ１１〜Ｍ１６を受信する。
【０１９４】
（１）時刻5.00（＝ＲＴ(0)）においてメッセージＭ０が到着すると、攻撃検知装置５０は攻撃検知を開始する。具体的には、攻撃検知装置５０は、以下のようにパラメータを設定する。このとき、再設定タイミング決定部５６は、メモリ２０５に格納されている閾値ｒの初期値を取得する。
モニタ期間の終了時刻ｔ(1)：6.5ｍ秒（t(1)＝RT(0)＋1.5×1）
カウント値ｎ：ゼロ
予測値ｘ：１
警告フラグ：ＯＦＦ
閾値ｒ：５
変数ｑ：５００
【０１９５】
（２）時刻5.50において他のＩＤを含むメッセージＭ１１が到着する。そうすると、変数ｑは、メッセージＭ１１の受信時刻「５５０」とのＸＯＲ演算により「９７８」に更新される。
【０１９６】
（３）時刻5.98（＝ＲＴ(1)）においてメッセージＭ１が到着すると、カウント値ｎがゼロから１にインクリメントされる。ここで、メッセージＭ１は、ｔ(1)よりも前に到着している。よって、予測値ｘは変化しない。そして、カウント値ｎは予測値ｘ以下なので、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。警告フラグは、ＯＦＦ状態を維持する。変数ｑは、メッセージＭ１の受信時刻「５９８」とのＸＯＲ演算により「３８８」に更新される。なお、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０１９７】
（４）時刻6.55において他のＩＤを含むメッセージＭ１２が到着する。そうすると、変数ｑは、メッセージＭ１２の受信時刻「６５５」とのＸＯＲ演算により「７７９」に更新される。
【０１９８】
（５）時刻7.03（＝ＲＴ(2)）においてメッセージＭ２が到着すると、カウント値ｎが１から２にインクリメントされる。ここで、メッセージＭ２は、ｔ(1)よりも後に到着している。よって、予測値ｘが１から２に更新される。また、下式により次のモニタ期間の終了時刻ｔ(2)が計算される。
t(2)＝t(1)＋1＝7.5
【０１９９】
カウント値ｎは、予測値ｘ以下である。よって、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。警告フラグは、ＯＦＦ状態を維持する。変数ｑは、メッセージＭ２の受信時刻「７０３」とのＸＯＲ演算により「２８５」に更新される。なお、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０２００】
（６）時刻7.45において他のＩＤを含むメッセージＭ１３が到着する。そうすると、変数ｑは、メッセージＭ１３の受信時刻「７４５」とのＸＯＲ演算により「４８２」に更新される。
【０２０１】
（７）時刻7.50（＝ＲＴ(3)）において攻撃メッセージＭＸが到着すると、カウント値ｎが２から３にインクリメントされる。ここで、攻撃メッセージＭＸは、ｔ(2)以前に到着している。よって、予測値ｘは変化しない。すなわち、予測値ｘは２である。そうすると、カウント値ｎは条件「ｎ＝ｘ＋１」を満足するので、警告フラグがチェックされる。ここで、警告フラグはＯＦＦ状態なので、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。ただし、警告フラグは、ＯＦＦ状態からＯＮ状態に変更される。また、変数ｑは、攻撃メッセージＭＸの受信時刻「７５０」とのＸＯＲ演算により「７８０」に更新される。なお、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０２０２】
（８）時刻8.00（＝ＲＴ(4)）においてメッセージＭ３が到着すると、カウント値ｎが３から４にインクリメントされる。ここで、メッセージＭ３はｔ(2)よりも後に到着している。よって、予測値ｘが２から３に更新される。また、下式により次のモニタ期間の終了時刻ｔ(4)が計算される。
t(3)＝t(2)＋1＝8.5
【０２０３】
カウント値ｎは条件「ｎ＝ｘ＋１」を満足するので、警告フラグがチェックされる。ここで、警告フラグはＯＮ状態なので、攻撃検知装置５０は、ネットワークが攻撃されたと判定する。この後、カウント値ｎは４から３に更新され、警告フラグはＯＮ状態からＯＦＦ状態に変更される。また、変数ｑは、メッセージＭ３の受信時刻「８００」とのＸＯＲ演算により「４４」に更新される。なお、更新された後のカウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０２０４】
（９）時刻8.51において他のＩＤを含むメッセージＭ１４が到着する。そうすると、変数ｑは、メッセージＭ１４の受信時刻「８５１」とのＸＯＲ演算により「８９５」に更新される。
【０２０５】
（１０）時刻8.95（＝ＲＴ(5)）においてメッセージＭ４が到着すると、カウント値ｎが３から４にインクリメントされる。ここで、メッセージＭ４はｔ(3)よりも後に到着している。よって、予測値ｘが３から４に更新される。また、下式により次のモニタ期間の終了時刻ｔ(4)が計算される。
t(4)＝t(3)＋1＝9.5
【０２０６】
カウント値ｎは予測値ｘ以下なので、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。警告フラグは、ＯＦＦ状態を維持する。変数ｑは、メッセージＭ４の受信時刻「８９５」とのＸＯＲ演算により「０」に更新される。なお、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０２０７】
（１１）時刻9.48において他のＩＤを含むメッセージＭ１５が到着する。そうすると、変数ｑは、メッセージＭ１５の受信時刻「９４８」とのＸＯＲ演算により「９４８」に更新される。
【０２０８】
（１２）時刻10.03（＝ＲＴ(6)）においてメッセージＭ５が到着すると、カウント値ｎが４から５にインクリメントされる。ここで、メッセージＭ５は、ｔ(4)よりも後に到着している。よって、予測値ｘが４から５に更新される。また、下式により次のモニタ期間の終了時刻ｔ(5)が計算される。
t(5)＝t(4)+1＝10.5
【０２０９】
カウント値ｎは予測値ｘ以下なので、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。警告フラグは、ＯＦＦ状態を維持する。変数ｑは、メッセージＭ５の受信時刻「１００３」とのＸＯＲ演算により「９５」に更新される。このとき、カウント値ｎが閾値ｒに達している。よって、攻撃検知装置５０は再設定を実行する。すなわち、カウント値ｎは５からゼロに更新され、予測値ｘも５からゼロに更新される。また、モニタ期間の終了時刻ｔ(5)が下式により再計算される。
t(5)＝RT(6)＋0.5×1＝10.53
さらに、再設定タイミング決定部５６は、変数ｑの下位５ビットを抽出することにより新たな閾値ｒを決定する。この例では、ｒ＝３１が得られる。
【０２１０】
この後、攻撃検知装置５０は、次の再設定が行われるまで、閾値ｒが３１である状態で攻撃検知を行う。そして、攻撃検知装置５０が３１個の正規メッセージを受信すると、カウント値および予測値の再設定が実行される。
【０２１１】
（１３）時刻10.50において他のＩＤを含むメッセージＭ１６が到着する。そうすると、変数ｑは、メッセージＭ１６の受信時刻「１０５０」とのＸＯＲ演算により「１０９３」に更新される。
【０２１２】
（１４）時刻11.05（＝ＲＴ(7)）においてメッセージＭ６が到着すると、カウント値ｎがゼロから１にインクリメントされる。ここで、メッセージＭ２は、ｔ(5)よりも後に到着している。よって、予測値ｘがゼロから１に更新される。また、下式により次のモニタ期間の終了時刻ｔ(6)が計算される。
t(6)＝t(5)＋1＝11.53
【０２１３】
カウント値ｎは、予測値ｘ以下である。したがって、攻撃検知装置５０は、ネットワークは攻撃されていないと判定する。警告フラグは、ＯＦＦ状態を維持する。変数ｑは、メッセージＭ６の受信時刻「１１０５」とのＸＯＲ演算により「２０」に更新される。なお、カウント値ｎが閾値ｒより小さいので、再設定は実行されない。
【０２１４】
この後、攻撃検知装置５０は、検知対象ＩＤを含むメッセージを受信する毎に、図１９〜図２０に示すフローチャートの処理を実行してネットワークへの攻撃をモニタする。このとき、攻撃検知装置５０は、ｒ個の検知対象ＩＤを含むメッセージ（攻撃メッセージを除く）を受信する毎にカウント値ｎおよび予測値を再設定する。ｒの値は、一定ではなく、再設定が実行される毎に、検知対象ＩＤを含むメッセージおよび他のＩＤを含むメッセージの受信タイムスタンプに基づいて決定される。なお、再設定時に計算される閾値ｒがゼロであるときは、例えば、前回の閾値ｒを使用してもよいし、変数ｑの上位ビットに基づいて決定してもよい。
【０２１５】
上述の実施例を含む実施形態に関し、さらに下記の付記を開示する。
（付記１）
ネットワーク内で送信される、識別情報を含むメッセージを受信する送受信部と、
前記送受信部が受信したメッセージの中から検知対象の識別情報を含む基準メッセージを指定する指定部と、
前記指定部が基準メッセージを指定したときから次の基準メッセージを指定するまでの期間に、前記送受信部が受信すべき、前記検知対象の識別情報を含むメッセージの数を表す受信メッセージ数を決定する決定部と、
前記基準メッセージに対して、前記決定部により決定された受信メッセージ数と同数の検知期間を、前記検知対象の識別情報に対応する送信周期に基づいて設定する検知期間設定部と、
前記検知対象の識別情報を含むメッセージの受信時刻が対応する検知期間内に入っているか否かに応じて、前記ネットワークへの攻撃の有無を判定する判定部と、を備え、
前記決定部は、前記検知期間設定部が検知期間を設定する毎に前記受信メッセージ数を決定する
ことを特徴とする攻撃検知装置。
（付記２）
前記決定部は、乱数発生器を用いて前記受信メッセージ数を決定する
ことを特徴とする付記１に記載の攻撃検知装置。
（付記３）
前記決定部は、前記ネットワーク内で送信されるメッセージのタイムスタンプに基づいて前記受信メッセージ数を決定する
ことを特徴とする付記１に記載の攻撃検知装置。
（付記４）
前記決定部は、前記検知対象の識別情報を含むメッセージのタイムスタンプに基づいて前記受信メッセージ数を決定する
ことを特徴とする付記３に記載の攻撃検知装置。
（付記５）
前記決定部は、前記検知対象の識別情報を含むメッセージのタイムスタンプおよび前記検知対象の識別情報と異なる識別情報を含むメッセージのタイムスタンプに基づいて前記受信メッセージ数を決定する
ことを特徴とする付記３に記載の攻撃検知装置。
（付記６）
前記決定部は、前記ネットワーク内で送信されるメッセージのデータ部の値に基づいて前記受信メッセージ数を決定する
ことを特徴とする付記１に記載の攻撃検知装置。
（付記７）
ネットワーク内で送信される、識別情報を含むメッセージを受信する受信部と、
所定のモニタ期間内に前記受信部が受信する、検知対象の識別情報を含むメッセージの個数を、前記検知対象の識別情報に対応する送信周期に基づいて予測する予測部と、
前記モニタ期間内に前記受信部が受信した、前記検知対象の識別情報を含むメッセージの個数をカウントするカウント部と、
前記予測部により得られる予測値および前記カウント部により得られるカウント値に基づいて、前記ネットワークに対する攻撃の有無を判定する判定部と、
前記カウント値が所定の閾値以上であるときに、前記カウント値および前記予測値を再設定する再設定制御部と、
前記閾値を決定する決定部と、を備え、
前記決定部は、前記再設定制御部が前記カウント値および前記予測値を再設定する毎に前記閾値を決定する
ことを特徴とする攻撃検知装置。
（付記８）
前記決定部は、乱数発生器を用いて前記閾値を決定する
ことを特徴とする付記７に記載の攻撃検知装置。
（付記９）
前記決定部は、前記ネットワーク内で送信されるメッセージのタイムスタンプに基づいて前記閾値を決定する
ことを特徴とする付記７に記載の攻撃検知装置。
（付記１０）
前記決定部は、前記検知対象の識別情報を含むメッセージのタイムスタンプに基づいて前記閾値を決定する
ことを特徴とする付記９に記載の攻撃検知装置。
（付記１１）
前記決定部は、前記検知対象の識別情報を含むメッセージのタイムスタンプおよび前記検知対象の識別情報と異なる識別情報を含むメッセージのタイムスタンプに基づいて前記閾値を決定する
ことを特徴とする付記９に記載の攻撃検知装置。
（付記１２）
前記決定部は、前記ネットワーク内で送信されるメッセージのデータ部の値に基づいて前記閾値を決定する
ことを特徴とする付記７に記載の攻撃検知装置。
（付記１３）
ネットワーク内で送信される、識別情報を含むメッセージを受信し、
受信メッセージの中から検知対象の識別情報を含む基準メッセージを指定し、
基準メッセージを指定したときから次の基準メッセージが指定されるまでの期間に受信すべき、前記検知対象の識別情報を含むメッセージの数を表す受信メッセージ数を決定し、
前記基準メッセージに対して、決定された受信メッセージ数と同数の検知期間を、前記検知対象の識別情報に対応する送信周期に基づいて設定し、
前記検知対象の識別情報を含むメッセージの受信時刻が対応する検知期間内に入っているか否かに応じて、前記ネットワークへの攻撃の有無を判定し、
前記検知期間が設定される毎に前記受信メッセージ数を決定する
ことを特徴とする攻撃検知方法。
（付記１４）
ネットワーク内で送信される、識別情報を含むメッセージを受信し、
所定のモニタ期間内に受信する、検知対象の識別情報を含むメッセージの個数を、前記検知対象の識別情報に対応する送信周期に基づいて予測し、
前記モニタ期間内に受信した、前記検知対象の識別情報を含むメッセージの個数をカウントし、
前記予測により得られる予測値および前記カウントにより得られるカウント値に基づいて、前記ネットワークに対する攻撃の有無を判定し、
前記カウント値が所定の閾値以上であるときに、前記カウント値および前記予測値を再設定し、
前記カウント値および前記予測値が再設定される毎に前記閾値を決定する
ことを特徴とする攻撃検知方法。
（付記１５）
ネットワークを介して受信するメッセージの中から検知対象の識別情報を含む基準メッセージを指定し、
基準メッセージを指定したときから次の基準メッセージが指定されるまでの期間に受信すべき、前記検知対象の識別情報を含むメッセージの数を表す受信メッセージ数を決定し、
前記基準メッセージに対して、決定された受信メッセージ数と同数の検知期間を、前記検知対象の識別情報に対応する送信周期に基づいて設定し、
前記検知対象の識別情報を含むメッセージの受信時刻が対応する検知期間内に入っているか否かに応じて、前記ネットワークへの攻撃の有無を判定する
処理をプロセッサに実行させる攻撃検知プログラムであり、
前記検知期間が設定される毎に前記受信メッセージ数を決定する
ことを特徴とする攻撃検知プログラム。
（付記１６）
所定のモニタ期間内にネットワークを介して受信する、検知対象の識別情報を含むメッセージの個数を、前記検知対象の識別情報に対応する送信周期に基づいて予測し、
前記モニタ期間内に受信した、前記検知対象の識別情報を含むメッセージの個数をカウントし、
前記予測により得られる予測値および前記カウントにより得られるカウント値に基づいて、前記ネットワークに対する攻撃の有無を判定し、
前記カウント値が所定の閾値以上であるときに、前記カウント値および前記予測値を再設定する
処理をプロセッサに実行させる攻撃検知プログラムであり、
前記カウント値および前記予測値が再設定される毎に前記閾値を決定する
ことを特徴とする攻撃検知プログラム。
【符号の説明】
【０２１６】
１０、５０  攻撃検知装置
３１  基準メッセージ指定部
３２  検知期間設定部
３３  判定部
３４  再設定タイミング決定部
５１  受信部
５２  予測部
５３  カウント部
５４  判定部
５５  再設定制御部
５６  再設定タイミング決定部
１００  ネットワーク
２００  ＥＣＵ
２０４  プロセッサ
【図１】
2020129785.tif 000003
【図２】
2020129785.tif 000004
【図３】
2020129785.tif 000005
【図４】
2020129785.tif 000006
【図５】
2020129785.tif 000007
【図６】
2020129785.tif 000008
【図７】
2020129785.tif 000009
【図８】
2020129785.tif 000010
【図９】
2020129785.tif 000011
【図１０】
2020129785.tif 000012
【図１１】
2020129785.tif 000013
【図１２】
2020129785.tif 000014
【図１３】
2020129785.tif 000015
【図１４】
2020129785.tif 000016
【図１５】
2020129785.tif 000017
【図１６】
2020129785.tif 000018
【図１７】
2020129785.tif 000019
【図１８】
2020129785.tif 000020
【図１９】
2020129785.tif 000021
【図２０】
2020129785.tif 000022
【図２１】
2020129785.tif 000023
【図２２】
2020129785.tif 000024
【図２３】
2020129785.tif 000025