特許第6338949号(P6338949)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 国立大学法人名古屋大学の特許一覧 ▶ 株式会社オートネットワーク技術研究所の特許一覧 ▶ 住友電装株式会社の特許一覧 ▶ 住友電気工業株式会社の特許一覧

<>
  • 特許6338949-通信システム及び鍵情報共有方法 図000004
  • 特許6338949-通信システム及び鍵情報共有方法 図000005
  • 特許6338949-通信システム及び鍵情報共有方法 図000006
  • 特許6338949-通信システム及び鍵情報共有方法 図000007
  • 特許6338949-通信システム及び鍵情報共有方法 図000008
  • 特許6338949-通信システム及び鍵情報共有方法 図000009
  • 特許6338949-通信システム及び鍵情報共有方法 図000010
  • 特許6338949-通信システム及び鍵情報共有方法 図000011
  • 特許6338949-通信システム及び鍵情報共有方法 図000012
  • 特許6338949-通信システム及び鍵情報共有方法 図000013
  • 特許6338949-通信システム及び鍵情報共有方法 図000014
  • 特許6338949-通信システム及び鍵情報共有方法 図000015
  • 特許6338949-通信システム及び鍵情報共有方法 図000016
  • 特許6338949-通信システム及び鍵情報共有方法 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6338949
(24)【登録日】2018年5月18日
(45)【発行日】2018年6月6日
(54)【発明の名称】通信システム及び鍵情報共有方法
(51)【国際特許分類】
   H04L 9/08 20060101AFI20180528BHJP
   H04L 9/16 20060101ALI20180528BHJP
   G06F 21/60 20130101ALI20180528BHJP
【FI】
   H04L9/00 601C
   H04L9/00 643
   G06F21/60 320
