図2は、実施形態にかかる攻撃検知方法の例を説明する図である。攻撃検知装置10は、周期的に受信するデータフレーム(周期メッセージ)について、予め、IDと送信周期を記憶しているとする。以下で説明する処理は、攻撃の検知対象のIDごとに行われる。
ステップS1において、攻撃検知装置10は、受信した周期メッセージの中から、基準とする基準メッセージを選択する。基準メッセージは、同じIDの他のメッセージを受信する期間の予測の基準とされるメッセージである。攻撃検知装置10は、基準メッセージと同じIDで識別され、基準メッセージからn番目に送信される周期メッセージの受信期間を計算する(ステップS2)。ステップS2において、nは2以上の整数であるとする。ステップS2での計算には、基準メッセージに含まれているIDに対応付けられた送信周期が使用されるが、基準メッセージの受信時刻も使用され得る。
その後、攻撃検知装置10は、基準メッセージと同じIDを有するn番目の周期メッセージを受信する(ステップS3)。すると、攻撃検知装置10は、n番目の周期メッセージの受信時刻は、n番目の周期メッセージの受信期間として予測された期間中であるかを判定する(ステップS4)。n番目の周期メッセージの受信時刻が、n番目の周期メッセージの受信期間として予測された期間中に含まれていない場合、攻撃検知装置10は、攻撃を検出したと判定する(ステップS4でNo、ステップS5)。一方、n番目の周期メッセージの受信時刻は、n番目の周期メッセージの受信期間として予測された期間中である場合、攻撃検知装置10は、攻撃を検出していないと判定し、処理を終了する(ステップS4でYes)。
以下、周期メッセージM11〜M13が、送信周期としてΔtを用いて送信される場合を例として、攻撃の検出例を説明する。さらに、周期メッセージM11〜M13のIDはIDaであり、ステップS2〜S4に示す変数nが3である場合との例とする。攻撃検知装置10は、時刻T1に周期メッセージM11を受信すると、周期メッセージM11を基準メッセージに選択したとする。攻撃検知装置10は、基準メッセージM11から3周期後に送られてくる周期メッセージの受信期間Z11を計算する。図2の例では、Z11は、時刻T4の周辺の矢印で示す期間であるとする。また、時刻T4は、T4=T1+3×Δtを満たすとする。
基準メッセージM11の次に周期メッセージM12が送信されたとする。また、攻撃検知装置10は、周期メッセージM12を受信すると、IDaで識別される周期メッセージのうち基準メッセージM11から1つ目のメッセージを受信したと判定する。
次に、IDaを含む攻撃のフレームAT1が送信されたとする。攻撃検知装置10は、攻撃のフレームAT1を受信すると、攻撃のフレームAT1を、IDaで識別される周期メッセージのうちで基準メッセージM11から2つ目のメッセージとして扱う。その後、周期メッセージM13が送信されたとする。攻撃検知装置10は、周期メッセージM13を受信すると、IDaで識別される周期メッセージのうち基準メッセージM11から3つ目のメッセージを受信したと判定する。
そこで、攻撃検知装置10は、周期メッセージM13の受信時刻が、基準メッセージM11から3つ目のメッセージの受信期間として計算した期間Z11に含まれているかを判定する。図2の例では、周期メッセージM13の受信時刻は時刻T3周辺であるが、Z11は、時刻T4の周辺の矢印で示す期間であるため、周期メッセージM13の受信時刻はZ11に含まれていない。従って、攻撃検知装置10は、周期メッセージM11の受信から周期メッセージM13の受信までの間に、IDaを用いた攻撃を受けたと判定する。
このように、実施形態にかかる方法では、基準とするメッセージから複数周期分後のメッセージの受信期間を予測すると共に、予測した受信期間が基準メッセージから何番目のメッセージであるかを考慮して攻撃の有無を判定する。このため、メッセージの遅延に対応するためにマージンを広く取っていても、攻撃を検出できる。
<装置構成>
図3は、攻撃検知装置10の構成の例を説明する図である。攻撃検知装置10は、送受信部11、制御部20、記憶部30を備える。制御部20は、計算部21、判定部22、基準更新処理部23を備える。記憶部30は、送信条件31、受信状況情報32、基準時刻33、受信予測34を保持する。
送信条件31は、攻撃検知装置10が受信する周期メッセージに含まれているIDと、そのIDで識別される周期メッセージの送信周期を対応付けている。受信状況情報32は、攻撃検知装置10が受信した周期メッセージの各々について、基準メッセージからの受信順序と、各周期メッセージの受信時刻を記録する。なお、メモリ容量を削減するために、受信状況情報32には、最後に受信した周期メッセージについて、基準メッセージからの受信順序と受信時刻を記録しても良い。例えば、1つの基準メッセージから1〜100番目のメッセージの全ての受信時刻を計算して記録する代わりに、100個目のメッセージの受信時刻を計算して記録しても良い。基準時刻33は、基準メッセージの受信時刻を記録する。受信状況情報32は、周期メッセージのIDごとに生成される。送信条件31、受信状況情報32、基準時刻33の例は後述する。
計算部21は、基準時刻33と送信条件31を用いて、IDごとに、周期メッセージの受信予測を計算する。計算部21は、得られた計算結果を受信予測34に格納する。このため、受信予測34もIDごとに生成される。受信予測34の例も後述する。
判定部22は、送受信部11で受信された受信メッセージが基準メッセージと同じIDを含むメッセージのうちの何番目にあたるかを求める。判定部22は、求めた受信順序に対応付けられた受信期間が、受信メッセージの受信時刻に含まれているかを判定する。このとき、判定部22は、適宜、受信予測34を参照する。
基準更新処理部23は、受信した周期メッセージから基準メッセージを選択する。なお、基準更新処理部23は、定期的に、基準メッセージを更新しても良い。また、攻撃として検知後には、検知したメッセージそのもの、あるいは、検知したメッセージの次に受信したメッセージを新たな基準メッセージとして選択しても良い。基準更新処理部23は、基準メッセージの選択や更新を行うと、基準メッセージとして選択したメッセージの受信時刻を基準時刻33とする。
図4は、攻撃検知装置10のハードウェア構成の例を説明する図である。図4の例では、攻撃検知装置10は、ECU100として実現されている。ECU100は、CANトランシーバ101、CANコントローラ102、処理回路103を含む。処理回路103は、プロセッサ104とメモリ105を備える。
CANトランシーバ101は、適宜、バス電圧の調整など、ECU100がCANネットワーク中の他の装置と通信するための処理を行う。CANコントローラ102は、受信したフレームに対するCRC(Cyclic Redundancy Check)チェックやビットスタッフィングなどの処理を行うことにより、データを抽出する。CANコントローラ102は、データをプロセッサ104に出力する。プロセッサ104は、任意の処理回路であり、例えば、CPU(Central Processing Unit)とすることができる。プロセッサは、メモリ105に格納されたプログラムを読み込んで、処理を行う。なお、ECU100は、記憶媒体からプログラムやデータを読み出すための装置を備えていても良い。この場合、プログラムは、任意の記憶媒体に記録されていても良く、ECU100によって、記憶媒体から適宜、読み出される。
攻撃検知装置10では、CANトランシーバ101とCANコントローラ102により、送受信部11が実現される。プロセッサ104は、制御部20として動作する。メモリ105は記憶部30として動作する。
<ネットワークとフレームの例>
図5は、ネットワークの例を説明する図である。図5に示すネットワークN1では、複数のECU100(ECU0〜ECUk)が1本のバスで互いにフレームの送受信が可能になるように接続されている。図5のネットワークに含まれるECU100のうちの1つ以上が攻撃検知装置10として動作するものとする。例えば、1つの攻撃検知装置10がネットワーク中で送受信される全ての周期メッセージに対する攻撃を検知しても良い。また、複数の攻撃検知装置10を用いて全ての周期メッセージに対する攻撃を検知するように検知対象が攻撃検知装置10ごとに決められていても良い。
周期メッセージの送信タイミングと、攻撃検知装置10での受信タイミングの例も図5に示す。図5の例では、ECU0が攻撃検知装置10として動作することにより、ID=A、B、Cの各々の周期メッセージに対する攻撃を検知するものとする。この場合、攻撃検知装置10として動作するECU0では、ID=A、B、Cの各々の周期メッセージを受信対象として取得する。一方、ECU1はID=Aの周期メッセージを送信し、ECU2はID=Bの周期メッセージを送信するとする。また、ECU3はID=Cの周期メッセージを送信するものとする。
図5のタイミング図に示すように、ID=A、B、Cの各周期メッセージは送信されたタイミングとほぼ同時に、ECU0で受信される。ECU0では、受信したメッセージの受信タイミングを、そのメッセージ中のIDに対応付けて解析することにより、攻撃を検知する。攻撃の検知の詳細については後述する。
図6は、送受信されるフレームのフォーマットの例を示す図である。図6のF11は、一般仕様のフレームのフォーマット例であり、F12は拡張仕様で使用されるフレームのフォーマット例である。
一般仕様のフレームは、SOF(Start of Frame)、調停(arbitration)フィールド、コントロールフィールド、データフィールド、CRCフィールド、ACKフィールド、EOF(End of Frame)を含む。調停フィールドには、IDとRTR(Remote Transmission Request)が含まれる。ここで、IDは、データフレームの識別に使用される識別情報である。コントロールフィールドには、IDE(Identifier Extension)、予約ビット、DLC(Data Length Code)が含まれる。CRCフィールドは、CRCシーケンスとCRCデリミタを含む。ACKフィールドは、ACKスロットとACKデリミタを含む。なお、各フィールドに含まれる情報要素のビット長は、F11の一番下の行に記載したとおりである。例えば、IDの長さは11ビットであり、データフィールドの長さは0〜64ビットの可変長である。
拡張仕様で使用されるデータフレーム(F12)も、SOF、調停フィールド、コントロールフィールド、データフィールド、CRCフィールド、ACKフィールド、EOFを含む。拡張仕様の調停フィールドは、IDベース、SRR(Substitute Remote Request Bit)、IDE、ID拡張、RTRを含む。拡張仕様では、IDベースとして格納されたビット列の次に、ID拡張として格納されたビット列をつなげて得られるビット列により、データフレームの識別情報(ID)を表わす。コントロールフィールドからEOFまでは、拡張仕様のフォーマットでも、一般仕様のフォーマットと同様である。また、各フィールドに含まれる情報要素のビット長は、F12の一番下の行に記載したとおりである。このため、拡張フォーマットでは、送信元の識別情報として、IDベースの11ビットとID拡張の18ビットを合わせた29ビットのビット列が使用される。以下、図6のF11に示すフォーマットを用いたデータフレームが送受信される場合を例として、各実施形態で行われる処理の例を説明する。なお、通信に使用されるデータフレームが拡張仕様の場合でも、同様に処理が行われる。
<第1の実施形態>
図7は、攻撃検知装置10が保持する情報の例を説明する図である。攻撃検知装置10は、予め、送信条件31を記憶している。
送信条件31は、攻撃検知装置10が受信する周期メッセージの各々について、その周期メッセージに含まれるID、送信周期、マージンを含む。送信周期は、エントリ中のIDで識別される周期メッセージが送信される周期である。マージンは、エントリ中のIDで識別される周期メッセージの受信期間を予測する際に、送信周期からずれる範囲の許容値として使用する値である。図7中の送信条件31には、ID=1x123の周期メッセージが100m秒周期で送信されることと、ID=1x123の周期メッセージについての受信期間の予測には、40m秒のマージンが使用されることが示されている。このため、例えば、時刻Tに基準メッセージが受信されると、基準メッセージを基準(0番目)としたときのn番目のメッセージの受信期間は、T+100ms×n±40msと計算される。
基準更新処理部23は、送受信部11を介して受信した周期メッセージから基準メッセージを選択し、基準メッセージの受信時刻を基準時刻33として、基準メッセージに含まれているIDと対応付けて記録する。図7に基準時刻33の記録例を示す。図7の例では、ID=0x123を含む基準メッセージを攻撃検知装置10が受信した時刻は0msである。
計算部21は、基準時刻33が更新されると、送信条件31に記録されている送信周期とマージンを用いて、IDごとに、受信予測34を生成する。図7には、ID=0x123の周期メッセージについて生成された受信予測34の例を示している。基準メッセージが0msに受信されているので、基準メッセージを0番目のメッセージとすると、基準メッセージからn番目に受信する周期メッセージを受信可能な期間(受信期間)は、0ms+100ms×n±40msとなる。従って、基準メッセージの次に受信するID=0x123の周期メッセージの受信期間は、60ms〜140msとなる。同様に、基準メッセージから2番目の周期メッセージの受信期間は160ms〜240ms、基準メッセージから3番目の周期メッセージの受信期間は260ms〜340msとなる。計算部21は、各周期メッセージについて基準メッセージを0番目のメッセージとしたときの基準メッセージからの受信順序と、受信期間を対応付けて、受信予測34に記録する。
図8は、第1の実施形態にかかる攻撃検知方法の例を説明する図である。なお、図8では、攻撃が行われていない場合の例を説明する。図8の例では、攻撃検知装置10は図7に示す情報を保持しており、ID=0x123の周期メッセージに対する攻撃を監視しているものとする。
攻撃検知装置10の送受信部11は、0msに周期メッセージM20を受信したとする。これまでにID=0x123を含むメッセージを受信していない場合、基準更新処理部23は、周期メッセージM20をID=0x123の基準メッセージとして受信状況情報32に記録するとともに、周期メッセージM20の受信時刻を基準時刻33として記録する。計算部21は、図7を参照しながら説明した処理により、ID=0x123の周期メッセージについての受信予測34(図7)を生成する。
次に、送受信部11は、ID=0x123を含む周期メッセージM21を、101msに受信したとする。判定部22は、周期メッセージM21のIDが0x123であることから、周期メッセージM21をID=0x123についての、基準メッセージから1番目のメッセージとする。判定部22は、周期メッセージM21の受信時刻を受信状況情報32に記録する。さらに、判定部22は、受信予測34に含まれている受信順序=1の場合の受信期間中に、周期メッセージM21の受信時刻が含まれているかを判定する。ここでは、基準メッセージから1番目のメッセージの受信期間は、図8中の期間Z21に示すように、60ms〜140msである。判定部22は、周期メッセージM21の受信時刻が101msであり、期間Z21に含まれていると判定する。そこで、判定部22は、攻撃が検出されていないと判定する。
240msにおいて、送受信部11は、ID=0x123を含む周期メッセージM22を受信したとする。判定部22は、周期メッセージM22のIDが0x123であることから、周期メッセージM22をID=0x123の基準メッセージから2番目のメッセージとする。判定部22は、周期メッセージM22の受信時刻を受信状況情報32に記録する。さらに、判定部22は、受信予測34に含まれている受信順序=2の場合の受信期間である160ms〜240ms(図8中の期間Z22)の中に、周期メッセージM22の受信時刻が含まれているかを判定する。ここでは、周期メッセージM22の受信時刻が240msであるため、判定部22は、期間Z22の間に基準メッセージから2番目の周期メッセージM22を受信したと判定する。そこで、判定部22は、攻撃が検出されていないと判定する。
301msにおいて、送受信部11は、ID=0x123を含む周期メッセージM23を受信したとする。判定部22は、周期メッセージM23のIDが0x123であることから、周期メッセージM23をID=0x123の基準メッセージから3番目のメッセージとする。判定部22は、周期メッセージM23の受信時刻を受信状況情報32に記録する。このため、攻撃検知装置10は、周期メッセージM23を受信した時点では、図8に示す受信状況情報32を保持する。判定部22は、受信予測34に含まれている受信順序=3の場合の受信期間である260ms〜340ms(図8中の期間Z23)の中に、周期メッセージM23の受信時刻が含まれているかを判定する。ここでは、周期メッセージM23の受信時刻が301msであるため、判定部22は、期間Z23の間に基準メッセージから3番目の周期メッセージM23を受信したと判定する。そこで、判定部22は、攻撃が検出されていないと判定する。
図9は、攻撃の検出例を説明する図である。図9の例でも、攻撃検知装置10は図7に示す情報を保持しており、ID=0x123の周期メッセージに対する攻撃を監視しているものとする。図9の例でも、攻撃検知装置10は、0msに周期メッセージM20を受信し、周期メッセージM20をID=0x123の基準メッセージとするものとする。
次に、送受信部11は、ID=0x123を含む周期メッセージM21を、101msに受信したとする。すると、周期メッセージM21を受信したときの処理として図8を参照しながら説明した処理と同様の処理が行われ、判定部22は、攻撃を検出していないと判定する。
161msにおいて、送受信部11は、ID=0x123を含むメッセージAT2を受信したとする。メッセージAT2はID=0x123を用いた攻撃であるとする。判定部22は、メッセージAT2のIDが0x123であることから、メッセージAT2をID=0x123の基準メッセージから2番目のメッセージとする。判定部22は、メッセージAT2の受信時刻を受信状況情報32に記録する。さらに、判定部22は、受信予測34に含まれている受信順序=2の場合の受信期間である160ms〜240ms(図9中の期間Z22)の中に、メッセージAT2の受信時刻が含まれているかを判定する。ここでは、メッセージAT2の受信時刻が161msであるため、判定部22は、期間Z22の間に基準メッセージから2番目のメッセージAT2を受信したと判定する。そこで、判定部22は、攻撃を検出していないと判定する。
240msにおいて、送受信部11は、ID=0x123を含む周期メッセージM22を受信したとする。判定部22は、周期メッセージM22のIDが0x123であることから、周期メッセージM22をID=0x123の基準メッセージから3番目のメッセージとする。判定部22は、周期メッセージM22の受信時刻を受信状況情報32に記録する。判定部22は、受信予測34に含まれている受信順序=3の場合の受信期間である260ms〜340ms(図9中の期間Z23)の中に、周期メッセージM22の受信時刻が含まれているかを判定する。ここでは、周期メッセージM22の受信時刻が240msであるため、判定部22は、基準メッセージから3番目の周期メッセージM23の受信時刻は受信期間Z23に含まれていないと判定する。そこで、判定部22は、攻撃を検出したと判定する。
図10は、攻撃検知装置10の処理の例を説明するフローチャートである。計算部21は、攻撃の検出対象のIDについて、送信周期TとマージンMを送信条件31から取得する(ステップS11)。攻撃検出の対象となるIDについての1つ目の周期メッセージを送受信部11が受信すると、基準更新処理部23は、メッセージの受信時刻t0を取得する(ステップS12)。基準更新処理部23は、メッセージの受信時刻t0を基準時刻33として格納する。計算部21は、ステップS11で取得した情報と受信時刻t0を用いて、n個分の受信期間(r(1)〜r(n))を計算するとともに、変数kを1に設定する(ステップS13)。
次に、送受信部11が攻撃の検出対象のIDを含むメッセージを受信すると、判定部22は、そのメッセージの受信時刻をt(k)に設定する(ステップS14)。判定部22は、受信時刻t(k)がr(k)の範囲内であるかを判定する(ステップS15)。受信時刻t(k)がr(k)の範囲内である場合、判定部22は、k番目のメッセージによっては攻撃を検出していない(ステップS15でYes)。そこで、判定部22は、変数kを1つインクリメントして、ステップS14に戻る(ステップS16)。
一方、受信時刻t(k)がr(k)の範囲内にない場合、判定部22は、攻撃を検知する(ステップS15でNo、ステップS17)。
なお、判定部22は、攻撃として送信されたメッセージがいずれのメッセージであるかは特定しないが、攻撃が発生していることを検出している。すなわち、攻撃に使用されるフレームが周期メッセージに混じった場合、受信した周期メッセージについての基準メッセージからの受信順序は、攻撃に使用されるフレームが周期メッセージに混じっていない場合に得られる受信順序とは異なってくる。ここで、受信予測34の計算では、攻撃に使用されるフレームが含まれない場合について、周期メッセージの受信期間が、各周期メッセージについての基準メッセージからの受信順序に対応付けて求められている。攻撃に使用されるフレームが混じると、攻撃が発生した後では、周期メッセージの基準メッセージからの受信順序は、攻撃がない場合と異なる。このため、周期メッセージの受信時刻が、その周期メッセージの受信順序に対応する受信期間に入らなくなり、判定部22は、攻撃を検出できる。
図11は、第1の実施形態にかかる攻撃検知方法と他の検知方法の比較例を説明する図である。ケースC12は第1の実施形態にかかる攻撃検知方法での処理の例であり、ケースC11は比較対象となる他の攻撃検知方法での処理の例である。ケースC11とケースC12のいずれでも、ID=0x123を含むフレームとして、周期メッセージM20、周期メッセージM21、攻撃用フレームAT2、周期メッセージM22、周期メッセージM23が送信されているとする。また、いずれのケースでも、これらのフレームは以下のタイミングで受信されているとする。
周期メッセージM20:0ms
周期メッセージM21:101ms
攻撃用フレームAT2:161ms
周期メッセージM22:240ms
周期メッセージM23:301ms
また、いずれのケースでも、送信周期は100ms、マージンは40msに設定されているものとする。
ケースC11では、2つのフレームの受信時刻の間が送信周期±マージンであれば、攻撃が発生していないと判定するものとする。送信周期±マージンは60ms〜140msである。検出処理を行う装置は、周期メッセージM21を受信すると、周期メッセージM20から101msでメッセージを受信しており、60ms<101ms<140msであるため、攻撃が発生していないと判定する。検出処理を行う装置は、攻撃用フレームAT2を受信すると、周期メッセージM21から60msで攻撃用フレームAT2を受信しており、60ms≦60ms<140msであるため、攻撃が発生していないと判定する。検出処理を行う装置は、周期メッセージM22を受信すると、攻撃用フレームAT2から79msで周期メッセージM22を受信しており、60ms<79ms<140msであるため、攻撃が発生していないと判定する。検出処理を行う装置は、周期メッセージM23を受信すると、周期メッセージM22から61msで周期メッセージM23を受信しており、60ms<61ms<140msであるため、攻撃が発生していないと判定する。このように、ケースC11の検出方法では、マージンを広くとっているために、攻撃用フレームAT2による攻撃が起こっていることを見逃してしまう。
第1の実施形態にかかる攻撃検出方法では、ケースC12に示すように、周期メッセージM20を基準メッセージとして、後続の受信期間を予測する。このため、図9を参照しながら説明したとおり、基準メッセージから1番目のメッセージの受信期間として期間Z21、基準メッセージから2番目のメッセージの受信期間として期間Z22、基準メッセージから3番目のメッセージの受信期間として期間Z23が計算される。すると、攻撃用フレームAT2が基準メッセージから2番目のメッセージとして扱われ、攻撃用フレームAT2を期間Z22中に受信しているので、攻撃用フレームAT2の受信時点では、攻撃検知装置10は攻撃を検出しない。しかし、攻撃用フレームAT2の受信によって、周期メッセージM22が基準メッセージから3番目のメッセージとして扱われるようになる。このため、周期メッセージM22の受信時刻は、基準メッセージから3番目のメッセージの受信期間であるZ23と比較されることになる。しかし、周期メッセージM22の受信時刻は、期間Z23に含まれていない。そこで、攻撃検知装置10は、ID=0x123を含むフレームを用いた攻撃が行われていると判定できる。
このように、攻撃検知装置10は、基準とするあるメッセージから、複数個後のメッセージの受信期間を計算するとともに、メッセージの受信時刻が、受信メッセージの基準メッセージからの受信順序に対応付けられた受信期間に含まれているかを判定する。このため、マージンを広くとっても、攻撃検知装置10は、攻撃が行われていることを検出することができる。
<第2の実施形態>
第2の実施形態では、基準更新処理部23が定期的に基準メッセージを変更する場合の例を説明する。
図12は、第2の実施形態にかかる攻撃検知方法の例を説明する図である。図12は、1つの基準メッセージから10個までのメッセージの受信期間を予測し、基準メッセージから10個目のメッセージを新たな基準メッセージにする例を示す。周期メッセージを基準として、計算部21は、1個目から10個目のメッセージの各々の受信期間を計算する。このときの計算部21での計算方法は、図8を参照しながら説明した計算と同様である。図12は、基準メッセージから9個目のメッセージ以降のメッセージの受信の様子を図示している。基準メッセージから9番目のメッセージがM31であるとする。計算部21は、基準メッセージから9個目のメッセージの受信期間として、Z31を計算する。同様に、計算部21は、基準メッセージから10個目のメッセージの受信期間として、Z32を計算する。
基準更新処理部23は、メッセージが送受信部11で受信されるたびに、IDごとに、基準メッセージから何個目のメッセージを受信しているかをカウントする。基準更新処理部23は、基準メッセージから10個目の周期メッセージM32の受信を検出すると、周期メッセージM32を新たな基準メッセージに設定するとともに、基準時刻33を周期メッセージM32の受信時刻に更新する。
計算部21は、基準時刻33が更新されると、新たな基準時刻33を用いて、予め決められた数の受信期間を計算する。従って、図12の例では、計算部21は、周期メッセージM32から10個目までの受信期間を計算する。例えば、計算部21は、新たな基準メッセージである周期メッセージM32から1つ目のメッセージの受信期間を期間Z33、新たな基準メッセージである周期メッセージM32から2つ目のメッセージの受信期間をZ34と計算したとする。
一方、新たに周期メッセージM33が送受信部11で受信されたとする。判定部22は周期メッセージM33を、新たな基準メッセージである周期メッセージM32から1つ目のメッセージとして認識し、受信時刻が期間Z33に含まれているかを判定する。図12の例では、周期メッセージM33の受信時刻は期間Z33に含まれているので、周期メッセージM33の受信時点では攻撃は検出されない。次に、周期メッセージM34が送受信部11で受信されたとする。判定部22は周期メッセージM34を、新たな基準メッセージである周期メッセージM32から2つ目のメッセージとして認識し、受信時刻が期間Z34に含まれているかを判定する。図12の例では、周期メッセージM34の受信時刻は期間Z34に含まれているので、周期メッセージM34の受信時点では攻撃は検出されない。以後も同様に処理が行われる。
図13は、攻撃検知装置10の処理の例を説明するフローチャートである。計算部21は、攻撃の検出対象のIDについて、送信周期TとマージンMを送信条件31から読み込み、さらに、基準メッセージの変更までに受信するメッセージ数Yを設定する(ステップS21)。攻撃検出の対象となるIDについての1つ目の周期メッセージを送受信部11が受信すると、基準更新処理部23は、メッセージの受信時刻t0を取得する(ステップS22)。基準更新処理部23は、メッセージの受信時刻t0を基準時刻33として格納する。計算部21は、ステップS21で取得した情報と受信時刻t0を用いて、Y個分の受信期間(r(1)〜r(Y))を計算するとともに、変数kを1に設定する(ステップS23)。
次に、送受信部11が攻撃の検出対象のIDを含むメッセージを受信すると、判定部22は、そのメッセージの受信時刻をt(k)に設定する(ステップS24)。判定部22は、受信時刻t(k)がr(k)の範囲内であるかを判定する(ステップS25)。受信時刻t(k)がr(k)の範囲内である場合、判定部22は、k番目のメッセージによっては攻撃を検出していない(ステップS25でYes)。そこで、判定部22は、変数kがYと等しいかを判定する(ステップS26)。変数kがYと等しくない場合、攻撃検知装置10は、Y個分のメッセージを受信していない(ステップS26でNo)。そこで、判定部22は、変数kを1つインクリメントして、ステップS24に戻る(ステップS27)。
一方、変数kがYと等しい場合、攻撃検知装置10は、Y個分のメッセージを受信している(ステップS26でYes)。そこで、基準更新処理部23は、Y個目のメッセージの受信時刻t(Y)を基準メッセージの受信時刻t0に設定し、ステップS23に戻る(ステップS28)。
第2の実施形態においても、受信時刻t(k)がr(k)の範囲内にない場合、判定部22は、攻撃を検出する(ステップS25でNo、ステップS29)。
このように、第2の実施形態では、基準メッセージが定期的に変更される。従って、誤差を所定以下に抑えることができる。例えば、攻撃検知装置10での時刻測定がミリ秒オーダーで行われているのに対し、メッセージの送信周期がマイクロ秒オーダーで行われている場合であっても、誤差が所定量以上にわたって蓄積されることを防ぐことができる。このため、誤差の蓄積による誤検出や攻撃の見逃しが防止される。
<第3の実施形態>
第3の実施形態では、計算部21において、2つ以上後のメッセージのうちの1つの受信期間を予測し、メッセージごとに受信期間の計算の起点を変更する場合の処理を説明する。
図14は、第3の実施形態にかかる攻撃検知方法の例を説明する図である。図14の例では、受信したメッセージと同じIDのメッセージのうち、3つ後に受信すると予測される周期メッセージの受信期間を予測する場合の例を説明する。なお、図14では、周期メッセージM41が基準メッセージに設定されているとする。
周期メッセージM41を送受信部11が受信すると、計算部21は、周期メッセージM41の3つ後の周期メッセージの受信期間を計算する。受信期間の計算方法は第1の実施形態と同様である。図14の例では、計算部21は、周期メッセージM41の3つ後の周期メッセージの受信期間としてZ44を計算したとする。計算部21は、計算した結果を受信予測34として記録する。このとき、Z44は、基準メッセージから3つ目のメッセージの受信予測として記録される。一方、判定部22は、周期メッセージM41の判定に使用する受信予測が得られていないので、判定処理を行わない。
次に、送受信部11は、攻撃用フレームAT3を受信したとする。この場合、攻撃用フレームAT3に処理対象のIDが含まれているため、攻撃用フレームAT3は、基準フレームから1番目の周期メッセージとして扱われる。そこで、計算部21は、攻撃用フレームAT3の3つ後の周期メッセージの受信期間としてZ45を計算し、受信予測34に記録する。このとき、Z45は、基準メッセージから4つ目のメッセージの受信予測として記録される。この場合も、判定部22は、攻撃用フレームAT3の判定に使用する受信予測が得られていないので、判定処理を行わない。
その後、送受信部11は、周期メッセージM42を受信したとする。基準フレームの後に攻撃用フレームAT2が攻撃検知装置10で受信されていることから、周期メッセージM42は、基準フレームから2番目の周期メッセージとして扱われる。計算部21は、周期メッセージM42の3つ後の周期メッセージの受信期間としてZ46を計算し、受信予測34に記録する。周期メッセージM42に基づいて計算された受信期間(Z46)は、周期メッセージM42が基準フレームから2番目の周期メッセージとして扱われるため、基準メッセージから5つ目のメッセージの受信予測として記録される。判定部22は、周期メッセージM42の判定に使用する受信予測が得られていないので、判定処理を行わない。
送受信部11が周期メッセージM43を受信する。ここで、周期メッセージM41、攻撃用フレームAT3、周期メッセージM42、周期メッセージM43のいずれも攻撃検出対象のIDを含んでいるので、判定部22は、周期メッセージM43を基準メッセージから3つ目の周期メッセージとして扱う。そこで、判定部22は、周期メッセージM43の受信時刻が期間Z44に含まれているかを判定する。図14の例では、周期メッセージM43の受信時刻が期間Z44に含まれていないので、判定部22は、攻撃を検出できる。
図15は、攻撃検知装置10の処理の例を説明するフローチャートである。計算部21は、変数iを0に設定する(ステップS41)。計算部21は、送信条件31を用いて、処理対象のIDを含むメッセージについて、送信周期、マージン、受信予測を計算するメッセージから受信メッセージまでのメッセージ数Zを設定する(ステップS42)。送受信部11でメッセージを受信すると、計算部21は、そのメッセージの受信時刻をt(i)とする(ステップS43)。計算部21は、i+Z個先のメッセージの受信期間r(i+Z)を計算する(ステップS44)。ステップS44において、r(i+Z)は、t(i)+(T×Z)−Mからt(i)+(T×Z)+Mまでの期間である。
判定部22は、変数iがZ以上かを判定する(ステップS45)。変数iがZ未満の場合、判定部22は、変数iを1つインクリメントしてステップS43に戻る(ステップS45でNo、ステップS47)。
変数iがZ以上の場合、判定部22は、t(i)が受信期間r(i)の範囲内であるかを判定する(ステップS45でYes、ステップS46)。t(i)が受信期間r(i)の範囲内である場合、判定部22は、変数iを1つインクリメントしてステップS43に戻る(ステップS46でYes、ステップS47)。一方、t(i)が受信期間r(i)の範囲内ではない場合、判定部22は、攻撃が発生したことを検出する(ステップS46でNo、ステップS48)。
第3の実施形態では、受信期間の計算の起点となるメッセージがY個あり、受信のたびに一つずつ起点となるメッセージが更新されているといえる。従って、第3の実施形態では、第2の実施形態と同様に、誤差を所定以下に抑えることができる。
<第4の実施形態>
第4の実施形態では、計算部21において、基準メッセージから所定の値以上後のメッセージの受信期間を予測し、基準メッセージの次のメッセージの受信期間は計算しない場合の処理を説明する。
図16は、第4の実施形態にかかる攻撃検知方法の例を説明する図である。周期メッセージM51を送受信部11が受信すると、計算部21は、周期メッセージM51を基準メッセージに決定する。
計算部21は、周期メッセージM51の2つ後以降の複数の周期メッセージの受信期間を計算する。受信期間の計算方法は第1の実施形態と同様である。図16の例では、計算部21は、周期メッセージM51の2つ後の周期メッセージの受信期間としてZ53を計算し、周期メッセージM51の3つ後の周期メッセージの受信期間としてZ54を計算したとする。計算部21は、計算した結果を受信予測34として記録する。このとき、Z53は、基準メッセージから2つ目のメッセージの受信期間、Z54は、基準メッセージから3つ目のメッセージの受信期間として記録される。一方、判定部22は、周期メッセージM51の判定に使用する受信期間が得られていないので、判定処理を行わない。
次に、送受信部11は、攻撃用フレームAT4を受信したとする。攻撃用フレームAT4に処理対象のIDが含まれているため、判定部22は、攻撃用フレームAT4を基準メッセージM51から1つ目の周期メッセージとして扱う。この場合も、判定部22は、攻撃用フレームAT4の判定に使用する受信期間が得られていないので、判定処理を行わない。
その後、送受信部11は、周期メッセージM52を受信したとする。周期メッセージM52に処理対象のIDが含まれているため、判定部22は、周期メッセージM52を基準メッセージM51から2つ目の周期メッセージとして扱う。判定部22は、受信予測34を用いて、基準メッセージM51から2つ目の周期メッセージを受信すると予測する期間は、Z53に示す期間であることを取得する。ここで、基準メッセージM51から2つ目の周期メッセージと判定した周期メッセージM52の受信時刻は、Z53に示す期間に含まれていない。このため、判定部22は、攻撃が発生していることを検出できる。
以上説明したように第4の実施形態では、基準メッセージの次の周期メッセージについては受信期間を計算しない。このため、第4の実施形態では、第1の実施形態に比べて計算部21の処理負荷が低くなる。また、受信予測34を記憶するメモリ容量も第1の実施形態に比べて小さくできる。
<第5の実施形態>
第5の実施形態では、周期メッセージの各々に対して、その周期メッセージの受信期間の開始時刻を計算するが、受信期間の終了時刻は設定しないパターンについて説明する。
図17は、第5の実施形態にかかる攻撃検知方法の例を説明する図である。周期メッセージM61を送受信部11が受信すると、計算部21は、周期メッセージM61を基準メッセージに決定する。
計算部21は、周期メッセージM61の後に受信する周期メッセージについて、受信期間の開始時刻を計算する。n番目の周期メッセージの受信期間の開始時刻Ts(n)は、次式で計算される。
Ts(n)=T0+n×T−M
ここで、T0は基準メッセージの受信時刻であり、Tは周期メッセージの送信周期、Mはマージンであるとする。
図17では、図を見やすくするために、n=1〜3の場合のT0+n×Tに縦線を入れて示している。図17の例では、判定部22は、ID=0x123を含むメッセージのうち、基準メッセージからn番目のメッセージをT0+n×T−M以降に受信していれば、基準メッセージからn番目のメッセージは攻撃ではないと判定する。
以下、n=2のケースを例として説明する。計算部21は、周期メッセージM61の次に、攻撃用のフレームAT5を、T0+t1に受信したとする。ここで、攻撃用のフレームAT5にはID=0x123が含まれているとする。すると、判定部22は、攻撃用のフレームAT5を、ID=0x123での基準メッセージから1つ目の周期メッセージとして扱う。このとき、判定部22は、ID=0x123について基準メッセージからn番目のメッセージが未受信であるので、攻撃が発生しているかの判定を行わない。
次に、攻撃用のフレームAT5の受信からt2後に、周期メッセージM62を受信したとする。この場合、判定部22は、ID=0x123のフレームとして、基準フレームM61の後に、攻撃用のフレームAT5と周期メッセージM62を受信しているので、周期メッセージM62を基準フレームM61から2番目の周期メッセージとして扱う。このため、判定部22は、周期メッセージM62の受信時刻が、2番目の周期メッセージの受信期間の開始時刻であるT0+2T−M以降であるかを判定する。図17の例では、周期メッセージM62の受信時刻は、T0+Tであり、2番目の周期メッセージの受信期間の開始時刻(T0+2T−M)よりも前である。このため、判定部22は、周期メッセージM62の受信の際に、これまでに攻撃が行われていると判定する。なお、図17では、n=2の場合を例として説明したが、これは一例に過ぎない。すなわち、nは2以上の任意の整数に設定され得る。
図18は、攻撃検知装置10の処理の例を説明するフローチャートである。計算部21は、変数iを0に設定する(ステップS61)。計算部21は、送信条件31を用いて、処理対象のIDを含むメッセージについて、送信周期T、マージンM、受信予測を計算するメッセージから受信メッセージまでのメッセージ数Xを設定する(ステップS62)。送受信部11でメッセージを受信すると、計算部21は、そのメッセージの受信時刻をt(i)とする(ステップS63)。計算部21は、X個先のメッセージの受信期間の開始時刻r(i+X)を計算する(ステップS64)。ステップS64において、r(i+X)=t(i)+(T×X)−Mと計算される。
判定部22は、変数iがX以上かを判定する(ステップS65)。変数iがX未満の場合、判定部22は、変数iを1つインクリメントしてステップS63に戻る(ステップS65でNo、ステップS67)。
変数iがX以上の場合、判定部22は、t(i)が受信期間の開始時刻r(i)以降であるかを判定する(ステップS65でYes、ステップS66)。t(i)が受信期間の開始時刻r(i)以降である場合、判定部22は、変数iを1つインクリメントしてステップS63に戻る(ステップS66でYes、ステップS67)。一方、t(i)が受信期間の開始時刻r(i)以降ではない場合、判定部22は、攻撃が発生したことを検出する(ステップS66でNo、ステップS68)。
第5の実施形態では、基準メッセージより後に受信するメッセージの受信期間の開始時刻は計算するが終了時刻までは計算していない。このため、第5の実施形態では、第1の実施形態に比べて計算部21の処理負荷が低くなる。また、受信予測34を記憶するメモリ容量も第1の実施形態に比べて小さくできる。
<第6の実施形態>
第6の実施形態では、メッセージの受信時刻が受信順序に対応付けられた受信期間に含まれない場合に、基準メッセージからの受信順序のインクリメントを行わない実施形態を説明する。
図19は、攻撃の検出例を説明する図である。図19の例でも、攻撃検知装置10は図7に示す情報を保持しており、ID=0x123の周期メッセージに対する攻撃を監視しているものとする。図19では、攻撃検知装置10は、0msに周期メッセージM71を受信し、周期メッセージM71をID=0x123の基準メッセージとするものとする。計算部21は、図7を参照しながら説明した処理により、周期メッセージM71の受信時刻を基準として、ID=0x123の周期メッセージについての受信予測34(図7)を生成する。
次に、送受信部11は、ID=0x123を含む周期メッセージM72を、101msに受信したとする。判定部22は、周期メッセージM72のIDが0x123であることから、周期メッセージM72をID=0x123についての、基準メッセージから1番目のメッセージであると推測する。判定部22は、受信予測34に含まれている受信順序=1の場合の受信期間中に、周期メッセージM72の受信時刻が含まれているかを判定する。図19では、基準メッセージから1番目のメッセージの受信期間は、期間Z72や受信予測34(図7)に示すように、60ms〜140msである。判定部22は、周期メッセージM72の受信時刻が101msであるので、周期メッセージM72の受信時刻は、期間Z72に含まれていると判定する。そこで、判定部22は、攻撃が検出されていないと判定し、周期メッセージM72の受信時刻を受信状況情報32に記録する。
次に、161msにおいて、送受信部11は、ID=0x123を含むメッセージAT5を受信したとする。メッセージAT5はID=0x123を用いた攻撃であるとする。判定部22は、メッセージAT5のIDが0x123であることから、メッセージAT5をID=0x123の基準メッセージから2番目のメッセージであると推測する。すると、判定部22は、受信予測34に含まれている受信順序=2の場合の受信期間である160ms〜240ms(図19中の期間Z73)の中に、メッセージAT5の受信時刻が含まれているかを判定する。ここでは、メッセージAT5の受信時刻が161msであるため、判定部22は、期間Z73の間に基準メッセージから2番目のメッセージAT5を受信したと判定する。そこで、判定部22は、攻撃を検出していないと判定するとともに、メッセージAT5の受信時刻を受信状況情報32に記録する。従って、図19の例では、メッセージAT5の受信時点では、以下の情報が受信状況情報32として保持される。
基準メッセージ(受信順序=0)の受信時刻 :0ms
受信順序=1の周期メッセージの受信時刻 :101ms
受信順序=2の周期メッセージの受信時刻 :161ms
なお、受信状況情報32において、周期メッセージの受信順序は基準メッセージを基準として計算されている。また、受信順序=2の周期メッセージとして記録されている受信時刻は、攻撃に使用されているメッセージAT5の受信時刻である。
240msにおいて、送受信部11は、ID=0x123を含む周期メッセージM73を受信したとする。判定部22は、周期メッセージM73のIDが0x123であることから、周期メッセージM73をID=0x123の基準メッセージから3番目のメッセージであると推測する。判定部22は、受信予測34に含まれている受信順序=3の場合の受信期間である260ms〜340ms(図9中の期間Z74)の中に、周期メッセージM73の受信時刻が含まれているかを判定する。ここでは、周期メッセージM73の受信時刻が240msであるため、判定部22は、基準メッセージから3番目の周期メッセージM73の受信時刻は受信期間Z74に含まれていないと判定する。そこで、判定部22は、攻撃を検出したと判定する。
判定部22は、適宜、オペレータが運用する装置などに攻撃の検出を通知するための通知メッセージを生成しても良い。攻撃の検出が通知される場合、判定部22は、生成したメッセージを、送受信部11を介して、通知先に送信する。
攻撃を検出した場合、今回受信した周期メッセージM73か、その前に受信したメッセージのいずれかが攻撃用のメッセージであったことになる。すると、次に受信するメッセージが周期メッセージである場合は、基準メッセージから3番目の周期メッセージである。そこで、判定部22は、次回以降のメッセージについても攻撃判定を継続するために、次回の受信メッセージについての基準メッセージからの受信順序を変更しない。判定部22は、基準メッセージからの受信順序を変更しないために、周期メッセージM73の受信時刻を受信状況情報32に記録しない。このため、受信状況情報32は、以下の情報のままになる。
基準メッセージ(受信順序=0)の受信時刻 :0ms
受信順序=1の周期メッセージの受信時刻 :101ms
受信順序=2の周期メッセージの受信時刻 :161ms
その後、301msにおいて、送受信部11は、ID=0x123を含む周期メッセージM74を受信したとする。判定部22は、周期メッセージM74のIDが0x123であることと、受信状況情報32には受信順序=2のメッセージまでの記録しかないことから、周期メッセージM74をID=0x123の基準メッセージから3番目のメッセージと推測する。判定部22は、受信予測34に含まれている受信順序=3の場合の受信期間である260ms〜340ms(図19中の期間Z74)の中に、周期メッセージM74の受信時刻が含まれているかを判定する。図19の例では、周期メッセージM74の受信時刻が301msであるため、判定部22は、期間Z74の間に基準メッセージから3番目の周期メッセージM74を受信したと判定する。そこで、判定部22は、攻撃が検出されていないと判定する。
判定部22は、周期メッセージM74の受信時刻を受信状況情報32に記録する。このため、攻撃検知装置10は、周期メッセージM74を受信した時点では、以下の受信状況情報32を保持する。
基準メッセージ(受信順序=0)の受信時刻 :0ms
受信順序=1の周期メッセージの受信時刻 :101ms
受信順序=2の周期メッセージの受信時刻 :161ms
受信順序=3の周期メッセージの受信時刻 :301ms
このように、第6の実施形態では、いずれのメッセージが攻撃に使用されたメッセージであるかを特定しないものの、攻撃を検出できる。さらに、第6の実施形態では、攻撃を検出すると一時的に受信順序のカウントアップを中断するので、攻撃が発生した後に周期メッセージを続けて受信した場合であっても、基準メッセージや受信順序をリセットせずに攻撃の検出を継続できる。
図19を参照しながら説明した処理は一例であり、実装に応じて変更され得る。例えば、攻撃の検出に使用されたメッセージの受信記録も、受信時刻が受信順序の受信期間に入っているかの判定結果と共に受信状況情報32に含められていても良い。この場合、例えば、図19に示すように、メッセージM71、M72、攻撃メッセージAT5、メッセージM73を受信したときの受信状況情報32は、以下の通りになる。
基準メッセージ(受信順序=0)の受信時刻 :0ms
受信順序=1の周期メッセージの受信時刻 :101ms
受信順序=2の周期メッセージの受信時刻 :161ms
受信順序=3の周期メッセージの受信時刻 :240ms(判定結果NG)
このため、メッセージM74を受信したときに受信状況情報32には受信順序=3のメッセージの記録があるものの、判定結果がNGとなっていることから、判定部22は、メッセージM74を受信順序=3の周期メッセージとして扱う。このため、メッセージM74についての判定結果はOKとなり、受信状況情報32は以下のように更新される。
基準メッセージ(受信順序=0)の受信時刻 :0ms
受信順序=1の周期メッセージの受信時刻 :101ms
受信順序=2の周期メッセージの受信時刻 :161ms
受信順序=3の周期メッセージの受信時刻 :240ms(判定結果NG)
受信順序=3の周期メッセージの受信時刻 :301ms
以後の処理は、攻撃の検出に使用されたメッセージの受信記録が受信状況情報32に含まれない場合と同様である。
図19では、周期メッセージの後に1回の攻撃が検出されるケースについて説明したが、攻撃の検出頻度は任意である。例えば、受信時刻が推測された受信順序の受信期間に入った場合をOK、受信時刻が推測された受信順序の受信期間に入っていない場合をNGと表わすとする。このとき、判定部22の判定結果がOK、NG、NG、NGとなったとする。図19を参照しながら説明したように、NGと判定されている間は、受信順序はカウントアップされない。このため、攻撃検知装置10が2番目に受信したメッセージ(最初にNGと判定されたメッセージ)から4番目に受信したメッセージまでは、いずれも2番目の周期メッセージであると推測される。さらに4番目のメッセージでもNGと判定されるので、攻撃検知装置10が5番目に受信するメッセージも、判定部22によって、2番目の周期メッセージであると推測される。このため、5番目に受信するメッセージが、予測された期間中に受信された周期メッセージである場合、判定結果は、OK、NG、NG、NG、OKとなり得る。
図20は、攻撃検知装置10の処理の例を説明するフローチャートである。図20では、定数nと変数kを用いる。定数nは、計算部21が計算する受信期間の数である。変数kは、周期メッセージの受信順序をカウントするために用いる変数である。ステップS81〜S85の処理は、図10を参照しながら説明したステップS11〜S15の処理と同様である。
受信時刻t(k)がr(k)の範囲内である場合、判定部22は、k番目のメッセージによっては攻撃を検出していない(ステップS85でYes)。そこで、判定部22は、変数kが定数n以上であるかを判定する(ステップS86)。変数kが定数n未満の場合、攻撃検知装置10は、n個分のメッセージを受信していない(ステップS86でNo)。そこで、判定部22は、変数kを1つインクリメントして、ステップS84に戻る(ステップS87)。
一方、変数kが定数n以上の場合、攻撃検知装置10は、n個分のメッセージを受信している(ステップS86でYes)。そこで、基準更新処理部23は、k個目のメッセージの受信時刻t(k)を基準メッセージの受信時刻t0に設定し、ステップS83に戻る(ステップS88)。
一方、受信時刻t(k)がr(k)の範囲内にない場合、判定部22は、攻撃を検知する(ステップS85でNo、ステップS89)。判定部22は、適宜、攻撃の検知を通知する処理を行い、その後、ステップS84に戻る。なお、ステップS85でNoと判定された場合には、受信順序をインクリメントしない。換言すると、受信メッセージの受信順序は、攻撃の検出時には一時的に無効にされている。
図20は一例であり、実装に応じて処理の手順が変更され得る。例えば、変数kが定数n以上の場合(ステップS86でYes)、ステップS88の処理を行わずに、ステップS82に戻るように変形されても良い。このように変形された場合は、n個分のメッセージを攻撃検知装置10が受信した後、次に受信するメッセージを基準として、攻撃の検出が行われる。
さらに、図20を参照しながら説明したように、変数kを用いることによって周期メッセージの受信順序がカウントされる場合、判定部22は、図19を参照しながら説明したように受信状況情報32を参照しなくても、変数kを用いて受信順序を特定できる。この場合、受信状況情報32は生成されないように変形されても良い。
第6の実施形態では、判定部22は、攻撃を検出した時点で、受信メッセージの受信順序を一時的に無効にすることにより、検出済みの攻撃に使用されたメッセージの受信によって発生した受信順序のずれを解消している。従って、第6の実施形態では、攻撃の検出後に、検出済みの攻撃に使用されたメッセージによる周期メッセージの受信順序のずれが解消されることにより、次回以降の周期メッセージを装った攻撃の検出が継続できる。
<その他>
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
例えば、図8では、複数のメッセージについての受信期間をまとめて計算して、受信予測34に記録する場合を説明したが、受信予測34には、2つ以上後に受信する可能性のあるメッセージについての受信期間のみが記録されていても良い。この場合、計算部21は。第3および第5の実施形態で説明したように、1つのメッセージの受信に伴って1つのメッセージの受信期間を計算する。第1、第2の実施形態にも適用可能であり、基準時刻の再選択を行うまでの受信個数をn個とした場合、n個目だけの受信期間を持ち、1個目〜n−1個目までの受信の際には、受信個数をカウントするだけでもよい。
以上の説明では、1つのIDについての攻撃の検出処理を説明したが、1台の攻撃検知装置10において、並行して複数のIDに対する攻撃の検出処理が行われても良い。この場合、攻撃検知装置10は、図5に示すように、複数のIDのメッセージを並行して受信するので、受信したメッセージのIDごとに、送信条件31、受信状況情報32、基準時刻33、受信予測34などの情報を記憶する。
攻撃検知装置10は、さらに、オペレータが操作する操作端末と通信しても良い。この場合、攻撃検知装置10は、送信条件31などの情報を、操作端末を介して取得することができる。
以上の説明では、標準CANの場合を例として攻撃検知装置10の動作の例を説明したが、通信に使用されるデータフレームが拡張仕様の場合でも、同様に処理が行われる。さらに、ネットワークがCAN FD(CAN with Flexible Data rate)であっても、同様に攻撃検知装置10は、攻撃を検出できる。
上述の第1〜第5の実施形態を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
ネットワーク中の通信装置から周期的に送信されるメッセージを受信する送受信部と、
受信したメッセージから選択した基準メッセージ中の識別情報を含むメッセージについて、前記基準メッセージより2周期以上後に送信されるメッセージを受信する受信期間を、前記識別情報で識別されるメッセージの送信周期を用いて計算する計算部と、
前記受信期間を、前記基準メッセージを基準としたときの、前記受信期間に受信すると予想されるメッセージの受信順序に対応付けて記憶する記憶部と、
前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間に含まれない場合、前記ネットワークに対する攻撃を検出したと判定する判定部
を備えることを特徴とする攻撃検知装置。
(付記2)
前記計算部は、前記基準メッセージの受信時刻と前記送信周期を用いて、前記基準メッセージより2周期以上後に送信される複数のメッセージの受信期間を計算する
ことを特徴とする付記1に記載の攻撃検知装置。
(付記3)
前記計算部は、
前記基準メッセージより後に受信した第1の受信メッセージの受信時刻と、前記送信周期を用いて、前記第1の受信メッセージから所定の数だけ後に受信する第2の受信メッセージの受信期間を計算し、
前記第2の受信メッセージについて計算した受信期間を、前記基準メッセージを基準としたときの前記第2の受信メッセージの受信順序に対応付ける
ことを特徴とする付記1に記載の攻撃検知装置。
(付記4)
前記計算部は、前記基準メッセージより2周期以上後に送信されるメッセージの各々について、当該メッセージの受信期間の開始時刻を計算し、
前記判定部は、前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間の開始時刻よりも前である場合、前記ネットワークに対する攻撃を検出したと判定する
ことを特徴とする付記1に記載の攻撃検知装置。
(付記5)
前記判定部は、受信メッセージの受信時刻が、受信順序に対応付けられた受信期間に含まれない場合、当該受信メッセージの受信順序を無効にする
ことを特徴とする付記1に記載の攻撃検知装置。
(付記6)
ネットワーク中の通信装置から周期的に送信されるメッセージを受信し、
受信したメッセージから選択した基準メッセージ中の識別情報を含むメッセージについて、前記基準メッセージより2周期以上後に送信されるメッセージを受信する受信期間を、前記識別情報で識別されるメッセージの送信周期を用いて計算し、
前記受信期間を、前記基準メッセージを基準としたときの、前記受信期間に受信すると予想されるメッセージの受信順序に対応付けて記憶し、
前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間に含まれない場合、前記ネットワークに対する攻撃を検出したと判定する
処理を検知装置が行うことを特徴とする攻撃検知方法。
(付記7)
前記検知装置は、前記基準メッセージの受信時刻と前記送信周期を用いて、前記基準メッセージより2周期以上後に送信される複数のメッセージの受信期間を計算する
ことを特徴とする付記6に記載の攻撃検知方法。
(付記8)
前記検知装置は、
前記基準メッセージより後に受信した第1の受信メッセージの受信時刻と、前記送信周期を用いて、前記第1の受信メッセージから所定の数だけ後に受信する第2の受信メッセージの受信期間を計算し、
前記第2の受信メッセージについて計算した受信期間を、前記基準メッセージを基準としたときの前記第2の受信メッセージの受信順序に対応付ける
ことを特徴とする付記6に記載の攻撃検知方法。
(付記9)
前記検知装置は、
前記基準メッセージより2周期以上後に送信されるメッセージの各々について、当該メッセージの受信期間の開始時刻を計算し、
前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間の開始時刻よりも前である場合、前記ネットワークに対する攻撃を検出したと判定する
ことを特徴とする付記6に記載の攻撃検知方法。
(付記10)
前記検知装置は、受信メッセージの受信時刻が、受信順序に対応付けられた受信期間に含まれない場合、当該受信メッセージの受信順序を無効にする
ことを特徴とする付記6に記載の攻撃検知方法。
(付記11)
ネットワーク中の通信装置から周期的に送信されるメッセージを受信し、
受信したメッセージから選択した基準メッセージ中の識別情報を含むメッセージについて、前記基準メッセージより2周期以上後に送信されるメッセージを受信する受信期間を、前記識別情報で識別されるメッセージの送信周期を用いて計算し、
前記受信期間を、前記基準メッセージを基準としたときの、前記受信期間に受信すると予想されるメッセージの受信順序に対応付けて記憶し、
前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間に含まれない場合、前記ネットワークに対する攻撃を検出したと判定する
処理を検知装置に行わせることを特徴とする攻撃検知プログラム。
(付記12)
前記基準メッセージの受信時刻と前記送信周期を用いて、前記基準メッセージより2周期以上後に送信される複数のメッセージの受信期間を計算する
処理を前記検知装置に行わせることを特徴とする付記11に記載の攻撃検知プログラム。
(付記13)
前記基準メッセージより後に受信した第1の受信メッセージの受信時刻と、前記送信周期を用いて、前記第1の受信メッセージから所定の数だけ後に受信する第2の受信メッセージの受信期間を計算し、
前記第2の受信メッセージについて計算した受信期間を、前記基準メッセージを基準としたときの前記第2の受信メッセージの受信順序に対応付ける
処理を前記検知装置に行わせることを特徴とする付記11に記載の攻撃検知プログラム。
(付記14)
前記基準メッセージより2周期以上後に送信されるメッセージの各々について、当該メッセージの受信期間の開始時刻を計算し、
前記識別情報を含む受信メッセージの受信時刻が、前記基準メッセージを基準としたときの前記受信メッセージの受信順序に対応付けられた受信期間の開始時刻よりも前である場合、前記ネットワークに対する攻撃を検出したと判定する
処理を前記検知装置に行わせることを特徴とする付記11に記載の攻撃検知プログラム。