(57)【特許請求の範囲】
【請求項１】
ネットワークにおけるメッセージを送受信する通信部と、
前記ネットワークが設けられた物体の状態に関する状態情報を取得する取得部と、
前記取得部において取得した状態情報をもとに、前記物体の状態を推定する推定部と、
前記推定部において推定した状態をもとに、フィルタリングルールを設定する設定部と、
前記設定部において設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するフィルタ部と、
を備え、
前記推定部は、第１状態を推定してから、第２状態を推定し、
前記設定部は、（１）前記推定部において第１状態を推定した場合に、第１状態に対応したフィルタリングルールを設定し、（２）前記推定部において第１状態から第２状態への遷移を推定した場合に、遷移してから所定の期間にわたって、第１状態および第２状態に対応したフィルタリングルールを設定し、（３）所定の期間経過後、第２状態に対応したフィルタリングルールを設定する、
ことを特徴とする通信装置。
【請求項２】
前記取得部は、複数種類の状態情報を取得し、
前記推定部は、前記取得部において取得した複数種類の状態情報のうちのいずれかをもとに、前記物体の状態を推定する、
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
ネットワークにおけるメッセージを送受信する通信部と、
前記ネットワークが設けられた物体の状態に関する複数種類の状態情報を取得する取得部と、
前記取得部において取得した複数種類の状態情報のうち、信頼性が高い方の状態情報および／またはフィルタリングルールが厳しい方に対応する状態情報をもとに、前記物体の状態を推定する推定部と、
前記推定部において推定した状態をもとに、フィルタリングルールを設定する設定部と、
前記設定部において設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するフィルタ部と、
を備えることを特徴とする通信装置。
【請求項４】
前記取得部は、状態情報として、前記ネットワークに接続された他の通信装置の動作状
態を確認するためのコマンドを取得し、
前記推定部は、前記取得部において取得したコマンドをもとに、前記物体の状態として、他の通信装置の動作状態を推定し、
前記設定部は、前記推定部において推定した他の通信装置の動作状態に対応したフィルタリングルールを設定するとともに、複数の他の通信装置からのコマンドを抽出可能なフィルタリングルールも設定する、
ことを特徴とする請求項１から３のいずれか１項に記載の通信装置。
【請求項５】
ネットワークにおけるメッセージを送受信するステップと、
前記ネットワークが設けられた物体の状態に関する状態情報を取得するステップと、
取得した状態情報をもとに、前記物体の状態を推定するステップと、
推定した状態をもとに、フィルタリングルールを設定するステップと、
設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するステップと、
を備え、
前記推定するステップは、第１状態を推定してから、第２状態を推定し、
前記設定するステップは、（１）前記推定するステップにおいて第１状態を推定した場合に、第１状態に対応したフィルタリングルールを設定し、（２）前記推定するステップにおいて第１状態から第２状態への遷移を推定した場合に、遷移してから所定の期間にわたって、第１状態および第２状態に対応したフィルタリングルールを設定し、（３）所定の期間経過後、第２状態に対応したフィルタリングルールを設定する、
ことを特徴とする通信方法。
【請求項６】
ネットワークにおけるメッセージを送受信するステップと、
前記ネットワークが設けられた物体の状態に関する状態情報を取得するステップと、
取得した状態情報をもとに、前記物体の状態を推定するステップと、
推定した状態をもとに、フィルタリングルールを設定するステップと、
設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するステップと、
を備え、
前記推定するステップは、第１状態を推定してから、第２状態を推定し、
前記設定するステップは、（１）前記推定するステップにおいて第１状態を推定した場合に、第１状態に対応したフィルタリングルールを設定し、（２）前記推定するステップにおいて第１状態から第２状態への遷移を推定した場合に、遷移してから所定の期間にわたって、第１状態および第２状態に対応したフィルタリングルールを設定し、（３）所定の期間経過後、第２状態に対応したフィルタリングルールを設定する、
ことをコンピュータに実行させるためのプログラム。
【請求項７】
ネットワークにおけるメッセージを送受信する通信部と、
前記ネットワークが設けられた物体の状態に関する状態情報を取得する取得部と、
前記取得部において取得した状態情報をもとに、前記物体の状態を推定する推定部と、
前記推定部において推定した状態をもとに、フィルタリングルールを設定する設定部と、
前記設定部において設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するフィルタ部と、
を備え、
前記取得部は、状態情報として、前記ネットワークに接続された他の通信装置の動作状態を確認するためのコマンドを取得し、
前記推定部は、前記取得部において取得したコマンドをもとに、前記物体の状態として、他の通信装置の動作状態を推定し、
前記設定部は、前記推定部において推定した他の通信装置の動作状態に対応したフィルタリングルールを設定するとともに、複数の他の通信装置からのコマンドを抽出可能なフィルタリングルールも設定する、
ことを特徴とする通信装置。
【請求項８】
前記取得部は、複数種類の状態情報を取得し、
前記推定部は、前記取得部において取得した複数種類の状態情報のうちのいずれかをもとに、前記物体の状態を推定する、
ことを特徴とする請求項７に記載の通信装置。
【請求項９】
ネットワークにおけるメッセージを送受信するステップと、
前記ネットワークが設けられた物体の状態に関する複数種類の状態情報を取得するステップと、
取得した複数種類の状態情報のうち、信頼性が高い方の状態情報および／またはフィルタリングルールが厳しい方に対応する状態情報をもとに、前記物体の状態を推定するステップと、
推定した状態をもとに、フィルタリングルールを設定するステップと、
設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するステップと、
を備えることを特徴とする通信方法。
【請求項１０】
ネットワークにおけるメッセージを送受信するステップと、
前記ネットワークが設けられた物体の状態に関する複数種類の状態情報を取得するステップと、
取得した複数種類の状態情報のうち、信頼性が高い方の状態情報および／またはフィルタリングルールが厳しい方に対応する状態情報をもとに、前記物体の状態を推定するステップと、
推定した状態をもとに、フィルタリングルールを設定するステップと、
設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するステップと、
をコンピュータに実行させるためのプログラム。
【請求項１１】
ネットワークにおけるメッセージを送受信するステップと、
前記ネットワークが設けられた物体の状態に関する状態情報を取得するステップと、
取得した状態情報をもとに、前記物体の状態を推定するステップと、
推定した状態をもとに、フィルタリングルールを設定するステップと、
設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するステップと、
を備え、
前記取得するステップは、状態情報として、前記ネットワークに接続された他の通信装置の動作状態を確認するためのコマンドを取得し、
前記推定するステップは、前記取得するステップにおいて取得したコマンドをもとに、前記物体の状態として、他の通信装置の動作状態を推定し、
前記設定するステップは、前記推定するステップにおいて推定した他の通信装置の動作状態に対応したフィルタリングルールを設定するとともに、複数の他の通信装置からのコマンドを抽出可能なフィルタリングルールも設定する、
ことを特徴とする通信方法。
【請求項１２】
ネットワークにおけるメッセージを送受信するステップと、
前記ネットワークが設けられた物体の状態に関する状態情報を取得するステップと、
取得した状態情報をもとに、前記物体の状態を推定するステップと、
推定した状態をもとに、フィルタリングルールを設定するステップと、
設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するステップと、
を備え、
前記取得するステップは、状態情報として、前記ネットワークに接続された他の通信装置の動作状態を確認するためのコマンドを取得し、
前記推定するステップは、前記取得するステップにおいて取得したコマンドをもとに、前記物体の状態として、他の通信装置の動作状態を推定し、
前記設定するステップは、前記推定するステップにおいて推定した他の通信装置の動作状態に対応したフィルタリングルールを設定するとともに、複数の他の通信装置からのコマンドを抽出可能なフィルタリングルールも設定する、
ことをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスで接続された通信システムにおける通信方法およびそれを利用した通信装置に関する。
【背景技術】
【０００２】
車載ネットワークにおいて、不正なデータを侵入させて誤動作させる攻撃を検知し防御することが求められる。そのため、フィルタテーブルに監視すべきＩＤを記憶しておき、記憶したＩＤのメッセージの送信周期をチェックすることによって、不正なデータの侵入が検出される。つまり、正規の送信ノードが、所定のＩＤのメッセージを周期的に送信している場合、不正な送信ノードが、なりすまし攻撃により不正なデータを送信すると、周期異常により不正なデータが検出可能である（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１４６８６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
車載ネットワークにおいては、車両の挙動や車両に搭載された電装品の状況など、車両の状態が変化することに伴って正規の送信ノードが正規のメッセージを送信しない、あるいはメッセージの種類や内容を変更する、などのケースがある。これらのケースが考慮されない場合、不正なメッセージを検出できない状況が想定される。例えば特許文献１に記載のものは、正規の送信ノードがメッセージを送信していないことが正しい状況である場合において、不正な送信ノードに正規の周期で不正なメッセージを送信されたときは、これを不正なメッセージとして検出できない。
【０００５】
本発明はこうした状況に鑑みなされたものであり、その目的は、不正なメッセージの検出精度を向上する技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様の通信装置は、ネットワークにおけるメッセージを送受信する通信部と、ネットワークが設けられた物体の状態に関する状態情報を取得する取得部と、取得部において取得した状態情報をもとに、物体の状態を推定する推定部と、推定部において推定した状態をもとに、フィルタリングルールを設定する設定部と、設定部において設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するフィルタ部と、を備える。推定部は、第１状態を推定してから、第２状態を推定し、設定部は、（１）推定部において第１状態を推定した場合に、第１状態に対応したフィルタリングルールを設定し、（２）推定部において第１状態から第２状態への遷移を推定した場合に、遷移してから所定の期間にわたって、第１状態および第２状態に対応したフィルタリングルールを設定し、（３）所定の期間経過後、第２状態に対応したフィルタリングルールを設定する。
本発明の別の態様もまた、通信装置である。この装置は、ネットワークにおけるメッセージを送受信する通信部と、ネットワークが設けられた物体の状態に関する複数種類の状態情報を取得する取得部と、取得部において取得した複数種類の状態情報のうち、信頼性が高い方の状態情報および／またはフィルタリングルールが厳しい方に対応する状態情報をもとに、物体の状態を推定する推定部と、推定部において推定した状態をもとに、フィルタリングルールを設定する設定部と、設定部において設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するフィルタ部と、を備える。
【０００７】
本発明のさらに別の態様は、通信方法である。この方法は、ネットワークにおけるメッセージを送受信するステップと、ネットワークが設けられた物体の状態に関する状態情報を取得するステップと、取得した状態情報をもとに、物体の状態を推定するステップと、推定した状態をもとに、フィルタリングルールを設定するステップと、設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するステップと、を備える。推定するステップは、第１状態を推定してから、第２状態を推定し、設定するステップは、（１）推定するステップにおいて第１状態を推定した場合に、第１状態に対応したフィルタリングルールを設定し、（２）推定するステップにおいて第１状態から第２状態への遷移を推定した場合に、遷移してから所定の期間にわたって、第１状態および第２状態に対応したフィルタリングルールを設定し、（３）所定の期間経過後、第２状態に対応したフィルタリングルールを設定する。
本発明のさらに別の態様もまた、通信装置である。この装置は、ネットワークにおけるメッセージを送受信する通信部と、ネットワークが設けられた物体の状態に関する状態情報を取得する取得部と、取得部において取得した状態情報をもとに、物体の状態を推定する推定部と、推定部において推定した状態をもとに、フィルタリングルールを設定する設定部と、設定部において設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するフィルタ部と、を備える。取得部は、状態情報として、ネットワークに接続された他の通信装置の動作状態を確認するためのコマンドを取得し、推定部は、取得部において取得したコマンドをもとに、物体の状態として、他の通信装置の動作状態を推定し、設定部は、推定部において推定した他の通信装置の動作状態に対応したフィルタリングルールを設定するとともに、複数の他の通信装置からのコマンドを抽出可能なフィルタリングルールも設定する。
本発明のさらに別の態様もまた、通信方法である。この方法は、ネットワークにおけるメッセージを送受信するステップと、ネットワークが設けられた物体の状態に関する複数種類の状態情報を取得するステップと、取得した複数種類の状態情報のうち、信頼性が高い方の状態情報および／またはフィルタリングルールが厳しい方に対応する状態情報をもとに、物体の状態を推定するステップと、推定した状態をもとに、フィルタリングルールを設定するステップと、設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するステップと、を備える。
本発明のさらに別の態様もまた、通信方法である。この方法は、ネットワークにおけるメッセージを送受信するステップと、ネットワークが設けられた物体の状態に関する状態情報を取得するステップと、取得した状態情報をもとに、物体の状態を推定するステップと、推定した状態をもとに、フィルタリングルールを設定するステップと、設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するステップと、を備える。取得するステップは、状態情報として、ネットワークに接続された他の通信装置の動作状態を確認するためのコマンドを取得し、推定するステップは、取得するステップにおいて取得したコマンドをもとに、物体の状態として、他の通信装置の動作状態を推定し、設定するステップは、推定するステップにおいて推定した他の通信装置の動作状態に対応したフィルタリングルールを設定するとともに、複数の他の通信装置からのコマンドを抽出可能なフィルタリングルールも設定する。
【０００８】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラム、またはコンピュータプログラムを記録した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によれば、不正なメッセージの検出精度を向上できる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施例１に係るＣＡＮシステムの構成を示す図である。
【図２】図１のＣＡＮシステムで使用される標準フォーマットのデータフレームを示す図である。
【図３】図１のＥＣＵの構成を示す図である。
【図４】図４（ａ）−（ｂ）は、図３の設定部において設定されるフィルタリングルールのデータ構造を示す図である。
【図５】図３のフィルタ部の構成を示す図である。
【図６】図３のＥＣＵによる設定手順を示すフローチャートである。
【図７】本発明の実施例２に係るＥＣＵによる設定手順を示すフローチャートである。
【図８】図８（ａ）−（ｄ）は、本発明の実施例３に係るＥＣＵの動作概要を示す図である。
【図９】本発明の実施例３に係るＥＣＵによる設定手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
（実施例１）
本発明の実施例１を具体的に説明する前に、実施例１の概要を説明する。実施例１は、車載ネットワークであるＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）における不正なメッセージを検出する通信装置に関する。ＣＡＮはバス型ネットワークを採用したシリアル通信プロトコルである。バスに接続される各通信装置からのメッセージは、バスに接続されるすべての通信装置にブロードキャスト送信される。当該メッセージには送信元通信装置および宛先通信装置の識別情報が含まれない。したがって、メッセージを受信した通信装置は、正規の通信装置からのメッセージであるか否かを単純に判定できない。そのため、不正なメッセージの検出精度を向上することが望まれる。
【００１２】
本実施例に係る通信装置は、ＣＡＮの通信仕様にもとづいた通信規則であって、かつ正しいメッセージの通信規則をルールとして保持する。ここで、通信規則の一例は、対象のＣＡＮで送信可能なＣＡＮのメッセージＩＤ（以下、「ＣＡＮ  ＩＤ」）である。また、通信規則の一例は、ＣＡＮ  ＩＤごとのＤＬＣ(データ長)、送信周期、送信頻度、データの取り得る値、データの増加・減少の規則などであってもよい。通信装置は、通信仕様に応じたフィルタリングルールを設定しており、フィルタリングルールによって、送受信されるＣＡＮのメッセージをフィルタリング処理する。また、通信装置は、フィルタリング処理の判定結果をもとに、アプリケーションあるいはＣＡＮバスに、メッセージを出力するか否かを決定する。
【００１３】
前述のごとく、ＣＡＮが設けられる車両の状態に応じて、送受信されるメッセージが変わる。これをフィルタリングルールに利用することによって、通信装置は、不正なメッセージの検出精度を向上する。つまり、通信装置は、車両状態に応じて、フィルタリングルールを動的に変更する。
【００１４】
図１は、本発明の実施例１に係るＣＡＮシステム５００の構成を示す。ＣＡＮシステム５００は、ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）１００と総称される第１ＥＣＵ１００ａ、第２ＥＣＵ１００ｂ、第３ＥＣＵ１００ｃ、第４ＥＣＵ１００ｄ、ＣＡＮバス２００を含む。なお、ＣＡＮシステム５００に含まれるＥＣＵ１００の数は、「４」に限定されない。
【００１５】
各ＥＣＵ１００は、車両に搭載されたエンジン、モータ、メータ、トランスミッション、ブレーキ、エアバッグ、ランプ、パワーステアリング、パワーウィンドウ、カーエアコン等を制御するユニットであり、例えば、マイクロコントローラを搭載する。各ＥＣＵ１００は、ＣＡＮバス２００に接続されており、ＣＡＮの通信を実行する。そのため、各ＥＣＵ１００は、前述の「通信装置」に相当する。ＣＡＮバス２００は、例えば、２本の通信線によって構成されており、電圧の差動によって信号を伝送する。
【００１６】
ＣＡＮではＣＳＭＡ／ＣＡ(Ｃａｒｒｉｅｒ  Ｓｅｎｓｅ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ  ｗｉｔｈ  Ｃｏｌｌｉｓｉｏｎ  Ａｖｏｉｄａｎｃｅ)と呼ばれるアクセス制御方式が採用されている。ＣＳＭＡ／ＣＡでは、ＣＡＮバス２００に対して最初に送信を開始したＥＣＵ１００が送信権を取得する。なお、同時に複数のＥＣＵ１００が送信した場合は、通信調停（ｂｕｓ  ａｒｂｉｔｒａｔｉｏｎ）が行われる。ＣＡＮでは、ＣＡＮ  ＩＤの値が小さい方が優先される。
【００１７】
図２は、ＣＡＮシステム５００で使用される標準フォーマットのデータフレームを示す。図示のごとく、ＳＯＦ、ＩＤフィールド、ＲＴＲ、ＩＤＥ、ｒ０、ＤＬＣ、データフィールド、ＣＲＣデリミタ、Ａｃｋ、Ａｃｋデリミタ、ＥＯＦが先頭から順に配置されることによって、データフレームが構成される。各ボックス内の数字はビット数を示す。またボックスの上が開放されている項目は常に「０」をとる項目であり、ボックスの下が開放されている項目は常に「１」をとる項目である。上下が開放されていない項目は「０」と「１」の両方をとりうる項目である。なお、送信可能な状態のデータフレームは、メッセージと呼ばれる。
【００１８】
ＩＤフィールドには、前述のＣＡＮ  ＩＤが格納される。ＣＡＮ  ＩＤは、メッセージの種類および優先度を表すための識別情報である。ＣＡＮにおけるメッセージには、車両内の特定の処理対象における特定の通知事項が含まれる。当該処理対象には、特定の監視対象および特定の制御対象が含まれる。例えば、車両内の特定の処理対象に関するメッセージとして、速度情報を含むメッセージ、ドアの開閉を指示するメッセージ等がある。また、同じ処理対象に対して複数の通知事項が設定されることがある。例えば、１つのメータに対してエンジン回転数を通知するための通知事項、エンジン水温を通知するための通知事項などの複数の通知事項が設定可能である。
【００１９】
ＣＡＮ  ＩＤは、送信されるメッセージに含まれる特定の処理対象の特定の通知事項に関連づけられている。メッセージを受信したＥＣＵ１００では、そのＣＡＮ  ＩＤにもとづいて、メッセージに含まれる特定の通知事項の内容を判断する。図２に示すように、ＣＡＮのデータフレームには送信先アドレスおよび送信元アドレスが含まれない。そのため、受信側のＥＣＵ１００は、正しい通信相手からのメッセージであるか否かを判断できない。例えば、エンジン回転数を含むメッセージは、エンジンのＥＣＵ１００から送信される。当該メッセージに付与されるＣＡＮ  ＩＤと同じＣＡＮ  ＩＤが付与されたメッセージが、不正なＥＣＵ１００から送信されると、受信側のＥＣＵ１００は、正当なエンジンのＥＣＵ１００からのメッセージであるか、不正なＥＣＵ１００からのメッセージであるかを判別できない。
【００２０】
不正なＥＣＵ１００が送信側のＥＣＵ１００になりすまして不正な情報を含むメッセージを送信し、かつ受信側のＥＣＵが、これを正当なメッセージとして処理した場合、その後の処理（補機の制御など）に悪影響が及んでしまう。例えば、不正なＥＣＵ１００が、エンジンのＥＣＵ１００になりすましてエンジン回転数を含むメッセージを送信することにより、それを受信したメータのＥＣＵ１００の制御に悪影響が及ぶ。このようにＣＡＮプロトコルでは、なりすましがなされやすい。また、メッセージがＣＡＮバス２００に対してブロードキャスト送信されるので、ユニキャスト送信よりも盗聴がなされやすい。
【００２１】
図３は、ＥＣＵ１００の構成を示す。ＥＣＵ１００は、通信部１０、処理部１２、アプリケーション実行部１４を含む。処理部１２は、取得部２０、推定部２２、設定部２４、記憶部２６、入力部２８、フィルタ部３０、出力部３２を含む。
【００２２】
アプリケーション実行部１４は、各ＥＣＵ１００の処理対象（例えば、エンジン、ステアリング、ブレーキ、その他の各種補機）と接続し、それらの処理対象からステータス情報または指示情報を取得する。アプリケーション実行部１４は、当該処理対象から取得した情報をもとに、ＣＡＮにおいてブロードキャスト送信すべきデータを生成し、処理部１２に出力する。また、アプリケーション実行部１４は、ＣＡＮバス２００から受信されたメッセージに含まれるデータを処理部１２から入力し、当該データに応じて当該処理対象を制御する。
【００２３】
通信部１０は、ネットワークであるＣＡＮシステム５００におけるメッセージを送受信する。具体的に説明すると、通信部１０は、処理部１２により生成されたメッセージであって、かつアプリケーション実行部１４において生成されたデータが含まれたメッセージをＣＡＮバス２００へブロードキャスト送信する。通信部１０は、他のＥＣＵ１００で生成されＣＡＮバス２００へブロードキャスト送信されたメッセージをＣＡＮバス２００から受信する。通信部１０は、受信したメッセージを処理部１２に渡す。
【００２４】
処理部１２は、アプリケーション実行部１４と通信部１０の間に配置される。処理部１２は、アプリケーション実行部１４からのデータを入力し、当該データが含まれたメッセージを生成する。処理部１２は、生成したメッセージに対して、後述のフィルタリング処理を実行してから通信部１０に出力する。一方、処理部１２は、通信部１０からのメッセージを入力し、入力したメッセージに対して、後述のフィルタリング処理を実行する。フィルタリング処理したメッセージに含まれたデータを抽出してアプリケーション実行部１４に出力する。処理部１２は、フィルタリング処理において、不正ではないメッセージだけを選択する。以下では、フィルタリング処理を中心に説明する。
【００２５】
取得部２０は、ＣＡＮシステム５００が設けられた物体、例えば車両の状態に関する状態情報を取得する。車両の状態とは、イグニッションがオンになっているか、ＡＣＣ（アクセサリーポジション）がオンになっているか、車速等であり、これらが状態情報に含まれている。取得部２０は、例えば、状態情報を図示しないセンサ等から取得する。また、取得部２０は、ＣＡＮバス２００から状態情報を取得してもよい。取得部２０は、取得した状態情報を推定部２２に出力する。
【００２６】
推定部２２は、取得部２０からの状態情報を入力する。推定部２２は、状態情報をもとに、車両の状態を推定する。推定部２２は、「第１状態」として、例えば、ＡＣＣがオンであることが示された状態情報をもとに、ＡＣＣがオンである状態を推定する。これに続いて、推定部２２は、「第２状態」として、例えば、イグニッションがオンであることが示された状態情報をもとに、イグニッションがオンである情報を推定する。なお、推定部２２において推定される状態、状態の遷移は、これらに限定されない。推定部２２は、推定した車両の状態を設定部２４に出力する。
【００２７】
所定のタイミングにおける車両の状態は、いずれかに特定されるべきである。第１状態から第２状態への遷移がなされる場合であっても、車両の状態は、第１状態あるいは第２状態で特定される。しかしながら、図１における各ＥＣＵ１００において推定される車両の状態にずれが生じる可能性がある。例えば、第１ＥＣＵ１００ａは、車両の状態が第１状態であると推定し、第２ＥＣＵ１００ｂは、車両の状態が第２状態であると推定する。この場合、第２ＥＣＵ１００ｂにおいて、車両の状態が第２状態であると推定するタイミングが、第１ＥＣＵ１００ａにおいて、車両状態が第２状態であると推定するタイミングよりも遅れている。
【００２８】
記憶部２６は、正しいメッセージの通信規則をルールとして記憶する。前述のごとく、記憶されるルールは、送受信可能なＣＡＮ  ＩＤ、ＣＡＮ  ＩＤごとのＤＬＣ、ＣＡＮ  ＩＤごとの送信周期、ＣＡＮ  ＩＤごとの送信頻度、ＣＡＮ  ＩＤごとのデータなどである記憶部２６は、ルールに含まれる情報の一覧を記憶する。
【００２９】
設定部２４は、推定部２２から、車両の状態を入力する。設定部２４は、推定部２２において推定した車両の状態をもとに、フィルタリングルールを設定する。具体的に説明すると、設定部２４は、記憶部２６に記憶した情報の一覧から、推定部２２において推定した車両の状態に適した一部の情報をフィルタリングルールとして選択する。なお、設定部２４には、車両の状態と、選択すべき一部の情報との対応関係が予め記憶されている。記憶部２６に記憶されている情報の一覧には、ＣＡＮ  ＩＤだけではなく、ＤＬＣ、送信周期等も含まれているが、ここでは、説明を明瞭にするために、ＣＡＮ  ＩＤだけを説明の対象とする。
【００３０】
例えば、推定部２２が第１状態を推定した場合に、記憶部２６は、第１状態に対応したフィルタリングルールを設定する。図４（ａ）−（ｂ）は、設定部２４において設定されるフィルタリングルールのデータ構造を示す。図４（ａ）は、第１状態、つまりＡＣＣがオンである状態において設定されるフィルタリングルールを示す。図示のごとく、ＣＡＮ  ＩＤの「０ｘ１００」、「０ｘ２００」、「０ｘ３００」、「０ｘ１１０」、「０ｘ２１０」、「０ｘ３１０」が設定されている。図３に戻る。
【００３１】
例えば、推定部２２が第２状態を推定した場合に、記憶部２６は、第２状態に対応したフィルタリングルールを設定する。図４（ｂ）は、第２状態、つまりイグニッションがオンである情報において設定されるフィルタリングルールを示す。図示のごとく、ＣＡＮ  ＩＤの「０ｘ１２０」、「０ｘ２２０」、「０ｘ３２０」、「０ｘ４００」、「０ｘ１１０」、「０ｘ２１０」、「０ｘ３１０」が設定されている。なお、ＣＡＮ  ＩＤの「０ｘ１１０」、「０ｘ２１０」、「０ｘ３１０」は、第１状態においても含まれるので、複数の状態で共通に設定されうるＣＡＮ  ＩＤである。また、ＣＡＮ  ＩＤの「０ｘ１２０」、「０ｘ２２０」、「０ｘ３２０」、「０ｘ４００」は、第１状態において含まれないので、第２状態のみで設定されうるＣＡＮ  ＩＤである。図３に戻る。
【００３２】
前述のごとく、車両が第１状態から第２状態へ遷移する場合、ＥＣＵ１００ごとに推定される状態が異なる場合がある。例えば、車両が第１状態であると推定している第１ＥＣＵ１００ａによって、メッセージが送信され、当該車両が第２状態であると推定している第２ＥＣＵ１００ｂによって、当該メッセージが受信される場合である。この場合、第１ＥＣＵ１００ａは、例えば、ＣＡＮ  ＩＤ「０ｘ１００」のメッセージを正規のメッセージとして送信するが、第２ＥＣＵ１００ｂは、そのようなＣＡＮ−ＩＤをフィルタリングルールに含めていない。その結果、第２ＥＣＵ１００ｂは、当該メッセージを受信せず、不正なメッセージと判定する。
【００３３】
これに対応するために、設定部２４は、推定部２２において第１状態から第２状態への遷移を推定した場合に、遷移してから所定の期間にわたって、第１状態および第２状態に対応したフィルタリングルールを設定する。つまり、状態遷移の前後のどちらの状態も許容するフィルタリングルールが設定される。ここで、所定の期間は、状態遷移によって生じたＥＣＵ１００ごとの状態の違いが解消されるまでの期間となるように設定され、その値は、シミュレーション、実験等によって決定される。この所定の期間において、設定部２４は、例えば、図４（ａ）に示されたＣＡＮ  ＩＤと、図４（ｂ）に示されたＣＡＮ  ＩＤとを含むようなフィルタリングルールを設定する。所定の期間経過後、設定部２４は、前述のごとく、第２状態だけに対応したフィルタリングルールを設定する。
【００３４】
入力部２８は、ＥＣＵ１００が送信側に相当する場合、アプリケーション実行部１４からのデータが含まれたメッセージを入力する。一方、入力部２８は、ＥＣＵ１００が受信側に相当する場合、通信部１０からのメッセージを入力する。入力部２８は、メッセージをフィルタ部３０に出力する。
【００３５】
フィルタ部３０は、入力部２８からのメッセージを入力する。フィルタ部３０は、設定部２４において設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行する。図５は、フィルタ部３０の構成を示す。フィルタ部３０は、第１ルール記憶部５０、第２ルール記憶部５２、第３ルール記憶部５４、第４ルール記憶部５６、第５ルール記憶部５８、ＩＤフィルタ部６０、ＤＬＣフィルタ部６２、送信周期フィルタ部６４、送信頻度フィルタ部６６、データフィルタ部６８を含む。
【００３６】
第１ルール記憶部５０は、設定部２４において設定されたフィルタリングルールのうち、ＣＡＮ  ＩＤに関するルールを記憶する。第１ルール記憶部５０は、例えば、図４（ａ）−（ｂ）のようなＣＡＮ  ＩＤを記憶する。なお、車両の状態に応じて、設定部２４は、フィルタリングルールを変更するので、第１ルール記憶部５０に記憶されるルールも変更される。ＩＤフィルタ部６０は、入力部２８からのメッセージに対して、ＣＡＮ  ＩＤによるフィルタング処理を実行する。つまり、ＩＤフィルタ部６０は、第１ルール記憶部５０に記憶されたＣＡＮ  ＩＤが含まれたメッセージを抽出する。
【００３７】
第２ルール記憶部５２は、設定部２４において設定されたフィルタリングルールのうち、ＤＬＣに関するルールを記憶する。第３ルール記憶部５４は、設定部２４において設定されたフィルタリングルールのうち、送信周期に関するルールを記憶する。第４ルール記憶部５６は、設定部２４において設定されたフィルタリングルールのうち、送信頻度に関するルールを記憶する。これは、例えば、異常に高い頻度で送信される場合を除外するように定められる。第５ルール記憶部５８は、設定部２４において設定されたフィルタリングルールのうち、データに関するルールを記憶する。これは、例えば、固定値である部分が異常な値になってる場合を除外したり、増加／減少の傾向が異常なもの場合を除外したりするように定められる。なお、第２ルール記憶部５２から第５ルール記憶部５８は、第１ルール記憶部５０と同様に、設定部２４によって設定される。
【００３８】
ＤＬＣフィルタ部６２は、入力部２８からのメッセージに対して、第２ルール記憶部５２に記憶されたＤＬＣによるフィルタング処理を実行する。送信周期フィルタ部６４は、入力部２８からのメッセージに対して、第３ルール記憶部５４に記憶された送信周期によるフィルタング処理を実行する。送信頻度フィルタ部６６は、入力部２８からのメッセージに対して、第４ルール記憶部５６に記憶された送信周期によるフィルタング処理を実行する。送信周期フィルタ部６４は、入力部２８からのメッセージに対して、第５ルール記憶部５８に記憶されたデータによるフィルタング処理を実行する。ＤＬＣフィルタ部６２からデータフィルタ部６８は、ＩＤフィルタ部６０と同様の処理を実行する。
【００３９】
結果判定部７０は、ＩＤフィルタ部６０からデータフィルタ部６８でのフィルタリング処理の結果を入力する。結果判定部７０は、フィルタリング処理の結果をもとに、判定を実行する。例えば、ＩＤフィルタ部６０からデータフィルタ部６８のすべてにおいてメッセージが抽出されている場合、結果判定部７０は、当該抽出されたメッセージが正規のメッセージであると判定する。一方、ＩＤフィルタ部６０からデータフィルタ部６８のいずれかにおいてメッセージが抽出されていない場合、結果判定部７０は、入力部２８からのメッセージが、不正なメッセージであると判定する。結果判定部７０は、正規のメッセージであると判定した場合、当該メッセージを出力する。一方、結果判定部７０は、不正なメッセージであると判定した場合、何も出力しないか、不正なメッセージを検出した旨を出力する。
【００４０】
なお、結果判定部７０は、ＩＤフィルタ部６０からデータフィルタ部６８の１つ以上においてメッセージが抽出されている場合、当該抽出されたメッセージが正規のメッセージであると判定してもよい。その際、この条件を満たさなければ、結果判定部７０は、入力部２８からのメッセージが、不正なメッセージであると判定してもよい。図３に戻る。
【００４１】
出力部３２は、結果判定部７０からのメッセージを入力する。出力部３２は、ＥＣＵ１００が送信側に相当する場合、メッセージを通信部１０に出力する。一方、出力部３２は、ＥＣＵ１００が受信側に相当する場合、メッセージに含まれたデータをアプリケーション実行部１４に出力する。
【００４２】
この構成は、ハードウエア的には、任意のコンピュータのＣＰＵ、メモリ、その他のＬＳＩで実現でき、ソフトウエア的にはメモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ハードウエアとソフトウエアの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【００４３】
以上の構成によるＥＣＵ１００の動作を説明する。図６は、ＥＣＵ１００による設定手順を示すフローチャートである。取得部２０は、状態情報を取得する（Ｓ１０）。推定部２２において、設定状態と異なっており（Ｓ１２のＹ）、状態が遷移していれば（Ｓ１４のＹ）、設定部２４は、両状態を許容する状態に対応したフィルタリングルールを設定する（Ｓ１６）。設定部２４は、タイマを設定する（Ｓ１８）。設定時間を経過していなければ（Ｓ２０のＮ）、待機する。設定時間を経過すれば（Ｓ２０のＹ）、設定部２４は、現在の状態に対応したフィルタリングルールを設定する（Ｓ２２）。推定部２２において、状態が遷移していなければ（Ｓ１４のＮ）、設定部２４は、現在の状態に対応したフィルタリングルールを設定する（Ｓ２４）。推定部２２において、設定状態と異なっていなければ（Ｓ１２のＮ）、ステップ１４からステップ２４はスキップされる。
【００４４】
本実施例によれば、状態情報をもとに推定した車両の状態に応じたフィルタリングルールを設定するので、そのときの車両の状態に応じたフィルタリングルールだけを使用できる。また、車両の状態に応じたフィルタリングルールだけが使用されるので、不正なメッセージの検出精度を向上できる。また、第１状態から第２状態への遷移を推定した場合に、第１状態および第２状態に対応したフィルタリングルールを設定するので、ＥＣＵ間の状態にずれが生じても、正規のメッセージを正確に抽出できる。また、正規のメッセージが正確に抽出されるので、不正なメッセージの検出精度を向上できる。また、変動する車両の状態に応じてルールセットを動的に切りかえるので、検知率を向上させ、誤検知率を低下できる。
【００４５】
（実施例２）
次に、実施例２を説明する。実施例２は、実施例１と同様に、ＣＡＮにおける不正なメッセージを検出する通信装置、つまりＥＣＵに関する。実施例２は、複数種類の状態情報を取得する場合に、それらをもとに車両の状態の推定精度をさらに向上させることに関する。実施例２に係るＣＡＮシステム５００、ＥＣＵ１００は、図１、図３と同様のタイプである。ここでは、これまでとの差異を中心に説明する。
【００４６】
図３における取得部２０は、複数種類の状態情報を取得する。特に、複数種類の状態情報は、関連した内容であるとする。例えば、取得部２０と車速センサとが、１つの信号のみを送信する導電ケーブルによって直接接続されており、取得部２０は、当該車速センサからの車速パルスを取得する。また、取得部２０は、ＣＡＮバス２００を介して、車速情報がデータとして含まれたメッセージを受信することによって、車速情報を取得する。このように、車両の走行速度に関連した車速パルスと車速情報とが、導電ケーブルとＣＡＮバス２００といった異なった伝送路を介して取得部２０に入力される。なお、車両の走行速度に関連した情報に限らず、ＡＣＣに関連した情報、イグニッションに関連した情報も、導電ケーブルとＣＡＮバス２００といった異なった伝送路を介して取得部２０に入力される場合も同様である。
【００４７】
また、取得部２０は、ＣＡＮバス２００を介して、トランスミッションの情報がデータとして含まれたメッセージを受信することによって、トランスミッションの情報を取得する。トランスミッションの情報では、例えば、パーキング状態が示されている。トランスミッションの情報と、前述の車速情報は、車両の走行状態を示すという点において関連する。なお、これらの情報は、いずれもＣＡＮバス２００である共通の伝送路を介して取得部２０に入力される。取得部２０は、複数種類の状態情報を推定部２２に出力する。
【００４８】
推定部２２は、取得部２０において取得した複数種類の状態情報のうちのいずれかをもとに、車両の状態を推定する。具体的に説明すると、車速パルスと車速情報とを取得している場合、車速情報を伝送しているＣＡＮバス２００よりも、車速パルスを伝送している導電ケーブルの方が信頼性が高いので、車速情報よりも車速パルスの方が信頼性が高い。そのため、推定部２２は、関連した内容の複数の状態情報に対する信頼性が異なる場合、推定部２２は、信頼性が高い方の状態情報を選択する。なお、推定部２２は、状態情報ごとの信頼性を予め記憶している。
【００４９】
一方、前述のトランスミッションの情報と車速情報は、いずれもＣＡＮバス２００を介して取得しているので、これらの信頼性は同等である。なお、トランスミッションの情報と車速情報が矛盾する場合がある。例えば、トランスミッションの情報がパーキング状態を示しているが、車速情報が６０ｋｍ／ｈを示している場合である。このような場合、推定部２２は、フィルタリングルールが厳しい方の状態となる状態情報を選択する。フィルタリングルールが厳しいとは、例えば、フィルタリングルールに含まれた情報の数が少ないことなどを示す。フィルタリングルールがＣＡＮ  ＩＤだけによって構成される場合、ＣＡＮ  ＩＤの数が少ないフィルタリングルールが、厳しいフィルタリングルールといえる。なお、推定部２２は、状態情報ごとのフィルタリングルールの厳しさを予め記憶している。
【００５０】
以上の構成によるＥＣＵ１００の動作を説明する。図７は、本発明の実施例２に係るＥＣＵ１００による設定手順を示すフローチャートである。取得部２０は、状態情報を取得する（Ｓ５０）。推定部２２において、設定状態と異なっており（Ｓ５２のＹ）、取得部２０が、複数の情報元から取得可能な状態であり（Ｓ５４のＹ）、別情報元から状態を取得済みでない場合（Ｓ５６のＮ）、設定部２４は、タイマを設定する（Ｓ５８）。情報未取得あるいは設定時間経過でなければ（Ｓ６０のＮ）、待機する。情報未取得あるいは設定時間経過であれば（Ｓ６０のＹ）、取得部２０が情報取得済みである場合（Ｓ６２のＹ）、推定部２２において情報元の信頼性に差分があれば（Ｓ６４のＹ）、設定部２４は、信頼度の高い情報元から取得した情報に対応したフィルタリングルールを設定する（Ｓ６６）。
【００５１】
推定部２２において情報元の信頼性に差分がなければ（Ｓ６４のＮ）、設定部２４は、より厳しいフィルタリングルールとなる状態に対応したフィルタリングルールを設定する（Ｓ６８）。取得部２０が、別情報元から状態を取得済みである場合（Ｓ５６のＹ）、ステップ６４に進む。取得部２０が、複数の情報元から取得可能な状態でない場合（Ｓ５４のＮ）、あるいは取得部２０が情報取得済みでない場合（Ｓ６２のＮ）、設定部２４は、現在の状態に対応したフィルタリングルールを設定する（Ｓ７０）。推定部２２において、設定状態と異なっていない場合（Ｓ５２のＮ）、ステップ５４からステップ７０はスキップされる。
【００５２】
本実施例によれば、複数種類の状態情報を取得した場合、精度の高い方の状態情報を選択するので、車両の状態の推定精度を向上できる。また、車両の状態の推定精度が向上するので、不正なメッセージの検出精度を向上できる。複数種類の状態情報を取得した場合、厳しいフィルタリングルールに対応した状態情報を選択して状態を推定するので、車両の状態の推定精度を向上できる。
【００５３】
（実施例３）
次に、実施例３を説明する。実施例３は、これまでと同様に、ＣＡＮにおける不正なメッセージを検出する通信装置、つまりＥＣＵに関する。実施例３において、複数のＥＣＵのそれぞれは、動作状態を確認するためのコマンド（以下、「Ｋｅｅｐ  Ａｌｉｖｅコマンド」という）を送信する。そのため、あるＥＣＵは、所定の期間にわたってＫｅｅｐ  Ａｌｉｖｅコマンドを受信しない他のＥＣＵが存在する場合、当該他のＥＣＵから送信されうるメッセージのＣＡＮ  ＩＤを除外するようなフィルタリングルールを設定する。一方、ＥＣＵは、すべてのＥＣＵからのＫｅｅｐ  Ａｌｉｖｅコマンドを受信できるようなフィルタリングルールを設定する。つまり、動作していない他のＥＣＵが存在する場合、当該他のＥＣＵとの間のメッセージを送受信しないが、当該他のＥＣＵとの間のＫｅｅｐ  Ａｌｉｖｅコマンドを送受信する。実施例３に係るＣＡＮシステム５００、ＥＣＵ１００は、図１、図３と同様のタイプである。ここでは、これまでとの差異を中心に説明する。
【００５４】
図３の通信部１０は、Ｋｅｅｐ  Ａｌｉｖｅコマンドを定期的に送信するとともに、動作している他のＥＣＵ１００から定期的に送信されたＫｅｅｐ  Ａｌｉｖｅコマンドを受信する。取得部２０は、通信部１０を介して、状態情報として、ＣＡＮバス２００に接続された他のＥＣＵ１００からのＫｅｅｐ  Ａｌｉｖｅコマンドを取得する。取得部２０は、取得したＫｅｅｐ  Ａｌｉｖｅコマンドを推定部２２に出力する。
【００５５】
推定部２２は、取得部２０からのＫｅｅｐ  Ａｌｉｖｅコマンドを入力する。推定部２２は、Ｋｅｅｐ  Ａｌｉｖｅコマンドをもとに、車両の状態として、車両に設けられたＣＡＮシステム５００に含まれる他のＥＣＵ１００の動作状態を推定する。推定部２２は、推定した動作状態を設定部２４に出力する。図８（ａ）−（ｄ）は、本発明の実施例３に係るＥＣＵ１００の動作概要を示す。図８（ａ）は、第１ＥＣＵ１００ａの推定部２２において推定される第２ＥＣＵ１００ｂ、第３ＥＣＵ１００ｃの動作状態を示す。ここでは、第２ＥＣＵ１００ｂが接続されており、第３ＥＣＵ１００ｃが未接続から接続に遷移すると推定される。図８（ｂ）−（ｄ）は後述し、図３に戻る。
【００５６】
設定部２４は、推定部２２から、動作状態を入力する。設定部２４は、推定部２２において推定した他のＥＣＵ１００の動作状態に対応したフィルタリングルールを設定する。このフィルタリングルールの設定は、これまでと同様になされる。図８（ｂ）は、第２ＥＣＵ１００ｂが接続されている状態において設定されるフィルタリングルールを示す。図示のごとく、ＣＡＮ  ＩＤの「０ｘ１００」、「０ｘ２００」、「０ｘ３００」が設定されている。図８（ｃ）は、第３ＥＣＵ１００ｃが接続されている状態において設定されるフィルタリングルールを示す。図示のごとく、ＣＡＮ  ＩＤの「０ｘ１１０」、「０ｘ２１０」、「０ｘ３１０」が設定されている。図８（ｄ）は後述し、図３に戻る。
【００５７】
設定部２４は、図８（ａ）のように、第２ＥＣＵ１００ｂが接続されている場合、図８（ｂ）に示されたフィルタリングルールを設定する。また、設定部２４は、図８（ａ）のように、第３ＥＣＵ１００ｃが未接続から接続に遷移する場合、図８（ｃ）に示されたフィルタリングルールを設定しておらず、これに続いて図８（ｃ）に示されたフィルタリングルールを設定する。さらに、設定部２４は、他のＥＣＵ１００の動作状態に関係なく、複数の他のＥＣＵ１００からのＫｅｅｐ  Ａｌｉｖｅコマンドを抽出可能なフィルタリングルールも設定する。図８（ｄ）は、Ｋｅｅｐ  Ａｌｉｖｅコマンドに対応したＣＡＮ  ＩＤを示す。ここで、ＣＡＮ  ＩＤの「０ｘ１２０」が、第２ＥＣＵ１００ｂからのＫｅｅｐ  Ａｌｉｖｅコマンドに対応する。また、ＣＡＮ  ＩＤの「０ｘ２２０」が、第３ＥＣＵ１００ｃからのＫｅｅｐ  Ａｌｉｖｅコマンドに対応する。
【００５８】
以上の構成によるＥＣＵ１００の動作を説明する。図９は、本発明の実施例３に係るＥＣＵ１００による設定手順を示すフローチャートである。取得部２０は、状態情報を取得する（Ｓ１００）。推定部２２において、設定状態と異なっており（Ｓ１０２のＹ）、現在接続状態でない場合（Ｓ１０４のＮ）、設定部２４は、未接続状態を設定する（Ｓ１０６）。現在接続状態である場合（Ｓ１０４のＹ）、設定部２４は、接続状態に対応したフィルタリングルールを設定する（Ｓ１０８）。推定部２２において、設定状態と異なっていない場合（Ｓ１０２のＮ）、ステップ１０４からステップ１０８はスキップされる。
【００５９】
本実施例によれば、他のＥＣＵの動作状態に応じて、フィルタリングルールを設定するので、接続されていないＥＣＵとの間のメッセージを除外できる。また、接続されていないＥＣＵとの間のメッセージが除外されるので、不正なメッセージの検出精度を向上できる。また、他のＥＣＵの動作状態に関わらず、複数の他のＥＣＵからのＫｅｅｐ  Ａｌｉｖｅコマンドを抽出可能なフィルタリングルールを設定するので、他のＥＣＵの動作状態を確認できる。なお、任意のＥＣＵが定期的に送信している通常のコマンドを他の任意のＥＣＵがＫｅｅｐ  Ａｌｉｖｅコマンドであると認識する構成としてＫｅｅｐ  Ａｌｉｖｅコマンドを追加設定しない構成としてもよい。
【００６０】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素あるいは各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００６１】
本発明の一態様の概要は、次の通りである。本発明のある態様の通信装置は、ネットワークにおけるメッセージを送受信する通信部と、ネットワークが設けられた物体の状態に関する状態情報を取得する取得部と、取得部において取得した状態情報をもとに、物体の状態を推定する推定部と、推定部において推定した状態をもとに、フィルタリングルールを設定する設定部と、設定部において設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するフィルタ部と、を備える。
【００６２】
この態様によると、状態情報をもとに推定した物体の状態に応じたフィルタリングルールを設定するので、不正なメッセージの検出精度を向上できる。
【００６３】
推定部は、第１状態を推定してから、第２状態を推定し、設定部は、（１）推定部において第１状態を推定した場合に、第１状態に対応したフィルタリングルールを設定し、（２）推定部において第１状態から第２状態への遷移を推定した場合に、遷移してから所定の期間にわたって、第１状態および第２状態に対応したフィルタリングルールを設定し、（３）所定の期間経過後、第２状態に対応したフィルタリングルールを設定してもよい。この場合、第１状態から第２状態への遷移を推定した場合に、第１状態および第２状態に対応したフィルタリングルールを設定するので、推定した状態にずれが生じても、不正なメッセージの検出精度を向上できる。
【００６４】
取得部は、複数種類の状態情報を取得し、推定部は、取得部において取得した複数種類の状態情報のうちのいずれかをもとに、物体の状態を推定してもよい。この場合、複数種類の状態情報のうちのいずれかをもとに、物体の状態を推定するので、不正なメッセージの検出精度を向上できる。
【００６５】
取得部は、状態情報として、ネットワークに接続された他の通信装置の動作状態を確認するためのコマンドを取得し、推定部は、取得部において取得したコマンドをもとに、物体の状態として、他の通信装置の動作状態を推定し、設定部は、推定部において推定した他の通信装置の動作状態に対応したフィルタリングルールを設定するとともに、複数の他の通信装置からのコマンドを抽出可能なフィルタリングルールも設定してもよい。この場合、他の通信装置の動作状態に関わらず、複数の他の通信装置からのコマンドを抽出可能なフィルタリングルールを設定するので、他の通信装置の動作状態を確認できる。
【００６６】
本発明の別の態様は、通信方法である。この方法は、ネットワークにおけるメッセージを送受信するステップと、ネットワークが設けられた物体の状態に関する状態情報を取得するステップと、取得した状態情報をもとに、物体の状態を推定するステップと、推定した状態をもとに、フィルタリングルールを設定するステップと、設定したフィルタリングルールにしたがって、メッセージに対するフィルタリング処理を実行するステップと、を備える。
【００６７】
本実施例１から３における推定部２２は、車両の状態として、車両に設けられたＣＡＮシステム５００に対する攻撃・故障状態を推定し、設定部２４は、故障、攻撃の影響を軽減するようなフィルタリングルールを設定してもよい。
【００６８】
（１）推定部２２は、ＣＡＮバス２００の通信状態、例えば、通信途絶、故障情報などから、他のＥＣＵ１００の故障を推定する。設定部２４は、故障した他のＥＣＵ１００との間のメッセージを除外するようなフィルタリングルールを設定する。
【００６９】
（２）推定部２２は、ＣＡＮバス２００の通信状態、例えば、通信量増加などからＤｏＳ攻撃（Ｄｅｎｉａｌ  ｏｆ  Ｓｅｒｖｉｃｅ  ａｔｔａｃｋ）などの発生を検出する。設定部２４は、フェイルセーフ制御を実現するために、メッセージを遮断するようなフィルタリングルールを設定する。
【００７０】
（３）推定部２２は、自らのＥＣＵ１００の故障、例えば、センサ・アクチュエータなどの故障を検出したり、アプリケーション実行部１４で実行される上位レイヤの不正改ざんを検出したりする。設定部２４は、ＣＡＮバス２００に不正なメッセージを送信しないようなフィルタリングルールを設定する。このような変形例によれば、構成の自由度を向上できる。
【符号の説明】
【００７１】
１０  通信部、  １２  処理部、  １４  アプリケーション実行部、  ２０  取得部、  ２２  推定部、  ２４  設定部、  ２６  記憶部、  ２８  入力部、  ３０  フィルタ部、  ３２  出力部、  １００  ＥＣＵ、  ２００  ＣＡＮバス、  ５００  ＣＡＮシステム。
【図１】
0006497656.tif 000002
【図２】
0006497656.tif 000003
【図３】
0006497656.tif 000004
【図４】
0006497656.tif 000005
【図５】
0006497656.tif 000006
【図６】
0006497656.tif 000007
【図７】
0006497656.tif 000008
【図８】
0006497656.tif 000009
【図９】
0006497656.tif 000010