(57)【特許請求の範囲】
【請求項１】
ＣＡＮ通信線に接続された複数のＥＣＵのうちの、一つのＥＣＵであって、
他の前記ＥＣＵに第１ＣＡＮメッセージを送信する送信部と、
前記送信部が送信した複数の前記第１ＣＡＮメッセージのＣＡＮＩＤを送信ＣＡＮＩＤとして蓄積する蓄積部と、を備える、
ＥＣＵ。
【請求項２】
請求項１に記載のＥＣＵと共に前記ＣＡＮ通信線に接続された監視ＥＣＵであって、
各前記ＥＣＵに対して予め定められたＣＡＮＩＤである正当ＣＡＮＩＤを、各前記ＥＣＵのＥＣＵＩＤと紐づけて格納する格納部と、
各前記ＥＣＵから、前記蓄積部に蓄積された前記送信ＣＡＮＩＤと各前記ＥＣＵのＥＣＵＩＤである送信元ＥＣＵＩＤとを含む第２ＣＡＮメッセージを受信する受信部と、
前記送信ＣＡＮＩＤを前記格納部において前記送信元ＥＣＵＩＤに紐づけられた前記正当ＣＡＮＩＤと照合し、前記正当ＣＡＮＩＤに一致しない前記送信ＣＡＮＩＤが付された前記第１ＣＡＮメッセージを不正と判定する照合部と、を備える、
監視ＥＣＵ。
【請求項３】
前記受信部は、前記第２ＣＡＮメッセージを各前記ＥＣＵから一定周期で繰り返し取得し、
前記第２ＣＡＮメッセージは、直近周期に各前記ＥＣＵから送信された複数の前記第１ＣＡＮメッセージのＣＡＮＩＤを前記送信ＣＡＮＩＤとして含む、
請求項２に記載の監視ＥＣＵ。
【請求項４】
前記ＣＡＮ通信線に接続されていない出力装置と接続され、
前記照合部が前記第１ＣＡＮメッセージを不正と判定すると、前記出力装置にその旨の通知を行う通知部をさらに備える、
請求項２に記載の監視ＥＣＵ。
【請求項５】
前記照合部が前記第１ＣＡＮメッセージを不正と判定すると、第３ＣＡＮメッセージを各前記ＥＣＵに送信する送信部をさらに備え、
前記第３ＣＡＮメッセージは、不正と判定された前記第１ＣＡＮメッセージのＣＡＮＩＤである不正ＣＡＮＩＤを含む前記第２ＣＡＮメッセージに含まれる前記ＥＣＵＩＤである不正ＥＣＵＩＤを含む、
請求項２に記載の監視ＥＣＵ。
【請求項６】
前記第３ＣＡＮメッセージは、前記不正ＣＡＮＩＤを含む、
請求項５に記載の監視ＥＣＵ。
【請求項７】
監視ＥＣＵから第３ＣＡＮメッセージを受信する請求項１に記載のＥＣＵであって、
前記監視ＥＣＵは、
請求項１に記載のＥＣＵと共に前記ＣＡＮ通信線に接続され、
各前記ＥＣＵに対して予め定められたＣＡＮＩＤである正当ＣＡＮＩＤを、各前記ＥＣＵのＥＣＵＩＤと紐づけて格納する格納部と、
各前記ＥＣＵから、前記蓄積部に蓄積された前記送信ＣＡＮＩＤと各前記ＥＣＵのＥＣＵＩＤである送信元ＥＣＵＩＤとを含む第２ＣＡＮメッセージを受信する受信部と、
前記送信ＣＡＮＩＤを前記格納部において前記送信元ＥＣＵＩＤに紐づけられた前記正当ＣＡＮＩＤと照合し、前記正当ＣＡＮＩＤに一致しない前記送信ＣＡＮＩＤが付された前記第１ＣＡＮメッセージを不正と判定する照合部と、
前記照合部が前記第１ＣＡＮメッセージを不正と判定すると、前記第３ＣＡＮメッセージを前記ＣＡＮ通信線上に送信する送信部と、を備え、
前記第３ＣＡＮメッセージは、不正と判定された前記第１ＣＡＮメッセージのＣＡＮＩＤである不正ＣＡＮＩＤを含む前記第２ＣＡＮメッセージに含まれる前記ＥＣＵＩＤである不正ＥＣＵＩＤを含み、
前記第３ＣＡＮメッセージに含まれる前記不正ＥＣＵＩＤが自己のＥＣＵＩＤと一致する場合に、前記第１ＣＡＮメッセージの送信を禁止する、
ＥＣＵ。
【請求項８】
請求項７に記載のＥＣＵであって、
前記第３ＣＡＮメッセージは、前記不正ＥＣＵＩＤと、不正と判定された前記第１ＣＡＮメッセージのＣＡＮＩＤである不正ＣＡＮＩＤとを含み、
前記第３ＣＡＮメッセージに含まれる前記不正ＥＣＵＩＤが自己のＥＣＵＩＤと一致する場合に、前記不正ＣＡＮＩＤが付与された前記第１ＣＡＮメッセージの送信を禁止する、
ＥＣＵ。
【請求項９】
請求項２から請求項６のいずれか１項に記載の監視ＥＣＵと、
複数の前記ＥＣＵとを備える、
ＣＡＮシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＣＡＮ（Controller Area Network）システムにおけるＥＣＵ（Electronic Control Unit）の正当性を判定する技術に関する。
【背景技術】
【０００２】
近年、車両の先進運転支援システム（ＡＤＡＳ：Advanced Driver-Assistance Systems）およびその発展としての自動運転が実用化され、機械学習、ディープラーニング、およびＡＩ（Artificial Intelligence）の車両制御への利用が普及し始めている。機械学習、ディープラーニング、またはＡＩ（Artificial Intelligence）を利用するため、車両の制御システムは、車両以外の機器との通信機能を有することが多い。そのため、この通信機能を利用して、車両に組み込まれているＥＣＵのソフトウェアプログラムを車両の外部から改変し、ＥＣＵ間の通信のＣＡＮ情報を利用することによって、運転者の意図しない車両制御を外部から試みることが可能になっている。【０００３】
この問題に対して、特許文献１では、監視装置によりＣＡＮの通信状況を監視するシステムが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−９６７９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１のシステムによれば、ＥＣＵの送信するＣＡＮメッセージに関するデータがＥＣＵ内に蓄積されないため、ＥＣＵの正当性を監視する監視装置は、バス上をＣＡＮメッセージが送信される毎に、送信時刻、データの宛先であるＥＣＵのＩＤ，データ長、データ内容等を記録する必要があり、処理負荷が大きいという問題があった。【０００６】
本発明は上述の問題点に鑑み、ＣＡＮシステムにおいて、ＥＣＵが送信したＣＡＮメッセージに関するデータをＥＣＵ内に蓄積することを目的とする。
【課題を解決するための手段】
【０００７】
本発明のＥＣＵは、ＣＡＮ通信線に接続された複数のＥＣＵのうちの、一つのＥＣＵであって、他のＥＣＵに第１ＣＡＮメッセージを送信する送信部と、送信部が送信した複数の第１ＣＡＮメッセージのＣＡＮＩＤを送信ＣＡＮＩＤとして蓄積する蓄積部と、を備える。【０００８】
本発明の監視ＥＣＵは、本発明のＥＣＵと共にＣＡＮ通信線に接続された監視ＥＣＵであって、各ＥＣＵに対して予め定められたＣＡＮＩＤである正当ＣＡＮＩＤを、各ＥＣＵのＥＣＵＩＤと紐づけて格納する格納部と、各ＥＣＵから、蓄積部に蓄積された送信ＣＡＮＩＤと各ＥＣＵのＥＣＵＩＤである送信元ＥＣＵＩＤとを含む第２ＣＡＮメッセージを受信する受信部と、送信ＣＡＮＩＤを格納部において送信元ＥＣＵＩＤに紐づけられた正当ＣＡＮＩＤと照合し、正当ＣＡＮＩＤに一致しない送信ＣＡＮＩＤが付された第１ＣＡＮメッセージを不正と判定する照合部と、を備える。【０００９】
本発明のＣＡＮシステムは、本発明の監視ＥＣＵと、本発明の複数のＥＣＵとを備える。
【発明の効果】
【００１０】
本発明によれば、ＥＣＵから送信された複数の第１ＣＡＮメッセージのＣＡＮＩＤが送信ＣＡＮＩＤとしてＥＣＵ内に蓄積される。本発明の目的、特徴、態様、および利点は、以下の詳細な説明と添付図面とによって、より明白となる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１のＣＡＮシステムの構成図である。
【図２】ＣＡＮメッセージの構成図である。
【図３】第２ＣＡＮメッセージの構成図である。
【図４】第１ＣＡＮメッセージのＣＡＮＩＤの蓄積処理におけるＥＣＵのシーケンス図である。
【図５】ＣＡＮＩＤの蓄積処理における蓄積アプリケーションの動作を示すフローチャートである。
【図６】ＥＣＵにおける第２ＣＡＮメッセージの送信処理に関するシーケンスを示す図である。
【図７】監視ＥＣＵにおける第２ＣＡＮメッセージの受信処理に関するシーケンスを示す図である。
【図８】第２ＣＡＮメッセージの受信処理におけるＣＡＮ監視アプリケーションの動作を示すフローチャートである。
【図９】監視ＥＣＵによる第３ＣＡＮメッセージの送信処理のシーケンスを示す図である。
【図１０】第３ＣＡＮメッセージの送信処理におけるＣＡＮ監視アプリケーションの動作を示すフローチャートである。
【図１１】第３ＣＡＮメッセージのＡｒｂｉｔｒａｔｉｏｎ  ｆｉｅｌｄとＤａｔａ  ｆｉｅｌｄを示す図である。
【図１２】各ＥＣＵ１０による第３ＣＡＮメッセージの受信処理のシーケンスを示す図である。
【図１３】第３ＣＡＮメッセージの受信処理における蓄積アプリケーションの動作を示すフローチャートである。
【図１４】実施の形態３のＣＡＮシステムの構成図である。
【図１５】実施の形態４のＣＡＮシステムの構成図である。
【図１６】ＥＣＵまたは監視ＥＣＵのハードウェア構成図である。
【発明を実施するための形態】
【００１２】
＜Ａ．実施の形態１＞
図１は、実施の形態１のＣＡＮシステム１０１の構成図である。図１に示すように、ＣＡＮシステム１０１は、ＥＣＵ１０Ａ−１０Ｄと監視ＥＣＵ２０とを備えている。ＥＣＵ１０Ａ−１０Ｄと監視ＥＣＵ２０は、一本のＣＡＮ通信線２に接続され、ＣＡＮ通信線２を介してＣＡＮ又はＣＡＮ−ＦＤ等のプロトコルに従ったＣＡＮメッセージの送受信を行う。ＥＣＵ１０Ａ−１０Ｄと監視ＥＣＵ２０は同一の車両に搭載されている。図１にはＣＡＮシステム１０１の構成として４つのＥＣＵ１０Ａ−１０Ｄが示されているが、ＣＡＮシステム１０１が備えるＥＣＵの数はこれに限らない。以下の説明において個々のＥＣＵを区別する必要がない場合には、ＥＣＵ１０Ａ−１０Ｄを単にＥＣＵ１０と呼称する。
【００１３】
次に、ＥＣＵ１０の構成について説明する。ＥＣＵ１０は、車載制御装置であり、車両の各部の制御を行う。ＥＣＵ１０は、ＣＡＮ通信線２を介して互いにＣＡＮメッセージを送受信する。ＥＣＵ１０は、ＣＡＮアプリケーション１１、ＣＡＮドライバ１２、および蓄積アプリケーション１３を備えて構成される。ＣＡＮアプリケーション１１は、車両制御に関する種々の処理を行う。
【００１４】
ＣＡＮドライバ１２は、ＣＡＮメッセージの送受信を行う。ここで、各ＥＣＵ１０が他のＥＣＵ１０宛てに送信するＣＡＮメッセージを第１ＣＡＮメッセージと称し、監視ＥＣＵ２０宛てに送信するＣＡＮメッセージを第２ＣＡＮメッセージと称する。すなわち、ＣＡＮドライバ１２は第１ＣＡＮメッセージを送信する送信部として機能する。
【００１５】
蓄積アプリケーション１３はメモリ１４（図４参照）を備えており、ＣＡＮドライバ１２が送信するＣＡＮメッセージのＣＡＮＩＤを、送信ＣＡＮＩＤとしてメモリ１４に蓄積する。メモリ１４に蓄積される送信ＣＡＮＩＤは、一定周期など随時に更新される。このように蓄積アプリケーション１３は、過去の一定期間にＣＡＮドライバ１２が送信した複数の第１ＣＡＮメッセージのＣＡＮＩＤを送信ＣＡＮＩＤとして蓄積する蓄積部として機能する。
【００１６】
ＣＡＮドライバ１２は、メモリ１４に蓄積された送信ＣＡＮＩＤを、第２ＣＡＮメッセージとして一定周期で監視ＥＣＵ２０に送信する。この周期は、例えば１秒である。
【００１７】
次に、ＣＡＮメッセージの構成について説明する。ＣＡＮメッセージには、データフレーム、リモートフレーム、エラーフレームおよびオーバーロードフレームという４種類のフレームが存在する。そのうち、標準の通信にはデータフレームが用いられる。データフレームは、Ｓｔａｒｔ  ｏｆ  Ｆｒａｍｅ、Ａｒｂｉｔｒａｔｉｏｎ  ｆｉｅｌｄ、Ｃｏｎｔｒｏｌ  ｆｉｅｌｄ、Ｄａｔａ  ｆｉｅｌｄ、ＣＲＣ  ｆｉｅｌｄ、Ａｃｋｎｏｗｌｅｄｇｅ  ｆｉｅｌｄ、およびＥｎｄ  ｏｆ  Ｆｒａｍｅを備えている。Ｓｔａｒｔ  ｏｆ  Ｆｒａｍｅはデータフレームの先頭を意味する。Ａｒｂｉｔｒａｔｉｏｎ  ｆｉｅｌｄはＣＡＮ通信の調停に用いられるフィールドで、ここに記載される値をＣＡＮＩＤと呼ぶ。ＣＡＮＩＤは、ＣＡＮメッセージの種別と優先順位を表している。Ｃｏｎｔｒｏｌ  ｆｉｅｌｄは、データフレームの中のＤａｔａ  ｆｉｅｌｄのデータサイズを規定する。ただし、１つのデータフレームにおけるＤａｔａ  ｆｉｅｌｄのデータサイズは最大８バイトである。Ｄａｔａ  ｆｉｅｌｄはデータ本体を表す。ＣＲＣ  ｆｉｅｌｄはデータフレームが正しいか否かの情報である。Ａｃｋｎｏｗｌｅｄｇｅ  ｆｉｅｌｄは、データフレームが正常に受信されたか否かの確認を行う為に利用される。Ｅｎｄ  ｏｆ  Ｆｒａｍｅはデータフレームの終了を意味する。以上は、ＣＡＮ通信線２で通信される物理層の規定に関する。
【００１８】
図２は、ＣＡＮメッセージのＡｒｂｉｔｒａｔｉｏｎ  ｆｉｅｌｄとＤａｔａ  ｆｉｅｌｄを示している。Ａｒｂｉｔｒａｔｉｏｎ  ｆｉｅｌｄにＣＡＮＩＤが記載され、Ｄａｔａ  ｆｉｅｌｄにＣＡＮＤＡＴＡが記載されている。ＣＡＮＤＡＴＡが１つのデータフレームに収まらない場合、複数のデータフレームに分割される。従って、他の通信方法と同様に、ＣＡＮメッセージは複数のデータフレームにより送受信され得る。
【００１９】
図３は、第２ＣＡＮメッセージのＡｒｂｉｔｒａｔｉｏｎ  ｆｉｅｌｄとＤａｔａ  ｆｉｅｌｄを示している。第２ＣＡＮメッセージのＣＡＮＩＤは、「Ｍｏｎｉｔｅｒｉｎｇ」を示す１１ｂｉｔもしくは２９ｂｉｔのビット列である。第２ＣＡＮメッセージのＣＡＮＤＡＴＡには、第２ＣＡＮメッセージの送信元ＥＣＵのＥＣＵＩＤと、送信元ＥＣＵが直近の周期に送信した全ての第１ＣＡＮメッセージのＣＡＮＩＤである送信ＣＡＮＩＤ（Ｏｕｔｐｕｔ  ＣＡＮＩＤ）が記載されている。図３には、ｎ個の送信ＣＡＮＩＤが、Ｏｕｔｐｕｔ  ＣＡＮＩＤ＿０、Ｏｕｔｐｕｔ  ＣＡＮＩＤ＿１、…Ｏｕｔｐｕｔ  ＣＡＮＩＤ＿Ｘとして示されている。
【００２０】
次に、監視ＥＣＵ２０の構成について説明する。監視ＥＣＵ２０は、ＥＣＵ１０と同一の車両に搭載されたＥＣＵであり、ＥＣＵ１０が送受信する第１ＣＡＮメッセージの監視を行い、ＥＣＵ１０の正当性を判断する。監視ＥＣＵ２０は、ＣＡＮドライバ２１、ＣＡＮ監視アプリケーション２２、およびＣＡＮデータベース（ＤＢ）２３を備えている。ＣＡＮドライバ２１は、ＣＡＮ通信線２に対してＣＡＮメッセージの送受信を行う。特に、ＣＡＮドライバ２１は第２ＣＡＮメッセージを受信する。すなわち、ＣＡＮドライバ２１は、ＥＣＵ１０に蓄積された送信ＣＡＮＩＤとＥＣＵ１０のＥＣＵＩＤである送信元ＥＣＵＩＤとを含む第２ＣＡＮメッセージを受信する受信部として機能する。
【００２１】
設計上、各ＥＣＵ１０が正当に送信可能なＣＡＮメッセージは定められている。ＣＡＮ  ＤＢ２３には、各ＥＣＵ１０が正当に送信可能なＣＡＮメッセージのＣＡＮＩＤである正当ＣＡＮＩＤが、設計情報として記録されている。すなわち、ＣＡＮ  ＤＢ２３は、各ＥＣＵ１０に対して予め定められたＣＡＮＩＤである正当ＣＡＮＩＤを、各ＥＣＵ１０のＥＣＵＩＤと紐づけて格納する格納部として機能する。
【００２２】
ＣＡＮ監視アプリケーション２２は、ＣＡＮドライバ２１が受信した第２ＣＡＮメッセージから、送信元ＥＣＵを表すＥＣＵＩＤと、送信元ＥＣＵが直近周期に送信した第１ＣＡＮメッセージのＣＡＮＩＤを表すＯｕｔｐｕｔ  ＣＡＮＩＤを取得する。そして、ＣＡＮ監視アプリケーション２２は、Ｏｕｔｐｕｔ  ＣＡＮＩＤを、ＣＡＮデータベース２３においてＥＣＵＩＤに紐づけられた正当ＣＡＮＩＤと照合することにより、送信元ＥＣＵの正当性を判断する。具体的には、ＣＡＮ監視アプリケーション２２は、第２ＣＡＮメッセージに含まれる全てのＯｕｔｐｕｔ  ＣＡＮＩＤが正当ＣＡＮＩＤに一致すれば、送信元ＥＣＵを正当と判断し、そうでなければ不当、すなわち送信元ＥＣＵが改ざんされた可能性があると判断する。すなわち、ＣＡＮ監視アプリケーション２２は、送信ＣＡＮＩＤをＣＡＮ  ＤＢ２３において送信元ＥＣＵＩＤに紐づけられた正当ＣＡＮＩＤと照合し、正当ＣＡＮＩＤに一致しない送信ＣＡＮＩＤが付された第１ＣＡＮメッセージを不正と判定する照合部として機能する。
【００２３】
図４は、ＥＣＵ１０におけるＣＡＮＩＤの蓄積処理に関するシーケンスを示している。蓄積アプリケーション１３は、一定周期で繰り返しＣＡＮドライバ１２に送信確認を行う（ステップＳ１０１，ステップＳ１０４，ステップＳ１０６）。１回目の送信確認（ステップＳ１０１）の時点では、まだＣＡＮドライバ１２は第１ＣＡＮメッセージを送信していない。次に、ＣＡＮアプリケーション１１がＣＡＮドライバ１２に第１ＣＡＮメッセージの送信依頼を行う（ステップＳ１０２）。そして、ＣＡＮドライバ１２はＣＡＮアプリケーション１１からの送信依頼に応じてデータフレームを創出し、第１ＣＡＮメッセージをＣＡＮ通信線２上に送信する（ステップＳ１０３）。
【００２４】
その後、蓄積アプリケーション１３が２回目の送信確認をＣＡＮドライバ１２に行う（ステップＳ１０４）。このとき、ＣＡＮドライバ１２は第１ＣＡＮメッセージを送信しているため、蓄積アプリケーション１３は当該第１ＣＡＮメッセージのＣＡＮＩＤを送信ＣＡＮＩＤとしてメモリ１４に記録する（ステップＳ１０５）。
【００２５】
その後、蓄積アプリケーション１３が３回目の送信確認をＣＡＮドライバ１２に行う（ステップＳ１０６）。しかし、このとき、ＣＡＮドライバ１２は第１ＣＡＮメッセージを送信していないため、蓄積アプリケーション１３はＣＡＮＩＤの記録を行わない。
【００２６】
図５は、ＣＡＮＩＤの蓄積処理における蓄積アプリケーション１３の動作を示すフローチャートである。図５において、まず、蓄積アプリケーション１３は、ＣＡＮドライバ１２が第１ＣＡＮメッセージの送信中か否かを判断する（ステップＳ２０１）。ステップＳ２０１においてＣＡＮドライバ１２が第１ＣＡＮメッセージの送信中でなければ、蓄積アプリケーション１３は、一定周期が経過した後に再びステップＳ２０１の処理を行う。ステップＳ２０１においてＣＡＮドライバ１２が第１ＣＡＮメッセージの送信中であれば、蓄積アプリケーション１３は当該第１ＣＡＮメッセージからＣＡＮＩＤを抽出する（ステップＳ２０２）。そして、蓄積アプリケーション１３は、メモリ内にステップＳ２０２で抽出したＣＡＮＩＤが存在するか否かを判断する（ステップＳ２０３）。ステップＳ２０３において、メモリ内にステップＳ２０２で抽出したＣＡＮＩＤが存在すれば、蓄積アプリケーション１３の動作はステップＳ２０１に戻る。ステップＳ２０３において、メモリ内にステップＳ２０２で抽出したＣＡＮＩＤが存在しなければ、蓄積アプリケーション１３は当該ＣＡＮＩＤをメモリに記録し（ステップＳ２０４）、ステップＳ２０１に戻る。こうして、蓄積アプリケーション１３はメモリに第１ＣＡＮメッセージのＣＡＮＩＤを蓄積する。
【００２７】
図６は、ＥＣＵ１０における第２ＣＡＮメッセージの送信処理に関するシーケンスを示している。図６に示すように、ＥＣＵ１０はタイマ１５を備えている。タイマ１５は一定周期で起動し、蓄積アプリケーション１３に第２ＣＡＮメッセージの送信開始を通知する。タイマ１５が蓄積アプリケーション１３に第２ＣＡＮメッセージの送信開始を通知すると（ステップＳ３０１）、蓄積アプリケーション１３は、メモリ１４に蓄積された全てのＣＡＮＩＤを読み込むと共に（ステップＳ３０２）、これらのＣＡＮＩＤとＥＣＵＩＤをＣＡＮドライバ１２に出力し、図３で示したメッセージ内容に従って第２ＣＡＮメッセージの送信を依頼する（ステップＳ３０３）。ＣＡＮドライバ１２は、蓄積アプリケーション１３から送信依頼を受けると、第２ＣＡＮメッセージを送信する（ステップＳ３０４）。なお、蓄積アプリケーション１３は、ステップＳ３０３の送信依頼後、メモリ１４に蓄積されたＣＡＮＩＤを削除する（ステップＳ３０５）。これにより、メモリ１４には第２ＣＡＮメッセージとして監視ＥＣＵ２０に送信されていない直近周期のＣＡＮＩＤのみが蓄積されることになる。
【００２８】
図７は、監視ＥＣＵ２０における第２ＣＡＮメッセージの受信処理に関するシーケンスを示している。図７に示すように、監視ＥＣＵ２０のＣＡＮドライバ２１は、ＥＣＵ１０から送信されるＣＡＮメッセージのＣＡＮＩＤが図３に示したＭｏｎｉｔｅｒｉｎｇの場合に、ＣＡＮメッセージの受信を行う（ステップＳ４０１）。ここでＣＡＮドライバ２１が受信するＣＡＮメッセージは、第２ＣＡＮメッセージである。次に、ＣＡＮドライバ２１は、第２ＣＡＮメッセージを受信したことをＣＡＮ監視アプリケーション２２に通知する（ステップＳ４０２）。そして、ＣＡＮ監視アプリケーション２２は、ステップＳ４０１で受信した第２ＣＡＮメッセージに含まれる複数のＯｕｔｐｕｔ  ＣＡＮＩＤを、ＣＡＮ  ＤＢ２３内の正当ＣＡＮＩＤと比較照合する（ステップＳ４０３）。具体的には、ＣＡＮ  ＤＢ２３において、第２ＣＡＮメッセージ内のＥＣＵＩＤと同一のＥＣＵＩＤに紐づけられた正当ＣＡＮＩＤを、第２ＣＡＮメッセージ内の複数のＯｕｔｐｕｔ  ＣＡＮＩＤと比較照合する。そして、ＣＡＮ監視アプリケーション２２は、第２ＣＡＮメッセージ内の複数のＯｕｔｐｕｔ  ＣＡＮＩＤの中に正当ＣＡＮＩＤに一致しないものがあれば、当該Ｏｕｔｐｕｔ  ＣＡＮＩＤを不正ＣＡＮＩＤとし、第２ＣＡＮメッセージに含まれるＥＣＵＩＤを不正ＥＣＵＩＤと判定する。
【００２９】
図８は、第２ＣＡＮメッセージの受信処理におけるＣＡＮ監視アプリケーション２２の動作を示すフローチャートである。まず、ＣＡＮ監視アプリケーション２２はＣＡＮドライバ１２から第２ＣＡＮメッセージの受信連絡があるか判断する（ステップＳ５０１）。ステップＳ５０１において、ＣＡＮドライバ１２から第２ＣＡＮメッセージの受信連絡がなければ、ＣＡＮ監視アプリケーション２２はステップＳ５０１の処理を繰り返す。ステップＳ５０１において、ＣＡＮドライバ１２から第２ＣＡＮメッセージの受信連絡があれば、ＣＡＮ監視アプリケーション２２は、受信した第２ＣＡＮメッセージからデータを抽出し、ＥＣＵＩＤと全てのＯｕｔｐｕｔ  ＣＡＮＩＤとを取得する（ステップＳ５０２）。
【００３０】
そして、ＣＡＮ監視アプリケーション２２は、ステップＳ５０２で取得したＥＣＵＩＤをＣＡＮ  ＤＢ２３内で検索し、ＥＣＵＩＤに紐づけられた正当ＣＡＮＩＤを取得する（ステップＳ５０３）。すなわち、この正当ＣＡＮＩＤは、ＥＣＵＩＤで特定されるＥＣＵが正当に送信しうるＣＡＮメッセージの種別を表すＣＡＮＩＤである。
【００３１】
次に、ＣＡＮ監視アプリケーション２２は、ステップＳ５０２で取得した全てのＯｕｔｐｕｔ  ＣＡＮＩＤと、ステップＳ５０３で取得した正当ＣＡＮＩＤとを比較し、両者が一致するかを判断する（ステップＳ５０４）。全てのＯｕｔｐｕｔ  ＣＡＮＩＤが正当ＣＡＮＩＤと一致する場合には、第２ＣＡＮメッセージの送信元のＥＣＵが正当であると判断し、ＣＡＮ監視アプリケーション２２は第２ＣＡＮメッセージの受信待ち（ステップＳ５０１）に戻る。一方、Ｏｕｔｐｕｔ  ＣＡＮＩＤの中に正当ＣＡＮＩＤと異なるものがある場合、ＣＡＮ監視アプリケーション２２は、第２ＣＡＮメッセージの送信元ＥＣＵが改竄された可能性があると判断し、第２ＣＡＮメッセージの送信元ＥＣＵを不正ＥＣＵと判定する。なお、正当ＣＡＮＩＤと異なるＯｕｔｐｕｔ  ＣＡＮＩＤは、不正ＥＣＵから不正に送信された第１ＣＡＮメッセージのＣＡＮＩＤであり、これを不正ＣＡＮＩＤと称する。ＣＡＮ監視アプリケーション２２は、不正ＥＣＵのＥＣＵＩＤである不正ＥＣＵＩＤと、不正ＣＡＮＩＤを、メモリ１４に記録する（ステップＳ５０５）。
【００３２】
実施の形態１のＣＡＮシステム１０１におけるＥＣＵ１０は、他のＥＣＵ１０に第１ＣＡＮメッセージを送信する送信部であるＣＡＮドライバ１２と、送信部が送信した複数の第１ＣＡＮメッセージのＣＡＮＩＤを送信ＣＡＮＩＤとして蓄積する蓄積部である蓄積アプリケーション１３と、を備える。このように、ＣＡＮシステム１０１では、ＥＣＵ１０が送信した第１ＣＡＮメッセージに関するデータである送信ＣＡＮＩＤをＥＣＵ１０内に蓄積することができる。従って、ＥＣＵ１０が第１ＣＡＮメッセージを送信するたびに、監視ＥＣＵ２０が送信ＣＡＮＩＤを蓄積する必要がない。また、ＥＣＵ１０から複数の第１ＣＡＮメッセージに関する送信ＣＡＮＩＤをまとめて監視ＥＣＵ２０に送信することができるため、ＥＣＵ１０から監視ＥＣＵ２０への通信回数を減らすことができる。蓄積アプリケーション１３は、送信ＣＡＮＩＤを蓄積する処理を行うだけであり、特別な判断処理を行わない。従って、ＥＣＵ１０は、送信ＣＡＮＩＤを蓄積する以外に多くのメモリを必要としない。そのため、汎用的なＥＣＵに蓄積アプリケーション１３を組み込むことによって簡単にＥＣＵ１０を実現することが可能である。
【００３３】
また、実施の形態１のＣＡＮシステム１０１における監視ＥＣＵ２０は、各ＥＣＵ１０に対して予め定められたＣＡＮＩＤである正当ＣＡＮＩＤを、各ＥＣＵ１０のＥＣＵＩＤと紐づけて格納する格納部と、各ＥＣＵ１０から、蓄積部に蓄積された送信ＣＡＮＩＤと各ＥＣＵのＥＣＵＩＤである送信元ＥＣＵＩＤとを含む第２ＣＡＮメッセージを受信する受信部と、送信ＣＡＮＩＤを格納部において送信元ＥＣＵＩＤに紐づけられた正当ＣＡＮＩＤと照合し、正当ＣＡＮＩＤに一致しない送信ＣＡＮＩＤが付された第１ＣＡＮメッセージを不正と判定する照合部と、を備える。このように、監視ＥＣＵ２０は第２ＣＡＮメッセージに基づいて各ＥＣＵ１０の正当性を判定することができる。送信ＣＡＮＩＤは各ＥＣＵ１０で蓄積されるため、監視ＥＣＵ２０は送信ＣＡＮＩＤを蓄積する必要がない。
【００３４】
＜Ｂ．実施の形態２＞
実施の形態２のＣＡＮシステム１０２は、図１に示した実施の形態１のＣＡＮシステム１０１と同様の構成であるが、ＣＡＮシステム１０１の機能に加えて、不正ＥＣＵにおけるＣＡＮメッセージの送信を制限する機能（以下、「送信制限機能」と称する）を有する。以下、送信制限機能に関するＣＡＮシステム１０２の動作について説明する。送信制限機能に関して、監視ＥＣＵ２０は第３ＣＡＮメッセージの送信処理を行い、各ＥＣＵ１０は第３ＣＡＮメッセージの受信処理を行う。第３ＣＡＮメッセージについては図１１で後述する。
【００３５】
図９は、監視ＥＣＵ２０による第３ＣＡＮメッセージの送信処理のシーケンスを示している。まず、ＣＡＮ監視アプリケーション２２は、あるＥＣＵ１０を不正ＥＣＵと判断すると（ステップＳ６０１）、ＣＡＮドライバ２１に対して第３ＣＡＮメッセージの送信を依頼する（ステップＳ６０２）。送信依頼を受けたＣＡＮドライバ２１は、第３ＣＡＮメッセージをＣＡＮ通信線２上に送信する（ステップＳ６０３）。このように、ＣＡＮドライバ２１は、照合部であるＣＡＮ監視アプリケーション２２が第１ＣＡＮメッセージを不正と判定すると、第３ＣＡＮメッセージを各ＥＣＵ１０に送信する送信部として機能する。
【００３６】
図１０は、第３ＣＡＮメッセージの送信処理におけるＣＡＮ監視アプリケーション２２の動作を示すフローチャートである。まず、ＣＡＮ監視アプリケーション２２は、新たに受信した第２ＣＡＮメッセージに基づき不正ＥＣＵが存在するかを判断する（ステップＳ７０１）。ＣＡＮ監視アプリケーション２２は、不正ＥＣＵを検知するまでステップＳ７０１の処理を繰り返す。ステップＳ７０１において不正ＥＣＵが存在すれば、ＣＡＮ監視アプリケーション２２は、不正ＥＣＵＩＤおよび不正ＣＡＮＩＤをＣＡＮドライバ２１に出力し、第３ＣＡＮメッセージの送信依頼を行う（ステップＳ７０２）。そして、ＣＡＮ監視アプリケーション２２はステップＳ７０１の処理に戻る。
【００３７】
図１１は、第３ＣＡＮメッセージのＡｒｂｉｔｒａｔｉｏｎ  ｆｉｅｌｄとＤａｔａ  ｆｉｅｌｄを示している。第３ＣＡＮメッセージのＣＡＮＩＤは、「ＭｏｎｉｔｅｒｉｎｇＲｅｓｕｌｔ」を示す１１ｂｉｔもしくは２９ｂｉｔのビット列である。第３ＣＡＮメッセージのＣＡＮＤＡＴＡには、不正ＥＣＵＩＤおよび不正ＣＡＮＩＤが含まれる。図１１には、Ｘ個の不正ＣＡＮＩＤが、不正ＣＡＮＩＤ＿０、不正ＣＡＮＩＤ＿１、…不正ＣＡＮＩＤ＿Ｘとして示されている。
【００３８】
図１２は、各ＥＣＵ１０による第３ＣＡＮメッセージの受信処理のシーケンスを示している。まず、ＥＣＵ１０のＣＡＮドライバ１２は、ＣＡＮメッセージを受信する（ステップＳ８０１）。ＣＡＮドライバ１２は、受信したＣＡＮメッセージのＣＡＮＩＤが「ＭｏｎｉｔｅｒｉｎｇＲｅｓｕｌｔ」である場合、蓄積アプリケーション１３に第３ＣＡＮメッセージを受信したことを通知する（ステップＳ８０２）。そして、蓄積アプリケーション１３は受信した第３ＣＡＮメッセージ内の不正ＥＣＵＩＤを自身のＥＣＵＩＤと比較照合し（ステップＳ８０３）、一致した場合には、ＣＡＮドライバ１２にＣＡＮメッセージの送信を禁止する（ステップＳ８０４）。
【００３９】
図１３は、第３ＣＡＮメッセージの受信処理における蓄積アプリケーション１３の動作を示すフローチャートである。まず、蓄積アプリケーション１３は、ＣＡＮドライバ１２が受信したＣＡＮメッセージのＣＡＮＩＤが「ＭｏｎｉｔｅｒｉｎｇＲｅｓｕｌｔ」であるか否かを判断する（ステップＳ９０１）。ステップＳ９０１においてＣＡＮＩＤが「ＭｏｎｉｔｅｒｉｎｇＲｅｓｕｌｔ」でなければ、蓄積アプリケーション１３は再びステップＳ９０１の処理を繰り返す。ステップＳ９０１においてＣＡＮＩＤが「ＭｏｎｉｔｅｒｉｎｇＲｅｓｕｌｔ」であれば、蓄積アプリケーション１３は受信したＣＡＮメッセージ、すなわち第３ＣＡＮメッセージから不正ＥＣＵＩＤを抽出する（ステップＳ９０２）。そして、蓄積アプリケーション１３はステップＳ９０２で抽出した不正ＥＣＵＩＤを自身のＥＣＵＩＤと比較照合し（ステップＳ９０３）、両者が一致しなければステップＳ９０１の処理に戻る。ステップＳ９０３において不正ＥＣＵＩＤが自身のＥＣＵＩＤと一致する場合は、ＣＡＮドライバ１２にＣＡＮメッセージの送信を禁止する（ステップＳ９０４）。これにより、第３ＣＡＮメッセージを受信した不正ＥＣＵは、それ以降のＣＡＮメッセージの送信が禁止される。
【００４０】
なお、図１２のステップＳ８０４または図１３のステップＳ９０４において、蓄積アプリケーション１３は、全てのＣＡＮメッセージの送信を禁止しても良いし、不正ＣＡＮＩＤのＣＡＮメッセージの送信のみ禁止しても良い。蓄積アプリケーション１３が全てのＣＡＮメッセージの送信を禁止する場合、第３ＣＡＮメッセージは不正ＣＡＮＩＤを含まなくても良い。
【００４１】
実施の形態２のＣＡＮシステム１０２における監視ＥＣＵ２０は、照合部であるＣＡＮ監視アプリケーション２２が第１ＣＡＮメッセージを不正と判定すると、第３ＣＡＮメッセージを各ＥＣＵに送信する送信部であるＣＡＮドライバ２１を備える。そして、第３ＣＡＮメッセージは不正ＥＣＵＩＤを含む。不正ＥＣＵＩＤは、不正と判定された第１ＣＡＮメッセージのＣＡＮＩＤである不正ＣＡＮＩＤを含む第２ＣＡＮメッセージに含まれるＥＣＵＩＤである。これにより、不正と判定された第１ＣＡＮメッセージを送信したＥＣＵ１０に対して、その旨を通知することが可能となる。
【００４２】
また、実施の形態２のＣＡＮシステム１０２において、監視ＥＣＵ２０から第３ＣＡＮメッセージを受信したＥＣＵ１０は、第３ＣＡＮメッセージに含まれる不正ＥＣＵＩＤが自己のＥＣＵＩＤと一致する場合に、第１ＣＡＮメッセージの送信を禁止する。これにより、改竄された不正なＥＣＵ１０による通信が制限される。
【００４３】
＜Ｃ．実施の形態３＞
図１４は、実施の形態３のＣＡＮシステム１０３の構成を示すブロック図である。ＣＡＮシステム１０３は、実施の形態１または２のＣＡＮシステム１０１，１０２の構成に加えて、監視ＥＣＵ２０に接続された出力装置３０を備えている。出力装置３０は、ＣＡＮ通信線２には接続されていない。出力装置３０は、例えば、ＥＣＵ１０および監視ＥＣＵ２０と同一の車両に搭載された表示装置または音声出力装置である。あるいは、出力装置３０は当該車両に搭載されていなくても良く、例えば汎用パーソナルコンピュータであっても良いし、車両の運転者等が携帯するＰＤＡまたはスマートフォンなどの携帯端末であっても良い。
【００４４】
監視ＥＣＵ２０は、実施の形態１または実施の形態２で説明した機能に加えて、不正ＥＣＵの情報を出力装置３０に送信する機能を有する。すなわち、監視ＥＣＵ２０のＣＡＮ監視アプリケーション２２は、第１ＣＡＮメッセージを不正と判定すると、出力装置３０にその旨の通知を行う通知部として機能する。ここで、不正ＥＣＵの情報は、不正ＥＣＵＩＤを含み、不正ＣＡＮＩＤを含んでも良い。不正ＥＣＵの情報を監視ＥＣＵ２０から受信した出力装置３０は、車両の運転者等にその旨の通知を表示または音声出力によって行う。その一例として、表示機能を有する出力装置３０は、「不正なＣＡＮメッセージの通信が確認されました。ディーラーで診断を受けてください。」などのエラーメッセージを表示しても良い。
【００４５】
実施の形態３のＣＡＮシステム１０３における監視ＥＣＵ２０は、ＣＡＮ通信線に接続されていない出力装置３０と接続され、照合部が第１ＣＡＮメッセージを不正と判定すると、出力装置にその旨の通知を行う通知部を備える。従って、車両の運転者等のユーザに対してＥＣＵ１０が不正であることを通知し対処を促すことができる。
【００４６】
＜Ｄ．実施の形態４＞
図１５は、実施の形態４のＣＡＮシステム１０４の構成図である。ＣＡＮシステム１０４は、実施の形態１のＣＡＮシステム１０１から監視ＥＣＵ２０を削除し、ＥＣＵ１０Ａ−１０Ｄに代えてＥＣＵ１０ＡＡ−１０ＡＤを設けたものである。ＥＣＵ１０ＡＡ−１０ＡＤの構成は同様であるため、図１５ではＥＣＵ１０ＡＡの構成のみを示している。ＥＣＵ１０ＡＡは、実施の形態１のＥＣＵ１０Ａの構成に加えて、実施の形態１の監視ＥＣＵ２０のＣＡＮ監視アプリケーション２２およびＣＡＮ  ＤＢ２３を備えている。
【００４７】
ＥＣＵ１０ＡＡにおいて、蓄積アプリケーション１３は、一定期間に亘り、ＣＡＮドライバ１２から他のＥＣＵに送信される第１ＣＡＮメッセージのＣＡＮＩＤをメモリ１４に蓄積する。そして、ＣＡＮ監視アプリケーション２２は、メモリ１４に蓄積されたＣＡＮＩＤを、ＣＡＮ  ＤＢ２３に格納された正当ＣＡＮＩＤと比較照合し、一致しなければ、当該ＣＡＮＩＤに係る第１ＣＡＮメッセージは不正に送信されたＣＡＮメッセージであって、ＥＣＵ１０ＡＡは改竄されたおそれのある不正ＥＣＵであると判断する。そして、ＣＡＮアプリケーション１１は、ＣＡＮドライバにＣＡＮメッセージの送信を禁止する。
【００４８】
実施の形態４のＣＡＮシステム１０４によれば、ＣＡＮＩＤの蓄積、ＣＡＮＩＤの照合による正当性の判定、およびＣＡＮメッセージの送信制限が、すべて各ＥＣＵ１０ＡＡ−１０ＡＤ内で行われるため、別途の監視ＥＣＵ２０を設ける必要がない。従って、上記の処理を行うために第２ＣＡＮメッセージまたは第３ＣＡＮメッセージの通信を行う必要がなく、ＣＡＮ通信量を削減する効果がある。
【００４９】
＜Ｅ．ハードウェア構成＞
上述したＣＡＮシステム１０１−１０４における、ＥＣＵ１０または監視ＥＣＵ２０は、図１６に示すプロセッサ８１とメモリ８２により実現される。具体的には、ＥＣＵ１０におけるＣＡＮアプリケーション１１、ＣＡＮドライバ１２および蓄積アプリケーション１３の機能と、監視ＥＣＵ２０におけるＣＡＮドライバ２１およびＣＡＮ監視アプリケーション２２の機能は、プロセッサ８１がメモリ８２に格納されたプログラムを実行することにより実現される。プロセッサ８１は、例えば中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、ＤＳＰ（Digital Signal Processor）等である。また、ＥＣＵ１０において第１ＣＡＮメッセージのＣＡＮＩＤが蓄積されるメモリ１４と、監視ＥＣＵ２０におけるＣＡＮ  ＤＢ２３は、メモリ８２により実現されるが、それらは単一のメモリ８２から構成されてもよいし、それぞれが個別のメモリから構成されてもよい。メモリ８２には、例えば、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、フラッシュメモリ、ＥＰＲＯＭ（Erasable Programmable Read Only Memory）、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）などの、不揮発性または揮発性の半導体メモリ等が用いられる。
【００５０】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略したりすることが可能である。この発明は詳細に説明されたが、上記した説明は、すべての態様において、例示であって、この発明がそれに限定されるものではない。例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
【符号の説明】
【００５１】
２  ＣＡＮ通信線、１０Ａ，１０Ｂ，１０Ｃ，１０Ｄ  ＥＣＵ、１１  ＣＡＮアプリケーション、１２  ＣＡＮドライバ、１３  蓄積アプリケーション、１４  メモリ、２０  監視ＥＣＵ、２１  ＣＡＮドライバ、２２  ＣＡＮ監視アプリケーション、２３  ＣＡＮデータベース、３０  出力装置、８１  プロセッサ、８２  メモリ、１０１，１０２，１０３，１０４  ＣＡＮシステム。
【図１】
0006833143.tif 000002
【図２】
0006833143.tif 000003
【図３】
0006833143.tif 000004
【図４】
0006833143.tif 000005
【図５】
0006833143.tif 000006
【図６】
0006833143.tif 000007
【図７】
0006833143.tif 000008
【図８】
0006833143.tif 000009
【図９】
0006833143.tif 000010
【図１０】
0006833143.tif 000011
【図１１】
0006833143.tif 000012
【図１２】
0006833143.tif 000013
【図１３】
0006833143.tif 000014
【図１４】
0006833143.tif 000015
【図１５】
0006833143.tif 000016
【図１６】
0006833143.tif 000017