図2は、本発明の実施形態に係わる攻撃検知装置が使用されるネットワークの一例を示す。図2に示すネットワーク100は、複数のECU(ECU0〜ECUk)を備える。複数のECUは、バスを介して互いに接続されている。そして、この実施例では、複数のECUは、CAN(Controller Area Network)システムを構成する。
各ECUは、バスを介してメッセージを送信することができる。このメッセージは、ネットワーク100の全てのECUにブロードキャストされる。このとき、メッセージは、送信元ノードにも到着する。また、各メッセージには、識別情報(ID)が付与されている。ここで、各ECUは、自分が取得すべきメッセージのIDを認識している。そして、各ECUは、受信メッセージのIDをチェックすることにより、必要なメッセージを取得する。なお、各ECUは、「通信装置」の一例である。
上記ネットワーク100において、複数のECUの中の1つに攻撃検知装置が実装される。図2に示す例では、ECU0に攻撃検知装置が実装されるものとする。攻撃検知装置は、ネットワーク100に対する攻撃を検知する。なお、以下の記載では、悪意あるメッセージを「攻撃メッセージ」と呼ぶことがある。
ECU1〜ECUkのうちの少なくとも1つのECUは、所定の周期でメッセージを送信する機能を備えている。図2に示す例では、ECU1は、識別情報ID_Aを含むメッセージを所定の周期で送信し、ECU2は、識別情報ID_Bを含むメッセージを所定の周期で送信し、ECU3は、識別情報ID_Cを含むメッセージを所定の周期で送信する。メッセージの送信周期は、IDごとに予め決められている。例えば、ID=0x123が付与されるメッセージは10m秒間隔で送信され、ID=0x456が付与されるメッセージは20m秒間隔で送信される。
なお、車載ネットワークにおいては、複数のECUは、車両を制御するために使用される。例えば、ID=0x123が付与されるメッセージは、アクセル開度を表すデータを伝送し、ID=0x456が付与されるメッセージは、ブレーキ踏込み角度を表すデータを伝送するものとする。
ネットワーク100において送信される各メッセージは、上述したように、ブロードキャストされる。よって、各ECUには、すべてのメッセージが到着する。なお、図2のタイミングチャートは、ECU1〜ECU3から送信されるメッセージがECU0に到着する状況を示している。
図3は、メッセージを伝送するフレームのフォーマットの例を示す。なお、F1は、一般仕様のフレームのフォーマット例を示し、F2は、拡張仕様で使用されるフレームのフォーマット例を示す。
一般仕様のフレームF1は、SOF(Start of Frame)、調停(arbitration)フィールド、コントロールフィールド、データフィールド、CRCフィールド、ACKフィールド、およびEOF(End of Frame)を含む。調停フィールドは、IDおよびRTR(Remote Transmission Request)を含む。IDは、メッセージを識別するための識別情報を表す。コントロールフィールドは、IDE(Identifier Extension)、予約ビット、DLC(Data Length Code)を含む。CRCフィールドは、CRCシーケンスおよびCRCデリミタを含む。ACKフィールドは、ACKスロットおよびACKデリミタを含む。なお、図3において各情報要素に対して表記されている値は、ビット長を表す。例えば、IDの長さは11ビットであり、データフィールドの長さは0〜64ビットの可変長である。
一般仕様のフレームF1と同様に、拡張仕様で使用されるフレームF2も、SOF、調停フィールド、コントロールフィールド、データフィールド、CRCフィールド、ACKフィールド、EOFを含む。ただし、拡張仕様では、より多くのビット数で識別情報が表される。
以下の記載では、一般仕様のフレームを利用してメッセージが伝送されるものとする。ただし、本発明の実施形態に係わる攻撃検知方法は、拡張仕様のフレームを利用してメッセージが伝送されるケースにも適用される。また、本発明の実施形態に係わる攻撃検知方法は、CAN−FDと呼ばれる規格にも対応可能である。
図4は、攻撃検知装置が実装されるECUのハードウェア構成の一例を示す。ECU200は、この例では、CANトランシーバ201、CANコントローラ202、処理回路203を含む。処理回路203は、プロセッサ204およびメモリ205を含む。
CANトランシーバ201は、図3に示すフレームを送信および受信する機能を備える。CANコントローラ202は、CANトランシーバ201が受信したフレームからデータを抽出すると共に、そのフレームの受信時刻を測定する。なお、CANコントローラ202は、受信フレームに対してCRCチェックを実行してもよい。また、CANコントローラ202は、送信フレームにデータを格納することができる。プロセッサ204は、メモリ205に格納されているプログラムを実行することにより、攻撃検知を実現する。
<第1の実施形態>
図5は、本発明の第1の実施形態に係わる攻撃検知装置の一例を示す。なお、第1の実施形態に係わる攻撃検知装置10は、この実施例では、図2に示すネットワーク100に接続される複数のECUの中の任意のECU(例えば、ECU0)に実装される。
攻撃検知装置10は、この実施例では、送受信部20、制御部30、記憶部40を備える。制御部30は、基準メッセージ指定部31、検知期間設定部32、判定部33、再設定タイミング決定部34を備える。記憶部40は、送信条件41、基準時刻情報42、受信状況情報43、検知期間情報44を保持する。なお、攻撃検知装置10は、図5に示していない他の機能または要素を備えていてもよい。
送信条件41は、ID毎に、ネットワーク100において送信されるメッセージの送信周期を表す。各IDの送信周期は、予め決められているものとする。また、送信条件41は、送信周期のマージンを含む。図6(a)に示す例では、ID=0x123により識別されるメッセージが、100m秒間隔で送信されることが記録されている。また、送信周期のマージンとして40m秒が設定されている。なお、基準時刻情報42、受信状況情報43、検知期間情報44については後で記載する。
送受信部20は、ネットワーク100に接続される各ECUにメッセージを送信する。また、送受信部20は、他のECUから送信されるメッセージを、ネットワーク100を介して受信する。各メッセージの受信時刻は、送受信部20により検出される。なお、送受信部20は、例えば、図4に示すCANトランシーバ201により実現される。
基準メッセージ指定部31は、ID毎に、送受信部20が受信したメッセージの中から基準メッセージを指定する。基準メッセージは、同じIDを有する他のメッセージの受信順序をカウントするための基準として使用される。
制御部30は、基準時刻情報42として、ID毎に、基準メッセージの受信時刻を記憶部40に記録する。図6(b)に示す例では、ID=0x123に対応する基準時刻として「ゼロ」が記録されている。また、制御部30は、受信状況情報43として、ID毎に、各受信メッセージの受信順序および受信時刻を記憶部40に記録する。受信順序は、各メッセージが基準メッセージからカウントして何番目の受信メッセージであるのかを表す。受信時刻は、各メッセージの受信時刻を表す。図6(c)に示す例では、基準メッセージおよび基準メッセージの後に攻撃検知装置10に到着する3個の受信メッセージについて受信順序および受信時刻が記録されている。
検知期間設定部32は、送信条件41および基準時刻情報42に基づいて、ID毎に、検知期間を設定する。この実施例では、検知対象の識別情報を含むメッセージの送信周期が100m秒であり、そのマージンが40m秒である。また、検知期間設定部32は、基準メッセージに対して3個の検知期間を設定するものとする。この場合、図7に示すように、検知期間Z1、Z2、Z3は、それぞれ、100±40m秒、200±40m秒、300±40m秒に設定される。各検知期間の範囲を表す検知期間情報44は、図6(d)に示すように、記憶部40に記録される。
判定部33は、ID毎に、受信メッセージの受信順序を検出する。すなわち、判定部33は、ID毎に、受信メッセージが基準メッセージからカウントして何番目のメッセージであるかを特定する。そして、判定部33は、検知期間情報44を参照し、各メッセージの受信時刻が対応する検知期間内に入っているか否かを判定する。すなわち、判定部33は、基準メッセージからカウントして1番目のメッセージの受信時刻が検知期間Z1の中に入っているか否かを判定する。同様に、2番目のメッセージの受信時刻が検知期間Z2の中に入っているか否かが判定され、3番目のメッセージの受信時刻が検知期間Z3の中に入っているか否かが判定される。そして、1以上のメッセージの受信時刻が対応する検知期間から外れているときは、判定部33は、ネットワーク100が攻撃されたと判定する。図7に示す例では、各メッセージM1、M2、M3の受信時刻は、それぞれ101m秒、200m秒、301m秒である。すなわち、各メッセージM1〜M3の受信時刻は、それぞれ対応する検知期間Z1〜Z3の中に入っている。よって、判定部33は、ネットワーク100が攻撃されていないと判定する。
基準メッセージ指定部31は、検知期間設定部32により設定された複数の検知期間のうちの最後の検知期間内に受信したメッセージを、次の検知動作のための基準メッセージとして指定する。図7に示す例では、検知期間Z3内に攻撃検知装置10が受信したメッセージM3が、次の検知動作のための基準メッセージとして指定される。
この後、検知期間設定部32は、新たな基準メッセージの受信時刻に対して複数の検知期間を設定する。具体的には、検知期間設定部32は、図8に示すように、メッセージM3を基準メッセージとして新たな検知期間Z4〜Z6を設定する。この場合、メッセージM3の受信時刻が301m秒なので、検知期間Z4、Z5、Z6の中心時刻は、それぞれ401m秒、501m秒、601m秒に設定される。そして、判定部33は、検知期間Z4〜Z6を用いてネットワーク100への攻撃をモニタする。
なお、記憶部40は、図4に示すメモリ205により実現される。また、基準メッセージ指定部31、検知期間設定部32、判定部33、再設定タイミング決定部34を含む制御部30は、図4に示すプロセッサ204がメモリ205に格納されている攻撃検知プログラムを実行することにより実現される。なお、再設定タイミング決定部34については後で説明する。
図9は、第1の実施形態においてネットワーク100への攻撃が検知されるケースの一例を示す。図9に示す例では、図7に示すメッセージM1〜M3に加えて、攻撃メッセージMXがネットワーク100に入力されている。この場合、攻撃検知装置10は、攻撃メッセージMXを2番目のメッセージとして処理し、メッセージM2を3番目のメッセージとして処理し、メッセージM3を4番目のメッセージとして処理する。
攻撃メッセージMXは、165m秒に攻撃検知装置10に到着する。すなわち、2番目のメッセージが検知期間Z2内に攻撃検知装置10に到着する。この場合、攻撃検知装置10は、攻撃メッセージMXを攻撃メッセージと判定しない。
この後、200m秒にメッセージM2が攻撃検知装置10に到着する。ここで、メッセージM2は、3番目のメッセージとして処理される。すなわち、攻撃検知装置10は、3番目のメッセージの受信時刻が3番目の検知期間Z3内に入っていないと判定する。この場合、攻撃検知装置10は、ネットワーク100が攻撃されたと判定する。このように、ネットワーク100に攻撃メッセージMXが挿入されると、攻撃検知装置10は、ネットワーク100が攻撃されたと判定することができる。
ただし、攻撃メッセージMXが挿入されるタイミングによっては、攻撃検知装置10の動作が不安定になることがある。具体的には、基準メッセージに対して設定される複数の検知期間の中の最後の検知期間内に攻撃メッセージが入力されると、攻撃検知装置10の動作が不安定になることがある。
図10は、ネットワーク100への攻撃が検知されないケースの一例を示す。この例では、メッセージM1、M2、M3は、それぞれ101m秒、200m秒、335m秒に攻撃検知装置10に到着する。また、攻撃メッセージMXは、265m秒に攻撃検知装置10に到着するものとする。
この場合、メッセージM1、M2、MXの受信時刻は、ぞれぞれ、対応する検知期間Z1、Z2、Z3内に入っている。よって、この時点で判定部33は、ネットワーク100が攻撃されたとは判定しない。また、基準メッセージ指定部31は、最後の検知期間内に受信したメッセージを、次の検知動作のための基準メッセージとして指定する。図10に示す例では、検知期間Z3内に攻撃検知装置10が受信したメッセージMXが、次の検知動作のための基準メッセージとして指定される。
この後、検知期間設定部32は、新たな基準メッセージの受信時刻に対して複数の検知期間を設定する。具体的には、検知期間設定部32は、図10に示すように、メッセージMXの受信時刻を基準として新たな検知期間Z4〜Z6を設定する。この場合、メッセージMXの受信時刻が265m秒なので、検知期間Z4、Z5、Z6の中心時刻は、それぞれ365m秒、465m秒、565m秒に設定される。また、各検知期間のマージンは40m秒である。そして、判定部33は、検知期間Z4〜Z6を用いてネットワーク100への攻撃をモニタする。なお、図10では、検知期間Z6は省略されている。
検知期間Z4、Z5、Z6が設定された後、メッセージM3が攻撃検知装置10に到着する。ここで、メッセージM3の受信時刻は、335m秒である。また、検知期間Z4の範囲は、325〜405m秒である。すなわち、メッセージM3の受信時刻は、検知期間Z4内に入っている。この場合、判定部33は、ネットワーク100が攻撃されたとは判定しない。すなわち、図10に示す例では、ネットワーク100に攻撃メッセージMXが入力されたが、その攻撃は検知されない。
このように、最後の検知期間内に攻撃メッセージが入力されると、攻撃検知装置10の動作が不安定になることがある。したがって、最後の検知期間が設定されるタイミングが既知であるものとすると、悪意ある第3者(以下、攻撃者)がそのタイミングを狙って攻撃メッセージを送信することでネットワーク100に障害を発生させるおそれがある。
ここで、新たな基準メッセージに対して設定される検知期間の数が一定であるときは、攻撃者にとって、最後の検知期間が設定されるタイミングを推定しやすくなると考えられる。換言すれば、新たな基準メッセージに対して設定される検知期間の数が一定でなければ、攻撃者にとって、最後の検知期間を狙って攻撃メッセージを送信することが難しくなると考えられる。そこで、攻撃検知装置10は、図7〜図9に示す検知動作を繰り返し実行するときに、新たな基準メッセージに対してランダムな数の検知期間を設定する。
図11は、第1の実施形態の攻撃検知方法の一例を示す。この実施例では、攻撃検知装置10は、検知対象ID(=0x123)を含むメッセージをモニタするものとする。このIDを含むメッセージの送信周期は100m秒である。そして、時刻ゼロに攻撃検知装置10に到着したメッセージM0が基準メッセージとして選択される。メッセージM0に続いて、メッセージM1〜M12および攻撃メッセージMX1〜MX2が攻撃検知装置10に到着する。これらのメッセージの受信時刻は、以下の通りである。
M1:101m秒
M2:198m秒
MX1:265m秒
M3:305m秒
M4:400m秒
M5:499m秒
MX2:550m秒
M6:594m秒
M7:698m秒
M8:805m秒
M9:900m秒
M10:1001m秒
M11:1099m秒
M12:1200m秒
攻撃検知装置10は、基準メッセージM0に対して1又は複数の検知期間を設定する。ここで、図5に示す再設定タイミング決定部34は、基準メッセージの変更まで(すなわち、基準メッセージ指定部31が基準メッセージを指定したときから次の基準メッセージを指定するまでの期間)に攻撃検知装置10が受信すべきメッセージの数を表すメッセージ数Yを決定する。すなわち、検知期間の再設定が行われるまでに攻撃検知装置10が受信すべきメッセージ数Yを決定する。なお、メッセージ数Yは、例えば、基準メッセージの変更までに攻撃検知装置10が受信すべき正規メッセージの数を表す。
再設定タイミング決定部34は、例えば、乱数発生器を用いて実現される。そして、検知期間設定部32は、再設定タイミング決定部34により決定されたメッセージ数Yと同数の検知期間を設定する。この例では、メッセージ数Yは「5」である。この場合、検知期間設定部32は、基準メッセージM0に対して5個の検知期間Z1〜Z5を設定する。なお、再設定タイミング決定部34は、例えば、検知期間設定部32が検知期間を設定する毎にメッセージ数Yを決定する。
なお、メッセージ数Yは、乱数発生器を使用することなく他の方法で決定してもよい。メッセージ数Yを決定する方法は、後で詳しく説明する。また、ランダム性を高めるため、再設定されたメッセージ数Yが、過去の所定数の検知期間のそれぞれで決定されたメッセージ数のいずれかと同じになった場合、他の値に変更してもよい。
検知期間Z1〜Z5は、基準メッセージM0の受信時刻を基準として、検知対象IDを含むメッセージの送信周期と同じ間隔で設定される。すなわち、検知期間Z1〜Z5は、100m秒間隔で設定される。また、この実施例では、送信周期のマージンは±40m秒である。よって、検知期間Z1〜Z5の範囲は、以下の通りである。
Z1:100±40m秒
Z2:200±40m秒
Z3:300±40m秒
Z4:400±40m秒
Z5:500±40m秒
判定部33は、各受信メッセージの受信時刻が対応する検知期間内に入っているか否かに基づいてネットワーク100への攻撃の有無を判定する。この実施例では、メッセージM1〜M3の受信時刻は、それぞれ検知期間Z1〜Z3内に入っている。よって、判定部33は、ネットワーク100は攻撃を受けていないと判定する。
攻撃メッセージMX1は、基準メッセージM0からカウントして4番目のメッセージである。そして、攻撃メッセージMX1の受信時刻は、検知期間Z4内に入っている。よって、攻撃検知装置10が攻撃メッセージMX1を受信したときは、判定部33は、ネットワーク100は攻撃を受けていないと判定する。
メッセージM4は、基準メッセージM0からカウントして4番目の正規メッセージである。ただし、メッセージM3とメッセージM4との間に攻撃メッセージMX1が挿入されているので、メッセージM4は、基準メッセージM0からカウントして5番目のメッセージとして処理される。すなわち、メッセージM4の受信時刻が検知期間Z5内に入っているか否かが判定される。ところが、攻撃メッセージM4の受信時刻は、検知期間Z5内に入っていない。したがって、判定部33は、ネットワーク100が攻撃を受けたと判定する。
メッセージM5は、基準メッセージM0からカウントして6番目のメッセージである。ただし、上述したように、攻撃検知装置10にメッセージM4が到着したときに、ネットワーク100への攻撃が検知されている。そして、攻撃が検知されたときは、基準メッセージM0を基準としてカウントされる受信メッセージの数が調整される。具体的には、攻撃検知装置10が受信したメッセージの数から、攻撃検知装置10により検知された攻撃の回数が減算される。よって、メッセージM5は、基準メッセージM0からカウントして5番目のメッセージとして処理される。すなわち、判定部33は、メッセージM5に対応する検知期間は「Z5」である。そうすると、メッセージM5の受信時刻は、検知期間Z5内に入っている。よって、判定部33は、ネットワーク100は攻撃を受けていないと判定する。
ここで、検知期間Z5は、基準メッセージM0に対して設定された最後の検知期間である。よって、基準メッセージ指定部31は、検知期間Z5内に攻撃検知装置10に到着したメッセージM5を、次の検知動作のための基準メッセージとして指定する。
検知期間設定部32は、新たな基準メッセージ(即ち、メッセージM5)に対して検知期間を設定する。このとき、再設定タイミング決定部34は、さらに次の基準メッセージが指定されるまでに攻撃検知装置10が受信すべきメッセージ数Yを決定する。即ち、基準メッセージM5に対して設定すべき検知期間の数が決定される。この実施例では、新たに決定されるメッセージ数Yは「2」である。この場合、検知期間設定部32は、基準メッセージM5に対して2個の検知期間Z11〜Z12を設定する。
検知期間Z11〜Z12は、基準メッセージM5の受信時刻を基準として設定される。ここで、メッセージM5の受信時刻は499m秒である。よって、検知期間Z11〜Z12の範囲は、以下の通りである。
Z11:599±40m秒
Z12:699±40m秒
判定部33は、攻撃検知装置10に検知対象IDを含むメッセージが到着する毎に、検知期間Z11〜Z12を用いてネットワーク100への攻撃の有無を判定する。即ち、攻撃メッセージMX2の受信時刻は、検知期間Z11内に入っていない。よって、判定部33は、ネットワーク100が攻撃を受けたと判定する。この後、メッセージM6、M7の受信時刻は、それぞれ検知期間Z11、Z12内に入っている。よって、判定部33は、ネットワーク100が攻撃を受けていないと判定する。
この後、攻撃検知装置10は、同様の方法で検知動作を繰り返す。すなわち、検知期間設定部32は、新たな基準メッセージ(即ち、メッセージM7)に対して検知期間を設定する。このとき、再設定タイミング決定部34は、さらに次の基準メッセージが指定されるまでに攻撃検知装置10が受信すべきメッセージ数Yを決定する。この実施例では、メッセージ数Yは「4」である。この場合、検知期間設定部32は、基準メッセージM7に対して4個の検知期間Z21〜Z24を設定する。
検知期間Z21〜Z24は、基準メッセージM7の受信時刻を基準として設定される。ここで、メッセージM7の受信時刻は698m秒である。よって、検知期間Z21〜Z24の範囲は、以下の通りである。
Z21:798±40m秒
Z22:898±40m秒
Z23:998±40m秒
Z24:1098±40m秒
図12は、第1の実施形態に係わる攻撃検知方法の一例を示すフローチャートである。このフローチャートの処理は、例えば、ユーザまたはネットワーク管理者により検知対象IDが指定されたときに実行される。以下の記載では、攻撃検知装置10は、検知対象IDを含むメッセージをモニタするものとする。
S1において、検知期間設定部32は、記憶部40に保存されている送信条件41を参照し、検知対象IDの送信周期TおよびマージンMを決定する。また、検知期間設定部32は、基準メッセージの変更までに攻撃検知装置10が受信するメッセージ数Yを決定する。メッセージ数Yは、例えば、乱数発生器により生成される。
S2において、攻撃検知装置10は、検知対象IDを含むメッセージを受信する。ここで、基準メッセージ指定部31は、この受信メッセージを基準メッセージとして指定するものとする。この場合、このメッセージの受信時刻t(0)は、基準時刻情報42として記憶部40に記録される。
S3において、検知期間設定部32は、メッセージ数Yと同数の検知期間を設定する。すなわち、基準メッセージに対してY個の検知期間が設定される。各検知期間は、受信時刻t(0)、送信周期T、およびマージンMに基づいて計算される。この例では、i(i=1〜Y)番目の検知期間z(i)は、下式で表される。
z(i)=t(0)+i×T±M
また、検知期間設定部32は、変数kを1に初期化する。変数kは、攻撃検知装置10が受信するメッセージをカウントする。
S4において、攻撃検知装置10は、検知対象IDを含むメッセージを受信する。このとき、このメッセージの受信時刻t(k)は、受信状況情報43として記憶部40に記録される。
S5において、判定部33は、受信メッセージの受信時刻が対応する検知期間内に入っているか否かを判定する。すなわち、受信時刻t(k)が検知期間z(k)の中に入っているか否かが判定される。
受信時刻t(k)が検知期間z(k)の中に入っているときは、判定部33は、ネットワーク100が攻撃を受けたと判定しない。この場合、判定部33は、S6において、変数kがメッセージ数Yに一致するか否かを判定する。すなわち、基準メッセージの後に検知対象IDを含むY個のメッセージが攻撃検知装置10に到着したか否かが判定される。
変数kがメッセージ数Yに一致しないときは、S7において変数kがインクリメントされた後、攻撃検知装置10の処理はS4に戻る。すなわち、ネットワーク100への攻撃が検知されないときは、S4〜S7の処理が繰り返し実行される。そして、変数kがメッセージ数Yに一致すると、攻撃検知装置10の処理はS8に進む。すなわち、基準メッセージの後に検知対象IDを含むY個のメッセージが攻撃検知装置10に到着すると、基準メッセージおよび検知期間の再設定が実行される。
S8において、基準メッセージ指定部31は、基準メッセージからカウントして攻撃検知装置10がY番目に受信したメッセージの受信時刻t(Y)を、次の検知動作のための基準時刻t(0)として設定する。すなわち、基準メッセージからカウントして攻撃検知装置10がY番目に受信したメッセージは、次の検知動作のための新たな基準メッセージとして指定される。
S9において、再設定タイミング決定部34は、次の検知動作のためのメッセージ数Yを決定する。メッセージ数Yは、例えば、乱数発生器により新たに生成される。
この後、攻撃検知装置10の処理はS3に戻る。すなわち、検知期間設定部32は、S9で決定されたメッセージ数Yと同数の検知期間を設定する。そして、攻撃検知装置10は、新たに設定された検知期間を利用してネットワーク100への攻撃の有無をモニタする。
受信時刻t(k)が検知期間z(k)の中に入っていないときは、S10において、判定部33は、ネットワーク100が攻撃を受けたと判定する。この場合、攻撃検知装置10の処理はS4に戻る。このとき、S7のインクリメント処理は実行されない。よって、変数kは、実質的に、攻撃メッセージ以外のメッセージ(即ち、正規メッセージ)をカウントする。
このように、第1の実施形態の攻撃検知方法においては、基準メッセージの変更までに攻撃検知装置10が受信するメッセージ数Yは、一定ではなく、ランダムに決定される。すなわち、検知期間が再設定されるときに、検知期間の個数がランダムに決定される。よって、各基準メッセージに対応する最後の検知期間が設定されるタイミングを予測することは困難である。このため、各基準メッセージに対応する最後の検知期間を狙った攻撃が抑制される。したがって、攻撃検知装置の動作が不安定になることが少なくなり、ネットワーク上での攻撃を検知する精度が向上する。
なお、検知期間を再設定することにより、送信周期の誤差の累積に起因する影響が抑制される。例えば、ネットワークへの攻撃の誤検知および/または検知漏れが抑制される。
<第2の実施形態>
第1の実施形態と同様に、第2の実施形態の攻撃検知装置も、例えば、CANシステムにおいて使用される。この場合、第2の実施形態の攻撃検知装置も、図2に示すネットワーク100に接続される複数のECUの中の任意のECU(例えば、ECU0)に実装される。
CANシステムにおいては、予定時刻よりも早く正規メッセージが送信されることがある。すなわち、各ECUにおいて、到着予定時刻よりも早くその正規メッセージが到着することがある。この場合、メッセージの到着予定時刻と実際の到着時刻とを比較する方法では、悪意あるメッセージを正しくモニタできないことがある。例えば、予定時刻よりも早く送信された正規メッセージが悪意のメッセージと判定されるおそれがある。
第2の実施形態の攻撃検知装置は、周期的に送信されるべきメッセージが予定時刻よりも早く送信されたことに起因する誤検知を抑制して、攻撃を検知する精度を向上させる機能を備える。なお、以下の記載では、予定時刻よりも早く攻撃検知装置にメッセージが到着する状態を「早着」と呼ぶことがある。また、予定時刻よりも早く攻撃検知装置に到着するメッセージを「早着メッセージ」と呼ぶことがある。
図13は、本発明の第2の実施形態に係わる攻撃検知装置の一例を示す。攻撃検知装置50は、図13に示すように、受信部51、予測部52、カウント部53、判定部54、再設定制御部55、再設定タイミング決定部56を備える。なお、攻撃検知装置50は、図13に示していない他の機能または要素を備えていてもよい。
受信部51は、ネットワーク100に実装されるECUから周期的に送信されるメッセージを受信する。なお、攻撃検知装置50は、各メッセージに含まれるID毎に受信時刻を検出できる。メッセージの受信時刻は、例えば、攻撃検知装置50に実装される不図示のタイマを利用して検出される。
予測部52は、検知対象IDに対してモニタ期間を設定する。そして、予測部52は、検知対象IDの送信周期に基づいて、そのモニタ期間内に受信部51が受信すると見込まれるメッセージの個数を予測する。カウント部53は、モニタ期間内に受信部51が実際に受信したメッセージの個数をカウントする。ただし、カウント部53により得られるカウント値は、攻撃メッセージと判定されたメッセージをカウントしないように補正されてもよい。
判定部54は、予測部52により得られる予測値およびカウント部53により得られるカウント値に基づいてネットワーク100が攻撃されたか否かを判定する。具体的には、判定部54は、予測部52により得られる予測値、その予測値に予め指定される早着許容値を加算することで得られる参照値、およびカウント部53により得られるカウント値を用いて、ネットワーク100が攻撃されたか否かを判定する。たとえば、判定部54は、カウント値が予測値よりも大きく且つ参照値以下である状態を検出したときは、早着許容値に対応する早着猶予期間が経過した後に、カウント値と予測値との比較の結果に基づいて、ネットワーク100が攻撃されたか否かを判定してもよい。なお、猶予期間が経過するまでの期間については、カウント値が参照値を超えているかどうかに基づいて、ネットワーク100が攻撃されたか否かを判定する。
早着許容値は、正規メッセージが予定到着時刻よりも早く攻撃検知装置50に到着したときに、その正規メッセージが攻撃メッセージであると判定されないようにするために使用される。具体的には、早着許容値は、正規メッセージと判定することを許容する、早着メッセージの最大数を表す。
例えば、所定の周期で送信される正規メッセージに加えて、ネットワーク100に攻撃メッセージが入力されると、攻撃検知装置50において受信メッセージの数が予測値よりも多くなる。ところが、攻撃メッセージが入力されないときであっても、正規メッセージが予定到着時刻よりも早く攻撃検知装置50に到着すると、受信メッセージの数が一時的に予測値よりも多くなる。よって、攻撃検知の精度を高くするためには、攻撃メッセージと早着メッセージとを識別することが要求される。
ここで、メッセージの早着に起因して受信メッセージの数が一時的に予測値よりも多くなったときは、その後、一時的に、受信メッセージの到着頻度が低くなると考えられる。すなわち、攻撃メッセージがない場合は、早着メッセージに起因してカウント値が一時的に予測値を超えても、そのカウント値は、やがて予測値に一致すると見込まれる。具体的には、e個のメッセージが予定到着時刻よりも早く到着したときは、正規メッセージの送信周期のe倍以上の時間が経過すれば、カウント値が予測値に一致する状態が回復すると見込まれる。
そこで、カウント値が予測値よりも大きく且つ「予測値+早着許容値」以下となったときには、判定部54は、警告フラグをOFF状態からON状態に変更する。そして、判定部54は、早着許容値に対応する早着猶予期間が経過した後に、カウント値と予測値との比較の結果に基づいてネットワーク100が攻撃されたか否かを判定する。この比較の結果、カウント値が予測値以下であれば、警告フラグの原因が早着メッセージであったと推定されるので、判定部54は、ネットワーク100が攻撃されたと判定しない。一方、早着猶予期間が経過した後においてもなおカウント値が予測値よりも大きければ、警告フラグの原因が攻撃メッセージであったと推定されるので、判定部54は、ネットワーク100が攻撃されたと判定する。なお、早着猶予期間は、早着メッセージに起因してカウント値が予測値を超えたときから、カウント値が予測値に一致する状態が回復すると見込まれるまでの時間に相当する。
再設定制御部55は、所定の条件が満たされたときに、予測部52により得られる予測値およびカウント部53により得られるカウント値をそれぞれ再設定する。たとえば、カウント値が所定の閾値以上であるときに、再設定制御部55は、予測値およびカウント値をそれぞれ再設定する。このとき、再設定制御部55は、次のモニタ期間を設定してもよい。
再設定タイミング決定部56は、再設定制御部55においてカウント値と比較される閾値を決定する。ここで、閾値が大きいときは、再設定が実行されるまでに受信部51が受信するメッセージの数が多くなる。反対に、閾値が小さいときは、再設定が実行されるまでに受信部51が受信するメッセージの数が少なくなる。したがって、この閾値は、実質的に、予測値およびカウント値を再設定するタイミングを指定する。そして、再設定タイミング決定部56は、再設定が実行される毎に閾値を決定する。このとき、再設定が実行される毎に再設定タイミング決定部56決定される閾値は一定でない。
なお、受信部51は、図4に示すCANトランシーバ201により実現される。また、プロセッサ204は、メモリ205に格納されているプログラムを実行することにより、攻撃検知を実現する。この場合、メモリ205には、予測部52、カウント部53、判定部54、再設定制御部55、再設定タイミング決定部56の機能を記述したプログラムが格納される。そして、プロセッサ204は、このプログラムを実行することにより、予測部52、カウント部53、判定部54、再設定制御部55、再設定タイミング決定部56の機能を提供する。
図14は、第2の実施形態に係わる攻撃検知装置50の動作の一例を示す。攻撃検知装置50は、図2に示すECU0に実装され、ネットワーク100を攻撃する悪意あるメッセージ(すなわち、攻撃メッセージ)を検知する。なお、この例では、検知対象IDを含むメッセージは、所定の周期で送信されるように設計されているものとする。また、ネットワーク100において以下の通信が行われるものとする。
(1)メッセージは、欠落することはない。
(2)メッセージ送信が遅延したときは、そのメッセージは後で送信されるので、合計メッセージ数は回復する。
(3)メッセージ送信が予定時刻よりも早く行われたときは、そのメッセージは既に送信済みであり、あらためて送信されることはないので、合計メッセージ数は回復する。
なお、以下の記載において、「メッセージ」は、特に断らない限りは、検知対象IDを含むメッセージを表すものとする。また、△印は、受信部51により正規メッセージが攻撃検知装置50に到着したタイミングを表す。
図14において、カウント値nは、受信部51により受信されたメッセージの個数を表し、カウント部53によりカウントされる。予測値xは、モニタ期間内に受信部51が受信すると見込まれるメッセージの個数を表し、予測部52により算出される。
予測部52は、メッセージの送信周期TCに基づいてモニタ期間を設定する。モニタ期間は、基準メッセージの受信時刻に対して設定される。例えば、時刻TSにおいて攻撃検知装置50に基準メッセージM0が到着するものとする。この場合、モニタ期間は、時刻TSに対して設定される。また、モニタ期間は、1または複数のカウント領域を含む。たとえば、最初のモニタ期間TS〜t(1)は、カウント領域C1から構成される。モニタ期間TS〜t(2)は、カウント領域C1、C2から構成される。モニタ期間TS〜t(5)は、カウント領域C1〜C5から構成される。各カウント領域の長さは、送信周期TCと同じである。ただし、最初のカウント領域C1の長さは、送信周期TCに「1+p」を乗算することで得られる。タイミングパラメータpは、ゼロよりも大きく、1よりも小さい実数である。また、タイミングパラメータpは、例えば、メッセージが遅延なく送信周期TCで送信されたときに、各カウント領域の中心で受信部51が対応するメッセージを受信するように決定される。この場合、タイミングパラメータpの値は0.5である。
モニタ期間は、基準メッセージM0の受信時刻に対して設定される。例えば、時刻TSにおいて攻撃検知装置50に基準メッセージM0が到着するものとする。この場合、モニタ期間の終了時刻t(i)は、下式で表される。
t(i)=TS+(i+p)×TC
iは、各モニタ期間を識別する自然数である。よって、例えば、最初のモニタ期間の終了時刻t(1)はTS+1.5TCで表され、2番目のモニタ期間の終了時刻t(2)はTS+2.5TCで表される。なお、pは0.5である。
さらに、予測部52は、モニタ期間内に受信部51が受信すると見込まれるメッセージの個数を予測する。すなわち、各モニタ期間に対してそれぞれ予測値xが生成される。この例では、最初のモニタ期間(時刻TS〜t(1))に対して予測値xとして「1」が算出され、2番目のモニタ期間(時刻TS〜t(2))に対して予測値xとして「2」が算出される。同様に、i番目のモニタ期間(時刻TS〜t(i))に対して予測値xとして「i」が算出される。
判定部54は、攻撃検知装置50にメッセージが到着する毎に、ネットワーク100に攻撃メッセージが入力された否かを判定する。なお、以下の記載では、攻撃検知装置50に到着するメッセージ(攻撃メッセージを含む)は、検知対象IDを含むものとする。
攻撃検知装置50にメッセージM1が到着すると、カウント値nがゼロから1にインクリメントされる。このとき、予測部52により算出される予測値xは1である。そして、判定部54は、カウント値nと予測値xとを比較する。ここで、カウント値nは、予測値xを超えていない。この場合、判定部54は、ネットワーク100は攻撃を受けていないと判定する。なお、図14に示す「OK」は、攻撃が検知されなかった状態を表す。
攻撃検知装置50にメッセージM2が到着すると、カウント値nが1から2にインクリメントされる。このとき、予測部52により算出される予測値xは2である。そして、判定部54は、カウント値nと予測値xとを比較する。この場合も、カウント値nは予測値xを超えていないので、判定部54は、ネットワーク100は攻撃を受けていないと判定する。
同様に、判定部54は、攻撃検知装置50にメッセージが到着する毎に、ネットワーク100に攻撃メッセージが入力された否かを判定する。ただし、各ECUのクロックは、誤差を有する。そして、この誤差が蓄積すると、攻撃検知装置50は、各モニタ期間内で正しく受信メッセージの数をカウントできないことがある。この場合、攻撃検知装置50は、ネットワーク100が攻撃されたか否かを正しく判定できないことがある。したがって、攻撃検知装置50は、誤差の蓄積を解消するために、予測値xおよびカウント値nを再設定する機能を備える。
具体的には、カウント値nが所定の閾値r以上になったときに、予測値xおよびカウント値nが再設定される。閾値rは、図14に示す例では、5である。そして、カウント値nが閾値r以上になると、カウンタ値nは、ゼロに初期化される。予測値xは、「x」から「x−n」に更新される。図14に示す例では、予測値xは、「5」から「ゼロ」に更新されている。ただし、予測値xは、ケースによっては、ゼロ以外の値に更新されることがある。
閾値rは、再設定が実行される間隔を表す。具体的には、閾値rは、再設定を実行するまでに攻撃検知装置50が受信すべきメッセージの数を表す。なお、閾値rは、一定ではなく、再設定が実行される毎にランダムに決定される。
このように、攻撃検知装置50は、攻撃検知装置50にメッセージが到着する毎に、モニタ期間内に受信部51が受信したメッセージの個数を表すカウント値nとその予測値xとを比較する。そして、カウント値nが予測値x以下であるときには、攻撃検知装置50は、ネットワーク100は攻撃を受けていないと判定する。また、カウント値nが閾値r以上になったときに、予測値xおよびカウント値nが再設定される。
図15〜図18は、第2の実施形態における攻撃検知方法の動作例を示す。△印は、正規メッセージが攻撃検知装置50に到着したタイミングを表す。▲印は、攻撃メッセージが攻撃検知装置50に到着したタイミングを表す。そして、攻撃検知装置50は、基準メッセージM0を受信すると、受信メッセージをカウントする処理を開始する。なお、基準メッセージM0は、例えば、攻撃検知処理が開始された後に最初に攻撃検知装置50に到着したメッセージである。
モニタ期間は、上述したように、1または複数のカウント領域から構成される。たとえば、最初のモニタ期間は、カウント領域C1から構成される。2番目のモニタ期間は、カウント領域C1〜C2から構成される。ここで、各カウント領域の長さは、メッセージの送信周期CTと同じである。ただし、最初のカウント領域C1の長さは、送信周期CTの1.5倍である。
予測値xは、各モニタ期間内に攻撃検知装置50に到着することが期待されるメッセージの個数を表し、予測部52により算出される。換言すれば、予測値xは、各カウント領域の終了時刻までに攻撃検知装置50に到着することが期待されるメッセージの個数を表す。なお、カウント値nが再設定されるときに、予測値xも再設定される。ただし、再設定において、予測値xは「x−n」に更新される。
カウント値nは、攻撃検知装置50に到着したメッセージの個数を表し、カウント部53によりカウントされる。また、カウント値nは、カウント値nが閾値r以上となったときに再設定される。閾値rは、図15〜図18に示す例では5であるが、実際には、再設定タイミング決定部56によりランダムに決定される。また、この実施例では、カウント値nは、警告フラグがOFF状態であり、且つ、カウント値nが閾値r以上となると、再設定されるものとする。再設定においては、カウント値nはゼロに更新される。
図15に示す例では、攻撃メッセージは存在しない。ただし、メッセージM4は、予定到着時刻よりも早く攻撃検知装置50に到着している。具体的には、メッセージM4は、カウント領域C4に到着することが見込まれていたが、実際には、カウント領域C3に到着している。なお、攻撃検知処理の開始時において、警告フラグはOFF状態に初期化されているものとする。
攻撃検知装置50にメッセージM1が到着すると、カウント値nがゼロから1にインクリメントされる。また、メッセージM1は、カウント領域C1内に攻撃検知装置50に到着しているので、予測部52により算出される予測値xは1である。そして、判定部54は、カウント値nと予測値xとを比較する。ここで、カウント値nは、予測値xを超えていない。この場合は、判定部54は、ネットワーク100は攻撃を受けていないと判定する。
攻撃検知装置50にメッセージM2が到着すると、カウント値nが1から2にインクリメントされる。また、メッセージM2は、カウント領域C2内に攻撃検知装置50に到着しているので、予測値xは2である。そして、判定部54は、カウント値nと予測値xとを比較する。この場合も、カウント値nは予測値xを超えていないので、判定部54は、ネットワーク100は攻撃を受けていないと判定する。攻撃検知装置50にメッセージM3が到着したときも、同様に、判定部54は、ネットワーク100は攻撃を受けていないと判定する。
攻撃検知装置50にメッセージM4が到着すると、カウント値nが3から4にインクリメントされる。ただし、メッセージM4は、カウント領域C3内に攻撃検知装置50に到着しているので、予測値xは3である。即ち、カウント値nは予測値xよりも大きい。そうすると、判定部54は、警告フラグをチェックする。このとき、警告フラグはOFF状態である。この場合、判定部54は、警告フラグをOFF状態からON状態に変更する。ただし、判定部54は、ネットワーク100が攻撃されたとは判定しない。
攻撃検知装置50にメッセージM5が到着すると、カウント値nが4から5にインクリメントされる。また、メッセージM5は、カウント領域C5内に攻撃検知装置50に到着しているので、予測値xは5である。そして、判定部54は、カウント値nと予測値xとを比較する。ここで、カウント値nは、予測値xを超えていない。したがって、判定部54は、ネットワーク100は攻撃を受けていないと判定する。また、判定部54は、警告フラグをON状態からOFF状態に変更する。
このように、攻撃検知装置50に正規メッセージが早着したときは、警告フラグがOFF状態からON状態に変更される。すなわち、攻撃検知装置50は、ネットワーク100が攻撃された可能性があると判定する。ただし、この時点では、攻撃検知装置50は、正規メッセージが早着したのか、攻撃メッセージが入力されたのかを判定しない。そして、攻撃検知装置50は、次のメッセージが予定到着時刻の近傍で到着するか否かをモニタする。図15に示す例では、攻撃検知装置50は、次のメッセージ(すなわち、メッセージM5)が予定到着時刻の近傍で到着している。この場合、メッセージM4が到着したときからメッセージM5が到着するまでの間に予測値が3から5へインクリメントされる。この結果、カウント値nは予測値x以下となり、判定部54は、ネットワーク100は攻撃されていないと判定する。すなわち、攻撃検知装置50は「警告フラグは、攻撃メッセージではなく、早着した正規メッセージに起因してON状態に設定された」と判定する。したがって、第1の実施形態によれば、正規メッセージの早着に起因する誤検知が回避または抑制される。
図16に示す例では、攻撃検知装置50は、図15に示すメッセージM1〜M10に加えて、攻撃メッセージを受信する。なお、メッセージM4が攻撃検知装置50に到着したときに、カウント値nは3から4にインクリメントされ、また、警告フラグがOFF状態からON状態に変更される。そして、メッセージM4の次に攻撃メッセージMXが攻撃検知装置50に到着する。
カウント領域C4において攻撃検知装置50に攻撃メッセージMXが到着すると、カウント値nが4から5にインクリメントされる。このとき、予測部52により算出される予測値xは4である。すなわち、カウント値nは、予測値xよりも大きい。そうすると、判定部54は、警告フラグをチェックする。このとき、警告フラグはON状態である。この場合、判定部54は、ネットワーク100が攻撃されたと判定する。
このように、警告フラグがON状態であるとき受信したメッセージに起因してカウント値nが予測値xよりも大きくなると、判定部54は、ネットワーク100が攻撃されたと判定する。すなわち、早着メッセージの後に攻撃メッセージが到着した場合、攻撃検知装置50は、その攻撃メッセージを検知することができる。
図17に示す例では、メッセージM4〜M6が遅延している。なお、攻撃メッセージは存在しない。
メッセージM1〜M3に続いて、カウント領域C6において、メッセージM4〜M5が攻撃検知装置50に到着すると、カウント値nが3から5にインクリメントされる。このとき、予測値xは6である。すなわち、カウント値nは、予測値xを超えていない。この場合、判定部54は、ネットワーク100は攻撃を受けていないと判定する。また、カウント値nが閾値rに達しているので、判定部54は、カウント値nおよび予測値xを再設定する。このとき、カウント値nは5からゼロに更新され、予測値xは「x−n」に更新される。すなわち、予測値xは、6から1に更新される。
カウント領域C7においてメッセージM6〜M7が攻撃検知装置50に到着すると、カウント値nがゼロから2にインクリメントされる。一方、予測値xは、1から2にインクリメントされる。すなわち、カウント値nは、予測値xを超えていない。この場合、判定部54は、ネットワーク100は攻撃を受けていないと判定する。このように、攻撃検知装置50は、正規メッセージが遅延した場合、そのメッセージを攻撃メッセージと判定しない。
図18に示す例では、メッセージM1とメッセージM2との間に攻撃メッセージが送信されている。また、メッセージM2〜M7は、指定された送信周期TCよりも短い時間間隔で送信されている。なお、この実施例では、以下の3つの条件が満たされたときに、カウント値nおよび予測値xは再設定されるものとする。
(1)カウント値nが閾値r以上
(2)警告フラグがOFF状態
(3)最も新しく攻撃検知装置50に到着した2個のメッセージの受信時刻の差分が、送信周期TCに対して所定の誤差の範囲内(例えば、送信周期TCが10m秒であり、所定の誤差が10パーセントである場合、2個のメッセージの受信時刻の差分が9〜11m秒であることが要求される)
カウント領域C2において攻撃検知装置50に攻撃メッセージMXが到着すると、カウント値nが1から2にインクリメントされる。このとき、予測値xは2であり、カウント値nは、予測値xを超えていない。この場合、判定部54は、ネットワーク100が攻撃されたとは判定しない。また、警告フラグもOFF状態のまま維持される。
カウント領域C5において、メッセージM2〜M4が攻撃検知装置50に到着すると、カウント値nが2から5にインクリメントされる。このとき、予測値xは5である。すなわち、カウント値nは予測値xを超えていないので、判定部54は、ネットワーク100は攻撃を受けていないと判定する。なお、メッセージM4が攻撃検知装置50に到着したとき、カウント値nは5であり、閾値rに達している。ただし、メッセージM4、M5の受信時刻の差分が小さく、上述した条件(3)は満たされない。よって、カウント値nおよび予測値xは再設定されない。
カウント領域C6において、メッセージM5〜M6が攻撃検知装置50に到着すると、カウント値nが5から7にインクリメントされる。このとき、予測値xは6であり、カウント値nは予測値xよりも大きい。しかし、警告フラグはOFF状態なので、判定部54は、ネットワーク100が攻撃されたとは判定しない。ただし、警告フラグは、OFF状態からON状態に変更される。なお、このケースでも、メッセージM5、M6の受信時刻の差分が小さく、上述した条件(3)が満たされないので、カウント値nおよび予測値xは再設定されない。
カウント領域C7において、メッセージM7が攻撃検知装置50に到着すると、カウント値nが7から8にインクリメントされる。このとき、予測値xは7であり、カウント値nは予測値xよりも大きい。ここで、警告フラグはON状態なので、判定部54は、ネットワーク100が攻撃されたと判定する。そうすると、判定部54は、カウント値nを1だけデクリメントする。また、警告フラグは、ON状態からOFF状態に変更される。なお、このケースにおいても、メッセージM6、M7の受信時刻の差分が小さく、上述した条件(3)が満たされないので、カウント値nおよび予測値xは再設定されない。
カウント領域C8において、メッセージM8が攻撃検知装置50に到着すると、カウント値nが7から8にインクリメントされる。このとき、予測値xは8であり、カウント値nは予測値xを超えていない。よって、判定部54は、ネットワーク100は攻撃を受けていないと判定する。なお、このケースでは、メッセージM7、M8の受信時刻の差分が大きく、上述した条件(3)が満たされないので、カウント値nおよび予測値xは再設定されない。
カウント領域C9において、メッセージM9が攻撃検知装置50に到着すると、カウント値nが8から9にインクリメントされる。このとき、予測値xは9であり、カウント値nは予測値xを超えていない。よって、判定部54は、ネットワーク100は攻撃を受けていないと判定する。なお、このケースでは、メッセージM8、M9の受信時刻の差分が送信周期TCとほぼ同じなので、上述した条件(3)が満たされる。加えて、上述した条件(1)および(2)も満たされている。したがって、カウント値nおよび予測値xがそれぞれゼロに更新される。
図19は、第2の実施形態の攻撃検知方法の一例を示すフローチャートである。このフローチャートの処理は、例えば、検知対象IDが指定されたときに攻撃検知装置50により実行される。なお、図19〜図20に係わる記載において、「メッセージ」は、検知対象IDを含むメッセージを表す。
S21において、攻撃検知装置50は、制御パラメータを取得する。この制御パラメータは、検知対象IDの送信周期TC、タイミングパラメータpを含む。また、制御パラメータは、例えば、図4に示すメモリ205に予め格納されている。或いは、制御パラメータは、ユーザまたはネットワーク管理者から与えられる。なお、制御パラメータは、閾値rの初期値を含んでいてもよい。
S22において、受信部51は、基準メッセージを受信する。基準メッセージは、例えば、図19に示すフローチャートの処理が開始された後に最初に攻撃検知装置50に到着したメッセージであってもよい。このとき、受信部51は、基準メッセージの受信時刻RT(0)を記録する。
S23において、攻撃検知装置50は、初期化処理を実行する。すなわち、カウント部53は、カウント値nをゼロに初期化する。予測部52は、最初のモニタ期間の終了時刻t(i)を算出する。この実施例では、最初のモニタ期間の終了時刻t(i)は、基準メッセージの受信時刻RT(0)に(1+p)×TCを加算することで算出される。TCは検知対象IDの送信周期を表し、pは予め決められたタイミングパラメータ(例えば、0.5)を表す。予測部52は、予測値xに1を設定する。判定部54は、警告フラグをOFF状態に設定する。
また、初期化処理において、再設定タイミング決定部56は、閾値rを決定する。一例としては、再設定タイミング決定部56は、乱数発生器を用いて閾値rを決定する。ただし、閾値rの初期値は、ユーザまたはネットワーク管理者から与えられてもよい。あるいは、閾値rの初期値は、図4に示すメモリ205に予め格納されていてもよい。なお、閾値rは、再設定を実行する周期を表す。具体的には、閾値rは、再設定を実行するまでに攻撃検知装置50が受信すべきメッセージの数を表す。
S24において、受信部51は、メッセージを受信する。このとき、受信部51は、このメッセージの受信時刻RT(i)を検出する。また、カウント部53は、カウント値nを1だけインクリメントする。
S25〜S26において、攻撃検知装置50は、メッセージの受信時刻RT(i)がモニタ期間の終了時刻t(i)よりも前であるか判定する。メッセージの受信時刻RT(i)がモニタ期間の終了時刻t(i)よりも前でないときは、攻撃検知装置50は、予測値xを1だけインクリメントすると共に、終了時刻t(i)に送信周期TCを加算する。なお、S25〜S26の処理は、モニタ期間の終了時刻t(i)がメッセージの受信時刻RT(i)より後ろになるまで繰返し実行される。そして、モニタ期間の終了時刻t(i)がメッセージの受信時刻RT(i)よりも後ろになると、攻撃検知装置50の処理はS27に進む。
S27において、攻撃検知装置50は、ネットワーク100が攻撃を受けたか否か(即ち、ネットワーク100に攻撃メッセージが入力されたか否か)を判定する判定処理を実行する。判定処理は、主に、判定部54により実行される。
図20は、第2の実施形態の判定処理の一例を示すフローチャートである。この判定処理は、図19に示すS27に相当し、攻撃検知装置50にメッセージ(正規メッセージおよび攻撃メッセージを含む)が到着するごとに実行される。
S41において、判定部54は、カウント値nと予測値xとを比較する。そして、カウント値nが予測値x以下であれば、S42において、判定部54は、ネットワーク100は攻撃されていないと判定する。続いて、S43において、判定部54は、警告フラグをOFF状態に設定する。一方、カウント値nが予測値xよりも大きいときは、S44において、判定部54は、カウント値nがx+1(即ち、予測値xに1を加算することで得られる参照値)であるか否かを判定する。
カウント値nがx+1であるときは、S45において、判定部54は、警告フラグの状態をチェックする。警告フラグがOFF状態であれば、S46において、判定部54は、ネットワーク100は攻撃されていないと判定する。ただし、判定部54は、S47において、警告フラグをOFF状態からON状態に変更する。
一方、警告フラグがON状態であれば(S45:Yes)、S48において、判定部54は、ネットワーク100が攻撃されたと判定する。また、判定部54は、カウント値nを1だけデクリメントする。この後、S49において、判定部54は、警告フラグをON状態からOFF状態に変更する。
カウント値nがx+1より大きいときは(S44:No)、S50において、判定部54は、ネットワーク100が攻撃されたと判定する。また、判定部54は、カウント値nを1だけデクリメントする。
このように、カウント値nが予測値x以下であれば、判定部54は、ネットワーク100は攻撃されていないと判定する。また、警告フラグがOFF状態であるときに受信したメッセージに起因してカウント値nが予測値xより大きくなったときも、判定部54は、ネットワーク100が攻撃されたとは判定しない。ただし、この場合、警告フラグがOFF状態からON状態に変更される。一方、警告フラグがON状態であるときに受信したメッセージに起因してカウント値nが予測値xより大きくなったときは、判定部54は、ネットワーク100が攻撃されたと判定する。なお、カウント値nがx+1より大きいときは、判定部54は、警告フラグの状態にかかわりなく、ネットワーク100が攻撃されたと判定してもよい。
また、判定部54は、ネットワーク100が攻撃されたと判定したときは、カウント値nを1だけデクリメントする。図16に示す例では、カウント領域C4において攻撃が検出されると、カウント値nは5から4に更新される。このように、カウント値nは、攻撃メッセージが検出されたときはデクリメントされる。すなわち、カウント値nは、正規メッセージの個数をカウントする。
なお、ネットワーク100が攻撃されたと判定したときは、攻撃検知装置50は、アラーム信号を出力する。アラーム信号は、ネットワーク100が攻撃されたことをユーザに通知する。このとき、攻撃検知装置50は、ネットワーク100と外部ネットワークとを切断してもよい。また、ネットワーク100が車載ネットワークである場合、攻撃検知装置50は、車両を停止するための制御信号を出力してもよい。
このように、攻撃検知装置50に正規メッセージが早着したときは、警告フラグがOFF状態からON状態に変更される。すなわち、攻撃検知装置50は、ネットワーク100が攻撃された可能性があると判定する。ただし、この時点では、攻撃検知装置50は、正規メッセージが早着したのか、攻撃メッセージが入力されたのかを判定しない。そして、攻撃検知装置50は、次のメッセージが予定到着時刻の近傍において到着するのか否かをモニタする。図15に示す例では、メッセージM4の受信時に警告フラグがOFF状態からON状態に変更された後、攻撃検知装置50は、次のメッセージ(すなわち、メッセージM5)を予定到着時刻の近傍で受信している。この場合、攻撃検知装置50は、メッセージM4は攻撃メッセージではなく、早着した正規メッセージであると判定する。したがって、第1の実施形態によれば、正規メッセージの早着に起因する誤検知が回避または抑制される。
図20に示す判定処理が終了すると、攻撃検知装置50は、再設定処理を実行するか否かを決定する。即ち、S28において、再設定制御部55は、カウント値nと閾値rとを比較する。ここで、閾値rは、再設定を実行する周期を表す。具体的には、閾値rは、再設定を実行するまでに攻撃検知装置50が受信すべきメッセージの数を表す。そして、カウント値nが閾値rより小さいときは、攻撃検知装置50の処理はS24に戻る。一方、カウント値nが閾値r以上であれば、S29において、再設定制御部55は、警告フラグの状態をチェックする。
警告フラグがOFF状態であるときには、S30において、再設定制御部55は、再設定処理を実行する。再設定処理においては、予測値xは、「x」から「x−n」に更新される。また、カウント値nは、ゼロに初期化される。さらに、次のモニタ期間の終了時刻t(i)として、RT(i)+p×TCが設定される。RT(i)は、受信部51が直前に受信したメッセージの受信時刻を表す。TCは、検知対象IDの送信周期を表し、pはタイミングパラメータを表す。再設定タイミング決定部56は、次の検知動作のための閾値rを決定する。一例としては、再設定タイミング決定部56は、乱数発生器を用いて閾値rを決定する。この後、攻撃検知装置50の処理はS24に戻る。
なお、再設定制御部55は、再設定処理においてS29の処理を実行しなくてもよい。この場合、カウント値nが閾値rに達したときには、警告フラグの状態にかかわらず再設定処理が実行される。
また、S30において閾値rが乱数発生器を使用することなく決定される場合には、S27とS28との間でS101の処理が実行される。S101では、再設定タイミング決定部56は、変数qを更新する。変数qは、例えば、受信メッセージのタイムスタンプに基づいて計算され、S30において閾値rを計算するために使用される。なお、変数qの更新については、後で図22または図23に示す実施例を参照しながら説明する。
このように、第2の実施形態においては、所定のモニタ期間内に攻撃検知装置が受信するメッセージのカウント値とその予測値とを比較することで、ネットワークへの攻撃の有無が判定される。このとき、メッセージの送信周期の誤差等の累積に起因する検知精度の低下を防止するために、受信メッセージ数が閾値を超えると、カウント値および予測値が再設定される。
ただし、カウント値および予測値の再設定が実行されるタイミングでネットワークに攻撃メッセージが入力されると、攻撃検知装置の動作が不安定になることがある。例えば、攻撃メッセージが攻撃検知装置に到着したことで受信メッセージ数を表すカウント値nが閾値rに到達し、その後、正規メッセージの送信が遅延した場合には、上述の攻撃を検知できないおそれがある。
このため、第2の実施形態では、閾値rは、一定ではなく、ランダムに決定される。すなわち、再設定が実行されるまでに攻撃検知装置が受信すべきメッセージ数がランダムに決定される。よって、再設定が実行されるタイミングを予測することは困難である。このため、再設定が実行されるタイミングを狙った攻撃が抑制される。したがって、攻撃検知装置の動作が不安定になることが少なくなり、ネットワーク上での攻撃を検知する精度が向上する。
<ランダムな値の決定方法>
第1の実施形態では、基準メッセージの変更までに攻撃検知装置10が受信すべきメッセージ数Yがランダムに決定される。また、第2の実施形態では、再設定を実行するまでに攻撃検知装置50が受信すべきメッセージの数を表す閾値rがランダムに決定される。以下の記載では、これらの値を「ランダム値」と呼ぶことがある。
ランダム値は、例えば、乱数発生器により生成される。この場合、攻撃検知装置10、50は、乱数発生器を備える。ただし、攻撃検知装置10、50は、乱数発生器を用いることなくランダム値を決定してもよい。例えば、攻撃検知装置10、50は、下記の方法でランダム値を計算してもよい。
(1)受信タイムスタンプに対してモジュロ演算を実行する。
(2)受信タイムスタンプを表すビット列から一部のビットを抽出する。
(3)複数のメッセージから上記(2)のビットをそれぞれ抽出し、抽出したビットに対して加算演算または排他的論理和(XOR)演算を実行する。
(4)メッセージのデータ部の値に対してモジュロ演算を実行する。
(5)メッセージのデータ部の値を表すビット列から一部のビットを抽出する。
(6)複数のメッセージから上記(5)のビットをそれぞれ抽出し、抽出したビットに対して加算演算またはXOR演算を実行する。
なお、上記(1)〜(3)において、受信タイムスタンプの代わりに送信タイムスタンプを使用してもよい。また、矛盾のない範囲で上記(1)〜(6)を任意に組み合わせてランダム値を計算してもよい。更に、上記(1)〜(6)は、検知対象IDを含むメッセージのみを使用してもよいし、検知対象IDを含まないメッセージを使用してもよいし、全メッセージを使用してよい。
<実施例1>
実施例1においては、第2の実施形態に従って攻撃を検知する。即ち、攻撃検知装置50にメッセージが到着する毎に、図19〜図20に示すフローチャートの処理が実行される。ここで、攻撃検知装置50は、乱数発生器を用いて閾値rを決定するものとする。また、実施例1においては以下のパラメータが使用される。
送信周期TC:1秒
タイミングパラメータp:0.5
攻撃検知装置50は、図21に示すように、メッセージM0〜M2、MX、M3〜M5を受信する。メッセージM0〜M2、MX、M3〜M5は、それぞれ、検知対象IDを含む。また、メッセージM0〜M5は正規メッセージであり、メッセージMXは攻撃メッセージである。そして、メッセージM0が基準メッセージとして指定される。
(1)時刻5.00(=RT(0))においてメッセージM0が到着すると、攻撃検知装置50は攻撃検知を開始する。具体的には、攻撃検知装置50は、以下のようにパラメータを設定する。このとき、再設定タイミング決定部56は、乱数発生器を用いて、閾値rを計算する。
モニタ期間の終了時刻t(1):6.5m秒(t(1)=RT(0)+1.5×1)
カウント値n:ゼロ
予測値x:1
警告フラグ:OFF
閾値r=4
(2)時刻5.98(=RT(1))においてメッセージM1が到着すると、カウント値nがゼロから1にインクリメントされる。ここで、メッセージM1は、t(1)よりも前に到着している。よって、予測値xは変化しない。そして、カウント値nは予測値x以下なので、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。なお、警告フラグは、OFF状態を維持する。また、カウント値nが閾値rより小さいので、再設定は実行されない。
(3)時刻7.03(=RT(2))においてメッセージM2が到着すると、カウント値nが1から2にインクリメントされる。ここで、メッセージM2は、t(1)よりも後に到着している。よって、予測値xが1から2に更新される。また、下式により次のモニタ期間の終了時刻t(2)が計算される。
t(2)=t(1)+1=7.5
カウント値nは、予測値x以下である。したがって、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。なお、警告フラグは、OFF状態を維持する。また、カウント値nが閾値rより小さいので、再設定は実行されない。
(4)時刻7.50(=RT(3))において攻撃メッセージMXが到着すると、カウント値nが2から3にインクリメントされる。ここで、攻撃メッセージMXは、t(2)以前に到着している。よって、予測値xは変化しない。すなわち、予測値xは2である。そうすると、カウント値nは条件「n=x+1」を満足するので、警告フラグがチェックされる。ここで、警告フラグはOFF状態なので、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。ただし、警告フラグは、OFF状態からON状態に変更される。また、カウント値nが閾値rより小さいので、再設定は実行されない。
(5)時刻8.00(=RT(4))においてメッセージM3が到着すると、カウント値nが3から4にインクリメントされる。ここで、メッセージM3はt(2)よりも後に到着している。よって、予測値xが2から3に更新される。また、下式により次のモニタ期間の終了時刻t(4)が計算される。
t(3)=t(2)+1=8.5
カウント値nは条件「n=x+1」を満足するので、警告フラグがチェックされる。ここで、警告フラグはON状態なので、攻撃検知装置50は、ネットワークが攻撃されたと判定する。この後、カウント値nは4から3に更新され、警告フラグはON状態からOFF状態に変更される。ただし、更新された後のカウント値nが閾値rより小さいので、再設定は実行されない。
(6)時刻8.95(=RT(5))においてメッセージM4が到着すると、カウント値nが3から4にインクリメントされる。ここで、メッセージM4はt(3)よりも後に到着している。よって、予測値xが3から4に更新される。また、下式により次のモニタ期間の終了時刻t(4)が計算される。
t(4)=t(3)+1=9.5
カウント値nは予測値x以下なので、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。なお、警告フラグは、OFF状態を維持する。ただし、カウント値nが閾値rに達しているので、攻撃検知装置50は再設定を実行する。すなわち、カウント値nは4からゼロに更新され、予測値xも4からゼロに更新される。また、モニタ期間の終了時刻t(4)が下式により再計算される。
t(4)=RT(5)+0.5×1=9.45
さらに、再設定タイミング決定部56は、乱数発生器を用いて閾値rを決定する。ここでは、r=5が得られるものとする。この場合、次の再設定が実行されるまでの期間は、攻撃検知装置50は、図19に示すフローチャートにおいて閾値rが5であるものとしてS28の処理を実行する。
(7)時刻10.03(=RT(6))においてメッセージM5が到着すると、カウント値nがゼロから1にインクリメントされる。ここで、メッセージM5は、t(4)よりも後に到着している。よって、予測値xがゼロから1に更新される。また、下式により次のモニタ期間の終了時刻t(5)が計算される。
t(5)=t(4)+1=10.45
カウント値nは予測値x以下なので、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。なお、警告フラグは、OFF状態を維持する。また、カウント値nが閾値rより小さいので、再設定は実行されない。
この後、攻撃検知装置50は、検知対象IDを含むメッセージを受信する毎に、図19〜図20に示すフローチャートの処理を実行してネットワークへの攻撃をモニタする。このとき、攻撃検知装置50は、r個のメッセージ(攻撃メッセージを除く)を受信する毎にカウント値nおよび予測値を再設定する。rの値は、一定ではなく、再設定が実行される毎に乱数発生器により生成される。
<第2の実施例>
第1の実施例と同様に、第2の実施例でも、攻撃検知装置50は、検知対象IDを含むメッセージを受信する毎に、図19〜図20に示すフローチャートの処理を実行してネットワークへの攻撃をモニタする。また、攻撃検知装置50は、図22に示すメッセージM0〜M2、MX、M3〜M6を受信する。ただし、第2の実施例では、検知対象IDを含むメッセージの受信タイムスタンプを利用して閾値rが決定される。
また、実施例2においては以下のパラメータが使用される。
送信周期TC:1秒
タイミングパラメータp:0.5
閾値rの初期値:5
(1)時刻5.00(=RT(0))においてメッセージM0が到着すると、攻撃検知装置50は攻撃検知を開始する。具体的には、攻撃検知装置50は、以下のようにパラメータを設定する。このとき、再設定タイミング決定部56は、メモリ205に格納されている閾値rの初期値を取得する。
モニタ期間の終了時刻t(1):6.5m秒(t(1)=RT(0)+1.5×1)
カウント値n:ゼロ
予測値x:1
警告フラグ:OFF
閾値r:5
変数q:500
なお、変数qは、閾値rを計算するために使用される。また、変数qの初期値は、この実施例では、基準メッセージの受信時刻(即ち、受信タイムスタンプ)を表す。
(2)時刻5.98(=RT(1))においてメッセージM1が到着すると、カウント値nがゼロから1にインクリメントされる。ここで、メッセージM1は、t(1)よりも前に到着している。よって、予測値xは変化しない。そして、カウント値nは予測値x以下なので、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。なお、警告フラグは、OFF状態を維持する。
再設定タイミング決定部56は、メッセージM1の受信時刻を利用して変数qを更新する。図19に示すフローチャートでは、S101において変数qが更新される。この例では、新たな変数qは、現在の変数qとメッセージM1の受信時刻とのXOR演算により得られる。ここで、現在の変数qは500であり、メッセージM1の受信時刻は598である。よって、現在の変数qとメッセージM1の受信時刻とのXOR演算は、以下の通りである。
500:0000000111110100
598:0000001001010110
EXO:0000001110100010(=930)
そして、再設定タイミング決定部56は、この演算結果を変数qとして保存する。なお、カウント値nが閾値rより小さいので、再設定は実行されない。
(3)時刻7.03(=RT(2))においてメッセージM2が到着すると、カウント値nが1から2にインクリメントされる。ここで、メッセージM2は、t(1)よりも後に到着している。よって、予測値xが1から2に更新される。また、下式により次のモニタ期間の終了時刻t(2)が計算される。
t(2)=t(1)+1=7.5
カウント値nは、予測値x以下である。したがって、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。なお、警告フラグは、OFF状態を維持する。また、変数qは、メッセージM2の受信時刻「703」とのXOR演算により「285」に更新される。ただし、カウント値nが閾値rより小さいので、再設定は実行されない。
(4)時刻7.50(=RT(3))において攻撃メッセージMXが到着すると、カウント値nが2から3にインクリメントされる。ここで、攻撃メッセージMXは、t(2)以前に到着している。よって、予測値xは変化しない。すなわち、予測値xは2である。そうすると、カウント値nは条件「n=x+1」を満足するので、警告フラグがチェックされる。ここで、警告フラグはOFF状態なので、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。ただし、警告フラグは、OFF状態からON状態に変更される。また、変数qは、攻撃メッセージMXの受信時刻「750」とのXOR演算により「1011」に更新される。ただし、カウント値nが閾値rより小さいので、再設定は実行されない。
(5)時刻8.00(=RT(4))においてメッセージM3が到着すると、カウント値nが3から4にインクリメントされる。ここで、メッセージM3はt(2)よりも後に到着している。よって、予測値xが2から3に更新される。また、下式により次のモニタ期間の終了時刻t(4)が計算される。
t(3)=t(2)+1=8.5
カウント値nは条件「n=x+1」を満足するので、警告フラグがチェックされる。ここで、警告フラグはON状態なので、攻撃検知装置50は、ネットワークが攻撃されたと判定する。この後、カウント値nは4から3に更新され、警告フラグはON状態からOFF状態に変更される。また、変数qは、メッセージM3の受信時刻「800」とのXOR演算により「211」に更新される。ただし、更新された後のカウント値nが閾値rより小さいので、再設定は実行されない。
(6)時刻8.95(=RT(5))においてメッセージM4が到着すると、カウント値nが3から4にインクリメントされる。ここで、メッセージM4はt(3)よりも後に到着している。よって、予測値xが3から4に更新される。また、下式により次のモニタ期間の終了時刻t(4)が計算される。
t(4)=t(3)+1=9.5
カウント値nは予測値x以下なので、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。警告フラグは、OFF状態を維持する。変数qは、メッセージM4の受信時刻「895」とのXOR演算により「940」に更新される。なお、カウント値nが閾値rより小さいので、再設定は実行されない。
(7)時刻10.03(=RT(6))においてメッセージM5が到着すると、カウント値nが4から5にインクリメントされる。ここで、メッセージM5は、t(4)よりも後に到着している。よって、予測値xが4から5に更新される。また、下式により次のモニタ期間の終了時刻t(5)が計算される。
t(5)=t(4)+1=10.5
カウント値nは予測値x以下なので、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。警告フラグは、OFF状態を維持する。変数qは、メッセージM5の受信時刻「1003」とのXOR演算により「71」に更新される。このとき、カウント値nが閾値rに達している。よって、攻撃検知装置50は再設定を実行する。すなわち、カウント値nは5からゼロに更新され、予測値xも5からゼロに更新される。また、モニタ期間の終了時刻t(5)が下式により再計算される。
t(5)=RT(6)+0.5×1=10.53
さらに、再設定タイミング決定部56は、変数qの下位5ビットを抽出することにより新たな閾値rを決定する。この例では、r=7が得られる。
この後、攻撃検知装置50は、次の再設定が行われるまで、閾値rが7である状態で攻撃検知を行う。そして、攻撃検知装置50が7個の正規メッセージを受信すると、カウント値および予測値の再設定が実行される。
(8)時刻11.05(=RT(7))においてメッセージM6が到着すると、カウント値nがゼロから1にインクリメントされる。ここで、メッセージM2は、t(5)よりも後に到着している。よって、予測値xがゼロから1に更新される。また、下式により次のモニタ期間の終了時刻t(6)が計算される。
t(6)=t(5)+1=11.53
カウント値nは、予測値x以下である。したがって、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。警告フラグは、OFF状態を維持する。変数qは、メッセージM6の受信時刻「1105」とのXOR演算により「1046」に更新される。ただし、カウント値nが閾値rより小さいので、再設定は実行されない。
この後、攻撃検知装置50は、検知対象IDを含むメッセージを受信する毎に、図19〜図20に示すフローチャートの処理を実行してネットワークへの攻撃をモニタする。このとき、攻撃検知装置50は、r個のメッセージ(攻撃メッセージを除く)を受信する毎にカウント値nおよび予測値を再設定する。ここで、rの値は、一定ではなく、再設定が実行される毎に検知対象IDを含むメッセージの受信タイムスタンプに基づいて決定される。なお、再設定時に計算される閾値rがゼロであるときは、例えば、前回の閾値rを使用してもよいし、変数qの上位ビットに基づいて決定してもよい。
<第3の実施例>
第2の実施例では、検知対象IDを含むメッセージの受信タイムスタンプに基づいて閾値rが決定される。これに対して、第3の実施例では、検知対象IDを含むメッセージおよび他のIDを含むメッセージの受信タイムスタンプに基づいて閾値rが決定される。図23に示す例では、ID_1は検知対象IDを表し、ID_2は他のIDを表す。なお、検知動作の開始時に設定されるパラメータは、第2の実施例および第3の実施例において同じであり、以下の通りである。
送信周期TC:1秒
タイミングパラメータp:0.5
閾値rの初期値:5
第1〜第2の実施例と同様に、第3の実施例でも、攻撃検知装置50は、検知対象IDを含むメッセージ(M0〜M2、MX、M3〜M6)を受信する毎に、図19〜図20に示すフローチャートの処理を実行してネットワークへの攻撃をモニタする。また、攻撃検知装置50は、検知対象でないID(ここでは、ID_2)を含むメッセージM11〜M16を受信する。
(1)時刻5.00(=RT(0))においてメッセージM0が到着すると、攻撃検知装置50は攻撃検知を開始する。具体的には、攻撃検知装置50は、以下のようにパラメータを設定する。このとき、再設定タイミング決定部56は、メモリ205に格納されている閾値rの初期値を取得する。
モニタ期間の終了時刻t(1):6.5m秒(t(1)=RT(0)+1.5×1)
カウント値n:ゼロ
予測値x:1
警告フラグ:OFF
閾値r:5
変数q:500
(2)時刻5.50において他のIDを含むメッセージM11が到着する。そうすると、変数qは、メッセージM11の受信時刻「550」とのXOR演算により「978」に更新される。
(3)時刻5.98(=RT(1))においてメッセージM1が到着すると、カウント値nがゼロから1にインクリメントされる。ここで、メッセージM1は、t(1)よりも前に到着している。よって、予測値xは変化しない。そして、カウント値nは予測値x以下なので、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。警告フラグは、OFF状態を維持する。変数qは、メッセージM1の受信時刻「598」とのXOR演算により「388」に更新される。なお、カウント値nが閾値rより小さいので、再設定は実行されない。
(4)時刻6.55において他のIDを含むメッセージM12が到着する。そうすると、変数qは、メッセージM12の受信時刻「655」とのXOR演算により「779」に更新される。
(5)時刻7.03(=RT(2))においてメッセージM2が到着すると、カウント値nが1から2にインクリメントされる。ここで、メッセージM2は、t(1)よりも後に到着している。よって、予測値xが1から2に更新される。また、下式により次のモニタ期間の終了時刻t(2)が計算される。
t(2)=t(1)+1=7.5
カウント値nは、予測値x以下である。よって、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。警告フラグは、OFF状態を維持する。変数qは、メッセージM2の受信時刻「703」とのXOR演算により「285」に更新される。なお、カウント値nが閾値rより小さいので、再設定は実行されない。
(6)時刻7.45において他のIDを含むメッセージM13が到着する。そうすると、変数qは、メッセージM13の受信時刻「745」とのXOR演算により「482」に更新される。
(7)時刻7.50(=RT(3))において攻撃メッセージMXが到着すると、カウント値nが2から3にインクリメントされる。ここで、攻撃メッセージMXは、t(2)以前に到着している。よって、予測値xは変化しない。すなわち、予測値xは2である。そうすると、カウント値nは条件「n=x+1」を満足するので、警告フラグがチェックされる。ここで、警告フラグはOFF状態なので、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。ただし、警告フラグは、OFF状態からON状態に変更される。また、変数qは、攻撃メッセージMXの受信時刻「750」とのXOR演算により「780」に更新される。なお、カウント値nが閾値rより小さいので、再設定は実行されない。
(8)時刻8.00(=RT(4))においてメッセージM3が到着すると、カウント値nが3から4にインクリメントされる。ここで、メッセージM3はt(2)よりも後に到着している。よって、予測値xが2から3に更新される。また、下式により次のモニタ期間の終了時刻t(4)が計算される。
t(3)=t(2)+1=8.5
カウント値nは条件「n=x+1」を満足するので、警告フラグがチェックされる。ここで、警告フラグはON状態なので、攻撃検知装置50は、ネットワークが攻撃されたと判定する。この後、カウント値nは4から3に更新され、警告フラグはON状態からOFF状態に変更される。また、変数qは、メッセージM3の受信時刻「800」とのXOR演算により「44」に更新される。なお、更新された後のカウント値nが閾値rより小さいので、再設定は実行されない。
(9)時刻8.51において他のIDを含むメッセージM14が到着する。そうすると、変数qは、メッセージM14の受信時刻「851」とのXOR演算により「895」に更新される。
(10)時刻8.95(=RT(5))においてメッセージM4が到着すると、カウント値nが3から4にインクリメントされる。ここで、メッセージM4はt(3)よりも後に到着している。よって、予測値xが3から4に更新される。また、下式により次のモニタ期間の終了時刻t(4)が計算される。
t(4)=t(3)+1=9.5
カウント値nは予測値x以下なので、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。警告フラグは、OFF状態を維持する。変数qは、メッセージM4の受信時刻「895」とのXOR演算により「0」に更新される。なお、カウント値nが閾値rより小さいので、再設定は実行されない。
(11)時刻9.48において他のIDを含むメッセージM15が到着する。そうすると、変数qは、メッセージM15の受信時刻「948」とのXOR演算により「948」に更新される。
(12)時刻10.03(=RT(6))においてメッセージM5が到着すると、カウント値nが4から5にインクリメントされる。ここで、メッセージM5は、t(4)よりも後に到着している。よって、予測値xが4から5に更新される。また、下式により次のモニタ期間の終了時刻t(5)が計算される。
t(5)=t(4)+1=10.5
カウント値nは予測値x以下なので、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。警告フラグは、OFF状態を維持する。変数qは、メッセージM5の受信時刻「1003」とのXOR演算により「95」に更新される。このとき、カウント値nが閾値rに達している。よって、攻撃検知装置50は再設定を実行する。すなわち、カウント値nは5からゼロに更新され、予測値xも5からゼロに更新される。また、モニタ期間の終了時刻t(5)が下式により再計算される。
t(5)=RT(6)+0.5×1=10.53
さらに、再設定タイミング決定部56は、変数qの下位5ビットを抽出することにより新たな閾値rを決定する。この例では、r=31が得られる。
この後、攻撃検知装置50は、次の再設定が行われるまで、閾値rが31である状態で攻撃検知を行う。そして、攻撃検知装置50が31個の正規メッセージを受信すると、カウント値および予測値の再設定が実行される。
(13)時刻10.50において他のIDを含むメッセージM16が到着する。そうすると、変数qは、メッセージM16の受信時刻「1050」とのXOR演算により「1093」に更新される。
(14)時刻11.05(=RT(7))においてメッセージM6が到着すると、カウント値nがゼロから1にインクリメントされる。ここで、メッセージM2は、t(5)よりも後に到着している。よって、予測値xがゼロから1に更新される。また、下式により次のモニタ期間の終了時刻t(6)が計算される。
t(6)=t(5)+1=11.53
カウント値nは、予測値x以下である。したがって、攻撃検知装置50は、ネットワークは攻撃されていないと判定する。警告フラグは、OFF状態を維持する。変数qは、メッセージM6の受信時刻「1105」とのXOR演算により「20」に更新される。なお、カウント値nが閾値rより小さいので、再設定は実行されない。
この後、攻撃検知装置50は、検知対象IDを含むメッセージを受信する毎に、図19〜図20に示すフローチャートの処理を実行してネットワークへの攻撃をモニタする。このとき、攻撃検知装置50は、r個の検知対象IDを含むメッセージ(攻撃メッセージを除く)を受信する毎にカウント値nおよび予測値を再設定する。rの値は、一定ではなく、再設定が実行される毎に、検知対象IDを含むメッセージおよび他のIDを含むメッセージの受信タイムスタンプに基づいて決定される。なお、再設定時に計算される閾値rがゼロであるときは、例えば、前回の閾値rを使用してもよいし、変数qの上位ビットに基づいて決定してもよい。
上述の実施例を含む実施形態に関し、さらに下記の付記を開示する。
(付記1)
ネットワーク内で送信される、識別情報を含むメッセージを受信する送受信部と、
前記送受信部が受信したメッセージの中から検知対象の識別情報を含む基準メッセージを指定する指定部と、
前記指定部が基準メッセージを指定したときから次の基準メッセージを指定するまでの期間に、前記送受信部が受信すべき、前記検知対象の識別情報を含むメッセージの数を表す受信メッセージ数を決定する決定部と、
前記基準メッセージに対して、前記決定部により決定された受信メッセージ数と同数の検知期間を、前記検知対象の識別情報に対応する送信周期に基づいて設定する検知期間設定部と、
前記検知対象の識別情報を含むメッセージの受信時刻が対応する検知期間内に入っているか否かに応じて、前記ネットワークへの攻撃の有無を判定する判定部と、を備え、
前記決定部は、前記検知期間設定部が検知期間を設定する毎に前記受信メッセージ数を決定する
ことを特徴とする攻撃検知装置。
(付記2)
前記決定部は、乱数発生器を用いて前記受信メッセージ数を決定する
ことを特徴とする付記1に記載の攻撃検知装置。
(付記3)
前記決定部は、前記ネットワーク内で送信されるメッセージのタイムスタンプに基づいて前記受信メッセージ数を決定する
ことを特徴とする付記1に記載の攻撃検知装置。
(付記4)
前記決定部は、前記検知対象の識別情報を含むメッセージのタイムスタンプに基づいて前記受信メッセージ数を決定する
ことを特徴とする付記3に記載の攻撃検知装置。
(付記5)
前記決定部は、前記検知対象の識別情報を含むメッセージのタイムスタンプおよび前記検知対象の識別情報と異なる識別情報を含むメッセージのタイムスタンプに基づいて前記受信メッセージ数を決定する
ことを特徴とする付記3に記載の攻撃検知装置。
(付記6)
前記決定部は、前記ネットワーク内で送信されるメッセージのデータ部の値に基づいて前記受信メッセージ数を決定する
ことを特徴とする付記1に記載の攻撃検知装置。
(付記7)
ネットワーク内で送信される、識別情報を含むメッセージを受信する受信部と、
所定のモニタ期間内に前記受信部が受信する、検知対象の識別情報を含むメッセージの個数を、前記検知対象の識別情報に対応する送信周期に基づいて予測する予測部と、
前記モニタ期間内に前記受信部が受信した、前記検知対象の識別情報を含むメッセージの個数をカウントするカウント部と、
前記予測部により得られる予測値および前記カウント部により得られるカウント値に基づいて、前記ネットワークに対する攻撃の有無を判定する判定部と、
前記カウント値が所定の閾値以上であるときに、前記カウント値および前記予測値を再設定する再設定制御部と、
前記閾値を決定する決定部と、を備え、
前記決定部は、前記再設定制御部が前記カウント値および前記予測値を再設定する毎に前記閾値を決定する
ことを特徴とする攻撃検知装置。
(付記8)
前記決定部は、乱数発生器を用いて前記閾値を決定する
ことを特徴とする付記7に記載の攻撃検知装置。
(付記9)
前記決定部は、前記ネットワーク内で送信されるメッセージのタイムスタンプに基づいて前記閾値を決定する
ことを特徴とする付記7に記載の攻撃検知装置。
(付記10)
前記決定部は、前記検知対象の識別情報を含むメッセージのタイムスタンプに基づいて前記閾値を決定する
ことを特徴とする付記9に記載の攻撃検知装置。
(付記11)
前記決定部は、前記検知対象の識別情報を含むメッセージのタイムスタンプおよび前記検知対象の識別情報と異なる識別情報を含むメッセージのタイムスタンプに基づいて前記閾値を決定する
ことを特徴とする付記9に記載の攻撃検知装置。
(付記12)
前記決定部は、前記ネットワーク内で送信されるメッセージのデータ部の値に基づいて前記閾値を決定する
ことを特徴とする付記7に記載の攻撃検知装置。
(付記13)
ネットワーク内で送信される、識別情報を含むメッセージを受信し、
受信メッセージの中から検知対象の識別情報を含む基準メッセージを指定し、
基準メッセージを指定したときから次の基準メッセージが指定されるまでの期間に受信すべき、前記検知対象の識別情報を含むメッセージの数を表す受信メッセージ数を決定し、
前記基準メッセージに対して、決定された受信メッセージ数と同数の検知期間を、前記検知対象の識別情報に対応する送信周期に基づいて設定し、
前記検知対象の識別情報を含むメッセージの受信時刻が対応する検知期間内に入っているか否かに応じて、前記ネットワークへの攻撃の有無を判定し、
前記検知期間が設定される毎に前記受信メッセージ数を決定する
ことを特徴とする攻撃検知方法。
(付記14)
ネットワーク内で送信される、識別情報を含むメッセージを受信し、
所定のモニタ期間内に受信する、検知対象の識別情報を含むメッセージの個数を、前記検知対象の識別情報に対応する送信周期に基づいて予測し、
前記モニタ期間内に受信した、前記検知対象の識別情報を含むメッセージの個数をカウントし、
前記予測により得られる予測値および前記カウントにより得られるカウント値に基づいて、前記ネットワークに対する攻撃の有無を判定し、
前記カウント値が所定の閾値以上であるときに、前記カウント値および前記予測値を再設定し、
前記カウント値および前記予測値が再設定される毎に前記閾値を決定する
ことを特徴とする攻撃検知方法。
(付記15)
ネットワークを介して受信するメッセージの中から検知対象の識別情報を含む基準メッセージを指定し、
基準メッセージを指定したときから次の基準メッセージが指定されるまでの期間に受信すべき、前記検知対象の識別情報を含むメッセージの数を表す受信メッセージ数を決定し、
前記基準メッセージに対して、決定された受信メッセージ数と同数の検知期間を、前記検知対象の識別情報に対応する送信周期に基づいて設定し、
前記検知対象の識別情報を含むメッセージの受信時刻が対応する検知期間内に入っているか否かに応じて、前記ネットワークへの攻撃の有無を判定する
処理をプロセッサに実行させる攻撃検知プログラムであり、
前記検知期間が設定される毎に前記受信メッセージ数を決定する
ことを特徴とする攻撃検知プログラム。
(付記16)
所定のモニタ期間内にネットワークを介して受信する、検知対象の識別情報を含むメッセージの個数を、前記検知対象の識別情報に対応する送信周期に基づいて予測し、
前記モニタ期間内に受信した、前記検知対象の識別情報を含むメッセージの個数をカウントし、
前記予測により得られる予測値および前記カウントにより得られるカウント値に基づいて、前記ネットワークに対する攻撃の有無を判定し、
前記カウント値が所定の閾値以上であるときに、前記カウント値および前記予測値を再設定する
処理をプロセッサに実行させる攻撃検知プログラムであり、
前記カウント値および前記予測値が再設定される毎に前記閾値を決定する
ことを特徴とする攻撃検知プログラム。