(57)【要約】【課題】第１車載機及び第２車載機を備える小型で安価な車載装置と、第１中継機及び第２中継機を備える小型で安価な中継装置と、前記車載装置及び中継装置夫々で実行されるコンピュータプログラムとを提供する。【解決手段】中継装置１１は、第１制御プログラムに従って処理を実行する第１中継機２１と、第２制御プログラムに従って処理を実行する第２中継機２２とを備える。第１中継機２１のＨＳＭ(Hardware Security Module)は第２制御プログラムを検証する。第２車載機は、第２制御プログラムに関連する関連データを演算する。ＨＳＭは、第２中継機２２が演算した関連データが基準データと一致するか否かを判定することによって、第２制御プログラムを検証する。【選択図】図１
2018116669.tif 000002
【特許請求の範囲】
【請求項１】
第１制御プログラムに従って処理を実行する第１処理部と、該第１処理部を構成するハードウェアとは異なる他のハードウェアによって前記第１制御プログラムを検証する検証器とを有する第１車載機を備える車載装置において、
第２制御プログラムに従って処理を実行する第２処理部を有する第２車載機と、
前記第２制御プログラムに関連する関連データを演算する関連データ演算部と
を備え、
前記検証器は、前記関連データ演算部が演算した関連データが基準データと一致するか否かを判定する判定部を有すること
を特徴とする車載装置。
【請求項２】
前記検証器では、前記他のハードウェアが検証プログラムを実行することによって、前記第１制御プログラムが検証されること
を特徴とする請求項１に記載の車載装置。
【請求項３】
前記第１車載機の前記検証器は、
前記関連データ演算部と、
乱数データを生成する乱数生成部と、
該乱数生成部が生成した乱数データ、及び、所定データに基づいて、前記基準データを演算する基準データ演算部と
を有し、
前記第２車載機は、前記第２制御プログラム及び乱数データに基づいて、前記関連データを演算するための演算データを算出する算出部を有し、
前記検証器の前記関連データ演算部は、前記算出部が算出した演算データに基づいて前記関連データを演算すること
を特徴とする請求項１又は請求項２に記載の車載装置。
【請求項４】
前記第１車載機の前記検証器は、鍵データが記憶されている記憶部を有し、
前記基準データ演算部は、該記憶部に記憶されている鍵データと、前記乱数データと、前記所定データとに基づいて前記基準データを演算し、
前記関連データ演算部は、前記演算データ及び鍵データに基づいて前記関連データを演算すること
を特徴とする請求項３に記載の車載装置。
【請求項５】
前記第１車載機の前記検証器は、
乱数データを生成する乱数生成部と、
該乱数生成部が生成した乱数データ、及び、所定データに基づいて、前記基準データを演算する基準データ演算部と
を有し、
前記第２車載機は前記関連データ演算部を有し、
該関連データ演算部は、前記第２制御プログラム及び乱数データに基づいて前記関連データを演算すること
を特徴とする請求項１又は請求項２に記載の車載装置。
【請求項６】
前記検証器の前記判定部によって、前記関連データが前記基準データと一致していないと判定された場合に前記第２車載機の動作を停止させる動作制御部を備えること
を特徴とする請求項１から請求項５のいずれか１つに記載の車載装置。
【請求項７】
複数の第１通信装置間の通信を中継する第１中継機と、制御プログラムに従って処理を実行し、複数の第２通信装置間の通信を中継する第２中継機とを備え、前記第１中継機及び第２中継機は前記第１通信装置及び第２通信装置間の通信を中継する車両用の中継装置であって、
前記第１中継機は、
鍵データが記憶されている記憶部と、
該鍵データを用いて、前記第２中継機の前記制御プログラムに関連する関連データを演算する演算部と、
該演算部が演算した関連データが所定データと一致するか否かを判定する判定部と
を有することを特徴とする中継装置。
【請求項８】
前記第１中継機の前記判定部によって前記関連データが前記所定データと一致していないと判定された場合に前記第２中継機の動作を停止させる動作制御部を備えること
を特徴とする請求項７に記載の中継装置。
【請求項９】
前記第２中継機は、前記関連データを演算するための演算データを算出する算出部を有し、
前記第１中継機は、該算出部が算出した演算データを取得する取得部を有し、
前記第１中継機の前記演算部は、前記鍵データと、該取得部が取得した演算データとを用いて前記関連データを演算すること
を特徴とする請求項７又は請求項８に記載の中継装置。
【請求項１０】
前記第１中継機は、
第２の制御プログラムに従って処理を実行する処理部と、
第２の鍵データが記憶されている第２の記憶部と、
該第２の鍵データを用いて、前記第２の制御プログラムに関連する第２の関連データを演算する第２の演算部と、
該第２の演算部が演算した第２の関連データが第２の所定データと一致するか否かを判定する第２の判定部と
を有することを特徴とする請求項７から請求項９のいずれか１つに記載の中継装置。
【請求項１１】
複数の第１通信装置間の通信で用いられる第１プロトコルに対応するデータを、複数の第２通信装置間の通信で用いられる第２プロトコルに対応するデータに変換し、該第２プロトコルに対応するデータを前記第１プロトコルに対応するデータに変換する変換部を備えること
を特徴とする請求項７から請求項１０のいずれか１つに記載の中継装置。
【請求項１２】
第１制御プログラムに従って処理を実行する第１処理部と、該第１処理部を構成するハードウェアとは異なる他のハードウェアによって前記第１制御プログラムを検証する検証器とを有する第１車載機と、第２制御プログラムに従って処理を実行する第２車載機とを備える車載装置の前記検証器で実行されるコンピュータプログラムであって、
前記第２制御プログラムに関連する関連データを演算し、
演算した関連データが基準データと一致しているか否かを判定する
処理をコンピュータに実行させることを特徴とするコンピュータプログラム。
【請求項１３】
第１制御プログラムに従って処理を実行する第１処理部と、該第１処理部を構成するハードウェアとは異なる他のハードウェアによって前記第１制御プログラムを検証する検証器とを有する第１車載機と、第２制御プログラムに従って処理を実行する第２車載機とを備える車載装置の前記検証器で実行されるコンピュータプログラムであって、
前記第２制御プログラムに関連する関連データを取得し、
取得した関連データが基準データと一致しているか否かを判定する
処理をコンピュータに実行させることを特徴とするコンピュータプログラム。
【請求項１４】
複数の第１通信装置間の通信を中継する第１中継機と、制御プログラムに従って処理を実行し、複数の第２通信装置間の通信を中継する第２中継機とを備え、前記第１中継機及び第２中継機は前記第１通信装置及び第２通信装置間の通信を中継する車両用の中継装置における前記第１中継機で実行されるコンピュータプログラムであって、
予め記憶されている鍵データを用いて、前記第２中継機の前記制御プログラムに関連する関連データを演算し、
演算した関連データが所定データと一致するか否かを判定する
処理をコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車載装置と、通信装置間の通信を中継する中継装置と、前記車載装置及び中継装置夫々で実行されるコンピュータプログラムとに関する。
【背景技術】
【０００２】
車両に搭載される通信システムとして、電気機器の動作を制御する複数のＥＣＵ(Electronic Control Unit)間の通信を中継装置が中継する通信システムがある。この通信システムでは、複数のＥＣＵ夫々は通信装置として機能し、１つのＥＣＵは、中継装置を介して、他のＥＣＵと通信する。複数のＥＣＵは相互に通信することによって、複数の電気機器に協調動作を行わせることができる。中継装置は、１つのＥＣＵから受信したデータを他のＥＣＵに送信する。
【０００３】
中継装置には制御プログラムが記憶されている。中継装置では、ＣＰＵ(Central Processing Unit)は、制御プログラムを実行することによって、通信を中継する中継処理を実行する。中継装置に記憶されている制御プログラムが改ざんされた場合、中継装置は適切にデータを送信しないため、電気機器が適正に動作しない虞がある。そこで、中継装置が起動した場合に、制御プログラムが適正であることを検証する必要がある。
【０００４】
特許文献１には、制御プログラムが適正であることを検証する技術が開示されている。この技術では、制御プログラムに関連する関連データを演算し、演算した関連データが、予め記憶されている複数の所定データの１つと一致するか否かと判定する。演算した関連データが複数の所定データの１つと一致する場合、制御プログラムが適正であると判定する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２５９１６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
車両における通信では複数のプロトコルが用いられている。このため、中継装置として、複数の第１通信装置間の通信を中継する第１中継機と、複数の第２通信装置間の通信を中継する第２中継機とを備える中継装置が考えられる。
【０００７】
この中継装置では、例えば、複数の第１通信装置間で第１プロトコルに従った通信が行われ、複数の第２通信装置間で第２プロトコルに従った通信が行われる。また、第１中継機は第２中継機に接続されており、第１中継機及び第２中継機は、第１通信装置及び第２通信装置間の通信を中継する。
【０００８】
第１中継機及び第２中継機を備える中継装置では、第１中継機及び第２中継機夫々にＣＰＵが搭載されており、第１中継機のＣＰＵが実行する制御プログラムは、第２中継機のＣＰＵが実行する制御プログラムと異なる。この場合、これらの制御プログラム夫々について検証を行う必要がある。第１中継機及び第２中継機夫々の制御プログラムを検証する中継装置として、制御プログラムが適正であることを検証する検証機能を、第１中継機及び第２中継機夫々が有する中継装置が考えられる。
しかしながら、第１中継機及び第２中継機夫々が検証機能を有する場合、中継装置のサイズが大型であり、製造費用が嵩むという問題がある。
【０００９】
このような問題がある車載装置は、中継装置に限定されない。第１制御プログラムに従って処理が実行される第１車載機と、第１制御プログラムとは異なる第２制御プログラムに従って処理が実行される第２車載機とを備える車載装置にも同様の問題がある。
【００１０】
本発明は斯かる事情に鑑みてなされたものであり、その目的とするところは、第１車載機及び第２車載機を備える小型で安価な車載装置と、第１中継機及び第２中継機を備える小型で安価な中継装置と、前記車載装置及び中継装置夫々で実行されるコンピュータプログラムとを提供することにある。
【課題を解決するための手段】
【００１１】
本発明に係る車載装置は、第１制御プログラムに従って処理を実行する第１処理部と、該第１処理部を構成するハードウェアとは異なる他のハードウェアによって前記第１制御プログラムを検証する検証器とを有する第１車載機を備える車載装置において、第２制御プログラムに従って処理を実行する第２処理部を有する第２車載機と、前記第２制御プログラムに関連する関連データを演算する関連データ演算部とを備え、前記検証器は、前記関連データ演算部が演算した関連データが基準データと一致するか否かを判定する判定部を有することを特徴とする。
【００１２】
本発明にあっては、第１車載機の検証器が、第２車載機の第２制御プログラムに関連する関連データが基準データと一致するか否かを判定することよって、第２制御プログラムを検証する。このため、第２車載機が第２制御プログラムの検証機能を有する必要がないので、装置は小型であり、製造費用が安価である。
【００１３】
本発明に係る車載装置は、前記検証器では、前記他のハードウェアが検証プログラムを実行することによって、前記第１制御プログラムが検証されることを特徴とする。
【００１４】
本発明にあっては、第１処理部を構成するハードウェアとは異なる他のハードウェアが検証プログラムを実行することによって、第１制御プログラムが検証される。
【００１５】
本発明に係る車載装置は、前記第１車載機の前記検証器は、前記関連データ演算部と、乱数データを生成する乱数生成部と、該乱数生成部が生成した乱数データ、及び、所定データに基づいて、前記基準データを演算する基準データ演算部とを有し、前記第２車載機は、前記第２制御プログラム及び乱数データに基づいて、前記関連データを演算するための演算データを算出する算出部を有し、前記検証器の前記関連データ演算部は、前記算出部が算出した演算データに基づいて前記関連データを演算することを特徴とする。
【００１６】
本発明にあっては、第１車載機の検証器は、乱数データを生成し、生成した乱数データと、所定データとに基づいて基準データを演算する。第２車載機は、検証器が生成した乱数データを取得し、取得した乱数データと第２制御プログラムとに基づいて演算データを算出する。検証器は、第２車載機が算出した演算データを取得し、取得した演算データに基づいて関連データを演算し、関連データが基準データと一致するか否かを判定する。
【００１７】
検証器が生成する乱数データが変更された場合、第２車載機が算出する演算データも変更される。例えば、検証器が第２制御プログラムを検証する都度、乱数データを変更すると仮定する。この場合、検証器が第２制御プログラムを検証する都度、演算データが変更されるので、第２制御プログラムの検証結果の信頼性が高い。
【００１８】
本発明に係る車載装置は、前記第１車載機の前記検証器は、鍵データが記憶されている記憶部を有し、前記基準データ演算部は、該記憶部に記憶されている鍵データと、前記乱数データと、前記所定データとに基づいて前記基準データを演算し、前記関連データ演算部は、前記演算データ及び鍵データに基づいて前記関連データを演算することを特徴とする。
【００１９】
本発明にあっては、第１車載機の検証器は、鍵データ、乱数データ及び所定データに基づいて基準データを演算すると共に、第２車載機が演算した演算データと鍵データとに基づいて関連データを演算するので、第２制御プログラムの検証結果の信頼性がより高い。
【００２０】
本発明に係る車載装置は、前記第１車載機の前記検証器は、乱数データを生成する乱数生成部と、該乱数生成部が生成した乱数データ、及び、所定データに基づいて、前記基準データを演算する基準データ演算部とを有し、前記第２車載機は前記関連データ演算部を有し、該関連データ演算部は、前記第２制御プログラム及び乱数データに基づいて前記関連データを演算することを特徴とする。
【００２１】
本発明にあっては、第１車載機の検証器は、乱数データを生成し、生成した乱数データと、所定データとに基づいて基準データを演算する。第２車載機は、検証器が生成した乱数データを取得し、取得した乱数データと第２制御プログラムとに基づいて関連データを演算する。検証器は、第２車載機が演算した関連データを取得し、取得した関連データが基準データと一致するか否かを判定する。
【００２２】
検証器が生成する乱数データが変更された場合、第２車載機が演算する関連データも変更される。例えば、検証器が第２制御プログラムを検証する都度、乱数データを変更すると仮定する。この場合、検証器が第２制御プログラムを検証する都度、検証器が第２車載機から取得する関連データが変更されるので、第２制御プログラムの検証結果の信頼性が高い。
【００２３】
本発明に係る車載装置は、前記検証器の前記判定部によって、前記関連データが前記基準データと一致していないと判定された場合に前記第２車載機の動作を停止させる動作制御部を備えることを特徴とする。
【００２４】
本発明にあっては、第１車載機の検証器によって、関連データが所定データと一致しないと判定された場合、第２制御プログラムが改ざんされた可能性が高いとして、第２車載機は動作を停止する。
【００２５】
本発明に係る中継装置は、複数の第１通信装置間の通信を中継する第１中継機と、制御プログラムに従って処理を実行し、複数の第２通信装置間の通信を中継する第２中継機とを備え、前記第１中継機及び第２中継機は前記第１通信装置及び第２通信装置間の通信を中継する車両用の中継装置であって、前記第１中継機は、鍵データが記憶されている記憶部と、該鍵データを用いて、前記第２中継機の前記制御プログラムに関連する関連データを演算する演算部と、該演算部が演算した関連データが所定データと一致するか否かを判定する判定部とを有することを特徴とする。
【００２６】
本発明にあっては、第２中継機では、制御プログラムに従って処理が実行される。第１中継機は、鍵データを用いて、第２中継機の制御プログラムに関連する関連データを演算し、演算した関連データが所定データと一致するか否かを判定する。第１中継機は、関連データが所定データと一致した場合、例えば、制御プログラムは適正であることを第２中継機に通知し、第２中継機は制御プログラムに従って処理を開始する。
【００２７】
以上のように、第１中継機が第２中継機の制御プログラムが適正であることを検証するため、第１中継機及び第２中継機夫々が制御プログラムの検証機能を有する必要がない。このため、装置は小型であり、製造費用は安価である。
【００２８】
本発明に係る中継装置は、前記第１中継機の前記判定部によって前記関連データが前記所定データと一致していないと判定された場合に前記第２中継機の動作を停止させる動作制御部を備えることを特徴とする。
【００２９】
本発明にあっては、第１中継機によって、関連データが所定データと一致しないと判定された場合、第２中継機の制御プログラムが改ざんされた可能性が高いとして、第２中継機は動作を停止する。
【００３０】
本発明に係る中継装置は、前記第２中継機は、前記関連データを演算するための演算データを算出する算出部を有し、前記第１中継機は、該算出部が算出した演算データを取得する取得部を有し、前記第１中継機の前記演算部は、前記鍵データと、該取得部が取得した演算データとを用いて前記関連データを演算することを特徴とする。
【００３１】
本発明にあっては、第２中継機は、関連データを演算するための演算データを算出する。第１中継機は、演算データを第２中継機から取得し、鍵データと演算データとを用いて関連データを演算する。例えば、演算データのデータ量が制御プログラムのデータ量よりも小さい場合、制御プログラムが適正であることを検証するために、第２中継機から第１中継機へ転送されるデータのデータ量は小さい。この場合、検証を行うために必要な時間が短い。
【００３２】
本発明に係る中継装置は、前記第１中継機は、第２の制御プログラムに従って処理を実行する処理部と、第２の鍵データが記憶されている第２の記憶部と、該第２の鍵データを用いて、前記第２の制御プログラムに関連する第２の関連データを演算する第２の演算部と、該第２の演算部が演算した第２の関連データが第２の所定データと一致するか否かを判定する第２の判定部とを有することを特徴とする。
【００３３】
本発明にあっては、第１中継機では、第２の制御プログラムに従って処理が実行される。第１中継機は、鍵データを用いて関連データを演算することによって、第２中継機の制御プログラムが適正であることを検証すると共に、第２の鍵データを用いて第２の関連データを演算することによって、自機の第２の制御プログラムが適正であることも検証する。
【００３４】
本発明に係る中継装置は、複数の第１通信装置間の通信で用いられる第１プロトコルに対応するデータを、複数の第２通信装置間の通信で用いられる第２プロトコルに対応するデータに変換し、該第２プロトコルに対応するデータを前記第１プロトコルに対応するデータに変換する変換部を備えることを特徴とする。
【００３５】
本発明にあっては、複数の第１通信装置間の通信では第１プロトコルが用いられ、複数の第２通信装置間の通信では第２プロトコルが用いられる。第１通信装置及び第２通信装置間で通信が行われる場合、第１プロトコル対応するデータを、第２プロトコルに対応するデータに変換し、第２プロトコルに対応するデータを第１プロトコルに対応するデータに変換する。
【００３６】
本発明に係るコンピュータプログラムは、第１制御プログラムに従って処理を実行する第１処理部と、該第１処理部を構成するハードウェアとは異なる他のハードウェアによって前記第１制御プログラムを検証する検証器とを有する第１車載機と、第２制御プログラムに従って処理を実行する第２車載機とを備える車載装置の前記検証器で実行されるコンピュータプログラムであって、前記第２制御プログラムに関連する関連データを演算し、演算した関連データが基準データと一致しているか否かを判定する処理をコンピュータに実行させることを特徴とする。
【００３７】
本発明にあっては、第１車載機の検証器が、第２車載機の第２制御プログラムに関連する関連データが基準データと一致するか否かを判定することよって、第２制御プログラムを検証する。このため、第２車載機が第２制御プログラムの検証機能を有する必要がないので、車載装置は小型であり、車載装置の製造費用は安価である。
【００３８】
本発明に係るコンピュータプログラムは、第１制御プログラムに従って処理を実行する第１処理部と、該第１処理部を構成するハードウェアとは異なる他のハードウェアによって前記第１制御プログラムを検証する検証器とを有する第１車載機と、第２制御プログラムに従って処理を実行する第２車載機とを備える車載装置の前記検証器で実行されるコンピュータプログラムであって、前記第２制御プログラムに関連する関連データを取得し、取得した関連データが基準データと一致しているか否かを判定する処理をコンピュータに実行させることを特徴とする。
【００３９】
本発明にあっては、第１車載機の検証器が、第２車載機の第２制御プログラムに関連する関連データが基準データと一致するか否かを判定することよって、第２制御プログラムを検証する。このため、第２車載機が第２制御プログラムの検証機能を有する必要がないので、車載装置は小型であり、車載装置の製造費用は安価である。
【００４０】
本発明に係るコンピュータプログラムは、複数の第１通信装置間の通信を中継する第１中継機と、制御プログラムに従って処理を実行し、複数の第２通信装置間の通信を中継する第２中継機とを備え、前記第１中継機及び第２中継機は前記第１通信装置及び第２通信装置間の通信を中継する車両用の中継装置における前記第１中継機で実行されるコンピュータプログラムであって、予め記憶されている鍵データを用いて、前記第２中継機の前記制御プログラムに関連する関連データを演算し、演算した関連データが所定データと一致するか否かを判定する処理をコンピュータに実行させることを特徴とする。
【００４１】
本発明にあっては、第１中継機が、第２中継機の制御プログラムに関連する関連データが基準データと一致するか否かを判定することよって、第２中継機の制御プログラムを検証する。このため、第２中継機が制御プログラムの検証機能を有する必要がないので、中継装置は小型であり、中継装置の製造費用は安価である。
【発明の効果】
【００４２】
本発明によれば、小型で安価な装置を実現することができる。
【図面の簡単な説明】
【００４３】
【図１】実施の形態１における通信システムの要部構成を示すブロック図である。
【図２】第１中継機の要部構成を示すブロック図である。
【図３】第２中継機の要部構成を示すブロック図である。
【図４】第１中継処理の手順を示すフローチャートである。
【図５】第２中継処理の手順を示すフローチャートである。
【図６】検証処理の手順を示すフローチャートである。
【図７】起動処理の手順を示すフローチャートである。
【図８】実施の形態２における通信システムの要部構成を示すブロック図である。
【図９】第２中継機の要部構成を示すブロック図である。
【図１０】起動処理の手順を示すフローチャートである。
【図１１】実施の形態３における検証処理の手順を示すフローチャートである。
【図１２】実施の形態３における検証処理の手順を示すフローチャートである。
【図１３】起動処理の手順を示すフローチャートである。
【図１４】第２制御プログラムの検証の説明図である。
【図１５】実施の形態４における検証処理の手順を示すフローチャートである。
【図１６】実施の形態４における検証処理の手順を示すフローチャートである。
【図１７】起動処理の手順を示すフローチャートである。
【図１８】第２制御プログラムの検証の説明図である。
【発明を実施するための形態】
【００４４】
以下、本発明をその実施の形態を示す図面に基づいて詳述する。
（実施の形態１）
図１は、実施の形態１における通信システム１の要部構成を示すブロック図である。通信システム１は、車両１００に好適に搭載され、中継装置１１、ＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ、車載機器１３ａ，１３ｂ，１３ｃ及び通信線Ｌａ，Ｌｂを備える。中継装置１１は第１中継機２１及び第２中継機２２を有する。
中継装置１１、第１中継機２１及び第２中継機２２夫々は、車載装置、第１車載機及び第２車載機として機能する。
【００４５】
中継装置１１の第１中継機２１には、２つの通信線Ｌａ，Ｌｂが各別に接続されている。通信線Ｌａには、２つのＥＣＵ１２ａ，１２ａが接続されている。通信線Ｌｂには、２つのＥＣＵ１２ｂ，１２ｂが接続されている。中継装置１１では、第１中継機２１は第２中継機２２に接続されている。第２中継機２２には、３つの車載機器１３ａ，１３ｂ，１３ｃが各別に接続されている。
【００４６】
通信線Ｌａ，Ｌｂ夫々を介して、ＣＡＮ(Controller Area Network)プロトコルに従った通信が行われる。通信線Ｌａ，Ｌｂ夫々はツイストペア線である。通信線Ｌａ，Ｌｂ夫々を介して、ＣＡＮプロトコルに対応し、識別情報を含むＥＣＵデータが送信される。識別情報は、自身が含まれているＥＣＵデータを識別するための情報である。
【００４７】
ＥＣＵ１２ａ，１２ａ及び第１中継機２１夫々は、通信線Ｌａを介してＥＣＵデータを送信する。ＥＣＵ１２ａ，１２ａ及び第１中継機２１中の１つが送信したＥＣＵデータは、他の全ての装置によって受信される。例えば、一方のＥＣＵ１２ａが送信したＥＣＵデータは、他方のＥＣＵ１２ａ及び第１中継機２１によって受信される。
【００４８】
同様に、ＥＣＵ１２ｂ，１２ｂ及び第１中継機２１夫々は、通信線Ｌｂを介してＥＣＵデータを送信する。ＥＣＵ１２ｂ，１２ｂ及び第１中継機２１中の１つが送信したＥＣＵデータは、他の全ての装置によって受信される。例えば、一方のＥＣＵ１２ｂが送信したＥＣＵデータは、他方のＥＣＵ１２ｂ及び第１中継機２１によって受信される。
【００４９】
ＥＣＵ１２ａ，１２ａ夫々は、ＥＣＵデータを受信した場合、受信したＥＣＵデータに含まれている識別情報に基づいて、このＥＣＵデータに係る処理を実行すべきか否かを判定する。ＥＣＵ１２ａ，１２ａは、受信したＥＣＵデータに係る処理を実行すべきであると判定した場合、受信したＥＣＵデータに係る処理を実行する。ＥＣＵ１２ａ，１２ａ夫々は、受信したＥＣＵデータに係る処理を実行すべきではないと判定した場合、受信したＥＣＵデータの放置又は削除等を行う。
【００５０】
同様に、ＥＣＵ１２ｂ，１２ｂ夫々は、ＥＣＵデータを受信した場合、受信したＥＣＵデータに含まれている識別情報に基づいて、このＥＣＵデータに係る処理を実行すべきか否かを判定する。ＥＣＵ１２ｂ，１２ｂ夫々は、受信したＥＣＵデータに係る処理を実行すべきであると判定した場合、受信したＥＣＵデータに係る処理を実行する。ＥＣＵ１２ｂ，１２ｂ夫々は、受信したＥＣＵデータに係る処理を実行すべきではないと判定した場合、受信したＥＣＵデータの放置又は削除等を行う。
【００５１】
ＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ夫々には、図示しない電気機器が接続されている。ＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ夫々は、例えば、受信したＥＣＵデータに係る処理として、受信したＥＣＵデータが示す内容に基づいて、自装置に接続されている電気機器の動作を制御する処理を実行する。
【００５２】
ＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ夫々は、例えば、自装置にセンサが接続されている場合、センサが検出した検出値を示すＥＣＵデータを送信する。また、ＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ夫々は、例えば、自装置に使用者から指示を受け付ける受付部が接続されている場合、受付部が受け付けた指示の内容を示すＥＣＵデータを送信する。例えば、一方のＥＣＵ１２ａに、車両のパワーウィンドウを開閉するウィンドウモータが接続されている場合において、他方のＥＣＵ１２ａは、パワーウィンドウの開放を指示するＥＣＵデータを送信する。一方のＥＣＵ１２ａは、このＥＣＵデータを受信した場合、ウィンドウモータにパワーウィンドウを開放させる。
【００５３】
第１中継機２１は、ＥＣＵ１２ａ，１２ａ中の１つと、ＥＣＵ１２ｂ，１２ｂ中の１つとの間の通信を中継する。具体的には、第１中継機２１は、通信線Ｌａを介して受信したＥＣＵデータを、通信線Ｌｂを介して送信し、通信線Ｌｂを介して受信したＥＣＵデータを、通信線Ｌａを介して送信する。ＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ夫々は第１通信装置として機能する。ＥＣＵ１２ａ，１２ａ中の１つと、ＥＣＵ１２ｂ，１２ｂ中の１つとの間の通信ではＣＡＮプロトコルが用いられる。
【００５４】
車載機器１３ａ，１３ｂ，１３ｃ夫々は、第２中継機２２と一対一で通信する。車載機器１３ａ，１３ｂ，１３ｃ夫々と第２中継機２２との間では、例えば、イーサネット（登録商標）の規格に準じた通信が行われる。車載機器１３ａ，１３ｂ，１３ｃ夫々は、送信先を示す送信先情報を含む機器データを第２中継機２２に送信する。第２中継機２２は、車載機器１３ａ，１３ｂ，１３ｃ中の２つの間で行われる通信を中継する。車載機器１３ａ，１３ｂ，１３ｃ夫々は第２通信装置として機能する。車載機器１３ａ，１３ｂ，１３ｃ中の２つの間の通信では、例えば、イーサネット（登録商標）に対応するプロトコルの１つであるＴＣＰ(Transmission Control Protocol)／ＩＰ(Internet Protocol)が用いられる。
【００５５】
車載機器１３ａ，１３ｂ夫々は、カメラ及びディスプレイであると仮定する。この場合、車載機器１３ａは、カメラで撮影した画像データを含む機器データを第２中継機２２に送信する。この機器データには、送信先として車載機器１３ｂを示す送信先情報が含まれている。第２中継機２２は、画像データを含む機器データを車載機器１３ｂに送信する。車載機器１３ｂは、第２中継機２２から受信した機器データに含まれている画像データに基づく画像を表示する。
【００５６】
第１中継機２１及び第２中継機２２は、ＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ中の１つと、車載機器１３ａ，１３ｂ，１３ｃ中の１つとの間の通信を中継する。
【００５７】
ＥＣＵデータは、前述したように、ＣＡＮプロトコルに対応するデータであり、第１プロトコルに対応するデータに相当する。機器データは、車載機器１３ａ，１３ｂ，１３ｃ中の２つの間の通信で用いられるプロトコルに対応するデータであり、第２プロトコルに対応するデータに相当する。
第１中継機２１は、通信線Ｌａ，Ｌｂの一方を介して受信したＥＣＵデータを機器データに変換する。第２中継機２２は、第１中継機２１が変換した機器データを車載機器１３ａ，１３ｂ，１３ｃ中の１つに送信する。第２中継機２２は、車載機器１３ａ，１３ｂ，１３ｃ中の１つから機器データを受信する。第１中継機２１は、第２中継機２２が受信した機器データをＥＣＵデータに変換し、変換したＥＣＵデータを通信線Ｌａ，Ｌｂ中の少なくとも一方を介して送信する。
【００５８】
図２は第１中継機２１の要部構成を示すブロック図である。第１中継機２１は、ＲＯＭ(Read Only Memory)３１、ＣＰＵ３２、通信部３３ａ，３３ｂ、ＨＳＭ(Hardware Security Module)３４、ＲＡＭ(Random Access Memory)３５及び電源回路３６を有する。これらは、バス３７に接続されている。通信部３３ａ，３３ｂ夫々は、バス３７の他に、通信線Ｌａ，Ｌｂに接続されている。ＲＡＭ３５は、バス３７の他に、第２中継機２２に接続されている。
【００５９】
ＲＯＭ３１には、第１制御プログラムＰ１が記憶されている。ＣＰＵ３２は、第１制御プログラムＰ１に従って第１中継処理を実行する。第１中継処理は、ＥＣＵ１２ａ，１２ａ中の１つとＥＣＵ１２ｂ，１２ｂ中の１つとの間の通信と、ＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ中の１つと車載機器１３ａ，１３ｂ，１３ｃ中の１つとの間の通信とを中継するための処理である。第１制御プログラムＰ１は第２の制御プログラムに相当し、ＣＰＵ３２は処理部として機能する。更に、ＣＰＵ３２は、第１処理部として機能し、第１処理部を構成するハードウェアである。
【００６０】
通信部３３ａは、ＥＣＵ１２ａ，１２ａ中の１つから、通信線Ｌａを介してＥＣＵデータを受信する。通信部３３ａは、ＣＰＵ３２の指示に従って、ＥＣＵデータを、通信線Ｌａを介して送信する。通信部３３ａが送信したＥＣＵデータは、ＥＣＵ１２ａ，１２ａによって受信される。
通信部３３ｂは、ＥＣＵ１２ｂ，１２ｂ中の１つから、通信線Ｌｂを介してＥＣＵデータを受信する。通信部３３ｂは、ＣＰＵ３２の指示に従って、ＥＣＵデータを、通信線Ｌｂを介して送信する。通信部３３ｂが送信したＥＣＵデータは、ＥＣＵ１２ｂ，１２ｂによって受信される。
【００６１】
第２中継機２２には第２制御プログラムＰ２（図３参照）が記憶されている。ＨＳＭ３４は、第１制御プログラムＰ１が適正であることを検証すると共に、第２制御プログラムＰ２が適正であることを検証する。ＨＳＭ３４は、第１制御プログラムＰ１及び第２制御プログラムＰ２を検証する検証器として機能する。
ＣＰＵ３２、ＨＳＭ３４及び第２中継機２２夫々は、ＲＡＭ３５に種々のデータを書き込み、ＲＡＭ３５からデータを読み出す。従って、例えば、第２中継機２２がＲＡＭ３５に書き込んだデータを、ＣＰＵ３２がＲＡＭ３５から読み出すことができる。
【００６２】
電源回路３６は、図示しない電力線によって、車両１００の図示しないバッテリに接続されている。電源回路３６は、更に、図示しない電力線によって、ＲＯＭ３１、ＣＰＵ３２、通信部３３ａ，３３ｂ、ＨＳＭ３４及びＲＡＭ３５に接続されている。電源回路３６は、バッテリが出力した電圧を所定の第１電圧に変圧する。電源回路３６は、第１電圧をＲＯＭ３１、ＣＰＵ３２、通信部３３ａ，３３ｂ、ＨＳＭ３４及びＲＡＭ３５に出力し、これらに電力を供給する。
【００６３】
例えば、車両１００の図示しないイグニッションスイッチがオンに切替わった場合、電源回路３６は、ＲＯＭ３１、ＣＰＵ３２、通信部３３ａ，３３ｂ、ＨＳＭ３４及びＲＡＭ３５に電力を供給し、これらを作動させる。電源回路３６は、ＨＳＭ３４の指示に従って、ＲＯＭ３１、ＣＰＵ３２、通信部３３ａ，３３ｂ、ＨＳＭ３４及びＲＡＭ３５への電力供給を停止する。これにより、これらは動作を停止し、ＲＡＭ３５に記憶されているデータは消去される。
【００６４】
ＨＳＭ３４は、ＲＯＭ４１、ＣＰＵ４２及びインタフェース４３を有する。これらはバス４４に接続されている。インタフェース４３は、バス４４の他にバス３７に接続されている。
【００６５】
ＲＯＭ４１には検証プログラムＰｈが記憶されている。ＣＰＵ４２は、第１中継機２１内で検証プログラムＰｈを実行する。これにより、第１制御プログラムＰ１及び第２制御プログラムＰ２が適正であることを検証するための検証処理が実行される。検証プログラムＰｈは、ＣＰＵ４２に検証処理を実行させるためのコンピュータプログラムである。ＲＯＭ４１には、更に、第１鍵データＫ１、第１基準データＲ１、第２鍵データＫ２及び第２基準データＲ２が記憶されている。これらは、所定データであり、検証処理で用いられる。ＲＯＭ４１は記憶部及び第２の記憶部として機能する。
ＣＰＵ４２は、第１制御プログラムＰ１及び第２制御プログラムＰ２を検証するハードウェアであり、ＣＰＵ３２とは異なっている。
【００６６】
なお、検証プログラムＰｈは、コンピュータ（ＣＰＵ４２）が読み取り可能に、記憶媒体Ｅ１に記憶されていてもよい。この場合、図示しない読み出し装置によって記憶媒体Ｅ１から読み出された検証プログラムＰｈがＨＳＭ３４の図示しない記憶部に記憶される。記憶媒体Ｅ１は、光ディスク、フレキシブルディスク、磁気ディスク、磁気光ディスク又は半導体メモリ等である。光ディスクは、ＣＤ（Compact Disc）−ＲＯＭ(Read Only Memory)、ＤＶＤ（Digital Versatile Disc）−ＲＯＭ、又は、ＢＤ（Blu-ray(登録商標) Disc）等である。磁気ディスクは、例えばハードディスクである。また、図示しない通信網に接続されている図示しない外部装置から検証プログラムＰｈをダウンロードし、検証プログラムＰｈを前述した記憶部に記憶してもよい。
【００６７】
ＣＰＵ４２は、インタフェース４３を介して、第１中継機２１のＲＯＭ３１及びＲＡＭ３５にアクセスする。具体的には、ＣＰＵ４２は、ＲＯＭ３１から第１制御プログラムＰ１を読み出す。また、ＣＰＵ４２は、ＲＡＭ３５に種々のデータを書き込むと共にＲＡＭ３５からデータを読み出す。更に、ＣＰＵ４２は、電源回路３６に電力供給の停止を指示する。以上のように、インタフェース４３は、ＣＰＵ４２がＲＯＭ３１、ＲＡＭ３５及び電源回路３６へのアクセスを許可する。一方で、インタフェース４３は、ＣＰＵ３２がＲＯＭ４１へアクセスすることを防止する。従って、ＣＰＵ３２は、ＲＯＭ４１に記憶されている内容を読み出すことはできない。
【００６８】
電源回路３６からＨＳＭ３４への電力供給が開始された場合、ＣＰＵ４２は検証処理を実行する。ＣＰＵ４２が検証処理を実行している間、第１中継機２１のＣＰＵ３２は動作を停止している。例えば、ＣＰＵ３２は、ＣＰＵ３２の図示しない端子の電圧がハイレベル電圧である場合に作動し、ＣＰＵ３２の端子の電圧がローレベル電圧である場合に動作を停止する。この場合、ＣＰＵ４２が検証処理を実行している間、ＨＳＭ３４によってＣＰＵ３２の端子の電圧がローレベル電圧に維持される。そして、ＣＰＵ４２が検証処理を終了した場合、ＨＳＭ３４によってＣＰＵ３２の端子の電圧がハイレベル電圧に切替えられる。
【００６９】
図３は第２中継機２２の要部構成を示すブロック図である。第２中継機２２は、ＲＯＭ５１、ＣＰＵ５２、通信部５３ａ，５３ｂ，５３ｃ及び電源回路５４を有する。これらは、バス５５に接続されている。バス５５は、更に、第１中継機２１のＲＡＭ３５に接続されている。通信部５３ａ，５３ｂ，５３ｃ夫々は、バス５５の他に、車載機器１３ａ，１３ｂ，１３ｃに接続されている。
【００７０】
ＲＯＭ５１には、起動プログラムＰｂ及び第２制御プログラムＰ２が記憶されている。ＣＰＵ５２は起動プログラムＰｂに従って起動処理を実行する。起動処理は、ＣＰＵ５２への電力供給が開始されて、ＣＰＵ５２が作動した後、ＣＰＵ５２によって最初に実行される処理である。
【００７１】
また、ＣＰＵ５２は第２制御プログラムＰ２に従って第２中継処理を実行する。第２中継処理は、車載機器１３ａ，１３ｂ，１３ｃ中の２つの間の通信と、ＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ中の１つと車載機器１３ａ，１３ｂ，１３ｃ中の１つとの間の通信とを中継するための処理である。ＣＰＵ５２は第２処理部として機能する。
【００７２】
通信部５３ａ，５３ｂ，５３ｃ夫々は車載機器１３ａ，１３ｂ，１３ｃから機器データを受信する。また、通信部５３ａ，５３ｂ，５３ｃ夫々は、ＣＰＵ５２の指示に従って、機器データを車載機器１３ａ，１３ｂ，１３ｃに送信する。
【００７３】
電源回路５４は、図示しない電力線によって、車両１００のバッテリに接続されている。電源回路５４は、更に、図示しない電力線によって、ＲＯＭ５１、ＣＰＵ５２及び通信部５３ａ，５３ｂ，５３ｃに接続されている。電源回路５４は、バッテリが出力した電圧を所定の第２電圧に変圧する。電源回路５４は、所定の第２電圧をＲＯＭ３１、ＣＰＵ３２、通信部３３ａ，３３ｂ、ＨＳＭ３４及びＲＡＭ３５に出力し、これらに電力を供給する。
【００７４】
例えば、車両１００の図示しないイグニッションスイッチがオンに切替わった場合、電源回路５４は、ＲＯＭ５１、ＣＰＵ５２及び通信部５３ａ，５３ｂ，５３ｃに電力を供給し、これらを作動させる。電源回路５４は、ＣＰＵ５２の指示に従って、ＲＯＭ５１、ＣＰＵ５２及び通信部５３ａ，５３ｂ，５３ｃへの電力供給を停止する。これにより、これらは動作を停止する。
【００７５】
起動処理及び第２中継処理夫々において、ＣＰＵ５２は、第１中継機２１のＲＡＭ３５に種々のデータを書き込み、ＲＡＭ３５からデータを読み出す。
【００７６】
図４は第１中継処理の手順を示すフローチャートである。第１中継機２１のＣＰＵ３２は第１中継処理を周期的に実行する。まず、ＣＰＵ３２は、通信部３３ａ，３３ｂ中の１つがＥＣＵデータを受信したか否かを判定する（ステップＳ１）。ＣＰＵ３２は、通信部３３ａ，３３ｂ中の１つがＥＣＵデータを受信したと判定した場合（Ｓ１：ＹＥＳ）、ＥＣＵデータを、ＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ及び車載機器１３ａ，１３ｂ，１３ｃ中の少なくとも１つに送信すべきか否かを判定する（ステップＳ２）。
【００７７】
ＲＯＭ３１には、複数の識別情報が記憶されている。ＲＯＭ３１に記憶されている複数の識別情報中の一又は複数の識別情報夫々には、通信部３３ａ，３３ｂ中の１つが対応付けられている。ＲＯＭ３１に記憶されている複数の識別情報中の残りの識別情報夫々には、送信先情報が対応付けられている。送信先情報は、前述したように、車載機器１３ａ，１３ｂ，１３ｃ中の少なくとも１つを示す。
【００７８】
ステップＳ２では、ＣＰＵ３２は、受信されたＥＣＵデータに含まれている識別情報が、ＲＯＭ３１に記憶されている複数の識別情報中の１つである場合、ＥＣＵデータを送信すべきと判定する。また、ステップＳ２では、ＣＰＵ３２は、受信されたＥＣＵデータに含まれている識別情報が、ＲＯＭ３１に記憶されて複数の識別情報のいずれとも一致しない場合、ＥＣＵデータを送信すべきではないと判定する。
【００７９】
ＣＰＵ３２は、ＥＣＵデータを送信すべきと判定した場合（Ｓ２：ＹＥＳ）、受信されたＥＣＵデータを第１中継機２１が送信するか否かを判定する（ステップＳ３）。ここで、ＣＰＵ３２は、ＲＯＭ３１において、受信されたＥＣＵデータに含まれている識別情報に、通信部３３ａ，３３ｂ中の１つが対応付けられている場合、受信されたＥＣＵデータを第１中継機２１が送信すると判定する。また、ＣＰＵ３２は、ＲＯＭ３１において、受信されたＥＣＵデータに含まれている識別情報に送信先情報が対応付けられている場合、受信されたＥＣＵデータを第１中継機２１が送信しないと判定する。
【００８０】
ＣＰＵ３２は、受信されたＥＣＵデータを第１中継機２１が送信すると判定した場合（Ｓ３：ＹＥＳ）、通信部３３ａ，３３ｂの中で、受信されたＥＣＵデータに含まれている識別情報に対応する通信部に、受信されたＥＣＵデータの送信を指示する（ステップＳ４）。これにより、通信部３３ａ，３３ｂの中で送信を指示された通信部は、受信されたＥＣＵデータを送信する。
【００８１】
例えば、通信部３３ａがＥＣＵ１２ａ，１２ａ中の１つからＥＣＵデータを受信した場合において、通信部３３ａが受信したＥＣＵデータに含まれている識別情報が通信部３３ｂに対応付けられているとき、ＣＰＵ３２は、通信部３３ｂに指示して、通信部３３ａが受信したＥＣＵデータを送信させる。このＥＣＵデータはＥＣＵ１２ｂ，１２ｂによって受信される。
以上のように、第１中継機２１は、ＥＣＵ１２ａ，１２ａ中の１つと、ＥＣＵ１２ｂ，１２ｂ中の１つとの間の通信を中継する。
【００８２】
ＣＰＵ３２は、受信されたＥＣＵデータを第１中継機２１が送信しない、即ち、受信されたＥＣＵデータを第２中継機２２が送信すると判定した場合（Ｓ３：ＮＯ）、受信されたＥＣＵデータを機器データに変換する（ステップＳ５）。ステップＳ５で変換された機器データには、受信されたＥＣＵデータに含まれている識別情報に対応する送信先情報が含まれている。送信先情報は、車載機器１３ａ，１３ｂ，１３ｃ中の少なくとも１つを示している。次に、ＣＰＵ３２は、ステップＳ５で変換した機器データをＲＡＭ３５に書き込む（ステップＳ６）。前述したように、第２中継機２２のＣＰＵ５２は、この機器データをＲＡＭ３５から読み出すことができる。
【００８３】
ＣＰＵ３２は、通信部３３ａ，３３ｂのいずれもＥＣＵデータを受信していないと判定した場合（Ｓ１：ＮＯ）、ＥＣＵデータを送信すべきではないと判定した場合（Ｓ２：ＮＯ）、又は、ステップＳ４，Ｓ６の一方を実行した後、通信部３３ａ，３３ｂ中の１つが、ＲＡＭ３５に記憶されている機器データを送信すべきか否かを判定する（ステップＳ７）。ここで、ＣＰＵ３２は、送信先情報がＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ中の少なくとも１つを示す機器データがＲＡＭ３５に記憶されている場合、通信部３３ａ，３３ｂ中の１つが機器データを送信すべきと判定する。ＣＰＵ３２は、送信先情報がＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ中の少なくとも１つを示す機器データがＲＡＭ３５に記憶されていない場合、通信部３３ａ，３３ｂ中のいずれも機器データを送信すべきではないと判定する。
【００８４】
ＣＰＵ３２は、機器データを送信すべきと判定した場合（Ｓ７：ＹＥＳ）、送信すべき機器データをＥＣＵデータに変換する（ステップＳ８）。ステップＳ８で変換したＥＣＵデータには、送信先情報に応じた識別情報が含まれている。例えば、複数の送信先情報夫々に対応付けて識別情報がＲＯＭ３１に記憶されており、送信先情報に応じた識別情報をＥＣＵデータに含める。例えば、ＥＣＵ１２ａ，１２ａ中の１つを示す送信先情報に一の識別情報が対応し、ＥＣＵ１２ａ，１２ａ中の１つとＥＣＵ１２ｂ，１２ｂの１つとを示す送信先情報に他の識別情報が対応している。ＣＰＵ３２は変換部としても機能する。
【００８５】
次に、ＣＰＵ３２は、通信部３３ａ，３３ｂ中の少なくとも１つに、ステップＳ８で変換したＥＣＵデータの送信を指示する（ステップＳ９）。これにより、通信部３３ａ，３３ｂ中の少なくとも１つは、ステップＳ８でＣＰＵ３２が変換したＥＣＵデータを送信する。例えば、ステップＳ８で送信先がＥＣＵ１２ａ，１２ａ中の１つである機器データを変換した場合、ＣＰＵ３２は通信部３３ａに指示してステップＳ８で変換したＥＣＵデータを送信させる。
【００８６】
ＣＰＵ３２は、通信部３３ａ，３３ｂのいずれも機器データを送信すべきではないと判定した場合（Ｓ７：ＮＯ）、又は、ステップＳ９を実行した後、第１中継処理を終了する。
【００８７】
図５は第２中継処理の手順を示すフローチャートである。第２中継機２２のＣＰＵ５２は第２中継処理を周期的に実行する。まず、ＣＰＵ５２は、通信部５３ａ，５３ｂ，５３ｃ中の１つが機器データを受信したか否かを判定する（ステップＳ２１）。ＣＰＵ５２は、通信部５３ａ，５３ｂ，５３ｃ中の１つが機器データを受信したと判定した場合（Ｓ２１：ＹＥＳ）、受信した機器データを車載機器１３ａ，１３ｂ，１３ｃ中の少なくとも１つに送信すべきか否かを判定する（ステップＳ２２）。
【００８８】
ここで、ＣＰＵ５２は、受信した機器データに含まれている送信先情報が車載機器１３ａ，１３ｂ，１３ｃ中の少なくとも１つを示している場合、受信した機器データを車載機器１３ａ，１３ｂ，１３ｃ中の少なくとも１つに送信すべきと判定する。一方で、ＣＰＵ５２は、受信した機器データに含まれている送信先情報が車載機器１３ａ，１３ｂ，１３ｃのいずれも示していない場合、受信した機器データを車載機器１３ａ，１３ｂ，１３ｃのいずれにも送信すべきではないと判定する。
【００８９】
ＣＰＵ５２は、受信した機器データを車載機器１３ａ，１３ｂ，１３ｃ中の少なくとも１つに送信すべきと判定した場合（Ｓ２２：ＹＥＳ）、通信部５３ａ，５３ｂ，５３ｃ中の少なくとも１つに機器データの送信を指示する（ステップＳ２３）。車載機器１３ａ，１３ｂ，１３ｃ夫々は、通信部５３ａ，５３ｂ，５３ｃが対応する。ステップＳ２３では、受信した機器データに含まれている送信先情報が示す送信先に応じて、送信を指示する通信部が決まる。例えば、送信先情報が車載機器１３ｂ，１３ｃを示す場合、ＣＰＵ５２は、通信部５３ｂ，５３ｃ夫々に、受信した機器データの送信を指示する。ＣＰＵ５３がステップＳ２３を実行した場合、通信部５３ａ，５３ｂ，５３ｃの中で送信を指示された通信部は機器データを送信する。
【００９０】
例えば、通信部５３ａが機器データを受信した場合において、通信部５３ａが受信した機器データに含まれている送信先情報が車載機器１３ｂを示すとき、ＣＰＵ５２は、通信部５３ｂに指示して、通信部５３ａが受信した機器データを送信させる。
以上のように、第２中継機２２は、車載機器１３ａ，１３ｂ，１３ｃ中の２つの間の通信を中継する。
【００９１】
ＣＰＵ５２は、受信した機器データを車載機器１３ａ，１３ｂ，１３ｃのいずれにも送信すべきではない、即ち、受信した機器データをＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ中の少なくとも１つに送信すべきであると判定した場合（Ｓ２２：ＮＯ）、受信した機器データを第１中継機２１のＲＡＭ３５に書き込む（ステップＳ２４）。
【００９２】
ＣＰＵ５２は、通信部５３ａ，５３ｂ，５３ｃのいずれも機器データを受信していないと判定した場合（Ｓ２１：ＮＯ）、又は、ステップＳ２３，Ｓ２４を実行した後、車載機器１３ａ，１３ｂ，１３ｃ中の少なくとも１つに送信すべき機器データがＲＡＭ３５に記憶されているか否かを判定する（ステップＳ２５）。ここで、ＣＰＵ５２は、送信先情報が車載機器１３ａ，１３ｂ，１３ｃ中の少なくとも１つを示す機器データがＲＡＭ３５に記憶されている場合、送信すべき機器データが記憶されていると判定する。ＣＰＵ５２は、送信先情報が車載機器１３ａ，１３ｂ，１３ｃ中の少なくとも１つを示す機器データがＲＡＭ３５に記憶されていない場合、送信すべき機器データが記憶されていないと判定する。
【００９３】
ＣＰＵ５２は、送信すべき機器データが記憶されていると判定した場合（Ｓ２５：ＹＥＳ）、通信部５３ａ，５３ｂ，５３ｃ中の少なくとも１つに機器データの送信を指示する（ステップＳ２６）。ステップＳ２６では、ステップＳ２３と同様に、送信すべき機器データに含まれている送信先情報が示す送信先に応じて、送信を指示する通信部が決まる。
ＣＰＵ５２は、送信すべき機器データが記憶されていないと判定した場合（Ｓ２５：ＮＯ）、又は、ステップＳ２６を実行した後、第２中継処理を終了する。
【００９４】
以上のように構成された中継装置１１では、ＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ中の１つが送信したＥＣＵデータは、機器データに変換され、変換された機器データは、車載機器１３ａ，１３ｂ，１３ｃ中の少なくとも１つに送信される。また、車載機器１３ａ，１３ｂ，１３ｃ中の１つが送信した機器データは、ＥＣＵデータに変換され、変換されたＥＣＵデータは、ＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ中の少なくとも１つに送信される。
【００９５】
図６は検証処理の手順を示すフローチャートである。第１中継機２１が有するＨＳＭ３４のＣＰＵ４２は、電源回路５４がＣＰＵ４２への電力供給を開始した場合において、第１中継処理を実行する前に検証処理を実行する。前述したように、ＣＰＵ４２が検証処理を実行している間、ＣＰＵ３２は動作を停止している。検証処理では、まず、ＣＰＵ４２は、第１制御プログラムＰ１をＲＯＭ３１から読み出す（ステップＳ３１）。次に、ＣＰＵ４２は、第１制御プログラムＰ１に関連する関連データを演算するための演算データを、例えばハッシュ関数を用いて算出する（ステップＳ３２）。ステップＳ３２では、ＣＰＵ４２は、ステップＳ３１で読み出した制御プログラムＰ１に基づいて演算データを算出する。
【００９６】
次に、ＣＰＵ４２は、ステップＳ３２で算出した演算データと、ＲＯＭ４１に記憶されている第１鍵データＫ１とを用いて、第１制御プログラムＰ１に関連する関連データを演算する（ステップＳ３３）。第１鍵データＫ１は第２の鍵データに相当し、ＣＰＵ４２は第２の演算部として機能する。
次に、ＣＰＵ４２は、ステップＳ３３で演算した関連データが、ＲＯＭ４１に予め記憶されている第１基準データＲ１と一致するか否かを判定する（ステップＳ３４）。ＣＰＵ４２は第２の判定部としても機能する。
【００９７】
ＣＰＵ４２は、ステップＳ３４を実行することによって、第１制御プログラムＰ１が適正であることを検証する。第１制御プログラムＰ１に関連する関連データが第１基準データＲ１と一致していることは、第１制御プログラムＰ１が適正であることを示す。第１制御プログラムＰ１に関連する関連データが第１基準データＲ１と一致していないことは、第１制御プログラムＰ１が適正ではないこと、即ち、第１制御プログラムＰ１が改ざんされている可能性が高いことを示す。
【００９８】
ＣＰＵ４２は、関連データが第１基準データＲ１と一致しないと判定した場合（Ｓ３４：ＮＯ）、第２中継機２２の電源回路５４が行う電力供給の停止を指示する停止データをＲＡＭ３５に書き込む（ステップＳ３５）。これにより、第２中継機２２のＣＰＵ５２に第１制御プログラムＰ１が適正ではないことを通知することができる。その後、ＣＰＵ４２は、電源回路３６に電力供給の停止を指示する（ステップＳ３６）。これにより、電源回路３６は、ＲＯＭ３１、ＣＰＵ３２、通信部３３ａ，３３ｂ、ＨＳＭ３４及びＲＡＭ３５への電力供給を停止し、第１中継機２１は動作を停止する。ＣＰＵ４２は、ステップＳ３６を実行した後、検証処理を終了する。
【００９９】
なお、前述したように、電源回路３６がＲＡＭ３５への電力供給を停止した場合、ＲＡＭ３５に記憶されているデータは消去される。第２中継機２２のＣＰＵ５２がＲＡＭ３５に記憶されている停止データを読み出す時間を確保するため、ＣＰＵ４２は、ステップＳ３５を実行してから、ＣＰＵ５２が停止データを読み出すために十分な所定時間が経過した後、ステップＳ３６を実行する。
【０１００】
ＣＰＵ４２は、関連データが第１基準データＲ１と一致すると判定した場合（Ｓ３４：ＹＥＳ）、第２中継機２２の第２制御プログラムＰ２の演算データがＲＡＭ３５に記憶されているか否かを判定する（ステップＳ３７）。第２制御プログラムＰ２の演算データは、第２制御プログラムＰ２に関連する関連データを演算するためのデータである。ＣＰＵ４２は、演算データが記憶されていないと判定した場合（Ｓ３７：ＮＯ）、ステップＳ３７を再び実行し、演算データがＲＡＭ３５に書き込まれるまで待機する。第２中継機２２のＣＰＵ５２は、起動処理において、第２制御プログラムＰ２の演算データを算出し、算出した演算データをＲＡＭ３５に書き込む。
【０１０１】
ＣＰＵ４２は、演算データが記憶されていると判定した場合（Ｓ３７：ＹＥＳ）、ＲＡＭ３５から第２制御プログラムＰ２の演算データを読み出し（ステップＳ３８）、読み出した演算データと、ＲＯＭ４１に記憶されている第２鍵データＫ２とを用いて、第２制御プログラムＰ２に関連する関連データを演算する（ステップＳ３９）。ＣＰＵ４２は演算部及び関連データ演算部としても機能する。
【０１０２】
次に、ＣＰＵ４２は、ステップＳ３９で演算した関連データが、ＲＯＭ４１に予め記憶されている第２基準データＲ２と一致するか否かを判定する（ステップＳ４０）。ＣＰＵ４２は判定部としても機能する。
ＣＰＵ４２は、ステップＳ４０を実行することによって、第２制御プログラムＰ２が適正であることも検証する。ＣＰＵ４２は、関連データが第２基準データＲ２と一致していると判定した場合（Ｓ４０：ＹＥＳ）、第２制御プログラムＰ２が適正であることを示す正常データをＲＡＭ３５に書き込む（ステップＳ４１）。これにより、第２中継機２２のＣＰＵ５２に第２制御プログラムＰ２が適正であることを通知することができる。
【０１０３】
ＣＰＵ４２は、関連データが第２基準データＲ２と一致していないと判定した場合（Ｓ４０：ＮＯ）、第２制御プログラムＰ２が適正ではない、即ち、第２制御プログラムＰ２が改ざんされている可能性が高いことを示す異常データをＲＡＭ３５に書き込む（ステップＳ４２）。これにより、第２中継機２２のＣＰＵ５２に第２制御プログラムＰ２が適正ではないことを通知することができる。
【０１０４】
ＣＰＵ４２は、ステップＳ４１，Ｓ４２の一方を実行した後、検証処理を終了する。ＣＰＵ４２は、検証処理を終了した後、電源回路３６が電力供給を一旦停止して、電力供給を再開するまで、動作を停止する。ＣＰＵ４２が検証処理を終了した後、ＣＰＵ３２は、適正な第１制御プログラムＰ１を実行する。なお、前述したように、インタフェース４３は、ＣＰＵ３２からＲＯＭ４１へのアクセスを防止している。このため、検証プログラムＰｈ、第１鍵データＫ１、第１基準データＲ１、第２鍵データＫ２及び第２基準データＲ２がＨＳＭ３４の外側に持ち出されることはない。
【０１０５】
図７は起動処理の手順を示すフローチャートである。第２中継機２２のＣＰＵ５２は、電源回路５４がＣＰＵ５２への電力供給を開始した場合において、第２中継処理を実行する前に、起動プログラムＰｂに従って起動処理を実行する。起動処理では、まず、ＣＰＵ５２は、第２制御プログラムＰ２をＲＯＭ５１から読み出す（ステップＳ５１）。次に、ＣＰＵ５２は、例えばハッシュ関数を用いて、第２制御プログラムＰ２に関連する関連データを演算するための演算データを算出する（ステップＳ５２）。ＣＰＵ５２は算出部として機能する。ステップＳ５２では、ＣＰＵ５２は、ステップＳ５１で読み出した第２制御プログラムＰ２に基づいて演算データを算出する。
【０１０６】
次に、ＣＰＵ５２は、ステップＳ５２で算出した演算データを第１中継機２１のＲＡＭ３５に書き込む（ステップＳ５３）。前述したように、第１中継機２１が有するＨＳＭ３４のＣＰＵ４２は、ＲＡＭ３５に記憶されている演算データを読み出し、読み出した演算データを用いて第２制御プログラムＰ２に関連する関連データを演算し、第２制御プログラムＰ２が適正であるか否かを検証する。ＣＰＵ４２は、検証処理において、ＲＡＭ３５に停止データ、異常データ又は正常データを書き込む。
ＲＡＭ３５から関連データを読み出すことは、関連データを取得することに相当する。従って、ＣＰＵ４２は取得部としても機能する。
【０１０７】
なお、第１中継機２１の電源回路３６と、第２中継機２２の電源回路５４とは略同時に電力供給を開始し、ＣＰＵ５２は、第１中継機２１の電源回路３６が電力供給を開始した後、ステップＳ５３を実行する。このため、ＣＰＵ５２は、演算データをＲＡＭ３５に確実に書き込むことができる。
【０１０８】
ＣＰＵ５２は、ステップＳ５３を実行した後、停止データが第１中継機２１のＲＡＭ３５に記憶されているか否かを判定する（ステップＳ５４）。ＣＰＵ５２は、停止データが記憶されていないと判定した場合（Ｓ５４：ＮＯ）、異常データがＲＡＭ３５に記憶されているか否かを判定する（ステップＳ５５）。ＣＰＵ５２は、停止データが記憶されていると判定した場合（Ｓ５４：ＹＥＳ）、又は、異常データが記憶されていると判定した場合（Ｓ５５：ＹＥＳ）、電源回路５４に電力供給の停止を指示する（ステップＳ５６）。これにより、電源回路５４は電力供給を停止し、ＲＯＭ５１、ＣＰＵ５２及び通信部５３ａ，５３ｂ，５３ｃは動作を停止する。ＣＰＵ５２は、ステップＳ５６を実行した後、起動処理を終了する。
【０１０９】
以上のように、第１中継機２１が有するＨＳＭ３４のＣＰＵ４２は、ＲＡＭ３５に停止データ又は異常データを書き込むことによって、ＣＰＵ４２の動作、即ち、第２中継機２２の動作を停止させる。ＣＰＵ４２は、動作制御部としても機能する。
前述したように、ＣＰＵ４２は、第１制御プログラムＰ１に関連する関連データが第１基準データＲ１と一致していないと判定した場合、第１制御プログラムＰ１が改ざんされている可能性が高いとして、停止データをＲＡＭ３５に書き込む。
また、ＣＰＵ４２は、第２制御プログラムＰ２に関連する関連データが第２基準データＲ２と一致していないと判定した場合、第２制御プログラムＰ２が改ざんされている可能性が高いとして、異常データをＲＡＭ３５に書き込む。これにより、第２中継機２２の動作が停止する。
【０１１０】
ＣＰＵ５２がステップＳ５５で異常データが記憶されていると判定してステップＳ５６を実行した場合、第１中継機２１の電源回路３６は電力供給を停止せず、第１中継機２１のＣＰＵ３２は第１中継処理を実行する。このため、第２中継機２２の動作は停止するが、ＥＣＵ１２ａ，１２ａ中の１つと、ＥＣＵ１２ｂ，１２ｂ中の１つとの間の通信の中継は、第１中継機２１によって行われる。
【０１１１】
例えば、ＥＣＵ１２ａ，１２ａ，１２ｂ，１２ｂ夫々が車両１００の運転に最低限必要な機能を有するヘッドライト又はワイパーモータ等の電気機器を制御し、車載機器１３ａ，１３ｂ，１３ｃ夫々は、車両１００の運転に必ずしも必要でないカメラ又はディスプレイ等であると仮定する。この場合、第１制御プログラムＰ１が適正であれば、第２制御プログラムＰ２が適正でなかったとしても、運転者は車両１００を運転することができる。
【０１１２】
ＣＰＵ５２は、異常データが記憶されていないと判定した場合（Ｓ５５：ＮＯ）、正常データが第１中継機２１のＲＡＭ３５に記憶されているか否かを判定する（ステップＳ５７）。ＣＰＵ５２は、正常データが記憶されていないと判定した場合（Ｓ５７：ＮＯ）、ステップＳ５４を実行し、ＲＡＭ３５に停止データ、異常データ又は正常データが記憶されるまで待機する。
【０１１３】
なお、ＣＰＵ５２がステップＳ５４を実行する前に、第１中継機２１が有するＨＳＭ３４のＣＰＵ４２が検証処理のステップＳ３６を実行した場合、ＲＡＭ３５にデータが記憶されていないため、ＣＰＵ５２は、ステップＳ５４，Ｓ５５，Ｓ５７の判定を無限に繰り返す。このため、起動処理において、ＣＰＵ５２は、ステップＳ５４，Ｓ５５，Ｓ５７の判定を繰り返している時間が第２の所定時間を超えた場合、第１制御プログラムＰ１が適正ではないとして、ステップＳ５６を実行してもよい。
【０１１４】
ＣＰＵ５２は、正常データが記憶されていると判定した場合（Ｓ５７：ＹＥＳ）、起動処理を終了する。その後、ＣＰＵ５２は、第２中継処理を実行する。
【０１１５】
以上のように構成された中継装置１１では、第１中継機２１が有するＨＳＭ３４のＣＰＵ３２が、第２制御プログラムＰ２が適正であることを検証する。このため、第２中継機２２に、検証機能を有するＨＳＭ３４と同様の構成部を設ける必要がない。結果、中継装置１１は小型であり、中継装置１１の製造費用は安価である。
【０１１６】
また、第２中継機２２のＣＰＵ５２は、第２制御プログラムＰ２の演算データを算出し、算出した演算データを第１中継機２１のＲＡＭ３５に書き込む。第２制御プログラムＰ２の演算データのデータ量は、第２制御プログラムＰ２のデータ量よりも小さい。このため、第２制御プログラムＰ２が適正であることを検証するために、第２中継機２２から第１中継機２１へ転送されるデータのデータ量は小さい。結果、検証を行うために必要な時間が短い。
【０１１７】
（実施の形態２）
図８は、実施の形態２における通信システム１の要部構成を示すブロック図である。
以下では、実施の形態２について、実施の形態１と異なる点を説明する。後述する構成を除く他の構成については、実施の形態１と共通しているため、実施の形態１と共通する構成部には実施の形態１と同一の参照符号を付してその説明を省略する。
【０１１８】
実施の形態２における通信システム１では、実施の形態１における通信システム１と比較して、中継装置１１の構成が異なる。実施の形態２における中継装置１１は、第１中継機２１及び第２中継機２２に加えて、メモリ２３を有する。メモリ２３は第２中継機２２に接続されている。メモリ２３は不揮発性メモリである。メモリ２３には、第２制御プログラムＰ２が記憶されている。第２制御プログラムＰ２は、第２中継機２２によってメモリ２３から読み出される。
【０１１９】
図９は第２中継機２２の要部構成を示すブロック図である。実施の形態２における第２中継機２２は、実施の形態１における第２中継機２２が有する構成部に加えて、インタフェース６１及びＲＡＭ６２を有する。インタフェース６１及びＲＡＭ６２もバス５５に接続されている。インタフェース６１は、更に、メモリ２３に接続される。
【０１２０】
ＣＰＵ５２は、インタフェース６１を介して、第２制御プログラムＰ２をメモリ２３から読み出す。また、ＣＰＵ５２は、ＲＡＭ６２に種々のデータを書き込み、ＲＡＭ６２からデータを読み出す。
なお、実施の形態２おけるＲＯＭ５１には、第２制御プログラムＰ２が記憶されていない。
【０１２１】
電源回路５４は、ＲＯＭ５１、ＣＰＵ５２及び通信部５３ａ，５３ｂ，５３ｃに加えて、インタフェース６１及びＲＡＭ６２に電力を供給する。インタフェース６１及びＲＡＭ６２夫々は、電源回路５４から電力が供給されている間、作動する。電源回路５４が電力供給を停止した場合、ＲＡＭ６２に記憶されているデータは消去される。
【０１２２】
図１０は起動処理の手順を示すフローチャートである。実施の形態２においても、第２中継機２２のＣＰＵ５２は、電源回路５４がＣＰＵ５２への電力供給を開始した場合において、第２中継処理を実行する前に、起動プログラムＰｂに従って起動処理を実行する。実施の形態２における起動処理のステップＳ６５〜Ｓ６８は、実施の形態１における起動処理のステップＳ５４〜Ｓ５７と同様である。このため、ステップＳ６５〜Ｓ６８の詳細な説明を省略する。
【０１２３】
実施の形態２における起動処理では、まず、ＣＰＵ５２は、インタフェース６１を介して、メモリ２３から、第２制御プログラムＰ２を読み出し（ステップＳ６１）、読み出した第２制御プログラムＰ２をＲＡＭ６２に書き込む（ステップＳ６２）。次に、ＣＰＵ５２は、例えばハッシュ関数を用いて、第２制御プログラムＰ２に関連する関連データを演算するための演算データを算出する（ステップＳ６３）。
【０１２４】
次に、ＣＰＵ５２は、ステップＳ６４で算出した演算データを第１中継機２１のＲＡＭ３５に書き込み（ステップＳ６４）、ステップＳ６５を実行する。
【０１２５】
実施の形態２と同様に、ＣＰＵ５２は、ステップＳ６８で正常データが第１中継機２１のＲＡＭ３５に記憶されていると判定して起動処理を終了した場合、第２中継機２２のＲＡＭ６２に記憶されている第２制御プログラムＰ２に従って、第２中継処理を実行する。
以上のように構成された実施の形態２における中継装置１１は、実施の形態１における中継装置１１が奏する効果と同様の効果を奏する。
【０１２６】
（実施の形態３）
図１１及び図１２は、実施の形態３における検証処理の手順を示すフローチャートである。
以下では、実施の形態３について、実施の形態１と異なる点を説明する。後述する構成を除く他の構成については、実施の形態１と共通しているため、実施の形態１と共通する構成部には実施の形態１と同一の参照符号を付してその説明を省略する。
【０１２７】
実施の形態３における通信システム１では、実施の形態１における通信システム１と比較して、第１中継機２１が有するＨＳＭ３４のＣＰＵ４２が実行する検証処理の内容と、第２中継機２２のＣＰＵ５２が実行する起動処理の内容とが異なる。
【０１２８】
ＨＳＭ３４のＣＰＵ４２は、実施の形態１と同様に、電源回路５４がＣＰＵ４２への電力供給を開始した場合において、第１中継処理を実行する前に検証処理を実行する。ＣＰＵ４２が検証処理を実行している間、ＣＰＵ３２は動作を停止している。実施の形態３における検証処理のステップＳ７５，Ｓ７６，Ｓ８７，Ｓ８８夫々は、実施の形態１における検証処理のステップＳ３５，Ｓ３６，Ｓ４１，Ｓ４２と同様である。このため、ステップＳ７５，Ｓ７６，Ｓ８７，Ｓ８８の詳細な説明を省略する。
【０１２９】
実施の形態３における検証処理では、まず、ＣＰＵ４２は、第１制御プログラムＰ１をＲＯＭ３１から読み出し（ステップＳ７１）、読み出した第１制御プログラムＰ１に基づいて、第１制御プログラムＰ１に関連する第１関連データを演算するための第１演算データを算出する（ステップＳ７２）。ステップＳ７２では、ＣＰＵ４２は、例えば、ハッシュ関数を用いて第１演算データを算出する。
【０１３０】
次に、ＣＰＵ４２は、ステップＳ７２で算出した第１演算データと、ＲＯＭ４１に記憶されている第１鍵データＫ１とに基づいて、第１制御プログラムＰ１に関連する第１関連データを演算し（ステップＳ７３）、演算した第１関連データが第１基準データＲ１と一致するか否かを判定する（ステップＳ７４）。ＣＰＵ４２は、ステップＳ７４を実行することによって、第１制御プログラムＰ１が適正であることを検証する。第１関連データが第１基準データＲ１と一致していることは、第１制御プログラムＰ１が適正であることを示す。第１関連データが第１基準データＲ１と一致していないことは、第１制御プログラムＰ１が適正ではないこと、即ち、第１制御プログラムＰ１が改ざんされている可能性が高いことを示す。
【０１３１】
ＣＰＵ４２は、第１関連データが第１基準データＲ１と一致しないと判定した場合（Ｓ７４：ＮＯ）、ステップＳ７５，Ｓ７６を順次実行する。これにより、電源回路３６は、ＲＯＭ３１、ＣＰＵ３２、通信部３３ａ，３３ｂ、ＨＳＭ３４及びＲＡＭ３５への電力供給を停止し、第１中継機２１は動作を停止する。ＣＰＵ４２は、ステップＳ７６を実行した後、検証処理を終了する。
【０１３２】
ＣＰＵ４２は、第１関連データが第１基準データＲ１と一致すると判定した場合（Ｓ７４：ＹＥＳ）、乱数データを生成する（ステップＳ７７）。乱数データは、例えば、「１」又は「０」で表される数値の羅列であり、乱数を示す。ステップＳ７７では、ＣＰＵ４２は、初期値を決定し、決定した初期値に基づいて乱数データを生成する。ＣＰＵ４２は、例えば、ステップＳ７７が実行された時刻に基づいて初期値を決定する。この場合においては、ステップＳ７７が実行される時刻が異なったとき、ステップＳ７７で生成される乱数データの内容は変更される。時刻には、年月日も含まれている。
【０１３３】
前述したように、電源回路５４がＣＰＵ４２への電力供給を開始する都度、検証処理は実行される。繰り返し実行される検証処理において、ステップＳ７７が実行される時刻は相互に異なる。このため、これらの時刻に基づいて決定される初期値も相互に異なる。結果、ステップＳ７７が実行された時刻に基づいて初期値が決定される場合、ステップＳ７７で生成される乱数データの内容は、過去のステップＳ７７で生成された乱数データの内容のいずれとも異なる。ＣＰＵ４２は乱数生成部としても機能する。
【０１３４】
次に、ＣＰＵ４２は、ステップＳ７７で生成した乱数データをＲＡＭ３５に書き込む（ステップＳ７８）。実施の形態３における起動処理では、第２中継機２２のＣＰＵ５２は、ステップＳ７８で書き込まれた乱数データと、第２制御プログラムＰ２とに基づいて、第２制御プログラムＰ２に関連する第２関連データを演算するための第２演算データを算出し、算出した第２演算データをＲＡＭ３５に書き込む。
【０１３５】
ＨＳＭ３４のＣＰＵ４２は、ステップＳ７８を実行した後、第２演算データがＲＡＭ３５に記憶されているか否かを判定する（ステップＳ７９）。ＣＰＵ４２は、第２演算データが記憶されていないと判定した場合（Ｓ７９：ＮＯ）、ステップＳ７９を再び実行し、第２中継機２２のＣＰＵ５２が第２演算データをＲＡＭ３５に書き込むまで待機する。
【０１３６】
ＣＰＵ４２は、第２演算データが記憶されていると判定した場合（Ｓ７９：ＹＥＳ）、ＲＡＭ３５から第２演算データを読み出し（ステップＳ８０）、読み出した第２演算データと、ＲＯＭ４１に記憶されている第２鍵データＫ２とに基づいて、第２関連データを演算する（ステップＳ８１）。
【０１３７】
次に、ＣＰＵ４２は、ＲＯＭ４１から第２基準データＲ２を読み出し（ステップＳ８２）、読み出した第２基準データＲ２と、ステップＳ７７で生成した乱数データとを合成することによって、第１合成データを生成する（ステップＳ８３）。ステップＳ８３では、ＣＰＵ４２は、例えば、第２基準データＲ２の最後尾に乱数データを加えることによって第１合成データを生成する。次に、ＣＰＵ４２は、ステップＳ８３で生成した第１合成データに基づいて、第１中間データを算出する（ステップＳ８４）。ステップＳ８４では、ＣＰＵ４２は、例えば、ハッシュ関数を用いて第１中間データを算出する。
【０１３８】
次に、ＣＰＵ４２は、ステップＳ８４で算出した第１中間データと、ＲＯＭ４１に記憶されている第２鍵データＫ２とに基づいて、第３基準データを演算する（ステップＳ８５）。
以上のように、ＣＰＵ４２は、乱数データ、第２基準データＲ２及び第２鍵データＫ２に基づいて第３基準データを演算する。ＣＰＵ４２は基準データ演算部として機能する。
【０１３９】
次に、ＣＰＵ４２は、ステップＳ８１で演算した第２関連データが、ステップＳ８６で演算した第３基準データと一致するか否かを判定する（ステップＳ８６）。ＣＰＵ４２は、ステップＳ８６を実行することによって、第２制御プログラムＰ２が適正であることも検証する。ＣＰＵ４２は、第２関連データが第３基準データと一致すると判定した場合（Ｓ８６：ＹＥＳ）、第２制御プログラムＰ２は適正であるとして、ステップＳ８７を実行する。ＣＰＵ４２は、第２関連データが第３基準データと一致しないと判定した場合（Ｓ８６：ＮＯ）、第２制御プログラムＰ２は適正ではない、即ち、第２制御プログラムＰ２が改ざんされている可能性が高いとして、ステップＳ８８を実行する。ＣＰＵ４２は、ステップＳ８７，Ｓ８８の一方を実行した後、検証処理を終了する。ＨＳＭ３４のＣＰＵ４２は、検証処理を終了した後、電源回路３６が電力供給を一旦停止して、電力供給を再開するまで、動作を停止する。ＣＰＵ４２が検証処理を終了した後、ＣＰＵ３２は、適正な第１制御プログラムＰ１を実行する。
【０１４０】
図１３は起動処理の手順を示すフローチャートである。第２中継機２２のＣＰＵ５２は、実施の形態１と同様に、電源回路５４がＣＰＵ５２への電力供給を開始した場合において、第２中継処理を実行する前に、起動プログラムＰｂに従って起動処理を実行する。起動処理では、まず、ＣＰＵ５２は、停止データがＲＡＭ３５に記憶されているか否かを判定する（ステップＳ９１）。ＣＰＵ５２は、停止データが記憶されていないと判定した場合（Ｓ９１：ＮＯ）、乱数データがＲＡＭ３５に記憶されているか否かを判定する（ステップＳ９２）。
【０１４１】
ＣＰＵ５２は、乱数データが記憶されていないと判定した場合（Ｓ９２：ＮＯ）、ステップＳ９１を実行し、ＨＳＭ３４のＣＰＵ４２が停止データ又は乱数データをＲＡＭ３５に書き込むまで待機する。
なお、ＣＰＵ５２がステップＳ９１を実行する前に、ＨＳＭ３４のＣＰＵ４２が検証処理のステップＳ７６を実行した場合、ＲＡＭ３５にデータが記憶されていないため、ＣＰＵ５２は、ステップＳ９１，Ｓ９２の判定を無限に繰り返す。このため、起動処理において、ＣＰＵ５２は、ステップＳ９１，Ｓ９２の判定を繰り返している時間が第３の所定時間を超えた場合、第１制御プログラムＰ１が適正ではないとして、ステップＳ９９を実行してもよい。
【０１４２】
ＣＰＵ５２は、乱数データが記憶されていると判定した場合（Ｓ９２：ＹＥＳ）、第２制御プログラムＰ２をＲＯＭ５１から読み出し（ステップＳ９３）、読み出した第２制御プログラムＰ２に基づいて第２中間データを算出する（ステップＳ９４）。ステップＳ９４では、ＣＰＵ５２は、例えば、ハッシュ関数を用いて第２中間データを算出する。
【０１４３】
次に、ＣＰＵ５２は、ステップＳ９４で算出した第２中間データと、ＲＡＭ３５に記憶されている乱数データとを合成することによって、第２合成データを生成する（ステップＳ９５）。ステップＳ９５では、ＣＰＵ５２は、例えば、第２中間データの最後尾に乱数データを加えることによって第２合成データを生成する。次に、ＣＰＵ５２は、ステップＳ９５で生成した第２合成データに基づいて、第２関連データを演算するための第２演算データを算出する（ステップＳ９６）。ステップＳ９６では、ＣＰＵ５２は、例えば、ハッシュ関数を用いて第２演算データを算出する。
以上のように、ＣＰＵ５２は第２制御プログラムＰ２、乱数データ及び第２鍵データＫ２に基づいて第２演算データを算出する。
【０１４４】
次に、ＣＰＵ５２は、ステップＳ９６で算出した第２演算データをＲＡＭ３５に書き込む（ステップＳ９７）。前述したように、ＨＳＭ３４のＣＰＵ４２は、ＲＡＭ３５に記憶されている第２演算データを読み出し、読み出した第２演算データに基づいて第２関連データを演算し、第２制御プログラムＰ２が適正であるか否かを検証する。ＣＰＵ４２は、検証結果に基づいて、正常データ又は異常データをＲＡＭ３５に書き込む。
【０１４５】
ＣＰＵ５２は、ステップＳ９７を実行した後、異常データがＲＡＭ３５に記憶されているか否かを判定する（ステップＳ９８）。ＣＰＵ５２は、停止データが記憶されていると判定した場合（Ｓ９１：ＹＥＳ）、又は、異常データが記憶されていると判定した場合（Ｓ９８：ＹＥＳ）、電源回路５４に電力供給の停止を指示する（ステップＳ９９）。これにより、電源回路５４は電力供給を停止し、ＲＯＭ５１、ＣＰＵ５２及び通信部５３ａ，５３ｂ，５３ｃは動作を停止する。ＣＰＵ５２は、ステップＳ９９を実行した後、起動処理を終了する。
【０１４６】
以上のように、ＨＳＭ３４のＣＰＵ４２は、ＲＡＭ３５に停止データ又は異常データを書き込むことによって、ＣＰＵ４２の動作、即ち、第２中継機２２の動作を停止させる。
前述したように、ＣＰＵ４２は、第１制御プログラムＰ１に関連する第１関連データが第１基準データＲ１と一致していないと判定した場合、第１制御プログラムＰ１が改ざんされている可能性が高いとして、停止データをＲＡＭ３５に書き込む。
また、ＣＰＵ４２は、第２制御プログラムＰ２に関連する第２関連データが第３基準データと一致していないと判定した場合、第２制御プログラムＰ２が改ざんされている可能性が高いとして、異常データをＲＡＭ３５に書き込む。これにより、第２中継機２２の動作が停止する。
【０１４７】
ＣＰＵ５２がステップＳ９８で異常データが記憶されていると判定してステップＳ９９を実行した場合、第１中継機２１の電源回路３６は電力供給を停止せず、第１中継機２１のＣＰＵ３２は第１中継処理を実行する。このため、第２中継機２２の動作は停止するが、ＥＣＵ１２ａ，１２ａ中の１つと、ＥＣＵ１２ｂ，１２ｂ中の１つとの間の通信の中継は、第１中継機２１によって行われる。
【０１４８】
ＣＰＵ５２は、異常データが記憶されていないと判定した場合（Ｓ９８：ＮＯ）、正常データがＲＡＭ３５に記憶されているか否かを判定する（ステップＳ１００）。ＣＰＵ５２は、正常データが記憶されていないと判定した場合（Ｓ１００：ＮＯ）、ステップＳ９８を実行し、ＨＳＭ３４のＣＰＵ４２が正常データ又は異常データをＲＡＭ３５に書き込むまで待機する。ＣＰＵ５２は、正常データが記憶されていると判定した場合（Ｓ１００：ＹＥＳ）、起動処理を終了する。その後、ＣＰＵ５２は、第２中継処理を実行する。
【０１４９】
図１４は、第２制御プログラムＰ２の検証の説明図である。前述したように、第２中継機２２のＣＰＵ５２は、第２制御プログラムＰ２に基づいて第２中間データを算出する。次に、ＣＰＵ５２は、算出した第２中間データと、ＨＳＭ３４のＣＰＵ４２が生成した乱数データとを合成することによって、第２合成データを生成する。ＣＰＵ５２は、生成した第２合成データに基づいて、第２演算データを算出し、算出した第２演算データを第１中継機２１のＲＡＭ３５に書き込む。
【０１５０】
ＨＳＭ３４のＣＰＵ４２は、ＲＡＭ３５に記憶されている第２演算データと、第２鍵データＫ２とに基づいて第２関連データを演算する。
また、ＣＰＵ４２は、第２基準データＲ２と乱数データとを合成することによって、第１合成データを生成する。ＣＰＵ４２は、生成した第１合成データに基づいて、第１中間データを算出する。ＣＰＵ４２は、算出した第１中間データと、第２鍵データＫ２とに基づいて、第３基準データを演算する。ＣＰＵ４２は、第２関連データが第３演算データに一致するか否かを判定することによって、第２制御プログラムＰ２を検証する。
【０１５１】
第２中間データと乱数データとを合成することによって、第２合成データを生成する方法は、第２基準データと乱数データとを合成することによって、第１合成データを生成する方法と同じである。第２合成データに基づいて第２演算データを算出する方法は、第１合成データに基づいて第１中間データを算出する方法と同じである。第２演算データと、第２鍵データＫ２とに基づいて第２関連データを演算する方法は、第１中間データと、第２鍵データＫ２とに基づいて第３基準データを演算する方法と同じである。
【０１５２】
第２制御プログラムＰ２が適正である場合、第２基準データＲ２は第２中間データと一致する。この場合、第２合成データ、第２演算データ及び第２関連データ夫々は、第１合成データ、第１中間データ及び第３基準データに一致し、正常データがＲＡＭ３５に書き込まれる。
前述したように、検証処理が実行される都度、乱数データの内容は変更される。このため、今回の検証処理において、前回の検証処理で算出された第２演算データをＲＡＭ３５に書き込んだ場合、第２関連データは第３基準データと一致しないので、第２制御プログラムＰ２が適正ではないと判定される。
【０１５３】
第２制御プログラムＰ２を改ざんする方法として、以下の方法が考えられる。過去の検証処理において算出された演算データを記憶した上で、第２制御プログラムＰ２を改ざんし、その後の検証処理では、記憶されている演算データをＲＡＭ３５に書き込む。実施の形態３における中継装置において、この方法が用いられた場合であっても、第２制御プログラムＰ２の改ざんが検出されるので、第２制御プログラムＰ２の検証結果の信頼性が高い。
【０１５４】
また、ＨＳＭ３４のＣＰＵ４２は、第２鍵データＫ２、乱数データ及び第２基準データＲ２に基づいて第３基準データを演算すると共に、第２中継機２２のＣＰＵ５２は、第２演算データと第２鍵データＫ２とに基づいて第２関連データを演算するので、第２制御プログラムＰ２の検証結果の信頼性はより高い。
【０１５５】
以上のように構成された中継装置１１では、第１中継機２１が有するＨＳＭ３４のＣＰＵ３２が、第２制御プログラムＰ２を検証する。このため、第２中継機２２が、第２制御プログラムＰ２の検証機能を有する必要がないので、中継装置１１は小型であり、中継装置１１の製造費用は安価である。
【０１５６】
また、第２中継機２２のＣＰＵ５２は、第２制御プログラムＰ２の第２演算データを算出し、算出した第２演算データを第１中継機２１のＲＡＭ３５に書き込む。第２演算データのデータ量は、第２制御プログラムＰ２のデータ量よりも小さい。このため、第２制御プログラムＰ２が適正であることを検証するために、第２中継機２２から第１中継機２１へ転送されるデータのデータ量は小さい。結果、検証を行うために必要な時間が短い。
また、実施の形態３における中継装置１１は、実施の形態１における中継装置１１が奏する効果を同様に奏する。
【０１５７】
なお、実施の形態２において、第２中継機２２のＣＰＵ５２は、実施の形態３における起動処理を実行してもよい。この場合、起動処理では、ＣＰＵ５２は、ステップＳ９３の代わりに、実施の形態２におけるステップＳ６１，Ｓ６２を実行する。ステップＳ９４では、ステップＳ６１で読み出した第２制御プログラムＰ２に基づいて第２中間データを算出する。
【０１５８】
（実施の形態４）
実施の形態３における中継装置１１では、ＨＳＭ３４のＣＰＵ４２は第１鍵データＫ１に基づいて第１関連データを演算し、第２鍵データＫ２に基づいて第２関連データ及び第３基準データを演算している。しかしながら、ＣＰＵ４２は、第１鍵データＫ１，Ｋ２に基づく演算を行わなくてもよい。
以下では、実施の形態４について、実施の形態３と異なる点を説明する。後述する構成を除く他の構成については、実施の形態３と共通しているため、実施の形態３と共通する構成部には実施の形態３と同一の参照符号を付してその説明を省略する。
【０１５９】
実施の形態４における通信システム１では、実施の形態３における通信システム１と比較して、第１中継機２１が有するＨＳＭ３４のＣＰＵ４２が実行する検証処理の内容と、第２中継機２２のＣＰＵ５２が実行する起動処理の内容とが異なる。
【０１６０】
図１５及び図１６は、実施の形態４における検証処理の手順を示すフローチャートである。ＨＳＭ３４のＣＰＵ４２は、実施の形態３と同様に、電源回路５４がＣＰＵ４２への電力供給を開始した場合において、第１中継処理を実行する前に検証処理を実行する。ＣＰＵ４２が検証処理を実行している間、ＣＰＵ３２は動作を停止している。実施の形態４における検証処理のステップＳ１１１，Ｓ１１３〜Ｓ１１７，Ｓ１１９，Ｓ１２０，Ｓ１２４，Ｓ１２５夫々は、実施の形態３における検証処理のステップＳ７１，Ｓ７４〜Ｓ７８，Ｓ８２，Ｓ８３，Ｓ８７，Ｓ８８と同様である。このため、ステップＳ１１１，Ｓ１１３〜Ｓ１１７，Ｓ１１９，Ｓ１２０，Ｓ１２４，Ｓ１２５の詳細な説明を省略する。
【０１６１】
検証処理において、ＨＳＭ３４のＣＰＵ４２は、ステップＳ１１１を実行した後、ステップＳ１１１で読み出した第１制御プログラムＰ１に基づいて、第１制御プログラムＰ１に関連する第１関連データを演算する（ステップＳ１１２）。ステップＳ１１２では、ＣＰＵ４２は、例えば、ハッシュ関数を用いて第１関連データを演算する。ＣＰＵ４２は、ステップＳ１１２を実行した後、ステップＳ１１３を実行する。
【０１６２】
ステップＳ１１７では、ＣＰＵ４２は、実施の形態３と同様に、乱数データをＲＡＭ３５に書き込む。実施の形態４における起動処理では、第２中継機２２のＣＰＵ５２は、ステップＳ１１７で書き込まれた乱数データと、第２制御プログラムＰ２とに基づいて、第２制御プログラムＰ２に関連する第２関連データを演算し、演算した第２関連データをＲＡＭ３５に書き込む。
【０１６３】
ＣＰＵ４２は、ステップＳ１１７を実行した後、第２関連データがＲＡＭ３５に記憶されているか否かを判定する（ステップＳ１１８）。ＣＰＵ４２は、第２関連データが記憶されていないと判定した場合（Ｓ１１８：ＮＯ）、ステップＳ１１８を再び実行し、第２中継機２２のＣＰＵ５２が第２関連データをＲＡＭ３５に書き込むまで待機する。
【０１６４】
ＣＰＵ４２は、第２関連データが記憶されていると判定した場合（Ｓ１１８：ＹＥＳ）、ステップＳ１１９，Ｓ１２０を実行する。次に、ＣＰＵ４２は、ステップＳ１２０で生成した第１合成データに基づいて、第３基準データを演算する（ステップＳ１２１）。ステップＳ１２１では、ＣＰＵ４２は、例えば、ハッシュ関数を用いて第３基準データを演算する。
以上のように、ＣＰＵ４２は、乱数データ及び第２基準データＲ２に基づいて第３基準データを演算する。
【０１６５】
次に、ＣＰＵ４２は、ＲＡＭ３５から第２関連データを読み出す（ステップＳ１２２）。これにより、ＣＰＵ４２は、第２中継機２２のＣＰＵ５２が演算した第２関連データを取得する。次に、ＣＰＵ４２は、ステップＳ１２２で読み出した第２関連データが、ステップＳ１２１で演算した第３基準データと一致するか否かを判定する（ステップＳ１２３）。ＣＰＵ４２は、ステップＳ１２３を実行することによって、第２制御プログラムＰ２が適正であることも検証する。
【０１６６】
ＣＰＵ４２は、第２関連データが第３基準データと一致すると判定した場合（Ｓ１２３：ＹＥＳ）、第２制御プログラムＰ２は適正であるとして、ステップＳ１２４を実行する。ＣＰＵ４２は、第２関連データが第３基準データと一致しないと判定した場合（Ｓ１２３：ＮＯ）、第２制御プログラムＰ２は適正ではない、即ち、第２制御プログラムＰ２が改ざんされている可能性が高いとして、ステップＳ１２５を実行する。ＣＰＵ４２は、ステップＳ１２４，Ｓ１２５の一方を実行した後、検証処理を終了する。ＨＳＭ３４のＣＰＵ４２は、検証処理を終了した後、電源回路３６が電力供給を一旦停止して、電力供給を再開するまで、動作を停止する。ＣＰＵ４２が検証処理を終了した後、ＣＰＵ３２は、適正な第１制御プログラムＰ１を実行する。
【０１６７】
図１７は起動処理の手順を示すフローチャートである。第２中継機２２のＣＰＵ５２は、実施の形態３と同様に、電源回路５４がＣＰＵ５２への電力供給を開始した場合において、第２中継処理を実行する前に、起動プログラムＰｂに従って起動処理を実行する。実施の形態４における起動処理のステップＳ１３１〜Ｓ１３５，Ｓ１３８〜Ｓ１４０夫々は、ステップＳ９１〜Ｓ９５，Ｓ９８〜Ｓ１００と同様である。このため、ステップＳ１３１〜Ｓ１３５，Ｓ１３８〜Ｓ１４０の詳細な説明を省略する。
【０１６８】
起動処理では、第２中継機２２のＣＰＵ５２は、ステップＳ１３５を実行した後、ステップＳ１３５で生成した第２合成データに基づいて、第２関連データを演算する（ステップＳ１３６）。ステップＳ１３６では、ＣＰＵ５２は、例えば、ハッシュ関数を用いて第２関連データを演算する。
以上のように、ＣＰＵ５２は第２制御プログラムＰ２及び乱数データに基づいて第２演算データを算出する。実施の形態４においては、ＨＳＭ３４のＣＰＵ４２ではなく、第２中継機２２のＣＰＵ５２が関連データ演算部として機能する。
【０１６９】
次に、ＣＰＵ５２は、ステップＳ１３６で演算した第２関連データをＲＡＭ３５に書き込み（ステップＳ１３７）、ステップＳ１３８を実行する。
【０１７０】
図１８は、第２制御プログラムＰ２の検証の説明図である。実施の形態３と同様に、第２中継機２２のＣＰＵ５２は、第２制御プログラムＰ２に基づいて第２中間データを算出する。次に、ＣＰＵ５２は、算出した第２中間データと、ＨＳＭ３４のＣＰＵ４２が生成した乱数データとを合成することによって、第２合成データを生成する。ＣＰＵ５２は、生成した第２合成データに基づいて、第２関連データを演算し、演算した第２関連データを第１中継機２１のＲＡＭ３５に書き込む。
【０１７１】
ＨＳＭ３４のＣＰＵ４２は、実施の形態３と同様に、第２基準データＲ２と、乱数データとを合成することによって、第１合成データを生成する。ＣＰＵ４２は、生成した第１合成データに基づいて、第３基準データを演算する。ＣＰＵ４２は、第２中継機２２のＣＰＵ５２が演算した第２関連データが、第３基準データに一致するか否かを判定することによって、第２制御プログラムＰ２を検証する。
【０１７２】
第２中間データと乱数データとを合成することによって、第２合成データを生成する方法は、第２基準データと乱数データとを合成することによって、第１合成データを生成する方法と同じである。第２合成データに基づいて第２関連データを演算する方法は、第１合成データに基づいて第３基準データを演算する方法と同じである。
【０１７３】
第２制御プログラムＰ２が適正である場合、第２基準データＲ２は第２中間データと一致する。この場合、第２合成データ及び第２関連データ夫々は、第１合成データ及び第３基準データに一致し、正常データがＲＡＭ３５に書き込まれる。
前述したように、検証処理が実行される都度、乱数データの内容は変更される。このため、検証処理が実行される都度、ＲＡＭ３５から読み出す第２関連データは変更される。今回の起動処理において、前回の起動処理で演算された第２関連データをＲＡＭ３５に書き込んだ場合、第２関連データは第３基準データと一致しないので、第２制御プログラムＰ２が適正ではないと判定される。結果、実施の形態３と同様に、第２制御プログラムＰ２の検証結果の信頼性が高い。
【０１７４】
実施の形態４における検証処理及び起動処理では、第１鍵データＫ１及び第２鍵データＫ２が用いられることはない。このため、ＨＳＭ３４のＲＯＭ４１に第１鍵データＫ１及び第２鍵データＫ２が記憶されている必要はない。
【０１７５】
また、第２中継機２２のＣＰＵ５２は、第２制御プログラムＰ２に関連する第２関連データを演算し、演算した第２関連データを第１中継機２１のＲＡＭ３５に書き込む。第２関連データのデータ量は、第２制御プログラムＰ２のデータ量よりも小さい。このため、第２制御プログラムＰ２が適正であることを検証するために、第２中継機２２から第１中継機２１へ転送されるデータのデータ量は小さい。結果、検証を行うために必要な時間が短い。
実施の形態４における中継装置１１は、実施の形態３における中継装置１１が奏する効果の中で、演算データの算出することによって得られる効果と、第２鍵データＫ２に基づいて第３基準データを演算することによって得られる効果を除く他の効果を同様に奏する。
【０１７６】
なお、実施の形態２において、第２中継機２２のＣＰＵ５２は、実施の形態４における起動処理を実行してもよい。この場合、起動処理では、ＣＰＵ５２は、ステップＳ１３３の代わりに、実施の形態２におけるステップＳ６１，Ｓ６２を実行し、ＨＳＭ３４のＲＯＭ４１に第１鍵データＫ１及び第２鍵データＫ２が記憶されている必要はない。ステップＳ１３４では、ステップＳ６１で読み出した第２制御プログラムＰ２に基づいて第２中間データを算出する。
【０１７７】
また、実施の形態３において、第２中間データ及び乱数データを合成することによって生成される第２合成データに基づいて算出される第２演算データが、第２制御プログラムＰ２及び乱数データを合成することによって生成されるデータに基づいて算出されるデータと同一である場合、第２中間データの算出を省略してもよい。この場合、第２中継機２２のＣＰＵ５２は、起動処理において、第２制御プログラムＰ２と乱数データとに基づいて第２合成データを生成する。
【０１７８】
同様に、実施の形態４において、第２中間データ及び乱数データを合成することによって生成される第２合成データに基づいて演算される第２関連データが、第２制御プログラムＰ２及び乱数データを合成することによって生成されるデータに基づいて算出されるデータと同一である場合、第２中間データの算出を省略してもよい。この場合、第２中継機２２のＣＰＵ５２は、起動処理において、第２制御プログラムＰ２と乱数データとに基づいて第２合成データを生成する。
【０１７９】
また、実施の形態１〜４において、第２中継機２２の動作を停止させる構成は、第２中継機２２の電源回路５４に電力供給を停止させる構成に限定されず、例えば、バッテリと電源回路５４とを接続する電力線の中途に設けられたスイッチをオフにする構成であってもよい。この場合、スイッチがオフされた場合、電源回路５４は動作を停止する。これにより、電源回路５４は電力供給を停止する。
【０１８０】
同様に、第１中継機２１の動作を停止させる構成は、第１中継機２１の電源回路３６に電力供給を停止させる構成に限定されず、例えば、バッテリと電源回路３６とを接続する電力線の中途に設けられたスイッチをオフにする構成であってもよい。この場合、スイッチがオフされた場合、電源回路３６は動作を停止する。これにより、電源回路３６は電力供給を停止する。
更に、第１中継機２１が有するＨＳＭ３４のＣＰＵ４２によって、第２制御プログラムＰ２が適正ではないと判定された場合、第２中継機２２の動作だけではなく、第１中継機２１の動作を停止させてもよい。
【０１８１】
また、第１中継機２１が中継する通信で用いられる通信プロトコルはＣＡＮプロトコルに限定されない。更に、第１中継機２１が中継する通信で用いられる通信プロトコルは、第２中継機２１が中継する通信で用いられる通信プロトコルと同一であってもよい。
【０１８２】
また、実施の形態１，２，３において、第２制御プログラムＰ２の演算データ又は第２演算データは、第２中継機２２のＣＰＵ５２ではなく、第１中継機２１が有するＨＳＭ３４のＣＰＵ４２によって算出されてもよい。この場合、第２中継機２２のＣＰＵ５２は、起動処理で第２制御プログラムＰ２を第１中継機２１のＲＡＭ３５に書き込む。
【０１８３】
また、実施の形態１〜４において、第１中継機２１に接続される通信線の数は、２に限定されず、３以上であってもよい。更に、各通信線に接続されるＥＣＵの数は２に限定されず、１又は３以上であってもよい。また、各通信線に接続されるＥＣＵの数は、他の通信線に接続されているＥＣＵの数と異なっていてもよい。複数のＥＣＵが車載機器１３ａ，１３ｂ，１３ｃと同様に第１中継機２１に直接に接続されていてもよい。
【０１８４】
また、第２中継機２２に接続される車載機器の数は、３に限定されず、２又は４以上であってもよい。更に、第２中継機２２に複数の通信線が接続され、各通信線に一又は複数の車載機器が接続されてもよい。この場合、第２中継機２２は、一の通信線に接続されている１つの車載機器と、他の通信線に接続されている１つの車載機器との通信を中継する。
また、ＥＣＵデータから機器データへの変換、及び、機器データからＥＣＵデータへの変換は、第２中継機２２のＣＰＵ５２が行ってもよい。
【０１８５】
開示された実施の形態１〜４はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上述した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１８６】
１１  中継装置（車載装置）
１２ａ，１２ｂ  ＥＣＵ（第１通信装置）
１３ａ，１３ｂ，１３ｃ  車載機器（第２通信装置）
２１  第１中継機（第１車載機）
２２  第２中継機（第２車載機）
３２  ＣＰＵ（第１処理部、処理部、変換部）
３４  ＨＳＭ（検証器）
４１  ＲＯＭ（記憶部、第２の記憶部）
４２  ＣＰＵ（関連データ演算部、判定部、乱数生成部、基準データ演算部、動作制御部、演算部、第２の演算部、第２の判定部、取得部）
５２  ＣＰＵ（第２処理部、関連データ演算部、算出部）
１００  車両
Ｋ１  鍵データ（第２の鍵データ）
Ｋ２  鍵データ
Ｐ１  第１制御プログラム（第２の制御プログラム）
Ｐ２  第２制御プログラム
Ｐｈ  検証プログラム
【図１】
2018116669.tif 000003
【図２】
2018116669.tif 000004
【図３】
2018116669.tif 000005
【図４】
2018116669.tif 000006
【図５】
2018116669.tif 000007
【図６】
2018116669.tif 000008
【図７】
2018116669.tif 000009
【図８】
2018116669.tif 000010
【図９】
2018116669.tif 000011
【図１０】
2018116669.tif 000012
【図１１】
2018116669.tif 000013
【図１２】
2018116669.tif 000014
【図１３】
2018116669.tif 000015
【図１４】
2018116669.tif 000016
【図１５】
2018116669.tif 000017
【図１６】
2018116669.tif 000018
【図１７】
2018116669.tif 000019
【図１８】
2018116669.tif 000020
【手続補正書】
【提出日】平成29年11月15日(2017.11.15)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００９５
【補正方法】変更
【補正の内容】
【００９５】
図６は検証処理の手順を示すフローチャートである。第１中継機２１が有するＨＳＭ３４のＣＰＵ４２は、電源回路５４がＣＰＵ４２への電力供給を開始した場合において、第１中継処理を実行する前に検証処理を実行する。前述したように、ＣＰＵ４２が検証処理を実行している間、ＣＰＵ３２は動作を停止している。検証処理では、まず、ＣＰＵ４２は、第１制御プログラムＰ１をＲＯＭ３１から読み出す（ステップＳ３１）。次に、ＣＰＵ４２は、第１制御プログラムＰ１に関連する関連データを演算するための演算データを、例えばハッシュ関数を用いて算出する（ステップＳ３２）。ステップＳ３２では、ＣＰＵ４２は、ステップＳ３１で読み出した第１制御プログラムＰ１に基づいて演算データを算出する。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１２５
【補正方法】変更
【補正の内容】
【０１２５】
実施の形態１と同様に、ＣＰＵ５２は、ステップＳ６８で正常データが第１中継機２１のＲＡＭ３５に記憶されていると判定して起動処理を終了した場合、第２中継機２２のＲＡＭ６２に記憶されている第２制御プログラムＰ２に従って、第２中継処理を実行する。
以上のように構成された実施の形態２における中継装置１１は、実施の形態１における中継装置１１が奏する効果と同様の効果を奏する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１３９
【補正方法】変更
【補正の内容】
【０１３９】
次に、ＣＰＵ４２は、ステップＳ８１で演算した第２関連データが、ステップＳ８５で演算した第３基準データと一致するか否かを判定する（ステップＳ８６）。ＣＰＵ４２は、ステップＳ８６を実行することによって、第２制御プログラムＰ２が適正であることも検証する。ＣＰＵ４２は、第２関連データが第３基準データと一致すると判定した場合（Ｓ８６：ＹＥＳ）、第２制御プログラムＰ２は適正であるとして、ステップＳ８７を実行する。ＣＰＵ４２は、第２関連データが第３基準データと一致しないと判定した場合（Ｓ８６：ＮＯ）、第２制御プログラムＰ２は適正ではない、即ち、第２制御プログラムＰ２が改ざんされている可能性が高いとして、ステップＳ８８を実行する。ＣＰＵ４２は、ステップＳ８７，Ｓ８８の一方を実行した後、検証処理を終了する。ＨＳＭ３４のＣＰＵ４２は、検証処理を終了した後、電源回路３６が電力供給を一旦停止して、電力供給を再開するまで、動作を停止する。ＣＰＵ４２が検証処理を終了した後、ＣＰＵ３２は、適正な第１制御プログラムＰ１を実行する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１５０
【補正方法】変更
【補正の内容】
【０１５０】
ＨＳＭ３４のＣＰＵ４２は、ＲＡＭ３５に記憶されている第２演算データと、第２鍵データＫ２とに基づいて第２関連データを演算する。
また、ＣＰＵ４２は、第２基準データＲ２と乱数データとを合成することによって、第１合成データを生成する。ＣＰＵ４２は、生成した第１合成データに基づいて、第１中間データを算出する。ＣＰＵ４２は、算出した第１中間データと、第２鍵データＫ２とに基づいて、第３基準データを演算する。ＣＰＵ４２は、第２関連データが第３基準データに一致するか否かを判定することによって、第２制御プログラムＰ２を検証する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１５８
【補正方法】変更
【補正の内容】
【０１５８】
（実施の形態４）
実施の形態３における中継装置１１では、ＨＳＭ３４のＣＰＵ４２は第１鍵データＫ１に基づいて第１関連データを演算し、第２鍵データＫ２に基づいて第２関連データ及び第３基準データを演算している。しかしながら、ＣＰＵ４２は、第１鍵データＫ１及び第２鍵データＫ２に基づく演算を行わなくてもよい。
以下では、実施の形態４について、実施の形態３と異なる点を説明する。後述する構成を除く他の構成については、実施の形態３と共通しているため、実施の形態３と共通する構成部には実施の形態３と同一の参照符号を付してその説明を省略する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１８１
【補正方法】変更
【補正の内容】
【０１８１】
また、第１中継機２１が中継する通信で用いられる通信プロトコルはＣＡＮプロトコルに限定されない。更に、第１中継機２１が中継する通信で用いられる通信プロトコルは、第２中継機２２が中継する通信で用いられる通信プロトコルと同一であってもよい。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１８６
【補正方法】変更
【補正の内容】
【０１８６】
１１  中継装置（車載装置）
１２ａ，１２ｂ  ＥＣＵ（第１通信装置）
１３ａ，１３ｂ，１３ｃ  車載機器（第２通信装置）
２１  第１中継機（第１車載機）
２２  第２中継機（第２車載機）
３２  ＣＰＵ（第１処理部、処理部、変換部）
３４  ＨＳＭ（検証器）
４１  ＲＯＭ（記憶部、第２の記憶部）
４２  ＣＰＵ（関連データ演算部、判定部、乱数生成部、基準データ演算部、動作制御部、演算部、第２の演算部、第２の判定部、取得部）
５２  ＣＰＵ（第２処理部、関連データ演算部、算出部）
１００  車両
Ｋ１  第１鍵データ（第２の鍵データ）
Ｋ２  第２鍵データ
Ｐ１  第１制御プログラム（第２の制御プログラム）
Ｐ２  第２制御プログラム
Ｐｈ  検証プログラム