(57)【要約】      （修正有）【課題】攻撃検知の精度を向上する装置、方法及びプログラムを提供する。【解決手段】攻撃検知装置は、送受信部、計算部、記憶部、判定部を備える。送受信部は、ネットワーク中の通信装置から周期的に送信されるメッセージを受信する。計算部は、受信したメッセージから選択した基準メッセージ中の識別情報を含むメッセージについてＳ１、基準メッセージより２周期以上後に送信されるメッセージを受信する受信期間を、識別情報で識別されるメッセージの送信周期を用いて計算するＳ２。記憶部は、受信期間を、基準メッセージを基準としたときの、受信期間に受信すると予想されるメッセージの受信順序に対応付けて記憶する。判定部は、識別情報を含む受信メッセージＳ３の受信時刻が、基準メッセージを基準としたときの受信メッセージの受信順序に対応付けられた受信期間に含まれない場合、ネットワークに対する攻撃を検出したと判定するＳ４，Ｓ５。【選択図】図２
2018056980.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク中の通信装置から周期的に送信されるメッセージを受信する送受信部と、
受信したメッセージから選択した基準メッセージ中の識別情報を含むメッセージについて、前記基準メッセージより２周期以上後に送信されるメッセージを受信する受信期間を、前記識別情報で識別されるメッセージの送信周期を用いて計算する計算部と、
前記受信期間を、前記基準メッセージを基準としたときの、前記受信期間に受信すると予想されるメッセージの受信順序に対応付けて記憶する記憶部と、
前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間に含まれない場合、前記ネットワークに対する攻撃を検出したと判定する判定部
を備えることを特徴とする攻撃検知装置。
【請求項２】
前記計算部は、前記基準メッセージの受信時刻と前記送信周期を用いて、前記基準メッセージより２周期以上後に送信される複数のメッセージの受信期間を計算する
ことを特徴とする請求項１に記載の攻撃検知装置。
【請求項３】
前記計算部は、
前記基準メッセージより後に受信した第１の受信メッセージの受信時刻と、前記送信周期を用いて、前記第１の受信メッセージから所定の数だけ後に受信する第２の受信メッセージの受信期間を計算し、
前記第２の受信メッセージについて計算した受信期間を、前記基準メッセージを基準としたときの前記第２の受信メッセージの受信順序に対応付ける
ことを特徴とする請求項１に記載の攻撃検知装置。
【請求項４】
前記計算部は、前記基準メッセージより２周期以上後に送信されるメッセージの各々について、当該メッセージの受信期間の開始時刻を計算し、
前記判定部は、前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間の開始時刻よりも前である場合、前記ネットワークに対する攻撃を検出したと判定する
ことを特徴とする請求項１に記載の攻撃検知装置。
【請求項５】
前記判定部は、受信メッセージの受信時刻が、受信順序に対応付けられた受信期間に含まれない場合、当該受信メッセージの受信順序を無効にする
ことを特徴とする請求項１に記載の攻撃検知装置。
【請求項６】
ネットワーク中の通信装置から周期的に送信されるメッセージを受信し、
受信したメッセージから選択した基準メッセージ中の識別情報を含むメッセージについて、前記基準メッセージより２周期以上後に送信されるメッセージを受信する受信期間を、前記識別情報で識別されるメッセージの送信周期を用いて計算し、
前記受信期間を、前記基準メッセージを基準としたときの、前記受信期間に受信すると予想されるメッセージの受信順序に対応付けて記憶し、
前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間に含まれない場合、前記ネットワークに対する攻撃を検出したと判定する
処理を検知装置が行うことを特徴とする攻撃検知方法。
【請求項７】
ネットワーク中の通信装置から周期的に送信されるメッセージを受信し、
受信したメッセージから選択した基準メッセージ中の識別情報を含むメッセージについて、前記基準メッセージより２周期以上後に送信されるメッセージを受信する受信期間を、前記識別情報で識別されるメッセージの送信周期を用いて計算し、
前記受信期間を、前記基準メッセージを基準としたときの、前記受信期間に受信すると予想されるメッセージの受信順序に対応付けて記憶し、
前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間に含まれない場合、前記ネットワークに対する攻撃を検出したと判定する
処理を検知装置に行わせることを特徴とする攻撃検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、攻撃検知装置、攻撃検知方法、および、攻撃検知プログラムに関する。
【背景技術】
【０００２】
自動車の車載ネットワークやファクトリーオートメーションなどに使用される装置間で、データや制御情報を送受信するために、ＣＡＮ（Controller Area Network）と呼ばれるネットワーク技術が使用されることがある。ＣＡＮが用いられるシステムは、複数のＥＣＵ（electronic control unit）を含む。ＥＣＵ同士はデータフレームを送受信することにより通信を行う。ＣＡＮでは、通信に使用されるデータフレームには、データフレームの識別に使用される識別情報（ＩＤ）が含まれている。また、各ＥＣＵは、受信するデータフレームのＩＤを予め記憶している。ＣＡＮでは、データフレームはブロードキャストされるため、複数のデータフレームが同時にＣＡＮに接続されたＥＣＵに到達する。データフレームの送信タイミングが複数のデータフレームで一致した場合には、データフレームに含まれているＩＤの値によってデータフレームの優先順位が決定され、優先されるデータフレームが先に送信される。優先されないデータフレームは、優先されるデータフレームの送信後に、ブロードキャストされる。データフレームがブロードキャストされると、各ＥＣＵは、ＥＣＵが受信するように設定されたＩＤを含むデータフレームを受信するが、受信対象に設定されていないＩＤを含むデータフレームは破棄する。
【０００３】
しかし、各ＥＣＵは、そのＥＣＵが受信するように設定されたＩＤを含むデータフレームを用いてネットワークへの攻撃が行われた場合、攻撃に使用されるフレームを受信してしまう。攻撃に使用されるフレームを受信したＥＣＵは、フレームの受信に起因して、本来は行わない動作を行ってしまうおそれがある。ところで、周期的にデータフレームが送信される場合、攻撃によって送信されているフレームは、データフレームの送信タイミングからずれて送信されることになる。そこで、受信フレームが予め決められたデータフレームの送信タイミングに合わせて送られているかを判定することにより、攻撃を検出する方法が試みられている。しかし、データフレームの送信タイミングは、他のデータフレームの送信のタイミングとの関係で変化することがある。そこで、受信側のＥＣＵでは、差分の判定の際にマージンを使用して誤検出を防止するが、マージンが狭すぎると誤検出が多発してしまう。
【０００４】
図１は、攻撃検知方法の例を説明する図である。例えば、ケースＣ１では、１００ｍ秒（ｍｓ）の周期でデータフレーム（周期メッセージ）が送信され、マージンは１０ｍ秒に設定されているとする。ＥＣＵは、１つ目の周期メッセージＭ１を０ｍｓに受信したとする。すると、ＥＣＵは、マージンを用いて、周期メッセージＭ１の受信から９０ｍｓ〜１１０ｍｓの期間（Ｚ１）に周期メッセージＭ２を受信すれば、周期メッセージＭ２が攻撃ではないと判定する。ＥＣＵは、２つ目の周期メッセージＭ２を１０１ｍｓに受信したとする。すると、周期メッセージＭ１と周期メッセージＭ２の受信時刻の差は、１０１ｍｓであり、マージンを用いて計算した範囲内であるので、ＥＣＵは、周期メッセージＭ２を攻撃では無いと判定する。ＥＣＵは、周期メッセージＭ２の受信時刻に基づいて、３つ目の周期メッセージを受信する期間を、図１中のＺ２に示すように、１９１ｍｓ〜２１１ｍｓと予測する。
【０００５】
次に、ＥＣＵは、３つ目の周期メッセージＭ３を２４０ｍｓに受信したとする。この場合、周期メッセージＭ２と周期メッセージＭ３の受信時刻の差は１３９ｍｓであり、マージンを用いて計算したときに許容される範囲（Ｚ２）に含まれていない。このため、ＥＣＵは、周期メッセージＭ３を攻撃だと誤検知してしまう。さらに、ＥＣＵは、周期メッセージＭ３の受信時刻を基準として、受信間隔を計算する。図１に示すように、４つ目の周期メッセージを３０１ｍｓに受信すると、ＥＣＵは周期メッセージＭ３と周期メッセージＭ４の受信時刻の差は６１ｍｓであり、マージンを用いて計算したときに許容される範囲に含まれないと判定する。このため、ＥＣＵは、周期メッセージＭ４も攻撃だと誤検知してしまう。
【０００６】
ケースＣ２は、周期メッセージＭ１〜Ｍ４を評価する際に、マージンを４０ｍｓに設定した場合の例である。この場合、ある周期メッセージを受信してから次の周期メッセージを受信するまでの期間が６０ｍｓ〜１４０ｍｓの期間であれば、攻撃ではないと判定する。すると、周期メッセージＭ２と周期メッセージＭ３の受信時刻の差は１３９ｍｓであるので、周期メッセージＭ３は攻撃ではないと判定される。同様に、周期メッセージＭ３と周期メッセージＭ４の受信時刻の差は６１ｍｓであるので、周期メッセージＭ４も攻撃ではないと判定される。なお、ケースＣ２では、ケースＣ１との比較のために、周期メッセージＭ２を受信する可能性があると判定される期間をＺ３、周期メッセージＭ３を受信する可能性があると判定される期間をＺ４に示す。
【０００７】
関連する技術として、データフレームの送信周期にかかる所定ルールに適合しないデータフレームを受信すると、データフレーム中の特定識別子を検証して、データフレームが攻撃によるものかを判定することが提案されている（例えば、特許文献１）。基準の受信データと同じ識別子を有し、受信間隔が所定周期より短い第１のデータを受信すると、基準の受信データの受信時間から所定周期経過するまで、第１のデータと同じ識別子を有するデータを待つシステムも提案されている。このシステムでは、第１のデータと同じ識別子を有するデータを待つ期間中に、第１のデータと同じ識別子を持つ第２のデータを受信すると不正が発生したと判定する（例えば、特許文献２）。ＥＣＵが予め規定された通信間隔でメッセージを送信し、メッセージを受信するＥＣＵは受信メッセージの通信間隔と規定された通信間隔との比較に基づいて、受信メッセージが不正であるかを判定する方法も提案されている（例えば、特許文献３）。また、タイマが満了すると管理制御装置に接続要求を送信する端末において、タイマ値の周期を変更可能なシステムも知られている（例えば、特許文献４）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】国際公開第２０１５／１７０４５１号
【特許文献２】特開２０１４−１４６８６８号公報
【特許文献３】国際公開第２０１３／０９４０７２号
【特許文献４】特開２０１２−１０９６６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
周期的に受信するメッセージの受信間隔を用いて攻撃を判定する際に、誤検出を防ごうとすると、マージンを広く取ることになる。すると、正常なメッセージを攻撃として誤判定することを防げるものの、攻撃を見逃してしまうおそれがある。しかし、マージンを狭くすると、誤判定の回数が多くなってしまう。背景技術に述べたいずれの技術を適用しても、このような問題は解決されない。
【００１０】
本発明は、１つの側面として、攻撃検知の精度を向上することを目的とする。
【課題を解決するための手段】
【００１１】
ある態様にかかる攻撃検知装置は、送受信部、計算部、記憶部、判定部を備える。送受信部は、ネットワーク中の通信装置から周期的に送信されるメッセージを受信する。計算部は、受信したメッセージから選択した基準メッセージ中の識別情報を含むメッセージについて、前記基準メッセージより２周期以上後に送信されるメッセージを受信する受信期間を、前記識別情報で識別されるメッセージの送信周期を用いて計算する。記憶部は、前記受信期間を、前記基準メッセージを基準としたときの、前記受信期間に受信すると予想されるメッセージの受信順序に対応付けて記憶する。判定部は、前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間に含まれない場合、前記ネットワークに対する攻撃を検出したと判定する。
【発明の効果】
【００１２】
攻撃検知の精度が向上する。
【図面の簡単な説明】
【００１３】
【図１】攻撃検知方法の例を説明する図である。
【図２】実施形態にかかる攻撃検知方法の例を説明する図である。
【図３】攻撃検知装置の構成の例を説明する図である。
【図４】ハードウェア構成の例を説明する図である。
【図５】ネットワークの例を説明する図である。
【図６】送受信されるフレームのフォーマットの例を示す図である。
【図７】攻撃検知装置が保持する情報の例を説明する図である。
【図８】第１の実施形態にかかる攻撃検知方法の例を説明する図である。
【図９】攻撃の検出例を説明する図である。
【図１０】攻撃検知装置の処理の例を説明するフローチャートである。
【図１１】第１の実施形態にかかる攻撃検知方法と他の検知方法の比較例を説明する図である。
【図１２】第２の実施形態にかかる攻撃検知方法の例を説明する図である。
【図１３】攻撃検知装置の処理の例を説明するフローチャートである。
【図１４】第３の実施形態にかかる攻撃検知方法の例を説明する図である。
【図１５】攻撃検知装置の処理の例を説明するフローチャートである。
【図１６】第４の実施形態にかかる攻撃検知方法の例を説明する図である。
【図１７】第５の実施形態にかかる攻撃検知方法の例を説明する図である。
【図１８】攻撃検知装置の処理の例を説明するフローチャートである。
【図１９】第６の実施形態にかかる攻撃の検出例を説明する図である。
【図２０】攻撃検知装置の処理の例を説明するフローチャートである。
【発明を実施するための形態】
【００１４】
図２は、実施形態にかかる攻撃検知方法の例を説明する図である。攻撃検知装置１０は、周期的に受信するデータフレーム（周期メッセージ）について、予め、ＩＤと送信周期を記憶しているとする。以下で説明する処理は、攻撃の検知対象のＩＤごとに行われる。
【００１５】
ステップＳ１において、攻撃検知装置１０は、受信した周期メッセージの中から、基準とする基準メッセージを選択する。基準メッセージは、同じＩＤの他のメッセージを受信する期間の予測の基準とされるメッセージである。攻撃検知装置１０は、基準メッセージと同じＩＤで識別され、基準メッセージからｎ番目に送信される周期メッセージの受信期間を計算する（ステップＳ２）。ステップＳ２において、ｎは２以上の整数であるとする。ステップＳ２での計算には、基準メッセージに含まれているＩＤに対応付けられた送信周期が使用されるが、基準メッセージの受信時刻も使用され得る。
【００１６】
その後、攻撃検知装置１０は、基準メッセージと同じＩＤを有するｎ番目の周期メッセージを受信する（ステップＳ３）。すると、攻撃検知装置１０は、ｎ番目の周期メッセージの受信時刻は、ｎ番目の周期メッセージの受信期間として予測された期間中であるかを判定する（ステップＳ４）。ｎ番目の周期メッセージの受信時刻が、ｎ番目の周期メッセージの受信期間として予測された期間中に含まれていない場合、攻撃検知装置１０は、攻撃を検出したと判定する（ステップＳ４でＮｏ、ステップＳ５）。一方、ｎ番目の周期メッセージの受信時刻は、ｎ番目の周期メッセージの受信期間として予測された期間中である場合、攻撃検知装置１０は、攻撃を検出していないと判定し、処理を終了する（ステップＳ４でＹｅｓ）。
【００１７】
以下、周期メッセージＭ１１〜Ｍ１３が、送信周期としてΔｔを用いて送信される場合を例として、攻撃の検出例を説明する。さらに、周期メッセージＭ１１〜Ｍ１３のＩＤはＩＤａであり、ステップＳ２〜Ｓ４に示す変数ｎが３である場合との例とする。攻撃検知装置１０は、時刻Ｔ１に周期メッセージＭ１１を受信すると、周期メッセージＭ１１を基準メッセージに選択したとする。攻撃検知装置１０は、基準メッセージＭ１１から３周期後に送られてくる周期メッセージの受信期間Ｚ１１を計算する。図２の例では、Ｚ１１は、時刻Ｔ４の周辺の矢印で示す期間であるとする。また、時刻Ｔ４は、Ｔ４＝Ｔ１＋３×Δｔを満たすとする。
【００１８】
基準メッセージＭ１１の次に周期メッセージＭ１２が送信されたとする。また、攻撃検知装置１０は、周期メッセージＭ１２を受信すると、ＩＤａで識別される周期メッセージのうち基準メッセージＭ１１から１つ目のメッセージを受信したと判定する。
【００１９】
次に、ＩＤａを含む攻撃のフレームＡＴ１が送信されたとする。攻撃検知装置１０は、攻撃のフレームＡＴ１を受信すると、攻撃のフレームＡＴ１を、ＩＤａで識別される周期メッセージのうちで基準メッセージＭ１１から２つ目のメッセージとして扱う。その後、周期メッセージＭ１３が送信されたとする。攻撃検知装置１０は、周期メッセージＭ１３を受信すると、ＩＤａで識別される周期メッセージのうち基準メッセージＭ１１から３つ目のメッセージを受信したと判定する。
【００２０】
そこで、攻撃検知装置１０は、周期メッセージＭ１３の受信時刻が、基準メッセージＭ１１から３つ目のメッセージの受信期間として計算した期間Ｚ１１に含まれているかを判定する。図２の例では、周期メッセージＭ１３の受信時刻は時刻Ｔ３周辺であるが、Ｚ１１は、時刻Ｔ４の周辺の矢印で示す期間であるため、周期メッセージＭ１３の受信時刻はＺ１１に含まれていない。従って、攻撃検知装置１０は、周期メッセージＭ１１の受信から周期メッセージＭ１３の受信までの間に、ＩＤａを用いた攻撃を受けたと判定する。
【００２１】
このように、実施形態にかかる方法では、基準とするメッセージから複数周期分後のメッセージの受信期間を予測すると共に、予測した受信期間が基準メッセージから何番目のメッセージであるかを考慮して攻撃の有無を判定する。このため、メッセージの遅延に対応するためにマージンを広く取っていても、攻撃を検出できる。
【００２２】
＜装置構成＞
図３は、攻撃検知装置１０の構成の例を説明する図である。攻撃検知装置１０は、送受信部１１、制御部２０、記憶部３０を備える。制御部２０は、計算部２１、判定部２２、基準更新処理部２３を備える。記憶部３０は、送信条件３１、受信状況情報３２、基準時刻３３、受信予測３４を保持する。
【００２３】
送信条件３１は、攻撃検知装置１０が受信する周期メッセージに含まれているＩＤと、そのＩＤで識別される周期メッセージの送信周期を対応付けている。受信状況情報３２は、攻撃検知装置１０が受信した周期メッセージの各々について、基準メッセージからの受信順序と、各周期メッセージの受信時刻を記録する。なお、メモリ容量を削減するために、受信状況情報３２には、最後に受信した周期メッセージについて、基準メッセージからの受信順序と受信時刻を記録しても良い。例えば、１つの基準メッセージから１〜１００番目のメッセージの全ての受信時刻を計算して記録する代わりに、１００個目のメッセージの受信時刻を計算して記録しても良い。基準時刻３３は、基準メッセージの受信時刻を記録する。受信状況情報３２は、周期メッセージのＩＤごとに生成される。送信条件３１、受信状況情報３２、基準時刻３３の例は後述する。
【００２４】
計算部２１は、基準時刻３３と送信条件３１を用いて、ＩＤごとに、周期メッセージの受信予測を計算する。計算部２１は、得られた計算結果を受信予測３４に格納する。このため、受信予測３４もＩＤごとに生成される。受信予測３４の例も後述する。
【００２５】
判定部２２は、送受信部１１で受信された受信メッセージが基準メッセージと同じＩＤを含むメッセージのうちの何番目にあたるかを求める。判定部２２は、求めた受信順序に対応付けられた受信期間が、受信メッセージの受信時刻に含まれているかを判定する。このとき、判定部２２は、適宜、受信予測３４を参照する。
【００２６】
基準更新処理部２３は、受信した周期メッセージから基準メッセージを選択する。なお、基準更新処理部２３は、定期的に、基準メッセージを更新しても良い。また、攻撃として検知後には、検知したメッセージそのもの、あるいは、検知したメッセージの次に受信したメッセージを新たな基準メッセージとして選択しても良い。基準更新処理部２３は、基準メッセージの選択や更新を行うと、基準メッセージとして選択したメッセージの受信時刻を基準時刻３３とする。
【００２７】
図４は、攻撃検知装置１０のハードウェア構成の例を説明する図である。図４の例では、攻撃検知装置１０は、ＥＣＵ１００として実現されている。ＥＣＵ１００は、ＣＡＮトランシーバ１０１、ＣＡＮコントローラ１０２、処理回路１０３を含む。処理回路１０３は、プロセッサ１０４とメモリ１０５を備える。
【００２８】
ＣＡＮトランシーバ１０１は、適宜、バス電圧の調整など、ＥＣＵ１００がＣＡＮネットワーク中の他の装置と通信するための処理を行う。ＣＡＮコントローラ１０２は、受信したフレームに対するＣＲＣ（Cyclic Redundancy Check）チェックやビットスタッフィングなどの処理を行うことにより、データを抽出する。ＣＡＮコントローラ１０２は、データをプロセッサ１０４に出力する。プロセッサ１０４は、任意の処理回路であり、例えば、ＣＰＵ（Central Processing Unit）とすることができる。プロセッサは、メモリ１０５に格納されたプログラムを読み込んで、処理を行う。なお、ＥＣＵ１００は、記憶媒体からプログラムやデータを読み出すための装置を備えていても良い。この場合、プログラムは、任意の記憶媒体に記録されていても良く、ＥＣＵ１００によって、記憶媒体から適宜、読み出される。
【００２９】
攻撃検知装置１０では、ＣＡＮトランシーバ１０１とＣＡＮコントローラ１０２により、送受信部１１が実現される。プロセッサ１０４は、制御部２０として動作する。メモリ１０５は記憶部３０として動作する。
【００３０】
＜ネットワークとフレームの例＞
図５は、ネットワークの例を説明する図である。図５に示すネットワークＮ１では、複数のＥＣＵ１００（ＥＣＵ０〜ＥＣＵｋ）が１本のバスで互いにフレームの送受信が可能になるように接続されている。図５のネットワークに含まれるＥＣＵ１００のうちの１つ以上が攻撃検知装置１０として動作するものとする。例えば、１つの攻撃検知装置１０がネットワーク中で送受信される全ての周期メッセージに対する攻撃を検知しても良い。また、複数の攻撃検知装置１０を用いて全ての周期メッセージに対する攻撃を検知するように検知対象が攻撃検知装置１０ごとに決められていても良い。
【００３１】
周期メッセージの送信タイミングと、攻撃検知装置１０での受信タイミングの例も図５に示す。図５の例では、ＥＣＵ０が攻撃検知装置１０として動作することにより、ＩＤ＝Ａ、Ｂ、Ｃの各々の周期メッセージに対する攻撃を検知するものとする。この場合、攻撃検知装置１０として動作するＥＣＵ０では、ＩＤ＝Ａ、Ｂ、Ｃの各々の周期メッセージを受信対象として取得する。一方、ＥＣＵ１はＩＤ＝Ａの周期メッセージを送信し、ＥＣＵ２はＩＤ＝Ｂの周期メッセージを送信するとする。また、ＥＣＵ３はＩＤ＝Ｃの周期メッセージを送信するものとする。
【００３２】
図５のタイミング図に示すように、ＩＤ＝Ａ、Ｂ、Ｃの各周期メッセージは送信されたタイミングとほぼ同時に、ＥＣＵ０で受信される。ＥＣＵ０では、受信したメッセージの受信タイミングを、そのメッセージ中のＩＤに対応付けて解析することにより、攻撃を検知する。攻撃の検知の詳細については後述する。
【００３３】
図６は、送受信されるフレームのフォーマットの例を示す図である。図６のＦ１１は、一般仕様のフレームのフォーマット例であり、Ｆ１２は拡張仕様で使用されるフレームのフォーマット例である。
【００３４】
一般仕様のフレームは、ＳＯＦ（Start of Frame）、調停（arbitration）フィールド、コントロールフィールド、データフィールド、ＣＲＣフィールド、ＡＣＫフィールド、ＥＯＦ（End of Frame）を含む。調停フィールドには、ＩＤとＲＴＲ（Remote Transmission Request）が含まれる。ここで、ＩＤは、データフレームの識別に使用される識別情報である。コントロールフィールドには、ＩＤＥ（Identifier Extension）、予約ビット、ＤＬＣ（Data Length Code）が含まれる。ＣＲＣフィールドは、ＣＲＣシーケンスとＣＲＣデリミタを含む。ＡＣＫフィールドは、ＡＣＫスロットとＡＣＫデリミタを含む。なお、各フィールドに含まれる情報要素のビット長は、Ｆ１１の一番下の行に記載したとおりである。例えば、ＩＤの長さは１１ビットであり、データフィールドの長さは０〜６４ビットの可変長である。
【００３５】
拡張仕様で使用されるデータフレーム（Ｆ１２）も、ＳＯＦ、調停フィールド、コントロールフィールド、データフィールド、ＣＲＣフィールド、ＡＣＫフィールド、ＥＯＦを含む。拡張仕様の調停フィールドは、ＩＤベース、ＳＲＲ（Substitute Remote Request Bit）、ＩＤＥ、ＩＤ拡張、ＲＴＲを含む。拡張仕様では、ＩＤベースとして格納されたビット列の次に、ＩＤ拡張として格納されたビット列をつなげて得られるビット列により、データフレームの識別情報（ＩＤ）を表わす。コントロールフィールドからＥＯＦまでは、拡張仕様のフォーマットでも、一般仕様のフォーマットと同様である。また、各フィールドに含まれる情報要素のビット長は、Ｆ１２の一番下の行に記載したとおりである。このため、拡張フォーマットでは、送信元の識別情報として、ＩＤベースの１１ビットとＩＤ拡張の１８ビットを合わせた２９ビットのビット列が使用される。以下、図６のＦ１１に示すフォーマットを用いたデータフレームが送受信される場合を例として、各実施形態で行われる処理の例を説明する。なお、通信に使用されるデータフレームが拡張仕様の場合でも、同様に処理が行われる。
【００３６】
＜第１の実施形態＞
図７は、攻撃検知装置１０が保持する情報の例を説明する図である。攻撃検知装置１０は、予め、送信条件３１を記憶している。
【００３７】
送信条件３１は、攻撃検知装置１０が受信する周期メッセージの各々について、その周期メッセージに含まれるＩＤ、送信周期、マージンを含む。送信周期は、エントリ中のＩＤで識別される周期メッセージが送信される周期である。マージンは、エントリ中のＩＤで識別される周期メッセージの受信期間を予測する際に、送信周期からずれる範囲の許容値として使用する値である。図７中の送信条件３１には、ＩＤ＝１ｘ１２３の周期メッセージが１００ｍ秒周期で送信されることと、ＩＤ＝１ｘ１２３の周期メッセージについての受信期間の予測には、４０ｍ秒のマージンが使用されることが示されている。このため、例えば、時刻Ｔに基準メッセージが受信されると、基準メッセージを基準（０番目）としたときのｎ番目のメッセージの受信期間は、Ｔ＋１００ｍｓ×ｎ±４０ｍｓと計算される。
【００３８】
基準更新処理部２３は、送受信部１１を介して受信した周期メッセージから基準メッセージを選択し、基準メッセージの受信時刻を基準時刻３３として、基準メッセージに含まれているＩＤと対応付けて記録する。図７に基準時刻３３の記録例を示す。図７の例では、ＩＤ＝０ｘ１２３を含む基準メッセージを攻撃検知装置１０が受信した時刻は０ｍｓである。
【００３９】
計算部２１は、基準時刻３３が更新されると、送信条件３１に記録されている送信周期とマージンを用いて、ＩＤごとに、受信予測３４を生成する。図７には、ＩＤ＝０ｘ１２３の周期メッセージについて生成された受信予測３４の例を示している。基準メッセージが０ｍｓに受信されているので、基準メッセージを０番目のメッセージとすると、基準メッセージからｎ番目に受信する周期メッセージを受信可能な期間（受信期間）は、０ｍｓ＋１００ｍｓ×ｎ±４０ｍｓとなる。従って、基準メッセージの次に受信するＩＤ＝０ｘ１２３の周期メッセージの受信期間は、６０ｍｓ〜１４０ｍｓとなる。同様に、基準メッセージから２番目の周期メッセージの受信期間は１６０ｍｓ〜２４０ｍｓ、基準メッセージから３番目の周期メッセージの受信期間は２６０ｍｓ〜３４０ｍｓとなる。計算部２１は、各周期メッセージについて基準メッセージを０番目のメッセージとしたときの基準メッセージからの受信順序と、受信期間を対応付けて、受信予測３４に記録する。
【００４０】
図８は、第１の実施形態にかかる攻撃検知方法の例を説明する図である。なお、図８では、攻撃が行われていない場合の例を説明する。図８の例では、攻撃検知装置１０は図７に示す情報を保持しており、ＩＤ＝０ｘ１２３の周期メッセージに対する攻撃を監視しているものとする。
【００４１】
攻撃検知装置１０の送受信部１１は、０ｍｓに周期メッセージＭ２０を受信したとする。これまでにＩＤ＝０ｘ１２３を含むメッセージを受信していない場合、基準更新処理部２３は、周期メッセージＭ２０をＩＤ＝０ｘ１２３の基準メッセージとして受信状況情報３２に記録するとともに、周期メッセージＭ２０の受信時刻を基準時刻３３として記録する。計算部２１は、図７を参照しながら説明した処理により、ＩＤ＝０ｘ１２３の周期メッセージについての受信予測３４（図７）を生成する。
【００４２】
次に、送受信部１１は、ＩＤ＝０ｘ１２３を含む周期メッセージＭ２１を、１０１ｍｓに受信したとする。判定部２２は、周期メッセージＭ２１のＩＤが０ｘ１２３であることから、周期メッセージＭ２１をＩＤ＝０ｘ１２３についての、基準メッセージから１番目のメッセージとする。判定部２２は、周期メッセージＭ２１の受信時刻を受信状況情報３２に記録する。さらに、判定部２２は、受信予測３４に含まれている受信順序＝１の場合の受信期間中に、周期メッセージＭ２１の受信時刻が含まれているかを判定する。ここでは、基準メッセージから１番目のメッセージの受信期間は、図８中の期間Ｚ２１に示すように、６０ｍｓ〜１４０ｍｓである。判定部２２は、周期メッセージＭ２１の受信時刻が１０１ｍｓであり、期間Ｚ２１に含まれていると判定する。そこで、判定部２２は、攻撃が検出されていないと判定する。
【００４３】
２４０ｍｓにおいて、送受信部１１は、ＩＤ＝０ｘ１２３を含む周期メッセージＭ２２を受信したとする。判定部２２は、周期メッセージＭ２２のＩＤが０ｘ１２３であることから、周期メッセージＭ２２をＩＤ＝０ｘ１２３の基準メッセージから２番目のメッセージとする。判定部２２は、周期メッセージＭ２２の受信時刻を受信状況情報３２に記録する。さらに、判定部２２は、受信予測３４に含まれている受信順序＝２の場合の受信期間である１６０ｍｓ〜２４０ｍｓ（図８中の期間Ｚ２２）の中に、周期メッセージＭ２２の受信時刻が含まれているかを判定する。ここでは、周期メッセージＭ２２の受信時刻が２４０ｍｓであるため、判定部２２は、期間Ｚ２２の間に基準メッセージから２番目の周期メッセージＭ２２を受信したと判定する。そこで、判定部２２は、攻撃が検出されていないと判定する。
【００４４】
３０１ｍｓにおいて、送受信部１１は、ＩＤ＝０ｘ１２３を含む周期メッセージＭ２３を受信したとする。判定部２２は、周期メッセージＭ２３のＩＤが０ｘ１２３であることから、周期メッセージＭ２３をＩＤ＝０ｘ１２３の基準メッセージから３番目のメッセージとする。判定部２２は、周期メッセージＭ２３の受信時刻を受信状況情報３２に記録する。このため、攻撃検知装置１０は、周期メッセージＭ２３を受信した時点では、図８に示す受信状況情報３２を保持する。判定部２２は、受信予測３４に含まれている受信順序＝３の場合の受信期間である２６０ｍｓ〜３４０ｍｓ（図８中の期間Ｚ２３）の中に、周期メッセージＭ２３の受信時刻が含まれているかを判定する。ここでは、周期メッセージＭ２３の受信時刻が３０１ｍｓであるため、判定部２２は、期間Ｚ２３の間に基準メッセージから３番目の周期メッセージＭ２３を受信したと判定する。そこで、判定部２２は、攻撃が検出されていないと判定する。
【００４５】
図９は、攻撃の検出例を説明する図である。図９の例でも、攻撃検知装置１０は図７に示す情報を保持しており、ＩＤ＝０ｘ１２３の周期メッセージに対する攻撃を監視しているものとする。図９の例でも、攻撃検知装置１０は、０ｍｓに周期メッセージＭ２０を受信し、周期メッセージＭ２０をＩＤ＝０ｘ１２３の基準メッセージとするものとする。
【００４６】
次に、送受信部１１は、ＩＤ＝０ｘ１２３を含む周期メッセージＭ２１を、１０１ｍｓに受信したとする。すると、周期メッセージＭ２１を受信したときの処理として図８を参照しながら説明した処理と同様の処理が行われ、判定部２２は、攻撃を検出していないと判定する。
【００４７】
１６１ｍｓにおいて、送受信部１１は、ＩＤ＝０ｘ１２３を含むメッセージＡＴ２を受信したとする。メッセージＡＴ２はＩＤ＝０ｘ１２３を用いた攻撃であるとする。判定部２２は、メッセージＡＴ２のＩＤが０ｘ１２３であることから、メッセージＡＴ２をＩＤ＝０ｘ１２３の基準メッセージから２番目のメッセージとする。判定部２２は、メッセージＡＴ２の受信時刻を受信状況情報３２に記録する。さらに、判定部２２は、受信予測３４に含まれている受信順序＝２の場合の受信期間である１６０ｍｓ〜２４０ｍｓ（図９中の期間Ｚ２２）の中に、メッセージＡＴ２の受信時刻が含まれているかを判定する。ここでは、メッセージＡＴ２の受信時刻が１６１ｍｓであるため、判定部２２は、期間Ｚ２２の間に基準メッセージから２番目のメッセージＡＴ２を受信したと判定する。そこで、判定部２２は、攻撃を検出していないと判定する。
【００４８】
２４０ｍｓにおいて、送受信部１１は、ＩＤ＝０ｘ１２３を含む周期メッセージＭ２２を受信したとする。判定部２２は、周期メッセージＭ２２のＩＤが０ｘ１２３であることから、周期メッセージＭ２２をＩＤ＝０ｘ１２３の基準メッセージから３番目のメッセージとする。判定部２２は、周期メッセージＭ２２の受信時刻を受信状況情報３２に記録する。判定部２２は、受信予測３４に含まれている受信順序＝３の場合の受信期間である２６０ｍｓ〜３４０ｍｓ（図９中の期間Ｚ２３）の中に、周期メッセージＭ２２の受信時刻が含まれているかを判定する。ここでは、周期メッセージＭ２２の受信時刻が２４０ｍｓであるため、判定部２２は、基準メッセージから３番目の周期メッセージＭ２３の受信時刻は受信期間Ｚ２３に含まれていないと判定する。そこで、判定部２２は、攻撃を検出したと判定する。
【００４９】
図１０は、攻撃検知装置１０の処理の例を説明するフローチャートである。計算部２１は、攻撃の検出対象のＩＤについて、送信周期ＴとマージンＭを送信条件３１から取得する（ステップＳ１１）。攻撃検出の対象となるＩＤについての１つ目の周期メッセージを送受信部１１が受信すると、基準更新処理部２３は、メッセージの受信時刻ｔ０を取得する（ステップＳ１２）。基準更新処理部２３は、メッセージの受信時刻ｔ０を基準時刻３３として格納する。計算部２１は、ステップＳ１１で取得した情報と受信時刻ｔ０を用いて、ｎ個分の受信期間（ｒ（１）〜ｒ（ｎ））を計算するとともに、変数ｋを１に設定する（ステップＳ１３）。
【００５０】
次に、送受信部１１が攻撃の検出対象のＩＤを含むメッセージを受信すると、判定部２２は、そのメッセージの受信時刻をｔ（ｋ）に設定する（ステップＳ１４）。判定部２２は、受信時刻ｔ（ｋ）がｒ（ｋ）の範囲内であるかを判定する（ステップＳ１５）。受信時刻ｔ（ｋ）がｒ（ｋ）の範囲内である場合、判定部２２は、ｋ番目のメッセージによっては攻撃を検出していない（ステップＳ１５でＹｅｓ）。そこで、判定部２２は、変数ｋを１つインクリメントして、ステップＳ１４に戻る（ステップＳ１６）。
【００５１】
一方、受信時刻ｔ（ｋ）がｒ（ｋ）の範囲内にない場合、判定部２２は、攻撃を検知する（ステップＳ１５でＮｏ、ステップＳ１７）。
【００５２】
なお、判定部２２は、攻撃として送信されたメッセージがいずれのメッセージであるかは特定しないが、攻撃が発生していることを検出している。すなわち、攻撃に使用されるフレームが周期メッセージに混じった場合、受信した周期メッセージについての基準メッセージからの受信順序は、攻撃に使用されるフレームが周期メッセージに混じっていない場合に得られる受信順序とは異なってくる。ここで、受信予測３４の計算では、攻撃に使用されるフレームが含まれない場合について、周期メッセージの受信期間が、各周期メッセージについての基準メッセージからの受信順序に対応付けて求められている。攻撃に使用されるフレームが混じると、攻撃が発生した後では、周期メッセージの基準メッセージからの受信順序は、攻撃がない場合と異なる。このため、周期メッセージの受信時刻が、その周期メッセージの受信順序に対応する受信期間に入らなくなり、判定部２２は、攻撃を検出できる。
【００５３】
図１１は、第１の実施形態にかかる攻撃検知方法と他の検知方法の比較例を説明する図である。ケースＣ１２は第１の実施形態にかかる攻撃検知方法での処理の例であり、ケースＣ１１は比較対象となる他の攻撃検知方法での処理の例である。ケースＣ１１とケースＣ１２のいずれでも、ＩＤ＝０ｘ１２３を含むフレームとして、周期メッセージＭ２０、周期メッセージＭ２１、攻撃用フレームＡＴ２、周期メッセージＭ２２、周期メッセージＭ２３が送信されているとする。また、いずれのケースでも、これらのフレームは以下のタイミングで受信されているとする。
【００５４】
周期メッセージＭ２０：０ｍｓ
周期メッセージＭ２１：１０１ｍｓ
攻撃用フレームＡＴ２：１６１ｍｓ
周期メッセージＭ２２：２４０ｍｓ
周期メッセージＭ２３：３０１ｍｓ
また、いずれのケースでも、送信周期は１００ｍｓ、マージンは４０ｍｓに設定されているものとする。
【００５５】
ケースＣ１１では、２つのフレームの受信時刻の間が送信周期±マージンであれば、攻撃が発生していないと判定するものとする。送信周期±マージンは６０ｍｓ〜１４０ｍｓである。検出処理を行う装置は、周期メッセージＭ２１を受信すると、周期メッセージＭ２０から１０１ｍｓでメッセージを受信しており、６０ｍｓ＜１０１ｍｓ＜１４０ｍｓであるため、攻撃が発生していないと判定する。検出処理を行う装置は、攻撃用フレームＡＴ２を受信すると、周期メッセージＭ２１から６０ｍｓで攻撃用フレームＡＴ２を受信しており、６０ｍｓ≦６０ｍｓ＜１４０ｍｓであるため、攻撃が発生していないと判定する。検出処理を行う装置は、周期メッセージＭ２２を受信すると、攻撃用フレームＡＴ２から７９ｍｓで周期メッセージＭ２２を受信しており、６０ｍｓ＜７９ｍｓ＜１４０ｍｓであるため、攻撃が発生していないと判定する。検出処理を行う装置は、周期メッセージＭ２３を受信すると、周期メッセージＭ２２から６１ｍｓで周期メッセージＭ２３を受信しており、６０ｍｓ＜６１ｍｓ＜１４０ｍｓであるため、攻撃が発生していないと判定する。このように、ケースＣ１１の検出方法では、マージンを広くとっているために、攻撃用フレームＡＴ２による攻撃が起こっていることを見逃してしまう。
【００５６】
第１の実施形態にかかる攻撃検出方法では、ケースＣ１２に示すように、周期メッセージＭ２０を基準メッセージとして、後続の受信期間を予測する。このため、図９を参照しながら説明したとおり、基準メッセージから１番目のメッセージの受信期間として期間Ｚ２１、基準メッセージから２番目のメッセージの受信期間として期間Ｚ２２、基準メッセージから３番目のメッセージの受信期間として期間Ｚ２３が計算される。すると、攻撃用フレームＡＴ２が基準メッセージから２番目のメッセージとして扱われ、攻撃用フレームＡＴ２を期間Ｚ２２中に受信しているので、攻撃用フレームＡＴ２の受信時点では、攻撃検知装置１０は攻撃を検出しない。しかし、攻撃用フレームＡＴ２の受信によって、周期メッセージＭ２２が基準メッセージから３番目のメッセージとして扱われるようになる。このため、周期メッセージＭ２２の受信時刻は、基準メッセージから３番目のメッセージの受信期間であるＺ２３と比較されることになる。しかし、周期メッセージＭ２２の受信時刻は、期間Ｚ２３に含まれていない。そこで、攻撃検知装置１０は、ＩＤ＝０ｘ１２３を含むフレームを用いた攻撃が行われていると判定できる。
【００５７】
このように、攻撃検知装置１０は、基準とするあるメッセージから、複数個後のメッセージの受信期間を計算するとともに、メッセージの受信時刻が、受信メッセージの基準メッセージからの受信順序に対応付けられた受信期間に含まれているかを判定する。このため、マージンを広くとっても、攻撃検知装置１０は、攻撃が行われていることを検出することができる。
【００５８】
＜第２の実施形態＞
第２の実施形態では、基準更新処理部２３が定期的に基準メッセージを変更する場合の例を説明する。
【００５９】
図１２は、第２の実施形態にかかる攻撃検知方法の例を説明する図である。図１２は、１つの基準メッセージから１０個までのメッセージの受信期間を予測し、基準メッセージから１０個目のメッセージを新たな基準メッセージにする例を示す。周期メッセージを基準として、計算部２１は、１個目から１０個目のメッセージの各々の受信期間を計算する。このときの計算部２１での計算方法は、図８を参照しながら説明した計算と同様である。図１２は、基準メッセージから９個目のメッセージ以降のメッセージの受信の様子を図示している。基準メッセージから９番目のメッセージがＭ３１であるとする。計算部２１は、基準メッセージから９個目のメッセージの受信期間として、Ｚ３１を計算する。同様に、計算部２１は、基準メッセージから１０個目のメッセージの受信期間として、Ｚ３２を計算する。
【００６０】
基準更新処理部２３は、メッセージが送受信部１１で受信されるたびに、ＩＤごとに、基準メッセージから何個目のメッセージを受信しているかをカウントする。基準更新処理部２３は、基準メッセージから１０個目の周期メッセージＭ３２の受信を検出すると、周期メッセージＭ３２を新たな基準メッセージに設定するとともに、基準時刻３３を周期メッセージＭ３２の受信時刻に更新する。
【００６１】
計算部２１は、基準時刻３３が更新されると、新たな基準時刻３３を用いて、予め決められた数の受信期間を計算する。従って、図１２の例では、計算部２１は、周期メッセージＭ３２から１０個目までの受信期間を計算する。例えば、計算部２１は、新たな基準メッセージである周期メッセージＭ３２から１つ目のメッセージの受信期間を期間Ｚ３３、新たな基準メッセージである周期メッセージＭ３２から２つ目のメッセージの受信期間をＺ３４と計算したとする。
【００６２】
一方、新たに周期メッセージＭ３３が送受信部１１で受信されたとする。判定部２２は周期メッセージＭ３３を、新たな基準メッセージである周期メッセージＭ３２から１つ目のメッセージとして認識し、受信時刻が期間Ｚ３３に含まれているかを判定する。図１２の例では、周期メッセージＭ３３の受信時刻は期間Ｚ３３に含まれているので、周期メッセージＭ３３の受信時点では攻撃は検出されない。次に、周期メッセージＭ３４が送受信部１１で受信されたとする。判定部２２は周期メッセージＭ３４を、新たな基準メッセージである周期メッセージＭ３２から２つ目のメッセージとして認識し、受信時刻が期間Ｚ３４に含まれているかを判定する。図１２の例では、周期メッセージＭ３４の受信時刻は期間Ｚ３４に含まれているので、周期メッセージＭ３４の受信時点では攻撃は検出されない。以後も同様に処理が行われる。
【００６３】
図１３は、攻撃検知装置１０の処理の例を説明するフローチャートである。計算部２１は、攻撃の検出対象のＩＤについて、送信周期ＴとマージンＭを送信条件３１から読み込み、さらに、基準メッセージの変更までに受信するメッセージ数Ｙを設定する（ステップＳ２１）。攻撃検出の対象となるＩＤについての１つ目の周期メッセージを送受信部１１が受信すると、基準更新処理部２３は、メッセージの受信時刻ｔ０を取得する（ステップＳ２２）。基準更新処理部２３は、メッセージの受信時刻ｔ０を基準時刻３３として格納する。計算部２１は、ステップＳ２１で取得した情報と受信時刻ｔ０を用いて、Ｙ個分の受信期間（ｒ（１）〜ｒ（Ｙ））を計算するとともに、変数ｋを１に設定する（ステップＳ２３）。
【００６４】
次に、送受信部１１が攻撃の検出対象のＩＤを含むメッセージを受信すると、判定部２２は、そのメッセージの受信時刻をｔ（ｋ）に設定する（ステップＳ２４）。判定部２２は、受信時刻ｔ（ｋ）がｒ（ｋ）の範囲内であるかを判定する（ステップＳ２５）。受信時刻ｔ（ｋ）がｒ（ｋ）の範囲内である場合、判定部２２は、ｋ番目のメッセージによっては攻撃を検出していない（ステップＳ２５でＹｅｓ）。そこで、判定部２２は、変数ｋがＹと等しいかを判定する（ステップＳ２６）。変数ｋがＹと等しくない場合、攻撃検知装置１０は、Ｙ個分のメッセージを受信していない（ステップＳ２６でＮｏ）。そこで、判定部２２は、変数ｋを１つインクリメントして、ステップＳ２４に戻る（ステップＳ２７）。
【００６５】
一方、変数ｋがＹと等しい場合、攻撃検知装置１０は、Ｙ個分のメッセージを受信している（ステップＳ２６でＹｅｓ）。そこで、基準更新処理部２３は、Ｙ個目のメッセージの受信時刻ｔ（Ｙ）を基準メッセージの受信時刻ｔ０に設定し、ステップＳ２３に戻る（ステップＳ２８）。
【００６６】
第２の実施形態においても、受信時刻ｔ（ｋ）がｒ（ｋ）の範囲内にない場合、判定部２２は、攻撃を検出する（ステップＳ２５でＮｏ、ステップＳ２９）。
【００６７】
このように、第２の実施形態では、基準メッセージが定期的に変更される。従って、誤差を所定以下に抑えることができる。例えば、攻撃検知装置１０での時刻測定がミリ秒オーダーで行われているのに対し、メッセージの送信周期がマイクロ秒オーダーで行われている場合であっても、誤差が所定量以上にわたって蓄積されることを防ぐことができる。このため、誤差の蓄積による誤検出や攻撃の見逃しが防止される。
【００６８】
＜第３の実施形態＞
第３の実施形態では、計算部２１において、２つ以上後のメッセージのうちの１つの受信期間を予測し、メッセージごとに受信期間の計算の起点を変更する場合の処理を説明する。
【００６９】
図１４は、第３の実施形態にかかる攻撃検知方法の例を説明する図である。図１４の例では、受信したメッセージと同じＩＤのメッセージのうち、３つ後に受信すると予測される周期メッセージの受信期間を予測する場合の例を説明する。なお、図１４では、周期メッセージＭ４１が基準メッセージに設定されているとする。
【００７０】
周期メッセージＭ４１を送受信部１１が受信すると、計算部２１は、周期メッセージＭ４１の３つ後の周期メッセージの受信期間を計算する。受信期間の計算方法は第１の実施形態と同様である。図１４の例では、計算部２１は、周期メッセージＭ４１の３つ後の周期メッセージの受信期間としてＺ４４を計算したとする。計算部２１は、計算した結果を受信予測３４として記録する。このとき、Ｚ４４は、基準メッセージから３つ目のメッセージの受信予測として記録される。一方、判定部２２は、周期メッセージＭ４１の判定に使用する受信予測が得られていないので、判定処理を行わない。
【００７１】
次に、送受信部１１は、攻撃用フレームＡＴ３を受信したとする。この場合、攻撃用フレームＡＴ３に処理対象のＩＤが含まれているため、攻撃用フレームＡＴ３は、基準フレームから１番目の周期メッセージとして扱われる。そこで、計算部２１は、攻撃用フレームＡＴ３の３つ後の周期メッセージの受信期間としてＺ４５を計算し、受信予測３４に記録する。このとき、Ｚ４５は、基準メッセージから４つ目のメッセージの受信予測として記録される。この場合も、判定部２２は、攻撃用フレームＡＴ３の判定に使用する受信予測が得られていないので、判定処理を行わない。
【００７２】
その後、送受信部１１は、周期メッセージＭ４２を受信したとする。基準フレームの後に攻撃用フレームＡＴ２が攻撃検知装置１０で受信されていることから、周期メッセージＭ４２は、基準フレームから２番目の周期メッセージとして扱われる。計算部２１は、周期メッセージＭ４２の３つ後の周期メッセージの受信期間としてＺ４６を計算し、受信予測３４に記録する。周期メッセージＭ４２に基づいて計算された受信期間（Ｚ４６）は、周期メッセージＭ４２が基準フレームから２番目の周期メッセージとして扱われるため、基準メッセージから５つ目のメッセージの受信予測として記録される。判定部２２は、周期メッセージＭ４２の判定に使用する受信予測が得られていないので、判定処理を行わない。
【００７３】
送受信部１１が周期メッセージＭ４３を受信する。ここで、周期メッセージＭ４１、攻撃用フレームＡＴ３、周期メッセージＭ４２、周期メッセージＭ４３のいずれも攻撃検出対象のＩＤを含んでいるので、判定部２２は、周期メッセージＭ４３を基準メッセージから３つ目の周期メッセージとして扱う。そこで、判定部２２は、周期メッセージＭ４３の受信時刻が期間Ｚ４４に含まれているかを判定する。図１４の例では、周期メッセージＭ４３の受信時刻が期間Ｚ４４に含まれていないので、判定部２２は、攻撃を検出できる。
【００７４】
図１５は、攻撃検知装置１０の処理の例を説明するフローチャートである。計算部２１は、変数ｉを０に設定する（ステップＳ４１）。計算部２１は、送信条件３１を用いて、処理対象のＩＤを含むメッセージについて、送信周期、マージン、受信予測を計算するメッセージから受信メッセージまでのメッセージ数Ｚを設定する（ステップＳ４２）。送受信部１１でメッセージを受信すると、計算部２１は、そのメッセージの受信時刻をｔ（ｉ）とする（ステップＳ４３）。計算部２１は、ｉ＋Ｚ個先のメッセージの受信期間ｒ（ｉ＋Ｚ）を計算する（ステップＳ４４）。ステップＳ４４において、ｒ（ｉ＋Ｚ）は、ｔ（ｉ）＋（Ｔ×Ｚ）−Ｍからｔ（ｉ）＋（Ｔ×Ｚ）＋Ｍまでの期間である。
【００７５】
判定部２２は、変数ｉがＺ以上かを判定する（ステップＳ４５）。変数ｉがＺ未満の場合、判定部２２は、変数ｉを１つインクリメントしてステップＳ４３に戻る（ステップＳ４５でＮｏ、ステップＳ４７）。
【００７６】
変数ｉがＺ以上の場合、判定部２２は、ｔ（ｉ）が受信期間ｒ（ｉ）の範囲内であるかを判定する（ステップＳ４５でＹｅｓ、ステップＳ４６）。ｔ（ｉ）が受信期間ｒ（ｉ）の範囲内である場合、判定部２２は、変数ｉを１つインクリメントしてステップＳ４３に戻る（ステップＳ４６でＹｅｓ、ステップＳ４７）。一方、ｔ（ｉ）が受信期間ｒ（ｉ）の範囲内ではない場合、判定部２２は、攻撃が発生したことを検出する（ステップＳ４６でＮｏ、ステップＳ４８）。
【００７７】
第３の実施形態では、受信期間の計算の起点となるメッセージがＹ個あり、受信のたびに一つずつ起点となるメッセージが更新されているといえる。従って、第３の実施形態では、第２の実施形態と同様に、誤差を所定以下に抑えることができる。
【００７８】
＜第４の実施形態＞
第４の実施形態では、計算部２１において、基準メッセージから所定の値以上後のメッセージの受信期間を予測し、基準メッセージの次のメッセージの受信期間は計算しない場合の処理を説明する。
【００７９】
図１６は、第４の実施形態にかかる攻撃検知方法の例を説明する図である。周期メッセージＭ５１を送受信部１１が受信すると、計算部２１は、周期メッセージＭ５１を基準メッセージに決定する。
【００８０】
計算部２１は、周期メッセージＭ５１の２つ後以降の複数の周期メッセージの受信期間を計算する。受信期間の計算方法は第１の実施形態と同様である。図１６の例では、計算部２１は、周期メッセージＭ５１の２つ後の周期メッセージの受信期間としてＺ５３を計算し、周期メッセージＭ５１の３つ後の周期メッセージの受信期間としてＺ５４を計算したとする。計算部２１は、計算した結果を受信予測３４として記録する。このとき、Ｚ５３は、基準メッセージから２つ目のメッセージの受信期間、Ｚ５４は、基準メッセージから３つ目のメッセージの受信期間として記録される。一方、判定部２２は、周期メッセージＭ５１の判定に使用する受信期間が得られていないので、判定処理を行わない。
【００８１】
次に、送受信部１１は、攻撃用フレームＡＴ４を受信したとする。攻撃用フレームＡＴ４に処理対象のＩＤが含まれているため、判定部２２は、攻撃用フレームＡＴ４を基準メッセージＭ５１から１つ目の周期メッセージとして扱う。この場合も、判定部２２は、攻撃用フレームＡＴ４の判定に使用する受信期間が得られていないので、判定処理を行わない。
【００８２】
その後、送受信部１１は、周期メッセージＭ５２を受信したとする。周期メッセージＭ５２に処理対象のＩＤが含まれているため、判定部２２は、周期メッセージＭ５２を基準メッセージＭ５１から２つ目の周期メッセージとして扱う。判定部２２は、受信予測３４を用いて、基準メッセージＭ５１から２つ目の周期メッセージを受信すると予測する期間は、Ｚ５３に示す期間であることを取得する。ここで、基準メッセージＭ５１から２つ目の周期メッセージと判定した周期メッセージＭ５２の受信時刻は、Ｚ５３に示す期間に含まれていない。このため、判定部２２は、攻撃が発生していることを検出できる。
【００８３】
以上説明したように第４の実施形態では、基準メッセージの次の周期メッセージについては受信期間を計算しない。このため、第４の実施形態では、第１の実施形態に比べて計算部２１の処理負荷が低くなる。また、受信予測３４を記憶するメモリ容量も第１の実施形態に比べて小さくできる。
【００８４】
＜第５の実施形態＞
第５の実施形態では、周期メッセージの各々に対して、その周期メッセージの受信期間の開始時刻を計算するが、受信期間の終了時刻は設定しないパターンについて説明する。
【００８５】
図１７は、第５の実施形態にかかる攻撃検知方法の例を説明する図である。周期メッセージＭ６１を送受信部１１が受信すると、計算部２１は、周期メッセージＭ６１を基準メッセージに決定する。
【００８６】
計算部２１は、周期メッセージＭ６１の後に受信する周期メッセージについて、受信期間の開始時刻を計算する。ｎ番目の周期メッセージの受信期間の開始時刻Ｔｓ（ｎ）は、次式で計算される。
【００８７】
Ｔｓ（ｎ）＝Ｔ０＋ｎ×Ｔ−Ｍ
ここで、Ｔ０は基準メッセージの受信時刻であり、Ｔは周期メッセージの送信周期、Ｍはマージンであるとする。
【００８８】
図１７では、図を見やすくするために、ｎ＝１〜３の場合のＴ０＋ｎ×Ｔに縦線を入れて示している。図１７の例では、判定部２２は、ＩＤ＝０ｘ１２３を含むメッセージのうち、基準メッセージからｎ番目のメッセージをＴ０＋ｎ×Ｔ−Ｍ以降に受信していれば、基準メッセージからｎ番目のメッセージは攻撃ではないと判定する。
【００８９】
以下、ｎ＝２のケースを例として説明する。計算部２１は、周期メッセージＭ６１の次に、攻撃用のフレームＡＴ５を、Ｔ０＋ｔ１に受信したとする。ここで、攻撃用のフレームＡＴ５にはＩＤ＝０ｘ１２３が含まれているとする。すると、判定部２２は、攻撃用のフレームＡＴ５を、ＩＤ＝０ｘ１２３での基準メッセージから１つ目の周期メッセージとして扱う。このとき、判定部２２は、ＩＤ＝０ｘ１２３について基準メッセージからｎ番目のメッセージが未受信であるので、攻撃が発生しているかの判定を行わない。
【００９０】
次に、攻撃用のフレームＡＴ５の受信からｔ２後に、周期メッセージＭ６２を受信したとする。この場合、判定部２２は、ＩＤ＝０ｘ１２３のフレームとして、基準フレームＭ６１の後に、攻撃用のフレームＡＴ５と周期メッセージＭ６２を受信しているので、周期メッセージＭ６２を基準フレームＭ６１から２番目の周期メッセージとして扱う。このため、判定部２２は、周期メッセージＭ６２の受信時刻が、２番目の周期メッセージの受信期間の開始時刻であるＴ０＋２Ｔ−Ｍ以降であるかを判定する。図１７の例では、周期メッセージＭ６２の受信時刻は、Ｔ０＋Ｔであり、２番目の周期メッセージの受信期間の開始時刻（Ｔ０＋２Ｔ−Ｍ）よりも前である。このため、判定部２２は、周期メッセージＭ６２の受信の際に、これまでに攻撃が行われていると判定する。なお、図１７では、ｎ＝２の場合を例として説明したが、これは一例に過ぎない。すなわち、ｎは２以上の任意の整数に設定され得る。
【００９１】
図１８は、攻撃検知装置１０の処理の例を説明するフローチャートである。計算部２１は、変数ｉを０に設定する（ステップＳ６１）。計算部２１は、送信条件３１を用いて、処理対象のＩＤを含むメッセージについて、送信周期Ｔ、マージンＭ、受信予測を計算するメッセージから受信メッセージまでのメッセージ数Ｘを設定する（ステップＳ６２）。送受信部１１でメッセージを受信すると、計算部２１は、そのメッセージの受信時刻をｔ（ｉ）とする（ステップＳ６３）。計算部２１は、Ｘ個先のメッセージの受信期間の開始時刻ｒ（ｉ＋Ｘ）を計算する（ステップＳ６４）。ステップＳ６４において、ｒ（ｉ＋Ｘ）＝ｔ（ｉ）＋（Ｔ×Ｘ）−Ｍと計算される。
【００９２】
判定部２２は、変数ｉがＸ以上かを判定する（ステップＳ６５）。変数ｉがＸ未満の場合、判定部２２は、変数ｉを１つインクリメントしてステップＳ６３に戻る（ステップＳ６５でＮｏ、ステップＳ６７）。
【００９３】
変数ｉがＸ以上の場合、判定部２２は、ｔ（ｉ）が受信期間の開始時刻ｒ（ｉ）以降であるかを判定する（ステップＳ６５でＹｅｓ、ステップＳ６６）。ｔ（ｉ）が受信期間の開始時刻ｒ（ｉ）以降である場合、判定部２２は、変数ｉを１つインクリメントしてステップＳ６３に戻る（ステップＳ６６でＹｅｓ、ステップＳ６７）。一方、ｔ（ｉ）が受信期間の開始時刻ｒ（ｉ）以降ではない場合、判定部２２は、攻撃が発生したことを検出する（ステップＳ６６でＮｏ、ステップＳ６８）。
【００９４】
第５の実施形態では、基準メッセージより後に受信するメッセージの受信期間の開始時刻は計算するが終了時刻までは計算していない。このため、第５の実施形態では、第１の実施形態に比べて計算部２１の処理負荷が低くなる。また、受信予測３４を記憶するメモリ容量も第１の実施形態に比べて小さくできる。
【００９５】
＜第６の実施形態＞
第６の実施形態では、メッセージの受信時刻が受信順序に対応付けられた受信期間に含まれない場合に、基準メッセージからの受信順序のインクリメントを行わない実施形態を説明する。
【００９６】
図１９は、攻撃の検出例を説明する図である。図１９の例でも、攻撃検知装置１０は図７に示す情報を保持しており、ＩＤ＝０ｘ１２３の周期メッセージに対する攻撃を監視しているものとする。図１９では、攻撃検知装置１０は、０ｍｓに周期メッセージＭ７１を受信し、周期メッセージＭ７１をＩＤ＝０ｘ１２３の基準メッセージとするものとする。計算部２１は、図７を参照しながら説明した処理により、周期メッセージＭ７１の受信時刻を基準として、ＩＤ＝０ｘ１２３の周期メッセージについての受信予測３４（図７）を生成する。
【００９７】
次に、送受信部１１は、ＩＤ＝０ｘ１２３を含む周期メッセージＭ７２を、１０１ｍｓに受信したとする。判定部２２は、周期メッセージＭ７２のＩＤが０ｘ１２３であることから、周期メッセージＭ７２をＩＤ＝０ｘ１２３についての、基準メッセージから１番目のメッセージであると推測する。判定部２２は、受信予測３４に含まれている受信順序＝１の場合の受信期間中に、周期メッセージＭ７２の受信時刻が含まれているかを判定する。図１９では、基準メッセージから１番目のメッセージの受信期間は、期間Ｚ７２や受信予測３４（図７）に示すように、６０ｍｓ〜１４０ｍｓである。判定部２２は、周期メッセージＭ７２の受信時刻が１０１ｍｓであるので、周期メッセージＭ７２の受信時刻は、期間Ｚ７２に含まれていると判定する。そこで、判定部２２は、攻撃が検出されていないと判定し、周期メッセージＭ７２の受信時刻を受信状況情報３２に記録する。
【００９８】
次に、１６１ｍｓにおいて、送受信部１１は、ＩＤ＝０ｘ１２３を含むメッセージＡＴ５を受信したとする。メッセージＡＴ５はＩＤ＝０ｘ１２３を用いた攻撃であるとする。判定部２２は、メッセージＡＴ５のＩＤが０ｘ１２３であることから、メッセージＡＴ５をＩＤ＝０ｘ１２３の基準メッセージから２番目のメッセージであると推測する。すると、判定部２２は、受信予測３４に含まれている受信順序＝２の場合の受信期間である１６０ｍｓ〜２４０ｍｓ（図１９中の期間Ｚ７３）の中に、メッセージＡＴ５の受信時刻が含まれているかを判定する。ここでは、メッセージＡＴ５の受信時刻が１６１ｍｓであるため、判定部２２は、期間Ｚ７３の間に基準メッセージから２番目のメッセージＡＴ５を受信したと判定する。そこで、判定部２２は、攻撃を検出していないと判定するとともに、メッセージＡＴ５の受信時刻を受信状況情報３２に記録する。従って、図１９の例では、メッセージＡＴ５の受信時点では、以下の情報が受信状況情報３２として保持される。
【００９９】
基準メッセージ（受信順序＝０）の受信時刻    ：０ｍｓ
受信順序＝１の周期メッセージの受信時刻      ：１０１ｍｓ
受信順序＝２の周期メッセージの受信時刻      ：１６１ｍｓ
なお、受信状況情報３２において、周期メッセージの受信順序は基準メッセージを基準として計算されている。また、受信順序＝２の周期メッセージとして記録されている受信時刻は、攻撃に使用されているメッセージＡＴ５の受信時刻である。
【０１００】
２４０ｍｓにおいて、送受信部１１は、ＩＤ＝０ｘ１２３を含む周期メッセージＭ７３を受信したとする。判定部２２は、周期メッセージＭ７３のＩＤが０ｘ１２３であることから、周期メッセージＭ７３をＩＤ＝０ｘ１２３の基準メッセージから３番目のメッセージであると推測する。判定部２２は、受信予測３４に含まれている受信順序＝３の場合の受信期間である２６０ｍｓ〜３４０ｍｓ（図９中の期間Ｚ７４）の中に、周期メッセージＭ７３の受信時刻が含まれているかを判定する。ここでは、周期メッセージＭ７３の受信時刻が２４０ｍｓであるため、判定部２２は、基準メッセージから３番目の周期メッセージＭ７３の受信時刻は受信期間Ｚ７４に含まれていないと判定する。そこで、判定部２２は、攻撃を検出したと判定する。
【０１０１】
判定部２２は、適宜、オペレータが運用する装置などに攻撃の検出を通知するための通知メッセージを生成しても良い。攻撃の検出が通知される場合、判定部２２は、生成したメッセージを、送受信部１１を介して、通知先に送信する。
【０１０２】
攻撃を検出した場合、今回受信した周期メッセージＭ７３か、その前に受信したメッセージのいずれかが攻撃用のメッセージであったことになる。すると、次に受信するメッセージが周期メッセージである場合は、基準メッセージから３番目の周期メッセージである。そこで、判定部２２は、次回以降のメッセージについても攻撃判定を継続するために、次回の受信メッセージについての基準メッセージからの受信順序を変更しない。判定部２２は、基準メッセージからの受信順序を変更しないために、周期メッセージＭ７３の受信時刻を受信状況情報３２に記録しない。このため、受信状況情報３２は、以下の情報のままになる。
【０１０３】
基準メッセージ（受信順序＝０）の受信時刻    ：０ｍｓ
受信順序＝１の周期メッセージの受信時刻      ：１０１ｍｓ
受信順序＝２の周期メッセージの受信時刻      ：１６１ｍｓ
その後、３０１ｍｓにおいて、送受信部１１は、ＩＤ＝０ｘ１２３を含む周期メッセージＭ７４を受信したとする。判定部２２は、周期メッセージＭ７４のＩＤが０ｘ１２３であることと、受信状況情報３２には受信順序＝２のメッセージまでの記録しかないことから、周期メッセージＭ７４をＩＤ＝０ｘ１２３の基準メッセージから３番目のメッセージと推測する。判定部２２は、受信予測３４に含まれている受信順序＝３の場合の受信期間である２６０ｍｓ〜３４０ｍｓ（図１９中の期間Ｚ７４）の中に、周期メッセージＭ７４の受信時刻が含まれているかを判定する。図１９の例では、周期メッセージＭ７４の受信時刻が３０１ｍｓであるため、判定部２２は、期間Ｚ７４の間に基準メッセージから３番目の周期メッセージＭ７４を受信したと判定する。そこで、判定部２２は、攻撃が検出されていないと判定する。
【０１０４】
判定部２２は、周期メッセージＭ７４の受信時刻を受信状況情報３２に記録する。このため、攻撃検知装置１０は、周期メッセージＭ７４を受信した時点では、以下の受信状況情報３２を保持する。
【０１０５】
基準メッセージ（受信順序＝０）の受信時刻    ：０ｍｓ
受信順序＝１の周期メッセージの受信時刻      ：１０１ｍｓ
受信順序＝２の周期メッセージの受信時刻      ：１６１ｍｓ
受信順序＝３の周期メッセージの受信時刻      ：３０１ｍｓ
このように、第６の実施形態では、いずれのメッセージが攻撃に使用されたメッセージであるかを特定しないものの、攻撃を検出できる。さらに、第６の実施形態では、攻撃を検出すると一時的に受信順序のカウントアップを中断するので、攻撃が発生した後に周期メッセージを続けて受信した場合であっても、基準メッセージや受信順序をリセットせずに攻撃の検出を継続できる。
【０１０６】
図１９を参照しながら説明した処理は一例であり、実装に応じて変更され得る。例えば、攻撃の検出に使用されたメッセージの受信記録も、受信時刻が受信順序の受信期間に入っているかの判定結果と共に受信状況情報３２に含められていても良い。この場合、例えば、図１９に示すように、メッセージＭ７１、Ｍ７２、攻撃メッセージＡＴ５、メッセージＭ７３を受信したときの受信状況情報３２は、以下の通りになる。
【０１０７】
基準メッセージ（受信順序＝０）の受信時刻    ：０ｍｓ
受信順序＝１の周期メッセージの受信時刻      ：１０１ｍｓ
受信順序＝２の周期メッセージの受信時刻      ：１６１ｍｓ
受信順序＝３の周期メッセージの受信時刻      ：２４０ｍｓ（判定結果ＮＧ）
このため、メッセージＭ７４を受信したときに受信状況情報３２には受信順序＝３のメッセージの記録があるものの、判定結果がＮＧとなっていることから、判定部２２は、メッセージＭ７４を受信順序＝３の周期メッセージとして扱う。このため、メッセージＭ７４についての判定結果はＯＫとなり、受信状況情報３２は以下のように更新される。
【０１０８】
基準メッセージ（受信順序＝０）の受信時刻    ：０ｍｓ
受信順序＝１の周期メッセージの受信時刻      ：１０１ｍｓ
受信順序＝２の周期メッセージの受信時刻      ：１６１ｍｓ
受信順序＝３の周期メッセージの受信時刻      ：２４０ｍｓ（判定結果ＮＧ）
受信順序＝３の周期メッセージの受信時刻      ：３０１ｍｓ
以後の処理は、攻撃の検出に使用されたメッセージの受信記録が受信状況情報３２に含まれない場合と同様である。
【０１０９】
図１９では、周期メッセージの後に１回の攻撃が検出されるケースについて説明したが、攻撃の検出頻度は任意である。例えば、受信時刻が推測された受信順序の受信期間に入った場合をＯＫ、受信時刻が推測された受信順序の受信期間に入っていない場合をＮＧと表わすとする。このとき、判定部２２の判定結果がＯＫ、ＮＧ、ＮＧ、ＮＧとなったとする。図１９を参照しながら説明したように、ＮＧと判定されている間は、受信順序はカウントアップされない。このため、攻撃検知装置１０が２番目に受信したメッセージ（最初にＮＧと判定されたメッセージ）から４番目に受信したメッセージまでは、いずれも２番目の周期メッセージであると推測される。さらに４番目のメッセージでもＮＧと判定されるので、攻撃検知装置１０が５番目に受信するメッセージも、判定部２２によって、２番目の周期メッセージであると推測される。このため、５番目に受信するメッセージが、予測された期間中に受信された周期メッセージである場合、判定結果は、ＯＫ、ＮＧ、ＮＧ、ＮＧ、ＯＫとなり得る。
【０１１０】
図２０は、攻撃検知装置１０の処理の例を説明するフローチャートである。図２０では、定数ｎと変数ｋを用いる。定数ｎは、計算部２１が計算する受信期間の数である。変数ｋは、周期メッセージの受信順序をカウントするために用いる変数である。ステップＳ８１〜Ｓ８５の処理は、図１０を参照しながら説明したステップＳ１１〜Ｓ１５の処理と同様である。
【０１１１】
受信時刻ｔ（ｋ）がｒ（ｋ）の範囲内である場合、判定部２２は、ｋ番目のメッセージによっては攻撃を検出していない（ステップＳ８５でＹｅｓ）。そこで、判定部２２は、変数ｋが定数ｎ以上であるかを判定する（ステップＳ８６）。変数ｋが定数ｎ未満の場合、攻撃検知装置１０は、ｎ個分のメッセージを受信していない（ステップＳ８６でＮｏ）。そこで、判定部２２は、変数ｋを１つインクリメントして、ステップＳ８４に戻る（ステップＳ８７）。
【０１１２】
一方、変数ｋが定数ｎ以上の場合、攻撃検知装置１０は、ｎ個分のメッセージを受信している（ステップＳ８６でＹｅｓ）。そこで、基準更新処理部２３は、ｋ個目のメッセージの受信時刻ｔ（ｋ）を基準メッセージの受信時刻ｔ０に設定し、ステップＳ８３に戻る（ステップＳ８８）。
【０１１３】
一方、受信時刻ｔ（ｋ）がｒ（ｋ）の範囲内にない場合、判定部２２は、攻撃を検知する（ステップＳ８５でＮｏ、ステップＳ８９）。判定部２２は、適宜、攻撃の検知を通知する処理を行い、その後、ステップＳ８４に戻る。なお、ステップＳ８５でＮｏと判定された場合には、受信順序をインクリメントしない。換言すると、受信メッセージの受信順序は、攻撃の検出時には一時的に無効にされている。
【０１１４】
図２０は一例であり、実装に応じて処理の手順が変更され得る。例えば、変数ｋが定数ｎ以上の場合（ステップＳ８６でＹｅｓ）、ステップＳ８８の処理を行わずに、ステップＳ８２に戻るように変形されても良い。このように変形された場合は、ｎ個分のメッセージを攻撃検知装置１０が受信した後、次に受信するメッセージを基準として、攻撃の検出が行われる。
【０１１５】
さらに、図２０を参照しながら説明したように、変数ｋを用いることによって周期メッセージの受信順序がカウントされる場合、判定部２２は、図１９を参照しながら説明したように受信状況情報３２を参照しなくても、変数ｋを用いて受信順序を特定できる。この場合、受信状況情報３２は生成されないように変形されても良い。
【０１１６】
第６の実施形態では、判定部２２は、攻撃を検出した時点で、受信メッセージの受信順序を一時的に無効にすることにより、検出済みの攻撃に使用されたメッセージの受信によって発生した受信順序のずれを解消している。従って、第６の実施形態では、攻撃の検出後に、検出済みの攻撃に使用されたメッセージによる周期メッセージの受信順序のずれが解消されることにより、次回以降の周期メッセージを装った攻撃の検出が継続できる。
【０１１７】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【０１１８】
例えば、図８では、複数のメッセージについての受信期間をまとめて計算して、受信予測３４に記録する場合を説明したが、受信予測３４には、２つ以上後に受信する可能性のあるメッセージについての受信期間のみが記録されていても良い。この場合、計算部２１は。第３および第５の実施形態で説明したように、１つのメッセージの受信に伴って１つのメッセージの受信期間を計算する。第1、第2の実施形態にも適用可能であり、基準時刻の再選択を行うまでの受信個数をｎ個とした場合、ｎ個目だけの受信期間を持ち、1個目〜ｎ−１個目までの受信の際には、受信個数をカウントするだけでもよい。
【０１１９】
以上の説明では、１つのＩＤについての攻撃の検出処理を説明したが、１台の攻撃検知装置１０において、並行して複数のＩＤに対する攻撃の検出処理が行われても良い。この場合、攻撃検知装置１０は、図５に示すように、複数のＩＤのメッセージを並行して受信するので、受信したメッセージのＩＤごとに、送信条件３１、受信状況情報３２、基準時刻３３、受信予測３４などの情報を記憶する。
【０１２０】
攻撃検知装置１０は、さらに、オペレータが操作する操作端末と通信しても良い。この場合、攻撃検知装置１０は、送信条件３１などの情報を、操作端末を介して取得することができる。
【０１２１】
以上の説明では、標準ＣＡＮの場合を例として攻撃検知装置１０の動作の例を説明したが、通信に使用されるデータフレームが拡張仕様の場合でも、同様に処理が行われる。さらに、ネットワークがＣＡＮ  ＦＤ（CAN with Flexible Data rate）であっても、同様に攻撃検知装置１０は、攻撃を検出できる。
【０１２２】
上述の第１〜第５の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
ネットワーク中の通信装置から周期的に送信されるメッセージを受信する送受信部と、
受信したメッセージから選択した基準メッセージ中の識別情報を含むメッセージについて、前記基準メッセージより２周期以上後に送信されるメッセージを受信する受信期間を、前記識別情報で識別されるメッセージの送信周期を用いて計算する計算部と、
前記受信期間を、前記基準メッセージを基準としたときの、前記受信期間に受信すると予想されるメッセージの受信順序に対応付けて記憶する記憶部と、
前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間に含まれない場合、前記ネットワークに対する攻撃を検出したと判定する判定部
を備えることを特徴とする攻撃検知装置。
（付記２）
前記計算部は、前記基準メッセージの受信時刻と前記送信周期を用いて、前記基準メッセージより２周期以上後に送信される複数のメッセージの受信期間を計算する
ことを特徴とする付記１に記載の攻撃検知装置。
（付記３）
前記計算部は、
前記基準メッセージより後に受信した第１の受信メッセージの受信時刻と、前記送信周期を用いて、前記第１の受信メッセージから所定の数だけ後に受信する第２の受信メッセージの受信期間を計算し、
前記第２の受信メッセージについて計算した受信期間を、前記基準メッセージを基準としたときの前記第２の受信メッセージの受信順序に対応付ける
ことを特徴とする付記１に記載の攻撃検知装置。
（付記４）
前記計算部は、前記基準メッセージより２周期以上後に送信されるメッセージの各々について、当該メッセージの受信期間の開始時刻を計算し、
前記判定部は、前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間の開始時刻よりも前である場合、前記ネットワークに対する攻撃を検出したと判定する
ことを特徴とする付記１に記載の攻撃検知装置。
（付記５）
前記判定部は、受信メッセージの受信時刻が、受信順序に対応付けられた受信期間に含まれない場合、当該受信メッセージの受信順序を無効にする
ことを特徴とする付記１に記載の攻撃検知装置。
（付記６）
ネットワーク中の通信装置から周期的に送信されるメッセージを受信し、
受信したメッセージから選択した基準メッセージ中の識別情報を含むメッセージについて、前記基準メッセージより２周期以上後に送信されるメッセージを受信する受信期間を、前記識別情報で識別されるメッセージの送信周期を用いて計算し、
前記受信期間を、前記基準メッセージを基準としたときの、前記受信期間に受信すると予想されるメッセージの受信順序に対応付けて記憶し、
前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間に含まれない場合、前記ネットワークに対する攻撃を検出したと判定する
処理を検知装置が行うことを特徴とする攻撃検知方法。
（付記７）
前記検知装置は、前記基準メッセージの受信時刻と前記送信周期を用いて、前記基準メッセージより２周期以上後に送信される複数のメッセージの受信期間を計算する
ことを特徴とする付記６に記載の攻撃検知方法。
（付記８）
前記検知装置は、
前記基準メッセージより後に受信した第１の受信メッセージの受信時刻と、前記送信周期を用いて、前記第１の受信メッセージから所定の数だけ後に受信する第２の受信メッセージの受信期間を計算し、
前記第２の受信メッセージについて計算した受信期間を、前記基準メッセージを基準としたときの前記第２の受信メッセージの受信順序に対応付ける
ことを特徴とする付記６に記載の攻撃検知方法。
（付記９）
前記検知装置は、
前記基準メッセージより２周期以上後に送信されるメッセージの各々について、当該メッセージの受信期間の開始時刻を計算し、
前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間の開始時刻よりも前である場合、前記ネットワークに対する攻撃を検出したと判定する
ことを特徴とする付記６に記載の攻撃検知方法。
（付記１０）
前記検知装置は、受信メッセージの受信時刻が、受信順序に対応付けられた受信期間に含まれない場合、当該受信メッセージの受信順序を無効にする
ことを特徴とする付記６に記載の攻撃検知方法。
（付記１１）
ネットワーク中の通信装置から周期的に送信されるメッセージを受信し、
受信したメッセージから選択した基準メッセージ中の識別情報を含むメッセージについて、前記基準メッセージより２周期以上後に送信されるメッセージを受信する受信期間を、前記識別情報で識別されるメッセージの送信周期を用いて計算し、
前記受信期間を、前記基準メッセージを基準としたときの、前記受信期間に受信すると予想されるメッセージの受信順序に対応付けて記憶し、
前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間に含まれない場合、前記ネットワークに対する攻撃を検出したと判定する
処理を検知装置に行わせることを特徴とする攻撃検知プログラム。
（付記１２）
前記基準メッセージの受信時刻と前記送信周期を用いて、前記基準メッセージより２周期以上後に送信される複数のメッセージの受信期間を計算する
処理を前記検知装置に行わせることを特徴とする付記１１に記載の攻撃検知プログラム。
（付記１３）
前記基準メッセージより後に受信した第１の受信メッセージの受信時刻と、前記送信周期を用いて、前記第１の受信メッセージから所定の数だけ後に受信する第２の受信メッセージの受信期間を計算し、
前記第２の受信メッセージについて計算した受信期間を、前記基準メッセージを基準としたときの前記第２の受信メッセージの受信順序に対応付ける
処理を前記検知装置に行わせることを特徴とする付記１１に記載の攻撃検知プログラム。
（付記１４）
前記基準メッセージより２周期以上後に送信されるメッセージの各々について、当該メッセージの受信期間の開始時刻を計算し、
前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間の開始時刻よりも前である場合、前記ネットワークに対する攻撃を検出したと判定する
処理を前記検知装置に行わせることを特徴とする付記１１に記載の攻撃検知プログラム。
【符号の説明】
【０１２３】
１０  攻撃検知装置
１１  送受信部
２０  制御部
２１  計算部
２２  判定部
２３  基準更新処理部
３０  記憶部
３１  送信条件
３２  受信状況情報
３３  基準時刻
３４  受信予測
１００  ＥＣＵ
１０１  ＣＡＮトランシーバ
１０２  ＣＡＮコントローラ
１０３  処理回路
１０４  プロセッサ
１０５  メモリ
【図１】
2018056980.tif 000003
【図２】
2018056980.tif 000004
【図３】
2018056980.tif 000005
【図４】
2018056980.tif 000006
【図５】
2018056980.tif 000007
【図６】
2018056980.tif 000008
【図７】
2018056980.tif 000009
【図８】
2018056980.tif 000010
【図９】
2018056980.tif 000011
【図１０】
2018056980.tif 000012
【図１１】
2018056980.tif 000013
【図１２】
2018056980.tif 000014
【図１３】
2018056980.tif 000015
【図１４】
2018056980.tif 000016
【図１５】
2018056980.tif 000017
【図１６】
2018056980.tif 000018
【図１７】
2018056980.tif 000019
【図１８】
2018056980.tif 000020
【図１９】
2018056980.tif 000021
【図２０】
2018056980.tif 000022