(57)【要約】【課題】不正なメッセージが送信された場合に適切に異常検知を行う異常検知ＥＣＵを提供する。【解決手段】異常検知ＥＣＵ１１０は、監視対象データを含む第１種メッセージを送信するＥＣＵと、比較対象データを含む第２種メッセージを送信するＥＣＵとが接続された通信路に接続され、メッセージを逐次受信する受信部１１２と、受信部１１２で受信された第１種メッセージが正常であるか異常であるかを、その第１種メッセージの内容と、その第１種メッセージの受信時に受信部１１２で最後に受信されていた第２種メッセージの内容と、受信部１１２でその第１種メッセージより過去に受信された第１種メッセージの内容、及び、受信部１１２でその最後に受信された第２種メッセージより過去に受信された第２種メッセージの内容のうちのいずれかとに基づいて、判定する判定部１１１と、判定部１１１による判定の結果に応じて送信を行う送信部１１３とを備える。【選択図】図３
2018170754.tif 000002
【特許請求の範囲】
【請求項１】
監視対象データを含む第１種メッセージを周期的に送信する電子制御ユニットと、比較対象データを含む第２種メッセージを周期的に送信する電子制御ユニットとを含む、通信路を介して通信を行う複数の電子制御ユニットを備えるネットワークシステムにおける前記通信路に接続された異常検知電子制御ユニットであって、
前記通信路から第１種メッセージ及び第２種メッセージを逐次受信する受信部と、
前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、
当該第１種メッセージの内容と、
当該第１種メッセージの受信時において前記受信部によって最後に受信されていた第２種メッセージの内容と、
前記受信部によって当該第１種メッセージより過去に受信された第１種メッセージの内容、及び、前記受信部によって前記最後に受信された第２種メッセージより過去に受信された第２種メッセージの内容のうちのいずれかとに基づいて、判定する判定部と、
前記判定部による前記判定の結果に応じて送信を行う送信部とを備える
異常検知電子制御ユニット。
【請求項２】
前記異常検知電子制御ユニットは、記憶部を有し、
前記受信部は、受信した第１種メッセージ及び第２種メッセージのそれぞれの内容を前記記憶部に格納し、
前記判定部は、前記記憶部を参照して前記判定を行う
請求項１記載の異常検知電子制御ユニット。
【請求項３】
前記判定部は、前記受信部によって第１種メッセージが受信された際に、当該第１種メッセージが正常であるか異常であるかを、
当該第１種メッセージに含まれる第１監視対象データと、
前記受信部によって最後に受信された第２種メッセージに含まれる第１比較対象データと、
前記受信部によって当該第１種メッセージより１回前に受信された第１種メッセージに含まれる第２監視対象データとが、所定基準を満たすか否かに応じて判定する
請求項１又は２記載の異常検知電子制御ユニット。
【請求項４】
前記判定部は、前記受信部によって第１種メッセージが受信された際に、当該第１種メッセージが正常であるか異常であるかを、
当該第１種メッセージに含まれる第１監視対象データと、
前記受信部によって最後に受信された第２種メッセージに含まれる第１比較対象データと、
前記受信部によって最後の１回前に受信された第２種メッセージに含まれる第２比較対象データとが、所定基準を満たすか否かに応じて判定する
請求項１又は２記載の異常検知電子制御ユニット。
【請求項５】
前記判定部は、前記受信部によって第１種メッセージが受信された際に、当該第１種メッセージが正常であるか異常であるかを、
当該第１種メッセージに含まれる第１監視対象データと、
前記受信部によって最後に受信された第２種メッセージに含まれる第１比較対象データと、
前記受信部によって当該第１種メッセージより１回前に受信された第１種メッセージに含まれる第２監視対象データと、
前記受信部によって最後の１回前に受信された第２種メッセージに含まれる第２比較対象データとが、所定基準を満たすか否かに応じて判定する
請求項１又は２記載の異常検知電子制御ユニット。
【請求項６】
前記判定部は、前記受信部によって第１種メッセージが受信された際に、当該第１種メッセージが正常であるか異常であるかを、
当該第１種メッセージに含まれる第１監視対象データと、
前記受信部によって最後に受信された第２種メッセージに含まれる第１比較対象データと、
前記受信部によって、当該第１種メッセージの受信時より前において最後に受信された、前記第１監視対象データとは異なる値の第２監視対象データを含む第１種メッセージにおける当該第２監視対象データとが、所定基準を満たすか否かに応じて判定する
請求項１又は２記載の異常検知電子制御ユニット。
【請求項７】
前記判定部は、前記受信部によって第１種メッセージが受信された際に、当該第１種メッセージが正常であるか異常であるかを、
当該第１種メッセージに含まれる第１監視対象データと、
前記受信部によって最後に受信された第２種メッセージに含まれる第１比較対象データと、
前記受信部によって、前記最後に受信された第２種メッセージの受信時より前において最後に受信された、前記第１比較対象データとは異なる値の第２比較対象データを含む第２種メッセージにおける当該第２比較対象データとが、所定基準を満たすか否かに応じて判定する
請求項１又は２記載の異常検知電子制御ユニット。
【請求項８】
前記判定部は、前記受信部によって第１種メッセージが受信された際に、当該第１種メッセージが正常であるか異常であるかを、
当該第１種メッセージに含まれる第１監視対象データと、
前記受信部によって最後に受信された第２種メッセージに含まれる第１比較対象データと、
前記受信部によって、当該第１種メッセージの受信時より前において最後に受信された、前記第１監視対象データとは異なる値の第２監視対象データを含む第１種メッセージにおける当該第２監視対象データと、
前記受信部によって、前記最後に受信された第２種メッセージの受信時より前において最後に受信された、前記第１比較対象データとは異なる値の第２比較対象データを含む第２種メッセージにおける当該第２比較対象データとが、所定基準を満たすか否かに応じて判定する
請求項１又は２記載の異常検知電子制御ユニット。
【請求項９】
前記複数の電子制御ユニットは、参照データを含む第３種メッセージを周期的に送信する電子制御ユニットを含み、
前記受信部は更に第３種メッセージを逐次受信し、
前記判定部は、前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、
当該第１種メッセージの受信時において前記受信部によって最後に受信されていた第３種メッセージの内容と、
前記受信部によって前記最後に受信された第３種メッセージより過去に受信された第３種メッセージの内容とにも基づいて、判定する
請求項１又は２記載の異常検知電子制御ユニット。
【請求項１０】
前記複数の電子制御ユニットは、参照データを含む第３種メッセージを周期的に送信する電子制御ユニットを含み、
前記受信部は更に第３種メッセージを逐次受信し、
前記判定部は更に、
前記受信部によって受信された第２種メッセージが正常であるか否かを、
当該第２種メッセージの内容と、
当該第２種メッセージの受信時において前記受信部によって最後に受信されていた第３種メッセージの内容と、
前記受信部によって当該第２種メッセージより過去に受信された第２種メッセージの内容、及び、前記受信部によって前記最後に受信された第３種メッセージより過去に受信された第３種メッセージの内容のうちのいずれかとに基づいて判別し、
前記判定部は、前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、
当該第１種メッセージの内容と、
当該第１種メッセージの受信時において前記受信部によって最後に受信されて正常と判別された第２種メッセージの内容と、
前記受信部によって当該第１種メッセージより過去に受信された第１種メッセージの内容、及び、前記受信部によって前記最後に受信されて正常と判別された第２種メッセージより過去に受信され正常と判別された第２種メッセージの内容のうちのいずれかとに基づいて、判定する
請求項１又は２記載の異常検知電子制御ユニット。
【請求項１１】
前記ネットワークシステムは車両に搭載され、
前記監視対象データ及び前記比較対象データは、前記車両の制御のために用いられるデータであり、
前記通信路は、前記車両における有線通信路であり、
前記複数の電子制御ユニットは、ＣＡＮプロトコル又はＥｔｈｅｒｎｅｔ（登録商標）プロトコルに従ってメッセージの授受を行う
請求項１〜１０のいずれか一項に記載の異常検知電子制御ユニット。
【請求項１２】
前記判定部は、前記受信部によって第１種メッセージにおける監視対象データが受信されて当該第１種メッセージの最後尾のビットが受信される前において、当該第１種メッセージが正常であるか異常であるかを判定し、
前記送信部は、前記判定部により第１種メッセージが異常であると判定された場合には前記受信部によって当該第１種メッセージの最後尾のビットが受信される前に、当該第１種メッセージを無効化する所定メッセージを前記通信路へ送信する
請求項１〜１１のいずれか一項に記載の異常検知電子制御ユニット。
【請求項１３】
前記通信路はネットワークバスであり、
前記複数の電子制御ユニットは、ＣＡＮプロトコルに従って、フレームの授受を行い、
前記第１種メッセージは、所定値をＩＤフィールドに含み、監視対象データをデータフィールドに含むデータフレームであり、
前記第２種メッセージは、前記所定値とは異なる特定値をＩＤフィールドに含み、比較対象データをデータフィールドに含むデータフレームであり、
前記送信部は、前記所定メッセージとしてエラーフレームを送信する
請求項１２記載の異常検知電子制御ユニット。
【請求項１４】
前記通信路はネットワークバスであり、
前記送信部は、前記判定部により第１種メッセージが異常であると判定された場合に、異常通知メッセージを前記ネットワークバスへ送信する
請求項１〜１１のいずれか一項に記載の異常検知電子制御ユニット。
【請求項１５】
監視対象データを含む第１種メッセージを周期的に送信する電子制御ユニットと、比較対象データを含む第２種メッセージを周期的に送信する電子制御ユニットとを含む、通信路を介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムであって、
前記通信路に接続された異常検知電子制御ユニットを備え、
前記異常検知電子制御ユニットは、
前記通信路から第１種メッセージ及び第２種メッセージを逐次受信する受信部と、
前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、
当該第１種メッセージの内容と、
当該第１種メッセージの受信時において前記受信部によって最後に受信されていた第２種メッセージの内容と、
前記受信部によって当該第１種メッセージより過去に受信された第１種メッセージの内容、及び、前記受信部によって前記最後に受信された第２種メッセージより過去に受信された第２種メッセージの内容のうちのいずれかとに基づいて、判定する判定部とを備える
車載ネットワークシステム。
【請求項１６】
前記車載ネットワークシステムは更に、前記判定部により第１種メッセージが異常であると判定された場合に、当該車載ネットワークシステムを搭載する第１車両の外部に所在するサーバ又は当該第１車両以外の第２車両に、異常を通知する通知装置を備える
請求項１５記載の車載ネットワークシステム。
【請求項１７】
前記通知装置は、前記判定部により第１種メッセージが異常であると判定された場合に、前記第１車両と同一車種である前記第２車両に、異常を示す情報を送信することで、異常を通知する
請求項１６記載の車載ネットワークシステム。
【請求項１８】
前記通知装置は、前記判定部により第１種メッセージが異常であると判定された場合に、前記第１車両の周囲に所在する前記第２車両に、異常を示す情報を送信することで、異常を通知する
請求項１６又は１７記載の車載ネットワークシステム。
【請求項１９】
監視対象データを含む第１種メッセージを周期的に送信する電子制御ユニットと、比較対象データを含む第２種メッセージを周期的に送信する電子制御ユニットとを含む、通信路を介して通信を行う複数の電子制御ユニットを備えるネットワークシステムで用いられる異常検知方法であって、
前記通信路から第１種メッセージ及び第２種メッセージを逐次受信する受信ステップと、
前記受信ステップで受信された第１種メッセージが正常であるか異常であるかを、
当該第１種メッセージの内容と、
当該第１種メッセージの受信時において前記受信ステップで最後に受信されていた第２種メッセージの内容と、
前記受信ステップで当該第１種メッセージより過去に受信された第１種メッセージの内容、及び、前記受信ステップで前記最後に受信された第２種メッセージより過去に受信された第２種メッセージの内容のうちのいずれかとに基づいて、判定する判定ステップと、
前記判定ステップでの前記判定の結果に応じて送信を行う送信ステップとを含む
異常検知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを流れる異常なメッセージを検知するセキュリティ対策技術に関する。
【背景技術】
【０００２】
近年、自動車の中のシステムには、電子制御ユニット（ＥＣＵ：Electronic Control Unit）と呼ばれる装置が多数配置されている。これらのＥＣＵをつなぐネットワークは車載ネットワークと呼ばれる。車載ネットワークには、多数の通信規格が存在する。その中でも最も主流な車載ネットワークの一つに、ＩＳＯ１１８９８で規定されているＣＡＮ（Controller Area Network）という規格が存在する。
【０００３】
ＣＡＮでは、通信路は２本のワイヤで構成されたバス（ネットワークバス）であり、バスに接続されているＥＣＵはノードと呼ばれる。バスに接続されている各ノードは、フレームと呼ばれるメッセージを送受信する。フレームを送信する送信ノードは、２本のワイヤに電圧をかけ、ワイヤ間で電位差を発生させることによって、レセシブと呼ばれる「１」の値と、ドミナントと呼ばれる「０」の値を送信する。複数の送信ノードが全く同一のタイミングで、レセシブとドミナントを送信した場合は、ドミナントが優先されて送信される。受信ノードは、受け取ったフレームのフォーマットに異常がある場合には、エラーフレームと呼ばれるフレームを送信する。エラーフレームとは、ドミナントを６ｂｉｔ連続して送信することで、送信ノード及び他の受信ノードにフレームの異常を通知するものである。
【０００４】
またＣＡＮでは送信先や送信元を指す識別子は存在せず、送信ノードはフレーム毎にＩＤを付けて送信し、各受信ノードは予め定められたＩＤのフレームのみを受信する。また、ＣＳＭＡ／ＣＡ（Carrier Sense Multiple Access/Collision Avoidance）方式を採用しており、複数ノードの同時送信時にはＩＤによる調停が行われ、ＩＤの値が小さいフレームが優先的に送信される。
【０００５】
ＣＡＮの車載ネットワークシステムについては、攻撃者がバスにアクセスして不正なフレームを送信することでＥＣＵを不正に制御するといった脅威が存在し、セキュリティ対策が検討されている。
【０００６】
例えば特許文献１には、ネットワークにおいて規定された通信間隔内に同一の識別子を有する２つ目のデータを受信したときに不正が発生したと判断する異常検知の方法が記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−１４６８６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１の方法では、攻撃者が正規のＥＣＵから送信される正しいデータを含むメッセージの周期と同様の周期で不正なデータを含むメッセージを送信し、不正なメッセージを正規のメッセージの直前に送信した場合に、不正なメッセージであると適切に検知できない。この方法では、その直後に続く正規のメッセージの送信について不正が発生したと判定してしまう。また、この方法では、正規のＥＣＵによる正規のメッセージの送信を止めさせて、代わりに不正なメッセージを送信するような攻撃に対しては、異常検知ができない。
【０００９】
そこで、本発明は、攻撃者によりネットワークに不正なメッセージが送信された場合において、適切に異常検知を行う異常検知電子制御ユニット（異常検知ＥＣＵ）を提供する。また、不正なメッセージが送信された場合に、適切に異常検知を行う車載ネットワークシステム、及び、適切に異常検知を行うための異常検知方法を提供する。
【課題を解決するための手段】
【００１０】
上記課題を解決するために本発明の一態様に係る異常検知電子制御ユニットは、監視対象データを含む第１種メッセージを周期的に送信する電子制御ユニットと、比較対象データを含む第２種メッセージを周期的に送信する電子制御ユニットとを含む、通信路を介して通信を行う複数の電子制御ユニットを備えるネットワークシステムにおける前記通信路に接続された異常検知電子制御ユニットであって、前記通信路から第１種メッセージ及び第２種メッセージを逐次受信する受信部と、前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、当該第１種メッセージの内容と、当該第１種メッセージの受信時において前記受信部によって最後に受信されていた第２種メッセージの内容と、前記受信部によって当該第１種メッセージより過去に受信された第１種メッセージの内容、及び、前記受信部によって前記最後に受信された第２種メッセージより過去に受信された第２種メッセージの内容のうちのいずれかとに基づいて、判定する判定部と、前記判定部による前記判定の結果に応じて送信を行う送信部とを備える異常検知電子制御ユニットである。
【００１１】
また、上記課題を解決するために本発明の一態様に係る車載ネットワークシステムは、監視対象データを含む第１種メッセージを周期的に送信する電子制御ユニットと、比較対象データを含む第２種メッセージを周期的に送信する電子制御ユニットとを含む、通信路を介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムであって、前記通信路に接続された異常検知電子制御ユニットを備え、前記異常検知電子制御ユニットは、前記通信路から第１種メッセージ及び第２種メッセージを逐次受信する受信部と、前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、当該第１種メッセージの内容と、当該第１種メッセージの受信時において前記受信部によって最後に受信されていた第２種メッセージの内容と、前記受信部によって当該第１種メッセージより過去に受信された第１種メッセージの内容、及び、前記受信部によって前記最後に受信された第２種メッセージより過去に受信された第２種メッセージの内容のうちのいずれかとに基づいて、判定する判定部とを備える車載ネットワークシステムである。
【００１２】
また、上記課題を解決するために本発明の一態様に係る異常検知方法は、監視対象データを含む第１種メッセージを周期的に送信する電子制御ユニットと、比較対象データを含む第２種メッセージを周期的に送信する電子制御ユニットとを含む、通信路を介して通信を行う複数の電子制御ユニットを備えるネットワークシステムで用いられる異常検知方法であって、前記通信路から第１種メッセージ及び第２種メッセージを逐次受信する受信ステップと、前記受信ステップで受信された第１種メッセージが正常であるか異常であるかを、当該第１種メッセージの内容と、当該第１種メッセージの受信時において前記受信ステップで最後に受信されていた第２種メッセージの内容と、前記受信ステップで当該第１種メッセージより過去に受信された第１種メッセージの内容、及び、前記受信ステップで前記最後に受信された第２種メッセージより過去に受信された第２種メッセージの内容のうちのいずれかとに基づいて、判定する判定ステップと、前記判定ステップでの前記判定の結果に応じて送信を行う送信ステップとを含む異常検知方法である。
【発明の効果】
【００１３】
本発明によれば、ネットワークに流される不正なメッセージが適切に検知され得る。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１に係る異常検知システムの全体構成を示す図である。
【図２】実施の形態１に係る車載ネットワークシステムの構成を示す図である。
【図３】実施の形態１に係る異常検知ＥＣＵの構成を示す図である。
【図４】ＣＡＮプロトコルで規定されるデータフレームのフォーマットを示す図である。
【図５】ＣＡＮプロトコルで規定されるエラーフレームのフォーマットを示す図である。
【図６】実施の形態１に係る速度制御ＥＣＵが送信するデータフレームの例を示す図である。
【図６Ａ】速度制御ＥＣＵが送信するデータフレームにおける速度制御情報の読み取り方法の一例を示す図である。
【図７】実施の形態１に係るギア制御ＥＣＵが送信するデータフレームの例を示す図である。
【図７Ａ】ギア制御ＥＣＵが送信するデータフレームにおけるギア制御情報の読み取り方法の一例を示す図である。
【図８】実施の形態１に係る異常検知ＥＣＵが用いるルールを示す図である。
【図９】実施の形態１に係る異常検知ＥＣＵのルール記憶部に保持されるルールテーブルの具体例を示す図（其の一）である。
【図１０】実施の形態１に係る異常検知ＥＣＵのルール記憶部に保持されるルールテーブルの具体例を示す図（其の二）である。
【図１１】実施の形態１に係る異常検知ＥＣＵのルール記憶部に保持されるルールテーブルの具体例を示す図（其の三）である。
【図１２】実施の形態１に係る異常検知ＥＣＵのデータ記憶部に保持されるデータテーブルの一例を示す図である。
【図１３】実施の形態１に係る異常検知ＥＣＵが行う異常判定処理の各パターンで用いられるデータを示す図である。
【図１４】実施の形態１に係る異常検知ＥＣＵ等の、異常がない場合の処理シーケンスの一例を示す図である。
【図１５】実施の形態１に係る異常検知ＥＣＵの異常判定処理パターン１に係る処理シーケンスの一例を示す図である。
【図１６】実施の形態１に係る異常検知ＥＣＵの異常判定処理パターン２に係る処理シーケンスの一例を示す図である。
【図１７】実施の形態１に係る異常検知ＥＣＵの異常判定処理パターン３に係る処理シーケンスの一例を示す図である。
【図１８】実施の形態１に係る異常検知ＥＣＵにより実行される処理の一例を示すフローチャートである。
【図１９】実施の形態１に係る異常検知ＥＣＵによるデータ保存処理の一例を示すフローチャートである。
【図２０】実施の形態１に係る異常検知ＥＣＵによる異常判定処理パターン１に係る異常判定処理の一例を示すフローチャートである。
【図２１】実施の形態１に係る異常検知ＥＣＵによる異常判定処理パターン２に係る異常判定処理の一例を示すフローチャートである。
【図２２】実施の形態１に係る異常検知ＥＣＵによる異常判定処理パターン３に係る異常判定処理の一例を示すフローチャートである。
【図２３】実施の形態１に係る異常検知ＥＣＵによる車両保護処理の一例を示すフローチャートである。
【図２４】実施の形態１に係る異常検知ＥＣＵによる車両保護処理の別の一例を示すフローチャートである。
【図２５】車両のヘッドユニットにおける警告通知の一例を示す図である。
【図２６】実施の形態２に係る車載ネットワークシステムの構成を示す図である。
【図２７】実施の形態２に係る異常検知ＥＣＵの構成を示す図である。
【図２８】実施の形態２に係るハンドル制御指示ＥＣＵが送信するデータフレームの例を示す図である。
【図２９】ハンドル制御指示ＥＣＵが送信するデータフレームにおけるハンドル制御指示の読み取り方法の一例を示す図である。
【図３０】実施の形態２に係るハンドル制御ＥＣＵが送信するデータフレームの例を示す図である。
【図３１】ハンドル制御ＥＣＵが送信するデータフレームにおけるハンドル状態情報の読み取り方法の一例を示す図である。
【図３２】実施の形態２に係る異常検知ＥＣＵが用いるルールを示す図である。
【図３３】実施の形態２に係る異常検知ＥＣＵのルール記憶部に保持されるルールテーブルの具体例を示す図である。
【図３４】実施の形態２に係る異常検知ＥＣＵのデータ記憶部に保持されるデータテーブルの一例を示す図である。
【図３５】実施の形態２に係る異常検知ＥＣＵ等の、異常がない場合の処理シーケンスの一例を示す図である。
【図３６】実施の形態２に係る異常検知ＥＣＵの異常判定処理に係る処理シーケンスの一例を示す図である。
【図３７】実施の形態２に係る異常検知ＥＣＵにより実行される処理の一例を示すフローチャートである。
【図３８】実施の形態２に係る異常検知ＥＣＵによるデータ保存処理の一例を示すフローチャートである。
【図３９】実施の形態２に係る異常検知ＥＣＵによる異常判定処理に係る異常判定処理の一例を示すフローチャートである。
【図４０】実施の形態２に係る異常検知ＥＣＵによる車両保護処理の一例を示すフローチャートである。
【図４１】実施の形態２に係る異常検知ＥＣＵによる車両保護処理の別の一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
本発明の一態様に係る異常検知電子制御ユニットは、監視対象データを含む第１種メッセージを周期的に送信する電子制御ユニットと、比較対象データを含む第２種メッセージを周期的に送信する電子制御ユニットとを含む、通信路を介して通信を行う複数の電子制御ユニットを備えるネットワークシステムにおける前記通信路に接続された異常検知電子制御ユニットであって、前記通信路から第１種メッセージ及び第２種メッセージを逐次受信する受信部と、前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、当該第１種メッセージの内容と、当該第１種メッセージの受信時において前記受信部によって最後に受信されていた第２種メッセージの内容と、前記受信部によって当該第１種メッセージより過去に受信された第１種メッセージの内容、及び、前記受信部によって前記最後に受信された第２種メッセージより過去に受信された第２種メッセージの内容のうちのいずれかとに基づいて、判定する判定部と、前記判定部による前記判定の結果に応じて送信を行う送信部とを備える異常検知電子制御ユニットである。第１種メッセージ及び第２種メッセージはネットワークで予め定められた規則に従って周期的に伝送され、個々のメッセージの内容としての逐次監視対象データ及び比較対象データの各値は、メッセージが送信される時に応じて、例えば相互に一定の関係性を持って変化する。このため、例えば、時間の経過に伴って逐次送信される複数の第２種メッセージの複数の比較対象データの値に現れる変化とその変化の際における第１種メッセージの監視対象データの値との関係等が、予め規定された、正常時に満たされるべき或いは異常時に満たされるべき所定基準を、満たすか否かに基づいて、適切な判定が可能となる。このように、監視対象データと比較対象データとについての関係性を利用して監視対象データが異常であるか否かを判定部が判定できるように比較対象データに係る第２種メッセージを定めて利用されると、異常検知電子制御ユニットは、監視対象データを不正な内容にして攻撃者によりネットワークに流された第１種メッセージを、異常であると適切に検知し得る。例えば、攻撃者が、ネットワークシステムにおける正規の電子制御ユニットから送信される周期と同様の周期で不正な第１種メッセージを送信したとしても、適切に異常を検知でき、ネットワークのセキュリティの確保が可能となる。
【００１６】
また、前記異常検知電子制御ユニットは、記憶部を有し、前記受信部は、受信した第１種メッセージ及び第２種メッセージのそれぞれの内容を前記記憶部に格納し、前記判定部は、前記記憶部を参照して前記判定を行うこととしても良い。これにより、異常検知電子制御ユニットは、異常検知電子制御ユニット内における記憶部を利用して、適切な判定を迅速に行い得る。
【００１７】
また、前記判定部は、前記受信部によって第１種メッセージが受信された際に、当該第１種メッセージが正常であるか異常であるかを、当該第１種メッセージに含まれる第１監視対象データと、前記受信部によって最後に受信された第２種メッセージに含まれる第１比較対象データと、前記受信部によって当該第１種メッセージより１回前に受信された第１種メッセージに含まれる第２監視対象データとが、所定基準を満たすか否かに応じて判定することとしても良い。これにより、２つの第１種メッセージの各監視対象データの値と、第２種メッセージの比較対象データの値とに一定の関係があることを利用して、第１種メッセージについての異常を適切に判定することが可能となる。
【００１８】
また、前記判定部は、前記受信部によって第１種メッセージが受信された際に、当該第１種メッセージが正常であるか異常であるかを、当該第１種メッセージに含まれる第１監視対象データと、前記受信部によって最後に受信された第２種メッセージに含まれる第１比較対象データと、前記受信部によって最後の１回前に受信された第２種メッセージに含まれる第２比較対象データとが、所定基準を満たすか否かに応じて判定することとしても良い。これにより、第１種メッセージの監視対象データの値と、２つの第２種メッセージの各比較対象データの値とに一定の関係があることを利用して、第１種メッセージについての異常を適切に判定することが可能となる。
【００１９】
また、前記判定部は、前記受信部によって第１種メッセージが受信された際に、当該第１種メッセージが正常であるか異常であるかを、当該第１種メッセージに含まれる第１監視対象データと、前記受信部によって最後に受信された第２種メッセージに含まれる第１比較対象データと、前記受信部によって当該第１種メッセージより１回前に受信された第１種メッセージに含まれる第２監視対象データと、前記受信部によって最後の１回前に受信された第２種メッセージに含まれる第２比較対象データとが、所定基準を満たすか否かに応じて判定することとしても良い。これにより、２つの第１種メッセージの各監視対象データの値と、２つの第２種メッセージの各比較対象データの値とに一定の関係があることを利用して、第１種メッセージについての異常を適切に判定することが可能となる。
【００２０】
また、前記判定部は、前記受信部によって第１種メッセージが受信された際に、当該第１種メッセージが正常であるか異常であるかを、当該第１種メッセージに含まれる第１監視対象データと、前記受信部によって最後に受信された第２種メッセージに含まれる第１比較対象データと、前記受信部によって、当該第１種メッセージの受信時より前において最後に受信された、前記第１監視対象データとは異なる値の第２監視対象データを含む第１種メッセージにおける当該第２監視対象データとが、所定基準を満たすか否かに応じて判定することとしても良い。これにより、時間の経過に伴って逐次送信される複数の第１種メッセージの監視対象データの値の遷移と、その遷移の際に送信される第２種メッセージの比較対象データの値との間に一定の関係があることを利用して、第１種メッセージについての異常を適切に判定することが可能となる。
【００２１】
また、前記判定部は、前記受信部によって第１種メッセージが受信された際に、当該第１種メッセージが正常であるか異常であるかを、当該第１種メッセージに含まれる第１監視対象データと、前記受信部によって最後に受信された第２種メッセージに含まれる第１比較対象データと、前記受信部によって、前記最後に受信された第２種メッセージの受信時より前において最後に受信された、前記第１比較対象データとは異なる値の第２比較対象データを含む第２種メッセージにおける当該第２比較対象データとが、所定基準を満たすか否かに応じて判定することとしても良い。これにより、時間の経過に伴って逐次送信される複数の第２種メッセージの比較対象データの値の遷移と、その遷移の際に送信される第１種メッセージの監視対象データの値との間に一定の関係があることを利用して、第１種メッセージについての異常を適切に判定することが可能となる。
【００２２】
また、前記判定部は、前記受信部によって第１種メッセージが受信された際に、当該第１種メッセージが正常であるか異常であるかを、当該第１種メッセージに含まれる第１監視対象データと、前記受信部によって最後に受信された第２種メッセージに含まれる第１比較対象データと、前記受信部によって、当該第１種メッセージの受信時より前において最後に受信された、前記第１監視対象データとは異なる値の第２監視対象データを含む第１種メッセージにおける当該第２監視対象データと、前記受信部によって、前記最後に受信された第２種メッセージの受信時より前において最後に受信された、前記第１比較対象データとは異なる値の第２比較対象データを含む第２種メッセージにおける当該第２比較対象データとが、所定基準を満たすか否かに応じて判定することとしても良い。これにより、時間の経過に伴って逐次送信される複数の第１種メッセージの監視対象データの値の遷移と、その遷移の際において逐次送信される複数の第２種メッセージの比較対象データの値の遷移との間に一定の関係があることを利用して、第１種メッセージについての異常を適切に判定することが可能となる。
【００２３】
また、前記複数の電子制御ユニットは、参照データを含む第３種メッセージを周期的に送信する電子制御ユニットを含み、前記受信部は更に第３種メッセージを逐次受信し、前記判定部は、前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、当該第１種メッセージの受信時において前記受信部によって最後に受信されていた第３種メッセージの内容と、前記受信部によって前記最後に受信された第３種メッセージより過去に受信された第３種メッセージの内容とにも基づいて、判定することとしても良い。これにより、監視対象データ及び比較対象データに係る関係性に加えて、第３種メッセージの参照データとの関係を用いるので、適切に第３種メッセージを定めておくことで、より適切に第１種メッセージについての異常を判定することが可能となる。
【００２４】
また、前記複数の電子制御ユニットは、参照データを含む第３種メッセージを周期的に送信する電子制御ユニットを含み、前記受信部は更に第３種メッセージを逐次受信し、前記判定部は更に、前記受信部によって受信された第２種メッセージが正常であるか否かを、当該第２種メッセージの内容と、当該第２種メッセージの受信時において前記受信部によって最後に受信されていた第３種メッセージの内容と、前記受信部によって当該第２種メッセージより過去に受信された第２種メッセージの内容、及び、前記受信部によって前記最後に受信された第３種メッセージより過去に受信された第３種メッセージの内容のうちのいずれかとに基づいて判別し、前記判定部は、前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、当該第１種メッセージの内容と、当該第１種メッセージの受信時において前記受信部によって最後に受信されて正常と判別された第２種メッセージの内容と、前記受信部によって当該第１種メッセージより過去に受信された第１種メッセージの内容、及び、前記受信部によって前記最後に受信されて正常と判別された第２種メッセージより過去に受信され正常と判別された第２種メッセージの内容のうちのいずれかとに基づいて、判定することとしても良い。これにより、比較対象データと参照データとの関係性に基づいて正常と判別した比較対象データを用いて、監視対象データについての判定がなされるので、より正確な判定が可能となる。
【００２５】
また、前記ネットワークシステムは車両に搭載され、前記監視対象データ及び前記比較対象データは、前記車両の制御のために用いられるデータであり、前記通信路は、前記車両における有線通信路であり、前記複数の電子制御ユニットは、ＣＡＮプロトコル又はＥｔｈｅｒｎｅｔ（登録商標）プロトコルに従ってメッセージの授受を行うこととしても良い。これにより、車載ネットワークへの攻撃の検知が可能となり、車両のセキュリティの確保が可能となり得る。
【００２６】
また、前記判定部は、前記受信部によって第１種メッセージにおける監視対象データが受信されて当該第１種メッセージの最後尾のビットが受信される前において、当該第１種メッセージが正常であるか異常であるかを判定し、前記送信部は、前記判定部により第１種メッセージが異常であると判定された場合には前記受信部によって当該第１種メッセージの最後尾のビットが受信される前に、当該第１種メッセージを無効化する所定メッセージを前記通信路へ送信することとしても良い。これにより、ネットワークに不正なメッセージを流す攻撃からネットワークシステムを防御することが可能となる。
【００２７】
また、前記通信路はネットワークバスであり、前記複数の電子制御ユニットは、ＣＡＮプロトコルに従って、フレームの授受を行い、前記第１種メッセージは、所定値をＩＤフィールドに含み、監視対象データをデータフィールドに含むデータフレームであり、前記第２種メッセージは、前記所定値とは異なる特定値をＩＤフィールドに含み、比較対象データをデータフィールドに含むデータフレームであり、前記送信部は、前記所定メッセージとしてエラーフレームを送信することとしても良い。これにより、車載ネットワークにおいて効率的に不正な監視対象データを含むデータフレームを無効化することが可能となる。
【００２８】
また、前記通信路はネットワークバスであり、前記送信部は、前記判定部により第１種メッセージが異常であると判定された場合に、異常通知メッセージを前記ネットワークバスへ送信することとしても良い。これにより、他の電子制御ユニットに異常が通知される。このため、異常の通知を受けた電子制御ユニットは、例えば、不正なメッセージを正規のメッセージと同様に処理することを抑止する等といったセキュリティ対策を実施し得る。
【００２９】
また、本発明の一態様に係る車載ネットワークシステムは、監視対象データを含む第１種メッセージを周期的に送信する電子制御ユニットと、比較対象データを含む第２種メッセージを周期的に送信する電子制御ユニットとを含む、通信路を介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムであって、前記通信路に接続された異常検知電子制御ユニットを備え、前記異常検知電子制御ユニットは、前記通信路から第１種メッセージ及び第２種メッセージを逐次受信する受信部と、前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、当該第１種メッセージの内容と、当該第１種メッセージの受信時において前記受信部によって最後に受信されていた第２種メッセージの内容と、前記受信部によって当該第１種メッセージより過去に受信された第１種メッセージの内容、及び、前記受信部によって前記最後に受信された第２種メッセージより過去に受信された第２種メッセージの内容のうちのいずれかとに基づいて、判定する判定部とを備える車載ネットワークシステムである。これにより、監視対象データを不正な内容にして攻撃者によりネットワークに流された第１種メッセージを、異常であると適切に判定し得る。このため、この車載ネットワークシステムは、攻撃に対する適切な防御を行うことが可能となる。
【００３０】
また、前記車載ネットワークシステムは更に、前記判定部により第１種メッセージが異常であると判定された場合に、当該車載ネットワークシステムを搭載する第１車両の外部に所在するサーバ又は当該第１車両以外の第２車両に、異常を通知する通知装置を備えることとしても良い。これにより、ある車両の車載ネットワークシステムで異常が検知された場合において、他の車両に直接又はサーバを介して異常が通知され得る。このため、他の車両において攻撃に対して効率的な防御を行うことが可能となる。また、サーバは、異常の通知を受けて、１台又は複数台の各車両に対してセキュリティ対策について指示できるようになる。
【００３１】
また、前記通知装置は、前記判定部により第１種メッセージが異常であると判定された場合に、前記第１車両と同一車種である前記第２車両に、異常を示す情報を送信することで、異常を通知することとしても良い。また、前記通知装置は、前記判定部により第１種メッセージが異常であると判定された場合に、前記第１車両の周囲に所在する前記第２車両に、異常を示す情報を送信することで、異常を通知することとしても良い。これらにより、攻撃者による同一車種の複数車両への連続攻撃、局所的な複数車両への連続攻撃等に対する防御が可能となり得る。
【００３２】
本発明の一態様に係る異常検知方法は、監視対象データを含む第１種メッセージを周期的に送信する電子制御ユニットと、比較対象データを含む第２種メッセージを周期的に送信する電子制御ユニットとを含む、通信路を介して通信を行う複数の電子制御ユニットを備えるネットワークシステムで用いられる異常検知方法であって、前記通信路から第１種メッセージ及び第２種メッセージを逐次受信する受信ステップと、前記受信ステップで受信された第１種メッセージが正常であるか異常であるかを、当該第１種メッセージの内容と、当該第１種メッセージの受信時において前記受信ステップで最後に受信されていた第２種メッセージの内容と、前記受信ステップで当該第１種メッセージより過去に受信された第１種メッセージの内容、及び、前記受信ステップで前記最後に受信された第２種メッセージより過去に受信された第２種メッセージの内容のうちのいずれかとに基づいて、判定する判定ステップと、前記判定ステップでの前記判定の結果に応じて送信を行う送信ステップとを含む異常検知方法である。これにより、不正な監視対象データを含む第１種メッセージをネットワークに流す攻撃に対しての適切な防御が可能となり得る。
【００３３】
本発明の一態様に係る異常検知電子制御ユニットは、監視対象データを含む第１種メッセージを周期的に送信する電子制御ユニットと、比較対象データを含む第２種メッセージを周期的に送信する電子制御ユニットとを含む、通信路を介して通信を行う複数の電子制御ユニットを備えるネットワークシステムにおける前記通信路に接続された異常検知電子制御ユニットであって、前記通信路から第１種メッセージ及び第２種メッセージを逐次受信する受信部と、前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、当該第１種メッセージの内容と、当該第１種メッセージの受信時において前記受信部によって最後に受信されていた第２種メッセージの内容と、に基づいて判定する判定部と、を備える異常検知電子制御ユニットである。第１種メッセージ及び第２種メッセージはネットワークで予め定められた規則に従って周期的に伝送され、個々のメッセージの内容としての逐次監視対象データ及び比較対象データの各値は、メッセージが送信される時に応じて、例えば相互に一定の関係性を持って変化する。このため、例えば、時間の経過に伴って逐次送信される複数の第２種メッセージの複数の比較対象データの値に現れる変化とその変化の際における第１種メッセージの監視対象データの値との関係等が、予め規定された、正常時に満たされるべき或いは異常時に満たされるべき所定基準を、満たすか否かに基づいて、適切な判定が可能となる。このように、監視対象データと比較対象データとについての関係性を利用して監視対象データが異常であるか否かを判定部が判定できるように比較対象データに係る第２種メッセージを定めて利用されると、異常検知電子制御ユニットは、監視対象データを不正な内容にして攻撃者によりネットワークに流された第１種メッセージを、異常であると適切に検知し得る。例えば、攻撃者が、ネットワークシステムにおける正規の電子制御ユニットから送信される周期と同様の周期で不正な第１種メッセージを送信したとしても、適切に異常を検知でき、ネットワークのセキュリティの確保が可能となる。
【００３４】
また、前記第１種メッセージは、車両の挙動を制御する制御装置に対する指示を示す指示情報を含み、前記第２種メッセージは、前記制御装置の状態を示す状態情報を含むこととしても良い。これにより、異常検知電子制御ユニットは、車両の挙動に対するセキュリティの確保が可能となる。
【００３５】
また、前記指示情報はハンドルを回転させるための指示情報を含み、前記状態情報はハンドルの回転に関係する状態情報を含むこととしても良い。これにより、異常検知電子制御ユニットは、車両の挙動に関係するハンドルに対するセキュリティの確保が可能となる。
【００３６】
また、前記指示情報は速度を減速させるための指示情報を含み、前記状態情報は速度に関係する状態情報を含むこととしても良い。これにより、異常検知電子制御ユニットは、車両の挙動に関係する減速に対するセキュリティの確保が可能となる。
【００３７】
また、前記指示情報は速度を加速させるための指示情報を含み、前記状態情報は速度に関係する状態情報を含むこととしても良い。これにより、異常検知電子制御ユニットは、車両の挙動に関係する加速に対するセキュリティの確保が可能となる。
【００３８】
また、前記異常検知電子制御ユニットは、記憶部を有し、前記受信部は、受信した第１種メッセージ及び第２種メッセージのそれぞれの内容を前記記憶部に格納し、前記判定部は、前記記憶部を参照して前記判定を行うこととしても良い。これにより、異常検知電子制御ユニットは、異常検知電子制御ユニット内における記憶部を利用して、適切な判定を迅速に行い得る。
【００３９】
また、前記判定部は、前記受信部によって第１種メッセージが受信された際に、当該第１種メッセージが正常であるか異常であるかを、当該第１種メッセージに含まれる第１監視対象データと、前記受信部によって最後に受信された第２種メッセージに含まれる第１比較対象データとが、所定基準を満たすか否かに応じて判定することとしても良い。これにより、第１種メッセージの各監視対象データの値と、第２種メッセージの比較対象データの値とに一定の関係があることを利用して、第１種メッセージについての異常を適切に判定することが可能となる。
【００４０】
また、前記複数の電子制御ユニットは、参照データを含む第３種メッセージを周期的に送信する電子制御ユニットを含み、前記受信部は更に第３種メッセージを逐次受信し、前記判定部は、前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、当該第１種メッセージの受信時において前記受信部によって最後に受信されていた第３種メッセージの内容と、前記受信部によって前記最後に受信された第３種メッセージより過去に受信された第３種メッセージの内容と、に基づいて判定することとしても良い。これにより、監視対象データ及び比較対象データに係る関係性に加えて、第３種メッセージの参照データとの関係を用いるので、適切に第３種メッセージを定めておくことで、より適切に第１種メッセージについての異常を判定することが可能となる。
【００４１】
また、前記複数の電子制御ユニットは、参照データを含む第３種メッセージを周期的に送信する電子制御ユニットを含み、前記受信部は更に第３種メッセージを逐次受信し、前記判定部は更に、前記受信部によって受信された第２種メッセージが正常であるか否かを、当該第２種メッセージの内容と、当該第２種メッセージの受信時において前記受信部によって最後に受信されていた第３種メッセージの内容とに基づいて判定し、前記判定部は、前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、当該第１種メッセージの内容と、当該第１種メッセージの受信時において前記受信部によって最後に受信されて正常と判定された第２種メッセージの内容と、に基づいて判定することとしても良い。これにより、比較対象データと参照データとの関係性に基づいて正常と判定した比較対象データを用いて、監視対象データについての判定がなされるので、より正確な判定が可能となる。
【００４２】
また、前記ネットワークシステムは車両に搭載され、前記監視対象データ及び前記比較対象データは、前記車両の制御のために用いられるデータであり、前記通信路は、前記車両における有線通信路であり、前記複数の電子制御ユニットは、ＣＡＮプロトコル又はＥｔｈｅｒｎｅｔ（登録商標）プロトコルに従ってメッセージの授受を行うこととしても良い。これにより、車載ネットワークへの攻撃の検知が可能となり、車両のセキュリティの確保が可能となり得る。
【００４３】
また、前記判定部は、前記受信部によって第１種メッセージにおける監視対象データが受信されて当該第１種メッセージの最後尾のビットが受信される前において、当該第１種メッセージが正常であるか異常であるかを判定し、前記送信部は、前記判定部により第１種メッセージが異常であると判定された場合には前記受信部によって当該第１種メッセージの最後尾のビットが受信される前に、当該第１種メッセージを無効化する所定メッセージを前記通信路へ送信することとしても良い。これにより、ネットワークに不正なメッセージを流す攻撃からネットワークシステムを防御することが可能となる。
【００４４】
また、前記通信路はネットワークバスであり、前記複数の電子制御ユニットは、ＣＡＮプロトコルに従って、フレームの授受を行い、前記第１種メッセージは、所定値をＩＤフィールドに含み、監視対象データをデータフィールドに含むデータフレームであり、前記第２種メッセージは、前記所定値とは異なる特定値をＩＤフィールドに含み、比較対象データをデータフィールドに含むデータフレームであり、前記送信部は、前記所定メッセージとしてエラーフレームを送信することとしても良い。これにより、車載ネットワークにおいて効率的に不正な監視対象データを含むデータフレームを無効化することが可能となる。
【００４５】
また、前記通信路はネットワークバスであり、前記送信部は、前記判定部により第１種メッセージが異常であると判定された場合に、異常通知メッセージを前記ネットワークバスへ送信することとしても良い。これにより、他の電子制御ユニットに異常が通知される。このため、異常の通知を受けた電子制御ユニットは、例えば、不正なメッセージを正規のメッセージと同様に処理することを抑止する等といったセキュリティ対策を実施し得る。
【００４６】
また、本発明の一態様に係る車載ネットワークシステムは、監視対象データを含む第１種メッセージを周期的に送信する電子制御ユニットと、比較対象データを含む第２種メッセージを周期的に送信する電子制御ユニットとを含む、通信路を介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムであって、前記通信路に接続された異常検知電子制御ユニットを備え、前記異常検知電子制御ユニットは、前記通信路から第１種メッセージ及び第２種メッセージを逐次受信する受信部と、前記受信部によって受信された第１種メッセージが正常であるか異常であるかを、当該第１種メッセージの内容と、当該第１種メッセージの受信時において前記受信部によって最後に受信されていた第２種メッセージの内容と、に基づいて判定する判定部とを備える車載ネットワークシステムである。これにより、監視対象データを不正な内容にして攻撃者によりネットワークに流された第１種メッセージを、異常であると適切に判定し得る。このため、この車載ネットワークシステムは、攻撃に対する適切な防御を行うことが可能となる。
【００４７】
また、前記車載ネットワークシステムは更に、前記判定部により第１種メッセージが異常であると判定された場合に、当該車載ネットワークシステムを搭載する第１車両の外部に所在するサーバ又は当該第１車両以外の第２車両に、異常を通知する通知装置を備えることとしても良い。これにより、ある車両の車載ネットワークシステムで異常が検知された場合において、他の車両に直接又はサーバを介して異常が通知され得る。このため、他の車両において攻撃に対して効率的な防御を行うことが可能となる。また、サーバは、異常の通知を受けて、１台又は複数台の各車両に対してセキュリティ対策について指示できるようになる。
【００４８】
また、前記通知装置は、前記判定部により第１種メッセージが異常であると判定された場合に、前記第１車両と同一車種である前記第２車両に、異常を示す情報を送信することで、異常を通知することとしても良い。また、前記通知装置は、前記判定部により第１種メッセージが異常であると判定された場合に、前記第１車両の周囲に所在する前記第２車両に、異常を示す情報を送信することで、異常を通知することとしても良い。これらにより、攻撃者による同一車種の複数車両への連続攻撃、局所的な複数車両への連続攻撃等に対する防御が可能となり得る。
【００４９】
本発明の一態様に係る異常検知方法は、監視対象データを含む第１種メッセージを周期的に送信する電子制御ユニットと、比較対象データを含む第２種メッセージを周期的に送信する電子制御ユニットとを含む、通信路を介して通信を行う複数の電子制御ユニットを備えるネットワークシステムで用いられる異常検知方法であって、前記通信路から第１種メッセージ及び第２種メッセージを逐次受信し、前記受信された第１種メッセージが正常であるか異常であるかを、当該第１種メッセージの内容と、当該第１種メッセージの受信時において最後に受信されていた第２種メッセージの内容と、に基づいて判定する異常検知方法である。これにより、不正な監視対象データを含む第１種メッセージをネットワークに流す攻撃に対しての適切な防御が可能となり得る。
【００５０】
なお、これらの全般的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータで読み取り可能なＣＤ−ＲＯＭ等の記録媒体で実現されても良く、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されても良い。
【００５１】
以下、実施の形態に係る異常検知方法を用いる異常検知ＥＣＵを含む車載ネットワークシステムについて、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本発明の一具体例を示すものである。従って、以下の実施の形態で示される数値、構成要素、構成要素の配置及び接続形態、並びに、処理の要素としてのステップ及びステップの順序等は、一例であって本発明を限定するものではない。以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
【００５２】
（実施の形態１）
以下、本発明の実施の形態１として、車載ネットワークを流れるメッセージについての異常の検知が可能な車載ネットワークシステムを搭載する車両と、他の車両と、サーバとを含む異常検知システム１０について、図面を用いて説明する。
【００５３】
［１．１  異常検知システム１０の全体構成］
図１は、異常検知システム１０の全体構成を示す図である。異常検知システム１０は、自動車である複数の車両それぞれの異常を検知して対処するための通信システムである。異常検知システム１０は、図１に示すように、車載ネットワークシステム１００を搭載する車両２００と、他の車両５００と、サーバ４００とを外部ネットワーク３００で接続して構成される。異常検知システム１０は、車両２００及び車両５００以外に、例えば多数の車両を含んで構成され得るが、図１では省略している。
【００５４】
車両２００における車載ネットワークシステム１００は、車両２００の電子制御部品等である各ＥＣＵが、車載ネットワークにより車両の制御等のために必要な情報の授受を行うための車両内の通信システムである。車両２００以外の車両も、車両２００と同様に車載ネットワークシステムを搭載している。
【００５５】
外部ネットワーク３００は、無線或いは有線の通信路で構成される通信網であり、例えばインターネット等の広域ネットワークを含み得る。
【００５６】
車両２００は、異常が発生した場合に、外部に異常を通知する通知装置を備える。通知装置は例えば外部通信装置として実現され得る。具体例として、車両２００は、車載ネットワークシステム１００に、外部ネットワーク３００と通信する無線通信回路等を含む外部通信装置を備え、車載ネットワークで異常が発生した場合に、サーバ４００或いは車両５００に、異常を示す情報を送信することで、異常を通知する。
【００５７】
サーバ４００は、各車両において発生した異常の情報を処理するコンピュータである。サーバ４００は、例えば、車両２００から異常を示す情報を受信した場合に、車両２００に異常が発生したことを、例えば異常を示す情報の車両５００への送信等によって、車両５００に通知する。サーバ４００で、車両２００から異常を示す情報を受信した場合に、その情報に基づいて各種分析等を行って異常に対する対処方法等を決定しても良い。
【００５８】
［１．２  車載ネットワークシステム１００の構成］
図２は、車載ネットワークシステム１００の構成を示す。車載ネットワークシステム１００は、ＣＡＮプロトコルに従って通信する通信システムの一例であり、制御装置、センサ、アクチュエータ、ユーザインタフェース装置等の各種機器が搭載された車両２００における通信システムである。車載ネットワークシステム１００は、バス（ネットワークバス）を介してフレーム（メッセージとも称する）に係る通信を行う複数のＥＣＵを備え、異常検知方法を用いる。具体的には図２に示すように車載ネットワークシステム１００は、バス１５０と、バス１５０に接続された異常検知ＥＣＵ１１０、ギア制御ＥＣＵ１２０、速度制御ＥＣＵ１３０、及び、一種のＥＣＵである外部通信装置１４０を含んで構成される。バス１５０は、車載ネットワークの有線通信路であり、各ＥＣＵに接続される。なお、車載ネットワークシステム１００には、異常検知ＥＣＵ１１０、ギア制御ＥＣＵ１２０、速度制御ＥＣＵ１３０、及び、外部通信装置１４０以外にもいくつものＥＣＵが含まれ得るが、ここでは便宜上、主に図２に示したＥＣＵに注目して説明を行う。
【００５９】
各ＥＣＵは、例えば、プロセッサ（マイクロプロセッサ）、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ＲＯＭ、ＲＡＭ等であり、プロセッサにより実行されるプログラム（コンピュータプログラム）を記憶することができる。例えばプロセッサが、プログラムに従って動作することにより、ＥＣＵは各種機能を実現することになる。なお、コンピュータプログラムは、所定の機能を達成するために、プロセッサに対する指令を示す命令コードが複数個組み合わされて構成されたものである。ＥＣＵは、各種機器に接続され得る。
【００６０】
各ＥＣＵは、ＣＡＮプロトコルに従って、バス１５０を介してフレームの授受を行い得る。ＥＣＵ間で授受されるフレームにはデータフレームがある。データフレームは、例えば、車両の状態に関するデータ、車両に対して制御を指示するデータ等といった、車両の制御のために用いられるデータ等を含み得る。
【００６１】
異常検知ＥＣＵ１１０は、バス１５０に接続され、車載ネットワークのバス１５０に流れる第１種メッセージ、第２種メッセージ等を受信して、第１種メッセージが正常か異常かを判定し、判定の結果に基づいて所定の処理を行うＥＣＵである。異常検知ＥＣＵ１１０は、第１種メッセージが正常か異常かの判定に、受信した第１種メッセージ及び第２種メッセージを用いる。第１種メッセージは、監視対象データを含むこととして定められた、所定の識別情報（ＩＤ）を有するメッセージである。また、第２種メッセージは、比較対象データを含むこととして定められた、第１種メッセージとは異なる識別情報（ＩＤ）を有するメッセージである。
【００６２】
ギア制御ＥＣＵ１２０は、例えば変速機構であるギアに接続されており、一定の周期で、ギアポジションに関するギア制御情報を送信する。
【００６３】
速度制御ＥＣＵ１３０は、例えば速度センサに接続されており、一定の周期で、車両の速度に関する速度制御情報を送信する。
【００６４】
外部通信装置１４０は、外部ネットワーク３００に接続し、異常を示す情報等といった車両２００に関する情報を、車両２００の外部に送信する機能を有する。
【００６５】
［１．３  異常検知ＥＣＵ１１０の構成］
図３は、異常検知ＥＣＵ１１０の構成を示す。異常検知ＥＣＵ１１０は、同図に示すように、判定部１１１と、受信部１１２と、送信部１１３と、ルール記憶部１１４と、データ記憶部１１５とを含んで構成される。図３に示した異常検知ＥＣＵ１１０の各構成要素は、異常検知ＥＣＵ１１０のメモリ等の記憶媒体、通信回路、メモリに格納されたプログラムを実行するプロセッサ等で実現され得る。
【００６６】
判定部１１１は、受信部１１２が受信中のデータフレームと、データ記憶部１１５に保持されて逐次更新されるデータテーブル（図１２参照）におけるデータと、ルール記憶部１１４に保持されるルールテーブルが示すルール（図８〜図１１参照）とを用いて異常判定処理を行うことで、受信中のデータフレームが正常か異常かを判定する。判定部１１１は、受信中のデータフレームが異常であると判定した場合には、後述する車両保護処理（図２３、図２４参照）を行う。判定部１１１は、例えばプログラムを実行するプロセッサ等で実現され得る。
【００６７】
受信部１１２は、車載ネットワークシステム１００内の各ＥＣＵから送信されてバス１５０に現れるメッセージ（つまりデータフレーム）が、ルールテーブルの情報から、監視対象データの判定に必要な識別情報（ＩＤ）を有するメッセージであれば、そのメッセージを受信する。また、受信部１１２は、受信したメッセージの内容をデータ記憶部１１５が保持するデータテーブルに含ませるようにそのデータテーブルを更新する処理であるデータ保存処理（図１９参照）を行う。受信部１１２は、通信回路等により実現され得る。
【００６８】
送信部１１３は、判定部１１１の制御下で、判定部１１１による判定の結果に応じて送信を行う。送信部１１３は、判定部１１１が受信中のデータフレームを異常と判定した場合に、例えば、このデータフレームの送信阻止処理として、このデータフレームを無効化する所定メッセージをバス１５０に送信する。所定メッセージは、例えばエラーフレームである。また、例えば、送信部１１３は、判定部１１１が異常と判定した場合において、外部通信装置１４０にサーバ４００或いは他の車両５００に対して、車両２００での異常の発生を通知させるべく、外部通信装置１４０が受信するように予め定められた識別情報（ＩＤ）を有して異常を示す情報を含むメッセージを、バス１５０に送信する。送信部１１３は、通信回路等により実現され得る。
【００６９】
記憶部つまりルール記憶部１１４及びデータ記憶部１１５は、例えば記憶媒体の一領域で実現される。
【００７０】
ルール記憶部１１４は、監視対象データと、比較対象データとの関係についてのルールテーブルを保持する。
【００７１】
データ記憶部１１５は、受信部１１２により受信されたメッセージの識別情報（ＩＤ）に対応して、監視対象データ或いは比較対象データを含むメッセージの内容であるデータを含むデータテーブルを記憶する。
【００７２】
［１．４  データフレームフォーマット］
以下、ＣＡＮプロトコルに従ったネットワークで用いられるデータフレームについて説明する。
【００７３】
図４は、ＣＡＮプロトコルで規定されるデータフレームのフォーマットを示す図である。同図には、ＣＡＮプロトコルで規定される標準ＩＤフォーマットにおけるデータフレームを示している。データフレームは、ＳＯＦ（Start Of Frame）、ＩＤフィールド、ＲＴＲ（Remote Transmission Request）、ＩＤＥ（Identifier Extension）、予約ビット「ｒ」、ＤＬＣ（Data Length Code）、データフィールド、ＣＲＣ（Cyclic Redundancy Check）シーケンス、ＣＲＣデリミタ「ＤＥＬ」、ＡＣＫ（Acknowledgement）スロット、ＡＣＫデリミタ「ＤＥＬ」、及び、ＥＯＦ（End Of Frame）の各フィールドで構成される。
【００７４】
ＳＯＦは、１ｂｉｔのドミナントで構成される。バスがアイドルの状態はレセシブになっており、ＳＯＦによりドミナントへ変更することが、フレームの送信開始の通知となる。
【００７５】
ＩＤフィールドは、１１ｂｉｔで構成される、データの種類を示す値であるＩＤを格納するフィールドである。複数のノードが同時に送信を開始した場合、このＩＤフィールドで通信調停を行うために、ＩＤが小さい値を持つフレームが高い優先度となるよう設計されている。
【００７６】
ＲＴＲは、データフレームとリモートフレームとを識別するための値であり、データフレームにおいてはドミナント１ｂｉｔで構成される。
【００７７】
ＩＤＥと「ｒ」とは、両方ドミナント１ｂｉｔで構成される。
【００７８】
ＤＬＣは、４ｂｉｔで構成され、データフィールドの長さを示す値である。
【００７９】
データフィールドは、最大６４ｂｉｔで構成される送信するデータの内容を示す値である。データフィールドは、８ｂｉｔ毎に長さを調整できる。送られるデータの仕様については、ＣＡＮプロトコルで規定されておらず、車載ネットワークシステムにおいて定められる。従って、車種、製造者等に依存した仕様となる。
【００８０】
ＣＲＣシーケンスは、１５ｂｉｔで構成される。ＣＲＣシーケンスは、ＳＯＦ、ＩＤフィールド、コントロールフィールド及びデータフィールドの送信値より算出される。
【００８１】
ＣＲＣデリミタは、１ｂｉｔのレセシブで構成されるＣＲＣシーケンスの終了を表す区切り記号である。
【００８２】
ＡＣＫスロットは、１ｂｉｔで構成される。送信ノードはＡＣＫスロットをレセシブにして送信を行う。受信ノードはＣＲＣシーケンスまで正常に受信ができていればＡＣＫスロットをドミナントとして送信する。レセシブよりドミナントが優先されるため、送信後にＡＣＫスロットがドミナントであれば、送信ノードは、いずれかの受信ノードが受信に成功していることを確認できる。
【００８３】
ＡＣＫデリミタは、１ｂｉｔのレセシブで構成されるＡＣＫの終了を表す区切り記号である。
【００８４】
ＥＯＦは、７ｂｉｔのレセシブで構成されており、データフレームの終了を示す。
【００８５】
［１．５  エラーフレームフォーマット］
図５は、ＣＡＮプロトコルで規定されるエラーフレームのフォーマットを示す図である。エラーフレームは、エラーフラグ（プライマリ）と、エラーフラグ（セカンダリ）と、エラーデリミタ「ＤＥＬ」とから構成される。
【００８６】
エラーフラグ（プライマリ）は、エラーの発生を他のノードに知らせるために使用される。エラーを検知したノードはエラーの発生を他のノードに知らせるために６ｂｉｔのドミナントを連続で送信する。この送信は、ＣＡＮプロトコルにおけるビットスタッフィングルール（つまり連続して同じ値を６ｂｉｔ以上送信しないルール）に違反し、他のノードからのエラーフレーム（セカンダリ）の送信を引き起こす。
【００８７】
エラーフラグ（セカンダリ）は、エラーの発生を他のノードに知らせるために使用される連続した６ビットのドミナントで構成される。エラーフラグ（プライマリ）を受信してビットスタッフィングルール違反を検知した全てのノードがエラーフラグ（セカンダリ）を送信することになる。
【００８８】
エラーデリミタ「ＤＥＬ」は、８ｂｉｔの連続したレセシブであり、エラーフレームの終了を示す。
【００８９】
［１．６  速度制御ＥＣＵ１３０が送信するデータフレーム］
図６は、速度制御ＥＣＵ１３０が送信する、速度制御情報を含むデータフレームの一例を示す図である。この例では、速度制御情報を含むデータフレームは、所定値「０ｘ０１」であるＩＤを有し、ＤＬＣが示すデータ長は２である。このデータフレームのデータフィールドにおけるデータが速度制御情報を示す。速度制御情報に係るデータの１バイト目は、車両２００が前進しているか、後退しているかを表し、２バイト目は、車両２００の速度を表す。
【００９０】
図６Ａは、具体例としての速度制御情報のデータ値の示す意味を、データの読み取り結果として表している。速度制御情報に係るデータの１バイト目が０ｘ００で、２バイト目が０ｘ００でなければ「前進中」、２バイト目が０ｘ００なら「停車中」を意味し、１バイト目が０ｘ１０で、２バイト目が０ｘ００でなければ「後退中」を意味する。図６に例示したデータフレームのデータは、１バイト目が０ｘ１０であり、２バイト目が０ｘ１２であるので、異常検知ＥＣＵ１１０は、このデータフレームの速度制御情報を「後退中」として読み取る。
【００９１】
［１．７  ギア制御ＥＣＵ１２０が送信するデータフレーム］
図７は、ギア制御ＥＣＵ１２０が送信する、ギア制御情報を含むデータフレームの一例を示す図である。この例では、ギア制御情報を含むデータフレームは、速度制御情報を含むデータフレームとは異なる値「０ｘ０２」であるＩＤを有し、ＤＬＣが示すデータ長は１である。このデータフレームのデータフィールドにおけるデータがギア制御情報を示す。ギア制御情報に係る１バイトのデータは、車両２００の変速機構に係る現在のギアポジションを表す。
【００９２】
図７Ａは、具体例としてのギア制御情報のデータ値の示す意味を、データの読み取り結果として表している。ギア制御情報に係るデータが０ｘ００であれば、駐車のためのギアポジションである「パーキング」、０ｘ０１であれば、前進でも後退でもない「ニュートラル」、０ｘ０２であれば、車両の前進のためのギアポジションである「ドライブ」、０ｘ０３であれば、車両の後退のためのギアポジションである「リバース」を意味する。例えば図７に例示したデータフレームのデータの値は、０ｘ０１であるので、異常検知ＥＣＵ１１０は、このデータフレームのギア制御情報を「ニュートラル」として読み取る。
【００９３】
［１．８  ルールテーブルのルール］
図８は、ルール記憶部１１４が保持するルールテーブルで規定されるルールの概念を示す図である。
【００９４】
車載ネットワークのバス１５０に流される、所定値のＩＤを有するメッセージである第１種メッセージにおける特定のビット列であるデータの値を、値Ａとし、所定値と異なる特定値のＩＤを有するメッセージである第２種メッセージにおける特定のビット列であるデータの値を、値Ｂとして、ルールを説明する。第１種メッセージと第２種メッセージとがそれぞれ周期的に逐次送信される場合に、時の経過に応じて、バス１５０に現れる各メッセージが示す値Ａと値Ｂという２つの値について、正常状態において一定の規則を持って値の変化が生じるのであれば、この値の遷移を遷移図で表せる（図８中央上段参照）。この遷移図の例では、値Ａは具体値として０又は１をとり、値Ｂは具体値として０、１又は２をとることとしている。
【００９５】
ルールテーブルは、例えば、この遷移図を２つの行列で表している。図８の例では、値Ａが０の場合においては、値Ｂは０、１及び２の範囲でどのような変化をしても正常であることを示す。また、値Ａが１の場合においては、値Ｂは０のままで変化しないとき、１のままで変化しないとき、１から２へ変化するとき、２のままで変化しないとき、及び、２から１へ変化するときのいずれかであるときのみ、正常であり、その他のときには異常であることを示す。このように、ルールテーブルは、少なくとも、あるＩＤを有するメッセージが示す値と、別のＩＤを有するメッセージが示す値と、いずれかのＩＤを有するメッセージが示す過去の値との関係性に基づいて、メッセージについて正常か異常かを判定するための基準となるルールを示す。なお、ここでは、互いに異なるＩＤを有する２種類のメッセージのそれぞれにおける１つの値を用いたルールの例を示したが、これはルールの一例に過ぎず、例えば、同じメッセージ内の複数の値を用いても、同様にルールを規定し得る。
【００９６】
［１．９  ルールテーブルの具体例］
図９、図１０、図１１は、ルール記憶部１１４が保持するルールテーブルの例を示す。これらの例では、監視対象データはギア制御情報であり、比較対象データは速度制御情報であるとしている。即ち、監視対象データは、第１種メッセージのデータフィールドに、つまり、所定値（図６の例では「０ｘ０１」）をＩＤフィールドに含むデータフレームのデータフィールドに含まれる。また、比較対象データは、第２種メッセージのデータフィールドに、つまり、所定値とは異なる特定値（図７の例では「０ｘ０２」）をＩＤフィールドに含むデータフレームのデータフィールドに含まれる。
【００９７】
図９は、ギア制御情報の変化についてのルールテーブルの一例を示す。この例のルールテーブルは、車両が停車中の場合、及び、車両が前進中の場合のそれぞれに対するギア制御情報の変化についてのルールを示している。具体的には、ルールテーブルで、ギア制御情報の過去の状態と現在の状態との組み合わせ毎に、正常か、異常かを規定しており、その組み合わせが生じ得ないものについては図９の例では該当なし（Ｎ／Ａ）としているが、異常と看做すことができる。なお、図９に示す現在のギア状態は、ギア制御情報の最新の値である現在値、つまり、異常検知ＥＣＵ１１０において最後に受信した第１種メッセージのギア制御情報が示す値に、対応する。最後に受信した第１種メッセージのギア制御情報は、例えば異常検知ＥＣＵ１１０が現在受信中である第１種メッセージに含まれるギア制御情報である。また、図９に示す過去のギア状態は、ギア制御情報の過去値、例えば、ギア制御情報の現在値を含む第１種メッセージの１回前に受信した第１種メッセージのギア制御情報が示す値に、対応する。異常検知ＥＣＵ１１０は、このルールテーブルに従って、ギア制御情報を含むメッセージが正常か異常かを判定できる。例えば、バス１５０に流れる第２種メッセージに含まれる速度制御情報によって、車両の動きが前進中であることを認識できている状態において、周期的に送信される第１種メッセージに含まれるギア制御情報が、「ドライブ」を示す状態から「リバース」を示す状態に変化した場合には、図９の例のルールテーブルに基づいて、異常検知ＥＣＵ１１０は、ギア制御情報を含むメッセージを異常と判定する。
【００９８】
図１０は、速度制御情報の変化についてのルールテーブルの一例を示す。この例のルールテーブルは、車両のギアポジションが「ドライブ」となっている場合、及び、車両のギアポジションが「リバース」となっている場合のそれぞれに対する速度制御情報の変化についてのルールを示している。具体的には、ルールテーブルで、速度制御情報の過去の状態と現在の状態との組み合わせ毎に、正常か、異常かを規定しており、その組み合わせが生じ得ないものについては図１０の例では該当なし（Ｎ／Ａ）としているが、異常と看做すことができる。なお、図１０に示す現在の車両の動きに係る状態は、速度制御情報の最新の値である現在値、つまり、異常検知ＥＣＵ１１０において最後に受信した第２種メッセージの速度制御情報が示す値に、対応する。また、図１０に示す過去の車両の動きに係る状態は、速度制御情報の過去値、例えば、速度制御情報の現在値を含む第２種メッセージの１回前に受信した第２種メッセージの速度制御情報が示す値に、対応する。異常検知ＥＣＵ１１０は、このルールテーブルに従って、ギア制御情報を含むメッセージが正常か異常かを判定できる。例えば、バス１５０に送信された第１種メッセージに含まれるギア制御情報が、「ドライブ」を示す状態である場合に、バス１５０に周期的に流れる第２種メッセージに含まれる速度制御情報の過去値が停車中で現在値が後退中であることを認識した状態であれば、図１０の例のルールテーブルに基づいて、異常検知ＥＣＵ１１０は、ギア制御情報を含むメッセージを異常と判定する。
【００９９】
図１１は、ギア制御情報の変化及び速度制御情報の変化についてのルールテーブルの一例を示している。この例のルールテーブルは、車両が停車中から前進中に変化した場合、及び、車両が後退中から停車中に変化した場合のそれぞれに対するギア制御情報の変化についてのルールを示している。具体的には、速度制御情報の変化毎に対応するルールテーブルで、ギア制御情報の過去の状態と現在の状態との組み合わせ毎に、正常か、異常かを規定しており、その組み合わせが生じ得ないものについては図１１の例では該当なし（Ｎ／Ａ）としているが、異常と看做すことができる。なお、図１１に示す現在のギア状態は、図９の場合と同様に、ギア制御情報の現在値に対応する。また、図１１に示す過去のギア状態は、図９の場合と同様に、ギア制御情報の過去値に対応する。異常検知ＥＣＵ１１０は、このルールテーブルに従って、ギア制御情報を含むメッセージが正常か異常かを判定できる。例えば、バス１５０に周期的に流れる第２種メッセージに含まれる速度制御情報によって、車両の動きが停車中から前進中に変化したことを認識できている状態において、周期的に送信される第１種メッセージに含まれるギア制御情報が、「ドライブ」を示す状態から「リバース」を示す状態に変化した場合には、図１１の例のルールテーブルに基づいて、異常検知ＥＣＵ１１０は、ギア制御情報を含むメッセージを異常と判定する。
【０１００】
［１．１０  データテーブル］
図１２は、データ記憶部１１５が保持するデータテーブルの一例を示す。データテーブルは、第１種メッセージの監視対象データと、第２種メッセージの比較対象データとのそれぞれについて、例えばメッセージの受信順に記録したテーブルである。このデータテーブルは、異常検知ＥＣＵ１１０においてデータ保存処理（図１９参照）が行われることにより逐次更新される。
【０１０１】
図１２の例のデータテーブルは、第１種メッセージの監視対象データとしてのギア制御情報の現在値と過去値とを含み、第２種メッセージの比較対象データとしての速度制御情報の現在値と過去値とを含んでいる。
【０１０２】
［１．１１  異常判定処理に使用するデータ］
図１３は、異常検知ＥＣＵ１１０が行う異常判定処理のパターンを示す図である。図１３に示す３つのパターンのそれぞれは、異常判定処理で用いるデータが、相違する。
【０１０３】
異常判定処理パターン１では、監視対象データの現在値及び過去値、並びに、比較対象データの現在値という３つの値を用いて、その３つの値が所定基準を満たすか否かにより、監視対象データを含むメッセージが正常か異常かの判定を行う。この判定には、例えば、比較対象データが現在値である状態において、監視対象データが特定の変化をしたこと或いは変化しなかったことに対して、正常又は異常を予め規定する所定基準を用いる。
【０１０４】
異常判定処理パターン２では、監視対象データの現在値、並びに、比較対象データの現在値及び過去値という３つの値を用いて、その３つの値が所定基準を満たすか否かにより、監視対象データを含むメッセージが正常か異常かの判定を行う。この判定には、例えば、比較対象データが過去値から現在値に変化した状態において、監視対象データが現在、特定の値であったことに対して、正常又は異常を予め規定する所定基準を用いる。
【０１０５】
異常判定処理パターン３では、監視対象データの現在値及び過去値、並びに、比較対象データの現在値及び過去値という４つの値を用いて、その４つの値が所定基準を満たすか否かにより、監視対象データを含むメッセージが正常か異常かの判定を行う。この判定には、例えば、比較対象データが過去値から現在値に変化した状態において、監視対象データが特定の変化をしたこと或いは変化しなかったことに対して、正常又は異常を予め規定する所定基準を用いる。
【０１０６】
［１．１２  異常検知ＥＣＵ等の処理シーケンス］
以下、図１４〜図１７を用いて、車載ネットワークシステム１００における異常検知ＥＣＵ１１０の動作について説明する。
【０１０７】
図１４は、バス１５０を流れるメッセージに異常がない場合の異常検知ＥＣＵ１１０等の処理シーケンスの一例を示す。ここでは、異常検知ＥＣＵ１１０は、図９に示したルールテーブルを用いて異常判定処理を行うものとする。
【０１０８】
速度制御ＥＣＵ１３０は、速度制御情報「０ｘ００、０ｘ２３」を含むメッセージをバス１５０へ送信する（ステップＳ１００１）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージの速度制御情報から「前進中」を読み取ってデータテーブルに保存する（ステップＳ１００２）。
【０１０９】
ギア制御ＥＣＵ１２０は、ギア制御情報「０ｘ０２」を含むメッセージをバス１５０へ送信する（ステップＳ１００３）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージのギア制御情報から「ドライブ」を読み取ってデータテーブルに保存する（ステップＳ１００４）。
【０１１０】
次に、速度制御ＥＣＵ１３０は、速度制御情報「０ｘ００、０ｘ００」を含むメッセージをバス１５０へ送信する（ステップＳ１００５）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージの速度制御情報から「停車中」を読み取ってデータテーブルに保存する（ステップＳ１００６）。
【０１１１】
また、ギア制御ＥＣＵ１２０は、ギア制御情報「０ｘ０３」を含むメッセージをバス１５０へ送信する（ステップＳ１００７）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージのギア制御情報から「リバース」を読み取ってデータテーブルに保存する（ステップＳ１００８）。
【０１１２】
そして、異常検知ＥＣＵ１１０は、監視対象データであるギア制御情報の現在値「リバース」、監視対象データであるギア制御情報の過去値「ドライブ」、比較対象データである速度制御情報の現在値「停車中」の３つを、図９に示すルールテーブルを用いて、正常と判定する（ステップＳ１００９）。
【０１１３】
図１５は、バス１５０に不正なメッセージが流れた場合の異常検知ＥＣＵ１１０等の処理シーケンスの一例を示す。ここでは、異常検知ＥＣＵ１１０は、図９に示したルールテーブルを用いて、異常判定処理パターン１に係る異常判定処理を行うものとする。なお、不正なメッセージは、例えば、攻撃者がギア制御ＥＣＵ１２０を支配した状態で、ギア制御ＥＣＵ１２０から送信され得る。また、攻撃者は、例えば、ギア制御ＥＣＵ１２０による正規のメッセージの送信を止めさせて代わりに不正なメッセージを送信し得る。
【０１１４】
速度制御ＥＣＵ１３０は、速度制御情報「０ｘ００、０ｘ２３」を含むメッセージをバス１５０へ送信する（ステップＳ２００１）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージの速度制御情報から「前進中」を読み取ってデータテーブルに保存する（ステップＳ２００２）。
【０１１５】
ギア制御ＥＣＵ１２０は、ギア制御情報「０ｘ０２」を含むメッセージをバス１５０へ送信する（ステップＳ２００３）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージのギア制御情報から「ドライブ」を読み取ってデータテーブルに保存する（ステップＳ２００４）。
【０１１６】
次に、速度制御ＥＣＵ１３０は、速度制御情報「０ｘ００、０ｘ４９」を含むメッセージをバス１５０へ送信する（ステップＳ２００５）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージの速度制御情報から「前進中」を読み取ってデータテーブルに保存する（ステップＳ２００６）。
【０１１７】
また、ギア制御ＥＣＵ１２０は、ギア制御情報「０ｘ０３」を含むメッセージをバス１５０へ送信する（ステップＳ２００７）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージのギア制御情報から「リバース」を読み取ってデータテーブルに保存する（ステップＳ２００８）。
【０１１８】
そして、異常検知ＥＣＵ１１０は、監視対象データであるギア制御情報の現在値「リバース」、監視対象データであるギア制御情報の過去値「ドライブ」、比較対象データである速度制御情報の現在値「前進中」の３つを、図９に示すルールテーブルを用いて、異常と判定する（ステップＳ２００９）。この判定は、例えば、その監視対象データを含むメッセージであるデータフレームの受信中で最後尾のビットをバス１５０から受信する前に完了する。
【０１１９】
続いて、異常検知ＥＣＵ１１０は、異常と判定したので、車両保護処理として、監視対象データであるギア制御情報を含むメッセージの送信阻止処理を行う（ステップＳ２０１０）。異常検知ＥＣＵ１１０は、監視対象データを含むメッセージの送信阻止処理として、例えば、その監視対象データを含むメッセージであるデータフレームの受信中で最後尾のビットをバス１５０から受信する前に、エラーフレームをバス１５０に送信する。このエラーフレームにより、受信中であったデータフレームは、バス１５０上で上書きされて無効化され、バス１５０に接続された各ＥＣＵはその元のデータフレームを完全には受信できなくなる。また、異常検知ＥＣＵ１１０は、車両保護処理として更に、外部通信装置１４０に、異常を示す情報をサーバ４００へと送信する異常通知送信処理を行わせるように指示する（ステップＳ２０１１）。この指示は、例えば、外部通信装置１４０が受信するように予め定められたＩＤを有して異常を示す情報を含むデータフレームである異常通知メッセージをバス１５０に送信することで行われる。
【０１２０】
図１６は、バス１５０に不正なメッセージが流れた場合の異常検知ＥＣＵ１１０等の処理シーケンスの別の例を示す。ここでは、異常検知ＥＣＵ１１０は、図１０に示したルールテーブルを用いて、異常判定処理パターン２に係る異常判定処理を行うものとする。
【０１２１】
速度制御ＥＣＵ１３０は、速度制御情報「０ｘ００、０ｘ００」を含むメッセージをバス１５０へ送信する（ステップＳ３００１）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージの速度制御情報から「停車中」を読み取ってデータテーブルに保存する（ステップＳ３００２）。
【０１２２】
ギア制御ＥＣＵ１２０は、ギア制御情報「０ｘ０２」を含むメッセージをバス１５０へ送信する（ステップＳ３００３）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージのギア制御情報から「ドライブ」を読み取ってデータテーブルに保存する（ステップＳ３００４）。
【０１２３】
次に、速度制御ＥＣＵ１３０は、速度制御情報「０ｘ１０、０ｘ４５」を含むメッセージをバス１５０へ送信する（ステップＳ３００５）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージの速度制御情報から「後退中」を読み取ってデータテーブルに保存する（ステップＳ３００６）。
【０１２４】
また、ギア制御ＥＣＵ１２０は、ギア制御情報「０ｘ０２」を含むメッセージをバス１５０へ送信する（ステップＳ３００７）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージのギア制御情報から「ドライブ」を読み取ってデータテーブルに保存する（ステップＳ３００８）。
【０１２５】
そして、異常検知ＥＣＵ１１０は、監視対象データであるギア制御情報の現在値「ドライブ」、比較対象データである速度制御情報の現在値「後退中」、比較対象データである速度制御情報の過去値「停車中」の３つを、図１０に示すルールテーブルを用いて、異常と判定する（ステップＳ３００９）。
【０１２６】
続いて、異常検知ＥＣＵ１１０は、異常と判定したので、車両保護処理として、監視対象データであるギア制御情報を含むメッセージの送信阻止処理を行う（ステップＳ３０１０）。異常検知ＥＣＵ１１０は、例えば、その監視対象データを含むメッセージであるデータフレームの受信中に、送信阻止処理としてエラーフレームをバス１５０に送信する。また、異常検知ＥＣＵ１１０は、車両保護処理として更に、外部通信装置１４０に、異常を示す情報をサーバ４００へと送信する異常通知送信処理を行わせるように指示する（ステップＳ３０１１）。
【０１２７】
図１７は、バス１５０に不正なメッセージが流れた場合の異常検知ＥＣＵ１１０等の処理シーケンスの更に別の例を示す。ここでは、異常検知ＥＣＵ１１０は、図１１に示したルールテーブルを用いて、異常判定処理パターン３に係る異常判定処理を行うものとする。
【０１２８】
速度制御ＥＣＵ１３０は、速度制御情報「０ｘ００、０ｘ００」を含むメッセージをバス１５０へ送信する（ステップＳ４００１）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージの速度制御情報から「停車中」を読み取ってデータテーブルに保存する（ステップＳ４００２）。
【０１２９】
ギア制御ＥＣＵ１２０は、ギア制御情報「０ｘ０２」を含むメッセージをバス１５０へ送信する（ステップＳ４００３）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージのギア制御情報から「ドライブ」を読み取ってデータテーブルに保存する（ステップＳ４００４）。
【０１３０】
次に、速度制御ＥＣＵ１３０は、速度制御情報「０ｘ００、０ｘ４５」を含むメッセージをバス１５０へ送信する（ステップＳ４００５）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージの速度制御情報から「前進中」を読み取ってデータテーブルに保存する（ステップＳ４００６）。
【０１３１】
また、ギア制御ＥＣＵ１２０は、ギア制御情報「０ｘ０３」を含むメッセージをバス１５０へ送信する（ステップＳ４００７）。このメッセージを受信した異常検知ＥＣＵ１１０は、そのメッセージのギア制御情報から「リバース」を読み取ってデータテーブルに保存する（ステップＳ４００８）。
【０１３２】
そして、異常検知ＥＣＵ１１０は、監視対象データであるギア制御情報の現在値「リバース」、監視対象データであるギア制御情報の過去値「ドライブ」、比較対象データである速度制御情報の現在値「前進中」、比較対象データである速度制御情報の過去値「停車中」の４つを、図１１に示すルールテーブルを用いて、異常と判定する（ステップＳ４００９）。
【０１３３】
続いて、異常検知ＥＣＵ１１０は、異常と判定したので、車両保護処理として、監視対象データであるギア制御情報を含むメッセージの送信阻止処理を行う（ステップＳ４０１０）。異常検知ＥＣＵ１１０は、例えば、その監視対象データを含むメッセージであるデータフレームの受信中に、送信阻止処理としてエラーフレームをバス１５０に送信する。また、異常検知ＥＣＵ１１０は、車両保護処理として更に、外部通信装置１４０に、異常を示す情報を他の車両５００へと送信する異常通知送信処理を行わせるように指示する（ステップＳ４０１１）。これにより、外部通信装置１４０が、異常を示す情報を車両５００へ送信する。そして車両５００は、異常を示す情報を受信すると、例えばインストルメンタルパネル等を制御する一種のＥＣＵであるヘッドユニットで、警告通知を行う（ステップＳ４０１２）。ステップＳ４０１２では、ヘッドユニットは、例えば、インストルメンタルパネルに設けられたディスプレイの表示等を制御し、そのディスプレイの表示内容を、運転者に異常を知らせるための警告通知用表示に切り替える。
【０１３４】
［１．１３  異常検知ＥＣＵにおける処理］
図１８は、異常検知ＥＣＵ１１０により実行される処理の一例を示すフローチャートである。以下、同図に即して異常検知ＥＣＵ１１０の動作について説明する。
【０１３５】
異常検知ＥＣＵ１１０は、バス１５０に流れるメッセージであるデータフレームのＩＤフィールドまで受信してＩＤを確認する（ステップＳ１００）。
【０１３６】
次に異常検知ＥＣＵ１１０は、確認したＩＤが、ルール記憶部１１４で保持されるルールテーブルで示される監視対象データ又は比較対象データの種類を示すと予め規定されているＩＤであるか否かを判断し（ステップＳ１１０）、否定的に判断した場合には、その受信中のデータフレームを破棄して、処理を終える。ステップＳ１１０で肯定的に判断した場合には、異常検知ＥＣＵ１１０は、バス１５０上に現れるデータフレームのデータフィールドまで受信する（ステップＳ１２０）。ステップＳ１２０では、必ずしもデータフィールドの全てのビットを受信するまで待つ必要はなく、ルールテーブルに基づく判定を行うために必要なビットの値まで受信した時点で次に処理を進めて良い。
【０１３７】
次に異常検知ＥＣＵ１１０は、データ保存処理（図１９参照）により、受信中のデータフレームのデータフィールドが示す情報をデータテーブルに記録する（ステップＳ１３０）。
【０１３８】
続いて、異常検知ＥＣＵ１１０は、ルール記憶部１１４で保持されるルールテーブルを参照し、受信中のメッセージが監視対象データを含むデータフレームであるか否かを判断する（ステップＳ１４０）。そして、監視対象データを含むデータフレームであれば異常判定処理（図２０〜図２２参照）を行って、その受信中のデータフレームが正常であるか異常であるかを判定する（ステップＳ１５０）。異常検知ＥＣＵ１１０は、ステップＳ１４０で、監視対象データを含むデータフレームでないと判断した場合には、処理を終える。
【０１３９】
ステップＳ１５０での判定の後に、異常検知ＥＣＵ１１０は、異常判定処理での判定の結果が、正常であるか異常であるかを判断し（ステップＳ１６０）、異常である場合に限り、車両保護処理（図２３、図２４参照）を行う（ステップＳ１７０）。
【０１４０】
［１．１４  異常検知ＥＣＵ１１０におけるデータ保存処理］
図１９は、異常検知ＥＣＵ１１０におけるデータ保存処理の一例を示すフローチャートである。以下、同図に即してデータ保存処理を説明する。
【０１４１】
異常検知ＥＣＵ１１０は、受信中のデータフレームのデータフィールドが示す情報を、そのデータフレームのＩＤに対応する、データテーブルのデータとして保存する（ステップＳ１２１）。
【０１４２】
次に、異常検知ＥＣＵ１１０は、ステップＳ１２１で情報を保存した結果として、データテーブルのデータ数が一定数以上になったかどうかを判断し（ステップＳ１２２）、一定数以上になった場合に限って、最も古いデータを削除する（ステップＳ１２３）。この一定数は、例えば、異常判定処理で判定に用いられるデータを考慮して予め定められた数であり、例えば現在値と１つの過去値とを保存する場合では３となる。
【０１４３】
［１．１５  異常検知ＥＣＵ１１０における異常判定処理］
図２０、図２１、図２２は、異常検知ＥＣＵ１１０における異常判定処理を示すフローチャートであり、それぞれ、異常判定処理パターン１に係る異常判定処理、異常判定処理パターン２に係る異常判定処理、異常判定処理パターン３に係る異常判定処理を示す。
【０１４４】
図２０で示す異常判定処理パターン１に係る異常判定処理では、監視対象データの現在値及び過去値、並びに、比較対象データの現在値という３つの値を用いて、判定を行う。なお、図９のルールテーブルでは、監視対象データに対応する比較対象データは、速度制御情報だけであることとしたが、比較対象データが複数存在しても良い。例えば参照データを含む第３種メッセージ（つまり第１種メッセージ及び第２種メッセージと異なるＩＤを有するデータフレーム）におけるその参照データを、２つ目の比較対象データとして取り扱っても良い。図２０では、比較対象データが複数存在し得る場合に対応した異常判定処理の例を示している。以下、図２０に即して異常判定処理パターン１に係る異常判定処理を説明する。
【０１４５】
まず、異常検知ＥＣＵ１１０は、データ記憶部１１５におけるデータテーブルに監視対象データの過去値が存在するか否かを判断する（ステップＳ１４１）。異常検知ＥＣＵ１１０は、データテーブルに監視対象データの過去値が存在しなければ、異常判定処理を終了する。
【０１４６】
データテーブルに監視対象データの過去値が存在する場合には、異常検知ＥＣＵ１１０は、データテーブルの中で、未判定の比較対象データを選択する（ステップＳ１４２）。そして、異常検知ＥＣＵ１１０は、比較対象データが現在値つまり最新の状態における監視対象データの変化を判定するために、図９に示したルールテーブルを参照する（ステップＳ１４３）。
【０１４７】
次に異常検知ＥＣＵ１１０は、ルールテーブルに基づいて、監視対象データの変化が正常なものか否かを判定して（ステップＳ１４４）、否定的に判定した場合に、監視対象データを含むデータフレームが異常であると判定して、異常判定処理を終える（ステップＳ１４７）。
【０１４８】
ステップＳ１４４で、監視対象データの変化が正常なものと判断した場合に、異常検知ＥＣＵ１１０は、全ての比較対象データについてステップＳ１４４での判定を行ったか否かを判断する（ステップＳ１４５）。全ての比較対象データについて判定を行っていない場合には、異常検知ＥＣＵ１１０は、ステップＳ１４２での、比較対象データを選択する処理に戻る。また、全ての比較対象データについて判定を行った場合に、異常検知ＥＣＵ１１０は、監視対象データを含むデータフレームが正常であると判定して、異常判定処理を終える（ステップＳ１４６）。
【０１４９】
図２１で示す異常判定処理パターン２に係る異常判定処理では、監視対象データの現在値、並びに、比較対象データの現在値及び過去値という３つの値を用いて、判定を行う。なお、図１０のルールテーブルでは、監視対象データに対応する比較対象データは、速度制御情報だけであることとしたが、比較対象データが複数存在しても良い。例えば、バス１５０に接続されたいずれかのＥＣＵに周期的に送信される参照データを含む第３種メッセージにおけるその参照データを、２つ目の比較対象データとして取り扱っても良い。図２１では、比較対象データが複数存在し得る場合に対応した異常判定処理の例を示している。以下、図２１に即して異常判定処理パターン２に係る異常判定処理を説明する。なお、この異常判定処理パターン２に係る異常判定処理において、図２０で示した異常判定処理パターン１に係る異常判定処理と同様の処理ステップについては、図２１でも同じ符号を付しており、ここでは説明を適宜省略する。
【０１５０】
まず、異常検知ＥＣＵ１１０は、未判定の比較対象データを選択する（ステップＳ１４２）。
【０１５１】
次に、異常検知ＥＣＵ１１０は、データテーブルに比較対象データの過去値が存在するか否かを判断する（ステップＳ２４１）。異常検知ＥＣＵ１１０は、データテーブルに比較対象データの過去値が存在しなければ、ステップＳ１４５での判断に移る。ステップＳ２４１で、データテーブルに比較対象データの過去値が存在すると判断した場合には、異常検知ＥＣＵ１１０は、受信した監視対象データに対応した、図１０に示したルールテーブルを参照する（ステップＳ２４２）。
【０１５２】
次に異常検知ＥＣＵ１１０は、ルールテーブルに基づいて、比較対象データの変化が正常なものか否かを判定して（ステップＳ２４３）、否定的に判定した場合に、監視対象データを含むデータフレームが異常であると判定して、異常判定処理を終える（ステップＳ１４７）。
【０１５３】
ステップＳ２４３で、比較対象データの変化が正常なものと判断した場合に、異常検知ＥＣＵ１１０は、全ての比較対象データについてステップＳ２４３での判定を行ったか否かを判断する（ステップＳ１４５）。全ての比較対象データについて判定を行っていない場合には、異常検知ＥＣＵ１１０は、ステップＳ１４２での、比較対象データを選択する処理に戻る。また、全ての比較対象データについて判定を行った場合に、異常検知ＥＣＵ１１０は、監視対象データを含むデータフレームが正常であると判定して、異常判定処理を終える（ステップＳ１４６）。
【０１５４】
図２２で示す異常判定処理パターン３に係る異常判定処理では、監視対象データの現在値及び過去値、並びに、比較対象データの現在値及び過去値という４つの値を用いて、判定を行う。なお、図１１のルールテーブルでは、監視対象データに対応する比較対象データは、速度制御情報だけであることとしたが、比較対象データが複数存在しても良い。例えば参照データを含む第３種メッセージにおけるその参照データを、２つ目の比較対象データとして取り扱っても良い。図２２では、比較対象データが複数存在し得る場合に対応した異常判定処理の例を示している。以下、図２２に即して異常判定処理パターン３に係る異常判定処理を説明する。なお、この異常判定処理パターン３に係る異常判定処理において、図２０或いは図２１で示した異常判定処理と同様の処理ステップについては、図２２でも同じ符号を付しており、ここでは説明を適宜省略する。
【０１５５】
まず、異常検知ＥＣＵ１１０は、データテーブルに監視対象データの過去値が存在するか否かを判断する（ステップＳ１４１）。異常検知ＥＣＵ１１０は、データテーブルに監視対象データの過去値が存在しなければ、異常判定処理を終了する。
【０１５６】
データテーブルに監視対象データの過去値が存在する場合には、異常検知ＥＣＵ１１０は、データテーブルの中で、未判定の比較対象データを選択する（ステップＳ１４２）。
【０１５７】
次に、異常検知ＥＣＵ１１０は、データテーブルに比較対象データの過去値が存在するか否かを判断する（ステップＳ２４１）。異常検知ＥＣＵ１１０は、データテーブルに比較対象データの過去値が存在しなければ、ステップＳ１４５での判断に移る。ステップＳ２４１で、データテーブルに比較対象データの過去値が存在すると判断した場合には、異常検知ＥＣＵ１１０は、比較対象データの過去値から現在値への変化、つまり最新の比較対象データの変化に対応した、図１１に示したルールテーブルを参照する（ステップＳ３４１）。
【０１５８】
次に異常検知ＥＣＵ１１０は、ルールテーブルに基づいて、監視対象データの変化が正常なものか否かを判定して（ステップＳ１４４）、否定的に判定した場合に、監視対象データを含むデータフレームが異常であると判定して、異常判定処理を終える（ステップＳ１４７）。
【０１５９】
ステップＳ１４４で、監視対象データの変化が正常なものと判断した場合に、異常検知ＥＣＵ１１０は、全ての比較対象データについてステップＳ１４４での判定を行ったか否かを判断する（ステップＳ１４５）。全ての比較対象データについて判定を行っていない場合には、異常検知ＥＣＵ１１０は、ステップＳ１４２での、比較対象データを選択する処理に戻る。また、全ての比較対象データについて判定を行った場合に、異常検知ＥＣＵ１１０は、監視対象データを含むデータフレームが正常であると判定して、異常判定処理を終える（ステップＳ１４６）。
【０１６０】
［１．１６  異常検知ＥＣＵ１１０における車両保護処理］
図２３及び図２４のそれぞれは、異常検知ＥＣＵ１１０による車両保護処理の例を示す。
【０１６１】
図２３の例では、車両保護処理は、現在受信中のメッセージの送信阻止によって車両２００の安全を確保する例を示す。この例では、異常検知ＥＣＵ１１０が、バス１５０から受信中の監視対象データを含むメッセージを無効化する所定メッセージを送信する（ステップＳ１７１）。具体的には、所定メッセージは、エラーフレームである。
【０１６２】
図２４の例では、車両保護処理は、車両２００に異常が発生していることを、外部通信装置１４０を用いてサーバ４００に通知する例を示す。この例では、異常検知ＥＣＵ１１０が、外部通信装置１４０に指示することで、外部通信装置１４０から外部ネットワーク３００を介して異常の発生をサーバ４００に通知する（ステップＳ１７２）。ステップＳ１７２では、外部通信装置１４０が、車両２００の周囲に所在する他の車両に車車間通信によって異常を示す情報を送信しても良い。外部通信装置１４０は、異常を示す情報に、車両２００についての車両識別番号（ＶＩＮ：Vehicle Identification Number）、車台番号等を含ませて、サーバ４００に送信しても良い。サーバ４００は、車両２００から通知を受けて、他の車両に対して異常を示す情報の送信を行っても良い。サーバ４００は、例えば、車両２００から通知された車両識別番号、車台番号等に基づいて、これらと車種とを対応付けたリスト情報を参照する等によって、車両２００と同一の車種の車両を特定して、その同一の車種の車両に対して、異常を示す情報の送信を行うこととしても良い。なお、車種が同一の車両同士は、例えば、車載ネットワークの構成が概ね同一である。また、同一の車種の車両は、例えば車台番号における型式（つまり車両型式）が同一の車両であり、或いは、例えば車両識別番号における先頭からシリアル番号の前までの桁の値が同一の車両である。また、外部通信装置１４０が、車両２００と同一車種である車両に対して、異常を示す情報を送信することとしても良い。これらの異常の通知によって、車両２００以外の車両においても危険の回避等が可能となり得る。
【０１６３】
車両保護処理は、図２３及び図２４に示した各処理を組み合わせたものであっても良いし、これ以外の処理であっても良い。なお、車両２００は、異常検知ＥＣＵ１１０での異常判定処理により、メッセージに係る異常が発生していると判定された場合に、車両２００の外部に所在するサーバ４００、車両５００等に異常を通知する通知装置を備え得る。この車両２００における通知装置の一例が、外部通信装置１４０であるが、通知装置は、通信機能を有する装置に限られず、光、音等を発することで周囲の車両に注意を促す警報装置（例えば非常点滅表示灯の点灯制御を行う装置、警笛を鳴らす制御を行う装置等）であっても良い。
【０１６４】
［１．１７  異常の通知を受信した車両５００における警告通知］
図２５は、車両５００のヘッドユニットにおける警告通知の一例を示す図である。車両５００は、車両２００の異常検知ＥＣＵ１１０によって車両保護処理として、同一の車種に対して異常を示す情報の送信がなされた場合に、その情報を、直接又はサーバ４００経由で受信する。そして、車両５００は、ヘッドユニットで警告通知として、例えば図２５に示すような警告通知用表示をディスプレイに表示する。図２５の例では、車両５００と同じ車種の車両で異常が発生していることから、運転者に迅速に停車することを勧めるメッセージが警告通知用表示としてディスプレイに表示されている。これにより、同じ車種に対する攻撃に対する被害を未然に防止できる。なお、ヘッドユニットでの警告通知は、警告通知用表示のディスプレイへの表示の他、音声出力その他の方法で行われても良い。
【０１６５】
［１．１８  実施の形態１の効果］
本実施の形態に係る車載ネットワークシステム１００では、攻撃者が、車載ネットワークに接続する正規のＥＣＵから送信される周期と同様の周期で不正なメッセージを送信したとしても、受信した監視対象データと、比較対象データの最新の値としての現在値と、監視対象データの過去値及び比較対象データの過去値の少なくとも１つとに基づいてメッセージが異常であることを判定可能となる。そして、車載ネットワークシステム１００は、この判定結果に応じて攻撃に対処可能となる。また、車載ネットワークシステム１００を含む複数の車両及びサーバで構成される異常検知システム１０では、車両間での異常の発生の通知によって、攻撃の影響を抑えることが可能になる。
【０１６６】
（実施の形態２）
次に、本発明の実施の形態２として、車載ネットワークを流れるメッセージについての異常の検知が可能な車載ネットワークシステムを搭載する車両と、他の車両と、サーバとを含む異常検知システムについて、図面を用いて説明する。
【０１６７】
［２．１  異常検知システムの全体構成］
本発明の実施の形態２における異常検知システムの構成については、実施の形態１にて説明した異常検知システム１０の構成と同様であるため、ここではその説明を省略する。
【０１６８】
［２．２  車載ネットワークシステム２６００の構成］
図２６は、車載ネットワークシステム２６００の構成を示す。車載ネットワークシステム２６００は、ＣＡＮプロトコルに従って通信する通信システムの一例であり、制御装置、センサ、アクチュエータ、ユーザインタフェース装置等の各種機器が搭載された車両２００における通信システムである。車載ネットワークシステム２６００は、バス（ネットワークバス）を介してフレーム（メッセージとも称する）に係る通信を行う複数のＥＣＵを備え、異常検知方法を用いる。具体的には図２６に示すように車載ネットワークシステム２６００は、バス２６０５と、バス２６０５に接続された異常検知ＥＣＵ２６０１、ハンドル制御指示ＥＣＵ２６０２、ハンドル制御ＥＣＵ２６０３、及び、一種のＥＣＵである外部通信装置２６０４を含んで構成される。バス２６０５は、車載ネットワークの有線通信路であり、各ＥＣＵに接続される。なお、車載ネットワークシステム２６００には、異常検知ＥＣＵ２６０１、ハンドル制御指示ＥＣＵ２６０２、ハンドル制御ＥＣＵ２６０３、及び、外部通信装置２６０４以外にもいくつものＥＣＵが含まれ得るが、ここでは便宜上、主に図２６に示したＥＣＵに注目して説明を行う。
【０１６９】
各ＥＣＵは、例えば、プロセッサ（マイクロプロセッサ）、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ＲＯＭ、ＲＡＭ等であり、プロセッサにより実行されるプログラム（コンピュータプログラム）を記憶することができる。例えばプロセッサが、プログラムに従って動作することにより、ＥＣＵは各種機能を実現することになる。なお、コンピュータプログラムは、所定の機能を達成するために、プロセッサに対する指令を示す命令コードが複数個組み合わされて構成されたものである。ＥＣＵは、各種機器に接続され得る。
【０１７０】
各ＥＣＵは、ＣＡＮプロトコルに従って、バス２６０５を介してフレームの授受を行い得る。ＥＣＵ間で授受されるフレームにはデータフレームがある。データフレームは、例えば、車両の状態に関するデータ、車両に対して制御を指示するデータ等といった、車両の制御のために用いられるデータ等を含み得る。
【０１７１】
異常検知ＥＣＵ２６０１は、バス２６０５に接続され、車載ネットワークのバス２６０５に流れる第１種メッセージ、第２種メッセージ等を受信して、第１種メッセージが正常か異常かを判定し、判定の結果に基づいて所定の処理を行うＥＣＵである。異常検知ＥＣＵ２６０１は、第１種メッセージが正常か異常かの判定に、受信した第２種メッセージを用いる。第１種メッセージは、監視対象データを含むこととして定められた、所定の識別情報（ＩＤ）を有するメッセージである。また、第２種メッセージは、比較対象データを含むこととして定められた、第１種メッセージとは異なる識別情報（ＩＤ）を有するメッセージである。
【０１７２】
ハンドル制御指示ＥＣＵ２６０２は、例えば、駐車支援機能やレーンキープ機能等のハンドル操作を伴う先進運転者支援システム（ＡＤＡＳ：Advanced Driver Assistance System）を実現する場合に、一定の周期で、ハンドルを制御する指示（例えば、ハンドルを回転させる角度等）に関するハンドル制御指示情報を送信する。
【０１７３】
ハンドル制御ＥＣＵ２６０３は、例えばハンドルに接続されており、ハンドル制御指示ＥＣＵ２６０２が送信するハンドル制御指示情報を受信して、受信したハンドル制御指示情報に基づきハンドルを制御すると共に、一定の周期で、ハンドルの現在の状態（例えば、ハンドルが何度回転しているか等）に関するハンドル状態情報を送信する。
【０１７４】
外部通信装置２６０４は、外部ネットワーク３００に接続し、異常を示す情報等といった車両２００に関する情報を、車両２００の外部に送信する機能を有する。
【０１７５】
［２．３  異常検知ＥＣＵ２６０１の構成］
図２７は、異常検知ＥＣＵ２６０１の構成を示す。異常検知ＥＣＵ２６０１は、同図に示すように、判定部２７０１と、受信部２７０２と、送信部２７０３と、ルール記憶部２７０４と、データ記憶部２７０５とを含んで構成される。図２７に示した異常検知ＥＣＵ２６０１の各構成要素は、異常検知ＥＣＵ２６０１のメモリ等の記憶媒体、通信回路、メモリに格納されたプログラムを実行するプロセッサ等で実現され得る。
【０１７６】
判定部２７０１は、受信部２７０２が受信中のデータフレームと、データ記憶部２７０５に保持されて逐次更新されるデータテーブルにおけるデータ（図３４参照）と、ルール記憶部２７０４に保持されるルールテーブルが示すルール（図３３参照）とを用いて異常判定処理を行うことで、受信中のデータフレームが正常か異常かを判定する。判定部２７０１は、受信中のデータフレームが異常であると判定した場合には、後述する車両保護処理（図４０、図４１参照）を行う。判定部２７０１は、例えばプログラムを実行するプロセッサ等で実現され得る。
【０１７７】
受信部２７０２は、車載ネットワークシステム２６００内の各ＥＣＵから送信されてバス２６０５に現れるメッセージ（つまりデータフレーム）が、ルールテーブルの情報から、監視対象データの判定に必要な識別情報（ＩＤ）を有するメッセージであれば、そのメッセージを受信する。また、受信部２７０２は、受信したメッセージの内容をデータ記憶部２７０５が保持するデータテーブルに含ませるようにそのデータテーブルを更新する処理であるデータ保存処理（図３８参照）を行う。受信部２７０２は、通信回路等により実現され得る。
【０１７８】
送信部２７０３は、判定部２７０１の制御下で、判定部２７０１による判定の結果に応じて送信を行う。送信部２７０３は、判定部２７０１が受信中のデータフレームを異常と判定した場合に、例えば、このデータフレームの送信阻止処理として、このデータフレームを無効化する所定メッセージをバス２６０５に送信する。所定メッセージは、例えばエラーフレームである。また、例えば、送信部２７０３は、判定部２７０１が異常と判定した場合において、外部通信装置２６０４にサーバ４００或いは他の車両５００に対して、車両２００での異常の発生を通知させるべく、外部通信装置２６０４が受信するように予め定められた識別情報（ＩＤ）を有して異常を示す情報を含むメッセージを、バス２６０５に送信する。送信部２７０３は、通信回路等により実現され得る。
【０１７９】
記憶部つまりルール記憶部２７０４及びデータ記憶部２７０５は、例えば記憶媒体の一領域で実現される。
【０１８０】
ルール記憶部２７０４は、監視対象データと、比較対象データとの関係についてのルールテーブルを保持する。
【０１８１】
データ記憶部２７０５は、受信部２７０２により受信されたメッセージの識別情報（ＩＤ）に対応して、監視対象データ或いは比較対象データを含むメッセージの内容であるデータを含むデータテーブルを記憶する。
【０１８２】
［２．４  データフレームフォーマット］
ＣＡＮプロトコルに従ったネットワークで用いられるデータフレームについては、実施の形態１と同様であるため、ここではその説明を省略する。
【０１８３】
［２．５  エラーフレームフォーマット］
ＣＡＮプロトコルで規定されるエラーフレームのフォーマットについては、実施の形態１と同様であるため、ここではその説明を省略する。
【０１８４】
［２．６  ハンドル制御指示ＥＣＵ２６０２が送信するデータフレーム］
図２８は、ハンドル制御指示ＥＣＵ２６０２が送信する、ハンドル制御指示情報を含むデータフレームの一例を示す図である。この例では、ハンドル制御指示情報を含むデータフレームは、所定値「０ｘ１０」であるＩＤを有し、ＤＬＣが示すデータ長は３である。このデータフレームのデータフィールドにおけるデータがハンドル制御指示情報を示す。ハンドル制御指示情報に係るデータの１バイト目は、当該ハンドル制御指示が有効か、無効かを表し、２バイト目から３バイト目は、ハンドルの操舵指示角（ハンドルを回転させる角度の指示）を表す。
【０１８５】
図２９は、具体例としてのハンドル制御指示情報のデータ値の示す意味を、データの読み取り結果として表している。ハンドル制御指示情報に係るデータの１バイト目が０ｘ０１の場合は、当該ハンドル制御指示情報が有効であり、０ｘ０１以外の場合は、当該ハンドル制御指示が無効であることを意味する。ここで、ハンドル制御指示情報が「有効」とは、当該ハンドル制御指示情報を受信したハンドル制御ＥＣＵ２６０３が、当該ハンドル制御指示情報に従いハンドルを制御することを意味し、「無効」とは、ハンドル制御ＥＣＵ２６０３が、当該ハンドル制御指示情報には従わずハンドルを制御しないことを意味する。
【０１８６】
更に、ハンドル制御指示情報に係るデータの２バイト目から３バイト目が操舵指示角を示す。操舵指示角とは、ハンドルを何度傾けた状態にさせるか（言い換えればハンドルを何度まで回転させるか）を示し、操舵指示角が「右方向に４５度」の場合、右方向に４５度だけ回転させた状態までハンドルを動かし、「左方向に４５度」の場合、左方向に４５度だけ回転させた状態までハンドルを動かすことを意味する。ここでは、車両が直進している時のハンドルの角度を基準として０度とする。
【０１８７】
図２９に例示したデータフレームのデータは、１バイト目が０ｘ０１であり、２バイト目から３バイト目が０ｘ０２、０ｘＦＤであるので、当該ハンドル制御指示情報を受信した異常検知ＥＣＵ２６０１及びハンドル制御ＥＣＵ２６０３は、このデータフレームのハンドル制御指示情報を「制御指示が有効」であり、「ハンドルを右方向に４５度まで回転させる」として読み取る。
【０１８８】
ここで、２バイト目から３バイト目が示す操舵指示角は、１６進表記を１０進表記に変換し、その変換した値と「７２０」との差分がハンドルを回転させる際の目標角度となる。例えば、変換した値が「７２０」よりも大きい場合は右方向の回転を意味し、小さい場合は左方向の回転を意味する。また、変換した値と「７２０」との差分値が目標とするハンドルの角度を示す。具体的には、変換した値が「７６５」の場合、ハンドルを右方向に４５度となるまで回転させ、変換した値が「６７５」の場合、ハンドルを左方向に４５度となるまで回転させることを意味する。
【０１８９】
［２．７  ハンドル制御ＥＣＵ２６０３が送信するデータフレーム］
図３０は、ハンドル制御ＥＣＵ２６０３が送信する、ハンドル状態情報を含むデータフレームの一例を示す図である。この例では、ハンドル状態情報を含むデータフレームは、ハンドル制御指示情報を含むデータフレームとは異なる値「０ｘ２０」であるＩＤを有し、ＤＬＣが示すデータ長は２である。このデータフレームのデータフィールドにおけるデータがハンドル状態情報を示す。ハンドル状態情報に係るデータの１バイト目から２バイト目は、ハンドルの操舵状態角（現在ハンドルが何度傾いているかの状態）を表す。
【０１９０】
図３１は、具体例としてのハンドル状態情報のデータ値の示す意味を、データの読み取り結果として表している。ハンドル状態情報に係るデータの１バイト目から２バイト目が操舵状態角を示す。操舵状態角とは、現在のハンドルの回転角（ハンドルが何度傾いているかの状態）を示し、操舵状態角が「右方向に４０度」の場合、現在のハンドルの状態は右方向に４０度だけ傾いた状態であり、「左方向に４０度」の場合、現在のハンドルの状態は左方向に４０度だけ傾いた状態であることを意味する。ここでは、車両が直進している時のハンドルの角度を基準として０度とする。
【０１９１】
図３１に例示したデータフレームのデータは、１バイト目から２バイト目が０ｘ０２、０ｘＦ８であるので、当該ハンドル状態情報を受信する異常検知ＥＣＵ２６０１、ハンドル制御指示ＥＣＵ２６０２は、このデータフレームのハンドル状態情報を「現在のハンドルは右方向に４０度だけ傾いた状態である」として読み取る。
【０１９２】
ここで、１バイト目から２バイト目が示す操舵状態角は、１６進表記を１０進表記に変換し、その変換した値と「７２０」との差分が現在のハンドルの傾き度合いとなる。例えば、変換した値が「７２０」よりも大きい場合は右方向に傾いていることを意味し、小さい場合は左方向に傾いていることを意味する。また、その差分値がハンドルの傾いている角度を示す。具体的には、変換した値が「７６０」の場合、現在のハンドルは右方向に４０度だけ傾いており、変換した値が「６８０」の場合、現在のハンドルは左方向に４０度だけ傾いていることを意味する。
【０１９３】
［２．８  ルールテーブルのルール］
図３２は、ルール記憶部２７０４が保持するルールテーブルで規定されるルールの概念を示す図である。
【０１９４】
車載ネットワークのバス２６０５に流される、所定値のＩＤを有するメッセージである第３種メッセージにおける特定のビット列であるデータの値を、値Ｃとし、所定値と異なる特定値のＩＤを有するメッセージである第４種メッセージにおける特定のビット列であるデータの値を、値Ｄとして、ルールを説明する。第３種メッセージと第４種メッセージとがそれぞれ周期的に逐次送信される場合に、時の経過に応じて、バス２６０５に現れる各メッセージが示す値Ｃと値Ｄという２つの値について、正常状態において一定の規則に従い値の変化が生じるのであれば、この値の差分値をルールとして規定する。ここで、第３種メッセージの値Ｃを監視対象データとし、第４種メッセージの値Ｄを比較対象データとする。第３種メッセージが正常であるか否かを判定する場合、第３種メッセージに含まれる監視対象データ（値Ｃ）と、第４種メッセージに含まれる比較対象データ（値Ｄ）の差分値を算出し、算出した差分値が予め定められた一定範囲内か否かを判定することで、第３種メッセージが正常であるか否かを判定する。
【０１９５】
［２．９  ルールテーブルの具体例］
図３３は、ルール記憶部２７０４が保持するルールテーブルの例を示す。この例では、監視対象データはハンドル制御指示情報であり、比較対象データはハンドル状態情報であるとしている。即ち、監視対象データは、ハンドル制御指示情報のデータフィールドに、つまり、所定値（図３３の例では「０ｘ１０」）をＩＤフィールドに含むデータフレームのデータフィールドに含まれる。また、比較対象データは、ハンドル状態情報のデータフィールドに、つまり、所定値とは異なる特定値（図３３の例では「０ｘ２０」）をＩＤフィールドに含むデータフレームのデータフィールドに含まれる。また、ここでのルールは、「監視対象データと比較対象データの値の差分値が３０以内の場合」を正常としている。
【０１９６】
具体例として、異常検知ＥＣＵ２６０１が、図２８に示すハンドル制御指示情報と図３０に示すハンドル状態情報とを受信した場合の異常判定処理の一例を示す。異常検知ＥＣＵ２６０１は、ハンドル制御指示情報（図２８）を受信した際、最後に受信したハンドル状態情報（図３０）を用いて、当該ハンドル制御指示情報が正常か否かの判定を行う。図２８の例における監視対象データは「０ｘ０２、０ｘＦＤ」であり（１０進表記では７６５）、図３０の例における比較対象データは「０ｘ０２、０ｘＦ８」であり（１０進表記では７６０）、その差分値は「５」である。よって、ハンドル制御指示情報とハンドル状態情報との差分はルールで規定されている「３０」以内であり、異常検知ＥＣＵ２６０１は、受信したハンドル制御指示情報を正常であると判定する。
【０１９７】
［２．１０  データテーブル］
図３４は、データ記憶部２７０５が保持するデータテーブルの一例を示す。データテーブルは、第３種メッセージの監視対象データと、第４種メッセージの比較対象データとのそれぞれについて、例えばメッセージの受信順に記録したテーブルである。このデータテーブルは、異常検知ＥＣＵ２６０１においてデータ保存処理（図３８参照）が行われることにより逐次更新される。
【０１９８】
図３４の例のデータテーブルは、第３種メッセージの監視対象データとしてのハンドル制御指示情報（ＩＤ＝０ｘ１０）の現在値と過去値とを含み、第４種メッセージの比較対象データとしてのハンドル状態情報（ＩＤ＝０ｘ２０）の現在値と過去値とを含んでいる。
【０１９９】
［２．１１  異常検知ＥＣＵ等の処理シーケンス］
以下、図３５、図３６を用いて、車載ネットワークシステム２６００における異常検知ＥＣＵ２６０１の動作について説明する。
【０２００】
図３５は、バス２６０５を流れるメッセージに異常がない場合の異常検知ＥＣＵ２６０１等の処理シーケンスの一例を示す。ここでは、異常検知ＥＣＵ２６０１は、図３３に示したルールテーブルを用いて異常判定処理を行うものとする。
【０２０１】
ハンドル制御ＥＣＵ２６０３は、ハンドル状態情報「０ｘ０２、０ｘＦ８」を含むメッセージをバス２６０５へ送信する（ステップＳ３５０１）。このメッセージを受信した異常検知ＥＣＵ２６０１は、そのメッセージのハンドル状態情報から「操舵状態角」を読み取ってデータテーブルに保存する（ステップＳ３５０２）。
【０２０２】
ハンドル制御指示ＥＣＵ２６０２は、ハンドル制御指示情報「０ｘ０１、０ｘ０２、０ｘＦＤ」を含むメッセージをバス２６０５へ送信する（ステップＳ３５０３）。このメッセージを受信した異常検知ＥＣＵ２６０１は、そのメッセージのハンドル制御指示情報から「操舵指示角」を読み取ってデータテーブルに保存する（ステップＳ３５０４）。
【０２０３】
そして、異常検知ＥＣＵ２６０１は、監視対象データであるハンドル制御指示情報の現在値「操舵指示角」、比較対象データであるハンドル状態情報の過去値「操舵状態角」の２つを、図３３に示すルールテーブルを用いて、正常と判定する（ステップＳ３５０５）。ここで、過去値とは、現在に最も近い過去の値である。言い換えれば、定期的に値を受信している場合、現在値がｍ回目に受信したときの値である場合、過去値はｍ−１回目に受信したときの値である。
【０２０４】
図３６は、バス２６０５に不正なメッセージが流れた場合の異常検知ＥＣＵ２６０１等の処理シーケンスの一例を示す。ここでは、異常検知ＥＣＵ２６０１は、図３３に示したルールテーブルを用いて異常判定処理を行うものとする。なお、不正なメッセージは、例えば、攻撃者がハンドル制御指示ＥＣＵ２６０２を支配した状態で、ハンドル制御指示ＥＣＵ２６０２から送信され得る。また、攻撃者は、例えば、ハンドル制御指示ＥＣＵ２６０２による正規のメッセージの送信を止めさせて代わりに不正なメッセージを送信し得る。
【０２０５】
ハンドル制御ＥＣＵ２６０３は、ハンドル状態情報「０ｘ０２、０ｘＦ８」を含むメッセージをバス２６０５へ送信する（ステップＳ３６０１）。このメッセージを受信した異常検知ＥＣＵ２６０１は、そのメッセージのハンドル状態情報から「操舵状態角」を読み取ってデータテーブルに保存する（ステップＳ３６０２）。
【０２０６】
ハンドル制御指示ＥＣＵ２６０２は、ハンドル制御指示情報「０ｘ０１、０ｘ０３、０ｘ２０」を含むメッセージをバス２６０５へ送信する（ステップＳ３６０３）。このメッセージを受信した異常検知ＥＣＵ２６０１は、そのメッセージのハンドル制御指示情報から「操舵指示角」を読み取ってデータテーブルに保存する（ステップＳ３６０４）。
【０２０７】
そして、異常検知ＥＣＵ２６０１は、監視対象データであるハンドル制御指示情報の現在値「操舵指示角」、比較対象データであるハンドル状態情報の過去値「操舵状態角」の２つを、図３３に示すルールテーブルを用いて、異常と判定する（ステップＳ３６０５）。この判定は、例えば、その監視対象データを含むメッセージであるデータフレームの受信中で最後尾のビットをバス２６０５から受信する前に完了する。
【０２０８】
続いて、異常検知ＥＣＵ２６０１は、異常と判定したので、車両保護処理として、監視対象データであるハンドル制御指示情報を含むメッセージの送信阻止処理を行う（ステップＳ３６０６）。異常検知ＥＣＵ２６０１は、監視対象データを含むメッセージの送信阻止処理として、例えば、その監視対象データを含むメッセージであるデータフレームの受信中で最後尾のビットをバス２６０５から受信する前に、エラーフレームをバス２６０５に送信する。このエラーフレームにより、受信中であったデータフレームは、バス２６０５上で上書きされて無効化され、バス２６０５に接続された各ＥＣＵはその元のデータフレームを完全には受信できなくなる。また、異常検知ＥＣＵ２６０１は、車両保護処理として更に、外部通信装置２６０４に、異常を示す情報をサーバ４００へと送信する異常通知送信処理を行わせるように指示する（ステップＳ３６０７）。この指示は、例えば、外部通信装置２６０４が受信するように予め定められたＩＤを有して異常を示す情報を含むデータフレームである異常通知メッセージをバス２６０５に送信することで行われる。
【０２０９】
［２．１２  異常検知ＥＣＵにおける処理］
図３７は、異常検知ＥＣＵ２６０１により実行される処理の一例を示すフローチャートである。以下、同図に即して異常検知ＥＣＵ２６０１の動作について説明する。
【０２１０】
異常検知ＥＣＵ２６０１は、バス２６０５に流れるメッセージであるデータフレームのＩＤフィールドまで受信してＩＤを確認する（ステップＳ３７０１）。
【０２１１】
次に異常検知ＥＣＵ２６０１は、確認したＩＤが、ルール記憶部２７０４で保持されるルールテーブルで示される監視対象データ又は比較対象データの種類を示すと予め規定されているＩＤであるか否かを判断し（ステップＳ３７０２）、否定的に判断した場合には、その受信中のデータフレームを破棄して、処理を終える。ステップＳ３７０２で肯定的に判断した場合には、異常検知ＥＣＵ２６０１は、バス２６０５上に現れるデータフレームのデータフィールドまで受信する（ステップＳ３７０３）。ステップＳ３７０３では、必ずしもデータフィールドの全てのビットを受信するまで待つ必要はなく、ルールテーブルに基づく判定を行うために必要なビットの値まで受信した時点で次に処理を進めて良い。
【０２１２】
次に異常検知ＥＣＵ２６０１は、データ保存処理（図３８参照）により、受信中のデータフレームのデータフィールドが示す情報をデータテーブルに記録する（ステップＳ３７０４）。
【０２１３】
続いて、異常検知ＥＣＵ２６０１は、ルール記憶部２７０４で保持されるルールテーブルを参照し、受信中のメッセージが監視対象データを含むデータフレームであるか否かを判断する（ステップＳ３７０５）。そして、監視対象データを含むデータフレームであれば異常判定処理（図３９参照）を行って、その受信中のデータフレームが正常であるか異常であるかを判定する（ステップＳ３７０６）。異常検知ＥＣＵ２６０１は、ステップＳ３７０５で、監視対象データを含むデータフレームでないと判断した場合には、処理を終える。
【０２１４】
ステップＳ３７０６での判定の後に、異常検知ＥＣＵ２６０１は、異常判定処理での判定の結果が、正常であるか異常であるかを判断し（ステップＳ３７０７）、異常である場合に限り、車両保護処理（図４０、図４１参照）を行う（ステップＳ３７０８）。
【０２１５】
［２．１３  異常検知ＥＣＵ２６０１におけるデータ保存処理］
図３８は、異常検知ＥＣＵ２６０１におけるデータ保存処理の一例を示すフローチャートである。以下、同図に即してデータ保存処理を説明する。
【０２１６】
異常検知ＥＣＵ２６０１は、受信中のデータフレームのデータフィールドが示す情報を、そのデータフレームのＩＤに対応する、データテーブルのデータとして保存する（ステップＳ３８０１）。
【０２１７】
次に、異常検知ＥＣＵ２６０１は、ステップＳ３８０１で情報を保存した結果として、データテーブルのデータ数が一定数以上になったかどうかを判断し（ステップＳ３８０２）、一定数以上になった場合に限って、最も古いデータを削除する（ステップＳ３８０３）。この一定数は、例えば、異常判定処理で判定に用いられるデータを考慮して予め定められた数であり、例えば現在値と２つの過去値とを保存する場合では４となる。
【０２１８】
［２．１４  異常検知ＥＣＵ２６０１における異常判定処理］
図３９は、異常検知ＥＣＵ２６０１における異常判定処理を示すフローチャートである。以下、同図に即して異常判定処理を説明する。
【０２１９】
図３９で示す異常判定処理では、監視対象データの現在値及び比較対象データの過去値という２つの値を用いて、判定を行う。なお、図３３のルールテーブルでは、監視対象データに対応する比較対象データは、ハンドル状態情報だけであることとしたが、比較対象データが複数存在しても良い。例えば参照データを含む第５種メッセージ（つまり第３種メッセージ及び第４種メッセージと異なるＩＤを有するデータフレーム）におけるその参照データを、２つ目の比較対象データとして取り扱っても良い。図３９では、比較対象データが複数存在し得る場合に対応した異常判定処理の例を示している。
【０２２０】
まず、異常検知ＥＣＵ２６０１は、データ記憶部２７０５におけるデータテーブルから未判定の比較対象データを選択する（ステップＳ３９０１）。そして、異常検知ＥＣＵ２６０１は、ルール記憶部２７０４におけるルールテーブルから、監視対象データに対応したルールテーブル（図３３に示したルールテーブル）を読み込む（ステップＳ３９０２）。
【０２２１】
次に異常検知ＥＣＵ２６０１は、ルールテーブルに基づいて、監視対象データの変化（比較対象データとの差分値）が正常なものか否かを判定して（ステップＳ３９０３）、否定的に判定した場合に、監視対象データを含むデータフレームが異常であると判定して、異常判定処理を終える（ステップＳ３９０６）。
【０２２２】
ステップＳ３９０３で、監視対象データの変化が正常なものと判断した場合に、異常検知ＥＣＵ２６０１は、全ての比較対象データについてステップＳ３９０３での判定を行ったか否かを判断する（ステップＳ３９０４）。全ての比較対象データについて判定を行っていない場合には、異常検知ＥＣＵ２６０１は、ステップＳ３９０１での、比較対象データを選択する処理に戻る。また、全ての比較対象データについて判定を行った場合に、異常検知ＥＣＵ２６０１は、監視対象データを含むデータフレームが正常であると判定して、異常判定処理を終える（ステップＳ３９０５）。
【０２２３】
［２．１５  異常検知ＥＣＵ２６０１における車両保護処理］
図４０及び図４１のそれぞれは、異常検知ＥＣＵ２６０１による車両保護処理の例を示す。
【０２２４】
図４０の例では、車両保護処理は、現在受信中のメッセージの送信阻止によって車両２００の安全を確保する例を示す。この例では、異常検知ＥＣＵ２６０１が、バス２６０５から受信中の監視対象データを含むメッセージを無効化する所定メッセージを送信する（ステップＳ４００１）。具体的には、所定メッセージは、エラーフレームである。
【０２２５】
図４１の例では、車両保護処理は、車両２００に異常が発生していることを、外部通信装置２６０４を用いてサーバ４００に通知する例を示す。この例では、異常検知ＥＣＵ２６０１が、外部通信装置２６０４に指示することで、外部通信装置２６０４から外部ネットワーク３００を介して異常の発生をサーバ４００に通知する（ステップＳ４１０１）。ステップＳ４１０１では、外部通信装置２６０４が、車両２００の周囲に所在する他の車両に車車間通信によって異常を示す情報を送信しても良い。外部通信装置２６０４は、異常を示す情報に、車両２００についての車両識別番号（ＶＩＮ：Vehicle Identification Number）、車台番号等を含ませて、サーバ４００に送信しても良い。サーバ４００は、車両２００から通知を受けて、他の車両に対して異常を示す情報の送信を行っても良い。サーバ４００は、例えば、車両２００から通知された車両識別番号、車台番号等に基づいて、これらと車種とを対応付けたリスト情報を参照する等によって、車両２００と同一の車種の車両を特定して、その同一の車種の車両に対して、異常を示す情報の送信を行うこととしても良い。なお、車種が同一の車両同士は、例えば、車載ネットワークの構成が概ね同一である。また、同一の車種の車両は、例えば車台番号における型式（つまり車両型式）が同一の車両であり、或いは、例えば車両識別番号における先頭からシリアル番号の前までの桁の値が同一の車両である。また、外部通信装置２６０４が、車両２００と同一車種である車両に対して、異常を示す情報を送信することとしても良い。これらの異常の通知によって、車両２００以外の車両においても危険の回避等が可能となり得る。
【０２２６】
車両保護処理は、図４０及び図４１に示した各処理を組み合わせたものであっても良いし、これ以外の処理であっても良い。なお、車両２００は、異常検知ＥＣＵ２６０１での異常判定処理により、メッセージに係る異常が発生していると判定された場合に、車両２００の外部に所在するサーバ４００、車両５００等に異常を通知する通知装置を備え得る。この車両２００における通知装置の一例が、外部通信装置２６０４であるが、通知装置は、通信機能を有する装置に限られず、光、音等を発することで周囲の車両に注意を促す警報装置（例えば非常点滅表示灯の点灯制御を行う装置、警笛を鳴らす制御を行う装置等）であっても良い。
【０２２７】
［２．１６  異常の通知を受信した車両５００における警告通知］
車両５００のヘッドユニットにおける警告通知については、実施の形態１と同様であるため、ここではその説明を省略する。
【０２２８】
［２．１７  実施の形態２の効果］
本実施の形態に係る車載ネットワークシステム２６００では、攻撃者が、車載ネットワークに接続する正規のＥＣＵから送信される周期と同様の周期で不正なメッセージを送信したとしても、受信した監視対象データの現在値と、比較対象データの過去値に基づいてメッセージが正常であるか否かを判定可能となる。そして、車載ネットワークシステム２６００は、この判定結果に応じて攻撃に対処可能となる。また、車載ネットワークシステム２６００を含む複数の車両及びサーバで構成される異常検知システム１０では、車両間での異常の発生の通知によって、攻撃の影響を抑えることが可能になる。
【０２２９】
（他の実施の形態）
以上のように、本発明に係る技術の例示として実施の形態１を説明した。しかしながら、本発明に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本発明の一実施態様に含まれる。
【０２３０】
（１）上記実施の形態では、判定部１１１（２７０１）と、ルール記憶部１１４（２７０４）と、データ記憶部１１５（２７０５）とは、複数のＥＣＵがフレームの授受を行うためのバス１５０（２６０５）に接続された異常検知ＥＣＵ１１０（２６０１）の構成要素として説明したが、その他の１つ又は複数のＥＣＵの構成要素としても良い。上述した異常検知ＥＣＵ１１０（２６０１）は、車載ネットワークシステムにおいてバスに接続されたＥＣＵであれば、異常検知専用のＥＣＵである必要はなく、異常検知及び対処とは異なる機能を併せ持っても構わない。また、例えば異常検知ＥＣＵ１１０（２６０１）における１つ以上の構成要素を他のＥＣＵに移動させても良い。異常検知ＥＣＵ１１０（２６０１）における異常判定処理、車両保護処理等をどのＥＣＵが行っても良い。例えば、データフレームを受信しそのデータフレームの内容に応じて車両の制御を行うＥＣＵ等が、上述した異常検知ＥＣＵ１１０（２６０１）と同様の構成要素を有することとしても良い。また、例えば、車載ネットワークを複数のバスで構成した場合におけるバス間でのデータフレームの転送を行うゲートウェイＥＣＵに、異常検知ＥＣＵ１１０（２６０１）の構成要素を含ませても良い。これは、ゲートウェイＥＣＵが、各バスの状態を監視できるので、有用である。この異常検知ＥＣＵ１１０（２６０１）の構成を含むゲートウェイＥＣＵでは、異常と判定したデータフレームによって車両が不正に制御されることを抑止するために、エラーフレームによるその異常なデータフレームの無効化の他に、異常と判定したデータフレームのバス間での転送を抑止する等の処理を行うことができる。また、上述した異常検知ＥＣＵ１１０（２６０１）の構成要素を、秘密鍵の管理を行う鍵管理マスタＥＣＵの構成要素として含めても良い。
【０２３１】
（２）上記実施の形態では、ＣＡＮプロトコルにおけるデータフレームを標準ＩＤフォーマットで記述しているが、拡張ＩＤフォーマットであっても良く、データフレームの識別情報であるＩＤは、拡張ＩＤフォーマットでの拡張ＩＤ等であっても良い。
【０２３２】
（３）上記実施の形態では、異常検知ＥＣＵ１１０（２６０１）が、データテーブルに受信したデータの履歴を保持して、現在値と過去値とを異常判定処理での判定に用いる例を示したが、より多数の履歴を保持して判定に活用しても良い。また、予め定められたデータフレームの送信周期を考慮して、受信していない時間のデータを補間して、データテーブル等に保持しておいても良い。
【０２３３】
（４）上記実施の形態では、データ記憶部１１５（２７０５）が、受信されたデータフレームの内容として、データフィールドの値を保持する例を示したが、データフィールドの内容から抽出した複数の値を保持しても良いし、更に受信時刻その他の情報を保持しても良い。
【０２３４】
（５）上記実施の形態では、異常判定処理で判定に用いられるルールとして、ギア制御情報と速度制御情報との関係、つまりギアポジションと車速との関係性に関するルールを示したが、ギアポジション、車速等は一例に過ぎない。判定に用いられるルールは、センサにより得られたデータ、制御指示を示すデータその他の任意のデータ間の関係性を判定基準として規定するものであっても良い。監視対象データ或いは比較対象データは、車速、ギアポジション等の他、例えば、車輪の回転速度、ヨーレート、加速度、操舵角、アクセルペダル開度、制動レベル、エンジンの回転数、モータの回転数、イグニッションスイッチの状態、ハンドル（ステアリングホイール）の操舵トルク、前方障害物の有無、後方障害物の有無、前方障害物までの距離、後方障害物までの距離、左右の区画線の認識状態、左右の区画線までの距離等であり得る。また、例えば、監視対象データ或いは比較対象データは、車両の状態を示すデータに限られず、車両の制御用のパラメータ等を示すデータであっても良い。例えば、車両が先進運転者支援システム（ＡＤＡＳ：Advanced Driver Assistance System）の一機能としての駐車支援機能を有し、異常検知ＥＣＵ１１０が、駐車支援機能を対象とした異常検知を行う場合には、自動操舵のメッセージ内のデータを監視対象データとし、車速、ギアポジション等のデータを比較対象データとしても良い。また、上記実施の形態では、異常検知ＥＣＵ１１０が、異常判定処理として、バス１５０から時間的に前後関係を有して受信した同一種類の複数のデータの変化等と、他の種類のデータの値との関係性に基づいて、判定を行う例を示した。この他に、異常検知ＥＣＵ１１０は、更に、相違する種類のデータ同士の関係性に基づいて、一方の種類のデータを含むメッセージが異常であるか否かを判定することとしても良い。後退駐車時に自動操舵を行う駐車支援機能では、安全上の理由等から自動操舵を行う際の後退速度に上限が設けられている。このため、例えば、異常検知ＥＣＵ１１０は、受信したデータが示す車速が上限速度を超過している場合、受信したデータが示すギアポジションが「リバース」でない場合等において、自動操舵の制御指示のデータを含むメッセージを受信するとそのメッセージを異常と判定することができる。
【０２３５】
また例えば、異常検知ＥＣＵ１１０が、ＡＤＡＳの一機能としての車線維持支援機能を対象に異常検知を行う場合には、自動操舵の制御指示に係るメッセージ内のデータを監視対象データとし、車速、車両の左右の区画線の認識状態、左右の区画線までの距離等を示すデータを比較対象データとしても良い。車両が車線から逸脱しないように自動操舵を行う車線維持支援機能は、安全上の理由等から自動操舵を行う際の前進速度に下限が設けられている。このため、例えば、異常検知ＥＣＵ１１０は、受信したデータが示す車速が下限速度まで到達していない場合、車両が走行する車線を把握する上で必要となる左右の区画線を認識できていない場合、車両が左右いずれの区画線にも一定距離内に接近していない場合等において、自動操舵のメッセージを受信するとそのメッセージを異常と判定することができる。
【０２３６】
また例えば、異常検知ＥＣＵ１１０が、ＡＤＡＳの一機能としての衝突回避支援機能に係る自動緊急ブレーキを対象に異常検知を行う場合には、自動制動の制御指示に係るメッセージ内のデータを監視対象データとし、車速、障害物の有無、障害物までの距離等を示すデータを比較対象データとしても良い。障害物との衝突を回避又は衝突の影響を緩和するように自動制動を行う自動緊急ブレーキは、安全上の理由等から自動制動を行う際の車速に上限や下限が設けられている。このため、例えば、異常検知ＥＣＵ１１０は、受信したデータが示す車速が上限から下限までの範囲に収まっていない場合、回避又は緩和する衝突の対象である障害物が存在しない場合、障害物が一定距離内に接近していない場合等において、自動制動のメッセージを受信するとそのメッセージを異常と判定することができる。
【０２３７】
また例えば、異常検知ＥＣＵ１１０が、ＡＤＡＳの一機能としての自動追従走行機能を対象に異常検知を行う場合には、自動加減速の制御指示に係るメッセージ内のデータを監視対象データとし、現在の車速、目標の車速、先行車両の有無、先行車両までの距離等を比較対象データとしても良い。目標の速度を上限とする範囲内で先行車両との距離を保つように自動加減速を行う自動追従走行機能は、安全上の理由等から自動加減速を行う際の前進速度に下限が設けられている。このため、例えば、異常検知ＥＣＵ１１０は、受信したデータが示す現在の車速が下限速度まで到達していない状態で自動加速又は自動減速を指示するメッセージを受信した場合、追従する先行車両が存在せず、かつ現在の車速が目標の車速まで到達していない状態で自動減速を指示するメッセージを受信した場合、先行車両までの距離が一定距離を超えて離れ、かつ、現在の車速が目標の車速まで到達していない状態で自動減速を指示するメッセージを受信した場合、現在の車速が目標の車速まで到達している状態で自動加速を指示するメッセージを受信した場合、先行車両が一定距離内に接近している状態で自動加速を指示するメッセージを受信した場合等において、自動加減速に係るメッセージを異常と判定することができる。
【０２３８】
（６）上記実施の形態では、異常検知ＥＣＵ１１０が、監視対象データと比較対象データとの関係性に基づいて監視対象データを含むメッセージが正常か異常かを判定する例を示したが、判定を連鎖的に行うようにしても良い。例えば、異常検知ＥＣＵ１１０は、監視対象データに係るメッセージの判定に用いる比較対象データを含むメッセージが正常か異常かを判定することとしても良い。例えば、上記実施の形態では、異常検知ＥＣＵ１１０は、速度制御情報が正しいことを前提に、ギア制御情報を含むメッセージが異常か否かを判定しているが、速度制御情報が不正である可能性も考えられる。そこで、異常検知ＥＣＵ１１０は、例えば、速度制御情報と、ハイブリッド車における駆動方式の情報との関係性に基づいて、例えばモータで駆動している状態において、時速５０ｋｍの車速に変化した速度制御情報を含むメッセージが異常であることと判定しても良い。また、異常検知ＥＣＵ１１０は、更に駆動方式の情報が不正かどうかを、例えばバッテリー残量の減少量等を利用して判定しても良い。
【０２３９】
例えば、車載ネットワークシステム１００で、第１種メッセージに含まれる監視対象データ及び第２種メッセージに含まれる比較対象データとは異なる種類の参照データを含む第３種メッセージを周期的に送信するＥＣＵを含む場合においては、異常検知ＥＣＵ１１０は、次のように変形しても良い。受信部１１２は、更に第３種メッセージを逐次受信する。判定部１１１は、更に、受信部１１２によって受信された第２種メッセージが正常であるか否かを、その第２種メッセージの内容と、その第２種メッセージの受信時において受信部１１２によって最後に受信されていた第３種メッセージの内容と、受信部１１２によってその第２種メッセージより過去に受信された第２種メッセージの内容、及び、受信部１１２によってその最後に受信された第３種メッセージより過去に受信された第３種メッセージの内容のうちのいずれかとに基づいて判別し、判定部１１１は、受信部１１２によって受信された第１種メッセージが正常であるか異常であるかを、その第１種メッセージの内容と、その第１種メッセージの受信時において受信部１１２によって最後に受信されて正常と判別された第２種メッセージの内容と、受信部１１２によってその第１種メッセージより過去に受信された第１種メッセージの内容、及び、受信部１１２によってその最後に受信されて正常と判別された第２種メッセージより過去に受信され正常と判別された第２種メッセージの内容のうちのいずれかとに基づいて、判定することとしても良い。このように監視対象データの判定に用いられる比較対象データが正常か異常かを第３種メッセージの内容である参照データに基づいて判別する等の連鎖的な判定を行うと、攻撃に対する耐性が一層高まり得る。このため、各種データ間の関係性を把握して攻撃しなければ攻撃に成功しなくなり、攻撃コストを増加させ得る。
【０２４０】
また例えば、上記変形例（５）で示した、異常検知ＥＣＵ１１０が駐車支援機能を対象に異常検知を行う例では、後退駐車のための自動操舵が行われる前に、停車し、ギアポジションが「リバース」へ変化し、上限速度を超えない範囲で車両が後退する。このため、車速等の速度制御情報、ギアポジション等のギア制御情報、自動操舵の制御指示等といった各種メッセージ内のデータのいずれかを、その時々で監視対象データと比較対象データとして扱い、車両が停車中にギアポジションが「リバース」へ変化したこと、ギアポジションが「リバース」の状態で車両が後退中へ変化したこと、車両の後退中は上限速度を超えないこと等を順に充足するかを判定し、順に充足していない場合には、自動操舵に係るメッセージは異常と判定しても良い。同様に、上記変形例（５）で示した車線維持支援機能、自動緊急ブレーキ、自動追従走行機能のそれぞれについても、それぞれの自動制御が行われる前に必ず発生する事象のシーケンスについて、順に充足するかを判定し、順に充足していない場合には、自動制御のメッセージを異常と判定しても良い。
【０２４１】
（７）上記実施の形態では、異常検知ＥＣＵ１１０の判定部１１１は、ルールテーブルに基づいてメッセージが正常か異常かの判定を行うこととしたが、ルールテーブルはその判定のための基準の一例に過ぎず、判定部１１１は、予め定めた所定基準を満たすか否かに応じてその判定を行えば良い。所定基準は、例えば、時間的に前後関係を有して受信された同一種類のデータを含む複数のメッセージそれぞれのデータと、そのメッセージとは別の種類のデータを含むメッセージのデータとを含むデータ群の関係性に関する条件を規定する。例えば、判定部１１１は、受信部１１２によって第１種メッセージが受信された際に、その第１種メッセージが正常であるか異常であるかを、その第１種メッセージに含まれる第１監視対象データと、受信部１１２によって最後に受信された第２種メッセージに含まれる第１比較対象データと、受信部１１２によってその第１種メッセージより１回前に受信された第１種メッセージに含まれる第２監視対象データとが、予め定められた所定基準Ａを満たすか否かに応じて判定しても良い。また、例えば、判定部１１１は、受信部１１２によって第１種メッセージが受信された際に、その第１種メッセージが正常であるか異常であるかを、その第１種メッセージに含まれる第１監視対象データと、受信部１１２によって最後に受信された第２種メッセージに含まれる第１比較対象データと、受信部１１２によって最後の１回前に受信された第２種メッセージに含まれる第２比較対象データとが、予め定められた所定基準Ｂを満たすか否かに応じて判定することとしても良い。また、例えば、判定部１１１は、受信部１１２によって第１種メッセージが受信された際に、その第１種メッセージが正常であるか異常であるかを、その第１種メッセージに含まれる第１監視対象データと、受信部１１２によって最後に受信された第２種メッセージに含まれる第１比較対象データと、受信部１１２によってその第１種メッセージより１回前に受信された第１種メッセージに含まれる第２監視対象データと、受信部１１２によって最後の１回前に受信された第２種メッセージに含まれる第２比較対象データとが、予め定められた所定基準Ｃを満たすか否かに応じて判定することとしても良い。
【０２４２】
また、判定部１１１は、第２種メッセージに加えて、周期的に送信される第３種メッセージを利用して、監視対象データを含むメッセージが正常か異常かの判定を行っても良い。例えば、判定部１１１は、更に、受信部１１２によって受信された第１種メッセージが正常であるか異常であるかを、上述した所定基準Ａ〜Ｃのいずれかを満たすか否かに加えて、その第１種メッセージの受信時において受信部１１２によって最後に受信されていた第３種メッセージの内容と、受信部１１２によってその最後に受信された第３種メッセージより過去に受信された第３種メッセージの内容とにも基づいて、判定することとしても良い。
【０２４３】
（８）上記実施の形態では、判定部１１１は、監視対象データの現在値と比較対象データの現在値と監視対象データの１回前に受信された過去値及び比較対象データの１回前に受信された過去値の少なくとも１つとに基づいて判定する例を示したが、１回前に受信された過去値の代わりに、更に過去に受信されたデータの値を用いて判定を行っても良い。例えば、判定部１１１は、受信部１１２によって第１種メッセージが受信された際に、その第１種メッセージが正常であるか異常であるかを、その第１種メッセージに含まれる第１監視対象データと、受信部１１２によって最後に受信された第２種メッセージに含まれる第１比較対象データと、受信部１１２によって、その第１種メッセージの受信時より前において最後に受信された、第１監視対象データとは異なる値の第２監視対象データを含む第１種メッセージにおけるその第２監視対象データとが、予め定められた所定基準Ｄを満たすか否かに応じて判定することとしても良い。また、例えば、判定部１１１は、受信部１１２によって第１種メッセージが受信された際に、その第１種メッセージが正常であるか異常であるかを、その第１種メッセージに含まれる第１監視対象データと、受信部１１２によって最後に受信された第２種メッセージに含まれる第１比較対象データと、受信部１１２によって、その最後に受信された第２種メッセージの受信時より前において最後に受信された、第１比較対象データとは異なる値の第２比較対象データを含む第２種メッセージにおけるその第２比較対象データとが、所定基準Ｅを満たすか否かに応じて判定することとしても良い。また、例えば、判定部１１１は、受信部１１２によって第１種メッセージが受信された際に、その第１種メッセージが正常であるか異常であるかを、その第１種メッセージに含まれる第１監視対象データと、受信部１１２によって最後に受信された第２種メッセージに含まれる第１比較対象データと、受信部１１２によって、その第１種メッセージの受信時より前において最後に受信された、その第１監視対象データとは異なる値の第２監視対象データを含む第１種メッセージにおけるその第２監視対象データと、受信部１１２によって、その最後に受信された第２種メッセージの受信時より前において最後に受信された、その第１比較対象データとは異なる値の第２比較対象データを含む第２種メッセージにおけるその第２比較対象データとが、所定基準Ｆを満たすか否かに応じて判定することとしても良い。
【０２４４】
（９）上記実施の形態では、異常検知ＥＣＵが、車両に搭載され、車両の制御のための通信を行う車載ネットワークシステムに含まれる例を示したが、車両以外の制御対象の制御のためのネットワークシステムに含まれるものであっても良い。車両以外の制御対象は、例えば、ロボット、航空機、船舶、機械等である。
【０２４５】
（１０）上記の実施の形態では、車載ネットワークでＣＡＮプロトコルに従って、データフレームの伝送が行われるものとしたが、ＣＡＮプロトコルは、オートメーションシステム内の組み込みシステム等に用いられるＣＡＮＯｐｅｎ、或いは、ＴＴＣＡＮ（Time-Triggered CAN）、ＣＡＮＦＤ（CAN with Flexible Data Rate）等の派生的なプロトコルを包含する広義の意味のものと扱われることとしても良い。また、車載ネットワークは、ＣＡＮプロトコル以外のプロトコルを用いるものであっても良い。車両の状態に関する情報を含むメッセージ、車両に対して制御を指示するメッセージ等の伝送がなされる車載ネットワークのプロトコルとして、例えばＬＩＮ（Local Interconnect Network）、ＭＯＳＴ（登録商標）（Media Oriented Systems Transport）、ＦｌｅｘＲａｙ（登録商標）、Ｅｔｈｅｒｎｅｔ（登録商標）等を用いても良い。また、これらのプロトコルを用いたネットワークをサブネットワークとして、複数種類のプロトコルに係るサブネットワークを組み合わせて、車載ネットワークを構成しても良い。また、Ｅｔｈｅｒｎｅｔ（登録商標）プロトコルは、ＩＥＥＥ８０２．１に係るＥｔｈｅｒｎｅｔ（登録商標）ＡＶＢ（Audio Video Bridging）、或いは、ＩＥＥＥ８０２．１に係るＥｔｈｅｒｎｅｔ（登録商標）ＴＳＮ（Time Sensitive Networking）、Ｅｔｈｅｒｎｅｔ（登録商標）／ＩＰ（Industrial Protocol）、ＥｔｈｅｒＣＡＴ（登録商標）（Ethernet（登録商標） for Control Automation Technology）等の派生的なプロトコルを包含する広義の意味のものと扱われることとしても良い。なお、車載ネットワークの通信路は、ネットワークバス或いはその他のワイヤ、光ファイバ等で構成される有線通信路であっても良いし、その他の通信路であっても良い。
【０２４６】
（１１）上記実施の形態で示したＥＣＵ等の各装置は、メモリ、プロセッサ等の他に、ハードディスクユニット、ディスプレイユニット、キーボード、マウス等を備えるものであっても良い。また、外部通信装置１４０（２６０４）は、バス１５０（２６０５）に接続されずに、異常検知ＥＣＵ１１０（２６０１）と通信路で接続され、メモリ、プロセッサ、通信回路等を備える装置であっても良い。また、上記実施の形態で示したＥＣＵ等の各装置は、メモリに記憶されたプログラムがプロセッサにより実行されてソフトウェア的にその各装置の機能を実現するものであっても良いし、専用のハードウェア（デジタル回路等）によりプログラムを用いずにその機能を実現するものであっても良い。また、その各装置内の各構成要素の機能分担は変更可能である。また、異常検知ＥＣＵ１１０（２６０１）における判定部１１１（２７０１）、受信部１１２（２７０２）、送信部１１３（２７０３）、並びに、記憶部（ルール記憶部１１４（２７０４）及びデータ記憶部１１５（２７０５））は、それぞれ、例えば、判定回路、受信回路、送信回路、記憶回路といった集積回路として実現され得る。
【０２４７】
（１２）上記実施の形態における各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Large Scale Integration：大規模集積回路）から構成されているとしても良い。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ等を含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。また、上記各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全部を含むように１チップ化されても良い。また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現しても良い。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。更には、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
【０２４８】
（１３）上記各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしても良い。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ等から構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしても良い。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしても良い。
【０２４９】
（１４）本発明の一態様としては、例えば図１４〜図２４（図３５〜図４１）等に示す処理手順の全部又は一部を含む異常検知方法であるとしても良い。例えば、異常検知方法は、監視対象データを含む第１種メッセージを周期的に送信するＥＣＵと、比較対象データを含む第２種メッセージを周期的に送信するＥＣＵとを含む、車載ネットワークの通信路を介して通信を行う複数のＥＣＵを備える車載ネットワークシステムで用いられる異常検知方法であって、車載ネットワークの通信路から第１種メッセージ及び第２種メッセージを逐次受信する受信ステップ（例えばステップＳ１００、Ｓ１２０（Ｓ３７０１、Ｓ３７０３））と、受信ステップで受信された第１種メッセージが正常であるか異常であるかを、その第１種メッセージの内容と、その第１種メッセージの受信時において受信ステップで最後に受信されていた第２種メッセージの内容と、受信ステップでその第１種メッセージより過去に受信された第１種メッセージの内容、及び、受信ステップでその最後に受信された第２種メッセージより過去に受信された第２種メッセージの内容のうちのいずれかとに基づいて、判定する判定ステップ（例えばステップＳ１５０（Ｓ３７０６））と、判定ステップによる判定の結果に応じて送信を行う送信ステップ（例えばステップＳ１７１、Ｓ１７２（Ｓ４００１、Ｓ４１０１））とを含む方法である。送信ステップでは、例えば、エラーフレームの送信、異常を示す情報の車外への送信等がなされ得る。また、本発明の一態様としては、この方法をコンピュータにより実現するプログラム（コンピュータプログラム）であるとしても良いし、前記コンピュータプログラムからなるデジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Blu-ray（登録商標）Disc）、半導体メモリ等に記録したものとしても良い。また、これらの記録媒体に記録されている前記デジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしても良い。また、本発明の一態様としては、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしても良い。また、前記プログラム若しくは前記デジタル信号を前記記録媒体に記録して移送することにより、又は、前記プログラム若しくは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしても良い。
【０２５０】
（１５）上記実施の形態では、監視対象データが含まれる情報をハンドル制御指示情報とし、比較対象データが含まれる情報をハンドル状態情報として説明したが、本発明はこの構成に限定されない。監視対象データが含まれる情報を、フットブレーキやエンジンブレーキ等を利用して車両の速度を減速させる減速制御指示情報とし、比較対象データが含まれる情報を、車速情報、車輪の回転速度情報、ブレーキペダルの踏み具合、エンジンの回転数やモータの回転数等、車両の速度に関係する状態を示す情報であっても良い。更に、監視対象データが含まれる情報を、アクセル等を利用して車両の速度を加速させる加速制御指示情報とし、比較対象データが含まれる情報を、車速情報、車輪の回転速度情報、アクセルペダルの開度、エンジンの回転数やモータの回転数等、車両の速度に関係する状態を示す情報であっても良い。
【０２５１】
また、車載ネットワークシステム１００で、第１種メッセージに含まれる監視対象データ及び第２種メッセージに含まれる比較対象データとは異なる種類の参照データを含む第３種メッセージを周期的に送信するＥＣＵを含む場合においては、異常検知ＥＣＵ２６０１は、次のように変形しても良い。受信部２７０２は、更に第３種メッセージを逐次受信する。判定部２７０１は、更に、受信部２７０２によって受信された第２種メッセージが正常であるか否かを、その第２種メッセージの内容と、その第２種メッセージの受信時において受信部２７０２によって最後に受信されていた第３種メッセージの内容と、受信部２７０２によってその第２種メッセージより過去に受信された第２種メッセージの内容、及び、受信部２７０２によってその最後に受信された第３種メッセージより過去に受信された第３種メッセージの内容のうちのいずれかとに基づいて判定し、判定部２７０１は、受信部２７０２によって受信された第１種メッセージが正常であるか異常であるかを、その第１種メッセージの内容と、その第１種メッセージの受信時において受信部２７０２によって最後に受信されて正常と判定された第２種メッセージの内容と、受信部２７０２によってその第１種メッセージより過去に受信された第１種メッセージの内容、及び、受信部２７０２によってその最後に受信されて正常と判定された第２種メッセージより過去に受信され正常と判定された第２種メッセージの内容のうちのいずれかとに基づいて、判定することとしても良い。このように監視対象データの判定に用いられる比較対象データが正常か異常かを第３種メッセージの内容である参照データに基づいて判定する等の連鎖的な判定を行うと、攻撃に対する耐性が一層高まり得る。このため、各種データ間の関係性を把握して攻撃しなければ攻撃に成功しなくなり、攻撃コストを増加させ得る。
【０２５２】
（１６）上記実施の形態及び上記変形例で示した各構成要素及び機能を任意に組み合わせることで実現される形態も本発明の範囲に含まれる。
【産業上の利用可能性】
【０２５３】
本発明は、車載ネットワークを含む車載ネットワークシステムに利用可能である。
【符号の説明】
【０２５４】
１０  異常検知システム
１００、２６００  車載ネットワークシステム
１１０、２６０１  異常検知ＥＣＵ
１１１、２７０１  判定部
１１２、２７０２  受信部
１１３、２７０３  送信部
１１４、２７０４  ルール記憶部
１１５、２７０５  データ記憶部
１２０  ギア制御ＥＣＵ
１３０  速度制御ＥＣＵ
１４０、２６０４  外部通信装置
１５０、２６０５  バス
２００、５００  車両
３００  外部ネットワーク
４００  サーバ
２６０２  ハンドル制御指示ＥＣＵ
２６０３  ハンドル制御ＥＣＵ
【図１】
2018170754.tif 000003
【図２】
2018170754.tif 000004
【図３】
2018170754.tif 000005
【図４】
2018170754.tif 000006
【図５】
2018170754.tif 000007
【図６】
2018170754.tif 000008
【図６Ａ】
2018170754.tif 000009
【図７】
2018170754.tif 000010
【図７Ａ】
2018170754.tif 000011
【図８】
2018170754.tif 000012
【図９】
2018170754.tif 000013
【図１０】
2018170754.tif 000014
【図１１】
2018170754.tif 000015
【図１２】
2018170754.tif 000016
【図１３】
2018170754.tif 000017
【図１４】
2018170754.tif 000018
【図１５】
2018170754.tif 000019
【図１６】
2018170754.tif 000020
【図１７】
2018170754.tif 000021
【図１８】
2018170754.tif 000022
【図１９】
2018170754.tif 000023
【図２０】
2018170754.tif 000024
【図２１】
2018170754.tif 000025
【図２２】
2018170754.tif 000026
【図２３】
2018170754.tif 000027
【図２４】
2018170754.tif 000028
【図２５】
2018170754.tif 000029
【図２６】
2018170754.tif 000030
【図２７】
2018170754.tif 000031
【図２８】
2018170754.tif 000032
【図２９】
2018170754.tif 000033
【図３０】
2018170754.tif 000034
【図３１】
2018170754.tif 000035
【図３２】
2018170754.tif 000036
【図３３】
2018170754.tif 000037
【図３４】
2018170754.tif 000038
【図３５】
2018170754.tif 000039
【図３６】
2018170754.tif 000040
【図３７】
2018170754.tif 000041
【図３８】
2018170754.tif 000042
【図３９】
2018170754.tif 000043
【図４０】
2018170754.tif 000044
【図４１】
2018170754.tif 000045