(本開示の基礎になった知見)
CANネットワーク上に異常なメッセージが送信されたことを検知する機能が、当該検知結果、および、当該検知結果に関連する情報をログとして生成し、出力する場合、異常の検知に至った状況の詳細な事後確認がなされるためには、多くのデータが必要とされる。しかし、ログの出力先の記憶容量、または、ログの出力先に検知結果を送出するための通信量が多い場合、多大な時間的または資源的コストがかかる。
そこで、本開示の一態様に係る異常判定方法は、受信メッセージの異常を判定する異常判定方法であって、周期性を有する複数のメッセージを含む複数のメッセージであって、固定されている値を有する第1フィールドと、変化する値を有する第2フィールドとをそれぞれが含む複数のメッセージのそれぞれを前記受信メッセージとして受信し、前記異常判定方法が実行されうる時間、負荷量、データ量、または、メッセージの個数のうちの1以上の基準に応じて、前記周期性に基づく受信タイミング、または、前記受信メッセージの個数が用いられる異常判定、前記第1フィールドが用いられる異常判定、および、前記第2フィールドが用いられる異常判定を含む複数の異常判定のうちの1以上でそれぞれが構成される複数の組み合わせのいずれで判定が行われるかを選択する。
これにより、本開示の一態様に係る異常判定方法は、限られた時間である検知処理時間に応じて、適切な異常検知処理を行うことができる。
また、本開示の一態様に係る異常判定装置は、ネットワーク及び前記ネットワークに接続される1以上の電子制御ユニットを含む車載ネットワークシステムにおける異常判定装置であって、1個以上のプロセッサと、前記1個以上のプロセッサからアクセス可能な記憶部と、を含み、前記1個以上のプロセッサは、前記ネットワークから、周期性を有する複数のメッセージを含む複数のメッセージであって、固定されている値を有する第1フィールドと、変化する値を有する第2フィールドとをそれぞれが含む複数のメッセージのそれぞれを前記受信メッセージとして受信し、前記異常判定方法が実行されうる時間、負荷量、データ量、または、メッセージの個数のうちの1以上の基準に応じて、前記周期性に基づく受信タイミング、または、前記受信メッセージの個数が用いられる異常判定、前記第1フィールドが用いられる異常判定、および、前記第2フィールドが用いられる異常判定を含む複数の異常判定のうちの1以上でそれぞれが構成される複数の組み合わせのいずれで判定が行われるかを選択する。
これにより、本開示の一態様に係る異常判定装置は、限られた時間である検知処理時間に応じて、適切な異常検知処理を行うことができる。
また、本開示の一態様に係るプログラムは、上記の異常判定装置において、前記1個以上のプロセッサに上記の異常判定方法を実施させるためのプログラムである。
これにより、検知処理時間に応じて適切な異常検知処理を行うことができる。
以下、実施の形態について図面を参照しながら具体的に説明する。
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置および接続形態、ステップ、ステップの順序などは一例であり、本開示を限定する趣旨ではない。以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素は、任意で含まれる構成要素として説明されるものである。
(実施の形態1)
[1.概要]
本実施の形態では、車載ネットワークシステムにおいて、異常検知処理を実行されうる時間に応じて、異常を判定する機能の実行を適切に制御し、異常を判定する場合について図面を参照しながら、詳細に説明する。
[1.1 車載ネットワークシステムの全体構成]
図1は、本実施の形態における車載ネットワークシステムの全体構成を示すブロック図である。
図1において、車載ネットワークシステム10は、CANネットワークで構成され、ECU100a、ECU100b、ECU100c、及び、ECU100dと、バス200a及びバス200bと、ゲートウェイ300とを含む。なお、ECU100a、ECU100b、ECU100c、及び、ECU100d等は、電子制御ユニットの一例である。
以下では、ECU100a、ECU100b、ECU100c、及び、ECU100dに対して、これらを集合的に、又は特定しない一部を指して、ECU100として説明する場合がある。
また、以下では、バス200a、及び、バス200bに対して、これらを集合的に、又は特定しない一方を指して、バス200として説明する場合がある。
ECU100aはエンジン101に接続され、ECU100bはブレーキ102に接続され、ECU100cはドア開閉センサ103に接続され、ECU100dはウィンドウ開閉センサ104に接続されている。
ECU100は、接続されている機器の状態を表すメッセージを取得し、取得した状態を表すメッセージを周期的にバス200に送出している。例えばECU100aは、エンジン101の状態の1つである回転数に関する情報を取得し、この回転数を表すデータ値を含むメッセージに所定のIDを付けてバス200に送出する。
また、各ECU100は、他のECU100が送信したメッセージをバス200から読み出し、メッセージに付されたIDに応じて選択的に受信する。この選択的な受信については後述する。
ゲートウェイ300は、ECU100a及びECU100bが接続されているバス200aと、ECU100c及びECU100dが接続されているバス200bとを接続している。ゲートウェイ300は一方のバス200から受信したメッセージを、もう一方のバス200に転送する機能を持つ。ゲートウェイ300もまた、CANネットワーク上ではひとつのノードである。
なお、車載ネットワークシステムは、メッセージが異常なメッセージであるか否かの判定を行い、異常判定方法等が適用可能な対象を説明するための例であり、その適用対象は車載ネットワークシステムに限定されない。
[1.2 メッセージのデータフォーマット]
図2は、CANプロトコルのメッセージ(データフレーム)のフォーマットを示す図である。ここではCANプロトコルにおける標準IDフォーマットにおけるメッセージを示している。
メッセージは、Start Of Frame(SOF)と、IDフィールド、Remote Transimission Request(RTR)と、IDE(IDentifier Extension)と、予約bit(r)と、データレングスコード(DLC)と、データフィールドと、CRC(Cycric Redundancy Check)シーケンス、CRCデリミタ(図中、左のDEL)と、ACK(Acknowledgement)スロットと、ACKデリミタ(図中、右のDEL)と、EOF(End Of Frame)とから構成される。
SOFは、1bitのドミナントである。ドミナントは、優性の意である。ドミナントは、データの伝達にデジタル方式が用いられるCANネットワークにおいて、“0”の値を送信するようにバスを構成する2本のケーブルに電圧がかけられた状態、または送信されるこの“0”の値のことである。これに対し、バスを構成する2本のケーブルに“1”の値を送信するように電圧がかけられた状態、または送信されるこの“1”の値のことはレセシブと呼ばれる。レセシブは、劣勢の意である。2つのノードからバスに同時に“0”の値と“1”の値とが送信された場合には、“0”の値が優先される。アイドル時のバスはレセシブの状態である。各ECU100は、バス200の状態をレセシブからドミナントへ変化させることでメッセージの送信を開始し、他のECU100はこの変化を読み取って同期する。図2において、メッセージを構成するドミナント又はレセシブを示す線が実線である部分は、ドミナント又はレセシブの各値を取り得ることを示す。SOFはドミナントの状態で固定されているため、ドミナントの線は実線であり、レセシブの線は破線である。
IDとは、メッセージが含むデータの種類を示す11bitの値である。またCANでは、複数のノードが同時に送信を開始したメッセージ間での通信調停において、IDの値がより小さいメッセージがより高い優先度となるよう設計されている。IDとは、メッセージIDおよびCAN IDと同義である。
RTRとは、フレームがメッセージであることを示す1bitのドミナントである。
IDEとは、それぞれ1bitのドミナントである。メッセージはデータフレームともいう。
DLCは、続くデータフィールドの長さを示す4bitの値である。
データフィールドは、送信されるデータの内容を示す値であり、最大64bit長で、8bit単位で長さを調整できる。送られるデータのこの部分への割り当てに関する仕様は、車種又は製造者に依存する。
CRCシーケンスは、SOF、IDフィールド、コントロールフィールド、データフィールドの送信値より算出される15bitの値である。
CRCデリミタは1bitのレセシブ固定の、CRCシーケンスの終了を表す区切り記号である。受信ノードは、受信したメッセージのSOF、IDフィールド、コントロールフィールド、及びデータフィールドの値から算出した結果をCRCシーケンスの値と比較することで異常の有無を判断する。
ACKスロットは1bit長で、送信ノードはこの部分でレセシブを送信する。受信ノードはCRCシーケンスまで正常に受信ができていれば確認応答としてドミナントを送信する。ドミナントが優先されるため、1メッセージの通信がCRCシーケンスまで正常に行われていれば、ACKスロットの送信中のバス200はドミナントである。
ACKデリミタは1bitのレセシブに固定されており、ACKスロットの終了を表す区切り記号である。
EOFは7bitのレセシブに固定されており、メッセージの終了を示す。
[1.3 ゲートウェイの構成]
図3は、実施の形態1における車載ネットワークシステム10に含まれるゲートウェイ300の一例を示すブロック図である。図3において、ゲートウェイ300は、フレーム送受信部310と、フレーム解釈部320と、受信ID判定部330と、受信IDリスト保持部340と、フレーム処理部350と、転送ルール保持部360と、異常検知処理機能群370と、フレーム生成部380とを備える。
なお、これらの構成は機能を示す構成であり、ゲートウェイ300は、例えばプロセッサで実現される処理部、半導体メモリ等で実現される記憶部、入出力ポートで実現される入出力部等を備える情報処理装置として提供される。
上記の機能を示す構成は、記憶部に保持されるプログラムを処理部により読み出し、実行し、記憶部へ所定のデータを記録することで実現される。若しくは、記憶部へ所定のデータを記録することの代わりに、入出力部を介してデータの送受信を実行することでこれらの構成が実現されてもよい。又は、上記の機能を示す構成は、これらの組み合わせで実現されてもよい。
フレーム送受信部310は、バス200a、200bのそれぞれに対して、CANのプロトコルに従ったメッセージを送受信する。
より具体的には、フレーム送受信部310は、バス200に送出されたメッセージを1bitずつ読み出し、読み出したメッセージをフレーム解釈部320に転送する。
また、フレーム送受信部310は、フレーム生成部380より送信されたバス情報に応じて、メッセージをバス200a及び200bに1bitずつ送出する。
フレーム送受信部310は、バス200aから受信したメッセージをバス200bに送信し、バス200bから受信したメッセージをバス200aに送信することでバス200間でのメッセージの転送を実行する。
フレーム解釈部320は、フレーム送受信部310よりメッセージの値を受け取り、CANプロトコルにおける各フィールドにマッピングして、受信したメッセージの解釈を行う。フレーム解釈部320は、IDフィールドの値と解釈した一連の値を、受信ID判定部330へ転送する。
フレーム解釈部320はさらに、受信ID判定部330から送出される判定結果に応じて、メッセージのIDフィールドの値及びIDフィールド以降に現れるデータフィールドをフレーム処理部350へ転送するか、メッセージの受信を中止するかを決定する。
また、フレーム解釈部320は、受信したメッセージがCANプロトコルに則っていないメッセージと判断した場合は、エラーフレームを送信するようにフレーム生成部380へ要求する。
エラーフレームは、CANネットワーク上でエラーが発生した場合に、ノードから送信される、上述のメッセージとは異なる、CANプロトコルで規定される所定のフォーマットのフレームである。エラーフレームがバスに送出されると、そのネットワークでのメッセージの送信は中断される。
また、フレーム解釈部320は、他のノードが送信したエラーフレームを受信したと解釈した場合、読み取り中のメッセージを破棄する。
受信ID判定部330は、フレーム解釈部320からIDフィールドの値を受け取り、受信IDリスト保持部340が保持しているメッセージIDのリストに従い、読み出したメッセージを受信するか否かの判定を行う。受信ID判定部330は、この判定の結果をフレーム解釈部320へ送出する。
受信IDリスト保持部340は、ゲートウェイ300が受信するメッセージIDのリスト(受信IDリストともいう)を保持する。図4は、実施の形態1における受信IDリストの一例を示す図である。図4における受信IDリストの詳細は、後述する。
フレーム処理部350は、転送ルール保持部360が保持するデータ転送に関するルールに従って、受信したメッセージのIDに応じて転送先のバス200を決定し、転送先となるバス200を示す情報と、フレーム解釈部320より送出されたメッセージIDと、転送するデータとをフレーム生成部380へ送出する。
またフレーム処理部350は、フレーム解釈部320より受け取ったメッセージを異常検知処理機能群370へ送り、異常検知処理機能群370に対して、そのメッセージが、異常なメッセージであるか否かの判定を行うように要求する。フレーム処理部350は、異常検知処理機能群370において異常なメッセージであると判定されたメッセージを転送しない。
転送ルール保持部360は、バス200毎のデータ転送に関するルール(以下、転送ルールともいう)を保持する。図5は、実施の形態1における転送ルールの一例を示す図である。図5における転送ルールの詳細は、後述する。
異常検知処理機能群370は、受信中のメッセージが異常なメッセージであるか否かの判定する機能群である。異常検知処理機能群370に含まれる機能構成の詳細は後述する。異常検知処理機能群370は、判定結果をフレーム処理部350へ送出する。
フレーム生成部380は、フレーム解釈部320からのエラーフレーム送信の要求に従い、エラーフレームを生成し、フレーム送受信部310にエラーフレームを送出させる。
またフレーム生成部380は、フレーム処理部350より受け取ったメッセージID及びデータを使ってメッセージフレームを生成し、バス情報とともに、フレーム送受信部310にメッセージフレームを送出する。
[1.4 受信IDリスト]
図4に示されるように、受信IDリストは、ゲートウェイ300が、受信して処理を行うメッセージのメッセージIDのリストであり、受信IDリスト保持部340で保持されている。
図4において、受信IDリストは、各行にメッセージのIDが格納されている。図4の受信IDリストは、メッセージIDが、「1」、「2」、「3」及び「4」であり、ゲートウェイ300は、これらのメッセージIDのメッセージを受信する。ゲートウェイ300は、受信IDリストに含まれないメッセージIDのメッセージの受信を中止する。
なお、IDの値及び受信IDリストに含まれるIDの個数は説明のための一例であり、ゲートウェイ300で用いられる受信IDリストの構成をこれに限定するものではない。
[1.5 転送ルール]
転送ルールは、転送ルール保持部360で保持されている。図5において、転送ルールは、各行にメッセージの転送元のバス200と転送先のバス200、及び転送対象のメッセージIDの組み合わせが格納されている。
具体的には、転送ルールの1行目は、転送元「バス200a」、転送先「バス200b」、ID「*」であり、ゲートウェイ300は、バス200aから受信するメッセージを、IDが何であってもバス200bに転送する、というルールである。転送ルールの2行目は、転送元「バス200b」、転送先「バス200a」、ID「3」であり、ゲートウェイ300は、バス200bから受信するメッセージは、IDが「3」のメッセージであればバス200aに転送する、というルールである。
[1.6 異常検知処理機能群の構成]
図6は、実施の形態1における異常検知処理機能群の一例を示すブロック図である。図6において、異常検知処理機能群370は、判定機能選択部371と、制御部372と、異常検知部373と、検知ルール保持部381とを含む。
なお、これらの構成は機能を示す構成であり、これらの構成は、ゲートウェイ300において、記憶部に保持されるプログラムを、処理部が、読み出し、実行すること、処理部が記憶部へ所定のデータを格納すること、または、処理部が入出力部を介してデータの送受信を実行することで実現される、又は、これらの組み合わせで実現される。
判定機能選択部371は、異常検知部373が備える判定機能のうち、どの判定機能を実行するかを選択して制御部に送出する。判定機能選択部371は、異常検知部373の異常検知処理に利用可能な時間(検知処理時間)を算出し、当該検知処理時間に収まるように判定機能を選択する。図7は、実施の形態1における判定機能と処理時間・検知性能の関係の一例を示す図である。例えば、判定機能選択部371は、図7に示すような判定機能毎の処理時間と、検知性能(例えば誤検知率と検知率)を保持しており、判定機能選択部371が算出した検知処理時間に収まる判定機能の組み合わせを求め、当該判定機能を選択する。この時、判定機能選択部371が算出した検知処理時間に収まる判定機能の組み合わせが複数あれば、検知性能が一番よい組み合わせ(例えば、誤検知率が低く、検知率が高い組み合わせ)を選択する。
制御部372は、異常検知部373が備える判定機能のうち、判定機能選択部371が選択した機能を、異常検知部373が実行するように制御する。
異常検知部373は、少なくとも7種類の判定機能を含んでいる。具体的には、判定機能として、単位時間あたりに送信されるメッセージ量(メッセージ量はデータ量ともいう)からDoS攻撃が発生しているかどうかを判定する機能、メッセージのIDフィールドをチェックする機能、メッセージのデータ長をチェックする機能、メッセージが送信される周期(周期は時間間隔でもよい)をCAN ID毎にチェックする機能、メッセージが送信される頻度をCAN ID毎にチェックする機能、及び、メッセージのデータフィールドの値(データフィールドの値をデータ値と呼ぶ)をチェックする機能を含む。
上述した機能は、順に、DoS攻撃判定機能、ID判定機能、データ長判定機能、送信周期判定機能、送信頻度判定機能、および、データ値判定機能と呼ばれる。周期性に基づく受信タイミング、または、受信メッセージの個数が用いられる異常判定は、DoS攻撃判定機能、送信周期判定機能、送信頻度判定機能等である。また、値が固定されているフィールドが用いられる異常判定は、ID判定機能等である。IDフィールド等の値が固定されているフィールドは、第1フィールドの具体例である。加えて、値が変化するフィールドが用いられる異常判定は、データ長判定機能およびデータ値判定機能等である。データフィールド等の値が変化するフィールドは、第2フィールドの具体例である。
さらに、これらの判定機能の判定結果、送信周期、頻度、データ値、又はデータ値の変化量などに基づいて車両の状態を認識し、車両状態をチェックする機能を含む。この機能は、車両状態判定機能と呼ばれる。さらに異常検知部373は、フレーム処理部350から受信したメッセージが異常なメッセージであるか否かを、これらの判定機能による判定結果から総合的に判定する総合判定機能を含む。そして、総合判定機能によって判定された結果が、異常検知部373による検知処理の結果となる。
検知ルール保持部381は、各判定機能を実行するために必要となる判定基準を保持している。検知ルール保持部381は、CAN ID毎に個別の判定基準を保持する。また、異常検知部373は、検知ルールが設定されていないために、判定機能を実行しない場合もある。制御部372は、検知ルール保持部381に格納されている判定基準に従って判定機能の実行を制御する。
なお、検知ルール保持部381が保持する判定基準は、上述したようにCAN ID毎に存在し、当該判定基準は、さらに、判定機能ごとに異なる。また、CAN ID毎に、判定基準が存在する判定機能が異なる。そして、CAN ID毎に存在する判定基準は、1つの判定機能に対して複数存在してもよい。これにより、判定機能選択部371が優先して選択する判定機能は、受信メッセージのCAN ID毎に異なる。
なお、判定機能選択部371は、算出した検知処理時間に収まる判定機能の組み合わせが複数あれば、検知性能が一番よい判定機能の組み合わせを選択するとしたが、これに限定されない。例えば、誤検知率が低く、検知率が高い組み合わせを選択するとしたが、これに限定されない。判定機能選択部371は、検知性能として誤検知率と検知率のどちらか片方だけを用いて、判定機能の組み合わせを選択してもよいし、誤検知率、または、検知率ではなく、検知精度(Precision)、F値(F−measure)、Infomedness、もしくは、Markednessなどの検知性能を表す評価指標、または、これらの組み合わせを用いてもよい。このため、判定機能選択部371は、システム毎に適切な指標を採用することで、対象となるシステムに応じた効果的な判定機能の組み合わせを選択することができる。
なお、判定機能選択部371は、算出した検知処理時間に収まる判定機能の組み合わせを求め、当該判定機能の組み合わせの中から適切な組み合わせを選択するとしたが、これに限定されない。図8は、実施の形態1における判定機能と処理時間・検知性能の関係の一例を示す図である。図8に示すように、例えば、DoS攻撃判定機能、ID判定機能、データ長判定機能、送信周期判定機能、データ値(範囲)判定機能、および、車両状態判定機能の順番で処理を行う場合に、実行する判定機能の範囲と、実行しない判定機能の範囲との選択を行ってもよい。ここで、判定機能の処理の順番は一例であり、これに限定されない。判定機能を実行する順番が異なってもよいし、他の判定機能が説明された判定機能に加わってもよい。
また、図9は、実施の形態1における判定機能と処理時間・検知性能の関係の一例を示す図である。判定機能選択部371は、図9に示すような各判定機能の組み合わせに対する処理時間と検知性能を事前に保持し、保持している組み合わせの1つを選択してもよい。これにより、異常検知部373は、システム毎に適切な順番で判定機能の処理を行い、実行する判定機能を適切に選択することができる。また、設計時などに、事前に、判定機能選択部371が選択する判定機能を決定しておくことで、選択に要する時間を減らすことができる。
なお、判定機能選択部371が、算出した検知処理時間に収まる判定機能の組み合わせを求め、その判定機能を選択するとしたが、これに限定されない。例えば、異常検知部373が何らかの異常を検知している際に、異常検知部373は、異常が検知された判定機能を必ず選択し、異常を検知していない判定機能の一部、または、全部を選択しなくてもよい。異常検知部373が異常を検知していない場合には、異常検知部373は、検知処理時間に収まる範囲で必要最低限の判定機能を選択してもよい。これにより、異常が検知されている判定機能による異常判定処理は異常検知部373によって選択され続けるため、継続して異常が検知され続けることが可能である。また、異常検知部373が異常を検知していない場合には、異常検知処理時間が短縮されることが可能である。
なお、フレーム送受信部310が、ゲートウェイ300に接続されている複数のネットワークからメッセージを受信している場合には、異常が発生しても車両の動作に影響がないメッセージが送信されているネットワークよりも、異常検知部373は、異常が発生すると車両の動作に影響があるメッセージが送信されているネットワークのメッセージに対する異常検知処理が長くなるように、判定機能を選択してもよい。また、異常検知部373は、メッセージ毎にどの判定機能を選択するかを決めてもよい。これにより、異常検知部373は、重要なメッセージに対する検知処理時間を十分に確保することができる可能性が高くなるため、車載ネットワークシステム10がより安全なものとなる。
なお、判定機能選択部371は、検知処理時間を算出するために、ゲートウェイ300がメッセージを受信してから転送が完了するまでに許された時間(許可時間)のうち、転送先のバス200の決定、または、フレーム送受信部310が実際に各バス200にメッセージを送信する処理などの転送処理に要した転送処理時間を除いた時間を検知処理時間としてもよい。また、判定機能選択部371は、許可時間から転送時間を除き、更に他に必要な処理も除いた時間を検知処理時間として算出してもよい。これにより、車載ネットワークシステム10が、異常検知処理をその他の処理よりも優先して実行することも可能であり、また、逆に、他の処理を異常検知処理よりも優先して実行することも可能である。
なお、判定機能選択部371は、検知処理時間を算出するとしたが、これに限定されるものではなく、異常検知処理機能群370に検知処理時間を算出する処理時間算出部があり、判定機能選択部371は処理時間算出部から処理時間を取得して、判定機能を選択してもよいし、異常検知処理機能群370はフレーム処理部350から検知処理時間を受け取り、それを元に判定機能を選択してもよい。これにより、異常検知処理機能群370以外も処理時間を算出する場合は、処理時間の算出を効率化することができる。
[1.7 ECUの構成]
図10は、実施の形態1における車載ネットワークシステムに含まれるECUの一例を示すブロック図である。図10において、ECU100は、フレーム送受信部110と、フレーム解釈部120と、受信ID判定部130と、受信IDリスト保持部140と、フレーム処理部150と、データ取得部170と、フレーム生成部180とを備える。
なお、これらの構成は機能を示す構成であり、これらの構成は、ゲートウェイ300において、記憶部に保持されるプログラムを、処理部が、読み出し、実行すること、処理部が記憶部へ所定のデータを格納すること、または、処理部が入出力部を介してデータの送受信を実行することで実現される、又は、これらの組み合わせで実現される。
フレーム送受信部110は、バス200に対して、CANのプロトコルに従ったメッセージを送受信する。
より具体的には、フレーム送受信部110は、バス200に送出されたメッセージを1bitずつ読み出し、読み出したメッセージをフレーム解釈部120に転送する。
また、フレーム送受信部110は、フレーム生成部180より送出されたメッセージをバス200に送出する。
フレーム解釈部120は、フレーム送受信部110よりメッセージを表す値を受け取り、CANプロトコルにおける各フィールドにマッピングしてメッセージの解釈を行う。フレーム解釈部120は、IDフィールドである解釈した一連の値を、受信ID判定部130へ転送する。
フレーム解釈部120はさらに、受信ID判定部130から送出される判定結果に応じて、メッセージに含まれるIDフィールドの値及びIDフィールド以降に現れるデータフィールドの値をフレーム処理部150へ転送するか、メッセージの受信を中止するかを決定する。
また、フレーム解釈部120は、対象となるメッセージが、CANプロトコルに則っていないメッセージであると判断した場合は、エラーフレームを送信するようにフレーム生成部180へ要求する。
また、フレーム解釈部120は、他のノードが送信したエラーフレームを受信したと解釈した場合、読取中のメッセージを破棄する。
受信ID判定部130は、フレーム解釈部120からIDフィールドの値を受け取り、受信IDリスト保持部140が保持しているメッセージIDのリストに従い、読み出したメッセージを受信するか否かの判定を行う。受信ID判定部130は、この判定の結果をフレーム解釈部120へ送出する。
受信IDリスト保持部140は、ECU100が受信する受信IDリストを保持する。受信IDリストは、図4に示されるものと同様の形式であるため、ここではその説明を省略する。
フレーム処理部150は、受信したメッセージのデータに応じた処理を行う。処理の内容は、ECU100毎に異なる。
例えば、ECU100aでは、自動車の時速が30kmを超えているときに、ドアが開いていることを示すメッセージを受信すると、アラーム音を鳴らすための処理を実行する。ECU100cは、ブレーキがかかっていないことを示すメッセージを受信しているときにドアが開くと、アラーム音を鳴らすための処理を実行する。
これらの処理は、説明のための一例であり、ECU100は上記以外の処理を実行してもよい。このような処理を実行するために送出するフレームを、フレーム処理部150はフレーム生成部180に生成させる。
データ取得部170は、ECU100に接続されている機器状態又はセンサによる計測値等を示す出力データを取得し、取得した出力データをフレーム生成部180に転送する。
フレーム生成部180は、フレーム解釈部120からのエラーフレーム送信の要求に従い、エラーフレームを構成してフレーム送受信部110へ送る。
またフレーム生成部180は、データ取得部170より受け取ったデータの値に対して予め定められたメッセージIDを付けてメッセージフレームを生成し、生成したメッセージフレームをフレーム送受信部110へ送る。
[1.8 転送処理]
図11は、実施の形態1における転送処理の一例を示すフローチャートである。ゲートウェイ300が行う転送処理は、転送の方向に関わらず、共通であるため、ここでは、ゲートウェイ300がバス200aから受信したメッセージをバス200bへ転送する場合を一例として説明する。
まず、フレーム送受信部310は、バス200aからメッセージを読み出す(ステップS1001)。フレーム送受信部310は、読み出したメッセージの各フィールドのデータをフレーム解釈部320へ送出する。
次に、フレーム解釈部120は、受信ID判定部130と連携して、読み出したメッセージのIDフィールドの値(メッセージID)から、処理を行う対象のメッセージであるか否かを判定する(ステップS1002)。
フレーム解釈部120が、読み出されたメッセージを処理を行う対象のメッセージではないと判定した場合(ステップS1002でNo)、当該メッセージの転送は行われない。
フレーム解釈部120は、読み出されたメッセージを処理を行う対象のメッセージであると判断した場合(ステップS1002でYes)、フレーム解釈部120は、フレーム処理部350へメッセージ内の各フィールドの値を転送する。その後、フレーム処理部350は、転送ルール保持部360に保持される転送ルールに従って、転送先となるバスを決定する(ステップS1003)。
フレーム処理部350は、フレーム解釈部320から受け取ったメッセージ内の各フィールドの値を異常検知処理機能群370へ送出し、異常なメッセージであるか否かの判定を要求する。異常検知処理機能群370は、送出されたメッセージの各フィールドの値から、送出されたメッセージが異常なメッセージであるか否かを判定し、その判定の結果をフレーム処理部350へ送出する(ステップS1004)。
異常検知処理機能群370が、メッセージは異常なメッセージであると判定した場合(ステップS1005でYes)、当該メッセージの転送は行われない。
異常検知処理機能群370が、メッセージは異常なメッセージではなく正常なメッセージであると判定した場合(ステップS1005でNo)、フレーム処理部350は、当該メッセージをステップS1003で決定した転送先のバスに転送するよう、フレーム生成部380へ要求する。
フレーム生成部380は、フレーム処理部350からの要求を受けて、指定された転送先が受信するようにメッセージを生成し、当該メッセージをフレーム送受信部310に送出させる(ステップS1006)。
なお、上記の例では、受信したメッセージの転送先の決定(ステップS1003)の後にこのメッセージが異常なメッセージであるかの判定(ステップS1004)がなされているが、これに限定されない。受信したメッセージが異常なメッセージであるかの判定の後にこのメッセージの転送先の決定がなされてもよい。また、受信したメッセージの転送先の決定と異常なメッセージであるかの判定が並行して行われてもよい。
[1.9 異常検知処理]
図12は、実施の形態1における異常検知処理の別の一例を示すフローチャートである。
まず、異常検知処理機能群370は、フレーム処理部350から異常検知処理の要求を受けて、異常検知処理に利用可能な時間を算出する(ステップS1101)。ここで、異常検知処理に利用可能な時間を検知処理時間と呼ぶ。検知処理時間は、ネットワークに送出されたメッセージ量、メッセージに含まれるデータ量、または、メッセージの転送先の数等に応じて、算出される。
次に、判定機能選択部371は、算出された検知処理時間が、検知処理のために必要な時間より短いか否かを判定する(ステップS1102)。
判定機能選択部371が、算出された検知処理時間が、検知処理のために必要な時間より短いと判定した場合(ステップS1102でYes)、判定機能選択部371は、処理を実行する判定機能を選択する(ステップS1103)。
続いて、判定機能選択部371は、選択した判定機能に関する情報を、制御部372へ送出する。
続いて、制御部372は、ステップS1103で判定機能選択部371が選択した機能のみを実行するように各判定機能を制御し、異常検知部373は、異常検知処理を実行する(ステップS1104)。
判定機能選択部371が、検知処理時間が検知処理のために必要な時間より長いと判定した場合(ステップS1102でNo)、制御部372は、本来実行すべき検知処理をすべて実行するように異常検知部373の各判定機能を制御する。
なお、判定機能選択部371が実行する判定機能を個別に選択する場合は、図12の異常検知処理を実行するステップ(ステップS1104)で行われる処理は、図13のステップS1110からステップS1119で行われる処理になる。図13は、実施の形態1における異常検知処理のさらに別の一例を示すフローチャートである。また、図12の判定機能選択部371が実行する判定機能を選択するステップS1103で行われる処理は、図13のステップS1105で行われる処理になる。
判定機能選択部371が、算出された検知処理時間が検知処理のために必要な時間より短いと判定した場合(ステップS1102でYes)、判定機能選択部371は、検知処理時間内に実行可能な判定機能を選択する(ステップS1105)。そして、判定機能選択部371は、制御部372へ選択された判定機能に関する情報を送出する。
判定機能選択部371が、算出された検知処理時間が検知処理のために必要な時間より長いと判定した場合(ステップS1102でNo)、以下に説明されるステップS1110が行われる。
制御部372は、判定機能選択部371がDoS攻撃判定機能を選択したか否かを判定する(ステップS1110)。
制御部372が、DoS攻撃判定機能が判定機能選択部371によって選択されたと判定した場合(ステップS1110でYesの場合)、制御部372は異常検知部373のDoS攻撃判定機能を実行する(ステップS1111)。
制御部372が、DoS攻撃判定機能が選択されていないと判定した場合(ステップS1110でNoの場合)、制御部372は異常検知部373のDoS攻撃判定機能を実行しない。
続いて、制御部372は、判定機能選択部371がID判定機能を選択したか否かを判定する(ステップS1112)。
制御部372が、判定機能選択部371によってID判定機能が選択されたと判定した場合(ステップS1112でYesの場合)、制御部372は異常検知部373のID判定機能を実行する(ステップS1113)。
制御部372が、判定機能選択部371によってID判定機能が選択されていないと判定した場合(ステップS1112でNoの場合)、制御部372は異常検知部373のID判定機能を実行しない。
次に、制御部372は、判定機能選択部371がデータ長判定機能を選択したか否かを判定する(ステップS1114)。
制御部372が、判定機能選択部371によってデータ長判定機能が選択されたと判定した場合(ステップS1114でYesの場合)、制御部372は異常検知部373のデータ長判定機能を実行する(ステップS1115)。
制御部372が、判定機能選択部371によってデータ長判定機能が選択されていないと判定した場合(ステップS1114でNoの場合)、制御部372は異常検知部373のデータ長判定機能を実行しない。
制御部372は、判定機能選択部371が送信周期判定機能を選択したか否かを判定する(ステップS1116)。
制御部372が、判定機能選択部371によって送信周期判定機能が選択されたと判定した場合(ステップS1116でYesの場合)、制御部372は異常検知部373の送信周期判定機能を実行する(ステップS1117)。
制御部372が、判定機能選択部371によって送信周期判定機能が選択されていないと判定した場合(ステップS1116でNoの場合)、制御部372は異常検知部373の送信周期判定機能を実行しない。
制御部372は、判定機能選択部371がデータ値判定機能を選択したか否かを判定する(ステップS1118)。
制御部372が、判定機能選択部371によってデータ値判定機能が選択されたと判定した場合(ステップS1118でYesの場合)、制御部372は異常検知部373のデータ値判定機能を実行する(ステップS1119)。
制御部372が、判定機能選択部371によってデータ値判定機能が選択されていないと判定した場合(ステップS1118でNoの場合)、制御部372は異常検知部373のデータ値判定機能を実行しない。
ここで、DoS攻撃判定、ID判定、データ長判定、送信周期判定、及び、データ値判定の5つの判定機能に関する異常検知処理を記載したが、異常検知処理には、更に送信頻度判定と車両状態判定とに関する異常検知処理が含まれてもよい。また、異常検知処理には、上記の判定機能のうちのいくつかの組み合わせが含まれてもよいし、説明されていない他の判定処理が含まれていてもよい。例えば、判定機能選択部371が各判定機能を選択したか否かを制御部372が判定し、その判定結果に応じて制御部372が判定機能の実行を制御する処理が含まれてもよい。これにより、実行する判定機能を柔軟に制御することができる。
なお、判定機能選択部371が実行する判定機能の範囲と、実行しない判定機能の範囲の選択を行う場合は、図12の異常検知処理を実行するステップ(S1104)で行われる処理は、図14に示される処理になる。また、図12の判定機能選択部371が機能を選択するステップS1103で行われる処理は、図14のステップS1106で行われる処理になる。
図14は、実施の形態1における異常検知処理の他の一例を示すフローチャートである。判定機能選択部371が、検知処理時間が検知処理のために必要な時間より短いと判定した場合(ステップS1102でYes)、判定機能選択部371は、検知処理時間内に実行可能な判定機能を判定し、異常検知処理を終了する時点の判定機能を選択する(ステップS1106)。
そして、判定機能選択部371は、制御部372へ送出する。
判定機能選択部371が、検知処理時間が検知処理のために必要な時間より長いと判定した場合(ステップS1102でNo)、以下に説明されるステップS1120が行われる。
制御部372は、判定機能選択部371がDoS攻撃判定機能前で処理を終了する選択をしたか否かを判定する(ステップS1120)。
制御部372が、判定機能選択部371によってDoS攻撃判定機能前で処理を終了しない選択がされたと判定した場合(ステップS1120でNoの場合)、制御部372は異常検知部373のDoS攻撃判定機能を実行する(S1111)。
制御部372が、判定機能選択部371によってDoS攻撃判定機能前で処理を終了する選択がされたと判定した場合(ステップS1120でYesの場合)、制御部372は異常検知処理を終了する。
続けて、制御部372は、判定機能選択部371がID判定機能前で処理を終了する選択をしたか否かを判定する(ステップS1112)。
制御部372が、判定機能選択部371によってID判定機能前で処理を終了しない選択がされたと判定した場合(ステップS1112でNo)、制御部372は異常検知部373のID判定機能を実行する(ステップS1113)。
制御部372が、判定機能選択部371によってID判定機能前で処理を終了する選択がされたと判定した場合(ステップS1112でYes)、制御部372は異常検知処理を終了する。
次に、制御部372は、判定機能選択部371がデータ長判定機能前で処理を終了する選択をしたか否かを判定する(ステップS1122)。
制御部372が、判定機能選択部371によってデータ長判定機能前で処理を終了しない選択がされたと判定した場合(ステップS1122でNo)、制御部372は異常検知部373のデータ長判定機能を実行する(ステップS1115)。
制御部372が、データ長判定機能前で処理を終了する選択がされたと判定した場合(ステップS1122でYes)、制御部372は異常検知処理を終了する。
そして、制御部372は、判定機能選択部371が送信周期判定機能前で処理を終了する選択をしたか否かを判定する(ステップS1123)。
制御部372が、判定機能選択部371によって送信周期判定機能前で処理を終了しない選択がされたと判定した場合(ステップS1123でNo)、制御部372は異常検知部373の送信周期判定機能を実行する(ステップS1117)。
制御部372が、判定機能選択部371によって送信周期判定機能前で処理を終了する選択がされたと判定した場合(ステップS1123でYes)、制御部372は異常検知処理を終了する。
次に、制御部372は、判定機能選択部371がデータ値判定機能前で処理を終了する選択をしたか否かを判定する(ステップS1124)。
制御部372が、判定機能選択部371によってデータ値判定機能前で処理を終了しない選択がされたと判定した場合(ステップS1124でNo)、制御部372は異常検知部373のデータ値判定機能を実行する(ステップS1119)。
制御部372が、判定機能選択部371によってデータ値判定機能前で処理を終了する選択がされたと判定した場合(ステップS1124でYes)、制御部372は異常検知処理を終了する。
ここで、DoS攻撃判定、ID判定、データ長判定、送信周期判定、および、データ値判定の5つの判定機能に関する異常検知処理が説明されたが、図14で説明された処理には、更に送信頻度判定と車両状態判定とに関する異常検知処理が含まれていてもよい。また、図14で説明された処理は、上記で説明された判定機能のうちのいくつかの組み合わせでもよいし、他の判定機能が含まれていてもよい。図14で説明された処理には、判定機能選択部371が実行する判定機能の範囲と、実行しない判定機能の範囲とを選択したか否かを制御部372が判定し、その判定結果に応じて制御部372が判定機能の実行を制御する処理が含まれてもよい。これにより、各判定機能が選択されているか否かを逐一確認する必要がなく、処理時間が削減されることが可能である。
なお、判定機能選択部371が送信周期判定機能とデータ値判定機能を実行するか否かのみを選択する場合は、図12に示される異常検知処理を実行するステップ(ステップS1104)は、図15に示される処理になる。
図15は、実施の形態1における異常検知処理のさらに他の一例を示すフローチャートである。また、図12に示される判定機能選択部371が判定機能を選択するステップS1103で行われる処理は、図15に示されるステップS1107で行われる処理になる。
判定機能選択部371は、ステップS1101で算出された検知処理時間が、送信周期判定機能とデータ値判定機能とによる異常検知処理のために必要な時間より長いか否かを判定する(ステップS1102)。
判定機能選択部371が、当該検知処理時間が上記の必要な時間より短いと判定した場合(ステップS1102でYes)、判定機能選択部371は、送信周期判定機能とデータ値判定機能とを選択しない(ステップS1107)。
判定機能選択部371が、当該検知処理時間が上記の必要な時間より長いと判定した場合(ステップS1102でNo)、次に説明されるステップS1111が行われる。
制御部372は、DoS攻撃判定機能の処理を実行する(ステップS1111)。
そして、制御部372は、ID判定機能の処理を実行する(ステップS1113)。
次に、制御部372は、データ長判定機能の処理を実行する(ステップS1115)。
その後、制御部372は、判定機能選択部371が送信周期判定機能とデータ値判定機能とを選択したか否かを判定する(ステップS1130)。
制御部372が、判定機能選択部371によって送信周期判定機能とデータ値判定機能とが選択されたと判定した場合(ステップS1130でYes)、制御部372は異常検知部373の送信周期判定機能を実行する(ステップS1117)。
続いて、制御部372は、データ値判定機能を実行する(ステップS1119)。
制御部372が、判定機能選択部371によって送信周期判定機能とデータ値判定機能とが選択されていないと判定した場合(ステップS1130でNo)、制御部372は異常検知部373の送信周期判定機能とデータ値判定機能とを実行しない。
ここで、DoS攻撃判定、ID判定、データ長判定、送信周期判定、および、データ値判定の5つの判定機能に関する異常検知処理が説明されたが、図15で説明された処理には、更に送信頻度判定と車両状態判定とに関する異常検知処理が含まれていてもよい。図15で説明された処理は、上記で説明された判定処理のうちのいくつかの組み合わせでもよいし、他の判定機能が含まれていてもよい。図15で説明された処理は、送信周期判定機能とデータ値判定機能とを実行するか否かのみを選択するだけでなく、判定機能選択部371が各判定機能の一部の機能の組み合わせを選択したか否かを制御部372が判定し、その判定結果に応じて制御部372が判定機能の実行を制御する処理であればよい。これにより、設計時等に、事前に、実行される処理を行う組み合わせを決めることができ、判定機能が選択されているか否かをまとめて確認できるため、処理時間が短縮されることが可能である。
図16は、実施の形態1における異常検知処理のその他の一例を示すフローチャートである。
なお、判定機能選択部371が、送信周期判定機能とデータ値判定機能とを実行するか否かを選択するだけでなく、全ての判定機能を実行しない選択を行う場合は、図15で示されるステップS1107で行われる処理とステップS1131で行われる処理の間に、図16で示されるステップS1108で行われる処理とステップS1109で行われる処理が加わる。
次に、判定機能選択部371は、ステップS1101で算出した検知処理時間が、DoS攻撃判定機能とID判定機能とデータ長判定機能とによる異常検知処理のために必要な時間より長いか否かを判定する(ステップS1108)。
判定機能選択部371が、当該検知処理時間が上述の必要な時間より短いと判定した場合、判定機能選択部371は、全判定機能を選択しない(ステップS1109)。
続いて、制御部372は、判定機能選択部371が全ての判定機能を選択したか否かを判定する(ステップS1131)。つまり、制御部372は、判定機能選択部371が、DoS攻撃判定機能、ID判定機能、または、データ長判定機能を選択しなかったか否かを判定する。
制御部372が、判定機能選択部371によってDoS攻撃判定機能とID判定機能とデータ長判定機能とが選択されたと判定した場合(ステップS1131でYes)、制御部372は異常検知部373のDoS攻撃判定機能を実行する(ステップS1111)。
その後、制御部372は、異常検知部373のID判定機能を実行する(ステップS1113)。
そして、制御部372は、異常検知部373のデータ長判定機能の実行する(ステップS1115)。
その後の、送信周期判定機能とデータ値判定機能に関する処理は、図15で説明された処理と同様であるため、説明を省略する。
制御部372が、判定機能選択部371によってDoS攻撃判定機能、ID判定機能、および、データ長判定機能が選択されていないと判定した場合(ステップS1131でNo)、制御部372は異常検知部373の各判定機能を実行しない。
ここで、DoS攻撃判定、ID判定、データ長判定、送信周期判定、および、データ値判定の5つの判定機能に関する異常検知処理を、図16で説明される処理として記載したが、図16で説明される処理は、更に送信頻度判定と車両状態判定に関する異常検知処理を含んでもよい。また、図16で説明される処理は、上記の判定処理のいくつかの組み合わせでもよいし、他の判定機能を含んでもよい。図16で説明される処理は、DoS攻撃判定機能とID判定機能とデータ長判定機能とを選択したか否かを判定する処理と、送信周期判定機能とデータ値判定機能とを実行するか否かのみを選択する処理に分けられて説明されたが、これに限定されない。図16で説明される処理は、制御部372が、判定機能選択部371が全判定機能を選択したという判定を行い、その判定結果に応じて制御部372が判定機能の実行を制御する処理であればよい。これにより、本実施の形態における異常判定方法は、異常検知処理を行う時間が無い場合でも、異常判定を実施することができる。
なお、判定機能選択部371と制御部372との異常検知処理は、上記に限定されるものではなく、上記の組み合わせであってもよい。
なお、判定機能選択部371は、検知処理のために必要な時間より検知処理時間が短いと判定した場合(ステップS1102)、処理を行う実行する判定機能を選択するとしたが、これに限定されない。判定機能選択部371は、ステップS1102の判定処理を行わず、処理を行う実行する判定機能を選択する際に、検知処理のために必要な時間より検知処理時間が長ければ、全ての判定機能を選択してもよい。これにより、判定機能選択部371による処理を単純化することができる。
なお、制御部372が各判定機能を実行する場合、制御部372がCAN ID毎に設定されている検知ルールを参照する。そして、判定機能選択部371により選択され、かつ、検知ルールに記載されている判定機能を実行するように、制御部372が制御を行う。つまり、判定機能選択部371により選択されたとしても、検知ルールに記載されていない判定機能は実行されない。また、ステップS1102において算出された検知処理時間が、検知処理のために必要な時間より長いと判定された場合、制御部372は、全ての判定機能が判定機能選択部371により選択されたとみなして、検知ルールに記載されている機能を実行する。
[1.10 リセット処理]
異常検知処理において、判定機能選択部371が、実行される機能を選択したときに選択されなかった判定機能の種類によっては、次にいずれかの判定機能が実行されるときに、通常とは異なる判定結果になる可能性がある。例えば、送信周期判定機能は、車載ネットワークシステム10が周期的にメッセージを受信することを前提としており、前回受信時に受信時刻(前回受信時刻という)を記録して、その前回受信時刻と今回の受信時刻との差から、今回受信したメッセージが異常なメッセージであるかどうかを判定する。
この時、メッセージが正常に来ていたにもかかわらず判定機能選択部371によって送信周期判定機能が選択されなかった場合、1回前の受信時刻が記録できないため、2回前の受信時刻と今回の受信時刻とを比較することになり、正常な判定が出来ない可能性がある。特に、連続して送信周期判定機能が選択されなかった場合には、受信時刻を記録できない区間が長くなるため、正常な判定が出来ない可能性が高くなる。同様の懸念は、データ値判定機能において、前回のデータ値と今回のデータ値との変化量から正常メッセージか異常なメッセージかを判定する場合にも当てはまる。
そこで、ある判定機能が、判定機能選択部371により選択されず処理がスキップされた場合に、次に当該判定機能を実行する前に、当該判定機能に対してリセット処理を行うことで、想定外の判定結果にならないようにする必要がある。特に、送信周期判定機能、もしくは、データの変化量を判定するデータ値判定機能など、前回の値と今回の値との比較で判定を行う機能、または、送信頻度判定機能のように、累積計算を行う機能に対して、判定機能選択部371により選択されず処理がスキップされた場合に、前回の値、または、累積値をクリアするリセット処理を事前に行う必要がある。
図17は、実施の形態1におけるリセット処理を含む異常検知処理の一例を示すフローチャートである。また、図18は、実施の形態1におけるリセット処理を含む異常検知処理の別の一例を示すフローチャートであり、図19は、実施の形態1におけるリセット処理を含む異常検知処理のさらに別の一例を示すフローチャートである。図15に示した判定機能選択部371が送信周期判定機能とデータ値判定機能とを実行するか否かのみを選択する場合の異常検知処理に対して、リセット処理を追加したフローチャートになっている。そのため、リセット処理以外の図15と同じ処理に関しては、説明を省略する。
まず、判定機能選択部371は、送信周期判定機能とデータ値判定機能との処理をスキップしたことを示すフラグを確認することで、前回の処理をスキップしたか否かを判定する(ステップS1140)。
判定機能選択部371が、前回の処理をスキップしたと判定した場合(ステップS1140でYes)、判定機能選択部371は、制御部372に送信周期判定機能とデータ値判定機能とのリセット処理の実行を依頼する。
そして、制御部372は、判定機能選択部371からの依頼を受けて、送信周期判定機能のリセット処理を実行する(ステップS1141)。
次に、制御部372は、データ値判定機能のリセット処理を実行する(ステップS1142)。
また、ステップS1101およびステップS1102の後、判定機能選択部371は、ステップS1107において、送信周期判定機能とデータ値判定機能とを選択しないという処理を行った後に、送信周期判定機能とデータ値判定機能との処理をスキップしたことを示すフラグをセットする(ステップS1143)。ここで、送信周期判定機能とデータ値判定機能との処理をスキップしたことを示すフラグはCAN ID毎に設定される。
なお、リセット処理としては、例えば、記憶している前回の値をクリアした後に、最初に判定機能が実行された時にその値を前回の値として記憶してもよいし、記憶している前回の値をクリア後に、前回の値を持たない判定機能が最初に正常メッセージと判定したメッセージを前回の値として記憶してもよい。ここで、前回の値がCAN ID毎に記憶されている場合は、前回の値をクリアしたときと同じCAN IDのメッセージを最初に受信したときを最初に判定機能が実行されたとき、または、前回の値をクリアしたときと同じCAN IDのメッセージに対して前回の値を持たない判定機能が、受信したメッセージを最初に正常メッセージであると判定したときに、前回の値として記憶する。また、同じCAN IDのメッセージではなく、別のCAN IDを持つメッセージを基準として、前回の値として記憶するかどうかを判断してもよい。
例えば、正しいメッセージ認証コード(MAC:Message Authentication Code)が付いているメッセージを基準として前回の値として記憶するかどうかを判定してもよいし、送信周期が近いか送信周期が同じ別のCAN IDを持つメッセージを基準として前回の値として記憶するかどうかを判定してもよい。
図20は、変形例におけるリセット処理の一例を示す図である。図20では、送信周期が同じ別のCAN IDを持つメッセージの例が示される。例えば、本開示にかかる異常判定方法では、時刻T2の直前で負荷率がしきい値を下回った場合、ID1、ID2、および、ID3のメッセージをほぼ同じタイミングで受信したときに、ID1、ID2、および、ID3のメッセージの受信時刻が前回の値として記憶される。また、本開示にかかる異常判定方法では、記憶されている累積値を初期化してもよいし、保持されている車両状態を初期化してもよい。これにより、リセット処理後の判定機能による判定が、より正確に行われることが可能である。
なお、本開示にかかる異常判定方法では、送信周期判定機能とデータ値判定機能とに対してリセット処理が行われるとしたが、これに限定するものではなく、前回の値を持つ他の判定機能に対してリセット処理が行われてもよいし、累積値または車両状態を記憶している送信頻度判定機能や車両状態判定機能に対してリセット処理が行われてもよい。また、リセット処理は、図17に示されたタイミングで行われる必要は無く、例えば、図18や図19に示すタイミングで行われてもよい。
さらに、図17から図19で示される処理は、図15に示されるフローチャートに対してリセット処理が追加されているが、これに限定するものではなく、他の異常検知処理のフローチャート(例えば、図12から図14や図16、図21以降に示されるフローチャート)に対してリセット処理が追加されてもよい。また、CAN ID毎に、リセット処理が実行されるタイミングが変更されてもよい。これにより、本開示の実施の形態における異常判定方法では、記憶されている情報に応じて、適切なタイミングでリセット処理が実行されることが可能である。
なお、判定機能選択部371が、送信周期判定機能とデータ値判定機能とを選択しなかった際に、処理をスキップしたことを示すフラグをセットするとしたが、これに限定されるものではない。例えば、判定機能選択部371は、CAN ID毎に設定されている検知ルールも参照し、判定機能選択部371が選択しなかった判定機能が検知ルールとして実行されない場合には、処理をスキップしたことを示すフラグをセットしなくてもよいし、処理をスキップしたことを示すフラグをセットしたとしてもリセット処理の際にリセット処理を実行しなくてもよい。これにより、不要なリセット処理を減り、処理時間の短縮、またはリセット処理による検知性能の低下を防ぐことができる。
[1.11 効果]
本実施の形態では、異常検知処理機能群370は、異常検知処理のために利用可能な時間(検知処理時間)に応じて実行する判定機能を選択することで、検知処理時間が短い場合でも、検知処理時間に応じて大きな異常検知効果を発揮できるような判定機能の組み合わせを選択することができる。また、各判定機能のうちのいくつかまたは全てに対してリセット処理を実施することで、当該判定機能を実行しなかったことによる弊害を緩和することができるため、異常検知性能をより高めることができる。
(実施の形態2)
[2.概要]
実施の形態1では、異常検知処理機能群370において、判定機能選択部371が処理を行う判定機能を選択し、制御部372が判定機能選択部371の選択結果に応じて各判定機能の実行を制御していた。本実施の形態では、車載ネットワークシステムにおいて、制御部372が検知処理時間に応じて、どの判定機能を実行するかを判定する場合について図面を参照しながら説明する。
[2.1 異常検知処理機能群の構成]
図21は、実施の形態2における異常検知処理機能群の一例を示すブロック図である。図21において、異常検知処理機能群370は、制御部374と、異常検知部373とを含む。なお、実施の形態1と同じ構成要素に関しては、説明を省略する。
なお、これらの構成は機能を示す構成であり、ゲートウェイ300において記憶部に保持されているプログラムを処理部が読み出し、実行し、記憶部へ所定のデータを格納、または、入出力部を介してデータの送受信を実行することまたは、これらの処理の組み合わせで実現される。
制御部374は、異常検知部373が備える判定機能のうち、検知処理時間内に実行できる判定機能を判断し、判定機能の実行を制御する。制御部374は、異常検知部373の異常検知処理のために利用可能な時間(検知処理時間)を算出し、その検知処理時間に収まるように判定機能の実行を制御する。
例えば、制御部374は、実施の形態1における判定機能選択部371と同様に、図7に示されるような判定機能毎の処理時間と、検知性能(例えば誤検知率と検知率)のデータを保持しており、算出した検知処理時間に収まる判定機能の組み合わせを求め、その判定機能のみを実行するように制御を行う。この時、算出した検知処理時間に収まる判定機能の組み合わせが複数あれば、検知性能が最も良い判定機能の組み合わせ(例えば、誤検知率が低く、検知率が高い組み合わせ)を実行する。
なお、制御部374は、検知処理時間を算出するとしたが、これに限定されるものではない。異常検知処理機能群370には検知処理時間を算出する処理時間算出部があり、制御部374は処理時間算出部から処理時間を取得して、判定機能を選択してもよいし、異常検知処理機能群370はフレーム処理部350から検知処理時間に関する情報を取得し、それに基づいて、実行する判定機能を選択してもよい。これにより、制御部374は、異常検知処理に関する処理時間のみ管理すればよいため、異常検知処理を他の機能と疎結合にすることができ、異常検知処理に対する他の機能の影響を抑えることができる。
[2.2 異常検知処理]
図22は、実施の形態2における異常検知処理の一例を示すフローチャートである。
まず、異常検知処理機能群370は、フレーム処理部350から異常検知処理の要求を受けて、異常検知処理に利用可能な時間(検知処理時間)を算出する(ステップS1101)。
次に、制御部374は、ステップS1101で算出された検知処理時間が、実行すべき検知処理のために必要な時間より長いか否かを判定する(ステップS1200)。
ステップS1200で制御部374が、実行すべき検知処理のために必要な時間より検知処理時間が長いと判定した場合(ステップS1200でYes)、制御部374は、異常検知処理を実行する(ステップS1104)。
なお、制御部374が実行する判定機能を個別に制御する場合、図22に示される異常検知処理を実行するステップ(ステップS1104)は、図23に示される処理になる。図23は、実施の形態2における異常検知処理の別の一例を示すフローチャートであり、図24は、実施の形態2における異常検知処理のさらに別の一例を示すフローチャートである。
制御部374は、ステップS1101で検知処理時間を算出した後に、DoS攻撃判定機能を実行する時間があるかを判定する(ステップS1210)。
制御部374が、DoS攻撃判定機能を実行する時間があると判定した場合(ステップS1210でYes)、制御部374は異常検知部373のDoS攻撃判定機能を実行する(S1111)。
制御部374が、DoS攻撃判定機能を実行する時間がないと判定した場合(ステップS1210でNo)、制御部374は異常検知部373のDoS攻撃判定機能を実行しない。
続いて、制御部374は、DoS攻撃判定機能を実行した後の残りの検知処理時間に対して、ID判定機能を実行する時間があるかを判定する(ステップS1211)。
制御部374が、ID判定機能を実行する時間があると判定した場合(ステップS1211でYes)、制御部374は異常検知部373のID判定機能を実行する(S1113)。
制御部374が、ID判定機能を実行する時間がないと判定した場合(ステップS1211でNo)、制御部374は異常検知部373のID判定機能を実行しない。
次に、制御部374は、ID判定機能を実行した後の残りの検知処理時間に対して、データ長判定機能を実行する時間があるかを判定する(ステップS1212)。
制御部374が、データ長判定機能を実行する時間があると判定した場合(ステップS1212でYes)、制御部374は異常検知部373のデータ長判定機能を実行する(S1115)。
制御部374が、データ長判定機能を実行する時間がないと判定した場合(ステップS1212でNo)、制御部374は異常検知部373のデータ長判定機能を実行しない。
そして、制御部374は、データ長判定機能を実行した後の残りの検知処理時間に対して、送信周期判定機能を実行する時間があるかを判定する(ステップS1213)。
制御部374が、送信周期判定機能を実行する時間があると判定した場合(ステップS1213でYes)、制御部374は、異常検知部373の送信周期判定機能を実行する(S1117)。
制御部374が、送信周期判定機能を実行する時間がないと判定した場合(ステップS1213でNo)、制御部374は異常検知部373の送信周期判定機能を実行しない。
続いて、制御部374は、送信周期判定機能を実行した後の残りの検知処理時間に対して、データ値判定機能を実行する時間があるかを判定する(ステップS1214)。
制御部374が、データ値判定機能を実行する時間があると判定した場合(ステップS1214でYes)、制御部374は異常検知部373のデータ値判定機能を実行する(S1119)。
制御部374が、データ値判定機能を実行する時間がないと判定した場合(ステップS1214でNo)、制御部374は異常検知部373のデータ値判定機能を実行しない。これにより、本開示にかかる異常判定方法は、実行する判定機能の選択を柔軟に制御することができる。
なお、制御部374が実行する判定機能の範囲の判定を行う場合は、実施の形態1における図14に示されるフローチャートの処理が、図24に示されるフローチャートの処理になる。これにより、各判定機能に対して、選択されているか否かを逐一確認する必要がなくなり、確認のための処理時間を削減することができる。
また、制御部374が送信周期判定機能とデータ値判定機能とを実行するか否かのみを判定する場合は、実施の形態1における図15に示されるフローチャートの処理が、図25に示されるフローチャートの処理になる。図25は、実施の形態2における異常検知処理の他の一例を示すフローチャートである。
まず、異常検知処理機能群370は、フレーム処理部350から異常検知処理の要求を受けて、異常検知処理に利用可能な時間を算出する(ステップS1101)。
次に、制御部374は異常検知部373のDoS攻撃判定機能を実行する(ステップS1111)。
続いて、制御部374は異常検知部373のID判定機能を実行する(ステップS1113)。
そして、制御部374は異常検知部373のデータ長判定機能を実行する(ステップS1115)。
次に、制御部374は、検知処理時間が、実行すべき処理に必要な時間より長いか否かを判定する(ステップS1230)。
続いて、制御部374が、検知処理時間が、実行すべき処理に必要な時間より長いと判断した場合(ステップS1230でYes)、制御部374は、異常検知部373の送信周期判定機能を実行する(ステップS1117)。
そして、制御部374が、検知処理時間が、実行すべき処理に必要な時間より長いと判断した場合(ステップS1230でYes)、制御部374は、異常検知部373のデータ値判定機能を実行する(ステップS1119)。
制御部374が、検知処理時間が、実行すべき処理に必要な時間より短いと判断した場合(ステップS1230でNo)、制御部374は動作を終了する。
これにより、設計時等に、事前に実行する処理を行う組み合わせを決めることができる場合は、判定機能が選択されているか否かをまとめて確認することができる、処理時間を短縮することができる。また、制御部374が送信周期判定機能とデータ値判定機能とを実行するか否かを判定するだけでなく、全ての判定機能を実行しないと判定する場合は、実施の形態1における図16に示されるフローチャートの処理が図26に示されるフローチャートの処理になる。図26は、実施の形態2における異常検知処理のさらに他の一例を示すフローチャートである。これにより、本開示にかかる異常判定方法は、異常検知処理を行う時間が無い場合にも対応することができる。
まず、異常検知処理機能群370は、フレーム処理部350から異常検知処理の要求を受けて、異常検知処理に利用可能な時間を算出する(ステップS1101)。
続いて、制御部374は、制御部374が行う最低限の処理に必要な時間より検知処理時間が長いか否かを判定する(ステップS1231)。
次に、制御部374が、制御部374が行う最低限の処理に必要な時間より検知処理時間が長いと判断した場合(ステップS1231でYes)、制御部374は異常検知部373のDoS攻撃判定機能を実行する(ステップS1111)。
続いて、制御部374が、制御部374が行う最低限の処理に必要な時間より検知処理時間が長いと判断した場合(ステップS1231でYes)、制御部374は異常検知部373のID判定機能を実行する(ステップS1113)。
そして、制御部374が、制御部374が行う最低限の処理に必要な時間より検知処理時間が長いと判断した場合(ステップS1231でYes)、制御部374は異常検知部373のデータ長判定機能を実行する(ステップS1115)。
次に、制御部374は、検知処理時間が、実行すべき処理に必要な時間より長いか否かを判定する(ステップS1230)。
続いて、制御部374が、検知処理時間が、実行すべき処理に必要な時間より長いと判断した場合(ステップS1230でYes)、制御部374は、異常検知部373の送信周期判定機能を実行する(ステップS1117)。
そして、制御部374が、検知処理時間が、実行すべき処理に必要な時間より長いと判断した場合(ステップS1230でYes)、制御部374は、異常検知部373のデータ値判定機能を実行する(ステップS1119)。
制御部374が、制御部374が行う最低限の処理に必要な時間より検知処理時間が短いと判断した場合(ステップS1231でNo)、制御部374は動作を終了する。
また、制御部374が、検知処理時間が、実行すべき処理に必要な時間より短いと判断した場合(ステップS1230でNo)、制御部374は動作を終了する。
なお、DoS攻撃判定、ID判定、データ長判定、送信周期判定、および、データ値判定の5つの判定機能に関する異常検知処理について説明したが、本開示にかかる異常判定方法には、更に送信頻度判定と車両状態判定とに関する異常検知処理が含まれていてもよい。また、本開示にかかる異常判定方法には、上記の処理のいくつかの組み合わせが含まれてもよいし、他の判定機能が含まれていてもよい。
なお、制御部374が行う異常検知処理は、上記に限定されるものではなく、上記の組み合わせであってもよい。
なお、図13から図19、および、図23から図26で示されるDoS攻撃判定機能、ID判定機能、データ長判定機能、送信周期判定機能、および、データ値判定機能に関する処理は、メッセージID毎に異なる順序で処理が行われてもよい。
[2.3 リセット処理]
異常検知処理において、制御部374が各判定機能を実行するか否かを判定したとき、実行されなかった判定機能によっては、次に当該判定機能が実行されるときに、通常とは異なる判定結果が出る可能性がある。そのため、実施の形態1と同様に、制御部374で実行しないと判定した判定機能に関して、リセット処理が実施される必要がある。
実施の形態1においては、判定機能選択部371が判定機能を選択する処理を実施した際に、処理をスキップしたことを示すフラグがセットされた。実施の形態2においては、制御部374が各判定機能を実行しないと判定した際に、処理をスキップしたことを示すフラグが設定される必要がある。処理をスキップしたことを示すフラグに応じて制御部374が行う、リセット処理を実行するか否かの判定は、実施の形態1の図17から図19に示された処理と同様であるため、説明は省略する。
[2.4 効果]
本実施の形態では、異常検知処理機能群370は、各判定機能の実行直前に、当該判定機能を実行するか否かを判断することで、当該判定機能を実行するか否かの判断に、各判定機能の実行時間を正確に反映することができ、大きな異常検知効果を発揮できる判定機能の組み合わせを実行することができる。
(実施の形態3)
[3.概要]
実施の形態1では、異常検知処理機能群370において、判定機能選択部371が処理を行う判定機能を選択し、制御部372が判定機能選択部371の選択結果に応じて各判定機能の実行を制御していた。本実施の形態では、車載ネットワークシステムにおいて、判定機能が実行されなかった場合に、その時のメッセージを保存しておき、検知処理時間に余裕がある場合に、そのメッセージに対する異常検知処理を後から実行する場合について図面を参照しながら説明する。
[3.1 異常検知処理機能群の構成]
図27は、実施の形態3における異常検知処理機能群の一例を示すブロック図である。図27において、異常検知処理機能群370は、判定機能選択部371と、異常検知部373と、非選択情報保持部375と、制御部376とを含む。または、図28に示すように、実施の形態2と同様に判定機能選択部371を備えず、異常検知部373と非選択情報保持部375と制御部377とを含む構成であってもよい。図28は、実施の形態3における異常検知処理機能群の別の一例を示すブロック図である。なお、実施の形態1と同じ構成要素に関しては、説明を省略する。
なお、これらの構成は機能を示す構成であり、ゲートウェイ300において記憶部に格納されるプログラムを処理部により読み出し、実行し、記憶部へ所定のデータを保持、または入出力部を介してデータの送受信を実行すること、または、これらの組み合わせを実行することで実現される。
非選択情報保持部375は、異常検知部373の各判定機能のうちの一部の判定機能が実行されなかった場合に、受信したメッセージの情報を送出し、保持する。また、非選択情報保持部375は、制御部376からの依頼に応じて、保持しているメッセージを制御部376へ送出する。
制御部376は、実施の形態1における制御部372の機能に加えて、過去の処理において選択されなかった判定機能があり、かつ、非選択情報保持部375にメッセージが保持されており、当該メッセージの異常検知処理を実行する時間があると判定できた場合に、非選択情報保持部375からメッセージを取得し、当該メッセージに対する異常検知処理を実行する。
なお、制御部377は、実施の形態1における制御部372の機能の代わりに実施の形態2における制御部374の機能を備えること以外は、制御部376と同じ機能を備える。
なお、非選択情報保持部375は、異常検知部373の各判定機能のうちの一部の判定機能が実行されなかった場合に、受信したメッセージを保持するだけでなく、例えば、図28に示されるように、実行されなかった判定機能に関する情報も保持し、制御部376や制御部377が異常検知処理を実行するときに、当該実行されなかった判定機能のみに関する異常検知処理を実行できるようにしてもよい。図29は、実施の形態3における非選択情報の一例を示す図である。これにより、本開示にかかる異常判定方法では、必要な判定機能のみが実行されることが可能となるため、処理時間が短縮されることが可能である。
[3.2 異常検知処理]
図30は、実施の形態3における異常検知処理の一例を示すフローチャートであり、図31は、実施の形態3における異常検知処理の別の一例を示すフローチャートである。図12に示される実施の形態1における異常検知処理において、ある判定機能が実行されなかった場合、その時点で受信したメッセージを保存する(ステップS1300)。そして、検知処理時間に余裕がある場合に、当該メッセージに対する異常検知処理を後から実行する(ステップS1302)。ここで、図12に示される処理と同じ処理に関しては説明を省略する。
判定機能選択部371は、本来実行すべき判定処理のために必要な時間より検知処理時間が短く、処理を行う判定機能を選択した後に(ステップS1103の後)、非選択情報保持部375へメッセージに関する情報の保存を依頼する。非選択情報保持部375は、判定機能選択部371からの依頼に応じて、メッセージに関する情報を保存する(ステップS1300)。
その後、制御部376は、異常検知処理を実行し、非選択情報保持部375に非選択情報があるか否かを問い合わせ、非選択情報があるか否かを判定する(ステップS1301)。
制御部376が、非選択情報があると判定した場合(ステップS1301でYes)、制御部376は、非選択情報後追い処理を実行する(ステップS1302)。非選択情報後追い処理については、後述する。
制御部376が、非選択情報がないと判定した場合(ステップS1301でNo)、制御部376は、異常検知処理を終了する。
なお、フレーム処理部350から要求された異常検知処理を行うメッセージ(受信メッセージ)のCAN IDと同じCAN IDを持つメッセージが非選択情報保持部375に保持されている場合、一部の判定機能で前回の値を使用する処理があると、異常検知処理が正しく行われない可能性がある。そのため、受信メッセージのCAN IDと同じCAN IDを持つメッセージが非選択情報保持部375に保持されている場合、判定機能選択部371は、前回の値を使用する処理がある判定機能を選択せず、受信メッセージのCAN IDと同じCAN IDを持つメッセージに対する非選択情報後追い処理が終了した後に、全ての判定機能による異常検知処理を実行してもよい。
以上の処理を図31に示す。
判定機能選択部371が、検知処理のために必要な時間より検知処理時間が長いと判定した場合(ステップS1102でNo)、判定機能選択部371は、受信メッセージのCAN IDと同じCAN IDを持つメッセージが、非選択情報保持部375に保持されているか否かを判定する(ステップS1310)。
判定機能選択部371が、受信メッセージのCAN IDと同じCAN IDを持つメッセージが非選択情報保持部375に保持されていると判定した場合(ステップS1310でYes)、判定機能選択部371は、前回の値が不要な判定機能のみを選択する(ステップS1311)。
そして、判定機能選択部371は、一部の判定機能をスキップすることになるため、非選択情報を保存する(ステップS1300)。
判定機能選択部371が、受信メッセージのCAN IDと同じCAN IDを持つメッセージが非選択情報保持部375に保持されていないと判定した場合(ステップS1310でNo)、制御部376は、異常検知処理を実行する(ステップS1104)。これにより、非選択情報後追い処理が終了したタイミングで、各判定機能の状態が、判定機能の選択処理を行わなかった場合と同じ状態になるため、リセット処理が行われる必要が無くなる。
[3.3 非選択情報後追い処理]
図32は、実施の形態3における非選択情報後追い処理の一例を示すフローチャートである。図32では、上述の非選択情報後追い処理が説明される。
まず、制御部376は、非選択情報に含まれるメッセージのための異常検知処理に利用可能な時間(検知処理時間)を算出する(ステップS1320)。
次に、制御部376は、非選択情報保持部375から非選択情報を1つ取得する(ステップS1321)。
続いて、制御部376は、取得した非選択情報に含まれるメッセージの異常検知処理のために必要な時間を算出し、検知処理時間より短いか否かを判定する(ステップS1322)。
制御部376が、取得した非選択情報に含まれるメッセージの異常検知処理のために必要な時間が検知処理時間より短く、時間に余裕があると判定した場合(ステップS1322でYes)、制御部376は、非選択情報に含まれるメッセージに対して異常検知処理を実行する(ステップS1323)。
その後、ステップS1320に戻る。
制御部376が、取得した非選択情報に含まれるメッセージの異常検知処理のために必要な時間が検知処理時間より長く、時間に余裕がないと判定した場合(ステップS1322でNo)、制御部376は、非選択情報を非選択情報保持部375へ戻す(ステップS1324)。
ここで、制御部376は、非選択情報後追い処理を終了する。
なお、ステップS1323において非選択情報に含まれるメッセージに対して異常検知処理を実行する場合、制御部376は、前に行われた異常検知処理で選択されなかった判定機能のみを実行してもよい。この時、ステップS1322において時間に余裕があるかどうかの判定において、前に行われた異常検知処理で選択されなかった判定機能の処理を行う時間に対して余裕があるか否かを判定する。これにより、本開示にかかる異常判定方法では、必要な判定機能のみが実行されることが可能であるため、処理時間が短縮されることが可能である。
[3.4 効果]
本実施の形態では、異常検知処理機能群370は、判定機能が実行されなかった場合に、その時点で受信したメッセージを保存しておき、検知処理時間に余裕がある場合に、当該メッセージに対する異常検知処理を後から実行する。これにより、異常検知処理機能群370は、メッセージ受信時には時間制約を満たしつつ、最大限の異常検知効果を発揮できる判定を行えるだけでなく、タイミングは遅れるものの、当初の予定通りの判定機能による異常検知処理を実行することができる。これにより、本開示にかかる異常判定方法等では、異常検知性能が落ちることなく、処理時間制約が満たされる。
[4. その他の変形例]
本開示は、上記で説明した各実施の形態に限定されない。また、本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を実施の形態に施したもの、および、異なる実施の形態における構成要素を組み合わせて構成される形態も、本開示の範囲内に含まれる。例えば以下のような変形例も本開示に含まれる。
(1)上記の実施の形態では、異常検知処理機能群370は、異常検知処理に利用可能な時間(検知処理時間)を算出し、その検知処理時間が、本来実行すべき検知処理のために必要な時間より長いか否かによって、異常検知処理で実行する判定機能を選択するか否か、または、選択する判定機能を決定したが、本開示はこれに限定されない。例えば、車載ネットワークシステム10の負荷率、データ量、または、メッセージ量などから、異常検知処理で実行する判定機能を選択するか否か、または、選択する判定機能を決定してもよい。ここで、負荷率とは、車載ネットワークに送信可能なデータ量もしくはメッセージ量の最大値に対する単位時間当たりに送信されたデータ量またはメッセージ量の割合である。
図33は、変形例における判定機能と判定機能の選択条件を示す表である。また、図34は、変形例における異常検知処理の一例を示すフローチャートである。例えば図34では、負荷率に応じて選択される判定機能の例が示されている。判定機能選択部371は、図7で説明された実施の形態1の情報の代わりに、図33で説明された情報に基づいて、選択する判定機能を決めてもよい。
例えば、負荷率が60%以上の時を高負荷と定義した場合、図34に示される異常検知処理において、判定機能選択部371は、ステップS1400で算出した負荷率が、60%以上の値の場合、「高負荷」であると判定する(ステップS1401)。
続いて、判定機能選択部371は、図33に示された情報に基づいて、処理を行う判定機能を選択する(ステップS1402)。
次に、制御部374は、異常検知処理を実行する(ステップS1104)。
また、判定機能選択部371が、「高負荷」であると判定しなかった場合(ステップS1401でNo)、制御部374が、異常検知処理を実行する(ステップS1104)。
図35は、変形例における異常検知処理の別の一例を示すフローチャートである。図34に示される負荷率をメッセージ量としている点以外は、実施される処理は同じである。また、図示されていないが、データ量に応じて、判定機能選択部371が選択する判定機能を決定する場合も同様である。
なお、高負荷の時にのみ判定機能を選択するのではなく、負荷率によって定まる状態を「高負荷」、「中負荷」、「低負荷」の3段階で定義し、いずれの段階であるかによって、判定機能選択部371が選択する判定機能を決めてもよいし、それぞれの段階を組み合わせて、「高負荷」、「高負荷」+「中負荷」、「全負荷」のような条件に基づいて、判定機能選択部371が選択する判定機能を決めてもよい。また、負荷率によって定まる状態は、3段階ではなく、2段階または4段階以上の段階で定義されてもよい。
なお、負荷率、データ量、または、メッセージ量以外の指標が用いられてもよいし、負荷率、データ量、または、メッセージ量が算出される際に、車載ネットワーク全体から算出されてもよい。また、例えば、ゲートウェイ300であれば、ゲートウェイ300が転送するメッセージに対して、負荷率、データ量、または、メッセージ量などの指標に関する値が算出されてもよいし、ゲートウェイ300に入力されるメッセージに対して、負荷率、データ量、または、メッセージ量などの指標に関する値が算出されてもよい。
なお、異常検知処理機能群370は、負荷率、データ量、または、メッセージ量をフレーム処理部350から受け取り、それを元に判定機能を選択、および、判定機能の実行を制御してもよい。また、負荷率やデータ量、メッセージ量をメッセージ受信毎に受け取るのではなく、段階に変化があったときに受け取ってもよい。この時、異常検知処理機能群370は、フレーム処理部350から負荷率、データ量、または、メッセージ量を受け取らなかったときは、それらの値が前回と同じであったと判定する。
また、判定機能選択部371は、車両が停車中か、走行中か、高速走行中か、定速走行中か、自動運転中か、自動運転を開始したか、自動運転を終了したか、運転支援機能が動作中か、運転支援機能を開始したか、また、運転支援機能を終了したかなどの車両の状態を基に判定機能を選択し、制御部377は、判定機能の実行を制御してもよい。
なお、判定機能選択部371は、CAN ID毎に設定されている検知ルールで利用する判定機能と、検知処理時間、負荷率、データ量、および、メッセージ量とから、判定機能を選択し、制御部377は、判定機能の実行を制御してもよい。つまり、判定機能選択部371または制御部374、377は、検知ルールで利用する機能の組み合わせから判定機能を選ぶ。
なお、判定機能選択部371は、図33に示された情報に基づいて、選択する判定機能を決めたが、これに限定するものではない。例えば、判定機能選択部371は、図41に示されるように判定機能の組み合わせと選択条件とから選択する判定機能を決めてもよい。
図35は、変形例における異常検知処理の別の一例を示すフローチャートである。
まず、制御部374は、メッセージ量を算出する(ステップS1410)。
次に、制御部374は、メッセージ量が多いか否かを判定する(ステップS1411)。
制御部374が、メッセージ量が所定値よりも多いと判定した場合(ステップS1411でYes)、制御部374は、処理を行う判定機能を選択する(ステップS1412)。
そして、制御部374は、異常検知処理を実行する(ステップS1104)。
また、制御部374が、メッセージ量が所定値よりも少ないと判定した場合(ステップS1411でNo)、制御部374は異常検知処理を実行する(ステップS1104)。
これにより、本開示にかかる異常判定方法等は、検知処理時間の算出が難しい場合、または、検知処理時間が一意に求まらない場合においても、負荷率、データ量、および、メッセージ量等の別の指標を用いて判定機能の選択を行うことができる。
(2)上記の実施の形態では、ECU100は、フレーム送受信部110と、フレーム解釈部120と、受信ID判定部130と、受信IDリスト保持部140と、フレーム処理部150と、データ取得部170と、フレーム生成部180とを備えると説明されたが、本開示における車載ネットワークシステムが備えるECUの構成はこれに限定されない。
図36は、変形例におけるECUの一例を示すブロック図である。図36において、ECU100fは、フレーム送受信部110と、フレーム解釈部120と、フレーム生成部180と、異常検知処理機能群370とで構成される。フレーム解釈部120は、例えばIDによらず全てのメッセージを受信し、全てのメッセージについて異常検知処理機能群370へ異常なメッセージであるかどうかの判定を依頼してもよい。
また、ECU100fは、図36の構成に加えて、受信ID判定部130と、受信IDリスト保持部140とを備え、受信IDリスト保持部が保持する受信IDリストに記載されたメッセージIDを持つメッセージのみを受信し、そのメッセージに関して、異常検知処理機能群370へ異常なメッセージであるか否かの判定を依頼してもよい。
なお、ECU100gは、更に、外部通信部390を備えてもよい。
これにより、ゲートウェイだけでなく、ECUも、車載ネットワークに送信されているメッセージが異常なメッセージであるか否かを解析できる。その結果、例えば車載ネットワークシステムにおける異常検知のための機能が向上し、より高度に安全が確保される。
図37は、変形例におけるECUの別の一例を示すブロック図である。図37に示されるECU100gは、バス200へ送信するデータを他の接続機器または外部等から取得する送信データ取得部171と、異常検知処理機能群370gとを備えてもよい。ECU100gが備える異常検知処理機能群370gは、送信データ取得部171から受信したデータが異常なメッセージであるか否かについても判定し、当該受信したデータが異常なメッセージではないと判定した場合のみ、フレーム生成部180へメッセージの送信を依頼してもよい。
なお、ECU100gは、更に、外部通信部390を備えてもよい。
これにより、本開示にかかる異常判定方法等は、例えば、カーナビゲーションと一緒に利用されるECUが、外部から不正に操作されたカーナビゲーションから異常なメッセージが送信される場合において、ECU100gが含まれる車載ネットワークへの当該メッセージの拡散を抑制することができる。また、本開示にかかる異常判定方法等は、車外から送信が試みられる異常なメッセージの車載ネットワークシステム内部への侵入を抑制することができる。
(3)上記実施の形態では、判定機能選択部371は、選択される判定機能、または、実行される判定機能を決定するために、1つの基準を用いて判定するとしたが、これに限定されるものではない。例えば、判定機能選択部371は、CAN ID毎に異なる基準を用いてもよい。また、ゲートウェイ300やECUに複数のバスが接続されている場合は、判定機能選択部371は、複数のバス毎に異なる基準を用いてもよい。また、判定機能選択部371は、車両が停車中か、走行中か、高速走行中か、定速走行中か、自動運転中か、自動運転を開始したか、自動運転を終了したか、運転支援機能が動作中か、運転支援機能を開始したかまたは、運転支援機能を終了したかなどの車両の状態毎に異なる基準を用いてもよい。
なお、CAN ID毎に基準がある場合、判定機能選択部371は、重要なCAN IDに対しては判定機能を選択せず、重要でないCAN IDに対しては判定機能を選択してもよい。また、判定機能選択部371は、重要度に応じて、選択する判定機能を変更してもよい。
これにより、本開示にかかる異常判定方法等は、より柔軟に判定機能の実行を制御することができるため、様々なシステムや、様々な状況に応じて、最適な実行を行える。
(4)上記実施の形態では、異常検知処理機能群370はフレーム処理部350へ判定結果を返すとしたが、これに限定されるものではなく、判定結果と一緒に、選択した判定機能に関する情報、または、実行した判定機能に関する情報を共に返してもよい。
これにより、異常検知処理機能群370を呼び出したフレーム処理部350等は、異常検知処理機能群370の判定結果の確からしさを確認することができる。
(5)上記の実施の形態では、CANプロトコルに従って通信するネットワーク通信システムの例として車載ネットワークを示した。本開示に係る技術は、車載ネットワークでの利用に限定されるものではなく、ロボット、産業機器等のネットワークその他、車載ネットワーク以外のCANプロトコルに従って通信するネットワーク通信システムに利用されてもよい。
また、車載ネットワークとしてCANプロトコルを用いていたが、これに限るものではない。例えば、CAN−FD(CAN with Flexible Data Rate)、FlexRay、Ethernet、LIN(Local Interconnect Network)、MOST(Media Oriented Systems Transport)などが用いられてもよい。あるいはこれらのネットワークがサブネットワークとして、組み合わされたネットワークであってもよい。
例えば、Ethernetの場合、判定機能選択部371は、DoS攻撃判定機能、送信元アドレス判定機能、送信先アドレス判定機能、プロトコル判定機能、送信元ポート番号判定機能、送信先ポート番号判定機能、または、データ値判定機能などの機能から判定機能を選択する。または、判定機能選択部371は、制御部377が実行する判定機能として、上記の複数の判定機能の中から1つ以上の判定機能を選択すればよい。Ethernet以外のネットワーク規格においても、ヘッダ情報、または、ペイロードの値を判定する機能などに対して、CANまたはEthernetの場合と同様の処理が行われる。
(6)上記の実施の形態におけるゲートウェイ300は、第一の処理部と第二の処理部とを含み、異常検知処理機能群370のうち、判定機能選択部371の機能を第一の処理部で処理を行い、制御部372および異常検知部373の機能を第二の処理部で処理を行ってもよい。この時、判定機能選択部371が選択した結果が、第一の処理部から第二の処理部へ送出される。そして、第二の処理部では、判定機能選択部371から送出された選択結果に応じて、制御部372が異常検知部373の判定機能を制御してもよい。
また、ゲートウェイ300は、第三の処理部と、第四の処理部と、第五の処理部とを含んでもよい。第三の処理部は、判定機能選択部371が処理を行っていた検知処理時間の算出を行う処理時間算出部を含み、処理時間算出部が算出した検知処理時間が第四の処理部へ送出される。第四の処理部では、判定機能選択部371が検知処理時間に応じて判定機能を選択し、選択した結果が第五の処理部へ送出される。第五の処理部では、送出された選択結果に応じて、制御部372が異常検知部373の判定機能を制御してもよい。
また、第一の処理部は、判定機能選択部371と制御部372と異常検知部373とを含み、第二の処理部は、制御部372と異常検知部373とを含んでもよい。第一の処理部では、判定機能選択部371が第一の処理部の異常検知部373を使った異常検知処理を行う際に、判定機能選択部371が選択しなかった判定機能を選択して、第二の処理部へ送出し、第二の処理部の制御部372と異常検知部373とが異常検知処理を行うことで、本来実行が望まれた異常検知処理が行われてもよい。
なお、ゲートウェイ300の中で、処理部が分割されて存在するだけではなく、ゲートウェイ300には第二の処理部および第五の処理部があり、他のECUに第一の処理部、第三の処理部および第四の処理部があってもよい。また、図38は、変形例における車載ネットワークシステムの全体構成を示すブロック図であり、図39は、変形例における車載ネットワークシステムに含まれる通信ECUの一例を示すブロック図である。図37に示されるように、車載ネットワークシステムは通信ECU100eを含み、外部ネットワーク400を経由してサーバ500と通信し、通信ECU100eは、図39に示されるように外部通信部390を含み、車載ネットワークから受信したメッセージ、異常検知処理機能群370による異常検知処理結果、および、実行した判定機能に関する情報をサーバ500へ送出してもよい。
図40は、変形例におけるサーバの一例を示すブロック図であり、図41は、変形例における判定機能と判定機能の選択条件を示す表である。サーバ500は、図40に示されるように、受信部510とメッセージ保持部520と処理部530とを含み、上記の第一の処理部と第四の処理部とが処理部530であってもよい。また、処理部530は、表示部と入力部とを含み、検知処理時間、負荷率、データ量、メッセージ量、または、車両状態などを表示し、オペレーターが、表示された情報、または、他から入手した情報から実行する判定機能を選択し、入力部を介して選択結果を入力してもよい。
入力された結果は、サーバ500から制御部372へ送出され、制御部372が入力された結果に応じて、異常検知部373の判定機能を制御してもよい。また、サーバ500は、異常検知部373が実行した判定機能に関する情報から、本来実行が望まれる判定機能が実行されていないと判断した場合には、サーバ500の処理部530において、そのメッセージに対する異常検知処理を行ってもよい。
これにより、本開示の車載ネットワークシステムは、柔軟な構成で実現されうるため、様々なシステム制約をふまえた構成となることができる。
(7)上記の実施の形態における各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、および、マウスなどから構成されるコンピュータシステムである。RAMまたはハードディスクユニットには、コンピュータプログラムが記録されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(8)上記の実施の形態における各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されていてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、および、RAMなどを含んで構成されるコンピュータシステムである。RAMには、コンピュータプログラムが記録されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又はすべてを含むように1チップ化されてもよい。
また、ここでは、実施の形態における各装置を構成する構成要素の一部または全部はシステムLSIで実現されるとしたが、集積度の違いにより、IC、LSI、スーパーLSI、または、ウルトラLSIと呼称されることもある。また、集積回路化の手法は、LSIに限るものではなく、専用回路又は汎用プロセッサで実現される手法であってもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)または、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサが利用されても良い。
さらには、半導体技術の進歩、または、派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、当該技術が用いられて機能ブロックの集積化が行われてもよい。LSIに置き換わる集積回路化の技術としては、バイオ技術の適用等の可能性も想定される。
(9)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。ICカードまたはモジュールは、マイクロプロセッサ、ROM、または、RAMなどから構成されるコンピュータシステムである。ICカードまたはモジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有してもよい。
(10)本開示は、上記に示す方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本開示は、コンピュータプログラムまたはデジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray(登録商標) Disc)、または、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されているデジタル信号であるとしてもよい。
また、本開示は、コンピュータプログラムまたはデジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、または、データ放送等を経由して伝送するものとしてもよい。
また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、メモリは、上記コンピュータプログラムを記録しており、マイクロプロセッサは、コンピュータプログラムにしたがって動作するとしてもよい。
また、プログラムまたはデジタル信号を記録媒体に記録して移送することにより、もしくは、プログラムまたはデジタル信号を、ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(11)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
以上、一つ又は複数の態様に係る車載ネットワークにおける、不正メッセージによる不正制御を目的とする不正通信検知の基準として用いられるメッセージの決定のための技術について実施の形態及びその変形例に基づいて説明した。
これらの各実施の形態及びその変形例では、車載ネットワークシステムに接続されて通信するゲートウェイもしくはECU、又はこれらとサーバコンピュータとの組み合わせによって不正通信検知の基準として用いられるメッセージが決定される。
このような不正通信検知を実行する、1個以上のプロセッサ及び記憶部を含むシステムを、本開示では不正通信検知基準決定システムと呼ぶ。
したがって、不正通信検知基準決定システムは車載ネットワークシステムに接続される1台のゲートウェイのように1個の装置によって実現されるものも、このようなゲートウェイとECUとの組み合わせ、又はゲートウェイ若しくはECUと遠隔にあるサーバコンピュータとの組み合わせのように複数個の装置によって実現されるものも含む。
また、この技術は、上記各実施の形態又はその変形例において、各構成要素が実行する処理のステップの一部又は全部を含む方法として、又は不正通信検知基準決定システムのプロセッサに実行されて、不正通信検知基準決定システムがこの方法を実施させるためのプログラムとしても実現可能である。
また、上記実施の形態又はその変形例において、特定の構成要素が実行する処理を特定の構成要素の代わりに別の構成要素が実行してもよい。また、複数の処理の順序が変更されてもよいし、複数の処理が並行して実行されてもよい。
上記の異常判定方法は、1個以上のプロセッサと、その1個以上のプロセッサからアクセス可能な記憶部とを備える異常判定装置によって、実行されてもよい。この異常判定装置は、ゲートウェイ300またはサーバ500などであってもよいし、それらに含まれていてもよい。
[効果等]
本開示における異常判定方法は、受信メッセージの異常を判定する異常判定方法であって、周期性を有する複数のメッセージであって、固定されている値を含む第1フィールドと、変化する値を含む第2フィールドとを有する複数のメッセージのそれぞれを前記受信メッセージとして受信し、前記異常判定方法が実行されうる時間、負荷量、データ量、または、メッセージの個数のうちの1以上の基準に応じて、前記周期性に基づく受信タイミング、または、前記受信メッセージの個数が用いられる異常判定、前記値が固定されているフィールドが用いられる異常判定、および、前記値が変化するフィールドが用いられる異常判定のうちの1以上でそれぞれが構成される複数の組み合わせのいずれで判定が行われるかを選択する。
これにより、本開示にかかる異常判定方法は、限られた時間内で、実行するべき異常判定を選択しながら処理を進めることができる。よって、本開示にかかる異常判定方法は、効果的に、受信メッセージの異常を判定することができる。
また、本開示における異常判定方法は、前記異常判定を前記選択された組み合わせで実行してもよい。
これにより、本開示にかかる異常判定方法は、あらかじめ選択された異常判定の組み合わせを実行することで、限られた時間内で、効果的に、受信メッセージの異常を判定することができる。
また、本開示にかかる異常判定方法は、前記異常判定方法が行われた時に、前記複数の異常判定のうちの前回の情報を用いる前記異常判定が実行されていなかった場合、次に異常判定方法が行われる時に、前記前回の情報を用いる異常判定に用いられる前記前回の情報をリセットしてもよい。
これにより、本開示にかかる異常判定方法は、ある異常判定がスキップされた後に、同一の異常判定が行われる際に、当該異常判定がスキップされたことにより正常なデータが記録されていないことに起因して、同一の異常判定が行われる際に正常な判定が行われないことを回避することができる。よって、本開示にかかる異常判定方法は、効果的に受信メッセージの異常を判定することができる。
また、本開示にかかる異常判定方法は、前記受信メッセージを受信するためのネットワークの負荷率が所定の閾値を下回ったとき、直前に受信した、種類の異なる前記受信メッセージの情報を、前記リセットされた前回の情報の代わりの情報として用いてもよい。
これにより、本開示にかかる異常判定方法は、ある異常判定がスキップされた後に、同一の異常判定が行われる際に、当該異常判定がスキップされたことにより正常なデータが記録されていないことに起因して、同一の異常判定が行われる際に、当該異常判定処理が行われることができないという事態を回避することができる。つまり、本開示にかかる異常判定方法は、上述の場合に、直前に受信したIDの異なる受信メッセージの情報を使用することで、スキップされた異常判定処理と同一の異常判定処理を行うことができる。
また、本開示にかかる異常判定方法は、前記選択された判定処理が実行された後に前記異常判定方法を実行するための時間に余裕が発生した場合、選択されなかった前記異常判定を実行してもよい。
これにより、本開示にかかる異常判定方法は、より多くの異常判定を行うことが可能である。よって、本開示にかかる異常判定方法は、より効果的に、受信メッセージの異常を判定することができる。
本開示に係る異常判定装置は、ネットワーク及び前記ネットワークに接続される1以上の電子制御ユニットを含む車載ネットワークシステムにおける異常判定装置であって、1個以上のプロセッサと、前記1個以上のプロセッサからアクセス可能な記憶部と、を備え、前記1個以上のプロセッサは、前記ネットワークから、周期性を有する複数のメッセージを含む複数のメッセージであって、固定されている値を有する第1フィールドと、変化する値を有する第2フィールドとをそれぞれが含む複数のメッセージのそれぞれを受信メッセージとして受信し、前記異常判定装置が行う異常判定方法が実行されうる時間、負荷量、データ量、または、メッセージの個数のうちの1以上の基準に応じて、前記周期性に基づく受信タイミング、または、前記受信メッセージの個数が用いられる異常判定、前記第1フィールドが用いられる異常判定、および、前記第2フィールドが用いられる異常判定を含む複数の異常判定のうちの1以上でそれぞれが構成される複数の組み合わせのいずれで判定が行われるかを選択する。
これにより、本開示にかかる異常判定装置は、上記異常判定方法と同様の効果を奏することができる。
また、本開示にかかるプログラムは、コンピュータに本開示にかかる異常判定方法を実施させるためのプログラムであってもよい。
これにより、本開示にかかるプログラムは、上記異常判定方法と同様の効果を奏することができる。
なお、本開示にかかる異常判定方法は、前記異常判定方法が実行されうる時間が、所定の時間より短いと判定された場合、前記周期性に基づく受信タイミング、または、前記受信メッセージの個数を用いた異常判定、前記第1フィールドが用いられる異常判定、または、前記第2フィールドが用いられる異常判定のうちから、所定の基準よりも誤検知率が低く検知率が高い、1つ以上の異常判定の組み合わせを実行してもよい。
これにより、本開示にかかる異常判定方法は、より効果的に、受信メッセージの異常を判定することができる。
なお、本開示にかかる異常判定方法は、前記異常判定方法が実行されうる時間が、所定の時間より短いと判定された場合、前記周期性に基づく受信タイミング、前記受信メッセージの個数を用いた異常判定、および、前記第2フィールドが用いられる異常判定を実行しなくてもよい。
これにより、本開示にかかる異常判定方法は、変化する値を有するフィールドが用いられる異常判定のみを行うことで、限られた時間内で、より効果的に、受信メッセージの異常を判定することができる。
本開示にかかる異常判定方法は、前記異常判定方法が実行されうる時間が、所定の時間より短いと判定された場合、前記周期性に基づく受信タイミング、または、前記受信メッセージの個数を用いた異常判定、前記第1フィールドが用いられる異常判定、または、前記第2フィールドが用いられる異常判定のうちのいずれかの異常判定の前で処理を終了することを選択してもよい。 これにより、本開示にかかる異常判定方法は、限られた時間内で、より効果的に、受信メッセージの異常を判定することができる。
本開示にかかる異常判定方法は、前記異常判定方法が実行されうる時間が、所定の時間より短いと判定された場合、前記周期性に基づく受信タイミング、または、前記受信メッセージの個数を用いた異常判定、前記値が固定されているフィールドが用いられる異常判定、または、前記値が変化するフィールドが用いられる異常判定のうち、実行されないと決定された異常判定に関する情報、または、実行されないと決定された異常判定が行われる対象のメッセージに関する情報を、メモリに記憶してもよい。
これにより、本開示にかかる異常判定方法は、実行されないと決定された異常判定を、状況に応じて、後から実行することができる。これにより、本開示にかかる異常判定方法は、より効果的に、受信メッセージの異常を判定することができる。