(57)【特許請求の範囲】
【請求項１】
第１通信装置と記憶部を有する第２通信装置とが暗号処理に用いる鍵情報を共有する通信システムにおいて、
前記第１通信装置は、
前記第２通信装置の前記記憶部の記憶内容を記憶した記憶部と、
該記憶部の記憶内容に基づくハッシュ値を算出する第１ハッシュ値算出手段と、
該第１ハッシュ値算出手段が算出したハッシュ値から第１部分を抽出する抽出手段と、
該抽出手段が抽出した前記第１部分を前記第２通信装置へ送信する第１部分送信手段と
を有し、
前記第２通信装置は、
自らの記憶部の記憶内容に基づくハッシュ値を算出する第２ハッシュ値算出手段と、
前記第１通信装置から前記第１部分を受信する第１部分受信手段と、
該第１部分受信手段が受信した前記第１部分が、前記第２ハッシュ値算出手段が算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定手段と、
該ハッシュ値判定手段が一致すると判定した場合に、前記第２ハッシュ値算出手段が算出したハッシュ値から前記第１部分と異なる第２部分を抽出する抽出手段と、
該抽出手段が抽出した前記第２部分を前記第１通信装置へ送信する第２部分送信手段と、
前記第２ハッシュ値算出手段が算出したハッシュ値から前記第１部分及び前記第２部分を除いた残余値に基づいて前記鍵情報を生成する生成手段と
を有し、
前記第１通信装置は、更に、
前記第２通信装置から前記第２部分を受信する第２部分受信手段と、
該第２部分受信手段が受信した前記第２部分が、前記第１ハッシュ値算出手段が算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定手段と、
該ハッシュ値判定手段が一致すると判定した場合に、前記第１ハッシュ値算出手段が算出したハッシュ値から前記第１部分及び前記第２部分を除いた残余値に基づいて前記鍵情報を生成する生成手段と
を有し、
前記記憶内容にはランダムに決定された値を含むこと
を特徴とする通信システム。
【請求項２】
前記第１通信装置及び前記第２通信装置の生成手段は、前記残余値を前記鍵情報とすること
を特徴とする請求項１に記載の通信システム。
【請求項３】
前記第１通信装置は、
第１秘密値を生成する第１秘密値生成手段と、
前記残余値及び前記第１秘密値生成手段が生成した第１秘密値に基づいて、第１公開値を生成する第１公開値生成手段と、
該第１公開値生成手段が生成した第１公開値を前記第２通信装置へ送信する第１公開値送信手段と、
前記第２通信装置から第２公開値を受信する第２公開値受信手段と
を有し、
前記第１通信装置の生成手段は、前記第１秘密値及び前記第２公開値受信手段が受信した前記第２公開値に基づいて、前記鍵情報を生成するようにしてあり、
前記第２通信装置は、
第２秘密値を生成する第２秘密値生成手段と、
前記残余値及び前記第２秘密値生成手段が生成した第２秘密値に基づいて、前記第２公開値を生成する第２公開値生成手段と、
該第２公開値生成手段が生成した第２公開値を前記第１通信装置へ送信する第２公開値送信手段と、
前記第１通信装置から前記第１公開値を受信する第１公開値受信手段と
を有し、
前記第２通信装置の生成手段は、前記第２秘密値及び前記第１公開値受信手段が受信した前記第１公開値に基づいて、前記鍵情報を生成するようにしてあること
を特徴とする請求項１に記載の通信システム。
【請求項４】
前記第１通信装置及び前記第２通信装置は、
複数の素数を記憶した素数テーブルと、
前記素数テーブルから素数を選択する素数選択手段と
をそれぞれ有し、
前記第１通信装置の前記第１公開値生成手段は、前記素数選択手段が選択した素数を用いて前記第１公開値を生成するようにしてあり、
前記第２通信装置の前記第２公開値生成手段は、前記素数選択手段が選択した素数を用いて前記第２公開値を生成するようにしてあること
を特徴とする請求項３に記載の通信システム。
【請求項５】
前記第１秘密値生成手段及び前記第２秘密値生成手段は、乱数に基づいて前記第１秘密値及び前記第２秘密値を生成するようにしてあること
を特徴とする請求項３又は請求項４に記載の通信システム。
【請求項６】
前記第１通信装置は、
ハッシュ値算出に用いる情報を生成するハッシュ値算出用情報生成手段と、
該ハッシュ値算出用情報生成手段が生成したハッシュ値算出用情報を前記第２通信装置へ送信するハッシュ値算出用情報送信手段と
を有し、
前記第１ハッシュ値算出手段は、前記ハッシュ値算出用情報生成手段が生成したハッシュ値算出用情報を用いてハッシュ値を算出するようにしてあり、
前記第２通信装置は、前記第１通信装置から前記ハッシュ値算出用情報を受信するハッシュ値算出用情報受信手段を有し、
前記第２ハッシュ値算出手段は、前記ハッシュ値算出用情報受信手段が受信したハッシュ値算出用情報を用いてハッシュ値を算出するようにしてあること
を特徴とする請求項１乃至請求項５のいずれか１つに記載の通信システム。
【請求項７】
前記ハッシュ値算出用情報生成手段が生成するハッシュ値算出用情報には、乱数を含むこと
を特徴とする請求項６に記載の通信システム。
【請求項８】
前記ハッシュ値算出用情報生成手段が生成するハッシュ値算出用情報には、ハッシュ値の算出対象とする前記第２通信装置の記憶部の領域を規定する情報を含むこと
を特徴とする請求項６又は請求項７に記載の通信システム。
【請求項９】
前記第１通信装置は、
前記第１ハッシュ値算出手段が算出したハッシュ値を記憶する第１ハッシュ値記憶部と、
該第１ハッシュ値記憶部が記憶したハッシュ値に基づいて前記鍵情報を更新する処理を行う更新処理手段と
を有すること
を特徴とする請求項１乃至請求項８のいずれか１つに記載の通信システム。
【請求項１０】
前記更新処理手段は、前記第１通信装置の抽出手段により前記第１ハッシュ値記憶部が記憶したハッシュ値から第１部分を抽出し、抽出した前記第１部分を前記第１部分送信手段により前記第２通信装置へ送信し、前記第２部分受信手段にて前記第２通信装置から第２部分を受信して、前記残余値を更新するようにしてあること
を特徴とする請求項９に記載の通信システム。
【請求項１１】
前記第２通信装置は、
前記第２ハッシュ値算出手段が算出したハッシュ値を記憶する第２ハッシュ値記憶部と、
前記第１通信装置の前記更新処理手段の更新処理により送信された前記第１部分に基づいて前記第２通信装置の抽出手段により前記第２部分を抽出し、抽出した前記第２部分を前記第２部分送信手段により前記第１通信装置へ送信し、前記第１部分及び前記第２部分に基づいて前記残余値を更新する更新処理手段と
を有すること
を特徴とする請求項１０に記載の通信システム。
【請求項１２】
第１通信装置と、記憶部を有する第２通信装置とが暗号処理に用いる鍵情報を共有する鍵情報共有方法において、
前記第１通信装置に、前記第２通信装置の記憶部の記憶内容を複写しておき、
前記第１通信装置が、複写した記憶内容に基づくハッシュ値を算出する第１ハッシュ値算出ステップと、
該第１ハッシュ値算出ステップにて算出したハッシュ値から第１部分を抽出する抽出ステップと、
該抽出ステップにて抽出した前記第１部分を前記第２通信装置へ送信する第１部分送信ステップと、
前記第２通信装置が、前記記憶部の記憶内容に基づくハッシュ値を算出する第２ハッシュ値算出ステップと、
前記第２通信装置が、前記第１通信装置から前記第１部分を受信する第１部分受信ステップと、
該第１部分受信ステップにて受信した前記第１部分が、前記第２ハッシュ値算出ステップにて算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定ステップと、
該ハッシュ値判定ステップにて一致すると判定した場合に、前記第２ハッシュ値算出ステップにて算出したハッシュ値から前記第１部分と異なる第２部分を抽出する抽出ステップと、
該抽出ステップにて抽出した前記第２部分を前記第１通信装置へ送信する応答情報送信ステップと、
前記第２ハッシュ値算出ステップにて算出したハッシュ値から前記第１部分及び前記第２部分を除いた残余値に応じた鍵情報を生成する鍵情報生成ステップと、
前記第１通信装置が、前記第２通信装置から前記第２部分を受信する第２部分受信ステップと、
該第２部分受信ステップにて受信した前記第２部分が、前記第１ハッシュ値算ステップにて算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定ステップと、
該ハッシュ値判定ステップにて一致すると判定した場合に、前記第１ハッシュ値算出ステップにて算出したハッシュ値から前記第１部分及び前記第２部分を除いた残余値に応じた鍵情報を生成する鍵情報生成ステップと
を含み、
前記記憶内容にはランダムに決定された値を含むこと
を特徴とする鍵情報共有方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１通信装置及び第２通信装置が暗号処理に用いる鍵情報を共有する通信システム及び鍵情報共有方法に関する。
【背景技術】
【０００２】
従来、複数の通信装置がネットワークを介して通信を行う通信システムにおいて、通信の信頼性を高めるためデータの暗号化又はメッセージ認証子を付与した通信等が行われる。暗号化などの処理を行うためには、通信を行う各通信装置が共有鍵を保持している必要がある。
【０００３】
特許文献１においては、共通鍵暗号方式で使用される暗号鍵の更新を行う暗号鍵更新システムが提案されている。この暗号鍵更新システムでは、電子キー及び車載機の間で予め秘密情報を共有し、秘密情報に対してハッシュ関数を繰り返し適用し得られる結果を共通の暗号鍵とする。暗号鍵を更新する際には、以前の繰り返し回数より１少ない回数だけハッシュ関数を適用して得られる結果を暗号鍵とする。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２８４０８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本願の発明者は、通信装置の記憶部に記憶されたプログラム及びデータ等に対する不正な改ざんを検知することができる通信システムを発明し、既に特許出願している。本通信システムにおいても通信の安全性及び信頼性等を向上するため、鍵情報を共有して通信装置間で送受信するデータの暗号化又はメッセージ認証子を付与した通信等を行うことが望まれる。
【０００６】
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、第１通信装置及び第２通信装置が鍵情報を共有して暗号処理を行うことができる通信システム及び鍵情報共有方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明に係る通信システムは、第１通信装置と記憶部を有する第２通信装置とが暗号処理に用いる鍵情報を共有する通信システムにおいて、前記第１通信装置は、前記第２通信装置の前記記憶部の記憶内容を記憶した記憶部と、該記憶部の記憶内容に基づくハッシュ値を算出する第１ハッシュ値算出手段と、該第１ハッシュ値算出手段が算出したハッシュ値から第１部分を抽出する抽出手段と、該抽出手段が抽出した前記第１部分を前記第２通信装置へ送信する第１部分送信手段とを有し、前記第２通信装置は、自らの記憶部の記憶内容に基づくハッシュ値を算出する第２ハッシュ値算出手段と、前記第１通信装置から前記第１部分を受信する第１部分受信手段と、該第１部分受信手段が受信した前記第１部分が、前記第２ハッシュ値算出手段が算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定手段と、該ハッシュ値判定手段が一致すると判定した場合に、前記第２ハッシュ値算出手段が算出したハッシュ値から前記第１部分と異なる第２部分を抽出する抽出手段と、該抽出手段が抽出した前記第２部分を前記第１通信装置へ送信する第２部分送信手段と、前記第２ハッシュ値算出手段が算出したハッシュ値から前記第１部分及び前記第２部分を除いた残余値に基づいて前記鍵情報を生成する生成手段とを有し、前記第１通信装置は、更に、前記第２通信装置から前記第２部分を受信する第２部分受信手段と、該第２部分受信手段が受信した前記第２部分が、前記第１ハッシュ値算出手段が算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定手段と、該ハッシュ値判定手段が一致すると判定した場合に、前記第１ハッシュ値算出手段が算出したハッシュ値から前記第１部分及び前記第２部分を除いた残余値に基づいて前記鍵情報を生成する生成手段とを有し、前記記憶内容にはランダムに決定された値を含むこととを特徴とする。
【０００８】
また、本発明に係る通信システムは、前記第１通信装置及び前記第２通信装置の生成手段が、前記残余値を前記鍵情報とすることを特徴とする。
【０００９】
また、本発明に係る通信システムは、前記第１通信装置が、第１秘密値を生成する第１秘密値生成手段と、前記残余値及び前記第１秘密値生成手段が生成した第１秘密値に基づいて、第１公開値を生成する第１公開値生成手段と、該第１公開値生成手段が生成した第１公開値を前記第２通信装置へ送信する第１公開値送信手段と、前記第２通信装置から第２公開値を受信する第２公開値受信手段とを有し、前記第１通信装置の生成手段は、前記第１秘密値及び前記第２公開値受信手段が受信した前記第２公開値に基づいて、前記鍵情報を生成するようにしてあり、前記第２通信装置は、第２秘密値を生成する第２秘密値生成手段と、前記残余値及び前記第２秘密値生成手段が生成した第２秘密値に基づいて、前記第２公開値を生成する第２公開値生成手段と、該第２公開値生成手段が生成した第２公開値を前記第１通信装置へ送信する第２公開値送信手段と、前記第１通信装置から前記第１公開値を受信する第１公開値受信手段とを有し、前記第２通信装置の生成手段は、前記第２秘密値及び前記第１公開値受信手段が受信した前記第１公開値に基づいて、前記鍵情報を生成するようにしてあることを特徴とする。
【００１０】
また、本発明に係る通信システムは、前記第１通信装置及び前記第２通信装置が、複数の素数を記憶した素数テーブルと、前記素数テーブルから素数を選択する素数選択手段とをそれぞれ有し、前記第１通信装置の前記第１公開値生成手段は、前記素数選択手段が選択した素数を用いて前記第１公開値を生成するようにしてあり、前記第２通信装置の前記第２公開値生成手段は、前記素数選択手段が選択した素数を用いて前記第２公開値を生成するようにしてあることを特徴とする。
【００１１】
また、本発明に係る通信システムは、前記第１秘密値生成手段及び前記第２秘密値生成手段が、乱数に基づいて前記第１秘密値及び前記第２秘密値を生成するようにしてあることを特徴とする。
【００１２】
また、本発明に係る通信システムは、前記第１通信装置は、ハッシュ値算出に用いる情報を生成するハッシュ値算出用情報生成手段と、該ハッシュ値算出用情報生成手段が生成したハッシュ値算出用情報を前記第２通信装置へ送信するハッシュ値算出用情報送信手段とを有し、前記第１ハッシュ値算出手段は、前記ハッシュ値算出用情報生成手段が生成したハッシュ値算出用情報を用いてハッシュ値を算出するようにしてあり、前記第２通信装置は、前記第１通信装置から前記ハッシュ値算出用情報を受信するハッシュ値算出用情報受信手段を有し、前記第２ハッシュ値算出手段は、前記ハッシュ値算出用情報受信手段が受信したハッシュ値算出用情報を用いてハッシュ値を算出するようにしてあることを特徴とする。
【００１３】
また、本発明に係る通信システムは、前記ハッシュ値算出用情報生成手段が生成するハッシュ値算出用情報には、乱数を含むことを特徴とする。
【００１４】
また、本発明に係る通信システムは、前記ハッシュ値算出用情報生成手段が生成するハッシュ値算出用情報には、ハッシュ値の算出対象とする前記第２通信装置の記憶部の領域を規定する情報を含むことを特徴とする。
【００１５】
また、本発明に係る通信システムは、前記第１通信装置は、前記第１ハッシュ値算出手段が算出したハッシュ値を記憶する第１ハッシュ値記憶部と、該第１ハッシュ値記憶部が記憶したハッシュ値に基づいて前記鍵情報を更新する処理を行う更新処理手段とを有することを特徴とする。
【００１６】
また、本発明に係る通信システムは、前記更新処理手段が、前記第１通信装置の抽出手段により前記第１ハッシュ値記憶部が記憶したハッシュ値から第１部分を抽出し、抽出した前記第１部分を前記第１部分送信手段により前記第２通信装置へ送信し、前記第２部分受信手段にて前記第２通信装置から第２部分を受信して、前記残余値を更新するようにしてあることを特徴とする。
【００１７】
また、本発明に係る通信システムは、前記第２通信装置が、前記第２ハッシュ値算出手段が算出したハッシュ値を記憶する第２ハッシュ値記憶部と、前記第１通信装置の前記更新処理手段の更新処理により送信された前記第１部分に基づいて前記第２通信装置の抽出手段により前記第２部分を抽出し、抽出した前記第２部分を前記第２部分送信手段により前記第１通信装置へ送信し、前記第１部分及び前記第２部分に基づいて前記残余値を更新する更新処理手段とを有することを特徴とする。
【００１８】
また、本発明に係る鍵情報共有方法は、第１通信装置と、記憶部を有する第２通信装置とが暗号処理に用いる鍵情報を共有する鍵情報共有方法において、前記第１通信装置に、前記第２通信装置の記憶部の記憶内容を複写しておき、前記第１通信装置が、複写した記憶内容に基づくハッシュ値を算出する第１ハッシュ値算出ステップと、該第１ハッシュ値算出ステップにて算出したハッシュ値から第１部分を抽出する抽出ステップと、該抽出ステップにて抽出した前記第１部分を前記第２通信装置へ送信する第１部分送信ステップと、前記第２通信装置が、前記記憶部の記憶内容に基づくハッシュ値を算出する第２ハッシュ値算出ステップと、前記第２通信装置が、前記第１通信装置から前記第１部分を受信する第１部分受信ステップと、該第１部分受信ステップにて受信した前記第１部分が、前記第２ハッシュ値算出ステップにて算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定ステップと、該ハッシュ値判定ステップにて一致すると判定した場合に、前記第２ハッシュ値算出ステップにて算出したハッシュ値から前記第１部分と異なる第２部分を抽出する抽出ステップと、該抽出ステップにて抽出した前記第２部分を前記第１通信装置へ送信する応答情報送信ステップと、前記第２ハッシュ値算出ステップにて算出したハッシュ値から前記第１部分及び前記第２部分を除いた残余値に応じた鍵情報を生成する鍵情報生成ステップと、前記第１通信装置が、前記第２通信装置から前記第２部分を受信する第２部分受信ステップと、該第２部分受信ステップにて受信した前記第２部分が、前記第１ハッシュ値算ステップにて算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定ステップと、該ハッシュ値判定ステップにて一致すると判定した場合に、前記第１ハッシュ値算出ステップにて算出したハッシュ値から前記第１部分及び前記第２部分を除いた残余値に応じた鍵情報を生成する鍵情報生成ステップとを含み、前記記憶内容にはランダムに決定された値を含むことを特徴とする。
【００１９】
本発明においては、第１通信装置及び第２通信装置が鍵情報を共有する。第１通信装置は、第２通信装置の記憶部の記憶内容を複写したものを記憶しておき、複写した記憶内容に基づいてハッシュ値を算出する第１ハッシュ値算出手段を有する。第２通信装置は、自らの記憶部の記憶内容に基づいてハッシュ値を算出する第２ハッシュ値算出手段を有する。なお第１ハッシュ値算出手段及び第２ハッシュ値算出手段は、同じ演算を行うものであり、入力情報が同じであれば算出するハッシュ値は同じである。
第１通信装置は、複写した記憶内容に基づくハッシュ値を算出し、その一部分を第１部分として抽出して第２通信装置へ送信する。第２通信装置は、第１通信装置から受信したハッシュ値の第１部分と、自らの記憶内容に基づいて算出したハッシュ値とを比較し、受信した第１部分と自らのハッシュ値の一部分とが一致するか否かを判定する。両ハッシュ値が一致しない場合、第２通信装置の記憶内容と第１通信装置の複写した記憶内容とが一致しないこととなるため、第２通信装置の記憶内容が不正に改ざんされた可能性があると判断できる。両ハッシュ値が一致する場合、第２通信装置は、自らが算出したハッシュ値から受信した第１部分と異なる第２部分を抽出して第２通信装置へ送信する。
第１通信装置は、第２通信装置から受信したハッシュ値の第２部分と、自らが算出したハッシュ値とを比較し、受信した第２部分と自らのハッシュ値の一部分とが一致するか否かを判定する。両ハッシュ値が一致しない場合、第２通信装置の記憶内容と第１通信装置の複写した記憶内容とが一致しないこととなるため、第２通信装置の記憶内容が不正に改ざんされた可能性があると判断できる。両ハッシュ値が一致する場合、第１通信装置及び第２通信装置は共に、それぞれ算出したハッシュ値が一致し、記憶内容に不正な改ざんがなされていないと判断できる。
そこで第１通信装置及び第２通信装置は、自らが算出したハッシュ値から、第１通信装置が抽出した第１部分と、第２通信装置が抽出した第２部分とを除いた残余値を算出し、この残余値に基づいて鍵情報を生成する。
これにより第１通信装置及び第２通信装置は、第２通信装置の記憶部の記憶内容の不正改ざんを検知する処理と、暗号処理のための鍵情報を決定する処理とを同時的に行うことができる。
【００２０】
また本発明においては、第１通信装置及び第２通信装置は、算出した残余値を鍵情報として暗号処理を行う。なお、残余値の全部を鍵情報としてもよく、残余値の一部を鍵情報としてもよい。これにより第１通信装置及び第２通信装置は、不正改ざんの検知処理の終了と共に鍵情報を取得することができる。
【００２１】
また本発明においては、第１通信装置及び第２通信装置は、例えば乱数などにより秘密値をそれぞれ生成し、秘密値及び残余値に基づいて公開値を生成して互いに送信し、自らの秘密値及び受信した公開値に基づいて鍵情報をそれぞれ生成する。
例えば、第１通信装置及び第２通信装置は、共通の素数テーブルを記憶しておく。素数テーブルには複数の素数が記憶されており、第１通信装置及び第２通信装置は、素数テーブルから素数を選択し、選択した素数を用いてそれぞれ公開値を生成する。
これらにより、第１通信装置及び第２通信装置が共有する鍵情報の秘匿性を高めることができる。
【００２２】
また本発明においては、ハッシュ値の算出に先立って、第１通信装置はハッシュ値算出用情報を生成して第２通信装置へ送信する。例えばハッシュ値算出用情報は、乱数とすることができる。また例えばハッシュ値算出用情報は、ハッシュ値算出の対象とする記憶部の領域を規定する情報とすることができる。第１通信装置及び第２通信装置は、ハッシュ値算出用情報を用いて、記憶内容に基づくハッシュ値の算出を行う。
これらにより、ハッシュ値算出が困難化されるため、記憶内容の不正改ざんの検知の信頼性を向上することができ、共有する鍵情報の信頼性を向上することができる。
【００２３】
また本発明においては、第１通信装置及び第２通信装置は、算出したハッシュ値をそれぞれ記憶しておく。第１通信装置は、例えば鍵情報を生成してから所定期間が経過した場合などの適宜のタイミングで、鍵情報の更新処理を行う。更新処理においては、記憶しておいたハッシュ値を用いることにより、処理負荷を低減することができる。第１通信装置は、記憶しておいたハッシュ値から、以前とは異なる第１部分を抽出して第２通信装置へ送信することにより、鍵情報の更新処理を開始する。第２通信装置は、受信した第１部分と記憶しておいたハッシュ値とに基づいて第２部分の抽出を行い、第２部分を第１通信装置へ送信する。これにより第１通信装置及び第２通信装置は、新たな第１部分及び第２部分に基づいて残余値を算出することができ、鍵情報を更新することができる。
【発明の効果】
【００２４】
本発明による場合は、第２通信装置の記憶部の記憶内容に対する不正改ざん検知の処理を利用して、第１通信装置及び第２通信装置により鍵情報の共有を行うことができる。第１通信装置及び第２通信装置は、共有した鍵情報を用いて暗号処理を行うことにより、信頼性の高い通信を行うことができる。
【図面の簡単な説明】
【００２５】
【図１】本実施の形態に係る通信システムの構成を示す模式図である。
【図２】ＥＣＵの構成を示すブロック図である。
【図３】ＥＣＵのＲＯＭの構成を示す模式図である。
【図４】監視装置の構成を示すブロック図である。
【図５】監視装置の記憶部に記憶される複写データの構成を説明する模式図である。
【図６】監視装置及びＥＣＵによる不正改ざん検知処理及び共有鍵生成処理を説明するための模式図である。
【図７】監視装置及びＥＣＵによる不正改ざん検知処理及び共有鍵生成処理を説明するための模式図である。
【図８】共有鍵の更新処理を説明するための模式図である。
【図９】監視装置が行う不正改ざん検知及び共有鍵生成の処理手順を示すフローチャートである。
【図１０】監視装置からのハッシュ値計算指示に応じてＥＣＵが行う処理の手順を示すフローチャートである。
【図１１】監視装置からのハッシュ確認指示に応じてＥＣＵが行う処理の手順を示すフローチャートである。
【図１２】監視装置が行う共有鍵の更新処理の手順を示すフローチャートである。
【図１３】実施の形態２に係る通信システムの共有鍵生成方法を説明するための模式図である。
【図１４】素数テーブルの一例を示す模式図である。
【発明を実施するための形態】
【００２６】
（実施の形態１）
＜システム構成＞
図１は、本実施の形態に係る通信システムの構成を示す模式図である。本実施の形態に係る通信システムは、車両１に搭載された複数のＥＣＵ（Electronic Control Unit）３と、１つの監視装置５とを備えて構成されている。ＥＣＵ３及び監視装置５は、車両１に敷設された共通の通信線を介して接続され、相互にデータを送受信することができる。本実施の形態においては、この通信線をＣＡＮ（Controller Area Network）バスとし、ＥＣＵ３及び監視装置５は、ＣＡＮプロトコルに従った通信を行う。ＥＣＵ３は、例えば車両１のエンジンの制御を行うエンジンＥＣＵ、車体の電装品の制御を行うボディＥＣＵ、ＡＢＳ（Antilock Brake System）に関する制御を行うＡＢＳ−ＥＣＵ、又は、車両１のエアバッグの制御を行うエアバッグＥＣＵ等のように、種々の電子制御装置であってよい。監視装置５は、ＥＣＵ３が記憶するプログラム及びデータに対する不正な改ざん、及び、車内ネットワークに対する不正なデータ送信等を監視する装置である。監視装置５は、監視専用の装置として設けられてもよく、例えばゲートウェイなどの装置に監視の機能を付加した構成であってもよく、また例えばいずれか１つのＥＣＵ３に監視の機能を付加した構成であってもよい。
【００２７】
図２は、ＥＣＵ３の構成を示すブロック図である。なお図２においては、車両１に設けられた複数のＥＣＵ３について、通信及び不正検知等に関するブロックを抜き出して図示してある。これらのブロックは各ＥＣＵ３に共通である。本実施の形態に係るＥＣＵ３は、処理部３１、ＲＯＭ（Read Only Memory）３２、記憶部３３及びＣＡＮ通信部３４等を備えて構成されている。処理部３１は、ＣＰＵ（Central Processing Unit）又はＭＰＵ（Micro-Processing Unit）等の演算処理装置を用いて構成されている。処理部３１は、ＲＯＭ３２に記憶されたプログラム３２ａを読み出して実行することにより、車両１に係る種々の情報処理又は制御処理等を行う。
【００２８】
ＲＯＭ３２は、マスクＲＯＭ、フラッシュメモリ又はＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）等の不揮発性のメモリ素子を用いて構成されている。ＲＯＭ３２は、処理部３１が実行するプログラム３２ａと、これにより行われる処理に必要な種々のデータ３２ｂとが記憶されている。なおＲＯＭ３２に記憶されるプログラム３２ａ及びデータ３２ｂは、ＥＣＵ３毎に異なる。なお本実施の形態においては、ＲＯＭ３２がフラッシュメモリなどのデータ書き換え可能なメモリ素子を用いて構成されている場合であっても、処理部３１の処理によりＲＯＭ３２のデータ書換は行われないものとする。
【００２９】
記憶部３３は、フラッシュメモリ又はＥＥＰＲＯＭ等のデータ書き換え可能なメモリ素子を用いて構成されている。なお記憶部３３は、ＳＲＡＭ（Static Random Access Memory）又はＤＲＡＭ（Dynamic Random Access Memory）等の揮発性のメモリ素子を用いて構成されていてもよい。記憶部３３は、処理部３１の処理により生成された種々のデータを記憶する。また本実施の形態においては、記憶部３３は、処理部３１の処理により算出されたハッシュ値３３ａを記憶する。
【００３０】
ＣＡＮ通信部３４は、ＣＡＮの通信プロトコルに従って、ＣＡＮバスを介した他のＥＣＵ３又は監視装置５との通信を行う。ＣＡＮ通信部３４は、処理部３１から与えられた送信用の情報を、ＣＡＮの通信プロトコルに従った送信信号に変換し、変換した信号をＣＡＮバスへ出力することで他のＥＣＵ３又は監視装置５への情報送信を行う。ＣＡＮ通信部３４は、ＣＡＮバスの電位をサンプリングすることによって、他のＥＣＵ３又は監視装置５が出力した信号を取得し、この信号をＣＡＮの通信プロトコルに従って２値の情報に変換することで情報の受信を行い、受信した情報を処理部３１へ与える。
【００３１】
本実施の形態においてＥＣＵ３の処理部３１には、ハッシュ値算出部４１、ハッシュ値判定部４２、抽出部４３、鍵生成部４４及び暗号処理部４５等が設けられている。ハッシュ値算出部４１〜暗号処理部４５は、ハードウェアの機能ブロックとして構成されるものであってもよく、ソフトウェアの機能ブロックとして構成されるものであってもよい。ハッシュ値算出部４１〜暗号処理部４５が行う処理の詳細は後述する。
【００３２】
図３は、ＥＣＵ３のＲＯＭ３２の構成を示す模式図である。図示の例では、ＲＯＭ３２はアドレスが００００ｈ〜ＦＦＦＦｈで表される記憶領域を有している。ＲＯＭ３２には、処理部３１にて実行される２つのプログラム３２ａ（図３においてはプログラム１及びプログラム２と示す）と、各プログラムの実行にそれぞれ必要な２種のデータ（データ１及びデータ２）とが記憶されている。ＲＯＭ３２には、アドレスの先頭側からプログラム１、プログラム２、データ１、データ２の順に記憶されているが、それぞれの間の記憶領域及びアドレスの末尾側の記憶領域にはダミーデータが記憶されている。
【００３３】
ダミーデータはどのような値であってもよいが、例えばランダムに決定された値を記憶しておくことができる。ダミーデータはＲＯＭ３２の余剰領域の全てに書き込まれる。即ちＲＯＭ３２には、その全記憶領域に何らかのデータが記憶されている。これにより、ＲＯＭ３２の余剰領域に不正なプログラムを記憶して不正な処理が行われることを防止できる。またＲＯＭ３２に記憶されたプログラム３２ａ及びデータ３２ｂを圧縮することを困難化することができる。
【００３４】
図４は、監視装置５の構成を示すブロック図である。監視装置５は、処理部５１、記憶部５２及びＣＡＮ通信部５３等を備えて構成されている。処理部５１は、ＣＰＵ又はＭＰＵ等の演算処理装置を用いて構成され、記憶部５２に記憶されたプログラムを読み出して実行することにより、車両１のＥＣＵ３の挙動及び通信等を監視する処理を行う。
【００３５】
記憶部５２は、フラッシュメモリ又はＥＥＰＲＯＭ等のデータ書き換え可能な不揮発性のメモリ素子を用いて構成されている。本実施の形態において記憶部５２は、車両１に搭載されたＥＣＵ３のＲＯＭ３２の記憶内容を複写した複写データ５２ａを記憶している。また記憶部５２は、処理部５１の処理により算出されたハッシュ値５２ｂを記憶する。なお、記憶部５２は耐タンパ性と呼ばれる外部からの解析に対する耐性を持ち、複写データ５２ａやハッシュ値５２ｂの改ざんや解読はされないものとする。
【００３６】
ＣＡＮ通信部５３は、ＣＡＮの通信プロトコルに従って、ＣＡＮバスを介したＥＣＵ３との通信を行う。ＣＡＮ通信部５３は、処理部５１から与えられた送信用の情報を、ＣＡＮの通信プロトコルに従った送信信号に変換し、変換した信号をＣＡＮバスへ出力することでＥＣＵ３への情報送信を行う。ＣＡＮ通信部５３は、ＣＡＮバスの電位をサンプリングすることによって、ＥＣＵ３が出力した信号を取得し、この信号をＣＡＮの通信プロトコルに従って２値の情報に変換することで情報の受信を行い、受信した情報を処理部５１へ与える。
【００３７】
本実施の形態において監視装置５の処理部５１には、ハッシュ値算出部６１、抽出部６２、ハッシュ値判定部６３、鍵生成部６４及び暗号処理部６５等が設けられている。ハッシュ値算出部６１〜暗号処理部６５は、ハードウェアの機能ブロックとして構成されるものであってもよく、ソフトウェアの機能ブロックとして構成されるものであってもよい。ハッシュ値算出部６１〜暗号処理部６５が行う処理の詳細は後述する。
【００３８】
図５は、監視装置５の記憶部５２に記憶される複写データ５２ａの構成を説明する模式図である。監視装置５は、車両１に搭載された監視対象の全てのＥＣＵ３について、ＲＯＭ３の記憶内容と同じものを複写データ５２ａとして記憶している。複写データ５２ａは、各ＥＣＵ３に対して一意に付された識別情報（図５においてＥＣＵａ、ＥＣＵｂ…）と、各ＥＣＵ３のＲＯＭ３の記憶内容とが対応付けて記憶されている。
【００３９】
＜不正改ざん検知及び共有鍵生成＞
本実施の形態に係る通信システムでは、例えば車両１のイグニッションスイッチがオフ状態からオン状態へ切り替えられた場合に、監視装置５が各ＥＣＵ３の不正改ざんの検知処理と、共有鍵の生成処理とを行う。これらの処理は、監視装置５と１つのＥＣＵ３とが１対１で情報交換を行うことにより行われる。監視装置５は、車両１に搭載された複数のＥＣＵ３に対して、所定の順序で処理を行う。監視装置５による処理が終了した後、各ＥＣＵ３による個別の処理が開始される。以下、監視装置５と１つのＥＣＵ３との間で行われる不正改ざん検知処理及び共有鍵生成処理について説明する。
【００４０】
図６及び図７は、監視装置５及びＥＣＵ３による不正改ざん検知処理及び共有鍵生成処理を説明するための模式図である。なお、図６には監視装置５及びＥＣＵ３の間で行われる情報の送受信の手順を示し、図７には算出されるハッシュ値の構成を示してある。不正改ざん検知処理及び共有鍵生成処理において、監視装置５は、まずハッシュ値算出に用いられる情報の生成を行う。本実施の形態において監視装置５は、ランダムシード及び領域指定情報を生成する。監視装置５の処理部５１は、所定のアルゴリズムにより乱数を発生させて得られた所定ビット長のデータをランダムシードとする。領域指定情報は、ハッシュ値算出の対象とするＲＯＭ３２の領域を指定する情報であり、例えば開始アドレス及び終了アドレス、又は、開始アドレス及びデータサイズ等の情報である。処理部５１は、例えば乱数に基づいて開始アドレスを決定し、この開始アドレスに所定数を加算したものを終了アドレスとすることができる。また例えば処理部５１は、初回の開始アドレスを０などの初期値とし、２回目以降については前回の開始アドレスに所定数を加算したものを今回の開始アドレスとすることができる。
【００４１】
監視装置５の処理部５１は、生成したランダムシード及び領域指定情報を、ハッシュ値の計算指示と共に、処理対象のＥＣＵ３へ送信する。また処理部５１のハッシュ値算出部６１は、記憶部５２の複写データ５２ａから処理対象のＥＣＵ３の記憶内容を読み出し、読み出した記憶内容と、生成したランダムシード及び領域指定情報とを用いて、ハッシュ値を算出する。ハッシュ値算出部６１は、複写された記憶内容から領域指定情報にて指定された箇所を抽出し、抽出した記憶内容とランダムシードとを予め定められたハッシュ関数へ入力することにより、ハッシュ値を算出する。本実施の形態においてハッシュ値算出部６１は、ＳＨＡ−１のハッシュ関数を用いて１６０ビットのハッシュ値を算出するものとする。処理部５１は、ハッシュ値算出部６１が算出したハッシュ値を記憶部５２に記憶しておく。
【００４２】
監視装置５からのランダムシード及び領域指定情報を受信したＥＣＵ３は、自らのＲＯＭ３２の記憶内容と、受信したランダムシード及び領域指定情報とを用いて、処理部３１のハッシュ値算出部４１にてハッシュ値を算出する。ハッシュ値算出部４１は、ＲＯＭ３２から領域指定情報にて指定された箇所を抽出し、抽出した記憶内容とランダムシードとを予め定められたハッシュ関数へ入力することにより、ハッシュ値を算出する。処理部３１は、ハッシュ値算出部４１が算出したハッシュ値を記憶部３３に記憶しておく。なお、監視装置５が用いるハッシュ関数と、ＥＣＵ３が用いるハッシュ関数とは同じものである。よって監視装置５が算出するハッシュ値と、ＥＣＵ３が算出するハッシュ値とは、複写データ５２ａの記憶内容がＲＯＭ３２の記憶内容と同じであれば、同じ値となる。逆に、両ハッシュ値が異なる値となった場合、ＥＣＵ３のＲＯＭ３２の記憶内容が改ざんされている可能性がある。
【００４３】
ここで、監視装置５のハッシュ値算出部６１及びＥＣＵ３のハッシュ値算出部４１によるハッシュ値算出の方法を簡単に説明する。ハッシュ値算出部４１，６１は、例えばＭＤ（Message Digest）４、ＭＤ５、ＳＨＡ−１、ＳＨＡ−２５６、ＳＨＡ−３８４、ＳＨＡ−５１２、ＥＩＰＥＭＤ−１６０又はＳＨＡ−３等の既存のハッシュ関数を利用してハッシュ値の算出を行う構成とすることができる。これらはいわゆる一方向のハッシュ関数であり、入力された情報に対して一つのハッシュ値を出力する関数である。ハッシュ関数に入力される情報は、本実施の形態においてＥＣＵ３のＲＯＭ３２に記憶されたプログラム３２ａ又はデータ３２ｂの一部又は全部である。ハッシュ関数に入力されるものがプログラム３２ａ若しくはデータ３２ｂのいずれであっても、又は、プログラム３２ａ及びデータ３２ｂの両方であっても、ハッシュ関数は入力されたものを単に２値の情報として扱い、ハッシュ値を算出することができる。ハッシュ値算出部４１，６１は、予め定められたハッシュ関数を記憶しており、このハッシュ関数を用いてハッシュ値の算出を行う。
【００４４】
以下、ハッシュ値算出部４１，６１がＳＨＡ−１のハッシュ関数を用いてハッシュ値を算出する場合について、算出方法を説明する。なおＳＨＡ−１のハッシュ関数の詳細な処理、及び、ハッシュ値算出部４１，６１が他のハッシュ関数を用いる場合については、これらのハッシュ関数は既存の技術であるため、説明を省略する。
【００４５】
ＳＨＡ−１のハッシュ関数を利用する場合、ハッシュ値算出部４１，６１は、まずパディング処理を行う。パディング処理においてハッシュ値算出部４１，６１は、入力情報の後に余分なデータを付け加えることによって、処理対象の情報のサイズを所定値（５１２ビット）の整数倍となるように調整する。次いでハッシュ値算出部４１，６１は、パディング処理された情報を５１２ビット毎のブロックに分割し、各ブロックについて８０個の値を算出する第１処理を行う。
【００４６】
次いでハッシュ値算出部４１，６１は、所定サイズ（１６０ビット）の初期値に対して、第１処理にて算出した値を用いた演算を行い、演算後の１６０ビットの値をハッシュ値とする第２処理を行う。第２処理において、まずハッシュ値算出部４１，６１は、１６０ビットの初期値に対して、１つのブロックについて算出した８０個の値を用いて８０ステップの演算を行う。この８０ステップの演算により、１６０ビットの初期値に対して、ブロックの情報を混ぜ込むことができ、出力として１６０ビットの値が得られる。ハッシュ値算出部４１，６１は、得られた１６０ビットの値を初期値として、次のブロックについて算出した８０個の値を用いて同様に８０ステップの演算を行う。ハッシュ値算出部４１，６１は、全ブロックについて同様の８０ステップの処理を行い、最終的に得られた１６０ビットの値をハッシュ値とする。
【００４７】
また本実施の形態においてハッシュ値算出部４１，６１は、監視装置５が生成したランダムシードを利用してハッシュ値の算出を行う必要がある。例えばハッシュ値算出部４１，６１は、上記のパディング処理において、入力情報に付加するデータにランダムシードを用いることができる。また例えばハッシュ値算出部４１，６１は、上記の第２処理において、１６０ビットの初期値にランダムシードを用いることができる。本実施の形態においては、第２処理の初期値にランダムシードを用いるものとする。
【００４８】
なおハッシュ値算出部４１，６１によるランダムシードの利用方法は上記のものに限らない。例えばハッシュ値算出部４１，６１は、ハッシュ値算出の対象とするＲＯＭ３２の記憶内容とランダムシードとの論理演算値（排他的論理和など）をハッシュ関数への入力情報とすることができる。また例えばハッシュ値算出部４１，６１は、ハッシュ値算出の対象とするＲＯＭ３２の記憶内容の先頭部分又は末尾部分等の所定位置にランダムシードを付加したものをハッシュ関数への入力情報とすることができる。
【００４９】
監視装置５の処理部５１は、ランダムシード及び領域指定情報のＥＣＵ３への送信並びにハッシュ値算出部４１によるハッシュ値の算出を終えた後、算出したハッシュ値の一部分を抽出する処理を抽出部６２にて行う。本実施の形態において抽出部６２は、算出した１６０ビットのハッシュ値から、６４ビットの値を抽出して確認用情報（ハッシュ値の第１部分）とする。図７に示す例では、１６０ビットのハッシュ値のうち０〜６３の６４ビットを確認用情報として抽出している。処理部５１は、抽出部６２が抽出した確認用情報を含むハッシュ確認指示を、処理対象のＥＣＵ３へ送信する。
【００５０】
監視装置５からハッシュ確認指示を受信したＥＣＵ３の処理部３１は、受信したハッシュ確認指示に含まれる確認用情報を取得する。処理部３１のハッシュ値判定部４２は、監視装置５から取得した確認用情報と、自らがハッシュ値算出部４１にて算出したハッシュ値とを比較する。ハッシュ値判定部４２は、ハッシュ値算出部４１が算出したハッシュ値に、監視装置５から確認用情報として取得したハッシュ値の一部が含まれるか否かを判定する。自らのハッシュ値に確認用情報のハッシュ値が含まれないとハッシュ値判定部４２が判定した場合、ＥＣＵ３が算出したハッシュ値と監視装置５が算出したハッシュ値が一致しないと考えられるため、処理部３１は処理を中断し、監視装置５へエラー通知などを行う。
【００５１】
自らのハッシュ値に確認用情報のハッシュ値が含まれるとハッシュ値判定部４２が判定した場合、ＥＣＵ３が算出したハッシュ値と監視装置５が算出したハッシュ値とが同じ値であるとみなし、処理部３１は、監視装置５へハッシュ確認指示に対する応答（ハッシュ確認応答）を送信する処理を行う。このときに処理部３１の抽出部４３は、ハッシュ値算出部４１が算出した１６０ビットのハッシュ値から確認用情報に相当する６４ビットを除いた部分から、更に６４ビットの情報を抽出する。図７に示す例では、監視装置５からの確認用情報に続く６４ビットの情報を、抽出部４３が応答情報（ハッシュ値の第２部分）として抽出している。処理部３１は、抽出部４３が抽出した６４ビットの応答情報をハッシュ確認応答に含めて監視装置５へ送信する。なおハッシュ値から確認用情報及び応答情報を抽出する方法は、図７に示すものに限らない。例えば確認用情報及び応答情報の一部が重複していてもよい。
【００５２】
ＥＣＵ３からハッシュ確認応答を受信した監視装置５の処理部５１は、受信したハッシュ確認応答に含まれる応答情報を取得する。処理部５１のハッシュ値判定部６３は、ＥＣＵ３から取得した応答情報と、自らがハッシュ値算出部６１にて算出したハッシュ値とを比較する。ハッシュ値判定部６３は、ハッシュ値算出部６１が算出したハッシュ値から抽出部６２が抽出した確認用情報を除いた部分に、ＥＣＵ３からの応答情報として取得したハッシュ値の一部が含まれるか否かを判定する。自らのハッシュ値に応答情報のハッシュ値が含まれないとハッシュ値判定部６３が判定した場合、監視装置５が算出したハッシュ値とＥＣＵ３が算出したハッシュ値とが一致しないと考えられるため、処理部５１は処理を中断し、ＥＣＵ３へエラー通知などを行う。
【００５３】
自らのハッシュ値に応答情報のハッシュ値が含まれるとハッシュ値判定部６３が判定した場合、処理部５１は、監視装置５が算出したハッシュ値とＥＣＵ３が算出したハッシュ値とが同じ値であるとみなす。このときに処理部５１は、ＥＣＵ３へハッシュ値の判定に成功した旨を通知してもよい。処理部５１の鍵生成部６４は、ハッシュ値算出部６１が算出したハッシュ値と、抽出部６２が抽出した確認用情報と、ＥＣＵ３から取得した応答情報とに基づいて、ＥＣＵ３との通信にて暗号処理に用いる共有鍵を生成する。処理部５１は、鍵生成部６４が生成した共有鍵を、例えば記憶部５２に記憶しておく。図７に示す例では、ハッシュ値算出部６１が算出した１６０ビットのハッシュ値から、確認用情報の６４ビットと応答情報の６４ビットとを取り除いた３２ビットの情報を共有鍵としている。
【００５４】
同様に、ＥＣＵ３の鍵生成部４４は、自らのハッシュ値算出部４１が算出した１６０ビットのハッシュ値から、確認用情報として監視装置５から受信した６４ビットの情報と、抽出部４３が応答情報として抽出した６４ビットの情報とを取り除いた３２ビットの情報を共有鍵とする。処理部３１は、鍵生成部４４が生成した共有鍵を、例えば記憶部３３に記憶しておく。これにより、ＥＣＵ３及び監視装置５は、３２ビットの鍵情報を共有することができる。なお鍵情報は、図７に示すものに限らない。例えば確認用情報及び応答情報の一部が重複していてもよい。
【００５５】
以後、ＥＣＵ３及び監視装置５は、上記の手順で生成した共有鍵を用いて通信を行う。なお共有鍵を用いた通信は、既存の技術であるため、詳細な説明は省略する。例えばＥＣＵ３の処理部３１は、監視装置５へ送信する情報を暗号処理部４５にて共有鍵を用いて暗号化し、暗号化した情報をＣＡＮ通信部３４へ与えて監視装置５へ送信する。監視装置５の処理部５１は、ＥＣＵ３から受信した情報を暗号処理部６５にて復号する。又は、例えばＥＣＵ３の処理部３１は、監視装置５へ送信する情報及び共有鍵に基づいて暗号処理部４５が認証情報を生成し、生成した認証情報を送信情報に付して監視装置５へ送信する。監視装置５の処理部５１は、ＥＣＵ３からの受信情報に付された認証情報が正当なものであるか否かを暗号処理部４５が共有鍵を用いて判定し、認証情報が正当なものである場合に受信情報を用いた処理を行う。
【００５６】
＜共有鍵の更新＞
ＥＣＵ３及び監視装置５の間で同じ共有鍵を用いて通信を繰り返し行った場合、通信内容を傍受した悪意の装置が共有鍵を推定する可能性が高まる。そこで本実施の形態に係る通信システムでは、所定のタイミングで共有鍵を更新する処理を行う。例えば、共有鍵を所定回数（１０回又は１００回等）用いた場合に更新処理を行う構成とすることができる。例えば、車両１のイグニッションスイッチがオフ状態からオン状態へ変化した場合に更新処理を行う構成とすることができる。また例えば、何らかの通信エラーが発生した場合に更新処理を行う構成とすることができる。これら以外のタイミングで共有鍵の更新処理を行ってもよい。
【００５７】
本実施の形態に係る通信システムでは、共有鍵の更新処理について２種の方法を提供する。第１の方法は、上述のような共有鍵の生成処理を最初から行う方法である。即ち共有鍵を更新するタイミングとなった場合、監視装置５がランダムシード及び領域指定情報を生成してハッシュ値計算指示をＥＣＵ３へ送信し、ハッシュ値の再算出及び共有鍵の再生成を行う。
【００５８】
共有鍵を更新する第２の方法は、ＥＣＵ３及び監視装置５がそれぞれ記憶している算出済みのハッシュ値を用いる方法である。この方法は、ＥＣＵ３及び監視装置５にてハッシュ値を算出するための処理を行う必要がないため、短時間で行うことが可能であるという利点がある。以下、記憶したハッシュ値を利用して共有鍵を更新する方法について説明する。
【００５９】
図８は、共有鍵の更新処理を説明するための模式図である。ＥＣＵ３は、共有鍵を生成した際に算出したハッシュ値３３ａを記憶部３３に記憶している。同様に監視装置５は、共有鍵を生成した際に算出したハッシュ値５２ｂを記憶部５２に記憶している。ＥＣＵ３及び監視装置５が記憶しているハッシュ値は同じ値である。ただし、監視装置５は複数のＥＣＵ３との間で共有鍵の生成処理を行うため、各ＥＣＵ３についてハッシュ値を記憶している。図８上段に示した図は、図７に示した図と同じものであり、ＥＣＵ３及び監視装置５が記憶しているハッシュ値及び現時点（更新処理前）での共有鍵等を図示してある。
【００６０】
共有鍵を更新する必要が生じた場合、監視装置５の処理部５１は、記憶部５２に記憶しているハッシュ値５２ｂから、新たな確認用情報を抽出する処理を抽出部６２にて行う。このときに抽出部６２は、前回の共有鍵生成又は更新の際とは異なる確認用情報を抽出する。このため監視装置５は、確認用情報を抽出した位置（ハッシュ値の何ビット目から何ビット目までを確認用情報としたか）を記憶していることが好ましいが、現在の共有鍵が記憶しているハッシュ値のいずれの部分に該当するかを調べることにより前回の確認用情報の抽出位置を特定することもできる。
【００６１】
例えば抽出部６２は、乱数を生成し、前回の抽出位置に対して乱数を加算した位置を今回の抽出位置とすることができる。図８中段に示した例では、前回の抽出位置（０〜６３ビット）に対して１０ビットを加算し、記憶しているハッシュ値の１０〜７３ビットを確認用情報として抽出している。監視装置５の処理部５１は、抽出部６２が抽出した６４ビットの確認用情報を含むハッシュ確認指示をＥＣＵ３へ送信する。これを受信したＥＣＵ３の抽出部４３は、記憶部３３に記憶しているハッシュ値３３ａから応答情報を抽出する。図８中段に示した例では、確認用情報に続く７４〜１３７ビットを応答情報として抽出している。ＥＣＵ３の処理部３１は、抽出した確認用情報を含むハッシュ確認応答を監視装置５へ送信する。これにより監視装置５及びＥＣＵ３は、新たな確認用情報及び応答情報を得ることができ、自らが記憶しているハッシュ値から確認用情報及び応答情報を除いた３２ビットの情報を新たな共有鍵とする。図８中段に示した例では、ハッシュ値の１３８〜１５９ビット、０〜９ビットの情報を共有鍵としている。
【００６２】
図８下段には、更に共有鍵を更新する必要が生じた場合の例を示してある。監視装置５は、前回の抽出位置に対して２２ビットを加算し、ハッシュ値の３２〜９５ビットを確認用情報として抽出してＥＣＵ３へ送信する。ＥＣＵ３は、確認用情報に続く９６〜１５９ビットを応答情報として抽出して監視装置５へ送信する。監視装置５及びＥＣＵ３は、記憶しているハッシュ値から確認用情報及び応答情報を除いた０〜３１ビットを共有鍵とする。
【００６３】
このように、本実施の形態に係る通信システムでは、算出済みのハッシュ値を再利用し、監視装置５によるハッシュ値からの確認用情報の抽出位置を変化させることによって、共有鍵を更新することができる。本例の場合、１６０ビットのハッシュ値からは少なくとも１６０通りの共有鍵を得ることが可能である。また本実施の形態に係る通信システムでは、監視装置５がランダムシード及び領域指定情報を変更してハッシュ値の再算出を行うことによって、更に多くの共有鍵を得ることが可能である。
【００６４】
＜フローチャート＞
以下、本実施の形態に係る通信システムの監視装置５及びＥＣＵ３が行う処理を、フローチャートを用いて説明する。図９は、監視装置５が行う不正改ざん検知及び共有鍵生成の処理手順を示すフローチャートである。監視装置５の処理部５１は、ハッシュ値算出に用いられるランダムシードと、ＥＣＵ３のＲＯＭ３２の記憶領域をしている領域指定情報とを生成する（ステップＳ１）。処理部５１は、生成したランダムシード及び領域指定情報を含むハッシュ値計算指示を、ＣＡＮ通信部５３にて処理対象のＥＣＵ３へ送信する（ステップＳ２）。
【００６５】
処理部５１のハッシュ値算出部６１は、記憶部５２から処理対象のＥＣＵ３の記憶内容の複写データ５２ａを取得し、取得した複写データ５２ａとステップＳ１にて生成したランダムシード及び領域指定情報とを基に、所定のハッシュ関数を用いてハッシュ値を算出し、算出したハッシュ値を記憶部５２に記憶する（ステップＳ３）。処理部５１の抽出部６２は、ステップＳ３にて算出したハッシュ値から一部分を確認用情報として抽出する（ステップＳ４）。処理部５１は、抽出した確認用情報を含むハッシュ確認指示を、ＣＡＮ通信部５３にて処理対象のＥＣＵ３へ送信する（ステップＳ５）。
【００６６】
次いで処理部５１は、ハッシュ確認指示に対してＥＣＵ３が送信するハッシュ確認応答をＣＡＮ通信部５３にて受信したか否かを判定する（ステップＳ６）。ハッシュ確認応答を受信していない場合（Ｓ６：ＮＯ）、処理部５１は、処理対象のＥＣＵからエラー通知を受信したか否かを判定する（ステップＳ７）。エラー通知を受信していない場合（Ｓ７：ＮＯ）、処理部５１はステップＳ６へ処理を戻し、ハッシュ確認応答又はエラー通知をＥＣＵ３から受信するまで待機する。
【００６７】
処理対象のＥＣＵ３からハッシュ確認応答を受信した場合（Ｓ６：ＹＥＳ）、処理部５１のハッシュ値判定部６３は、受信したハッシュ確認応答に含まれる応答情報が、ステップＳ３にて算出したハッシュ値に含まれるか否かに応じて、応答情報の成否を判定する（ステップＳ８）。ＥＣＵ３からエラー通知を受信した場合（Ｓ７：ＹＥＳ）、又は、ＥＣＵ３から受信した応答情報が正しいものでない場合（Ｓ８：ＮＯ）、処理部５１は、対象のＥＣＵ３のＲＯＭ３２の記憶内容が改変された可能性があると判断し、例えばこのＥＣＵ３の動作を停止させるなどの適宜のエラー処理を行って（ステップＳ９）、処理を終了する。
【００６８】
ＥＣＵ３から受信した応答情報が正しい場合（Ｓ８：ＹＥＳ）、処理部５１の鍵生成部６４は、ＥＣＵ３との通信に用いる共有鍵の生成を行う（ステップＳ１０）。このときに鍵生成部６４は、ステップＳ３にて算出したハッシュ値から、ステップＳ４にて抽出した確認用情報及びステップＳ６にて受信した応答情報を除いたものを共有鍵とする。処理部５１は、鍵生成部６４が生成した共有鍵を記憶部５２に記憶して（ステップＳ１１）、処理を終了する。
【００６９】
図１０は、監視装置５からのハッシュ値計算指示に応じてＥＣＵ３が行う処理の手順を示すフローチャートである。ＥＣＵ３の処理部３１は、ＣＡＮ通信部３４にて監視装置５からハッシュ値計算指示を受信したか否かを判定する（ステップＳ２１）。ハッシュ値計算指示を受信していない場合（Ｓ２１：ＮＯ）、処理部３１は、ハッシュ値計算指示を受信するまで待機する。ハッシュ値計算指示を受信した場合（Ｓ２１：ＹＥＳ）、処理部３１は、受信したハッシュ値計算指示に含まれるランダムシード及び領域指定情報を取得する（ステップＳ２２）。処理部３１のハッシュ値算出部４１は、ＲＯＭ３２の記憶内容と、ステップＳ２２にて取得したランダムシード及び領域指定情報とに基づいて、所定のハッシュ関数を用いてハッシュ値を算出する（ステップＳ２３）。処理部３１は、算出したハッシュ値を記憶部３３に記憶し（ステップＳ２４）、処理を終了する。
【００７０】
図１１は、監視装置５からのハッシュ確認指示に応じてＥＣＵ３が行う処理の手順を示すフローチャートである。なお本処理は、最初に共有鍵を生成する場合と、共有鍵を更新する場合とで共通である。ＥＣＵ３の処理部３１は、ＣＡＮ通信部３４にて監視装置５からハッシュ確認指示を受信したか否かを判定する（ステップＳ３１）。ハッシュ確認指示を受信していない場合（Ｓ３１：ＮＯ）、処理部３１は、ハッシュ確認指示を受信するまで待機する。ハッシュ確認指示を受信した場合（Ｓ３１：ＹＥＳ）、処理部３１は、記憶部３３に記憶したハッシュ値３３ａを読み出す（ステップＳ３２）。処理部３１のハッシュ値判定部４２は、ステップＳ３１にて受信したハッシュ確認指示に含まれる確認用情報が、ステップＳ３２にて読み出したハッシュ値に含まれるか否かに応じて、確認用情報の成否を判定する（ステップＳ３３）。確認用情報が正しものでない場合（Ｓ３３：ＮＯ）、処理部３１は、エラー通知を監視装置５へ送信し（ステップＳ３４）、処理を終了する。
【００７１】
監視装置５からの確認用情報が正しい場合（Ｓ３３：ＹＥＳ）、処理部３１の抽出部４３は、ステップＳ３２にて読み出したハッシュ値から確認用情報を除いた部分から、応答情報を抽出する（ステップＳ３５）。処理部３１は、抽出した応答情報をＣＡＮ通信部３４にて監視装置５へ送信する（ステップＳ３６）。処理部３１の鍵生成部４４は、監視装置５との通信に用いる共有鍵の生成を行う（ステップＳ３７）。このときに鍵生成部４４は、ステップＳ３２にて読み出したハッシュ値から、ステップＳ３１にて受信した確認用情報と、ステップＳ３５にて抽出した応答情報とを除いたものを共有鍵とする。処理部３１は、鍵生成部４４が生成した共有鍵を記憶部３３に記憶して（ステップ３８）、処理を終了する。
【００７２】
図１２は、監視装置５が行う共有鍵の更新処理の手順を示すフローチャートである。監視装置５の処理部５１は、例えば共有鍵を所定回数利用した場合など、共有鍵を更新するタイミングに至ったか否かを判定する（ステップＳ４１）。共有鍵を更新するタイミングに至っていない場合（Ｓ４１：ＮＯ）、処理部５１は、共有鍵を更新するタイミングに至るまで待機する。共有鍵を更新するタイミングに至った場合（Ｓ４１：ＹＥＳ）、処理部５１は、記憶部５２に記憶されたハッシュ値５２ｂを読み出す（ステップＳ４２）。
【００７３】
次いで処理部５１の抽出部６２は、ハッシュ値から前回の確認用情報を抽出した位置を取得する（ステップＳ４３）。抽出部６２は、前回の抽出位置を記憶部５２などに記憶しておいてこれを取得してもよく、ハッシュ値と現時点の共有鍵とを比較して抽出位置を取得してもよい。抽出部６２は、乱数を発生させ（ステップＳ４４）、前回の抽出位置に乱数を加えた位置を算出して、ステップＳ４２にて読み出したハッシュ値の該当位置から確認用情報を抽出する（ステップＳ４５）。
【００７４】
処理部５１は、抽出部６２が抽出した確認用情報を含むハッシュ確認指示を処理対象のＥＣＵ３へ送信する（ステップＳ４６）。なお以降の処理は、図９に示したフローチャートのステップＳ６〜Ｓ１１と同じであるが、図１２にはこれらの処理を簡略化して手順を示してある。処理部５１は、ハッシュ確認指示に対してＥＣＵ３が送信するハッシュ確認応答を受信する（ステップＳ４７）。処理部５１のハッシュ値判定部６３は、受信したハッシュ確認応答に含まれる応答情報が正しいか否かの判定を行う（ステップＳ４８）。処理部５１の鍵生成部６４は、ステップＳ４２にて読み出したハッシュ値と、ステップＳ４５にて抽出した確認用情報と、ステップＳ４８にて正しいと判定した応答情報とに基づいて、新たな共有鍵を生成し（ステップＳ４９）、生成した共有鍵を記憶部５２に記憶して（ステップＳ５０）、処理を終了する。
【００７５】
＜まとめ＞
以上の構成の本実施の形態に係る通信システムは、ＥＣＵ３及び監視装置５が鍵情報を共有し、この鍵情報を用いた通信を行う。ＥＣＵ３は、ＲＯＭ３２の記憶内容に基づいてハッシュ値を算出するハッシュ値算出部４１を有する。監視装置５は、ＥＣＵ３のＲＯＭ３２の記憶内容の複写データ５２ａを記憶部５２に記憶しておき、複写した記憶内容に基づいてハッシュ値を算出するハッシュ値算出部６１を有する。ＥＣＵ３のハッシュ値算出部４１と監視装置５のハッシュ値算出部６１とは、同じハッシュ関数による演算を行うものであり、入力される情報が同じであれば算出されるハッシュ値は同じ値となる。
【００７６】
監視装置５は、複写データ５２ａに基づくハッシュ値を算出し、その一部分を確認用情報としてＥＣＵ３へ送信する。ＥＣＵ３は、監視装置５から確認用情報として受信したハッシュ値の一部分と、自らが算出したハッシュ値とを比較し、受信したハッシュ値の一部分が自らのハッシュ値に含まれるか否かを判定する。受信したハッシュ値の一部分が自らのハッシュ値に含まれない場合、監視装置５の複写データ５２ａとＥＣＵ３のＲＯＭ３２の記憶内容とが一致しないこととなるため、ＥＣＵ３のＲＯＭ３２の記憶内容が不正に改ざんされた可能性があると判断できる。受信したハッシュ値の一部分が自らのハッシュ値に含まれる場合、ＥＣＵ３は、自らが算出したハッシュ値から確認用情報を除いた値から、更に一部分を抽出して応答情報として監視装置５へ送信する。
【００７７】
監視装置５は、ＥＣＵ３から応答情報として受信したハッシュ値の一部分と、自らが算出したハッシュ値とを比較し、受信したハッシュ値の一部分が自らのハッシュ値に含まれるか否かを判定する。受信したハッシュ値の一部分が自らのハッシュ値に含まれない場合、ＥＣＵ３のＲＯＭ３２の記憶内容が不正に改ざんされた可能性があると判断できる。受信したハッシュ値の一部分が自らのハッシュ値に含まれる場合、ＥＣＵ３及び監視装置５がそれぞれ算出したハッシュ値が一致し、ＲＯＭ３２の記憶内容に不正な改ざんがなされていないと判断できる。
【００７８】
ＥＣＵ３及び監視装置５は、それぞれ自らが算出したハッシュ値から、監視装置５が抽出した確認用情報と、ＥＣＵ３が抽出した応答情報とを除いた残余値を算出し、この残余値を鍵情報として共有して暗号処理を行う。なお残余値の全てを鍵情報としてもよく、残余値の一部を鍵情報としてもよい。これらにより、ＥＣＵ３及び監視装置５は、ＥＣＵ３のＲＯＭ３２の記憶内容の不正改ざんを検知する処理と、暗号処理のための鍵情報を決定する処理とを同時的に行うことができる。
【００７９】
また本実施の形態に係る通信システムでは、ハッシュ値の算出に先立って、監視装置５はランダムシード及び領域指定情報を生成してハッシュ値算出用情報としてＥＣＵ３へ送信する。ＥＣＵ３及び監視装置５は、ランダムシード及び領域指定情報を用いてハッシュ値の算出を行う。これにより、ハッシュ値算出が困難化されるため、記憶内容の不正改ざんの検知の信頼性を向上することができ、共有する鍵情報の信頼性を向上することができる。
【００８０】
また本実施の形態に係る通信システムでは、ＥＣＵ３及び監視装置５は、算出したハッシュ値をそれぞれ記憶しておく。監視装置５は、例えば鍵情報を生成下から所定期間が経過した場合などの適宜のタイミングで、鍵情報の更新処理を行う。更新処理においては、新たにハッシュ値の算出を行うことなく、記憶しておいたハッシュ値を用いることにより、処理負荷を低減する。監視装置５は、記憶しておいたハッシュ値から、現時点の鍵情報を生成した際の確認用情報とは異なる一部分を抽出し、抽出した情報を新たな確認用情報としてＥＣＵ３へ送信する。監視装置５による確認用情報の送信により、鍵情報の更新処理が開始される。ＥＣＵ３は、受信した確認用情報と、記憶しておいたハッシュ値とに基づいて応答情報を生成して監視装置５へ送信する。これによりＥＣＵ３及び監視装置５は、記憶しておいたハッシュ値と、新たな確認用情報及び応答情報とに基づいて新たな鍵情報を生成することができ、鍵情報を更新することができる。
【００８１】
なお本実施の形態においては、ＥＣＵ３及び監視装置５の通信を、車両１に敷設されたＣＡＮバスを介した有線通信にて行う構成としたが、これに限るものではなく、無線ＬＡＮなどの無線通信を行う構成としてもよい。またＣＡＮ以外のプロトコルによる有線通信を行う構成としてもよい。また監視装置５は、ＥＣＵ３のＲＯＭ３２の記憶内容を複写した複写データ５２ａを記憶部５２に記憶する構成としたが、これに限るものではない。例えば複写データ５２ａは別のサーバ装置などが記憶し、監視装置５が必要に応じてサーバ装置から複写データ５２ａを取得してもよく、更にはサーバ装置にハッシュ値算出機能を設けて監視装置５がサーバ装置から必要なハッシュ値を取得する構成としてもよい。また本実施の形態においては、車両１に搭載された通信システムを例に説明を行ったが、通信システムは車両１に搭載されるものに限らず、例えば飛行機又は船舶等の移動体に搭載されるものであってよく、また例えば移動体ではなく工場、オフィス又は学校等に設置されるものであってもよい。
【００８２】
（変形例）
変形例に係る通信システムの監視装置５は、上述の処理に加えて、ＥＣＵ３へハッシュ確認指示を送信してから、このＥＣＵ３からのハッシュ確認応答を受信するまでの時間を計測する処理を行う。監視装置５は、計測した時間が閾値を超えるか否かを判定し、計測時間が閾値を超える場合、ＥＣＵ３のＲＯＭ３２の記憶内容に対する不正な書き換えが行われたと判定する。なお判定に用いる閾値は、監視装置５及びＥＣＵ３の通信速度、及び、ＥＣＵ３の処理能力等を考慮し、本システムの設計段階などにおいて予め決定しておく。
【００８３】
例えば監視装置５及びＥＣＵ３の間に不正な機器が介在し、監視装置５及びＥＣＵ３の間で送受信される情報の中継及び改変等が行われる虞がある。また例えばＥＣＵ３のＲＯＭ３２に記憶されたプログラム３２ａ及びデータ３２ｂが圧縮され、圧縮によるＲＯＭ３２の空き領域に不正なプログラムを侵入させて不正な処理が行われる虞がある。このような場合、不正な機器又はプログラム等がハッシュ値を算出して監視装置５への応答を行うことができるものであったとしても、応答の送信までに正常時と比較して長い時間を要することが予想される。このため本実施の形態に係る通信システムは、上記のような時間監視を行うことによって、不正な機器又はプログラム等による不正な処理が行われることを防止できる。
【００８４】
（実施の形態２）
実施の形態２に係る通信システムでは、ＥＣＵ３及び監視装置５は、自らが算出したハッシュ値から確認用情報及び応答情報を除いた残余値を共有鍵とするのではなく、この残余値を用いて更に演算を行うことで共有鍵を生成する。図１３は、実施の形態２に係る通信システムの共有鍵生成方法を説明するための模式図である。なお本図は、監視装置５がハッシュ値計算指示及びハッシュ確認指示をＥＣＵ３へ送信し、ＥＣＵ３がハッシュ確認応答を監視装置５へ送信し、ＥＣＵ３及び監視装置５が自らの算出したハッシュ値から確認用情報及び応答情報を除いた残余値を算出した後からの処理を図示してある。共有鍵の生成処理において、まず実施の形態２に係るＥＣＵ３及び監視装置５は、自らの算出したハッシュ値から確認用情報及び応答情報を除いた残余値を元ｇとする（ＳＡ１、ＳＢ１）。ＥＣＵ３及び監視装置５が算出するハッシュ値は同じ値であるため、ＥＣＵ３及び監視装置５の元ｇは同じ値となる。
【００８５】
次いでＥＣＵ３及び監視装置５は、予め記憶している素数テーブルから１つの素数ｐを選択する処理を行う（ＳＡ２、ＳＢ２）。図１４は、素数テーブルの一例を示す模式図である。本実施の形態に係る素数テーブルは、０〜１５９の１６０個のラベルに対して、素数０〜素数１５９の１６０個の大きな素数が記憶されたテーブルである。ＥＣＵ３及び監視装置５は、自らの算出したハッシュ値と監視装置５が抽出した確認用情報とを比較し、ハッシュ値における確認用情報の位置を調べ、確認用情報の開始ビットがハッシュ値における何ビット目に相当するかを調べる。例えば確認用情報がハッシュ値の１０〜７３ビットに相当する場合、確認用情報の開始ビットである１０をＥＣＵ３及び監視装置５は取得し、素数テーブルのラベル１０に対応する素数１０を選択する。なおＥＣＵ３及び監視装置５は、同じ内容の素数テーブルを予め記憶しており、選択される素数ｐは同じ値となる。
【００８６】
次いでＥＣＵ３は、秘密値ａを生成する（ＳＡ３）。秘密値ａは、ＥＣＵ３内でのみ利用される値であり、例えば乱数などに基づいて生成することができる。同様に監視装置５は、秘密値ｂを生成する（ＳＢ３）。秘密値ｂは、監視装置５内でのみ利用される値であり、例えば乱数などに基づいて生成することができる。ＥＣＵ３の秘密値ａと、監視装置５の秘密値ｂとは、異なる値であってよい。
次いでＥＣＵ３は、元ｇ、素数ｐ及び秘密値ａを用いて（１）式により公開値Ａを生成する（ＳＡ４）。同様に監視装置５は、元ｇ、素数ｐ及び秘密値ｂを用いて（２）式により公開値Ｂを生成する（ＳＢ４）。
【００８７】
【数１】
0006338949.tif 000002
【００８８】
次いでＥＣＵ３は、算出した公開値Ａを監視装置５へ送信すると共に（ＳＡ５）、監視装置５から送信される公開値Ｂを受信する（ＳＡ６）。同様に監視装置５は、算出した公開値ＢをＥＣＵ３へ送信すると共に（ＳＢ５）、ＥＣＵ３から送信される公開値Ａを受信する（ＳＢ６）。
次いでＥＣＵ３は、受信した公開値Ｂ、秘密値ａ及び素数ｐを用いて（３）式により共有鍵Ｋａを生成する（ＳＡ７）。同様に監視装置５は、受信した公開値Ａ、秘密値ｂ及び素数ｐを用いて（４）式により共有鍵Ｋｂを生成する（ＳＢ７）。なおＥＣＵ３が生成する共有鍵Ｋａと、監視装置５が生成する共有鍵Ｋｂとは同じ値となる。
【００８９】
【数２】
0006338949.tif 000003
【００９０】
共有鍵を生成したＥＣＵ３及び監視装置５は、生成した共有鍵を記憶しておき、以後の通信においてこの共有鍵を用いて暗号処理を行う。また共有鍵の更新処理を行う場合、ＥＣＵ３及び監視装置５は、図１３に示した処理を行って共有鍵を再生成する。
【００９１】
以上の構成の実施の形態２に係る通信システムは、ＥＣＵ３及び監視装置５は、例えば乱数などにより秘密値ａ、ｂをそれぞれ生成し、秘密値ａ、ｂ及び残余値に基づいて公開値Ａ、Ｂをそれぞれ生成して互いに送信し、自らの秘密値ａ、ｂ及び受信した公開値Ａ、Ｂに基づいて鍵情報Ｋａ、Ｋｂをそれぞれ生成する。またＥＣＵ３及び監視装置５は、共通の素数テーブルを記憶しておく。素数テーブルには複数の素数が記憶されており、ＥＣＵ３及び監視装置５は、ハッシュ値における確認用情報の開始ビット位置に応じて１つの素数を選択する。ＥＣＵ３及び監視装置５は、選択した素数を用いて公開値Ａ、Ｂを生成する。
これらにより、ＥＣＵ３及び監視装置５が共有する鍵情報の秘匿性を高めることができる。
【００９２】
なお本実施の形態においては、秘密値ａ、ｂを乱数に基づいて生成するものとしたが、これに限るものではなく、その他の種々の方法で秘密値ａ、ｂを生成してよい。例えば素数テーブルと同様に複数の秘密値を記憶した秘密値テーブルを予め記憶しておき、秘密値テーブルから１つの秘密値を選択する構成とすることができる。また素数テーブルの構成は図１４に示したものに限らず、その他の種々の構成であってよい。また素数テーブルから１つの素数を選択する方法は、確認用情報の開始ビット位置に基づくものに限らず、その他の種々の方法を採用してよい。
【００９３】
実施の形態２に係る通信システムのその他の構成は、実施の形態１に係る通信システムの構成と同様であるため、同様の箇所には同じ符号を付して詳細な説明を省略する。
【符号の説明】
【００９４】
１  車両
３  ＥＣＵ（第２通信装置）
５  監視装置（第１通信装置）
３１  処理部（第２秘密値生成手段、第２公開値生成手段、素数選択手段、更新処理手段）
３２  ＲＯＭ（記憶部）
３２ａ  プログラム
３２ｂ  データ
３３  記憶部（第２ハッシュ値記憶部）
３３ａ  ハッシュ値
３４  ＣＡＮ通信部（第１部分受信手段、第２部分送信手段、第２公開値送信手段、第１公開値受信手段、ハッシュ値算出用情報受信手段）
４１  ハッシュ値算出部（第２ハッシュ値算出手段）
４２  ハッシュ値判定部（ハッシュ値判定手段）
４３  抽出部（抽出手段）
４４  鍵生成部（鍵情報生成手段）
４５  暗号処理部（暗号処理手段）
５１  処理部（第１秘密値生成手段、第１公開値生成手段、素数選択手段、ハッシュ値算出用情報生成手段、更新処理手段）
５２  記憶部（第１ハッシュ値記憶部）
５２ａ  複写データ
５２ｂ  ハッシュ値
５３  ＣＡＮ通信部（第１部分送信手段、第２部分受信手段、第１公開値送信手段、第２公開値受信手段、ハッシュ値算出用情報送信手段）
６１  ハッシュ値算出部（第１ハッシュ値算出手段）
６２  抽出部（抽出手段）
６３  ハッシュ値判定部（ハッシュ値判定手段）
６４  鍵生成部（鍵情報生成手段）
６５  暗号処理部
【図１】
0006338949.tif 000004
【図２】
0006338949.tif 000005
【図３】
0006338949.tif 000006
【図４】
0006338949.tif 000007
【図５】
0006338949.tif 000008
【図６】
0006338949.tif 000009
【図７】
0006338949.tif 000010
【図８】
0006338949.tif 000011
【図９】
0006338949.tif 000012
【図１０】
0006338949.tif 000013
【図１１】
0006338949.tif 000014
【図１２】
0006338949.tif 000015
【図１３】
0006338949.tif 000016
【図１４】
0006338949.tif 000017