(57)【特許請求の範囲】
【請求項１】
接続されたユーザ装置およびサーバ装置間でメッセージ情報の相互通信を行うことにより鍵交換を行う鍵交換システムであって、
前記ユーザ装置は、
外部から入力されたパスワードを取得し保持するパスワード取得部と、
予め設定されたマスター鍵に基づき第1の秘密鍵を生成すると共に、前記入力されたパスワードに基づき第２の秘密鍵を生成する秘密鍵生成部と、
前記第１の秘密鍵に基づき認証判定用の第１の認証子を生成すると共に、前記マスター鍵および第２の秘密鍵に基づき前記認証判定用の第2の認証子を生成する認証子生成部と、
前記第１および第２の認証子を含むメッセージ情報を生成するメッセージ情報設定部と、
予め設定されたサーバ装置からメッセージ情報が送り込まれた場合に、当該メッセージ情報に含まれる第１の認証子に基づく認証判定を行う第１の認証判定部と、前記第1の認証子に基づく認証判定で認証がなされた場合に前記パスワードおよび第２の認証子に基づく認証判定を行う第２の認証判定部と、
前記第２の認証判定部による認証判定で認証がなされた場合に前記メッセージ情報に基づき交換鍵を生成し当該交換鍵の出力を行うユーザ側交換鍵生成部とを備え、
前記サーバ装置は、
予めユーザ装置により登録された第１および第2の秘密鍵を保持する秘密鍵保持部と、
前記ユーザ装置からメッセージ情報が送り込まれた場合に前記第１の秘密鍵に基づき前記第１の認証子の生成を行うと共に当該第１の認証子に基づき前記メッセージ情報の認証判定を行う第1の認証判定部と、
前記第1の認証判定部による認証判定で認証がなされた場合に前記第２の秘密鍵に基づき前記第２の認証子の生成を行うと共に当該第２の認証子に基づき前記メッセージ情報の認証判定を行う第２の認証判定部と、
前記ユーザ装置からのメッセージ情報に含まれるランダム数に基づき前記ユーザ装置で生成された交換鍵と共通の交換鍵を生成すると共に、前記第２の認証判定部による認証判定で認証がなされた場合に前記生成した交換鍵を出力するサーバ側交換鍵生成部とを備えたことを特徴とした鍵交換システム。
【請求項２】
請求項１に記載の鍵交換システムにおいて、
前記ユーザ装置は、予め設定されたランダム数に基づき前記第2の認証子の暗号化処理を行うことにより暗号認証子を生成する認証子暗号処理部を備え、
前記サーバ装置は、前記メッセージ情報に含まれた前記暗号認証子の復号処理を行うことにより前記第２の認証子を復元する認証子復号処理部を備えたことを特徴とする鍵交換システム。
【請求項３】
請求項２に記載の鍵交換システムにおいて、
前記ユーザ装置の認証子暗号処理部は、前記サーバ装置から送り込まれたメッセージ情報に公開鍵が含まれている場合に、前記公開鍵を利用した公開鍵暗号方式により前記第２の認証子を暗号化する公開鍵暗号機能を備えたことを特徴とした鍵交換システム。
【請求項４】
請求項２に記載の鍵交換システムにおいて、
前記ユーザ装置の認証子暗号処理部は、前記メッセージ情報に基づき一時暗号鍵情報を生成すると共に、当該一時暗号鍵情報を利用した対称鍵暗号方式により前記第２の認証子の暗号化を行う対称鍵暗号機能を有することを特徴とした鍵交換システム。
【請求項５】
請求項２に記載の鍵交換システムにおいて、
前記サーバ装置の認証子復号処理部は、前記サーバ装置内に予め設定された公開鍵を利用した公開鍵暗号方式により前記第２の認証子を復号化する公開鍵復号機能を備えたことを特徴とした鍵交換システム。
【請求項６】
請求項２に記載の鍵交換システムにおいて、
前記サーバ装置の認証子復号処理部は、前記メッセージ情報に基づき一時復号鍵情報を生成すると共に、当該一時復号鍵情報を利用した対称鍵暗号方式により前記第２の認証子の復号化を行う対称鍵復号機能を有することを特徴とした鍵交換システム。
【請求項７】
請求項１に記載の鍵交換システムにおいて、
前記ユーザ装置に対して着脱自在に接続される可搬機能装置を備えると共に、前記ユーザ装置内の前記パスワード取得部と前記認証子生成部に代えて、当該パスワード取得部と前記認証子生成部を一体化し前記可搬機能装置内に設けたことを特徴とする鍵交換システム。
【請求項８】
請求項１に記載の鍵交換システムにおいて、
前記サーバ装置は、前記第２の認証判定部による認証判定で一定の回数以上認証がなされなかった場合、前記認証判定の要求元に対する認証判定を抑制するパスワード認証回数制限部を備えたことを特徴とする鍵交換システム。
【請求項９】
接続されたユーザ装置およびサーバ装置間でメッセージ情報の相互通信を行うことにより鍵交換を行う鍵交換方法であって、
予め設定されたマスター鍵に基づき第1の秘密鍵を生成すると共に、外部から入力されたパスワードに基づき第２の秘密鍵を生成したユーザ装置が、前記サーバ装置からメッセージ情報が送り込まれた場合に、前記第１の秘密鍵に基づき前記第１の認証子の生成を行うと共に当該第１の認証子に基づき前記メッセージ情報の認証判定を行い、前記第1の認証子に基づく認証判定で認証がなされた場合に、前記第２の秘密鍵に基づき前記第２の認証子の生成を行うと共に当該第２の認証子に基づき前記メッセージ情報の認証判定を行い、前記第２の認証子に基づく認証判定で認証がなされた場合に前記メッセージ情報に基づき交換鍵を生成すると共に、前記サーバ装置に対してメッセージ情報の送信を行い、
次いで、前記ユーザ装置からメッセージ情報が送り込まれた場合に、前記サーバ装置が、予めユーザ装置により登録された前記第１の秘密鍵に基づき前記第１の認証子の生成を行い、前記第１の認証子に基づき前記メッセージ情報の認証判定を行い、前記第1の認証子に基づく認証判定で認証がなされた場合に、予め登録された前記第２の秘密鍵に基づき前記第２の認証子の生成を行うと共に当該第２の認証子に基づき前記メッセージ情報の認証判定を行い、前記第２の認証子に基づく認証判定で認証がなされた場合に前記メッセージ情報に基づき前記ユーザ装置で生成された交換鍵と共通の交換鍵を生成することを特徴とした鍵交換方法。
【請求項１０】
接続されたユーザ装置およびサーバ装置間でメッセージ情報の相互通信を行うことにより鍵交換を行う鍵交換方法であって、
前記ユーザ装置は、予め設定されたマスター鍵に基づき第1の秘密鍵を生成すると共に、外部から入力されたパスワードに基づき第２の秘密鍵を生成し、前記第１および第２の秘密鍵を前記サーバ装置に送信し、
次いで、前記サーバ装置が、前記第１および第２の秘密鍵を登録し、前記ユーザ装置から鍵交換の要求がメッセージ情報として送り込まれた場合に、前記第１の秘密鍵に基づき前記第１の認証子の生成を行い、前記第１の認証子に基づき前記メッセージ情報の認証判定を行い、前記第1の認証子に基づく認証判定で認証がなされた場合に、前記第２の秘密鍵に基づき前記第２の認証子の生成を行うと共に当該第２の認証子に基づき前記メッセージ情報の認証判定を行い、前記第２の認証子に基づく認証判定で認証がなされた場合に前記メッセージ情報に基づき交換鍵を生成すると共に、前記ユーザ装置に対してメッセージ情報の送信を行い、
次に、前記ユーザ装置が、前記サーバ装置からメッセージ情報が送り込まれた場合に、前記生成した第１の秘密鍵に基づき前記第１の認証子の生成を行うと共に、当該第１の認証子に基づき前記メッセージ情報の認証判定を行い、前記第1の認証子に基づく認証判定で認証がなされた場合に、前記生成した第２の秘密鍵に基づき前記第２の認証子の生成を行うと共に当該第２の認証子に基づき前記メッセージ情報の認証判定を行い、前記第２の認証子に基づく認証判定で認証がなされた場合に前記メッセージ情報に基づき前記サーバ装置で生成された交換鍵と共通の交換鍵を生成することを特徴とした鍵交換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報の暗号化および復号化に係る鍵の交換を行う鍵交換システムに関する。
【背景技術】
【０００２】
鍵交換方式では、通信回線を介して接続された異なる鍵交換装置が相互にメッセージの通信を行うことにより、情報の暗号化や復号化などに利用される共通の鍵情報（交換鍵）を共有する。
特に、鍵交換装置それぞれが自己であることの認証を受けるための手法を備え、鍵交換を行う相手の装置を認証した上で、認証に成功した相手装置との鍵交換を行う鍵交換方式を、認証付き鍵交換方式と呼ぶものとする。
【０００３】
認証付き鍵交換方式では、例えば図１に示すように、鍵交換装置１００が、第一ラウンド装置２００と、鍵生成装置３００を備えた構成を有し、他の鍵交換装置との間で通信装置１０５を介してメッセージのやり取りを行い、このメッセージに基づき相手の鍵生成装置が認証された場合に鍵（交換鍵）の生成を行い、異なる鍵交換装置間で共通の交換鍵を共有する、つまり、鍵交換を行う（非特許文献１）。
【０００４】
ここで、本認証付き鍵交換方式のシステム構成について、図１に基づき説明する。
鍵交換装置１００は、システムパラメータ１０７、自己識別子１０８、鍵交換開始命令１０９を受け付ける入力装置１０１と、乱数の入力を受け付ける乱数入力装置１０２と、生成された乱数および認証子を含む状態情報を記憶する記憶装置１０３と、他の鍵交換装置から送り込まれた認証子に基づき鍵交換用の認証を行う認証装置１０４を備えた構成を有する。
【０００５】
鍵交換装置１００は、予め設定されたシステムパラメータ１０７（ｑ，Ｇ，ｇ，Ｈａｓｈ）、および自己識別子１０８（Π）が入力された場合に起動され、命令（入力）待ち状態に設定されるものとする。尚、ｑを素数、Ｇを位数ｑの乗法的巡回群、ｇをＧの生成元であるものとする。
この命令（入力）待ち状態の鍵交換装置１００（Π）に対して、セッション番号１１２（ｓｉｄ）と相手識別子１１０（Π’）とを含む鍵交換開始命令１０９を入力された場合、第一ラウンド装置２００（図２）が動作する
ここで、セッション番号（ｓｉｄ）１１２は、鍵交換装置ΠおよびΠ’間における鍵交換セッションに対応して割当てられた固有の数値であるものとする。
【０００６】
ここで、第一ラウンド装置２００には、乱数入力装置１０２により予め設定された乱数１１１が入力される。
第一ラウンド装置２００に予め設定された暫定数生成部２０２（図２）は、入力された乱数１１１に基づき暫定数ｒ（ｒ∈Ｚ／ｑＺとする）をランダムに生成する。
更に、第一ラウンド装置２００内に予め設定された冪乗数生成部２０３（図２）が、この暫定数ｒに基づく数値ｙ（ここで、ｙ＝ｇｒとする）を生成する。ここで、ｙをべき乗数２０４と呼ぶ。
【０００７】
ここで、第一ラウンド装置２００は、図２に示すように、セッション番号１１２、相手識別子１１０、暫定数２０１（ｓｉｄ，Π’，ｒ）を含む状態情報２０５を生成すると共に、これを秘密鍵情報として記憶装置１０３に格納する。
また、第一ラウンド装置２００は、認証装置１０４に対して、要求する処理内容を示す処理パラメータ（ここでは、識別子の生成を示す）と、セッション番号およびべき乗数（”生成”、（ｓｉｄ，ｙ））を認証装置１０４に入力し、その出力としての識別子２０６（ｓｉｇ）を得る。
次いで、第一ラウンド装置２００は、図２に示すように、セッション番号、冪乗数、および識別子を含むメッセージ（ｓｉｄ，ｙ，ｓｉｇ）２０７を設定すると共に、このメッセージを、通信路１０５を介して鍵交換装置（識別子Π’）に送信する。尚、このメッセージには、送信者として識別子（Π）が、宛先として（Π’）が設定されているものとする。
ここで、鍵交換装置１００は命令待ち状態に設定されるものとする。
【０００８】
次に、送信者として識別子Π’が、宛先としてΠが指定されたメッセージ３０１（ｓｉｄ、y’、ｓｉｇ’）を送り込まれた場合の、命令待ち状態の鍵交換装置１００（Π）の動作について、図３に基づき説明する。
尚、メッセージ３０１は、通信路１０５を介して鍵生成装置３００に送り込まれたものとする。
【０００９】
まず、メッセージを受信した鍵生成装置３００は、メッセージ３００に含まれる冪乗数ｙに基づき、記憶装置１０３に予め保存された、対応する状態情報の検索（状態参照）を行う（３０２：図３）。
ここで、対応する状態情報である（ｓｉｄ，ｙ，ｒ）が記憶装置１０３に記憶されていない場合、鍵交換装置を命令待ち状態に設定し、鍵交換に係る処理を中止する。
【００１０】
対応する状態情報３０４（ｓｉｄ，ｙ，ｒ）が記憶されていた場合、鍵生成装置３００は、この状態情報３０４を読出す。
ここで、鍵生成装置３００は、要求する処理の内容を示す要求パラメータ（ここでは、この要求を「検証」とする）、相手識別子を含む（”検証”，Π’，（ｓｉｄ，ｙ’），ｓｉｇ’）を認証装置１０４に入力することにより、送り込まれたメッセージの検証（認証を）行う。
ここで、認証装置１０４が、メッセージ内容が鍵交換相手として”不当”であることを示す出力を行った場合、鍵交換装置１００を命令待ち状態に設定する。
【００１１】
認証装置１０４による上記検証の結果、送り込まれたメッセージ内容が鍵交換相手として”正当”であると判定された場合に、記憶装置１０３に予め記憶された状態情報（ここでは、（ｓｉｄ，Π’，ｙ，ｒ）とする）を消去する（状態消去部３０５：図３）。
また、予め設定された鍵生成部３０８が、冪乗数ｙに基づきセッション番号およびｚを含む交換鍵（ｓｉｄ，ｚ（ただしｚ＝ｙ’ｒ））３０７を生成して出力する。
【００１２】
以上のように、本認証付き鍵交換方式の鍵交換システムでは、鍵交換を行う相手装置を認証し、この認証に成功した相手装置との鍵交換を行うことができる。
【００１３】
上記認証付き鍵交換方式のシステムに対して、利用者により入力されたパスワードに基づき鍵交換処理の認証を行うパスワード認証付き鍵交換方式の鍵交換システムが開示されている（非特許文献２）。
【００１４】
このパスワード認証付き鍵交換方式は、例えば図４に示すように、相互に接続された鍵交換装置４００および５００を備え、この鍵交換装置４００および５００が相互にメッセージの通信を行うことにより、鍵交換を行う。
【００１５】
鍵交換装置４００は、図４に示すように、当該鍵交換装置４００に対して鍵交換にかかる入力情報を入力するための入力装置４０１と、生成された乱数４１５を鍵交換装置４００に対して入力する乱数入力装置４０２と、利用者により入力されたパスワードを鍵交換装置４００に入力するパスワード入力装置４０３と、鍵交換装置４００内で設定された状態情報を記憶する記憶装置４０８を備えた構成を有する。
【００１６】
また、鍵交換装置４００は、その内部に暗号化装置４０４、復号化装置４０５、およびハッシュ計算装置４０６を備えた構成となっている。
尚、暗号化装置４０４は、例えば鍵および平文が入力された場合に、入力された鍵を用いて同じく入力された平文を暗号化して、暗号文を生成（出力）する。
また、復号装置４０５、例えば鍵および暗号文が入力された場合に、入力された鍵を用いて暗号文を復号化した平文を生成（出力）する。
更に、ハッシュ計算装置４０６は、自己識別子、相手識別子、平文、乱数などの予め設定された入力情報に対して、予め設定されたプログラム（ハッシュ関数）に基づく処理を行うことにより出力情報を生成して出力するハッシュ関数処理機能を備えている。
【００１７】
また、パスワード認証付き鍵交換方式の鍵交換システムでは、鍵交換装置４００と同等の構成を有する鍵交換装置５００を備え、上述のように、この鍵交換装置４００とメッセージの相互通信を行うことにより、鍵交換を行う。
鍵交換装置５００は、図４に示すように、当該鍵交換装置５００に対して鍵交換にかかる入力情報を入力するための入力装置５０１と、生成された乱数５１５を鍵交換装置５００に対して入力する乱数入力装置５０２と、利用者により入力されたパスワードを鍵交換装置５００に入力するパスワード入力装置５０３と、鍵交換装置５００内で設定された状態情報を記憶する記憶装置５０８を備えた構成を有する。
【００１８】
また、鍵交換装置５００は、その内部に暗号化装置５０４、復号化装置５０５、およびハッシュ計算装置５０６を備えた構成となっている。
尚、暗号化装置５０４は、鍵および平文が入力された場合に、入力された鍵を用いて、同じく入力された平文を暗号化して、暗号文を生成（出力）する。また、復号装置５０５は、例えば鍵および暗号文が入力された場合に、入力された鍵を用いて暗号文を復号化した平文を生成（出力）する。
更に、ハッシュ計算装置５０６は、自己識別子、相手識別子、平文、乱数などの予め設定された入力情報に対して、予め設定されたプログラム（ハッシュ関数）に基づく処理を行うことにより出力情報を生成して出力するハッシュ関数処理機能を備えている。
【００１９】
ここで、システムパラメータ４１０（ここでは、（q、G、g、Enc、Dec）とする）、および自己識別子４１１（Π）が入力されることにより、鍵交換装置４００は起動され、鍵交換装置４００は命令待ち状態に設定される。
【００２０】
以下、命令待ち状態の鍵交換装置４００が、鍵交換開始命令４１２、相手識別子４１３（Π’）、パスワード４１４を入力された場合に起動され、鍵交換装置５００との間で行われる鍵交換の動作について、説明する。
【００２１】
鍵交換装置４００に対して、乱数入力装置４０２が乱数４１５から暫定数ｘ（ｘ∈Ｚ／ｑＺとする）を生成する。また、乱数入力装置４０２は、暫定数ｘに基づき冪乗数ｖ（ｖ＝ｇｘ）を生成する。
【００２２】
次いで、鍵交換装置４００は、パスワード入力装置４０２よりパスワード（ｐｗ）４１４を取得すると共に、パスワードおよび冪乗数（ｐｗ，ｗ）を暗号化装置４０４に入力し、その出力としての暗号文（ｃｔ［１］）を得る。
また、鍵交換装置４００は、相手識別子、暫定数、冪乗数、およびパスワードを含む状態情報（Π’、x、v、pw）を生成して、これを記憶装置４０８に格納する。
【００２３】
次に、鍵交換装置４００は、自己識別子および上記生成された暗号文を含むメッセージ（Π，ｃｔ［１］）を、通信装置４０７を介して鍵交換装置５００に送信する。尚、ここで送信されるメッセージの送信者は識別子Π、宛先Π’が設定されているものとする。
ここで、鍵交換装置４００は、命令待ち状態に設定される。
【００２４】
命令待ち状態の鍵交換装置５００（Π）は、通信装置５０７を介してメッセージ（Π’，ｃｔ［１］’）を受信した場合、つまり、メッセージ（Π’，ｃｔ［１］’）の受信が検知された場合に、乱数入力装置５０２から予め生成された乱数５１５を取り込む。
尚、メッセージ（Π’，ｃｔ［１］’）は、送信者が（Π’）、宛先が（Π）に設定されているものとする。
【００２５】
ここで、乱数入力装置５０２には、ランダム数として生成された暫定数ｙ（ｙ∈Ｚ／ｑＺとする）、乱数ｗ（ここでは、w=ｇｙとする）が入力される。尚、ｗは冪乗数と呼ぶ。
【００２６】
次いで、鍵交換装置５００は、パスワード入力装置５０３から入力されたパスワード（ｐｗ）５１４を取得する。
ここで、鍵交換装置５００は、復号装置５０５に対して入力情報としてのパスワードおよび暗号文字列（ｐｗ，ｃｔ［１］’）を入力し、その出力としての平文（ｖ’）を得る。
また、復号装置５０５は、ｚを算出する。ここで、ｚ＝ｖ’ｙであるものとする。
【００２７】
ここで、鍵交換装置５００は、パスワードおよび乱数（ｐｗ，ｗ）を暗号化装置５０４に入力し、その出力としての暗号文（ｃｔ［２］）を得る。
【００２８】
次いで、鍵交換装置５００は、自己識別子、相手識別子、平文、乱数（Π’，Π，ｖ’，ｗ，ｚ）をハッシュ計算装置５０６に入力して、その出力である値（ｓｋ’）を得ると共に、この値ｓｋ’を含む（ｓｋ’，１）をハッシュ計算装置５０６に入力して、暗号文字列ｃｈ［１］を得る。
ここで、鍵交換装置５００は、状態情報（Π’，ｓｋ’）を生成して、これを記憶装置５０８に格納する。
【００２９】
次いで、鍵交換装置５００は、メッセージとしての（Π，ｃｔ［２］，ｃｈ［１］）を、通信装置５０７を介して鍵交換装置４００に送信する。尚、このメッセージは、送信者（Π）で宛先が（Π’）を示すものとする。
ここで、鍵交換装置５００は、は命令待ち状態に設定される。
【００３０】
次に、命令待ち状態の鍵交換装置４００（識別子Π）が、通信装置４０７を介して送り込まれたメッセージ（Π’，ｃｔ［２］’，ｃｈ［１］’）を受信した場合について、説明する。
【００３１】
まず、鍵交換装置４００は、予め記憶したパスワードおよび送り込まれた暗号文字列（ｐｗ，ｃｔ［２］’）を、復号装置４０５に入力することによりその出力としての平文（ｗ’）を得る。また、鍵交換装置４００は、平文ｗ’に基づくｚ（ｚ＝ｗ’ｘ）を生成する。
【００３２】
次いで、鍵交換装置４００は、（Π’，Π，ｖ，ｗ’，ｚ）をハッシュ計算装置４０６に入力して、その出力としての値（ｓｋ’）を得ると共に、この値を含む（ｓｋ’，１）をハッシュ計算装置４０６に入力することにより、その出力としてのｃｈ［１］を生成する。
【００３３】
ここで、鍵交換装置４００は、生成されたｃｈ［１］とメッセージの一部として送り込まれたｃｈ［１］’とが等しい（ｃｈ［１］＝ｃｈ［１］’）か否かの判定を行う
ここで、ｃｈ［１］＝ｃｈ［１］’が成り立たない場合、鍵交換装置４００は命令待ち状態に設定されるものとする。
【００３４】
また、鍵交換装置４００は、（ｓｋ’，２）をハッシュ計算装置４０６に入力して、ｃｈ［２］を得る。
更に、鍵交換装置４００は、（ｓｋ’，０）をハッシュ計算装置４０６に入力して、その出力である鍵（ｋｅｙ）を得る。
次いで、鍵交換装置４００は、メッセージ（Π，ｃｈ［２］）を通信装置４０７を介して鍵交換装置５００に送信する。尚、このメッセージに含まれる送信者の識別子は（Π）、宛先は（Π’）であるものとする。
【００３５】
ここで、鍵出力部４０９が、上記生成された鍵（ｋｅｙ）を、交換結果（交換鍵）４１６として出力する。また、鍵交換装置４００は、記憶した状態情報を消去し、命令待ち状態に設定される。
【００３６】
次に、命令待ち状態の鍵交換装置５００における、鍵交換装置４００から通信装置５０７を介して送り込まれたメッセージ（Π，ｃｈ［２］）を受信した場合の動作について、説明する。
【００３７】
命令待ち状態の鍵交換装置５００（Π）が、通信装置５０７を介して、メッセージ（Π’，ｃｈ［２］’）を受信した場合、鍵交換装置５００は、（ｓｋ’，２）をハッシュ計算装置５０６に入力し、その出力としてのｃｈ［２］を得る。受信したメッセージに含まれたｃｈ［２］’との等号（ｃｈ［２］＝ｃｈ［２］’）が成立しない場合、鍵交換装置５００は命令待ち状態に設定されるものとする。
【００３８】
ここで、生成したｃｈ［２］と、受信したメッセージに含まれたｃｈ［２］’とが等しい場合、鍵交換装置５００は、（ｓｋ’，０）をハッシュ計算装置５０６に入力して、鍵（ｋｅｙ）を得る。
次いで、鍵交換装置５００は、算出された鍵（ｋｅｙ）を交換結果（交換鍵）５１６として出力する。また、鍵交換装置５００は、上記記憶した状態情報を消去し、命令待ち状態となる。
【００３９】
以上のように、パスワード認証付き鍵交換システムでは、文字数の比較的短いパスワードを用いて鍵交換を行うため、パスワードを器機内に格納することなくこのパスワードに基づく認証を行い、認証された相手装置（鍵交換装置）との鍵交換を行うことができる。
【先行技術文献】
【非特許文献】
【００４０】
【非特許文献１】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.
【非特許文献２】Mihir Bellare, David Pointcheval, Phillip Rogaway："Authenticated Key Exchange Secure against Dictionary Attacks".Advances in Cryptology-EUROCRYPT 2000, International Conference on the Theory  and Application of Cryptographic Techniques, Bruges, Belgium, May 14-18, 2000,  Proceeding, pages 139-155. Lecture Notes in Computer Science 1807 Springer 2000,  ISBN 3-540-67517-5.
【発明の概要】
【発明が解決しようとする課題】
【００４１】
しかしながら、上記非特許文献１に開示された関連技術では、認証子を生成するために、鍵交換装置は秘密情報を保持しなければならず、この秘密鍵情報である文字列が一定以上に長い場合、この秘密鍵情報を記憶することが困難となるため、鍵交換装置に設定されたメモリ機器などの記憶装置に保存することが必要となる。
【００４２】
しかしながら、例えば、この秘密鍵情報が記憶された記憶装置やメモリ機器が盗難にあった場合やそのメモリ機器を紛失した場合、秘密鍵情報が漏洩され、鍵交換にかかるセキュリティを確保することができない、といった不都合が生じ得る。
【００４３】
また、上記非特許文献２に開示された関連技術では、文字数の比較的短いパスワードを用いて鍵交換を行うため、パスワードを器機内に保存することなく、鍵交換を行うことができる。
このため、メモリ器機の盗難や紛失による情報漏洩を抑制することが可能となる。しかしながら、その一方で、悪意のユーザによりパスワードが推測され盗まれることでパスワードが漏洩してしまうといった不都合が生じ得る。
【００４４】
また、悪意のユーザ（攻撃者）からの不正な鍵交換要求に対しては、例えば、鍵交換装置を、一定の回数以上の誤ったパスワードによる鍵交換の試み（鍵交換試み）を受けた場合に以降の鍵交換試みを拒否する（抑制する）構成とするといった対策が考えられる。
【００４５】
しかしながら、このような対策を取った場合、攻撃者による成功しない不正な鍵交換試みが多数回行われた場合など、この鍵交換装置を利用した鍵交換システムでは正当な利用者の鍵交換が受け付けられなくなってしまう不都合が生じ得る。
【００４６】
更に、上記非特許文献２に開示された関連技術では、同一のパスワードを、鍵交換要求元と要求先の両方の鍵交換装置が共有する構成となっている。このため、このパスワードがサーバおよび利用者側鍵交換装置の認証に使われた場合、サーバが利用者のパスワードを知ることができてしまう。
このため、例えば、利用者が多くの異なるサーバとの間でパスワードの提供を行う場合、利用者は複数の異なるパスワードをそれぞれ記憶することは困難であることから、異なるサーバに対して鍵交換用の共通のパスワードを設定してしまう場合が生じ得る。この場合、不正なサーバ利用者が利用者側鍵交換装置から提供された鍵交換用のパスワードを取得し、他のサーバ（鍵交換装置）に対して、パスワードを利用して、不正に成りすましによる接続を行い、他のサーバとの不正な鍵交換を行うことが可能となってしまう不都合が生じ得る。
【００４７】
これに対して、例えば、鍵交換装置に秘密情報を格納可能なＩＣカードなどを設け、パスワードの入力によりこのＩＣカードに格納された秘密情報を利用可能に設定する手法が考えられる。
しかしながら、この場合、ＩＣカードに文字数の長い秘密鍵と照合対称となるパスワードが格納される構成であるため、これを解析することでＩＣカードに記憶されたパスワードや秘密鍵を盗むことが可能であり、例えばＩＣカードが盗難にあった場合などには、交換鍵にかかる安全性を確保することができないという不都合がある。
【００４８】
［発明の目的］
本発明は、上記関連技術の有する不都合を改善し、セキュリティが有効に高められた状態で鍵交換を行うことを可能とする鍵交換システム、鍵交換方法、鍵交換プログラムを提供することを、その目的とする。
【課題を解決するための手段】
【００４９】
上記目的を達成するために、本発明に係る鍵交換システムは、接続されたユーザ装置およびサーバ装置間でメッセージ情報の相互通信を行うことにより鍵交換を行う鍵交換システムであって、前記ユーザ装置は、外部から入力されたパスワードを取得し保持するパスワード取得部と、予め設定されたマスター鍵に基づき第1の秘密鍵を生成すると共に、前記入力されたパスワードに基づき第２の秘密鍵を生成する秘密鍵生成部と、前記第１の秘密鍵に基づき認証判定用の第１の認証子を生成すると共に、前記マスター鍵および第２の秘密鍵に基づき前記認証判定用の第2の認証子を生成する認証子生成部と、前記第１および第２の認証子を含むメッセージ情報を生成するメッセージ情報設定部と、予め設定されたサーバ装置からメッセージ情報が送り込まれた場合に、当該メッセージ情報に含まれる第１の認証子に基づく認証判定を行う第１の認証判定部と、前記第1の認証子に基づく認証判定で認証がなされた場合に前記パスワードおよび第２の認証子に基づく認証判定を行う第２の認証判定部と、前記第２の認証判定部による認証判定で認証がなされた場合に前記メッセージ情報に基づき交換鍵を生成し当該交換鍵の出力を行うユーザ側交換鍵生成部とを備え、前記サーバ装置は、予めユーザ装置により登録された第１および第2の秘密鍵を保持する秘密鍵保持部と、前記ユーザ装置からメッセージ情報が送り込まれた場合に前記第１の秘密鍵に基づき前記第１の認証子の生成を行うと共に当該第１の認証子に基づき前記メッセージ情報の認証判定を行う第1の認証判定部と、前記第1の認証判定部による認証判定で認証がなされた場合に前記第２の秘密鍵に基づき前記第２の認証子の生成を行うと共に当該第２の認証子に基づき前記メッセージ情報の認証判定を行う第２の認証判定部と、前記ユーザ装置からのメッセージ情報に含まれるランダム数に基づき前記ユーザ装置で生成された交換鍵と共通の交換鍵を生成すると共に、前記第２の認証判定部による認証判定で認証がなされた場合に前記生成した交換鍵を出力するサーバ側交換鍵生成部とを備えた構成をとっている。
【００５０】
また、本発明にかかる鍵交換方法は、接続されたユーザ装置およびサーバ装置間でメッセージ情報の相互通信を行うことにより鍵交換を行う鍵交換方法であって、予め設定されたマスター鍵に基づき第1の秘密鍵を生成すると共に、外部から入力されたパスワードに基づき第２の秘密鍵を生成したユーザ装置が、前記サーバ装置からメッセージ情報が送り込まれた場合に、前記第１の秘密鍵に基づき前記第１の認証子の生成を行うと共に当該第１の認証子に基づき前記メッセージ情報の認証判定を行い、前記第1の認証子に基づく認証判定で認証がなされた場合に、前記第２の秘密鍵に基づき前記第２の認証子の生成を行うと共に当該第２の認証子に基づき前記メッセージ情報の認証判定を行い、前記第２の認証子に基づく認証判定で認証がなされた場合に前記メッセージ情報に基づき交換鍵を生成すると共に、前記サーバ装置に対してメッセージ情報の送信を行い、次いで、前記ユーザ装置からメッセージ情報が送り込まれた場合に、前記サーバ装置が、予めユーザ装置により登録された前記第１の秘密鍵に基づき前記第１の認証子の生成を行い、前記第１の認証子に基づき前記メッセージ情報の認証判定を行い、前記第1の認証子に基づく認証判定で認証がなされた場合に、予め登録された前記第２の秘密鍵に基づき前記第２の認証子の生成を行うと共に当該第２の認証子に基づき前記メッセージ情報の認証判定を行い、前記第２の認証子に基づく認証判定で認証がなされた場合に前記メッセージ情報に基づき前記ユーザ装置で生成された交換鍵と共通の交換鍵を生成することを特徴としている。
【発明の効果】
【００５１】
本発明は、以上のように構成され機能するので、これによると、ネットワークを介して相互にメッセージ通信を行うユーザ装置およびサーバ装置それぞれが、予め設定されたマスター鍵から生成された第１の秘密鍵と入力されたパスワードから生成された第２の秘密鍵とに基づき鍵交換相手としての認証を行う認証判定部と認証が成功した場合に相手から送り込まれたメッセージに基づき交換鍵の生成を行う鍵生成部を有する構成としたことにより、ネットワークを介して行われる暗号化（復号化）用の鍵交換におけるセキュリティを有効に高める鍵交換システム、鍵交換方法を提供することができる。
【図面の簡単な説明】
【００５２】
【図１】本発明による鍵交換システムの関連技術である認証付き鍵交換システムの一実施形態を示す概略ブロック図である。
【図２】図１に開示した認証付き鍵交換システムにおける第一ラウンド装置の内部構成の一例を示す概略ブロック図である。
【図３】図１に開示した認証付き鍵交換システムにおける鍵生成装置の内部構成の一例を示す概略ブロック図である。
【図４】本発明による鍵交換システムの関連技術であるパスワードを利用した鍵交換システムの一実施形態を示す概略ブロック図である。
【図５】本発明による鍵交換システムにおける一実施形態を示す概略ブロック図である。
【図６】本発明による鍵交換システムにおける一実施形態を示す概略ブロック図である。
【図７】図５に開示した鍵交換システムにおける利用者用鍵交換装置の動作処理ステップを示すフローチャートである。
【図８】図５に開示した鍵交換システムにおけるサーバ用鍵交換装置の動作処理ステップを示すフローチャートである。
【図９】図６に開示した鍵交換システムにおける利用者用鍵交換装置の動作処理ステップを示すフローチャートである。
【図１０】図６に開示した鍵交換システムにおけるサーバ用鍵交換装置の動作処理ステップを示すフローチャートである。
【発明を実施するための形態】
【００５３】
［実施形態１］
次に、本発明の実施形態１について、その基本的構成内容を説明する。
【００５４】
本実施形態１である鍵交換システムは、図５に示すように、利用者用鍵交換装置６００およびサーバ用鍵交換装置７００が接続され相互にメッセージの送受信を行うことにより、共通の交換鍵の生成、出力を行う。
【００５５】
尚、利用者用鍵交換装置６００およびサーバ用鍵交換装置７００はそれぞれ、予め設定されたプログラムに基づく実行処理を行う演算装置を備えたコンピュータであって、当該演算装置による実行処理により以下に示す機能動作を実現する。
また、利用者用鍵交換装置６００およびサーバ用鍵交換装置７００は、上記鍵交換装置（図４）と同様に、その内部に暗号化処理を行う暗号化部および復号化処理を行う復号化部を備えた認証子生成装置と、ランダム数に基づく計算を行うハッシュ計算装置を有する。
【００５６】
認証子生成装置は、秘密鍵およびメッセージが入力されると、この秘密鍵およびメッセージに基づく認証子を生成し出力する。
ここで、認証子生成装置の暗号化部は、例えば鍵および平文が入力された場合に、入力された鍵を用いて同じく入力された平文を暗号化して、暗号文を生成（出力）する。
【００５７】
また、上記認証子生成装置の復号化部は、例えば鍵および暗号文が入力された場合に、入力された鍵を用いて暗号文を復号化した平文を生成（出力）する。
また、ハッシュ計算装置は、自己識別子、相手識別子、平文、乱数などの予め設定された入力情報に対して、予め設定されたプログラム（ハッシュ関数）に基づく処理を行うことにより出力情報を生成して出力するハッシュ関数処理機能を備えている。
【００５８】
また、利用者用鍵交換装置６００は、予め設定された検証鍵、署名、およびメッセージが入力された場合に、署名の正当性を判定し、その判定結果を返す署名検証装置を備えた構成を有する。
【００５９】
一方、サーバ用鍵交換装置７００は、入力された署名鍵およびメッセージに基づき署名を設定し、この署名を出力する署名装置を有する。
【００６０】
以下、利用者用鍵交換装置６００の内部構成について、図５に基づいて説明する。
利用者用鍵交換装置（以下「利用者装置」という）６００には、利用者装置６００に対して、鍵交換の開始要求を示す鍵交換開始命令と鍵交換の相手の識別子（相手識別子）６０２の入力を行う鍵交換開始命令部６０１が併設されている。
【００６１】
利用者用鍵交換装置６００は、鍵交換開始命令部６０１からの入力に応じてランダム数の生成を行う第一メッセージ生成部６０３と、外部から入力された情報および第一メッセージ生成部６０３により生成された乱数などの情報からなる状態情報を保持する状態保存部６０４と、第一メッセージ生成部６０３により設定された第一メッセージをサーバ用鍵交換装置７００に対して送付する第一メッセージ送信部６０５を有する。
【００６２】
また、利用者用鍵交換装置６００は、サーバ用鍵交換装置７００から送り込まれた第二メッセージを受信すると共にこのメッセージ内に含まれる状態情報が状態保存部６０４に予め保存されているか否かの判定を行う対応状態確認部６０６と、状態情報が状態保存部６０４に予め保存されていることが確認された場合に、メッセージに含まれる特定の情報に基づきハッシュ計算装置（以下「ハッシュ関数」という）を利用することにより、セッション番号（ｓｉｄ）を生成するセッション番号生成部６０８と、サーバ用鍵交換装置７００から送り込まれた検証鍵（ｖｋｅｙ［Ｓ］）、署名（ｓｉｇ［Ｍ］）、およびメッセージに基づき、上記署名検証装置を利用することにより、サーバ用鍵交換装置７００から送り込まれた署名（または検証鍵）の正当性の判定（検証）を行う検証鍵検証部６０９を有する。
【００６３】
更に、利用者用鍵交換装置６００は、検証鍵検証部６０９による検証により署名（または検証鍵）の正当性が確認された場合に、生成した秘密鍵とメッセージに基づき認証子生成装置を利用して認証子を生成すると共にメッセージとして送り込まれた認証子が正当であるか否かの判定を行う認証子検証部６０７と、認証子の正当性が認証された場合に、ユーザから入力されたパスワード（ｐｗｄ）を取得するパスワード入力部６１０を備えている。
尚、認証子検証部６０７は、予め設定されたマスター鍵と相手識別子に基づき、上記ハッシュ関数を利用して秘密鍵を生成する機能を有する。
【００６４】
また、利用者用鍵交換装置６００は、生成された秘密鍵とメッセージに基づき認証子生成装置を利用することによって、パスワード由来ではない無パスワード認証子の生成を行う無パスワード認証子生成部６１１と、入力されたパスワードに基づき生成された秘密鍵（第２の秘密鍵に対応）とメッセージに基づき認証子生成装置を利用してパスワード認証子を生成するパスワード認証子生成部６１２を有する。
また、パスワード認証子生成部６１２は、予め設定されたマスター鍵（ｍｋｅｙ（Ｕ））をハッシュ関数に入力して得られた値と予め設定されたｍａｓｋ［Ｕ］との排他的論理和を計算する暗号化計算機能と、マスター鍵、暗号パスワード、相手識別子に基づきハッシュ関数を利用して秘密鍵（第２の秘密鍵に対応）を生成するパスワード秘密鍵生成機能を有する。
【００６５】
更に、利用者用鍵交換装置６００は、予め設定された乱数に基づきハッシュ関数を利用して認証子の暗号化としての暗号署名の生成を行うパスワード認証子隠蔽部６１３と、ハッシュ関数を利用して生成した値により予め設定された乱数源の置き換え更新を行う乱数源更新部６１４を有する。
【００６６】
また、利用者用鍵交換装置６００は、サーバ装置７００から送り込まれた乱数に基づくハッシュ関数を利用した算出を行うことにより交換鍵を生成する鍵生成部６１５と、鍵生成部６１５での交換鍵の生成が行われた場合に、予め保存された状態情報を消去する処理を行う状態消去部６１６と、鍵生成部６１５での交換鍵の生成が行われた場合に、第三メッセージを設定すると共にこのメッセージをサーバ用鍵交換装置７００に送付する第三メッセージ送信部６１７と、生成された交換鍵を予め設定された、例えば、ディスプレイ等の表示部に対して出力する鍵出力部６１８を備えた構成を有する。
【００６７】
次に、サーバ用鍵交換装置７００の内部構成について、図５に基づいて説明する。
サーバ用鍵交換装置７００は、利用者用鍵交換装置６００から送り込まれた第一メッセージを受信すると共に、当該メッセージの内容に基づく記録情報を利用者リスト７２４から抽出し、メッセージ送信元による鍵交換試行の試行誤り回数が予め設定された制限回数を超えていないか否かを判定を行う制限回数確認部７０１と、メッセージ送信元による鍵交換試行の試行誤り回数が制限回数を下回る場合に、メッセージ内容に基づくランダム数の生成を行うと共に、ハッシュ関数を利用して鍵（ｋｅｙ）を生成する鍵生成部７０２を有する。
【００６８】
また、サーバ用鍵交換装置７００は、上記ランダム数に基づきハッシュ関数を利用してセッション番号（ｓｉｄ）を生成するセッション番号生成部７０３と、予め設定された署名鍵とメッセージに基づき署名装置を利用して署名ｓｉｇ［Ｍ］を生成する認証子生成部７０４と、生成されたランダム数および署名を含む状態情報を保持する状態保存部７０５と、予め設定された検証鍵７２１および公開鍵７２３を含む第二メッセージを設定すると共に、当該メッセージを利用者用鍵交換装置６００に送信する第二メッセージ送信部７０６を備えている。
【００６９】
更に、サーバ用鍵交換装置７００は、利用者用鍵交換装置６００から第三メッセージを受信した場合にこのメッセージ内容に対応する状態情報が予め保存されているか否かを判定する対応状態確認部７０７を有する。
また、この対応状態確認部７０７は、利用者リスト７２４内に記録された、上記状態情報に対応する記録情報（Ｕ，ａｋｅｙ［Ｕ，１］，ａｋｅｙ［Ｕ，２］，ｉ）を検索する。
【００７０】
また、サーバ用鍵交換装置７００は、秘密鍵（ａｋｅｙ［Ｕ，１］）および第三メッセージの内容に基づき、予め設定された認証子生成装置を利用することによって、パスワード由来ではない無パスワード認証子を生成し、生成した無パスワード認証子と第三メッセージの一部として送り込まれた認証子ｍａｃ［Ｋ，１］とが等しいか否かの判定を行う無パスワード認証子検証部７０８と、生成した認証子（ｍａｃ［Ｋ，１］’）と送り込まれたｍａｃ［Ｋ，１］が等しいことが確認された場合に、予め設定された復元鍵および第三メッセージに含まれた暗号化認証子（ｐｓｉｇ［Ｋ，２］）に基づきハッシュ関数を利用して平文としてのパスワード認証子（ｍａｃ［Ｋ，２］）を復元生成するパスワード認証子復元部７０９を備えている。
【００７１】
更に、サーバ用鍵交換装置７００は、秘密鍵とメッセージに基づき認証子生成装置を利用してパスワード認証子（ｍａｃ［Ｋ，２］’）を生成し、このパスワード認証子（ｍａｃ［Ｋ，２］’）と、上記復元生成したパスワード認証子（ｍａｃ［Ｋ，２］）とが等しいか否かの判定を行うパスワード認証子検証部７１０と、パスワード認証子と復元生成されたパスワード認証子とが等しいと判定された場合に、予め生成された交換鍵を出力表示する鍵出力部７１２と、公開鍵が出力される場合に、保存された状態情報を消去する処理を行う状態消去部７１３を備えている。
【００７２】
［実施形態１の変形例］
本実施形態１では、利用者用鍵交換装置６００に対して着脱自在に接続した、例えば、ＩＣカードのような、可搬装置６３０を備え（図５の一点破線部）、この可搬装置６３０内に、例えば、上記検証鍵検証部６０９、パスワード入力部６１０、無パスワード認証子生成６１１、パスワード認証子生成６１２、パスワード認証子隠蔽６１３、および乱数源更新部６１４を設定すると共に、可搬装置６３０内に予め設定した記憶領域にマスター鍵６２０、マスク６２２、および乱数源６２１が記憶保持された構成であってもよい。
【００７３】
本実施形態１においては、利用者装置６００がサーバ装置７００との間で鍵交換を行うためには、正当な認証子（パスワード認証子）を示す必要があり、この認証子を生成するためには、秘密鍵およびこの秘密鍵を生成するためのパスワードが必要となるため、上記変形例に示した構成とすることにより、本体側に設定された状態保存部６０４に記憶された秘密鍵と、ＩＣカード側に記憶された照合目的のパスワードとを分離して管理することが可能となり、秘密鍵およびパスワードの漏洩に対するセキュリティをより高めることが可能となる。
【００７４】
以上のように、本実施形態１では、秘密鍵（長い秘密情報）とパスワードの両方を用いる鍵交換を行うことができ、更には、秘密鍵が格納している器機が紛失された場合でも、パスワードがなければ、サーバ装置との間で鍵交換を行うことができないため、不正な利用者による、成りすましなどの不正な鍵交換を有効に抑制することができる。
また、サーバ装置側では利用者により入力されたパスワードを得ることができないため、鍵交換を行った他のサーバ装置に対する成りすましによる不正な鍵交換を有効に抑制することができる。
【００７５】
［実施形態１の動作説明］
次に、本実施形態１の動作について、その概略を説明する。
まず、予め設定されたマスター鍵に基づき第1の秘密鍵を生成すると共に、外部から入力されたパスワードに基づき第２の秘密鍵を生成した利用者装置６００が、サーバ装置７００からメッセージ情報が送り込まれた場合に、前記第１の秘密鍵に基づき前記第１の認証子の生成を行い、この第１の認証子に基づき前記メッセージ情報の認証判定を行い、前記第1の認証子に基づく認証判定で認証がなされた場合に、前記第２の秘密鍵に基づき前記第２の認証子の生成を行うと共に当該第２の認証子に基づき前記メッセージ情報の認証判定を行い、前記第２の認証子に基づく認証判定で認証がなされた場合に、鍵生成部６１５が、前記メッセージ情報に基づき交換鍵を生成し、前記サーバ装置に対してメッセージ情報の送信を行う。
次いで、利用者装置６００からメッセージ情報が送り込まれた場合に、サーバ装置７００が、予め利用者装置６００により登録された前記第１の秘密鍵に基づき前記第１の認証子の生成を行い、前記第１の認証子に基づき前記メッセージ情報の認証判定を行い、前記第1の認証子に基づく認証判定で認証がなされた場合に、予め登録された前記第２の秘密鍵に基づき前記第２の認証子の生成を行うと共に当該第２の認証子に基づき前記メッセージ情報の認証判定を行い、鍵出力部７１２は、前記第２の認証子に基づく認証判定で認証がなされた場合に前記メッセージ情報に基づき前記ユーザ装置で生成された交換鍵と共通の交換鍵を出力する。
【００７６】
次に、本実施形態１にかかる鍵交換システムの動作について説明する。
【００７７】
（初期設定）
利用者鍵交換装置６００には、図５に示すように、予めランダムに設定されたマスター鍵（ｍｋｅｙ［Ｕ］）６２０、乱数源（ｓｅｅｄ［Ｕ］）６２１、暗号化用のマスク（ｍａｓｋ［Ｕ］）６２２が予め設定された記憶領域に記憶されているものとする。
また、サーバ用鍵交換装置７００には、署名鍵（ｓｋｅｙ［Ｓ］）７２０、検証鍵（ｖｋｅｙ［Ｓ］）７２１、ランダムに選ばれたＺ／ｐＺの元ｓである複号鍵（ｄｋｅｙ［Ｓ］）７２２と、公開鍵（ｐｋｅｙ［Ｓ］：ｔ＝ｇｓであるものとする）７２３と、鍵交換相手として登録された利用者をリスト化した利用者リスト７２４が、予め設定された記憶領域に記憶されているものとする。
尚、上記利用者リスト７２４は、初期設定としては利用者が１件も登録されていない空状態であるものとする。
【００７８】
次に、本実施形態１における鍵交換相手の登録にかかる動作について説明する。
ここで、利用者用鍵交換装置６００は、サーバ用鍵交換装置７００に対して鍵交換対象装置としての登録を行う。利用者用鍵交換装置６００は、ネットワークを介して複数の異なるサーバ用鍵交換装置に対して鍵交換対象装置としての登録行うことができるものとする。
【００７９】
これにより、一つの利用者鍵交換装置は、複数の異なるサーバ用鍵交換装置７００と鍵交換を行うことが可能となるものとする。
尚、サーバ用鍵交換装置（サーバ装置）７００は、異なる利用者用鍵交換装置（利用者装置）を、各利用者装置に予め設定された識別子（利用者装置識別子）により判別するものとする。これにより、一つのサーバ用鍵交換装置７００は、複数の異なる利用者用鍵交換装置からの登録を受けつけることができる。また、これにより、一つのサーバ用鍵交換装置７００は、複数の異なる利用者用鍵交換装置との鍵交換を行うことが可能となる。
【００８０】
また、サーバ用鍵交換装置（サーバ装置）７００は、利用者装置の異なる利用者それぞれに割り当てられた識別子（利用者識別子）によっても判別可能であるものとする。
これにより、サーバ用鍵交換装置７００は、利用者リストに利用者毎に対応する記録情報を保存することができる。
【００８１】
（登録動作）
まず、サーバ装置７００は、予め設定された検証鍵（ｖｋｅｙ［Ｓ］）７２１、および公開鍵（ｐｋｅｙ［Ｓ］）７２３を、利用者用鍵交換装置６００に対して送信する。
次いで、利用者用鍵交換装置６００は、検証鍵（ｖｋｅｙ［Ｓ］）７２１、および公開鍵（ｐｋｅｙ［Ｓ］）７２３を受け取った場合に、パスワード入力装置６１０から入力されたパスワード（ｐｗｄ［Ｕ］）を取得する。
ここで、パスワード入力装置６１０は、検証鍵（ｖｋｅｙ［Ｓ］）７２１、および公開鍵（ｐｋｅｙ［Ｓ］）７２３を受け取った場合に、予め設定された表示画面に対してパスワード入力要求を出力表示するものとする。
【００８２】
次に、利用者用鍵交換装置６００内に予め設定された登録処理用の制御部（登録処理用制御部）が、予め設定されたマスター鍵（ｍｋｅｙ［Ｕ］，Ｓ）６２０を予め設定されたハッシュ計算装置（ハッシュ関数）に入力し、この入力に対するハッシュ関数演算処理結果としての秘密鍵ａｋｅｙ［Ｕ，１］を生成する。
【００８３】
次いで、登録処理用制御部は、上記入力されたｐｗｄ［Ｕ］を取得すると共に、このｐｗｄ［Ｕ］をハッシュ関数に入力することにより得られた値と、予め設定されたｍａｓｋ［Ｕ］との排他的論理和である秘匿パスワード（ｍｐｗｄ［Ｕ］）を生成する。これにより、利用者により入力されたパスワードを暗号化することができる。
【００８４】
次に、登録処理用制御部は、マスター鍵（ｍｋｅｙ［Ｕ］）、ｍｐｗｄ［Ｕ］、および識別子Ｓをハッシュ関数に入力して、その出力としての秘密鍵ａｋｅｙ［Ｕ，２］を生成する。
【００８５】
ここで、利用者用鍵交換装置６００の登録処理用演算部は、秘密鍵ａｋｅｙ［Ｕ，１］と、メッセージとしての検証鍵（ｖｋｅｙ［Ｓ］）７２１および公開鍵（ｐｋｅｙ［Ｓ］）７２３を認証子生成装置に入力し、その出力として認証子ｍａｃ［Ｓ、Ｕ］を生成する。
【００８６】
次いで、登録処理用制御部は、生成した異なる二つの秘密鍵、および認証子（ａｋｅｙ［Ｕ，１］、ａｋｅｙ［Ｕ，２］、ｍａｃ［Ｓ、Ｕ］）を、サーバ装置に送信する。
【００８７】
サーバ用鍵交換装置７００内に予め設定された登録処理用制御部は、二つの秘密鍵と認証子（ａｋｅｙ［Ｕ，１］、ａｋｅｙ［Ｕ，２］、ｍａｃ［Ｓ，Ｕ］）を受け取り、秘密鍵ａｋｅｙ［Ｕ，１］とメッセージとしての検証鍵（ｖｋｅｙ［Ｓ］）７２１および公開鍵（ｐｋｅｙ［Ｓ］）７２３を、予め設定された認証子生成装置７０４に入力し、その出力である認証子ｍａｃ［Ｓ、Ｕ］’を得る。
【００８８】
登録処理用制御部は、生成された認証子ｍａｃ［Ｓ，Ｕ］’と送り込まれたｍａｃ［Ｓ，Ｕ］とが等しいか否かの判定を行う（認証子判定手段）。ここで、生成された認証子と送り込まれた認証子とが等しい（つまり、同一であることが）確認された場合に、登録処理用制御部は、（Ｕ，秘密鍵ａｋｅｙ［Ｕ，１］，［Ｕ，２］，ｍａｃ［Ｓ、Ｕ］，ｉ）を、利用者Ｕの記録として利用者リスト７２４に保存する。尚、ｉはパスワード誤り回数を示し、初期値としては０が設定されているものとする。
【００８９】
（鍵交換）
次に、本実施形態１における鍵交換の動作について、図７、８のフローチャートに基づき説明する。
まず、利用者用鍵交換装置６００の動作（ステップＡ１〜Ａ４）について、図７のフローチャートに基づき説明する。
【００９０】
利用者用鍵交換装置６００に鍵交換の開始要求を示す鍵交換開始命令と鍵交換の相手の識別子（相手識別子：ここではＳとする）６０２が、鍵交換開始命令部を介して入力される（ステップＡ１）。
このとき、第一メッセージ生成部６０３が、暫定数ｙ（ｙ∈Ｚ／ｑＺとする）を生成する（暫定数生成）。尚、暫定数ｙは、ランダムに生成される数字であるものとする。また、ｑを素数、Ｇを位数ｑの乗法的巡回群、ｇをＧの生成元であるものとする。
【００９１】
次いで、第一メッセージ生成部６０３は、この暫定数ｙに基づき、ｗ（ｗ=ｇｙとする）を生成する（第一メッセージ生成：ステップＡ２）と共に、状態保存部６０４に（S、w、y）を状態情報として保存する（ステップＡ３）。
次に、第一メッセージ送信部６０５が、第一メッセージとしての（Ｕ，S、w）をサーバ用鍵交換装置７００に送信する（ステップＡ４）。
【００９２】
次に、サーバ用鍵交換装置７００の動作について、図８のフローチャート（ステップＢ１〜Ｂ６）に基づき説明する。
【００９３】
サーバ用鍵交換装置７００の制限回数確認部７０１は、利用者用鍵交換装置６００から送り込まれた第一メッセージ（Ｕ，Ｓ，ｗ）を受け取る（ステップＢ１）。
ここで、制限回数確認部７０１は、記録情報（Ｕ，ａｋｅｙ［Ｕ，１］、ａｋｅｙ［Ｕ，２］、ｉ）を利用者リスト７２４から抽出すると共に、鍵交換試行の試行誤り回数が予め設定された制限回数を超えていないか否かを判定する（制限回数確認：ステップＢ２）。
具体的には、制限回数確認部７０１は、記録情報に含まれたiの値が制限回数より大きいか否かを判定し、ｉの値が制限回数より大きい場合は処理を中止する。
【００９４】
ここで、ｉの値が制限回数を下回る場合、鍵生成部７０２が、暫定数x（ここでは、ｘ∈Ｚ／ｑＺとする）を生成する。尚、この暫定数ｘはランダム数であるものとする。
【００９５】
また、鍵生成部７０２は、ランダム数ｘに基づいて、v（ここでは、ｖ=ｇｘとする）およびz（ここでは、ｚ=ｗｘとする）を生成すると共に、生成したｖ，ｘを含む（Ｓ，Ｕ，ｖ，ｗ，ｚ，０）をハッシュ関数に入力して、その出力としての鍵（ｋｅｙ）を生成する（鍵生成）。
【００９６】
次いで、セッション番号生成部７０３が、上記生成したｖを含む（ｖ，ｗ）をハッシュ関数に入力して、その出力であるセッション番号（ｓｉｄ）を生成する（セッション番号生成：ステップＢ３）。
【００９７】
次いで、認証子生成部７０４は、予め設定された署名鍵（ｓｋｅｙ［Ｓ］）７２０とメッセージとしての（Ｓ，Ｕ，ｖ，ｗ）を署名装置に入力し、その出力である署名ｓｉｇ［Ｍ］を生成する。ここで、状態保存７０５は、（Ｕ，ｓｉｄ，ｋｅｙ）を状態情報として保存する（状態保存：ステップＢ５）。
【００９８】
次に、第二メッセージ送信部７０６が、上記生成された署名ｓｉｇ［Ｍ］を含む第二メッセージ（Ｓ，Ｕ，ｖ，ｗ，ｖｋｅｙ［Ｓ］，ｐｋｅｙ［Ｓ］，ｍａｃ［Ｓ，Ｕ］，ｓｉｇ［Ｍ］）を、利用者用鍵交換装置６００に送信する（ステップＢ６）。
尚、上記第二メッセージに含まれるｖｋｅｙ［Ｓ］、ｐｋｅｙ［Ｓ］、ｍａｃ［Ｓ，Ｕ］、およびｓｉｇ［Ｍ］は、それぞれ、検証鍵、公開鍵、認証子、および署名を示す。
【００９９】
これにより、サーバ用鍵交換装置７００は、利用者用鍵交換装置６００による第二メッセージに基づく認証判定を受けることとなる。
以下、利用者用鍵交換装置６００における動作処理について、図７のフローチャート（ステップＡ５〜Ａ１８）に基づき説明する。
【０１００】
利用者用鍵交換装置６００は、サーバ用鍵交換装置７００から送り込まれた第二メッセージ（Ｓ，Ｕ，ｖ，ｗ，ｖｋｅｙ［Ｓ］，ｐｋｅｙ［Ｓ］，ｍａｃ［Ｓ，Ｕ］，ｓｉｇ［Ｍ］）を受け取る（ステップＡ５）。
ここで、対応状態確認部６０６は、（Ｓ，Ｕ，ｖ，ｗ）を含むメッセージを受信した場合に、状態情報（Ｓ，ｗ，ｙ）が状態保存部６０４に予め保存されているか否かを調べ、その判定を行う（対応状態確認：ステップＡ６）。
ここで、状態保存部６０４に状態情報（Ｓ，ｗ，ｙ）が予め保存されていない場合は、鍵交換セッションを切断し、鍵交換にかかる処理を中止する。
【０１０１】
状態情報（Ｓ，ｗ，ｙ）が状態保存部６０４に予め保存されていることが確認された場合に、セッション番号生成部６０８は、（ｖ，ｗ）をハッシュ関数に入力して、その出力としてのセッション番号（ｓｉｄ）を生成する（ステップＡ７）。
【０１０２】
次いで、検証鍵検証部６０９が、サーバ用鍵交換装置７００から送り込まれた検証鍵（ｖｋｅｙ［Ｓ］）、署名（ｓｉｇ［Ｍ］）、およびメッセージとしての（Ｓ，Ｕ，ｖ，ｗ）を署名検証装置に入力し、例えば、検証鍵（ｖｋｅｙ［Ｓ］）、およびメッセージ（Ｓ，Ｕ，ｖ，ｗ）に基づき署名ｓｉｇが生成可能であるか否かを判定することにより、署名ｓｉｇの正当であるか否かを判定する（検証鍵検証：ステップＡ８）。
【０１０３】
ここで、（Ｓ，Ｕ，ｖ，ｗ）、検証鍵の正当性が確認された場合に、認証子検証部６０７が、予め設定されたマスター鍵と相手識別子（ｍｋｅｙ［Ｕ］，Ｓ）をハッシュ関数に入力し、その出力として秘密鍵（ａｋｅｙ［Ｕ，１］）を生成する。
また、認証子検証部６０７は、生成した秘密鍵（ａｋｅｙ［Ｕ，１］）と、メッセージとしての検証鍵および公開鍵（ｖｋｅｙ［Ｓ］，ｐｋｅｙ［Ｓ］）とを認証子生成装置に入力し、その出力としての認証子（ｍａｃ［Ｓ，Ｕ］’）を生成する。
ここで、認証子検証部６０７は、生成した認証子（ｍａｃ［Ｓ，Ｕ］’）と第二メッセージの一部として送り込まれたｍａｃ［Ｓ，Ｕ］とが等しいか否かの判定を行う（認証子検証：ステップＡ９）。
【０１０４】
ここで、生成された認証子（ｍａｃ［Ｓ，Ｕ］’）と送り込まれたｍａｃ［Ｓ，Ｕ］が等しい（つまり、ｍａｃ［Ｓ，Ｕ］’＝ｍａｃ［Ｓ，Ｕ］）ことが確認された場合、パスワード入力部６１０が、ユーザ対してパスワードの入力を求め、これに対して入力されたパスワード（ｐｗｄ）を取得する（パスワード入力：ステップＡ１０）。
【０１０５】
次いで、無パスワード認証子生成部６１１が、秘密鍵ａｋｅｙ［Ｕ，１］とメッセージとしての（Ｕ，Ｓ，ｓｉｄ）を認証子生成装置に入力することにより、その出力である無パスワード認証子（ｍａｃ［Ｋ，１］）を生成する（ステップＡ１１）。
【０１０６】
また、パスワード認証子生成部６１２が、マスター鍵（ｍｋｅｙ（Ｕ））をハッシュ関数に入力して得られた値と、予め設定されたｍａｓｋ［Ｕ］との排他的論理和であるｍｐｗｄ［Ｕ］を算出する。
次いで、パスワード認証子生成部６１２は、マスター鍵、暗号パスワード、および相手識別子（ｍｋｅｙ，ｍｐｗｄ，Ｓ）をハッシュ関数に入力し、その出力としての秘密鍵（ａｋｅｙ（Ｕ，２））を生成する。
ここで、パスワード認証子生成部６１２は、生成した秘密鍵（ａｋｅｙ（Ｕ，２））とメッセージとしての（Ｕ，Ｓ，ｓｉｄ）を認証子生成装置に入力して、その出力としての認証子（ｍａｃ［Ｋ，２］）を生成する（ステップＡ１２）。
【０１０７】
次いで、パスワード認証子隠蔽部６１３が、予め設定されたｓｅｅｄ［Ｕ］をハッシュ関数に入力することにより、出力値ｒを得ると共に、この値ｒ用いて値ｍ（ｍ＝ｇｒとする）を算出する。
ここで、パスワード認証子隠蔽部６１３は、ｔｒをハッシュ関数に入力して得られた値とｍａｃ［Ｋ，２］との排他的論理和である暗号署名（ｐｓｉｇ［Ｋ，２］）を生成する（パスワード認証子隠蔽：ステップＡ１３）。
【０１０８】
次に、乱数元更新部６１４が、ｓｅｅｄ［Ｕ］をハッシュ関数に入力して、その出力をｓｅｅｄ［Ｕ］’として取得し、ｓｅｅｄ［Ｕ］をｓｅｅｄ［Ｕ］’に置き換える乱数元更新処理を行う（ステップＡ１４）。
次いで、鍵生成部６１５が、値ｚ（ｚ＝ｖｙとする）を算出すると共に、この値ｚを含む（Ｓ、Ｕ，ｖ、ｗ、ｚ）をハッシュ関数に入力して、その出力である鍵（ｋｅｙ）を生成する（ステップＡ１５）。
【０１０９】
次に、状態消去部６１６が、保存された状態情報（Ｓ、ｗ、ｙ）を消去し（状態消去：ステップＡ１６）、第三メッセージ送付部６１７が、（Ｕ，Ｓ、ｓｉｄ、ｍ、ｍａｃ［Ｋ，１］、ｐｓｉｇ［Ｋ、２］）からなる第三メッセージを設定しサーバ用鍵交換装置７００に送信する（第三メッセージ送付：ステップＡ１７）。
ここで、鍵出力部６１８が、（Ｕ，Ｓ、ｓｉｄ、ｋｅｙ）を含む交換鍵６２５を出力する（ステップＡ１８）。
【０１１０】
次に、サーバ用鍵交換装置７００における動作処理について、図８のステップＢ７〜Ｂ１４に基づき説明する。
【０１１１】
サーバ用鍵交換装置７００は、利用者用鍵交換装置６００から送り込まれた第三メッセージである（Ｕ，Ｓ，ｓｉｄ，ｍ，ｍａｃ［Ｋ，１］、pｓｉｇ［Ｋ，２］）を受信した場合（ステップＢ７）、対応状態確認部７０７は、このメッセージ内容に対応する状態情報（Ｕ，ｓｉｄ，ｋｅｙ，ｔｋｅｙ）が保存されているか否かを調べる（対応状態確認：ステップＢ８）。
また、対応状態確認部７０７は、利用者リスト７２４内に記録された、上記状態情報に対応する記録情報（Ｕ，ａｋｅｙ［Ｕ，１］，ａｋｅｙ［Ｕ，２］，ｉ）を検索する。
ここで、利用者リスト７２４に、対応する記録情報（Ｕ，ａｋｅｙ［Ｕ，１］，ａｋｅｙ［Ｕ，２］，ｉ）が予め保存されていない場合は、鍵交換処理のセッションを切断し、鍵交換処理を中止するものとする。
【０１１２】
上記対応する記録情報が見つかった場合、無パスワード認証子検証部７０８が、記録情報（Ｕ，ａｋｅｙ［Ｕ，１］、ａｋｅｙ［Ｕ，２］、i）を利用者リスト７２４から抽出し、秘密鍵（ａｋｅｙ［Ｕ，１］）、およびメッセージとしての（Ｕ，Ｓ，ｓｉｄ）を、認証子生成装置（認証子生成部７０４）に入力し、その出力である無パスワード認証子（ｍａｃ［Ｋ，１］’）を生成する。
【０１１３】
次いで、無パスワード認証子検証部７０８は、生成したｍａｃ［Ｋ，１］’と第三メッセージの一部として送り込まれたｍａｃ［Ｋ，１］とが等しいか否かの判定を行う（認証子検証：ステップＢ９）。
【０１１４】
ここで、生成した認証子（ｍａｃ［Ｋ，１］’）と送り込まれたｍａｃ［Ｋ，１］が等しい（ｍａｃ［Ｋ，１］’＝ｍａｃ［Ｋ，１］）ことが確認された場合に、パスワード認証子復元部７０９は、予め設定された復元鍵（ｍｓ）をハッシュ関数に入力して得られた値と、第三メッセージに含まれたｐｓｉｇ［Ｋ，２］との排他的論理和である、平文としてのパスワード認証子（ｍａｃ［Ｋ，２］）を復元生成する（復元鍵を用いたパスワード認証子復元：ステップＢ１０）。
【０１１５】
次に、パスワード認証子検証部７１０が、ａｋｅｙ［Ｕ，２］とメッセージとしての（Ｕ，Ｓ，ｓｉｄ）を認証子生成装置（認証子生成部７０４）に入力することにより、その出力であるパスワード認証子（ｍａｃ［Ｋ，２］’）を生成し、このパスワード認証子（ｍａｃ［Ｋ，２］’）と、上記復元生成したパスワード認証子（ｍａｃ［Ｋ，２］）とが等しいか否かの判定、つまり、ｍａｃ［Ｋ，２］’＝ｍａｃ［Ｋ，２］の等号が成り立つか否かの判定を行う（パスワード認証検証：ステップＢ１１）。
【０１１６】
ここで、上記等号（ｍａｃ［Ｋ，２］’＝ｍａｃ［Ｋ，２］）が成り立たないと判定された場合、不正接続回数加算部７１１が、記録（Ｕ，ａｋｅｙ［Ｕ，１］、ａｋｅｙ［Ｕ，２］、ｉ）におけるｉをｉ＋１に変更する処理を行い（ステップＢ１２）、鍵交換にかかる処理を中止する。
【０１１７】
一方、パスワード認証子（ｍａｃ［Ｋ，２］’）と、上記復元生成されたパスワード認証子（ｍａｃ［Ｋ，２］）とが等しい（ｍａｃ［Ｋ，２］’＝ｍａｃ［Ｋ，２］）と判定された場合は、鍵出力部７１２が、交換鍵（Ｕ，Ｓ，ｓｉｄ，ｋｅｙ）７２５を出力する（ステップＢ１３）。尚、交換鍵６２５および７２５は、共通の交換鍵であるものとする。
ここで、状態消去部７１３が、状態情報（Ｕ，ｓｉｄ，ｋｅｙ，ｔｋｅｙ）を消去する処理を行う（ステップＢ１４）。
これにより、利用者用鍵交換装置６００およびサーバ用鍵交換装置７００間における鍵交換が成立する。
【０１１８】
以上のように、本実施形態１では、利用者装置がサーバ装置と鍵交換を行うためには、正当なパスワード認証子（ｍａｃ［Ｋ，２］）を示す必要があり、また、これを生成するにはパスワード由来の秘密鍵（ａｋｅｙ［Ｕ，2］）、およびパスワードが必要となるため、利用者装置およびサーバ装置間では、パスワードおよび認証子を利用したセキュリティの高い状態で鍵交換を実行することができる。
【０１１９】
更に、本実施形態においては、秘密鍵（ａｋｅｙ［Ｕ，2］）はサーバ装置側にも保存されているが、秘密鍵（ａｋｅｙ［Ｕ，2］）は、利用者装置内に予め設定されたマスター鍵と利用者により入力されたパスワードとから生成されているため、サーバ装置側で秘密鍵（ａｋｅｙ［Ｕ，2］）からパスワードを復元することはできず、これにより、サーバ装置側におけるパスワードの漏洩やパスワードを利用した不正な鍵交換の実行を有効に抑制することができる。
【０１２０】
また、本実施形態では、利用者がサーバと鍵交換を行うためには、正当な認証子（ｍａｃ［Ｋ，１］）を示す必要もあるが、これには、予め秘密鍵（ａｋｅｙ［Ｕ，１］）を保持している必要があり、このｍａｃ［Ｋ，１］が正しく示されたことを確認された後に、ｍａｃ［Ｋ，２］（あるいはｓｉｇ[K，２］）の正当性が確認される。このため、例えマスター鍵（ｍｋｅｙ［Ｕ］）が悪意の利用者（攻撃者）により取得された場合でも、パスワードの正当性をサーバ装置に対して確認することはできないため、不正な鍵交換が実行されるのを有効に抑制することができる。
【０１２１】
また、本実施形態のサーバ装置７００では、例えば、攻撃者が、鍵交換の要求試みにかかるパスワード入力誤り回数が記録され、一定の数を越えると接続が拒否される構成を有すると共に、攻撃者は、マスター鍵（ｍｋｅｙ［Ｕ］）を知らなければ、このような攻撃を試みて、サーバ装置における接続拒否が発生するよう仕向けることはできないため、正当な利用者によるサーバ装置の利用や鍵交換を阻害することなく、攻撃者に対するセキュリティを高めることができる。
【０１２２】
［実施形態２］
次に、本発明の実施形態２について、その基本的構成内容を説明する。
【０１２３】
本実施形態２である鍵交換システムは、図６に示すように、利用者用鍵交換装置８００およびサーバ用鍵交換装置９００が接続され相互にメッセージの送受信を行うことにより、共通の交換鍵の生成、出力を行う。
【０１２４】
尚、利用者用鍵交換装置８００およびサーバ用鍵交換装置９００はそれぞれ、予め設定されたプログラムに基づく実行処理を行う演算装置を備えたコンピュータであって、当該演算装置による実行処理により以下に示す機能動作を実現する。
また、利用者用鍵交換装置８００およびサーバ用鍵交換装置９００は、上記鍵交換装置（図４）と同様に、予め設定された鍵情報に基づきデータ（平文など）の暗号化処理を行う暗号化装置と、暗号化されたデータの復号化処理を行う復号化装置と、予め設定された秘密鍵およびランダム数に基づきメッセージ情報の認証子を生成する認証子生成装置と、ランダム数に基づく計算を行うハッシュ計算装置を有する。
【０１２５】
認証子生成装置は、秘密鍵およびメッセージが入力されると、この秘密鍵およびメッセージに基づく認証子を生成し出力する。
ここで、上記暗号化装置は、例えば鍵および平文が入力された場合に、入力された鍵を用いて同じく入力された平文を暗号化して、暗号文を生成（出力）する。
【０１２６】
また、上記復号化装置は、例えば鍵および暗号文が入力された場合に、入力された鍵を用いて暗号文を復号化した平文を生成（出力）する。
ハッシュ計算装置は、自己識別子、相手識別子、平文、乱数などの予め設定された入力情報に対して、予め設定されたプログラム（ハッシュ関数）に基づく処理を行うことにより出力情報を生成して出力するハッシュ関数処理機能を備えている。
【０１２７】
また、利用者用鍵交換装置８００は、予め設定された検証鍵、署名、およびメッセージが入力された場合に、署名の正当性を判定し、その判定結果を返す署名検証装置を備えた構成を有する。
【０１２８】
一方、サーバ用鍵交換装置９００は、入力された署名鍵およびメッセージに基づき署名を設定し、この署名を出力する署名装置を有する。
【０１２９】
以下、利用者用鍵交換装置８００の内部構成について、図６に基づいて説明する。
利用者用鍵交換装置（以下「利用者装置」という）８００には、当該利用者装置８００に対して、鍵交換の開始要求を示す鍵交換開始命令と鍵交換の相手の識別子（相手識別子）８０２の入力を行う鍵交換開始命令部８０１が併設されている。
【０１３０】
また、利用者装置８００は、鍵交換開始命令部８０１からの入力に応じてランダム数の生成を行う第一メッセージ生成部８０３と、外部から入力された情報および第一メッセージ生成部８０３により生成された乱数（ランダム数）などの情報からなる状態情報を保持する状態保存部８０４と、第一メッセージ生成部８０３により設定された第一メッセージをサーバ用鍵交換装置９００に対して送付する第一メッセージ送信部８０５を有する。
【０１３１】
また、利用者装置８００は、サーバ用鍵交換装置（以下「サーバ装置」という）９００から送り込まれた第二メッセージを受信すると共にこのメッセージ内に含まれる状態情報が状態保存部８０４に予め保存されているか否かの判定を行う対応状態確認部８０６と、状態情報が状態保存部８０４に予め保存されていることが確認された場合に、メッセージに含まれる特定の情報に基づきハッシュ計算装置（以下「ハッシュ関数」という）を利用することにより、セッション番号（ｓｉｄ）を生成するセッション番号生成部８０８を備えている。
【０１３２】
更に、利用者装置８００は、第二メッセージ内に含まれた状態情報が状態保存部８０４に予め保存されていることが確認された場合に、生成した秘密鍵とメッセージに基づき認証子生成装置を利用して認証子を生成すると共にメッセージとして送り込まれた認証子が正当であるか否かの判定を行う認証子検証部８０７と、認証子の正当性が認証された場合に、ユーザから入力されたパスワード（ｐｗｄ）を取得するパスワード入力部８１０を備えている。
尚、認証子検証部８０７は、予め設定されたマスター鍵と相手識別子に基づき、上記ハッシュ関数を利用して秘密鍵を生成する機能を有する。
【０１３３】
また、利用者用鍵交換装置８００は、生成された秘密鍵とメッセージに基づき認証子生成装置を利用することによって、パスワード由来ではない無パスワード認証子の生成を行う無パスワード認証子生成部８１１と、パスワード入力部８１０から入力されたパスワードに基づき生成した秘密鍵（第２の秘密鍵に対応）とメッセージに基づき認証子生成装置を利用してパスワード認証子を生成するパスワード認証子生成部８１２を有する。
【０１３４】
更に、利用者装置８００は、予め設定されたランダム数（S，Ｕ，v，w，z，1）に基づき、ハッシュ関数を利用して対称鍵暗号方式用の一時鍵（ｔｋｅｙ）を生成する鍵生成部８１５を有する。
また、鍵生成部８１５は、生成したz（=ｖｙ）を含むランダム数（Ｓ，Ｕ，ｖ，ｗ，ｚ，０）に基づき、ハッシュ関数を利用することにより、上記一時鍵に対応する対称鍵暗号方式用の鍵（ｋｅｙ）を生成する鍵生成機能を有する。
これにより、本実施形態の利用者装置８００では、生成した鍵および一時鍵を対称鍵暗号方式の鍵として利用して、鍵交換対象である相手装置（ここでは、サーバ装置９００）から送り込まれたメッセージ情報に含まれるデータの暗号化および復号化を行うことができる。
【０１３５】
また、利用者装置８００は、一時鍵（ｔｋｅｙ）と、平文としての認証子（ｍａｃ［Ｋ，２］）とに基づいて、予め設定された暗号化装置を利用してその出力である暗号文としての暗号化認証子（ｐｍａｃ［Ｋ，２］）を生成するパスワード認証子隠蔽部８１３と、鍵生成部８１５で鍵および一時鍵の生成が行われた場合に、予め保存された状態情報を消去する処理を行う状態消去部８１６と、鍵生成部６１５で鍵および一時鍵の生成が行われた場合に、第三メッセージを設定すると共にこのメッセージをサーバ装置９００に送付する第三メッセージ送信部８１７と、生成された交換鍵を予め設定された、例えば、ディスプレイ等の表示部に対して出力する鍵出力部８１８を備えた構成を有する。
【０１３６】
次に、サーバ用鍵交換装置（サーバ装置）９００の内部構成について、図６に基づいて説明する。
サーバ用鍵交換装置９００は、利用者装置８００から送り込まれた第一メッセージを受信すると共に、当該メッセージの内容に基づく記録情報を利用者リスト９２４から抽出し、メッセージ送信元による鍵交換試行の試行誤り回数が予め設定された制限回数を超えていないか否かの判定を行う制限回数確認部９０１と、メッセージ送信元による鍵交換試行の試行誤り回数が制限回数を下回る場合に、メッセージ内容に基づくランダム数の生成を行い生成したランダム数を含む（Ｓ，Ｕ，ｖ，ｗ，ｚ，０）に基づきハッシュ関数を利用して鍵（ｋｅｙ）を生成する鍵生成部９０２と、メッセージ内容に基づくランダム数の生成を行い生成したランダム数を含む（Ｓ，Ｕ，ｖ，ｗ，ｚ，０）に基づきハッシュ関数を利用して一時鍵（ｔｋｅｙ）を生成する一時鍵生成部９１４を有する。
【０１３７】
また、サーバ用鍵交換装置９００は、鍵生成部９０２で鍵（ｋｅｙ）が生成された場合に、予め設定されたランダム数に基づきハッシュ関数を利用して鍵交換用のセッション番号（ｓｉｄ）を生成するセッション番号生成部９０３と、予め設定された秘密鍵とメッセージに基づき認証子生成装置を利用して認証子（ｍａｃ［Ｍ，２］）を生成する認証子生成部９０４と、上記生成された鍵および一時鍵を含む状態情報を保持する状態保存部９０５と、上記生成された認証子（ｍａｃ［Ｍ，２］）を含む第二メッセージを設定すると共に、当該メッセージを利用者用鍵交換装置８００に送信する第二メッセージ送信部９０６を備えている。
【０１３８】
更に、サーバ装置９００は、利用者装置８００から第三メッセージを受信した場合にこのメッセージ内容に対応する状態情報が予め保存されているか否かを判定する対応状態確認部９０７を有する。
また、この対応状態確認部９０７は、利用者リスト９２４内に記録された、上記状態情報に対応する記録情報（Ｕ，ａｋｅｙ［Ｕ，１］，ａｋｅｙ［Ｕ，２］，ｉ）を検索する。
【０１３９】
また、サーバ用鍵交換装置９００は、秘密鍵（ａｋｅｙ［Ｕ，１］）および第三メッセージの内容に基づき、予め設定された認証子生成装置を利用することによって、パスワード由来ではない無パスワード認証子を生成し、生成した無パスワード認証子と第三メッセージの一部として送り込まれた認証子ｍａｃ［Ｋ，１］とが等しいか否かの判定を行う無パスワード認証子検証部９０８と、生成された一時鍵（ｔｋｅｙ）と暗号文としての暗号化認証子（ｐｍａｃ［Ｋ，２］）に基づき復号化装置を利用して平文としてのパスワード認証子（ｍａｃ［Ｋ，２］）を復元生成するパスワード認証子復元部９０９を備えている。
【０１４０】
更に、サーバ用鍵交換装置９００は、秘密鍵とメッセージに基づき認証子生成装置を利用してパスワード認証子（ｍａｃ［Ｋ，２］’）を生成し、このパスワード認証子（ｍａｃ［Ｋ，２］’）と、上記復元生成したパスワード認証子（ｍａｃ［Ｋ，２］）とが等しいか否かの判定を行うパスワード認証子検証部９１０と、パスワード認証子と復元生成されたパスワード認証子とが等しいと判定された場合に、予め生成された交換鍵９２５を出力表示する鍵出力部９１２と、公開鍵が出力される場合に、鍵および一時鍵を含む、予め保存された状態情報を消去する処理を行う状態消去部９１３を備えている。
【０１４１】
［実施形態２の変形例］
本実施形態２では、利用者用鍵交換装置８００に一時的に接続したＩＣカードの様な可搬装置８３０を備え（図６）、この可搬装置８３０内に、例えば、上記認証子検証８０７、無パスワード認証子生成８１１、パスワード認証子生成８１２、パスワード認証子隠蔽８１３、鍵生成８１５、およびパスワード入力部８１０を設定すると共に、可搬装置８３０内に予め設けた記憶領域にマスター鍵８２０が記憶保持された構成であってもよい。
【０１４２】
本実施形態においては、利用者装置８００がサーバ装置９００との間で鍵交換を行うためには、正当な認証子（パスワード認証子）を示す必要があり、この認証子を生成するためには、秘密鍵およびこの秘密鍵を生成するためのパスワードが必要となるため、上記変形例に示した構成とすることにより、本体側に設定された状態保存部８０４に記憶された秘密鍵と、ＩＣカード側に記憶された照合目的のパスワードとを分離して管理することが可能となり、秘密鍵およびパスワードの漏洩に対するセキュリティをより高めることが可能となる。
【０１４３】
［実施形態２の動作説明］
次に、本実施形態２の動作について、その概略を説明する。
利用者装置８００は、予め設定されたマスター鍵に基づき第1の秘密鍵を生成すると共に、外部から入力されたパスワードに基づき第２の秘密鍵を生成し、前記第１および第２の秘密鍵を前記サーバ装置に送信する。
【０１４４】
次いで、サーバ装置９００が、前記第１および第２の秘密鍵を登録し、前記ユーザ装置から鍵交換の要求がメッセージ情報として送り込まれた場合に、前記第１の秘密鍵に基づき前記第１の認証子の生成を行い、前記第１の認証子に基づき前記メッセージ情報の認証判定を行い、前記第1の認証子に基づく認証判定で認証がなされた場合に、前記第２の秘密鍵に基づき前記第２の認証子の生成を行うと共に当該第２の認証子に基づき前記メッセージ情報の認証判定を行い、前記第２の認証子に基づく認証判定で認証がなされた場合に前記メッセージ情報に基づき交換鍵を生成し、利用者装置８００に対してメッセージ情報の送信を行う。
【０１４５】
次に、利用者装置８００は、サーバ装置９００からメッセージ情報が送り込まれた場合に、生成した第１の秘密鍵に基づき前記第１の認証子の生成を行うと共に、当該第１の認証子に基づき前記メッセージ情報の認証判定を行い、前記第1の認証子に基づく認証判定で認証がなされた場合に、前記生成した第２の秘密鍵に基づき前記第２の認証子の生成を行うと共に当該第２の認証子に基づき前記メッセージ情報の認証判定を行い、前記第２の認証子に基づく認証判定で認証がなされた場合に前記メッセージ情報に基づき前記サーバ装置で生成された交換鍵と共通の交換鍵を生成する。
【０１４６】
次に、本実施形態２にかかる鍵交換システムの動作について説明する。
【０１４７】
（初期設定）
利用者鍵交換装置８００には、図６に示すように、予めランダムに設定されたマスター鍵（ｍｋｅｙ［Ｕ］）８２０が予め設定された記憶領域に記憶されているものとする。
また、サーバ用鍵交換装置９００には、鍵交換相手として登録された利用者をリスト化した利用者リスト９２４が、予め設定された記憶領域に記憶されているものとする。
尚、上記利用者リスト９２４は、初期設定としては利用者が１件も登録されていない空状態であるものとする。
【０１４８】
次に、本実施形態２における鍵交換相手の登録にかかる動作について説明する。
ここで、利用者用鍵交換装置８００は、サーバ用鍵交換装置７００に対して鍵交換対象装置としての登録を行う。利用者用鍵交換装置８００は、ネットワークを介して複数の異なるサーバ用鍵交換装置に対して鍵交換対象装置としての登録行うことができるものとする。
【０１４９】
これにより、利用者鍵交換装置は、複数の異なるサーバ用鍵交換装置９００と鍵交換を行うことが可能となるものとする。
尚、サーバ用鍵交換装置（サーバ装置）９００は、異なる利用者用鍵交換装置（利用者装置）を、各利用者装置に予め設定された識別子（利用者装置識別子）により判別するものとする。これにより、サーバ用鍵交換装置９００は、複数の異なる利用者用鍵交換装置からの登録を受けつけることができる。また、これにより、サーバ用鍵交換装置９００は、複数の異なる利用者用鍵交換装置との鍵交換を行うことが可能となる。
【０１５０】
また、サーバ用鍵交換装置（サーバ装置）９００は、利用者装置の異なる利用者それぞれに割り当てられた識別子（利用者識別子）によっても判別可能であるものとする。
これにより、サーバ用鍵交換装置９００は、利用者リストに利用者毎に対応する記録情報を保存することができる。
【０１５１】
（登録動作）
まず、利用者用鍵交換装置８００のパスワード入力部８１０が、利用者から入力されたパスワード（ｐｗｄ）を取得する。
次いで、鍵生成部８１５が、予め記憶されたマスター鍵および相手識別子（ｍｋｅｙ［Ｕ］，Ｓ）をハッシュ関数に入力することにより、その出力としての秘密鍵ａｋｅｙ［Ｕ，１］を生成する。
【０１５２】
また、鍵生成部８１５は、マスター鍵、パスワード、相手識別子（ｍｋｅｙ［Ｕ］，ｐｗｄ，Ｓ）をハッシュ関数に入力し、その出力としての秘密鍵（ａｋｅｙ［Ｕ，2］）を生成する。
次いで、第一メッセージ送信部８０５が、上記生成された二つの異なる秘密鍵（ａｋｅｙ［Ｕ，１］、ａｋｅｙ［Ｕ，２］）を、サーバ用鍵交換装置９００に送信する。
【０１５３】
サーバ用鍵交換装置９００は、二つの秘密鍵（ａｋｅｙ［Ｕ，１］、ａｋｅｙ［Ｕ，2］）を受け取ると共に、予め設定された登録用制御部が、この秘密鍵に基づき設定した利用者Ｕの記録情報（Ｕ，ａｋｅｙ［Ｕ，１］、ａｋｅｙ［Ｕ，２］、ｉ）を利用者リスト９２４に格納する。
尚、記録情報におけるｉの値はパスワード誤り回数を示し、初期値は０に設定されているものとする。
【０１５４】
（鍵交換）
次に、本実施形態２における鍵交換の動作について、図９、１０のフローチャートに基づき説明する。
まず、利用者用鍵交換装置６００の動作（ステップＣ１〜Ｃ４）について、図９のフローチャートに基づき説明する。
【０１５５】
まず、利用者用鍵交換装置８００には、鍵交換の開始要求を示す鍵交換開始命令８０１と鍵交換の相手の識別子（相手識別子：ここではＳとする）８０２が入力される（ステップＣ１）。
このとき、第一メッセージ生成部８０３が、暫定数ｙ（ｙ∈Ｚ／ｑＺとする）を生成する（暫定数生成）。尚、暫定数ｙは、ランダムに生成される数字であるものとする。
【０１５６】
次いで、第一メッセージ生成部８０３は、この暫定数ｙに基づき、ｗ（ｗ=ｇｙとする）を生成する（第一メッセージ生成：ステップＣ２）と共に、状態保存部８０４に（S、w、ｙ）を状態情報として保存する（ステップＣ３）。
次に、第一メッセージ送信部８０５が、第一メッセージとしての（Ｕ，S、w）をサーバ用鍵交換装置９００に送信する（ステップＣ４）。
【０１５７】
次に、サーバ用鍵交換装置９００の動作について、図１０のフローチャート（ステップＤ１〜Ｄ８）に基づき説明する。
【０１５８】
サーバ用鍵交換装置９００の制限回数確認部９０１は、利用者用鍵交換装置８００から送り込まれた第一メッセージ（Ｕ，Ｓ，ｗ）を受け取る（ステップＤ１）。
ここで、制限回数確認部９０１は、記録情報（Ｕ，ａｋｅｙ［Ｕ，１］、ａｋｅｙ［Ｕ，２］、ｉ）を利用者リスト９２４から抽出すると共に、鍵交換試行の試行誤り回数が予め設定された制限回数を超えていないか否かを判定する（制限回数確認：ステップＤ２）。
具体的には、制限回数確認部９０１は、記録情報に含まれたiの値が制限回数より大きいか否かを判定し、ｉの値が制限回数より大きい場合は処理を中止する。
【０１５９】
ここで、ｉの値が制限回数を下回る場合、鍵生成部９０２が、暫定数x（ここでは、ｘ∈Ｚ／ｑＺとする）を生成する。尚、この暫定数ｘはランダム数であるものとする。
【０１６０】
また、鍵生成部９０２は、ランダム数ｘに基づいて、v（ここでは、ｖ=ｇｘとする）およびz（ここでは、ｚ=ｗｘとする）を生成すると共に、生成したｖ，ｘを含む（Ｓ，Ｕ，ｖ，ｗ，ｚ，０）をハッシュ関数に入力して、その出力としての鍵（ｋｅｙ）を生成する（ステップＤ３）。
【０１６１】
尚、鍵生成部９０２および一時鍵生成部９１４によってハッシュ関数に入力された値（パラメター）０および１は、それぞれｋｅｙおよびｔｋｅｙに対応するものとする。
【０１６２】
また、このとき、一時鍵生成部９１４が、（Ｓ，Ｕ，ｖ，ｗ，ｚ，１）を、ハッシュ関数に入力して、その出力である一時鍵（ｔｋｅｙ）を生成する（ステップＤ４）。
このとき、セッション番号生成部９０３が、（ｖ，ｗ）をハッシュ関数に入力して、その出力をセッション番号（ｓｉｄ）を生成する（セッション番号生成：ステップＤ５）。
【０１６３】
次いで、認証子生成部９０４は、秘密鍵（ａｋｅｙ［Ｕ，１］）とメッセージとしての（Ｓ，Ｕ，ｖ，ｗ）を、認証子生成装置に入力し、その出力である認証子ｍａｃ［Ｍ，２］を生成する（ステップＤ６）。ここで、状態保存９０５は、（Ｕ，ｓｉｄ，ｋｅｙ，ｔｋｅｙ）を状態情報として保存する（状態保存：ステップＤ７）。
次に、第二メッセージ送信部９０６が、上記生成された認証子ｍａｃ［Ｍ，２］を含む（Ｓ，Ｕ，ｖ，ｗ，ｍａｃ［Ｍ，２］）を、利用者用鍵交換装置８００に送信する（ステップＤ８）。
【０１６４】
これにより、サーバ用鍵交換装置９００は、利用者用鍵交換装置８００によるｍａｃ［Ｍ，２］を含む第二メッセージに基づく認証判定を受けることとなる。
以下、利用者用鍵交換装置８００における動作処理について、図９のフローチャート（ステップＣ５〜Ｃ１７）に基づき説明する。
【０１６５】
利用者用鍵交換装置８００は、サーバ用鍵交換装置９００から送り込まれた第二メッセージである（Ｓ，Ｕ，ｖ，ｗ，ｍａｃ［Ｍ，２］）を受け取る（ステップＣ５）。
ここで、対応状態確認部８０６は、（Ｓ，Ｕ，ｖ，ｗ）を含むメッセージを受信した場合に、状態情報（Ｓ，ｗ，ｙ）が状態保存部８０４に予め保存されているか否かを調べ、その判定を行う（対応状態確認：ステップＣ６）。
ここで、状態保存部８０４に状態情報（Ｓ，ｗ，ｙ）が予め保存されていない場合は、鍵交換処理のセッションを中止する。
【０１６６】
状態情報（Ｓ，ｗ，ｙ）が状態保存部８０４に予め保存されていることが確認された場合に、セッション番号生成部８０８は、（ｖ，ｗ）をハッシュ関数に入力して、その出力としてのセッション番号（ｓｉｄ）を生成する（ステップＣ７）。
【０１６７】
次いで、認証子検証部８０７が、予め設定されたマスター鍵と相手識別子（ｍｋｅｙ［Ｕ］，Ｓ）をハッシュ関数に入力し、その出力として秘密鍵（ａｋｅｙ［Ｕ，１］）を生成すると共に、このａｋｅｙ［Ｕ，１］と第二メッセージに含まれた（Ｓ，Ｕ，ｖ，ｗ）を認証子生成装置に入力し、その出力としての認証子（ｍａｃ［Ｍ，２］’）を生成する。
ここで、認証子検証部８０７は、生成した認証子（ｍａｃ［Ｍ，２］’）と第二メッセージの一部として送り込まれたｍａｃ［Ｍ，２］が等しいか否かの判定を行う（認証子検証：ステップＣ８）。
【０１６８】
生成した認証子（ｍａｃ［Ｍ，２］’）と送り込まれたｍａｃ［Ｍ，２］が等しい（ｍａｃ［Ｍ，２］’＝ｍａｃ［Ｍ，２］）ことが確認された場合に、パスワード入力部８１０が、ユーザ対してパスワードの入力を求め、これに対して入力されたパスワード（ｐｗｄ）を取得する（パスワード入力：ステップＣ９）。
【０１６９】
次いで、無パスワード認証子生成部８１２は、秘密鍵ａｋｅｙ［Ｕ，１］とメッセージとしての（Ｕ，Ｓ，ｓｉｄ）を認証子生成装置に入力することにより、その出力である無パスワード認証子（ｍａｃ［Ｋ，１］）を生成する（ステップＣ１０）。
ここで、鍵生成部８１５が、z（=ｖｙ）を生成すると共に、（S，Ｕ，v，w，z，1）をハッシュ関数に入力することにより、その出力としての一時鍵（ｔｋｅｙ）を生成する（ステップＣ１１）。
【０１７０】
次いで、パスワード認証子生成部８１２が、マスター鍵およびパスワード（ｍｋｅｙ［Ｕ］，ｐｗｄ，Ｕ）をハッシュ関数に入力し、その出力としての秘密鍵（ａｋｅｙ［Ｕ，２]）を生成する。
また、パスワード認証子生成部８１２は、秘密鍵（ａｋｅｙ［Ｕ，２]）とメッセージとしての（Ｕ，Ｓ，ｓｉｄ）を取得して認証子生成装置に入力することにより、その出力としてパスワード認証子（ｍａｃ［Ｋ，２］）を生成する（パスワード認証子生成：ステップＣ１２）。
【０１７１】
また、鍵生成部８１５は、上記生成したz（=ｖｙ）を含む（Ｓ，Ｕ，ｖ，ｗ，ｚ，０）をハッシュ関数に入力して、その出力である鍵（ｋｅｙ）を生成する（鍵生成：ステップＣ１３）。
【０１７２】
ここで、パスワード認証子隠蔽部８１３は、一時鍵（ｔｋｅｙ）と、平文としての認証子（ｍａｃ［Ｋ，２］）とを暗号化装置に入力し、その出力である暗号文としての（ｐｍａｃ［Ｋ，２］）を生成する（パスワード認証子隠蔽：ステップＣ１４）。
ここで、状態消去部８１６は、状態情報（Ｓ，ｗ，ｙ）を消去する（状態消去：ステップＣ１５）。
【０１７３】
次いで、第３メッセージ送信部８１７が、上記生成されたｐｍａｃ［Ｋ，２］を含む第三メッセージ（Ｕ，Ｓ，ｓｉｄ，ｍａｃ［Ｋ，１］、ｐｍａｃ［Ｋ，２］）を、サーバ用鍵交換装置９００に送信し（ステップＣ１６）、鍵出力部８１８が、交換鍵（Ｕ，Ｓ，ｓｉｄ，ｋｅｙ）８２５を出力する（ステップＣ１７）。
【０１７４】
以下、サーバ用鍵交換装置９００における動作処理について、図１０のステップＤ９〜Ｄ１６に基づき説明する。
【０１７５】
サーバ用鍵交換装置９００は、利用者用鍵交換装置８００から送り込まれた第三メッセージである（Ｕ，Ｓ，ｓｉｄ，ｍａｃ［Ｋ，１］、ｐｍａｃ［Ｋ，２］）を受信した場合（ステップＤ９）、対応状態確認部９０７は、対応する状態情報（Ｕ，ｓｉｄ，ｋｅｙ，ｔｋｅｙ）が保存されているか否かを調べる（対応状態確認：ステップＤ１０）。
また、対応状態確認部９０７は、利用者リスト９２４内に記録された、上記状態情報に対応する記録情報（Ｕ，ａｋｅｙ［Ｕ，１］，ａｋｅｙ［Ｕ，２］，ｉ）を検索する。
ここで、利用者リスト９２４に、対応する記録情報（Ｕ，ａｋｅｙ［Ｕ，１］，ａｋｅｙ［Ｕ，２］，ｉ）が予め保存されていない場合は、鍵交換処理のセッションを切断し、鍵交換処理を中止するものとする。
【０１７６】
上記記録情報が見つかった場合、無パスワード認証子検証部９０８は、記録情報（Ｕ，ａｋｅｙ［Ｕ，１］、ａｋｅｙ［Ｕ，２］、i）を利用者リスト９２４から抽出すると共に、秘密鍵（ａｋｅｙ［Ｕ，１］）、およびメッセージとしての（Ｕ，Ｓ，ｓｉｄ）を、認証子生成装置に入力し、その出力である無パスワード認証子（ｍａｃ［Ｋ，１］’）を生成する。
【０１７７】
次いで、無パスワード認証子検証部９０８は、生成したｍａｃ［Ｋ，１］’と第三メッセージの一部として送り込まれたｍａｃ［Ｋ，１］とが等しいか否かの判定を行う（認証子検証：ステップＤ１１）。
【０１７８】
ここで、生成した認証子（ｍａｃ［Ｋ，１］’）と送り込まれたｍａｃ［Ｋ，１］が等しい（ｍａｃ［Ｋ，１］’＝ｍａｃ［Ｋ，１］）ことが確認された場合に、パスワード認証子復元部９０９が、一時鍵生成部９１４で生成された一時鍵（ｔｋｅｙ）と暗号文としてのｐｍａｃ［Ｋ，２］を復号装置に入力し、その出力である平文としてのパスワード認証子（ｍａｃ［Ｋ，２］）を復元生成する（一時鍵を用いたパスワード認証子復元：ステップＤ１２）。
【０１７９】
次に、パスワード認証子検証部９１０が、ａｋｅｙ［Ｕ，２］とメッセージとしての（Ｕ，Ｓ，ｓｉｄ）を認証子生成装置に入力することにより、その出力であるパスワード認証子（ｍａｃ［Ｋ，２］’）を生成し、このパスワード認証子（ｍａｃ［Ｋ，２］’）と、上記復元生成したパスワード認証子（ｍａｃ［Ｋ，２］）とが等しいか否かの判定、つまり、ｍａｃ［Ｋ，２］’＝ｍａｃ［Ｋ，２］の等号が成り立つか否かの判定を行う（パスワード認証検証：ステップＤ１３）。
【０１８０】
ここで、上記等号（ｍａｃ［Ｋ，２］’＝ｍａｃ［Ｋ，２］）が成り立たないと判定された場合、不正接続回数加算部９１１が、記録（Ｕ，ａｋｅｙ［Ｕ，１］、ａｋｅｙ［Ｕ，２］、ｉ）におけるｉをｉ＋１に変更する処理を行い（ステップＤ１４）、鍵交換にかかる処理を中止する。
【０１８１】
一方、パスワード認証子（ｍａｃ［Ｋ，２］’）と、上記復元生成されたパスワード認証子（ｍａｃ［Ｋ，２］）とが等しい（ｍａｃ［Ｋ，２］’＝ｍａｃ［Ｋ，２］）と判定された場合は、鍵出力部９１２が、交換鍵（Ｕ，Ｓ，ｓｉｄ，ｋｅｙ）９２５を出力する（ステップＤ１５）。尚、交換鍵８２５および９２５は、共通の交換鍵であるものとする。
ここで、状態消去部９１３が、状態情報（Ｕ，ｓｉｄ，ｋｅｙ，ｔｋｅｙ）を消去する処理を行う（ステップＤ１６）。
これにより、利用者用鍵交換装置８００およびサーバ用鍵交換装置９００間における鍵交換が成立する。
【０１８２】
以上のように、本実施形態２においては、実施形態１と同様に、利用者装置がサーバ装置と鍵交換を行うためには、正当なパスワード認証子（ｍａｃ［Ｋ，２］）を示す必要があり、また、これを生成するにはパスワード由来の秘密鍵（ａｋｅｙ［Ｕ，2］）、およびパスワードが必要となるため、利用者装置およびサーバ装置間では、パスワードおよび認証子を利用したセキュリティの高い状態で鍵交換を実行することができる。
【０１８３】
また、本実施形態では、秘密鍵（ａｋｅｙ［Ｕ，2］）はサーバ装置側にも保存されているが、秘密鍵（ａｋｅｙ［Ｕ，2］）は、利用者装置内に予め設定されたマスター鍵と利用者により入力されたパスワードとから生成されているため、サーバ装置側で秘密鍵（ａｋｅｙ［Ｕ，2］）からパスワードを復元することはできず、これにより、サーバ装置側におけるパスワードの漏洩やパスワードを利用した不正な鍵交換の実行を有効に抑制することができる。
【０１８４】
本発明においては、上述のように、利用者がサーバと鍵交換を行うためには、正当な認証子（ｍａｃ［Ｋ，１］）を示す必要もあるが、これには、予め秘密鍵（ａｋｅｙ［Ｕ，１］）を保持している必要があり、このｍａｃ［Ｋ，１］が正しく示されたことを確認された後に、ｍａｃ［Ｋ，２］（あるいはｓｉｇ[K、２］）の正当性が確認される。このため、例えマスター鍵（ｍｋｅｙ［Ｕ］）が悪意の利用者（攻撃者）により取得された場合でも、パスワードの正当性をサーバ装置に対して確認することはできないため、不正な鍵交換の実行されるのを抑制することができる。
【０１８５】
また、本発明では、サーバ装置では、例えば、攻撃者が、鍵交換の要求試みにかかるパスワード入力誤り回数が記録され、一定の数を越えると接続が拒否される構成を有すると共に、攻撃者は、マスター鍵（ｍｋｅｙ［Ｕ］）を知らなければ、このような攻撃を試みて、サーバ装置における接続拒否が発生するよう仕向けることはできないため、正当な利用者によるサーバ装置の利用や鍵交換を阻害することなく、攻撃者に対するセキュリティを高めることができる。
【産業上の利用可能性】
【０１８６】
本発明は、データ漏洩対策として暗号化された通信データの送受信が行われる、高速無線通信ネットワークなどで利用される鍵交換システムに対して有用に適用することができる。
【符号の説明】
【０１８７】
６００、８００  利用者用鍵交換装置
６０１、８０１  鍵交換開始命令部
６０３、８０３  第一メッセージ生成部
６０４、７０５、８０４、９０５  状態保存部
６０５、８０５  第一メッセージ送信部
６０６  対応状態確認部
６０７  認証子検証部
６０８、７０３、９０３  セッション番号生成部
６０９  検証鍵検証部
６１０、８１０  パスワード入力部
６１１、８１１  無パスワード認証子生成部
６１２、８１２  パスワード認証子生成部
６１３、８１３  パスワード認証子隠蔽部
６１４  乱数源更新部
６１５、７０２、８１５、９０２  鍵生成部
６１６、７１３、８１６、９１３  状態消去部
６１７、８１７  第三メッセージ送信部
６１８、７１２、８１８、９１２  鍵出力部
７００、９００  サーバ用鍵交換装置
７０１  制限回数確認部
７０４  認証子生成部
７０６、９０６  第二メッセージ送信部
７０７、９０７  対応状態確認部
７０８、９０８  無パスワード認証子検証部
７０９、９０９  パスワード認証子復号部
７１０、９１０  パスワード認証子検証部
７１１、９１１  不正接続回数加算部
９１４  一時鍵生成部
【図１】
0005446768.tif 000002
【図２】
0005446768.tif 000003
【図３】
0005446768.tif 000004
【図４】
0005446768.tif 000005
【図５】
0005446768.tif 000006
【図６】
0005446768.tif 000007
【図７】
0005446768.tif 000008
【図８】
0005446768.tif 000009
【図９】
0005446768.tif 000010
【図１０】
0005446768.tif 000011