(57)【要約】【課題】共通鍵の暗号通信システムにおいて、通信装置の盗難・紛失があっても安全性を保ち、通信相手と鍵の対応を簡素化できる方式を実現する。【解決手段】鍵生成装置２００は、組み合わせた際に演算順序が違っても同じ入力に対して同じ出力になるハッシュ関数Ｈ１、Ｈ２、Ｈ３を用い、マスタ鍵にＨ１とＨ２の演算を行い組込みデバイス４００ごとの組込みデバイス側マスタ鍵を生成し、マスタ鍵にＨ３の演算を行い端末機３００用の端末機側セッション鍵を生成し、各組込みデバイス４００に、Ｈ１、Ｈ２、Ｈ３の各々の演算回数を通知して組込みデバイス側マスタ鍵を格納する。組込みデバイス４００は、通知された回数分のＨ３演算を組込みデバイス側マスタ鍵に行い通信用の鍵を生成し、端末機３００は、各組込みデバイス４００からＨ１とＨ２の演算回数を通知され、通知された回数分のＨ１及びＨ２演算を端末機側セッション鍵に行い共通の通信用の鍵を得る。【選択図】図１
2011146898.tif 000002
【特許請求の範囲】
【請求項１】
共通の通信用鍵を用いて暗号化通信を行う第１の通信装置と第２の通信装置に対して通信用鍵の生成源となる鍵を生成する鍵生成装置であって、
所定のマスタ鍵を生成するマスタ鍵生成処理部と、
それぞれに演算回数が指定されている１種類以上の一方向性関数を第１の鍵用関数とし、第１の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って前記第１の通信装置に対する第１の鍵を生成する第１の鍵生成処理部と、
それぞれに演算回数が指定されている１種類以上の一方向性関数を第２の鍵用関数とし、第２の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って前記第２の通信装置に対する第２の鍵を生成する第２の鍵生成処理部と、
前記第１の鍵の生成における第１の鍵用関数のそれぞれの演算回数を導出可能な第１の鍵用関数演算回数情報と、前記第２の鍵の生成における第２の鍵用関数のそれぞれの演算回数を導出可能な第２の鍵用関数演算回数情報とを生成する演算回数情報生成処理部と、
前記第１の鍵と、前記第１の鍵用関数演算回数情報と、前記第２の鍵用関数演算回数情報の前記第１の通信装置への格納処理を行う第１の格納処理部と、
前記第２の鍵の前記第２の通信装置への格納処理を行う第２の格納処理部とを有し、
前記第１の鍵生成処理部と前記第２の鍵生成処理部は、
単独で演算に用いられると同じ入力値に対して異なる出力値となるが、各関数が組み合わされた場合は各関数の演算回数が指定された回数通りであれば演算順序が異なっていても同じ入力値に対して同じ出力値となる関係にある第１の鍵用関数と第２の鍵用関数を用い、
前記第１の格納処理部は、
前記第２の鍵用関数演算回数情報から導出される第２の鍵用関数のそれぞれの演算回数に従って前記第１の鍵に対して第２の鍵用関数のそれぞれを用いた演算を行い前記第２の通信装置との暗号化通信に用いられる通信用鍵を生成し、前記第１の鍵用関数演算回数情報から導出される第１の鍵用関数のそれぞれの演算回数を前記第２の通信装置に通知する第１の通信装置に対して、前記第１の鍵と、前記第１の鍵用関数演算回数情報と、前記第２の鍵用関数演算回数情報の格納処理を行い、
前記第２の格納処理部は、
前記第１の通信装置から通知される第１の鍵用関数のそれぞれの演算回数に従って前記第２の鍵に対して第１の鍵用関数のそれぞれを用いた演算を行い前記第１の通信装置との暗号化通信に用いられる通信用鍵を生成する第２の通信装置に対して、前記第２の鍵の格納処理を行うことを特徴とする鍵生成装置。
【請求項２】
前記鍵生成装置は、
ｎ（ｎは２以上の整数）個の第１の通信装置と、前記第２の通信装置に対して、通信用鍵の生成源となる鍵を生成し、
前記第１の鍵生成処理部は、
第１の鍵用関数における演算回数の組み合わせを第１の通信装置ごとに変えて前記マスタ鍵に対して演算を行って前記ｎ個の第１の通信装置に対するｎ個の第１の鍵を生成し、
前記演算回数情報生成処理部は、
前記第１の鍵生成処理部により生成されたｎ個の第１の鍵のそれぞれに対して、第１の鍵用関数演算回数情報を生成し、
前記第１の格納処理部は、
第１の通信装置ごとに、ｎ個の第１の鍵のうちのいずれかの第１の鍵と、当該第１の鍵に対する第１の鍵用関数演算回数情報と、前記第２の鍵用関数演算回数情報の格納処理を行い、
前記第２の格納処理部は、
前記ｎ個の第１の通信装置のそれぞれから通知される第１の鍵用関数のそれぞれの演算回数に従って前記第２の鍵に対して第１の鍵用関数のそれぞれを用いた演算を行い前記ｎ個の第１の通信装置に対するｎ個の通信用鍵を生成する第２の通信装置に対して、前記第２の鍵の格納処理を行うことを特徴とする請求項１に記載の鍵生成装置。
【請求項３】
前記第１の通信装置は、
前記第２の通信装置との暗号化通信が終了する度に、格納されている前記第２の鍵用関数演算回数情報に基づいて前記第２の鍵用関数のそれぞれの演算回数を更新し、格納されている第１の鍵に対して更新後の演算回数に従って第２の鍵用関数のそれぞれを用いた演算を行って通信用鍵の更新を行い、
前記第２の鍵生成部は、
前記第１の通信装置と前記第２の通信装置との暗号化通信が終了する度に、前記第２の鍵用関数演算回数情報に基づいて前記第１の通信装置と同様の手順で前記第２の鍵用関数のそれぞれの演算回数を更新し、前記マスタ鍵に対して更新後の演算回数に従って第２の鍵用関数のそれぞれを用いた演算を行って前記第２の鍵の更新を行い、
前記第２の格納処理部は、
前記第２の鍵生成部により前記第２の鍵の更新が行われる度に、前記第２の通信装置に対して更新後の第２の鍵の格納処理を行い、前記第２の通信装置に前記第１の通信装置から通知されている第１の鍵用関数のそれぞれの演算回数に従って更新後の第２の鍵に対して第１の鍵用関数のそれぞれを用いた演算を行わせて通信用鍵を更新させることを特徴とする請求項１又は２に記載の鍵生成装置。
【請求項４】
前記第１の鍵生成処理部は、
第１の鍵生成用関数として２種類以上の一方向性関数を用いて前記マスタ鍵に対する演算を行うことを特徴とする請求項１〜３のいずれかに記載の鍵生成装置。
【請求項５】
共通の通信用鍵を用いて第２の通信装置と暗号化通信を行う第１の通信装置であって、
それぞれに演算回数が指定されている１種類以上の一方向性関数を第１の鍵用関数とし、それぞれに演算回数が指定されている１種類以上の一方向性関数を第２の鍵用関数とし、第１の鍵用関数ごとに指定の演算回数分の演算をマスタ鍵に対して行って第１の鍵を生成し、第２の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って第２の鍵を生成し、前記第１の鍵の生成における第１の鍵用関数のそれぞれの演算回数を導出可能な第１の鍵用関数演算回数情報を生成し、前記第２の鍵の生成における第２の鍵用関数のそれぞれの演算回数を導出可能な第２の鍵用関数演算回数情報を生成し、前記第２の通信装置に前記第２の鍵を格納する鍵生成装置で生成された前記第１の鍵と前記第１の鍵用関数演算回数情報と前記第２の鍵用関数演算回数情報とを入力する鍵入力部と、
前記第２の鍵用関数演算回数情報から導出される第２の鍵用関数のそれぞれの演算回数に従って前記第１の鍵に対して第２の鍵用関数のそれぞれを用いた演算を行い前記第２の通信装置との暗号化通信に用いる通信用鍵を生成する通信用鍵生成処理部と、
前記通信用鍵を記憶する鍵記憶部と、
前記第１の鍵用関数演算回数情報から導出される第１の鍵用関数のそれぞれの演算回数を前記第２の通信装置に通知する演算回数通知部と、
前記演算回数通知部から通知された第１の鍵用関数のそれぞれの演算回数に従って前記第２の鍵に対して第１の鍵用関数のそれぞれを用いた演算を行い暗号化通信に用いる通信用鍵を生成した第２の通信装置と、前記鍵記憶部に記憶されている前記通信用鍵を用いて暗号化通信を行う通信部とを有し、
前記鍵入力部は、
単独で演算に用いられると同じ入力値に対して異なる出力値となるが、各関数が組み合わされた場合は各関数の演算回数が指定された回数通りであれば演算順序が異なっていても同じ入力値に対して同じ出力値となる関係にある第１の鍵用関数と第２の鍵用関数を用いて第１の鍵と第２の鍵を生成する鍵生成装置で生成された第１の鍵を入力することを特徴とする第１の通信装置。
【請求項６】
前記通信部は、
前記演算回数通知部により第１の鍵用関数のそれぞれの演算回数が前記第２の通信装置に通知された後に、前記第２の通信装置から検証用情報を受信し、
前記第１の通信装置は、更に、
前記通信部により受信された検証用情報を用いて、前記鍵記憶部に記憶されている通信用鍵と共通する通信用鍵を前記第２の通信装置が保有しているか否かを検証する検証処理部を有し、
前記通信部は、
前記検証処理部により前記鍵記憶部に記憶されている通信用鍵と共通する通信用鍵を前記第２の通信装置が保有していると判断された後に、前記鍵記憶部に記憶されている通信用鍵を用いて前記第２の通信装置と暗号化通信を行うことを特徴とする請求項５に記載の第１の通信装置。
【請求項７】
前記鍵生成装置は、
前記第１の通信装置と前記第２の通信装置との暗号化通信が終了する度に、前記第２の鍵用関数演算回数情報に基づいて前記第２の鍵用関数のそれぞれの演算回数を更新し、前記マスタ鍵に対して更新後の演算回数に従って第２の鍵用関数のそれぞれを用いた演算を行って前記第２の鍵の更新を行い、前記第２の通信装置に対して更新後の第２の鍵の格納処理を行い、前記第２の通信装置に前記第１の通信装置から通知されている第１の鍵用関数のそれぞれの演算回数に従って更新後の第２の鍵に対して第１の鍵用関数のそれぞれを用いた演算を行わせて通信用鍵を更新させ、
前記通信用鍵生成処理部は、
前記第２の通信装置との暗号化通信が終了する度に、前記第２の鍵用関数演算回数情報に基づいて前記鍵生成装置と同様の手順で前記第２の鍵用関数のそれぞれの演算回数を更新し、前記第１の鍵に対して更新後の演算回数に従って第２の鍵用関数のそれぞれを用いた演算を行って通信用鍵の更新を行うことを特徴とする請求項５又は６に記載の鍵生成装置。
【請求項８】
共通の通信用鍵を用いて第１の通信装置と暗号化通信を行う第２の通信装置であって、
それぞれに演算回数が指定されている１種類以上の一方向性関数を第１の鍵用関数とし、それぞれに演算回数が指定されている１種類以上の一方向性関数を第２の鍵用関数とし、第１の鍵用関数ごとに指定の演算回数分の演算をマスタ鍵に対して行って第１の鍵を生成し、第２の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って第２の鍵を生成し、前記第１の鍵の生成における第１の鍵用関数のそれぞれの演算回数を導出可能な第１の鍵用関数演算回数情報を生成し、前記第２の鍵の生成における第２の鍵用関数のそれぞれの演算回数を導出可能な第２の鍵用関数演算回数情報を生成し、前記第１の鍵と前記第１の鍵用関数演算回数情報と前記第２の鍵用関数演算回数情報とを前記第１の通信装置に格納する鍵生成装置で生成された前記第２の鍵を入力する鍵入力部と、
前記第１の通信装置において前記第１の鍵用関数演算回数情報から導出された第１の鍵用関数のそれぞれの演算回数を入力する演算回数入力部と、
前記演算回数入力部により入力された第１の鍵用関数のそれぞれの演算回数に従って前記第２の鍵に対して第１の鍵用関数のそれぞれを用いた演算を行い前記第１の通信装置との暗号化通信に用いる通信用鍵を生成する通信用鍵生成処理部と、
前記通信用鍵を記憶する鍵記憶部と、
前記第２の鍵用関数演算回数情報から導出された第２の鍵用関数のそれぞれの演算回数に従って前記第１の鍵に対して第２の鍵用関数のそれぞれを用いた演算を行い暗号化通信に用いる通信用鍵を生成した第１の通信装置と、前記鍵記憶部に記憶されている前記通信用鍵を用いて暗号化通信を行う通信部とを有し、
前記鍵入力部は、
単独で演算に用いられると同じ入力値に対して異なる出力値となるが、各関数が組み合わされた場合は各関数の演算回数が指定された回数通りであれば演算順序が異なっていても同じ入力値に対して同じ出力値となる関係にある第１の鍵用関数と第２の鍵用関数を用いて第１の鍵と第２の鍵を生成する鍵生成装置で生成された第２の鍵を入力することを特徴とする第２の通信装置。
【請求項９】
前記第２の通信装置は、
ｎ（ｎは２以上の整数）個の第１の通信装置と暗号化通信を行う通信装置であり、
前記入力部は、
第１の鍵用関数における演算回数の組み合わせを第１の通信装置ごとに変えて前記マスタ鍵に対して演算を行って前記ｎ個の第１の通信装置に対するｎ個の第１の鍵を生成し、前記ｎ個の第１の鍵のそれぞれに対して第１の鍵用関数演算回数情報を生成し、第１の通信装置ごとに、ｎ個の第１の鍵のうちのいずれかの第１の鍵と、当該第１の鍵に対する第１の鍵用関数演算回数情報と、前記第２の鍵用関数演算回数情報とを格納する鍵生成装置で生成された前記第２の鍵を入力し、
前記演算回数入力部は、
第１の通信装置ごとに、第１の鍵用関数演算回数情報から導出された第１の鍵用関数のそれぞれの演算回数を入力し、
前記通信用鍵生成処理部は、
第１の通信装置ごとに、前記演算回数入力部により入力された第１の鍵用関数のそれぞれの演算回数に従って前記第２の鍵に対して第１の鍵用関数のそれぞれを用いた演算を行い、前記ｎ個の第１の通信装置に対するｎ個の通信用鍵を生成し、
前記鍵記憶部は、
前記ｎ個の通信用鍵を、対象となる第１の通信装置と対応付けて記憶し、
前記通信部は、
前記鍵記憶部に記憶されている前記ｎ個の通信用鍵を用いて、前記ｎ個の第１の通信装置と暗号化通信を行うことを特徴とする請求項８に記載の第２の通信装置。
【請求項１０】
前記第１の通信装置は、
前記第２の通信装置との暗号化通信が終了する度に、格納されている前記第２の鍵用関数演算回数情報に基づいて前記第２の鍵用関数のそれぞれの演算回数を更新し、格納されている第１の鍵に対して更新後の演算回数に従って第２の鍵用関数のそれぞれを用いた演算を行って通信用鍵の更新を行い、
前記鍵生成装置は
前記第１の通信装置と前記第２の通信装置との暗号化通信が終了する度に、前記第２の鍵用関数演算回数情報に基づいて前記第１の通信装置と同様の手順で前記第２の鍵用関数のそれぞれの演算回数を更新し、前記マスタ鍵に対して更新後の演算回数に従って第２の鍵用関数のそれぞれを用いた演算を行って前記第２の鍵の更新を行い、
前記鍵入力部は、
更新後の第２の鍵を入力し、
前記通信用鍵生成処理部は、
前記鍵入力部により更新後の第２の鍵が入力される度に、通知されている第１の鍵用関数のそれぞれの演算回数に従って更新後の第２の鍵に対して第１の鍵用関数のそれぞれを用いた演算を行い通信用鍵を更新することを特徴とする請求項８又は９に記載の第２の通信装置。
【請求項１１】
共通の通信用鍵を用いて暗号化通信を行う第１の通信装置と第２の通信装置と、前記第１の通信装置と前記第２の通信装置に対して通信用鍵の生成源となる鍵を生成する鍵生成装置とを有する情報処理システムであって、
前記鍵生成装置は、
所定のマスタ鍵を生成するマスタ鍵生成処理部と、
それぞれに演算回数が指定されている１種類以上の一方向性関数を第１の鍵用関数とし、第１の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って前記第１の通信装置に対する第１の鍵を生成する第１の鍵生成処理部と、
それぞれに演算回数が指定されている１種類以上の一方向性関数を第２の鍵用関数とし、第２の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って前記第２の通信装置に対する第２の鍵を生成する第２の鍵生成処理部と、
前記第１の鍵の生成における第１の鍵用関数のそれぞれの演算回数を導出可能な第１の鍵用関数演算回数情報と、前記第２の鍵の生成における第２の鍵用関数のそれぞれの演算回数を導出可能な第２の鍵用関数演算回数情報とを生成する演算回数情報生成処理部と、
前記第１の鍵と、前記第１の鍵用関数演算回数情報と、前記第２の鍵用関数演算回数情報の前記第１の通信装置への格納処理を行う第１の格納処理部と、
前記第２の鍵の前記第２の通信装置への格納処理を行う第２の格納処理部とを有し、
前記第１の鍵生成処理部と前記第２の鍵生成処理部は、
単独で演算に用いられると同じ入力値に対して異なる出力値となるが、各関数が組み合わされた場合は各関数の演算回数が指定された回数通りであれば演算順序が異なっていても同じ入力値に対して同じ出力値となる関係にある第１の鍵用関数と第２の鍵用関数を用い、
前記第１の通信装置は、
前記鍵生成装置で生成された前記第１の鍵と前記第１の鍵用関数演算回数情報と前記第２の鍵用関数演算回数情報とを入力する鍵入力部と、
前記第２の鍵用関数演算回数情報から導出される第２の鍵用関数のそれぞれの演算回数に従って前記第１の鍵に対して第２の鍵用関数のそれぞれを用いた演算を行い前記第２の通信装置との暗号化通信に用いる通信用鍵を生成する通信用鍵生成処理部と、
前記通信用鍵を記憶する鍵記憶部と、
前記第１の鍵用関数演算回数情報から導出される第１の鍵用関数のそれぞれの演算回数を前記第２の通信装置に通知する演算回数通知部と、
前記第２の通信装置と、前記鍵記憶部に記憶されている前記通信用鍵を用いて暗号化通信を行う通信部とを有し、
前記第２の通信装置は、
前記鍵生成装置で生成された前記第２の鍵を入力する鍵入力部と、
前記第１の通信装置において前記第１の鍵用関数演算回数情報から導出された第１の鍵用関数のそれぞれの演算回数を入力する演算回数入力部と、
前記演算回数入力部により入力された第１の鍵用関数のそれぞれの演算回数に従って前記第２の鍵に対して第１の鍵用関数のそれぞれを用いた演算を行い前記第１の通信装置との暗号化通信に用いる通信用鍵を生成する通信用鍵生成処理部と、
前記通信用鍵を記憶する鍵記憶部と、
前記第１の通信装置と、前記鍵記憶部に記憶されている前記通信用鍵を用いて暗号化通信を行う通信部とを有することを特徴とする情報処理システム。
【請求項１２】
前記情報処理システムは、
ｎ（ｎは２以上の整数）個の第１の通信装置を有し、
前記鍵生成装置において、
前記第１の鍵生成処理部は、
第１の鍵用関数における演算回数の組み合わせを第１の通信装置ごとに変えて前記マスタ鍵に対して演算を行って前記ｎ個の第１の通信装置に対するｎ個の第１の鍵を生成し、
前記演算回数情報生成処理部は、
前記第１の鍵生成処理部により生成されたｎ個の第１の鍵のそれぞれに対して、第１の鍵用関数演算回数情報を生成し、
前記第１の格納処理部は、
第１の通信装置ごとに、ｎ個の第１の鍵のうちのいずれかの第１の鍵と、当該第１の鍵に対する第１の鍵用関数演算回数情報と、前記第２の鍵用関数演算回数情報の格納処理を行い、
前記第２の通信装置において、
前記演算回数入力部は、
第１の通信装置ごとに、第１の鍵用関数演算回数情報から導出された第１の鍵用関数のそれぞれの演算回数を入力し、
前記通信用鍵生成処理部は、
第１の通信装置ごとに、前記演算回数入力部により入力された第１の鍵用関数のそれぞれの演算回数に従って前記第２の鍵に対して第１の鍵用関数のそれぞれを用いた演算を行い、前記ｎ個の第１の通信装置に対するｎ個の通信用鍵を生成し、
前記鍵記憶部は、
前記ｎ個の通信用鍵を、対象となる第１の通信装置と対応付けて記憶し、
前記通信部は、
前記鍵記憶部に記憶されている前記ｎ個の通信用鍵を用いて、前記ｎ個の第１の通信装置と暗号化通信を行うことを特徴とする請求項１１に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通鍵を用いて暗号化通信を行う暗号通信システムに関する。
【背景技術】
【０００２】
例えば、作業員が端末機を持って組込みデバイスの至近距離に向かい、個別に各組込みデバイスと通信する事によって作業を実施するシステムを考える。
組込みデバイスは監視・制御機能を持ち、無線通信手段を持つ。
また、これら組込みデバイスを設定するための端末機があり、各組込みデバイスとの通信によって、組込みデバイスの設定やログの収集などの作業を実施する。
端末機と組込みデバイス間の通信において、端末機が異なる組込みデバイスに誤接続する危険性や、イタズラの危険性を防止するため、セキュリティ技術が必要である。
【０００３】
セキュリティ技術では、各ノードが公開鍵・秘密鍵ペアを持つ方式（公開鍵暗号やデジタル署名など）と、通信を行う２ノードが同一の鍵を持つ方式（共通鍵暗号やメッセージ認証子（ＭＡＣ）など）に大別される。
公開鍵・秘密鍵ペアを持つ方式では、計算・記憶資源をより多く使用する点が、通信を行う２ノードが同一の鍵を持つ方式では、同一の鍵を共有するための方式に課題がある。
【０００４】
特許文献１では、上記の課題のうち後者に対応する方式が開示されている。
つまり、同一の鍵を共有する方式として、予め２ノード間で複数の種値と所定回数を共有しておき、種値のうち１つを入力として、一方向性ハッシュ関数を所定回数だけ適用して初期鍵とし、次回以降は、一方向性ハッシュ関数を適用する回数を２ノード間の通信によって合意し、２ノードが合意した値に基づいて一方向性ハッシュ関数を同じ回数適用して鍵を共有する方式である。
特許文献１の方式では、鍵そのものではなく、第三者に知られても良い情報である一方向性ハッシュ関数の適用回数を交換するため、鍵そのものが盗聴される危険性が減少するという利点がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−９４５４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したシステムでは、組込み機器の計算・記憶資源の制限により、代表的な公開鍵暗号であるＲＳＡ（登録商標）暗号のように、べき乗計算に基づく暗号は使用することが難しい。
さらに、ＲＳＡ（登録商標）暗号に基づくデジタル署名や、デジタル署名を含むセキュリティ技術（ＩＰＳｅｃ、ＳＳＬなど）の使用も難しいため、共通鍵暗号やメッセージ認証によるセキュリティの確保が必要となる。
上記で述べたように、共通鍵暗号やメッセージ認証では、同一の鍵を共有するための方式が課題となる。
想定する上記システムに対し、特許文献１の方式の導入を試みた場合、通信路の盗聴による危険性は減少する。
しかし、端末機を持ち運ぶことが必要なシステムでは、端末機自体の紛失・盗難の可能性があり、この場合は端末機から予め定めた種値すべてが漏洩するため、システムの安全性が崩壊するという課題がある。
特許文献１では、この点の対処方法について開示・示唆されていない。
さらに、端末機が複数の組込みデバイスと通信するため、組込みデバイス毎に種値を持つ必要があり管理が複雑になるが、特許文献１ではこの点の対処方法について開示・示唆されていない。
【０００７】
この発明は、上記のような課題を解決することを主な目的の一つとしており、共通の鍵を用いて暗号化通信を行うシステムにおいて、通信装置（例えば、端末機）の盗難・紛失があった場合でもシステムを安全に保ち、また、通信相手と鍵の対応関係を簡素化できる方式を実現することを主な目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る鍵生成装置は、
共通の通信用鍵を用いて暗号化通信を行う第１の通信装置と第２の通信装置に対して通信用鍵の生成源となる鍵を生成する鍵生成装置であって、
所定のマスタ鍵を生成するマスタ鍵生成処理部と、
それぞれに演算回数が指定されている１種類以上の一方向性関数を第１の鍵用関数とし、第１の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って前記第１の通信装置に対する第１の鍵を生成する第１の鍵生成処理部と、
それぞれに演算回数が指定されている１種類以上の一方向性関数を第２の鍵用関数とし、第２の鍵用関数ごとに指定の演算回数分の演算を前記マスタ鍵に対して行って前記第２の通信装置に対する第２の鍵を生成する第２の鍵生成処理部と、
前記第１の鍵の生成における第１の鍵用関数のそれぞれの演算回数を導出可能な第１の鍵用関数演算回数情報と、前記第２の鍵の生成における第２の鍵用関数のそれぞれの演算回数を導出可能な第２の鍵用関数演算回数情報とを生成する演算回数情報生成処理部と、
前記第１の鍵と、前記第１の鍵用関数演算回数情報と、前記第２の鍵用関数演算回数情報の前記第１の通信装置への格納処理を行う第１の格納処理部と、
前記第２の鍵の前記第２の通信装置への格納処理を行う第２の格納処理部とを有し、
前記第１の鍵生成処理部と前記第２の鍵生成処理部は、
単独で演算に用いられると同じ入力値に対して異なる出力値となるが、各関数が組み合わされた場合は各関数の演算回数が指定された回数通りであれば演算順序が異なっていても同じ入力値に対して同じ出力値となる関係にある第１の鍵用関数と第２の鍵用関数を用い、
前記第１の格納処理部は、
前記第２の鍵用関数演算回数情報から導出される第２の鍵用関数のそれぞれの演算回数に従って前記第１の鍵に対して第２の鍵用関数のそれぞれを用いた演算を行い前記第２の通信装置との暗号化通信に用いられる通信用鍵を生成し、前記第１の鍵用関数演算回数情報から導出される第１の鍵用関数のそれぞれの演算回数を前記第２の通信装置に通知する第１の通信装置に対して、前記第１の鍵と、前記第１の鍵用関数演算回数情報と、前記第２の鍵用関数演算回数情報の格納処理を行い、
前記第２の格納処理部は、
前記第１の通信装置から通知される第１の鍵用関数のそれぞれの演算回数に従って前記第２の鍵に対して第１の鍵用関数のそれぞれを用いた演算を行い前記第１の通信装置との暗号化通信に用いられる通信用鍵を生成する第２の通信装置に対して、前記第２の鍵の格納処理を行うことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、例えば第２の通信装置の盗難・紛失があった場合でも、第２の通信装置は第２の鍵のみを保持しているため、マスタ鍵が漏洩する危険性が無く、システムを安全に保つことが可能となり、また、第２の通信装置は、第１の通信装置から通知された第１の鍵用関数の演算回数によって、第１の通信装置と共通の通信用鍵を算出することが可能なため、第１の通信装置と第１の鍵との対応関係を予め知ることなく鍵共有が可能となる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係る情報処理システムの構成例を示す図。
【図２】実施の形態１に係る鍵生成装置の構成例を示す図。
【図３】実施の形態１に係る端末機の構成例を示す図。
【図４】実施の形態１に係る組込みデバイスの構成例を示す図。
【図５】実施の形態１に係る鍵生成・割り当て処理を示すフローチャート図。
【図６】実施の形態１に係る組込みデバイス側マスタ鍵生成処理部の動作例を示すフローチャート図。
【図７】実施の形態１に係る組込みデバイス側マスタ鍵生成処理部の計算例を示す図。
【図８】実施の形態１に係る組込みデバイス側マスタ鍵割り当て処理部の動作例を示すフローチャート図。
【図９】実施の形態１に係る組込みデバイス側マスタ鍵割り当て処理部の計算例を示す図。
【図１０】実施の形態１に係る鍵生成装置における端末側セッション鍵の生成処理及び端末機と組込みデバイスとの間の鍵共有処理を示すフローチャート図。
【図１１】実施の形態１に係る端末機と組込みデバイス間の通信の例を示す図。
【図１２】実施の形態１に係る端末機のセッション鍵計算処理部の動作例を示すフローチャート図。
【図１３】実施の形態１に係る端末機のセッション鍵計算処理部の計算例を示す図。
【図１４】実施の形態１に係る鍵生成・更新処理部の動作例を示すフローチャート図。
【図１５】実施の形態１に係る鍵生成・更新処理部の計算例を示す図。
【図１６】実施の形態１に係る鍵生成装置の動作の概要を示すフローチャート図。
【図１７】実施の形態１に係る端末機と組込みデバイスの動作の概要を示すフローチャート図。
【図１８】実施の形態１に係る鍵生成装置、端末機、組込みデバイスのハードウェア構成例を示す図。
【発明を実施するための形態】
【００１１】
実施の形態１．
図１は、本実施の形態に係る情報処理システム１００の構成を示す。
図１において、端末機３００は、各組込みデバイス４００との間で１対１の通信を行う。
端末機３００と各組込みデバイス４００との間では、共通の鍵（通信用鍵）を用いた暗号化通信が行われる。
なお、組込みデバイス４００同士の通信は行われない。
鍵生成装置２００は、端末機３００及び各組込みデバイス４００が暗号化通信に用いる通信用鍵の生成源となる鍵を生成する。
なお、鍵生成装置２００と端末機３００との間では、安全な方法で情報の送受信が可能である（例：ＵＳＢメモリ、社内ＬＡＮなど）。
なお、各組込みデバイス４００は第１の通信装置の例であり、端末機３００は第２の通信装置の例である。
【００１２】
また、鍵生成装置２００が各組込みデバイス４００に対して生成する鍵を、組込みデバイス側マスタ鍵と呼ぶ。組込みデバイス側マスタ鍵は第１の鍵の例である。
組込みデバイス側マスタ鍵は組込みデバイス４００ごとに値が異なっている。つまり、図１のように、組込みデバイス４００が４台存在していれば、４個の組込みデバイス側マスタ鍵が生成される。
鍵生成装置２００が端末機３００に対して生成する鍵を、端末機側セッション鍵と呼ぶ。端末機側セッション鍵は第２の鍵の例である。
また、各組込みデバイス４００は、組込みデバイス側マスタ鍵から端末機３００と暗号化通信に用いる鍵（通信用鍵）を生成する。
また、端末機３００は、端末機側セッション鍵から各組込みデバイス４００との暗号化通信に用いる鍵（通信用鍵）を生成する。
端末機３００と組込みデバイス４００が暗号化通信に用いる鍵をセッション鍵という。
組込みデバイス４００は、それぞれ異なるセッション鍵を保有し、端末機３００は、各組込みデバイス４００に対応させたセッション鍵を保有する。つまり、組込みデバイス４００が４台存在していれば、端末機３００は、４個のセッション鍵を保有する。
また、各セッション鍵は、暗号化通信が終了する度（セッション終了の度）に更新される。
【００１３】
本実施の形態では、鍵生成装置２００は、所定のマスタ鍵に２つの一方向性ハッシュ関数を用いた演算を行って組込みデバイス側マスタ鍵を生成する。この２つの一方向性ハッシュ関数は、Ｈ１、Ｈ２と略記する。Ｈ１及びＨ２は第１の鍵用関数の例である。
また、鍵生成装置２００は、上記マスタ鍵にＨ１、Ｈ２とは異なる１つの一方向性ハッシュ関数を用いた演算を行って端末機側セッション鍵を生成する。
この一方向性ハッシュ関数はＨ３と略記する。Ｈ３は第２の鍵用関数の例である。
Ｈ１、Ｈ２、Ｈ３は、単独で演算に用いられると同じ入力値に対して異なる出力値となるが、各関数が組み合わされた場合は各関数の演算回数が指定された回数通りであれば演算順序が異なっていても同じ入力値に対して同じ出力値となる関係にある。
つまり、入力値をｋとし、Ｈ１にｋを入力したときの出力値をＨ１（ｋ）とし、Ｈ２にｋを入力したときの出力値をＨ２（ｋ）とし、Ｈ３にｋを入力したときの出力値をＨ３（ｋ）とすると、Ｈ１（ｋ）≠Ｈ２（ｋ）≠Ｈ３（ｋ）となる。
一方、Ｈ１（Ｈ２（Ｈ３（ｋ）））＝Ｈ１（Ｈ３（Ｈ２（ｋ）））＝Ｈ２（Ｈ１（Ｈ３（ｋ）））＝Ｈ２（Ｈ３（Ｈ１（ｋ）））＝Ｈ３（Ｈ１（Ｈ２（ｋ）））＝Ｈ３（Ｈ２（Ｈ１（ｋ）））となる。
また、鍵生成装置２００は、組込みデバイス４００ごとに、Ｈ１の回数、Ｈ２の回数を変化させることにより、組込みデバイス４００ごとに異なる組込みデバイス側マスタ鍵を生成する。
そして、Ｈ１及びＨ２を用いて生成された組込みデバイス側マスタ鍵が組込みデバイス４００に格納される。この際、各組込みデバイス４００は、自己の組込みデバイス側マスタ鍵の生成においてＨ１、Ｈ２がそれぞれ何回演算されたかを導出可能な情報（第１の鍵用関数演算回数情報）と、端末機側セッション鍵の生成においてＨ３が何回演算されたかを導出可能な情報（第２の鍵用関数演算回数情報）も組込みデバイス４００に格納される。
また、Ｈ３を用いて生成された端末機側セッション鍵が端末機３００に格納される。
【００１４】
各組込みデバイス４００は、鍵生成装置２００における端末機側セッション鍵の生成時と同じ回数のＨ３の演算を自己の組込みデバイス側マスタ鍵に行ってセッション鍵を生成する。
また、各組込みデバイス４００は、自己の組込みデバイス側マスタ鍵の生成時のＨ１の演算回数及びＨ２の演算回数を端末機３００に通知する。
端末機３００は、各組込みデバイス４００から通知された回数分のＨ１及びＨ２の演算を端末機側セッション鍵に行ってセッション鍵を生成する。
端末機３００と組込みデバイス４００との間では、マスタ鍵に対して同じ回数分のＨ１、Ｈ２、Ｈ３が演算されたセッション鍵が共有されることになる。
以上が本実施の形態に係る鍵生成・共有方式の概要である。
次に、図２〜図４を用いて、鍵生成装置２００、端末機３００、組込みデバイス４００の構成例を説明する。
【００１５】
図２は、鍵生成装置２００の構成例を示す。
【００１６】
図２において、マスタ鍵生成処理部２０１は、全ての鍵の元となるマスタ鍵を生成する。
なお、マスタ鍵生成処理部２０１は、任意の疑似乱数生成器でよく、例えば一方向性ハッシュ関数や、ＡＥＳ、ＭＩＳＴＹ（登録商標）などの暗号アルゴリズムを用いてもよい。
【００１７】
ハッシュ値生成処理部（１）２０２は、組込みデバイス側マスタ鍵を生成するためにハッシュ値を算出する。
ハッシュ値生成処理部（２）２０３は、組込みデバイス側マスタ鍵を生成するためにハッシュ値生成処理部（１）２０２と異なるハッシュ演算によりハッシュ値を算出する。
ハッシュ値生成処理部（３）２０４は、マスタ鍵を元に端末機側セッション鍵の生成のためにハッシュ値を算出する。
【００１８】
ハッシュ値生成処理部（１）２０２が用いる一方向性ハッシュ関数（Ｈ１）とハッシュ値生成処理部（２）２０３が用いる一方向性ハッシュ関数（Ｈ２）とハッシュ値生成処理部（３）２０４が用いる一方向性ハッシュ関数（Ｈ３）は、前述のように、以下の関係を満たす。
同一の入力ｋに対し、各ハッシュ値生成処理部は異なる出力値を計算する。
つまり、ハッシュ値生成処理部（１）２０２のＨ１にｋを入力したときの出力値をＨ１（ｋ）、ハッシュ値生成処理部（２）２０３のＨ２にｋを入力したときの出力値をＨ２（ｋ）とし、ハッシュ値生成処理部（３）２０４のＨ３にｋを入力したときの出力値をＨ３（ｋ）とすると、Ｈ１（ｋ）≠Ｈ２（ｋ）≠Ｈ３（ｋ）となる。
一方で、同一の入力ｋに対し、各ハッシュ演算の演算順序を変えて全てのハッシュ演算を行っても結果は同じ値である。
つまり、Ｈ１（Ｈ２（Ｈ３（ｋ）））＝  Ｈ１（Ｈ３（Ｈ２（ｋ）））＝  Ｈ２（Ｈ１（Ｈ３（ｋ）））＝Ｈ２（Ｈ３（Ｈ１（ｋ）））＝Ｈ３（Ｈ１（Ｈ２（ｋ）））＝Ｈ３（Ｈ２（Ｈ１（ｋ））））となる。
【００１９】
組込みデバイス側マスタ鍵生成処理部２０５は、各組込みデバイス４００に格納する組込みデバイス側マスタ鍵を生成する。
組込みデバイス側マスタ鍵生成処理部２０５は、ハッシュ値生成処理部（１）２０２及びハッシュ値生成処理部（２）２０３のそれぞれにマスタ鍵に対するハッシュ演算を行わせて各組込みデバイス４００に対する組込みデバイス側マスタ鍵を生成する。
組込みデバイス側マスタ鍵生成処理部２０５は、組込みデバイス４００ごとにＨ１の演算回数及びＨ２の演算回数を変えて、組込みデバイス４００ごとの組込みデバイス側マスタ鍵を生成する。
組込みデバイス側マスタ鍵生成処理部２０５は第１の鍵生成処理部の例である。
【００２０】
組込みデバイス側マスタ鍵割り当て処理部２０６は、各組込みデバイス４００に、組込みデバイス側マスタ鍵を割り当て、各組込みデバイス４００への組込みデバイス側マスタ鍵の格納処理を行う。
組込みデバイス側マスタ鍵の格納方法は任意であり、各組込みデバイス４００に組込みデバイス側マスタ鍵を送信してもよいし、組込みデバイス側マスタ鍵を所定の記録媒体に出力し、各組込みデバイス４００に記録媒体から組込みデバイス側マスタ鍵を読み込ませるようにしていてもよい。
また、組込みデバイス側マスタ鍵割り当て処理部２０６は、組込みデバイス側マスタ鍵とともに、後述の座標情報と最大更新回数情報を各組込みデバイス４００に格納する。
組込みデバイス側マスタ鍵割り当て処理部２０６は、第１の格納処理部の例である。
【００２１】
端末機側セッション鍵計算処理部２０７は、セッション毎に端末機３００に送信する端末機側セッション鍵を計算する。
端末機側セッション鍵計算処理部２０７は、ハッシュ値生成処理部（３）２０４にマスタ鍵に対するハッシュ演算を行わせて端末機３００に対する端末機側セッション鍵を生成する。
また、端末機側セッション鍵計算処理部２０７は、セッションごとに、ハッシュ値生成処理部（３）２０４のハッシュ演算回数を更新し、更新後の演算回数分のハッシュ演算をハッシュ値生成処理部（３）２０４に行わせて端末機側セッション鍵を更新する。
端末機側セッション鍵計算処理部２０７は第２の鍵生成処理部の例である。
【００２２】
組込みデバイス数格納部２０８は、組込みデバイス４００の総数を記憶する。
最大更新回数格納部２０９は、セッション鍵の最大更新回数を格納する。
マスタ鍵格納部２１０は、マスタ鍵生成処理部２０１により生成されたマスタ鍵を格納する。
更新回数格納部２１１は、セッション鍵の更新回数を格納する。初期値は０である。
【００２３】
演算回数情報生成処理部２１２は、鍵生成の際の一方向性ハッシュ演算の演算回数を導出可能な情報を生成する。
演算回数情報生成処理部２１２は、組込みデバイス側マスタ鍵の生成の際のＨ１の演算回数及びＨ２の演算回数を示す座標情報（第１の鍵用関数演算回数情報）と端末機側セッション鍵の生成の際のＨ３の演算回数を導出するための最大更新回数情報（第２の鍵用関数演算回数情報）を生成する。
組込みデバイス４００ごとに異なるＨ１の演算回数及びＨ２の演算回数により組込みデバイス側マスタ鍵が生成されるため、演算回数情報生成処理部２１２は、組込みデバイス４００ごとに異なる座標情報を生成する。
なお、最大更新回数情報は１つである。
【００２４】
端末機側セッション鍵割り当て処理部２１３は、端末機３００への端末機側セッション鍵の格納処理を行う。
端末機側セッション鍵割り当て処理部２１３は、端末機側セッション鍵計算処理部２０７により端末機側セッション鍵が更新される度に、更新後の端末機側セッション鍵の格納処理を行う。
端末機側セッション鍵の格納方法は任意であり、端末機３００に端末機側セッション鍵を送信してもよいし、端末機側セッション鍵を所定の記録媒体に出力し、端末機３００に記録媒体から端末機側セッション鍵を読み込ませるようにしていてもよい。
端末機側セッション鍵割り当て処理部２１３は、第２の格納処理部の例である。
【００２５】
次に、図３を参照して、端末機３００の構成例を説明する。
【００２６】
ハッシュ値生成処理部（１）２０２は、鍵生成装置２００のハッシュ値生成処理部（１）２０２と同じである。
ハッシュ値生成処理部（２）２０３は、鍵生成装置２００のハッシュ値生成処理部（２）２０３と同じである。
【００２７】
セッション鍵計算処理部３０１は、鍵生成装置２００から取得した端末機側セッション鍵からセッション鍵を計算する。
より具体的には、後述の端末機側通信部３０５が、組込みデバイス４００から、Ｈ１の演算回数とＨ２の演算回数が示される座標情報を取得し、セッション鍵計算処理部３０１は、座標情報に示されるＨ１の演算回数とＨ２の演算回数に従って、端末機側セッション鍵に対してハッシュ値生成処理部（１）２０２とハッシュ値生成処理部（２）２０３にＨ１のハッシュ演算及びＨ２のハッシュ演算を行わせて、セッション鍵を生成する。
また、セッション鍵計算処理部３０１は、鍵生成装置２００において端末機側セッション鍵が更新される度に、更新後の端末機側セッション鍵からセッション鍵を生成する。
セッション鍵計算処理部３０１は、通信用鍵生成処理部の例である。
【００２８】
メッセージ認証子生成処理部３０２は、メッセージとセッション鍵を入力とし、メッセージ認証子を生成する。
メッセージ認証子生成処理部３０２におけるメッセージ認証子生成処理はどのようなものでもよい。例えばＨＭＡＣ、ＯＭＡＣなどでもよい。
【００２９】
端末機側セッション鍵格納部３０３は、鍵生成装置２００から受信した端末機側セッション鍵を格納する。
また、セッション鍵計算処理部３０１により生成されたセッション鍵を記憶する。
端末機側セッション鍵格納部３０３は、鍵記憶部の例である。
【００３０】
端末機側セッション鍵入力部３０４は、鍵生成装置２００で生成された端末機側セッション鍵を入力する。
端末機側セッション鍵入力部３０４は、鍵入力部の例である。
【００３１】
端末機側通信部３０５は、各組込みデバイス４００と通信する。
端末機側通信部３０５は、例えば、セッション鍵の生成のために各組込みデバイス４００から座標情報を受信する。また、端末機側通信部３０５は、メッセージ認証子生成処理部３０２により生成されたメッセージ認証子やメッセージを各組込みデバイス４００に送信する。
また、端末機側通信部３０５は、各組込みデバイス４００とセッション鍵を共有した後、各組込みデバイス４００とセッション鍵を利用した暗号化通信を行う。
端末機側通信部３０５は、演算回数入力部及び通信部の例である。
【００３２】
次に、図４を参照して組込みデバイス４００の構成例を説明する。
【００３３】
ハッシュ値生成処理部（３）２０４は、鍵生成装置２００のハッシュ値生成処理部（３）２０４と同様である。
【００３４】
セッション鍵生成・更新処理部４０１は、鍵生成装置２００から取得した組込みデバイス側マスタ鍵からセッション鍵を計算し、また、セッション鍵を更新する。
より具体的には、セッション鍵生成時には、セッション鍵生成・更新処理部４０１は、鍵生成装置２００から取得した最大更新回数情報から端末機側セッション鍵の生成の際のＨ３の演算回数を導出し、導出したＨ３の演算回数に従って、鍵生成装置２００から取得した組込みデバイス側マスタ鍵に対してハッシュ値生成処理部（３）２０４にＨ３のハッシュ演算を行わせて、セッション鍵を生成する。
また、セッション鍵の更新時には、鍵生成装置２００と同様の手順にてＨ３の演算回数を更新し、更新後のＨ３の演算回数に従って、組込みデバイス側マスタ鍵に対してハッシュ値生成処理部（３）２０４にＨ３のハッシュ演算を行わせて、セッション鍵を更新する。
セッション鍵生成・更新処理部４０１は、通信用鍵生成処理部の例である。
【００３５】
メッセージ認証子検証処理部４０２は、セッション鍵と端末機３００から受信したメッセージを入力とし、端末機３００から受信したメッセージ認証子を検証する。
メッセージ認証子検証処理部４０２は、端末機３００のメッセージ認証子生成処理部３０２がＨＭＡＣを用いている場合はＨＭＡＣを用いて認証子を検証し、ＯＭＡＣを用いている場合はＯＭＡＣを用いて認証子を検証する。
なお、端末機３００が生成する認証子を検証できればどのような方法でもよい。
【００３６】
組込みデバイス側マスタ鍵格納部４０３は、鍵生成装置２００から割り当てられた組込みデバイス側マスタ鍵を格納する。
組込みデバイス側マスタ鍵格納部４０３は、鍵記憶部の例である。
【００３７】
座標格納部４０４は、組込みデバイス側マスタ鍵の座標情報を格納する。
【００３８】
最大更新回数格納部４０５は、セッション鍵の最大更新回数情報を格納する。
【００３９】
セッション鍵格納部４０６は、セッション鍵生成・更新処理部４０１で生成されたセッション鍵を格納する。
セッション鍵格納部４０６は、鍵記憶部の例である。
【００４０】
更新回数格納部４０７は、セッション鍵の更新回数を格納する。初期値は０である。
【００４１】
組込みデバイス側マスタ鍵入力部４０８は、鍵生成装置２００で生成された組込みデバイス側マスタ鍵を入力する。
組込みデバイス側マスタ鍵入力部４０８は、鍵入力部の例である。
【００４２】
組込みデバイス側通信部４０９は、端末機３００と通信する。
組込みデバイス側通信部４０９は、例えば、端末機３００に座標情報を送信する。また、組込みデバイス側通信部４０９は、端末機３００からメッセージ認証子やメッセージを受信する。
また、組込みデバイス側通信部４０９は、端末機３００とセッション鍵を共有した後、端末機３００とセッション鍵を利用した暗号化通信を行う。
組込みデバイス側通信部４０９は、演算回数通知部及び通信部の例である。
【００４３】
以下に、本実施の形態に係る情報処理システム１００における動作例を図１６及び図１７を用いて説明する。
図１６は、鍵生成装置２００の動作例を示し、図１７は、端末機３００及び組込みデバイス４００の動作例を示す。
【００４４】
図１６に示すように、鍵生成装置２００において、マスタ鍵生成処理部２０１がマスタ鍵を計算する（Ｓ１６０１）。
さらに、組込みデバイス側マスタ鍵生成処理部２０５がマスタ鍵にＨ１及びＨ２を用いた演算を行って組込みデバイス側マスタ鍵を生成する（Ｓ１６０２）。
次に、組込みデバイス側マスタ鍵割り当て処理部２０６が、各組込みデバイス４００に組込みデバイス側マスタ鍵、座標情報、最大更新回数情報を格納する（Ｓ１６０３）。
【００４５】
各組込みデバイス４００では、図１７に示すように、組込みデバイス側マスタ鍵入力部４０８が組込みデバイス側マスタ鍵、座標情報、最大更新回数情報を入力し、組込みデバイス側マスタ鍵格納部４０３に格納する（Ｓ１７０１）。
また、セッション鍵生成・更新処理部４０１がＨ３を用いた計算により１回目のセッション鍵の計算を行う。
生成されたセッション鍵はセッション鍵格納部４０６に格納される。
【００４６】
また、鍵生成装置２００では、端末機側セッション鍵計算処理部２０７がマスタ鍵にＨ３の演算を行って端末機側セッション鍵を計算し（Ｓ１６０４）、端末機側セッション鍵割り当て処理部２１３が端末機側セッション鍵を端末機３００に格納する（Ｓ１６０５）。
【００４７】
端末機３００では、端末機側セッション鍵入力部３０４が端末機側セッション鍵を入力し、端末機側セッション鍵格納部３０３に格納する（Ｓ１７０６）。
そして、セッション鍵計算処理部３０１は、端末機側通信部３０５を介して、組込みデバイス４００に座標情報の提供を要求し、組込みデバイス４００は、セッション鍵生成・更新処理部４０１が組込みデバイス側通信部４０９を介して端末機３００に自身の座標情報を返信し（Ｓ１７０３）、端末機３００は組込みデバイス４００から座標情報を取得する（Ｓ１７０７）。
【００４８】
座標情報を受け取った端末機３００では、セッション鍵計算処理部３０１が座標情報に示されているＨ１の演算回数及びＨ２の演算回数に従って端末機側セッション鍵にＨ１を用いた演算及びＨ２を用いた演算を行って、セッション鍵を計算する（Ｓ１７０８）。
さらに、端末機３００では、メッセージ認証子生成処理部３０２がメッセージ認証子を生成し、端末機側通信部３０５が組込みデバイス４００にメッセージとメッセージ認証子を送信する（Ｓ１７０９）。
【００４９】
組込みデバイス４００では、組込みデバイス側マスタ鍵入力部４０８がメッセージとメッセージ認証子を受信し（Ｓ１７０４）、メッセージ認証子検証処理部４０２がメッセージ認証子を検証し、検証に成功した場合には、確かに端末機３００との間でセッション鍵を共有したことを確認する。
そして、組込みデバイス側通信部４０９がセッション鍵の共有を端末機３００に通知し（Ｓ１７０５）、端末機３００においてもセッション鍵の共有を確認する（Ｓ１７１０）。
以降、端末機３００と組込みデバイス４００との間で共有しているセッション鍵を用いた暗号化通信が可能となる。
【００５０】
なお、セッション終了後は、鍵生成装置２００と組込みデバイス４００において共通の手順によりＨ３の演算回数を更新し、組込みデバイス４００において更新後の演算回数に従って組込みデバイス側マスタ鍵にＨ３の演算を行って、更新後のセッション鍵を生成する。
また、鍵生成装置２００では、更新後の演算回数に従ってマスタ鍵にＨ３の演算を行って、更新後の端末機側セッション鍵を生成し、更新後の端末機側セッション鍵を端末機３００に提供する。
端末機３００では、更新後の端末機側セッション鍵を入力し、図１７のＳ１７０７で取得した座標情報に示されているＨ１の演算回数及びＨ２の演算回数に従って、更新後の端末機側セッション鍵にＨ１の演算及びＨ２の演算を行ってセッション鍵を更新する。
以降、セッションごとに、同様の処理によりセッション鍵を更新していく。
【００５１】
次に、図１６及び図１７にて示した各処理の詳細を説明する。
【００５２】
まず、図５を参照して、図１６のＳ１６０１〜Ｓ１６０３及び図１７のＳ１７０１の処理（鍵生成・割り当て処理）の詳細を説明する。
【００５３】
まず、鍵生成装置２００では、組込みデバイス数格納部２０８に組込みデバイス数ｃを格納する（Ｓ５０１）。
次に、最大更新回数格納部２０９に最大更新回数ａを格納する。
次に、マスタ鍵生成処理部２０１が、マスタ鍵ｋを生成する。なお、マスタ鍵ｋは疑似乱数であれば何でもよい。
次に、組込みデバイス数ｃとマスタ鍵ｋを組込みデバイス側マスタ鍵生成処理部２０５に入力し、組込みデバイス側マスタ鍵Ｈ１ｃ−１（ｋ）、Ｈ１ｃ−２（Ｈ２（ｋ））、Ｈ１ｃ−３（Ｈ２２（ｋ））、…、Ｈ１（（Ｈ２２ｃ−２（ｋ））、Ｈ２ｃ−１（ｋ）を得る。
つまり、組込みデバイス側マスタ鍵生成処理部２０５は、変数ｉ（１≦ｉ≦ｃ）を用いて、Ｈ１ｃ−ｉ（Ｈ２ｉ−１（ｋ））を計算して、各組込みデバイス４００に対する組込みデバイス側マスタ鍵を算出する。
次に、組込みデバイス側マスタ鍵割り当て処理部２０６が、各組込みデバイス４００に組込みデバイス側マスタ鍵と座標情報及び最大更新回数情報（値ａ）を格納する（Ｓ５０５）。
そして、各組込みデバイス４００では、組込みデバイス側マスタ鍵入力部４０８が組込みデバイス側マスタ鍵と座標情報及び最大更新回数情報（値ａ）を入力し、組込みデバイス側マスタ鍵格納部４０３に格納する。
また、各組込みデバイス４００では、組込みデバイス側マスタ鍵と最大更新回数ａをセッション鍵生成・更新処理部４０１に入力し、セッション鍵生成・更新処理部４０１が１回目のセッション鍵を生成し、セッション鍵格納部４０６に格納する（Ｓ５０６）。
【００５４】
ここで、図６及び図７を用いて、組込みデバイス側マスタ鍵生成処理部２０５の処理の詳細を説明する。
【００５５】
組込みデバイス側マスタ鍵生成処理部２０５では、ハッシュ値生成処理部（１）２０２、ハッシュ値生成処理部（２）２０３にそれぞれマスタ鍵ｋを入力し、出力値Ｈ１（ｋ）、Ｈ２（ｋ）を得る（Ｓ６０１）。
次に、組込みデバイス側マスタ鍵生成処理部２０５は、得られた出力値Ｈ１（ｋ）、Ｈ２（ｋ）をハッシュ値生成処理部（１）２０２、ハッシュ値生成処理部（２）２０３への入力とし、出力Ｈ１２（ｋ）、Ｈ１（Ｈ２（ｋ））、Ｈ２２（ｋ）を得る（Ｓ６０２）。
上記を繰り返して（ハッシュ値生成処理部（１）へ入力した回数＋ハッシュ値生成処理部（２）へ入力した回数）＝ｃ−１となる値を全て計算し、Ｈ１ｃ−１（ｋ）、Ｈ１ｃ−２（Ｈ２（ｋ））、…、Ｈ２ｃ−１（ｋ）を得る（Ｓ６０３）。これにより、Ｈ１ｃ−ｉ（Ｈ２ｉ−１（ｋ））の全てのｉについて計算したことになる。また、これら１つ１つが、各組込みデバイス側マスタ鍵となる。
【００５６】
図７は、ｃ＝４の場合（組込みデバイス４００が４台の場合）の組込みデバイス側マスタ鍵生成処理部２０５の計算例を示している。
Ｈ１軸はＨ１の計算回数を表し、Ｈ２軸はＨ２の計算回数を表している。
ｃ＝４の場合は、Ｈ１３（ｋ）、Ｈ１２（Ｈ２（ｋ））、Ｈ１（Ｈ２２（ｋ））、Ｈ２３（ｋ）の４つの組込みデバイス側マスタ鍵が得られる。
【００５７】
次に、図８及び図９を参照して、図５のＳ５０５の処理の詳細を説明する。
【００５８】
まず、組込みデバイス側マスタ鍵割り当て処理部２０６が、全ての組込みデバイス４００、全ての組込みデバイス側マスタ鍵を選択候補とする（Ｓ８０１）。
次に、組込みデバイス側マスタ鍵割り当て処理部２０６が、１つの組込みデバイス４００を選択し、また、その組込みデバイス４００に格納する組込みデバイス側マスタ鍵を選択し、選択した組込みデバイス側マスタ鍵を選択した組込みデバイス４００の組込みデバイス側マスタ鍵格納部４０３に格納する（Ｓ８０２）。
また、演算回数情報生成処理部２１２が、Ｓ８０２で格納された組込みデバイス側マスタ鍵の座標（その組込みデバイス側マスタ鍵を得るまでにハッシュ値生成処理部（１）２０２に入力した回数（Ｈ１の演算回数）、組込みデバイス側マスタ鍵を得るまでにハッシュ値生成処理部（２）２０３に入力した回数（Ｈ２の演算回数））を示す座標情報を生成し、組込みデバイス側マスタ鍵割り当て処理部２０６が座標情報をＳ８０２で選択された組込みデバイス４００の座標格納部４０４に格納する（Ｓ８０３）。
また、このとき、組込みデバイス側マスタ鍵割り当て処理部２０６は、最大更新回数ａ（鍵生成装置２００の最大更新回数格納部２０９にある値と同じ）を示す最大更新回数情報も組込みデバイス４００の最大更新回数格納部４０５に格納する。
そして、組込みデバイス側マスタ鍵割り当て処理部２０６は、Ｓ８０２及びＳ８０３の処理が行われた組込みデバイス４００及び組込みデバイス側マスタ鍵を選択候補から削除し（Ｓ８０４）、まだ組込みデバイス側マスタ鍵が格納されていない組込みデバイスがあれば（Ｓ８０５で真）、上記処理を繰り返す。
なお、図８の処理は、例示であり、どの組込みデバイス４００も同じ組込みデバイス側マスタ鍵を持たないようにすれば、具体的な格納手順は問わない。
【００５９】
図９は、ｃ＝４であり、最大更新回数ａ＝２の場合の組込みデバイス側マスタ鍵及び座標情報の例を示している。
例えば、Ｈ１３（ｋ）の組込みデバイス側マスタ鍵が格納される組込みデバイス４００では、座標（３、０）が示される座標情報が格納される。
【００６０】
次に、図１７のＳ１７０２におけるセッション鍵生成・更新処理部４０１の処理の詳細を図１４及び図１５を用いて説明する。
【００６１】
セッション鍵生成・更新処理部４０１では、最大更新回数格納部４０５に格納されている最大更新回数の値と更新回数格納部４０７に格納されている現在までの更新回数の値と、組込みデバイス側マスタ鍵格納部４０３に格納されている組込みデバイス側マスタ鍵を入力し、セッション鍵を生成する（Ｓ１４０１）。
より具体的には、セッション鍵生成・更新処理部４０１は、最大更新回数ａから更新回数を引き、得られた値をＨ３の演算回数とする。
１回目のセッション鍵の生成時点では更新回数０のため、値ａをＨ３の演算回数とする。
そして、セッション鍵生成・更新処理部４０１は、組込みデバイス側マスタ鍵をハッシュ値生成処理部（３）２０４への入力とし、その出力をハッシュ値生成処理部（３）２０４への入力とする作業をａ回繰り返し、Ｈ３の演算がａ回行われた後の計算結果を１回目のセッション鍵としてセッション鍵格納部４０６に格納する（Ｓ１４０２）。
最後に、セッション鍵生成・更新処理部４０１は、更新回数格納部４０７の更新回数の値に１を加算して、更新回数格納部４０７に格納する（Ｓ１４０３）。
セッション鍵の更新の際にも、Ｓ１４０１〜Ｓ１４０３の処理により新たなセッション鍵が生成される。
【００６２】
図１５は、最大更新回数ａ＝２のときのセッション鍵生成・更新処理部４０１における計算例を示す。
図１５では、図の簡明化のため、組込みデバイス側マスタ鍵Ｈ１３（ｋ）を有している組込みデバイス４００における処理を示している。
端末機３００との暗号化通信が行われていない１回目のセッション鍵の生成の際には、最大更新回数から現在の更新回数を差し引いた値２（２−０＝２）をＨ３の演算回数とするため、組込みデバイス側マスタ鍵Ｈ１３（ｋ）にＨ３の演算を２回行ったＨ１３（Ｈ３２（ｋ））がセッション鍵となる。
通信完了後の１回目の更新の際（２回目のセッション鍵の生成の際）には、最大更新回数から現在の更新回数を差し引いた値１（２−１＝１）をＨ３の演算回数とするため、組込みデバイス側マスタ鍵Ｈ１３（ｋ）にＨ３の演算を１回行ったＨ１３（Ｈ３（ｋ））がセッション鍵となる。
通信完了後の２回目の更新の際（３回目のセッション鍵の生成の際）には、最大更新回数から現在の更新回数を差し引いた値０（２−２＝０）をＨ３の演算回数とするため、組込みデバイス側マスタ鍵Ｈ１３（ｋ）がセッション鍵となる。
【００６３】
次に、図１６のＳ１６０４及びＳ１６０５、図１７のＳ１７０３〜Ｓ１７１０の詳細を図１０を参照して説明する。
【００６４】
鍵生成装置２００では、マスタ鍵格納部２１０の値ｋ（マスタ鍵）と最大更新回数格納部２０９の最大更新回数の値ａと更新回数格納部２１１の値を端末機側セッション鍵計算処理部２０７に入力し、端末機側セッション鍵計算処理部２０７が端末機側セッション鍵を計算する（Ｓ１００１）。
端末機側セッション鍵計算処理部２０７の計算自体は、図１４のＳ１４０１と同じである。
つまり、端末機側セッション鍵計算処理部２０７は、最大更新回数ａから更新回数を引き、得られた値をＨ３の演算回数とする。
１回目の端末機側セッション鍵の生成時点では更新回数０のため、値ａをＨ３の演算回数とする。
そして、端末機側セッション鍵計算処理部２０７は、マスタ鍵ｋをハッシュ値生成処理部（３）２０４への入力とし、その出力をハッシュ値生成処理部（３）２０４への入力とする作業をａ回繰り返し、Ｈ３の演算がａ回行われた後の計算結果を１回目の端末機側セッション鍵とする。
次に、端末機側セッション鍵計算処理部２０７は、更新回数格納部２１１の更新回数の値に１を加算して、更新回数格納部２１１に格納する（Ｓ１００２）。
そして、端末機側セッション鍵割り当て処理部２１３が、端末機側セッション鍵を端末機３００に格納する（Ｓ１００３）。
【００６５】
次に、端末機３００では、接続したい組込みデバイス４００の通信範囲内まで移動し、セッション鍵計算処理部３０１が端末機側通信部３０５を介して組込みデバイス４００に対して通信要求を送信する（Ｓ１００４）。
通信要求を受信した組込みデバイス４００では、セッション鍵生成・更新処理部４０１が座標格納部４０４に格納されている座標情報を組込みデバイス側通信部４０９を介して端末機３００に送信する（Ｓ１００７）。
座標情報を受信した端末機３００では、座標をセッション鍵計算処理部３０１に入力し、セッション鍵計算処理部３０１がセッション鍵を計算する（Ｓ１００５）。
セッション鍵計算処理部３０１は、座標情報に示されているＨ１の演算回数及びＨ２の演算回数に従って、端末機側セッション鍵にＨ１の演算及びＨ２の演算を行ってセッション鍵を生成する。
さらに、セッション鍵計算処理部３０１は、任意のメッセージとセッション鍵をメッセージ認証子生成処理部３０２に入力し、メッセージ認証子生成処理部３０２がメッセージ認証子を生成し、端末機側通信部３０５がメッセージとメッセージ認証子を組込みデバイス４００に送信する（Ｓ１００６）。
組込みデバイス４００では、セッション鍵格納部４０６のセッション鍵と、端末機３００から受信したメッセージ及びメッセージ認証子とをメッセージ認証子検証処理部４０２に入力し、メッセージ認証子の正当性を検証する（Ｓ１００８）。
検証結果が正しければ、端末機３００が組込みデバイス４００と同一の鍵を計算したことを確認したことになるため、接続を許可する。
【００６６】
図１１は、上記の端末機３００−組込みデバイス４００間の通信の例を示している。
【００６７】
また、図１２は、端末機３００のセッション鍵計算処理部３０１のフローチャートであり、図１３はセッション鍵計算処理部３０１の計算例を示している。
【００６８】
図１２の例では、組込みデバイス４００から得た座標が（ｘ、ｙ）である場合の処理を示している。
セッション鍵計算処理部３０１は、端末機側セッション鍵格納部３０３の端末機側セッション鍵をハッシュ値生成処理部（１）２０２に入力し、得られた出力値を再度、ハッシュ値生成処理部（１）２０２に入力する処理をｘ回繰り返す（Ｓ１２０１）。
更に、セッション鍵計算処理部３０１は、Ｓ１２０１の出力値をハッシュ値生成処理部（２）２０３に入力し、得られた出力値を再度、ハッシュ値生成処理部（２）２０３に入力する処理をｙ回繰り返し、得られた出力値がセッション鍵となる（Ｓ１２０２）。
【００６９】
図１３は、最大更新回数：２、更新回数：０、組込みデバイス４００から得られた座標が（２、１）の場合のセッション鍵計算処理部３０１の計算例を示している。
この場合は、鍵生成装置２００から提供された端末機側セッション鍵はＨ３２（ｋ）である。
そして、座標（２、１）に従い、Ｈ１の演算が２回行われ、Ｈ２の演算が１回行われ、セッション鍵計算処理部３０１はセッション鍵としてＨ３２（Ｈ１２（Ｈ２（ｋ））を得る。
このＨ３２（Ｈ１２（Ｈ２（ｋ））は、座標（２、１）を送信した組込みデバイス４００におけるセッション鍵と同じ値である。
【００７０】
次に、鍵生成装置２００における端末機側セッション鍵の更新、端末機３００及び組込みデバイス４００におけるセッション鍵の更新について説明する。
【００７１】
組込みデバイス４００では、セッション終了後に、図１４のＳ１４０１の処理を行って、セッション鍵を更新する。なお、前述したように、前回のセッション鍵の生成時（更新時）にＳ１４０３において更新回数の値を加算しているため、図１５に示す通り、最大更新回数−更新回数の値が１つ減り、このためＨ３の演算回数が１回減る。
また、鍵生成装置２００では、セッション終了後に、図１０のＳ１００１の処理を行って、端末機側セッション鍵を更新する。なお、前述したように、前回の端末機側セッション鍵の生成時（更新時）にＳ１００２において更新回数の値を加算しているため、最大更新回数−更新回数の値が１つ減り、このためＨ３の演算回数が１回減る。
端末機３００では、鍵生成装置２００から更新後の端末機側セッション鍵を取得し、更新後の端末機側セッション鍵に対して図１２のＳ１２０１及びＳ１２０２の処理を行って、更新後のセッション鍵を算出する。
なお、Ｓ１２０１及びＳ１２０２で用いる座標情報は座標格納部４０４に格納されているものである。
なお、端末機３００は、組込みデバイス４００ごとにＳ１２０１及びＳ１２０２の処理を行って、組込みデバイス４００ごとにセッション鍵を更新する。
【００７２】
このように、本実施の形態によれば、端末機には端末機側セッション鍵のみを渡すことにより、端末機の盗難・紛失の場合でもマスタ鍵が漏洩する危険性が無く、システムを安全に保つことが可能となる。
また、端末機は端末機側セッション鍵のみを保持し、各組込みデバイスとの通信によって、その組込みデバイスが保持するセッション鍵を計算することが可能なため、組込みデバイスと組込みデバイスが保持する鍵の対応関係を予め知ることなく鍵共有が可能となる。
つまり、端末機は、組込みデバイスと組込みデバイスが保持する鍵の対応を管理しなくともよい。
【００７３】
なお、以上の説明では、組込みデバイス側マスタ鍵の生成にＨ１及びＨ２の２つの一方向性ハッシュ関数を用いる例を説明したが、ハッシュ関数の利用数は任意であり、１つのハッシュ関数でもよいし、３つ以上のハッシュ関数でもよい。
また、同様に、端末機側セッション鍵の生成に用いる一方向性ハッシュ関数は、２つ以上でもよい。
【００７４】
以上、本実施の形態では、各組込みデバイスに異なる鍵を格納し、端末機に別の鍵を格納し、端末機が組込みデバイス間の通信と計算のみから全ての組込みデバイスとの鍵共有を可能にするような鍵群を生成する鍵生成装置を説明した。
【００７５】
また、本実施の形態では、組込みデバイス間の通信と計算のみから全ての組込みデバイスとの鍵共有を行う端末機を説明した。
【００７６】
また、本実施の形態では、端末機に第三者に盗聴されても安全性を損なわない情報のみを送信することで端末機と鍵共有を行う組込みデバイスを説明した。
【００７７】
また、本実施の形態では、第三者に盗聴されても安全性を損なわない情報のみを送受信することで、端末機と各組込みデバイスとの間での鍵共有を可能とする通信プロトコルを説明した。
【００７８】
最後に、本実施の形態に示した鍵生成装置２００、端末機３００、組込みデバイス４００（以下、鍵生成装置２００等と表記する）のハードウェア構成例について説明する。
図１８は、本実施の形態に示す鍵生成装置２００等のハードウェア資源の一例を示す図である。
なお、図１８の構成は、あくまでも鍵生成装置２００等のハードウェア構成の一例を示すものであり、鍵生成装置２００等のハードウェア構成は図１８に記載の構成に限らず、他の構成であってもよい。
【００７９】
図１８において、鍵生成装置２００等は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
本実施の形態で説明した「〜格納部」は、ＲＡＭ９１４、磁気ディスク装置９２０等により実現される。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００８０】
通信ボード９１５は、ネットワークに接続されている。例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されていても構わない。
【００８１】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００８２】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００８３】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
鍵生成装置２００等の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００８４】
上記プログラム群９２３には、本実施の形態の説明において「〜部」（「〜格納部」以外、以下同様）として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００８５】
ファイル群９２４には、本実施の形態の説明において、「〜の判断」、「〜の計算」、「〜の演算」、「〜の生成」、「〜の比較」、「〜の検証」、「〜の確認」、「〜の評価」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、本実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００８６】
また、本実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、本実施の形態で説明したフローチャートに示すステップ、手順、処理により、鍵生成装置２００等を鍵生成方法や通信方法としても表現することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、本実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。
【００８７】
このように、本実施の形態に示す鍵生成装置２００等は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００８８】
１００  情報処理システム、２００  鍵生成装置、２０１  マスタ鍵生成処理部、２０２  ハッシュ値生成処理部（１）、２０３  ハッシュ値生成処理部（２）、２０４  ハッシュ値生成処理部（３）、２０５  組込みデバイス側マスタ鍵生成処理部、２０６  組込みデバイス側マスタ鍵割り当て処理部、２０７  端末機側セッション鍵計算処理部、２０８  組込みデバイス数格納部、２０９  最大更新回数格納部、２１０  マスタ鍵格納部、２１１  更新回数格納部、２１２  演算回数情報生成処理部、２１３  端末機側セッション鍵割り当て処理部、３００  端末機、３０１  セッション鍵計算処理部、３０２  メッセージ認証子生成処理部、３０３  端末機側セッション鍵格納部、４００  組込みデバイス、４０１  セッション鍵生成・更新処理部、４０２  メッセージ認証子検証処理部、４０３  組込みデバイス側マスタ鍵格納部、４０４  座標格納部、４０５  最大更新回数格納部、４０６  セッション鍵格納部、４０７  更新回数格納部、４０８  組込みデバイス側マスタ鍵入力部、４０９  組込みデバイス側通信部。
【図１】
2011146898.tif 000003
【図２】
2011146898.tif 000004
【図３】
2011146898.tif 000005
【図４】
2011146898.tif 000006
【図５】
2011146898.tif 000007
【図６】
2011146898.tif 000008
【図７】
2011146898.tif 000009
【図８】
2011146898.tif 000010
【図９】
2011146898.tif 000011
【図１０】
2011146898.tif 000012
【図１１】
2011146898.tif 000013
【図１２】
2011146898.tif 000014
【図１３】
2011146898.tif 000015
【図１４】
2011146898.tif 000016
【図１５】
2011146898.tif 000017
【図１６】
2011146898.tif 000018
【図１７】
2011146898.tif 000019
【図１８】
2011146898.tif 000020