【請求項の数】12
【全頁数】26
(21)【出願番号】特願2014-139074(P2014-139074)
(22)【出願日】2014年7月4日
(65)【公開番号】特開2016-19054(P2016-19054A)
(43)【公開日】2016年2月1日
【審査請求日】2017年6月12日
(73)【特許権者】
【識別番号】504139662
【氏名又は名称】国立大学法人名古屋大学
(73)【特許権者】
【識別番号】395011665
【氏名又は名称】株式会社オートネットワーク技術研究所
(73)【特許権者】
【識別番号】000183406
【氏名又は名称】住友電装株式会社
(73)【特許権者】
【識別番号】000002130
【氏名又は名称】住友電気工業株式会社
(74)【代理人】
【識別番号】100114557
【弁理士】
【氏名又は名称】河野 英仁
(74)【代理人】
【識別番号】100078868
【弁理士】
【氏名又は名称】河野 登夫
(72)【発明者】
【氏名】高田 広章
(72)【発明者】
【氏名】倉地 亮
(72)【発明者】
【氏名】足立 直樹
【審査官】 青木 重徳
(56)【参考文献】
【文献】 特開2009−9541(JP,A)
【文献】 特開2008−193575(JP,A)
【文献】 特表2007−505408(JP,A)
【文献】 米国特許出願公開第2012/0093312(US,A1)
【文献】 米国特許出願公開第2006/0093144(US,A1)
【文献】 辻井 重男 ほか,暗号と情報セキュリティ,日本,株式会社昭晃堂,1996年 2月20日,初版4刷,pp.72−73
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
G06F 21/60
H04L 9/16
(57)【特許請求の範囲】
【請求項1】
第1通信装置と記憶部を有する第2通信装置とが暗号処理に用いる鍵情報を共有する通信システムにおいて、
前記第1通信装置は、
前記第2通信装置の前記記憶部の記憶内容を記憶した記憶部と、
該記憶部の記憶内容に基づくハッシュ値を算出する第1ハッシュ値算出手段と、
該第1ハッシュ値算出手段が算出したハッシュ値から第1部分を抽出する抽出手段と、
該抽出手段が抽出した前記第1部分を前記第2通信装置へ送信する第1部分送信手段と
を有し、
前記第2通信装置は、
自らの記憶部の記憶内容に基づくハッシュ値を算出する第2ハッシュ値算出手段と、
前記第1通信装置から前記第1部分を受信する第1部分受信手段と、
該第1部分受信手段が受信した前記第1部分が、前記第2ハッシュ値算出手段が算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定手段と、
該ハッシュ値判定手段が一致すると判定した場合に、前記第2ハッシュ値算出手段が算出したハッシュ値から前記第1部分と異なる第2部分を抽出する抽出手段と、
該抽出手段が抽出した前記第2部分を前記第1通信装置へ送信する第2部分送信手段と、
前記第2ハッシュ値算出手段が算出したハッシュ値から前記第1部分及び前記第2部分を除いた残余値に基づいて前記鍵情報を生成する生成手段と
を有し、
前記第1通信装置は、更に、
前記第2通信装置から前記第2部分を受信する第2部分受信手段と、
該第2部分受信手段が受信した前記第2部分が、前記第1ハッシュ値算出手段が算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定手段と、
該ハッシュ値判定手段が一致すると判定した場合に、前記第1ハッシュ値算出手段が算出したハッシュ値から前記第1部分及び前記第2部分を除いた残余値に基づいて前記鍵情報を生成する生成手段と
を有し、
前記記憶内容にはランダムに決定された値を含むこと
を特徴とする通信システム。
【請求項2】
前記第1通信装置及び前記第2通信装置の生成手段は、前記残余値を前記鍵情報とすること
を特徴とする請求項1に記載の通信システム。
【請求項3】
前記第1通信装置は、
第1秘密値を生成する第1秘密値生成手段と、
前記残余値及び前記第1秘密値生成手段が生成した第1秘密値に基づいて、第1公開値を生成する第1公開値生成手段と、
該第1公開値生成手段が生成した第1公開値を前記第2通信装置へ送信する第1公開値送信手段と、
前記第2通信装置から第2公開値を受信する第2公開値受信手段と
を有し、
前記第1通信装置の生成手段は、前記第1秘密値及び前記第2公開値受信手段が受信した前記第2公開値に基づいて、前記鍵情報を生成するようにしてあり、
前記第2通信装置は、
第2秘密値を生成する第2秘密値生成手段と、
前記残余値及び前記第2秘密値生成手段が生成した第2秘密値に基づいて、前記第2公開値を生成する第2公開値生成手段と、
該第2公開値生成手段が生成した第2公開値を前記第1通信装置へ送信する第2公開値送信手段と、
前記第1通信装置から前記第1公開値を受信する第1公開値受信手段と
を有し、
前記第2通信装置の生成手段は、前記第2秘密値及び前記第1公開値受信手段が受信した前記第1公開値に基づいて、前記鍵情報を生成するようにしてあること
を特徴とする請求項1に記載の通信システム。
【請求項4】
前記第1通信装置及び前記第2通信装置は、
複数の素数を記憶した素数テーブルと、
前記素数テーブルから素数を選択する素数選択手段と
をそれぞれ有し、
前記第1通信装置の前記第1公開値生成手段は、前記素数選択手段が選択した素数を用いて前記第1公開値を生成するようにしてあり、
前記第2通信装置の前記第2公開値生成手段は、前記素数選択手段が選択した素数を用いて前記第2公開値を生成するようにしてあること
を特徴とする請求項3に記載の通信システム。
【請求項5】
前記第1秘密値生成手段及び前記第2秘密値生成手段は、乱数に基づいて前記第1秘密値及び前記第2秘密値を生成するようにしてあること
を特徴とする請求項3又は請求項4に記載の通信システム。
【請求項6】
前記第1通信装置は、
ハッシュ値算出に用いる情報を生成するハッシュ値算出用情報生成手段と、
該ハッシュ値算出用情報生成手段が生成したハッシュ値算出用情報を前記第2通信装置へ送信するハッシュ値算出用情報送信手段と
を有し、
前記第1ハッシュ値算出手段は、前記ハッシュ値算出用情報生成手段が生成したハッシュ値算出用情報を用いてハッシュ値を算出するようにしてあり、
前記第2通信装置は、前記第1通信装置から前記ハッシュ値算出用情報を受信するハッシュ値算出用情報受信手段を有し、
前記第2ハッシュ値算出手段は、前記ハッシュ値算出用情報受信手段が受信したハッシュ値算出用情報を用いてハッシュ値を算出するようにしてあること
を特徴とする請求項1乃至請求項5のいずれか1つに記載の通信システム。
【請求項7】
前記ハッシュ値算出用情報生成手段が生成するハッシュ値算出用情報には、乱数を含むこと
を特徴とする請求項6に記載の通信システム。
【請求項8】
前記ハッシュ値算出用情報生成手段が生成するハッシュ値算出用情報には、ハッシュ値の算出対象とする前記第2通信装置の記憶部の領域を規定する情報を含むこと
を特徴とする請求項6又は請求項7に記載の通信システム。
【請求項9】
前記第1通信装置は、
前記第1ハッシュ値算出手段が算出したハッシュ値を記憶する第1ハッシュ値記憶部と、
該第1ハッシュ値記憶部が記憶したハッシュ値に基づいて前記鍵情報を更新する処理を行う更新処理手段と
を有すること
を特徴とする請求項1乃至請求項8のいずれか1つに記載の通信システム。
【請求項10】
前記更新処理手段は、前記第1通信装置の抽出手段により前記第1ハッシュ値記憶部が記憶したハッシュ値から第1部分を抽出し、抽出した前記第1部分を前記第1部分送信手段により前記第2通信装置へ送信し、前記第2部分受信手段にて前記第2通信装置から第2部分を受信して、前記残余値を更新するようにしてあること
を特徴とする請求項9に記載の通信システム。
【請求項11】
前記第2通信装置は、
前記第2ハッシュ値算出手段が算出したハッシュ値を記憶する第2ハッシュ値記憶部と、
前記第1通信装置の前記更新処理手段の更新処理により送信された前記第1部分に基づいて前記第2通信装置の抽出手段により前記第2部分を抽出し、抽出した前記第2部分を前記第2部分送信手段により前記第1通信装置へ送信し、前記第1部分及び前記第2部分に基づいて前記残余値を更新する更新処理手段と
を有すること
を特徴とする請求項10に記載の通信システム。
【請求項12】
第1通信装置と、記憶部を有する第2通信装置とが暗号処理に用いる鍵情報を共有する鍵情報共有方法において、
前記第1通信装置に、前記第2通信装置の記憶部の記憶内容を複写しておき、
前記第1通信装置が、複写した記憶内容に基づくハッシュ値を算出する第1ハッシュ値算出ステップと、
該第1ハッシュ値算出ステップにて算出したハッシュ値から第1部分を抽出する抽出ステップと、
該抽出ステップにて抽出した前記第1部分を前記第2通信装置へ送信する第1部分送信ステップと、
前記第2通信装置が、前記記憶部の記憶内容に基づくハッシュ値を算出する第2ハッシュ値算出ステップと、
前記第2通信装置が、前記第1通信装置から前記第1部分を受信する第1部分受信ステップと、
該第1部分受信ステップにて受信した前記第1部分が、前記第2ハッシュ値算出ステップにて算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定ステップと、
該ハッシュ値判定ステップにて一致すると判定した場合に、前記第2ハッシュ値算出ステップにて算出したハッシュ値から前記第1部分と異なる第2部分を抽出する抽出ステップと、
該抽出ステップにて抽出した前記第2部分を前記第1通信装置へ送信する応答情報送信ステップと、
前記第2ハッシュ値算出ステップにて算出したハッシュ値から前記第1部分及び前記第2部分を除いた残余値に応じた鍵情報を生成する鍵情報生成ステップと、
前記第1通信装置が、前記第2通信装置から前記第2部分を受信する第2部分受信ステップと、
該第2部分受信ステップにて受信した前記第2部分が、前記第1ハッシュ値算ステップにて算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定ステップと、
該ハッシュ値判定ステップにて一致すると判定した場合に、前記第1ハッシュ値算出ステップにて算出したハッシュ値から前記第1部分及び前記第2部分を除いた残余値に応じた鍵情報を生成する鍵情報生成ステップと
を含み、
前記記憶内容にはランダムに決定された値を含むこと
を特徴とする鍵情報共有方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、第1通信装置及び第2通信装置が暗号処理に用いる鍵情報を共有する通信システム及び鍵情報共有方法に関する。
【背景技術】
【0002】
従来、複数の通信装置がネットワークを介して通信を行う通信システムにおいて、通信の信頼性を高めるためデータの暗号化又はメッセージ認証子を付与した通信等が行われる。暗号化などの処理を行うためには、通信を行う各通信装置が共有鍵を保持している必要がある。
【0003】
特許文献1においては、共通鍵暗号方式で使用される暗号鍵の更新を行う暗号鍵更新システムが提案されている。この暗号鍵更新システムでは、電子キー及び車載機の間で予め秘密情報を共有し、秘密情報に対してハッシュ関数を繰り返し適用し得られる結果を共通の暗号鍵とする。暗号鍵を更新する際には、以前の繰り返し回数より1少ない回数だけハッシュ関数を適用して得られる結果を暗号鍵とする。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−284086号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本願の発明者は、通信装置の記憶部に記憶されたプログラム及びデータ等に対する不正な改ざんを検知することができる通信システムを発明し、既に特許出願している。本通信システムにおいても通信の安全性及び信頼性等を向上するため、鍵情報を共有して通信装置間で送受信するデータの暗号化又はメッセージ認証子を付与した通信等を行うことが望まれる。
【0006】
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、第1通信装置及び第2通信装置が鍵情報を共有して暗号処理を行うことができる通信システム及び鍵情報共有方法を提供することにある。
【課題を解決するための手段】
【0007】
本発明に係る通信システムは、第1通信装置と記憶部を有する第2通信装置とが暗号処理に用いる鍵情報を共有する通信システムにおいて、前記第1通信装置は、前記第2通信装置の前記記憶部の記憶内容を記憶した記憶部と、該記憶部の記憶内容に基づくハッシュ値を算出する第1ハッシュ値算出手段と、該第1ハッシュ値算出手段が算出したハッシュ値から第1部分を抽出する抽出手段と、該抽出手段が抽出した前記第1部分を前記第2通信装置へ送信する第1部分送信手段とを有し、前記第2通信装置は、自らの記憶部の記憶内容に基づくハッシュ値を算出する第2ハッシュ値算出手段と、前記第1通信装置から前記第1部分を受信する第1部分受信手段と、該第1部分受信手段が受信した前記第1部分が、前記第2ハッシュ値算出手段が算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定手段と、該ハッシュ値判定手段が一致すると判定した場合に、前記第2ハッシュ値算出手段が算出したハッシュ値から前記第1部分と異なる第2部分を抽出する抽出手段と、該抽出手段が抽出した前記第2部分を前記第1通信装置へ送信する第2部分送信手段と、前記第2ハッシュ値算出手段が算出したハッシュ値から前記第1部分及び前記第2部分を除いた残余値に基づいて前記鍵情報を生成する生成手段とを有し、前記第1通信装置は、更に、前記第2通信装置から前記第2部分を受信する第2部分受信手段と、該第2部分受信手段が受信した前記第2部分が、前記第1ハッシュ値算出手段が算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定手段と、該ハッシュ値判定手段が一致すると判定した場合に、前記第1ハッシュ値算出手段が算出したハッシュ値から前記第1部分及び前記第2部分を除いた残余値に基づいて前記鍵情報を生成する生成手段とを有し、前記記憶内容にはランダムに決定された値を含むこととを特徴とする。
【0008】
また、本発明に係る通信システムは、前記第1通信装置及び前記第2通信装置の生成手段が、前記残余値を前記鍵情報とすることを特徴とする。
【0009】
また、本発明に係る通信システムは、前記第1通信装置が、第1秘密値を生成する第1秘密値生成手段と、前記残余値及び前記第1秘密値生成手段が生成した第1秘密値に基づいて、第1公開値を生成する第1公開値生成手段と、該第1公開値生成手段が生成した第1公開値を前記第2通信装置へ送信する第1公開値送信手段と、前記第2通信装置から第2公開値を受信する第2公開値受信手段とを有し、前記第1通信装置の生成手段は、前記第1秘密値及び前記第2公開値受信手段が受信した前記第2公開値に基づいて、前記鍵情報を生成するようにしてあり、前記第2通信装置は、第2秘密値を生成する第2秘密値生成手段と、前記残余値及び前記第2秘密値生成手段が生成した第2秘密値に基づいて、前記第2公開値を生成する第2公開値生成手段と、該第2公開値生成手段が生成した第2公開値を前記第1通信装置へ送信する第2公開値送信手段と、前記第1通信装置から前記第1公開値を受信する第1公開値受信手段とを有し、前記第2通信装置の生成手段は、前記第2秘密値及び前記第1公開値受信手段が受信した前記第1公開値に基づいて、前記鍵情報を生成するようにしてあることを特徴とする。
【0010】
また、本発明に係る通信システムは、前記第1通信装置及び前記第2通信装置が、複数の素数を記憶した素数テーブルと、前記素数テーブルから素数を選択する素数選択手段とをそれぞれ有し、前記第1通信装置の前記第1公開値生成手段は、前記素数選択手段が選択した素数を用いて前記第1公開値を生成するようにしてあり、前記第2通信装置の前記第2公開値生成手段は、前記素数選択手段が選択した素数を用いて前記第2公開値を生成するようにしてあることを特徴とする。
【0011】
また、本発明に係る通信システムは、前記第1秘密値生成手段及び前記第2秘密値生成手段が、乱数に基づいて前記第1秘密値及び前記第2秘密値を生成するようにしてあることを特徴とする。
【0012】
また、本発明に係る通信システムは、前記第1通信装置は、ハッシュ値算出に用いる情報を生成するハッシュ値算出用情報生成手段と、該ハッシュ値算出用情報生成手段が生成したハッシュ値算出用情報を前記第2通信装置へ送信するハッシュ値算出用情報送信手段とを有し、前記第1ハッシュ値算出手段は、前記ハッシュ値算出用情報生成手段が生成したハッシュ値算出用情報を用いてハッシュ値を算出するようにしてあり、前記第2通信装置は、前記第1通信装置から前記ハッシュ値算出用情報を受信するハッシュ値算出用情報受信手段を有し、前記第2ハッシュ値算出手段は、前記ハッシュ値算出用情報受信手段が受信したハッシュ値算出用情報を用いてハッシュ値を算出するようにしてあることを特徴とする。
【0013】
また、本発明に係る通信システムは、前記ハッシュ値算出用情報生成手段が生成するハッシュ値算出用情報には、乱数を含むことを特徴とする。
【0014】
また、本発明に係る通信システムは、前記ハッシュ値算出用情報生成手段が生成するハッシュ値算出用情報には、ハッシュ値の算出対象とする前記第2通信装置の記憶部の領域を規定する情報を含むことを特徴とする。
【0015】
また、本発明に係る通信システムは、前記第1通信装置は、前記第1ハッシュ値算出手段が算出したハッシュ値を記憶する第1ハッシュ値記憶部と、該第1ハッシュ値記憶部が記憶したハッシュ値に基づいて前記鍵情報を更新する処理を行う更新処理手段とを有することを特徴とする。
【0016】
また、本発明に係る通信システムは、前記更新処理手段が、前記第1通信装置の抽出手段により前記第1ハッシュ値記憶部が記憶したハッシュ値から第1部分を抽出し、抽出した前記第1部分を前記第1部分送信手段により前記第2通信装置へ送信し、前記第2部分受信手段にて前記第2通信装置から第2部分を受信して、前記残余値を更新するようにしてあることを特徴とする。
【0017】
また、本発明に係る通信システムは、前記第2通信装置が、前記第2ハッシュ値算出手段が算出したハッシュ値を記憶する第2ハッシュ値記憶部と、前記第1通信装置の前記更新処理手段の更新処理により送信された前記第1部分に基づいて前記第2通信装置の抽出手段により前記第2部分を抽出し、抽出した前記第2部分を前記第2部分送信手段により前記第1通信装置へ送信し、前記第1部分及び前記第2部分に基づいて前記残余値を更新する更新処理手段とを有することを特徴とする。
【0018】
また、本発明に係る鍵情報共有方法は、第1通信装置と、記憶部を有する第2通信装置とが暗号処理に用いる鍵情報を共有する鍵情報共有方法において、前記第1通信装置に、前記第2通信装置の記憶部の記憶内容を複写しておき、前記第1通信装置が、複写した記憶内容に基づくハッシュ値を算出する第1ハッシュ値算出ステップと、該第1ハッシュ値算出ステップにて算出したハッシュ値から第1部分を抽出する抽出ステップと、該抽出ステップにて抽出した前記第1部分を前記第2通信装置へ送信する第1部分送信ステップと、前記第2通信装置が、前記記憶部の記憶内容に基づくハッシュ値を算出する第2ハッシュ値算出ステップと、前記第2通信装置が、前記第1通信装置から前記第1部分を受信する第1部分受信ステップと、該第1部分受信ステップにて受信した前記第1部分が、前記第2ハッシュ値算出ステップにて算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定ステップと、該ハッシュ値判定ステップにて一致すると判定した場合に、前記第2ハッシュ値算出ステップにて算出したハッシュ値から前記第1部分と異なる第2部分を抽出する抽出ステップと、該抽出ステップにて抽出した前記第2部分を前記第1通信装置へ送信する応答情報送信ステップと、前記第2ハッシュ値算出ステップにて算出したハッシュ値から前記第1部分及び前記第2部分を除いた残余値に応じた鍵情報を生成する鍵情報生成ステップと、前記第1通信装置が、前記第2通信装置から前記第2部分を受信する第2部分受信ステップと、該第2部分受信ステップにて受信した前記第2部分が、前記第1ハッシュ値算ステップにて算出したハッシュ値の一部分と一致するか否かを判定するハッシュ値判定ステップと、該ハッシュ値判定ステップにて一致すると判定した場合に、前記第1ハッシュ値算出ステップにて算出したハッシュ値から前記第1部分及び前記第2部分を除いた残余値に応じた鍵情報を生成する鍵情報生成ステップとを含み、前記記憶内容にはランダムに決定された値を含むことを特徴とする。
【0019】
本発明においては、第1通信装置及び第2通信装置が鍵情報を共有する。第1通信装置は、第2通信装置の記憶部の記憶内容を複写したものを記憶しておき、複写した記憶内容に基づいてハッシュ値を算出する第1ハッシュ値算出手段を有する。第2通信装置は、自らの記憶部の記憶内容に基づいてハッシュ値を算出する第2ハッシュ値算出手段を有する。なお第1ハッシュ値算出手段及び第2ハッシュ値算出手段は、同じ演算を行うものであり、入力情報が同じであれば算出するハッシュ値は同じである。
第1通信装置は、複写した記憶内容に基づくハッシュ値を算出し、その一部分を第1部分として抽出して第2通信装置へ送信する。第2通信装置は、第1通信装置から受信したハッシュ値の第1部分と、自らの記憶内容に基づいて算出したハッシュ値とを比較し、受信した第1部分と自らのハッシュ値の一部分とが一致するか否かを判定する。両ハッシュ値が一致しない場合、第2通信装置の記憶内容と第1通信装置の複写した記憶内容とが一致しないこととなるため、第2通信装置の記憶内容が不正に改ざんされた可能性があると判断できる。両ハッシュ値が一致する場合、第2通信装置は、自らが算出したハッシュ値から受信した第1部分と異なる第2部分を抽出して第2通信装置へ送信する。
第1通信装置は、第2通信装置から受信したハッシュ値の第2部分と、自らが算出したハッシュ値とを比較し、受信した第2部分と自らのハッシュ値の一部分とが一致するか否かを判定する。両ハッシュ値が一致しない場合、第2通信装置の記憶内容と第1通信装置の複写した記憶内容とが一致しないこととなるため、第2通信装置の記憶内容が不正に改ざんされた可能性があると判断できる。両ハッシュ値が一致する場合、第1通信装置及び第2通信装置は共に、それぞれ算出したハッシュ値が一致し、記憶内容に不正な改ざんがなされていないと判断できる。
そこで第1通信装置及び第2通信装置は、自らが算出したハッシュ値から、第1通信装置が抽出した第1部分と、第2通信装置が抽出した第2部分とを除いた残余値を算出し、この残余値に基づいて鍵情報を生成する。
これにより第1通信装置及び第2通信装置は、第2通信装置の記憶部の記憶内容の不正改ざんを検知する処理と、暗号処理のための鍵情報を決定する処理とを同時的に行うことができる。
【0020】
また本発明においては、第1通信装置及び第2通信装置は、算出した残余値を鍵情報として暗号処理を行う。なお、残余値の全部を鍵情報としてもよく、残余値の一部を鍵情報としてもよい。これにより第1通信装置及び第2通信装置は、不正改ざんの検知処理の終了と共に鍵情報を取得することができる。
【0021】
また本発明においては、第1通信装置及び第2通信装置は、例えば乱数などにより秘密値をそれぞれ生成し、秘密値及び残余値に基づいて公開値を生成して互いに送信し、自らの秘密値及び受信した公開値に基づいて鍵情報をそれぞれ生成する。
例えば、第1通信装置及び第2通信装置は、共通の素数テーブルを記憶しておく。素数テーブルには複数の素数が記憶されており、第1通信装置及び第2通信装置は、素数テーブルから素数を選択し、選択した素数を用いてそれぞれ公開値を生成する。
これらにより、第1通信装置及び第2通信装置が共有する鍵情報の秘匿性を高めることができる。
【0022】
また本発明においては、ハッシュ値の算出に先立って、第1通信装置はハッシュ値算出用情報を生成して第2通信装置へ送信する。例えばハッシュ値算出用情報は、乱数とすることができる。また例えばハッシュ値算出用情報は、ハッシュ値算出の対象とする記憶部の領域を規定する情報とすることができる。第1通信装置及び第2通信装置は、ハッシュ値算出用情報を用いて、記憶内容に基づくハッシュ値の算出を行う。
これらにより、ハッシュ値算出が困難化されるため、記憶内容の不正改ざんの検知の信頼性を向上することができ、共有する鍵情報の信頼性を向上することができる。
【0023】
また本発明においては、第1通信装置及び第2通信装置は、算出したハッシュ値をそれぞれ記憶しておく。第1通信装置は、例えば鍵情報を生成してから所定期間が経過した場合などの適宜のタイミングで、鍵情報の更新処理を行う。更新処理においては、記憶しておいたハッシュ値を用いることにより、処理負荷を低減することができる。第1通信装置は、記憶しておいたハッシュ値から、以前とは異なる第1部分を抽出して第2通信装置へ送信することにより、鍵情報の更新処理を開始する。第2通信装置は、受信した第1部分と記憶しておいたハッシュ値とに基づいて第2部分の抽出を行い、第2部分を第1通信装置へ送信する。これにより第1通信装置及び第2通信装置は、新たな第1部分及び第2部分に基づいて残余値を算出することができ、鍵情報を更新することができる。
【発明の効果】
【0024】
本発明による場合は、第2通信装置の記憶部の記憶内容に対する不正改ざん検知の処理を利用して、第1通信装置及び第2通信装置により鍵情報の共有を行うことができる。第1通信装置及び第2通信装置は、共有した鍵情報を用いて暗号処理を行うことにより、信頼性の高い通信を行うことができる。
【図面の簡単な説明】
【0025】
図1】本実施の形態に係る通信システムの構成を示す模式図である。
図2】ECUの構成を示すブロック図である。
図3】ECUのROMの構成を示す模式図である。
図4】監視装置の構成を示すブロック図である。
図5】監視装置の記憶部に記憶される複写データの構成を説明する模式図である。
図6】監視装置及びECUによる不正改ざん検知処理及び共有鍵生成処理を説明するための模式図である。
図7】監視装置及びECUによる不正改ざん検知処理及び共有鍵生成処理を説明するための模式図である。
図8】共有鍵の更新処理を説明するための模式図である。
図9】監視装置が行う不正改ざん検知及び共有鍵生成の処理手順を示すフローチャートである。
図10】監視装置からのハッシュ値計算指示に応じてECUが行う処理の手順を示すフローチャートである。
図11】監視装置からのハッシュ確認指示に応じてECUが行う処理の手順を示すフローチャートである。
図12】監視装置が行う共有鍵の更新処理の手順を示すフローチャートである。
図13】実施の形態2に係る通信システムの共有鍵生成方法を説明するための模式図である。
図14】素数テーブルの一例を示す模式図である。
【発明を実施するための形態】
【0026】
(実施の形態1)
<システム構成>
図1は、本実施の形態に係る通信システムの構成を示す模式図である。本実施の形態に係る通信システムは、車両1に搭載された複数のECU(Electronic Control Unit)3と、1つの監視装置5とを備えて構成されている。ECU3及び監視装置5は、車両1に敷設された共通の通信線を介して接続され、相互にデータを送受信することができる。本実施の形態においては、この通信線をCAN(Controller Area Network)バスとし、ECU3及び監視装置5は、CANプロトコルに従った通信を行う。ECU3は、例えば車両1のエンジンの制御を行うエンジンECU、車体の電装品の制御を行うボディECU、ABS(Antilock Brake System)に関する制御を行うABS−ECU、又は、車両1のエアバッグの制御を行うエアバッグECU等のように、種々の電子制御装置であってよい。監視装置5は、ECU3が記憶するプログラム及びデータに対する不正な改ざん、及び、車内ネットワークに対する不正なデータ送信等を監視する装置である。監視装置5は、監視専用の装置として設けられてもよく、例えばゲートウェイなどの装置に監視の機能を付加した構成であってもよく、また例えばいずれか1つのECU3に監視の機能を付加した構成であってもよい。
【0027】
図2は、ECU3の構成を示すブロック図である。なお図2においては、車両1に設けられた複数のECU3について、通信及び不正検知等に関するブロックを抜き出して図示してある。これらのブロックは各ECU3に共通である。本実施の形態に係るECU3は、処理部31、ROM(Read Only Memory)32、記憶部33及びCAN通信部34等を備えて構成されている。処理部31は、CPU(Central Processing Unit)又はMPU(Micro-Processing Unit)等の演算処理装置を用いて構成されている。処理部31は、ROM32に記憶されたプログラム32aを読み出して実行することにより、車両1に係る種々の情報処理又は制御処理等を行う。
【0028】
ROM32は、マスクROM、フラッシュメモリ又はEEPROM(Electrically Erasable Programmable ROM)等の不揮発性のメモリ素子を用いて構成されている。ROM32は、処理部31が実行するプログラム32aと、これにより行われる処理に必要な種々のデータ32bとが記憶されている。なおROM32に記憶されるプログラム32a及びデータ32bは、ECU3毎に異なる。なお本実施の形態においては、ROM32がフラッシュメモリなどのデータ書き換え可能なメモリ素子を用いて構成されている場合であっても、処理部31の処理によりROM32のデータ書換は行われないものとする。
【0029】
記憶部33は、フラッシュメモリ又はEEPROM等のデータ書き換え可能なメモリ素子を用いて構成されている。なお記憶部33は、SRAM(Static Random Access Memory)又はDRAM(Dynamic Random Access Memory)等の揮発性のメモリ素子を用いて構成されていてもよい。記憶部33は、処理部31の処理により生成された種々のデータを記憶する。また本実施の形態においては、記憶部33は、処理部31の処理により算出されたハッシュ値33aを記憶する。
【0030】
CAN通信部34は、CANの通信プロトコルに従って、CANバスを介した他のECU3又は監視装置5との通信を行う。CAN通信部34は、処理部31から与えられた送信用の情報を、CANの通信プロトコルに従った送信信号に変換し、変換した信号をCANバスへ出力することで他のECU3又は監視装置5への情報送信を行う。CAN通信部34は、CANバスの電位をサンプリングすることによって、他のECU3又は監視装置5が出力した信号を取得し、この信号をCANの通信プロトコルに従って2値の情報に変換することで情報の受信を行い、受信した情報を処理部31へ与える。
【0031】
本実施の形態においてECU3の処理部31には、ハッシュ値算出部41、ハッシュ値判定部42、抽出部43、鍵生成部44及び暗号処理部45等が設けられている。ハッシュ値算出部41〜暗号処理部45は、ハードウェアの機能ブロックとして構成されるものであってもよく、ソフトウェアの機能ブロックとして構成されるものであってもよい。ハッシュ値算出部41〜暗号処理部45が行う処理の詳細は後述する。
【0032】
図3は、ECU3のROM32の構成を示す模式図である。図示の例では、ROM32はアドレスが0000h〜FFFFhで表される記憶領域を有している。ROM32には、処理部31にて実行される2つのプログラム32a(図3においてはプログラム1及びプログラム2と示す)と、各プログラムの実行にそれぞれ必要な2種のデータ(データ1及びデータ2)とが記憶されている。ROM32には、アドレスの先頭側からプログラム1、プログラム2、データ1、データ2の順に記憶されているが、それぞれの間の記憶領域及びアドレスの末尾側の記憶領域にはダミーデータが記憶されている。
【0033】
ダミーデータはどのような値であってもよいが、例えばランダムに決定された値を記憶しておくことができる。ダミーデータはROM32の余剰領域の全てに書き込まれる。即ちROM32には、その全記憶領域に何らかのデータが記憶されている。これにより、ROM32の余剰領域に不正なプログラムを記憶して不正な処理が行われることを防止できる。またROM32に記憶されたプログラム32a及びデータ32bを圧縮することを困難化することができる。
【0034】
図4は、監視装置5の構成を示すブロック図である。監視装置5は、処理部51、記憶部52及びCAN通信部53等を備えて構成されている。処理部51は、CPU又はMPU等の演算処理装置を用いて構成され、記憶部52に記憶されたプログラムを読み出して実行することにより、車両1のECU3の挙動及び通信等を監視する処理を行う。
【0035】
記憶部52は、フラッシュメモリ又はEEPROM等のデータ書き換え可能な不揮発性のメモリ素子を用いて構成されている。本実施の形態において記憶部52は、車両1に搭載されたECU3のROM32の記憶内容を複写した複写データ52aを記憶している。また記憶部52は、処理部51の処理により算出されたハッシュ値52bを記憶する。なお、記憶部52は耐タンパ性と呼ばれる外部からの解析に対する耐性を持ち、複写データ52aやハッシュ値52bの改ざんや解読はされないものとする。
【0036】
CAN通信部53は、CANの通信プロトコルに従って、CANバスを介したECU3との通信を行う。CAN通信部53は、処理部51から与えられた送信用の情報を、CANの通信プロトコルに従った送信信号に変換し、変換した信号をCANバスへ出力することでECU3への情報送信を行う。CAN通信部53は、CANバスの電位をサンプリングすることによって、ECU3が出力した信号を取得し、この信号をCANの通信プロトコルに従って2値の情報に変換することで情報の受信を行い、受信した情報を処理部51へ与える。
【0037】
本実施の形態において監視装置5の処理部51には、ハッシュ値算出部61、抽出部62、ハッシュ値判定部63、鍵生成部64及び暗号処理部65等が設けられている。ハッシュ値算出部61〜暗号処理部65は、ハードウェアの機能ブロックとして構成されるものであってもよく、ソフトウェアの機能ブロックとして構成されるものであってもよい。ハッシュ値算出部61〜暗号処理部65が行う処理の詳細は後述する。
【0038】
図5は、監視装置5の記憶部52に記憶される複写データ52aの構成を説明する模式図である。監視装置5は、車両1に搭載された監視対象の全てのECU3について、ROM3の記憶内容と同じものを複写データ52aとして記憶している。複写データ52aは、各ECU3に対して一意に付された識別情報(図5においてECUa、ECUb…)と、各ECU3のROM3の記憶内容とが対応付けて記憶されている。
【0039】
<不正改ざん検知及び共有鍵生成>
本実施の形態に係る通信システムでは、例えば車両1のイグニッションスイッチがオフ状態からオン状態へ切り替えられた場合に、監視装置5が各ECU3の不正改ざんの検知処理と、共有鍵の生成処理とを行う。これらの処理は、監視装置5と1つのECU3とが1対1で情報交換を行うことにより行われる。監視装置5は、車両1に搭載された複数のECU3に対して、所定の順序で処理を行う。監視装置5による処理が終了した後、各ECU3による個別の処理が開始される。以下、監視装置5と1つのECU3との間で行われる不正改ざん検知処理及び共有鍵生成処理について説明する。
【0040】
図6及び図7は、監視装置5及びECU3による不正改ざん検知処理及び共有鍵生成処理を説明するための模式図である。なお、図6には監視装置5及びECU3の間で行われる情報の送受信の手順を示し、図7には算出されるハッシュ値の構成を示してある。不正改ざん検知処理及び共有鍵生成処理において、監視装置5は、まずハッシュ値算出に用いられる情報の生成を行う。本実施の形態において監視装置5は、ランダムシード及び領域指定情報を生成する。監視装置5の処理部51は、所定のアルゴリズムにより乱数を発生させて得られた所定ビット長のデータをランダムシードとする。領域指定情報は、ハッシュ値算出の対象とするROM32の領域を指定する情報であり、例えば開始アドレス及び終了アドレス、又は、開始アドレス及びデータサイズ等の情報である。処理部51は、例えば乱数に基づいて開始アドレスを決定し、この開始アドレスに所定数を加算したものを終了アドレスとすることができる。また例えば処理部51は、初回の開始アドレスを0などの初期値とし、2回目以降については前回の開始アドレスに所定数を加算したものを今回の開始アドレスとすることができる。
【0041】
監視装置5の処理部51は、生成したランダムシード及び領域指定情報を、ハッシュ値の計算指示と共に、処理対象のECU3へ送信する。また処理部51のハッシュ値算出部61は、記憶部52の複写データ52aから処理対象のECU3の記憶内容を読み出し、読み出した記憶内容と、生成したランダムシード及び領域指定情報とを用いて、ハッシュ値を算出する。ハッシュ値算出部61は、複写された記憶内容から領域指定情報にて指定された箇所を抽出し、抽出した記憶内容とランダムシードとを予め定められたハッシュ関数へ入力することにより、ハッシュ値を算出する。本実施の形態においてハッシュ値算出部61は、SHA−1のハッシュ関数を用いて160ビットのハッシュ値を算出するものとする。処理部51は、ハッシュ値算出部61が算出したハッシュ値を記憶部52に記憶しておく。
【0042】
監視装置5からのランダムシード及び領域指定情報を受信したECU3は、自らのROM32の記憶内容と、受信したランダムシード及び領域指定情報とを用いて、処理部31のハッシュ値算出部41にてハッシュ値を算出する。ハッシュ値算出部41は、ROM32から領域指定情報にて指定された箇所を抽出し、抽出した記憶内容とランダムシードとを予め定められたハッシュ関数へ入力することにより、ハッシュ値を算出する。処理部31は、ハッシュ値算出部41が算出したハッシュ値を記憶部33に記憶しておく。なお、監視装置5が用いるハッシュ関数と、ECU3が用いるハッシュ関数とは同じものである。よって監視装置5が算出するハッシュ値と、ECU3が算出するハッシュ値とは、複写データ52aの記憶内容がROM32の記憶内容と同じであれば、同じ値となる。逆に、両ハッシュ値が異なる値となった場合、ECU3のROM32の記憶内容が改ざんされている可能性がある。
【0043】
ここで、監視装置5のハッシュ値算出部61及びECU3のハッシュ値算出部41によるハッシュ値算出の方法を簡単に説明する。ハッシュ値算出部41,61は、例えばMD(Message Digest)4、MD5、SHA−1、SHA−256、SHA−384、SHA−512、EIPEMD−160又はSHA−3等の既存のハッシュ関数を利用してハッシュ値の算出を行う構成とすることができる。これらはいわゆる一方向のハッシュ関数であり、入力された情報に対して一つのハッシュ値を出力する関数である。ハッシュ関数に入力される情報は、本実施の形態においてECU3のROM32に記憶されたプログラム32a又はデータ32bの一部又は全部である。ハッシュ関数に入力されるものがプログラム32a若しくはデータ32bのいずれであっても、又は、プログラム32a及びデータ32bの両方であっても、ハッシュ関数は入力されたものを単に2値の情報として扱い、ハッシュ値を算出することができる。ハッシュ値算出部41,61は、予め定められたハッシュ関数を記憶しており、このハッシュ関数を用いてハッシュ値の算出を行う。
【0044】
以下、ハッシュ値算出部41,61がSHA−1のハッシュ関数を用いてハッシュ値を算出する場合について、算出方法を説明する。なおSHA−1のハッシュ関数の詳細な処理、及び、ハッシュ値算出部41,61が他のハッシュ関数を用いる場合については、これらのハッシュ関数は既存の技術であるため、説明を省略する。
【0045】
SHA−1のハッシュ関数を利用する場合、ハッシュ値算出部41,61は、まずパディング処理を行う。パディング処理においてハッシュ値算出部41,61は、入力情報の後に余分なデータを付け加えることによって、処理対象の情報のサイズを所定値(512ビット)の整数倍となるように調整する。次いでハッシュ値算出部41,61は、パディング処理された情報を512ビット毎のブロックに分割し、各ブロックについて80個の値を算出する第1処理を行う。
【0046】
次いでハッシュ値算出部41,61は、所定サイズ(160ビット)の初期値に対して、第1処理にて算出した値を用いた演算を行い、演算後の160ビットの値をハッシュ値とする第2処理を行う。第2処理において、まずハッシュ値算出部41,61は、160ビットの初期値に対して、1つのブロックについて算出した80個の値を用いて80ステップの演算を行う。この80ステップの演算により、160ビットの初期値に対して、ブロックの情報を混ぜ込むことができ、出力として160ビットの値が得られる。ハッシュ値算出部41,61は、得られた160ビットの値を初期値として、次のブロックについて算出した80個の値を用いて同様に80ステップの演算を行う。ハッシュ値算出部41,61は、全ブロックについて同様の80ステップの処理を行い、最終的に得られた160ビットの値をハッシュ値とする。
【0047】
また本実施の形態においてハッシュ値算出部41,61は、監視装置5が生成したランダムシードを利用してハッシュ値の算出を行う必要がある。例えばハッシュ値算出部41,61は、上記のパディング処理において、入力情報に付加するデータにランダムシードを用いることができる。また例えばハッシュ値算出部41,61は、上記の第2処理において、160ビットの初期値にランダムシードを用いることができる。本実施の形態においては、第2処理の初期値にランダムシードを用いるものとする。
【0048】
なおハッシュ値算出部41,61によるランダムシードの利用方法は上記のものに限らない。例えばハッシュ値算出部41,61は、ハッシュ値算出の対象とするROM32の記憶内容とランダムシードとの論理演算値(排他的論理和など)をハッシュ関数への入力情報とすることができる。また例えばハッシュ値算出部41,61は、ハッシュ値算出の対象とするROM32の記憶内容の先頭部分又は末尾部分等の所定位置にランダムシードを付加したものをハッシュ関数への入力情報とすることができる。
【0049】
監視装置5の処理部51は、ランダムシード及び領域指定情報のECU3への送信並びにハッシュ値算出部41によるハッシュ値の算出を終えた後、算出したハッシュ値の一部分を抽出する処理を抽出部62にて行う。本実施の形態において抽出部62は、算出した160ビットのハッシュ値から、64ビットの値を抽出して確認用情報(ハッシュ値の第1部分)とする。図7に示す例では、160ビットのハッシュ値のうち0〜63の64ビットを確認用情報として抽出している。処理部51は、抽出部62が抽出した確認用情報を含むハッシュ確認指示を、処理対象のECU3へ送信する。
【0050】
監視装置5からハッシュ確認指示を受信したECU3の処理部31は、受信したハッシュ確認指示に含まれる確認用情報を取得する。処理部31のハッシュ値判定部42は、監視装置5から取得した確認用情報と、自らがハッシュ値算出部41にて算出したハッシュ値とを比較する。ハッシュ値判定部42は、ハッシュ値算出部41が算出したハッシュ値に、監視装置5から確認用情報として取得したハッシュ値の一部が含まれるか否かを判定する。自らのハッシュ値に確認用情報のハッシュ値が含まれないとハッシュ値判定部42が判定した場合、ECU3が算出したハッシュ値と監視装置5が算出したハッシュ値が一致しないと考えられるため、処理部31は処理を中断し、監視装置5へエラー通知などを行う。
【0051】
自らのハッシュ値に確認用情報のハッシュ値が含まれるとハッシュ値判定部42が判定した場合、ECU3が算出したハッシュ値と監視装置5が算出したハッシュ値とが同じ値であるとみなし、処理部31は、監視装置5へハッシュ確認指示に対する応答(ハッシュ確認応答)を送信する処理を行う。このときに処理部31の抽出部43は、ハッシュ値算出部41が算出した160ビットのハッシュ値から確認用情報に相当する64ビットを除いた部分から、更に64ビットの情報を抽出する。図7に示す例では、監視装置5からの確認用情報に続く64ビットの情報を、抽出部43が応答情報(ハッシュ値の第2部分)として抽出している。処理部31は、抽出部43が抽出した64ビットの応答情報をハッシュ確認応答に含めて監視装置5へ送信する。なおハッシュ値から確認用情報及び応答情報を抽出する方法は、図7に示すものに限らない。例えば確認用情報及び応答情報の一部が重複していてもよい。
【0052】
ECU3からハッシュ確認応答を受信した監視装置5の処理部51は、受信したハッシュ確認応答に含まれる応答情報を取得する。処理部51のハッシュ値判定部63は、ECU3から取得した応答情報と、自らがハッシュ値算出部61にて算出したハッシュ値とを比較する。ハッシュ値判定部63は、ハッシュ値算出部61が算出したハッシュ値から抽出部62が抽出した確認用情報を除いた部分に、ECU3からの応答情報として取得したハッシュ値の一部が含まれるか否かを判定する。自らのハッシュ値に応答情報のハッシュ値が含まれないとハッシュ値判定部63が判定した場合、監視装置5が算出したハッシュ値とECU3が算出したハッシュ値とが一致しないと考えられるため、処理部51は処理を中断し、ECU3へエラー通知などを行う。
【0053】
自らのハッシュ値に応答情報のハッシュ値が含まれるとハッシュ値判定部63が判定した場合、処理部51は、監視装置5が算出したハッシュ値とECU3が算出したハッシュ値とが同じ値であるとみなす。このときに処理部51は、ECU3へハッシュ値の判定に成功した旨を通知してもよい。処理部51の鍵生成部64は、ハッシュ値算出部61が算出したハッシュ値と、抽出部62が抽出した確認用情報と、ECU3から取得した応答情報とに基づいて、ECU3との通信にて暗号処理に用いる共有鍵を生成する。処理部51は、鍵生成部64が生成した共有鍵を、例えば記憶部52に記憶しておく。図7に示す例では、ハッシュ値算出部61が算出した160ビットのハッシュ値から、確認用情報の64ビットと応答情報の64ビットとを取り除いた32ビットの情報を共有鍵としている。
【0054】
同様に、ECU3の鍵生成部44は、自らのハッシュ値算出部41が算出した160ビットのハッシュ値から、確認用情報として監視装置5から受信した64ビットの情報と、抽出部43が応答情報として抽出した64ビットの情報とを取り除いた32ビットの情報を共有鍵とする。処理部31は、鍵生成部44が生成した共有鍵を、例えば記憶部33に記憶しておく。これにより、ECU3及び監視装置5は、32ビットの鍵情報を共有することができる。なお鍵情報は、図7に示すものに限らない。例えば確認用情報及び応答情報の一部が重複していてもよい。
【0055】
以後、ECU3及び監視装置5は、上記の手順で生成した共有鍵を用いて通信を行う。なお共有鍵を用いた通信は、既存の技術であるため、詳細な説明は省略する。例えばECU3の処理部31は、監視装置5へ送信する情報を暗号処理部45にて共有鍵を用いて暗号化し、暗号化した情報をCAN通信部34へ与えて監視装置5へ送信する。監視装置5の処理部51は、ECU3から受信した情報を暗号処理部65にて復号する。又は、例えばECU3の処理部31は、監視装置5へ送信する情報及び共有鍵に基づいて暗号処理部45が認証情報を生成し、生成した認証情報を送信情報に付して監視装置5へ送信する。監視装置5の処理部51は、ECU3からの受信情報に付された認証情報が正当なものであるか否かを暗号処理部45が共有鍵を用いて判定し、認証情報が正当なものである場合に受信情報を用いた処理を行う。
【0056】
<共有鍵の更新>
ECU3及び監視装置5の間で同じ共有鍵を用いて通信を繰り返し行った場合、通信内容を傍受した悪意の装置が共有鍵を推定する可能性が高まる。そこで本実施の形態に係る通信システムでは、所定のタイミングで共有鍵を更新する処理を行う。例えば、共有鍵を所定回数(10回又は100回等)用いた場合に更新処理を行う構成とすることができる。例えば、車両1のイグニッションスイッチがオフ状態からオン状態へ変化した場合に更新処理を行う構成とすることができる。また例えば、何らかの通信エラーが発生した場合に更新処理を行う構成とすることができる。これら以外のタイミングで共有鍵の更新処理を行ってもよい。
【0057】
本実施の形態に係る通信システムでは、共有鍵の更新処理について2種の方法を提供する。第1の方法は、上述のような共有鍵の生成処理を最初から行う方法である。即ち共有鍵を更新するタイミングとなった場合、監視装置5がランダムシード及び領域指定情報を生成してハッシュ値計算指示をECU3へ送信し、ハッシュ値の再算出及び共有鍵の再生成を行う。
【0058】
共有鍵を更新する第2の方法は、ECU3及び監視装置5がそれぞれ記憶している算出済みのハッシュ値を用いる方法である。この方法は、ECU3及び監視装置5にてハッシュ値を算出するための処理を行う必要がないため、短時間で行うことが可能であるという利点がある。以下、記憶したハッシュ値を利用して共有鍵を更新する方法について説明する。
【0059】
図8は、共有鍵の更新処理を説明するための模式図である。ECU3は、共有鍵を生成した際に算出したハッシュ値33aを記憶部33に記憶している。同様に監視装置5は、共有鍵を生成した際に算出したハッシュ値52bを記憶部52に記憶している。ECU3及び監視装置5が記憶しているハッシュ値は同じ値である。ただし、監視装置5は複数のECU3との間で共有鍵の生成処理を行うため、各ECU3についてハッシュ値を記憶している。図8上段に示した図は、図7に示した図と同じものであり、ECU3及び監視装置5が記憶しているハッシュ値及び現時点(更新処理前)での共有鍵等を図示してある。
【0060】
共有鍵を更新する必要が生じた場合、監視装置5の処理部51は、記憶部52に記憶しているハッシュ値52bから、新たな確認用情報を抽出する処理を抽出部62にて行う。このときに抽出部62は、前回の共有鍵生成又は更新の際とは異なる確認用情報を抽出する。このため監視装置5は、確認用情報を抽出した位置(ハッシュ値の何ビット目から何ビット目までを確認用情報としたか)を記憶していることが好ましいが、現在の共有鍵が記憶しているハッシュ値のいずれの部分に該当するかを調べることにより前回の確認用情報の抽出位置を特定することもできる。
【0061】
例えば抽出部62は、乱数を生成し、前回の抽出位置に対して乱数を加算した位置を今回の抽出位置とすることができる。図8中段に示した例では、前回の抽出位置(0〜63ビット)に対して10ビットを加算し、記憶しているハッシュ値の10〜73ビットを確認用情報として抽出している。監視装置5の処理部51は、抽出部62が抽出した64ビットの確認用情報を含むハッシュ確認指示をECU3へ送信する。これを受信したECU3の抽出部43は、記憶部33に記憶しているハッシュ値33aから応答情報を抽出する。図8中段に示した例では、確認用情報に続く74〜137ビットを応答情報として抽出している。ECU3の処理部31は、抽出した確認用情報を含むハッシュ確認応答を監視装置5へ送信する。これにより監視装置5及びECU3は、新たな確認用情報及び応答情報を得ることができ、自らが記憶しているハッシュ値から確認用情報及び応答情報を除いた32ビットの情報を新たな共有鍵とする。図8中段に示した例では、ハッシュ値の138〜159ビット、0〜9ビットの情報を共有鍵としている。
【0062】
図8下段には、更に共有鍵を更新する必要が生じた場合の例を示してある。監視装置5は、前回の抽出位置に対して2ビットを加算し、ハッシュ値の32〜95ビットを確認用情報として抽出してECU3へ送信する。ECU3は、確認用情報に続く96〜159ビットを応答情報として抽出して監視装置5へ送信する。監視装置5及びECU3は、記憶しているハッシュ値から確認用情報及び応答情報を除いた0〜31ビットを共有鍵とする。
【0063】
このように、本実施の形態に係る通信システムでは、算出済みのハッシュ値を再利用し、監視装置5によるハッシュ値からの確認用情報の抽出位置を変化させることによって、共有鍵を更新することができる。本例の場合、160ビットのハッシュ値からは少なくとも160通りの共有鍵を得ることが可能である。また本実施の形態に係る通信システムでは、監視装置5がランダムシード及び領域指定情報を変更してハッシュ値の再算出を行うことによって、更に多くの共有鍵を得ることが可能である。
【0064】
<フローチャート>
以下、本実施の形態に係る通信システムの監視装置5及びECU3が行う処理を、フローチャートを用いて説明する。図9は、監視装置5が行う不正改ざん検知及び共有鍵生成の処理手順を示すフローチャートである。監視装置5の処理部51は、ハッシュ値算出に用いられるランダムシードと、ECU3のROM32の記憶領域をしている領域指定情報とを生成する(ステップS1)。処理部51は、生成したランダムシード及び領域指定情報を含むハッシュ値計算指示を、CAN通信部53にて処理対象のECU3へ送信する(ステップS2)。
【0065】
処理部51のハッシュ値算出部61は、記憶部52から処理対象のECU3の記憶内容の複写データ52aを取得し、取得した複写データ52aとステップS1にて生成したランダムシード及び領域指定情報とを基に、所定のハッシュ関数を用いてハッシュ値を算出し、算出したハッシュ値を記憶部52に記憶する(ステップS3)。処理部51の抽出部62は、ステップS3にて算出したハッシュ値から一部分を確認用情報として抽出する(ステップS4)。処理部51は、抽出した確認用情報を含むハッシュ確認指示を、CAN通信部53にて処理対象のECU3へ送信する(ステップS5)。
【0066】
次いで処理部51は、ハッシュ確認指示に対してECU3が送信するハッシュ確認応答をCAN通信部53にて受信したか否かを判定する(ステップS6)。ハッシュ確認応答を受信していない場合(S6:NO)、処理部51は、処理対象のECUからエラー通知を受信したか否かを判定する(ステップS7)。エラー通知を受信していない場合(S7:NO)、処理部51はステップS6へ処理を戻し、ハッシュ確認応答又はエラー通知をECU3から受信するまで待機する。
【0067】
処理対象のECU3からハッシュ確認応答を受信した場合(S6:YES)、処理部51のハッシュ値判定部63は、受信したハッシュ確認応答に含まれる応答情報が、ステップS3にて算出したハッシュ値に含まれるか否かに応じて、応答情報の成否を判定する(ステップS8)。ECU3からエラー通知を受信した場合(S7:YES)、又は、ECU3から受信した応答情報が正しいものでない場合(S8:NO)、処理部51は、対象のECU3のROM32の記憶内容が改変された可能性があると判断し、例えばこのECU3の動作を停止させるなどの適宜のエラー処理を行って(ステップS9)、処理を終了する。
【0068】
ECU3から受信した応答情報が正しい場合(S8:YES)、処理部51の鍵生成部64は、ECU3との通信に用いる共有鍵の生成を行う(ステップS10)。このときに鍵生成部64は、ステップS3にて算出したハッシュ値から、ステップS4にて抽出した確認用情報及びステップS6にて受信した応答情報を除いたものを共有鍵とする。処理部51は、鍵生成部64が生成した共有鍵を記憶部52に記憶して(ステップS11)、処理を終了する。
【0069】
図10は、監視装置5からのハッシュ値計算指示に応じてECU3が行う処理の手順を示すフローチャートである。ECU3の処理部31は、CAN通信部34にて監視装置5からハッシュ値計算指示を受信したか否かを判定する(ステップS21)。ハッシュ値計算指示を受信していない場合(S21:NO)、処理部31は、ハッシュ値計算指示を受信するまで待機する。ハッシュ値計算指示を受信した場合(S21:YES)、処理部31は、受信したハッシュ値計算指示に含まれるランダムシード及び領域指定情報を取得する(ステップS22)。処理部31のハッシュ値算出部41は、ROM32の記憶内容と、ステップS22にて取得したランダムシード及び領域指定情報とに基づいて、所定のハッシュ関数を用いてハッシュ値を算出する(ステップS23)。処理部31は、算出したハッシュ値を記憶部33に記憶し(ステップS24)、処理を終了する。
【0070】
図11は、監視装置5からのハッシュ確認指示に応じてECU3が行う処理の手順を示すフローチャートである。なお本処理は、最初に共有鍵を生成する場合と、共有鍵を更新する場合とで共通である。ECU3の処理部31は、CAN通信部34にて監視装置5からハッシュ確認指示を受信したか否かを判定する(ステップS31)。ハッシュ確認指示を受信していない場合(S31:NO)、処理部31は、ハッシュ確認指示を受信するまで待機する。ハッシュ確認指示を受信した場合(S31:YES)、処理部31は、記憶部33に記憶したハッシュ値33aを読み出す(ステップS32)。処理部31のハッシュ値判定部42は、ステップS31にて受信したハッシュ確認指示に含まれる確認用情報が、ステップS32にて読み出したハッシュ値に含まれるか否かに応じて、確認用情報の成否を判定する(ステップS33)。確認用情報が正しものでない場合(S33:NO)、処理部31は、エラー通知を監視装置5へ送信し(ステップS34)、処理を終了する。
【0071】
監視装置5からの確認用情報が正しい場合(S33:YES)、処理部31の抽出部43は、ステップS32にて読み出したハッシュ値から確認用情報を除いた部分から、応答情報を抽出する(ステップS35)。処理部31は、抽出した応答情報をCAN通信部34にて監視装置5へ送信する(ステップS36)。処理部31の鍵生成部44は、監視装置5との通信に用いる共有鍵の生成を行う(ステップS37)。このときに鍵生成部44は、ステップS32にて読み出したハッシュ値から、ステップS31にて受信した確認用情報と、ステップS35にて抽出した応答情報とを除いたものを共有鍵とする。処理部31は、鍵生成部44が生成した共有鍵を記憶部33に記憶して(ステップ38)、処理を終了する。
【0072】
図12は、監視装置5が行う共有鍵の更新処理の手順を示すフローチャートである。監視装置5の処理部51は、例えば共有鍵を所定回数利用した場合など、共有鍵を更新するタイミングに至ったか否かを判定する(ステップS41)。共有鍵を更新するタイミングに至っていない場合(S41:NO)、処理部51は、共有鍵を更新するタイミングに至るまで待機する。共有鍵を更新するタイミングに至った場合(S41:YES)、処理部51は、記憶部52に記憶されたハッシュ値52bを読み出す(ステップS42)。
【0073】
次いで処理部51の抽出部62は、ハッシュ値から前回の確認用情報を抽出した位置を取得する(ステップS43)。抽出部62は、前回の抽出位置を記憶部52などに記憶しておいてこれを取得してもよく、ハッシュ値と現時点の共有鍵とを比較して抽出位置を取得してもよい。抽出部62は、乱数を発生させ(ステップS44)、前回の抽出位置に乱数を加えた位置を算出して、ステップS42にて読み出したハッシュ値の該当位置から確認用情報を抽出する(ステップS45)。
【0074】
処理部51は、抽出部62が抽出した確認用情報を含むハッシュ確認指示を処理対象のECU3へ送信する(ステップS46)。なお以降の処理は、図9に示したフローチャートのステップS6〜S11と同じであるが、図12にはこれらの処理を簡略化して手順を示してある。処理部51は、ハッシュ確認指示に対してECU3が送信するハッシュ確認応答を受信する(ステップS47)。処理部51のハッシュ値判定部63は、受信したハッシュ確認応答に含まれる応答情報が正しいか否かの判定を行う(ステップS48)。処理部51の鍵生成部64は、ステップS42にて読み出したハッシュ値と、ステップS45にて抽出した確認用情報と、ステップS48にて正しいと判定した応答情報とに基づいて、新たな共有鍵を生成し(ステップS49)、生成した共有鍵を記憶部52に記憶して(ステップS50)、処理を終了する。
【0075】
<まとめ>
以上の構成の本実施の形態に係る通信システムは、ECU3及び監視装置5が鍵情報を共有し、この鍵情報を用いた通信を行う。ECU3は、ROM32の記憶内容に基づいてハッシュ値を算出するハッシュ値算出部41を有する。監視装置5は、ECU3のROM32の記憶内容の複写データ52aを記憶部52に記憶しておき、複写した記憶内容に基づいてハッシュ値を算出するハッシュ値算出部61を有する。ECU3のハッシュ値算出部41と監視装置5のハッシュ値算出部61とは、同じハッシュ関数による演算を行うものであり、入力される情報が同じであれば算出されるハッシュ値は同じ値となる。
【0076】
監視装置5は、複写データ52aに基づくハッシュ値を算出し、その一部分を確認用情報としてECU3へ送信する。ECU3は、監視装置5から確認用情報として受信したハッシュ値の一部分と、自らが算出したハッシュ値とを比較し、受信したハッシュ値の一部分が自らのハッシュ値に含まれるか否かを判定する。受信したハッシュ値の一部分が自らのハッシュ値に含まれない場合、監視装置5の複写データ52aとECU3のROM32の記憶内容とが一致しないこととなるため、ECU3のROM32の記憶内容が不正に改ざんされた可能性があると判断できる。受信したハッシュ値の一部分が自らのハッシュ値に含まれる場合、ECU3は、自らが算出したハッシュ値から確認用情報を除いた値から、更に一部分を抽出して応答情報として監視装置5へ送信する。
【0077】
監視装置5は、ECU3から応答情報として受信したハッシュ値の一部分と、自らが算出したハッシュ値とを比較し、受信したハッシュ値の一部分が自らのハッシュ値に含まれるか否かを判定する。受信したハッシュ値の一部分が自らのハッシュ値に含まれない場合、ECU3のROM32の記憶内容が不正に改ざんされた可能性があると判断できる。受信したハッシュ値の一部分が自らのハッシュ値に含まれる場合、ECU3及び監視装置5がそれぞれ算出したハッシュ値が一致し、ROM32の記憶内容に不正な改ざんがなされていないと判断できる。
【0078】
ECU3及び監視装置5は、それぞれ自らが算出したハッシュ値から、監視装置5が抽出した確認用情報と、ECU3が抽出した応答情報とを除いた残余値を算出し、この残余値を鍵情報として共有して暗号処理を行う。なお残余値の全てを鍵情報としてもよく、残余値の一部を鍵情報としてもよい。これらにより、ECU3及び監視装置5は、ECU3のROM32の記憶内容の不正改ざんを検知する処理と、暗号処理のための鍵情報を決定する処理とを同時的に行うことができる。
【0079】
また本実施の形態に係る通信システムでは、ハッシュ値の算出に先立って、監視装置5はランダムシード及び領域指定情報を生成してハッシュ値算出用情報としてECU3へ送信する。ECU3及び監視装置5は、ランダムシード及び領域指定情報を用いてハッシュ値の算出を行う。これにより、ハッシュ値算出が困難化されるため、記憶内容の不正改ざんの検知の信頼性を向上することができ、共有する鍵情報の信頼性を向上することができる。
【0080】
また本実施の形態に係る通信システムでは、ECU3及び監視装置5は、算出したハッシュ値をそれぞれ記憶しておく。監視装置5は、例えば鍵情報を生成下から所定期間が経過した場合などの適宜のタイミングで、鍵情報の更新処理を行う。更新処理においては、新たにハッシュ値の算出を行うことなく、記憶しておいたハッシュ値を用いることにより、処理負荷を低減する。監視装置5は、記憶しておいたハッシュ値から、現時点の鍵情報を生成した際の確認用情報とは異なる一部分を抽出し、抽出した情報を新たな確認用情報としてECU3へ送信する。監視装置5による確認用情報の送信により、鍵情報の更新処理が開始される。ECU3は、受信した確認用情報と、記憶しておいたハッシュ値とに基づいて応答情報を生成して監視装置5へ送信する。これによりECU3及び監視装置5は、記憶しておいたハッシュ値と、新たな確認用情報及び応答情報とに基づいて新たな鍵情報を生成することができ、鍵情報を更新することができる。
【0081】
なお本実施の形態においては、ECU3及び監視装置5の通信を、車両1に敷設されたCANバスを介した有線通信にて行う構成としたが、これに限るものではなく、無線LANなどの無線通信を行う構成としてもよい。またCAN以外のプロトコルによる有線通信を行う構成としてもよい。また監視装置5は、ECU3のROM32の記憶内容を複写した複写データ52aを記憶部52に記憶する構成としたが、これに限るものではない。例えば複写データ52aは別のサーバ装置などが記憶し、監視装置5が必要に応じてサーバ装置から複写データ52aを取得してもよく、更にはサーバ装置にハッシュ値算出機能を設けて監視装置5がサーバ装置から必要なハッシュ値を取得する構成としてもよい。また本実施の形態においては、車両1に搭載された通信システムを例に説明を行ったが、通信システムは車両1に搭載されるものに限らず、例えば飛行機又は船舶等の移動体に搭載されるものであってよく、また例えば移動体ではなく工場、オフィス又は学校等に設置されるものであってもよい。
【0082】
(変形例)
変形例に係る通信システムの監視装置5は、上述の処理に加えて、ECU3へハッシュ確認指示を送信してから、このECU3からのハッシュ確認応答を受信するまでの時間を計測する処理を行う。監視装置5は、計測した時間が閾値を超えるか否かを判定し、計測時間が閾値を超える場合、ECU3のROM32の記憶内容に対する不正な書き換えが行われたと判定する。なお判定に用いる閾値は、監視装置5及びECU3の通信速度、及び、ECU3の処理能力等を考慮し、本システムの設計段階などにおいて予め決定しておく。
【0083】
例えば監視装置5及びECU3の間に不正な機器が介在し、監視装置5及びECU3の間で送受信される情報の中継及び改変等が行われる虞がある。また例えばECU3のROM32に記憶されたプログラム32a及びデータ32bが圧縮され、圧縮によるROM32の空き領域に不正なプログラムを侵入させて不正な処理が行われる虞がある。このような場合、不正な機器又はプログラム等がハッシュ値を算出して監視装置5への応答を行うことができるものであったとしても、応答の送信までに正常時と比較して長い時間を要することが予想される。このため本実施の形態に係る通信システムは、上記のような時間監視を行うことによって、不正な機器又はプログラム等による不正な処理が行われることを防止できる。
【0084】
(実施の形態2)
実施の形態2に係る通信システムでは、ECU3及び監視装置5は、自らが算出したハッシュ値から確認用情報及び応答情報を除いた残余値を共有鍵とするのではなく、この残余値を用いて更に演算を行うことで共有鍵を生成する。図13は、実施の形態2に係る通信システムの共有鍵生成方法を説明するための模式図である。なお本図は、監視装置5がハッシュ値計算指示及びハッシュ確認指示をECU3へ送信し、ECU3がハッシュ確認応答を監視装置5へ送信し、ECU3及び監視装置5が自らの算出したハッシュ値から確認用情報及び応答情報を除いた残余値を算出した後からの処理を図示してある。共有鍵の生成処理において、まず実施の形態2に係るECU3及び監視装置5は、自らの算出したハッシュ値から確認用情報及び応答情報を除いた残余値を元gとする(SA1、SB1)。ECU3及び監視装置5が算出するハッシュ値は同じ値であるため、ECU3及び監視装置5の元gは同じ値となる。
【0085】
次いでECU3及び監視装置5は、予め記憶している素数テーブルから1つの素数pを選択する処理を行う(SA2、SB2)。図14は、素数テーブルの一例を示す模式図である。本実施の形態に係る素数テーブルは、0〜159の160個のラベルに対して、素数0〜素数159の160個の大きな素数が記憶されたテーブルである。ECU3及び監視装置5は、自らの算出したハッシュ値と監視装置5が抽出した確認用情報とを比較し、ハッシュ値における確認用情報の位置を調べ、確認用情報の開始ビットがハッシュ値における何ビット目に相当するかを調べる。例えば確認用情報がハッシュ値の10〜73ビットに相当する場合、確認用情報の開始ビットである10をECU3及び監視装置5は取得し、素数テーブルのラベル10に対応する素数10を選択する。なおECU3及び監視装置5は、同じ内容の素数テーブルを予め記憶しており、選択される素数pは同じ値となる。
【0086】
次いでECU3は、秘密値aを生成する(SA3)。秘密値aは、ECU3内でのみ利用される値であり、例えば乱数などに基づいて生成することができる。同様に監視装置5は、秘密値bを生成する(SB3)。秘密値bは、監視装置5内でのみ利用される値であり、例えば乱数などに基づいて生成することができる。ECU3の秘密値aと、監視装置5の秘密値bとは、異なる値であってよい。
次いでECU3は、元g、素数p及び秘密値aを用いて(1)式により公開値Aを生成する(SA4)。同様に監視装置5は、元g、素数p及び秘密値bを用いて(2)式により公開値Bを生成する(SB4)。
【0087】
【数1】
【0088】
次いでECU3は、算出した公開値Aを監視装置5へ送信すると共に(SA5)、監視装置5から送信される公開値Bを受信する(SA6)。同様に監視装置5は、算出した公開値BをECU3へ送信すると共に(SB5)、ECU3から送信される公開値Aを受信する(SB6)。
次いでECU3は、受信した公開値B、秘密値a及び素数pを用いて(3)式により共有鍵Kaを生成する(SA7)。同様に監視装置5は、受信した公開値A、秘密値b及び素数pを用いて(4)式により共有鍵Kbを生成する(SB7)。なおECU3が生成する共有鍵Kaと、監視装置5が生成する共有鍵Kbとは同じ値となる。
【0089】
【数2】
【0090】
共有鍵を生成したECU3及び監視装置5は、生成した共有鍵を記憶しておき、以後の通信においてこの共有鍵を用いて暗号処理を行う。また共有鍵の更新処理を行う場合、ECU3及び監視装置5は、図13に示した処理を行って共有鍵を再生成する。
【0091】
以上の構成の実施の形態2に係る通信システムは、ECU3及び監視装置5は、例えば乱数などにより秘密値a、bをそれぞれ生成し、秘密値a、b及び残余値に基づいて公開値A、Bをそれぞれ生成して互いに送信し、自らの秘密値a、b及び受信した公開値A、Bに基づいて鍵情報Ka、Kbをそれぞれ生成する。またECU3及び監視装置5は、共通の素数テーブルを記憶しておく。素数テーブルには複数の素数が記憶されており、ECU3及び監視装置5は、ハッシュ値における確認用情報の開始ビット位置に応じて1つの素数を選択する。ECU3及び監視装置5は、選択した素数を用いて公開値A、Bを生成する。
これらにより、ECU3及び監視装置5が共有する鍵情報の秘匿性を高めることができる。
【0092】
なお本実施の形態においては、秘密値a、bを乱数に基づいて生成するものとしたが、これに限るものではなく、その他の種々の方法で秘密値a、bを生成してよい。例えば素数テーブルと同様に複数の秘密値を記憶した秘密値テーブルを予め記憶しておき、秘密値テーブルから1つの秘密値を選択する構成とすることができる。また素数テーブルの構成は図14に示したものに限らず、その他の種々の構成であってよい。また素数テーブルから1つの素数を選択する方法は、確認用情報の開始ビット位置に基づくものに限らず、その他の種々の方法を採用してよい。
【0093】
実施の形態2に係る通信システムのその他の構成は、実施の形態1に係る通信システムの構成と同様であるため、同様の箇所には同じ符号を付して詳細な説明を省略する。
【符号の説明】
【0094】
1 車両
3 ECU(第2通信装置)
5 監視装置(第1通信装置)
31 処理部(第2秘密値生成手段、第2公開値生成手段、素数選択手段、更新処理手段)
32 ROM(記憶部)
32a プログラム
32b データ
33 記憶部(第2ハッシュ値記憶部)
33a ハッシュ値
34 CAN通信部(第1部分受信手段、第2部分送信手段、第2公開値送信手段、第1公開値受信手段、ハッシュ値算出用情報受信手段)
41 ハッシュ値算出部(第2ハッシュ値算出手段)
42 ハッシュ値判定部(ハッシュ値判定手段)
43 抽出部(抽出手段)
44 鍵生成部(鍵情報生成手段)
45 暗号処理部(暗号処理手段)
51 処理部(第1秘密値生成手段、第1公開値生成手段、素数選択手段、ハッシュ値算出用情報生成手段、更新処理手段)
52 記憶部(第1ハッシュ値記憶部)
52a 複写データ
52b ハッシュ値
53 CAN通信部(第1部分送信手段、第2部分受信手段、第1公開値送信手段、第2公開値受信手段、ハッシュ値算出用情報送信手段)
61 ハッシュ値算出部(第1ハッシュ値算出手段)
62 抽出部(抽出手段)
63 ハッシュ値判定部(ハッシュ値判定手段)
64 鍵生成部(鍵情報生成手段)
65 暗号処理部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14