(58)【調査した分野】(Int.Cl.,DB名)
プログラム又はデータを記憶した記憶部、該記憶部に記憶されたプログラム又はデータに基づく処理を行う処理部、並びに、ネットワークを介して他の装置との通信を行う通信部を有する情報処理装置に対して、前記記憶部に記憶されたプログラム又はデータの書き換えを検出する書換検出システムであって、
前記ネットワークを介して前記情報処理装置へハッシュ値算出のための種情報を送信する種情報送信手段、該種情報送信手段が送信した種情報に応じて前記情報処理装置から送信されるハッシュ値を受信するハッシュ値受信手段、並びに、該ハッシュ値受信手段が受信したハッシュ値の正否を判定するハッシュ値判定手段を有し、該ハッシュ値判定手段の判定結果に応じて書き換えを検出する書換検出装置を備え、
前記書換検出装置は、前記種情報送信手段による種情報の送信を反復実行し、書換検出を繰り返し行うようにしてあり、
前記情報処理装置は、少なくとも2回目以降のハッシュ値算出時において前記書換検出装置から指定されることなく、前記書換検出装置と共通の算法により、前記記憶部から処理対象とすべき記憶領域を自律的に決定する記憶領域決定手段と、前記種情報送信手段が送信した種情報及び前記記憶領域決定手段が決定した記憶領域に記憶したプログラム又はデータに基づくハッシュ値を算出するハッシュ値算出手段を有し、該ハッシュ値算出手段が算出したハッシュ値を前記書換検出装置へ送信するようにしてあり、
前記情報処理装置及び前記書換検出装置は共通の前記処理対象とすべき記憶領域を各々で自ら決定できるように前記共通の算法をそれぞれ記憶していること
を特徴とする書換検出システム。
【発明を実施するための形態】
【0023】
(実施の形態1)
<システム構成>
以下、本発明をその実施の形態を示す図面に基づき具体的に説明する。
図1は、本実施の形態に係る書換検出システムの構成を示す模式図である。図において1は車両であり、車両1には例えばボディECU及びエンジンECU等の種々のECU2が搭載されている。車両1に搭載された複数のECU2は、CANなどの車内ネットワーク3を介して接続され、相互に情報の送受信を行うことができる。また車両1には、車内ネットワーク3に対して他の装置を接続するためのコネクタ4が設けられている。
【0024】
本実施の形態に係る書換検出システムは、車両1に搭載されたECU2のプログラム又はデータに対する不正な書き換えが行われたことを検出する書換検出装置5を備えている。書換検出装置5は、可搬型の装置であり、例えば車両1のディーラ又は修理工場等に保管される。書換検出装置5は、車両1に設けられたコネクタ4に通信ケーブル6を介して接続されることにより、車内ネットワーク3を介してECU2との通信が可能となる。書換検出装置5は、コネクタ4に通信ケーブル6が接続された状態で、ECU2のプログラム又はデータに対する不正な書き換えの検出処理を行う。
【0025】
また書換検出装置5は、無線LAN(Local Area Network)又は携帯電話網等を利用した無線通信を行う機能を有している。本実施の形態において書換検出装置5はこの無線通信機能を利用し、インターネットなどのネットワーク9を介してサーバ装置7との通信を行う。サーバ装置7は、例えば車両1の製造会社又は販売会社等が管理・運営する装置である。サーバ装置7は、書換検出装置5による書換検出処理に必要な情報を記憶しており、書換検出処理を行う際に与えられる書換検出装置5からの要求に応じて、必要な情報を書換検出装置5へ送信する。
【0026】
図2は、ECU2の構成を示すブロック図である。ECU2は、処理部21、記憶部22及び通信部23等を備えて構成されている。処理部21は、CPU(Central Processing Unit)などの演算処理装置を用いて構成されている。処理部21は、記憶部22に記憶されたプログラムを読み出して実行することにより、車両1に係る種々の情報処理を行う。
【0027】
記憶部22は、フラッシュメモリ又はEEPROM(Electrically Erasable Programmable Read Only Memory)等の不揮発性でデータ書き換え可能なメモリ素子を用いて構成されている。記憶部22は、処理部21が実行するプログラムと、これにより行われる処理に必要な種々のデータとが記憶されている。本実施の形態においては、記憶部22はROMとして用いられ、処理部21の処理により記憶部22に記憶されたプログラム又はデータが書き換えられることはないものとする。ただしプログラムのバージョンアップなどによる書き換えを行うことは可能である。
【0028】
通信部23は、例えばCANなどの通信プロトコルに従って、車内ネットワーク3を介した他のECU2との通信を行う。通信部23は、処理部21から与えられた送信用の情報を、通信プロトコルに従った送信信号に変換し、車内ネットワーク3を構成する通信線に変換した信号を出力することで他のECU2への情報送信を行う。通信部23は、車内ネットワーク3の通信線の電位をサンプリングすることによって、他のECU2が出力した信号を取得し、この信号を通信プロトコルに従って2値の情報に変換することで情報の受信を行い、受信した情報を処理部21へ与える。
【0029】
また本実施の形態においてECU2の処理部21は、書換検出装置5からの指示に応じてハッシュ値を算出するハッシュ値算出部24を有している。ハッシュ値算出部24は、書換検出装置5から与えられたランダムシード(種情報)と、記憶部22に記憶されたプログラム又はデータとに基づいて、所定のハッシュ算出アルゴリズム(ハッシュ関数)によりハッシュ値を算出する。ハッシュ値算出部24は、ソフトウェアとして実現されるものであってもよく、ハードウェアとして実現されるものであってもよい。ハッシュ値の算出方法の詳細については後述する。
【0030】
図3は、ECU2の記憶部22の構成を示す模式図である。図示の例では、記憶部22はアドレス(番地)が0000h〜FFFFhで表される記憶領域を有している。記憶部22には、処理部21にて実行される2つのプログラム(プログラム1及びプログラム2)と、各プログラムの実行にそれぞれ必要な2種のデータ(データ1及びデータ2)とが記憶されている。記憶部22には、アドレスの先頭側からプログラム1、プログラム2、データ1、データ2の順に記憶されているが、それぞれの間の記憶領域及びアドレスの末尾側の記憶領域にはダミーデータが記憶されている。
【0031】
ダミーデータはどのような値であってもよいが、例えばランダムに決定された値を記憶しておくことができる。ダミーデータは記憶部22の余剰領域の全てに書き込まれる。即ち記憶部22には、その全記憶領域に何らかのデータが記憶されている。これにより、記憶部22の余剰領域に不正なプログラムを記憶して不正な処理が行われることを防止できる。また記憶部22に記憶されたプログラム及びデータを圧縮することを困難化することができる。
【0032】
図4は、書換検出装置5の構成を示すブロック図である。書換検出装置5は、処理部51、記憶部52、操作部53、表示部54、有線通信部55及び無線通信部56等を備えて構成されている。処理部51は、CPUなどの演算処理装置を用いて構成されている。処理部51は、記憶部52に記憶されたプログラムを読み出して実行することにより、車両1に搭載されたECU2のプログラム又はデータに対する不正書き換えの検出処理を行う。記憶部52は、フラッシュメモリなどの不揮発性のメモリ素子を用いて構成され、処理部51が実行するプログラム及び実行に必要な種々のデータが記憶される。書換検出装置5は、処理部51の処理過程などにて発生した一時的な情報を記憶部52に記憶してもよく、一時的な情報を記憶するRAM(Random Access Memory)を備えていてもよい。
【0033】
操作部53は、プッシュスイッチ又はタッチパネル等を用いて構成され、ユーザの操作を受け付けて処理部51へ通知する。表示部54は、液晶パネルなどを用いて構成され、処理部51からの指示に応じて、ユーザに対する種々の画像及びメッセージ等を表示する。有線通信部55は、例えばCANなどの通信プロトコルに従って、通信ケーブル6を介した他の装置との通信を行う。通信ケーブル6が車両1のコネクタ4に接続された場合、有線通信部55は、車両1の車内ネットワーク3を介してECU2との通信を行うことができる。無線通信部56は、無線LAN又は携帯電話網等を利用した無線通信を行うことによって、インターネットなどのネットワーク9を介してサーバ装置7との通信を行う。
【0034】
図5は、サーバ装置7の構成を示すブロック図である。サーバ装置7は、処理部71、記憶部72及び通信部73等を備えて構成されている。処理部71は、CPUなどの演算処理装置を用いて構成されている。処理部71は、記憶部72に記憶されたプログラムを読み出して実行することにより、書換検出装置5の書換検出処理に必要な情報を送信する処理を行う。通信部73は、インターネットなどのネットワーク9を介して他の装置との通信を行うものである。本実施の形態において通信部73は、書換検出装置51との間で通信を行い、書換検出装置51から受信した情報を処理部71へ与えると共に、処理部71から与えられた送信用の情報を書換検出装置51へ送信する。
【0035】
記憶部72は、ハードディスクなどの大容量の記憶装置を用いて構成されている。本実施の形態においては、記憶部72には、書換検出データベース75が構築されている。書換検出データベース75は、書換検出装置5の書換検出処理に必要な情報を記憶したデータベースである。書換検出データベース75にはいくつかの構成が考えられるが、以下に2つの構成例を示す。
【0036】
図6は、書換検出データベース75の第1構成例を示す模式図である。第1構成例の書換検出データベース75には、”車種”、”ECU種別”及び”記憶内容”が対応付けて記憶されている。書換検出データベース75の"車種"は、車両1の種類を識別するための識別情報などが記憶される。車両1の車名及び外観等が同じであっても、グレードなどが異なり、搭載されるECU2の構成が異なる場合、本実施の形態においてはこれらを異なる車種として扱う。図示の例では、書換検出データベース75に”車種”として車種A、車種B…の情報が記憶されている。書換検出データベース75の”ECU種別”は、例えばボディECU又はエンジンECU等のECU20の種類を識別するための識別情報などが記憶される。図示の例では、書換検出データベース75に”ECU種別”としてECUa、ECUb…の情報が記憶されている。書換検出データベース75の”記憶内容”は、対応するECU2の記憶部22の記憶内容のコピーである。
【0037】
書換検出装置5は”車種”、”ECU種別”、”記憶領域”及び”ランダムシード”を指定してサーバ装置7へ期待値を問い合わせる。問い合わせに係る”記憶領域”は、ECU2の記憶部22の記憶領域の一部を指定するための情報であり、例えば開始アドレスX及び終了アドレスYの組み合わせ、又は、開始アドレスX及び領域サイズZの組み合わせ等により記憶領域を指定する。問い合わせに係る”ランダムシード”は、書換検出装置5が生成する情報であり、本実施の形態では16進数で4桁の数値である。
【0038】
サーバ装置7は、この問い合わせに係る車種及びECU種別に対応する記憶内容から、問い合わせにて指定された記憶領域の記憶内容を読み出す。サーバ装置7は、問い合わせに係るランダムシードと、読み出した記憶内容とに基づいてハッシュ値の算出を行い、算出したハッシュ値を期待値として書換検出装置5へ送信する。このため、サーバ装置7は、ECU2のハッシュ値算出部24が用いるハッシュ関数と同じものを記憶している。
【0039】
図7は、書換検出データベース75の第2構成例を示す模式図である。第2構成例の書換検出データベース75には、”車種”、”ECU種別”、”記憶領域”、”ランダムシード”及び”期待値”が対応付けて記憶されている。これらのうち”車種”及び”ECU種別”は、第1の構成例と同じである。第2構成例の書換検出データベース75の”記憶領域”は、ECU2の記憶部22の記憶領域の一部を指定する情報である。図示の例では、記憶部22を複数の記憶領域に区分して第1領域、第2領域…としてある。各領域は同じサイズでなくてもよく、重複する部分があってもよい。
【0040】
書換検出データベース75の”ランダムシード”は、書換検出装置5が生成するランダムシードであり、本実施の形態では16進数で4桁の数値である。図示の例で”ランダムシード”は、"ECU種別”毎に0000h〜FFFFhの65536通りの値が設定される。書換検出データベース75の”期待値”は、”記憶領域”及び”ランダムシード”に対してECU3にて算出されるべきハッシュ値であり、本実施の形態では16進数で4桁の数値である。”期待値”は、ECU2の記憶部22の記憶内容(プログラム、データ及びダミーデータ)について、対応する”記憶領域”に記憶された記憶内容に対し、対応する”ランダムシード”を用いて予めハッシュ値を算出して記憶したものである。なお図示の”期待値”は一例である。
【0041】
書換検出装置5は”車種”、”ECU種別”、”記憶領域”及び”ランダムシード”を指定してサーバ装置7へ期待値を問い合わせる。サーバ装置7は、この問い合わせに応じて書換検出データベース75から対応する期待値を読み出して書換検出装置5へ送信する。
【0042】
なお本実施の形態においては、車種及びECU種別が同じであれば、ECU2の記憶部22に記憶されているプログラム及びデータが同じものであるとしてある。ただし車両1の仕向け又はプログラムのバージョン違い等により、車種及びECU種別が同じであっても記憶されているプログラム及びデータが異なる場合があり得る。このような場合には、例えば書換検出データベース75にはプログラムのバージョンなどの項目を設け、バージョン毎に記憶部22の記憶内容を記憶しておくか、又は、バージョン毎に期待値を記憶しておく。書換検出装置5は、書換検出処理の対象とするECU2のプログラムのバージョンをこのECU2から取得し、サーバ装置7へ期待値の問い合わせを行う際に車種及びランダムシード等の情報と共にプログラムのバージョン情報を送信する。サーバ装置7は、書換検出装置5からのプログラムのバージョン情報に基づいて、書換検出データベース75から適切な情報を読み出し、書換検出装置5へ期待値を送信することができる。
【0043】
<ハッシュ値算出方法>
ECU2のハッシュ値算出部24は、例えばMD(Message Digest)4、MD5、SHA−1、SHA−256、SHA−384、SHA−512、EIPEMD−160又はSHA−3等の既存のハッシュ関数を利用してハッシュ値の算出を行う構成とすることができる。これらはいわゆる一方向のハッシュ関数であり、入力された情報に対して一つのハッシュ値を出力する関数である。ハッシュ関数に入力される情報は、本実施の形態においてECU2の記憶部22に記憶されたプログラム又はデータの一部又は全部である。ハッシュ関数に入力されるものがプログラム若しくはデータのいずれであっても、又は、プログラム及びデータの両方であっても、ハッシュ関数は入力されたものを単に2値の情報として扱い、ハッシュ値を算出することができる。ハッシュ値算出部24は、予め定められたハッシュ関数を記憶しており、このハッシュ関数を用いてハッシュ値の算出を行う。
【0044】
以下、ハッシュ値算出部24がSHA−1のハッシュ関数を用いてハッシュ値を算出する場合について、簡単に説明する。なおSHA−1のハッシュ関数の詳細な処理、及び、ハッシュ値算出部24が他のハッシュ関数を用いる場合については、これらのハッシュ関数は既存の技術であるため、説明を省略する。
【0045】
SHA−1のハッシュ関数を利用する場合、ハッシュ値算出部24は、まずパディング処理を行う。パディング処理においてハッシュ値算出部24は、入力情報の後に余分なデータを付け加えることによって、処理対象の情報のサイズを所定値(512ビット)の整数倍となるように調整する。次いでハッシュ値算出部24は、パディング処理された情報を512ビット毎のブロックに分割し、各ブロックについて80個の値を算出する第1処理を行う。
【0046】
次いでハッシュ値算出部24は、所定サイズ(160ビット)の初期値に対して、第1処理にて算出した値を用いた演算を行い、演算後の160ビットの値をハッシュ値とする第2処理を行う。第2処理において、まずハッシュ値算出部24は、160ビットの初期値に対して、1つのブロックについて算出した80個の値を用いて80ステップの演算を行う。この80ステップの演算により、160ビットの初期値に対して、ブロックの情報を混ぜ込むことができ、出力として160ビットの値が得られる。ハッシュ値算出部24は、得られた160ビットの値を初期値として、次のブロックについて算出した80個の値を用いて同様に80ステップの演算を行う。ハッシュ値算出部24は、全ブロックについて同様の80ステップの処理を行い、最終的に得られた160ビットの値をハッシュ値とする。
【0047】
また本実施の形態においてハッシュ値算出部24は、書換検出装置5から与えられたランダムシードを利用してハッシュ値の算出を行う必要がある。例えばハッシュ値算出部24は、上記のパディング処理において、入力情報に付加するデータにランダムシードを用いることができる。また例えばハッシュ値算出部24は、上記の第2処理において、160ビットの初期値にランダムシードを用いることができる。本実施の形態においては、第2処理の初期値にランダムシードを用いるものとする。
【0048】
なおハッシュ値算出部24によるランダムシードの利用方法は上記のものに限らない。例えばハッシュ値算出部24は、ハッシュ値算出の対象とする記憶部22の情報とランダムシードとの論理演算値(排他的論理和など)をハッシュ関数への入力情報とすることができる。また例えばハッシュ値算出部24は、ハッシュ値算出の対象とする記憶部22の情報の先頭部分又は末尾部分等の所定位置にランダムシードを付加したものをハッシュ関数への入力情報とすることができる。
【0049】
<書換検出処理>
例えば車両1の車検、定期検査又は修理等の際に、ディーラ又は修理工場等の作業者は、書換検出装置5の通信ケーブル6を車両1のコネクタ4に接続して、書換検出装置5を車両1の車内ネットワーク3に接続する。作業者は、書換検出装置5の操作部53に対する操作を行い、車両1のECU2に対する不正書換の検出処理を開始する指示を書換検出装置5へ与える。
【0050】
書換検出装置5は、操作部53にて不正書換検出処理の開始指示を受け付けた場合、有線通信部55にて車両1のECU2との通信を開始する。本実施の形態において書換検出装置5は、車両1に搭載された複数のECU2から1つを適宜に選択し、選択したECU2の記憶部22に記憶されたプログラム及びデータに対する不正書換の検出処理を行う。書換検出装置5は、1つのECU2について検出処理を終えた後、未処理のECU2に対する検出処理を行う。書換検出装置5は、これらを繰り返すことによって複数のECU2に対して順次的に検出処理を行い、車両1に搭載された検出対象となり得る全てのECU2に対して不正書換の検出処理を行う。
【0051】
なお書換検出装置5は、車内ネットワーク3に接続された複数のECU2に対して一斉に不正書換の検出処理を行う構成としてもよい。ただし本実施の形態においては、上記のように書換検出装置5が複数のECU2に対して順次的に不正書換の検出処理を行うものとする。また以下においては、説明を簡略化するため、書換検出装置5が1つのECU2に対する不正書換の検出処理を行う場合について説明する。複数のECU2に対しては同様の処理を繰り返し行えばよい。
【0052】
図8は、書換検出装置5による書換検出処理を説明するための模式図である。車両2の車内ネットワーク3に接続された書換検出装置5は、書換検出処理の対象となるECU2に対して、書換検出処理を開始する旨などを通知する。これに応じて対象のECU2は、例えば他の処理を中断してハッシュ値算出部24の処理の準備などを行う(ただし必ずしも他の処理を中断する必要はなく、他の処理と並行してハッシュ値算出部24が処理を行うことが可能な構成であってもよい)。
【0053】
書換検出装置5は、適宜の乱数発生アルゴリズムに基づいてランダムな値を生成し、これをランダムシードとしてECU2へ送信する。ランダムシードは、例えば64ビット以上のランダムな値とすることができる。ハッシュ値算出部24がハッシュ関数としてSHA−1を用いる場合、ランダムシードは例えば160ビットとすることができる。書換検出装置5からのランダムシードを受信したECU2は、記憶部22の記憶領域のうち、ハッシュ値算出の処理対象とする記憶領域を決定する処理を行い、決定した記憶領域の記憶内容を読み出す。ECU2は、受信したランダムシードと、読み出した記憶内容とに基づき、予め定められたハッシュ関数を用いてハッシュ値を算出する。ECU2は、算出したハッシュ値を書換検出装置5へ送信する。
【0054】
また書換検出装置5は、生成したランダムシードをサーバ装置7へ送信し、このランダムシードに対するハッシュ値の期待値を問い合わせる。このときに書換検出装置5は、ECU2と同様の方法で、ハッシュ値算出の処理対象とする記憶部22の記憶領域を決定する。書換検出装置5は、書換検出処理を行っている車両1の車両ID(IDentifier)又は車種等の車両情報と、処理対象のECU2を識別するIDなどのECU識別情報と、ハッシュ値算出の処理対象とする記憶領域を指定する情報とを、ランダムシードと共にサーバ装置7へ送信する。
【0055】
これらの情報を受信したサーバ装置7は、記憶部72の書換検出データベース75を参照する。例えば書換検出データベース75が
図6に示した構成である場合、サーバ装置7は、書換検出装置5からの問い合わせに係る車種及びECU種別に応じて記憶されたECU2の記憶内容から、問い合わせにて指定された記憶領域に対応する記憶内容を読み出す。サーバ装置7は、書換検出データベース75から読み出した記憶内容と、書換検出装置5からの問い合わせに係るランダムシードとに基づいてハッシュ値を算出し、算出したハッシュ値を期待値として書換検出装置5へ送信する。
【0056】
書換検出装置5は、ECU2から受信したハッシュ値と、サーバ装置7から受信した期待値とを比較する。書換検出装置5は、ハッシュ値及び期待値が一致する場合、ECU2の記憶部22に記憶されたプログラム及びデータに対する不正な書き換えが行われていないと判定する。これに対してハッシュ値及び期待値が一致しない場合、書換検出装置5は、ECU2のプログラム及びデータに対する不正な書き換えが行われたと判定する。書換検出装置5は、書換検出処理の処理結果として、不正な書き換えが行われていたか否かを表示部54に表示する。
【0057】
また書換検出装置5は、ECU2へランダムシードを送信してからハッシュ値を受信するまでの時間を計測し、計測した時間に基づく書換の有無を行ってもよい。この場合、書換検出装置5は、計測した時間が閾値を超えるか否かを判定し、計測時間が閾値を超える場合、ECU2のプログラム及びデータに対する不正な書き換えが行われたと判定する。なお判定に用いる閾値は、書換検出装置5及びECU2の通信速度、及び、ECU2の処理能力等を考慮し、本システムの設計段階などにおいて予め決定しておく。
【0058】
<記憶領域決定方法>
ECU2のハッシュ値算出部24は、書換検出装置5からのランダムシードに応じてハッシュ値を算出する際に、算出処理の対象とすべき記憶部22の記憶領域を決定する処理を行う。
図9は、実施の形態1に係るECU2の記憶領域決定方法を説明するための模式図である。ハッシュ値算出部24による記憶領域の決定方法は、初めてハッシュ値を算出する場合と、2回目以降にハッシュ値を算出する場合とで異なる。本実施の形態において、ハッシュ値算出の対象とする初回の記憶領域は、書換検出装置5が決定し、ECU2へ通知する。ECU2のハッシュ値算出部24は、ハッシュ値の算出を始めて行う場合(例えば、前回のハッシュ値算出に関する情報が記憶されていない場合など)、書換検出装置5からランダムシードと共にハッシュ値算出の処理対象とする記憶領域を指定した情報を受信し、指定された記憶領域をハッシュ値算出処理の対象とする。
図9において書換検出装置5は、例えば「X番地からY番地までZ番地間隔で」のように、不連続な複数の領域を初回の記憶領域として指定している。よってECU2のハッシュ値算出部24は、記憶部22のX番地〜Y番地、X+Z番地〜Y+Z番地、X+2Z番地〜Y+2Z番地、…、をハッシュ値算出の処理対象の記憶領域とする。なおX、Y、Zの値は、予め定められたものであってもよく、その都度ランダムに書換検出装置5が決定してもよい。ECU2のハッシュ値算出部24は、指定された記憶領域の記憶内容と受信したランダムシードとに基づいてハッシュ値を算出すると共に、ハッシュ値算出に用いた記憶領域に関する情報(本例では、X,Y,Zの値など)を記憶しておく。
【0059】
ECU2のハッシュ値算出部24は、前回のハッシュ値算出に用いた記憶領域に関する情報を記憶しているか否かに応じて、今回の処理が初回であるか2回目以降であるかを判断することができる。ハッシュ値算出部24は、2回目以降にハッシュ値を算出する場合、前回のハッシュ値算出に用いた記憶領域に基づいて、今回のハッシュ値算出処理に用いる記憶領域を決定する。ハッシュ値算出部24は、記憶領域の決定に使用する所定値αを予め記憶している。ハッシュ値算出部24は、前回の記憶領域を示すアドレスに対してα番地を加算したアドレスを、今回のハッシュ値算出の処理対象の記憶領域とする。
図9に示す例では、ハッシュ値算出部24は、記憶部22のX+α〜Y+α、X+α+Z〜Y+α+Z、X+α+2Z〜Y+α+2Z、…、を2回目のハッシュ値算出の処理対象の記憶領域とする。ハッシュ値算出部24は、2回目の記憶領域に関する情報を記憶しておき、同様に3回目は記憶部22のX+2α〜Y+2α、X+2α+Z〜Y+2α+Z、X+2α+2Z〜Y+2α+2Z、…、をハッシュ値算出の処理対象の記憶領域とする。
【0060】
また書換検出装置5は、2回目以降に算出されたハッシュ値について期待値をサーバ装置7に問い合わせるため、2回目以降のハッシュ値がいずれの記憶領域に基づいて算出されたものであるかを知る必要がある。このため書換検出装置5は、ECU2の所定値αと、このECU2についてハッシュ値算出が何回目であるかとを記憶している。所定値αは、例えば書換検出装置5が予め記憶していてもよく、また例えば1回目のハッシュ値算出の際などにECU2から取得してもよく、また例えば書換検出装置5が所定値αを決定して初回の記憶領域指定情報と共にECU2へ送信してもよい。書換検出装置5は、記憶した所定値αと何回目のハッシュ値算出であるかとに基づいて、今回のハッシュ値算出の処理対象となる記憶領域を特定し、この記憶領域を示す情報及びランダムシード等をサーバ装置7に送信して期待値を問い合わせる。
【0061】
<フローチャート>
次に、本実施の形態に係る書換検出システムが行う書換検出処理を、フローチャートを用いて説明する。なお本説明においては、書換検出データベースとして
図6に示した構成を採用しているものとする。
図10は、書換検出装置5が行う書換検出処理の手順を示すフローチャートである。書換検出装置5の処理部51は、乱数発生アルゴリズムに基づいてランダムシードを生成する(ステップS1)。処理部51は、ランダムシードを送信するECU2によるハッシュ値算出の処理が初回であるか否かを判定する(ステップS2)。初回の処理である場合(S2:YES)、処理部51は、ステップS1にて生成したランダムシードと共に、ハッシュ値算出の処理対象とすべき記憶領域を指定する情報を、有線通信部55にて対象のECU2へ送信して(ステップS3)、ステップS6へ処理を進める。
【0062】
今回のハッシュ値算出処理が初回ではなく、2回目以降の処理である場合(S2:NO)、処理部51は、ステップS1にて生成したランダムシードを対象のECU2へ送信する(ステップS4)。また処理部51は、このECU2に関して記憶した所定値αとハッシュ値算出処理を行った回数とを取得し、所定値α及び回数に基づいて今回のハッシュ値算出の処理対象となるECU2の記憶部22の記憶領域を特定し(ステップS5)、ステップS6へ処理を進める。
【0063】
処理部51は、ランダムシードに対して処理対象のECU2から送信されるハッシュ値を、有線通信部55にて受信したか否かを判定し(ステップS6)、受信していない場合は(S6:NO)、ハッシュ値を受信するまで待機する。ハッシュ値を受信した場合(S6:YES)、処理部51は、車両情報及びECU2の識別情報と、ステップS1にて生成したランダムシードと、ステップS3にて指定した記憶領域又はステップS5にて特定した記憶領域とをサーバ装置7へ送信し、ECU2から受信したハッシュ値に対する期待値を問い合わせる(ステップS7)。処理部51は、問い合わせに対してサーバ装置7から送信される期待値を受信したか否かを判定し(ステップS8)、期待値を受信していない場合には(S8:NO)、期待値を受信するまで待機する。
【0064】
サーバ装置7から期待値を受信した場合(S8:YES)、処理部51は、ステップS6にて受信したハッシュ値と、ステップS8にて受信した期待値とが一致するか否かを判定する(ステップS9)。ハッシュ値及び期待値が一致する場合(S9:YES)、処理部51は、不正な書き換えがなされていないと判定し(ステップS10)、その旨を表示部54にて通知して処理を終了する。ハッシュ値及び期待値が一致しない場合(S9:NO)、処理部51は、不正な書き換えがなされていると判定し(ステップS11)、その旨を表示部54にて通知して処理を終了する。
【0065】
図11は、ECU2が行う書換検出処理の手順を示すフローチャートである。ECU2の処理部21は、書換検出装置5が送信するランダムシードを通信部23にて受信したか否かを判定し(ステップS21)、ランダムシードを受信していない場合は(S21:NO)、ランダムシードを受信するまで待機する。ランダムシードを受信した場合(S21:YES)、処理部21のハッシュ値算出部24は、前回のハッシュ値算出処理に関する情報が記憶されているか否かなどに基づき、ハッシュ値算出処理が初回であるか否かを判定する(ステップS22)。初回の処理である場合(S22:YES)、ハッシュ値算出部24は、ランダムシードと共に書換検出装置5から送信された記憶領域の指定情報を取得し(ステップS23)、ステップS25へ処理を進める。初回の処理でない場合(S22:NO)、ハッシュ値算出部24は、前回のハッシュ値算出処理に用いた記憶領域に関する情報と、所定値αとに基づいて、今回のハッシュ値算出の処理対象とする記憶領域を決定し(ステップS24)、ステップS25へ処理を進める。
【0066】
処理部21のハッシュ値算出部24は、書換検出装置5から受信したランダムシードと、ステップS23にて取得した情報にて指定された記憶領域又はステップS24にて決定した記憶領域の記憶内容とに基づき、所定のハッシュ関数を用いてハッシュ値の算出を行う(ステップS25)。処理部21は、ハッシュ値算出部24が算出したハッシュ値を、通信部23にて書換検出装置5へ送信し(ステップS26)、処理を終了する。
【0067】
図12は、サーバ装置7が行う書換検出処理の手順を示すフローチャートである。サーバ装置7の処理部71は、書換検出装置5からの期待値の問い合わせを、通信部73にて受信したか否かを判定し(ステップS31)、受信していない場合には(S31:NO)、問い合わせを受信するまで待機する。書換検出装置5からの問い合わせを受信した場合(S31:YES)、処理部71は、問い合わせに含まれる車両情報、ECU種別情報及び記憶領域の指定情報等に基づいて、記憶部72の書換検出データベース75から指定された記憶領域の記憶内容を取得する(ステップS32)。次いで処理部71は、書換検出装置5からの問い合わせに含まれるランダムシードと、ステップS32にて取得した記憶内容とに基づいて、ハッシュ値の算出を行う(ステップS33)。処理部71は、算出したハッシュ値を期待値として書換検出装置5へ送信し(ステップS34)、処理を終了する。
【0068】
<まとめ>
以上の構成の実施の形態1に係る書換検出システムは、書換検出装置5がランダムシードを生成してECU2へ送信し、ECU2は、受信したランダムシードと記憶部52の記憶内容(プログラム又はデータ)とに基づき、所定のハッシュ関数を用いてハッシュ値を算出して書換検出装置5へ送信する。このときにECU2は、記憶部22の記憶領域のうち、ハッシュ値算出の処理対象とする記憶領域を自ら決定し、ハッシュ値の算出を行う。書換検出装置5は、ECU2から受信したハッシュ値の正否を判定し、プログラム又はデータに対する不正な書き換えが行われたか否かを判定する。即ち書換検出装置5は、ハッシュ値が正しいものである場合には不正な書き換えが行われていないと判断し、ハッシュ値が正しいものでない場合には不正な書き換えが行われたと判断することができる。
【0069】
これにより、ECU2のプログラム又はデータに対する不正な書き換えを書換検出装置5が検出し、不正な書き換えがなされたECU2の動作停止、修理又は交換等の手当てを適切に行うことが可能となる。2回目以降の処理について、ECU2がハッシュ値算出の処理対象とする記憶領域を自ら決定することによって、書換検出装置5は記憶領域を指定する情報をECU2へ送信する必要がなく、書換検出装置5及びECU2の間の通信量を低減できる。またECU2はランダムシードの受信により、記憶領域を指定する情報の受信を待つことなく、ハッシュ値算出の処理を開始することができるため、処理時間を短縮することができる。
【0070】
またECU2のハッシュ値算出部24は、前回のハッシュ値算出の対象とした記憶領域に対して、所定アドレス値αだけ離隔した記憶領域を、今回の処理対象の記憶領域とする。書換検出装置5も同じ所定アドレス値αを記憶しておき、ECU2がいずれの記憶領域を対象としてハッシュ値を算出したのかを特定する。これによりECU2は、容易且つ確実にハッシュ値算出の処理対象とすべき記憶領域を決定することができる。
【0071】
また書換検出装置5による書換検出は、例えば車両1の車検の際など、定期的に繰り返して行われる。ECU2の書換検出を初めて行う場合、書換検出装置5は、ハッシュ値算出の処理対象とすべき初回の記憶領域を指定する情報をECU2へ送信する。ECU2は、書換検出装置5から記憶領域を指定する情報を受信した場合には、指定された記憶領域を処理対象としてハッシュ値の算出を行い、それ以外の場合には所定アドレス値αに基づくハッシュ値の算出を行う。これによりECU2は、初めてハッシュ値を算出する場合に、処理対象とする記憶領域を確実に決定することができ、ハッシュ値の算出を確実に行うことができる。
【0072】
また書換検出装置5からの問い合わせに応じてサーバ装置7が期待値を送信し、書換検出装置5がサーバ装置7から受信した期待値とECU2から受信したハッシュ値とが一致するか否かに応じて書換の検出を行う。例えば書換検出装置5がハッシュ値の期待値を記憶しておく構成とした場合には、書換検出装置5の期待値が不正に書き換えられる虞があるが、サーバ装置7から期待値を取得する構成とすることによってこのような期待値の不正な書き換えを防止できる。
【0073】
また書換検出装置5は、車両1の車内ネットワーク3のコネクタ4に通信ケーブル6を介して着脱可能な構成である。このような書換検出装置5を例えば車両1のディーラ又は整備工場等に設け、車両1の車検、定期検査又は修理等の際にECU2のプログラム又はデータの不正書換検出を行うことができる。また例えばレンタカー又はカーシェアリング等の車両1の場合、車両返却後に書換検出装置5にて不正書換検出を行うことができる。
【0074】
なお本実施の形態においては、初回のハッシュ値算出の処理対象とする記憶領域に関する情報を書換検出装置5がECU2へ送信する構成としたが、これに限るものではない。例えばECU2は初回のハッシュ値算出処理は記憶部22の所定領域(先頭領域など)を処理対象とし、書換検出装置5が記憶領域を指定しない構成としてもよい。また書換検出装置5が記憶領域を決定するための所定アドレス値αとハッシュ値算出処理を行った回数とを記憶しておき、これらの情報から今回の処理対象の記憶領域を特定する構成としたが、これに限るものではない。例えばECU2が算出したハッシュ値と共に、処理対象とした記憶領域に関する情報を書換検出装置5へ送信する構成としてもよい。
【0075】
また、書換検出装置5と車両1との間の通信を、通信ケーブル6を介した有線通信にて行う構成としたが、これに限るものではなく、無線LANなどの無線通信を行う構成としてもよい。また書換検出装置5は、無線通信部56にてサーバ装置7との通信を行う構成としたが、これに限るものではなく、有線通信によりサーバ装置7との通信を行う構成としてもよい。また書換検出装置5を、車両1の車内ネットワーク3のコネクタ4に接続する構成としたが、これに限るものではなく、例えば車両1に搭載されたゲートウェイなどの装置に書換検出装置5を接続し、書換検出装置5がゲートウェイを介して車内ネットワーク3に接続されたECU2との通信を行う構成としてもよい。
【0076】
また、書換検出装置5は、ECU2からハッシュ値を取得した後で、サーバ装置7から期待値を取得する構成としたが、これに限るものではなく、期待値を取得した後でハッシュ値を取得してもよく、ハッシュ値及び期待値を並列的に取得してもよい。また、書換検出装置5は、車両1に搭載された複数のECU2に対して、不正書換の検出を1つずつ順番に行う構成としたが、これに限るものではない。書換検出装置5は、例えばランダムシードを複数のECU2に対してブロードキャストにより一斉送信し、複数のECU2からハッシュ値を取得して、複数のECU2についての書換検出処理を同時的に行ってもよい。
【0077】
また、書換検出データベース75をサーバ装置7が備えるのではなく、書換検出装置5が備える構成としてもよい。即ち、書換検出システムがサーバ装置7を備えず、ハッシュ値に対する期待値を書換検出装置5が記憶又は算出する構成としてもよい。また、本実施の形態においては、車両1に搭載されたECU2のプログラム又はデータに対する書換検出を行う書換検出システムを例に説明を行ったが、これに限るものではなく、例えば飛行機又は船舶等のその他の移動体に搭載された情報処理装置のプログラム又はデータに対する書換検出を行う構成としてもよい。
【0078】
また
図9に示した記憶領域は一例であって、これに限るものではない。図示の例では「X番地からY番地までZ番地間隔で」のように、不連続な複数の領域を初回の記憶領域として指定しているが、例えば「X番地からY番地まで」のように1つの連続領域を指定する方法を採用してもよい。また例えば「X1番地からY1番地まで、X2番地からY2番地まで、…、Xn番地からYn番地まで」のように、先頭位置及び末尾位置を複数指定して不連続な複数の領域を指定する方法を採用してもよい。いずれの場合であっても、ECU2は、初回の記憶領域に対して所定アドレス値αを加算した記憶領域を2回目の記憶領域として決定することができる。
【0079】
また書換検出装置5は、このようなECU2の記憶部22の一部分に応じたハッシュ値の取得を1回行い、1つのハッシュ値に基づいて書換検出を行ってもよい。ただし書換検出装置5は、ECU2へのランダムシードの送信を複数回行うことによって記憶部22の複数の記憶領域を対象とした複数のハッシュ値を取得し、複数のハッシュ値に基づいて書換検出を行ってもよい。このように複数回のハッシュ値取得を行うことによって、書換検出装置5はより精度よく書換検出を行うことができる。このような場合であっても、書換検出装置5は、初回以外のハッシュ値取得について、記憶領域を指定する情報を送信する必要はない。
【0080】
また、書換検出装置5がランダムシードを生成する構成としたが、これに限るものではない。例えばサーバ装置7がランダムシードを生成する構成としてもよい。この構成の場合、書換検出装置5は、サーバ装置7に対してランダムシード及び期待値の送信を依頼する。この依頼に応じてサーバ装置7は、ランダムシードを作成し、対応する期待値を書換検出データベース75に基づいて取得又は算出し、ランダムシード及び期待値を書換検出装置5へ送信する。書換検出装置5は、サーバ装置7から受信したランダムシードをECU2へ送信し、このランダムシードに基づいて算出されたハッシュ値をECU2から受信し、サーバ装置7からの期待値とECU2からのハッシュ値とを比較して不正な書き換えを検出する。また初回の記憶領域を指定する情報についても、サーバ装置7が生成する構成としてよい。
【0081】
また、書換検出装置5を車両1の車内ネットワーク3に対して着脱可能な構成としたが、これに限るものではない。例えば車両1に搭載されたゲートウェイ又はカーナビゲーション装置等の機器に書換検出処理を行う機能を設けてもよい。また例えば車両1に搭載された複数のECU2のうちの1つ又は複数が、書換検出処理を行う機能を有する構成としてもよい。
【0082】
(実施の形態2)
実施の形態2に係る書換検出システムは、ECU2によるハッシュ値算出の処理対象とする記憶領域の決定方法が異なる。
図13は、実施の形態2に係るECU2の記憶領域決定方法を説明するための模式図である。実施の形態2に係るECU2は、記憶部22の記憶領域を前半部分及び後半部分に2分して、交互にハッシュ値算出の処理対象とする。例えばECU2は、初めて書換検出装置5からランダムシードを受信した場合、記憶部22の前半部分をハッシュ値算出の処理対象とする。次に書換検出装置5からランダムシードを受信した場合、ECU2は、記憶部22の後半部分をハッシュ値算出の処理対象とする。このように、ECU2は、書換検出装置5からランダムシードを受信する都度、ハッシュ値算出の処理対象を記憶部22の前半部分と後半部分とで切り替える。
【0083】
なお実施の形態2に係る書換検出システムにおいては、初回のハッシュ値算出の処理対象とすべき記憶領域を、書換検出装置5が前半部分又は後半部分のいずれかを選択して指定する構成としてもよく、初回は前半部分などに予め定めておき、書換検出装置5が指定しない構成としてもよい。いずれの構成であっても、書換検出装置5は、ハッシュ値の算出が何回目であるかを記憶しておく必要がある。またサーバ装置7が記憶部72に記憶する書換検出データベース75は、
図7に示した構成が好適である。
【0084】
以上の構成の実施の形態2に係る書換検出システムは、ECU2が記憶部22の記憶領域を2分して交互にハッシュ値算出の処理対象とする構成とすることにより、記憶領域の決定を容易且つ確実に行うことができる。なお本実施の形態においては、記憶部22の記憶領域を2分する構成としたが、これに限るものではなく、記憶部22を3つ以上に分割し、分割された記憶領域を順番に処理対象とする構成としてもよい。
【0085】
また実施の形態2に係る書換検出システムのその他の構成は、実施の形態1に係る書換検出システムの構成と同様であるため、同様の箇所には同じ符号を付して詳細な説明を省略する。
【0086】
(実施の形態3)
上述の実施の形態1,2に係る書換検出システムは、初回の記憶領域を書換検出装置5が指定し、2回目以降の記憶領域をECU2が決定する構成であった。これに対して実施の形態3に係る書換検出システムは、毎回のハッシュ値算出の処理対象の記憶領域を書換検出装置5が指定する構成である。
図14は、実施の形態3に係る書換検出システムによる記憶領域決定方法を説明するための模式図である。なお、実施の形態3に係る書換検出システムによる初回の記憶領域の決定方法は、実施の形態1に係る書換検出システムと同様である。即ち実施の形態3に係る書換検出装置5は、ECU2に対する書換検出の処理を初めて行う場合、ランダムシードと共に処理対象とする記憶領域を指定する情報をECU2へ送信する。ECU2は、ランダムシードと共に受信した情報にて指定された記憶領域を対象としてハッシュ値を算出し、算出したハッシュ値を書換検出装置5へ送信する。
【0087】
ECU2からハッシュ値を受信した書換検出装置5は、サーバ装置7に対する問い合わせを行って期待値を取得し、ECU2のハッシュ値とサーバ装置7の期待値とが一致するか否かを判定することによって、ECU2の書換検出を行う。実施の形態3に係る書換検出装置5は、ECU2からのハッシュ値を受信した後、例えば期待値の取得と並行して又は前後して、ECU2が次回のハッシュ値算出の処理対象とすべき記憶領域を決定し、次回の記憶領域を指定する情報をECU2へ送信する。書換検出装置5から次回の記憶領域指定情報を受信したECU2は、受信した情報を記憶しておく。なおECU2は、次回の記憶領域指定情報を
図2には図示しないメモリなどに記憶してよい。またECU2は、次回の記憶領域指定情報を記憶部22に記憶する構成としてもよいが、この場合には次回の記憶領域指定情報を記憶する記憶領域を書換検出処理の対象外とする必要がある。
【0088】
2回目以降の書換検出処理において、実施の形態3に係る書換検出装置5は、ランダムシードを生成してECU2へ送信し、このときに記憶領域を指定する情報は送信しない。書換検出装置5からのランダムシードを受信したECU2は、前回の処理にて記憶した記憶領域指定情報を読み出し、読み出した情報にて指定された記憶領域をハッシュ値算出の処理対象とする。ECU2は算出したハッシュ値を書換検出装置5へ送信し、その後に書換検出装置5から送信される次回の記憶領域指定情報を受信して記憶する。なお書換検出装置5もECU2へ送信した次回の記憶領域指定情報を記憶しておき、次回の検出処理においてサーバ装置7への問い合わせに用いる。
【0089】
図15は、実施の形態3に係る書換検出装置5が行う書換検出処理の手順を示すフローチャートである。なお本フローチャートにおいては、初回の検出処理についての手順を省略してある。実施の形態3に係る書換検出装置5の処理部51は、ランダムシードを生成し(ステップS51)、生成したランダムシードを対象のECU2へ送信する(ステップS52)。また処理部51は、前回の書換検出処理にて記憶した記憶領域指定情報を読み出し(ステップS53)、読み出した情報に基づいて今回のハッシュ値算出の処理対象となるECU2の記憶部22の記憶領域を特定する(ステップS54)。
【0090】
処理部51は、処理対象のECU2から送信されるハッシュ値を有線通信部55にて受信したか否かを判定し(ステップS55)、受信していない場合は(S55:NO)、ハッシュ値を受信するまで待機する。ハッシュ値を受信した場合(S55:YES)、処理部51は、受信したハッシュ値に対する期待値をサーバ装置7に問い合わせる(ステップS56)。処理部51は、問い合わせに対してサーバ装置7から送信される期待値を受信したか否かを判定し(ステップS57)、期待値を受信していない場合には(S57:NO)、期待値を受信するまで待機する。
【0091】
サーバ装置7から期待値を受信した場合(S57:YES)、処理部51は、ステップS55にて受信したハッシュ値と、ステップS57にて受信した期待値とが一致するか否かを判定する(ステップS58)。ハッシュ値及び期待値が一致する場合(S58:YES)、処理部51は、不正な書き換えがなされていないと判定し(ステップS59)、ステップS61へ処理を進める。ハッシュ値及び期待値が一致しない場合(S58:NO)、処理部51は、不正な書き換えがなされていると判定し(ステップS60)、ステップS61へ処理を進める。
【0092】
次いで処理部51は、次回の書換検出処理にてハッシュ値算出の処理対象とすべきECU2の記憶部22の記憶領域を指定する情報を生成し、生成した次回の記憶領域指定情報をECU2へ送信する(ステップS61)。また処理部51は、生成した次回の記憶領域指定情報を記憶部52に記憶し(ステップS62)、書込検出処理を終了する。
【0093】
図16は、実施の形態3に係るECU2が行う書換検出処理の手順を示すフローチャートである。実施の形態3に係るECU2の処理部21は、書換検出装置5が送信するランダムシードを通信部23にて受信したか否かを判定し(ステップS71)、ランダムシードを受信していない場合は(S71:NO)、ランダムシードを受信するまで待機する。ランダムシードを受信した場合(S71:YES)、処理部21のハッシュ値算出部24は、前回の書換検出処理にて書換検出装置5から受信した次回の記憶領域指定情報が記憶されているか否かなどに基づき、ハッシュ値算出処理が初回であるか否かを判定する(ステップS72)。初回の処理である場合(S72:YES)、ハッシュ値算出部24は、ランダムシードと共に書換検出装置5から送信された記憶領域の指定情報を取得し(ステップS73)、ステップS75へ処理を進める。初回の処理でない場合(S72:NO)、ハッシュ値算出部24は、記憶された記憶領域指定情報を読み出し(ステップS74)、ステップS75へ処理を進める。
【0094】
処理部21のハッシュ値算出部24は、書換検出装置5から受信したランダムシードと、ステップS73にて取得した情報又はステップS74にて読み出した情報にて指定された記憶領域の記憶内容とに基づき、所定のハッシュ関数を用いてハッシュ値の算出を行う(ステップS75)。処理部21は、ハッシュ値算出部24が算出したハッシュ値を、通信部23にて書換検出装置5へ送信する(ステップS76)。
【0095】
次いで処理部21は、ハッシュ値を受信した書換検出装置5から送信される次回の記憶領域指定情報を受信したか否かを判定する(ステップS77)。次回の記憶領域指定情報を受信していない場合(S77:NO)、処理部21は、この情報を受信するまで待機する。次回の記憶領域指定情報を受信した場合(S77:YES)、処理部21は、受信した次回の記憶領域指定情報を記憶し(ステップS78)、処理を終了する。
【0096】
以上の構成の実施の形態3に係る書換検出システムは、書換検出装置5がECU2からハッシュ値を受信した後、次回のハッシュ値算出の処理対象とすべき記憶領域を指定する情報をECU2へ送信する。ECU2は、書換検出装置5からの記憶領域指定情報を受信して記憶しておき、次回のハッシュ値算出を行う際に記憶しておいた記憶領域指定情報に指定された記憶領域を処理対象として算出を行う。この構成では、書換検出装置5からECU2へ記憶領域を指定する情報を毎回送信する必要があるが、次回の記憶領域指定情報の送信はECU2からのハッシュ値の受信後から次回の検出処理を行うまでの任意のタイミングで行うことができる。よって記憶領域指定情報の送信を、例えばネットワークの負荷が少ない場合などを選んで行うことが可能である。またECU2は、書換検出装置5からランダムシードを受信した場合、記憶領域を指定する情報の受信を待つことなく、記憶してある記憶領域指定情報に基づいて処理対象の記憶領域を決定して播種値を算出することができるため、処理時間を短縮することができる。
【0097】
なお本実施の形態においては、
図15のフローチャートにおいて、ハッシュ値及び期待値の一致/不一致に応じた書換検出を行った後で、書換検出装置5からECU2へ次回の記憶領域指定情報を送信する構成としたが、情報送信のタイミングはこれに限らない。書換検出装置5による次回の記憶領域指定情報の送信は、ECU2から今回のハッシュ値を受信した後から次回の書換検出処理の開始までのいずれのタイミングで行ってもよい。
【0098】
また実施の形態3に係る書換検出システムのその他の構成は、実施の形態1に係る書換検出システムの構成と同様であるため、同様の箇所には同じ符号を付して詳細な説明を省略する。