説明

鍵交換装置、鍵交換システム、および鍵交換プログラム

【課題】 最小限の通信回数で、鍵の秘密の保持と秘密情報の更新の確実性を確保すること。
【解決手段】 鍵識別子生成装置は、乱数生成装置を用いて生成した乱数と、 相手装置から受信したデータとを用いて自己の鍵識別子を生成する。同期確認装置は、第1の秘密情報を用いて生成された自己の第1の同期確認値と第2の秘密情報を用いて生成された自己の第2の同期確認値とを相手装置へ送出し、受信した相手の第1の同期確認値および相手の第2の同期確認値と、第1の秘密情報を用いて生成した自己の第1の同期検証値および第2の秘密情報を用いて生成した自己の第2の同期検証値とを用いて、同期判定値を生成する。秘密更新装置は、第2の秘密情報と鍵識別子とから第3の秘密情報を生成し、第1の秘密情報の値を第2の秘密情報の値に変更し、第2の秘密情報の値を第3の秘密情報の値に変更する。鍵生成装置は、第1の秘密情報から鍵を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、鍵交換装置及び鍵交換システムに関し、特に、共有した秘密情報に基づく認証付鍵交換装置及びシステムに関する。
【背景技術】
【0002】
鍵交換方式には二つの装置が参加し、これら二つの装置が互いに通信することにより、同一の鍵を共有する。特に、各装置が自分である事の認証を受ける方法を備えていて、鍵を交換した相手の装置を認証する方式を、「認証付き鍵交換方式」と呼ぶ。
【0003】
従来の認証付き鍵交換方式として、非特許文献1に記されている方式があげられる。
【0004】
図1に、従来の認証付き鍵交換方式の概略を示す。
【0005】
認証付き鍵交換方式は、第1の鍵交換装置100と、第2の鍵交換装置200とを備え、これらの間で鍵を交換するものである。ここでは、第1の鍵交換装置100は自己の識別子としてΠを有し、第2の鍵交換装置200は自己の識別子としてΠ'を有する。図1に示されるように、第1の鍵交換装置100と第2の鍵交換装置200とは、実質的に同様の構成を有する。
【0006】
詳述すると、第1の鍵交換装置100は、入力装置101、乱数入力装置102、認証装置104、通信装置105、記憶装置103、および出力装置106を備える。同様に、第2の交換装置200は、入力装置201、乱数入力装置202、認証装置204、通信装置205、記憶装置203、および出力装置206を備える。したがって、説明を簡略化するために、以下では、第1の鍵交換装置100を代表として、単に鍵交換装置と記して、説明する。
【0007】
鍵交換装置100は、入力装置101から、Gを巡回群、qをGの位数、gをGの生成子、Hashをハッシュ関数として、システムパラメター107(q,G,g,Hash)と、識別子Πである自己識別子108とが入力されて、起動され命令待ち状態となる。
【0008】
この状態において、識別子Πを持つ命令待ち状態の鍵交換装置100に、入力装置101から、鍵交換開始命令109、sidのセッション番号112、および識別子Π'である相手識別子110が入力されたとする。この場合、次のように鍵交換装置100の第一ラウンド装置120が動作する。ここで、sidは、識別子ΠとΠ'が鍵交換に使う数としては、唯一無二の数であることが期待される。
【0009】
先ず、第一ラウンド装置120は、乱数入力装置102より乱数111を取り込む。
次に、第一ラウンド装置120は、暫定数 r ∈ Z/qZを乱数111からランダムに生成する。
【0010】
第一ラウンド装置120は、y = grを生成する。yを冪乗数と呼ぶ。
第一ラウンド装置120は、状態 (sid, Π',r) を生成して、これを記憶装置103する。
第一ラウンド装置120は、("生成",(sid,y))を認証装置104に入力し、識別子sigを得る。
第一ラウンド装置102は、メッセージ(sid,y,sig) を通信装置105を用いて、送信者が識別子Πで、宛先が識別子Π'であるとして送信する。
そして、鍵交換装置100は命令待ち状態となる。
【0011】
この状態において、識別子Πを持つ命令待ち状態の鍵交換装置100が、通信装置105を通じて、送信者が識別子Π' で、宛先が識別子Πであるメッセージ (sid,y',sig')を受信したとする。この場合、鍵交換装置100の鍵生成装置121は、次のように動作する。
【0012】
先ず、鍵生成装置121は、記憶装置103に保存されている状態を調べる。ここで、記憶装置103が、いかなる y,r に対しても、状態 (sid,y,r)を記憶していないとする。その場合には、鍵生成装置121は、鍵交換装置100を直ちに命令待ち状態とする。
【0013】
一方、記憶装置103がある y,r に対して、状態(sid,y,r) を記憶していたとする。この場合、鍵生成装置121は、 ("検証",Π',(sid,y'),sig' )を認証装置104に入力する。認証装置104が"不当"を出力した場合、鍵生成装置12は、鍵交換装置100を直ちに命令待ち状態とする。
【0014】
そうでない場合、鍵生成装置121は、記憶装置103にある状態(sid,Π',y,r)を完全に消去し、冪乗数 y を用いて (sid,z=y'r) を生成し、それを出力装置106に出力する。
この出力装置106に出力された(sid,z=y'r)が、交換結果(鍵)122である。
【0015】
また、本発明に関連する先行技術文献として、特許第4109164号公報(特許文献1)が知られている。この特許文献1は、容易に生成でき、かつ、他人から極めて類推され難く、さらに使用者本人が鍵を紛失した場合でも同じ鍵を安全に生成できる「暗号鍵の生成システム」を開示している。この特許文献1に開示された暗号鍵の生成システムでは、第1情報及び第2情報と、会社を識別するための識別子と、暗号鍵の識別子とに基づいて、ハッシュ関数を用いて暗号鍵を生成している。この特許文献1において、第1情報は「キーワード」であり、第2情報は「パスワード」である。
【先行技術文献】
【特許文献】
【0016】
【特許文献1】特許第4109164号公報
【非特許文献】
【0017】
【非特許文献1】Ran Canetti, Hugo Krawczyk."Universally Composable Notions of Key Exchange and Secure Channels",Advances in Cryptology - EUROCRYPT 2002, International Conference on the Theory and Applications of Cryptographic Techniques, Amsterdam, The Netherlands, April 28 - May 2, 2002, Proceedings, pages 337-351, Springer, Lecture Notes in Computer Science, volume 2332, year 2002.
【発明の概要】
【発明が解決しようとする課題】
【0018】
図1に示した従来技術の認証付き鍵交換方式には、次に述べるような問題点がある。
【0019】
第一の問題点は、従来技術の鍵交換方式の安全性が Diffie-Hellman 鍵交換の安全性に依存していることである。何故なら、 Diffie-Hellman 鍵交換は量子計算機の実現や新しいアルゴリズムの発見により、安全でなくなる可能性があるからである。
【0020】
第二の問題点は、従来技術はDiffie-Hellman 鍵交換等、公開鍵暗号の技術に依存しており、計算量が大きいことである。
【0021】
これらの問題点を解決するために、あらかじめ秘密情報を両者で共有しておき、これからハッシュ関数等で、新たな鍵を生成する事も可能である。但し、セッション毎に異なる鍵を生成し、ある時点で共有する秘密情報が漏れてもそれまでに使った鍵が分からないようにする為に、共有する秘密情報をハッシュ関数などを用いて更新していく必要がある。この時、以下の問題が発生あるいは問題の発生に注意しなければならない。
【0022】
(1) 秘密情報の更新が決定的に行われると、初期の秘密情報から未来の鍵が全て分かってしまう。このため、気が付かない秘密情報の盗難が起きると被害が大きくなる。
(2) 秘密情報の更新を確率的に行うと、両者の秘密情報の同期を妨害する攻撃が可能となる可能性がある。また、この妨害を防ぐために通信回数が多くなっしまう。
(3) ある時点で秘密情報が盗まれたとき、秘密情報の更新が十分でないと、直前の鍵が漏洩してしまう。
【0023】
尚、特許文献1は、暗号鍵の識別子等に基づいて、ハッシュ関数を用いて暗号鍵を生成する技術的思想を開示している。しかしながら、特許文献1は、暗号鍵を生成するシステムを開示しているだけであって、二つの装置が互いに通信することにより、同一の鍵を共有する鍵交換システムとは異なる。
【0024】
本発明の目的は、最小限の通信回数で、鍵の秘密の保持と秘密情報の更新の確実性とを確保できる、鍵交換装置及び鍵交換システムを提供することにある。
【課題を解決するための手段】
【0025】
本発明による鍵交換装置は、乱数を生成する乱数生成装置と;本人識別子と相手識別子とを保持する識別子記憶装置と;第1の秘密情報と第2の秘密情報とを保持する秘密情報記憶装置と;乱数生成装置を用いて生成した乱数と、相手装置から受信したデータとを用いて鍵識別子を生成する鍵識別子生成装置と;第1の秘密情報を用いて自己の第1の同期確認値を生成し、第2の秘密情報を用いて自己の第2の同期確認値を生成し、この生成した自己の第1の同期確認値と生成した自己の第2の同期確認値とを相手装置へ送出し、第1の秘密情報を用いて第1の同期検証値を生成し、第2の秘密情報を用いて第2の同期検証値を生成し、相手の第1の同期確認値と相手の第2の同期確認値とを相手装置から受信し、受信した相手の第1の同期確認値および受信した相手の第2の同期確認値と、生成した第1の同期検証値および生成した第2の同期検証値とを用いて、同期判定値を生成する同期確認装置と;第1の秘密情報と第2の秘密情報と鍵識別子とを受け取り、第2の秘密情報と鍵識別子とから第3の秘密情報を生成し、第1の秘密情報の値を第2の秘密情報の値に変更し、第2の秘密情報の値を第3の秘密情報の値に変更する秘密更新装置と;第1の秘密情報から鍵を生成する鍵生成装置と;を備える。
【発明の効果】
【0026】
本発明によれば、最小限の通信回数で、鍵の秘密の保持と秘密情報の更新の確実性とを確保できる。
【図面の簡単な説明】
【0027】
【図1】従来の鍵交換方式の構成を示すブロック図である。
【図2】本発明の第1の実施例に係る鍵交換装置を示すブロック図である。
【図3】図2に示した鍵交換装置において、“開始命令”が入力された場合の処理を示したブロック図である。
【図4】図2に示した鍵交換装置において、“開始要求”を含んだメッセージを受信した場合の処理を示したブロック図である。
【図5】図2に示した鍵交換装置において、“応答命令”が入力された場合の処理を示したブロック図である。
【図6】図2に示した鍵交換装置において、“応答”を含んだメッセージを受信した場合の処理を示したブロック図である。
【図7】図2に示した鍵交換装置において、“非同期”を含んだメッセージを受信した場合の処理を示したブロック図である。
【図8】図2に示した鍵交換装置において、“了解”を含んだメッセージを受信した場合の処理を示したブロック図である。
【図9】図2に示した鍵交換装置において、“非同期確認”を含んだメッセージを受信した場合の処理を示したブロック図である。
【図10】図2に示した鍵交換装置において、“失効命令”が入力された場合の処理を示したブロック図である。
【発明を実施するための形態】
【0028】
本発明の実施形態に係る鍵交換装置は、乱数を生成する乱数生成装置と、本人識別子と相手識別子とを保持する識別子記憶装置と、第1の秘密情報と第2の秘密情報とを保持する秘密情報記憶装置と、鍵識別子生成装置と、同期確認装置と、秘密更新装置と、第1の秘密情報から鍵を生成する鍵生成装置と、を備える。
【0029】
鍵識別子生成装置は、乱数生成装置を用いて生成した乱数と、相手装置から受信したデータとを用いて鍵識別子を生成する機能を有する。
【0030】
同期確認装置は、第1の秘密情報を用いて自己の第1の同期確認値を生成し、第2の秘密情報を用いて自己の第2の同期確認値を生成する機能と、この生成した自己の第1の同期確認値と生成した自己の第2の同期確認値とを相手装置へ送出する機能と、第1の秘密情報を用いて第1の同期検証値を生成し、第2の秘密情報を用いて第2の同期検証値を生成する機能と、相手の第1の同期確認値と相手の第2の同期確認値とを相手装置から受信する機能と、受信した相手の第1の同期確認値および受信した相手の第2の同期確認値と、生成した第1の同期検証値および生成した第2の同期検証値とを用いて、同期判定値を生成する機能とを有する。
【0031】
秘密更新装置は、第1の秘密情報と第2の秘密情報と鍵識別子とを受け取り、第2の秘密情報と鍵識別子とから第3の秘密情報を生成し、第1の秘密情報の値を第2の秘密情報の値に変更し、第2の秘密情報の値を第3の秘密情報の値に変更する機能を有する。
【0032】
秘密情報の更新を、ハッシュ関数にその秘密情報を入力して得られた結果を新たな秘密情報とする様に行うとする。この時、ハッシュ関数に更新する前の秘密情報のみを入力するとすると、最初の秘密情報が漏れるとこれから未来の秘密情報が全て分かってしまう。そこで、本発明の実施形態では、ハッシュ関数への入力に鍵識別子 kid を加わえて、未来の秘密情報を確率的に決定している。このことにより、攻撃者が、全ての通信を盗聴することなく秘密情報を同期し続ける事は出来なくなる。また、鍵識別子は両方の参加者が生成する乱数からなるため、少なくとも一人が正直であれば、秘密情報は確率的に遷移する。
【0033】
また、秘密情報が確率的に遷移する場合、両方の参加者の秘密情報の同期が崩れてしまう可能性がある。そこで、本発明の実施形態では、秘密情報として、第1の秘密情報と第2の秘密情報との二つの秘密情報を準備する。そして、第1の秘密情報と第2の秘密情報とを更新したときに、更新する前の第2の秘密情報へと第1の秘密情報を更新する。この様にすることで、二人の参加者が第2の秘密情報を互いに異なるものへと更新してしまっても、第1の秘密情報から再度同じものを構築し直すことができる。
【0034】
更に、片方の参加者が共有する秘密情報から鍵を生成して出力した時点で、この鍵生成に使った秘密情報が残存していると、この秘密情報を得た攻撃者が生成された秘密情報を知る可能性がある。それゆえ、鍵生成に用いた秘密情報は速やかに更新して消去する必要がある。特に、片方が鍵を生成して秘密情報を更新しても、他方がこの更新前の秘密情報を保持している様な事がないように注意する必要がある。一方、あまりに早急に秘密情報を更新すると、相手の秘密情報がどのように更新されるか十分に把握する前に自身の秘密情報を更新してしまい、両方の参加者の秘密情報の同期が壊れてしまう。
【0035】
この様な鍵の秘密保持と秘密情報の更新の確実性の両方を求めるには、両方の参加者で通信を何度も行って、両方の状況を確認しながら処理を進めれば良い。しかしながら、この様なことをすると、通信回数が多くなり効率的でない。
【0036】
そこで、本発明の実施形態では、三回という最低限の通信回数で、先の問題を解決している。特に、鍵の安全性を確保するために、両方の参加者が同期している場合には、次のようなタイミングで秘密情報の更新を行う。すなわち、二回目のメッセージ送信を行う者はこの時に秘密情報の更新を行い、一回目と三回目のメッセージ送信を行う者は三回目のそのときに秘密情報の更新を行う。一方、秘密情報の同期がとれていない場合は、次のようなタイミングで秘密情報の更新を行う。すなわち、二回目のメッセージ送信を行う者は三回目のメッセージを受信してから、一回目と三回目のメッセージ送信を行うものは三回目のそのときに、秘密情報の更新を行い、鍵の生成は行わずに秘密情報の同期のみを行う。この様に、鍵の生成を行うときと、秘密情報の同期を行うときとで、秘密情報の更新時期を違える事で、鍵の秘密の保持と秘密情報の更新の確実性の両方とを、最小限の通信回数で成功している。
【実施例1】
【0037】
以下、図面を参照して、本発明の第1の実施例による、共有した秘密情報に基づく認証付鍵交換装置について説明する。
【0038】
図2は、本発明の第1の実施例による鍵交換装置を示すブロック図である。
【0039】
鍵交換装置は、入力装置300と、出力装置301と、通信装置302とを備える。以下の説明では、次のことを定義する。「鍵交換装置にあるデータが入力される」とは、鍵交換装置の入力装置300にこのデータが書き込まれる事を意味する。「鍵交換装置があるデータを出力する」とは、鍵交換装置の出力装置301がこのデータを鍵交換装置の外の媒体に書き出すことを意味する。「鍵交換装置があるデータを受け取る」とは、鍵交換装置の通信装置302にこのデータが書き込まれる事を意味する。「鍵交換装置があるデータを送付する」とは、鍵交換装置の通信装置302がこのデータを通信路に書き込む事を意味する。
【0040】
鍵交換装置は乱数生成装置303を備える。この乱数生成装置303は、外から何らかの情報を受け入れて乱数を生成し、ランダムに値を選ぶ場合に、このランダム性の源として利用する。
【0041】
鍵交換装置は、セッション番号生成装置309、鍵識別子生成装置310、同期確認装置311、秘密更新装置312、鍵生成装置313、および鍵検証装置314も備える。
【0042】
(初期設定)
鍵交換装置は、安全変数κに関する、独立なハッシュ関数 HashS:{0,1}* → {0,1}κ, HashC:{0,1}* → {0,1}κ, HashK:{0,1}* → K, を実現する機能を備えているとする。ここで、Kは認証付鍵交換で生成される鍵の空間である。また、ハッシュ関数HashS は第1のハッシュ関数と呼ばれ、ハッシュ関数HashKは第2のハッシュ関数と呼ばれ、ハッシュ関数HashCは第3のハッシュ関数と呼ばれる。第1のハッシュ関数HashS は、同期確認/検証に用いられるので、同期確認/検証用ハッシュ関数とも呼ばれる。第2のハッシュ関数HashKは、鍵生成に用いられるので、鍵生成用ハッシュ関数とも呼ばれる。第3のハッシュ関数HashCは、鍵検証に用いられるので、鍵検証用ハッシュ関数とも呼ばれる。
【0043】
また、以下の説明では、自己の情報と相手の情報とを区別するために、相手の情報には右肩にダッシュ「’」を付しているが、自己の情報には、このようなダッシュ「’」を付していない。
【0044】
鍵交換装置には、自己の識別子Pである自己識別子306と、相手の識別子P'である相手識別子307とが設定される。換言すれば、鍵交換装置は、自己識別子305と相手識別子307とを保持する識別子記憶装置320を備えている。
【0045】
鍵交換装置には、自己カウンタOCTR=0 と、相手カウンタPCTR=0とが設定される。
【0046】
鍵交換装置には、第1の秘密情報304としてのsecret1 ∈{0,1}κと、第2の秘密情報305としてのsecret2 ∈{0,1}κ とが、秘密情報として格納される。換言すれば、鍵交換装置は、第1の秘密情報304と第2の秘密情報305とを保持する秘密情報記憶装置322を備えている。尚、図2では、第1の秘密情報304(secret1)を“秘密1”と記してあり、第2の秘密情報305(secret2)を“秘密2”と記してある。
【0047】
鍵交換装置にはセッション状態308を保存する記憶装置324が確保される。セッション状態308の初期状態は“空”である。
【0048】
このようにして、初期設定が終わった鍵交換装置は、待ち状態におかれる。待ち状態の鍵交換装置は、メッセージが入力されるあるいはメッセージを受け取った場合、その内容により処理を選択315して行い、再び待ち状態に戻る。
【0049】
図3乃至図10は、それぞれ、入力されるあるいは受け取るメッセージが、"開始命令"、"開始要求"、"応答命令"、"応答"、"非同期"、"了解"、"非同期確認"、および"失効命令"である場合の鍵交換装置の処理を示したブロック図である。図3乃至図10では、それぞれの処理を、順番に処理1、処理2、処理3、処理4、処理5、処理6、処理7、および処理8と記して示している。
【0050】
図3を参照して、鍵交換装置に(開始命令)が入力装置300から入力された場合の動作について説明する。この場合、鍵交換装置は、次の何れかの動作をする(処理1)。
【0051】
A1) もしセッション状態を保持していないならば、セッション番号生成装置309は自己開始者カウンタ ictr= OCTR とし、OCTRをOCTR+1に変更し、自己セッション番号 sid ∈ {0,1}κ をランダムに選ぶ。すなわち、セッション番号生成装置309は、乱数生成装置303で生成された乱数を、自己セッション番号 sidとしてランダムに選ぶ。そして、同期確認装置311は、自己の第1の同期確認値x1と自己の第2の同期確認値x2とを、第1の秘密情報304と第2の秘密情報305とを用いて、次のように生成する。
x1 = HashS(secret1,P,ictr,sid,"開始要求")
x2 = HashS(secret2,P,ictr,sid,"開始要求").
【0052】
すなわち、同期確認装置311は、第1の秘密情報304(secret1)、自己識別子306(P)、自己開始者カウンタ(ictr)、および自己セッション番号(sid)に基づいて、第1のハッシュ関数HashSを用いて、自己の第1の同期確認値x1を生成する。また、同期確認装置311は、第2の秘密情報305(secret2)、自己識別子306(P)、自己開始者カウンタ(ictr)、および自己セッション番号(sid)に基づいて、第1のハッシュ関数HashSを用いて、自己の第2の同期確認値x2を生成する。
【0053】
そして、同期確認装置331は、自己識別子306(P)、自己開始者カウンタ(ictr)、自己セッション番号(sid)、自己の第1の同期確認値x1、および自己の第2の同期確認値x2を含む、開始要求メッセージ (P,"開始要求",ictr,sid,x1,x2) を、通信装置302から、相手の識別子P'を持つ相手側の鍵交換装置に送付し、自己開始者カウンタ(ictr)、自己セッション番号(sid)、自己の第1の同期確認値x1、および自己の第2の同期確認値x2を含む、開始要求情報("開始要求",ictr,sid,x1,x2) をセッション状態308として記憶装置324に保存する。その後、鍵交換装置は、待ち状態に戻る。
【0054】
A2) その他の場合、鍵交換装置は入力を無視する。
【0055】
次に図4を参照して、鍵交換装置が、相手側の鍵交換装置から、相手識別子307(P')、相手開始者カウンタ(ictr')、相手セッション番号(sid')、相手の第1の同期確認値(x'1)、および相手の第2の同期確認値(x'2)を含む、開始要求メッセージ (P',"開始要求",ictr',sid',x'1,x'2) を通信装置302で受け取った場合の動作について説明する。この場合、鍵交換装置は、次の何れかの動作をする(処理2)。
【0056】
B1) もし、ある同期判定値 sync に関して、セッション状態308として応答待情報("応答待",ictr',sid',x'1,x'2,sync) を記憶装置324に保持しているならば、鍵交換装置は、待ち状態に戻る。
【0057】
B2) ictr'>PCTR でなければ、鍵交換装置は、待ち状態に戻る。
【0058】
B3) その他の場合、同期確認装置311は、自己の第1の同期検証値 y1 と自己の第2の同期検証値 y2とを、第1の秘密情報304と第2の秘密情報305とを用いて、次のように生成する。
y1 = HashS(secret1,P',ictr',sid',"開始要求")
y2 = HashS(secret2,P',ictr',sid',"開始要求").
【0059】
すなわち、同期確認装置311は、第1の秘密情報304(secret1)、相手識別子307(P')、相手開始者カウンタ(ictr')、および相手セッション番号(sid')に基づいて、第1のハッシュ関数HashSを用いて、自己の第1の同期検証値 y1 を生成する。また、同期確認装置311は、第2の秘密情報305(secret2)、相手識別子307(P')、相手開始者カウンタ(ictr')、および相手セッション番号(sid')に基づいて、第1のハッシュ関数HashSを用いて、自己の第2の同期検証値 y2を生成する。
【0060】
さらに、同期確認装置311は、同期判定値 sync を次の様に決定する。
B3−1) もし (x'1=y2) なら、sync=-1 とする。
B3−2) もし (x'1,x'2)=(y1,y2) なら、sync=0 とする。
B3−3) もし (x'2=y1) なら、sync=1 とする。
B3−4) もし (x'1=y1) かつ (x'2 ≠ y2) ならば、sync=2 とする。
B3−5) その他の場合は sync = NA.とする。
【0061】
次に、sync= NA なら、鍵交換装置は待ち状態に戻る。待ち状態に戻らない場合、同期確認装置311は、PCTR=ictr' として、次の何れかの動作をする。
【0062】
B3−5−1) もしセッション状態308を保持していないならば、同期確認装置311は、(開始要求受付) を出力装置301から出力し、応答待情報("応答待",ictr',sid',x'1,x'2,sync) をセッション状態308として記憶装置324に保存する。その後、鍵交換装置は、待ち状態に戻る。
【0063】
B3−5−2) その他の場合、同期確認装置は、そのセッション状態308を消去し、(中止)を出力装置301から出力する。その後、鍵交換装置は、待ち状態に戻る。
【0064】
次に図5を参照して、鍵交換装置が(応答命令)を入力装置300から入力された場合の動作について説明する。この場合、鍵交換装置は、次の何れかの動作をする(処理3)。
【0065】
C1) セッション状態308が、ある(ictr',sid',x'1,x'2,sync) に関して応答待情報 ("応答待",ictr',sid',x'1,x'2,sync) であるとする。この場合、セッション番号生成装置309は、自己応答者カウンタ rctr=OCTR とし、OCTR を OCTR+1 に変更し、自己セッション番号 sid ∈ {0,1}κ をランダムに選ぶ。すなわち、セッション番号生成装置309は、乱数生成装置303で生成された乱数を、自己セッション番号sidとしてランダムに選ぶ。鍵識別子生成装置310は、自己の鍵識別子 kid を (ictr',sid',rctr,sid) とする。すなわち、鍵識別子生成装置310は、相手開始者カウンタ(ictr')、相手セッション番号(sid')、自己応答者カウンタ(rctr)、および自己セッション番号(sid)を用いて、自己の鍵識別子 kid を生成する。次に、鍵交換装置は、次の何れかの動作をする。
【0066】
C1−1) もし sync=0 なら(すなわち、同期判定値syncが“同期”を示しているなら)、同期確認装置311は、自己の第1の同期確認値 x1と自己の第2の同期確認値 x2とを、第1の秘密情報304と第2の秘密情報305とを用いて、次のように生成する。
x1 = HashS(secret1,P,kid,"応答"),
x2 = HashS(secret2,P,kid,"応答").
【0067】
すなわち、同期確認装置311は、第1の秘密情報304(secret1)、自己識別子306(P)、および自己の鍵識別子 kidに基づいて、第1のハッシュ関数HashSを用いて、自己の第1の同期確認値 x1を生成する。また、同期確認装置311は、第2の秘密情報305(secret2)、自己識別子306(P)、および自己の鍵識別子 kidに基づいて、第1のハッシュ関数HashSを用いて、自己の第2の同期確認値 x2を生成する。
【0068】
次に、鍵生成装置313は、次の式に従って、鍵keyを生成し、
key = Hashk(secret1,kid)
鍵検証装置314は、次の式に従って、鍵検証値verを生成する。
ver = HashC(secret1,kid)
【0069】
すなわち、鍵生成装置313は、第1の秘密情報304(secret1)および自己の鍵識別子 kidに基づいて、第2のハッシュ関数HashKを用いて、鍵keyを生成する。また、鍵検証装置314は、第1の秘密情報304(secret1)および自己の鍵識別子 kidに基づいて、第3のハッシュ関数HashCを用いて、自己鍵検証値verを生成する。
【0070】
そして、秘密更新装置312は、秘密情報 (secret1,secret2) を (secret2,HashS(secret2,kid)) に更新する。詳述すると、秘密更新装置312は、第1の秘密情報304(secret1)、第2の秘密情報305(secret2)、および自己の鍵識別子 kid を受け取り、第2の秘密情報305(secret2)と自己の鍵識別子 kidとに基づいて、第1のハッシュ関数HashS を用いて、第3の秘密情報(secret)を生成し、第1の秘密情報304(secret1)の値を第2の秘密情報305(secret2)の値に変更し、第2の秘密情報305(secret2)の値を第3の秘密情報(secret)の値に変更する。
【0071】
同期確認装置311は、セッション状態308を応答情報 ("応答",kid,ver,key) へ更新し、自己の鍵識別子 kid を出力装置301から出力し、応答メッセージ (P,"応答",ictr',sid',rctr,sid,x1,x2) を通信装置302から、相手識別子 P'を持つ相手側の鍵交換装置に送る。そして、鍵交換装置は、待ち状態に戻る。
【0072】
C1−2) もし sync ≠ 0 なら、鍵交換装置は、次の何れかの動作をする。
【0073】
C1−2−1) もし sync=-1 なら、同期確認装置311は、一時秘密情報(第3の秘密情報) secret3 と自己の第1の同期確認値 x1 と自己の第2の同期確認値 x2 とを、次のように生成する。
secret3 = HashS(secret2, kid) 、
x1 = HashS(secret2,P,kid,"非同期",sync)、
x2 = HashS(secret3,P,kid,"非同期",sync).
【0074】
すなわち、同期確認装置311は、第2の秘密情報305(secret2)および自己の鍵識別子 kidに基づいて、第1のハッシュ関数HashS を用いて、一時秘密情報(第3の秘密情報)(secret)を生成する。また、同期確認装置311は、第2の秘密情報305(secret2)、自己識別子306(P)、自己の鍵識別子 kid および同期判定値sync に基づいて、第1のハッシュ関数HashS を用いて、自己の第1の同期確認値 x1 を生成する。そして、同期確認装置311は、一次秘密情報(第3の秘密情報)(secret)、自己識別子306(P)、自己の鍵識別子 kid および同期判定値sync に基づいて、第1のハッシュ関数HashS を用いて、自己の第2の同期確認値 x2 を生成する。
【0075】
C1−2−2) もし、sync=1 あるいは sync=2 なら、同期確認装置311は、一時秘密情報(第3の秘密情報) secret3 と自己の第1の同期確認値 x1 と自己の第2の同期確認値 x2 とを、第1の秘密情報304と第2の秘密情報305とを用いて、次のように生成する。
secret3 =HashS(secret1,kid)、
x1 = HashS(secret1,P,kid,"非同期",sync)、
x2 = HashS(secret3,P,kid,"非同期",sync).
【0076】
すなわち、同期確認装置311は、第1の秘密情報304(secret1)および自己の鍵識別子 kidに基づいて、第1のハッシュ関数HashS を用いて、一時秘密情報(第3の秘密情報)(secret)を生成する。また、同期確認装置311は、第1の秘密情報304(secret1)、自己識別子306(P)、自己の鍵識別子 kid および同期判定値sync に基づいて、第1のハッシュ関数HashS を用いて、自己の第1の同期確認値 x1 を生成する。そして、同期確認装置311は、一次秘密情報(第3の秘密情報)(secret)、自己識別子306(P)、自己の鍵識別子 kid および同期判定値sync に基づいて、第1のハッシュ関数HashS を用いて、自己の第2の同期確認値 x2 を生成する。
【0077】
次に、同期確認装置311は、非同期メッセージ (P,"非同期",sync,ictr',sid',rctr,sid,x1,x2) を、相手識別子 P'を持つ相手側の鍵交換装置へ送り、セッション状態308を情報("応答","非同期",sync,kid,x1,x2,secret3) へ更新し、そして、鍵交換装置は、待ち状態に戻る。
【0078】
C2) その他の場合、鍵交換装置は、セッション状態308を消去し、入力を無視する。
【0079】
次に図6を参照して、鍵交換装置が、相手側の鍵交換装置から、相手識別子307(P')、自己開始者カウンタ(ictr)、自己セッション番号(sid)、相手応答者カウンタ(rctr')、相手セッション番号(sid')、相手の第1の同期確認値(x'1)、および相手の第2の同期確認値(x'2)を含む、応答メッセージ(P',"応答",ictr,sid,rctr',sid',x'1,x'2) を通信装置302で受け取った場合の動作について説明する。この場合、鍵交換装置は、次の何れかの動作をする(処理4)。
【0080】
D1) セッション状態308が、ある (x1,x2) に関して開始要求情報 ("開始要求",ictr,sid,x1,x2) であるとする。この場合、鍵識別子生成装置310は自己の鍵識別子 kid を (ictr,sid,rctr',sid') とする。すなわち、鍵識別子静止装置310は、自己開始者カウンタ(ictr)、自己セッション番号(sid)、相手応答者カウンタ(rctr')、および相手セッション番号(sid')を用いて自己の鍵識別子 kid を生成する。そして、同期確認装置311は、自己の第1の同期検証値 y1 と自己の第2の同期検証値 y2 とを、第1の秘密情報304と第2の秘密情報305とを用いて、次のように生成する。
y1 = HashS(secret1,P',kid,"応答"),
y2 = HashS(secret2,P',kid,"応答").
【0081】
すなわち、同期確認装置311は、第1の秘密情報304(secret1)、相手識別子307(P')、および自己の鍵識別子 kid に基づいて、第1のハッシュ関数HashS を用いて、自己の第1の同期検証値 y1を生成する。また、同期確認装置311は、第2の秘密情報305(secret2)、相手識別子307(P')、および自己の鍵識別子 kid に基づいて、第1のハッシュ関数HashS を用いて、自己の第2の同期検証値 y2とを生成する。
【0082】
そして、鍵交換装置は、次の何れかの動作をする。
【0083】
D1−1) もし rctr' > PCTR かつ (x'1,x'2)=(y1,y2) ならば、鍵生成装置313は、次の式に従って、鍵keyを生成し、
key = Hashk(secret1,kid)
鍵検証装置314は、次の式に従って、自己の鍵検証値verを生成する。
ver = HashC(secret1,kid)
【0084】
すなわち、鍵生成装置313は、第1の秘密情報304(secret1)および自己の鍵識別子 kid をに基づいて、第2のハッシュ関数HashKを用いて、鍵keyを生成する。また、鍵検証装置314は、第1の秘密情報304(secret1)および自己の鍵識別子 kidに基づいて、第3のハッシュ関数HashCを用いて、自己の鍵検証値verを生成する。
【0085】
そして、秘密更新装置312は、秘密情報 (secret1,secret2) を (secret2,HashS(secret2,kid)) へ更新し、PCTR = rctr' と変更する。詳述すると、秘密更新装置312は、第1の秘密情報304(secret1)、第2の秘密情報305(secret2)、および自己の鍵識別子 kid を受け取り、第2の秘密情報305(secret2)と自己の鍵識別子 kidとに基づいて、第1のハッシュ関数HashS を用いて、第3の秘密情報(secret)を生成し、第1の秘密情報304(secret1)の値を第2の秘密情報305(secret2)の値に変更し、第2の秘密情報305(secret2)の値を第3の秘密情報(secret)の値に変更する。
【0086】
同期確認装置311は、自己の鍵識別子 (kid) を出力装置310から出力し、 (kid,key) を出力装置301から出力し、了解メッセージ(P,"了解",ictr,sid,rctr',sid',ver) を通信装置302から相手識別子 P' を持つ相手側の鍵交換装置へ送り、セッション状態308を消去する。その後、鍵交換装置は、待ち状態に戻る。
【0087】
D1−2) もし、その他の場合、鍵交換装置は、待ち状態に戻る。
D2) その他の場合、鍵交換装置は、待ち状態に戻る。
【0088】
次に図7を参照して、鍵交換装置が相手側の鍵交換装置から、相手識別子307(P')、同期判定値(sync)、自己開始者カウンタ(ictr)、自己セッション番号(sid)、相手応答者カウンタ(rctr')、相手セッション番号(sid')、相手の第1の同期確認値(x'1)、および相手の第2の同期確認値(x'2)を含む、非同期メッセージ(P',"非同期",sync,ictr,sid,rctr',sid',x'1,x'2) を通信装置302で受け取った場合の動作について説明する。この場合、鍵交換装置は、次の何れかの動作をする(処理5)。
【0089】
E1) セッション状態308が、ある (x1,x2) に関して開始要求情報("開始要求",ictr,sid,x1,x2) であるとする。この場合、鍵識別子生成装置310は、自己の鍵識別子 kid を (ictr,sid,rctr',sid') とする。すなわち、鍵識別子生成装置310は、自己開始者カウンタ(ictr)、自己セッション番号(sid)、相手応答者カウンタ(rctr')、および相手セッション番号(sid')を用いて自己の鍵識別子 kid を生成する。そして、鍵交換装置は、次の何れかの動作をする。
【0090】
E1−1) sync=-1 あるいは sync=2 とする。この場合、同期確認装置311は、一時秘密情報(第3の秘密情報)secret3 と自己の第1の同期検証値 y1 と自己の第2の同期検証値 y2 とを、第1の秘密情報304と第2の秘密情報305とを用いて、次のように生成する。
secret3 = HashS(secret1,kid)
y1 = HashS(secret1,P',kid,"非同期",sync)
y2 = HashS(secret3,P',kid,"非同期",sync).
【0091】
すなわち、同期確認装置311は、第1の秘密情報304(secret1)および自己の鍵識別子kidに基いて、第1のハッシュ関数HashS を用いて、一時秘密情報(第3の秘密情報)(secret)を生成する。また、同期確認装置311は、第1の秘密情報304(secret1)、相手識別子307(P')、自己の鍵識別子kid、および同期判定値syncに基いて、第1のハッシュ関数HashS を用いて、自己の第1の同期検証値 y1を生成する。さらに、同期確認装置311は、一時秘密情報(第3の秘密情報)(secret)、相手識別子307(P')、自己の鍵識別子kid、および同期判定値syncに基いて、第1のハッシュ関数HashS を用いて、自己の第2の同期検証値 y2 を生成する。
【0092】
そして、鍵交換装置は、次の何れかの動作をする。
【0093】
E1−1−1) rctr' >PCTR かつ (x'1,x'2) =(y1,y2)なら、秘密更新装置312は、秘密情報 (secret1,secret2) を(secret1,secret3) へ更新し、 PCTR=rctr' に変更する。すなわち、秘密更新装置312は、第1の秘密情報304(secret1)の値をそのまま第1の秘密情報304(secret1)の値とし、第2の秘密情報305(secret2)の値を一時秘密情報(第3の秘密情報)(secret)の値に更新する。
【0094】
E1−1−2) その他の場合、鍵交換装置は、待ち受け状態に戻る。
【0095】
E1−2) sync = 1 とする。この場合、同期確認装置311は、一時秘密情報(第3の秘密情報)secret3と自己の第1の同期検証値y1と自己の第2の同期検証値y2とを、第1の秘密情報304と第2の秘密情報305とを用いて、次のように生成する。
secret3 = HashS(secret2,kid)
y1 = HashS(secret2,P',kid,"非同期",sync)
y2 = HashS(secret3,P',kid,"非同期",sync).
【0096】
すなわち、同期確認装置311は、第2の秘密情報305(secret2)および自己の鍵識別子kidに基いて、第1のハッシュ関数HashS を用いて、一時秘密情報(第3の秘密情報)(secret)を生成する。また、同期確認装置311は、第2の秘密情報305(secret2)、相手識別子307(P')、自己の鍵識別子kid、および同期判定値syncに基いて、第1のハッシュ関数HashS を用いて、自己の第1の同期検証値y1を生成する。さらに、同期確認装置311は、一時秘密情報(第3の秘密情報)(secret)、相手識別子307(P')、自己の鍵識別子kid、および同期判定値syncに基いて、第1のハッシュ関数HashS を用いて、自己の第2の同期検証値y2を生成する。
【0097】
そして、鍵交換装置は、次の何れかの動作をする。
【0098】
E1−2−1) rctr' >PCTR かつ (x'1,x'2) =(y1,y2)なら、秘密更新装置312は、秘密情報 (secret1,secret2) を(secret2,secret3) へ更新し、PCTR=rctr' に変更する。すなわち、秘密更新装置312は、第1の秘密情報304(secret1)の値を第2の秘密情報305(secret2)の値に更新し、第2の秘密情報305(secret2)の値を一時秘密情報(第3の秘密情報)(secret)に更新する。
【0099】
E1−2−2) その他の場合、鍵交換装置は、待ち受け状態に戻る。
【0100】
次に、同期確認装置311は、自己の第1の同期確認値x1 と自己の第2の同期確認値x2とを、第1の秘密情報304と第2の秘密情報305とを用いて、次のように生成する。
x1 = HashS(secret1,P,kid,"非同期確認",sync),
x2 = HashS(secret2,P,kid,"非同期確認",sync).
【0101】
すなわち、同期確認装置311は、第1の秘密情報304(secret1)、自己識別子306(P)、自己の鍵識別子kid、および同期判定値syncに基づいて、第1のハッシュ関数HashS を用いて、自己の第1の同期確認値 x1 を生成する。また、同期確認装置311は、第2の秘密情報305()、自己識別子306(P)、自己の鍵識別子kid、および同期判定値syncに基づいて、第1のハッシュ関数HashS を用いて、自己の第2の同期確認値 x2を生成する。
【0102】
そして、同期確認装置311は、非同期確認メッセージ(P,"非同期確認",kid,x1,x2) を通信装置302から、相手識別子P' を持つ相手側の鍵交換装置へ送り、セッション状態308を消去し、(中止)を出力装置301から出力する。その後、鍵交換装置は、待ち受け状態に戻る。
【0103】
E2) その他の場合、鍵交換装置は、受け取ったメッセージを無視する。
【0104】
次に図8を参照して、鍵交換装置が、相手側の鍵交換装置から、相手識別子307(P')、相手開始者カウンタ(ictr')、相手セッション番号(sid')、自己応答者カウンタ(rctr)、自己セッション番号(sid)、および相手鍵検証値(ver')を含む了解メッセージ(P',"了解",ictr',sid',rctr,sid,ver') を、通信装置302で受け取った場合の動作について説明する。この場合、鍵交換装置は、次の何れかの動作をする(処理6)。
【0105】
F1) セション状態308が、kid=(ictr',sid',rctr,sid) かつ ver=ver' であるような応答情報 ("応答",kid,ver,key) であるとする。この場合、同期確認装置311は、(kid,key) を出力装置301から出力し、セッション状態308を消去する。そして、鍵交換装置は、待ち受け状態に戻る。
【0106】
F2) その他の場合、鍵交換装置は、受け取ったメッセージを無視する。
【0107】
次に図9を参照して、鍵交換装置が、相手側の鍵交換装置から、相手識別子307(P')、相手鍵識別子(kid')、相手の第1の同期確認値(x'1)、および相手の第2の同期確認値(x'2)を含む、非同期確認メッセージ(P',"非同期確認",kid',x'1,x'2) を通信装置302で受け取った場合の動作について説明する。この場合、鍵交換装置は、次の何れかの動作をする(処理7)。
【0108】
G1) セション状態308が、kid=kid' であるような情報("応答","非同期",sync,kid,x1,x2,secret3) であるとする。この場合、鍵交換装置は、次の何れかの動作をする。
【0109】
G1−1) sync=-1 とする。この場合、同期確認装置311は、自己の第1の同期検証値 y1 と自己の第2の同期検証値y2 とを、第2の秘密情報305とセッション状態308とを用いて、次のように生成する。
y1 = HashS(secret2,P,kid,"非同期確認",sync)
y2 = HashS(secret3,P,kid,"非同期確認",sync).
【0110】
すなわち、同期確認装置311は、第2の秘密情報305(secret2)、自己識別子306(P)、自己の鍵識別子kid、および同期判定値syncに基いて、第1のハッシュ関数HashS を用いて、自己の第1の同期検証値 y1を生成する。また、同期確認装置311は、セッション状態308中の一時秘密情報(secret3)、自己識別子306(P)、自己の鍵識別子kid、および同期判定値syncに基いて、第1のハッシュ関数HashS を用いて、自己の第2の同期検証値y2を生成する。
【0111】
そして、鍵交換装置は、次の何れかの動作をする。
【0112】
G1−1−1) (x'1,x'2)=(y1,y2)なら、秘密更新装置312は、秘密情報 (secret1,secret2) を(secret2,secret3) へ更新する。すなわち、秘密更新装置312は、第1の秘密情報304(secret1)の値を第2の秘密情報305(secret2)の値に更新し、第2の秘密情報305(secret2)の値を一時秘密情報(第3の秘密情報)(secret3)の値に更新する。
【0113】
G1−1−2) その他の場合、鍵交換装置は、待ち受け状態に戻る。
【0114】
G1−2) sync=1 あるいは sync=2とする。この場合、同期確認装置311は、自己の第1の同期検証値 y1 と自己の第2の同期検証値 y2 とを、第1の秘密情報304とセッション状態308とを用いて、次のように生成する。
y1 = HashS(secret1,P,kid,"非同期確認",sync)
y2 = HashS(secret3,P,kid,"非同期確認",sync).
【0115】
すなわち、同期確認装置311は、第1の秘密情報304(secret1)、自己識別子306(P)、自己の鍵識別子kid、および同期判定値syncに基いて、第1のハッシュ関数HashS を用いて、自己の第1の同期検証値 y1を生成する。また、同期確認装置311は、セッション状態308中の一時秘密情報(secret3)、自己識別子306(P)、自己の鍵識別子kid、および同期判定値syncに基いて、第1のハッシュ関数HashS を用いて、自己の第2の同期検証値y2を生成する。
【0116】
そして、鍵交換装置は、次の何れかの動作をする。
G1−2−1) (x'1,x'2)=(y1,y2)なら、秘密更新装置312は、秘密情報 (secret1,secret2) を(secret1,secret3) へ更新する。すなわち、秘密更新装置312は、第1の秘密情報304(secret1)の値をそのまま第1の秘密情報304(secret1)に維持し、第2の秘密情報305(secret2)の値を一時秘密情報(第3の秘密情報)(secret3)の値に更新する。
【0117】
G1−2−2) その他の場合、鍵交換装置は、待ち受け状態に戻る。
【0118】
次に、同期確認装置311は、セッション状態308を消去し、 (中止)を出装置301から出力する。その後、鍵交換装置は、待ち状態に戻る。
【0119】
G2) その他の場合、鍵交換装置は、受け取ったメッセージを無視する。
【0120】
次に図10を参照して、鍵交換装置 が入力装置300から(失効命令)が入力された場合の動作について説明する。この場合、鍵交換装置は、次の何れかの動作をする(処理8)。
【0121】
H1) もし何らかのセション状態308を保持している場合、鍵交換装置は、このセション状態を消去し、出力装置301から(失効)を出力し、待ち受け状態に戻る。
H2) その他の場合、鍵交換装置は、受け取ったメッセージを無視する。
【実施例2】
【0122】
次に、本発明の第2の実施例による、共有した秘密情報に基づく認証付鍵交換システムについて説明する。
【0123】
鍵交換システムは、上記第1の実施例に記載した二つの鍵交換装置からなる。それらの一方を第1の鍵交換装置と呼び、他方を第2の鍵交換装置と呼ぶことにする。第1および第2の鍵交換装置とも、通信路に接続されている。
【0124】
第1の鍵交換装置には、その初期設定において自己の識別子としてあるP が入力され、相手の識別子としてあるP' が入力される。また、 {0,1}κ からランダムに選ばれた、第1の秘密情報と第2の秘密情報が、それぞれ、 secret1, secret2 として格納される。以降、 この第1の鍵交換装置をP と呼ぶ。
【0125】
第2の鍵交換装置には、その初期設定において自己の識別子として先の P' が入力され、相手の識別子として先の P が入力される。 {0,1}κ からランダムに選ばれて、第1の鍵交換装置P に格納された二つの値と同じ値が、 secret1, secret2 として格納される。以降、この第2の鍵交換装置を P' と呼ぶ。
【0126】
第1の鍵交換装置P がメッセージを第2の鍵交換装置P' に送付する動作を行うと、このメッセージは前記通信路を伝って第2の鍵交換装置P' の通信装置に入力される。逆に、第2の鍵交換装置 P' がメッセージを第1の鍵交換装置P に送付する動作を行うと、このメッセージは前記通信路を伝って第1の鍵交換装置P の通信装置に入力される。
【0127】
以下、第1および第2の鍵交換装置が鍵識別子kid と鍵key とを出力する典型的な動作について説明する。但し、P とP' とは入れ替えても良い。
【0128】
第1の鍵交換装置P に(開始命令)が入力される。第1の鍵交換装置P は上記第1の実施例に記載される通りに動作し、開始要求メッセージ (P,"開始要求",sid,x1,x2) を第2の鍵交換装置 P' に送付し、開始要求情報("開始要求",sid,x1,x2) をセッション状態として保存し、待ち状態に戻る。
【0129】
第2の鍵交換装置P' は開始要求メッセージ (P,"開始要求",sid,x1,x2) を受け取る。第2の鍵交換装置P' は、上記第1の実施例に記載される通りに動作し、鍵交換装置P' は (開始要求受付) を出力し、応答待情報("応答待",sid,x1,x2,sync) をセッション状態と して保存し、待ち状態に戻る。
【0130】
第2の鍵交換装置P'に(応答命令)が入力される。第2の鍵交換装置P' は上記第1の実施例に記載される通りに動作し、秘密情報 (secret1,secret2) を (secret2,HashS(secret2,kid)) に更新し、セッション状態を応答情報("応答",kid,ver,key) へ更新し、kid を出力し、応答メッセージ (P',"応答",sid,sid',x'1,x'2) を第1の鍵交換装置P に送り、待ち状態に戻る。
【0131】
第1の鍵交換装置P は応答メッセージ (P',"応答",sid,sid',x'1,x'2) を受け取る。第1の鍵交換装置 P は、上記第1の実施例に記載される通りに動作し、秘密情報 (secret1,secret2) を (secret2,HashS(secret2,kid)) へ更新し、(kid) を出力し、(kid,key) を出力し、了解メッ セージ (P,"了解",sid,sid',ver) を第2の鍵交換装置P' へ送り、セッション状態を消去し、待ち状態に戻る。
【0132】
第2の鍵交換装置P' は了解メッセージ (P',"了解",sid,sid',ver') を受けとる。第2の鍵交換装置P' は上記第1の実施例に記載される通りに動作し、(kid,key) を出力し、セッション状態を消去し、待ち受け状態に戻る。
【0133】
次に、本発明の実施例の効果について説明する。
【0134】
秘密情報の更新は、ハッシュ関数にその秘密情報を入力して得られた結果を新たな秘密情報とする様に行う。この時、 ハッシュ関数に更新する前の秘密情報のみを入力するとすると、最初の秘密情報が漏れるとこれから未来の秘密情報が全て分かってしまう。そこで、本発明の実施例では、ハッシュ関数への入力に鍵識別子 kid が加わっているため、未来の秘密情報は確率的に決定される。このことにより、攻撃者が、全ての通信を盗聴することなく秘密情報を同期し続ける事は出来なくなる。また、鍵識別子は両方の参加者が生成する乱数からなるため、少なくとも一人が正直であれば、秘密情報は確率的に遷移する。
【0135】
秘密情報が確率的に遷移する場合、両方の参加者の秘密情報の同期が崩れてしまう可能性がある。そこで、本発明の実施例では第1の秘密情報と第2の秘密情報の二つを準備する。そして、第1の秘密情報と第2の秘密情報を更新したときに、更新する前の第2の秘密情報へと第1の秘密情報を更新する。この様にすることで、二人の参加者が第2の秘密情報を互いに異なるものへと更新してしまっても、第1の秘密情報から再度同じものを構築し直すことができる。
【0136】
片方の参加者が共有する秘密情報から鍵を生成して出力した時点で、この鍵生成に使った秘密情報が残存していると、この秘密情報を得た攻撃者が生成された秘密情報を知る可能性がある。それゆえ、鍵生成に用いた秘密情報は速やかに更新して消去する必要がある。特に、片方が鍵を生成して秘密情報を更新しても、他方がこの更新前の秘密情報を保持している様な事がないように注意する必要がある。一方、あまりに早急に秘密情報を更新すると、相手の秘密情報がどのように更新されるか十分に把握する前に自身の秘密情報を更新してしまい、両方の参加者の秘密情報の同期が壊れてしまう。
【0137】
この様な鍵の秘密保持と秘密情報の更新の確実性の両方を求めるには、両方の参加者で通信を何度も行って、両方の状況を確認しながら処理を進めれば良い。しかしながら、この様なことをすると、通信回数が多くなり効率的でない。
【0138】
そこで、本発明の実施例では、三回という最低限の通信回数で、先の問題を解決している。特に、鍵の安全性を確保するために、両方の参加者が同期している場合には、二回目のメッセージ送信を行う者はこの時に一回目と三回目のメッセージ送信を行う者は三回目のそのときに秘密情報の更新を行う。一方、秘密情報の同期がとれていない場合は、二回目のメッセージ送信を行う者は三回目のメッセージを受信してから、一回目と三回目のメッセージ送信を行うものは三回目のそのときに秘密情報の更新を行い、鍵の生成は行わずに秘密情報の同期のみを行う。この様に、鍵の生成を行うときと、秘密情報の同期を行うときで秘密情報の更新時期を違える事で、鍵の秘密の保持と秘密情報の更新の確実性の両方を、最小限の通信回数で成功している。
【0139】
以上、実施形態(実施例)を参照して本発明を説明したが、本発明は上記実施形態(実施例)に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0140】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0141】
(付記1)乱数を生成する乱数生成装置と、
第1の秘密情報と第2の秘密情報とを保持する秘密情報記憶装置と、
前記乱数生成装置を用いて生成した乱数と、相手装置から受信したデータとを用いて自己の鍵識別子を生成する鍵識別子生成装置と、
前記第1の秘密情報を用いて自己の第1の同期確認値を生成し、前記第2の秘密情報を用いて自己の第2の同期確認値を生成し、該自己の第1の同期確認値と前記自己の第2の同期確認値とを前記相手装置へ送出し、前記第1の秘密情報を用いて自己の第1の同期検証値を生成し、前記第2の秘密情報を用いて自己の第2の同期検証値を生成し、相手の第1の同期確認値と相手の第2の同期確認値とを前記相手装置から受信し、前記相手の第1の同期確認値および前記相手の第2の同期確認値と、前記自己の第1の同期検証値および前記自己の第2の同期検証値とを用いて、同期判定値を生成する同期確認装置と、
前記第1の秘密情報と前記第2の秘密情報と前記鍵識別子とを受け取り、前記第2の秘密情報と前記鍵識別子とから第3の秘密情報を生成し、前記第1の秘密情報の値を前記第2の秘密情報の値に変更し、前記第2の秘密情報の値を前記第3の秘密情報の値に変更する秘密更新装置と、
前記第1の秘密情報から鍵を生成する鍵生成装置と、
を備える鍵交換装置。
【0142】
(付記2)前記同期判定値は、前記相手の第1の同期確認値および前記相手の第2の同期確認値が、それぞれ、前記自己の第1の同期検証値および前記自己の第2の同期検証値と等しいなら、“同期”を示す0の値を持ち、前記相手の第1の同期確認値と前記自己の第2の同期検証値とが等しいなら、−1の値を持ち、前記相手の第2の同期確認値と前記自己の第1の同期検証値とが等しいなら、1の値を持ち、前記相手の第1の同期確認値と前記自己の第1の同期検証値とが等しく、かつ、前記相手の第2の同期確認値と前記自己の第2の同期検証値とが等しくないとき、2の値を持ち、
前記同期確認装置は、
前記同期判定値の値が−1に等しいとき、前記第2の秘密情報と前記鍵識別子とから前記第3の秘密情報を生成し、前記第2の秘密情報を用いて前記自己の第1の同期確認値を生成し、前記第3の秘密情報を用いて前記自己の第2の同期確認値を生成する機能と、
前記同期判定値の値が1又は2に等しいとき、前記第1の秘密情報と前記鍵識別子とから前記第3の秘密情報を生成し、前記第1の秘密情報を用いて前記自己の第1の同期確認値を生成し、前記第3の秘密情報を用いて前記自己の第2の同期確認値を生成する機能と、
前記同期判定値の値が1に等しいとき、前記第2の秘密情報と前記鍵識別子とから前記第3の秘密情報を生成し、前記第2の秘密情報を用いて前記自己の第1の同期検証値を生成し、前記第3の秘密情報を用いて前記自己の第2の同期検証値を生成する機能と、
前記同期判定値の値が−1又は2に等しいとき、前記第1の秘密情報と前記鍵識別子とから前記第3の秘密情報を生成し、前記第1の秘密情報を用いて前記自己の第1の同期検証値を生成し、前記第3の秘密情報を用いて前記自己の第2の同期検証値を生成する機能と、
をさらに備える、ことを特徴とする付記1に記載の鍵交換装置。
【0143】
(付記3)付記1に記載の鍵交換装置二つからなる鍵交換システムであって、
第1の鍵交換装置が保持する自己識別子と第2の鍵交換装置が保持する相手識別子とが同一で、
前記第1の鍵交換装置が保持する相手識別子と前記第2の鍵交換装置が保持する自己識別子とが同一であり、
前記第1の鍵交換装置と前記第2の鍵交換装置とは通信路で繋がっており、
前記第1の鍵交換装置が送出するメッセージを前記第2の鍵交換装置が受信可能であり、
前記第2の鍵交換装置が送出するメッセージを前記第1の鍵交換装置が受信可能であり、
何れかの鍵交換装置には、開始命令、応答命令を入力する事が出来る
ことを特徴とする鍵交換システム。
【0144】
(付記4)前記第1の鍵交換装置は、前記開始命令が入力されると、その前記同期確認装置が、前記第1の秘密情報および前記第2の秘密情報を用いて、前記自己の第1の同期確認値および前記自己の第2の同期確認値を生成し、前記自己の第1の同期確認値および前記自己の第2の同期確認値を含む開始要求メッセージを、前記第2の鍵交換装置へ送出する、付記3に記載の鍵交換システム。
【0145】
(付記5)前記第2の鍵交換装置は、前記開始要求メッセージを受け取ると、その前記同期確認装置が、前記第1の秘密情報および前記第2の秘密情報を用いて、自己の第1の同期検証値および自己の第1の同期検証値を生成し、前記開始要求メッセージに含まれる相手の第1の同期確認値および相手の第2の同期確認値と前記自己の第1の同期検証値および前記自己の第1の同期検証値とを用いて同期判定値を生成する、付記4に記載の鍵交換システム。
【0146】
(付記6)前記第2の鍵交換装置は、前記応答命令が入力されると、その前記鍵識別子生成装置が、その前記乱数生成装置で生成された乱数と前記開始要求メッセージに含まれるデータとを用いて自己の鍵識別子を生成し、
前記第2の鍵交換装置は、前記同期判定値が“同期”を示しているなら、その前記鍵生成装置が、前記第1の秘密情報から鍵を生成し、その秘密更新装置が、前記第1の秘密情報の値および前記第2の秘密情報の値を、それぞれ、前記第2の秘密情報の値および前記前記第3の秘密情報の値に変更する、付記5に記載の鍵交換システム。
【0147】
(付記7)前記第2の鍵交換装置は、前記同期判定値が“同期”を示しているなら、その前記同期確認装置は、前記自己の鍵識別子、前記第1の秘密情報、および前記第2の秘密情報を用いて、自己の第1の同期確認値および自己の第2の同期確認値を生成し、前記自己の第1の同期確認値および前記自己の第2の同期確認値を含む応答メッセージを、前記第1の鍵交換装置へ送出する、付記6に記載の鍵交換システム。
【0148】
(付記8)前記第1の鍵交換装置は、前記応答メッセージを受け取ると、その前記鍵識別子生成装置が、該応答メッセージに含まれるデータから自己の鍵識別子を生成し、その前記同期確認装置が、前記自己の鍵識別子、前記第1の秘密情報、および前記第2の秘密情報を用いて、自己の第1の同期検証値および自己の第2の同期検証値を生成する、付記7に記載の鍵交換システム。
【0149】
(付記9)前記第1の鍵交換装置は、前記応答メッセージに含まれる相手の第1の同期確認値および相手の第2の同期確認値が、それぞれ、前記自己の第1の同期検証値および前記自己の第2の同期検証値に等しいとき、その前記鍵生成装置が、前記第1の秘密情報から鍵を生成し、その秘密更新装置が、前記第1の秘密情報の値および前記第2の秘密情報の値を、それぞれ、前記第2の秘密情報の値および前記前記第3の秘密情報の値に変更する、付記8に記載の鍵交換システム。
【0150】
(付記10)第1の鍵交換装置と第2の鍵交換装置との間で鍵の交換を行う鍵交換方法であって、
開始命令を入力したとき、前記第1の鍵交換装置が、第1の秘密情報および第2の秘密情報を用いて、それぞれ、自己の第1の同期確認値および自己の第2の同期確認値を生成し、前記自己の第1の同期確認値および前記自己の第2の同期確認値を含む開始要求メッセージを前記第2の鍵交換装置へ送信する工程と、
前記第1の鍵交換装置から相手の第1の同期確認値および相手の第2の同期確認値を含む前記開始要求メッセージを受け取ったとき、前記第2の鍵交換装置が、前記第1の秘密情報および前記第2の秘密情報を用いて、それぞれ、自己の第1の同期検証値および自己の第2の同期検証値を生成し、前記相手の第1の同期確認値、前記相手の第2の同期確認値、前記自己の第1の同期検証値、および前記自己の第2の同期検証値を用いて同期判定値を生成する工程と、
を含む、鍵交換方法。
【0151】
(付記11)応答命令を入力したとき、前記第2の鍵交換装置が、乱数生成装置を用いて生成した乱数と前記開始要求メッセージに含まれるデータとを用いて、自己の鍵識別子を生成する工程を含む、付記10に記載の鍵交換方法。
【0152】
(付記12)前記同期判定値が“同期”を示しているなら、前記第2の鍵交換装置が、前記第1の秘密情報から鍵を生成し、前記第2の秘密情報と前記自己の鍵識別子とから第3の秘密情報を生成し、前記第1の秘密情報の値を前記第2の秘密情報の値に更新し、前記第2の秘密情報の値を前記第3の秘密情報の値に更新する工程を含む、請求項11に記載の鍵交換方法。
【0153】
(付記13)前記同期判定値が“同期”を示しているなら、前記第2の鍵交換装置が、前記自己の鍵識別子、前記第1の秘密情報、および前記第2の秘密情報を用いて、自己の第1の同期確認値および自己の第2の同期確認値を生成し、前記自己の第1の同期確認値および前記自己の第2の同期確認値を含む応答メッセージを前記第1の鍵交換装置へ送信する工程を含む、付記11又は12に記載の鍵交換方法。
【0154】
(付記14)前記第2の鍵交換装置から相手の第1の同期確認値および相手の第2の同期確認値を含む前記応答メッセージを受け取ったとき、前記第1の鍵交換装置が、該応答メッセージに含まれるデータから鍵識別子を生成し、該生成した鍵識別子、前記第1の秘密情報、および前記第2の秘密情報を用いて、自己の第1の同期検証値および自己の第2の同期検証値を生成する工程を含む、付記13に記載の鍵交換方法。
【0155】
(付記15)前記相手の第1の同期確認値および前記相手の第2の同期確認値が、それぞれ、前記自己の第1の同期検証値および前記自己の第2の同期検証値と等しいとき、前記第1の鍵交換装置が、前記第1の秘密情報から鍵を生成し、前記第2の秘密情報と前記鍵識別子とから第3の秘密情報を生成し、前記第1の秘密情報の値を前記第2の秘密情報の値に更新し、前記第2の秘密情報の値を前記第3の秘密情報の値に更新する工程を含む、請求項14に記載の鍵交換方法。
【0156】
(付記16)前記同期判定値が“非同期”を示しているなら、前記第2の鍵交換装置が、前記第1の秘密情報および前記第2の秘密情報を用いて、一時秘密情報、自己の第1の同期確認値、自己の第2の同期確認値を生成し、前記自己の第1の同期確認値、前記自己の第2の同期確認値、および前記同期判定値を含む非同期メッセージを前記第1の鍵交換装置へ送出する工程を含む、付記10に記載の鍵交換方法。
【0157】
(付記17)前記第2の鍵交換装置から前記同期判定値、相手の第1の同期確認値、および相手の第2の同期確認値を含む前記非同期メッセージを受け取ったとき、前記第1の鍵交換装置が、該非同期メッセージに含まれるデータから自己の鍵識別子を生成し、該生成した自己の鍵識別子、前記第1の秘密情報、および前記第2の秘密情報を用いて、自己の第1の同期検証値および自己の第2の同期検証値を生成する工程を含む、付記16に記載の鍵交換方法。
【0158】
(付記18)前記相手の第1の同期確認値および前記相手の第2の同期確認値が、それぞれ、前記自己の第1の同期検証値および前記自己の第2の同期検証値に等しいなら、前記第1の鍵交換装置が、前記同期判定値の値に応じて、前記第1の秘密情報の値と前記第2の秘密情報の値とを更新する工程を含む、付記17に記載の鍵交換方法。
【0159】
(付記19)前記第1の鍵交換装置が、前記自己の鍵識別子、前記第1の秘密情報、および前記第2の秘密情報を用いて、自己の第1の同期確認値および自己の第2の同期確認値を生成し、前記同期判定値、前記自己の第1の同期確認値および前記自己の第2の同期確認値を含む非同期確認メッセージを、前記第2の鍵交換装置へ送出する工程を含む、付記17又は18に記載の鍵交換方法。
【0160】
(付記20)前記第1の鍵交換装置から、相手の第1の同期確認値および相手の第2の同期確認値を含む前記非同期確認メッセージを受け取ったとき、前記第2の鍵交換装置が、前記自己の鍵識別子、前記一時秘密情報、および前記第1の秘密情報又は前記第2の秘密情報を用いて、自己の第1の同期検証値および自己の第2の同期検証値を生成し、前記相手の第1の同期確認値および前記相手の第2の同期確認値が、それぞれ、前記自己の第1の同期検証値および前記自己の第2の同期検証値に等しいとき、前記同期判定値の値に応じて、前記第1の秘密情報の値と前記第2の秘密情報の値とを更新する工程を含む、付記19に記載の鍵交換方法。
【0161】
(付記21)乱数を生成する手順と、
第1の秘密情報と第2の秘密情報とを保持する手順と、
前記生成された乱数と、相手装置から受信したデータとを用いて自己の鍵識別子を生成する手順と、
前記第1の秘密情報を用いて自己の第1の同期確認値を生成し、前記第2の秘密情報を用いて自己の第2の同期確認値を生成し、該自己の第1の同期確認値と前記自己の第2の同期確認値とを前記相手装置へ送出し、前記第1の秘密情報を用いて自己の第1の同期検証値を生成し、前記第2の秘密情報を用いて自己の第2の同期検証値を生成し、相手の第1の同期確認値と相手の第2の同期確認値とを前記相手装置から受信し、前記相手の第1の同期確認値および前記相手の第2の同期確認値と、前記自己の第1の同期検証値および前記自己の第2の同期検証値とを用いて、同期判定値を生成する手順と、
前記第1の秘密情報と前記第2の秘密情報と前記鍵識別子とを受け取り、前記第2の秘密情報と前記鍵識別子とから第3の秘密情報を生成し、前記第1の秘密情報の値を前記第2の秘密情報の値に変更し、前記第2の秘密情報の値を前記第3の秘密情報の値に変更する手順と、
前記第1の秘密情報から鍵を生成する手順と、
をコンピュータに実行させる鍵交換プログラム。
【0162】
(付記22)前記同期判定値は、前記相手の第1の同期確認値および前記相手の第2の同期確認値が、それぞれ、前記自己の第1の同期検証値および前記自己の第2の同期検証値と等しいなら、“同期”を示す0の値を持ち、前記相手の第1の同期確認値と前記自己の第2の同期検証値とが等しいなら、−1の値を持ち、前記相手の第2の同期確認値と前記自己の第1の同期検証値とが等しいなら、1の値を持ち、前記相手の第1の同期確認値と前記自己の第1の同期検証値とが等しく、かつ、前記相手の第2の同期確認値と前記自己の第2の同期検証値とが等しくないとき、2の値を持ち、
前記同期判定値を生成する手順は、
前記同期判定値の値が−1に等しいとき、前記第2の秘密情報と前記鍵識別子とから前記第3の秘密情報を生成し、前記第2の秘密情報を用いて前記自己の第1の同期確認値を生成し、前記第3の秘密情報を用いて前記自己の第2の同期確認値を生成する手順と、
前記同期判定値の値が1又は2に等しいとき、前記第1の秘密情報と前記鍵識別子とから前記第3の秘密情報を生成し、前記第1の秘密情報を用いて前記自己の第1の同期確認値を生成し、前記第3の秘密情報を用いて前記自己の第2の同期確認値を生成する手順と、
前記同期判定値の値が1に等しいとき、前記第2の秘密情報と前記鍵識別子とから前記第3の秘密情報を生成し、前記第2の秘密情報を用いて前記自己の第1の同期検証値を生成し、前記第3の秘密情報を用いて前記自己の第2の同期検証値を生成する手順と、
前記同期判定値の値が−1又は2に等しいとき、前記第1の秘密情報と前記鍵識別子とから前記第3の秘密情報を生成し、前記第1の秘密情報を用いて前記自己の第1の同期検証値を生成し、前記第3の秘密情報を用いて前記自己の第2の同期検証値を生成する手順と、
をさらに前記コンピュータに実行させる、付記21に記載の鍵交換プログラム。
【符号の説明】
【0163】
300 ・・・ 入力装置
301 ・・・ 出力装置
302 ・・・ 通信装置
303 ・・・ 乱数生成装置
304 ・・・ 第1の秘密情報
305 ・・・ 第2に秘密情報
306 ・・・ 自己識別子
307 ・・・ 相手識別子
308 ・・・ セッション状態
309 ・・・ セッション番号生成装置
310 ・・・ 鍵識別子生成装置
311 ・・・ 同期確認装置
312 ・・・ 秘密更新装置
313 ・・・ 鍵生成装置
314 ・・・ 鍵検証装置
320 ・・・ 識別子記憶装置
322 ・・・ 秘密情報記憶装置
324 ・・・ 記憶装置

