(57)【要約】【課題】効率的な不正検知のための不正検知電子制御ユニット（ＥＣＵ）を提供する。【解決手段】複数のＥＣＵが通信に用いるネットワークに接続されて不正検知処理を行う不正検知ＥＣＵユニットは、ネットワークを搭載する車両の状態に基づいて、ネットワークからのデータフレームの受信中に、不正検知処理タイミングを決定する不正検知処理要求部１４２と、不正検知処理要求部１４２により決定された不正検知処理タイミングでデータフレームについて不正検知処理を行う不正検知処理部１５４とを備える。【選択図】図４
2020039177.tif 000002
【特許請求の範囲】
【請求項１】
複数の電子制御ユニットが通信に用いるネットワークに接続されて不正検知処理を行う不正検知電子制御ユニットであって、
前記ネットワークを搭載する車両の状態に基づいて、前記ネットワークからのデータフレームの受信中に、不正検知処理タイミングを決定する不正検知処理要求部と、
前記不正検知処理要求部により決定された前記不正検知処理タイミングで前記データフレームについて前記不正検知処理を行う不正検知処理部とを備える
不正検知電子制御ユニット。
【請求項２】
前記不正検知処理部は、前記車両の状態が停車中である場合、前記データフレームについて前記不正検知処理を行わない
請求項１記載の不正検知電子制御ユニット。
【請求項３】
前記不正検知処理要求部により決定された前記不正検知処理タイミングは、前記データフレームのデータフィールド受信以後である
請求項１記載の不正検知電子制御ユニット。
【請求項４】
前記不正検知処理要求部により決定された前記不正検知処理タイミングは、前記データフレームのデータフィールドの先頭から所定数バイト受信以後である
請求項１記載の不正検知電子制御ユニット。
【請求項５】
前記不正検知処理要求部により決定された前記不正検知処理タイミングは、前記データフレームの受信完了以後である
請求項１記載の不正検知電子制御ユニット。
【請求項６】
前記不正検知電子制御ユニットは、
プログラムを実行するマイクロプロセッサを含む半導体集積回路であるマイコン部と、
前記マイコン部に接続され、前記不正検知処理要求部としての機能を実現する半導体集積回路であるコントローラ部とを備え、
前記マイクロプロセッサは、前記プログラムの実行により割り込み要求信号に対応して前記不正検知処理を行うことで、前記不正検知処理部としての機能を実現し、
前記不正検知処理要求部は、決定した前記不正検知処理タイミングで前記マイクロプロセッサへと前記割り込み要求信号を送出する
請求項１記載の不正検知電子制御ユニット。
【請求項７】
前記不正検知処理部は、前記不正検知処理において不正を検知した場合に、前記複数の電子制御ユニットのうちの少なくとも１つの電子制御ユニットにエラーを通知する
請求項１記載の不正検知電子制御ユニット。
【請求項８】
前記不正検知処理部は、前記不正検知処理において不正を検知した場合に、不正なデータフレームに関する情報を記録する
請求項１記載の不正検知電子制御ユニット。
【請求項９】
前記不正検知処理部は、前記不正検知処理において不正を検知した場合に、不正を報知する
請求項１記載の不正検知電子制御ユニット。
【請求項１０】
前記不正検知処理部は、前記不正検知処理において不正を検知した場合に、不正を外部サーバへ送信する
請求項１記載の不正検知電子制御ユニット。
【請求項１１】
ネットワークを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムであって、
前記ネットワークを搭載する車両の状態に基づいて、前記ネットワークからのデータフレームの受信中に、不正検知処理タイミングを決定する不正検知処理要求部と、
前記不正検知処理要求部により決定された前記不正検知処理タイミングで前記データフレームについて不正検知処理を行う不正検知処理部とを備える
車載ネットワークシステム。
【請求項１２】
ネットワークを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムにおいて用いられる不正検知方法であって、
前記ネットワークを搭載する車両の状態に基づいて、前記ネットワークからのデータフレームの受信中に、不正検知処理タイミングを決定し、
決定した前記不正検知処理タイミングで前記データフレームについて不正検知処理を行う
不正検知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、電子制御ユニットが通信を行う車載ネットワークにおいて送信された不正なフレームを検知する技術に関する。
【背景技術】
【０００２】
近年、自動車の中のシステムには、電子制御ユニット（ＥＣＵ：Electronic Control Unit）と呼ばれる装置が多数配置されている。これらのＥＣＵをつなぐネットワークは車載ネットワークと呼ばれる。車載ネットワークには、多数の規格が存在する。その中でも最も主流な車載ネットワークの一つに、ＩＳＯ  １１８９８−１で規定されているＣＡＮ（Controller Area Network）という規格が存在する。
【０００３】
ＣＡＮでは、通信路は２本のバスで構成され、バスに接続されているＥＣＵはノードと呼ばれる。バスに接続されている各ノードは、フレームと呼ばれるメッセージを送受信する。フレームを送信する送信ノードは、２本のバスに電圧をかけ、バス間で電位差を発生させることによって、レセシブと呼ばれる「１」の値と、ドミナントと呼ばれる「０」の値を送信する。複数の送信ノードが全く同一のタイミングで、レセシブとドミナントを送信した場合は、ドミナントが優先されて送信される。受信ノードは、受け取ったフレームのフォーマットに異常がある場合には、エラーフレームと呼ばれるフレームを送信する。エラーフレームとは、ドミナントを６ｂｉｔ連続して送信することで、送信ノードや他の受信ノードにフレームの異常を通知するものである。
【０００４】
またＣＡＮでは送信先や送信元を指す識別子は存在せず、送信ノードはフレーム毎にＩＤを付けて送信し（つまりバスに信号を送出し）、各受信ノードは予め定められたＩＤのフレームのみを受信する（つまりバスから信号を読み取る）。また、ＣＳＭＡ／ＣＡ（Carrier Sense Multiple Access/Collision Avoidance）方式を採用しており、複数ノードの同時送信時にはメッセージＩＤによる調停が行われ、メッセージＩＤの値が小さいフレームが優先的に送信される。
【０００５】
ＣＡＮの車載ネットワークシステムについては、攻撃者がバスにアクセスして不正なフレームを送信することでＥＣＵを不正に制御するといった脅威が存在し、セキュリティ対策が検討されている。
【０００６】
例えば特許文献１に記載された車載ネットワーク監視装置は、ＣＡＮのバスに流れるフレームを監視し、不正フレームを検知した場合に警告情報を送信する。そして、警告情報を受信したＥＣＵは不正フレームによる制御を禁止する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−１３１９０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本開示は、不正なフレームの効率的な検知のための技術を提供する。
【課題を解決するための手段】
【０００９】
上記課題を解決するために本開示の一態様に係る不正検知電子制御ユニットは、複数の電子制御ユニットが通信に用いるネットワークに接続されて不正検知処理を行う不正検知電子制御ユニットであって、前記ネットワークを搭載する車両の状態に基づいて、前記ネットワークからのデータフレームの受信中、不正検知処理タイミングを決定する不正検知処理要求部と、前記不正検知処理要求部により決定された前記不正検知処理タイミングで前記データフレームについて前記不正検知処理を行う不正検知処理部とを備える不正検知電子制御ユニットである。
【００１０】
また、上記課題を解決するために本開示の一態様に係る車載ネットワークシステムは、ネットワークを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムであって、前記ネットワークを搭載する車両の状態に基づいて、前記ネットワークからのデータフレームの受信中に、不正検知処理タイミングを決定する不正検知処理要求部と、前記不正検知処理要求部により決定された前記不正検知処理タイミングで前記データフレームについて不正検知処理を行う不正検知処理部とを備える車載ネットワークシステムである。
【００１１】
また、上記課題を解決するために本開示の一態様に係る不正検知方法は、ネットワークを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムにおいて用いられる不正検知方法であって、前記ネットワークを搭載する車両の状態に基づいて、前記ネットワークからのデータフレームの受信中に、不正検知処理タイミングを決定し、決定した前記不正検知処理タイミングで前記データフレームについて不正検知処理を行う不正検知方法である。
【発明の効果】
【００１２】
本開示によれば、セキュリティの確保のために、ネットワークで送信される各フレームに対して一律に監視を行うのではなく、ネットワークを搭載する車両の状態に基づいて、ネットワークのデータフレームの受信中に決定されたタイミングで不正検知処理を行うため、不正なフレームの効率的な検知が実現され得る。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施の形態１に係る車載ネットワークシステムの全体構成を示す図である。
【図２】図２は、ＣＡＮプロトコルで規定されるデータフレームのフォーマットを示す図である。
【図３】図３は、ＣＡＮプロトコルで規定されるエラーフレームのフォーマットを示す図である。
【図４】図４は、実施の形態１に係る不正検知ＥＣＵの構成図である。
【図５】図５は、実施の形態１に係る不正検知ＥＣＵの不正検知処理タイミング保持部に格納される対応情報の一例を示す図である。
【図６】図６は、実施の形態１に係る不正検知ＥＣＵの不正検知ルール保持部に格納される不正検知ルールの一例を示す図である。
【図７】図７は、実施の形態１に係るＥＣＵの構成図である。
【図８】図８は、実施の形態１に係る不正検知ＥＣＵのデータフレーム受信時の処理シーケンスの一例を示す図である。
【図９】図９は、実施の形態１に係る不正検知ＥＣＵのデータフレーム受信時の処理を示すフローチャートである。
【図１０】図１０は、実施の形態２に係る車載ネットワークシステムの全体構成を示す図である。
【図１１】図１１は、実施の形態２に係る不正検知ＥＣＵの構成図である。
【図１２】図１２は、実施の形態２に係る不正検知ＥＣＵが用いる不正検知処理タイミング特定用情報の一例を示す図である。
【図１３】図１３は、実施の形態２に係る不正検知ＥＣＵが監視レベルの決定のために用いるテーブルを例示する図である。
【図１４】図１４は、実施の形態２に係る不正検知ＥＣＵの不正状態保持部に保持される不正状態情報の一例を示す図である。
【図１５】図１５は、実施の形態２に係る不正検知ＥＣＵの車状態保持部に保持される車両状態情報の一例を示す図である。
【図１６】図１６は、実施の形態２に係る不正検知ＥＣＵの監視レベル保持部に格納される監視レベル情報の一例を示す図である。
【図１７】図１７は、実施の形態２に係る不正検知ＥＣＵの動作の変化（車両の状態変化に伴う変化）を例示する図である。
【図１８】図１８は、実施の形態２に係る不正検知ＥＣＵの動作の変化（不正の検知回数の増加に伴う変化）を例示する図である。
【図１９】図１９は、実施の形態２に係る不正検知ＥＣＵのデータフレーム受信時の処理を示すフローチャートである。
【図２０】図２０は、実施の形態２に係る不正検知ＥＣＵの監視レベル決定部が行う処理を示すフローチャートである。
【発明を実施するための形態】
【００１４】
（本発明の基礎となった知見）
ところで、不正なフレームによる脅威に対処する監視を過度に行うことで、監視装置を含む車載ネットワークシステムの消費電力が過度に増大することは好ましくない。
【００１５】
そこで、本開示は、車載ネットワークシステムのセキュリティを確保した上で、消費電力の増大を防止すべく、不正なフレームの送信を検知する不正検知処理を効率的に実行し得るＥＣＵである不正検知電子制御ユニット（不正検知ＥＣＵ）を提供する。また、本開示は、その効率的に不正検知処理を行う不正検知ＥＣＵを備える車載ネットワークシステム、及び、その車載ネットワークシステムにおいて効率的に不正なフレームを検知するために用いられる不正検知方法を提供する。
【００１６】
本開示の一態様に係る不正検知電子制御ユニットは、ＣＡＮ（Controller Area Network）プロトコルに従って通信を行う複数の電子制御ユニットが通信に用いるバスに接続されて不正検知処理を行う不正検知電子制御ユニットであって、前記バスから得たデータフレームのＩＤに基づいて不正検知処理タイミングを決定する不正検知処理要求部と、前記不正検知処理要求部により決定された前記不正検知処理タイミングで前記データフレームについて前記不正検知処理を行う不正検知処理部とを備える不正検知電子制御ユニットである。これにより、データフレームのＩＤに基づくタイミングで不正検知処理を行うため、不正なフレームの効率的な検知が実現され得る。
【００１７】
また、前記不正検知電子制御ユニットは、プログラムを実行するマイクロプロセッサを含む半導体集積回路であるマイコン部と、前記マイコン部に接続され、前記不正検知処理要求部としての機能を実現する半導体集積回路であるコントローラ部とを備え、前記マイクロプロセッサは、前記プログラムの実行により割り込み要求信号に対応して前記不正検知処理を行うことで、前記不正検知処理部としての機能を実現し、前記不正検知処理要求部は、決定した前記不正検知処理タイミングで前記マイクロプロセッサへと前記割り込み要求信号を送出することとしても良い。これにより、不正検知処理タイミングが到来したら割り込み要求信号によりマイコン部のプロセッサに通知されるため、プロセッサは割り込み要求信号が入力されるまでは、不正検知処理を実行せず、例えば低消費電力状態（スリープ状態）等になり得る。従って、比較的消費電力を抑えてセキュリティの確保を実現し得る。
【００１８】
また、前記不正検知電子制御ユニットは、１つ以上のＩＤそれぞれについてタイミングを対応付けた対応情報を保持する不正検知処理タイミング保持部を備え、前記不正検知処理要求部は、前記バスから得たデータフレームの前記ＩＤと前記対応情報において対応付けたタイミングを前記不正検知処理タイミングとして前記決定を行うこととしても良い。これにより、セキュリティ上、重要なデータフレームのＩＤと重要性の低いデータフレームのＩＤとで異なる不正検知処理タイミングを対応情報に定めておくことができ、重要性に応じて効率的に不正なフレームを検知できるようになる。
【００１９】
また、前記対応情報は、１つ以上の前記ＩＤそれぞれについてデータフレーム中の１つ又は複数の特定フィールドの受信タイミングを前記タイミングとして対応付けており、前記不正検知電子制御ユニットは、前記不正検知処理部が前記特定フィールドの受信タイミングで行う前記不正検知処理において不正を検知した場合に、前記バスにエラーフレームを送出することとしても良い。また、前記１つ又は複数の特定フィールドのうちの１つは、ＩＤフィールド、ＤＬＣ（Data Length Code）のフィールド及びデータフィールドのうちのいずれかであることとしても良い。これらにより、例えば、セキュリティ上、重要なデータフレームのＩＤについては、特定フィールド（例えばＩＤフィールド、ＤＬＣのフィールド、データフィールド等）の受信タイミングで不正検知処理を行って不正が検知されるとエラーフレームの送出により、不正なフレームに対応したＥＣＵの制御等を阻止することが可能となる。
【００２０】
また、前記不正検知電子制御ユニットは、前記対応情報に係る前記複数のＩＤそれぞれについて、当該ＩＤを含むデータフレームについて既に行われた前記不正検知処理での不正の検知回数を示すように更新される不正状態情報を保持する不正状態保持部を備え、前記不正検知処理タイミング保持部は、前記対応情報を、前記複数のＩＤそれぞれについて、前記不正状態情報における当該ＩＤに係る前記不正の検知回数が多い程、多くの前記特定フィールドの受信タイミングを対応付けるように更新することとしても良い。これにより、不正の検知回数が多くなった場合に監視頻度を高めるので、例えば不正への対応を迅速化することが可能となる。
【００２１】
また、前記不正検知処理要求部は、既に行われた前記不正検知処理での不正の検知結果に応じて前記不正検知処理タイミングの前記決定を行うこととしても良い。これにより、不正の検知回数等を不正検知処理タイミングに反映させ得るので、例えば一定数以上の不正があった場合にのみ監視頻度を高める等といった、効率的な監視（つまり不正検知処理の実行）が可能となる。
【００２２】
また、前記不正検知処理要求部は、前記バスを搭載する車両の状態に応じて前記不正検知処理タイミングの前記決定を行うこととしても良い。これにより、車両の状態との関係で特定のＩＤを含むデータフレームのセキュリティ上の重要性が変化するような場合において、不正なフレームの効率的な検知が実現され得る。
【００２３】
また、前記不正検知処理要求部は、前記データフレームのＩＤが第１値であれば前記データフレームの受信中のタイミングを前記不正検知処理タイミングとして前記決定を行い、前記データフレームのＩＤが前記第１値と異なる第２値であれば前記データフレームの受信完了以後のタイミングを前記不正検知処理タイミングとして前記決定を行い、前記不正検知電子制御ユニットは、前記不正検知処理部が前記データフレームの受信中のタイミングで行う前記不正検知処理において不正を検知した場合に、前記バスにエラーフレームを送出することとしても良い。これにより、例えば、不正を迅速に検知して阻止すべきか、不正について網羅的な検査を行うべきか等の不正検知の必要性がデータフレームのＩＤ毎に異なる場合において、必要性に対応した不正検知処理が実現可能となる。例えば、データフレームの受信中のタイミングを不正検知処理タイミングとして不正検知処理を行えば不正の検知時にエラーフレームの送出により不正なデータフレームを上書きして無効化することが可能となる。また、例えばデータフレームの受信完了時を不正検知処理タイミングとして不正検知処理を行えば、この１度のタイミングでデータフレーム中のＩＤフィールド、ＤＬＣ、データフィールド等の各部の内容について検査を行うことが可能となるため、効率的な不正検知が実現できる。
【００２４】
また、前記不正検知電子制御ユニットは、更に、前記プログラムを記憶するメモリを含んでもよい。
【００２５】
また、前記不正検知電子制御ユニットは、更に、前記プログラムを記憶するハードディスク装置を含んでもよい。
【００２６】
また、本開示の一態様に係る車載ネットワークシステムは、ＣＡＮ（Controller Area Network）プロトコルに従ってバスを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムであって、前記バスから得たデータフレームのＩＤに基づいて不正検知処理タイミングを決定する不正検知処理要求部と、前記不正検知処理要求部により決定された前記不正検知処理タイミングで前記データフレームについて不正検知処理を行う不正検知処理部とを備える車載ネットワークシステムである。これにより、データフレームのＩＤに基づくタイミングで効率的に消費電力を抑制して不正検知処理を行う車載ネットワークシステムが実現され得る。
【００２７】
また、本開示の一態様に係る不正検知方法は、ＣＡＮ（Controller Area Network）プロトコルに従ってバスを介して通信を行う複数の電子制御ユニットを備える車載ネットワークシステムにおいて用いられる不正検知方法であって、前記バスから得たデータフレームのＩＤに基づいて不正検知処理タイミングを決定し、決定した前記不正検知処理タイミングで前記データフレームについて不正検知処理を行う不正検知方法である。これにより、データフレームのＩＤに基づくタイミングで効率的に不正検知処理を行うことができる。
【００２８】
なお、これらの全般的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータで読み取り可能なＣＤ−ＲＯＭ等の記録媒体で実現されても良く、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されても良い。
【００２９】
以下、実施の形態に係る車載ネットワークシステムについて、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本開示の一具体例を示すものである。従って、以下の実施の形態で示される数値、構成要素、構成要素の配置及び接続形態、並びに、ステップ（工程）及びステップの順序等は、一例であって本開示を限定するものではない。以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。
【００３０】
（実施の形態１）
以下、本開示の実施の形態として、複数のＥＣＵがバスを介して通信する車載ネットワークシステム１０において用いられる不正検知方法について、図面を用いて説明する。不正検知方法は、主としてバスに接続された不正検知ＥＣＵにより実行される。不正検知ＥＣＵは、不正検知処理（バス上に現れたフレームが不正なフレームであるか否かを判別する処理）のための制御プログラムをプロセッサ（マイクロプロセッサ）に実行させるタイミングを、受信中のデータフレームに応じて決定する機能を有し、効率的な不正の検知を実現する。
【００３１】
［１．１  車載ネットワークシステム１０の全体構成］
図１は、実施の形態１に係る車載ネットワークシステム１０の全体構成を示す図である。車載ネットワークシステム１０は、ＣＡＮプロトコルに従って通信するネットワーク通信システムの一例であり、制御装置、センサ、アクチュエータ等の各種機器が搭載された自動車におけるネットワーク通信システムである。車載ネットワークシステム１０は、バスを介してフレームに係る通信を行う複数の装置を備え、不正検知方法を用いる。具体的には図１に示すように車載ネットワークシステム１０は、バス３００と、不正検知ＥＣＵ１００、各種機器に接続されたＥＣＵ２００ａ、２００ｂ等のＥＣＵといったバスに接続された各ノードとを含んで構成される。なお、車載ネットワークシステム１０には、不正検知ＥＣＵ１００及びＥＣＵ２００ａ、２００ｂ以外にもいくつものＥＣＵが含まれ得るが、ここでは、便宜上不正検知ＥＣＵ１００及びＥＣＵ２００ａ、２００ｂに注目して説明を行う。ＥＣＵ（例えば、不正検知ＥＣＵ１００及びＥＣＵ２００ａ、２００ｂなど）は、例えば、プロセッサ（マイクロプロセッサ）、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ＲＯＭ、ＲＡＭ等であり、プロセッサにより実行される制御プログラム（コンピュータプログラム）を記憶することができる。
【００３２】
また、ＥＣＵは、例えば、図示しないハードディスク装置を含んでもよい。また、ハードディスク装置に制御プログラム（コンピュータプログラム）を記憶してもよい。
【００３３】
例えばプロセッサが、制御プログラム（コンピュータプログラム）に従って動作することにより、ＥＣＵを構成する要素の一部又は全部の機能をソフトウェア的に実現することになる。
【００３４】
なお、コンピュータプログラムは、所定の機能を達成するために、プロセッサに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【００３５】
ＥＣＵ２００ａ、２００ｂは、バス３００と接続され、それぞれセンサ２１０、アクチュエータ２２０に接続されている。センサ２１０の一例としては、加速度センサや、操舵角センサ等が挙げられる。アクチュエータ２２０の一例としては、ブレーキアクチュエータ等が挙げられる。ＥＣＵ２００ａは、センサ２１０の状態を取得して、取得した情報をデータフレームに含めて、バス３００に送出する。ＥＣＵ２００ｂは、ＥＣＵ２００ａからバス３００に送出されたデータフレームを受信し、そのデータフレームに含まれるセンサ２１０の状態に係る情報に従ってアクチュエータ２２０を制御する。
【００３６】
不正検知ＥＣＵ１００は、バス３００に接続される一種のＥＣＵであり、バス上に流れるフレーム（つまりバス上に現れるフレーム）を監視して、不正なフレーム（つまり予め定められたルールに適合しないフレーム）が流れているか否かを判別するための不正検知処理を行う機能を有する。
【００３７】
車載ネットワークシステム１０においてはＣＡＮプロトコルに従って、各ＥＣＵがフレームの授受を行う。ＣＡＮプロトコルにおけるフレームには、データフレーム、リモートフレーム、オーバーロードフレーム及びエラーフレームがある。ここではデータフレーム及びエラーフレームを中心に説明する。
【００３８】
［１．２  データフレームフォーマット］
以下、ＣＡＮプロトコルに従ったネットワークで用いられるフレームの１つであるデータフレームについて説明する。
【００３９】
図２は、ＣＡＮプロトコルで規定されるデータフレームのフォーマットを示す図である。同図には、ＣＡＮプロトコルで規定される標準ＩＤフォーマットにおけるデータフレームを示している。データフレームは、ＳＯＦ（Start Of Frame）、ＩＤフィールド、ＲＴＲ（Remote Transmission Request）、ＩＤＥ（Identifier Extension）、予約ビット「ｒ」、ＤＬＣ（Data Length Code）、データフィールド、ＣＲＣ（Cyclic Redundancy Check）シーケンス、ＣＲＣデリミタ「ＤＥＬ」、ＡＣＫ（Acknowledgement）スロット、ＡＣＫデリミタ「ＤＥＬ」、及び、ＥＯＦ（End Of Frame）の各フィールドで構成される。
【００４０】
ＳＯＦは、１ｂｉｔのドミナントで構成される。バスがアイドルの状態はレセシブになっており、ＳＯＦによりドミナントへ変更することでフレームの送信開始を通知する。
【００４１】
ＩＤフィールドは、１１ｂｉｔで構成される、データの種類を示す値であるＩＤを格納するフィールドである。複数のノードが同時に送信を開始した場合、このＩＤフィールドで通信調停を行うために、ＩＤが小さい値を持つフレームが高い優先度となるよう設計されている。
【００４２】
ＲＴＲは、データフレームとリモートフレームとを識別するための値であり、データフレームにおいては１ｂｉｔのドミナントで構成される。
【００４３】
ＩＤＥと「ｒ」とは、それぞれ１ｂｉｔのドミナントで構成される。
【００４４】
ＤＬＣは、４ｂｉｔで構成され、データフィールドの長さを示す値である。ここでは、データフレームにおけるＤＬＣの値を格納する４ｂｉｔをＤＬＣのフィールドとも称する。
【００４５】
データフィールドは、最大６４ｂｉｔで構成される送信するデータの内容を示す値である。８ｂｉｔ毎に長さを調整できる。送られるデータの仕様については、ＣＡＮプロトコルで規定されておらず、車載ネットワークシステム１０において定められる。従って、車種、製造者（製造メーカ）等に依存した仕様となる。
【００４６】
ＣＲＣシーケンス（図２に示す「ＣＲＣ」）は、１５ｂｉｔで構成される。ＳＯＦ、ＩＤフィールド、コントロールフィールド及びデータフィールドの送信値より算出される。
【００４７】
ＣＲＣデリミタ（図２に示す「ＣＲＣ」と「ＡＣＫ」の間に位置する「ＤＥＬ」）は、１ｂｉｔのレセシブで構成されるＣＲＣシーケンスの終了を表す区切り記号である。なお、ＣＲＣシーケンス及びＣＲＣデリミタを合わせてＣＲＣフィールドと称する。
【００４８】
ＡＣＫスロット（図２に示す「ＡＣＫ」）は、１ｂｉｔで構成される。送信ノードはＡＣＫスロットをレセシブにして送信を行う。受信ノードはＣＲＣシーケンスまで正常に受信ができていればＡＣＫスロットをドミナントとして送信する。レセシブよりドミナントが優先されるため、送信後にＡＣＫスロットがドミナントであれば、送信ノードは、いずれかの受信ノードが受信に成功していることを確認できる。
【００４９】
ＡＣＫデリミタ（図２に示す「ＡＣＫ」と「ＥＯＦ」の間に位置する「ＤＥＬ」）は、１ｂｉｔのレセシブで構成されるＡＣＫの終了を表す区切り記号である。
【００５０】
ＥＯＦは、７ｂｉｔのレセシブで構成されており、データフレームの終了を示す。
【００５１】
［１．３  エラーフレームフォーマット］
図３は、ＣＡＮプロトコルで規定されるエラーフレームのフォーマットを示す図である。エラーフレームは、エラーフラグ（プライマリ）と、エラーフラグ（セカンダリ）と、エラーデリミタとから構成される。
【００５２】
エラーフラグ（プライマリ）は、エラーの発生を他のノードに知らせるために使用される。エラーを検知したノードはエラーの発生を他のノードに知らせるために６ｂｉｔのドミナントを連続で送信する。この送信は、ＣＡＮプロトコルにおけるビットスタッフィングルール（連続して同じ値を６ｂｉｔ以上送信しない）に違反し、他のノードからのエラーフレーム（セカンダリ）の送信を引き起こす。
【００５３】
エラーフラグ（セカンダリ）は、エラーの発生を他のノードに知らせるために使用される連続した６ビットのドミナントで構成される。エラーフラグ（プライマリ）を受信してビットスタッフィングルール違反を検知した全てのノードがエラーフラグ（セカンダリ）を送信することになる。
【００５４】
エラーデリミタ「ＤＥＬ」は、８ｂｉｔの連続したレセシブであり、エラーフレームの終了を示す。
【００５５】
［１．４  不正検知ＥＣＵ１００の構成］
図４は、不正検知ＥＣＵ１００の構成図である。不正検知ＥＣＵ１００は、トランシーバ部１３０と、コントローラ部１４０と、マイコン部１５０とを含んで構成される。
【００５６】
トランシーバ部１３０は、通信回路等の電子回路である。トランシーバ部１３０は、コントローラ部１４０から通知されたフレームをバス３００に送信可能な電気信号に変換して送信し、また、バス３００に現れる電気信号を受信することで、１ｂｉｔずつ受信したフレームの内容をコントローラ部１４０へ通知する。
【００５７】
コントローラ部１４０は、マイコン部１５０及びトランシーバ部１３０と信号の授受を行う、デジタル回路及びメモリ等の記憶媒体を含む半導体集積回路である。コントローラ部１４０は、プロトコル処理部１４１と、不正検知処理要求部１４２と、不正フレーム判断部１４３と、不正検知処理タイミング保持部１４４とを有する。
【００５８】
プロトコル処理部１４１は、トランシーバ部１３０と通信を行い、プロトコル（ＣＡＮプロトコル等）に従った処理を行う。プロトコル処理部１４１は、例えば受信中のフレームについてエラーを検知した場合は、トランシーバ部１３０にエラーフレームを送信させるべく、エラーフレームの送信（つまり送信要求）をトランシーバ部１３０に通知する。プロトコル処理部１４１は、データフレームの受信が完了した場合は、データフレームの受信完了をマイコン部１５０に通知する。プロトコル処理部１４１は、マイコン部１５０からのデータフレーム送信要求に対して、プロトコルに従ってデータフレームを送信できるようにトランシーバ部１３０に通知する。プロトコル処理部１４１は、トランシーバ部１３０から通知されるフレームの内容を、不正検知処理要求部１４２にも通知する。プロトコル処理部１４１は、不正フレーム判断部１４３からエラーフレームの送信（つまり送信要求）を通知された場合には、エラーフレームの送信をトランシーバ部１３０に通知する。また、プロトコル処理部１４１は、トランシーバ部１３０を介して取得した、バス３００に現れたデータフレームの内容を一時的に保持して、マイコン部１５０から不正検知処理に必要なＩＤ、ＤＬＣ、データ等の情報が要求された場合に要求された情報をマイコン部１５０に与える。更に、プロトコル処理部１４１は、データフレームの前回受信時と今回受信時との差を算定してその算定結果等である受信タイミングに係るタイミング通知情報が要求された場合にそのタイミング通知情報をマイコン部１５０に与える。
【００５９】
不正検知処理要求部１４２は、受信中のデータフレームをプロトコル処理部１４１から通知され、データフレーム受信中に、不正検知処理タイミング保持部１４４を参照し、受信中のデータフレーム（具体的にはフレームのＩＤ）に応じて不正検知処理タイミングを決定する。そして不正検知処理要求部１４２は、決定した不正検知処理タイミングが到来した時点でマイコン部１５０の不正検知処理部１５４へ、不正検知処理要求信号を通知する。
【００６０】
不正フレーム判断部１４３は、マイコン部１５０の不正検知処理部１５４による不正検知処理における不正の検知結果を取得して、不正を検知した場合には、エラーフレームの送信をプロトコル処理部１４１に通知する。
【００６１】
不正検知処理タイミング保持部１４４は、記憶媒体（または記録媒体ともいう）等により、複数のＩＤそれぞれについてタイミングを対応付けた対応情報（図５参照）を保持する。記憶媒体とは、例えば、不正検知ＥＣＵ１００（例えば、コントローラ部１４０）に含まれるメモリである。
【００６２】
マイコン部１５０は、コントローラ部１４０と信号の授受を行う、プログラムを実行するプロセッサ（マイクロプロセッサ）及びメモリを含む半導体集積回路である。プログラムは、例えば、半導体集積回路のメモリに記憶される。または、不正検知ＥＣＵ１００が図示しないハードディスク装置を含む場合、プログラムは、ハードディスク装置に記憶されてもよい。プロセッサが、このプログラムを実行することにより、マイコン部１５０が機能する。マイコン部１５０は、プログラムを実行するプロセッサ、メモリ等により実現される機能的な構成要素として、コントローラ通信部１５１と、フレーム処理部１５２と、フレーム生成部１５３と、不正検知処理部１５４と、不正検知ルール保持部１５５とを有する。
【００６３】
コントローラ通信部１５１は、コントローラ部１４０から受信したデータフレームを、フレーム処理部１５２へ通知する。コントローラ通信部１５１は、フレーム生成部１５３から通知されたデータフレームを、コントローラ部１４０へ通知し、データフレーム送信要求を行う。コントローラ通信部１５１は、不正検知処理部１５４から不正検知処理に必要な情報の取得要求通知を受け、コントローラ部１４０から、不正検知処理に必要なＩＤ（つまりＩＤフィールドの内容）と、ＤＬＣ（ＤＬＣのフィールドの内容）と、データ（データフィールドの内容）と、データフレームの受信タイミングに係るタイミング通知情報とを取得する。
【００６４】
フレーム処理部１５２は、コントローラ通信部１５１から通知されたデータフレームを、処理する。
【００６５】
フレーム生成部１５３は、コントローラ通信部１５１に、データフレームの送信要求を通知する。
【００６６】
不正検知処理部１５４は、コントローラ部１４０の不正検知処理要求部１４２から不正検知処理要求信号を受信すると不正検知処理を行う。例えば、不正検知処理要求信号は、マイコン部１５０のプロセッサに対する割り込み要求信号として与えられる。プロセッサは、割り込み要求信号による割り込みに対応して、例えばプログラムの実行中であればその実行を中断して、予め定められた特定の割り込み対応処理プログラムを実行することで、不正検知処理部１５４の主たる機能を実現し、つまり不正検知処理を行う。プロセッサは、例えば特にプログラムの実行の必要がない場合には低消費電力状態（スリープ状態）になり得るが、この場合において割り込み要求信号（不正検知処理要求信号）を受信するとスリープを解除して通常の消費電力状態に戻って、不正検知処理を実行する。不正検知処理は、バス３００に送出されたフレームつまりバス３００に現れたフレームが不正なフレームであるか否か、つまり予め定められたルールに適合しないフレームであるか否かを判別するための処理である。その判別は、不正検知ルール保持部１５５が保持する不正検知ルール（図６参照）に基づいて行われる。
【００６７】
不正検知処理の内容は、不正か否かの判別対象となるデータフレームのＩＤ毎に予め定められており（例えば不正検知ルールで規定されており）、例えば、対応情報等によりＩＤ毎に定められた不正検知処理タイミングと対応して次のようになっている。即ち、不正検知処理部１５４は、いつ不正検知処理要求信号を通知されて動作するかによって不正検知処理として次に示す検査を行う。不正検知処理部１５４は、データフレームにおけるＩＤ受信時（つまりＩＤフィールドを受信した時）に不正検知処理要求信号を通知されて動作する場合には、不正検知処理として、受信中のデータフレームのＩＤ（ＩＤフィールドの値）が、不正検知ルール保持部１５５の不正検知ルールにおいて規定されていないＩＤか否かにより、不正なＩＤ（つまり不正なフレーム）か否かを判別する検査を行う。更に、この場合に、不正検知ルール保持部１５５に格納された不正検知ルールにより周期についてのルールが規定されているときには、前回データフレームを受信してから今回データフレームを受信するまでの時間がルールで規定している周期と合致するか否かにより不正な周期（つまり不正なフレーム）であるか否かを判別する検査を行う。また、不正検知処理部１５４は、データフレームにおけるＤＬＣ受信時（つまりＤＬＣのフィールドを受信した時）に不正検知処理要求信号を通知されて動作する場合には、受信中のデータフレームのＤＬＣのフィールドの値が、不正検知ルールに規定されたＤＬＣと異なるか否かにより、不正なＤＬＣ（つまり不正なフレーム）か否かを判別する検査を行う。また、不正検知処理部１５４は、データフレームにおけるデータ受信時（つまりデータフィールドを受信した時）に不正検知処理要求信号を通知されて動作する場合には、受信中のデータフィールドの値が、不正検知ルールに規定された値と異なるか否かにより、不正なデータ（つまり不正なフレーム）か否かを判別する検査を行う。また、不正検知処理部１５４は、データフレームの受信完了後に不正検知処理要求信号を通知されて動作する場合には、上述した不正なＩＤか否か、不正な周期か否か、不正なＤＬＣか否か、及び、不正なデータか否かに係る検査を行い、不正なフレームか否かを判別する。なお、不正検知処理としては、データ値が前回のデータフレームのデータ値から予め定められた変動量よりも大きく変化する場合に不正なフレームと判別するようなデータの一貫性に係る検査を行っても良い。
【００６８】
不正検知処理部１５４は、不正検知処理を行った後に、不正が検知されたか否かを示す不正検知処理の結果を、コントローラ部１４０の不正フレーム判断部１４３に通知する。なお、不正検知処理部１５４は、不正検知処理に必要なＩＤ（ＩＤフィールドの内容）と、ＤＬＣ（ＤＬＣのフィールドの内容）と、データ（データフィールドの内容）と、データフレームの受信タイミングに係るタイミング通知情報とのうちの１以上の情報の取得要求通知を、コントローラ通信部１５１に伝達することで、不正検知処理に必要な情報の取得を行う。
【００６９】
不正検知ルール保持部１５５は、不正検知処理部１５４に参照されるべき不正検知ルール（図６参照）を記憶媒体（または、記録媒体ともいう）等により保持する。記憶媒体とは、例えば、不正検知ＥＣＵ１００（例えば、マイコン部１５０）に含まれるメモリである。
【００７０】
なお、不正検知処理部１５４或いは不正フレーム判断部１４３において、フレームの不正が検知された場合に記憶媒体等に、不正なフレームに関するログ情報（例えばフレームの内容、受信日時等）を記録することとしても良いし、不正を報知するための制御（表示、外部サーバへの情報送信等）を行っても良い。
【００７１】
［１．５  対応情報］
図５は、不正検知処理タイミング保持部１４４が保持する対応情報の一例としてのリストを示す。対応情報は、複数のＩＤそれぞれについてタイミング（不正検知処理タイミング）を対応付けた情報であり、不正検知処理要求部１４２が、割り込み要求信号（不正検知処理要求信号）を通知するタイミングを決定するために利用される。対応情報は、図５に例示するリストでは、１つ以上のＩＤそれぞれについて、不正検知処理タイミングとして、データフレーム中の１つ又は複数の特定フィールド（ＩＤフィールド、ＤＬＣのフィールド、データフィールド等）の受信タイミングを対応付けている。この例は、受信中のデータフレームのＩＤに応じて、不正検知処理要求信号の通知（発生）のタイミングが異なることを示している。
【００７２】
ＩＤが０ｘ１００のデータフレームを受信した場合は、不正検知処理要求部１４２は、データフレームのＩＤ受信時（ＩＤフィールドを受信した時）に、マイコン部１５０のプロセッサに対する割り込み要求信号としての不正検知処理要求信号を発生させ、不正検知処理部１５４による不正検知処理の実行を要求することになる。同様に、０ｘ２００のＩＤのデータフレームについては、ＩＤ受信時と、データ受信時（データフィールドを受信した時）との両方のタイミングで不正検知処理要求信号を発生させ、ＩＤが０ｘ４００のデータフレームについては、ＩＤ受信時と、ＤＬＣ受信時（ＤＬＣのフィールドを受信した時）との両方のタイミングで、不正検知処理要求信号を発生させる。一方、ＩＤが０ｘ３００のデータフレームについては、不正検知処理要求信号を発生させない。また図５に例示するリストに含まれないＩＤについては、不正検知処理要求部１４２は、データフレームの受信完了後に不正検知処理要求信号を発生させる。これは、例えば、図５のリストに含まれない各ＩＤについてデータフレームの受信完了以後のタイミング（例えばデータフレーム受信完了時）を対応付けた対応情報が定められていることと同じ意味を示す。なお、不正検知処理要求信号を発生させないＩＤについて、リストに含ませないこととして、データフレームの受信完了後に不正検知処理を実行させるべきデータフレームのＩＤとそのデータフレームの受信完了以後のタイミング（例えばデータフレーム受信完了時）とを対応付けた情報を、対応情報としてのリストに含ませることとしても良い。
【００７３】
［１．６  不正検知ルール］
図６は、不正検知ルール保持部１５５が保持する不正検知ルールの一例としてのリストを示す。不正検知ルールは、複数のＩＤそれぞれについて不正の検知のための検査内容を対応付けた情報であり、不正検知処理部１５４が不正検知処理の内容となる検査を特定する際に利用される。図６に例示するリストは、１つ以上のＩＤそれぞれについて、ＤＬＣ、データ、周期の各項目について正常値を示す基準情報を対応付けている。検査において基準情報は、例えば、データフレームの一部の受信により得られたビット列等との照合に用いられる。図６の例では、不正検知のための検査で用いられない項目については、「なし」と表記しており、不正検知処理においてその項目に係る検査は行われない。
【００７４】
図６の例では、ＩＤが０ｘ１００であるデータフレームのＤＬＣの正常値は「なし」でありＤＬＣについては検査が行われず、データの正常値は「なし」（データについての検査は行われない旨を示す）であり、またデータフレームの受信周期を表す周期の正常値は２０ｍｓである。ＩＤが０ｘ２００であるデータフレームのＤＬＣの正常値は「なし」であり、ＤＬＣについては検査が行われず、データの正常値は、最上位バイトが０ｘ２０であり、また周期の正常値は「なし」のため、周期については検査が行われない。ＩＤが０ｘ４００のデータフレームについてのＤＬＣの正常値は２であり、また、データと周期に関しては正常値が「なし」であるため検査を行わない。なお、不正検知ルール保持部１５５は、不正検知ルールに係るリストの内容を、暗号化して保持しても良い。また、不正検知処理部１５４が行う不正検知処理の内容の全てを、不正検知ルールに係るリストに基づいて特定する必要はなく、ＩＤ、ＤＬＣ、データ及び周期の１以上の項目についてだけ、正常値を不正検知ルールとしてのリストで保持することとしても良い。不正検知ルール、プログラム等によって定まる不正検知処理の内容は、ここで示した例に限られない。
【００７５】
［１．７  ＥＣＵ２００ａの構成］
図７は、ＥＣＵ２００ａの構成図である。ＥＣＵ２００ａは、トランシーバ部１３０と、コントローラ部２４０と、マイコン部２５０とを含んで構成される。
【００７６】
トランシーバ部１３０は、不正検知ＥＣＵ１００（図４参照）におけるトランシーバ部１３０と、同様であるため説明を省略する。
【００７７】
コントローラ部２４０は、マイコン部２５０及びトランシーバ部１３０と信号の授受を行う、デジタル回路及びメモリ等の記憶媒体を含む半導体集積回路である。コントローラ部２４０は、プロトコル処理部２４１を有する。コントローラ部２４０は、不正検知ＥＣＵ１００のコントローラ部１４０と異なり、不正検知処理要求部１４２及び不正フレーム判断部１４３を含まない。
【００７８】
プロトコル処理部２４１は、トランシーバ部１３０と通信を行い、プロトコル（ＣＡＮプロトコル等）に従った処理を行う。プロトコル処理部２４１は、例えば受信中のフレームについてエラーを検知した場合は、トランシーバ部１３０にエラーフレームを送信させるべく、エラーフレームの送信（つまり送信要求）をトランシーバ部１３０に通知する。プロトコル処理部２４１は、データフレームの受信が完了した場合は、データフレームの受信完了をマイコン部２５０に通知する。プロトコル処理部２４１は、マイコン部２５０からのデータフレーム送信要求に対して、プロトコルに従ってデータフレームを送信できるようにトランシーバ部１３０に通知する。
【００７９】
マイコン部２５０は、コントローラ部２４０と信号の授受を行う、プログラムを実行するプロセッサ及びメモリを含む半導体集積回路である。マイコン部２５０は、プログラムを実行するプロセッサ、メモリ等により実現される機能的な構成要素として、コントローラ通信部１５１と、フレーム処理部２５２と、フレーム生成部２５３と、外部機器入出力部２５４とを有する。
【００８０】
コントローラ通信部１５１は、不正検知ＥＣＵ１００（図４参照）におけるコントローラ通信部１５１と同様である。但し、コントローラ通信部１５１は、マイコン部２５０が含まない不正検知処理部１５４とは連携しない。即ち、コントローラ通信部１５１は、コントローラ部２４０から受信したデータフレームを、フレーム処理部２５２へ通知する。コントローラ通信部１５１は、フレーム生成部２５３から通知されたデータフレームを、コントローラ部２４０へ通知し、データフレーム送信要求を行う。
【００８１】
フレーム処理部２５２は、コントローラ通信部１５１から通知されたデータフレームを処理して結果を外部機器入出力部２５４へ通知する。
【００８２】
フレーム生成部２５３は、外部機器入出力部２５４から通知された値に基づいてデータフレームを生成し、コントローラ通信部１５１に、データフレームを通知する。
【００８３】
外部機器入出力部２５４は、ＥＣＵ２００ａに接続される外部機器と、通信を行う。即ち、外部機器入出力部２５４は、センサ２１０から、センサ情報を取得し、フレーム生成部２５３に通知する。
【００８４】
ＥＣＵ２００ｂも上述のＥＣＵ２００ａと同様の構成を備える。但し、ＥＣＵ２００ｂにおける外部機器入出力部２５４は、ＥＣＵ２００ｂに接続されるアクチュエータ２２０へ、フレーム処理部２５２から通知された値に基づいた制御情報を出力することで、アクチュエータ２２０の制御を行う。
【００８５】
［１．８  不正検知ＥＣＵ１００における各部のデータフレーム受信時の連携動作に係るシーケンス］
以下、上述の構成を備える車載ネットワークシステム１０のバス３００に不正なＥＣＵがアクセスして、ＩＤが０ｘ１００であるデータフレームを送信した場合について、バス３００に接続された、不正検知方法を行う不正検知ＥＣＵ１００の動作例について説明する。
【００８６】
図８は、不正なデータフレームを受信した場合における不正検知ＥＣＵ１００の各部の連携動作例を示すシーケンス図である。前提として、不正検知ＥＣＵ１００の不正検知処理タイミング保持部１４４が図５に例示した対応情報としてのリストを保持し、不正検知ルール保持部１５５が図６に例示した不正検知ルールとしてのリストを保持しているとする。また、不正検知ＥＣＵ１００は、１０ｍｓ前に、ＩＤが０ｘ１００であるデータフレームを受信した状態であるものとする。図８のシーケンス図では、不正検知処理要求部１４２、不正検知処理部１５４、不正フレーム判断部１４３及びプロトコル処理部１４１との相互間での信号の伝達に係る動作を矢線で示しており、上から下へ向かう時間の流れに沿って各部の動作を矩形の処理ブロックで示している。
【００８７】
ＩＤが０ｘ１００であるデータフレームがバス３００に送信されると、不正検知ＥＣＵ１００のコントローラ部１４０のプロトコル処理部１４１は、トランシーバ部１３０を介してバス３００から、そのデータフレームのＩＤ（つまりＩＤフィールドの値である０ｘ１００）を受信する（ステップＳ１００１）。ＩＤを受信するとプロトコル処理部１４１は、不正検知処理要求部１４２へ、受信中のデータフレームのＩＤ（受信したＩＤ）を通知する（ステップＳ１００２）。
【００８８】
不正検知処理要求部１４２は、不正検知処理タイミング保持部１４４が保持している対応情報を参照して、通知されたＩＤに対応する不正検知処理タイミングを決定する（ステップＳ１００３）。図５の対応情報の例によれば、受信したデータフレームのＩＤである０ｘ１００に対応するＩＤ受信時というタイミングが不正検知処理タイミングとして決定される。
【００８９】
不正検知処理要求部１４２は、ステップＳ１００３で決定した不正検知処理タイミングが到来した時点で、マイコン部１５０のプロセッサに割り込み要求信号（不正検知処理要求信号）を入力することで不正検知処理の実行を要求する（ステップＳ１００４）。コントローラ部１４０からマイコン部１５０への割り込み要求信号の伝達（プロセッサへの割り込み）のタイミングにより、不正検知処理の実行タイミングが制御される。不正検知処理タイミングがＩＤ受信時であれば、ＩＤが受信された時点なので直ちに不正検知処理要求信号（割り込み要求信号）が不正検知処理部１５４に通知される。なお、もし決定された不正検知処理タイミングが例えばＤＬＣ受信時であればＤＬＣが受信された時点を待って不正検知処理要求信号が不正検知処理部１５４に通知される。また、もし決定された不正検知処理タイミングが例えばデータフレーム受信完了時であればデータフレームの受信が完了した時点を待って不正検知処理要求信号が不正検知処理部１５４に通知される。
【００９０】
割り込み要求信号を受けると、マイコン部１５０でプロセッサが、割り込み対応処理プログラムを実行する。これにより不正検知処理部１５４が不正検知処理を実行する（ステップＳ１００５）。不正検知処理部１５４は、不正検知処理においては、コントローラ通信部１５１を介してコントローラ部１４０のプロトコル処理部１４１に、バス３００から受信したＩＤと、受信周期に係るタイミング通知情報との取得要求通知を伝達する（ステップＳ１００５ａ）。これに呼応してプロトコル処理部１４１が伝達するＩＤ及びタイミング通知情報を不正検知処理部１５４は、コントローラ通信部１５１を介して取得する（ステップＳ１００５ｂ）。不正検知処理部１５４は、不正検知処理において、取得したＩＤ及びタイミング通知情報を、不正検知ルールに基づいて検査する。この検査において、取得したＩＤは、図６の不正検知ルールとしてのリストに含まれているため正常なＩＤと判別されるが、タイミング通知情報が示す受信タイミングは例えば前回受信から１０ｍｓ経過を表しており、図６の不正検知ルールのリストで規定されている２０ｍｓとは異なるため、不正な周期と判別される。このため、不正検知処理部１５４は、不正なフレームを検知した旨を不正検知処理の結果として、コントローラ部１４０の不正フレーム判断部１４３に通知する（ステップＳ１００６）。
【００９１】
不正フレーム判断部１４３は、不正検知処理の結果の通知を受けると、不正検知処理において不正が検知されたか否かを判別し（ステップＳ１００７）、不正が検知された場合には、プロトコル処理部１４１に、エラーフレームの送信（送信要求）を通知する（ステップＳ１００８）。
【００９２】
プロトコル処理部１４１は、不正フレーム判断部１４３からエラーフレームの送信を通知された場合には、エラーフレームの送信（送信要求）をトランシーバ部１３０に通知する（ステップＳ１００９）。これによりトランシーバ部１３０がエラーフレームをバス３００へと送出することになる。バス３００での送信途中のデータフレーム（ＩＤが０ｘ１００でありＩＤフィールドまで送信がなされたデータフレーム）の残りの部分に対して、連続するドミナントで構成されるエラーフレームがレセシブより優先され、言わばエラーフレームにより上書きされることになる。このため、バス３００に接続されたＥＣＵ２００ａ、２００ｂが不正なデータフレームに対応して動作（不正な動作等）をすることが阻止される。これは、不正なデータフレームに対応した動作により、ＥＣＵ２００ａ、２００ｂが不要な電力消費を行うことの阻止にもなる。なお、不正検知ＥＣＵ１００において、上述の例ではＩＤ受信時に不正検知処理を行っているので不正が検知されたらエラーフレームを送信するが、もしデータフレームの受信完了時に不正検知を行っているのであればエラーフレームの送信は行わず、例えばログ情報の記録、不正の報知に係る制御等を行い得る。
【００９３】
［１．９  不正検知ＥＣＵ１００のデータフレーム受信時の処理］
以下、不正検知ＥＣＵ１００がデータフレーム受信時に行う処理について図９のフローチャートに即して説明する。
【００９４】
不正検知ＥＣＵ１００は、バス３００からデータフレームのＩＤフィールドまでを受信することにより、データフレームのＩＤを取得する（ステップＳ１１０１）。
【００９５】
不正検知ＥＣＵ１００は、不正検知処理要求部１４２により、不正検知処理タイミング保持部１４４が保持している対応情報を参照して、取得したデータフレームのＩＤに対応する不正検知処理タイミングを決定する（ステップＳ１１０２）。これにより、受信されたＩＤに応じて、例えばＩＤ受信時、ＤＬＣ受信時、データ受信時、データフレーム受信完了時等のうち１つ又は複数が不正検知処理タイミングとして決定される。
【００９６】
不正検知ＥＣＵ１００は、不正検知処理要求部１４２により、決定した不正検知処理タイミングが到来したか否かを判定する（ステップＳ１１０３）。不正検知処理タイミングが到来していなければ、データフレームの受信が完了したか否かを判定し（ステップＳ１１０４）、完了していなければプロトコル処理部１４１等により、バス３００上に現れた次の１ビットを受信して（ステップＳ１１０５）、ステップＳ１１０３の判定に戻る。なお、不正検知ＥＣＵ１００では、データフレームの受信が完了すると、プロトコル処理部１４１により、マイコン部１５０にデータフレームの受信完了が通知される。不正検知ＥＣＵ１００は、ステップＳ１１０４での判定で、データフレームの受信が完了していたらデータフレームの受信時の処理を終える。
【００９７】
ステップＳ１１０３において不正検知処理タイミングが到来したと判定された場合には、不正検知ＥＣＵ１００は、コントローラ部１４０の不正検知処理要求部１４２からマイコン部１５０のプロセッサに割り込み要求信号（不正検知処理要求信号）を入力することで、不正検知処理部１５４により、不正検知ルールに基づき不正検知処理を実行する（ステップＳ１１０６）。
【００９８】
不正検知ＥＣＵ１００は、データフレーム受信中において不正検知処理部１５４による不正検知処理の結果として不正が検知された場合には（ステップＳ１１０７）、バス３００へとエラーフレームを送出することでエラーフレームの送信を行う（ステップＳ１１０８）。また、不正検知ＥＣＵ１００は、不正検知処理の結果が正常である場合（不正が検知されなかった場合）、或いは、データフレーム受信後に不正検知処理の結果として不正が検知された場合には、エラーフレームを送信せずにステップＳ１１０４での判定を行う。
【００９９】
図９に示す処理は、データフレームのＩＤが受信される毎に繰り返し行われる。例えば、不正検知処理要求部１４２は、データフレームのＩＤが第１値（例えば０ｘ１００、０ｘ２００等）であればデータフレームの受信中のタイミングを不正検知処理タイミングとして決定する。そして、データフレームのＩＤが第１値と異なる第２値（例えば０ｘ５００等）であればデータフレームの受信完了以後のタイミング（例えばデータフレーム受信完了時）を不正検知処理タイミングとして決定する。この場合において、不正検知ＥＣＵ１００は、不正検知処理部１５４がデータフレームの受信中のタイミングで行う不正検知処理において不正を検知したときにバス３００にエラーフレームを送出するが、データフレームの受信完了時のタイミングで行う不正検知処理において不正を検知したときにはエラーフレームを送出しない。このように不正検知処理タイミングを決定することは、第１値のＩＤを含むデータフレームがセキュリティ上、迅速な不正の検知を要するものであり、第２値のＩＤを含むデータフレームが不正の検知の迅速性を要しない場合に有用である。
【０１００】
［１．１０  実施の形態１の効果］
実施の形態１に係る車載ネットワークシステム１０では、不正検知ＥＣＵ１００が、不正検知処理タイミング保持部１４４に保持された対応情報に基づいて、受信したデータフレームのＩＤに応じた不正検知処理タイミングを決定し、その決定した不正検知処理タイミングで不正検知処理を行う。これにより、セキュリティの確保のために、バス３００で送信される各データフレームに対して一律に監視を行うのではなく、データフレームのＩＤに対応した適切なタイミングで不正検知処理を行うため、不正なフレームの効率的な検知が実現され得る。例えば、セキュリティ上、重要なデータフレームのＩＤに対応して、例えばＩＤ受信時、ＤＬＣ受信時、データ受信時の２つ以上を対応付けるように対応情報を定めておくことにより、ＩＤ、データフレームの受信周期、ＤＬＣ及びデータ（データフィールドの内容）のいくつかを迅速に検査できる。そして、不正が検知されるとエラーフレームの送信により、他のＥＣＵが不正な動作等をすることを迅速に阻止できる。不正検知処理タイミングが到来したらコントローラ部１４０から、割り込み要求信号によりマイコン部１５０のプロセッサに通知されるため、プロセッサは割り込み要求信号が入力されるまでは例えば低消費電力状態（スリープ状態）等になることができ、また、不正検知処理を終えた後に必要な処理がなくなれば再び低消費電力状態に戻ることができる。また、例えば、重要性が比較的低いデータフレームのＩＤに対応して、データフレーム受信完了時を対応付けるように対応情報を定めておくことで、データフレーム受信完了後の１回の不正検知処理でＩＤ、データフレームの受信周期、ＤＬＣ、データ（データフィールドの内容）等の検査を行うことが可能になり、消費電力を抑えたセキュリティの確保が図れる。
【０１０１】
（実施の形態２）
以下、実施の形態１で示した車載ネットワークシステム１０を一部変形してなる車載ネットワークシステム１１について説明する。
【０１０２】
実施の形態１に係る車載ネットワークシステム１０の不正検知ＥＣＵ１００では、バス３００で送信されたデータフレームについて不正を検知する不正検知処理を実行するための不正検知処理タイミングを、データフレームのＩＤに応じて決定した。これに対して、本実施の形態に係る車載ネットワークシステム１１は、データフレームのＩＤだけでなく、バス３００等の車載ネットワークシステム１１を搭載している車両の状態、及び、不正状態（つまり不正検知処理の結果）にも応じて不正検知処理タイミングを決定する不正検知ＥＣＵ２１００を備える。不正検知ＥＣＵ１００を一部変形してなる不正検知ＥＣＵ２１００は、不正検知処理タイミングを、データフレームのＩＤと車両の状態と不正状態とにより特定される監視レベルに応じて決定する。
【０１０３】
［２．１  車載ネットワークシステム１１の全体構成］
図１０は、実施の形態２に係る車載ネットワークシステム１１の全体構成を示す図である。
【０１０４】
車載ネットワークシステム１１は、図１０に示すように、バス３００と、不正検知ＥＣＵ２１００、各種機器に接続されたＥＣＵ２００ａ、２００ｂ、２２００ｃ等のＥＣＵといったバスに接続された各ノードとを含んで構成される。本実施の形態において、実施の形態１と同様の機能を有する構成要素については、同じ符号を付して説明を省略する。また、車載ネットワークシステム１１は、本実施の形態で特に示さない点については車載ネットワークシステム１０と同様である。
【０１０５】
ＥＣＵ２２００ｃは、バス３００と接続され、また、バッテリ２２３０及び車速センサ２２４０に接続されており、これらから情報を取得することで、現在の車両の状態が、停車中、充電中、走行中及び高速走行中のいずれかであるかを特定して、特定した車両の状態を示すデータフレームをバス３００に送出する。ここで、停車中は、車速がゼロであって充電中（バッテリ２２３０への充電中）以外である状態を示す。また、走行中は、車両が高速走行中でなく走行している状態を示す。高速走行中は車速が一定速度（例えば６０Ｋｍ／時）以上である状態を示す。ＥＣＵ２２００ｃは、ＥＣＵ２００ａ（図７参照）と同様の構成を有するため、ここでの説明を省略する。バッテリ２２３０は、各ＥＣＵ等に電力を供給するための電源である。
【０１０６】
不正検知ＥＣＵ２１００は、不正検知ＥＣＵ１００（図４参照）を一部変形したものであり、バス３００と接続され、バス上に流れるフレームを監視して、不正フレームが流れているか否かを判別するための不正検知処理を行う機能を有する。
【０１０７】
［２．２  不正検知ＥＣＵ２１００の構成］
図１１は、不正検知ＥＣＵ２１００の構成図である。不正検知ＥＣＵ２１００は、トランシーバ部１３０と、コントローラ部２１４０と、マイコン部２１５０とを含んで構成される。なお、実施の形態１と同様の機能を有する構成要素については、同じ符号を付して説明を省略する。
【０１０８】
コントローラ部２１４０は、コントローラ部１４０を一部変形したものであり、マイコン部２１５０及びトランシーバ部１３０と信号の授受を行う、デジタル回路及びメモリ等の記憶媒体を含む半導体集積回路である。コントローラ部２１４０は、プロトコル処理部２１４１と、不正検知処理要求部１４２と、不正フレーム判断部１４３と、不正検知処理タイミング保持部１４４とを有する。
【０１０９】
プロトコル処理部２１４１は、実施の形態１で示しプロトコル処理部１４１の機能に加えて、コントローラ通信部１５１から不正検知処理タイミング保持部１４４の更新要求を通知された場合に、不正検知処理タイミング保持部１４４が保持する対応情報を更新する機能を有する。
【０１１０】
マイコン部２１５０は、コントローラ部２１４０と信号の授受を行う、プログラムを実行するプロセッサ及びメモリを含む半導体集積回路である。プログラムは、例えば、半導体集積回路のメモリに記憶される。または、不正検知ＥＣＵ２１００が図示しないハードディスク装置を含む場合、プログラムは、ハードディスク装置に記憶されてもよい。プロセッサが、このプログラムを実行することにより、マイコン部１５０が機能する。マイコン部２１５０は、プログラムを実行するプロセッサ、メモリ等により実現される機能的な構成要素として、コントローラ通信部１５１と、フレーム処理部２１５２と、フレーム生成部１５３と、不正検知処理部２１５４と、不正検知ルール保持部１５５と、監視レベル決定部２１５６と、不正状態保持部２１５７と、車状態保持部２１５８と、監視レベル保持部２１５９とを有する。
【０１１１】
フレーム処理部２１５２は、コントローラ通信部１５１から通知されたデータフレームを、処理する。データフレームの処理の一例としては、フレーム処理部２１５２は、ＥＣＵ２２００ｃから通知されたデータフレームを解釈することで車両の状態を取得して、その車両の状態を示す車両状態情報を、車状態保持部２１５８に格納する。フレーム処理部２１５２は、車両状態情報を更新した場合には、車両状態情報を更新した旨を、監視レベル決定部２１５６に通知する。
【０１１２】
不正検知処理部２１５４は、不正検知処理部１５４を一部変形したものであり、コントローラ部２１４０から不正検知処理要求信号を受信し、不正検知処理を行う。例えば、不正検知処理要求信号は、マイコン部２１５０のプロセッサに対する割り込み要求信号として与えられる。不正検知処理の内容については、実施の形態１における不正検知処理部１５４による不正検知処理と同様である。不正検知処理部２１５４は、不正検知処理を行った後に、不正が検知されたか否かを示す不正検知処理の結果を、コントローラ部２１４０の不正フレーム判断部１４３に通知する。また、不正検知処理部２１５４は、不正検知処理に必要なＩＤ（ＩＤフィールドの内容）と、ＤＬＣ（ＤＬＣのフィールドの内容）と、データ（データフィールドの内容）と、データフレームの受信タイミングに係るタイミング通知情報とのうちの１以上の情報の取得要求通知を、コントローラ通信部１５１に伝達することで、不正検知処理に必要な情報の取得を行う。また、不正検知処理部２１５４は、現在時刻を取得する機能を有し、不正検知処理の結果、不正なデータフレームであると判別した場合には、不正状態保持部２１５７に格納されている不正状態情報（図１４参照）における該当するＩＤの不正が検知された回数（不正発生回数とも称する）と最終更新時刻とを、更新する。このとき、不正発生回数についての更新前の最終更新時刻と、現在時刻とに一定以上の時間差がある場合は、不正発生回数をゼロにリセットする。不正検知処理部２１５４は、不正状態情報を更新した場合には、監視レベル決定部２１５６に、不正状態情報を更新したことを通知する。
【０１１３】
監視レベル決定部２１５６は、不正検知処理部２１５４から不正状態情報の更新を通知された時と、フレーム処理部２１５２から車両状態情報の更新を通知された時とにおいて、不正状態保持部２１５７と車状態保持部２１５８とを参照し、ＩＤ毎について監視レベルを決定する。そして監視レベル決定部２１５６は、決定した監視レベルと、監視レベル保持部２１５９が保持している監視レベル情報が示すこれまでの監視レベルとを比較することで、不一致であれば、決定した監視レベルを示すように監視レベル情報を更新する。監視レベル情報を更新した場合には、監視レベル決定部２１５６は、コントローラ通信部１５１を介して更新要求を通知することで、コントローラ部２１４０の不正検知処理タイミング保持部１４４が保持している対応情報における不正検知処理タイミングを、監視レベルに応じて不正検知処理タイミング特定用情報（図１２参照）に基づいて書き換える。なお、監視レベル決定部２１５６は、監視レベルの決定を、例えば、図１３に例示するテーブル（対応表）に基づいて行う。この監視レベルの決定方法については後述する。
【０１１４】
不正状態保持部２１５７は、不正検知処理部２１５４の不正検知処理の結果から求まる不正状態を示す不正状態情報（図１４参照）を保持している。不正状態情報は、具体的には、データフレームのＩＤ（対応情報で不正検知処理タイミングと対応付けられた各ＩＤ）毎についての既に行われた不正検知処理での不正の検知回数（不正発生回数）を示すように更新される情報である。
【０１１５】
車状態保持部２１５８は、ＥＣＵ２２００ｃから送信されたデータフレームによりフレーム処理部２１５２が取得した車両の状態を示す車両状態情報（図１５参照）を保持する。
【０１１６】
監視レベル保持部２１５９は、ＩＤ毎についての監視レベルを示す監視レベル情報（図１６参照）を保持している。
【０１１７】
［２．３  不正検知処理タイミング特定用情報］
図１２は、不正検知処理タイミング特定用情報の一例を示す図である。同図に示すように、不正検知処理タイミング特定用情報は、監視レベルと不正検知処理タイミングとの対応を示す。監視レベル決定部２１５６は、この不正検知処理タイミング特定用情報に従って、決定した監視レベルに対応する不正検知処理タイミングを特定し、不正検知処理タイミング保持部１４４が保持している対応情報を、特定した不正検知処理タイミングを示すように更新する。図１２の例では、監視レベルを０から３までの４段階に区分している。なお、これは一例であって、監視レベルを何段階に区分しても良い。図１２に例示する不正検知処理タイミング特定用情報により、不正検知ＥＣＵ２１００では監視レベルに応じて次のような処理がなされることになる。即ち、監視レベルが０の場合には、不正検知処理が行われない。監視レベルが１の場合には、データフレーム受信完了時に、不正検知処理要求信号が不正検知処理部２１５４に通知され、不正検知処理が開始される。監視レベルが２の場合には、ＩＤ受信時（つまりデータフレームにおけるＩＤフィールドを受信した時）に、不正検知処理要求信号が不正検知処理部２１５４に通知され、不正検知処理が開始される。監視レベルが３の場合には、ＩＤ受信時、ＤＬＣ受信時（ＤＬＣのフィールドを受信した時）及びデータ受信時（データフィールドを受信した時）のそれぞれの時点で、不正検知処理要求信号が不正検知処理部２１５４に通知され、不正検知処理が開始される。監視レベルが２又は３の場合においては、データフレームの受信中に、不正検知処理が行われることになるため、不正検知処理においてデータフレームに係る不正が検知されると、エラーフレームをバス３００に送出して不正なデータフレームを上書きすることで、不正なデータフレームを無効化することができる。ここでは、監視レベルが４段階のうち最も高い３の場合には０〜２よりも迅速或いは多項目の検査を行う例を示しており、車両の状態及び不正発生回数により特定される監視レベルと不正検知処理タイミングを適切に設定することは有用である。なお、不正検知処理タイミング特定用情報の内容は図１２の例に限られることはない。
【０１１８】
［２．４  監視レベルの決定方法］
図１３は、監視レベル決定部２１５６が監視レベルを決定するために用いるテーブルの一例を示す図である。同図ではＩＤ毎に異なるテーブルが定められている例を示している。図１３において（ａ）はＩＤ「０ｘ１００」について、（ｂ）はＩＤ「０ｘ２００」について、（ｃ）はＩＤ「０ｘ３００」について、（ｄ）はＩＤ「０ｘ４００」について、それぞれ、車両の状態と不正が検知された回数（不正発生回数）とから監視レベルを特定するためのテーブルを示す。この各テーブルに従って、監視レベル決定部２１５６は、車両の状態及び不正発生回数に応じて監視レベルを決定する。図１３の例によれば、ＩＤが０ｘ１００であるデータフレームに関して、車両の状態が停車中の場合には、不正発生回数が何回であっても監視レベルは０と決定される。ＩＤが０ｘ１００であるデータフレームに関して、車両の状態が充電中の場合に、不正発生回数が４回以下であれば監視レベルは１と決定され、不正発生回数が５回以上であれば監視レベルは３と決定される。ＩＤが０ｘ１００であるデータフレームに関して、車両の状態が走行中の場合に、不正発生回数が４回以下であれば監視レベルは２と決定され、不正発生回数が５回以上であれば監視レベルは３と決定される。ＩＤが０ｘ１００であるデータフレームに関して、車両の状態が高速走行中の場合には、不正発生回数が何回であっても監視レベルは３と決定される。ＩＤが０ｘ２００と、０ｘ３００と、０ｘ４００のデータフレームに関しても同様に、車両の状態と不正発生回数とから監視レベルが決定される。なお、図１３のテーブルが無いＩＤのデータフレームに関しての監視レベルは、１とする。例えば、不正検知処理による監視の必要性の高さ等に対応して監視レベルの高さを適切に設定することが有用となる。
【０１１９】
図１３の（ａ）のテーブルの例は、ＩＤが０ｘ１００のデータフレームが、主に走行中に送信されるクルーズコントロールに関する制御用のデータフレームであり、走行中に比較的高い監視レベルで不正検知を行う必要があることを想定した例である。図１３の（ｂ）のテーブルの例は、ＩＤが０ｘ２００のデータフレームが、充電制御に関するデータフレームであり、充電中により高い監視レベルで不正検知を行う必要があることを想定した例である。図１３の（ｃ）のテーブルの例は、ＩＤが０ｘ３００であるデータフレームが、バッテリの残量通知に関するデータフレームであることを想定した例である。また、図１３の（ｄ）のテーブルの例は、ＩＤが０ｘ４００であるデータフレームが、車両の制御に直ちに重大な影響を与えることの無いようなＥＣＵの状態通知に関するデータフレームであることを想定した例であり、不正発生回数が多い場合は監視レベルを上げることで車両が安全な状態を保てるようにしている。このように、ＩＤで区別されるデータフレームの特性に応じて、車両の状態或いは不正発生回数との関係で監視レベルを適切に定めることで、電力消費の低減を図り、不正検知処理を効率的に行うことが可能となる。
【０１２０】
［２．５  不正状態情報］
図１４は、不正状態保持部２１５７に保持される不正状態情報の一例を示す図である。同図に示すように、不正状態情報は、データフレームのＩＤ毎について、不正が検知された回数（不正発生回数）と、不正状態情報が最後に更新された時刻を示す最終更新時刻とを記録した情報である。この不正状態情報は、不正検知処理部２１５４によりデータフレームについて不正が検知される度に更新される。
【０１２１】
図１４の例では、ＩＤが０ｘ１００、０ｘ２００及び０ｘ３００の各データフレームに関しては、不正発生回数が０回で最終更新時刻は起動時（例えば車載ネットワークシステムに電力の供給が開始された時）であり、起動時に設定した初期値のままとなっている。また、ＩＤが０ｘ４００であるデータフレームに関しては、不正発生回数が３回であり、最終更新時刻は起動２０分後となっている。
【０１２２】
［２．６  車両状態情報］
図１５は、車状態保持部２１５８に保持される車両状態情報の一例を示す図である。図１５に例示する車両状態情報は、車両の状態が充電中であることを示している。車両状態情報は、フレーム処理部２１５２が、例えば、ＥＣＵ２２００ｃから通知されたデータフレームを解釈することで車両の状態を取得して、その車両の状態を示すように更新する。車両の状態は、例えば、停車中、充電中、走行中及び高速走行中の４つの状態のうちいずれかとなる。
【０１２３】
［２．７  監視レベル情報］
図１６は、監視レベル保持部２１５９に保持される監視レベル情報の一例を示す図である。監視レベル情報は、ＩＤ毎について、そのＩＤを含むデータフレームに対応する監視レベルを示す。
【０１２４】
図１６の例は、ＩＤが０ｘ１００のデータフレームに関しては監視レベルが１、ＩＤが０ｘ２００のデータフレームに関しては監視レベルが２、ＩＤが０ｘ３００のデータフレームに関しては監視レベルが３、ＩＤが０ｘ４００のデータフレームに関しては、監視レベルが０である状態を示している。監視レベルは、０〜３の４段階に区分されている。
【０１２５】
［２．８  監視レベル更新に応じて変化する不正検知ＥＣＵ２１００の動作例１］
図１７は、監視レベル更新に応じて変化する不正検知ＥＣＵ２１００の動作を例示する図である。同図は、車両の状態の変化に伴い監視レベルが更新された場合の動作例を示す。前提として、不正検知ＥＣＵ２１００の不正状態保持部２１５７に保持される不正状態情報は、図１４に例示する状態であるものとする。このとき、不正検知ＥＣＵ２１００は、ＩＤが０ｘ１００であるデータフレームについて不正を１度も検知していない。
【０１２６】
まず、図１７に示すように、ＥＣＵ２２００ｃから停車中であることを通知するデータフレームがバス３００上に流れる。このデータフレームを受信することで不正検知ＥＣＵ２１００は、停車中を示すように車両状態情報を更新し、図１３の（ａ）に例示するテーブルに基づいてＩＤが０ｘ１００であるデータフレームについての監視レベルを０と決定する。続いてＩＤが０ｘ１００のデータフレームがバス３００上に流れる。このデータフレームに対して、監視レベルが０であるため、不正検知ＥＣＵ２１００は、不正検知処理を行わない。次に、車載ネットワークシステム１１を搭載した車両が走行を開始すると、ＥＣＵ２２００ｃから走行中であることを通知するデータフレームがバス３００上に流れる。このデータフレームを受信することで不正検知ＥＣＵ２１００は、走行中を示すように車両状態情報を更新し、図１３の（ａ）に例示するテーブルに基づいてＩＤが０ｘ１００であるデータフレームについての監視レベルを２と決定する。これにより、不正検知ＥＣＵ２１００のＩＤが０ｘ１００であるデータフレームに対する監視レベルは２となる。そのため、続いてバス３００にＩＤが０ｘ１００のデータフレームが流れると、このデータフレームに対して、ＩＤ受信時に不正検知処理（ＩＤが不正か否か及びデータフレームの周期が不正か否かを判別する検査）が実行される（図１２参照）。
【０１２７】
［２．９  監視レベル更新に応じて変化する不正検知ＥＣＵ２１００の動作例２］
図１８は、監視レベル更新に応じて変化する不正検知ＥＣＵ２１００の動作の別の例を示す図である。同図は、不正の検知回数の増加に伴い監視レベルが更新された場合の動作例を示す。前提として、不正検知ＥＣＵ２１００の不正状態保持部２１５７に保持される不正状態情報は、図１４に例示する状態であるものとする。このとき、不正検知ＥＣＵ２１００は、ＩＤが０ｘ４００であるデータフレームについて既に不正を３回検知している。
【０１２８】
まず、図１８に示すように、ＥＣＵ２２００ｃから走行中であることを通知するデータフレームがバス３００上に流れる。このデータフレームを受信することで不正検知ＥＣＵ２１００は、走行中を示すように車両状態情報を更新する。図１３の（ｄ）に例示するテーブルに基づくとＩＤが０ｘ４００であるデータフレームについての監視レベルは１である。続いてＩＤが０ｘ４００のデータフレームがバス３００上に流れる。このデータフレームに対して、監視レベルが１であるため、データフレーム受信完了時に、不正検知処理としてＩＤ及びＤＬＣが不正か否かを判別する検査を行う（図６、図１２参照）。続いて、２回目、３回目とＩＤが０ｘ４００のデータフレーム（但しＤＬＣが８という不正な値となっているデータフレーム）がバス３００上に流れる。不正検知ＥＣＵ２１００では、２回目と３回目とに受信するＩＤが０ｘ４００のデータフレームについては、不正検知処理の結果、ＤＬＣが８であるため、不正と判別する。これにより、不正状態情報が更新され、不正が検知された回数が５になるため、監視レベルが３となる（図１３参照）。そのため、以後はＩＤが０ｘ４００のデータフレームについては、データフレームの受信中（ＩＤ受信時及びＤＬＣ受信時）に不正検知処理が行われる（図６、図１２参照）。このため、５回目に受信したＩＤが０ｘ４００のデータフレーム（ＤＬＣが８という不正な値となっているデータフレーム）は、データフレーム受信中に、ＤＬＣが不正と判別され、不正なデータフレームとして検知されるため、データフレーム受信中にエラーフレームが送信される。これにより、バス３００上のその不正なデータフレームが上書きされて無効化されることになる。
【０１２９】
なお、この例では、不正検知処理タイミング保持部１４４は、対応情報のＩＤが０ｘ４００についての不正検知処理タイミングについては、車両状態情報が走行中である場合において、不正状態情報における不正の検知回数（不正発生回数）が多い程、ＩＤ受信時、ＤＬＣ受信時、データ受信時及びデータフレーム受信完了時のうちの多くの受信タイミングとなるように更新されている。つまり、不正発生回数が増加することでデータフレーム受信完了時からＩＤ受信時及びＤＬＣ受信時へと不正検知処理タイミングが増加している。このように、不正検知処理タイミング保持部１４４は、対応情報を、複数のＩＤそれぞれについて不正状態情報におけるそのＩＤに係る不正の検知回数（不正発生回数）が多い程、ＩＤ受信時、ＤＬＣ受信時、データ受信時及びデータフレーム受信完了時のうちの多くの受信タイミングを対応付けるように更新してもよい。
【０１３０】
［２．１０  不正検知ＥＣＵ２１００のデータフレーム受信時の処理］
以下、不正検知ＥＣＵ２１００がデータフレーム受信時に行う処理について図１９のフローチャートに即して説明する。実施の形態１で示した不正検知ＥＣＵ１００の処理ステップ（図９参照）と同様の処理ステップについては、同じ符号を付しており、説明を適宜省略する。
【０１３１】
不正検知ＥＣＵ２１００は、不正検知処理要求部１４２により、不正検知処理タイミング保持部１４４が保持している対応情報を参照して、受信したデータフレームのＩＤに対応する不正検知処理タイミングを決定する（ステップＳ１１０２）。決定した不正検知処理タイミングが到来した時に（ステップＳ１１０３）、不正検知ＥＣＵ２１００は、コントローラ部２１４０の不正検知処理要求部１４２からマイコン部２１５０のプロセッサに割り込み要求信号（不正検知処理要求信号）を入力することで、不正検知処理部２１５４により、不正検知ルールに基づき不正検知処理を実行する（ステップＳ１１０６）。
【０１３２】
不正検知ＥＣＵ２１００は、不正検知処理の結果として不正が検知されたか否かを判別し（ステップＳ２１０７）、不正が検知された場合には不正状態保持部２１５７が保持する不正状態情報を更新する（ステップＳ２１０８）。つまり、不正が検知された場合には、不正状態情報における該当するＩＤの不正が検知された回数を１増加させる。ステップＳ２１０７で不正が検知されなかったと判別した場合には、不正検知ＥＣＵ２１００は、ステップＳ１１０５に処理を移す。
【０１３３】
ステップＳ２１０８で不正状態情報を更新した後に、不正検知ＥＣＵ２１００は、データフレーム受信中か否かを判別して（ステップＳ２１０９）、データフレーム受信中である場合に限ってバス３００へとエラーフレームを送信する（ステップＳ２１１０）。
【０１３４】
［２．１１  不正検知ＥＣＵ２１００の監視レベル決定部２１５６による処理］
図２０は、監視レベル決定部２１５６における監視レベルの決定に係る処理を示すフローチャートである。
【０１３５】
監視レベル決定部２１５６は、不正検知処理部２１５４から不正状態情報の更新を通知されたか或いはフレーム処理部２１５２から車両状態情報の更新を通知されたかを判断し、通知を待ってこの判断を繰り返す（ステップＳ３００１）。
【０１３６】
不正状態情報又は車両状態情報の更新の通知がなされた場合には、監視レベル決定部２１５６は、不正状態情報及び車両状態情報に基づいて、データフレームのＩＤ毎に対応して監視レベルを決定する（ステップＳ３００２）。
【０１３７】
続いて、監視レベル決定部２１５６は、決定した監視レベルが、以前の監視レベルから変化しているか（更新されたか）を、監視レベル保持部２１５９を参照することにより確認する（ステップＳ３００３）。即ち、監視レベル決定部２１５６は、決定した監視レベルと、監視レベル保持部２１５９が保持している監視レベル情報（図１６参照）が示す、以前の監視レベルとを比較することで、不一致であれば、以前の監視レベルから変化していると判別する。この比較で一致していれば、監視レベルは変化していないので監視レベル決定部２１５６は、監視レベル情報の更新を行わずに処理を終える。
【０１３８】
ステップＳ３００３において、決定した監視レベルが以前の監視レベルから変化していると判別した場合には、監視レベル決定部２１５６は、監視レベル保持部２１５９が保持している監視レベル情報を、ＩＤ毎に決定した監視レベルを示すように更新する（ステップＳ３００４）。
【０１３９】
ステップＳ３００４で監視レベル情報を更新した後に、監視レベル決定部２１５６は、コントローラ通信部１５１を介して更新要求を通知する（ステップＳ３００５）。この更新要求の通知により、監視レベル決定部２１５６は、コントローラ部２１４０の不正検知処理タイミング保持部１４４が保持している対応情報における不正検知処理タイミングを、監視レベルに応じて不正検知処理タイミング特定用情報（図１２参照）に基づいて書き換える。
【０１４０】
［２．１２  実施の形態２の効果］
実施の形態２に係る車載ネットワークシステム１１では、不正検知ＥＣＵ２１００が、不正検知処理タイミング保持部１４４に保持された対応情報に基づいて、受信したデータフレームのＩＤに応じた不正検知処理タイミングを決定し、その決定した不正検知処理タイミングで不正検知処理を行う。データフレームのＩＤに対応した適切なタイミングで不正検知処理を行うため、不正なフレームの効率的な検知が実現され得る。更に、車載ネットワークシステム１１では、車載ネットワークシステム１１を搭載する車両の状態と不正検知処理の結果に係る不正状態とに応じて、具体的には車両の状態及び不正状態から決定される監視レベルに応じて、不正検知処理タイミングを変化させ得る。これにより、車両の状態及び不正状態に応じた適切なタイミングで不正検知処理を実行することが可能となり、消費電力の低減を図ることが可能となる。
【０１４１】
（他の実施の形態）
以上のように、本開示に係る技術の例示として実施の形態１、２を説明した。しかしながら、本開示に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本開示の一実施態様に含まれる。
【０１４２】
（１）上述した不正検知処理要求部１４２は、不正検知処理タイミングを対応情報に基づいて決定しているが、対応情報の内容、形式等は任意に変更可能であり、ＩＤ毎に、不正検知処理タイミングを別々に定めることができれば良い。
【０１４３】
（２）上記実施の形態では、ＣＡＮプロトコルにおけるデータフレームを標準ＩＤフォーマットで記述しているが、拡張ＩＤフォーマットであっても良い。拡張ＩＤフォーマットの場合には、標準ＩＤフォーマットにおけるＩＤ位置のベースＩＤと、拡張ＩＤとを合わせて２９ビットで、データフレームのＩＤを表す。
【０１４４】
（３）上記実施の形態では、不正検知処理タイミングが、ＩＤ受信時とＤＬＣ受信時とデータ受信時とデータフレーム受信完了時とのいずれかである例を示したが、これら以外のタイミングで不正検知処理を行っても良い。例えば、不正検知ルール（図６参照）が各ＩＤについてのデータのルールとしてデータフィールドの先頭から所定数バイト（例えば最上位１バイト等）の値を規定する場合において、不正検知処理タイミングとしては、データ受信時ではなく（つまりＤＬＣが示すサイズのデータフィールドを受信した時）ではなく、データフィールドの先頭から所定数バイト（例えば１バイト）を受信した時としても良い。
【０１４５】
（４）上記実施の形態では、不正検知ＥＣＵ１００、２１００がデータフレームの受信中に、データフレームについての不正を検知した場合にエラーフレームを送信することとしたが、必ずしもエラーフレームの送信を行わなくても良く、エラーフレームの送信以外の方法（例えばバス３００以外の通信路により他のＥＣＵにエラーを通知すること等）で、ＥＣＵによる不正なデータフレームの実行を阻止しても良い。また、エラーフレームを送信せずに、データフレームにより不正を検知したことを他のＥＣＵに通知しても良いし、上述したようにログ情報の記録、外部サーバへの情報送信等を行っても良い。
【０１４６】
（５）上述した不正検知処理部１５４、２１５４が不正検知処理として１つのデータフレームについて複数の検査を行う場合においては、そのうちの１つの検査で不正なフレームであると判別できた場合（不正が検知された場合）に、残りの検査を省略しても良い。
【０１４７】
（６）上記実施の形態では、車両状態情報が示す車両の状態は、例えば、停車中、充電中、走行中及び高速走行中の４つの状態のうちいずれかであることとしたが、この他の状態を示すようにしても良い。車両に搭載されたセンサ、機器等で識別できる各種状態を、車両状態情報における車両の状態として用い得る。例えば、イグニッションキーがイグニッションキーシリンダに差し込まれた状態、ギアポジション（例えばパーキング、ニュートラル、１速、２速等）の状態、バス３００等のネットワーク負荷の状態等を、車両状態情報における車両の状態として用い得る。なお、ネットワーク負荷の状態については、車載ネットワークシステム１１を構成する各バスそれぞれについてそのバスに接続されているＥＣＵの機能分類に応じて、特定の機能分類のＥＣＵが接続されたバスの負荷の状態に注目してその負荷の状態を車両状態情報における車両の状態として用いても良い。ＥＣＵの機能分類としては例えば、エンジン、モータ、燃料、電池、トランスミッション等の制御といった車両の走行に関連する機能である「駆動系」、或いは、ドアロック、エアコン、ライト、ウィンカー等といった車両の装備の制御に関連する機能である「ボディ系」等が挙げられる。また、対応情報においては、ＩＤ毎に不正検知処理タイミングを定める他に、複数ＩＤからなるＩＤグループ（例えばそのＩＤのデータフレームを送信するＥＣＵの機能分類により区分したグループ等）毎に不正検知処理タイミングを定めても良い。
【０１４８】
（７）上記実施の形態では、不正検知ＥＣＵ２１００は、他のＥＣＵから車両の状態を示すデータフレームを、バスを介して取得したが、車両の状態を別の手段によって取得しても良い。例えば、車両の状態を通知するための専用の通信路（例えば専用の信号線等）によって、車両の状態を取得しても良い。
【０１４９】
（８）上記実施の形態では、各ＩＤのデータフレームについての監視レベルの決定の基礎となる不正状態の例として、不正検知処理により不正が検知された回数（不正発生回数）を示したが、不正状態として不正発生回数以外を用いても良い。例えば、不正検知処理の結果に基づいて計算されるＩＤの信頼度等を用いても良い。
【０１５０】
（９）上記実施の形態では、監視レベルが、車両の状態と不正状態とに応じて決定されるとしたが、監視レベルは、この２つのうち車両の状態のみに応じて決定されることとしても良い。また、不正状態のみに応じて決定されることとしても良い。また、監視レベルの決定に必ずしもテーブル（図１３参照）を用いる必要はなく、例えば、車両の状態と不正状態とを入力とする演算（関数等）により決定しても良い。
【０１５１】
（１０）上記実施の形態では、マイコン部１５０、２１５０で不正検知処理を行ったが、コントローラ部１４０、２１４０において不正検知処理を行っても良い。また、上記実施形態では、マイコン部２１５０で監視レベルを決定していたが、コントローラ部２１４０において監視レベルを決定しても良い。また、上記実施の形態では、マイコン部２１５０が不正状態保持部２１５７と車状態保持部２１５８とを有しているが、コントローラ部１４０、２１４０がこれらの両方又は一方を有しても良い。
【０１５２】
（１１）上記実施の形態では、不正状態保持部２１５７に、最終更新時刻を保持し、現在時刻との差分によって不正発生回数のリセットの判断を行っていたが、別の手段によってリセットを行っても良い。例えば、最終更新時にタイマをセットして、タイマによって、リセットされるようにしても良い。また、不正発生回数のリセットを行わなくても良く、不正状態保持部２１５７は、最終更新時刻を記録しなくても良い。
【０１５３】
（１２）上記実施の形態では、不正検知処理要求部１４２が、不正検知処理要求信号を割り込み要求信号として、不正検知処理部１５４、２１５４に通知（具体的にはマイコン部１５０、２１５０のプロセッサに入力）する例を示したが、不正検知処理要求信号の通知を他の方法（例えば不正検知処理部１５４、２１５４から定期的に不正検知処理要求を問い合わせる方法等）で行っても良い。
【０１５４】
（１３）上記実施の形態では、不正検知処理部１５４、２１５４は、不正検知処理に必要な情報の取得を、コントローラ通信部１５１を介して行うこととしたが、コントローラ部１４０、２１４０と直接通信を行い、不正検知処理に必要な情報を取得しても良い。この取得を、例えばコントローラ通信部１５１がコントローラ部１４０、２１４０と信号の授受を行うための通信路とは別の通信路（専用の信号線等）を設けることにより実現しても良い。
【０１５５】
（１４）上記実施の形態では、不正検知処理部２１５４は、不正状態保持部２１５７の内容（不正状態情報）を更新したことを監視レベル決定部２１５６に通知していたが、この更新の通知を行わなくても良い。同様に、フレーム処理部２１５２は、車両状態情報の更新の通知を行わなくても良い。また、上記実施の形態では、監視レベル決定部２１５６は、車両状態情報又は不正状態情報が更新されたことを通知されたときに監視レベルを決定していたが、監視レベルの決定はこのときに限定されるものではない。例えば、監視レベル決定部２１５６は、監視レベルを定期的に決定しても良い。
【０１５６】
（１５）上記実施の形態では、監視レベル決定部２１５６は、不正検知処理タイミング保持部１４４の内容（対応情報）の更新を、コントローラ通信部１５１を介して行うこととしたが、コントローラ部１４０、２１４０と直接通信を行い、対応情報を更新しても良い。この更新を、例えばコントローラ通信部１５１がコントローラ部２１４０と信号の授受を行うための通信路とは別の通信路（専用の信号線等）を設けることにより実現しても良い。
【０１５７】
（１６）上記実施の形態における不正検知ＥＣＵ及び他のＥＣＵは、例えば、プロセッサ、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置であることとしたが、ハードディスク装置、ディスプレイ、キーボード、マウス等の他のハードウェア構成要素を含んでいても良い。また、メモリに記憶された制御プログラムがプロセッサにより実行されてソフトウェア的に機能を実現する代わりに、専用のハードウェア（デジタル回路等）によりその機能を実現することとしても良い。
【０１５８】
（１７）上記実施の形態における各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Large Scale Integration：大規模集積回路）から構成されているとしても良い。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ等を含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。また、上記各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全部を含むように１チップ化されても良い。また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現しても良い。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
【０１５９】
（１８）上記各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしても良い。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ等から構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしても良い。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしても良い。
【０１６０】
（１９）本開示の一態様としては、例えば図８、図９等に示す不正検知方法であるとしても良い。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしても良いし、前記コンピュータプログラムからなるデジタル信号であるとしても良い。また、本開示の一態様としては、前記コンピュータプログラム又は前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Blu-ray（登録商標） Disc）、半導体メモリ等に記録したものとしても良い。また、これらの記録媒体に記録されている前記デジタル信号であるとしても良い。また、本開示の一態様としては、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしても良い。また、本開示の一態様としては、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしても良い。また、前記プログラム若しくは前記デジタル信号を前記記録媒体に記録して移送することにより、又は、前記プログラム若しくは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしても良い。
【０１６１】
（２０）上記実施の形態及び上記変形例で示した各構成要素及び機能を任意に組み合わせることで実現される形態も本開示の範囲に含まれる。
【産業上の利用可能性】
【０１６２】
本開示は、ＣＡＮに従った車載ネットワークにおいて、バス上への不正なフレームの送信の検知を効率的に行うために利用可能である。
【符号の説明】
【０１６３】
１０，１１  車載ネットワークシステム
１００，２１００  不正検知電子制御ユニット（不正検知ＥＣＵ）
１３０  トランシーバ部
１４０，２４０，２１４０  コントローラ部
１４１，２４１，２１４１  プロトコル処理部
１４２  不正検知処理要求部
１４３  不正フレーム判断部
１４４  不正検知処理タイミング保持部
１５０，２５０，２１５０  マイコン部
１５１  コントローラ通信部
１５２，２５２，２１５２  フレーム処理部
１５３，２５３  フレーム生成部
１５４，２１５４  不正検知処理部
１５５  不正検知ルール保持部
２００ａ，２００ｂ，２２００ｃ  電子制御ユニット（ＥＣＵ）
２１０  センサ
２２０  アクチュエータ
２５４  外部機器入出力部
３００  バス
２１５６  監視レベル決定部
２１５７  不正状態保持部
２１５８  車状態保持部
２１５９  監視レベル保持部
２２３０  バッテリ
２２４０  車速センサ
【図１】
2020039177.tif 000003
【図２】
2020039177.tif 000004
【図３】
2020039177.tif 000005
【図４】
2020039177.tif 000006
【図５】
2020039177.tif 000007
【図６】
2020039177.tif 000008
【図７】
2020039177.tif 000009
【図８】
2020039177.tif 000010
【図９】
2020039177.tif 000011
【図１０】
2020039177.tif 000012
【図１１】
2020039177.tif 000013
【図１２】
2020039177.tif 000014
【図１３】
2020039177.tif 000015
【図１４】
2020039177.tif 000016
【図１５】
2020039177.tif 000017
【図１６】
2020039177.tif 000018
【図１７】
2020039177.tif 000019
【図１８】
2020039177.tif 000020
【図１９】
2020039177.tif 000021
【図２０】
2020039177.tif 000022