(57)【要約】【課題】通信品質の劣化を抑制しつつ、ＳＡＥ  Ｊ１９３９規格のアドレスクレームメッセージを悪用した不正を検知できる電子制御装置を提供する。【解決手段】ＥＣＵ１００は、受信したメッセージがアドレスクレームメッセージであるか否かを判定する第１判定部１０１と、受信したメッセージがアドレスクレームメッセージであると判定された場合に、受信したアドレスクレームメッセージに含まれるデバイスネームが予め定められたデバイスネームであるか否かを判定する第２判定部１０２と、受信したアドレスクレームメッセージに含まれるデバイスネームが予め定められたデバイスネームであると判定された場合に、所定の判定を行い、当該判定の結果に応じて、受信したアドレスクレームメッセージが不正なメッセージであるか否かを判定する第３判定部１０３と、を備える。【選択図】図７
2020137013.tif 000002
【特許請求の範囲】
【請求項１】
ＳＡＥ（Ｓｏｃｉｅｔｙ  ｏｆ  Ａｕｔｏｍｏｔｉｖｅ  Ｅｎｇｉｎｅｅｒｓ）  Ｊ１９３９規格に基づいて他の電子制御装置とＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）バスを介したメッセージの送受信を行う電子制御装置であって、
受信したメッセージがアドレスクレームメッセージであるか否かを判定する第１判定部と、
受信したメッセージがアドレスクレームメッセージであると判定された場合に、受信した前記アドレスクレームメッセージに含まれるデバイスネームが予め定められたデバイスネームであるか否かを判定する第２判定部と、
受信した前記アドレスクレームメッセージに含まれるデバイスネームが前記予め定められたデバイスネームであると判定された場合に、所定の判定を行い、当該判定の結果に応じて、受信した前記アドレスクレームメッセージが不正なメッセージであるか否かを判定する第３判定部と、
を備える電子制御装置。
【請求項２】
前記予め定められたデバイスネームは、前記電子制御装置に割り当てられたデバイスネームであり、
前記第３判定部は、
前記所定の判定として、受信した前記アドレスクレームメッセージが前記電子制御装置により送信されたメッセージであるか否かを判定し、
受信した前記アドレスクレームメッセージが前記電子制御装置により送信されたメッセージでないと判定した場合に、受信した前記アドレスクレームメッセージが不正なメッセージであると判定する、
請求項１に記載の電子制御装置。
【請求項３】
前記予め定められたデバイスネームは、前記他の電子制御装置のそれぞれに割り当てられたデバイスネームのうちのいずれかのデバイスネームであり、
前記第３判定部は、
前記所定の判定として、受信した前記アドレスクレームメッセージに含まれるデバイスネームが前記他の電子制御装置のそれぞれに割り当てられたデバイスネームのうちのいずれのデバイスネームであるか否かを判定し、
受信した前記アドレスクレームメッセージに含まれるデバイスネームが前記他の電子制御装置のそれぞれに割り当てられたデバイスネームのうちのいずれのデバイスネームでもないと判定された場合に、受信した前記アドレスクレームメッセージが不正なメッセージであると判定する、
請求項１に記載の電子制御装置。
【請求項４】
前記第３判定部は、
前記所定の判定として、受信した前記アドレスクレームメッセージに含まれるデバイスネームが割り当てられた電子制御装置の状態が、アドレスクレームメッセージを送信しない状態となっているか否かを判定し、
受信した前記アドレスクレームメッセージに含まれるデバイスネームが割り当てられた電子制御装置の状態が、アドレスクレームメッセージを送信しない状態となっていると判定した場合に、受信した前記アドレスクレームメッセージが不正なメッセージであると判定する、
請求項３に記載の電子制御装置。
【請求項５】
前記他の電子制御装置の状態を記憶する記憶部と、
前記記憶部に記憶された前記他の電子制御装置の状態を更新する更新部と、
をさらに備える、
請求項４に記載の電子制御装置。
【請求項６】
前記更新部は、受信した前記アドレスクレームメッセージに含まれるデバイスネームが割り当てられた電子制御装置の状態が、アドレスクレームメッセージを送信し得る状態となっていると判定された場合に、当該電子制御装置の状態を、アドレスクレームメッセージを送信しない状態に更新する、
請求項５に記載の電子制御装置。
【請求項７】
前記第１判定部は、さらに、受信したメッセージがリクエストフォーアドレスクレームメッセージであるか否かを判定し、
前記更新部は、受信したメッセージがリクエストフォーアドレスクレームメッセージであると判定された場合に、前記他の電子制御装置の状態をアドレスクレームメッセージを送信し得る状態に更新する、
請求項５又は６に記載の電子制御装置。
【請求項８】
前記電子制御装置は、さらに、起動した際に前記ＣＡＮバスへリクエストフォーアドレスクレームメッセージを送信する送信部を備え、
前記更新部は、
送信した前記リクエストフォーアドレスクレームメッセージに対してアドレスクレームメッセージを受信した場合に、受信した前記アドレスクレームメッセージに含まれるデバイスネームが割り当てられた電子制御装置の初期状態を、アドレスクレームメッセージを送信しない状態であるとし、
送信した前記リクエストフォーアドレスクレームメッセージに対してキャンノットクレームメッセージを受信した場合に、受信した前記キャンノットクレームメッセージに含まれるデバイスネームが割り当てられた電子制御装置の初期状態を、アドレスクレームメッセージを送信し得る状態とし、
送信した前記リクエストフォーアドレスクレームメッセージに対してメッセージを返信しない電子制御装置の初期状態を、アドレスクレームメッセージを送信し得る状態とする、
請求項５〜７のいずれか１項に記載の電子制御装置。
【請求項９】
請求項１〜８のいずれか１項に記載の電子制御装置と、
前記他の電子制御装置と、
前記ＣＡＮバスと、
を備える電子制御システム。
【請求項１０】
ＳＡＥ（Ｓｏｃｉｅｔｙ  ｏｆ  Ａｕｔｏｍｏｔｉｖｅ  Ｅｎｇｉｎｅｅｒｓ）  Ｊ１９３９規格に従って他の電子制御装置とＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）バスを介したメッセージの送受信を行う電子制御装置によって実行されるプログラムであって、
受信したメッセージがアドレスクレームメッセージであるか否かを判定する第１判定処理と、
受信したメッセージがアドレスクレームメッセージであると判定された場合に、受信した前記アドレスクレームメッセージに含まれるデバイスネームが予め定められたデバイスネームであるか否かを判定する第２判定処理と、
受信した前記アドレスクレームメッセージに含まれるデバイスネームが前記予め定められたデバイスネームであると判定された場合に、所定の判定を行い、当該判定の結果に応じて、受信した前記アドレスクレームメッセージが不正なメッセージであるか否かを判定する第３判定処理と、
を含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ＳＡＥ（Ｓｏｃｉｅｔｙ  ｏｆ  Ａｕｔｏｍｏｔｉｖｅ  Ｅｎｇｉｎｅｅｒｓ）  Ｊ１９３９規格に基づいて他の電子制御装置（以下ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）とも呼ぶ）とＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）バスを介したメッセージの送受信を行う電子制御装置、電子制御システム及びプログラムに関する。
【背景技術】
【０００２】
ＳＡＥ  Ｊ１９３９規格は、トラック、バス、建機車両、トラクタ又はトレーラ等に適用される制御バス規格であり、ＳＡＥ  Ｊ１９３９規格に基づいてこれらの車両内のＥＣＵ間でメッセージの送受信が行われる。ＳＡＥ  Ｊ１９３９規格において用いられるアドレスクレーム（以下ＡＣＬとも呼ぶ）メッセージを悪用して、ＣＡＮバスに不正なメッセージを送信することで、正規のＥＣＵになりすますという攻撃があることが指摘されている。これに対して、例えば、非特許文献１には、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージを悪用した不正を検知する技術について開示されている。具体的には、各ＥＣＵ間で公開鍵暗号ベース又は秘密鍵暗号ベースの認証及び鍵共有を行い、共有した鍵でＣＡＮメッセージパケットに対して改ざん検出用コード（ＭＡＣ：Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）を付加することで、不正なメッセージを検知できる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Paul-Stefan Murvae, et al. “Security shortcomings and countermeasures for the SAE J1939 commercial vehicle bus protocol”, IEEE Transactions on Vehicular Technology, Volume 67, Issue 5, May 2018
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、非特許文献１に開示された技術では、認証及び鍵共有のための通信が必要となり、ＣＡＮ通信の開始の際にその都度当該通信による遅延が発生するという問題がある。また、ＣＡＮメッセージパケット内にＭＡＣを格納するための８バイトものフィールドが必要となり、１つのＣＡＮメッセージで送信可能なデータ量が削減されるため、メッセージを送信するのに要する時間が増加するという問題がある。このように、非特許文献１に開示された技術では、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージを悪用した不正を検知しようとすると、通信品質が劣化するおそれがある。
【０００５】
そこで、本開示は、通信品質の劣化を抑制しつつ、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージを悪用した不正を検知できる電子制御装置等を提供する。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本開示の一態様に係る電子制御装置は、ＳＡＥ  Ｊ１９３９規格に基づいて他の電子制御装置とＣＡＮバスを介したメッセージの送受信を行う電子制御装置であって、受信したメッセージがアドレスクレームメッセージであるか否かを判定する第１判定部と、受信したメッセージがアドレスクレームメッセージであると判定された場合に、受信した前記アドレスクレームメッセージに含まれるデバイスネームが予め定められたデバイスネームであるか否かを判定する第２判定部と、受信した前記アドレスクレームメッセージに含まれるデバイスネームが前記予め定められたデバイスネームであると判定された場合に、所定の判定を行い、当該判定の結果に応じて、受信した前記アドレスクレームメッセージが不正なメッセージであるか否かを判定する第３判定部と、を備える。
【０００７】
また、上記目的を達成するために本開示の一態様に係る電子制御システムは、上記の電子制御装置と、前記他の電子制御装置と、前記ＣＡＮバスと、を備える。
【０００８】
また、上記目的を達成するために本開示の一態様に係るプログラムは、ＳＡＥ  Ｊ１９３９規格に従って他の電子制御装置とＣＡＮバスを介したメッセージの送受信を行う電子制御装置によって実行されるプログラムであって、受信したメッセージがアドレスクレームメッセージであるか否かを判定する第１判定処理と、受信したメッセージがアドレスクレームメッセージであると判定された場合に、受信した前記アドレスクレームメッセージに含まれるデバイスネームが予め定められたデバイスネームであるか否かを判定する第２判定処理と、受信した前記アドレスクレームメッセージに含まれるデバイスネームが前記予め定められたデバイスネームであると判定された場合に、所定の判定を行い、当該判定の結果に応じて、受信した前記アドレスクレームメッセージが不正なメッセージであるか否かを判定する第３判定処理と、を含む。
【発明の効果】
【０００９】
本開示によれば、通信品質の劣化を抑制しつつ、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージを悪用した不正を検知できる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１における電子制御システムの一例を示す構成図である。
【図２】ＳＡＥ  Ｊ１９３９規格で使用されるＣＡＮＩＤのフォーマットを示す図である。
【図３】電子制御装置に割り当てられるデバイスネームのフォーマットを示す図である。
【図４】ＡＣＬメッセージの送信によるソースアドレス取得の際のルールを説明するためのシーケンス図である。
【図５Ａ】ソースアドレスが競合したときのルールを説明するためのシーケンス図である。
【図５Ｂ】ソースアドレスが競合したときのルールを説明するためのシーケンス図である。
【図６】ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージが悪用され得ることを説明するためのフローチャートである。
【図７】実施の形態１における電子制御装置の一例を示すブロック図である。
【図８】実施の形態１における電子制御装置の動作の一例を示すフローチャートである。
【図９】実施の形態２における電子制御システムの一例を示す構成図である。
【図１０】実施の形態２における電子制御装置の一例を示すブロック図である。
【図１１】実施の形態２における他の電子制御装置のデバイスネーム及び状態を示す図である。
【図１２】電子制御装置の状態を説明するための図である。
【図１３】実施の形態２における電子制御装置の動作の一例を示すフローチャートである。
【図１４】他の電子制御装置の初期状態の決定方法を示すフローチャートである。
【図１５】電子制御装置の状態の遷移を説明するための図である。
【図１６】その他の実施の形態におけるプログラムが電子制御装置に実行されることで実行されるステップを示すフローチャートである。
【発明を実施するための形態】
【００１１】
（実施の形態１）
［１．１  電子制御システム１の構成］
以下、実施の形態１における電子制御システム１について図面を参照しながら説明する。
【００１２】
図１は、実施の形態１における電子制御システム１の一例を示す構成図である。
【００１３】
電子制御システム１は、例えば、車両に搭載された車載ネットワークである。電子制御システム１は、複数のＥＣＵとＣＡＮバス３００を備える。各ＥＣＵは、ＳＡＥ  Ｊ１９３９規格に基づいて他のＥＣＵとＣＡＮバス３００を介したメッセージの送受信を行う。例えば、実施の形態１では、電子制御システム１は、複数のＥＣＵとしてＥＣＵ１００ａ〜１００ｇを備える。ＥＣＵ１００ａに着目すると、ＥＣＵ１００ａは、ＳＡＥ  Ｊ１９３９規格に基づいて他のＥＣＵ１００ｂ〜１００ｇとＣＡＮバス３００を介したメッセージの送受信を行う。実施の形態１においてＥＣＵ１００ａ〜１００ｇを総称してＥＣＵ１００とも呼ぶ。つまり、実施の形態１でＥＣＵ１００と呼ぶものは、ＥＣＵ１００ａ〜１００ｇのいずれであってもよい。
【００１４】
ＥＣＵ１００は、例えば、操舵制御ＥＣＵ、ステアリングＥＣＵ、エンジンＥＣＵ、ブレーキＥＣＵ、ドア開閉センサＥＣＵ又はウィンドウ開閉センサＥＣＵ等であるが、特に限定されない。
【００１５】
ＥＣＵ１００は、例えば、プロセッサ（マイクロプロセッサ）、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ＲＯＭ、ＲＡＭ等であり、プロセッサにより実行される制御プログラム（ソフトウェアとしてのコンピュータプログラム）を記憶することができる。例えばプロセッサが、制御プログラム（コンピュータプログラム）に従って動作することにより、ＥＣＵ１００は各種機能を実現することになる。
【００１６】
ＳＡＥ  Ｊ１９３９規格は、トラック、バス、建機車両、トラクタ又はトレーラ等に適用される制御バス規格であり、ＳＡＥ  Ｊ１９３９規格に基づいてこれらの車両内のＥＣＵ間でメッセージの送受信が行われている。つまり、ＥＣＵ１００は、ＳＡＥ  Ｊ１９３９規格に基づいて車両内のＣＡＮバス３００を介してメッセージの送受信を行う。
【００１７】
各ＥＣＵ１００は、ＣＡＮバス３００から他のＥＣＵ１００が送信したメッセージを受信し、また、他のＥＣＵ１００に送信したい内容を含むメッセージを生成してＣＡＮバス３００に送信する。具体的には、各ＥＣＵ１００（より具体的には後述するアプリ処理部１３０）は、受信したメッセージの内容に応じた処理を行い、また、各ＥＣＵ１００に接続されている機器、センサ等の状態を示すデータ又は他のＥＣＵ１００への指示値（制御値）等のデータを含むメッセージを生成して送信する。生成されたメッセージには、ＣＡＮＩＤが含まれており、各ＥＣＵ１００は、自身に対して予め定められたＣＡＮＩＤを含むメッセージのみを受信するため、目的のＥＣＵ１００へと通信データを送信することができる。
【００１８】
各ＥＣＵ１００には、それぞれ例えば製造時等にユニークな６４ビットのデバイスネーム（以下ＤＮとも呼ぶ）が割り当てられる。実施の形態１では、例えば、図１に示されるように、ＥＣＵ１００ａにはＤＮとしてＮａが割り当てられ、ＥＣＵ１００ｂにはＤＮとしてＮｂが割り当てられ、・・・、ＥＣＵ１００ｇにはＤＮとしてＮｇが割り当てられる。一方で、ＥＣＵ１００間での通信の際に、送信元の特定のために、その都度６４ビットのＤＮが用いられると、ＤＮが用いられる分（６４ビット分）送信可能なデータ量が削減されるため、８ビットのソースアドレス（以下ＳＡとも呼ぶ）が用いられる。ＣＡＮＩＤには、８ビットのＳＡが含まれており、ＣＡＮＩＤを含むメッセージを受信したＥＣＵ１００は、ＣＡＮＩＤに含まれるＳＡを確認することで送信元を特定できる。
【００１９】
［１．２  フォーマット］
以下、ＳＡＥ  Ｊ１９３９規格において使用されるＣＡＮＩＤのフォーマット及びＤＮのフォーマットについて説明する。
【００２０】
図２は、ＳＡＥ  Ｊ１９３９規格で使用されるＣＡＮＩＤのフォーマットを示す図である。図２には、ＣＡＮプロトコルで規定される１１ビットの標準ＩＤフォーマットをベースとして、トラック、バス、建機車両、トラクタ又はトレーラ等に適用される制御バス用の拡張が行われた２９ビットの拡張ＣＡＮＩＤのフォーマットが示されている。詳細な説明は省略するが、拡張ＣＡＮＩＤには、メッセージを識別するためのＰＧＮ（Ｐａｒａｍｅｔｅｒ  Ｇｒｏｕｐ  Ｎｕｍｂｅｒ）、宛先アドレス情報などが含まれるフィールドに加え、下位８ビットにおいて、送信元を特定するためのＳＡが割り当てられていることがわかる。各ＥＣＵ１００は、起動後にＡＣＬメッセージの送信によって他のＥＣＵ１００とネゴシエーションを行い、他のＥＣＵ１００と競合しないＳＡを取得する。ＡＣＬメッセージとは、ＥＣＵがＳＡを取得するために用いられるメッセージであり、ＥＣＵに割り当てられたＤＮ及び当該ＥＣＵの希望するＳＡを含むメッセージである。基本的には、ＥＣＵの起動時に当該ＥＣＵからＡＣＬメッセージが送信されるが、例えばＥＣＵが起動した後にＥＣＵ診断ツールがＣＡＮバスに接続されて使用されるようなユースケースを想定して、ＥＣＵ起動後の任意のタイミングで送信されることもＳＡＥ  Ｊ１９３９規格としては許容している。ＡＣＬメッセージを受信した他のＥＣＵは、当該ＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵが当該ＡＣＬメッセージに含まれるＳＡを取得しようとしていることを確認できる。ＡＣＬメッセージの送信によるＳＡの取得方法の詳細については後述する。
【００２１】
図３は、ＥＣＵに割り当てられるＤＮのフォーマットを示す図である。
【００２２】
ＥＣＵには、一般的に、図３に示されるように、自身のプロファイル情報及び自身を個体識別するための情報を含む６４ビットのＤＮが予め割り当てられている（詳細な説明は省略する）。ＤＮは、ＥＣＵごとにユニークであることが求められるため、ＥＣＵには、他のＥＣＵと重複しないようなＤＮが割り当てられる。
【００２３】
［１．３  ＡＣＬメッセージ］
次に、各ＥＣＵ１００がＳＡを取得する方法について説明する。
【００２４】
各ＥＣＵ１００は、電子制御システム１において他のＥＣＵ１００に自身を認識させるためのＳＡを、他のＥＣＵ１００と競合しないように取得するために、ＡＣＬメッセージをＣＡＮバス３００に送信する。ここで、ＳＡＥ  Ｊ１９３９規格における、ＡＣＬメッセージの送信によるＳＡの取得の際のルールについて図４を用いて説明する。
【００２５】
図４は、ＡＣＬメッセージの送信によるＳＡ取得の際のルールを説明するためのシーケンス図である。
【００２６】
まず、ＥＣＵ１００は、起動する（ステップＳ１１）。各ＥＣＵ１００は、起動後に、自身の希望する８ビットのＳＡを取得するための動作を行う。
【００２７】
ＥＣＵ１００は、起動後の初期化が完了すると（ステップＳ１２）、自身の希望するＳＡ（例えばここではＳＡとしてＸを希望したとする）及び自身のＤＮ（例えばＮ）を含めたＡＣＬメッセージをＣＡＮバス３００へ送信する（ステップＳ１３）。つまり、ＥＣＵ１００は、このようなＡＣＬメッセージを他のＥＣＵ１００へブロードキャストすることにより、他のＥＣＵ１００に対して自身がＳＡとしてＸを取得しようとしていることを宣言する。
【００２８】
ＳＡＥ  Ｊ１９３９規格では、各ＥＣＵ１００は、ＡＣＬメッセージに対して異議がなければ、ＤＮとしてＮが割り当てられたＥＣＵ１００がＳＡとしてＸを使用することを記憶する。一方で、ＡＣＬメッセージに対して異議がある場合、例えば、ＳＡが競合している場合、ＡＣＬメッセージを受信してから２５０ｍｓ以内に当該ＡＣＬメッセージに対する応答を返信するというルールがある。このため、ＥＣＵ１００は、ＡＣＬメッセージを送信した後２５０ｍｓ経過しても、他のＥＣＵ１００から異議（つまり、送信したＡＣＬメッセージに対する応答）がなければ、ＳＡとしてＸを自身が使用することを他のＥＣＵ１００が認めたとして、自身の希望するＳＡを用いて、図２に示されるような拡張ＣＡＮＩＤを含むメッセージ（以下通常のメッセージとも呼ぶ）の送信を開始する（ステップＳ１４）。通常のメッセージには、ＳＡとしてＸが含まれているため、他のＥＣＵ１００は、このメッセージに含まれるＳＡがＸであるということを確認することで、当該メッセージの送信元がＤＮとしてＮが割り当てられたＥＣＵ１００であると特定できる。
【００２９】
次に、ＳＡが競合したときのルールについて図５Ａ及び図５Ｂを用いて説明する。
【００３０】
図５Ａ及び図５Ｂは、ＳＡが競合したときのルールを説明するためのシーケンス図である。図５Ａには、ＳＡが競合したときに、ＳＡが競合した各ＥＣＵ１００が競合を解消してＳＡを取得できたときの一例が示され、図５Ｂには、ＳＡが競合したときに、ＳＡが競合した各ＥＣＵ１００の一部が競合を解消できずにＳＡを取得できなかったときの一例が示される。図５Ａ及び図５Ｂでは、ＳＡが競合したＥＣＵ１００として、ＥＣＵ１００ａ及び１００ｂを例にあげて説明する。また、図５Ａ及び図５Ｂでは、ＥＣＵ１００ａとＥＣＵ１００ｂとで直接通信が行われているように示されているが、実際にはＣＡＮバス３００を介して通信が行われる。以下において、あるＥＣＵと他のＥＣＵとでメッセージ等を送受信するというような表現をする場合があるが、あるＥＣＵがＣＡＮバス３００へメッセージ等を送信し、他のＥＣＵがＣＡＮバス３００から当該メッセージ等を受信し、また、他のＥＣＵがＣＡＮバス３００へメッセージ等を送信し、あるＥＣＵがＣＡＮバス３００からメッセージ等を受信して、結果的にあるＥＣＵと他のＥＣＵとでメッセージ等を送受信することになるため、このように表現している。
【００３１】
まずは、ＳＡが競合した各ＥＣＵ１００がＳＡを取得できたときの例について説明する。
【００３２】
図５Ａに示されるように、ＥＣＵ１００ａは、起動し（ステップＳ２１）、起動後の初期化が完了すると（ステップＳ２２）、自身の希望するＳＡ（例えばここではＸ）及び自身のＤＮであるＮａを含めたＡＣＬメッセージをＥＣＵ１００ｂへ送信する（ステップＳ２３）。
【００３３】
ＥＣＵ１００ｂは、ＥＣＵ１００ａの起動後に起動し（ステップＳ３１）、初期化が完了する前にＥＣＵ１００ａからＡＣＬメッセージが送信されているため、ＥＣＵ１００ａからのＡＣＬメッセージを受信できない。このため、ＥＣＵ１００ａは、送信したＡＣＬメッセージに対する応答を、ＥＣＵ１００ｂを含む他のＥＣＵ１００から受けないため、ＳＡとしてＸを取得して、通常のメッセージの送信を開始する。
【００３４】
ＥＣＵ１００ｂは、起動後の初期化が完了すると（ステップＳ３２）、ＥＣＵ１００ａがＳＡとしてＸを取得しようとしたことに気付いていないため、自身の希望するＳＡ（例えばここではＥＣＵ１００ａが取得したＳＡと同じＸ）及び自身のＤＮであるＮｂを含めたＡＣＬメッセージをＥＣＵ１００ａへ送信する（ステップＳ３３）。
【００３５】
ＳＡＥ  Ｊ１９３９では、ＳＡが競合した場合、ＤＮが示す値（具体的には６４ビットの整数値）が小さいＥＣＵが優先的にＳＡを取得するというルールがある。このため、ＤＮが示す値の大きいＥＣＵは、競合したＳＡの取得を断念して、選択しなおした別のＳＡを含むＡＣＬメッセージを再度送信すると決められている。そして、ＥＣＵは、ＳＡが取得できない場合（例えば、一定時間ＳＡを取得しようと様々なＳＡについてＡＣＬメッセージの送信を試みたがＳＡを取得できない場合又は全てのＳＡの候補についてＡＣＬメッセージを送信してもＳＡを取得できない場合等）には、ＳＡを取得できなかったことを示すキャンノットクレームメッセージを送信して、休止状態となる。キャンノットクレームメッセージとは、ＥＣＵに割り当てられたＤＮを含むメッセージであり、当該ＤＮが割り当てられたＥＣＵがＳＡを取得できなかったことを他のＥＣＵに通知するためのメッセージである。キャンノットクレームメッセージを受信した他のＥＣＵは、キャンノットクレームメッセージに含まれるＤＮが割り当てられたＥＣＵがＳＡを取得できなかったことを確認できる。
【００３６】
ＥＣＵ１００ａは、ＳＡとしてＸを取得しており、ＥＣＵ１００ｂは、ＳＡとしてＸを希望してＡＣＬメッセージを送信したため、ＳＡの競合が生じる。ＥＣＵ１００ａのＤＮであるＮａの方が、ＥＣＵ１００ｂのＤＮであるＮｂよりも小さいとする。この場合、ＥＣＵ１００ａがＥＣＵ１００ｂよりも優先的にＳＡを取得するＥＣＵとなるため、ＥＣＵ１００ｂが送信したＡＣＬメッセージに対する異議として、ＥＣＵ１００ａは、再度ＳＡとしてＸ及び自身のＤＮであるＮａを含むＡＣＬメッセージをＥＣＵ１００ｂへ送信する（ステップＳ２４）。
【００３７】
ＥＣＵ１００ｂは、自身のＤＮであるＮｂよりも小さいＤＮであるＮａが割り当てられたＥＣＵ１００ａがＳＡとしてＸを優先的に取得することを認識し、選択しなおした別のＳＡとしてＹを含むＡＣＬメッセージを送信する（ステップＳ３４）。ＥＣＵ１００ｂは、ＡＣＬメッセージを送信した後２５０ｍｓ経過しても、他のＥＣＵ１００から、自身が送信したＡＣＬメッセージに対する応答がなければ、ＳＡとしてＹを取得する。
【００３８】
なお、ＥＣＵ１００ｂは、初期化が完了しておらずＥＣＵ１００ａがＳＡとしてＸを取得しようとしていることを認識できていなかったため、ステップＳ３３においてＳＡとしてＸを含むＡＣＬメッセージを送信している。これに対して、ＥＣＵ１００ｂは、初期化完了後にＥＣＵ１００ａからＳＡとしてＸ及びＤＮとしてＮａを含むＡＣＬメッセージを受信した場合には、ＥＣＵ１００ａの方が自身よりも優先度が高いことから、ＳＡとしてＸを含むＡＣＬを送信せず、別のＳＡを含むＡＣＬを送信する。
【００３９】
次に、ＳＡが競合した各ＥＣＵ１００の一部がＳＡを取得できなかったときの例について説明する。なお、ステップＳ２１からステップＳ２４及びステップ３１からステップＳ３３での処理については、図５Ａと同じであるため説明は省略する。
【００４０】
ステップＳ２４の後、ＥＣＵ１００ｂは、自身のＤＮであるＮｂよりも小さいＤＮであるＮａが割り当てられたＥＣＵ１００ａがＳＡとしてＸを優先的に取得することを認識し、別のＳＡを取得しようとするが、別のＳＡを取得できなかった場合、自身のＤＮであるＮｂを含むキャンノットクレームメッセージを送信して、休止状態となる（ステップＳ３５）。これにより、ＥＣＵ１００ａを含む他のＥＣＵ１００は、このメッセージに含まれるＤＮがＮｂであるということを確認することで、ＥＣＵ１００ｂがＳＡを取得できておらず、休止状態にあることを認識できる。
【００４１】
［１．４  ＡＣＬメッセージの悪用］
次に、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージが悪用され得ることについて図６を用いて説明する。
【００４２】
図６は、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージが悪用され得ることを説明するためのフローチャートである。図６では、ＳＡを取得済みのＥＣＵ１００が通常のメッセージを送信している際に、他のＥＣＵ１００からＡＣＬメッセージを受信したときの当該ＳＡを取得済みのＥＣＵ１００の動作を示すフローチャートである。
【００４３】
ＥＣＵ１００は、他のＥＣＵ１００からＡＣＬメッセージを受信する（ステップＳ１０１）。例えば、ＥＣＵ１００は、他のＥＣＵ１００から自身が取得済みのＳＡと同じＳＡを含むＡＣＬメッセージを受信する。
【００４４】
ＥＣＵ１００は、自身のＤＮ（自ＤＮ）が示す値と受信したＡＣＬメッセージに含まれるＤＮ（相手ＤＮ）が示す値とを比較し、自ＤＮが示す値が、相手ＤＮが示す値以上であるか否かを判定する（ステップＳ１０２）。
【００４５】
自ＤＮが示す値が、相手ＤＮが示す値よりも小さい場合には（ステップＳ１０２でＮｏ）、ＥＣＵ１００は、自身の方が相手よりも優先度が高いため、通常のメッセージの送信を停止せずに、他のＥＣＵ１００へ自身が取得したＳＡ及び自身のＤＮを含むＡＣＬメッセージを送信する（ステップＳ１０４）。これにより、他のＥＣＵ１００は、そのＳＡを取得できないことを認識する。
【００４６】
一方で、自ＤＮが示す値が、相手ＤＮが示す値以上である場合（ステップＳ１０２でＹｅｓ）、ＥＣＵ１００は、相手の方が自身よりも優先度が高いため、通常のメッセージの送信を停止し、ＳＡの再取得を試み、ＳＡを再取得できない場合にはＳＡの取得を断念する（ステップＳ１０３）。
【００４７】
ここで、ＳＡＥ  Ｊ１９３９規格では、ステップＳ１０２に示すように、受信したＡＣＬメッセージに含まれる相手ＤＮが示す値と自ＤＮが示す値とが同じ場合にも、相手の方が自身よりも優先度が高いと判断するように規定されている。このため、ＥＣＵ１００は、自身のＳＡと同じＳＡを含む不正なＡＣＬメッセージを受信した場合、通常のメッセージの送信を中止させられる。
【００４８】
上記のことから、例えば、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージが悪用されることで、正規のＥＣＵ１００になりすまされる攻撃又は正規のＥＣＵのＳＡがすり替えられる攻撃がなされることが考えられる。以下では、ＤＮがＮＡでありＳＡとしてＳｘを取得済みである正規のＥＣＵ１００ａが、通常のメッセージを送信しているときに、ＣＡＮバス３００に接続された不正なＥＣＵによってＥＣＵ１００ａになりすまされる攻撃及びＥＣＵ１００ａのＳＡがすり替えられる攻撃について説明する。
【００４９】
まずは、ＥＣＵ１００ａになりすまされる攻撃について説明する。
【００５０】
まず、不正なＥＣＵがＤＮとしてＮａ、ＳＡとしてＳｘを含むＡＣＬメッセージをＣＡＮバス３００へ送信する。ＥＣＵ１００ａは、ＤＮとしてＮａ、ＳＡとしてＳｘを含むＡＣＬメッセージを受信する。ＥＣＵ１００ａは、当該ＡＣＬメッセージに含まれる相手ＤＮが示す値と自ＤＮが示す値とが同じであることから相手の方が自身よりも優先度が高いと判断するため、通常のメッセージの送信を停止し、別のＳＡ（例えばＳｙ）を含むＡＣＬメッセージをＣＡＮバス３００へ送信する。
【００５１】
これに対して、不正なＥＣＵは、ＤＮとしてＮａ、ＳＡとしてＳｙを含むＡＣＬメッセージを受信するため、直ちにＤＮとしてＮａ、ＳＡとしてＳｙを含むＡＣＬメッセージをＣＡＮバス３００へ送信して、ＥＣＵ１００ａがＳＡとしてＳｙを取得するのを阻止する。
【００５２】
このように、不正なＥＣＵは、ＥＣＵ１００ａがＳＡを取得するのを断念するまで（つまり、ＥＣＵ１００ａがキャンノットクレームメッセージを送信するまで）、ＥＣＵ１００ａのＳＡの取得を阻止し続ける。これにより、ＥＣＵ１００ａは通常のメッセージが送信できなくなり、以降は、不正なＥＣＵが、ＤＮがＮａであるＥＣＵ１００ａになりすまして、メッセージの送信が可能となる。
【００５３】
次に、ＥＣＵ１００ａのＳＡがすり替えられる攻撃について説明する。
【００５４】
まず、不正なＥＣＵがＤＮとしてＮａ、ＳＡとしてＳｙを含むＡＣＬメッセージをＣＡＮバス３００へ送信する。ＥＣＵ１００ａは、ＤＮとしてＮａ、ＳＡとしてＳｙを含むＡＣＬメッセージを受信するが、当該ＡＣＬメッセージに含まれるＳＡが、自身が取得しているＳＡと異なりＳＡの競合が発生しないため、当該ＡＣＬメッセージに対する応答は行わず無視する。一方で、他のＥＣＵ１００は、ＤＮがＮａであるＥＣＵ１００ａがＳＡをＳｙに変更したと誤認識をする。これにより、他のＥＣＵ１００は、以降は、ＥＣＵ１００ａが送信するＳＡとしてＳｘを含む正規のメッセージを無視するようになり、不正なＥＣＵが送信するＳＡとしてＳｙを含む不正なメッセージを受け入れるようになる。
【００５５】
各ＥＣＵ１００がこのようなＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージを悪用した不正を検知する機能を有していない場合に起こり得る攻撃について説明したが、以下では、電子制御システム１における各ＥＣＵ１００（ＥＣＵ１００ａ〜１００ｇ）が、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージを悪用した不正を検知する機能を有するとして、このような機能を有するＥＣＵ１００の構成及び動作について説明する。
【００５６】
［１．５  ＥＣＵ１００の構成］
図７は、実施の形態１におけるＥＣＵ１００の一例を示すブロック図である。
【００５７】
ＥＣＵ１００は、不正検知部１１０、送受信インタフェース１２０及びアプリ処理部１３０を備える。
【００５８】
送受信インタフェース１２０は、ＣＡＮバス３００に流れるメッセージを受信し、また、ＣＡＮバス３００に対してメッセージを送信する。
【００５９】
アプリ処理部１３０は、ＥＣＵ本来の制御を行う構成である。例えば、ＥＣＵ１００がステアリングＥＣＵである場合には、送受信インタフェース１２０を介して受信したメッセージに応じてステアリングを制御したり、ステアリングの制御内容に応じたメッセージを、送受信インタフェース１２０を介してＣＡＮバス３００へ送信したりする。
【００６０】
不正検知部１１０は、実施の形態１におけるＥＣＵ１００の特徴的な構成であり、第１判定部１０１、第２判定部１０２及び第３判定部１０３を備える。第１判定部１０１、第２判定部１０２及び第３判定部１０３は、例えばプロセッサが、制御プログラムに従って動作することにより実現される。
【００６１】
第１判定部１０１は、受信したメッセージがＡＣＬメッセージであるか否かを判定する。
【００６２】
第２判定部１０２は、受信したメッセージがＡＣＬメッセージであると判定された場合に、受信したＡＣＬメッセージに含まれるＤＮが予め定められたＤＮであるか否かを判定する。
【００６３】
第３判定部１０３は、受信したＡＣＬメッセージに含まれるＤＮが予め定められたＤＮであると判定された場合に、所定の判定を行い、当該判定の結果に応じて、受信したＡＣＬメッセージが不正なメッセージであるか否かを判定する。
【００６４】
第１判定部１０１、第２判定部１０２及び第３判定部１０３の詳細について、図８を用いて説明する。
【００６５】
［１．６  ＥＣＵ１００の動作］
図８は、実施の形態１におけるＥＣＵ１００の動作の一例を示すフローチャートである。
【００６６】
まず、第１判定部１０１は、受信したメッセージがＡＣＬメッセージであるか否かを判定する（ステップＳ１１１）。送受信インタフェース１２０が受信するメッセージには、通常のメッセージの他にＳＡの取得に関するＡＣＬ関連のメッセージも含まれ、第１判定部１０１によって、受信したメッセージがＡＣＬメッセージであるか否かを判定できる。なお、ＳＡの取得に関するＡＣＬ関連のメッセージとは、ＡＣＬメッセージ、キャンノットクレームメッセージ、及び、後述するリクエストフォーアドレスクレームメッセージである。第１判定部１０１は、受信したメッセージがＡＣＬメッセージでないと判定した場合（ステップＳ１１１でＮｏ）、ステップＳ１１１での処理に戻り、ＡＣＬメッセージの受信待ちをする。
【００６７】
第２判定部１０２は、受信したメッセージがＡＣＬメッセージであると第１判定部１０１によって判定された場合（ステップＳ１１１でＹｅｓ）、受信したＡＣＬメッセージに含まれるＤＮが予め定められたＤＮであるか否かを判定する。実施の形態１では、予め定められたＤＮは、ＥＣＵ１００に割り当てられたＤＮである。つまり、第２判定部１０２は、受信したＡＣＬメッセージに含まれるＤＮが自身に割り当てられたＤＮであるか否かを判定する（ステップＳ１１２）。これにより、例えば、不正なＥＣＵがＥＣＵ１００に割り当てられたＤＮを使って、ＡＣＬメッセージを送信しているか否かを判定できる。第２判定部１０２は、受信したＡＣＬメッセージに含まれるＤＮが自身に割り当てられたＤＮでないと判定した場合（ステップＳ１１２でＮｏ）、ステップＳ１１１での処理に戻り、第１判定部１０１はＡＣＬメッセージの受信待ちをする。
【００６８】
第３判定部１０３は、受信したＡＣＬメッセージに含まれるＤＮが自身に割り当てられたＤＮであると第２判定部１０２によって判定された場合（ステップＳ１１２でＹｅｓ）、所定の判定を行う。実施の形態１では、第３判定部１０３は、所定の判定として、受信したＡＣＬメッセージがＥＣＵ１００により（つまり自身により）送信されたメッセージであるか否かを判定する（ステップＳ１１３）。ＥＣＵ１００がＣＡＮバス３００にメッセージを送信した場合、そのメッセージがＣＡＮバス３００から自身へも送信されてくることから、自身に割り当てられたＤＮを含むＡＣＬメッセージが、ＥＣＵ１００自身が送信したメッセージである可能性もあるため、所定の判定が行われる。例えば、ＥＣＵ１００は、ＡＣＬメッセージを送信した際にフラグを立てておき、自身に割り当てられたＤＮを含むＡＣＬメッセージを受信したときに当該フラグが立っているか否かを確認することで、所定の判定を行うことができる。
【００６９】
第３判定部１０３は、受信したＡＣＬメッセージがＥＣＵ１００により送信されたメッセージでないと判定した場合（ステップＳ１１３でＮｏ）、受信したＡＣＬメッセージが不正なメッセージであると判定する（ステップＳ１１４）。つまり、第３判定部１０３は、ＥＣＵ１００自身が、自身のＤＮを含むＡＣＬメッセージを送信していないにも関わらず、当該ＡＣＬメッセージを受信した場合には、当該ＡＣＬメッセージが不正なＥＣＵにより送信されたものと推定でき、当該ＡＣＬメッセージが不正なメッセージであると判定できる。これにより、ＥＣＵ１００は、不正なＥＣＵがＡＣＬメッセージを悪用したＥＣＵ１００になりすます攻撃又はＥＣＵ１００のＳＡをすり替える攻撃を未然に防止できる。
【００７０】
第３判定部１０３は、受信したＡＣＬメッセージがＥＣＵ１００により送信されたメッセージであると判定した場合（ステップＳ１１３でＹｅｓ）、受信したＡＣＬメッセージが正常なメッセージであると判定する（ステップＳ１１５）。上述したように、当該ＡＣＬメッセージは、ＥＣＵ１００自身が送信した正常はメッセージであるためである。
【００７１】
［１．７  まとめ］
以上説明したように、電子制御システム１における各ＥＣＵ１００は、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージを悪用した不正を検知する。具体的には、ＥＣＵ１００は、自身が送信していないにも関わらず、自身のＤＮを含むＡＣＬメッセージを受信した場合に、当該ＡＣＬメッセージを不正なメッセージであると判定する。実施の形態１に係るＥＣＵ１００によれば、認証及び鍵共有のための通信が行われないため、当該通信による遅延が発生しない。また、実施の形態１に係るＥＣＵ１００によれば、ＣＡＮメッセージパケット内にＭＡＣを格納するためのフィールドが不要であり、メッセージを送信するのに要する時間が増加しない。したがって、実施の形態１に係るＥＣＵ１００によれば、通信品質の劣化を抑制しつつ、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージを悪用した不正を検知できる。
【００７２】
（実施の形態２）
実施の形態１では、電子制御システム１における各ＥＣＵ１００が、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージを悪用した不正を検知する機能を有しているが、電子制御システムにおける不正を検知するための専用のＥＣＵが当該機能を有していてもよい。実施の形態２では、このような機能を有する不正検知ＥＣＵにより行われる、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージを悪用した不正の検知について説明する。
【００７３】
［２．１  電子制御システム２の構成］
図９は、実施の形態２における電子制御システム２の一例を示す構成図である。
【００７４】
電子制御システム２は、実施の形態１における電子制御システム１と同じように、例えば、車両に搭載された車載ネットワークである。電子制御システム２は、電子制御システム１におけるＥＣＵ１００ａ〜１００ｇに加え、不正検知ＥＣＵ２００を備える。不正検知ＥＣＵ２００は、ＳＡＥ  Ｊ１９３９規格に基づいて他のＥＣＵ１００ａ〜１００ｇとＣＡＮバス３００を介したメッセージの送受信を行う電子制御装置である。
【００７５】
不正検知ＥＣＵ２００は、例えば、プロセッサ（マイクロプロセッサ）、メモリ等のデジタル回路、アナログ回路、通信回路等を含む装置である。メモリは、ＲＯＭ、ＲＡＭ等であり、プロセッサにより実行される制御プログラム（ソフトウェアとしてのコンピュータプログラム）を記憶することができる。例えばプロセッサが、制御プログラム（コンピュータプログラム）に従って動作することにより、不正検知ＥＣＵ２００は各種機能を実現することになる。
【００７６】
各ＥＣＵ１００には、実施の形態１と同じようにＤＮが割り当てられており、図９に示されるように、ＥＣＵ１００ａにはＤＮとしてＮａが割り当てられ、ＥＣＵ１００ｂにはＤＮとしてＮｂが割り当てられ、・・・、ＥＣＵ１００ｇにはＤＮとしてＮｇが割り当てられる。
【００７７】
［２．２  不正検知ＥＣＵ２００の構成］
図１０は、実施の形態２における電子制御装置（不正検知ＥＣＵ２００）の一例を示すブロック図である。
【００７８】
不正検知ＥＣＵ２００は、不正検知部２１０、送受信インタフェース２２０及び記憶部２３０を備える。
【００７９】
送受信インタフェース２２０は、ＣＡＮバス３００に流れるメッセージを受信し、また、ＣＡＮバス３００に対してメッセージを送信する。
【００８０】
不正検知部２１０は、実施の形態２における不正検知ＥＣＵ２００の特徴的な構成であり、第１判定部２０１、第２判定部２０２、第３判定部２０３、更新部２０４及び送信部２０５を備える。第１判定部２０１、第２判定部２０２、第３判定部２０３、更新部２０４及び送信部２０５は、例えばプロセッサが、制御プログラムに従って動作することにより実現される。
【００８１】
第１判定部２０１は、受信したメッセージがＡＣＬメッセージであるか否かを判定する。
【００８２】
第２判定部２０２は、受信したメッセージがＡＣＬメッセージであると判定された場合に、受信したＡＣＬメッセージに含まれるＤＮが予め定められたＤＮであるか否かを判定する。詳細は後述するが、実施の形態２における予め定められたＤＮは、実施の形態１におけるもの（つまり、ＥＣＵ１００に割り当てられたＤＮ）とは異なる。
【００８３】
第３判定部２０３は、受信したＡＣＬメッセージに含まれるＤＮが予め定められたＤＮであると判定された場合に、所定の判定を行い、当該判定の結果に応じて、受信したＡＣＬメッセージが不正なメッセージであるか否かを判定する。詳細は後述するが、実施の形態２における所定の判定は、実施の形態１におけるもの（つまり、受信したＡＣＬメッセージがＥＣＵ１００により送信されたメッセージであるか否かの判定）とは異なる。
【００８４】
更新部２０４は、記憶部２３０に記憶された他のＥＣＵ１００ａ〜１００ｇの状態を更新する。
【００８５】
送信部２０５は、不正検知ＥＣＵ２００が起動した際にＣＡＮバス３００へリクエストフォーアドレスクレーム（ＲＡＣＬとも呼ぶ）メッセージを送信する。ＲＡＣＬメッセージは、ＣＡＮバス３００上のＥＣＵに対してＳＡを問い合わせるためのメッセージであり、ＲＡＣＬメッセージを受信したＥＣＵは、ＳＡを取得している場合には取得しているＳＡ及び自身のＤＮを含むＡＣＬメッセージを返信し、ＳＡを取得していない場合にはキャンノットクレームメッセージを返信する。送信部２０５が、ＲＡＣＬを送信することで、ＣＡＮバス３００上のＥＣＵ１００ａ〜１００ｇが、ＳＡの取得に関してどのような状態になっているのかを確認できる。
【００８６】
第１判定部２０１、第２判定部２０２、第３判定部２０３、更新部２０４及び送信部２０５の詳細については、後述する図１３を用いて説明する。
【００８７】
記憶部２３０は、他のＥＣＵ１００ａ〜１００ｇの状態を記憶するメモリである。なお、記憶部２３０は、プロセッサにより実行される制御プログラムが記憶されるメモリと同じものであってもよいし、当該メモリとは別途に設けられるメモリであってもよい。
【００８８】
ここで、記憶部２３０に記憶される他のＥＣＵ１００ａ〜１００ｇの状態について、図１１及び図１２を用いて説明する。
【００８９】
図１１は、実施の形態２における他のＥＣＵ１００ａ〜１００ｇのＤＮ及び状態を示す図である。
【００９０】
例えば、記憶部２３０には、図１１に示されるように、ＥＣＵ１００ａ〜１００ｇのそれぞれのＤＮと、そのＤＮ（言い換えるとそのＤＮが割り当てられたＥＣＵ）の状態とが記憶されている。図１１に示されるようなＤＮのリストが記憶部２３０に記憶されていることで、不正検知ＥＣＵ２００は、ＣＡＮバス３００に、Ｎａ、Ｎｂ、Ｎｃ、Ｎｄ、Ｎｅ、Ｎｆ及びＮｇのＤＮが割り当てられたＥＣＵが接続されていることを認識できる。なお、ＣＡＮバス３００に新しくＥＣＵを接続する場合、例えば、記憶部２３０に記憶された上記リストに当該ＥＣＵのＤＮが追加される。また、各ＤＮにはＥＣＵの状態が対応付けられており、不正検知ＥＣＵ２００は、当該対応関係を参照することで、各ＤＮ（つまりＥＣＵ１００ａ〜１００ｇ）の状態を確認できる。以下では、当該状態を状態Ｓ０から状態Ｓ５で表現する。状態Ｓ０から状態Ｓ５がそれぞれどのような状態であるかを、図１２を用いて説明する。
【００９１】
図１２は、ＥＣＵの状態を説明するための図である。
【００９２】
状態Ｓ０は、ＥＣＵがＳＡを取得できていない状態である。具体的には、状態Ｓ０は、ＥＣＵが起動しておらずＳＡを取得できていない状態、元々ＳＡを取得していたが他に優先度の高いＥＣＵが現れてＳＡを再度取得しようとしている状態、ＳＡを取得しようとしたが取得できずＳＡの取得を断念した状態等である。これらの状態は、ＥＣＵが今後ＡＣＬメッセージを送信し得る状態である。
【００９３】
状態Ｓ１は、ＥＣＵがＡＣＬメッセージを送信した後、当該ＡＣＬメッセージに対する応答を２５０ｍｓの間待っている状態である。この状態は、ＥＣＵがＲＡＣＬメッセージを受信したり、当該ＥＣＵが送信したＡＣＬメッセージに含まれるＳＡと同じＳＡを含むＡＣＬメッセージを他のＥＣＵから受信したりしない限り、ＡＣＬメッセージを送信しない状態である。
【００９４】
状態Ｓ２は、ＥＣＵがＳＡを取得し、通常のメッセージを送信する状態である。この状態は、ＥＣＵがＲＡＣＬメッセージを受信したり、当該ＥＣＵが取得したＳＡと同じＳＡを含むＡＣＬメッセージを他のＥＣＵから受信したりしない限り、ＡＣＬメッセージを送信しない状態である。
【００９５】
状態Ｓ３は、ＥＣＵがＲＡＣＬメッセージを受信した状態である。この状態は、ＥＣＵがＲＡＣＬメッセージに対する応答をしようとしている状態であり、ＡＣＬメッセージを送信し得る状態である。
【００９６】
状態Ｓ４は、ＥＣＵが通常のメッセージを送信する状態（つまり状態Ｓ２）において、特定のＡＣＬメッセージを他のＥＣＵから受信した状態である。特定のＡＣＬメッセージは、当該ＥＣＵよりも大きいＤＮ及び当該ＥＣＵが取得したＳＡと同じＳＡを含むＡＣＬメッセージである。この状態は、ＳＡが競合しており、当該ＥＣＵのＤＮが他のＥＣＵのＤＮよりも小さく、つまり、当該ＥＣＵが他のＥＣＵよりも優先度が高いため、自身の優先度が高いことを他のＥＣＵに知らせるために、ＡＣＬメッセージを送信し得る状態である。
【００９７】
状態Ｓ５は、ＥＣＵがＡＣＬメッセージを送信した後、当該ＡＣＬメッセージに対する応答を２５０ｍｓの間待っている状態（つまり状態Ｓ１）において、特定のＡＣＬメッセージを他のＥＣＵから受信した状態である。特定のＡＣＬメッセージは、当該ＥＣＵよりも大きいＤＮ及び当該ＥＣＵが送信したＡＣＬメッセージに含まれるＳＡと同じＳＡを含むＡＣＬメッセージである。この状態は、ＳＡが競合しており、当該ＥＣＵのＤＮが他のＥＣＵのＤＮよりも小さく、つまり、当該ＥＣＵが他のＥＣＵよりも優先度が高いため、自身の優先度が高いことを他のＥＣＵに知らせるために、ＡＣＬメッセージを送信し得る状態である。
【００９８】
なお、状態Ｓ０から状態Ｓ５間の状態遷移については、後述する図１５においても説明する。
【００９９】
［２．３  不正検知ＥＣＵ２００の動作］
図１３は、実施の形態２における電子制御装置（不正検知ＥＣＵ２００）の動作の一例を示すフローチャートである。
【０１００】
まず、不正検知ＥＣＵ２００は、ＥＣＵ１００ａ〜１００ｇの初期状態を決定する（ステップＳ１２１）。ステップＳ１２１の詳細について図１４を用いて説明する。
【０１０１】
図１４は、他のＥＣＵ１００ａ〜１００ｇの初期状態の決定方法を示すフローチャートである。
【０１０２】
まず、送信部２０５は、不正検知ＥＣＵ２００が起動した際にＣＡＮバス３００へＲＡＣＬメッセージを送信する（ステップＳ１３１）。ＥＣＵ１００ａ〜１００ｇのうちＲＡＣＬメッセージを受信したＥＣＵは、ＳＡを取得している場合には取得しているＳＡ及び自身のＤＮを含むＡＣＬメッセージを返信し、ＳＡを取得していない場合には自身のＤＮを含むキャンノットクレームメッセージを返信する。また、ＥＣＵ１００ａ〜１００ｇのうち、起動していないか、又は、初期化中のＥＣＵは、ＲＡＣＬメッセージを受信できないため、何も返信しない。
【０１０３】
次に、更新部２０４は、送信したＲＡＣＬメッセージに対して、ＥＣＵ１００ａ〜１００ｇからＡＣＬメッセージを受信したか否かを判定する（ステップＳ１３２）。
【０１０４】
更新部２０４は、ＥＣＵ１００ａ〜１００ｇのうちのいずれかからＡＣＬメッセージを受信した場合（ステップＳ１３２でＹｅｓ）、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵ（つまりＡＣＬメッセージを送信したＥＣＵ）の初期状態を、ＡＣＬメッセージを送信しない状態であるとする（ステップＳ１３３）。具体的には、更新部２０４は、当該ＥＣＵの初期状態を状態Ｓ２とし、例えば図１１に示す例では、ＤＮとしてＮａ、Ｎｃ、Ｎｆ及びＮｇに状態Ｓ２を対応付けて記憶する。
【０１０５】
一方で、更新部２０４は、ＥＣＵ１００ａ〜１００ｇのうちのいずれかからＡＣＬメッセージを受信しない場合（ステップＳ１３２でＮｏ）、例えば、送信したＲＡＣＬメッセージに対してキャンノットクレームメッセージを受信した場合、又は、送信したＲＡＣＬメッセージに対してメッセージの返信がない場合には、ステップＳ１３４での処理が行われる。すなわち、更新部２０４は、送信したＲＡＣＬメッセージに対してキャンノットクレームメッセージを受信した場合、受信したキャンノットクレームメッセージに含まれるＤＮが割り当てられたＥＣＵ（つまりキャンノットクレームメッセージを送信したＥＣＵ）の初期状態を、ＡＣＬメッセージを送信し得る状態であるとする。また、更新部２０４は、送信したＲＡＣＬメッセージに対してメッセージの返信がない場合、メッセージを返信しないＥＣＵの初期状態を、ＡＣＬメッセージを送信し得る状態とする。具体的には、更新部２０４は、これらのＥＣＵの初期状態をＳ０とし、例えば図１１に示す例では、ＤＮとしてＮｂに状態Ｓ０を対応付けて記憶する。
【０１０６】
このように、不正検知ＥＣＵ２００は、起動時にまずＲＡＣＬメッセージを送信し、その返信に応じてＥＣＵ１００ａ〜１００ｇの初期状態を決定する。そして、不正検知ＥＣＵ２００は、ＣＡＮバス３００の監視を行う。
【０１０７】
図１３での説明に戻り、不正検知ＥＣＵ２００は、ＥＣＵ１００ａ〜１００ｇの初期状態の決定後、ＣＡＮバス３００を流れるメッセージの監視をし、第１判定部２０１は、ＣＡＮバス３００を介して受信したメッセージが通常のメッセージであるか否かを判定する（ステップＳ１２２）。送受信インタフェース２２０が受信するメッセージには、通常のメッセージ、又は、ＳＡの取得に関するＡＣＬ関連のメッセージが含まれ、第１判定部２０１によって、受信したメッセージが通常のメッセージであるか否かを判定できる。第１判定部２０１は、受信したメッセージが通常のメッセージであると判定した場合（ステップＳ１２２でＹｅｓ）、ステップＳ１２８での状態の更新の処理を行う。ステップＳ１２８での状態の更新の処理は、ステップＳ１２２でＹｅｓの場合の他に、後述するステップＳ１２３でＮｏの場合、ステップＳ１２７が行われた場合等に行われ、各場合に応じて状態の更新の処理の内容が異なる。状態の更新の処理の内容については後述する図１５で詳細に説明する。
【０１０８】
第１判定部２０１は、受信したメッセージが通常のメッセージでないと判定した場合（ステップＳ１２２でＮｏ）、受信したメッセージがＡＣＬメッセージであるか否かを判定する（ステップＳ１２３）。第１判定部１０１は、受信したメッセージがＡＣＬメッセージでないと判定した場合（ステップＳ１２３でＮｏ）、例えば、受信したメッセージがキャンノットクレームメッセージ又はＲＡＣＬメッセージである場合、更新部２０４は、ステップＳ１２８での状態の更新の処理を行う。
【０１０９】
第２判定部２０２は、受信したメッセージがＡＣＬメッセージであると第１判定部２０１によって判定された場合（ステップＳ１２３でＹｅｓ）、受信したＡＣＬメッセージに含まれるＤＮが予め定められたＤＮであるか否かを判定する。実施の形態２では、予め定められたＤＮは、他のＥＣＵ１００ａ〜１００ｇのそれぞれに割り当てられたＤＮのうちのいずれかのＤＮである。つまり、第２判定部１０２は、受信したＡＣＬメッセージに含まれるＤＮがＥＣＵ１００ａ〜１００ｇのそれぞれに割り当てられたＤＮのうちのいずれかのＤＮ（つまりＮａ〜Ｎｇのいずれか）であるか否かを判定する（ステップＳ１２４）。不正検知ＥＣＵ２００は、ＣＡＮバス３００に接続されたＥＣＵ１００ａ〜１００ｇのＤＮを管理しており、ＥＣＵ１００ａ〜１００ｇのＤＮとは異なるＤＮを含むＡＣＬメッセージを受信したときは、ＥＣＵ１００ａ〜１００ｇのいずれも当該ＡＣＬメッセージを送信していないことがわかり、当該ＡＣＬメッセージがＥＣＵ１００ａ〜１００ｇのＤＮとは異なるＤＮを用いた不正なＥＣＵによって送信されたものであると推定できる。
【０１１０】
このため、第３判定部２０３は、受信したＡＣＬメッセージに含まれるＤＮが他のＥＣＵ１００ａ〜１００ｇのそれぞれに割り当てられたＤＮのうちのいずれのＤＮでもないと第２判定部２０２によって判定された場合（ステップＳ１２４でＮｏ）、受信したＡＣＬメッセージが不正なメッセージであると判定する（ステップＳ１２６）。
【０１１１】
第３判定部２０３は、受信したＡＣＬメッセージに含まれるＤＮが他のＥＣＵ１００ａ〜１００ｇのそれぞれに割り当てられたＤＮのうちのいずれかのＤＮであると第２判定部２０２によって判定された場合（ステップＳ１２４でＹｅｓ）、所定の判定を行う。実施の形態２では、第３判定部２０３は、所定の判定として、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵの状態が、ＡＣＬメッセージを送信しない状態（つまり状態Ｓ１又は状態Ｓ２）となっているか否かを判定する（ステップＳ１２５）。第３判定部２０３は、記憶部２３０に記憶された、図１１に示されるようなＤＮと状態との対応関係を確認することで、当該ＥＣＵの状態が状態Ｓ１又は状態Ｓ２となっているか否かを判定できる。
【０１１２】
第３判定部２０３は、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵの状態が、ＡＣＬメッセージを送信しない状態となっていると判定した場合（ステップＳ１２５でＹｅｓ）、受信したＡＣＬメッセージが不正なメッセージであると判定する（ステップＳ１２６）。つまり、第３判定部１０３は、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵの状態がＡＣＬメッセージを送信しない状態となっているにも関わらず、当該ＡＣＬメッセージを受信した場合には、当該ＡＣＬメッセージが不正なＥＣＵにより送信されたものと推定でき、当該ＡＣＬメッセージが不正なメッセージであると判定できる。これにより、不正検知ＥＣＵ２００は、不正なＥＣＵがＡＣＬメッセージを悪用したＥＣＵ１００ａ〜１００ｇになりすます攻撃又はＥＣＵ１００ａ〜１００ｇのＳＡをすり替える攻撃を未然に防止できる。
【０１１３】
第３判定部２０３は、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵの状態が、ＡＣＬメッセージを送信しない状態でない、すなわち、ＡＣＬメッセージを送信し得る状態（つまり状態Ｓ０、状態Ｓ３、状態Ｓ４又は状態Ｓ５）となっていると判定した場合（ステップＳ１２５でＮｏ）、受信したＡＣＬメッセージが正常なメッセージであると判定する（ステップＳ１２７）。当該ＥＣＵは、ＡＣＬメッセージを送信し得る状態となっていることから、不正検知ＥＣＵ２００が受信したＡＣＬメッセージは、ＡＣＬメッセージを送信し得る状態となっている正規のＥＣＵから送信されたものと推定できるためである。そして、更新部２０４は、ステップＳ１２８での状態の更新の処理を行う。
【０１１４】
ステップＳ１２８での状態の更新の処理について、図１５を用いて説明する。
【０１１５】
図１５は、ＥＣＵの状態の遷移を説明するための図である。状態の遷移について、図１５を用いながら、ＥＣＵ１００ａの状態に着目して説明する。図１５では、ＡＣＬメッセージにＤＮとしてＮａ及びＳＡとしてＳｔが含まれることを（Ｎａ，Ｓｔ）と示している。また、文字が記載された四角枠間を繋ぐ矢印に重なるように記載された、ＡＣＬ受信、ＲＡＣＬ受信及び通常のメッセージ受信との記載は、不正検知ＥＣＵ２００がＣＡＮバス３００を介してＡＣＬメッセージ、ＲＡＣＬメッセージ及び通常のメッセージを受信することを意味する。
【０１１６】
例えばＤＮがＮａのＥＣＵ１００ａについて、その状態が状態Ｓ０となっている（つまり、記憶部２３０においてＤＮとしてＮａに状態Ｓ０が対応付けられている）とする。ＥＣＵ１００ａは、ＳＡを未取得の状態であるため、ＳＡとしてＳｔを取得しようとする場合、ＤＮとしてＮａ及びＳＡとしてＳｔを含むＡＣＬメッセージを送信する。これにより、不正検知ＥＣＵ２００は、ＤＮとしてＮａ及びＳＡとしてＳｔを含むＡＣＬメッセージを受信する。不正検知ＥＣＵ２００が受信したＡＣＬメッセージに含まれるＤＮ（つまりＮａ）は、ＥＣＵ１００ａに割り当てられたＤＮであるため、図１３において、ステップＳ１２４でＹｅｓとなる。そして受信したＡＣＬメッセージに含まれるＤＮ（つまりＮａ）が割り当てられたＥＣＵ１００ａの状態は、上述したように状態Ｓ０であり状態Ｓ１又は状態Ｓ２ではないため、図１３において、ステップＳ１２５でＮｏとなり、ステップＳ１２７を経てステップＳ１２８での状態の更新の処理が行われる。
【０１１７】
更新部２０４は、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵ１００ａの状態が、ＡＣＬメッセージを送信し得る状態となっていると判定された場合に、ＥＣＵ１００ａの状態を、ＡＣＬメッセージを送信しない状態に更新する。例えば、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵ１００ａの状態が、ＡＣＬメッセージを送信し得る状態として状態Ｓ０となっている場合には、更新部２０４は、ＥＣＵ１００ａの状態を、ＡＣＬメッセージを送信しない状態として状態Ｓ１に更新する。ＥＣＵ１００ａは、ＳＡを取得するためにＡＣＬメッセージを送信しており、当該ＡＣＬメッセージに対する応答を２５０ｍｓの間待っている状態となっているためである。
【０１１８】
ＥＣＵ１００ａの状態が状態Ｓ１のときに、ＥＣＵ１００ａは、２５０ｍｓの間に他のＥＣＵ１００ｂ〜１００ｇからＡＣＬメッセージを受信しない場合（つまり、ＥＣＵ１００ａがＳＡとしてＳｔを取得することについて、他のＥＣＵ１００ｂ〜１００ｇが異議を表すＡＣＬメッセージを返信しない場合）、ＳＡとしてＳｔを含む通常のメッセージの送信を開始する。これにより、不正検知ＥＣＵ２００は、ＳＡとしてＳｔを含む通常のメッセージを受信し、図１３において、ステップＳ１２２でＹｅｓとなり、ステップＳ１２８での状態の更新の処理が行われる。
【０１１９】
更新部２０４は、受信した通常のメッセージに含まれるＳＡがＳｔであり、ＥＣＵ１００ａがＳＡとしてＳｔを取得できたことがわかるため、ＥＣＵ１００ａの状態を状態Ｓ１から状態Ｓ２に更新する。
【０１２０】
ＥＣＵ１００ａの状態が状態Ｓ１のときに、ＥＣＵ１００ａがＳＡとしてＳｔを取得することについて、ＥＣＵ１００ａよりも優先度の高いＥＣＵ（例えばＤＮとしてＮａ以下のＮｕが割り当てられたＥＣＵ）が異議を主張する場合、ＤＮとしてＮｕ及びＳＡとしてＳｔを含むＡＣＬメッセージを返信する。これにより、不正検知ＥＣＵ２００は、ＤＮとしてＮｕ及びＳＡとしてＳｔを含むＡＣＬメッセージを受信し、ＥＣＵ１００ａがＳＡとしてＳｔの取得に失敗したことを認識できるため、ＥＣＵ１００ａの状態を状態Ｓ１から状態Ｓ０に更新する。なお、ＮａとＮｕが同じ場合には、ＤＮとしてＮａが割り当てられたＥＣＵ１００ａは、状態Ｓ１、つまり、そもそもＤＮとしてＮａ（Ｎｕ）を含むＡＣＬを送信しない状態となっているため、不正検知ＥＣＵ２００は、ＤＮとしてＮｕ及びＳＡとしてＳｔを含むＡＣＬメッセージが不正なメッセージであると判定できる。
【０１２１】
ＥＣＵ１００ａの状態が状態Ｓ１のときに、ＥＣＵ１００ａがＡＣＬメッセージを送信したことに、偶然初期化中等であったために気付かなかったＥＣＵが存在することもある。そして、例えば、ＥＣＵ１００ａよりも優先度が低い（例えばＤＮとしてＮａよりも大きいＮｕが割り当てられた）ＥＣＵが、ＥＣＵ１００ａの状態が状態Ｓ１から状態Ｓ２に遷移する前に（つまりＥＣＵ１００ａが通常のメッセージの送信を開始する前に）、当該ＥＣＵの初期化等が完了して、ＤＮとしてＮｕ及びＳＡとしてＳｔを含むＡＣＬメッセージを送信することがある。これにより、不正検知ＥＣＵ２００は、ＤＮとしてＮｕ及びＳＡとしてＳｔを含むＡＣＬメッセージを受信する。更新部２０４は、ＥＣＵ１００ａが当該ＡＣＬメッセージに対して異議があり、ＥＣＵ１００ａが再度ＡＣＬメッセージを送信すると推定できるため、ＥＣＵ１００ａの状態を状態Ｓ１から状態Ｓ５に更新する。
【０１２２】
そして、ＥＣＵ１００ａは、ＤＮとしてＮａ及びＳＡとしてＳｔを含むＡＣＬメッセージを送信する。これにより、不正検知ＥＣＵ２００は、ＤＮとしてＮａ及びＳＡとしてＳｔを含むＡＣＬメッセージを受信する。不正検知ＥＣＵ２００が受信したＡＣＬメッセージに含まれるＤＮ（つまりＮａ）は、ＥＣＵ１００ａに割り当てられたＤＮであるため、図１３において、ステップＳ１２４でＹｅｓとなる。そして、受信したＡＣＬメッセージに含まれるＤＮ（つまりＮａ）が割り当てられたＥＣＵ１００ａの状態は、状態Ｓ５であり状態Ｓ１又は状態Ｓ２ではないため、図１３において、ステップＳ１２５でＮｏとなり、ステップＳ１２７を経てステップＳ１２８での状態の更新の処理が行われる。例えば、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵ１００ａの状態が、ＡＣＬメッセージを送信し得る状態として状態Ｓ５となっている場合には、更新部２０４は、ＥＣＵ１００ａの状態を、ＡＣＬメッセージを送信しない状態として状態Ｓ１に更新する。
【０１２３】
ＥＣＵ１００ａの状態が状態Ｓ２のときに、ＥＣＵ１００ａよりも優先度の高いＥＣＵ（例えばＤＮとしてＮａ以下のＮｕが割り当てられたＥＣＵ）が起動して、ＤＮとしてＮｕ及びＳＡとしてＳｔを含むＡＣＬメッセージを送信する場合がある。これにより、不正検知ＥＣＵ２００は、ＤＮとしてＮｕ及びＳＡとしてＳｔを含むＡＣＬメッセージを受信し、ＥＣＵ１００ａがＳＡとしてＳｔを当該優先度の高いＥＣＵに譲り渡し、ＥＣＵ１００ａの状態がＳＡを未取得の状態になることを認識できるため、ＥＣＵ１００ａの状態を状態Ｓ２から状態Ｓ０に更新する。なお、ＮａとＮｕが同じ場合には、ＤＮとしてＮａが割り当てられたＥＣＵ１００ａは、状態Ｓ２、つまり、そもそもＤＮとしてＮａ（Ｎｕ）を含むＡＣＬを送信しない状態となっているため、不正検知ＥＣＵ２００は、ＤＮとしてＮｕ及びＳＡとしてＳｔを含むＡＣＬメッセージが不正なメッセージであると判定できる。
【０１２４】
ＥＣＵ１００ａの状態が状態Ｓ２のときに、ＥＣＵ１００ａよりも優先度の低いＥＣＵ（例えばＤＮとしてＮａよりも大きいＮｕが割り当てられたＥＣＵ）が起動して、ＤＮとしてＮｕ及びＳＡとしてＳｔを含むＡＣＬメッセージを送信する場合がある。これにより、不正検知ＥＣＵ２００は、ＤＮとしてＮｕ及びＳＡとしてＳｔを含むＡＣＬメッセージを受信する。更新部２０４は、ＥＣＵ１００ａが当該ＡＣＬメッセージに対して異議があり、ＥＣＵ１００ａが再度ＡＣＬメッセージを送信すると推定できるため、ＥＣＵ１００ａの状態を状態Ｓ２から状態Ｓ４に更新する。
【０１２５】
そして、ＥＣＵ１００ａは、ＤＮとしてＮａ及びＳＡとしてＳｔを含むＡＣＬメッセージを送信する。これにより、不正検知ＥＣＵ２００は、ＤＮとしてＮａ及びＳＡとしてＳｔを含むＡＣＬメッセージを受信する。不正検知ＥＣＵ２００が受信したＡＣＬメッセージに含まれるＤＮ（つまりＮａ）は、ＥＣＵ１００ａに割り当てられたＤＮであるため、図１３において、ステップＳ１２４でＹｅｓとなる。そして、受信したＡＣＬメッセージに含まれるＤＮ（つまりＮａ）が割り当てられたＥＣＵ１００ａの状態は、状態Ｓ４であり状態Ｓ１又は状態Ｓ２ではないため、図１３において、ステップＳ１２５でＮｏとなり、ステップＳ１２７を経てステップＳ１２８での状態の更新の処理が行われる。例えば、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵ１００ａの状態が、ＡＣＬメッセージを送信し得る状態として状態Ｓ４となっている場合には、更新部２０４は、ＥＣＵ１００ａの状態を、ＡＣＬメッセージを送信しない状態として状態Ｓ２に更新する。
【０１２６】
また、ＥＣＵ１００ａの状態が状態Ｓ２のときに、ＥＣＵ１００ａがＲＡＣＬメッセージを受信する場合がある。この場合、不正検知ＥＣＵ２００もＲＡＣＬメッセージを同様に受信する。図１３において、ステップＳ１２３でＮｏの場合に、第１判定部２０１は、受信したメッセージがＲＡＣＬメッセージであるか否かを判定し、ステップＳ１２８で、更新部２０４は、受信したメッセージがＲＡＣＬメッセージであると判定された場合に、ＥＣＵ１００ａの状態をＡＣＬメッセージを送信し得る状態（具体的には状態Ｓ３）に更新する。ＥＣＵ１００ａがＲＡＣＬメッセージを受信して、当該ＲＡＣＬメッセージに対してＥＣＵ１００ａがＡＣＬメッセージを返信すると推定できるためである。
【０１２７】
そして、ＥＣＵ１００ａは、ＤＮとしてＮａ及びＳＡとしてＳｔを含むＡＣＬメッセージを送信する。これにより、不正検知ＥＣＵ２００は、ＤＮとしてＮａ及びＳＡとしてＳｔを含むＡＣＬメッセージを受信する。不正検知ＥＣＵ２００が受信したＡＣＬメッセージに含まれるＤＮ（つまりＮａ）は、ＥＣＵ１００ａに割り当てられたＤＮであるため、図１３において、ステップＳ１２４でＹｅｓとなる。そして、受信したＡＣＬメッセージに含まれるＤＮ（つまりＮａ）が割り当てられたＥＣＵ１００ａの状態は、状態Ｓ３であり状態Ｓ１又は状態Ｓ２ではないため、図１３において、ステップＳ１２５でＮｏとなり、ステップＳ１２７を経てステップＳ１２８での状態の更新の処理が行われる。例えば、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵ１００ａの状態が、ＡＣＬメッセージを送信し得る状態として状態Ｓ３となっている場合には、更新部２０４は、ＥＣＵ１００ａの状態を、ＡＣＬメッセージを送信しない状態として状態Ｓ２に更新する。
【０１２８】
なお、不正検知ＥＣＵ２００がＲＡＣＬメッセージを受信する場合、ＥＣＵ１００ａに限らず、他のＥＣＵ１００ａ〜１００ｇがＲＡＣＬメッセージを受信するため、更新部２０４は、受信したメッセージがＲＡＣＬメッセージであると判定された場合に、他のＥＣＵ１００ａ〜１００ｇの状態をＡＣＬメッセージを送信し得る状態に更新する。
【０１２９】
［２．４  まとめ］
以上説明したように、電子制御システム２における不正検知ＥＣＵ２００は、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージを悪用した不正を検知する。具体的には、不正検知ＥＣＵ２００は、他のＥＣＵ１００ａ〜１００ｇのいずれかのＥＣＵがＡＣＬメッセージを送信しない状態になっているにも関わらず、当該いずれかのＥＣＵのＤＮを含むＡＣＬメッセージを受信した場合に、当該ＡＣＬメッセージを不正なメッセージであると判定する。実施の形態２に係る不正検知ＥＣＵ２００によれば、認証及び鍵共有のための通信が行われないため、当該通信による遅延が発生しない。また、実施の形態２に係る不正検知ＥＣＵ２００によれば、ＣＡＮメッセージパケット内にＭＡＣを格納するためのフィールドが不要であり、メッセージを送信するのに要する時間が増加しない。したがって、実施の形態２に係る不正検知ＥＣＵ２００によれば、通信品質の劣化を抑制しつつ、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージを悪用した不正を検知できる。
【０１３０】
（効果等）
電子制御装置（実施の形態１ではＥＣＵ１００、実施の形態２では不正検知ＥＣＵ２００）は、ＳＡＥ  Ｊ１９３９規格に基づいて他の電子制御装置（実施の形態１では他のＥＣＵ１００、実施の形態２では他のＥＣＵ１００ａ〜１００ｇ）とＣＡＮバス３００を介したメッセージの送受信を行う電子制御装置である。電子制御装置は、受信したメッセージがＡＣＬメッセージであるか否かを判定する第１判定部と、受信したメッセージがＡＣＬメッセージであると判定された場合に、受信したＡＣＬメッセージに含まれるＤＮが予め定められたＤＮであるか否かを判定する第２判定部と、受信したＡＣＬメッセージに含まれるＤＮが予め定められたＤＮであると判定された場合に、所定の判定を行い、当該判定の結果に応じて、受信したＡＣＬメッセージが不正なメッセージであるか否かを判定する第３判定部と、を備える。
【０１３１】
また、電子制御システム１、２は、上記の電子制御装置と、上記の他の電子制御装置と、ＣＡＮバス３００と、を備える。
【０１３２】
これによれば、電子制御装置は、受信したＡＣＬメッセージが予め定められたＤＮを含むか否かを判定し、受信したＡＣＬメッセージが予め定められたＤＮを含む場合に、所定の判定を行うだけで、受信したＡＣＬメッセージが不正なメッセージであるか否かを判定できる。すなわち、認証及び鍵共有のための通信が行われないため、当該通信による遅延が発生せず、また、ＣＡＮメッセージパケット内にＭＡＣを格納するためのフィールドが不要であり、メッセージを送信するのに要する時間が増加しないことから、通信品質の劣化を抑制しつつ、ＳＡＥ  Ｊ１９３９規格のＡＣＬメッセージを悪用した不正を検知できる。
【０１３３】
また、実施の形態１では、予め定められたＤＮは、ＥＣＵ１００に割り当てられたＤＮであり、第３判定部１０３は、所定の判定として、受信したＡＣＬメッセージがＥＣＵ１００により送信されたメッセージであるか否かを判定し、受信したＡＣＬメッセージがＥＣＵ１００により送信されたメッセージでないと判定した場合に、受信したＡＣＬメッセージが不正なメッセージであると判定してもよい。
【０１３４】
これによれば、ＥＣＵ１００は、自身が送信していないにも関わらず、自身のＤＮを含むＡＣＬメッセージを受信した場合に、当該ＡＣＬメッセージを不正なメッセージであると判定できる。
【０１３５】
以下、実施の形態２に該当する内容である。
【０１３６】
予め定められたＤＮは、他のＥＣＵ１００ａ〜１００ｇのそれぞれに割り当てられたＤＮのうちのいずれかのＤＮであり、第３判定部２０３は、所定の判定として、受信したＡＣＬメッセージに含まれるＤＮが他のＥＣＵ１００ａ〜１００ｇのそれぞれに割り当てられたＤＮのうちのいずれのデバイスネームであるか否かを判定し、受信したＡＣＬメッセージに含まれるＤＮが他のＥＣＵ１００ａ〜１００ｇのそれぞれに割り当てられたＤＮのうちのいずれのＤＮでもないと判定された場合に、受信したＡＣＬメッセージが不正なメッセージであると判定してもよい。
【０１３７】
これによれば、不正検知ＥＣＵ２００は、ＣＡＮバス３００に接続されたＥＣＵ１００ａ〜１００ｇのいずれのＤＮでもないＤＮを含むＡＣＬメッセージを受信した場合、当該ＡＣＬメッセージは不正なＥＣＵ等によって送信されたものと推定できるため、当該ＡＣＬメッセージを不正なメッセージであると判定できる。
【０１３８】
また、第３判定部２０３は、所定の判定として、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵの状態が、ＡＣＬメッセージを送信しない状態となっているか否かを判定し、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵの状態が、ＡＣＬメッセージを送信しない状態となっていると判定した場合に、受信したＡＣＬメッセージが不正なメッセージであると判定してもよい。
【０１３９】
これによれば、不正検知ＥＣＵ２００は、他のＥＣＵ１００ａ〜１００ｇのいずれかのＥＣＵがＡＣＬメッセージを送信しない状態になっているにも関わらず、当該いずれかのＥＣＵのＤＮを含むＡＣＬメッセージを受信した場合に、当該ＡＣＬメッセージを不正なメッセージであると判定できる。
【０１４０】
また、不正検知ＥＣＵ２００は、他のＥＣＵ１００ａ〜１００ｇの状態を記憶する記憶部２３０と、記憶部２３０に記憶された他のＥＣＵ１００ａ〜１００ｇの状態を更新する更新部２０４と、をさらに備えていてもよい。
【０１４１】
これによれば、不正検知ＥＣＵ２００は、他のＥＣＵ１００ａ〜１００ｇの状態を記憶しておき、状況に応じて更新することができる。
【０１４２】
また、更新部２０４は、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵの状態が、ＡＣＬメッセージを送信し得る状態となっていると判定された場合に、当該ＥＣＵの状態を、ＡＣＬメッセージを送信しない状態に更新してもよい。
【０１４３】
これによれば、不正検知ＥＣＵ２００が、ＡＣＬメッセージを送信し得る状態となっているＥＣＵからＡＣＬメッセージを受信した場合、当該ＥＣＵはＡＣＬメッセージを送信して現状ＡＣＬメッセージを送信しない状態になっているため、当該ＥＣＵの状態を、ＡＣＬメッセージを送信しない状態に更新できる。
【０１４４】
また、第１判定部２０１は、さらに、受信したメッセージがＲＡＣＬメッセージであるか否かを判定し、更新部２０４は、受信したメッセージがＲＡＣＬメッセージであると判定された場合に、他のＥＣＵ１００ａ〜１００ｇの状態をＡＣＬメッセージを送信し得る状態に更新してもよい。
【０１４５】
これによれば、不正検知ＥＣＵ２００が、ＲＡＣＬメッセージを受信した場合、他のＥＣＵ１００ａ〜１００ｇはＲＡＣＬメッセージに対してＡＣＬメッセージを返信しようとする状態になっているため、他のＥＣＵ１００ａ〜１００ｇの状態を、ＡＣＬメッセージを送信し得る状態に更新できる。
【０１４６】
また、不正検知ＥＣＵ２００は、さらに、起動した際にＣＡＮバス３００へＲＡＣＬメッセージを送信する送信部２０５を備え、更新部２０４は、送信したＲＡＣＬメッセージに対してＡＣＬメッセージを受信した場合に、受信したＡＣＬメッセージに含まれるＤＮが割り当てられたＥＣＵの初期状態を、ＡＣＬメッセージを送信しない状態であるとし、送信したＲＡＣＬメッセージに対してキャンノットクレームメッセージを受信した場合に、受信したキャンノットクレームメッセージに含まれるＤＮが割り当てられたＥＣＵの初期状態を、ＡＣＬメッセージを送信し得る状態とし、送信したＲＡＣＬメッセージに対してメッセージを返信しないＥＣＵの初期状態を、ＡＣＬメッセージを送信し得る状態としてもよい。
【０１４７】
これによれば、不正検知ＥＣＵ２００は、起動した際にＲＡＣＬメッセージを送信し、他のＥＣＵ１００ａ〜１００ｇからの返信に応じて他のＥＣＵ１００ａ〜１００ｇの初期状態を決定できる。
【０１４８】
（その他の実施の形態）
以上のように、本開示に係る技術の例示として実施の形態を説明した。しかしながら、本開示に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本開示の一実施の形態に含まれる。
【０１４９】
例えば、実施の形態１では、電子制御システム１における各ＥＣＵ１００（ＥＣＵ１００ａ〜１００ｇ）が本開示の特徴的構成要素である不正検知部１１０を備えていたが、これに限らない。例えば、不正検知部１１０を備えていないＥＣＵが電子制御システム１におけるＣＡＮバス３００に接続されていてもよい。
【０１５０】
また、例えば、実施の形態２では、不正検知ＥＣＵ２００は、起動した際にＣＡＮバス３００へＲＡＣＬメッセージを送信する送信部２０５を備えていたが、備えていなくてもよい。
【０１５１】
また、例えば、実施の形態１及び２では、電子制御システム１、２は、７つのＥＣＵ１００ａ〜１００ｇを備えていたが、少なくとも２つのＥＣＵを備えていればよい。
【０１５２】
また、例えば、実施の形態１及び２では、ＤＮにおける上位１ビットのＡＡＣ（Ａｒｂｉｔｒａｒｙ  Ａｄｄｒｅｓｓ  Ｃａｐａｂｌｅ）は、ＡＣＬプロトコル用のビットであり、ＥＣＵの識別には用いられないため、ＤＮが示す値の比較においてＡＡＣの値は考慮しなくてもよい。つまり、ＤＮの比較は、実施の形態１及び２ではＤＮにおける全ビット（６４ビット）が示す値での比較であるが、６４ビットのうちのＡＡＣを除く下位６３ビットが示す値での比較であってもよい。
【０１５３】
また、例えば、電子制御装置は、受信したＡＣＬメッセージが不正なメッセージであるか否かの判定結果を、電子制御システム内の他のＥＣＵや、電子制御システムの外部の装置（例えばサーバ装置等）に出力する出力部を備えていてもよい。
【０１５４】
なお、本開示は、電子制御装置として実現できるだけでなく、電子制御装置を構成する各構成要素が行うステップ（処理）を含む電子制御方法として実現できる。
【０１５５】
例えば、電子制御方法におけるステップは、コンピュータ（コンピュータシステム）によって実行されてもよい。そして、本開示は、電子制御方法に含まれるステップを、コンピュータに実行させるためのプログラムとして実現できる。
【０１５６】
図１６は、その他の実施の形態におけるプログラムが電子制御装置に実行されることで実行されるステップを示すフローチャートである。
【０１５７】
当該プログラムは、ＳＡＥ  Ｊ１９３９規格に従って他の電子制御装置とＣＡＮバスを介したメッセージの送受信を行う電子制御装置によって実行されるプログラムであって、受信したメッセージがＡＣＬメッセージであるか否かを判定する第１判定処理（ステップＳ１４１）と、受信したメッセージがＡＣＬメッセージであると判定された場合に、受信したＡＣＬメッセージに含まれるＤＮが予め定められたＤＮであるか否かを判定する第２判定処理（ステップＳ１４２）と、受信したＡＣＬメッセージに含まれるＤＮが予め定められたＤＮであると判定された場合に、所定の判定を行い、当該判定の結果に応じて、受信したＡＣＬメッセージが不正なメッセージであるか否かを判定する第３判定処理（ステップＳ１４３）と、を含む。
【０１５８】
さらに、本開示は、そのプログラムを記録したＣＤ−ＲＯＭ等である非一時的なコンピュータ読み取り可能な記録媒体として実現できる。
【０１５９】
例えば、本開示が、プログラム（ソフトウェア）で実現される場合には、コンピュータのＣＰＵ、メモリ及び入出力回路等のハードウェア資源を利用してプログラムが実行されることによって、各ステップが実行される。つまり、ＣＰＵがデータをメモリ又は入出力回路等から取得して演算したり、演算結果をメモリ又は入出力回路等に出力したりすることによって、各ステップが実行される。
【０１６０】
また、上記実施の形態の電子制御装置に含まれる各構成要素は、専用又は汎用の回路として実現されてもよい。
【０１６１】
また、上記実施の形態の電子制御装置に含まれる各構成要素は、集積回路（ＩＣ：Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であるＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）として実現されてもよい。
【０１６２】
また、集積回路はＬＳＩに限られず、専用回路又は汎用プロセッサで実現されてもよい。プログラム可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、又は、ＬＳＩ内部の回路セルの接続及び設定が再構成可能なリコンフィギュラブル・プロセッサが、利用されてもよい。
【０１６３】
さらに、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて、電子制御装置に含まれる各構成要素の集積回路化が行われてもよい。
【０１６４】
その他、実施の形態に対して当業者が思いつく各種変形を施して得られる形態、本開示の趣旨を逸脱しない範囲で各実施の形態における構成要素及び機能を任意に組み合わせることで実現される形態も本開示に含まれる。
【産業上の利用可能性】
【０１６５】
本開示は、例えばトラック、バス、建機車両、トラクタ又はトレーラなどにおけるネットワークに流れる不正なメッセージに対応するための装置に適用できる。
【符号の説明】
【０１６６】
１、２  電子制御システム
１００、１００ａ〜１００ｇ  ＥＣＵ（電子制御装置）
１１０、２１０  不正検知部
１０１、２０１  第１判定部
１０２、２０２  第２判定部
１０３、２０３  第３判定部
１２０、２２０  送受信インタフェース
１３０  アプリ処理部
２００  不正検知ＥＣＵ（電子制御装置）
２０４  更新部
２０５  送信部
２３０  記憶部
３００  ＣＡＮバス
【図１】
2020137013.tif 000003
【図２】
2020137013.tif 000004
【図３】
2020137013.tif 000005
【図４】
2020137013.tif 000006
【図５Ａ】
2020137013.tif 000007
【図５Ｂ】
2020137013.tif 000008
【図６】
2020137013.tif 000009
【図７】
2020137013.tif 000010
【図８】
2020137013.tif 000011
【図９】
2020137013.tif 000012
【図１０】
2020137013.tif 000013
【図１１】
2020137013.tif 000014
【図１２】
2020137013.tif 000015
【図１３】
2020137013.tif 000016
【図１４】
2020137013.tif 000017
【図１５】
2020137013.tif 000018
【図１６】
2020137013.tif 000019