(57)【特許請求の範囲】
【請求項１】
プログラム又はデータを記憶した記憶部、該記憶部に記憶されたプログラム又はデータに基づく処理を行う処理部、並びに、ネットワークを介して他の装置との通信を行う通信部を有する情報処理装置に対して、前記記憶部に記憶されたプログラム又はデータの書き換えを検出する書換検出システムであって、
前記ネットワークを介して前記情報処理装置へハッシュ値算出のための種情報を送信する種情報送信手段、該種情報送信手段が送信した種情報に応じて前記情報処理装置から送信されるハッシュ値を受信するハッシュ値受信手段、並びに、該ハッシュ値受信手段が受信したハッシュ値の正否を判定するハッシュ値判定手段を有し、該ハッシュ値判定手段の判定結果に応じて書き換えを検出する書換検出装置を備え、
前記書換検出装置は、前記種情報送信手段による種情報の送信を反復実行し、書換検出を繰り返し行うようにしてあり、
前記情報処理装置は、少なくとも２回目以降のハッシュ値算出時において前記書換検出装置から指定されることなく、前記書換検出装置と共通の算法により、前記記憶部から処理対象とすべき記憶領域を自律的に決定する記憶領域決定手段と、前記種情報送信手段が送信した種情報及び前記記憶領域決定手段が決定した記憶領域に記憶したプログラム又はデータに基づくハッシュ値を算出するハッシュ値算出手段を有し、該ハッシュ値算出手段が算出したハッシュ値を前記書換検出装置へ送信するようにしてあり、
前記情報処理装置及び前記書換検出装置は共通の前記処理対象とすべき記憶領域を各々で自ら決定できるように前記共通の算法をそれぞれ記憶していること
を特徴とする書換検出システム。
【請求項２】
前記情報処理装置の前記記憶領域決定手段は、前回のハッシュ値算出の処理対象とした記憶領域に対して、先頭位置及び末尾位置が所定番地離隔した記憶領域を処理対象と決定するようにしてあること
を特徴とする請求項１に記載の書換検出システム。
【請求項３】
前記情報処理装置の前記記憶領域決定手段は、前記記憶部を複数に分割し、分割した記憶領域を順番に処理対象の記憶領域と決定するようにしてあること
を特徴とする請求項１に記載の書換検出システム。
【請求項４】
前記書換検出装置は、
少なくとも２回目以降のハッシュ値算出時において、ハッシュ値の処理対象となる記憶領域を、前記情報処理装置から指定されることなく前記情報処理装置と共通の算法により自律的に決定し、決定した記憶領域に基づくハッシュ値の期待値を取得し、
前記ハッシュ値判定手段は取得した期待値を用いて、前記ハッシュ値受信手段が受信したハッシュ値の正否を判定すること
を特徴とする請求項１乃至請求項３のいずれか１つに記載の書換検出システム。
【請求項５】
前記書換検出装置は、ハッシュ値算出の処理対象とすべき初回の記憶領域を指定する記憶領域指定情報を前記情報処理装置へ送信する情報送信手段を有し、
前記情報処理装置の前記記憶領域決定手段は、前記書換検出装置から受信した前記記憶領域指定情報に基づいて、処理対象とすべき初回の記憶領域を決定するようにしてあること
を特徴とする請求項１乃至請求項４のいずれか１つに記載の書換検出システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両に搭載されたＥＣＵ（Electronic Control Unit）などの情報処理装置に対するプログラム又はデータの不正な書き換えを検出する書換検出システム、及び、このシステムを構成する情報処理装置に関する。
【背景技術】
【０００２】
車両に搭載されたＥＣＵなどの情報処理装置は、ＲＯＭ（Read Only Memory）などの記憶部に記憶されたプログラム及びデータに基づいてＣＰＵ（Central Processing Unit）などの処理部が種々の処理を行っている。近年の車両では、ＣＡＮ（Controller Area Network）などの車内ネットワークを介して情報処理装置の記憶部に記憶されたプログラム及びデータの書き換えを行う機能が実用化されている。これにより情報処理装置のソフトウェアのバージョンアップなどが容易化され、情報処理装置の高機能化の実現を容易化することができる。
【０００３】
特許文献１においては、車載制御装置を認証する構成管理装置を備え、この構成管理装置が、構成証明を実施するために用いる構成証明データを、車載ネットワークに接続する登録装置を介して車載制御装置に配信する車載ネットワークシステムが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１７１４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
情報処理装置の記憶部に記憶されたプログラム及びデータを書換可能な構成とすることによって、不正なプログラム及びデータの書き換えが行われる虞がある。例えばカーシェアリング又はレンタカー等のように不特定多数のユーザが車両を利用する場合、悪意のユーザによって不正な書き換えが行われる虞がある。また例えば自らが所有する車両に対してもユーザが不正な改造を行うことが可能である。
【０００６】
例えば情報処理装置に高度な認証機能又は暗号化機能等を搭載することによって、記憶部のプログラム又はデータの不正な書き換えを防止することが考えられる。しかしながらこのような機能を情報処理装置に搭載することによって、情報処理装置の高コスト化を招来するという問題がある。また不正な書き換えを完全に防止することは容易ではない。特許文献１に記載の車載ネットワークシステムも同様の問題を有している。
【０００７】
この問題を解決すべく、本願の発明者は、情報処理装置に対して種情報を送信し、これを受信した情報処理装置が種情報と記憶部に記憶したプログラム又はデータとを用いてハッシュ値の算出を行い、情報処理装置で算出されたハッシュ値が期待値と一致するか否かに応じて不正書換を検出するシステムを提案している。
【０００８】
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、上述のハッシュ値を利用して不正書換を検出するシステムにおいて、装置間の通信量の低減又は各装置での処理時間の短縮等を実現し得る書換検出システム及び情報処理装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明に係る書換検出システムは、プログラム又はデータを記憶した記憶部、該記憶部に記憶されたプログラム又はデータに基づく処理を行う処理部、並びに、ネットワークを介して他の装置との通信を行う通信部を有する情報処理装置に対して、前記記憶部に記憶されたプログラム又はデータの書き換えを検出する書換検出システムであって、前記ネットワークを介して前記情報処理装置へハッシュ値算出のための種情報を送信する種情報送信手段、該種情報送信手段が送信した種情報に応じて前記情報処理装置から送信されるハッシュ値を受信するハッシュ値受信手段、並びに、該ハッシュ値受信手段が受信したハッシュ値の正否を判定するハッシュ値判定手段を有し、該ハッシュ値判定手段の判定結果に応じて書き換えを検出する書換検出装置を備え、前記書換検出装置は、前記種情報送信手段による種情報の送信を反復実行し、書換検出を繰り返し行うようにしてあり、前記情報処理装置は、少なくとも２回目以降のハッシュ値算出時において前記書換検出装置から指定されることなく、前記書換検出装置と共通の算法により、前記記憶部から処理対象とすべき記憶領域を自律的に決定する記憶領域決定手段と、前記種情報送信手段が送信した種情報及び前記記憶領域決定手段が決定した記憶領域に記憶したプログラム又はデータに基づくハッシュ値を算出するハッシュ値算出手段を有し、該ハッシュ値算出手段が算出したハッシュ値を前記書換検出装置へ送信するようにしてあり、前記情報処理装置及び前記書換検出装置は共通の前記処理対象とすべき記憶領域を各々で自ら決定できるように前記共通の算法をそれぞれ記憶していることを特徴とする。
【００１０】
また、本発明に係る書換検出システムは、前記情報処理装置の前記記憶領域決定手段は、前回のハッシュ値算出の処理対象とした記憶領域に対して、先頭位置及び末尾位置が所定番地離隔した記憶領域を処理対象と決定するようにしてあることを特徴とする。
【００１１】
また、本発明に係る書換検出システムは、前記情報処理装置の前記記憶領域決定手段は、前記記憶部を複数に分割し、分割した記憶領域を順番に処理対象の記憶領域と決定するようにしてあることを特徴とする。
【００１２】
また、本発明に係る書換検出システムは、前記書換検出装置が、少なくとも２回目以降のハッシュ値算出時において、ハッシュ値の処理対象となる記憶領域を、前記情報処理装置から指定されることなく前記情報処理装置と共通の算法により自律的に決定し、決定した記憶領域に基づくハッシュ値の期待値を取得し、前記ハッシュ値判定手段は取得した期待値を用いて、前記ハッシュ値受信手段が受信したハッシュ値の正否を判定することを特徴とする。
【００１３】
また、本発明に係る書換検出システムは、前記書換検出装置が、ハッシュ値算出の処理対象とすべき初回の記憶領域を指定する記憶領域指定情報を前記情報処理装置へ送信する情報送信手段を有し、前記情報処理装置の前記記憶領域決定手段は、前記書換検出装置から受信した前記記憶領域指定情報に基づいて、処理対象とすべき初回の記憶領域を決定するようにしてあることを特徴とする。
【００１６】
本発明においては、書換検出装置は種情報を生成して情報処理装置へ送信を反復実行し、情報処理装置が受信した種情報と記憶部に記憶されたプログラム又はデータとに基づいてハッシュ値を算出して書換検出装置へ送信する。情報処理装置は、少なくとも２回目以降のハッシュ値算出時において前記書換検出装置から指定されることなく、前記書換検出装置と共通の算法により、記憶部の記憶領域のうち、ハッシュ値算出の処理対象とする記憶領域を自ら決定し、ハッシュ値の算出を行う。また種情報には、例えば所定ビット数のランダムな値を生成して用いることができる。書換検出装置は、情報処理装置から受信したハッシュ値の正否を判定し、プログラム又はデータに対する不正な書き換えが行われたか否かを判定する。即ち書換検出装置は、ハッシュ値が正しいものである場合には不正な書き換えが行われていないと判断し、ハッシュ値が正しいものでない場合には不正な書き換えが行われたと判断することができる。
これにより、情報処理装置のプログラム又はデータに対する不正な書き換えを検出し、不正な書き換えがなされた情報処理装置の動作停止、修理又は交換等の手当てを適切に行うことが可能となる。情報処理装置が処理対象とすべき記憶領域を自ら決定することによって、書換検出装置は記憶領域を指定する情報などを情報処理装置へ送信する必要がなく、書換検出装置及び情報処理装置の間の通信量を低減できる。また情報処理装置は種情報の受信により、記憶領域を指定する情報の受信などを待つことなく、ハッシュ値算出の処理を開始することができるため、処理時間を短縮することができる。
【００１７】
また本発明においては、情報処理装置は、前回のハッシュ値算出の対象とした記憶領域に対して、先頭位置及び末尾位置が所定番地離隔した記憶領域を今回の処理対象の記憶領域とする。即ち情報処理装置は、前回の記憶領域が例えばＡ０番地からＡ１番地までであったとした場合、今回の記憶領域を例えばＡ０＋α番地からＡ１＋α番地までと決定することができる。なお書換検出装置も同じ所定番地αを記憶しておき、情報処理装置がいずれの記憶領域を用いてハッシュ値の算出を行ったかを把握しておく。これにより情報処理装置は、容易且つ確実に処理対象とすべき記憶領域を決定することができる。
【００１８】
また本発明においては、情報処理装置は記憶領域を複数に分割し、分割した記憶領域を順番に、ハッシュ値算出の処理対象として切り替える。これにより情報処理装置は、容易且つ確実に処理対象とすべき記憶領域を決定することができる。
【００１９】
また本発明においては、書換検出装置が少なくとも２回目以降のハッシュ値算出時において、ハッシュ値の処理対象となる記憶領域を、情報処理装置から指定されることなく情報処理装置と共通の算法により自律的に決定し、決定した記憶領域に基づくハッシュ値の期待値を取得し、ハッシュ値判定手段は取得した期待値を用いて、ハッシュ値受信手段が受信したハッシュ値の正否を判定する。情報処理装置は処理対象とすべき記憶領域を自ら決定する。情報処理装置は種情報の受信により、記憶領域を指定する情報の受信などを待つことなく、ハッシュ値の算出を行うことができるため、処理時間を短縮することができる。
【発明の効果】
【００２１】
本発明による場合は、ハッシュ値算出の処理対象とすべき記憶領域を情報処理装置が決定する構成とすることにより、書換検出装置及び情報処理装置間の通信量の低減又は書換検出の処理に要する各装置での処理時間の短縮等を実現することができる。
【図面の簡単な説明】
【００２２】
【図１】本実施の形態に係る書換検出システムの構成を示す模式図である。
【図２】ＥＣＵの構成を示すブロック図である。
【図３】ＥＣＵの記憶部の構成を示す模式図である。
【図４】書換検出装置の構成を示すブロック図である。
【図５】サーバ装置の構成を示すブロック図である。
【図６】書換検出データベースの第１構成例を示す模式図である。
【図７】書換検出データベースの第２構成例を示す模式図である。
【図８】書換検出装置による書換検出処理を説明するための模式図である。
【図９】実施の形態１に係るＥＣＵの記憶領域決定方法を説明するための模式図である。
【図１０】書換検出装置が行う書換検出処理の手順を示すフローチャートである。
【図１１】ＥＣＵが行う書換検出処理の手順を示すフローチャートである。
【図１２】サーバ装置が行う書換検出処理の手順を示すフローチャートである。
【図１３】実施の形態２に係るＥＣＵの記憶領域決定方法を説明するための模式図である。
【図１４】実施の形態３に係る書換検出システムによる記憶領域決定方法を説明するための模式図である。
【図１５】実施の形態３に係る書換検出装置が行う書換検出処理の手順を示すフローチャートである。
【図１６】実施の形態３に係るＥＣＵが行う書換検出処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００２３】
（実施の形態１）
＜システム構成＞
以下、本発明をその実施の形態を示す図面に基づき具体的に説明する。図１は、本実施の形態に係る書換検出システムの構成を示す模式図である。図において１は車両であり、車両１には例えばボディＥＣＵ及びエンジンＥＣＵ等の種々のＥＣＵ２が搭載されている。車両１に搭載された複数のＥＣＵ２は、ＣＡＮなどの車内ネットワーク３を介して接続され、相互に情報の送受信を行うことができる。また車両１には、車内ネットワーク３に対して他の装置を接続するためのコネクタ４が設けられている。
【００２４】
本実施の形態に係る書換検出システムは、車両１に搭載されたＥＣＵ２のプログラム又はデータに対する不正な書き換えが行われたことを検出する書換検出装置５を備えている。書換検出装置５は、可搬型の装置であり、例えば車両１のディーラ又は修理工場等に保管される。書換検出装置５は、車両１に設けられたコネクタ４に通信ケーブル６を介して接続されることにより、車内ネットワーク３を介してＥＣＵ２との通信が可能となる。書換検出装置５は、コネクタ４に通信ケーブル６が接続された状態で、ＥＣＵ２のプログラム又はデータに対する不正な書き換えの検出処理を行う。
【００２５】
また書換検出装置５は、無線ＬＡＮ（Local Area Network）又は携帯電話網等を利用した無線通信を行う機能を有している。本実施の形態において書換検出装置５はこの無線通信機能を利用し、インターネットなどのネットワーク９を介してサーバ装置７との通信を行う。サーバ装置７は、例えば車両１の製造会社又は販売会社等が管理・運営する装置である。サーバ装置７は、書換検出装置５による書換検出処理に必要な情報を記憶しており、書換検出処理を行う際に与えられる書換検出装置５からの要求に応じて、必要な情報を書換検出装置５へ送信する。
【００２６】
図２は、ＥＣＵ２の構成を示すブロック図である。ＥＣＵ２は、処理部２１、記憶部２２及び通信部２３等を備えて構成されている。処理部２１は、ＣＰＵ（Central Processing Unit）などの演算処理装置を用いて構成されている。処理部２１は、記憶部２２に記憶されたプログラムを読み出して実行することにより、車両１に係る種々の情報処理を行う。
【００２７】
記憶部２２は、フラッシュメモリ又はＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）等の不揮発性でデータ書き換え可能なメモリ素子を用いて構成されている。記憶部２２は、処理部２１が実行するプログラムと、これにより行われる処理に必要な種々のデータとが記憶されている。本実施の形態においては、記憶部２２はＲＯＭとして用いられ、処理部２１の処理により記憶部２２に記憶されたプログラム又はデータが書き換えられることはないものとする。ただしプログラムのバージョンアップなどによる書き換えを行うことは可能である。
【００２８】
通信部２３は、例えばＣＡＮなどの通信プロトコルに従って、車内ネットワーク３を介した他のＥＣＵ２との通信を行う。通信部２３は、処理部２１から与えられた送信用の情報を、通信プロトコルに従った送信信号に変換し、車内ネットワーク３を構成する通信線に変換した信号を出力することで他のＥＣＵ２への情報送信を行う。通信部２３は、車内ネットワーク３の通信線の電位をサンプリングすることによって、他のＥＣＵ２が出力した信号を取得し、この信号を通信プロトコルに従って２値の情報に変換することで情報の受信を行い、受信した情報を処理部２１へ与える。
【００２９】
また本実施の形態においてＥＣＵ２の処理部２１は、書換検出装置５からの指示に応じてハッシュ値を算出するハッシュ値算出部２４を有している。ハッシュ値算出部２４は、書換検出装置５から与えられたランダムシード（種情報）と、記憶部２２に記憶されたプログラム又はデータとに基づいて、所定のハッシュ算出アルゴリズム（ハッシュ関数）によりハッシュ値を算出する。ハッシュ値算出部２４は、ソフトウェアとして実現されるものであってもよく、ハードウェアとして実現されるものであってもよい。ハッシュ値の算出方法の詳細については後述する。
【００３０】
図３は、ＥＣＵ２の記憶部２２の構成を示す模式図である。図示の例では、記憶部２２はアドレス（番地）が００００ｈ〜ＦＦＦＦｈで表される記憶領域を有している。記憶部２２には、処理部２１にて実行される２つのプログラム（プログラム１及びプログラム２）と、各プログラムの実行にそれぞれ必要な２種のデータ（データ１及びデータ２）とが記憶されている。記憶部２２には、アドレスの先頭側からプログラム１、プログラム２、データ１、データ２の順に記憶されているが、それぞれの間の記憶領域及びアドレスの末尾側の記憶領域にはダミーデータが記憶されている。
【００３１】
ダミーデータはどのような値であってもよいが、例えばランダムに決定された値を記憶しておくことができる。ダミーデータは記憶部２２の余剰領域の全てに書き込まれる。即ち記憶部２２には、その全記憶領域に何らかのデータが記憶されている。これにより、記憶部２２の余剰領域に不正なプログラムを記憶して不正な処理が行われることを防止できる。また記憶部２２に記憶されたプログラム及びデータを圧縮することを困難化することができる。
【００３２】
図４は、書換検出装置５の構成を示すブロック図である。書換検出装置５は、処理部５１、記憶部５２、操作部５３、表示部５４、有線通信部５５及び無線通信部５６等を備えて構成されている。処理部５１は、ＣＰＵなどの演算処理装置を用いて構成されている。処理部５１は、記憶部５２に記憶されたプログラムを読み出して実行することにより、車両１に搭載されたＥＣＵ２のプログラム又はデータに対する不正書き換えの検出処理を行う。記憶部５２は、フラッシュメモリなどの不揮発性のメモリ素子を用いて構成され、処理部５１が実行するプログラム及び実行に必要な種々のデータが記憶される。書換検出装置５は、処理部５１の処理過程などにて発生した一時的な情報を記憶部５２に記憶してもよく、一時的な情報を記憶するＲＡＭ（Random Access Memory）を備えていてもよい。
【００３３】
操作部５３は、プッシュスイッチ又はタッチパネル等を用いて構成され、ユーザの操作を受け付けて処理部５１へ通知する。表示部５４は、液晶パネルなどを用いて構成され、処理部５１からの指示に応じて、ユーザに対する種々の画像及びメッセージ等を表示する。有線通信部５５は、例えばＣＡＮなどの通信プロトコルに従って、通信ケーブル６を介した他の装置との通信を行う。通信ケーブル６が車両１のコネクタ４に接続された場合、有線通信部５５は、車両１の車内ネットワーク３を介してＥＣＵ２との通信を行うことができる。無線通信部５６は、無線ＬＡＮ又は携帯電話網等を利用した無線通信を行うことによって、インターネットなどのネットワーク９を介してサーバ装置７との通信を行う。
【００３４】
図５は、サーバ装置７の構成を示すブロック図である。サーバ装置７は、処理部７１、記憶部７２及び通信部７３等を備えて構成されている。処理部７１は、ＣＰＵなどの演算処理装置を用いて構成されている。処理部７１は、記憶部７２に記憶されたプログラムを読み出して実行することにより、書換検出装置５の書換検出処理に必要な情報を送信する処理を行う。通信部７３は、インターネットなどのネットワーク９を介して他の装置との通信を行うものである。本実施の形態において通信部７３は、書換検出装置５１との間で通信を行い、書換検出装置５１から受信した情報を処理部７１へ与えると共に、処理部７１から与えられた送信用の情報を書換検出装置５１へ送信する。
【００３５】
記憶部７２は、ハードディスクなどの大容量の記憶装置を用いて構成されている。本実施の形態においては、記憶部７２には、書換検出データベース７５が構築されている。書換検出データベース７５は、書換検出装置５の書換検出処理に必要な情報を記憶したデータベースである。書換検出データベース７５にはいくつかの構成が考えられるが、以下に２つの構成例を示す。
【００３６】
図６は、書換検出データベース７５の第１構成例を示す模式図である。第１構成例の書換検出データベース７５には、”車種”、”ＥＣＵ種別”及び”記憶内容”が対応付けて記憶されている。書換検出データベース７５の"車種"は、車両１の種類を識別するための識別情報などが記憶される。車両１の車名及び外観等が同じであっても、グレードなどが異なり、搭載されるＥＣＵ２の構成が異なる場合、本実施の形態においてはこれらを異なる車種として扱う。図示の例では、書換検出データベース７５に”車種”として車種Ａ、車種Ｂ…の情報が記憶されている。書換検出データベース７５の”ＥＣＵ種別”は、例えばボディＥＣＵ又はエンジンＥＣＵ等のＥＣＵ２０の種類を識別するための識別情報などが記憶される。図示の例では、書換検出データベース７５に”ＥＣＵ種別”としてＥＣＵａ、ＥＣＵｂ…の情報が記憶されている。書換検出データベース７５の”記憶内容”は、対応するＥＣＵ２の記憶部２２の記憶内容のコピーである。
【００３７】
書換検出装置５は”車種”、”ＥＣＵ種別”、”記憶領域”及び”ランダムシード”を指定してサーバ装置７へ期待値を問い合わせる。問い合わせに係る”記憶領域”は、ＥＣＵ２の記憶部２２の記憶領域の一部を指定するための情報であり、例えば開始アドレスＸ及び終了アドレスＹの組み合わせ、又は、開始アドレスＸ及び領域サイズＺの組み合わせ等により記憶領域を指定する。問い合わせに係る”ランダムシード”は、書換検出装置５が生成する情報であり、本実施の形態では１６進数で４桁の数値である。
【００３８】
サーバ装置７は、この問い合わせに係る車種及びＥＣＵ種別に対応する記憶内容から、問い合わせにて指定された記憶領域の記憶内容を読み出す。サーバ装置７は、問い合わせに係るランダムシードと、読み出した記憶内容とに基づいてハッシュ値の算出を行い、算出したハッシュ値を期待値として書換検出装置５へ送信する。このため、サーバ装置７は、ＥＣＵ２のハッシュ値算出部２４が用いるハッシュ関数と同じものを記憶している。
【００３９】
図７は、書換検出データベース７５の第２構成例を示す模式図である。第２構成例の書換検出データベース７５には、”車種”、”ＥＣＵ種別”、”記憶領域”、”ランダムシード”及び”期待値”が対応付けて記憶されている。これらのうち”車種”及び”ＥＣＵ種別”は、第１の構成例と同じである。第２構成例の書換検出データベース７５の”記憶領域”は、ＥＣＵ２の記憶部２２の記憶領域の一部を指定する情報である。図示の例では、記憶部２２を複数の記憶領域に区分して第１領域、第２領域…としてある。各領域は同じサイズでなくてもよく、重複する部分があってもよい。
【００４０】
書換検出データベース７５の”ランダムシード”は、書換検出装置５が生成するランダムシードであり、本実施の形態では１６進数で４桁の数値である。図示の例で”ランダムシード”は、"ＥＣＵ種別”毎に００００ｈ〜ＦＦＦＦｈの６５５３６通りの値が設定される。書換検出データベース７５の”期待値”は、”記憶領域”及び”ランダムシード”に対してＥＣＵ３にて算出されるべきハッシュ値であり、本実施の形態では１６進数で４桁の数値である。”期待値”は、ＥＣＵ２の記憶部２２の記憶内容（プログラム、データ及びダミーデータ）について、対応する”記憶領域”に記憶された記憶内容に対し、対応する”ランダムシード”を用いて予めハッシュ値を算出して記憶したものである。なお図示の”期待値”は一例である。
【００４１】
書換検出装置５は”車種”、”ＥＣＵ種別”、”記憶領域”及び”ランダムシード”を指定してサーバ装置７へ期待値を問い合わせる。サーバ装置７は、この問い合わせに応じて書換検出データベース７５から対応する期待値を読み出して書換検出装置５へ送信する。
【００４２】
なお本実施の形態においては、車種及びＥＣＵ種別が同じであれば、ＥＣＵ２の記憶部２２に記憶されているプログラム及びデータが同じものであるとしてある。ただし車両１の仕向け又はプログラムのバージョン違い等により、車種及びＥＣＵ種別が同じであっても記憶されているプログラム及びデータが異なる場合があり得る。このような場合には、例えば書換検出データベース７５にはプログラムのバージョンなどの項目を設け、バージョン毎に記憶部２２の記憶内容を記憶しておくか、又は、バージョン毎に期待値を記憶しておく。書換検出装置５は、書換検出処理の対象とするＥＣＵ２のプログラムのバージョンをこのＥＣＵ２から取得し、サーバ装置７へ期待値の問い合わせを行う際に車種及びランダムシード等の情報と共にプログラムのバージョン情報を送信する。サーバ装置７は、書換検出装置５からのプログラムのバージョン情報に基づいて、書換検出データベース７５から適切な情報を読み出し、書換検出装置５へ期待値を送信することができる。
【００４３】
＜ハッシュ値算出方法＞
ＥＣＵ２のハッシュ値算出部２４は、例えばＭＤ（Message Digest）４、ＭＤ５、ＳＨＡ−１、ＳＨＡ−２５６、ＳＨＡ−３８４、ＳＨＡ−５１２、ＥＩＰＥＭＤ−１６０又はＳＨＡ−３等の既存のハッシュ関数を利用してハッシュ値の算出を行う構成とすることができる。これらはいわゆる一方向のハッシュ関数であり、入力された情報に対して一つのハッシュ値を出力する関数である。ハッシュ関数に入力される情報は、本実施の形態においてＥＣＵ２の記憶部２２に記憶されたプログラム又はデータの一部又は全部である。ハッシュ関数に入力されるものがプログラム若しくはデータのいずれであっても、又は、プログラム及びデータの両方であっても、ハッシュ関数は入力されたものを単に２値の情報として扱い、ハッシュ値を算出することができる。ハッシュ値算出部２４は、予め定められたハッシュ関数を記憶しており、このハッシュ関数を用いてハッシュ値の算出を行う。
【００４４】
以下、ハッシュ値算出部２４がＳＨＡ−１のハッシュ関数を用いてハッシュ値を算出する場合について、簡単に説明する。なおＳＨＡ−１のハッシュ関数の詳細な処理、及び、ハッシュ値算出部２４が他のハッシュ関数を用いる場合については、これらのハッシュ関数は既存の技術であるため、説明を省略する。
【００４５】
ＳＨＡ−１のハッシュ関数を利用する場合、ハッシュ値算出部２４は、まずパディング処理を行う。パディング処理においてハッシュ値算出部２４は、入力情報の後に余分なデータを付け加えることによって、処理対象の情報のサイズを所定値（５１２ビット）の整数倍となるように調整する。次いでハッシュ値算出部２４は、パディング処理された情報を５１２ビット毎のブロックに分割し、各ブロックについて８０個の値を算出する第１処理を行う。
【００４６】
次いでハッシュ値算出部２４は、所定サイズ（１６０ビット）の初期値に対して、第１処理にて算出した値を用いた演算を行い、演算後の１６０ビットの値をハッシュ値とする第２処理を行う。第２処理において、まずハッシュ値算出部２４は、１６０ビットの初期値に対して、１つのブロックについて算出した８０個の値を用いて８０ステップの演算を行う。この８０ステップの演算により、１６０ビットの初期値に対して、ブロックの情報を混ぜ込むことができ、出力として１６０ビットの値が得られる。ハッシュ値算出部２４は、得られた１６０ビットの値を初期値として、次のブロックについて算出した８０個の値を用いて同様に８０ステップの演算を行う。ハッシュ値算出部２４は、全ブロックについて同様の８０ステップの処理を行い、最終的に得られた１６０ビットの値をハッシュ値とする。
【００４７】
また本実施の形態においてハッシュ値算出部２４は、書換検出装置５から与えられたランダムシードを利用してハッシュ値の算出を行う必要がある。例えばハッシュ値算出部２４は、上記のパディング処理において、入力情報に付加するデータにランダムシードを用いることができる。また例えばハッシュ値算出部２４は、上記の第２処理において、１６０ビットの初期値にランダムシードを用いることができる。本実施の形態においては、第２処理の初期値にランダムシードを用いるものとする。
【００４８】
なおハッシュ値算出部２４によるランダムシードの利用方法は上記のものに限らない。例えばハッシュ値算出部２４は、ハッシュ値算出の対象とする記憶部２２の情報とランダムシードとの論理演算値（排他的論理和など）をハッシュ関数への入力情報とすることができる。また例えばハッシュ値算出部２４は、ハッシュ値算出の対象とする記憶部２２の情報の先頭部分又は末尾部分等の所定位置にランダムシードを付加したものをハッシュ関数への入力情報とすることができる。
【００４９】
＜書換検出処理＞
例えば車両１の車検、定期検査又は修理等の際に、ディーラ又は修理工場等の作業者は、書換検出装置５の通信ケーブル６を車両１のコネクタ４に接続して、書換検出装置５を車両１の車内ネットワーク３に接続する。作業者は、書換検出装置５の操作部５３に対する操作を行い、車両１のＥＣＵ２に対する不正書換の検出処理を開始する指示を書換検出装置５へ与える。
【００５０】
書換検出装置５は、操作部５３にて不正書換検出処理の開始指示を受け付けた場合、有線通信部５５にて車両１のＥＣＵ２との通信を開始する。本実施の形態において書換検出装置５は、車両１に搭載された複数のＥＣＵ２から１つを適宜に選択し、選択したＥＣＵ２の記憶部２２に記憶されたプログラム及びデータに対する不正書換の検出処理を行う。書換検出装置５は、１つのＥＣＵ２について検出処理を終えた後、未処理のＥＣＵ２に対する検出処理を行う。書換検出装置５は、これらを繰り返すことによって複数のＥＣＵ２に対して順次的に検出処理を行い、車両１に搭載された検出対象となり得る全てのＥＣＵ２に対して不正書換の検出処理を行う。
【００５１】
なお書換検出装置５は、車内ネットワーク３に接続された複数のＥＣＵ２に対して一斉に不正書換の検出処理を行う構成としてもよい。ただし本実施の形態においては、上記のように書換検出装置５が複数のＥＣＵ２に対して順次的に不正書換の検出処理を行うものとする。また以下においては、説明を簡略化するため、書換検出装置５が１つのＥＣＵ２に対する不正書換の検出処理を行う場合について説明する。複数のＥＣＵ２に対しては同様の処理を繰り返し行えばよい。
【００５２】
図８は、書換検出装置５による書換検出処理を説明するための模式図である。車両２の車内ネットワーク３に接続された書換検出装置５は、書換検出処理の対象となるＥＣＵ２に対して、書換検出処理を開始する旨などを通知する。これに応じて対象のＥＣＵ２は、例えば他の処理を中断してハッシュ値算出部２４の処理の準備などを行う（ただし必ずしも他の処理を中断する必要はなく、他の処理と並行してハッシュ値算出部２４が処理を行うことが可能な構成であってもよい）。
【００５３】
書換検出装置５は、適宜の乱数発生アルゴリズムに基づいてランダムな値を生成し、これをランダムシードとしてＥＣＵ２へ送信する。ランダムシードは、例えば６４ビット以上のランダムな値とすることができる。ハッシュ値算出部２４がハッシュ関数としてＳＨＡ−１を用いる場合、ランダムシードは例えば１６０ビットとすることができる。書換検出装置５からのランダムシードを受信したＥＣＵ２は、記憶部２２の記憶領域のうち、ハッシュ値算出の処理対象とする記憶領域を決定する処理を行い、決定した記憶領域の記憶内容を読み出す。ＥＣＵ２は、受信したランダムシードと、読み出した記憶内容とに基づき、予め定められたハッシュ関数を用いてハッシュ値を算出する。ＥＣＵ２は、算出したハッシュ値を書換検出装置５へ送信する。
【００５４】
また書換検出装置５は、生成したランダムシードをサーバ装置７へ送信し、このランダムシードに対するハッシュ値の期待値を問い合わせる。このときに書換検出装置５は、ＥＣＵ２と同様の方法で、ハッシュ値算出の処理対象とする記憶部２２の記憶領域を決定する。書換検出装置５は、書換検出処理を行っている車両１の車両ＩＤ（IDentifier）又は車種等の車両情報と、処理対象のＥＣＵ２を識別するＩＤなどのＥＣＵ識別情報と、ハッシュ値算出の処理対象とする記憶領域を指定する情報とを、ランダムシードと共にサーバ装置７へ送信する。
【００５５】
これらの情報を受信したサーバ装置７は、記憶部７２の書換検出データベース７５を参照する。例えば書換検出データベース７５が図６に示した構成である場合、サーバ装置７は、書換検出装置５からの問い合わせに係る車種及びＥＣＵ種別に応じて記憶されたＥＣＵ２の記憶内容から、問い合わせにて指定された記憶領域に対応する記憶内容を読み出す。サーバ装置７は、書換検出データベース７５から読み出した記憶内容と、書換検出装置５からの問い合わせに係るランダムシードとに基づいてハッシュ値を算出し、算出したハッシュ値を期待値として書換検出装置５へ送信する。
【００５６】
書換検出装置５は、ＥＣＵ２から受信したハッシュ値と、サーバ装置７から受信した期待値とを比較する。書換検出装置５は、ハッシュ値及び期待値が一致する場合、ＥＣＵ２の記憶部２２に記憶されたプログラム及びデータに対する不正な書き換えが行われていないと判定する。これに対してハッシュ値及び期待値が一致しない場合、書換検出装置５は、ＥＣＵ２のプログラム及びデータに対する不正な書き換えが行われたと判定する。書換検出装置５は、書換検出処理の処理結果として、不正な書き換えが行われていたか否かを表示部５４に表示する。
【００５７】
また書換検出装置５は、ＥＣＵ２へランダムシードを送信してからハッシュ値を受信するまでの時間を計測し、計測した時間に基づく書換の有無を行ってもよい。この場合、書換検出装置５は、計測した時間が閾値を超えるか否かを判定し、計測時間が閾値を超える場合、ＥＣＵ２のプログラム及びデータに対する不正な書き換えが行われたと判定する。なお判定に用いる閾値は、書換検出装置５及びＥＣＵ２の通信速度、及び、ＥＣＵ２の処理能力等を考慮し、本システムの設計段階などにおいて予め決定しておく。
【００５８】
＜記憶領域決定方法＞
ＥＣＵ２のハッシュ値算出部２４は、書換検出装置５からのランダムシードに応じてハッシュ値を算出する際に、算出処理の対象とすべき記憶部２２の記憶領域を決定する処理を行う。図９は、実施の形態１に係るＥＣＵ２の記憶領域決定方法を説明するための模式図である。ハッシュ値算出部２４による記憶領域の決定方法は、初めてハッシュ値を算出する場合と、２回目以降にハッシュ値を算出する場合とで異なる。本実施の形態において、ハッシュ値算出の対象とする初回の記憶領域は、書換検出装置５が決定し、ＥＣＵ２へ通知する。ＥＣＵ２のハッシュ値算出部２４は、ハッシュ値の算出を始めて行う場合（例えば、前回のハッシュ値算出に関する情報が記憶されていない場合など）、書換検出装置５からランダムシードと共にハッシュ値算出の処理対象とする記憶領域を指定した情報を受信し、指定された記憶領域をハッシュ値算出処理の対象とする。図９において書換検出装置５は、例えば「Ｘ番地からＹ番地までＺ番地間隔で」のように、不連続な複数の領域を初回の記憶領域として指定している。よってＥＣＵ２のハッシュ値算出部２４は、記憶部２２のＸ番地〜Ｙ番地、Ｘ＋Ｚ番地〜Ｙ＋Ｚ番地、Ｘ＋２Ｚ番地〜Ｙ＋２Ｚ番地、…、をハッシュ値算出の処理対象の記憶領域とする。なおＸ、Ｙ、Ｚの値は、予め定められたものであってもよく、その都度ランダムに書換検出装置５が決定してもよい。ＥＣＵ２のハッシュ値算出部２４は、指定された記憶領域の記憶内容と受信したランダムシードとに基づいてハッシュ値を算出すると共に、ハッシュ値算出に用いた記憶領域に関する情報（本例では、Ｘ，Ｙ，Ｚの値など）を記憶しておく。
【００５９】
ＥＣＵ２のハッシュ値算出部２４は、前回のハッシュ値算出に用いた記憶領域に関する情報を記憶しているか否かに応じて、今回の処理が初回であるか２回目以降であるかを判断することができる。ハッシュ値算出部２４は、２回目以降にハッシュ値を算出する場合、前回のハッシュ値算出に用いた記憶領域に基づいて、今回のハッシュ値算出処理に用いる記憶領域を決定する。ハッシュ値算出部２４は、記憶領域の決定に使用する所定値αを予め記憶している。ハッシュ値算出部２４は、前回の記憶領域を示すアドレスに対してα番地を加算したアドレスを、今回のハッシュ値算出の処理対象の記憶領域とする。図９に示す例では、ハッシュ値算出部２４は、記憶部２２のＸ＋α〜Ｙ＋α、Ｘ＋α＋Ｚ〜Ｙ＋α＋Ｚ、Ｘ＋α＋２Ｚ〜Ｙ＋α＋２Ｚ、…、を２回目のハッシュ値算出の処理対象の記憶領域とする。ハッシュ値算出部２４は、２回目の記憶領域に関する情報を記憶しておき、同様に３回目は記憶部２２のＸ＋２α〜Ｙ＋２α、Ｘ＋２α＋Ｚ〜Ｙ＋２α＋Ｚ、Ｘ＋２α＋２Ｚ〜Ｙ＋２α＋２Ｚ、…、をハッシュ値算出の処理対象の記憶領域とする。
【００６０】
また書換検出装置５は、２回目以降に算出されたハッシュ値について期待値をサーバ装置７に問い合わせるため、２回目以降のハッシュ値がいずれの記憶領域に基づいて算出されたものであるかを知る必要がある。このため書換検出装置５は、ＥＣＵ２の所定値αと、このＥＣＵ２についてハッシュ値算出が何回目であるかとを記憶している。所定値αは、例えば書換検出装置５が予め記憶していてもよく、また例えば１回目のハッシュ値算出の際などにＥＣＵ２から取得してもよく、また例えば書換検出装置５が所定値αを決定して初回の記憶領域指定情報と共にＥＣＵ２へ送信してもよい。書換検出装置５は、記憶した所定値αと何回目のハッシュ値算出であるかとに基づいて、今回のハッシュ値算出の処理対象となる記憶領域を特定し、この記憶領域を示す情報及びランダムシード等をサーバ装置７に送信して期待値を問い合わせる。
【００６１】
＜フローチャート＞
次に、本実施の形態に係る書換検出システムが行う書換検出処理を、フローチャートを用いて説明する。なお本説明においては、書換検出データベースとして図６に示した構成を採用しているものとする。図１０は、書換検出装置５が行う書換検出処理の手順を示すフローチャートである。書換検出装置５の処理部５１は、乱数発生アルゴリズムに基づいてランダムシードを生成する（ステップＳ１）。処理部５１は、ランダムシードを送信するＥＣＵ２によるハッシュ値算出の処理が初回であるか否かを判定する（ステップＳ２）。初回の処理である場合（Ｓ２：ＹＥＳ）、処理部５１は、ステップＳ１にて生成したランダムシードと共に、ハッシュ値算出の処理対象とすべき記憶領域を指定する情報を、有線通信部５５にて対象のＥＣＵ２へ送信して（ステップＳ３）、ステップＳ６へ処理を進める。
【００６２】
今回のハッシュ値算出処理が初回ではなく、２回目以降の処理である場合（Ｓ２：ＮＯ）、処理部５１は、ステップＳ１にて生成したランダムシードを対象のＥＣＵ２へ送信する（ステップＳ４）。また処理部５１は、このＥＣＵ２に関して記憶した所定値αとハッシュ値算出処理を行った回数とを取得し、所定値α及び回数に基づいて今回のハッシュ値算出の処理対象となるＥＣＵ２の記憶部２２の記憶領域を特定し（ステップＳ５）、ステップＳ６へ処理を進める。
【００６３】
処理部５１は、ランダムシードに対して処理対象のＥＣＵ２から送信されるハッシュ値を、有線通信部５５にて受信したか否かを判定し（ステップＳ６）、受信していない場合は（Ｓ６：ＮＯ）、ハッシュ値を受信するまで待機する。ハッシュ値を受信した場合（Ｓ６：ＹＥＳ）、処理部５１は、車両情報及びＥＣＵ２の識別情報と、ステップＳ１にて生成したランダムシードと、ステップＳ３にて指定した記憶領域又はステップＳ５にて特定した記憶領域とをサーバ装置７へ送信し、ＥＣＵ２から受信したハッシュ値に対する期待値を問い合わせる（ステップＳ７）。処理部５１は、問い合わせに対してサーバ装置７から送信される期待値を受信したか否かを判定し（ステップＳ８）、期待値を受信していない場合には（Ｓ８：ＮＯ）、期待値を受信するまで待機する。
【００６４】
サーバ装置７から期待値を受信した場合（Ｓ８：ＹＥＳ）、処理部５１は、ステップＳ６にて受信したハッシュ値と、ステップＳ８にて受信した期待値とが一致するか否かを判定する（ステップＳ９）。ハッシュ値及び期待値が一致する場合（Ｓ９：ＹＥＳ）、処理部５１は、不正な書き換えがなされていないと判定し（ステップＳ１０）、その旨を表示部５４にて通知して処理を終了する。ハッシュ値及び期待値が一致しない場合（Ｓ９:ＮＯ）、処理部５１は、不正な書き換えがなされていると判定し（ステップＳ１１）、その旨を表示部５４にて通知して処理を終了する。
【００６５】
図１１は、ＥＣＵ２が行う書換検出処理の手順を示すフローチャートである。ＥＣＵ２の処理部２１は、書換検出装置５が送信するランダムシードを通信部２３にて受信したか否かを判定し（ステップＳ２１）、ランダムシードを受信していない場合は（Ｓ２１：ＮＯ）、ランダムシードを受信するまで待機する。ランダムシードを受信した場合（Ｓ２１：ＹＥＳ）、処理部２１のハッシュ値算出部２４は、前回のハッシュ値算出処理に関する情報が記憶されているか否かなどに基づき、ハッシュ値算出処理が初回であるか否かを判定する（ステップＳ２２）。初回の処理である場合（Ｓ２２：ＹＥＳ）、ハッシュ値算出部２４は、ランダムシードと共に書換検出装置５から送信された記憶領域の指定情報を取得し（ステップＳ２３）、ステップＳ２５へ処理を進める。初回の処理でない場合（Ｓ２２：ＮＯ）、ハッシュ値算出部２４は、前回のハッシュ値算出処理に用いた記憶領域に関する情報と、所定値αとに基づいて、今回のハッシュ値算出の処理対象とする記憶領域を決定し（ステップＳ２４）、ステップＳ２５へ処理を進める。
【００６６】
処理部２１のハッシュ値算出部２４は、書換検出装置５から受信したランダムシードと、ステップＳ２３にて取得した情報にて指定された記憶領域又はステップＳ２４にて決定した記憶領域の記憶内容とに基づき、所定のハッシュ関数を用いてハッシュ値の算出を行う（ステップＳ２５）。処理部２１は、ハッシュ値算出部２４が算出したハッシュ値を、通信部２３にて書換検出装置５へ送信し（ステップＳ２６）、処理を終了する。
【００６７】
図１２は、サーバ装置７が行う書換検出処理の手順を示すフローチャートである。サーバ装置７の処理部７１は、書換検出装置５からの期待値の問い合わせを、通信部７３にて受信したか否かを判定し（ステップＳ３１）、受信していない場合には（Ｓ３１：ＮＯ）、問い合わせを受信するまで待機する。書換検出装置５からの問い合わせを受信した場合（Ｓ３１：ＹＥＳ）、処理部７１は、問い合わせに含まれる車両情報、ＥＣＵ種別情報及び記憶領域の指定情報等に基づいて、記憶部７２の書換検出データベース７５から指定された記憶領域の記憶内容を取得する（ステップＳ３２）。次いで処理部７１は、書換検出装置５からの問い合わせに含まれるランダムシードと、ステップＳ３２にて取得した記憶内容とに基づいて、ハッシュ値の算出を行う（ステップＳ３３）。処理部７１は、算出したハッシュ値を期待値として書換検出装置５へ送信し（ステップＳ３４）、処理を終了する。
【００６８】
＜まとめ＞
以上の構成の実施の形態１に係る書換検出システムは、書換検出装置５がランダムシードを生成してＥＣＵ２へ送信し、ＥＣＵ２は、受信したランダムシードと記憶部５２の記憶内容（プログラム又はデータ）とに基づき、所定のハッシュ関数を用いてハッシュ値を算出して書換検出装置５へ送信する。このときにＥＣＵ２は、記憶部２２の記憶領域のうち、ハッシュ値算出の処理対象とする記憶領域を自ら決定し、ハッシュ値の算出を行う。書換検出装置５は、ＥＣＵ２から受信したハッシュ値の正否を判定し、プログラム又はデータに対する不正な書き換えが行われたか否かを判定する。即ち書換検出装置５は、ハッシュ値が正しいものである場合には不正な書き換えが行われていないと判断し、ハッシュ値が正しいものでない場合には不正な書き換えが行われたと判断することができる。
【００６９】
これにより、ＥＣＵ２のプログラム又はデータに対する不正な書き換えを書換検出装置５が検出し、不正な書き換えがなされたＥＣＵ２の動作停止、修理又は交換等の手当てを適切に行うことが可能となる。２回目以降の処理について、ＥＣＵ２がハッシュ値算出の処理対象とする記憶領域を自ら決定することによって、書換検出装置５は記憶領域を指定する情報をＥＣＵ２へ送信する必要がなく、書換検出装置５及びＥＣＵ２の間の通信量を低減できる。またＥＣＵ２はランダムシードの受信により、記憶領域を指定する情報の受信を待つことなく、ハッシュ値算出の処理を開始することができるため、処理時間を短縮することができる。
【００７０】
またＥＣＵ２のハッシュ値算出部２４は、前回のハッシュ値算出の対象とした記憶領域に対して、所定アドレス値αだけ離隔した記憶領域を、今回の処理対象の記憶領域とする。書換検出装置５も同じ所定アドレス値αを記憶しておき、ＥＣＵ２がいずれの記憶領域を対象としてハッシュ値を算出したのかを特定する。これによりＥＣＵ２は、容易且つ確実にハッシュ値算出の処理対象とすべき記憶領域を決定することができる。
【００７１】
また書換検出装置５による書換検出は、例えば車両１の車検の際など、定期的に繰り返して行われる。ＥＣＵ２の書換検出を初めて行う場合、書換検出装置５は、ハッシュ値算出の処理対象とすべき初回の記憶領域を指定する情報をＥＣＵ２へ送信する。ＥＣＵ２は、書換検出装置５から記憶領域を指定する情報を受信した場合には、指定された記憶領域を処理対象としてハッシュ値の算出を行い、それ以外の場合には所定アドレス値αに基づくハッシュ値の算出を行う。これによりＥＣＵ２は、初めてハッシュ値を算出する場合に、処理対象とする記憶領域を確実に決定することができ、ハッシュ値の算出を確実に行うことができる。
【００７２】
また書換検出装置５からの問い合わせに応じてサーバ装置７が期待値を送信し、書換検出装置５がサーバ装置７から受信した期待値とＥＣＵ２から受信したハッシュ値とが一致するか否かに応じて書換の検出を行う。例えば書換検出装置５がハッシュ値の期待値を記憶しておく構成とした場合には、書換検出装置５の期待値が不正に書き換えられる虞があるが、サーバ装置７から期待値を取得する構成とすることによってこのような期待値の不正な書き換えを防止できる。
【００７３】
また書換検出装置５は、車両１の車内ネットワーク３のコネクタ４に通信ケーブル６を介して着脱可能な構成である。このような書換検出装置５を例えば車両１のディーラ又は整備工場等に設け、車両１の車検、定期検査又は修理等の際にＥＣＵ２のプログラム又はデータの不正書換検出を行うことができる。また例えばレンタカー又はカーシェアリング等の車両１の場合、車両返却後に書換検出装置５にて不正書換検出を行うことができる。
【００７４】
なお本実施の形態においては、初回のハッシュ値算出の処理対象とする記憶領域に関する情報を書換検出装置５がＥＣＵ２へ送信する構成としたが、これに限るものではない。例えばＥＣＵ２は初回のハッシュ値算出処理は記憶部２２の所定領域（先頭領域など）を処理対象とし、書換検出装置５が記憶領域を指定しない構成としてもよい。また書換検出装置５が記憶領域を決定するための所定アドレス値αとハッシュ値算出処理を行った回数とを記憶しておき、これらの情報から今回の処理対象の記憶領域を特定する構成としたが、これに限るものではない。例えばＥＣＵ２が算出したハッシュ値と共に、処理対象とした記憶領域に関する情報を書換検出装置５へ送信する構成としてもよい。
【００７５】
また、書換検出装置５と車両１との間の通信を、通信ケーブル６を介した有線通信にて行う構成としたが、これに限るものではなく、無線ＬＡＮなどの無線通信を行う構成としてもよい。また書換検出装置５は、無線通信部５６にてサーバ装置７との通信を行う構成としたが、これに限るものではなく、有線通信によりサーバ装置７との通信を行う構成としてもよい。また書換検出装置５を、車両１の車内ネットワーク３のコネクタ４に接続する構成としたが、これに限るものではなく、例えば車両１に搭載されたゲートウェイなどの装置に書換検出装置５を接続し、書換検出装置５がゲートウェイを介して車内ネットワーク３に接続されたＥＣＵ２との通信を行う構成としてもよい。
【００７６】
また、書換検出装置５は、ＥＣＵ２からハッシュ値を取得した後で、サーバ装置７から期待値を取得する構成としたが、これに限るものではなく、期待値を取得した後でハッシュ値を取得してもよく、ハッシュ値及び期待値を並列的に取得してもよい。また、書換検出装置５は、車両１に搭載された複数のＥＣＵ２に対して、不正書換の検出を１つずつ順番に行う構成としたが、これに限るものではない。書換検出装置５は、例えばランダムシードを複数のＥＣＵ２に対してブロードキャストにより一斉送信し、複数のＥＣＵ２からハッシュ値を取得して、複数のＥＣＵ２についての書換検出処理を同時的に行ってもよい。
【００７７】
また、書換検出データベース７５をサーバ装置７が備えるのではなく、書換検出装置５が備える構成としてもよい。即ち、書換検出システムがサーバ装置７を備えず、ハッシュ値に対する期待値を書換検出装置５が記憶又は算出する構成としてもよい。また、本実施の形態においては、車両１に搭載されたＥＣＵ２のプログラム又はデータに対する書換検出を行う書換検出システムを例に説明を行ったが、これに限るものではなく、例えば飛行機又は船舶等のその他の移動体に搭載された情報処理装置のプログラム又はデータに対する書換検出を行う構成としてもよい。
【００７８】
また図９に示した記憶領域は一例であって、これに限るものではない。図示の例では「Ｘ番地からＹ番地までＺ番地間隔で」のように、不連続な複数の領域を初回の記憶領域として指定しているが、例えば「Ｘ番地からＹ番地まで」のように１つの連続領域を指定する方法を採用してもよい。また例えば「Ｘ１番地からＹ１番地まで、Ｘ２番地からＹ２番地まで、…、Ｘｎ番地からＹｎ番地まで」のように、先頭位置及び末尾位置を複数指定して不連続な複数の領域を指定する方法を採用してもよい。いずれの場合であっても、ＥＣＵ２は、初回の記憶領域に対して所定アドレス値αを加算した記憶領域を２回目の記憶領域として決定することができる。
【００７９】
また書換検出装置５は、このようなＥＣＵ２の記憶部２２の一部分に応じたハッシュ値の取得を１回行い、１つのハッシュ値に基づいて書換検出を行ってもよい。ただし書換検出装置５は、ＥＣＵ２へのランダムシードの送信を複数回行うことによって記憶部２２の複数の記憶領域を対象とした複数のハッシュ値を取得し、複数のハッシュ値に基づいて書換検出を行ってもよい。このように複数回のハッシュ値取得を行うことによって、書換検出装置５はより精度よく書換検出を行うことができる。このような場合であっても、書換検出装置５は、初回以外のハッシュ値取得について、記憶領域を指定する情報を送信する必要はない。
【００８０】
また、書換検出装置５がランダムシードを生成する構成としたが、これに限るものではない。例えばサーバ装置７がランダムシードを生成する構成としてもよい。この構成の場合、書換検出装置５は、サーバ装置７に対してランダムシード及び期待値の送信を依頼する。この依頼に応じてサーバ装置７は、ランダムシードを作成し、対応する期待値を書換検出データベース７５に基づいて取得又は算出し、ランダムシード及び期待値を書換検出装置５へ送信する。書換検出装置５は、サーバ装置７から受信したランダムシードをＥＣＵ２へ送信し、このランダムシードに基づいて算出されたハッシュ値をＥＣＵ２から受信し、サーバ装置７からの期待値とＥＣＵ２からのハッシュ値とを比較して不正な書き換えを検出する。また初回の記憶領域を指定する情報についても、サーバ装置７が生成する構成としてよい。
【００８１】
また、書換検出装置５を車両１の車内ネットワーク３に対して着脱可能な構成としたが、これに限るものではない。例えば車両１に搭載されたゲートウェイ又はカーナビゲーション装置等の機器に書換検出処理を行う機能を設けてもよい。また例えば車両１に搭載された複数のＥＣＵ２のうちの１つ又は複数が、書換検出処理を行う機能を有する構成としてもよい。
【００８２】
（実施の形態２）
実施の形態２に係る書換検出システムは、ＥＣＵ２によるハッシュ値算出の処理対象とする記憶領域の決定方法が異なる。図１３は、実施の形態２に係るＥＣＵ２の記憶領域決定方法を説明するための模式図である。実施の形態２に係るＥＣＵ２は、記憶部２２の記憶領域を前半部分及び後半部分に２分して、交互にハッシュ値算出の処理対象とする。例えばＥＣＵ２は、初めて書換検出装置５からランダムシードを受信した場合、記憶部２２の前半部分をハッシュ値算出の処理対象とする。次に書換検出装置５からランダムシードを受信した場合、ＥＣＵ２は、記憶部２２の後半部分をハッシュ値算出の処理対象とする。このように、ＥＣＵ２は、書換検出装置５からランダムシードを受信する都度、ハッシュ値算出の処理対象を記憶部２２の前半部分と後半部分とで切り替える。
【００８３】
なお実施の形態２に係る書換検出システムにおいては、初回のハッシュ値算出の処理対象とすべき記憶領域を、書換検出装置５が前半部分又は後半部分のいずれかを選択して指定する構成としてもよく、初回は前半部分などに予め定めておき、書換検出装置５が指定しない構成としてもよい。いずれの構成であっても、書換検出装置５は、ハッシュ値の算出が何回目であるかを記憶しておく必要がある。またサーバ装置７が記憶部７２に記憶する書換検出データベース７５は、図７に示した構成が好適である。
【００８４】
以上の構成の実施の形態２に係る書換検出システムは、ＥＣＵ２が記憶部２２の記憶領域を２分して交互にハッシュ値算出の処理対象とする構成とすることにより、記憶領域の決定を容易且つ確実に行うことができる。なお本実施の形態においては、記憶部２２の記憶領域を２分する構成としたが、これに限るものではなく、記憶部２２を３つ以上に分割し、分割された記憶領域を順番に処理対象とする構成としてもよい。
【００８５】
また実施の形態２に係る書換検出システムのその他の構成は、実施の形態１に係る書換検出システムの構成と同様であるため、同様の箇所には同じ符号を付して詳細な説明を省略する。
【００８６】
（実施の形態３）
上述の実施の形態１，２に係る書換検出システムは、初回の記憶領域を書換検出装置５が指定し、２回目以降の記憶領域をＥＣＵ２が決定する構成であった。これに対して実施の形態３に係る書換検出システムは、毎回のハッシュ値算出の処理対象の記憶領域を書換検出装置５が指定する構成である。図１４は、実施の形態３に係る書換検出システムによる記憶領域決定方法を説明するための模式図である。なお、実施の形態３に係る書換検出システムによる初回の記憶領域の決定方法は、実施の形態１に係る書換検出システムと同様である。即ち実施の形態３に係る書換検出装置５は、ＥＣＵ２に対する書換検出の処理を初めて行う場合、ランダムシードと共に処理対象とする記憶領域を指定する情報をＥＣＵ２へ送信する。ＥＣＵ２は、ランダムシードと共に受信した情報にて指定された記憶領域を対象としてハッシュ値を算出し、算出したハッシュ値を書換検出装置５へ送信する。
【００８７】
ＥＣＵ２からハッシュ値を受信した書換検出装置５は、サーバ装置７に対する問い合わせを行って期待値を取得し、ＥＣＵ２のハッシュ値とサーバ装置７の期待値とが一致するか否かを判定することによって、ＥＣＵ２の書換検出を行う。実施の形態３に係る書換検出装置５は、ＥＣＵ２からのハッシュ値を受信した後、例えば期待値の取得と並行して又は前後して、ＥＣＵ２が次回のハッシュ値算出の処理対象とすべき記憶領域を決定し、次回の記憶領域を指定する情報をＥＣＵ２へ送信する。書換検出装置５から次回の記憶領域指定情報を受信したＥＣＵ２は、受信した情報を記憶しておく。なおＥＣＵ２は、次回の記憶領域指定情報を図２には図示しないメモリなどに記憶してよい。またＥＣＵ２は、次回の記憶領域指定情報を記憶部２２に記憶する構成としてもよいが、この場合には次回の記憶領域指定情報を記憶する記憶領域を書換検出処理の対象外とする必要がある。
【００８８】
２回目以降の書換検出処理において、実施の形態３に係る書換検出装置５は、ランダムシードを生成してＥＣＵ２へ送信し、このときに記憶領域を指定する情報は送信しない。書換検出装置５からのランダムシードを受信したＥＣＵ２は、前回の処理にて記憶した記憶領域指定情報を読み出し、読み出した情報にて指定された記憶領域をハッシュ値算出の処理対象とする。ＥＣＵ２は算出したハッシュ値を書換検出装置５へ送信し、その後に書換検出装置５から送信される次回の記憶領域指定情報を受信して記憶する。なお書換検出装置５もＥＣＵ２へ送信した次回の記憶領域指定情報を記憶しておき、次回の検出処理においてサーバ装置７への問い合わせに用いる。
【００８９】
図１５は、実施の形態３に係る書換検出装置５が行う書換検出処理の手順を示すフローチャートである。なお本フローチャートにおいては、初回の検出処理についての手順を省略してある。実施の形態３に係る書換検出装置５の処理部５１は、ランダムシードを生成し（ステップＳ５１）、生成したランダムシードを対象のＥＣＵ２へ送信する（ステップＳ５２）。また処理部５１は、前回の書換検出処理にて記憶した記憶領域指定情報を読み出し（ステップＳ５３）、読み出した情報に基づいて今回のハッシュ値算出の処理対象となるＥＣＵ２の記憶部２２の記憶領域を特定する（ステップＳ５４）。
【００９０】
処理部５１は、処理対象のＥＣＵ２から送信されるハッシュ値を有線通信部５５にて受信したか否かを判定し（ステップＳ５５）、受信していない場合は（Ｓ５５：ＮＯ）、ハッシュ値を受信するまで待機する。ハッシュ値を受信した場合（Ｓ５５：ＹＥＳ）、処理部５１は、受信したハッシュ値に対する期待値をサーバ装置７に問い合わせる（ステップＳ５６）。処理部５１は、問い合わせに対してサーバ装置７から送信される期待値を受信したか否かを判定し（ステップＳ５７）、期待値を受信していない場合には（Ｓ５７：ＮＯ）、期待値を受信するまで待機する。
【００９１】
サーバ装置７から期待値を受信した場合（Ｓ５７：ＹＥＳ）、処理部５１は、ステップＳ５５にて受信したハッシュ値と、ステップＳ５７にて受信した期待値とが一致するか否かを判定する（ステップＳ５８）。ハッシュ値及び期待値が一致する場合（Ｓ５８：ＹＥＳ）、処理部５１は、不正な書き換えがなされていないと判定し（ステップＳ５９）、ステップＳ６１へ処理を進める。ハッシュ値及び期待値が一致しない場合（Ｓ５８:ＮＯ）、処理部５１は、不正な書き換えがなされていると判定し（ステップＳ６０）、ステップＳ６１へ処理を進める。
【００９２】
次いで処理部５１は、次回の書換検出処理にてハッシュ値算出の処理対象とすべきＥＣＵ２の記憶部２２の記憶領域を指定する情報を生成し、生成した次回の記憶領域指定情報をＥＣＵ２へ送信する（ステップＳ６１）。また処理部５１は、生成した次回の記憶領域指定情報を記憶部５２に記憶し（ステップＳ６２）、書込検出処理を終了する。
【００９３】
図１６は、実施の形態３に係るＥＣＵ２が行う書換検出処理の手順を示すフローチャートである。実施の形態３に係るＥＣＵ２の処理部２１は、書換検出装置５が送信するランダムシードを通信部２３にて受信したか否かを判定し（ステップＳ７１）、ランダムシードを受信していない場合は（Ｓ７１：ＮＯ）、ランダムシードを受信するまで待機する。ランダムシードを受信した場合（Ｓ７１：ＹＥＳ）、処理部２１のハッシュ値算出部２４は、前回の書換検出処理にて書換検出装置５から受信した次回の記憶領域指定情報が記憶されているか否かなどに基づき、ハッシュ値算出処理が初回であるか否かを判定する（ステップＳ７２）。初回の処理である場合（Ｓ７２：ＹＥＳ）、ハッシュ値算出部２４は、ランダムシードと共に書換検出装置５から送信された記憶領域の指定情報を取得し（ステップＳ７３）、ステップＳ７５へ処理を進める。初回の処理でない場合（Ｓ７２：ＮＯ）、ハッシュ値算出部２４は、記憶された記憶領域指定情報を読み出し（ステップＳ７４）、ステップＳ７５へ処理を進める。
【００９４】
処理部２１のハッシュ値算出部２４は、書換検出装置５から受信したランダムシードと、ステップＳ７３にて取得した情報又はステップＳ７４にて読み出した情報にて指定された記憶領域の記憶内容とに基づき、所定のハッシュ関数を用いてハッシュ値の算出を行う（ステップＳ７５）。処理部２１は、ハッシュ値算出部２４が算出したハッシュ値を、通信部２３にて書換検出装置５へ送信する（ステップＳ７６）。
【００９５】
次いで処理部２１は、ハッシュ値を受信した書換検出装置５から送信される次回の記憶領域指定情報を受信したか否かを判定する（ステップＳ７７）。次回の記憶領域指定情報を受信していない場合（Ｓ７７：ＮＯ）、処理部２１は、この情報を受信するまで待機する。次回の記憶領域指定情報を受信した場合（Ｓ７７：ＹＥＳ）、処理部２１は、受信した次回の記憶領域指定情報を記憶し（ステップＳ７８）、処理を終了する。
【００９６】
以上の構成の実施の形態３に係る書換検出システムは、書換検出装置５がＥＣＵ２からハッシュ値を受信した後、次回のハッシュ値算出の処理対象とすべき記憶領域を指定する情報をＥＣＵ２へ送信する。ＥＣＵ２は、書換検出装置５からの記憶領域指定情報を受信して記憶しておき、次回のハッシュ値算出を行う際に記憶しておいた記憶領域指定情報に指定された記憶領域を処理対象として算出を行う。この構成では、書換検出装置５からＥＣＵ２へ記憶領域を指定する情報を毎回送信する必要があるが、次回の記憶領域指定情報の送信はＥＣＵ２からのハッシュ値の受信後から次回の検出処理を行うまでの任意のタイミングで行うことができる。よって記憶領域指定情報の送信を、例えばネットワークの負荷が少ない場合などを選んで行うことが可能である。またＥＣＵ２は、書換検出装置５からランダムシードを受信した場合、記憶領域を指定する情報の受信を待つことなく、記憶してある記憶領域指定情報に基づいて処理対象の記憶領域を決定して播種値を算出することができるため、処理時間を短縮することができる。
【００９７】
なお本実施の形態においては、図１５のフローチャートにおいて、ハッシュ値及び期待値の一致／不一致に応じた書換検出を行った後で、書換検出装置５からＥＣＵ２へ次回の記憶領域指定情報を送信する構成としたが、情報送信のタイミングはこれに限らない。書換検出装置５による次回の記憶領域指定情報の送信は、ＥＣＵ２から今回のハッシュ値を受信した後から次回の書換検出処理の開始までのいずれのタイミングで行ってもよい。
【００９８】
また実施の形態３に係る書換検出システムのその他の構成は、実施の形態１に係る書換検出システムの構成と同様であるため、同様の箇所には同じ符号を付して詳細な説明を省略する。
【符号の説明】
【００９９】
１  車輌
２  ＥＣＵ（情報処理装置）
３  車内ネットワーク（ネットワーク）
４  コネクタ
５  書換検出装置
６  通信ケーブル
７  サーバ装置
９  ネットワーク
２１  処理部（記憶領域決定手段、ハッシュ値算出手段、記憶領域指定情報記憶手段）
２２  記憶部
２３  通信部
２４  ハッシュ値算出部（ハッシュ値算出手段）
５１  処理部（種情報送信手段、ハッシュ値受信手段、ハッシュ値判定手段、情報送信手段）
５２  記憶部
５３  操作部
５４  表示部
５５  有線通信部
５６  無線通信部
７１  処理部
７２  記憶部
７３  通信部
７５  書換検出データベース
【図１】
0006342281.tif 000002
【図２】
0006342281.tif 000003
【図３】
0006342281.tif 000004
【図４】
0006342281.tif 000005
【図５】
0006342281.tif 000006
【図６】
0006342281.tif 000007
【図７】
0006342281.tif 000008
【図８】
0006342281.tif 000009
【図９】
0006342281.tif 000010
【図１０】
0006342281.tif 000011
【図１１】
0006342281.tif 000012
【図１２】
0006342281.tif 000013
【図１３】
0006342281.tif 000014
【図１４】
0006342281.tif 000015
【図１５】
0006342281.tif 000016
【図１６】
0006342281.tif 000017