【特許請求の範囲】
【請求項1】
乱数を生成する乱数生成装置と、
第1の秘密情報と第2の秘密情報とを保持する秘密情報記憶装置と、
前記乱数生成装置を用いて生成した乱数と、相手装置から受信したデータとを用いて自己の鍵識別子を生成する鍵識別子生成装置と、
前記第1の秘密情報を用いて自己の第1の同期確認値を生成し、前記第2の秘密情報を用いて自己の第2の同期確認値を生成し、該自己の第1の同期確認値と前記自己の第2の同期確認値とを前記相手装置へ送出し、前記第1の秘密情報を用いて自己の第1の同期検証値を生成し、前記第2の秘密情報を用いて自己の第2の同期検証値を生成し、相手の第1の同期確認値と相手の第2の同期確認値とを前記相手装置から受信し、前記相手の第1の同期確認値および前記相手の第2の同期確認値と、前記自己の第1の同期検証値および前記自己の第2の同期検証値とを用いて、同期判定値を生成する同期確認装置と、
前記第1の秘密情報と前記第2の秘密情報と前記鍵識別子とを受け取り、前記第2の秘密情報と前記鍵識別子とから第3の秘密情報を生成し、前記第1の秘密情報の値を前記第2の秘密情報の値に変更し、前記第2の秘密情報の値を前記第3の秘密情報の値に変更する秘密更新装置と、
前記第1の秘密情報から鍵を生成する鍵生成装置と、
を備える鍵交換装置。
【請求項2】
前記同期判定値は、前記相手の第1の同期確認値および前記相手の第2の同期確認値が、それぞれ、前記自己の第1の同期検証値および前記自己の第2の同期検証値と等しいなら、“同期”を示す0の値を持ち、前記相手の第1の同期確認値と前記自己の第2の同期検証値とが等しいなら、−1の値を持ち、前記相手の第2の同期確認値と前記自己の第1の同期検証値とが等しいなら、1の値を持ち、前記相手の第1の同期確認値と前記自己の第1の同期検証値とが等しく、かつ、前記相手の第2の同期確認値と前記自己の第2の同期検証値とが等しくないとき、2の値を持ち、
前記同期確認装置は、
前記同期判定値の値が−1に等しいとき、前記第2の秘密情報と前記鍵識別子とから前記第3の秘密情報を生成し、前記第2の秘密情報を用いて前記自己の第1の同期確認値を生成し、前記第3の秘密情報を用いて前記自己の第2の同期確認値を生成する機能と、
前記同期判定値の値が1又は2に等しいとき、前記第1の秘密情報と前記鍵識別子とから前記第3の秘密情報を生成し、前記第1の秘密情報を用いて前記自己の第1の同期確認値を生成し、前記第3の秘密情報を用いて前記自己の第2の同期確認値を生成する機能と、
前記同期判定値の値が1に等しいとき、前記第2の秘密情報と前記鍵識別子とから前記第3の秘密情報を生成し、前記第2の秘密情報を用いて前記自己の第1の同期検証値を生成し、前記第3の秘密情報を用いて前記自己の第2の同期検証値を生成する機能と、
前記同期判定値の値が−1又は2に等しいとき、前記第1の秘密情報と前記鍵識別子とから前記第3の秘密情報を生成し、前記第1の秘密情報を用いて前記自己の第1の同期検証値を生成し、前記第3の秘密情報を用いて前記自己の第2の同期検証値を生成する機能と、
をさらに備える、ことを特徴とする請求項1に記載の鍵交換装置。
【請求項3】
請求項1に記載の鍵交換装置二つからなる鍵交換システムであって、
第1の鍵交換装置が保持する自己識別子と第2の鍵交換装置が保持する相手識別子とが同一で、
前記第1の鍵交換装置が保持する相手識別子と前記第2の鍵交換装置が保持する自己識別子とが同一であり、
前記第1の鍵交換装置と前記第2の鍵交換装置とは通信路で繋がっており、
前記第1の鍵交換装置が送出するメッセージを前記第2の鍵交換装置が受信可能であり、
前記第2の鍵交換装置が送出するメッセージを前記第1の鍵交換装置が受信可能であり、
何れかの鍵交換装置には、開始命令、応答命令を入力する事が出来る
ことを特徴とする鍵交換システム。
【請求項4】
第1の鍵交換装置と第2の鍵交換装置との間で鍵の交換を行う鍵交換方法であって、
開始命令を入力したとき、前記第1の鍵交換装置が、第1の秘密情報および第2の秘密情報を用いて、それぞれ、自己の第1の同期確認値および自己の第2の同期確認値を生成し、前記自己の第1の同期確認値および前記自己の第2の同期確認値を含む開始要求メッセージを前記第2の鍵交換装置へ送信する工程と、
前記第1の鍵交換装置から相手の第1の同期確認値および相手の第2の同期確認値を含む前記開始要求メッセージを受け取ったとき、前記第2の鍵交換装置が、前記第1の秘密情報および前記第2の秘密情報を用いて、それぞれ、自己の第1の同期検証値および自己の第2の同期検証値を生成し、前記相手の第1の同期確認値、前記相手の第2の同期確認値、前記自己の第1の同期検証値、および前記自己の第2の同期検証値を用いて同期判定値を生成する工程と、
を含む、鍵交換方法。
【請求項5】
乱数を生成する手順と、
第1の秘密情報と第2の秘密情報とを保持する手順と、
前記生成された乱数と、相手装置から受信したデータとを用いて自己の鍵識別子を生成する手順と、
前記第1の秘密情報を用いて自己の第1の同期確認値を生成し、前記第2の秘密情報を用いて自己の第2の同期確認値を生成し、該自己の第1の同期確認値と前記自己の第2の同期確認値とを前記相手装置へ送出し、前記第1の秘密情報を用いて自己の第1の同期検証値を生成し、前記第2の秘密情報を用いて自己の第2の同期検証値を生成し、相手の第1の同期確認値と相手の第2の同期確認値とを前記相手装置から受信し、前記相手の第1の同期確認値および前記相手の第2の同期確認値と、前記自己の第1の同期検証値および前記自己の第2の同期検証値とを用いて、同期判定値を生成する手順と、
前記第1の秘密情報と前記第2の秘密情報と前記鍵識別子とを受け取り、前記第2の秘密情報と前記鍵識別子とから第3の秘密情報を生成し、前記第1の秘密情報の値を前記第2の秘密情報の値に変更し、前記第2の秘密情報の値を前記第3の秘密情報の値に変更する手順と、
前記第1の秘密情報から鍵を生成する手順と、
をコンピュータに実行させる鍵交換プログラム。

【図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


【公開番号】特開2011−228970(P2011−228970A)
【公開日】平成23年11月10日(2011.11.10)
【国際特許分類】
【出願番号】特願2010−97506(P2010−97506)
【出願日】平成22年4月21日(2010.4.21)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】