(57)【要約】【課題】不正なフレームを検知して無効化するためにエラーフレームを送信することが正規のＥＣＵへ及ぼす悪影響を低減し得る不正検知電子制御ユニット（不正検知ＥＣＵ）を提供する。【解決手段】ＣＡＮ（Controller Area Network）プロトコルに従って通信する複数の電子制御ユニット（ＥＣＵ）が通信に用いるバス２００に接続された不正検知ＥＣＵ１００は、バス２００へ送信が開始されたフレームを受信する受信部１１０と、受信部１１０により受信されたフレームが不正を示す所定条件に該当した場合にそのフレームの最後尾が送信される前にエラーフレームをバス２００へ送信し、エラーフレームの送信後にＣＡＮプロトコルに従ったフレームである正常フレームをバス２００へ送信する送信部１２０とを備える。エラーフレームの影響でバス２００に接続されたＥＣＵの受信エラーカウンタが増大しても正常フレームによって減少させ得る。【選択図】図６
2017069941.tif 000002
【特許請求の範囲】
【請求項１】
ＣＡＮ（Controller Area Network）プロトコルに従って通信する複数の電子制御ユニットが通信に用いるバスに接続される不正検知電子制御ユニットであって、
前記バスへ送信が開始されたフレームを受信する受信部と、
前記受信部により受信されたフレームが不正を示す所定条件に該当した場合に、当該フレームの最後尾が送信される前にエラーフレームを前記バスへ送信し、エラーフレームの送信後にＣＡＮプロトコルに従ったフレームである正常フレームを前記バスへ送信する送信部とを備える
不正検知電子制御ユニット。
【請求項２】
前記不正検知電子制御ユニットは、
前記バスに接続される通信インタフェースと、
前記通信インタフェースに接続され、ＣＡＮプロトコルに従って前記バスでの通信を制御するＣＡＮコントローラと、
前記ＣＡＮコントローラを制御し、前記受信部及び前記送信部を実現するＣＰＵとを備える
請求項１記載の不正検知電子制御ユニット。
【請求項３】
前記送信部は、エラーフレームの前記送信後において前記バスが最初にアイドル状態になった際に、前記正常フレームの前記送信を行う
請求項１又は２記載の不正検知電子制御ユニット。
【請求項４】
前記送信部は、送信したエラーフレームの数と同数の正常フレームを送信する
請求項１〜３のいずれか一項に記載の不正検知電子制御ユニット。
【請求項５】
前記送信部は、正常フレームの前記送信に失敗した場合に、正常フレームを送信する
請求項１〜３のいずれか一項に記載の不正検知電子制御ユニット。
【請求項６】
前記送信部は、送信した前記エラーフレームの数から、前記エラーフレームの送信後に前記所定条件に該当しない正常フレームを前記バスから受信した数を、減算して得られる数以上の正常フレームを送信する
請求項５記載の不正検知電子制御ユニット。
【請求項７】
前記送信部は、正常フレームの前記送信に失敗した場合に、当該正常フレームのＩＤフィールドが示すＩＤより小さい値のＩＤをＩＤフィールドで示す正常フレームを送信する
請求項５記載の不正検知電子制御ユニット。
【請求項８】
前記送信部が、エラーフレームの送信後に送信する前記正常フレームは、データフィールドの長さがゼロであるデータフレームである
請求項１〜７のいずれか一項に記載の不正検知電子制御ユニット。
【請求項９】
前記送信部が、エラーフレームの送信後に送信する前記正常フレームのＩＤフィールドが示すＩＤは、前記不正検知電子制御ユニット以外の、前記バスに接続されたいずれの前記電子制御ユニットにおいても当該ＩＤを識別して行うべき処理が定められていないＩＤである
請求項１〜８のいずれか一項に記載の不正検知電子制御ユニット。
【請求項１０】
前記送信部は、前記エラーフレームの送信後から正常フレームの前記送信の前までに、前記所定条件に該当しない正常フレームを前記バスから受信したときには、正常フレームの前記送信を抑止する
請求項１又は２記載の不正検知電子制御ユニット。
【請求項１１】
前記不正検知電子制御ユニットは、複数のバスに接続され、一方のバスから受信したフレームを他方のバスに転送する機能を有し、受信した当該フレームが前記所定条件に該当した場合には当該転送を抑止し、
前記送信部は、前記受信部により受信されたフレームが前記所定条件に該当した場合に、当該フレームの最後尾が送信される前にエラーフレームを当該フレームが受信されたバスへ送信し、エラーフレームの送信後に前記正常フレームを当該バスへ送信する
請求項１記載の不正検知電子制御ユニット。
【請求項１２】
ＣＡＮ（Controller Area Network）プロトコルに従ってバスを介して通信する複数の電子制御ユニットと、当該バスに接続される不正検知電子制御ユニットとを備える車載ネットワークシステムであって、
前記不正検知電子制御ユニットは、
前記バスへ送信が開始されたフレームを受信する受信部と、
前記受信部により受信されたフレームが不正を示す所定条件に該当した場合に、当該フレームの最後尾が送信される前にエラーフレームを前記バスへ送信し、エラーフレームの送信後にＣＡＮプロトコルに従ったフレームである正常フレームを前記バスへ送信する送信部とを備え、
前記電子制御ユニットは、受信エラーカウンタを含みＣＡＮプロトコルに従って前記バスでの通信を制御するＣＡＮコントローラを備え、前記バスからの正常フレームの受信に成功した場合には前記受信エラーカウンタの値を減少させる
車載ネットワークシステム。
【請求項１３】
ＣＡＮ（Controller Area Network）プロトコルに従ってバスを介して通信する複数の電子制御ユニットを備える車載ネットワークシステムにおいて用いられる通信方法であって、
前記バスへ送信が開始されたフレームを受信する受信ステップと、
前記受信ステップで受信されたフレームが不正を示す所定条件に該当した場合に、当該フレームの最後尾が送信される前にエラーフレームを前記バスへ送信し、エラーフレームの送信後にＣＡＮプロトコルに従ったフレームである正常フレームを前記バスへ送信する送信ステップとを含む
通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両等に搭載される電子制御ユニットが通信を行うネットワークにおいて不正なフレームの検知等を行う不正検知電子制御ユニットに関する。
【背景技術】
【０００２】
近年、自動車の中のシステムには、電子制御ユニット（ＥＣＵ：Electronic Control Unit）と呼ばれる装置が多数配置されている。これらのＥＣＵをつなぐネットワークは車載ネットワークと呼ばれる。車載ネットワークには、多数の規格が存在する。その中でも最も主流な車載ネットワークの一つに、ＩＳＯ１１８９８−１で規定されているＣＡＮ（Controller Area Network）という規格が存在する。なお、ＣＡＮは、自動車の他に、電車、産業機械、ロボット、医療機器等といった各種分野のシステムで制御ネットワークとして利用されている。
【０００３】
従来、ＣＡＮのネットワークで正規のＥＣＵになりすまして不正なフレーム（不正なデータフレーム）を送信する脅威に対する対策として、ＣＡＮの通信路であるバス（ＣＡＮバス）に接続した不正検知機能を有するＥＣＵ（不正検知ＥＣＵ）により、不正なフレームを検知するとエラーフレームを送信することで不正なフレームを無効化する技術（不正なフレームの送信を阻止する技術）が知られている（例えば、特許文献１、非特許文献１、非特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−２３６２４８号公報
【非特許文献】
【０００５】
【非特許文献１】中野学／松本勉／Ｃａｍｉｌｌｅ Ｖｕｉｌｌａｕｍｅ／小谷誠剛著、「自動車の情報セキュリティ」、日経ＢＰ社、２０１３年１２月２７日
【非特許文献２】畑正人／田邊正人／吉岡克成／松本勉著、「ＣＡＮにおける不正送信阻止方式の実装と評価」、信学技報、電子情報通信学会、２０１２年１２月
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、不正なフレームを無効化するためにエラーフレームが送信されると、ＣＡＮバスに接続された正規のＥＣＵの受信エラーカウンタが増大する。ＥＣＵの受信エラーカウンタの増大は、そのＥＣＵが、データフレーム等の迅速な送信が制限されるパッシブ状態に遷移してしまう事態を、引き起こし得る。
【０００７】
そこで、本発明は、不正なフレームを検知して無効化するためにエラーフレームを送信することが正規のＥＣＵへ及ぼす悪影響を低減し得る不正検知電子制御ユニット（不正検知ＥＣＵ）を提供する。また、本発明は、不正なフレームを無効化するためのエラーフレームの送信が正規のＥＣＵへ及ぼす悪影響を低減し得る車載ネットワークシステム、及び、その車載ネットワークシステムで用いられる通信方法を提供する。
【課題を解決するための手段】
【０００８】
上記課題を解決するために本発明の一態様に係る不正検知電子制御ユニットは、ＣＡＮ（Controller Area Network）プロトコルに従って通信する複数の電子制御ユニットが通信に用いるバスに接続される不正検知電子制御ユニットであって、前記バスへ送信が開始されたフレームを受信する受信部と、前記受信部により受信されたフレームが不正を示す所定条件に該当した場合に、当該フレームの最後尾が送信される前にエラーフレームを前記バスへ送信し、エラーフレームの送信後にＣＡＮプロトコルに従ったフレームである正常フレームを前記バスへ送信する送信部とを備える不正検知電子制御ユニットである。
【０００９】
また、上記課題を解決するために本発明の一態様に係る車載ネットワークシステムは、ＣＡＮ（Controller Area Network）プロトコルに従ってバスを介して通信する複数の電子制御ユニットと、当該バスに接続される不正検知電子制御ユニットとを備える車載ネットワークシステムであって、前記不正検知電子制御ユニットは、前記バスへ送信が開始されたフレームを受信する受信部と、前記受信部により受信されたフレームが不正を示す所定条件に該当した場合に、当該フレームの最後尾が送信される前にエラーフレームを前記バスへ送信し、エラーフレームの送信後にＣＡＮプロトコルに従ったフレームである正常フレームを前記バスへ送信する送信部とを備え、前記電子制御ユニットは、受信エラーカウンタを含みＣＡＮプロトコルに従って前記バスでの通信を制御するＣＡＮコントローラを備え、前記バスからの正常フレームの受信に成功した場合には前記受信エラーカウンタの値を減少させる車載ネットワークシステムである。
【００１０】
また、上記課題を解決するために本発明の一態様に係る通信方法は、ＣＡＮ（Controller Area Network）プロトコルに従ってバスを介して通信する複数の電子制御ユニットを備える車載ネットワークシステムにおいて用いられる通信方法であって、前記バスへ送信が開始されたフレームを受信する受信ステップと、前記受信ステップで受信されたフレームが不正を示す所定条件に該当した場合に、当該フレームの最後尾が送信される前にエラーフレームを前記バスへ送信し、エラーフレームの送信後にＣＡＮプロトコルに従ったフレームである正常フレームを前記バスへ送信する送信ステップとを含む通信方法である。
【発明の効果】
【００１１】
本発明によれば、不正なフレームを無効化するためのエラーフレームの送信による正規のＥＣＵへの悪影響が低減され得る。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係る車載ネットワークシステムの全体構成を示す図である。
【図２】ＣＡＮプロトコルで規定されるデータフレームのフォーマットを示す図である。
【図３】ＣＡＮプロトコルで規定されるエラーフレームのフォーマットを示す図である。
【図４】不正なフレームを無効化するためのエラーフレームによるエラーカウンタの増加の一例を示す図である。
【図５】不正検知ＥＣＵ及び正規ＥＣＵの構成図である。
【図６】不正検知ＥＣＵの機能ブロック図である。
【図７】実施の形態１に係る不正検知ＥＣＵの動作例１を示すフローチャートである。
【図８】実施の形態１に係る不正検知ＥＣＵの動作例２を示すフローチャートである。
【図９】実施の形態１に係る不正検知ＥＣＵの動作例３を示すフローチャートである。
【図１０】実施の形態１に係る不正検知ＥＣＵの動作例４を示すフローチャートである。
【図１１】実施の形態１に係る不正検知ＥＣＵの動作例５を示すフローチャートである。
【図１２】実施の形態１に係る不正検知ＥＣＵの動作例６を示すフローチャートである。
【図１３】実施の形態２に係る不正検知ＥＣＵの構成図である。
【図１４】実施の形態２に係る不正検知ＥＣＵの機能ブロック図である。
【図１５】実施の形態２に係る不正検知ＥＣＵの動作例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
本発明の一態様に係る不正検知電子制御ユニット（不正検知ＥＣＵ）は、ＣＡＮ（Controller Area Network）プロトコルに従って通信する複数の電子制御ユニットが通信に用いるバスに接続される不正検知電子制御ユニットであって、前記バスへ送信が開始されたフレームを受信する受信部と、前記受信部により受信されたフレームが不正を示す所定条件に該当した場合に、当該フレームの最後尾が送信される前にエラーフレームを前記バスへ送信し、エラーフレームの送信後にＣＡＮプロトコルに従ったフレームである正常フレームを前記バスへ送信する送信部とを備える不正検知電子制御ユニットである。これにより、不正なフレームを無効化するためにエラーフレームが送信された後に、正常フレームが送信される。この正常フレームを受信することで、ＣＡＮバスに接続された正規のＥＣＵの受信エラーカウンタが減少する。従って、不正なフレームを無効化するためにエラーフレームを送信することが正規のＥＣＵに及ぼす悪影響が、低減され得る。
【００１４】
また、前記不正検知電子制御ユニットは、前記バスに接続される通信インタフェースと、前記通信インタフェースに接続され、ＣＡＮプロトコルに従って前記バスでの通信を制御するＣＡＮコントローラと、前記ＣＡＮコントローラを制御し、前記受信部及び前記送信部を実現するＣＰＵとを備えることとしても良い。これにより、ＣＰＵが、制御プログラムを実行することでＣＡＮコントローラを制御して、不正なフレームを無効化するためのエラーフレームの送信に続くＣＡＮバスへの正常フレームの送信を実現する。このため、不正なフレームを無効化するためにエラーフレームを送信することが正規のＥＣＵに及ぼす悪影響の低減化を、制御プログラムによって比較的容易に実装可能となる。
【００１５】
また、前記送信部は、エラーフレームの前記送信後において前記バスが最初にアイドル状態になった際に、前記正常フレームの前記送信を行うこととしても良い。これにより、不正なフレームを無効化するためにエラーフレームを送信することで正規のＥＣＵの受信エラーカウンタが増大した状態を、速やかにエラーフレームの送信前の状態へと回復させ得る。
【００１６】
また、前記送信部は、送信したエラーフレームの数と同数の正常フレームを送信することとしても良い。これにより、エラーフレームにより正規のＥＣＵの受信エラーカウンタが増大した分だけ、正常フレームによりその受信エラーカウンタを減少させ得る。
【００１７】
また、前記送信部は、正常フレームの前記送信に失敗した場合に、正常フレームを送信することとしても良い。これにより、エラーフレームの送信後に送信した正常フレームについて通信調停等により送信失敗となっても、再び正常フレームを送信するので、エラーフレームの送信の影響で増大した、正規のＥＣＵの受信エラーカウンタを、減少させることができる可能性が増加し得る。
【００１８】
また、前記送信部は、送信した前記エラーフレームの数から、前記エラーフレームの送信後に前記所定条件に該当しない正常フレームを前記バスから受信した数を、減算して得られる数以上の正常フレームを送信することとしても良い。これにより、エラーフレームの送信後にバスに流れた適正フレーム（不正でない正常フレーム）と送信した正常フレームとの合計数がエラーフレームの数と同数以上となるので、エラーフレームの送信の影響で増大した、正規のＥＣＵの受信エラーカウンタを、エラーフレームの送信前における値へと減少（回復）させることができる可能性が増加し得る。
【００１９】
また、前記送信部は、正常フレームの前記送信に失敗した場合に、当該正常フレームのＩＤフィールドが示すＩＤより小さい値のＩＤをＩＤフィールドで示す正常フレームを送信することとしても良い。これにより、最初は優先度の相対的に低いＩＤ（メッセージＩＤ）を用いた正常データフレームを送信して他のＥＣＵの通信への影響を抑えることができる。そして、正常データフレームの送信に失敗した場合において例えば無条件或いは一定条件下で、正常フレーム（正常データフレーム）に用いるメッセージＩＤを、優先度のより高いものへと変更して、通信調停で負けにくくすることができる。このため、正規のＥＣＵの受信エラーカウンタを減少させることができる可能性が増加し得る。
【００２０】
また、前記送信部が、エラーフレームの送信後に送信する前記正常フレームは、データフィールドの長さがゼロであるデータフレームであることとしても良い。これにより、送信される正常フレーム（正常データフレーム）によるバス占有時間が短くなり、バス帯域への影響が抑制される。
【００２１】
また、前記送信部が、エラーフレームの送信後に送信する前記正常フレームのＩＤフィールドが示すＩＤは、前記不正検知電子制御ユニット以外の、前記バスに接続されたいずれの前記電子制御ユニットにおいても当該ＩＤを識別して行うべき処理が定められていないＩＤであることとしても良い。これにより、送信される正常データフレームを受信した正規のＥＣＵが誤動作を行うことが防止され得る。
【００２２】
また、前記送信部は、前記エラーフレームの送信後から正常フレームの前記送信の前までに、前記所定条件に該当しない正常フレームを前記バスから受信したときには、正常フレームの前記送信を抑止することとしても良い。これにより、エラーフレームの送信後に、不正でないフレームがバスに流れて正規のＥＣＵの受信エラーカウンタが減少している場合において、不要な正常フレームの送信を抑止してバス帯域への悪影響を低減し得る。
【００２３】
また、前記不正検知電子制御ユニットは、複数のバスに接続され、一方のバスから受信したフレームを他方のバスに転送する機能を有し、受信した当該フレームが前記所定条件に該当した場合には当該転送を抑止し、前記送信部は、前記受信部により受信されたフレームが前記所定条件に該当した場合に、当該フレームの最後尾が送信される前にエラーフレームを当該フレームが受信されたバスへ送信し、エラーフレームの送信後に前記正常フレームを当該バスへ送信することとしても良い。これにより、不正検知ＥＣＵが、不正なフレームを無効化するためのエラーフレームの送信、及び、受信エラーカウンタの増加を抑制するための正常データフレームの送信を、不正なフレームを検知したバスに対してのみ行うことで、あるバスで発生した不正なフレームの影響が他のバスへ波及することを抑制し得る。
【００２４】
また、本発明の一態様に係る車載ネットワークシステムは、ＣＡＮ（Controller Area Network）プロトコルに従ってバスを介して通信する複数の電子制御ユニットと、当該バスに接続される不正検知電子制御ユニットとを備える車載ネットワークシステムであって、前記不正検知電子制御ユニットは、前記バスへ送信が開始されたフレームを受信する受信部と、前記受信部により受信されたフレームが不正を示す所定条件に該当した場合に、当該フレームの最後尾が送信される前にエラーフレームを前記バスへ送信し、エラーフレームの送信後にＣＡＮプロトコルに従ったフレームである正常フレームを前記バスへ送信する送信部とを備え、前記電子制御ユニットは、受信エラーカウンタを含みＣＡＮプロトコルに従って前記バスでの通信を制御するＣＡＮコントローラを備え、前記バスからの正常フレームの受信に成功した場合には前記受信エラーカウンタの値を減少させる車載ネットワークシステムである。これにより、不正検知ＥＣＵから不正なフレームを無効化するためにエラーフレームが送信された後に、正常フレームが送信される。この正常フレームを受信したＥＣＵでは、受信エラーカウンタが減少する。従って、不正なフレームを無効化するためにエラーフレームを送信することが正規のＥＣＵに及ぼす悪影響が、低減され得る。
【００２５】
また、本発明の一態様に係る通信方法は、ＣＡＮ（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）の各フィールドで構成される。
【００３８】
ＳＯＦは、１ｂｉｔのドミナントで構成される。バスがアイドルの状態はレセシブになっており、ＳＯＦによりドミナントへ変更することでフレームの送信開始を通知する。
【００３９】
ＩＤフィールドは、１１ｂｉｔで構成される、データの種類を示す値であるＩＤ（メッセージＩＤ）を格納するフィールドである。複数のノードが同時に送信を開始した場合、このＩＤフィールドで通信調停を行うために、ＩＤが小さい値を持つフレームが高い優先度となるよう設計されている。
【００４０】
ＲＴＲは、データフレームとリモートフレームとを識別するための値であり、データフレームにおいてはドミナント１ｂｉｔで構成される。
【００４１】
ＩＤＥと「ｒ」とは、両方ドミナント１ｂｉｔで構成される。
【００４２】
ＤＬＣは、４ｂｉｔで構成され、データフィールドの長さを示す値である。なお、ＩＤＥ、「ｒ」及びＤＬＣを合わせてコントロールフィールドと称する。
【００４３】
データフィールドは、最大６４ｂｉｔで構成される送信するデータの内容を示す値である。８ｂｉｔ毎に長さを調整できる。送られるデータの仕様については、ＣＡＮプロトコルで規定されておらず、車載ネットワークシステム１０において定められる。従って、車種、製造者（製造メーカ）等に依存した仕様となる。
【００４４】
ＣＲＣシーケンスは、１５ｂｉｔで構成される。ＳＯＦ、ＩＤフィールド、コントロールフィールド及びデータフィールドの送信値より算出される。
【００４５】
ＣＲＣデリミタは、１ｂｉｔのレセシブで構成されるＣＲＣシーケンスの終了を表す区切り記号である。なお、ＣＲＣシーケンス及びＣＲＣデリミタを合わせてＣＲＣフィールドと称する。
【００４６】
ＡＣＫスロットは、１ｂｉｔで構成される。送信ノードはＡＣＫスロットをレセシブにして送信を行う。受信ノードはＣＲＣシーケンスまで正常に受信ができていればＡＣＫスロットをドミナントとして送信する。レセシブよりドミナントが優先されるため、送信後にＡＣＫスロットがドミナントであれば、送信ノードは、いずれかの受信ノードが受信に成功していることを確認できる。
【００４７】
ＡＣＫデリミタは、１ｂｉｔのレセシブで構成されるＡＣＫの終了を表す区切り記号である。
【００４８】
ＥＯＦは、７ｂｉｔのレセシブで構成されており、データフレームの終了を示す。
【００４９】
［１．４  エラーフレームフォーマット］
図３は、ＣＡＮプロトコルで規定されるエラーフレームのフォーマットを示す図である。エラーフレームは、エラーフラグ（プライマリ）と、エラーフラグ（セカンダリ）と、エラーデリミタとから構成される。
【００５０】
エラーフラグ（プライマリ）は、エラーの発生を他のＥＣＵ（ノード）に知らせるために使用される。エラーを検知したノードはエラーの発生を他のノードに知らせるために６ｂｉｔのドミナントを連続で送信する。この送信は、ＣＡＮプロトコルにおけるビットスタッフィングルール（連続して同じ値を６ｂｉｔ以上送信しない）に違反し、他のノードからのエラーフレーム（セカンダリ）の送信を引き起こす。
【００５１】
エラーフラグ（セカンダリ）は、エラーの発生を他のノードに知らせるために使用される連続した６ビットのドミナントで構成される。エラーフラグ（プライマリ）を受信してビットスタッフィングルール違反を検知した全てのノードがエラーフラグ（セカンダリ）を送信することになる。
【００５２】
エラーデリミタ「ＤＥＬ」は、８ｂｉｔの連続したレセシブであり、エラーフレームの終了を示す。
【００５３】
［１．５  エラーカウンタ］
ＣＡＮプロトコルに従って、ＣＡＮバスで通信する各ＥＣＵではエラー発生時にエラーカウンタを増加させる。
【００５４】
ＣＡＮバス上へのエラーフレームの送信が開始されると、それまでにバスに流れていたフレームの送信は、レセシブより優先されるドミナントが連続するエラーフレームにより上書き（つまり無効化）されることで、中断される。そして、それまでバスに流れていたフレームを送信したＥＣＵ（送信ノード）は、送信エラーを確認すると、そのＥＣＵのＣＡＮコントローラにおける送信エラーカウンタを１増加する。
【００５５】
また、エラーフレーム（プライマリ）がＣＡＮバスに送信されると、ＣＡＮバスに接続されたＥＣＵ（受信ノード）では、上述のビットスタッフィングルール違反のため受信エラーとなり、エラーフレーム（セカンダリ）を送信してそのＥＣＵのＣＡＮコントローラにおける受信エラーカウンタを１増加する。
【００５６】
図４は、不正なフレームがＣＡＮバスに送信された後におけるエラーカウンタの一例を示す図である。この例では、ＣＡＮバスに接続された不正ＥＣＵが不正なフレームを送信し、不正検知ＥＣＵがこの不正なフレームを検知すると無効化するためのエラーフレーム（プライマリ）を送信し、正規ＥＣＵ（正規のＥＣＵ）がエラーフレーム（セカンダリ）を送信した場合における各ＥＣＵのエラーカウンタの増加値を示している。
【００５７】
ＣＡＮでは、データフレームに送信元を検証する手段がなく、データフレームを送信するとバス上のすべてのノード（ＥＣＵ）にブロードキャストされるため、バスに接続されたＥＣＵが一度不正に攻撃者に侵入されて操られる（コントロールされる）と、このＥＣＵが重要な制御を担う他のＥＣＵになりすまして、不正に機器の制御が行われてしまう脅威がある。不正ＥＣＵの一例は、この侵入されたＥＣＵである。なお、故障したＥＣＵ等も不正ＥＣＵとなり得る。上述のように不正検知ＥＣＵ（ヘッドユニット）１００では、不正ＥＣＵが送信するフレームが、車載ネットワークシステムにおいて予め定めているルールに適合しているか否かにより、不正であるか否かを判別する。
【００５８】
ＣＡＮでは、各ＥＣＵで、受信エラーカウンタが一定閾値より大きくなると迅速な送信が制限されるパッシブ状態と呼ばれる状態に遷移する。通常状態ではＥＣＵは、ＣＡＮバスがバスアイドル状態になった後、つまりデータフレーム後の３ビットのレセシブであるＩＴＭ（Intermission）の後にならないと、データフレームを送信できない。これに対して、パッシブ状態では、更に、ＩＴＭの終了後に８ビットのレセシブを受信した後でないと、データフレームを送信できないので、迅速な送信は制限される。
【００５９】
不正なフレームの送信阻止（無効化）のためのエラーフレームにより、正規ＥＣＵの受信エラーカウンタが増えて、迅速な送信が制限される状態へと移行してしまうというエラーフレームの送信の悪影響を抑制するために、不正検知ＥＣＵ１００は、エラーフレームの送信後に一定条件下で速やかに正常フレームを送信する機能を有している。ＣＡＮプロトコルに従って動作する正規ＥＣＵは、正常フレーム（つまりＣＡＮプロトコルに従ったフレーム）を受信エラーなく受信できれば、受信エラーカウンタを１減少させる。これにより、パッシブ状態へ移行する可能性が低減する。
【００６０】
［１．６  不正検知ＥＣＵ１００及びＥＣＵ４００ａの構成］
図５は、不正検知ＥＣＵ（ヘッドユニット）１００、正規ＥＣＵ４００ａ等の構成の一例を示す構成図である。同図では、図１に示した車載ネットワークシステム１０のバス２００に接続されたＥＣＵのうち、不正検知機能を有するＥＣＵである不正検知ＥＣＵ（ヘッドユニット）１００、及び、正規ＥＣＵの１つであるＥＣＵ４００ａを、説明の便宜上抽出して、示している。図５には、例えば故障状態、或いは、攻撃者にコントロールされた状態等により不正なデータフレームを送信するＥＣＵとしての不正ＥＣＵ２００１を付記している。
【００６１】
不正ＥＣＵ２００１、正規ＥＣＵ４００ａ、及び、不正検知ＥＣＵ１００は、バス２００を介して、電子機器制御に関するデータフレームの送受信等を行う。
【００６２】
不正検知ＥＣＵ１００は、ＣＡＮプロトコルに従い、データフレーム及びエラーフレームを送信する機能を有し、バス２００を監視し、不正なデータフレームがバス２００上に流れている場合、エラーフレームを用いて、不正なデータフレームの送信を阻止（つまり不正なデータフレームを無効化）する機能を有する。
【００６３】
不正検知ＥＣＵ１００は、図５に示すように、演算部３００１、通信制御部３００２、及び、通信インタフェース（通信Ｉ／Ｆ）３００３を備える。演算部３００１と通信制御部３００２とは、有線又は無線で相互に通信可能となるように構成され、通信制御部３００２と通信Ｉ／Ｆ３００３とは、同様に有線又は無線で相互に通信可能となるように構成されている。通信Ｉ／Ｆ３００３は、バス２００（ＣＡＮバス）に接続してフレームの送受信を行う通信回路であるＣＡＮトランシーバ等である。通信制御部３００２は、バス２００での通信を制御してＣＡＮプロトコルに係る処理を行うプロセッサであるＣＡＮコントローラであり、通信Ｉ／Ｆ３００３を介して受信した情報を演算部３００１から読み出し可能なデータとする機能、及び、演算部３００１からの指示に応じて通信Ｉ／Ｆ３００３を介してＣＡＮプロトコルに従ったデータフレーム或いはエラーフレームを送信する機能を有する。また、ＣＡＮコントローラである通信制御部３００２は、エラーカウンタ（送信エラーカウンタ及び受信エラーカウンタ）を含み、エラーカウンタの操作及びエラーカウンタに応じた制御等を行う。演算部３００１は、ＣＰＵ（Central Processing Unit）及びメモリで構成され、メモリに格納された制御プログラムをＣＰＵで実行することにより、通信制御部３００２を制御し、受信したフレームに基づく処理及び送信すべきフレームの生成等に係る各種機能を実現する。
【００６４】
ＥＣＵ４００ａ（正規ＥＣＵ）は、ＣＡＮプロトコルに従い、データフレーム及びエラーフレームを送信する機能、バス２００を流れるデータのエラーを検出した場合にエラーフレームを送信し、受信エラーカウンタをインクリメントする（増加させる）機能、並びに、バス２００を流れるデータフレームを正常に（受信エラーなく）受信したときに受信エラーカウンタをデクリメントする（減少させる）機能を有する。
【００６５】
ＥＣＵ４００ａは、図５に示すように、有線又は無線で相互に通信可能となるように構成された演算部３０１１、通信制御部３０１２、及び、通信インタフェース（通信Ｉ／Ｆ）３０１３を備える。演算部３０１１、通信制御部３０１２及び通信Ｉ／Ｆ３０１３は、それぞれ、演算部３００１、通信制御部３００２、通信Ｉ／Ｆ３００３と同様である。通信制御部３０１２は、受信エラーカウンタを含みＣＡＮプロトコルに従ってバス２００での通信を制御するＣＡＮコントローラであり、バス２００からの正常フレームの受信に成功した場合には受信エラーカウンタの値を減少させる。なお、図５では省略しているが、ＥＣＵ４００ｂ〜４００ｄも、ＥＣＵ４００ａと同様の構成を備える。
【００６６】
［１．７  不正検知ＥＣＵ１００の機能構成］
図６は、不正検知ＥＣＵ（ヘッドユニット）１００の機能ブロック図である。
【００６７】
不正検知ＥＣＵ１００は、機能面において図６に示すように、受信部１１０及び送信部１２０を備え、送信部１２０は不正判定部１２１を備える。受信部１１０及び送信部１２０の機能は、制御プログラムを実行するＣＰＵである演算部３００１により実現される。なお、ヘッドユニットとしての不正検知ＥＣＵ１００は、ここでは説明を省略するが、他の正規ＥＣＵとの間でデータフレームの授受を行い、ヘッドユニットとしての各種機能（例えばカーナビゲーション、音楽再生、動画再生、ウェブページ表示、スマートフォンとの連携等の機能）を実現し得る。
【００６８】
受信部１１０は、バス２００へ送信が開始されたフレームを受信する機能を有し、通信制御部３００２が受信したフレームに係るデータを読み出す。
【００６９】
不正判定部１２１は、受信部１１０で受信されたデータフレームのデータから、バス２００を流れるデータフレームが不正なフレームかどうかを検知する機能を有する。即ち、不正判定部１２１は、データフレームについて予め定められた判定ルールへの適合性の判定（データフレームが不正であるか否かの判定）を行う。判定ルールは、車載ネットワークシステム１０において予め定められたものであれば、いかなるルールであっても良い。判定ルールの例としては、例えば、予め定められたメッセージＩＤのリストに記載されたメッセージＩＤを有するフレームであるというルールが挙げられる。また、別の例としては、例えば、定期的に送信されるように定められているメッセージＩＤを有するデータフレームが受信される時間間隔が、予め定められた適正周期からプラスマイナス一定のマージンの範囲内に収まっているというルールが挙げられる。
【００７０】
送信部１２０は、不正判定部１２１により不正なデータフレームが検知された場合にエラーフレームを送信する機能、正規ＥＣＵの受信エラーカウンタを適切に制御するためにエラーフレームの送信後に一定条件下で速やかに正常フレーム（ＣＡＮプロトコルに従ったデータフレーム）を送信する機能等を有する。送信部１２０は、フレーム内容を与えて通信制御部３００２を制御し、バス２００へのフレームの送信を実現させる。
【００７１】
以下、不正なフレームを検知した場合の不正検知ＥＣＵ１００による処理についての各動作例を説明する。不正検知ＥＣＵ１００は、例えば、演算部（ＣＰＵ）３００１がそれぞれの処理に対応した制御プログラムを実行することで、各動作例に係る動作を実現し得る。なお、以下説明する各動作例は、一例に過ぎず、例えば、不正検知ＥＣＵ１００は、以下の複数の動作例における一部の処理手順を組み合わせて実行しても良い。
【００７２】
［１．８  不正検知ＥＣＵ１００の動作例１］
図７は、本実施の形態における不正検知ＥＣＵ１００の動作例１に係る処理手順を示すフローチャートである。以下、同図に即して動作例１について説明する。
【００７３】
図７に示すように、まず、不正検知ＥＣＵ１００は、バス２００に流れるフレームを監視し、受信部１１０で受信したフレームが不正なフレームであるか否かを不正判定部１２１で判定する（ステップＳ４０１）。即ち、不正検知ＥＣＵ１００は、いずれかのＥＣＵによりバス２００に送信が開始されたフレームを１ビットずつ受信して監視し、判定ルールに適合しているか否かを判定する。判定ルールに適合しているか否かの判定は、不正を示す所定条件（判定ルールに適合しないという条件）に該当するか否かの判定とも言える。例えば、不正ＥＣＵ２００１は、ＣＡＮプロトコルには適合するが、不正を示す所定条件に該当する（判定ルールに適合しない）データフレームを送信し得る。この不正ＥＣＵ２００１により送信された不正なデータフレームが、ステップＳ４０１で不正なフレームであると判定され得る。ステップＳ４０１での判定により、判定ルールに適合していない（つまり不正を示す所定条件に該当した）不正なフレームが検知され得る。不正なフレームが検知されない場合は、ステップＳ４０１での処理が繰り返される。
【００７４】
不正なフレームを検知した場合には、不正検知ＥＣＵ１００は、送信部１２０等により、エラーフレームを送信する（ステップＳ４０２）。このエラーフレームの送信は、不正なフレームの最後尾が送信される前のタイミングで行われ、これにより、バス２００上で、不正なフレームの少なくとも一部はエラーフレームに上書きされることで無効化される。従って、エラーフレームの送信により、正規ＥＣＵが不正なフレームを受信してその不正なフレームに対応した機能処理等を実行してしまうことが、阻止される。続いて、不正検知ＥＣＵ１００は、送信部１２０等により、ＣＡＮプロトコルに従った正常フレーム（正常データフレーム）を送信する（ステップＳ４０３）。ステップＳ４０３での正常フレームの送信は、例えば、ステップＳ４０２でエラーフレームを送信した後においてバス２００が最初にアイドル状態（バスアイドル）になった際に、行われる。ステップＳ４０３での正常フレームの送信は、必ずしもバス２００が最初にバスアイドルになった瞬間に行われる必要はないが、エラーフレームによる正規ＥＣＵへの悪影響（受信エラーカウンタの増大）を低減させる観点において、正常フレームの送信が速やかに行われることは有用である。なお、不正検知ＥＣＵ１００がステップＳ４０２でエラーフレームを送信して、不正なフレームを無効化した場合に、不正ＥＣＵ２００１が直ちに不正なデータフレームの送信を繰り返すようなときにおいては、不正検知ＥＣＵ１００は、更に、エラーフレームの送信を行っても良く、その後においてバスアイドルになった際等において正常フレームを送信しても良い。
【００７５】
［１．９  動作例１の効果］
本実施の形態の動作例１では、不正検知ＥＣＵ１００が、エラーフレームを用いて不正なフレームの送信阻止（無効化）を行う際に、正常データフレームを続けて送信する。不正検知ＥＣＵ１００は、不正なフレームを検知してエラーフレームを送信するので、受信ノードによる問題ではなく、不正なフレームを送信した送信ノードによる問題であることが明らかであるので、受信エラーカウンタを増大させることを抑制するために正常フレームを送信している。これにより、正規ＥＣＵの受信エラーカウンタがデクリメントされる。即ち、不正検知ＥＣＵ１００によるエラーフレームの送信後の正常フレームの送信により、正規ＥＣＵの受信エラーカウンタが一方的に増大してしまうことが抑制され、正規ＥＣＵがパッシブ状態に遷移する可能性が低減され得る。従って、不正なフレームの無効化のためのエラーフレームによって正規ＥＣＵの動作が制限されてしまうことが防止され得る。
【００７６】
［１．１０  不正検知ＥＣＵ１００の動作例２］
図８は、本実施の形態における不正検知ＥＣＵ１００の動作例２に係る処理手順を示すフローチャートである。以下、同図に即して動作例２について説明する。
【００７７】
不正検知ＥＣＵ１００は、バス２００に流れるフレームを監視し、受信部１１０で受信したフレームが不正なフレームであるか否かを不正判定部１２１で判定する（ステップＳ５０１）。不正なフレームが検知されない場合は、ステップＳ５０１での処理が繰り返される。判定ルールに適合していない不正なフレームを検知した場合には、不正検知ＥＣＵ１００は、送信部１２０等により、エラーフレームを送信する（ステップＳ５０２）。なお、ステップＳ５０１、Ｓ５０２はそれぞれ、上述のステップＳ４０１、Ｓ４０２と同様である。
【００７８】
次に、不正検知ＥＣＵ１００は、送信部１２０等により、データフィールドの長さが０（ゼロ）である正常データフレームを送信する（ステップＳ５０３）。データフィールドの長さが０である正常データフレームは、ＣＡＮプロトコルに従ったデータフレームであって、データフィールドにデータを含まないのでＤＬＣの値が０のデータフレームである。なお、ステップＳ５０３でのデータフィールドの長さが０である正常データフレームの送信は、例えば、ステップＳ５０２でエラーフレームを送信した後にバス２００が最初にバスアイドルになった際等に行われる。
【００７９】
［１．１１  動作例２の効果］
本実施の形態の動作例２では、不正検知ＥＣＵ１００が、エラーフレームを用いて不正なフレームの送信阻止（無効化）を行った場合にその後に、正常データフレームを送信する。これにより、正規ＥＣＵの受信エラーカウンタが一方的に増大してしまうことを抑制し、正規ＥＣＵが、パッシブ状態に遷移する可能性を低減し得る。従って、不正なフレームの無効化のためのエラーフレームによって正規ＥＣＵの動作が制限されてしまうことが防止され得る。また、正規ＥＣＵの受信エラーカウンタをデクリメントするために不正検知ＥＣＵ１００により送信される正常データフレームは、データフィールドの長さが０のデータフレームであるので、送信される正常データフレームによるバス占有時間が短くなり、バス帯域への影響が抑制される。
【００８０】
［１．１２  不正検知ＥＣＵ１００の動作例３］
図９は、本実施の形態における不正検知ＥＣＵ１００の動作例３に係る処理手順を示すフローチャートである。以下、同図に即して動作例３について説明する。
【００８１】
不正検知ＥＣＵ１００は、バス２００に流れるフレームを監視し、受信部１１０で受信したフレームが不正なフレームであるか否かを不正判定部１２１で判定する（ステップＳ６０１）。不正なフレームが検知されない場合は、ステップＳ６０１での処理が繰り返される。判定ルールに適合していない不正なフレームを検知した場合には、不正検知ＥＣＵ１００は、送信部１２０等により、エラーフレームを送信する（ステップＳ６０２）。なお、ステップＳ６０１、Ｓ６０２はそれぞれ、上述のステップＳ４０１、Ｓ４０２と同様である。
【００８２】
次に、不正検知ＥＣＵ１００は、送信部１２０等により、他のＥＣＵで利用されないＩＤ（メッセージＩＤ）を有する正常データフレームを送信する（ステップＳ６０３）。他のＥＣＵで利用されないメッセージＩＤとは、車載ネットワークシステム１０においてバス２００に接続された、不正検知ＥＣＵ１００以外の、いずれのＥＣＵ（ＥＣＵ４００ａ〜４００ｄ）においてもそのメッセージＩＤを識別して行うべき処理が定められていないメッセージＩＤである。例えば、不正検知ＥＣＵ１００以外の、バス２００に接続されたいずれのＥＣＵも、０ｘ２００というメッセージＩＤのデータフレームを送信せず、０ｘ２００というメッセージＩＤのデータフレームを受信した場合にそのデータフレームに対応した機能処理等を実行しない場合において、ステップＳ６０３において不正検知ＥＣＵ１００は、０ｘ２００というメッセージＩＤの正常データフレームを送信する。ステップＳ６０３で送信される正常データフレームは、例えばデータフィールドの長さが０であるデータフレームであることが有用であるが、必ずしもデータフィールドの長さが０でなくても良い。なお、ステップＳ６０３での正常データフレームの送信は、例えば、ステップＳ６０２でエラーフレームを送信した後にバス２００が最初にバスアイドルになった際等に行われる。
【００８３】
［１．１３  動作例３の効果］
本実施の形態の動作例３では、不正検知ＥＣＵ１００が、エラーフレームを用いて不正なフレームの送信阻止（無効化）を行った場合にその後に、正常データフレームを送信する。これにより、正規ＥＣＵの受信エラーカウンタが一方的に増大してしまうことを抑制し、正規ＥＣＵが、パッシブ状態に遷移する可能性を低減し得る。従って、不正なフレームの無効化のためのエラーフレームによって正規ＥＣＵの動作が制限されてしまうことが防止され得る。また、正規ＥＣＵの受信エラーカウンタをデクリメントするために不正検知ＥＣＵ１００により送信される正常データフレームのメッセージＩＤは、他のＥＣＵで利用されないＩＤであるため、正常データフレームを受信した正規ＥＣＵが誤動作を行うことが防止され得る。
【００８４】
［１．１４  不正検知ＥＣＵ１００の動作例４］
図１０は、本実施の形態における不正検知ＥＣＵ１００の動作例４に係る処理手順を示すフローチャートである。以下、同図に即して動作例４について説明する。
【００８５】
不正検知ＥＣＵ１００は、バス２００に流れるフレームを監視し、受信部１１０で受信したフレームが不正なフレームであるか否かを不正判定部１２１で判定する（ステップＳ７０１）。即ち、不正検知ＥＣＵ１００は、いずれかのＥＣＵによりバス２００に送信が開始されたフレームを１ビットずつ受信して監視し、判定ルールに適合しているか否か（不正を示す所定条件に該当するか否か）を判定する。これにより、判定ルールに適合していない（つまり不正を示す所定条件に該当した）不正なフレームが検知され得る。ステップＳ７０１で不正なフレームが検知されない場合は、ステップＳ７０２及びステップＳ７０３をスキップしてステップＳ７０４での処理に進む。
【００８６】
ステップＳ７０１で、不正なフレームを検知した場合には、不正検知ＥＣＵ１００は、送信部１２０等により、エラーフレームを送信する（ステップＳ７０２）。このエラーフレームの送信は、不正なフレームの最後尾が送信される前のタイミングで行われ、これにより、バス２００上で、不正なフレームの少なくとも一部はエラーフレームに上書きされることで無効化される。従って、エラーフレームの送信により、正規ＥＣＵが不正なフレームを受信してその不正なフレームに対応した機能処理等を実行してしまうことが、阻止される。続いて、不正検知ＥＣＵ１００は、正常データフレームの送信管理用のカウンタである正常データフレーム送信回数カウンタを、＋１（インクリメント）する（ステップＳ７０３）。この正常データフレーム送信回数カウンタは、送信したエラーフレームの数と同数の正常フレームを送信するために用いられ、初期値が０（ゼロ）であり、エラーフレームの送信毎に１増加させられ、正常データフレームの送信に成功する毎に１減少させられる。
【００８７】
ステップＳ７０３の後において、或いは、ステップＳ７０１で不正なフレームが検知されない場合において、不正検知ＥＣＵ１００は、正常データフレーム送信回数カウンタの値を確認し（ステップＳ７０４）、０であれば、ステップＳ７０１に遷移する。
【００８８】
ステップＳ７０４において正常データフレーム送信回数カウンタの値が０でなければ、不正検知ＥＣＵ１００は、送信部１２０等により、正常データフレームを送信する（ステップＳ７０５）。ステップＳ７０５での正常データフレームの送信は、バスアイドルとなったバス２００に対して正常データフレームを１ビットずつ送出することで行われる。不正検知ＥＣＵ１００は、その正常データフレームの送信が成功したか否かを判定する（ステップＳ７０６）。ステップＳ７０６では、ステップＳ７０５でバス２００に１ビットずつ送出を開始した正常データフレームについて、他のＥＣＵによるデータフレームの同時送信の可能性があるので、ＣＡＮにおける通信調停の結果等として送信が成功したか否かを判定する。送信が成功したか否かの判定は、例えば、送信した正常データフレームとバス２００に現れたビット値とが一致するか否かにより、行われ、また例えば送信した正常データフレームについてのバス２００に現れたＡＣＫスロットがドミナントであるか否か等により、行われても良い。なお、不正検知ＥＣＵ１００の演算部（ＣＰＵ）３００１が、通信制御部（ＣＡＮコントローラ）３００２から送信が成功したか否かを識別可能な送信完了通知を受けること等によって、送信が成功したか否かを判定することとしても良い。ステップＳ７０６で、正常データフレームの送信が成功したと判定した場合には、不正検知ＥＣＵ１００は、正常データフレーム送信回数カウンタを、−１（デクリメント）して（ステップＳ７０７）、ステップＳ７０１に遷移する。
【００８９】
ステップＳ７０６で、通信調停に負ける等により正常データフレームの送信に成功しなかった（つまり送信に失敗した）と判定した場合には、不正検知ＥＣＵ１００は、ステップＳ７０７をスキップして、ステップＳ７０１に遷移する。これにより、不正検知ＥＣＵ１００の送信部１２０等により、正常データフレームの送信に失敗した場合において、再び正常データフレームが送信されることになる。不正検知ＥＣＵ１００がステップＳ７０２でエラーフレームを送信して、不正なフレームを無効化した場合に、例えば不正ＥＣＵ２００１が直ちに不正なデータフレームの送信を繰り返すようなときにおいては、不正検知ＥＣＵ１００がステップＳ７０５で送信する正常データフレームがその不正なデータフレームによって通信調停に負ける可能性がある。このようなときでも不正検知ＥＣＵ１００は、正常データフレーム送信回数カウンタに従っていずれ正常データフレームを送信し得る。
【００９０】
［１．１５  動作例４の効果］
本実施の形態の動作例４では、不正検知ＥＣＵ１００が、エラーフレームを用いて不正なフレームの送信阻止（無効化）を行った場合にその後に、正常データフレームを送信する。これにより、正規ＥＣＵの受信エラーカウンタが一方的に増大してしまうことを抑制し、正規ＥＣＵが、パッシブ状態に遷移する可能性を低減し得る。従って、不正なフレームの無効化のためのエラーフレームによって正規ＥＣＵの動作が制限されてしまうことが防止され得る。また、不正検知ＥＣＵ１００は正常データフレーム送信回数カウンタを用いて、送信したエラーフレームの数と同数の正常データフレームを送信する。これにより、万が一、正常データフレームが通信調停等によって一時的に送信できなかった場合でも、正規ＥＣＵの受信エラーカウンタをデクリメントするために正常データフレームが送信されることを保証し得る。このため、不正なフレームの無効化のためのエラーフレームによって正規ＥＣＵの動作が制限されてしまうことが防止され得る。
【００９１】
［１．１６  不正検知ＥＣＵ１００の動作例５］
図１１は、本実施の形態における不正検知ＥＣＵ１００の動作例５に係る処理手順を示すフローチャートである。以下、同図に即して動作例５について説明する。
【００９２】
不正検知ＥＣＵ１００は、バス２００に流れるフレームを監視し、受信部１１０で受信したフレームが不正なフレームであるか否か（つまり不正を示す所定条件に該当するか否か）を不正判定部１２１で判定する（ステップＳ８０１）。ステップＳ８０１で不正なフレームが検知されない場合は、ステップＳ８０２及びステップＳ８０３をスキップしてステップＳ８０４での処理に進む。
【００９３】
ステップＳ８０１で、不正なフレームを検知した場合には、不正検知ＥＣＵ１００は、送信部１２０等により、エラーフレームを送信する（ステップＳ８０２）。続いて、不正検知ＥＣＵ１００は、正常データフレームの送信管理用のカウンタである正常データフレーム送信回数カウンタを、＋１（インクリメント）する（ステップＳ８０３）。
【００９４】
ステップＳ８０３の後において、或いは、ステップＳ８０１で不正なフレームが検知されない場合において、不正検知ＥＣＵ１００は、正常データフレーム送信回数カウンタの値を確認し（ステップＳ８０４）、０であれば、ステップＳ８０１に遷移する。
【００９５】
ステップＳ８０４において正常データフレーム送信回数カウンタの値が０でなければ、不正検知ＥＣＵ１００は、送信部１２０等により、正常データフレームを送信する（ステップＳ８０５）。続いて、不正検知ＥＣＵ１００は、その正常データフレームの送信が成功したか否かを判定する（ステップＳ８０６）。ステップＳ８０６で、正常データフレームの送信が成功したと判定した場合には、不正検知ＥＣＵ１００は、正常データフレーム送信回数カウンタを、−１（デクリメント）して（ステップＳ８０７）、ステップＳ８０８に遷移する。
【００９６】
ステップＳ８０６で、通信調停に負ける等により正常データフレームの送信が成功しなかったと判定した場合には、不正検知ＥＣＵ１００は、ステップＳ８０７をスキップして、ステップＳ８０８に遷移する。
【００９７】
なお、ステップＳ８０１、Ｓ８０２、Ｓ８０３、Ｓ８０４、Ｓ８０５、Ｓ８０６、Ｓ８０７はそれぞれ、上述のステップＳ７０１、Ｓ７０２、Ｓ７０３、Ｓ７０４、Ｓ７０５、Ｓ７０６、Ｓ７０７と同様である。
【００９８】
ステップＳ８０７の後において、或いは、ステップＳ８０６で正常データフレームの送信に成功しなかったと判定した場合において、不正検知ＥＣＵ１００は、バス２００上に正常データフレームが流れたか否かを確認（判定）する（ステップＳ８０８）。具体的にはステップＳ８０８では、不正検知ＥＣＵ１００は、例えば、ＣＡＮプロトコルに従った正常データフレームであって不正なフレームでない（つまり不正を示す所定条件に該当しない）正常データフレームをバス２００から受信したか否かを確認する。ステップＳ８０８で、バス２００上に正常データフレームが流れなかったと判定した場合には、ステップＳ８０９及びステップＳ８１０をスキップしてステップＳ８０１に遷移する。
【００９９】
ステップＳ８０８で、バス２００上に正常データフレームが流れたことを確認した場合には、不正検知ＥＣＵ１００は、正常データフレーム送信回数カウンタが０より大きい限り（ステップＳ８０９）、正常データフレーム送信回数カウンタをー１（デクリメント）して（ステップＳ８１０）、ステップＳ８０１に遷移する。この正常データフレーム送信回数カウンタは、送信したエラーフレームの数から、エラーフレームの送信後に不正なフレームでない正常データフレームがバス２００から受信された数を減算して得られる数以上の正常データフレームを送信するために用いられる。正常データフレーム送信回数カウンタは、初期値が０であり、概ね、エラーフレームの送信に対応して増加させられ、正常データフレームの送信に成功した場合或いはバス２００上に他のＥＣＵにより正常データフレームが送信された場合に対応して減少させられる。
【０１００】
［１．１７  動作例５の効果］
本実施の形態の動作例５では、不正検知ＥＣＵ１００が、エラーフレームを用いて不正なフレームの送信阻止（無効化）を行った場合にその後に、正常データフレームを送信する。これにより、正規ＥＣＵの受信エラーカウンタが一方的に増大してしまうことを抑制し、正規ＥＣＵが、パッシブ状態に遷移する可能性を低減し得る。従って、不正なフレームの無効化のためのエラーフレームによって正規ＥＣＵの動作が制限されてしまうことが防止され得る。また、不正検知ＥＣＵ１００は正常データフレーム送信回数カウンタを用いて、送信したエラーフレームの数と同数の正常データフレームがバス２００上に流れるようにする。これにより、万が一、正常データフレームが通信調停等によって一時的に送信できなかった場合でも、正規ＥＣＵの受信エラーカウンタをデクリメントするために正常データフレームが送信されることを保証し得る。このため、不正なフレームの無効化のためのエラーフレームによって正規ＥＣＵの動作が制限されてしまうことが防止され得る。また、バス２００を流れた正常データフレームの数の分だけ、不正検知ＥＣＵ１００は、正規ＥＣＵの受信エラーカウンタをデクリメントするために自ら送信する正常データフレームの数を減らす。これにより、正規ＥＣＵの受信エラーカウンタをデクリメントするために送信する正常データフレームによるバス占有時間が短くなり、バス帯域への影響が抑制される。
【０１０１】
［１．１８  不正検知ＥＣＵ１００の動作例６］
図１２は、本実施の形態における不正検知ＥＣＵ１００の動作例６に係る処理手順を示すフローチャートである。以下、同図に即して動作例６について説明する。
【０１０２】
不正検知ＥＣＵ１００は、バス２００に流れるフレームを監視し、受信部１１０で受信したフレームが不正なフレームであるか否か（つまり不正を示す所定条件に該当するか否か）を不正判定部１２１で判定する（ステップＳ９０１）。ステップＳ９０１で不正なフレームが検知されない場合は、ステップＳ９０２及びステップＳ９０３をスキップしてステップＳ９０４での処理に進む。
【０１０３】
ステップＳ９０１で、不正なフレームを検知した場合には、不正検知ＥＣＵ１００は、送信部１２０等により、エラーフレームを送信する（ステップＳ９０２）。続いて、不正検知ＥＣＵ１００は、正常データフレームの送信管理用のカウンタである正常データフレーム送信回数カウンタを、＋１（インクリメント）する（ステップＳ９０３）。
【０１０４】
ステップＳ９０３の後において、或いは、ステップＳ９０１で不正なフレームが検知されない場合において、不正検知ＥＣＵ１００は、正常データフレーム送信回数カウンタの値を確認し（ステップＳ９０４）、０であれば、ステップＳ９０１に遷移する。
【０１０５】
ステップＳ９０４において正常データフレーム送信回数カウンタの値が０でなければ、不正検知ＥＣＵ１００は、正常データフレーム送信回数カウンタの値が閾値より大きくなっていれば（ステップＳ９０５）、ステップＳ９０７で送信する正常データフレームのＩＤフィールドに含ませるメッセージＩＤの値を、より小さい値へ変更する（ステップＳ９０６）。ＣＡＮではメッセージＩＤの値が小さいほどバス上での通信調停において優先度が高くなる。正常データフレーム送信回数カウンタの初期値は０であり、閾値は、０以上の予め定められた値であり、例えば０、１、５等といった値をとり得る。閾値が０であれば、正常データフレームの送信に失敗した場合において正常データフレームに用いるメッセージＩＤをより小さい値へ変更することになり得る。また、正常データフレームの送信に失敗した場合において一定条件下（例えば１以上の閾値を超える条件の下）で、正常データフレームに用いるメッセージＩＤを、優先度のより高いものへと変更しても良い。例えば、正常データフレームのメッセージＩＤの初期値としては、ＣＡＮの通信調停における優先度が比較的低いところの大きな値のメッセージＩＤが用いられ、通信調停に負ける等により送信に失敗し、送信すべき正常データフレームの数が増加した場合等においては、ステップＳ９０６の処理で、それより優先度が高いメッセージＩＤ（つまりメッセージＩＤの値が、より小さなもの）に変更される。
【０１０６】
ステップＳ９０５で正常データフレーム送信回数カウンタの値が閾値より大きくなっていない場合において、或いは、ステップＳ９０６の後において、不正検知ＥＣＵ１００は、送信部１２０等により、正常データフレームを送信する（ステップＳ９０７）。
【０１０７】
続いて、不正検知ＥＣＵ１００は、その正常データフレームの送信が成功したか否かを判定する（ステップＳ９０８）。ステップＳ９０８で、正常データフレームの送信が成功したと判定した場合には、不正検知ＥＣＵ１００は、正常データフレーム送信回数カウンタを、−１（デクリメント）して（ステップＳ９０９）、ステップＳ９１０に遷移する。
【０１０８】
ステップＳ９０８で、通信調停に負ける等により正常データフレームの送信が成功しなかったと判定した場合には、不正検知ＥＣＵ１００は、ステップＳ９０９をスキップして、ステップＳ９１０に遷移する。
【０１０９】
ステップＳ９０９の後において、或いは、ステップＳ９０８で正常データフレームの送信に成功しなかったと判定した場合において、不正検知ＥＣＵ１００は、バス２００上に正常データフレームが流れたか否かを確認（判定）する（ステップＳ９１０）。ステップＳ９１０で、バス２００上に正常データフレームが流れなかったと判定した場合には、ステップＳ９１１及びステップＳ９１２をスキップしてステップＳ９０１に遷移する。
【０１１０】
ステップＳ９１０で、バス２００上に正常データフレームが流れたことを確認した場合には、不正検知ＥＣＵ１００は、正常データフレーム送信回数カウンタが０より大きい限り（ステップＳ９１１）、正常データフレーム送信回数カウンタをー１（デクリメント）して（ステップＳ９１２）、ステップＳ９０１に遷移する。
【０１１１】
なお、ステップＳ９０１〜Ｓ９０４、Ｓ９０７〜Ｓ９１２はそれぞれ、上述のステップＳ８０１〜Ｓ８０４、Ｓ８０５〜Ｓ８１０と同様である。また、ステップＳ９０６で、より小さい値に変更した、送信する正常データフレームにおけるメッセージＩＤを、不正検知ＥＣＵ１００は、何らかのタイミングで（例えば、正常データフレーム送信回数カウンタが０になったとき等において）、初期値に戻すようにしても良い。
【０１１２】
［１．１９  動作例６の効果］
本実施の形態の動作例６では、不正検知ＥＣＵ１００が、エラーフレームを用いて不正なフレームの送信阻止（無効化）を行った場合にその後に、正常データフレームを送信する。これにより、正規ＥＣＵの受信エラーカウンタが一方的に増大してしまうことを抑制し、正規ＥＣＵが、パッシブ状態に遷移する可能性を低減し得る。従って、不正なフレームの無効化のためのエラーフレームによって正規ＥＣＵの動作が制限されてしまうことが防止され得る。また、不正検知ＥＣＵ１００は正常データフレーム送信回数カウンタを用いて、送信したエラーフレームの数と同数の正常データフレームがバス２００上に流れるようにする。これにより、万が一、正常データフレームが通信調停等によって一時的に送信できなかった場合でも、正規ＥＣＵの受信エラーカウンタをデクリメントするために正常データフレームが送信されることを保証し得る。このため、不正なフレームの無効化のためのエラーフレームによって正規ＥＣＵの動作が制限されてしまうことが防止され得る。また、バス２００を流れた正常データフレームの数の分だけ、不正検知ＥＣＵ１００は、正規ＥＣＵの受信エラーカウンタをデクリメントするために自ら送信する正常データフレームの数を減らす。これにより、正規ＥＣＵの受信エラーカウンタをデクリメントするために送信する正常データフレームによるバス占有時間が短くなり、バス帯域への影響が抑制される。また、不正検知ＥＣＵ１００は、正常データフレーム送信回数カウンタがある閾値を超えた場合は、正規ＥＣＵの受信エラーカウンタをデクリメントするために送信する正常データフレームの優先度を高くする。これにより、最初は優先度の低いメッセージＩＤを用いた正常データフレームを送信して他のＥＣＵの通信への影響を抑えることができる。そして、正常データフレーム送信回数カウンタがある閾値を超えた場合に正常データフレームに用いるメッセージＩＤを、優先度のより高いものへと変更して、通信調停で負けにくくして、正規ＥＣＵの受信エラーカウンタのデクリメントの実行の確保を図ることができる。
【０１１３】
（実施の形態２）
以下、実施の形態１で示した車載ネットワークシステム１０の一部を変形した車載ネットワークシステムについて説明する。
【０１１４】
本実施の形態に係る車載ネットワークシステムは、実施の形態１で示したＥＣＵ４００ａ等が接続されたバス２００と、別のバス１２００との両方に接続された不正検知ＥＣＵ１００ａを備える。不正検知ＥＣＵ１００ａは、実施の形態１で示した不正検知ＥＣＵ１００の一部を変形したものであり、不正なフレームを検知するとエラーフレームを送信する不正検知機能の他に、バス間でデータフレームを転送する転送機能を有する。
【０１１５】
［２．１  不正検知ＥＣＵ１００ａの構成］
図１３は、不正検知ＥＣＵ１００ａ等の構成の一例を示す構成図である。同図では、図５に示したバス２００と、このバス２００に接続されたＥＣＵ４００ａ及び不正ＥＣＵ２００１とに加えて、バス１２００と、バス１２００に接続された正規ＥＣＵ１４００と、不正ＥＣＵ２０１１と、バス２００及びバス１２００の両方に接続された不正検知ＥＣＵ１００ａとを示している。正規ＥＣＵ１４００は、実施の形態１で示したＥＣＵ４００ａと同様の構成及び機能を有する。なお、不正ＥＣＵ２０１１は、例えば故障状態、或いは、攻撃者にコントロールされた状態等により不正なデータフレームを送信するＥＣＵである。
【０１１６】
不正検知ＥＣＵ１００ａは、ＣＡＮプロトコルに従い、データフレーム及びエラーフレームを送信する機能を有し、バス２００を監視し、不正なデータフレームがバス２００上に流れている場合、エラーフレームを用いて、不正なデータフレームの送信を阻止（つまり不正なデータフレームを無効化）する機能を有する。また、不正検知ＥＣＵ１００ａは、バス２００とバス１２００との間で、一定条件下で、一方のバスから他方のバスへとデータフレームを転送する転送機能を有する。この転送機能を有する不正検知ＥＣＵ１００ａにより、例えばバス２００に接続された正規ＥＣＵ４００ａとバス１２００に接続された正規ＥＣＵ１４００との間でのデータフレーム（メッセージ）の授受が可能となる。
【０１１７】
バス２００ではＣＡＮプロトコルに従ったフレームが送受信され、バス１２００でも同様にＣＡＮプロトコルに従ったフレームが送受信され得る。なお、バス１２００での通信に用いられるプロトコルが必ずしもバス２００での通信に用いられるプロトコルと一致しなくても良く、例えば、バス２００での通信にはＣＡＮプロトコルが用いられ、バス１２００での通信にはＣＡＮ−ＦＤ（CAN with Flexible Data Rate）プロトコルが用いられることとしても良い。両バスのプロトコルが一致しない場合においては、不正検知ＥＣＵ１００ａが、例えば、フレームの転送に際してプロトコル変換を行う機能（ゲートウェイ機能）を有することとしても良い。ここでは、バス２００での通信にもバス１２００での通信にもＣＡＮプロトコルが用いられるものとして説明を続ける。
【０１１８】
不正検知ＥＣＵ１００ａは、図１３に示すように、演算部３００１ａ、通信制御部３００２、通信制御部３００２ａ、通信Ｉ／Ｆ３００３、及び、通信Ｉ／Ｆ３００３ａを備える。演算部３００１ａは通信制御部３００２、３００２ａと、有線又は無線で相互に通信可能となるように構成され、通信制御部３００２と通信Ｉ／Ｆ３００３とは、有線又は無線で相互に通信可能となるように構成され、通信制御部３００２ａと通信Ｉ／Ｆ３００３ａとは、同様に、有線又は無線で相互に通信可能となるように構成されている。図１３では、図５に示した構成要素と同様の構成要素については、同じ符号を付しており、ここでは説明を省略する。通信Ｉ／Ｆ３００３ａは、ＣＡＮバス（バス１２００）に接続してフレームの送受信を行う通信回路であるＣＡＮトランシーバ等である。通信制御部３００２ａは、バス１２００での通信を制御してＣＡＮプロトコルに係る処理を行うプロセッサであるＣＡＮコントローラであり、通信Ｉ／Ｆ３００３ａを介して受信した情報を演算部３００１ａから読み出し可能なデータとする機能、及び、演算部３００１ａからの指示に応じて通信Ｉ／Ｆ３００３ａを介してＣＡＮプロトコルに従ったデータフレーム或いはエラーフレームを送信する機能を有する。また、ＣＡＮコントローラである通信制御部３００２ａは、エラーカウンタ（送信エラーカウンタ及び受信エラーカウンタ）を含み、エラーカウンタの操作及びエラーカウンタに応じた制御等を行う。演算部３００１ａは、ＣＰＵ及びメモリで構成され、メモリに格納された制御プログラムをＣＰＵで実行することにより、通信制御部３００２、３００２ａを制御し、受信したフレームに基づく処理及び送信すべきフレームの生成等に係る各種機能を実現する。
【０１１９】
正規ＥＣＵ４００ａ、正規ＥＣＵ１４００、及び、不正検知ＥＣＵ１００ａは、バス２００或いはバス１２００を介して、電子機器制御に関するデータフレームの送受信等を行う。
【０１２０】
［２．２  不正検知ＥＣＵ１００ａの機能構成］
図１４は、不正検知ＥＣＵ１００ａの機能ブロック図である。
【０１２１】
不正検知ＥＣＵ１００ａは、機能面において図１４に示すように、受信部１１０ａ及び送信部１２０ａを備え、送信部１２０ａは不正判定部１２１を備える。受信部１１０ａ及び送信部１２０ａの機能は、制御プログラムを実行するＣＰＵである演算部３００１ａにより実現される。なお、不正検知ＥＣＵ１００ａは、例えば、ヘッドユニットとしての各種機能（例えばカーナビゲーション等の機能）を有しても良い。
【０１２２】
受信部１１０ａは、バス２００或いはバス１２００へ送信が開始されたフレームを受信する機能を有し、通信制御部３００２或いは通信制御部３００２ａが受信したフレームに係るデータを読み出す。
【０１２３】
不正判定部１２１は、実施の形態１で示したものと同様であり（図６参照）、受信部１１０ａで受信されたデータフレームのデータから、そのデータフレームが不正なフレームかどうかを検知する機能を有する。即ち、不正判定部１２１は、データフレームについて予め定められた判定ルールへの適合性の判定（データフレームが不正であるか否かの判定）を行う。
【０１２４】
送信部１２０ａは、不正判定部１２１により不正なデータフレームが検知された場合に、バス２００及びバス１２００のうちいずれのバスにおいて不正なフレームが送信されたかを判別して、その不正なフレームが送信されているバスへとエラーフレームを送信する機能と、正規ＥＣＵの受信エラーカウンタを適切に制御するためにエラーフレームの送信後に一定条件下で速やかに正常フレーム（そのバスでの通信に用いられるプロトコルに従ったデータフレーム）を送信する機能とを有する。送信部１２０ａは、不正なデータフレームが送信されているバス上に、その不正なデータフレームの最後尾が送信される前にエラーフレームを送信することで、不正なデータフレームの送信を阻止する（不正なデータフレームを無効化する）。送信部１２０ａは、フレーム内容を与えて通信制御部３００２或いは通信制御部３００２ａを制御し、バス２００或いはバス１２００へのフレームの送信を実現させる。
【０１２５】
以下、不正なフレームを検知した場合の不正検知ＥＣＵ１００ａによる処理についての動作例を説明する。不正検知ＥＣＵ１００ａは、例えば、演算部（ＣＰＵ）３００１ａが制御プログラムを実行することで、この動作例に係る動作を実現し得る。
【０１２６】
［２．３  不正検知ＥＣＵ１００ａの動作例］
図１５は、本実施の形態における不正検知ＥＣＵ１００ａの動作例に係る処理手順を示すフローチャートである。以下、同図に即して不正検知ＥＣＵ１００ａの動作例について説明する。
【０１２７】
不正検知ＥＣＵ１００ａは、バス２００及びバス１２００に流れるフレームを監視し、受信部１１０ａでバス２００及びバス１２００のいずれかから受信したフレームが不正なフレームであるか否かを不正判定部１２１で判定する（ステップＳ１０１）。即ち、不正検知ＥＣＵ１００ａは、いずれかのＥＣＵによりバス２００或いはバス１２００に送信が開始されたフレームを１ビットずつ受信して監視し、判定ルールに適合しているか否かを判定する。判定ルールに適合しているか否かの判定は、不正を示す所定条件（判定ルールに適合しないという条件）に該当するか否かの判定とも言える。これにより、判定ルールに適合していない（つまり不正を示す所定条件に該当した）不正なフレームが検知され得る。不正なフレームが検知されない場合は、ステップＳ１０１での処理が繰り返される。
【０１２８】
不正なフレームを検知した場合には、不正検知ＥＣＵ１００ａは、バス２００及びバス１２００のうちいずれのバスにおいて不正なフレームが送信されたかを判別する（ステップＳ１０２）。
【０１２９】
ステップＳ１０２で不正なフレームがバス２００で送信されたと判別した場合には、不正検知ＥＣＵ１００ａは、送信部１２０ａ等により、その不正なフレームが送信されているバス２００へとエラーフレームを送信する（ステップＳ１０３）。このエラーフレームの送信は、不正なフレームの最後尾が送信される前のタイミングで行われ、これにより、バス２００上で、不正なフレームの少なくとも一部はエラーフレームに上書きされることで無効化される。従って、エラーフレームの送信により、正規ＥＣＵ４００ａ等が不正なフレームを受信してその不正なフレームに対応した機能処理等を実行してしまうことが、阻止される。続いて、不正検知ＥＣＵ１００ａは、送信部１２０等により、ＣＡＮプロトコルに従った正常フレーム（正常データフレーム）をバス２００へと送信する（ステップＳ１０４）。ステップＳ１０４での正常フレームの送信は、例えば、ステップＳ１０３でエラーフレームをバス２００に送信した後においてバス２００が最初にバスアイドルになった際に、行われる。なお、ステップＳ１０４での正常フレームの送信は、必ずしもバス２００が最初にバスアイドルになった瞬間に行われる必要はないが、エラーフレームによる正規ＥＣＵへの悪影響（受信エラーカウンタの増大）を低減させる観点において、正常フレームの送信が速やかに行われることは有用である。
【０１３０】
ステップＳ１０２で不正なフレームがバス１２００で送信されたと判別した場合には、不正検知ＥＣＵ１００ａは、送信部１２０ａ等により、その不正なフレームが送信されているバス１２００へとエラーフレームを送信する（ステップＳ１０５）。続いて、不正検知ＥＣＵ１００ａは、送信部１２０等により、ＣＡＮプロトコルに従った正常フレーム（正常データフレーム）をバス１２００へと送信する（ステップＳ１０６）。ステップＳ１０５及びステップＳ１０６は、送信先のバスがバス１２００である点以外については、ステップＳ１０３及びステップＳ１０４と同様である。ステップＳ１０５でのエラーフレームの送信は、不正なフレームの最後尾が送信される前のタイミングで行われ、これにより、バス１２００上で、不正なフレームの少なくとも一部はエラーフレームに上書きされることで無効化される。従って、エラーフレームの送信により、正規ＥＣＵ１４００等が不正なフレームを受信してその不正なフレームに対応した機能処理等を実行してしまうことが、阻止される。なお、ステップＳ１０４或いはステップＳ１０６で送信される正常データフレームは、例えばデータフィールドの長さが０であるデータフレームであることが有用であるが、必ずしもデータフィールドの長さが０でなくても良い。また、ステップＳ１０４或いはステップＳ１０６で送信される正常データフレームのメッセージＩＤは、他のＥＣＵで利用されないメッセージＩＤであることが有用である。ここで、他のＥＣＵで利用されないメッセージＩＤとは、例えば、バス２００に正常データフレームを送信する場合においては、バス２００に接続された、不正検知ＥＣＵ１００ａ以外の、いずれのＥＣＵにおいてもそのメッセージＩＤを識別して行うべき処理が定められていないメッセージＩＤである。また、他のＥＣＵで利用されないメッセージＩＤとは、例えばバス１２００に正常データフレームを送信する場合においては、バス１２００に接続された、不正検知ＥＣＵ１００ａ以外の、いずれのＥＣＵにおいてもそのメッセージＩＤを識別して行うべき処理が定められていないメッセージＩＤである。
【０１３１】
なお、不正検知ＥＣＵ１００ａは、バス２００で不正なデータフレームではないデータフレームを受信した場合において、予め定められた転送ルールに基づいて、そのデータフレームをバス１２００に転送し得る。また、不正検知ＥＣＵ１００ａは、バス１２００で不正なデータフレームではないデータフレームを受信した場合において、予め定められた転送ルールに基づいて、そのデータフレームをバス２００に転送し得る。しかし、不正検知ＥＣＵ１００ａは、不正なデータフレームを受信した場合には、転送を行わない。
【０１３２】
［２．４  実施の形態２の効果］
本実施の形態では、不正検知ＥＣＵ１００ａが、エラーフレームを用いて不正なフレームの送信阻止（無効化）を行う際に、正常データフレームを続けて送信する。不正検知ＥＣＵ１００ａは、不正なフレームを検知してエラーフレームを送信するので、受信ノードによる問題ではなく、不正なフレームを送信した送信ノードによる問題であることが明らかであるので、受信エラーカウンタを増大させることを抑制するために正常フレームを送信している。これにより、正規ＥＣＵの受信エラーカウンタがデクリメントされる。即ち、不正検知ＥＣＵ１００ａによるエラーフレームの送信後の正常フレームの送信により、正規ＥＣＵの受信エラーカウンタが一方的に増大してしまうことが抑制され、正規ＥＣＵがパッシブ状態に遷移する可能性が低減され得る。従って、不正なフレームの無効化のためのエラーフレームによって正規ＥＣＵの動作が制限されてしまうことが防止され得る。不正検知ＥＣＵ１００ａは、不正なフレームを無効化するためのエラーフレームの送信、及び、受信エラーカウンタの増加を抑制するための正常データフレームの送信を、不正なフレームを検知したバスに対してのみ行うことで、あるバスで発生した不正なフレームの影響が他のバスへ波及することを抑制し得る。
【０１３３】
（他の実施の形態）
以上のように、本発明に係る技術の例示として実施の形態１、２を説明した。しかしながら、本発明に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本発明の一実施態様に含まれる。
【０１３４】
（１）上記実施の形態では、不正検知ＥＣＵ１００の送信部１２０が、バス２００へのエラーフレームの送信に続けてバス２００へ正常データフレーム（正常フレーム）を送信する例を示したが、送信部１２０は、そのエラーフレームの送信後から正常フレームの送信の前までに、不正を示す所定条件に該当しない正常フレームをバス２００から受信したときには、正常フレームのその送信を抑止しても良い。
【０１３５】
（２）上記実施の形態では、ＣＡＮプロトコルにおけるデータフレームを標準ＩＤフォーマットで記述しているが、拡張ＩＤフォーマットであっても良い。
【０１３６】
（３）上記実施の形態では不正検知ＥＣＵが、ヘッドユニットである一例を示したが、不正検知ＥＣＵは、不正検知機能を有するＥＣＵであれば良く、必ずしもヘッドユニットとしての機能を有する必要はない。
【０１３７】
（４）上記実施の形態では車載ネットワークシステムを例として説明したが、上述した不正検知ＥＣＵ１００、１００ａは、ＣＡＮプロトコルに従って通信される複数のＥＣＵを接続するネットワークであれば車載ネットワークに限らず利用可能であり、例えば、産業機械、ロボット等に搭載された複数のＥＣＵ間をＣＡＮバスで接続したネットワークにおいて利用され得る。
【０１３８】
（５）上述したＣＡＮプロトコルは、ＴＴＣＡＮ（Time-Triggered CAN）、ＣＡＮ−ＦＤ（CAN with Flexible Data Rate）等の派生的なプロトコルをも包含する広義の意味を有するものであっても良い。
【０１３９】
（６）上記実施の形態における各ＥＣＵ（不正検知ＥＣＵを含む）は、例えば、プロセッサ、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置であることとしたが、ハードディスク装置、ディスプレイ、キーボード、マウス等の他のハードウェア構成要素を含んでいても良い。また、メモリに記憶された制御プログラムがプロセッサにより実行されてソフトウェア的に機能を実現する代わりに、専用のハードウェア（デジタル回路等）によりその機能を実現することとしても良い。また、各ＥＣＵにおけるＣＰＵ、ＣＡＮコントローラ、ＣＡＮトランシーバ等の構成要素は一例に過ぎず、これらの各構成要素は任意の単位で結合或いは分離された集積回路等であっても良い。
【０１４０】
（７）上記実施の形態における各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Large Scale Integration：大規模集積回路）から構成されているとしても良い。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ等を含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記録されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。また、上記各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又はすべてを含むように１チップ化されても良い。また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現しても良い。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
【０１４１】
（８）上記各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしても良い。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ等から構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしても良い。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしても良い。
【０１４２】
（９）本発明の一態様としては、上述した車載ネットワークにおいて不正なフレームの無効化及びその影響の低減化のための通信方法等の方法であるとしても良い。例えば、通信方法は、ＣＡＮバスへ送信が開始されたフレームを受信する受信ステップと、受信ステップで受信されたフレームが不正を示す所定条件に該当した場合に、そのフレームの最後尾が送信される前にエラーフレームをそのバスへ送信し、エラーフレームの送信後にＣＡＮプロトコルに従ったフレームである正常フレームをそのバスへ送信する送信ステップとを含む。また、この方法をコンピュータにより実現するコンピュータプログラムであるとしても良いし、前記コンピュータプログラムからなるデジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラムまたは前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Blu-ray（登録商標） Disc）、半導体メモリ等に記録したものとしても良い。また、これらの記録媒体に記録されている前記デジタル信号であるとしても良い。また、本発明の一態様としては、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしても良い。また、本発明の一態様としては、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記録しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしても良い。また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしても良い。
【０１４３】
（１０）上記実施の形態及び上記変形例で示した各構成要素及び機能を任意に組み合わせることで実現される形態も本発明の範囲に含まれる。
【産業上の利用可能性】
【０１４４】
本発明は、ネットワークで送信された不正なフレームを検知して無効化する車載ネットワークシステム等において利用可能である。
【符号の説明】
【０１４５】
１０  車載ネットワークシステム
１００、１００ａ  不正検知電子制御ユニット（不正検知ＥＣＵ）
１１０、１１０ａ  受信部
１２０、１２０ａ  送信部
１２１  不正判定部
２００、１２００  バス
３１０  エンジン
３２０  ブレーキ
３３０  ドア開閉センサ
３４０  窓開閉センサ
４００ａ、４００ｂ、４００ｃ、４００ｄ、１４００  電子制御ユニット（ＥＣＵ）
２００１、２０１１  不正ＥＣＵ
３００１、３００１ａ、３０１１  演算部（ＣＰＵ）
３００２、３００２ａ、３０１２  通信制御部（ＣＡＮコントローラ）
３００３、３００３ａ、３０１３  通信インタフェース（通信Ｉ／Ｆ）
【図１】
2017069941.tif 000003
【図２】
2017069941.tif 000004
【図３】
2017069941.tif 000005
【図４】
2017069941.tif 000006
【図５】
2017069941.tif 000007
【図６】
2017069941.tif 000008
【図７】
2017069941.tif 000009
【図８】
2017069941.tif 000010
【図９】
2017069941.tif 000011
【図１０】
2017069941.tif 000012
【図１１】
2017069941.tif 000013
【図１２】
2017069941.tif 000014
【図１３】
2017069941.tif 000015
【図１４】
2017069941.tif 000016
【図１５】
2017069941.tif 000017