説明

鍵生成装置及び第1の通信装置及び第2の通信装置及び情報処理システム

【課題】共通鍵の暗号通信システムにおいて、通信装置の盗難・紛失があっても安全性を保ち、通信相手と鍵の対応を簡素化できる方式を実現する。
【解決手段】鍵生成装置200は、組み合わせた際に演算順序が違っても同じ入力に対して同じ出力になるハッシュ関数H1、H2、H3を用い、マスタ鍵にH1とH2の演算を行い組込みデバイス400ごとの組込みデバイス側マスタ鍵を生成し、マスタ鍵にH3の演算を行い端末機300用の端末機側セッション鍵を生成し、各組込みデバイス400に、H1、H2、H3の各々の演算回数を通知して組込みデバイス側マスタ鍵を格納する。組込みデバイス400は、通知された回数分のH3演算を組込みデバイス側マスタ鍵に行い通信用の鍵を生成し、端末機300は、各組込みデバイス400からH1とH2の演算回数を通知され、通知された回数分のH1及びH2演算を端末機側セッション鍵に行い共通の通信用の鍵を得る。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、共通鍵を用いて暗号化通信を行う暗号通信システムに関する。
【背景技術】
【0002】
例えば、作業員が端末機を持って組込みデバイスの至近距離に向かい、個別に各組込みデバイスと通信する事によって作業を実施するシステムを考える。
組込みデバイスは監視・制御機能を持ち、無線通信手段を持つ。
また、これら組込みデバイスを設定するための端末機があり、各組込みデバイスとの通信によって、組込みデバイスの設定やログの収集などの作業を実施する。
端末機と組込みデバイス間の通信において、端末機が異なる組込みデバイスに誤接続する危険性や、イタズラの危険性を防止するため、セキュリティ技術が必要である。
【0003】
セキュリティ技術では、各ノードが公開鍵・秘密鍵ペアを持つ方式(公開鍵暗号やデジタル署名など)と、通信を行う2ノードが同一の鍵を持つ方式(共通鍵暗号やメッセージ認証子(MAC)など)に大別される。
公開鍵・秘密鍵ペアを持つ方式では、計算・記憶資源をより多く使用する点が、通信を行う2ノードが同一の鍵を持つ方式では、同一の鍵を共有するための方式に課題がある。
【0004】
特許文献1では、上記の課題のうち後者に対応する方式が開示されている。
つまり、同一の鍵を共有する方式として、予め2ノード間で複数の種値と所定回数を共有しておき、種値のうち1つを入力として、一方向性ハッシュ関数を所定回数だけ適用して初期鍵とし、次回以降は、一方向性ハッシュ関数を適用する回数を2ノード間の通信によって合意し、2ノードが合意した値に基づいて一方向性ハッシュ関数を同じ回数適用して鍵を共有する方式である。
特許文献1の方式では、鍵そのものではなく、第三者に知られても良い情報である一方向性ハッシュ関数の適用回数を交換するため、鍵そのものが盗聴される危険性が減少するという利点がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2001−94548号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述したシステムでは、組込み機器の計算・記憶資源の制限により、代表的な公開鍵暗号であるRSA(登録商標)暗号のように、べき乗計算に基づく暗号は使用することが難しい。
さらに、RSA(登録商標)暗号に基づくデジタル署名や、デジタル署名を含むセキュリティ技術(IPSec、SSLなど)の使用も難しいため、共通鍵暗号やメッセージ認証によるセキュリティの確保が必要となる。
上記で述べたように、共通鍵暗号やメッセージ認証では、同一の鍵を共有するための方式が課題となる。
想定する上記システムに対し、特許文献1の方式の導入を試みた場合、通信路の盗聴による危険性は減少する。
しかし、端末機を持ち運ぶことが必要なシステムでは、端末機自体の紛失・盗難の可能性があり、この場合は端末機から予め定めた種値すべてが漏洩するため、システムの安全性が崩壊するという課題がある。
特許文献1では、この点の対処方法について開示・示唆されていない。
さらに、端末機が複数の組込みデバイスと通信するため、組込みデバイス毎に種値を持つ必要があり管理が複雑になるが、特許文献1ではこの点の対処方法について開示・示唆されていない。
【0007】
この発明は、上記のような課題を解決することを主な目的の一つとしており、共通の鍵を用いて暗号化通信を行うシステムにおいて、通信装置(例えば、端末機)の盗難・紛失があった場合でもシステムを安全に保ち、また、通信相手と鍵の対応関係を簡素化できる方式を実現することを主な目的とする。
【課題を解決するための手段】
【0008】
本発明に係る鍵生成装置は、
共通の通信用鍵を用いて暗号化通信を行う第1の通信装置と第2の通信装置に対して通信用鍵の生成源となる鍵を生成する鍵生成装置であって、
所定のマスタ鍵を生成するマスタ鍵生成処理部と、
それぞれに演算回数が指定されている1種類以上の一方向性関数を第1の鍵用関数とし、第1の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って前記第1の通信装置に対する第1の鍵を生成する第1の鍵生成処理部と、
それぞれに演算回数が指定されている1種類以上の一方向性関数を第2の鍵用関数とし、第2の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って前記第2の通信装置に対する第2の鍵を生成する第2の鍵生成処理部と、
前記第1の鍵の生成における第1の鍵用関数のそれぞれの演算回数を導出可能な第1の鍵用関数演算回数情報と、前記第2の鍵の生成における第2の鍵用関数のそれぞれの演算回数を導出可能な第2の鍵用関数演算回数情報とを生成する演算回数情報生成処理部と、
前記第1の鍵と、前記第1の鍵用関数演算回数情報と、前記第2の鍵用関数演算回数情報の前記第1の通信装置への格納処理を行う第1の格納処理部と、
前記第2の鍵の前記第2の通信装置への格納処理を行う第2の格納処理部とを有し、
前記第1の鍵生成処理部と前記第2の鍵生成処理部は、
単独で演算に用いられると同じ入力値に対して異なる出力値となるが、各関数が組み合わされた場合は各関数の演算回数が指定された回数通りであれば演算順序が異なっていても同じ入力値に対して同じ出力値となる関係にある第1の鍵用関数と第2の鍵用関数を用い、
前記第1の格納処理部は、
前記第2の鍵用関数演算回数情報から導出される第2の鍵用関数のそれぞれの演算回数に従って前記第1の鍵に対して第2の鍵用関数のそれぞれを用いた演算を行い前記第2の通信装置との暗号化通信に用いられる通信用鍵を生成し、前記第1の鍵用関数演算回数情報から導出される第1の鍵用関数のそれぞれの演算回数を前記第2の通信装置に通知する第1の通信装置に対して、前記第1の鍵と、前記第1の鍵用関数演算回数情報と、前記第2の鍵用関数演算回数情報の格納処理を行い、
前記第2の格納処理部は、
前記第1の通信装置から通知される第1の鍵用関数のそれぞれの演算回数に従って前記第2の鍵に対して第1の鍵用関数のそれぞれを用いた演算を行い前記第1の通信装置との暗号化通信に用いられる通信用鍵を生成する第2の通信装置に対して、前記第2の鍵の格納処理を行うことを特徴とする。
【発明の効果】
【0009】
本発明によれば、例えば第2の通信装置の盗難・紛失があった場合でも、第2の通信装置は第2の鍵のみを保持しているため、マスタ鍵が漏洩する危険性が無く、システムを安全に保つことが可能となり、また、第2の通信装置は、第1の通信装置から通知された第1の鍵用関数の演算回数によって、第1の通信装置と共通の通信用鍵を算出することが可能なため、第1の通信装置と第1の鍵との対応関係を予め知ることなく鍵共有が可能となる。
【図面の簡単な説明】
【0010】
【図1】実施の形態1に係る情報処理システムの構成例を示す図。
【図2】実施の形態1に係る鍵生成装置の構成例を示す図。
【図3】実施の形態1に係る端末機の構成例を示す図。
【図4】実施の形態1に係る組込みデバイスの構成例を示す図。
【図5】実施の形態1に係る鍵生成・割り当て処理を示すフローチャート図。
【図6】実施の形態1に係る組込みデバイス側マスタ鍵生成処理部の動作例を示すフローチャート図。
【図7】実施の形態1に係る組込みデバイス側マスタ鍵生成処理部の計算例を示す図。
【図8】実施の形態1に係る組込みデバイス側マスタ鍵割り当て処理部の動作例を示すフローチャート図。
【図9】実施の形態1に係る組込みデバイス側マスタ鍵割り当て処理部の計算例を示す図。
【図10】実施の形態1に係る鍵生成装置における端末側セッション鍵の生成処理及び端末機と組込みデバイスとの間の鍵共有処理を示すフローチャート図。
【図11】実施の形態1に係る端末機と組込みデバイス間の通信の例を示す図。
【図12】実施の形態1に係る端末機のセッション鍵計算処理部の動作例を示すフローチャート図。
【図13】実施の形態1に係る端末機のセッション鍵計算処理部の計算例を示す図。
【図14】実施の形態1に係る鍵生成・更新処理部の動作例を示すフローチャート図。
【図15】実施の形態1に係る鍵生成・更新処理部の計算例を示す図。
【図16】実施の形態1に係る鍵生成装置の動作の概要を示すフローチャート図。
【図17】実施の形態1に係る端末機と組込みデバイスの動作の概要を示すフローチャート図。
【図18】実施の形態1に係る鍵生成装置、端末機、組込みデバイスのハードウェア構成例を示す図。
【発明を実施するための形態】
【0011】
実施の形態1.
図1は、本実施の形態に係る情報処理システム100の構成を示す。
図1において、端末機300は、各組込みデバイス400との間で1対1の通信を行う。
端末機300と各組込みデバイス400との間では、共通の鍵(通信用鍵)を用いた暗号化通信が行われる。
なお、組込みデバイス400同士の通信は行われない。
鍵生成装置200は、端末機300及び各組込みデバイス400が暗号化通信に用いる通信用鍵の生成源となる鍵を生成する。
なお、鍵生成装置200と端末機300との間では、安全な方法で情報の送受信が可能である(例:USBメモリ、社内LANなど)。
なお、各組込みデバイス400は第1の通信装置の例であり、端末機300は第2の通信装置の例である。
【0012】
また、鍵生成装置200が各組込みデバイス400に対して生成する鍵を、組込みデバイス側マスタ鍵と呼ぶ。組込みデバイス側マスタ鍵は第1の鍵の例である。
組込みデバイス側マスタ鍵は組込みデバイス400ごとに値が異なっている。つまり、図1のように、組込みデバイス400が4台存在していれば、4個の組込みデバイス側マスタ鍵が生成される。
鍵生成装置200が端末機300に対して生成する鍵を、端末機側セッション鍵と呼ぶ。端末機側セッション鍵は第2の鍵の例である。
また、各組込みデバイス400は、組込みデバイス側マスタ鍵から端末機300と暗号化通信に用いる鍵(通信用鍵)を生成する。
また、端末機300は、端末機側セッション鍵から各組込みデバイス400との暗号化通信に用いる鍵(通信用鍵)を生成する。
端末機300と組込みデバイス400が暗号化通信に用いる鍵をセッション鍵という。
組込みデバイス400は、それぞれ異なるセッション鍵を保有し、端末機300は、各組込みデバイス400に対応させたセッション鍵を保有する。つまり、組込みデバイス400が4台存在していれば、端末機300は、4個のセッション鍵を保有する。
また、各セッション鍵は、暗号化通信が終了する度(セッション終了の度)に更新される。
【0013】
本実施の形態では、鍵生成装置200は、所定のマスタ鍵に2つの一方向性ハッシュ関数を用いた演算を行って組込みデバイス側マスタ鍵を生成する。この2つの一方向性ハッシュ関数は、H1、H2と略記する。H1及びH2は第1の鍵用関数の例である。
また、鍵生成装置200は、上記マスタ鍵にH1、H2とは異なる1つの一方向性ハッシュ関数を用いた演算を行って端末機側セッション鍵を生成する。
この一方向性ハッシュ関数はH3と略記する。H3は第2の鍵用関数の例である。
H1、H2、H3は、単独で演算に用いられると同じ入力値に対して異なる出力値となるが、各関数が組み合わされた場合は各関数の演算回数が指定された回数通りであれば演算順序が異なっていても同じ入力値に対して同じ出力値となる関係にある。
つまり、入力値をkとし、H1にkを入力したときの出力値をH1(k)とし、H2にkを入力したときの出力値をH2(k)とし、H3にkを入力したときの出力値をH3(k)とすると、H1(k)≠H2(k)≠H3(k)となる。
一方、H1(H2(H3(k)))=H1(H3(H2(k)))=H2(H1(H3(k)))=H2(H3(H1(k)))=H3(H1(H2(k)))=H3(H2(H1(k)))となる。
また、鍵生成装置200は、組込みデバイス400ごとに、H1の回数、H2の回数を変化させることにより、組込みデバイス400ごとに異なる組込みデバイス側マスタ鍵を生成する。
そして、H1及びH2を用いて生成された組込みデバイス側マスタ鍵が組込みデバイス400に格納される。この際、各組込みデバイス400は、自己の組込みデバイス側マスタ鍵の生成においてH1、H2がそれぞれ何回演算されたかを導出可能な情報(第1の鍵用関数演算回数情報)と、端末機側セッション鍵の生成においてH3が何回演算されたかを導出可能な情報(第2の鍵用関数演算回数情報)も組込みデバイス400に格納される。
また、H3を用いて生成された端末機側セッション鍵が端末機300に格納される。
【0014】
各組込みデバイス400は、鍵生成装置200における端末機側セッション鍵の生成時と同じ回数のH3の演算を自己の組込みデバイス側マスタ鍵に行ってセッション鍵を生成する。
また、各組込みデバイス400は、自己の組込みデバイス側マスタ鍵の生成時のH1の演算回数及びH2の演算回数を端末機300に通知する。
端末機300は、各組込みデバイス400から通知された回数分のH1及びH2の演算を端末機側セッション鍵に行ってセッション鍵を生成する。
端末機300と組込みデバイス400との間では、マスタ鍵に対して同じ回数分のH1、H2、H3が演算されたセッション鍵が共有されることになる。
以上が本実施の形態に係る鍵生成・共有方式の概要である。
次に、図2〜図4を用いて、鍵生成装置200、端末機300、組込みデバイス400の構成例を説明する。
【0015】
図2は、鍵生成装置200の構成例を示す。
【0016】
図2において、マスタ鍵生成処理部201は、全ての鍵の元となるマスタ鍵を生成する。
なお、マスタ鍵生成処理部201は、任意の疑似乱数生成器でよく、例えば一方向性ハッシュ関数や、AES、MISTY(登録商標)などの暗号アルゴリズムを用いてもよい。
【0017】
ハッシュ値生成処理部(1)202は、組込みデバイス側マスタ鍵を生成するためにハッシュ値を算出する。
ハッシュ値生成処理部(2)203は、組込みデバイス側マスタ鍵を生成するためにハッシュ値生成処理部(1)202と異なるハッシュ演算によりハッシュ値を算出する。
ハッシュ値生成処理部(3)204は、マスタ鍵を元に端末機側セッション鍵の生成のためにハッシュ値を算出する。
【0018】
ハッシュ値生成処理部(1)202が用いる一方向性ハッシュ関数(H1)とハッシュ値生成処理部(2)203が用いる一方向性ハッシュ関数(H2)とハッシュ値生成処理部(3)204が用いる一方向性ハッシュ関数(H3)は、前述のように、以下の関係を満たす。
同一の入力kに対し、各ハッシュ値生成処理部は異なる出力値を計算する。
つまり、ハッシュ値生成処理部(1)202のH1にkを入力したときの出力値をH1(k)、ハッシュ値生成処理部(2)203のH2にkを入力したときの出力値をH2(k)とし、ハッシュ値生成処理部(3)204のH3にkを入力したときの出力値をH3(k)とすると、H1(k)≠H2(k)≠H3(k)となる。
一方で、同一の入力kに対し、各ハッシュ演算の演算順序を変えて全てのハッシュ演算を行っても結果は同じ値である。
つまり、H1(H2(H3(k)))= H1(H3(H2(k)))= H2(H1(H3(k)))=H2(H3(H1(k)))=H3(H1(H2(k)))=H3(H2(H1(k))))となる。
【0019】
組込みデバイス側マスタ鍵生成処理部205は、各組込みデバイス400に格納する組込みデバイス側マスタ鍵を生成する。
組込みデバイス側マスタ鍵生成処理部205は、ハッシュ値生成処理部(1)202及びハッシュ値生成処理部(2)203のそれぞれにマスタ鍵に対するハッシュ演算を行わせて各組込みデバイス400に対する組込みデバイス側マスタ鍵を生成する。
組込みデバイス側マスタ鍵生成処理部205は、組込みデバイス400ごとにH1の演算回数及びH2の演算回数を変えて、組込みデバイス400ごとの組込みデバイス側マスタ鍵を生成する。
組込みデバイス側マスタ鍵生成処理部205は第1の鍵生成処理部の例である。
【0020】
組込みデバイス側マスタ鍵割り当て処理部206は、各組込みデバイス400に、組込みデバイス側マスタ鍵を割り当て、各組込みデバイス400への組込みデバイス側マスタ鍵の格納処理を行う。
組込みデバイス側マスタ鍵の格納方法は任意であり、各組込みデバイス400に組込みデバイス側マスタ鍵を送信してもよいし、組込みデバイス側マスタ鍵を所定の記録媒体に出力し、各組込みデバイス400に記録媒体から組込みデバイス側マスタ鍵を読み込ませるようにしていてもよい。
また、組込みデバイス側マスタ鍵割り当て処理部206は、組込みデバイス側マスタ鍵とともに、後述の座標情報と最大更新回数情報を各組込みデバイス400に格納する。
組込みデバイス側マスタ鍵割り当て処理部206は、第1の格納処理部の例である。
【0021】
端末機側セッション鍵計算処理部207は、セッション毎に端末機300に送信する端末機側セッション鍵を計算する。
端末機側セッション鍵計算処理部207は、ハッシュ値生成処理部(3)204にマスタ鍵に対するハッシュ演算を行わせて端末機300に対する端末機側セッション鍵を生成する。
また、端末機側セッション鍵計算処理部207は、セッションごとに、ハッシュ値生成処理部(3)204のハッシュ演算回数を更新し、更新後の演算回数分のハッシュ演算をハッシュ値生成処理部(3)204に行わせて端末機側セッション鍵を更新する。
端末機側セッション鍵計算処理部207は第2の鍵生成処理部の例である。
【0022】
組込みデバイス数格納部208は、組込みデバイス400の総数を記憶する。
最大更新回数格納部209は、セッション鍵の最大更新回数を格納する。
マスタ鍵格納部210は、マスタ鍵生成処理部201により生成されたマスタ鍵を格納する。
更新回数格納部211は、セッション鍵の更新回数を格納する。初期値は0である。
【0023】
演算回数情報生成処理部212は、鍵生成の際の一方向性ハッシュ演算の演算回数を導出可能な情報を生成する。
演算回数情報生成処理部212は、組込みデバイス側マスタ鍵の生成の際のH1の演算回数及びH2の演算回数を示す座標情報(第1の鍵用関数演算回数情報)と端末機側セッション鍵の生成の際のH3の演算回数を導出するための最大更新回数情報(第2の鍵用関数演算回数情報)を生成する。
組込みデバイス400ごとに異なるH1の演算回数及びH2の演算回数により組込みデバイス側マスタ鍵が生成されるため、演算回数情報生成処理部212は、組込みデバイス400ごとに異なる座標情報を生成する。
なお、最大更新回数情報は1つである。
【0024】
端末機側セッション鍵割り当て処理部213は、端末機300への端末機側セッション鍵の格納処理を行う。
端末機側セッション鍵割り当て処理部213は、端末機側セッション鍵計算処理部207により端末機側セッション鍵が更新される度に、更新後の端末機側セッション鍵の格納処理を行う。
端末機側セッション鍵の格納方法は任意であり、端末機300に端末機側セッション鍵を送信してもよいし、端末機側セッション鍵を所定の記録媒体に出力し、端末機300に記録媒体から端末機側セッション鍵を読み込ませるようにしていてもよい。
端末機側セッション鍵割り当て処理部213は、第2の格納処理部の例である。
【0025】
次に、図3を参照して、端末機300の構成例を説明する。
【0026】
ハッシュ値生成処理部(1)202は、鍵生成装置200のハッシュ値生成処理部(1)202と同じである。
ハッシュ値生成処理部(2)203は、鍵生成装置200のハッシュ値生成処理部(2)203と同じである。
【0027】
セッション鍵計算処理部301は、鍵生成装置200から取得した端末機側セッション鍵からセッション鍵を計算する。
より具体的には、後述の端末機側通信部305が、組込みデバイス400から、H1の演算回数とH2の演算回数が示される座標情報を取得し、セッション鍵計算処理部301は、座標情報に示されるH1の演算回数とH2の演算回数に従って、端末機側セッション鍵に対してハッシュ値生成処理部(1)202とハッシュ値生成処理部(2)203にH1のハッシュ演算及びH2のハッシュ演算を行わせて、セッション鍵を生成する。
また、セッション鍵計算処理部301は、鍵生成装置200において端末機側セッション鍵が更新される度に、更新後の端末機側セッション鍵からセッション鍵を生成する。
セッション鍵計算処理部301は、通信用鍵生成処理部の例である。
【0028】
メッセージ認証子生成処理部302は、メッセージとセッション鍵を入力とし、メッセージ認証子を生成する。
メッセージ認証子生成処理部302におけるメッセージ認証子生成処理はどのようなものでもよい。例えばHMAC、OMACなどでもよい。
【0029】
端末機側セッション鍵格納部303は、鍵生成装置200から受信した端末機側セッション鍵を格納する。
また、セッション鍵計算処理部301により生成されたセッション鍵を記憶する。
端末機側セッション鍵格納部303は、鍵記憶部の例である。
【0030】
端末機側セッション鍵入力部304は、鍵生成装置200で生成された端末機側セッション鍵を入力する。
端末機側セッション鍵入力部304は、鍵入力部の例である。
【0031】
端末機側通信部305は、各組込みデバイス400と通信する。
端末機側通信部305は、例えば、セッション鍵の生成のために各組込みデバイス400から座標情報を受信する。また、端末機側通信部305は、メッセージ認証子生成処理部302により生成されたメッセージ認証子やメッセージを各組込みデバイス400に送信する。
また、端末機側通信部305は、各組込みデバイス400とセッション鍵を共有した後、各組込みデバイス400とセッション鍵を利用した暗号化通信を行う。
端末機側通信部305は、演算回数入力部及び通信部の例である。
【0032】
次に、図4を参照して組込みデバイス400の構成例を説明する。
【0033】
ハッシュ値生成処理部(3)204は、鍵生成装置200のハッシュ値生成処理部(3)204と同様である。
【0034】
セッション鍵生成・更新処理部401は、鍵生成装置200から取得した組込みデバイス側マスタ鍵からセッション鍵を計算し、また、セッション鍵を更新する。
より具体的には、セッション鍵生成時には、セッション鍵生成・更新処理部401は、鍵生成装置200から取得した最大更新回数情報から端末機側セッション鍵の生成の際のH3の演算回数を導出し、導出したH3の演算回数に従って、鍵生成装置200から取得した組込みデバイス側マスタ鍵に対してハッシュ値生成処理部(3)204にH3のハッシュ演算を行わせて、セッション鍵を生成する。
また、セッション鍵の更新時には、鍵生成装置200と同様の手順にてH3の演算回数を更新し、更新後のH3の演算回数に従って、組込みデバイス側マスタ鍵に対してハッシュ値生成処理部(3)204にH3のハッシュ演算を行わせて、セッション鍵を更新する。
セッション鍵生成・更新処理部401は、通信用鍵生成処理部の例である。
【0035】
メッセージ認証子検証処理部402は、セッション鍵と端末機300から受信したメッセージを入力とし、端末機300から受信したメッセージ認証子を検証する。
メッセージ認証子検証処理部402は、端末機300のメッセージ認証子生成処理部302がHMACを用いている場合はHMACを用いて認証子を検証し、OMACを用いている場合はOMACを用いて認証子を検証する。
なお、端末機300が生成する認証子を検証できればどのような方法でもよい。
【0036】
組込みデバイス側マスタ鍵格納部403は、鍵生成装置200から割り当てられた組込みデバイス側マスタ鍵を格納する。
組込みデバイス側マスタ鍵格納部403は、鍵記憶部の例である。
【0037】
座標格納部404は、組込みデバイス側マスタ鍵の座標情報を格納する。
【0038】
最大更新回数格納部405は、セッション鍵の最大更新回数情報を格納する。
【0039】
セッション鍵格納部406は、セッション鍵生成・更新処理部401で生成されたセッション鍵を格納する。
セッション鍵格納部406は、鍵記憶部の例である。
【0040】
更新回数格納部407は、セッション鍵の更新回数を格納する。初期値は0である。
【0041】
組込みデバイス側マスタ鍵入力部408は、鍵生成装置200で生成された組込みデバイス側マスタ鍵を入力する。
組込みデバイス側マスタ鍵入力部408は、鍵入力部の例である。
【0042】
組込みデバイス側通信部409は、端末機300と通信する。
組込みデバイス側通信部409は、例えば、端末機300に座標情報を送信する。また、組込みデバイス側通信部409は、端末機300からメッセージ認証子やメッセージを受信する。
また、組込みデバイス側通信部409は、端末機300とセッション鍵を共有した後、端末機300とセッション鍵を利用した暗号化通信を行う。
組込みデバイス側通信部409は、演算回数通知部及び通信部の例である。
【0043】
以下に、本実施の形態に係る情報処理システム100における動作例を図16及び図17を用いて説明する。
図16は、鍵生成装置200の動作例を示し、図17は、端末機300及び組込みデバイス400の動作例を示す。
【0044】
図16に示すように、鍵生成装置200において、マスタ鍵生成処理部201がマスタ鍵を計算する(S1601)。
さらに、組込みデバイス側マスタ鍵生成処理部205がマスタ鍵にH1及びH2を用いた演算を行って組込みデバイス側マスタ鍵を生成する(S1602)。
次に、組込みデバイス側マスタ鍵割り当て処理部206が、各組込みデバイス400に組込みデバイス側マスタ鍵、座標情報、最大更新回数情報を格納する(S1603)。
【0045】
各組込みデバイス400では、図17に示すように、組込みデバイス側マスタ鍵入力部408が組込みデバイス側マスタ鍵、座標情報、最大更新回数情報を入力し、組込みデバイス側マスタ鍵格納部403に格納する(S1701)。
また、セッション鍵生成・更新処理部401がH3を用いた計算により1回目のセッション鍵の計算を行う。
生成されたセッション鍵はセッション鍵格納部406に格納される。
【0046】
また、鍵生成装置200では、端末機側セッション鍵計算処理部207がマスタ鍵にH3の演算を行って端末機側セッション鍵を計算し(S1604)、端末機側セッション鍵割り当て処理部213が端末機側セッション鍵を端末機300に格納する(S1605)。
【0047】
端末機300では、端末機側セッション鍵入力部304が端末機側セッション鍵を入力し、端末機側セッション鍵格納部303に格納する(S1706)。
そして、セッション鍵計算処理部301は、端末機側通信部305を介して、組込みデバイス400に座標情報の提供を要求し、組込みデバイス400は、セッション鍵生成・更新処理部401が組込みデバイス側通信部409を介して端末機300に自身の座標情報を返信し(S1703)、端末機300は組込みデバイス400から座標情報を取得する(S1707)。
【0048】
座標情報を受け取った端末機300では、セッション鍵計算処理部301が座標情報に示されているH1の演算回数及びH2の演算回数に従って端末機側セッション鍵にH1を用いた演算及びH2を用いた演算を行って、セッション鍵を計算する(S1708)。
さらに、端末機300では、メッセージ認証子生成処理部302がメッセージ認証子を生成し、端末機側通信部305が組込みデバイス400にメッセージとメッセージ認証子を送信する(S1709)。
【0049】
組込みデバイス400では、組込みデバイス側マスタ鍵入力部408がメッセージとメッセージ認証子を受信し(S1704)、メッセージ認証子検証処理部402がメッセージ認証子を検証し、検証に成功した場合には、確かに端末機300との間でセッション鍵を共有したことを確認する。
そして、組込みデバイス側通信部409がセッション鍵の共有を端末機300に通知し(S1705)、端末機300においてもセッション鍵の共有を確認する(S1710)。
以降、端末機300と組込みデバイス400との間で共有しているセッション鍵を用いた暗号化通信が可能となる。
【0050】
なお、セッション終了後は、鍵生成装置200と組込みデバイス400において共通の手順によりH3の演算回数を更新し、組込みデバイス400において更新後の演算回数に従って組込みデバイス側マスタ鍵にH3の演算を行って、更新後のセッション鍵を生成する。
また、鍵生成装置200では、更新後の演算回数に従ってマスタ鍵にH3の演算を行って、更新後の端末機側セッション鍵を生成し、更新後の端末機側セッション鍵を端末機300に提供する。
端末機300では、更新後の端末機側セッション鍵を入力し、図17のS1707で取得した座標情報に示されているH1の演算回数及びH2の演算回数に従って、更新後の端末機側セッション鍵にH1の演算及びH2の演算を行ってセッション鍵を更新する。
以降、セッションごとに、同様の処理によりセッション鍵を更新していく。
【0051】
次に、図16及び図17にて示した各処理の詳細を説明する。
【0052】
まず、図5を参照して、図16のS1601〜S1603及び図17のS1701の処理(鍵生成・割り当て処理)の詳細を説明する。
【0053】
まず、鍵生成装置200では、組込みデバイス数格納部208に組込みデバイス数cを格納する(S501)。
次に、最大更新回数格納部209に最大更新回数aを格納する。
次に、マスタ鍵生成処理部201が、マスタ鍵kを生成する。なお、マスタ鍵kは疑似乱数であれば何でもよい。
次に、組込みデバイス数cとマスタ鍵kを組込みデバイス側マスタ鍵生成処理部205に入力し、組込みデバイス側マスタ鍵H1c−1(k)、H1c−2(H2(k))、H1c−3(H2(k))、…、H1((H22c−2(k))、H2c−1(k)を得る。
つまり、組込みデバイス側マスタ鍵生成処理部205は、変数i(1≦i≦c)を用いて、H1c−i(H2i−1(k))を計算して、各組込みデバイス400に対する組込みデバイス側マスタ鍵を算出する。
次に、組込みデバイス側マスタ鍵割り当て処理部206が、各組込みデバイス400に組込みデバイス側マスタ鍵と座標情報及び最大更新回数情報(値a)を格納する(S505)。
そして、各組込みデバイス400では、組込みデバイス側マスタ鍵入力部408が組込みデバイス側マスタ鍵と座標情報及び最大更新回数情報(値a)を入力し、組込みデバイス側マスタ鍵格納部403に格納する。
また、各組込みデバイス400では、組込みデバイス側マスタ鍵と最大更新回数aをセッション鍵生成・更新処理部401に入力し、セッション鍵生成・更新処理部401が1回目のセッション鍵を生成し、セッション鍵格納部406に格納する(S506)。
【0054】
ここで、図6及び図7を用いて、組込みデバイス側マスタ鍵生成処理部205の処理の詳細を説明する。
【0055】
組込みデバイス側マスタ鍵生成処理部205では、ハッシュ値生成処理部(1)202、ハッシュ値生成処理部(2)203にそれぞれマスタ鍵kを入力し、出力値H1(k)、H2(k)を得る(S601)。
次に、組込みデバイス側マスタ鍵生成処理部205は、得られた出力値H1(k)、H2(k)をハッシュ値生成処理部(1)202、ハッシュ値生成処理部(2)203への入力とし、出力H1(k)、H1(H2(k))、H2(k)を得る(S602)。
上記を繰り返して(ハッシュ値生成処理部(1)へ入力した回数+ハッシュ値生成処理部(2)へ入力した回数)=c−1となる値を全て計算し、H1c−1(k)、H1c−2(H2(k))、…、H2c−1(k)を得る(S603)。これにより、H1c−i(H2i−1(k))の全てのiについて計算したことになる。また、これら1つ1つが、各組込みデバイス側マスタ鍵となる。
【0056】
図7は、c=4の場合(組込みデバイス400が4台の場合)の組込みデバイス側マスタ鍵生成処理部205の計算例を示している。
H1軸はH1の計算回数を表し、H2軸はH2の計算回数を表している。
c=4の場合は、H1(k)、H1(H2(k))、H1(H2(k))、H2(k)の4つの組込みデバイス側マスタ鍵が得られる。
【0057】
次に、図8及び図9を参照して、図5のS505の処理の詳細を説明する。
【0058】
まず、組込みデバイス側マスタ鍵割り当て処理部206が、全ての組込みデバイス400、全ての組込みデバイス側マスタ鍵を選択候補とする(S801)。
次に、組込みデバイス側マスタ鍵割り当て処理部206が、1つの組込みデバイス400を選択し、また、その組込みデバイス400に格納する組込みデバイス側マスタ鍵を選択し、選択した組込みデバイス側マスタ鍵を選択した組込みデバイス400の組込みデバイス側マスタ鍵格納部403に格納する(S802)。
また、演算回数情報生成処理部212が、S802で格納された組込みデバイス側マスタ鍵の座標(その組込みデバイス側マスタ鍵を得るまでにハッシュ値生成処理部(1)202に入力した回数(H1の演算回数)、組込みデバイス側マスタ鍵を得るまでにハッシュ値生成処理部(2)203に入力した回数(H2の演算回数))を示す座標情報を生成し、組込みデバイス側マスタ鍵割り当て処理部206が座標情報をS802で選択された組込みデバイス400の座標格納部404に格納する(S803)。
また、このとき、組込みデバイス側マスタ鍵割り当て処理部206は、最大更新回数a(鍵生成装置200の最大更新回数格納部209にある値と同じ)を示す最大更新回数情報も組込みデバイス400の最大更新回数格納部405に格納する。
そして、組込みデバイス側マスタ鍵割り当て処理部206は、S802及びS803の処理が行われた組込みデバイス400及び組込みデバイス側マスタ鍵を選択候補から削除し(S804)、まだ組込みデバイス側マスタ鍵が格納されていない組込みデバイスがあれば(S805で真)、上記処理を繰り返す。
なお、図8の処理は、例示であり、どの組込みデバイス400も同じ組込みデバイス側マスタ鍵を持たないようにすれば、具体的な格納手順は問わない。
【0059】
図9は、c=4であり、最大更新回数a=2の場合の組込みデバイス側マスタ鍵及び座標情報の例を示している。
例えば、H1(k)の組込みデバイス側マスタ鍵が格納される組込みデバイス400では、座標(3、0)が示される座標情報が格納される。
【0060】
次に、図17のS1702におけるセッション鍵生成・更新処理部401の処理の詳細を図14及び図15を用いて説明する。
【0061】
セッション鍵生成・更新処理部401では、最大更新回数格納部405に格納されている最大更新回数の値と更新回数格納部407に格納されている現在までの更新回数の値と、組込みデバイス側マスタ鍵格納部403に格納されている組込みデバイス側マスタ鍵を入力し、セッション鍵を生成する(S1401)。
より具体的には、セッション鍵生成・更新処理部401は、最大更新回数aから更新回数を引き、得られた値をH3の演算回数とする。
1回目のセッション鍵の生成時点では更新回数0のため、値aをH3の演算回数とする。
そして、セッション鍵生成・更新処理部401は、組込みデバイス側マスタ鍵をハッシュ値生成処理部(3)204への入力とし、その出力をハッシュ値生成処理部(3)204への入力とする作業をa回繰り返し、H3の演算がa回行われた後の計算結果を1回目のセッション鍵としてセッション鍵格納部406に格納する(S1402)。
最後に、セッション鍵生成・更新処理部401は、更新回数格納部407の更新回数の値に1を加算して、更新回数格納部407に格納する(S1403)。
セッション鍵の更新の際にも、S1401〜S1403の処理により新たなセッション鍵が生成される。
【0062】
図15は、最大更新回数a=2のときのセッション鍵生成・更新処理部401における計算例を示す。
図15では、図の簡明化のため、組込みデバイス側マスタ鍵H1(k)を有している組込みデバイス400における処理を示している。
端末機300との暗号化通信が行われていない1回目のセッション鍵の生成の際には、最大更新回数から現在の更新回数を差し引いた値2(2−0=2)をH3の演算回数とするため、組込みデバイス側マスタ鍵H1(k)にH3の演算を2回行ったH1(H3(k))がセッション鍵となる。
通信完了後の1回目の更新の際(2回目のセッション鍵の生成の際)には、最大更新回数から現在の更新回数を差し引いた値1(2−1=1)をH3の演算回数とするため、組込みデバイス側マスタ鍵H1(k)にH3の演算を1回行ったH1(H3(k))がセッション鍵となる。
通信完了後の2回目の更新の際(3回目のセッション鍵の生成の際)には、最大更新回数から現在の更新回数を差し引いた値0(2−2=0)をH3の演算回数とするため、組込みデバイス側マスタ鍵H1(k)がセッション鍵となる。
【0063】
次に、図16のS1604及びS1605、図17のS1703〜S1710の詳細を図10を参照して説明する。
【0064】
鍵生成装置200では、マスタ鍵格納部210の値k(マスタ鍵)と最大更新回数格納部209の最大更新回数の値aと更新回数格納部211の値を端末機側セッション鍵計算処理部207に入力し、端末機側セッション鍵計算処理部207が端末機側セッション鍵を計算する(S1001)。
端末機側セッション鍵計算処理部207の計算自体は、図14のS1401と同じである。
つまり、端末機側セッション鍵計算処理部207は、最大更新回数aから更新回数を引き、得られた値をH3の演算回数とする。
1回目の端末機側セッション鍵の生成時点では更新回数0のため、値aをH3の演算回数とする。
そして、端末機側セッション鍵計算処理部207は、マスタ鍵kをハッシュ値生成処理部(3)204への入力とし、その出力をハッシュ値生成処理部(3)204への入力とする作業をa回繰り返し、H3の演算がa回行われた後の計算結果を1回目の端末機側セッション鍵とする。
次に、端末機側セッション鍵計算処理部207は、更新回数格納部211の更新回数の値に1を加算して、更新回数格納部211に格納する(S1002)。
そして、端末機側セッション鍵割り当て処理部213が、端末機側セッション鍵を端末機300に格納する(S1003)。
【0065】
次に、端末機300では、接続したい組込みデバイス400の通信範囲内まで移動し、セッション鍵計算処理部301が端末機側通信部305を介して組込みデバイス400に対して通信要求を送信する(S1004)。
通信要求を受信した組込みデバイス400では、セッション鍵生成・更新処理部401が座標格納部404に格納されている座標情報を組込みデバイス側通信部409を介して端末機300に送信する(S1007)。
座標情報を受信した端末機300では、座標をセッション鍵計算処理部301に入力し、セッション鍵計算処理部301がセッション鍵を計算する(S1005)。
セッション鍵計算処理部301は、座標情報に示されているH1の演算回数及びH2の演算回数に従って、端末機側セッション鍵にH1の演算及びH2の演算を行ってセッション鍵を生成する。
さらに、セッション鍵計算処理部301は、任意のメッセージとセッション鍵をメッセージ認証子生成処理部302に入力し、メッセージ認証子生成処理部302がメッセージ認証子を生成し、端末機側通信部305がメッセージとメッセージ認証子を組込みデバイス400に送信する(S1006)。
組込みデバイス400では、セッション鍵格納部406のセッション鍵と、端末機300から受信したメッセージ及びメッセージ認証子とをメッセージ認証子検証処理部402に入力し、メッセージ認証子の正当性を検証する(S1008)。
検証結果が正しければ、端末機300が組込みデバイス400と同一の鍵を計算したことを確認したことになるため、接続を許可する。
【0066】
図11は、上記の端末機300−組込みデバイス400間の通信の例を示している。
【0067】
また、図12は、端末機300のセッション鍵計算処理部301のフローチャートであり、図13はセッション鍵計算処理部301の計算例を示している。
【0068】
図12の例では、組込みデバイス400から得た座標が(x、y)である場合の処理を示している。
セッション鍵計算処理部301は、端末機側セッション鍵格納部303の端末機側セッション鍵をハッシュ値生成処理部(1)202に入力し、得られた出力値を再度、ハッシュ値生成処理部(1)202に入力する処理をx回繰り返す(S1201)。
更に、セッション鍵計算処理部301は、S1201の出力値をハッシュ値生成処理部(2)203に入力し、得られた出力値を再度、ハッシュ値生成処理部(2)203に入力する処理をy回繰り返し、得られた出力値がセッション鍵となる(S1202)。
【0069】
図13は、最大更新回数:2、更新回数:0、組込みデバイス400から得られた座標が(2、1)の場合のセッション鍵計算処理部301の計算例を示している。
この場合は、鍵生成装置200から提供された端末機側セッション鍵はH3(k)である。
そして、座標(2、1)に従い、H1の演算が2回行われ、H2の演算が1回行われ、セッション鍵計算処理部301はセッション鍵としてH3(H1(H2(k))を得る。
このH3(H1(H2(k))は、座標(2、1)を送信した組込みデバイス400におけるセッション鍵と同じ値である。
【0070】
次に、鍵生成装置200における端末機側セッション鍵の更新、端末機300及び組込みデバイス400におけるセッション鍵の更新について説明する。
【0071】
組込みデバイス400では、セッション終了後に、図14のS1401の処理を行って、セッション鍵を更新する。なお、前述したように、前回のセッション鍵の生成時(更新時)にS1403において更新回数の値を加算しているため、図15に示す通り、最大更新回数−更新回数の値が1つ減り、このためH3の演算回数が1回減る。
また、鍵生成装置200では、セッション終了後に、図10のS1001の処理を行って、端末機側セッション鍵を更新する。なお、前述したように、前回の端末機側セッション鍵の生成時(更新時)にS1002において更新回数の値を加算しているため、最大更新回数−更新回数の値が1つ減り、このためH3の演算回数が1回減る。
端末機300では、鍵生成装置200から更新後の端末機側セッション鍵を取得し、更新後の端末機側セッション鍵に対して図12のS1201及びS1202の処理を行って、更新後のセッション鍵を算出する。
なお、S1201及びS1202で用いる座標情報は座標格納部404に格納されているものである。
なお、端末機300は、組込みデバイス400ごとにS1201及びS1202の処理を行って、組込みデバイス400ごとにセッション鍵を更新する。
【0072】
このように、本実施の形態によれば、端末機には端末機側セッション鍵のみを渡すことにより、端末機の盗難・紛失の場合でもマスタ鍵が漏洩する危険性が無く、システムを安全に保つことが可能となる。
また、端末機は端末機側セッション鍵のみを保持し、各組込みデバイスとの通信によって、その組込みデバイスが保持するセッション鍵を計算することが可能なため、組込みデバイスと組込みデバイスが保持する鍵の対応関係を予め知ることなく鍵共有が可能となる。
つまり、端末機は、組込みデバイスと組込みデバイスが保持する鍵の対応を管理しなくともよい。
【0073】
なお、以上の説明では、組込みデバイス側マスタ鍵の生成にH1及びH2の2つの一方向性ハッシュ関数を用いる例を説明したが、ハッシュ関数の利用数は任意であり、1つのハッシュ関数でもよいし、3つ以上のハッシュ関数でもよい。
また、同様に、端末機側セッション鍵の生成に用いる一方向性ハッシュ関数は、2つ以上でもよい。
【0074】
以上、本実施の形態では、各組込みデバイスに異なる鍵を格納し、端末機に別の鍵を格納し、端末機が組込みデバイス間の通信と計算のみから全ての組込みデバイスとの鍵共有を可能にするような鍵群を生成する鍵生成装置を説明した。
【0075】
また、本実施の形態では、組込みデバイス間の通信と計算のみから全ての組込みデバイスとの鍵共有を行う端末機を説明した。
【0076】
また、本実施の形態では、端末機に第三者に盗聴されても安全性を損なわない情報のみを送信することで端末機と鍵共有を行う組込みデバイスを説明した。
【0077】
また、本実施の形態では、第三者に盗聴されても安全性を損なわない情報のみを送受信することで、端末機と各組込みデバイスとの間での鍵共有を可能とする通信プロトコルを説明した。
【0078】
最後に、本実施の形態に示した鍵生成装置200、端末機300、組込みデバイス400(以下、鍵生成装置200等と表記する)のハードウェア構成例について説明する。
図18は、本実施の形態に示す鍵生成装置200等のハードウェア資源の一例を示す図である。
なお、図18の構成は、あくまでも鍵生成装置200等のハードウェア構成の一例を示すものであり、鍵生成装置200等のハードウェア構成は図18に記載の構成に限らず、他の構成であってもよい。
【0079】
図18において、鍵生成装置200等は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
本実施の形態で説明した「〜格納部」は、RAM914、磁気ディスク装置920等により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
【0080】
通信ボード915は、ネットワークに接続されている。例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されていても構わない。
【0081】
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
【0082】
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
【0083】
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
鍵生成装置200等の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
【0084】
上記プログラム群923には、本実施の形態の説明において「〜部」(「〜格納部」以外、以下同様)として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
【0085】
ファイル群924には、本実施の形態の説明において、「〜の判断」、「〜の計算」、「〜の演算」、「〜の生成」、「〜の比較」、「〜の検証」、「〜の確認」、「〜の評価」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、本実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0086】
また、本実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、本実施の形態で説明したフローチャートに示すステップ、手順、処理により、鍵生成装置200等を鍵生成方法や通信方法としても表現することができる。
また、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、本実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。
【0087】
このように、本実施の形態に示す鍵生成装置200等は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【0088】
100 情報処理システム、200 鍵生成装置、201 マスタ鍵生成処理部、202 ハッシュ値生成処理部(1)、203 ハッシュ値生成処理部(2)、204 ハッシュ値生成処理部(3)、205 組込みデバイス側マスタ鍵生成処理部、206 組込みデバイス側マスタ鍵割り当て処理部、207 端末機側セッション鍵計算処理部、208 組込みデバイス数格納部、209 最大更新回数格納部、210 マスタ鍵格納部、211 更新回数格納部、212 演算回数情報生成処理部、213 端末機側セッション鍵割り当て処理部、300 端末機、301 セッション鍵計算処理部、302 メッセージ認証子生成処理部、303 端末機側セッション鍵格納部、400 組込みデバイス、401 セッション鍵生成・更新処理部、402 メッセージ認証子検証処理部、403 組込みデバイス側マスタ鍵格納部、404 座標格納部、405 最大更新回数格納部、406 セッション鍵格納部、407 更新回数格納部、408 組込みデバイス側マスタ鍵入力部、409 組込みデバイス側通信部。

【特許請求の範囲】
【請求項1】
共通の通信用鍵を用いて暗号化通信を行う第1の通信装置と第2の通信装置に対して通信用鍵の生成源となる鍵を生成する鍵生成装置であって、
所定のマスタ鍵を生成するマスタ鍵生成処理部と、
それぞれに演算回数が指定されている1種類以上の一方向性関数を第1の鍵用関数とし、第1の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って前記第1の通信装置に対する第1の鍵を生成する第1の鍵生成処理部と、
それぞれに演算回数が指定されている1種類以上の一方向性関数を第2の鍵用関数とし、第2の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って前記第2の通信装置に対する第2の鍵を生成する第2の鍵生成処理部と、
前記第1の鍵の生成における第1の鍵用関数のそれぞれの演算回数を導出可能な第1の鍵用関数演算回数情報と、前記第2の鍵の生成における第2の鍵用関数のそれぞれの演算回数を導出可能な第2の鍵用関数演算回数情報とを生成する演算回数情報生成処理部と、
前記第1の鍵と、前記第1の鍵用関数演算回数情報と、前記第2の鍵用関数演算回数情報の前記第1の通信装置への格納処理を行う第1の格納処理部と、
前記第2の鍵の前記第2の通信装置への格納処理を行う第2の格納処理部とを有し、
前記第1の鍵生成処理部と前記第2の鍵生成処理部は、
単独で演算に用いられると同じ入力値に対して異なる出力値となるが、各関数が組み合わされた場合は各関数の演算回数が指定された回数通りであれば演算順序が異なっていても同じ入力値に対して同じ出力値となる関係にある第1の鍵用関数と第2の鍵用関数を用い、
前記第1の格納処理部は、
前記第2の鍵用関数演算回数情報から導出される第2の鍵用関数のそれぞれの演算回数に従って前記第1の鍵に対して第2の鍵用関数のそれぞれを用いた演算を行い前記第2の通信装置との暗号化通信に用いられる通信用鍵を生成し、前記第1の鍵用関数演算回数情報から導出される第1の鍵用関数のそれぞれの演算回数を前記第2の通信装置に通知する第1の通信装置に対して、前記第1の鍵と、前記第1の鍵用関数演算回数情報と、前記第2の鍵用関数演算回数情報の格納処理を行い、
前記第2の格納処理部は、
前記第1の通信装置から通知される第1の鍵用関数のそれぞれの演算回数に従って前記第2の鍵に対して第1の鍵用関数のそれぞれを用いた演算を行い前記第1の通信装置との暗号化通信に用いられる通信用鍵を生成する第2の通信装置に対して、前記第2の鍵の格納処理を行うことを特徴とする鍵生成装置。
【請求項2】
前記鍵生成装置は、
n(nは2以上の整数)個の第1の通信装置と、前記第2の通信装置に対して、通信用鍵の生成源となる鍵を生成し、
前記第1の鍵生成処理部は、
第1の鍵用関数における演算回数の組み合わせを第1の通信装置ごとに変えて前記マスタ鍵に対して演算を行って前記n個の第1の通信装置に対するn個の第1の鍵を生成し、
前記演算回数情報生成処理部は、
前記第1の鍵生成処理部により生成されたn個の第1の鍵のそれぞれに対して、第1の鍵用関数演算回数情報を生成し、
前記第1の格納処理部は、
第1の通信装置ごとに、n個の第1の鍵のうちのいずれかの第1の鍵と、当該第1の鍵に対する第1の鍵用関数演算回数情報と、前記第2の鍵用関数演算回数情報の格納処理を行い、
前記第2の格納処理部は、
前記n個の第1の通信装置のそれぞれから通知される第1の鍵用関数のそれぞれの演算回数に従って前記第2の鍵に対して第1の鍵用関数のそれぞれを用いた演算を行い前記n個の第1の通信装置に対するn個の通信用鍵を生成する第2の通信装置に対して、前記第2の鍵の格納処理を行うことを特徴とする請求項1に記載の鍵生成装置。
【請求項3】
前記第1の通信装置は、
前記第2の通信装置との暗号化通信が終了する度に、格納されている前記第2の鍵用関数演算回数情報に基づいて前記第2の鍵用関数のそれぞれの演算回数を更新し、格納されている第1の鍵に対して更新後の演算回数に従って第2の鍵用関数のそれぞれを用いた演算を行って通信用鍵の更新を行い、
前記第2の鍵生成部は、
前記第1の通信装置と前記第2の通信装置との暗号化通信が終了する度に、前記第2の鍵用関数演算回数情報に基づいて前記第1の通信装置と同様の手順で前記第2の鍵用関数のそれぞれの演算回数を更新し、前記マスタ鍵に対して更新後の演算回数に従って第2の鍵用関数のそれぞれを用いた演算を行って前記第2の鍵の更新を行い、
前記第2の格納処理部は、
前記第2の鍵生成部により前記第2の鍵の更新が行われる度に、前記第2の通信装置に対して更新後の第2の鍵の格納処理を行い、前記第2の通信装置に前記第1の通信装置から通知されている第1の鍵用関数のそれぞれの演算回数に従って更新後の第2の鍵に対して第1の鍵用関数のそれぞれを用いた演算を行わせて通信用鍵を更新させることを特徴とする請求項1又は2に記載の鍵生成装置。
【請求項4】
前記第1の鍵生成処理部は、
第1の鍵生成用関数として2種類以上の一方向性関数を用いて前記マスタ鍵に対する演算を行うことを特徴とする請求項1〜3のいずれかに記載の鍵生成装置。
【請求項5】
共通の通信用鍵を用いて第2の通信装置と暗号化通信を行う第1の通信装置であって、
それぞれに演算回数が指定されている1種類以上の一方向性関数を第1の鍵用関数とし、それぞれに演算回数が指定されている1種類以上の一方向性関数を第2の鍵用関数とし、第1の鍵用関数ごとに指定の演算回数分の演算をマスタ鍵に対して行って第1の鍵を生成し、第2の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って第2の鍵を生成し、前記第1の鍵の生成における第1の鍵用関数のそれぞれの演算回数を導出可能な第1の鍵用関数演算回数情報を生成し、前記第2の鍵の生成における第2の鍵用関数のそれぞれの演算回数を導出可能な第2の鍵用関数演算回数情報を生成し、前記第2の通信装置に前記第2の鍵を格納する鍵生成装置で生成された前記第1の鍵と前記第1の鍵用関数演算回数情報と前記第2の鍵用関数演算回数情報とを入力する鍵入力部と、
前記第2の鍵用関数演算回数情報から導出される第2の鍵用関数のそれぞれの演算回数に従って前記第1の鍵に対して第2の鍵用関数のそれぞれを用いた演算を行い前記第2の通信装置との暗号化通信に用いる通信用鍵を生成する通信用鍵生成処理部と、
前記通信用鍵を記憶する鍵記憶部と、
前記第1の鍵用関数演算回数情報から導出される第1の鍵用関数のそれぞれの演算回数を前記第2の通信装置に通知する演算回数通知部と、
前記演算回数通知部から通知された第1の鍵用関数のそれぞれの演算回数に従って前記第2の鍵に対して第1の鍵用関数のそれぞれを用いた演算を行い暗号化通信に用いる通信用鍵を生成した第2の通信装置と、前記鍵記憶部に記憶されている前記通信用鍵を用いて暗号化通信を行う通信部とを有し、
前記鍵入力部は、
単独で演算に用いられると同じ入力値に対して異なる出力値となるが、各関数が組み合わされた場合は各関数の演算回数が指定された回数通りであれば演算順序が異なっていても同じ入力値に対して同じ出力値となる関係にある第1の鍵用関数と第2の鍵用関数を用いて第1の鍵と第2の鍵を生成する鍵生成装置で生成された第1の鍵を入力することを特徴とする第1の通信装置。
【請求項6】
前記通信部は、
前記演算回数通知部により第1の鍵用関数のそれぞれの演算回数が前記第2の通信装置に通知された後に、前記第2の通信装置から検証用情報を受信し、
前記第1の通信装置は、更に、
前記通信部により受信された検証用情報を用いて、前記鍵記憶部に記憶されている通信用鍵と共通する通信用鍵を前記第2の通信装置が保有しているか否かを検証する検証処理部を有し、
前記通信部は、
前記検証処理部により前記鍵記憶部に記憶されている通信用鍵と共通する通信用鍵を前記第2の通信装置が保有していると判断された後に、前記鍵記憶部に記憶されている通信用鍵を用いて前記第2の通信装置と暗号化通信を行うことを特徴とする請求項5に記載の第1の通信装置。
【請求項7】
前記鍵生成装置は、
前記第1の通信装置と前記第2の通信装置との暗号化通信が終了する度に、前記第2の鍵用関数演算回数情報に基づいて前記第2の鍵用関数のそれぞれの演算回数を更新し、前記マスタ鍵に対して更新後の演算回数に従って第2の鍵用関数のそれぞれを用いた演算を行って前記第2の鍵の更新を行い、前記第2の通信装置に対して更新後の第2の鍵の格納処理を行い、前記第2の通信装置に前記第1の通信装置から通知されている第1の鍵用関数のそれぞれの演算回数に従って更新後の第2の鍵に対して第1の鍵用関数のそれぞれを用いた演算を行わせて通信用鍵を更新させ、
前記通信用鍵生成処理部は、
前記第2の通信装置との暗号化通信が終了する度に、前記第2の鍵用関数演算回数情報に基づいて前記鍵生成装置と同様の手順で前記第2の鍵用関数のそれぞれの演算回数を更新し、前記第1の鍵に対して更新後の演算回数に従って第2の鍵用関数のそれぞれを用いた演算を行って通信用鍵の更新を行うことを特徴とする請求項5又は6に記載の鍵生成装置。
【請求項8】
共通の通信用鍵を用いて第1の通信装置と暗号化通信を行う第2の通信装置であって、
それぞれに演算回数が指定されている1種類以上の一方向性関数を第1の鍵用関数とし、それぞれに演算回数が指定されている1種類以上の一方向性関数を第2の鍵用関数とし、第1の鍵用関数ごとに指定の演算回数分の演算をマスタ鍵に対して行って第1の鍵を生成し、第2の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って第2の鍵を生成し、前記第1の鍵の生成における第1の鍵用関数のそれぞれの演算回数を導出可能な第1の鍵用関数演算回数情報を生成し、前記第2の鍵の生成における第2の鍵用関数のそれぞれの演算回数を導出可能な第2の鍵用関数演算回数情報を生成し、前記第1の鍵と前記第1の鍵用関数演算回数情報と前記第2の鍵用関数演算回数情報とを前記第1の通信装置に格納する鍵生成装置で生成された前記第2の鍵を入力する鍵入力部と、
前記第1の通信装置において前記第1の鍵用関数演算回数情報から導出された第1の鍵用関数のそれぞれの演算回数を入力する演算回数入力部と、
前記演算回数入力部により入力された第1の鍵用関数のそれぞれの演算回数に従って前記第2の鍵に対して第1の鍵用関数のそれぞれを用いた演算を行い前記第1の通信装置との暗号化通信に用いる通信用鍵を生成する通信用鍵生成処理部と、
前記通信用鍵を記憶する鍵記憶部と、
前記第2の鍵用関数演算回数情報から導出された第2の鍵用関数のそれぞれの演算回数に従って前記第1の鍵に対して第2の鍵用関数のそれぞれを用いた演算を行い暗号化通信に用いる通信用鍵を生成した第1の通信装置と、前記鍵記憶部に記憶されている前記通信用鍵を用いて暗号化通信を行う通信部とを有し、
前記鍵入力部は、
単独で演算に用いられると同じ入力値に対して異なる出力値となるが、各関数が組み合わされた場合は各関数の演算回数が指定された回数通りであれば演算順序が異なっていても同じ入力値に対して同じ出力値となる関係にある第1の鍵用関数と第2の鍵用関数を用いて第1の鍵と第2の鍵を生成する鍵生成装置で生成された第2の鍵を入力することを特徴とする第2の通信装置。
【請求項9】
前記第2の通信装置は、
n(nは2以上の整数)個の第1の通信装置と暗号化通信を行う通信装置であり、
前記入力部は、
第1の鍵用関数における演算回数の組み合わせを第1の通信装置ごとに変えて前記マスタ鍵に対して演算を行って前記n個の第1の通信装置に対するn個の第1の鍵を生成し、前記n個の第1の鍵のそれぞれに対して第1の鍵用関数演算回数情報を生成し、第1の通信装置ごとに、n個の第1の鍵のうちのいずれかの第1の鍵と、当該第1の鍵に対する第1の鍵用関数演算回数情報と、前記第2の鍵用関数演算回数情報とを格納する鍵生成装置で生成された前記第2の鍵を入力し、
前記演算回数入力部は、
第1の通信装置ごとに、第1の鍵用関数演算回数情報から導出された第1の鍵用関数のそれぞれの演算回数を入力し、
前記通信用鍵生成処理部は、
第1の通信装置ごとに、前記演算回数入力部により入力された第1の鍵用関数のそれぞれの演算回数に従って前記第2の鍵に対して第1の鍵用関数のそれぞれを用いた演算を行い、前記n個の第1の通信装置に対するn個の通信用鍵を生成し、
前記鍵記憶部は、
前記n個の通信用鍵を、対象となる第1の通信装置と対応付けて記憶し、
前記通信部は、
前記鍵記憶部に記憶されている前記n個の通信用鍵を用いて、前記n個の第1の通信装置と暗号化通信を行うことを特徴とする請求項8に記載の第2の通信装置。
【請求項10】
前記第1の通信装置は、
前記第2の通信装置との暗号化通信が終了する度に、格納されている前記第2の鍵用関数演算回数情報に基づいて前記第2の鍵用関数のそれぞれの演算回数を更新し、格納されている第1の鍵に対して更新後の演算回数に従って第2の鍵用関数のそれぞれを用いた演算を行って通信用鍵の更新を行い、
前記鍵生成装置は
前記第1の通信装置と前記第2の通信装置との暗号化通信が終了する度に、前記第2の鍵用関数演算回数情報に基づいて前記第1の通信装置と同様の手順で前記第2の鍵用関数のそれぞれの演算回数を更新し、前記マスタ鍵に対して更新後の演算回数に従って第2の鍵用関数のそれぞれを用いた演算を行って前記第2の鍵の更新を行い、
前記鍵入力部は、
更新後の第2の鍵を入力し、
前記通信用鍵生成処理部は、
前記鍵入力部により更新後の第2の鍵が入力される度に、通知されている第1の鍵用関数のそれぞれの演算回数に従って更新後の第2の鍵に対して第1の鍵用関数のそれぞれを用いた演算を行い通信用鍵を更新することを特徴とする請求項8又は9に記載の第2の通信装置。
【請求項11】
共通の通信用鍵を用いて暗号化通信を行う第1の通信装置と第2の通信装置と、前記第1の通信装置と前記第2の通信装置に対して通信用鍵の生成源となる鍵を生成する鍵生成装置とを有する情報処理システムであって、
前記鍵生成装置は、
所定のマスタ鍵を生成するマスタ鍵生成処理部と、
それぞれに演算回数が指定されている1種類以上の一方向性関数を第1の鍵用関数とし、第1の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って前記第1の通信装置に対する第1の鍵を生成する第1の鍵生成処理部と、
それぞれに演算回数が指定されている1種類以上の一方向性関数を第2の鍵用関数とし、第2の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って前記第2の通信装置に対する第2の鍵を生成する第2の鍵生成処理部と、
前記第1の鍵の生成における第1の鍵用関数のそれぞれの演算回数を導出可能な第1の鍵用関数演算回数情報と、前記第2の鍵の生成における第2の鍵用関数のそれぞれの演算回数を導出可能な第2の鍵用関数演算回数情報とを生成する演算回数情報生成処理部と、
前記第1の鍵と、前記第1の鍵用関数演算回数情報と、前記第2の鍵用関数演算回数情報の前記第1の通信装置への格納処理を行う第1の格納処理部と、
前記第2の鍵の前記第2の通信装置への格納処理を行う第2の格納処理部とを有し、
前記第1の鍵生成処理部と前記第2の鍵生成処理部は、
単独で演算に用いられると同じ入力値に対して異なる出力値となるが、各関数が組み合わされた場合は各関数の演算回数が指定された回数通りであれば演算順序が異なっていても同じ入力値に対して同じ出力値となる関係にある第1の鍵用関数と第2の鍵用関数を用い、
前記第1の通信装置は、
前記鍵生成装置で生成された前記第1の鍵と前記第1の鍵用関数演算回数情報と前記第2の鍵用関数演算回数情報とを入力する鍵入力部と、
前記第2の鍵用関数演算回数情報から導出される第2の鍵用関数のそれぞれの演算回数に従って前記第1の鍵に対して第2の鍵用関数のそれぞれを用いた演算を行い前記第2の通信装置との暗号化通信に用いる通信用鍵を生成する通信用鍵生成処理部と、
前記通信用鍵を記憶する鍵記憶部と、
前記第1の鍵用関数演算回数情報から導出される第1の鍵用関数のそれぞれの演算回数を前記第2の通信装置に通知する演算回数通知部と、
前記第2の通信装置と、前記鍵記憶部に記憶されている前記通信用鍵を用いて暗号化通信を行う通信部とを有し、
前記第2の通信装置は、
前記鍵生成装置で生成された前記第2の鍵を入力する鍵入力部と、
前記第1の通信装置において前記第1の鍵用関数演算回数情報から導出された第1の鍵用関数のそれぞれの演算回数を入力する演算回数入力部と、
前記演算回数入力部により入力された第1の鍵用関数のそれぞれの演算回数に従って前記第2の鍵に対して第1の鍵用関数のそれぞれを用いた演算を行い前記第1の通信装置との暗号化通信に用いる通信用鍵を生成する通信用鍵生成処理部と、
前記通信用鍵を記憶する鍵記憶部と、
前記第1の通信装置と、前記鍵記憶部に記憶されている前記通信用鍵を用いて暗号化通信を行う通信部とを有することを特徴とする情報処理システム。
【請求項12】
前記情報処理システムは、
n(nは2以上の整数)個の第1の通信装置を有し、
前記鍵生成装置において、
前記第1の鍵生成処理部は、
第1の鍵用関数における演算回数の組み合わせを第1の通信装置ごとに変えて前記マスタ鍵に対して演算を行って前記n個の第1の通信装置に対するn個の第1の鍵を生成し、
前記演算回数情報生成処理部は、
前記第1の鍵生成処理部により生成されたn個の第1の鍵のそれぞれに対して、第1の鍵用関数演算回数情報を生成し、
前記第1の格納処理部は、
第1の通信装置ごとに、n個の第1の鍵のうちのいずれかの第1の鍵と、当該第1の鍵に対する第1の鍵用関数演算回数情報と、前記第2の鍵用関数演算回数情報の格納処理を行い、
前記第2の通信装置において、
前記演算回数入力部は、
第1の通信装置ごとに、第1の鍵用関数演算回数情報から導出された第1の鍵用関数のそれぞれの演算回数を入力し、
前記通信用鍵生成処理部は、
第1の通信装置ごとに、前記演算回数入力部により入力された第1の鍵用関数のそれぞれの演算回数に従って前記第2の鍵に対して第1の鍵用関数のそれぞれを用いた演算を行い、前記n個の第1の通信装置に対するn個の通信用鍵を生成し、
前記鍵記憶部は、
前記n個の通信用鍵を、対象となる第1の通信装置と対応付けて記憶し、
前記通信部は、
前記鍵記憶部に記憶されている前記n個の通信用鍵を用いて、前記n個の第1の通信装置と暗号化通信を行うことを特徴とする請求項11に記載の情報処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate