(57)【特許請求の範囲】
【請求項１】
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｓ∈Ｋｎに基づいてメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組Ｆ及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する検証者に前記メッセージを提供するメッセージ提供部と、
前記検証者がランダムに選択した第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて第３の情報を生成する中間情報生成部と、
前記検証者に前記第３の情報を提供する中間情報提供部と、
ｋ通り（ｋ≧２）の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、
を備え、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
情報処理装置。
【請求項２】
前記メッセージ生成部は、Ｎ回分（Ｎ≧２）のメッセージを生成し、
前記メッセージ提供部は、Ｎ回分の前記メッセージを１回の対話で前記検証者に提供し、
前記中間情報生成部は、Ｎ回分の前記メッセージのそれぞれについて前記検証者が選択した前記第１の情報及び前記メッセージを生成する際に得られるＮ回分の前記第２の情報を用いてＮ回分の前記第３の情報を生成し、
前記中間情報提供部は、Ｎ回分の前記第３の情報を１回の対話で検証者に提供し、
前記回答提供部は、Ｎ回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するＮ回分の前記回答情報を１回の対話で前記検証者に提供する、
請求項１に記載の情報処理装置。
【請求項３】
前記メッセージ生成部は、Ｎ回分（Ｎ≧２）のメッセージを生成すると共に、Ｎ回分の前記メッセージから１つのハッシュ値を生成し、
前記メッセージ提供部は、前記ハッシュ値を前記検証者に提供し、
前記中間情報生成部は、Ｎ回分の前記メッセージのそれぞれについて前記検証者が選択した前記第１の情報及び前記メッセージを生成する際に得られるＮ回分の前記第２の情報を用いてＮ回分の前記第３の情報を生成し、
前記中間情報提供部は、Ｎ回分の前記第３の情報を１回の対話で検証者に提供し、
前記回答提供部は、Ｎ回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するＮ回分の前記回答情報、及び、前記公開鍵及び前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを１回の対話で前記検証者に提供する、
請求項２に記載の情報処理装置。
【請求項４】
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する情報保持部と、
前記多次多変数多項式の組Ｆ及びベクトルｓ∈Ｋｎに基づいて生成されたメッセージを取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、ランダムに選択した第１の情報を提供する情報提供部と、
前記第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて前記証明者が生成した第３の情報を取得する中間情報取得部と、
ｋ通り（ｋ≧３）の検証パターンの中からランダムに選択した１つの検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得部と、
前記メッセージ、前記第１の情報、前記第３の情報、前記多次多変数多項式の組Ｆ、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
情報処理装置。
【請求項５】
前記メッセージ取得部は、Ｎ回分（Ｎ≧２）の前記メッセージを１回の対話で取得し、
前記情報提供部は、Ｎ回分の前記メッセージのそれぞれについて前記第１の情報をランダムに選択し、選択したＮ回分の前記第１の情報を１回の対話で前記証明者に提供し、
前記中間情報取得部は、Ｎ回分の前記第１の情報及びＮ回分の前記メッセージを生成する際に得られるＮ回分の前記第２の情報を用いて前記証明者が生成したＮ回分の前記第３の情報を取得し、
前記パターン情報提供部は、Ｎ回分の前記メッセージのそれぞれについて検証パターンを選択し、選択したＮ回分の検証パターンの情報を１回の対話で前記証明者に提供し、
前記回答取得部は、前記選択したＮ回分の検証パターンに対応するＮ回分の前記回答情報を１回の対話で前記証明者から取得し、
前記検証部は、Ｎ回分の前記メッセージの全てについて検証が成功した場合に、前記証明者が前記ベクトルｓを保持していると判定する、
請求項４に記載の情報処理装置。
【請求項６】
前記メッセージ取得部は、Ｎ回分（Ｎ≧２）の前記メッセージから生成された１つのハッシュ値を取得し、
前記情報提供部は、Ｎ回分の前記メッセージのそれぞれについて前記第１の情報をランダムに選択し、選択したＮ回分の前記第１の情報を１回の対話で前記証明者に提供し、
前記中間情報取得部は、Ｎ回分の前記第１の情報及びＮ回分の前記メッセージを生成する際に得られるＮ回分の前記第２の情報を用いて前記証明者が生成したＮ回分の前記第３の情報を取得し、
前記パターン情報提供部は、Ｎ回分の前記メッセージのそれぞれについて検証パターンを選択し、選択したＮ回分の検証パターンの情報を１回の対話で前記証明者に提供し、
前記回答取得部は、前記選択した検証パターンに対応する回答情報、及び、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを前記証明者から取得し、
前記検証部は、前記ハッシュ値、前記一部のメッセージ、前記公開鍵、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証し、Ｎ回分の前記メッセージの全てについて検証が成功した場合に、前記証明者が前記ベクトルｓを保持していると判定する、
請求項５に記載の情報処理装置。
【請求項７】
プロセッサが、多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｓ∈Ｋｎに基づいてメッセージを生成するステップと、
プロセッサが、前記多次多変数多項式の組Ｆ及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する検証者に前記メッセージを提供するステップと、
プロセッサが、前記検証者がランダムに選択した第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて第３の情報を生成するステップと、
プロセッサが、前記検証者に前記第３の情報を提供するステップと、
プロセッサが、ｋ通り（ｋ≧２）の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、
を含み、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
情報処理方法。
【請求項８】
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する情報処理装置のプロセッサが、
前記多次多変数多項式の組Ｆ及びベクトルｓ∈Ｋｎに基づいて生成されたメッセージを取得するステップと、
前記メッセージを提供した証明者に対し、ランダムに選択した第１の情報を提供するステップと、
前記第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて前記証明者が生成した第３の情報を取得するステップと、
ｋ通り（ｋ≧３）の検証パターンの中からランダムに選択した１つの検証パターンの情報を前記証明者に提供するステップと、
前記選択した検証パターンに対応する回答情報を前記証明者から取得するステップと、
前記メッセージ、前記第１の情報、前記第３の情報、前記多次多変数多項式の組Ｆ、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証するステップと、
を含み、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
情報処理方法。
【請求項９】
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｓ∈Ｋｎに基づいてメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組Ｆ及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する検証者に前記メッセージを提供するメッセージ提供機能と、
前記検証者がランダムに選択した第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて第３の情報を生成する中間情報生成機能と、
前記検証者に前記第３の情報を提供する中間情報提供機能と、
ｋ通り（ｋ≧２）の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
プログラム。
【請求項１０】
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する情報保持機能と、
前記多次多変数多項式の組Ｆ及びベクトルｓ∈Ｋｎに基づいて生成されたメッセージを取得するメッセージ取得機能と、
前記メッセージを提供した証明者に対し、ランダムに選択した第１の情報を提供する情報提供機能と、
前記第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて前記証明者が生成した第３の情報を取得する中間情報取得機能と、
ｋ通り（ｋ≧３）の検証パターンの中からランダムに選択した１つの検証パターンの情報を前記証明者に提供するパターン情報提供機能と、
前記選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得機能と、
前記メッセージ、前記第１の情報、前記第３の情報、前記多次多変数多項式の組Ｆ、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
プログラム。
【請求項１１】
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｓ∈Ｋｎに基づいてメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組Ｆ及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する検証者に前記メッセージを提供するメッセージ提供機能と、
前記検証者がランダムに選択した第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて第３の情報を生成する中間情報生成機能と、
前記検証者に前記第３の情報を提供する中間情報提供機能と、
ｋ通り（ｋ≧２）の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムが記録された、コンピュータにより読み取り可能な記録媒体であり、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
記録媒体。
【請求項１２】
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する情報保持機能と、
前記多次多変数多項式の組Ｆ及びベクトルｓ∈Ｋｎに基づいて生成されたメッセージを取得するメッセージ取得機能と、
前記メッセージを提供した証明者に対し、ランダムに選択した第１の情報を提供する情報提供機能と、
前記第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて前記証明者が生成した第３の情報を取得する中間情報取得機能と、
ｋ通り（ｋ≧３）の検証パターンの中からランダムに選択した１つの検証パターンの情報を前記証明者に提供するパターン情報提供機能と、
前記選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得機能と、
前記メッセージ、前記第１の情報、前記第３の情報、前記多次多変数多項式の組Ｆ、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムが記録された、コンピュータにより読み取り可能な記録媒体であり、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、情報処理装置、情報処理方法、プログラム、及び記録媒体に関する。
【背景技術】
【０００２】
情報処理技術や通信技術の急速な発展に伴い、公文書、私文書を問わず、文書の電子化が急速に進んでいる。これに伴い、多くの個人や企業は、電子文書の安全管理に大きな関心を寄せている。こうした関心の高まりを受け、各方面で電子文書の盗聴や偽造等のタンパリング行為に対する対抗策が盛んに研究されるようになってきた。電子文書の盗聴に対しては、例えば、電子文書を暗号化することにより安全性が確保される。また、電子文書の偽造に対しては、例えば、電子署名を利用することにより安全性が確保される。但し、利用する暗号や電子署名が高いタンパリング耐性を有していなければ、十分な安全性が保証されない。
【０００３】
電子署名は、電子文書の作成者を特定するために利用される。そのため、電子署名は、電子文書の作成者しか生成できないようにすべきである。仮に、悪意ある第三者が同じ電子署名を生成できてしまうと、その第三者が電子文書の作成者に成りすますことができてしまう。つまり、悪意ある第三者により電子文書が偽造されてしまう。こうした偽造を防止するため、電子署名の安全性については様々な議論が交わされてきた。現在広く利用されている電子署名方式としては、例えば、ＲＳＡ署名方式やＤＳＡ署名方式などが知られている。
【０００４】
ＲＳＡ署名方式は、「大きな合成数に対する素因数分解の困難性（以下、素因数分解問題）」を安全性の根拠とする。また、ＤＳＡ署名方式は、「離散対数問題に対する解の導出の困難性」を安全性の根拠とする。これらの根拠は、古典的なコンピュータを利用して素因数分解問題や離散対数問題を効率的に解くアルゴリズムが存在しないことに起因する。つまり、上記の困難性は、古典的なコンピュータにおける計算量的な困難性を意味する。しかしながら、量子コンピュータを用いると、素因数分解問題や離散対数問題に対する解答が効率的に算出されてしまうと言われている。
【０００５】
現在利用されている電子署名方式や公開鍵認証方式の多くは、ＲＳＡ署名方式やＤＳＡ署名方式と同様、素因数分解問題や離散対数問題の困難性に安全性の根拠をおいている。そのため、こうした電子署名方式や公開鍵認証方式は、量子コンピュータが実用化された場合に、その安全性が確保されないことになる。そこで、素因数分解問題や離散対数問題など、量子コンピュータにより容易に解かれてしまう問題とは異なる問題に安全性の根拠をおく新たな電子署名方式及び公開鍵認証方式の実現が求められている。量子コンピュータにより容易に解くことが難しい問題としては、例えば、多変数多項式問題がある。
【０００６】
多変数多項式問題に安全性の根拠をおく電子署名方式としては、例えば、ＭＩ（Ｍａｔｓｕｍｏｔｏ−Ｉｍａｉ  ｃｒｙｐｔｏｇｒａｐｈｙ）、ＨＦＥ（Ｈｉｄｄｅｎ  Ｆｉｅｌｄ  Ｅｑｕａｔｉｏｎ  ｃｒｙｐｔｏｇｒａｐｈｙ）、ＯＶ（Ｏｉｌ−Ｖｉｎｅｇａｒ  ｓｉｇｎａｔｕｒｅ  ｓｃｈｅｍｅ）、ＴＴＭ（Ｔａｍｅｄ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ  Ｍｅｔｈｏｄ  ｃｒｙｐｔｏｇｒａｐｈｙ）に基づく方式が知られている。例えば、下記の非特許文献１、２には、ＨＦＥに基づく電子署名方式が開示されている。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Ｊａｃｑｕｅｓ  Ｐａｔａｒｉｎ  Ａｓｙｍｍｅｔｒｉｃ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ｗｉｔｈ  ａ  Ｈｉｄｄｅｎ  Ｍｏｎｏｍｉａｌ．  ＣＲＹＰＴＯ  １９９６，  ｐｐ．４５−６０．
【非特許文献２】Ｐａｔａｒｉｎ，  Ｊ．，  Ｃｏｕｒｔｏｉｓ，  Ｎ．，  ａｎｄ  Ｇｏｕｂｉｎ，  Ｌ．  ＱＵＡＲＴＺ，  １２８−Ｂｉｔ  Ｌｏｎｇ  Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅｓ．  Ｉｎ  Ｎａｃｃａｃｈｅ，Ｄ．，  Ｅｄ．  Ｔｏｐｉｃｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ  −  ＣＴ−ＲＳＡ  ２００１  （Ｓａｎ  Ｆｒａｎｃｉｓｃｏ，  ＣＡ，  ＵＳＡ，  Ａｐｒｉｌ  ２００１），  ｖｏｌ．  ２０２０  ｏｆ  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ．，  ｐｐ．２８２−２９７．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記の通り、多変数多項式問題は、量子コンピュータを用いても解くことが困難なＮＰ困難問題と呼ばれる問題の一例である。通常、ＨＦＥなどに代表される多変数多項式問題を利用した公開鍵認証方式は、特殊なトラップドアが仕込まれた多次多変数連立方程式を利用している。例えば、ｘ１，…，ｘｎに関する多次多変数連立方程式Ｆ（ｘ１，…，ｘｎ）＝ｙと線形変換Ａ及びＢが用意され、線形変換Ａ及びＢが秘密に管理される。この場合、多次多変数連立方程式Ｆ、線形変換Ａ及びＢがトラップドアとなる。
【０００９】
トラップドアＦ，Ａ，Ｂを知っているエンティティは、ｘ１，…，ｘｎに関する方程式Ｂ（Ｆ（Ａ（ｘ１，…，ｘｎ）））＝ｙ’を解くことができる。一方、トラップドアＦ，Ａ，Ｂを知らないエンティティは、ｘ１，…，ｘｎに関する方程式Ｂ（Ｆ（Ａ（ｘ１，…，ｘｎ）））＝ｙ’を解くことができない。この仕組みを利用することにより、多次多変数連立方程式の解答困難性を安全性の根拠とする公開鍵認証方式や電子署名方式が実現される。
【００１０】
上記の通り、こうした公開鍵認証方式や電子署名方式を実現するには、Ｂ（Ｆ（Ａ（ｘ１，…，ｘｎ）））＝ｙを満たすような特殊な多次多変数連立方程式を用意する必要がある。また、署名生成時に多次多変数連立方程式Ｆを解く必要がある。そのため、利用可能な多次多変数連立方程式Ｆは、比較的容易に解けるものに限られていた。すなわち、これまでの方式においては、比較的容易に解ける３つの関数（トラップドア）Ｂ、Ｆ、Ａを合成した形の多次多変数連立方程式Ｂ（Ｆ（Ａ（ｘ１，…，ｘｎ）））＝ｙしか用いることができず、十分な安全性を確保することが難しかった。
【００１１】
本技術は、上記の事情に鑑みて、効率的に解く手段（トラップドア）が知られていない多次多変数連立方程式を用いて高い安全性を有する効率的な公開鍵認証方式及び電子署名方式を実現することが可能な、新規かつ改良された情報処理装置、情報処理方法、プログラム、及び記録媒体の提供を意図して考案されたものである。
【課題を解決するための手段】
【００１２】
本技術のある観点によれば、多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｓ∈Ｋｎに基づいてメッセージを生成するメッセージ生成部と、前記多次多変数多項式の組Ｆ及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する検証者に前記メッセージを提供するメッセージ提供部と、前記検証者がランダムに選択した第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて第３の情報を生成する中間情報生成部と、前記検証者に前記第３の情報を提供する中間情報提供部と、ｋ通り（ｋ≧２）の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、を備え、前記ベクトルｓは秘密鍵であり、前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、情報処理装置が提供される。
【００１３】
また、本技術の別の観点によれば、多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する情報保持部と、前記多次多変数多項式の組Ｆ及びベクトルｓ∈Ｋｎに基づいて生成されたメッセージを取得するメッセージ取得部と、前記メッセージを提供した証明者に対し、ランダムに選択した第１の情報を提供する情報提供部と、前記第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて前記証明者が生成した第３の情報を取得する中間情報取得部と、ｋ通り（ｋ≧３）の検証パターンの中からランダムに選択した１つの検証パターンの情報を前記証明者に提供するパターン情報提供部と、前記選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得部と、前記メッセージ、前記第１の情報、前記第３の情報、前記多次多変数多項式の組Ｆ、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証する検証部と、を備え、前記ベクトルｓは秘密鍵であり、前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、情報処理装置が提供される。
【００１４】
また、本技術の別の観点によれば、多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｓ∈Ｋｎに基づいてメッセージを生成するステップと、前記多次多変数多項式の組Ｆ及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する検証者に前記メッセージを提供するステップと、前記検証者がランダムに選択した第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて第３の情報を生成するステップと、前記検証者に前記第３の情報を提供するステップと、ｋ通り（ｋ≧２）の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、を含み、前記ベクトルｓは秘密鍵であり、前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、情報処理方法が提供される。
【００１５】
また、本技術の別の観点によれば、多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する情報処理装置が、前記多次多変数多項式の組Ｆ及びベクトルｓ∈Ｋｎに基づいて生成されたメッセージを取得するステップと、前記メッセージを提供した証明者に対し、ランダムに選択した第１の情報を提供するステップと、前記第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて前記証明者が生成した第３の情報を取得するステップと、ｋ通り（ｋ≧３）の検証パターンの中からランダムに選択した１つの検証パターンの情報を前記証明者に提供するステップと、前記選択した検証パターンに対応する回答情報を前記証明者から取得するステップと、前記メッセージ、前記第１の情報、前記第３の情報、前記多次多変数多項式の組Ｆ、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証するステップと、を含み、前記ベクトルｓは秘密鍵であり、前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、情報処理方法が提供される。
【００１６】
また、本技術の別の観点によれば、多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｓ∈Ｋｎに基づいてメッセージを生成するメッセージ生成機能と、前記多次多変数多項式の組Ｆ及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する検証者に前記メッセージを提供するメッセージ提供機能と、前記検証者がランダムに選択した第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて第３の情報を生成する中間情報生成機能と、前記検証者に前記第３の情報を提供する中間情報提供機能と、ｋ通り（ｋ≧２）の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、をコンピュータに実現させるためのプログラムであり、前記ベクトルｓは秘密鍵であり、前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、プログラムが提供される。
【００１７】
また、本技術の別の観点によれば、多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する情報保持機能と、前記多次多変数多項式の組Ｆ及びベクトルｓ∈Ｋｎに基づいて生成されたメッセージを取得するメッセージ取得機能と、前記メッセージを提供した証明者に対し、ランダムに選択した第１の情報を提供する情報提供機能と、前記第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて前記証明者が生成した第３の情報を取得する中間情報取得機能と、ｋ通り（ｋ≧３）の検証パターンの中からランダムに選択した１つの検証パターンの情報を前記証明者に提供するパターン情報提供機能と、前記選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得部と、前記メッセージ、前記第１の情報、前記第３の情報、前記多次多変数多項式の組Ｆ、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証する検証機能と、をコンピュータに実現させるためのプログラムであり、前記ベクトルｓは秘密鍵であり、前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、プログラムが提供される。
【００１８】
また、本技術の別の観点によれば、多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｓ∈Ｋｎに基づいてメッセージを生成するメッセージ生成機能と、前記多次多変数多項式の組Ｆ及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する検証者に前記メッセージを提供するメッセージ提供機能と、前記検証者がランダムに選択した第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて第３の情報を生成する中間情報生成機能と、前記検証者に前記第３の情報を提供する中間情報提供機能と、ｋ通り（ｋ≧２）の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、をコンピュータに実現させるためのプログラムが記録された、コンピュータにより読み取り可能な記録媒体であり、前記ベクトルｓは秘密鍵であり、前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、記録媒体が提供される。
【００１９】
また、本技術の別の観点によれば、多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する情報保持機能と、前記多次多変数多項式の組Ｆ及びベクトルｓ∈Ｋｎに基づいて生成されたメッセージを取得するメッセージ取得機能と、前記メッセージを提供した証明者に対し、ランダムに選択した第１の情報を提供する情報提供機能と、前記第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて前記証明者が生成した第３の情報を取得する中間情報取得機能と、ｋ通り（ｋ≧３）の検証パターンの中からランダムに選択した１つの検証パターンの情報を前記証明者に提供するパターン情報提供機能と、前記選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得部と、前記メッセージ、前記第１の情報、前記第３の情報、前記多次多変数多項式の組Ｆ、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証する検証機能と、をコンピュータに実現させるためのプログラムが記録された、コンピュータにより読み取り可能な記録媒体であり、前記ベクトルｓは秘密鍵であり、前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、記録媒体が提供される。
【発明の効果】
【００２０】
以上説明したように本技術によれば、効率的に解く手段（トラップドア）が知られていない多次多変数連立方程式を用いて、高い安全性を有する効率的な公開鍵認証方式又は電子署名方式を実現することが可能になる。
【図面の簡単な説明】
【００２１】
【図１】公開鍵認証方式に係るアルゴリズムの構成について説明するための説明図である。
【図２】電子署名方式に係るアルゴリズムの構成について説明するための説明図である。
【図３】ｎパスの公開鍵認証方式に係るアルゴリズムの構成について説明するための説明図である。
【図４】３パスの公開鍵認証方式に係る具体的なアルゴリズムの構成例について説明するための説明図である。
【図５】３パスの公開鍵認証方式に係る効率的なアルゴリズムについて説明するための説明図である。
【図６】３パスの公開鍵認証方式に係る効率的なアルゴリズムの並列化について説明するための説明図である。
【図７】３パスの高次多変数多項式を利用した公開鍵認証方式（方式＃１）のアルゴリズムの一例について説明するための説明図である。
【図８】３パスの高次多変数多項式を利用した公開鍵認証方式（方式＃１）の並列化アルゴリズムの一例について説明するための説明図である。
【図９】５パスの公開鍵認証方式に係る具体的なアルゴリズムの構成例について説明するための説明図である。
【図１０】５パスの公開鍵認証方式に係る効率的なアルゴリズムの構成例について説明するための説明図である。
【図１１】５パスの公開鍵認証方式に係る効率的なアルゴリズムの並列化について説明するための説明図である。
【図１２】５パスの高次多変数多項式を利用した公開鍵認証方式（方式＃１）のアルゴリズムの一例について説明するための説明図である。
【図１３】５パスの高次多変数多項式を利用した公開鍵認証方式（方式＃１）の並列化アルゴリズムの一例について説明するための説明図である。
【図１４】５パスの高次多変数多項式を利用した公開鍵認証方式（方式＃２）のアルゴリズムの一例について説明するための説明図である。
【図１５】５パスの高次多変数多項式を利用した公開鍵認証方式（方式＃２）の並列化アルゴリズムの一例について説明するための説明図である。
【図１６】５パスの高次多変数多項式を利用した公開鍵認証方式（方式＃２）の効率的な並列化アルゴリズムの一例について説明するための説明図である。
【図１７】５パスの高次多変数多項式を利用した公開鍵認証方式（方式＃２）の更に効率的な並列化アルゴリズムの一例について説明するための説明図である。
【図１８】３パスの公開鍵認証方式に係る効率的なアルゴリズムを電子署名方式のアルゴリズムに変形する方法について説明するための説明図である。
【図１９】３パスの公開鍵認証方式に係る効率的なアルゴリズムを更に効率的な電子署名方式のアルゴリズムに変形する方法について説明するための説明図である。
【図２０】５パスの公開鍵認証方式に係る効率的なアルゴリズムを電子署名方式のアルゴリズムに変形する方法について説明するための説明図である。
【図２１】５パスの公開鍵認証方式に係る更に効率的なアルゴリズムを電子署名方式のアルゴリズムに変形する方法について説明するための説明図である。
【図２２】３パスの公開鍵認証方式に係る効率的なアルゴリズムの並直列構成について説明するための説明図である。
【図２３】３パスの公開鍵認証方式に係る効率的なアルゴリズムの直並列構成について説明するための説明図である。
【図２４】５パスの公開鍵認証方式に係る効率的なアルゴリズムの並直列構成（並直列構成＃１）について説明するための説明図である。
【図２５】５パスの公開鍵認証方式に係る効率的なアルゴリズムの並直列構成（並直列構成＃２）について説明するための説明図である。
【図２６】５パスの公開鍵認証方式に係る効率的なアルゴリズムの直並列構成（直並列構成＃１）について説明するための説明図である。
【図２７】５パスの公開鍵認証方式に係る効率的なアルゴリズムの直並列構成（直並列構成＃２）について説明するための説明図である。
【図２８】本技術の各実施形態に係るアルゴリズムを実行することが可能な情報処理装置のハードウェア構成例について説明するための説明図である。
【図２９】本技術の第１及び第２実施形態に係る公開鍵認証方式において用いられるパラメータの好適な設定方法及びその効果について説明するための説明図である。
【発明を実施するための形態】
【００２２】
以下に添付図面を参照しながら、本技術の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２３】
［説明の流れについて］
ここで、以下に記載する本技術の実施形態に関する説明の流れについて簡単に述べる。まず、図１を参照しながら、公開鍵認証方式のアルゴリズム構成について説明する。次いで、図２を参照しながら、電子署名方式のアルゴリズム構成について説明する。次いで、図３を参照しながら、ｎパスの公開鍵認証方式について説明する。
【００２４】
次いで、図４〜図８を参照しながら、３パスの公開鍵認証方式に係るアルゴリズムの構成例について説明する。次いで、図５〜図１７を参照しながら、５パスの公開鍵認証方式に係るアルゴリズムの構成例について説明する。次いで、図１８〜図２１を参照しながら、３パス及び５パスの公開鍵認証方式に係る効率的なアルゴリズムを電子署名方式のアルゴリズムに変形する方法について説明する。
【００２５】
次いで、図２２〜図２７を参照しながら、３パス及び５パスの公開鍵認証方式に係る効率的なアルゴリズムの並直列構成及び直並列構成について説明する。次いで、図２８を参照しながら、本技術の第１及び第２実施形態に係る各アルゴリズムを実現することが可能な情報処理装置のハードウェア構成例について説明する。最後に、本実施形態の技術的思想について纏め、当該技術的思想から得られる作用効果について簡単に説明する。
【００２６】
（説明項目）
１：はじめに
１−１：公開鍵認証方式のアルゴリズム
１−２：電子署名方式のアルゴリズム
１−３：ｎパスの公開鍵認証方式
２：３パスの公開鍵認証方式に係るアルゴリズムの構成
２−１：具体的なアルゴリズムの構成例
２−２：２次多変数多項式に基づく効率的なアルゴリズム
２−２−１：基本構成
２−２−２：並列化アルゴリズム
２−３：高次多変数多項式に基づく効率的なアルゴリズム（方式＃１）
２−３−１：基本構成
２−３−２：並列化アルゴリズム
３：５パスの公開鍵認証方式に係るアルゴリズムの構成
３−１：具体的なアルゴリズムの構成例
３−２：２次多変数多項式に基づく効率的なアルゴリズム
３−２−１：基本構成
３−２−２：並列化アルゴリズム
３−３：高次多変数多項式に基づく効率的なアルゴリズム（方式＃１）
３−３−１：基本構成
３−３−２：並列化アルゴリズム
３−４：高次多変数多項式に基づく効率的なアルゴリズム（方式＃２）
３−４−１：基本構成
３−４−２：並列化アルゴリズム（構成例１）
３−４−３：並列化アルゴリズム（構成例２：高効率）
３−４−４：並列化アルゴリズム（構成例２：更に高効率）
４：電子署名方式への変形
４−１：３パスの公開鍵認証方式から電子署名方式への変形
４−１−１：電子署名アルゴリズム（構成例１）
４−１−２：電子署名アルゴリズム（構成例２：高効率）
４−２：５パスの公開鍵認証方式から電子署名方式への変形
４−２−１：電子署名アルゴリズム（構成例１）
４−２−２：電子署名アルゴリズム（構成例２：高効率）
５：ハイブリッド型アルゴリズム
５−１：３パスの公開鍵認証方式に係るハイブリッド型アルゴリズム
５−１−１：並直列アルゴリズム
５−１−２：直並列アルゴリズム
５−２：５パスの公開鍵認証方式に係るハイブリッド型アルゴリズム
５−２−１：並直列アルゴリズム（構成例＃１）
５−２−２：並直列アルゴリズム（構成例＃２）
５−２−３：直並列アルゴリズム（構成例＃１）
５−２−４：直並列アルゴリズム（構成例＃２）
６：補遺
６−１：システムパラメータの設定方法
６−２：イレギュラーな要求に対する応答方法
６−２−１：証明者による応答方法について
６−２−２：検証者による応答方法について
７：ハードウェア構成例
８：まとめ
【００２７】
＜１：はじめに＞
本実施形態は、多次多変数連立方程式に対する求解問題の困難性に安全性の根拠をおく公開鍵認証方式及び電子署名方式に関する。但し、本実施形態は、ＨＦＥ電子署名方式などの従来手法とは異なり、効率的に解く手段（トラップドア）を持たない多次多変数連立方程式を利用する公開鍵認証方式及び電子署名方式に関する。まず、公開鍵認証方式のアルゴリズム、電子署名方式のアルゴリズム、及びｎパスの公開鍵認証方式について、その概要を簡単に説明する。
【００２８】
［１−１：公開鍵認証方式のアルゴリズム］
まず、図１を参照しながら、公開鍵認証方式のアルゴリズムについて概要を説明する。図１は、公開鍵認証方式のアルゴリズムについて概要を説明するための説明図である。
【００２９】
公開鍵認証は、ある人（証明者）が、公開鍵ｐｋ及び秘密鍵ｓｋを利用して、他の人（検証者）に本人であることを納得させるために利用される。例えば、証明者Ａの公開鍵ｐｋＡは、検証者Ｂに公開される。一方、証明者Ａの秘密鍵ｓｋＡは、証明者Ａにより秘密に管理される。公開鍵認証の仕組みにおいては、公開鍵ｐｋＡに対応する秘密鍵ｓｋＡを知る者が証明者Ａ本人であるとみなされる。
【００３０】
公開鍵認証の仕組みを利用して証明者Ａが証明者Ａ本人であることを検証者Ｂに証明するには、対話プロトコルを介して、証明者Ａが公開鍵ｐｋＡに対応する秘密鍵ｓｋＡを知っているという証拠を検証者Ｂに提示すればよい。そして、証明者Ａが秘密鍵ｓｋＡを知っているという証拠が検証者Ｂに提示され、その証拠を検証者Ｂが確認し終えた場合、証明者Ａの正当性（本人であること）が証明されたことになる。
【００３１】
但し、公開鍵認証の仕組みには、安全性を担保するために以下の条件が求められる。
【００３２】
１つ目の条件は、「対話プロトコルを実行した際に秘密鍵ｓｋを持たない偽証者により偽証が成立してしまう確率を限りなく小さくする」ことである。この１つ目の条件が成り立つことを「健全性」と呼ぶ。つまり、健全性とは、「秘密鍵ｓｋを持たない偽証者により、対話プロトコルの実行中に無視できない確率で偽証が成立することはないこと」と言い換えられる。２つ目の条件は、「対話プロトコルを実行したとしても、証明者Ａが有する秘密鍵ｓｋＡの情報が検証者Ｂに一切漏れることがない」ことである。この２つ目の条件が成り立つことを「零知識性」と呼ぶ。
【００３３】
安全に公開鍵認証を行うには、健全性及び零知識性を有する対話プロトコルを利用する必要がある。仮に、健全性及び零知識性を有しない対話プロトコルを用いて認証処理を行った場合には、偽証された可能性及び秘密鍵の情報が漏れてしまった可能性が否定できないため、処理自体が成功裡に完了しても証明者の正当性を証明したことにはならない。従って、対話プロトコルの健全性及び零知識性を如何に保証するかが重要になる。
【００３４】
（モデル）
公開鍵認証方式のモデルには、図１に示すように、証明者と検証者という２つのエンティティが存在する。証明者は、鍵生成アルゴリズムＧｅｎを用いて、証明者固有の秘密鍵ｓｋと公開鍵ｐｋの組を生成する。次いで、証明者は、鍵生成アルゴリズムＧｅｎを用いて生成した秘密鍵ｓｋと公開鍵ｐｋの組を利用して検証者と対話プロトコルを実行する。このとき、証明者は、証明者アルゴリズムＰを利用して対話プロトコルを実行する。上記の通り、証明者は、証明者アルゴリズムＰを利用し、対話プロトコルの中で秘密鍵ｓｋを保有している証拠を検証者に提示する。
【００３５】
一方、検証者は、検証者アルゴリズムＶを利用して対話プロトコルを実行し、証明者が公開している公開鍵に対応する秘密鍵を、その証明者が保有しているか否かを検証する。つまり、検証者は、証明者が公開鍵に対応する秘密鍵を保有しているか否かを検証するエンティティである。このように、公開鍵認証方式のモデルは、証明者と検証者という２つのエンティティ、及び、鍵生成アルゴリズムＧｅｎ、証明者アルゴリズムＰ、検証者アルゴリズムＶという３つのアルゴリズムにより構成される。
【００３６】
なお、以下の説明において、「証明者」「検証者」という表現を用いるが、これらの表現はあくまでもエンティティを意味するものである。従って、鍵生成アルゴリズムＧｅｎ、証明者アルゴリズムＰを実行する主体は、「証明者」のエンティティに対応する情報処理装置である。同様に、検証者アルゴリズムＶを実行する主体は、情報処理装置である。これら情報処理装置のハードウェア構成は、例えば、図２８に示した通りである。つまり、鍵生成アルゴリズムＧｅｎ、証明者アルゴリズムＰ、検証者アルゴリズムＶは、ＲＯＭ９０４、ＲＡＭ９０６、記憶部９２０、リムーバブル記録媒体９２８などに記録されたプログラムに基づいてＣＰＵ９０２などにより実行される。
【００３７】
（鍵生成アルゴリズムＧｅｎ）
鍵生成アルゴリズムＧｅｎは、証明者により利用される。鍵生成アルゴリズムＧｅｎは、証明者に固有の秘密鍵ｓｋと公開鍵ｐｋとの組を生成するアルゴリズムである。鍵生成アルゴリズムＧｅｎにより生成された公開鍵ｐｋは公開される。そして、公開された公開鍵ｐｋは、検証者により利用される。一方、鍵生成アルゴリズムＧｅｎにより生成された秘密鍵ｓｋは、証明者が秘密に管理する。そして、証明者により秘密に管理される秘密鍵ｓｋは、公開鍵ｐｋに対応する秘密鍵ｓｋを証明者が保有していることを検証者に対して証明するために利用される。形式的に、鍵生成アルゴリズムＧｅｎは、セキュリティパラメータ１λ（λは０以上の整数）を入力とし、秘密鍵ｓｋと公開鍵ｐｋを出力するアルゴリズムとして、下記の式（１）のように表現される。
【００３８】
【数１】
0005790287.tif 000002
【００３９】
（証明者アルゴリズムＰ）
証明者アルゴリズムＰは、証明者により利用される。証明者アルゴリズムＰは、公開鍵ｐｋに対応する秘密鍵ｓｋを証明者が保有していることを検証者に対して証明するためのアルゴリズムである。つまり、証明者アルゴリズムＰは、秘密鍵ｓｋと公開鍵ｐｋとを入力とし、対話プロトコルを実行するアルゴリズムである。
【００４０】
（検証者アルゴリズムＶ）
検証者アルゴリズムＶは、検証者により利用される。検証者アルゴリズムＶは、対話プロトコルの中で、公開鍵ｐｋに対応する秘密鍵ｓｋを証明者が保有しているか否かを検証するアルゴリズムである。検証者アルゴリズムＶは、公開鍵ｐｋを入力とし、対話プロトコルの実行結果に応じて０又は１（１ｂｉｔ）を出力するアルゴリズムである。なお、検証者は、検証者アルゴリズムＶが０を出力した場合には証明者が不正なものであると判断し、１を出力した場合には証明者が正当なものであると判断する。形式的に、検証者アルゴリズムＶは、下記の式（２）のように表現される。
【００４１】
【数２】
0005790287.tif 000003
【００４２】
上記の通り、意味のある公開鍵認証を実現するには、対話プロトコルが健全性及び零知識性という２つの条件を満たしている必要がある。しかし、証明者が秘密鍵ｓｋを保有していることを証明するためには、証明者が秘密鍵ｓｋに依存した手続きを実行し、その結果を検証者に通知した上で、その通知内容に基づく検証を検証者に実行させる必要がある。秘密鍵ｓｋに依存した手続きを実行するのは、健全性を担保するために必要である。一方で、秘密鍵ｓｋの情報が一切検証者に漏れないようにする必要がある。そのため、これらの要件を満たすように、上記の鍵生成アルゴリズムＧｅｎ、証明者アルゴリズムＰ、検証者アルゴリズムＶを巧妙に設計する必要がある。
【００４３】
以上、公開鍵認証方式のアルゴリズムについて、その概要を説明した。
【００４４】
［１−２：電子署名方式のアルゴリズム］
次に、図２を参照しながら、電子署名方式のアルゴリズムについて概要を説明する。図２は、電子署名方式のアルゴリズムについて概要を説明するための説明図である。
【００４５】
紙文書とは異なり、ある電子化されたデータに対して押印したり署名を記載したりすることはできない。そのため、電子化されたデータの作成者を証明するためには、紙文書に押印したり署名を記載したりするのと同等の効果が得られる電子的な仕組みを必要とする。この仕組みが電子署名である。電子署名とは、データの作成者しか知らない署名データをデータに関連付けて受領者に提供し、その署名データを受領者側で検証する仕組みのことを言う。
【００４６】
（モデル）
電子署名方式のモデルには、図２に示すように、署名者及び検証者という２つのエンティティが存在する。そして、電子署名方式のモデルは、鍵生成アルゴリズムＧｅｎ、署名生成アルゴリズムＳｉｇ、署名検証アルゴリズムＶｅｒという３つのアルゴリズムにより構成される。
【００４７】
署名者は、鍵生成アルゴリズムＧｅｎを利用して署名者固有の署名鍵ｓｋと検証鍵ｐｋとの組を生成する。また、署名者は、署名生成アルゴリズムＳｉｇを利用して文書Ｍに付与する電子署名σを生成する。つまり、署名者は、文書Ｍに電子署名を付与するエンティティである。一方、検証者は、署名検証アルゴリズムＶｅｒを利用して文書Ｍに付与された電子署名σを検証する。つまり、検証者は、文書Ｍの作成者が署名者であるか否かを確認するために、電子署名σを検証するエンティティである。
【００４８】
なお、以下の説明において、「署名者」「検証者」という表現を用いるが、これらの表現はあくまでもエンティティを意味するものである。従って、鍵生成アルゴリズムＧｅｎ、署名生成アルゴリズムＳｉｇを実行する主体は、「署名者」のエンティティに対応する情報処理装置である。同様に、署名検証アルゴリズムＶｅｒを実行する主体は、情報処理装置である。これら情報処理装置のハードウェア構成は、例えば、図２８に示した通りである。つまり、鍵生成アルゴリズムＧｅｎ、署名生成アルゴリズムＳｉｇ、署名検証アルゴリズムＶｅｒは、ＲＯＭ９０４、ＲＡＭ９０６、記憶部９２０、リムーバブル記録媒体９２８などに記録されたプログラムに基づいてＣＰＵ９０２などにより実行される。
【００４９】
（鍵生成アルゴリズムＧｅｎ）
鍵生成アルゴリズムＧｅｎは、署名者により利用される。鍵生成アルゴリズムＧｅｎは、署名者固有の署名鍵ｓｋと検証鍵ｐｋとの組を生成するアルゴリズムである。鍵生成アルゴリズムＧｅｎにより生成された検証鍵ｐｋは公開される。一方、鍵生成アルゴリズムＧｅｎにより生成された署名鍵ｓｋは、署名者により秘密に管理される。そして、署名鍵ｓｋは、文書Ｍに付与される電子署名σの生成に利用される。例えば、鍵生成アルゴリズムＧｅｎは、セキュリティパラメータ１λ（λは０以上の整数）を入力とし、署名鍵ｓｋ及び公開鍵ｐｋを出力する。この場合、鍵生成アルゴリズムＧｅｎは、形式的に、下記の式（３）のように表現することができる。
【００５０】
【数３】
0005790287.tif 000004
【００５１】
（署名生成アルゴリズムＳｉｇ）
署名生成アルゴリズムＳｉｇは、署名者により利用される。署名生成アルゴリズムＳｉｇは、文書Ｍに付与される電子署名σを生成するアルゴリズムである。署名生成アルゴリズムＳｉｇは、署名鍵ｓｋと文書Ｍとを入力とし、電子署名σを出力するアルゴリズムである。この署名生成アルゴリズムＳｉｇは、形式的に、下記の式（４）のように表現することができる。
【００５２】
【数４】
0005790287.tif 000005
【００５３】
（署名検証アルゴリズムＶｅｒ）
署名検証アルゴリズムＶｅｒは、検証者により利用される。署名検証アルゴリズムＶｅｒは、電子署名σが文書Ｍに対する正当な電子署名であるか否かを検証するアルゴリズムである。署名検証アルゴリズムＶｅｒは、署名者の検証鍵ｐｋ、文書Ｍ、電子署名σを入力とし、０又は１（１ｂｉｔ）を出力するアルゴリズムである。この署名検証アルゴリズムＶｅｒは、形式的に、下記の式（５）のように表現することができる。なお、検証者は、署名検証アルゴリズムＶｅｒが０を出力した場合（公開鍵ｐｋが文書Ｍと電子署名σを拒否する場合）に電子署名σが不当であると判断し、１を出力した場合（公開鍵ｐｋが文書Ｍと電子署名σを受理する場合）に電子署名σが正当であると判断する。
【００５４】
【数５】
0005790287.tif 000006
【００５５】
以上、電子署名方式のアルゴリズムについて、その概要を説明した。
【００５６】
［１−３：ｎパスの公開鍵認証方式］
次に、図３を参照しながら、ｎパスの公開鍵認証方式について説明する。図３は、ｎパスの公開鍵認証方式について説明するための説明図である。
【００５７】
上記の通り、公開鍵認証方式は、対話プロトコルの中で、証明者が公開鍵ｐｋに対応する秘密鍵ｓｋを保有していることを検証者に証明する認証方式である。また、対話プロトコルは、健全性及び零知識性という２つの条件を満たす必要がある。そのため、対話プロトコルの中では、図３に示すように、証明者及び検証者の双方がそれぞれ処理を実行しながらｎ回の情報交換を行う。
【００５８】
ｎパスの公開鍵認証方式の場合、証明者アルゴリズムＰを用いて証明者により処理（工程＃１）が実行され、情報Ｔ１が検証者に送信される。次いで、検証者アルゴリズムＶを用いて検証者により処理（工程＃２）が実行され、情報Ｔ２が証明者に送信される。さらに、ｋ＝３〜ｎについて処理（工程＃ｋ）の実行及び情報Ｔｋの送信が順次行われ、最後に処理（工程＃ｎ＋１）が実行される。このように、情報がｎ回送受信される方式のことを「ｎパス」の公開鍵認証方式と呼ぶ。
【００５９】
以上、ｎパスの公開鍵認証方式について説明した。
【００６０】
＜２：３パスの公開鍵認証方式に係るアルゴリズムの構成＞
以下、３パスの公開鍵認証方式に係るアルゴリズムについて説明する。なお、以下の説明において、３パスの公開鍵認証方式のことを「３パス方式」と呼ぶ場合がある。
【００６１】
［２−１：具体的なアルゴリズムの構成例］
まず、図４を参照しながら、３パス方式に係る具体的なアルゴリズムの構成例について紹介する。図４は、３パス方式に係る具体的なアルゴリズムの構成について説明するための説明図である。なお、３パス方式のアルゴリズムは、鍵生成アルゴリズムＧｅｎ、証明者アルゴリズムＰ、検証者アルゴリズムＶにより構成される。以下、各アルゴリズムの構成について説明する。
【００６２】
（鍵生成アルゴリズムＧｅｎ）
鍵生成アルゴリズムＧｅｎは、環Ｋ上で定義されるｍ本の多変数多項式ｆ１（ｘ１，…，ｘｎ），…，ｆｍ（ｘ１，…，ｘｎ）、及びベクトルｓ＝（ｓ１，…，ｓｎ）∈Ｋｎを生成する。次に、鍵生成アルゴリズムＧｅｎは、ｙ＝（ｙ１，…，ｙｍ）←（ｆ１（ｓ），…，ｆｍ（ｓ））を計算する。そして、鍵生成アルゴリズムＧｅｎは、（ｆ１（ｘ１，…，ｘｎ），…，ｆｍ（ｘ１，…，ｘｎ），ｙ）を公開鍵ｐｋに設定し、ｓを秘密鍵に設定する。なお、以下では、ベクトル（ｘ１，…，ｘｎ）をｘと表記し、多変数多項式の組（ｆ１（ｘ），…，ｆｍ（ｘ））をＦ（ｘ）と表記することにする。
【００６３】
（証明者アルゴリズムＰ、検証者アルゴリズムＶ）
次に、図４を参照しながら、対話プロトコルの中で証明者アルゴリズムＰが実行する処理及び検証者アルゴリズムＶが実行する処理について説明する。
【００６４】
上記の対話プロトコルの中で、証明者は、秘密鍵ｓの情報を検証者に一切漏らさずに、「自身がｙ＝Ｆ（ｓ）を満たすｓを知っていること」を検証者に示す。一方、検証者は、証明者がｙ＝Ｆ（ｓ）を満たすｓを知っているか否かを検証する。なお、公開鍵ｐｋは、検証者に公開されているものとする。また、秘密鍵ｓは、証明者により秘密に管理されているものとする。以下、図４に示したフローチャートに沿って説明を進める。
【００６５】
工程＃１：
まず、証明者アルゴリズムＰは、任意に数ｓｅｅｄ０を選択する。次いで、証明者アルゴリズムＰは、擬似乱数生成器ＰＲＮＧに数ｓｅｅｄ０を適用してベクトルｒ０∈Ｋｎ及び数ｓｅｅｄ１を生成する。つまり、証明者アルゴリズムＰは、（ｒ０，ｓｅｅｄ１）←ＰＲＮＧ（ｓｅｅｄ０）を計算する。次いで、証明者アルゴリズムＰは、擬似乱数生成器ＰＲＮＧに数ｓｅｅｄ１を適用して多変数多項式Ｆ１（ｘ）＝（ｆ１１（ｘ），…，ｆ１ｍ（ｘ））を生成する。つまり、証明者アルゴリズムＰは、Ｆ１←ＰＲＮＧ（ｓｅｅｄ１）を計算する。
【００６６】
工程＃１（続き）：
次いで、証明者アルゴリズムＰは、ｒ１←ｓ−ｒ０を計算する。この計算は、秘密鍵ｓをベクトルｒ０によりマスクする操作に相当する。さらに、証明者アルゴリズムＰは、Ｆ２（ｘ）←Ｆ（ｘ＋ｒ０）＋Ｆ１（ｘ）を計算する。この計算は、ｘに関して多変数多項式Ｆ（ｘ＋ｒ０）を多変数多項式Ｆ１（ｘ）によりマスクする操作に相当する。
【００６７】
工程＃１（続き）：
次いで、証明者アルゴリズムＰは、Ｆ１（ｒ１）及びｒ１のハッシュ値ｃ０を生成する。つまり、証明者アルゴリズムＰは、ｃ０←Ｈ（Ｆ１（ｒ１），ｒ１）を計算する。また、証明者アルゴリズムＰは、数ｓｅｅｄ１のハッシュ値ｃ１を生成する。つまり、証明者アルゴリズムＰは、ｃ１←Ｈ（ｓｅｅｄ１）を計算する。さらに、証明者アルゴリズムＰは、多変数多項式Ｆ２のハッシュ値ｃ２を生成する。つまり、証明者アルゴリズムＰは、ｃ２←Ｈ（Ｆ２）を計算する。このハッシュ値（ｃ０，ｃ１，ｃ２）は、メッセージとして検証者アルゴリズムＶに送られる。このとき、ｓに関する情報、ｒ０に関する情報、ｒ１に関する情報が検証者に一切漏れない点に注意されたい。
【００６８】
工程＃２：
メッセージ（ｃ０，ｃ１，ｃ２）を受け取った検証者アルゴリズムＶは、３つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムＶは、検証パターンの種類を表す３つの数値｛０，１，２｝の中から１つの数値を選択し、選択した数値を要求Ｃｈに設定する。この要求Ｃｈは証明者アルゴリズムＰに送られる。
【００６９】
工程＃３：
要求Ｃｈを受け取った証明者アルゴリズムＰは、受け取った要求Ｃｈに応じて検証者アルゴリズムＶに送る返答Ｒｓｐを生成する。Ｃｈ＝０の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝ｓｅｅｄ０を生成する。Ｃｈ＝１の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝（ｓｅｅｄ１，ｒ１）を生成する。Ｃｈ＝２の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝（Ｆ２，ｒ１）を生成する。工程＃３で生成された返答Ｒｓｐは、検証者アルゴリズムＶに送られる。このとき、Ｃｈ＝０の場合にはｒ１に関する情報が検証者に一切漏れておらず、Ｃｈ＝１又は２の場合にはｒ０に関する情報が検証者に一切漏れない点に注意されたい。
【００７０】
工程＃４：
返答Ｒｓｐを受け取った検証者アルゴリズムＶは、受け取った返答Ｒｓｐを利用して以下の検証処理を実行する。
【００７１】
Ｃｈ＝０の場合、検証者アルゴリズムＶは、（ｒ０，ｓｅｅｄ１）←ＰＲＮＧ（Ｒｓｐ）を計算する。さらに、検証者アルゴリズムＶは、Ｆ１←ＰＲＮＧ（ｓｅｅｄ１）を計算する。そして、検証者アルゴリズムＶは、ｃ１＝Ｈ（ｓｅｅｄ１）の等号が成り立つか否かを検証する。また、検証者アルゴリズムＶは、ｃ２＝Ｈ（Ｆ（ｘ＋ｒ０）＋Ｆ１（ｘ））の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【００７２】
Ｃｈ＝１の場合、検証者アルゴリズムＶは、（ｓｅｅｄ１，ｒ１）←Ｒｓｐとする。さらに、検証者アルゴリズムＶは、Ｆ１←ＰＲＮＧ（ｓｅｅｄ１）を計算する。そして、検証者アルゴリズムＶは、ｃ０＝Ｈ（Ｆ１（ｒ１），ｒ１）の等号が成り立つか否かを検証する。また、検証者アルゴリズムＶは、ｃ１＝Ｈ（ｓｅｅｄ１）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【００７３】
Ｃｈ＝２の場合、検証者アルゴリズムＶは、（Ｆ２，ｒ１）←Ｒｓｐとする。そして、検証者アルゴリズムＶは、ｃ０＝Ｈ（Ｆ２（ｒ１）−ｙ，ｒ１））の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムＶは、ｃ２＝Ｈ（Ｆ２）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【００７４】
（健全性について）
ここで、３パス方式に係るアルゴリズムの健全性について説明を補足する。３パス方式に係るアルゴリズムの健全性は、「検証者アルゴリズムＶが選択可能な要求Ｃｈ＝０，１，２の全てについて、証明者アルゴリズムＰが正しい返答Ｒｓｐを返したならば、下記の式（６）及び式（７）を満たすＦ２、Ｆ１、ｒ０、ｒ１が計算可能になる」という論理に基づいて保証されている。
【００７５】
【数６】
0005790287.tif 000007
【００７６】
上記の健全性が保証されることにより、多次多変数連立方程式の求解問題を解かない限りにおいて２／３より高い確率で偽証が成功することは不可能であると保証される。つまり、検証者の要求Ｃｈ＝０，１，２の全てに正しく回答するためには、偽証者が上記の式（６）及び式（７）を満たすＦ２、Ｆ１、ｒ０、ｒ１を計算できる必要がある。言い換えると、偽証者はＦ（ｓ）＝ｙを満たすｓを計算できる必要がある。但し、検証者の要求Ｃｈ＝０，１，２の高々２つについて偽証者が正しく回答できてしまう可能性は残る。そのため、偽証の成功確率は２／３となる。なお、上記の対話プロトコルを十分な回数だけ繰り返し実行することで、偽証の成功確率は無視できるほど小さくなる。
【００７７】
（ハッシュ関数Ｈについて）
ここで、ハッシュ関数Ｈについて説明を補足する。上記のアルゴリズムでは、ハッシュ関数Ｈを用いてｃ０，ｃ１，ｃ２などを計算しているが、ハッシュ関数Ｈの代わりにコミットメント関数ＣＯＭを用いてもよい。コミットメント関数ＣＯＭは、文字列Ｓ及び乱数ρを引数にとる関数である。コミットメント関数の例としては、Ｓｈａｉ  ＨａｌｅｖｉとＳｉｌｖｉｏ  Ｍｉｃａｌｉによって国際会議ＣＲＹＰＴＯ１９９６で発表された方式などがある。
【００７８】
例えば、コミットメント関数ＣＯＭを用いてｃ０，ｃ１，ｃ２を計算する場合について考えてみよう。この場合、ｃ０，ｃ１，ｃ２を計算する前に乱数ρ０，ρ１，ρ２を用意し、ハッシュ関数Ｈ（・）を適用する代わりにコミットメント関数ＣＯＭ（・，ρ０），ＣＯＭ（・，ρ１），ＣＯＭ（・，ρ２）を適用してｃ０，ｃ１，ｃ２を生成する。また、検証者がｃｉを生成するために必要なρｉは、返答Ｒｓｐに含めて送られるようにする。
【００７９】
以上、３パス方式に係る具体的なアルゴリズムの構成例について紹介した。
【００８０】
［２−２：２次多変数多項式に基づく効率的なアルゴリズム］
次に、３パス方式に係るアルゴリズムを効率化する方法について述べる。ここでは、多変数多項式Ｆとして２次多項式の組（ｆ１（ｘ），…，ｆｍ（ｘ））を利用する場合について説明する。但し、２次多項式ｆｉ（ｘ）は、下記の式（８）のように表現されるものとする。
【００８１】
【数７】
0005790287.tif 000008
【００８２】
なお、２次多項式の組（ｆ１（ｘ），…，ｆｍ（ｘ））は、下記の式（９）のように表現することができる。但し、ｘ＝（ｘ１，…，ｘｎ）である。また、Ａ１，…，Ａｍは、ｎ×ｎ行列である。さらに、ｂ１，…，ｂｍはそれぞれｎ×１ベクトルである。
【００８３】
【数８】
0005790287.tif 000009
【００８４】
この表現を用いると、多変数多項式Ｆは、下記の式（１０）及び式（１１）のように表現することができる。この表現が成り立つことは、下記の式（１２）から容易に確認することができる。
【００８５】
【数９】
0005790287.tif 000010
【００８６】
このようにＦ（ｘ＋ｙ）をｘに依存する第１の部分と、ｙに依存する第２の部分と、ｘ及びｙの両方に依存する第３の部分とに分けたとき、第３の部分に対応する項Ｇ（ｘ，ｙ）は、ｘ及びｙについて双線形になる。この性質を利用すると、効率的なアルゴリズムを構築することが可能になる。
【００８７】
例えば、ベクトルｔ０∈Ｋｎ、ｅ０∈Ｋｍを用いて、多変数多項式Ｆ（ｘ＋ｒ）のマスクに利用する多変数多項式Ｆ１（ｘ）をＦ１（ｘ）＝Ｇ（ｘ，ｔ０）＋ｅ０と表現する。この場合、多変数多項式Ｆ（ｘ＋ｒ０）とＧ（ｘ）との和は、下記の式（１３）のように表現される。
【００８８】
ここで、ｔ１＝ｒ０＋ｔ０、ｅ１＝Ｆ（ｒ０）＋ｅ０とおけば、多変数多項式Ｆ２（ｘ）＝Ｆ（ｘ＋ｒ０）＋Ｆ１（ｘ）は、ベクトルｔ１∈Ｋｎ、ｅ１∈Ｋｍにより表現することができる。そのため、Ｆ１（ｘ）＝Ｇ（ｘ，ｔ０）＋ｅ０に設定すれば、Ｋｎ上のベクトル及びＫｍ上のベクトルを用いてＦ１及びＦ２を表現できるようになり、通信に必要なデータサイズを大幅に減らすことが可能になる。具体的には、数千〜数万倍程度、通信効率が向上する。
【００８９】
【数１０】
0005790287.tif 000011
【００９０】
なお、上記の変形により、Ｆ２（或いはＦ１）からｒ０に関する情報が一切漏れることはない。例えば、ｅ１及びｔ１（或いはｅ０及びｔ０）を与えられても、ｅ０及びｔ０（或いはｅ１及びｔ１）を知らない限り、ｒ０の情報を一切知ることはできない。従って、零知識性が担保される。以下、図５及び図６を参照しながら、３パス方式に係る効率的なアルゴリズムについて説明する。
【００９１】
（２−２−１：基本構成（図５））
まず、図５を参照しながら、３パス方式に係る効率的なアルゴリズムの基本構成について説明する。なお、鍵生成アルゴリズムＧｅｎの構成については説明を省略する。
【００９２】
工程＃１：
図５に示すように、証明者アルゴリズムＰは、ランダムにベクトルｒ０，ｔ０∈Ｋｎ及びｅ０∈Ｋｍを生成する。次いで、証明者アルゴリズムＰは、ｒ１←ｓ−ｒ０を計算する。この計算は、秘密鍵ｓをベクトルｒ０によりマスクする操作に相当する。さらに、証明者アルゴリズムＰは、ｔ１←ｒ０−ｔ０を計算する。次いで、証明者アルゴリズムＰは、ｅ１←Ｆ（ｒ０）−ｅ０を計算する。
【００９３】
工程＃１（続き）：
次いで、証明者アルゴリズムＰは、ｃ０←Ｈ（ｒ１，Ｇ（ｔ０，ｒ１）＋ｅ０）を計算する。次いで、証明者アルゴリズムＰは、ｃ１←Ｈ（ｔ０，ｅ０）を計算する。次いで、証明者アルゴリズムＰは、ｃ２←Ｈ（ｔ１，ｅ１）を計算する。工程＃１で生成されたメッセージ（ｃ０，ｃ１，ｃ２）は、検証者アルゴリズムＶに送られる。
【００９４】
工程＃２：
メッセージ（ｃ０，ｃ１，ｃ２）を受け取った検証者アルゴリズムＶは、３つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムＶは、検証パターンの種類を表す３つの数値｛０，１，２｝の中から１つの数値を選択し、選択した数値を要求Ｃｈに設定する。この要求Ｃｈは証明者アルゴリズムＰに送られる。
【００９５】
工程＃３：
要求Ｃｈを受け取った証明者アルゴリズムＰは、受け取った要求Ｃｈに応じて検証者アルゴリズムＶに送る返答Ｒｓｐを生成する。Ｃｈ＝０の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝（ｒ０，ｔ１，ｅ１）を生成する。Ｃｈ＝１の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝（ｒ１，ｔ０，ｅ０）を生成する。Ｃｈ＝２の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝（ｒ１，ｔ１，ｅ１）を生成する。工程＃３で生成された返答Ｒｓｐは、検証者アルゴリズムＶに送られる。
【００９６】
工程＃４：
返答Ｒｓｐを受け取った検証者アルゴリズムＶは、受け取った返答Ｒｓｐを利用して以下の検証処理を実行する。
【００９７】
Ｃｈ＝０の場合、検証者アルゴリズムＶは、ｃ１＝Ｈ（ｒ０−ｔ１，Ｆ（ｒ０）−ｅ１）の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムＶは、ｃ２＝Ｈ（ｔ１，ｅ１）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【００９８】
Ｃｈ＝１の場合、検証者アルゴリズムＶは、ｃ０＝Ｈ（ｒ１，Ｇ（ｔ０，ｒ１）＋ｅ０）の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムＶは、ｃ１＝Ｈ（ｔ０，ｅ０）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【００９９】
Ｃｈ＝２の場合、検証者アルゴリズムＶは、ｃ０＝Ｈ（ｒ１，ｙ−Ｆ（ｒ１）−Ｇ（ｔ１，ｒ１）−ｅ１）の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムＶは、ｃ２＝Ｈ（ｔ１，ｅ１）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０１００】
以上、３パス方式に係る効率的なアルゴリズムの構成例について説明した。このアルゴリズムを利用することにより、通信に必要なデータサイズが大幅に削減される。
【０１０１】
（２−２−２：並列化アルゴリズム（図６））
次に、図６を参照しながら、図５に示した効率的なアルゴリズムを並列化する方法について説明する。なお、鍵生成アルゴリズムＧｅｎの構成については説明を省略する。
【０１０２】
先に述べた通り、上記の対話プロトコルを適用すれば、偽証が成功する確率を２／３以下に抑制することができる。従って、この対話プロトコルを２回実行すれば、偽証が成功する確率を（２／３）２以下に抑制することができる。さらに、この対話プロトコルをＮ回実行すると、偽証が成功する確率は（２／３）Ｎとなり、Ｎを十分に大きい数（例えば、Ｎ＝１４０）にすれば、偽証が成功する確率は無視できる程度に小さくなる。
【０１０３】
対話プロトコルを複数回実行する方法としては、例えば、メッセージ、要求、返答のやり取りを逐次的に複数回繰り返す直列的な方法と、１回分のやり取りで複数回分のメッセージ、要求、返答のやり取りを行う並列的な方法とが考えられる。ここでは、３パス方式に係る上記の対話プロトコルを並列的に実行するアルゴリズム（以下、並列化アルゴリズム）について説明する。
【０１０４】
工程＃１：
証明者アルゴリズムＰは、ｉ＝１〜Ｎについて以下の処理（１）〜処理（６）を実行する。
処理（１）：証明者アルゴリズムＰは、ランダムにベクトルｒ０ｉ，ｔ０ｉ∈Ｋｎ及びｅ０ｉ∈Ｋｍを生成する。
処理（２）：証明者アルゴリズムＰは、ｒ１ｉ←ｓ−ｒ０ｉを計算する。この計算は、秘密鍵ｓをベクトルｒ０ｉによりマスクする操作に相当する。さらに、証明者アルゴリズムＰは、ｔ１ｉ←ｒ０ｉ＋ｔ０ｉを計算する。
処理（３）：証明者アルゴリズムＰは、ｅ１ｉ←Ｆ（ｒ０ｉ）−ｅ０ｉを計算する。
処理（４）：証明者アルゴリズムＰは、ｃ０ｉ←Ｈ（ｒ１ｉ，Ｇ（ｒ１ｉ，ｔ０ｉ）＋ｅ０ｉ）を計算する。
処理（５）：証明者アルゴリズムＰは、ｃ１ｉ←Ｈ（ｔ０ｉ，ｅ０ｉ）を計算する。
処理（６）：証明者アルゴリズムＰは、ｃ２ｉ←Ｈ（ｔ１ｉ，ｅ１ｉ）を計算する。
【０１０５】
工程＃１（続き）
ｉ＝１〜Ｎについて上記の処理（１）〜処理（６）を実行した後、証明者アルゴリズムＰは、Ｃｍｔ←Ｈ（ｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎ）を計算する。工程＃１で生成されたハッシュ値Ｃｍｔは、検証者アルゴリズムＶに送られる。このように、メッセージ（ｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎ）をハッシュ値に変換してから検証者アルゴリズムＶに送ることで、通信量を削減することが可能になる。
【０１０６】
工程＃２：
ハッシュ値Ｃｍｔを受け取った検証者アルゴリズムＶは、ｉ＝１〜Ｎのそれぞれについて、３つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムＶは、ｉ＝１〜Ｎのそれぞれについて、検証パターンの種類を表す３つの数値｛０，１，２｝の中から１つの数値を選択し、選択した数値を要求Ｃｈｉに設定する。要求Ｃｈ１，…，ＣｈＮは、証明者アルゴリズムＰに送られる。
【０１０７】
工程＃３：
要求Ｃｈ１，…，ＣｈＮを受け取った証明者アルゴリズムＰは、受け取った要求Ｃｈ１，…，ＣｈＮのそれぞれ応じて検証者アルゴリズムＶに送る返答Ｒｓｐ１，…，ＲｓｐＮを生成する。Ｃｈｉ＝０の場合、証明者アルゴリズムＰは、Ｒｓｐｉ＝（ｒ０ｉ，ｔ１ｉ，ｅ１ｉ，ｃ０ｉ）を生成する。Ｃｈｉ＝１の場合、証明者アルゴリズムＰは、Ｒｓｐｉ＝（ｒ１ｉ，ｔ０ｉ，ｅ０ｉ，ｃ２ｉ）を生成する。Ｃｈｉ＝２の場合、証明者アルゴリズムＰは、Ｒｓｐｉ＝（ｒ１ｉ，ｔ１ｉ，ｅ１ｉ，ｃ１ｉ）を生成する。
【０１０８】
工程＃３で生成された返答Ｒｓｐ１，…，ＲｓｐＮは、検証者アルゴリズムＶに送られる。
【０１０９】
工程＃４：
返答Ｒｓｐ１，…，ＲｓｐＮを受け取った検証者アルゴリズムＶは、受け取った返答Ｒｓｐ１，…，ＲｓｐＮを利用して以下の処理（１）〜処理（３）をｉ＝１〜Ｎについて実行する。但し、検証者アルゴリズムＶは、Ｃｈｉ＝０の場合に処理（１）を実行し、Ｃｈｉ＝１の場合に処理（２）を実行し、Ｃｈｉ＝２の場合に処理（３）を実行する。
【０１１０】
処理（１）：Ｃｈｉ＝０の場合、検証者アルゴリズムＶは、Ｒｓｐｉから（ｒ０ｉ，ｔ１ｉ，ｅ１ｉ，ｃ０ｉ）を取り出す。次いで、検証者アルゴリズムＶは、ｃ１ｉ＝Ｈ（ｒ０ｉ−ｔ１ｉ，Ｆ（ｒ０ｉ）−ｅ１ｉ）を計算する。さらに、検証者アルゴリズムＶは、ｃ２ｉ＝Ｈ（ｔ１ｉ，ｅ１ｉ）を計算する。そして、検証者アルゴリズムＶは、（ｃ０ｉ，ｃ１ｉ，ｃ２ｉ）を保持する。
【０１１１】
処理（２）：Ｃｈｉ＝１の場合、検証者アルゴリズムＶは、Ｒｓｐｉから（ｒ１ｉ，ｔ０ｉ，ｅ０ｉ，ｃ２ｉ）を取り出す。次いで、検証者アルゴリズムＶは、ｃ０ｉ＝Ｈ（ｒ１ｉ，Ｇ（ｒ１ｉ，ｔ０ｉ）＋ｅ０ｉ）を計算する。さらに、検証者アルゴリズムＶは、ｃ１ｉ＝Ｈ（ｔ０ｉ，ｅ０ｉ）を計算する。そして、検証者アルゴリズムＶは、（ｃ０ｉ，ｃ１ｉ，ｃ２ｉ）を保持する。
【０１１２】
処理（３）：Ｃｈｉ＝２の場合、検証者アルゴリズムＶは、Ｒｓｐｉから（ｒ１ｉ，ｔ１ｉ，ｅ１ｉ，ｃ１ｉ）を取り出す。次いで、検証者アルゴリズムＶは、ｃ０ｉ＝Ｈ（ｒ１ｉ，ｙ−Ｆ（ｒ１ｉ）−Ｇ（ｔ１ｉ，ｒ１ｉ）−ｅ１ｉ）を計算する。さらに、検証者アルゴリズムＶは、ｃ２ｉ＝Ｈ（ｔ１ｉ，ｅ１ｉ）を計算する。そして、検証者アルゴリズムＶは、（ｃ０ｉ，ｃ１ｉ，ｃ２ｉ）を保持する。
【０１１３】
処理（１）〜処理（３）をｉ＝１〜Ｎについて実行した後、検証者アルゴリズムＶは、Ｃｍｔ＝Ｈ（ｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎ）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、この検証が成功した場合に認証成功を示す値１を出力し、検証に失敗した場合に認証失敗を示す値０を出力する。
【０１１４】
以上、３パス方式に係る効率的な並列化アルゴリズムの構成例について説明した。なお、図６に示した並列化アルゴリズムには、メッセージをハッシュ値に変換してから送信する工夫を盛り込んだ。この工夫により、通信効率が向上する。同様に、要求Ｃｈ１，…，ＣｈＮや返答Ｒｓｐ１，…，ＲｓｐＮをハッシュ値に変換してから送信するように構成を変形してもよい。このように構成を変形することで、更なる通信効率の向上が期待できる。
【０１１５】
［２−３：高次多変数多項式に基づく効率的なアルゴリズム（方式＃１）］
上記の効率的なアルゴリズムは、上記の式（８）で定義される２次多項式ｆｉの組で多変数多項式Ｆを表現することにより、上記の式（１０）で定義される多項式Ｇが双線形になるという性質を利用していた。しかし、多項式Ｇが加法準同型であれば、多項式Ｇが双線形でなくとも、同様に効率的なアルゴリズムを構築することが可能である。
【０１１６】
（２次多項式ｆｉを利用した効率的なアルゴリズムの構築について）
多項式Ｇが加法準同型の場合、変数ｒ０，ｒ１，ｔ０，ｅ０を用いて、下記の式（１４）〜式（１６）の関係が成り立つ。なお、下記の式（１４）は、秘密鍵ｓをｓ＝ｒ０＋ｒ１と分割し、公開鍵Ｆ（ｓ）を展開したものである。下記の式（１４）〜式（１６）は、（ｒ０，ｔ１，ｅ１）で再現可能な第１の部分と、（ｒ１，ｔ０，ｅ０）で再現可能な第２の部分と、（ｒ１，ｔ１，ｅ１）で再現可能な第３の部分とに分けることができる。
【０１１７】
例えば、下記の式（１５）に含まれる「ｒ０，ｔ１」、下記の式（１６）に含まれる「Ｆ（ｒ０），ｅ１」は、第１の部分である。また、下記の式（１４）に含まれる「ｅ０，Ｇ（ｔ０，ｒ１）」、下記の式（１５）に含まれる「ｔ０」、下記の式（１６）に含まれる「ｅ０」は、第２の部分である。さらに、下記の式（１４）に含まれる「ｅ１，Ｆ（ｒ１），Ｇ（ｔ１，ｒ１）」は、第３の部分である。言い換えると、下記の式（１４）は第２及び第３の部分で構成され、下記の式（１５）は第１及び第２の部分で構成され、下記の式（１６）は第１及び第２の部分で構成されている。
【０１１８】
上記の通り、下記の式（１４）〜式（１６）は、それぞれ２種類の部分で構成されている。また、秘密鍵ｓの定義及び下記の式（１４）〜式（１６）の関係から、（ｒ０，ｔ１，ｅ１）、（ｒ１，ｔ０，ｅ０）、（ｒ１，ｔ１，ｅ１）のいずれか１つを用いても秘密鍵ｓは得られないことが保証される。これらの性質を利用すると、例えば、図５に示した３パス方式に係る効率的なアルゴリズムを構築することができる。
【０１１９】
【数１１】
0005790287.tif 000012
【０１２０】
（３次多項式ｆｌを利用した効率的なアルゴリズムの構築について）
２次多項式ｆｉを利用する場合に関する上記の考察を発展させ、下記の式（１７）で表現される環Ｒ上の３次多項式ｆｌを利用した効率的なアルゴリズムの構築方法について検討してみたい。３次多項式ｆｌの組で表現される多変数多項式Ｆ＝（ｆ１，…，ｆｍ）は、下記の式（１８）の関係を満たす。但し、Ｇｘ（ｘ，ｙ）は、ｘに関して１次となる項を表す。また、Ｇｙ（ｘ，ｙ）は、ｙに関して１次となる項を表す。Ｇｘ＝（ｇｘ１，…，ｇｘｍ）、Ｇｙ＝（ｇｙ１，…，ｇｙｍ）と表現すると、ｇｘｌ及びｇｙｌは、それぞれ下記の式（１９）及び式（２０）のように展開することができる。但し、ｇｘｌの右辺第２項は、ｘ及びｙのいずれに関しても１次であるため、ｇｙｌに含めてもよい。
【０１２１】
【数１２】
0005790287.tif 000013
【０１２２】
上記の式（１９）及び式（２０）から分かるように、Ｇｘ（ｘ，ｙ）及びＧｙ（ｘ，ｙ）は、ｘ及びｙについて加法準同型になっている。そこで、これらの性質を利用し、２次多項式ｆｉを利用した効率的なアルゴリズムの構築方法と同様に、新たな変数ｒ０，ｒ１，ｔ０，ｕ０，ｅ０を導入して公開鍵Ｆ（ｓ）を分割する。
【０１２３】
多項式Ｇｘ，Ｇｙが加法準同型であるから、変数ｒ０，ｒ１，ｔ０，ｕ０，ｅ０を用いて、下記の式（２１）〜式（２４）の関係が成り立つ。下記の式（２１）〜式（２４）は、（ｒ０，ｔ０，ｕ０，ｅ０）で再現可能な第１の部分と、（ｒ０，ｕ１，ｅ１）で再現可能な第２の部分と、（ｒ１，ｔ０，ｅ０）で再現可能な第３の部分と、（ｒ１，ｔ１，ｕ１，ｅ１）で再現可能な第４の部分と、に分けることができる。
【０１２４】
例えば、下記の式（２２）に含まれる「ｒ０，ｔ０」、下記の式（２３）に含まれる「ｕ０」、下記の式（２４）に含まれる「Ｆ（ｒ０），Ｇｙ（ｒ０，ｕ０），ｅ０」、は、第１の部分である。また、下記の式（２４）に含まれる「Ｇｙ（ｒ０，ｕ１），ｅ１」は、第２の部分である。さらに、下記の式（２１）に含まれる「ｅ０，Ｇｘ（ｒ０，ｒ１）」は、第３の部分である。そして、下記の式（２１）に含まれる「ｅ１，Ｆ（ｒ１），Ｇｘ（ｔ１，ｒ１）」、下記の式（２２）に含まれる「ｔ１」、下記の式（２３）に含まれる「ｕ１」は、第４の部分である。
【０１２５】
言い換えると、下記の式（２１）は第３及び第４の部分で構成され、下記の式（２２）及び下記の式（２３）は第１及び第４の部分で構成され、下記の式（２４）は第１及び第２の部分で構成されている。このように、下記の式（２１）〜式（２４）は、それぞれ２種類の部分で構成されている。
【０１２６】
また、秘密鍵ｓの定義及び下記の式（２１）〜式（２４）の関係から、（ｒ０，ｔ０，ｕ０，ｅ０）、（ｒ０，ｕ１，ｅ１）、（ｒ１，ｔ０，ｅ０）、（ｒ１，ｔ１，ｕ１，ｅ１）のいずれか１つを用いても秘密鍵ｓは得られないことが保証される。これらの性質を利用すると、例えば、環Ｒ上の３次多項式ｆｌを利用した３パス方式に係る効率的なアルゴリズム（以下、拡張アルゴリズム）を構築することができる。
【０１２７】
【数１３】
0005790287.tif 000014
【０１２８】
以下、具体的な拡張アルゴリズムの構成例について説明する。拡張アルゴリズムの設計に関する基本的なポイントは、下記の式（２５）〜式（２７）で表現されるメッセージを検証者に送ること、及び第１〜第４の部分のいずれかに関する検証を行うことの２点である。但し、この検証だけでは、第３の部分に含まれる「ｒ１」と第４の部分に含まれる「ｒ１」とが等しいかを検証することができない。同様に、第１の部分に含まれる「ｒ０」と第２の部分に含まれる「ｒ０」とが等しいか、第１の部分に含まれる「ｔ０，ｅ０」と第３の部分に含まれる「ｔ０，ｅ０」とが等しいかも検証することができない。さらに、第２の部分に含まれる「ｕ１，ｅ１」と第４の部分に含まれる「ｕ１，ｅ１」とが等しいかも検証することができない。そこで、以下では、これらの検証も可能にした構成例を紹介する。
【０１２９】
【数１４】
0005790287.tif 000015
【０１３０】
（２−３−１：基本構成（図７））
まず、図７を参照しながら、３パス方式に係る拡張アルゴリズムの基本構成について説明する。なお、鍵生成アルゴリズムＧｅｎの構成については説明を省略する。
【０１３１】
工程＃１：
図７に示すように、証明者アルゴリズムＰは、ランダムにベクトルｒ０，ｔ０，ｕ０∈Ｋｎ及びｅ０∈Ｋｍを生成する。次いで、証明者アルゴリズムＰは、ｒ１←ｓ−ｒ０を計算する。この計算は、秘密鍵ｓをベクトルｒ０によりマスクする操作に相当する。次いで、証明者アルゴリズムＰは、ｔ１←ｒ０−ｔ０を計算する。次いで、証明者アルゴリズムＰは、ｕ１←ｒ１−ｕ０を計算する。次いで、証明者アルゴリズムＰは、ｅ１←Ｆ（ｒ０）−ｅ０を計算する。
【０１３２】
工程＃１（続き）：
次いで、証明者アルゴリズムＰは、ｃ０←Ｈ（ｒ１，Ｇｘ（ｔ０，ｒ１）＋ｅ０）を計算する。次いで、証明者アルゴリズムＰは、ｃ１←Ｈ（ｒ０−ｔ０，ｕ０）を計算する。次いで、証明者アルゴリズムＰは、ｃ２←Ｈ（ｒ０，ｅ１−Ｇｙ（ｒ０，ｕ１））を計算する。次いで、証明者アルゴリズムＰは、ｃ３←Ｈ（ｔ０，ｅ０）を計算する。次いで、証明者アルゴリズムＰは、ｃ４←Ｈ（ｕ１，ｅ１）を計算する。工程＃１で生成されたメッセージ（ｃ０，ｃ１，ｃ２，ｃ３，ｃ４）は、検証者アルゴリズムＶに送られる。
【０１３３】
工程＃２：
メッセージ（ｃ０，ｃ１，ｃ２，ｃ３，ｃ４）を受け取った検証者アルゴリズムＶは、４つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムＶは、検証パターンの種類を表す４つの数値｛０，１，２，３｝の中から１つの数値を選択し、選択した数値を要求Ｃｈに設定する。この要求Ｃｈは証明者アルゴリズムＰに送られる。
【０１３４】
工程＃３：
要求Ｃｈを受け取った証明者アルゴリズムＰは、受け取った要求Ｃｈに応じて検証者アルゴリズムＶに送る返答Ｒｓｐを生成する。Ｃｈ＝０の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝（ｒ０，ｔ０，ｕ０，ｅ０）を生成する。Ｃｈ＝１の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝（ｒ０，ｕ１，ｅ１）を生成する。Ｃｈ＝２の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝（ｒ１，ｔ０，ｅ０）を生成する。Ｃｈ＝３の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝（ｒ１，ｔ１，ｕ１，ｅ１）を生成する。工程＃３で生成された返答Ｒｓｐは、検証者アルゴリズムＶに送られる。
【０１３５】
工程＃４：
返答Ｒｓｐを受け取った検証者アルゴリズムＶは、受け取った返答Ｒｓｐを利用して以下の検証処理を実行する。
【０１３６】
Ｃｈ＝０の場合、検証者アルゴリズムＶは、ｃ１＝Ｈ（ｒ０−ｔ０，ｕ０）の等号が成り立つか否かを検証する。次いで、検証者アルゴリズムＶは、ｃ２＝Ｈ（ｒ０，Ｆ（ｒ０）＋Ｇｙ（ｒ０，ｕ０）−ｅ０）の等号が成り立つか否かを検証する。次いで、検証者アルゴリズムＶは、ｃ３＝Ｈ（ｔ０，ｅ０）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０１３７】
Ｃｈ＝１の場合、検証者アルゴリズムＶは、ｃ２＝Ｈ（ｒ０，ｅ１−Ｇｙ（ｒ０，ｕ１））の等号が成り立つか否かを検証する。次いで、検証者アルゴリズムＶは、ｃ４＝Ｈ（ｕ１，ｅ１）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０１３８】
Ｃｈ＝２の場合、検証者アルゴリズムＶは、ｃ０＝Ｈ（ｒ１，ｅ０＋Ｇｘ（ｔ０，ｒ１））の等号が成り立つか否かを検証する。次いで、検証者アルゴリズムＶは、ｃ３＝Ｈ（ｔ０，ｅ０）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０１３９】
Ｃｈ＝３の場合、検証者アルゴリズムＶは、ｃ０＝Ｈ（ｒ１，ｙ−Ｆ（ｒ１）−ｅ１−Ｇｘ（ｔ１，ｒ１））の等号が成り立つか否かを検証する。次いで、検証者アルゴリズムＶは、ｃ１＝Ｈ（ｔ１，ｒ１−ｕ１）の等号が成り立つか否かを検証する。次いで、検証者アルゴリズムＶは、ｃ４＝Ｈ（ｕ１，ｅ１）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０１４０】
以上、３パス方式に係る拡張アルゴリズムの構成例について説明した。このアルゴリズムを利用することにより、通信に必要なデータサイズが大幅に削減される。また、３次多項式を利用していることにより、より高い安全性が実現されている。
【０１４１】
（２−３−２：並列化アルゴリズム（図８））
次に、図８を参照しながら、３パス方式に係る拡張アルゴリズムの並列化について説明する。なお、鍵生成アルゴリズムＧｅｎの構成については説明を省略する。
【０１４２】
工程＃１：
図８に示すように、証明者アルゴリズムＰは、ｉ＝１〜Ｎについて、以下の処理を実行する。まず、証明者アルゴリズムＰは、ランダムにベクトルｒ０ｉ，ｔ０ｉ，ｕ０ｉ∈Ｋｎ及びｅ０ｉ∈Ｋｍを生成する。次いで、証明者アルゴリズムＰは、ｒ１ｉ←ｓ−ｒ０ｉを計算する。この計算は、秘密鍵ｓをベクトルｒ０ｉによりマスクする操作に相当する。次いで、証明者アルゴリズムＰは、ｔ１ｉ←ｒ０ｉ−ｔ０ｉを計算する。次いで、証明者アルゴリズムＰは、ｕ１ｉ←ｒ１ｉ−ｕ０ｉを計算する。次いで、証明者アルゴリズムＰは、ｅ１ｉ←Ｆ（ｒ０ｉ）−ｅ０ｉを計算する。
【０１４３】
工程＃１（続き）：
次いで、証明者アルゴリズムＰは、ｃ０ｉ←Ｈ（ｒ１ｉ，Ｇｘ（ｔ０ｉ，ｒ１ｉ）＋ｅ０ｉ）を計算する。次いで、証明者アルゴリズムＰは、ｃ１ｉ←Ｈ（ｒ０ｉ−ｔ０ｉ，ｕ０ｉ）を計算する。次いで、証明者アルゴリズムＰは、ｃ２ｉ←Ｈ（ｒ０ｉ，ｅ１ｉ−Ｇｙ（ｒ０ｉ，ｕ１ｉ））を計算する。次いで、証明者アルゴリズムＰは、ｃ３ｉ←Ｈ（ｔ０ｉ，ｅ０ｉ）を計算する。次いで、証明者アルゴリズムＰは、ｃ４ｉ←Ｈ（ｕ１ｉ，ｅ１ｉ）を計算する。（ｃ０１，ｃ１１，ｃ２１，ｃ３１，ｃ４１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎ，ｃ３Ｎ，ｃ４Ｎ）を生成した後、証明者アルゴリズムＰは、ハッシュ値Ｃｍｔ←Ｈ（ｃ０１，ｃ１１，ｃ２１，ｃ３１，ｃ４１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎ，ｃ３Ｎ，ｃ４Ｎ）を計算する。
【０１４４】
工程＃１で生成されたハッシュ値Ｃｍｔは、検証者アルゴリズムＶに送られる。
【０１４５】
工程＃２：
ハッシュ値Ｃｍｔを受け取った検証者アルゴリズムＶは、ｉ＝１〜Ｎのそれぞれについて、４つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムＶは、ｉ＝１〜Ｎのそれぞれについて、検証パターンの種類を表す４つの数値｛０，１，２，３｝の中から１つの数値を選択し、選択した数値を要求Ｃｈｉに設定する。要求Ｃｈｉ（ｉ＝１〜Ｎ）は証明者アルゴリズムＰに送られる。
【０１４６】
工程＃３：
要求Ｃｈｉ（ｉ＝１〜Ｎ）を受け取った証明者アルゴリズムＰは、ｉ＝１〜Ｎについて、受け取った要求Ｃｈｉに応じて検証者アルゴリズムＶに送る返答Ｒｓｐｉを生成する。Ｃｈｉ＝０の場合、証明者アルゴリズムＰは、返答Ｒｓｐｉ＝（ｒ０ｉ，ｔ０ｉ，ｕ０ｉ，ｅ０ｉ，ｃ０ｉ，ｃ4ｉ）を生成する。Ｃｈｉ＝１の場合、証明者アルゴリズムＰは、返答Ｒｓｐｉ＝（ｒ０ｉ，ｕ１ｉ，ｅ１ｉ，ｃ０ｉ，ｃ１ｉ，ｃ３ｉ）を生成する。Ｃｈｉ＝２の場合、証明者アルゴリズムＰは、返答Ｒｓｐｉ＝（ｒ１ｉ，ｔ０ｉ，ｅ０ｉ，ｃ１ｉ，ｃ２ｉ，ｃ４ｉ）を生成する。Ｃｈｉ＝３の場合、証明者アルゴリズムＰは、返答Ｒｓｐｉ＝（ｒ１ｉ，ｔ１ｉ，ｕ１ｉ，ｅ１ｉ，ｃ２ｉ，ｃ３ｉ）を生成する。工程＃３で生成された返答Ｒｓｐｉ（ｉ＝１〜Ｎ）は、検証者アルゴリズムＶに送られる。
【０１４７】
工程＃４：
返答Ｒｓｐｉ（ｉ＝１〜Ｎ）を受け取った検証者アルゴリズムＶは、受け取った返答Ｒｓｐｉを利用し、ｉ＝１〜Ｎについて以下の処理を実行する。
【０１４８】
Ｃｈｉ＝０の場合、検証者アルゴリズムＶは、ｃ１ｉ＝Ｈ（ｒ０ｉ−ｔ０ｉ，ｕ０ｉ）を計算する。次いで、検証者アルゴリズムＶは、ｃ２ｉ＝Ｈ（ｒ０ｉ，Ｆ（ｒ０ｉ）＋Ｇｙ（ｒ０ｉ，ｕ０ｉ）−ｅ０ｉ）を計算する。次いで、検証者アルゴリズムＶは、ｃ３ｉ＝Ｈ（ｔ０ｉ，ｅ０ｉ）を計算する。そして、検証者アルゴリズムＶは、（ｃ０ｉ，ｃ１ｉ，ｃ２ｉ，ｃ３ｉ，ｃ４i）を保持する。
【０１４９】
Ｃｈｉ＝１の場合、検証者アルゴリズムＶは、ｃ２ｉ＝Ｈ（ｒ０ｉ，ｅ１ｉ−Ｇｙ（ｒ０ｉ，ｕ１ｉ））を計算する。次いで、検証者アルゴリズムＶは、ｃ４ｉ＝Ｈ（ｕ１ｉ，ｅ１ｉ）を計算する。そして、検証者アルゴリズムＶは、（ｃ０ｉ，ｃ１ｉ，ｃ２ｉ，ｃ３ｉ，ｃ４i）を保持する。
【０１５０】
Ｃｈｉ＝２の場合、検証者アルゴリズムＶは、ｃ０ｉ＝Ｈ（ｒ１ｉ，Ｇｘ（ｔ０ｉ，ｒ１ｉ）＋ｅ０ｉ）を計算する。次いで、検証者アルゴリズムＶは、ｃ３ｉ＝Ｈ（ｔ０ｉ，ｅ０ｉ）を計算する。そして、検証者アルゴリズムＶは、（ｃ０ｉ，ｃ１ｉ，ｃ２ｉ，ｃ３ｉ，ｃ４i）を保持する。
【０１５１】
Ｃｈｉ＝３の場合、検証者アルゴリズムＶは、ｃ０ｉ＝Ｈ（ｒ１ｉ，ｙ−Ｆ（ｒ１ｉ）−ｅ１ｉ−Ｇｘ（ｔ１ｉ，ｒ１ｉ））を計算する。次いで、検証者アルゴリズムＶは、ｃ１ｉ＝Ｈ（ｔ１ｉ，ｒ１ｉ−ｕ１ｉ）を計算する。次いで、検証者アルゴリズムＶは、ｃ４ｉ＝Ｈ（ｕ１ｉ，ｅ１ｉ）を計算する。そして、検証者アルゴリズムＶは、（ｃ０ｉ，ｃ１ｉ，ｃ２ｉ，ｃ３ｉ，ｃ４i）を保持する。
【０１５２】
ｉ＝１〜Ｎについて上記の処理を実行した後、検証者アルゴリズムＶは、Ｃｍｔ＝Ｈ（ｃ０１，ｃ１１，ｃ２１，ｃ３１，ｃ４1，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎ，ｃ３Ｎ，ｃ４N）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、この検証が成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０１５３】
以上、３パス方式に係る拡張アルゴリズムの並列化について説明した。このアルゴリズムを利用することにより、通信に必要なデータサイズが大幅に削減される。また、３次多項式を利用していることにより、より高い安全性が実現されている。
【０１５４】
＜３：５パスの公開鍵認証方式に係るアルゴリズムの構成＞
以下、５パスの公開鍵認証方式に係るアルゴリズムについて説明する。なお、以下の説明において、５パスの公開鍵認証方式のことを「５パス方式」と呼ぶ場合がある。
【０１５５】
３パス方式の場合には対話プロトコル１回当たりの偽証確率が２／３であったが、５パス方式の場合には対話プロトコル１回当たりの偽証確率が１／２＋１／ｑとなる。但し、ｑは、利用する環の位数である。従って、環の位数が十分に大きい場合、５パス方式の方が１回当たりの偽証確率を低減することが可能になり、少ない対話プロトコルの実行回数で、偽証確率を十分に小さくすることができる。
【０１５６】
例えば、偽証確率を１／２ｎ以下にしたい場合、３パス方式においては、ｎ／（ｌｏｇ３−１）＝１．７０１ｎ回以上、対話プロトコルを実行する必要がある。一方、偽証確率を１／２ｎ以下にしたい場合、５パス方式においては、ｎ／（１−ｌｏｇ（１＋１／ｑ））回以上、対話プロトコルを実行する必要がある。従って、ｑ＝２４にすれば、同じセキュリティレベルを実現するのに必要な通信量は、３パス方式に比べ、５パス方式の方が少なくなるのである。
【０１５７】
［３−１：具体的なアルゴリズムの構成例（図９）］
まず、図９を参照しながら、５パス方式に係る具体的なアルゴリズムの構成例について紹介する。図９は、５パス方式に係る具体的なアルゴリズムの構成について説明するための説明図である。なお、５パス方式のアルゴリズムは、鍵生成アルゴリズムＧｅｎ、証明者アルゴリズムＰ、検証者アルゴリズムＶにより構成される。以下、各アルゴリズムの構成について説明する。
【０１５８】
（鍵生成アルゴリズムＧｅｎ）
鍵生成アルゴリズムＧｅｎは、環Ｋ上で定義される多変数多項式ｆ１（ｘ１，…，ｘｎ），…，ｆｍ（ｘ１，…，ｘｎ）、及びベクトルｓ＝（ｓ１，…，ｓｎ）∈Ｋｎを生成する。次に、鍵生成アルゴリズムＧｅｎは、ｙ＝（ｙ１，…，ｙｍ）←（ｆ１（ｓ），…，ｆｍ（ｓ））を計算する。そして、鍵生成アルゴリズムＧｅｎは、（ｆ１，…，ｆｍ，ｙ）を公開鍵ｐｋに設定し、ｓを秘密鍵に設定する。なお、以下では、ベクトル（ｘ１，…，ｘｎ）をｘと表記し、多変数多項式の組（ｆ１（ｘ），…，ｆｍ（ｘ））をＦ（ｘ）と表記する。
【０１５９】
（証明者アルゴリズムＰ、検証者アルゴリズムＶ）
次に、図９を参照しながら、対話プロトコルの中で証明者アルゴリズムＰ及び検証者アルゴリズムＶにより実行される処理について説明する。
【０１６０】
工程＃１：
図９に示すように、証明者アルゴリズムＰは、ランダムに数ｓｅｅｄ０を選択する。次いで、証明者アルゴリズムＰは、擬似乱数生成器ＰＲＮＧに数ｓｅｅｄ０を適用してベクトルｒ０∈Ｋｎ、及び多変数多項式の組Ｆ１（ｘ）＝（ｆ１１（ｘ），…，ｆ１ｍ（ｘ））を生成する。つまり、証明者アルゴリズムＰは、（ｒ０，Ｆ１）←Ｇ（ｓｅｅｄ０）を計算する。次いで、証明者アルゴリズムＰは、ｒ１←ｓ−ｒ０を計算する。この計算は、秘密鍵ｓをベクトルｒ０によりマスクする操作に相当する。
【０１６１】
工程＃１（続き）：
次いで、証明者アルゴリズムＰは、Ｆ１（ｒ１）及びｒ１のハッシュ値ｃ０を生成する。つまり、証明者アルゴリズムＰは、ｃ０←Ｈ（Ｆ１（ｒ１），ｒ１）を計算する。また、証明者アルゴリズムＰは、数ｓｅｅｄ０のハッシュ値ｃ１を生成する。つまり、証明者アルゴリズムＰは、ｃ１←Ｈ（ｓｅｅｄ０）を計算する。工程＃１で生成されたメッセージ（ｃ０，ｃ１）は、検証者アルゴリズムＶに送られる。
【０１６２】
工程＃２：
メッセージ（ｃ０，ｃ１）を受け取った検証者アルゴリズムＶは、ｑ通り存在する環Ｋの元からランダムに１つの数ＣｈＡを選択し、選択した数ＣｈＡを証明者アルゴリズムＰに送る。
【０１６３】
工程＃３：
数ＣｈＡを受け取った証明者アルゴリズムＰは、Ｆ２（ｘ）←ＣｈＡ・Ｆ（ｘ＋ｒ０）＋Ｆ１（ｘ）を計算する。この計算は、ｘに関して多変数多項式Ｆ（ｘ＋ｒ０）を多変数多項式Ｆ１（ｘ）によりマスクする操作に相当する。工程＃３で生成された多変数多項式Ｆ２は、検証者アルゴリズムＶに送られる。
【０１６４】
工程＃４：
多変数多項式Ｆ２を受け取った検証者アルゴリズムＶは、２つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムＶは、検証パターンの種類を表す２つの数値｛０，１｝の中から１つの数値を選択し、選択した数値を要求ＣｈＢに設定する。この要求ＣｈＢは証明者アルゴリズムＰに送られる。
【０１６５】
工程＃５：
要求ＣｈＢを受け取った証明者アルゴリズムＰは、受け取った要求ＣｈＢに応じて検証者アルゴリズムＶに送り返す返答Ｒｓｐを生成する。ＣｈＢ＝０の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝ｓｅｅｄ０を生成する。ＣｈＢ＝１の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝ｒ１を生成する。工程＃５で生成された返答Ｒｓｐは、検証者アルゴリズムＶに送られる。
【０１６６】
工程＃６：
返答Ｒｓｐを受け取った検証者アルゴリズムＶは、受け取った返答Ｒｓｐを利用して以下の検証処理を実行する。
【０１６７】
ＣｈＢ＝０の場合、検証者アルゴリズムＶは、（ｒ０，Ｆ１）←ＰＲＮＧ（Ｒｓｐ）を計算する。そして、検証者アルゴリズムＶは、ｃ１＝Ｈ（Ｒｓｐ）の等号が成り立つか否かを検証する。また、検証者アルゴリズムＶは、Ｆ２（ｘ）＝ＣｈＡ・Ｆ（ｘ＋ｒ０）＋Ｆ１（ｘ）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、これらの検証が全て成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０１６８】
ＣｈＢ＝１の場合、検証者アルゴリズムＶは、ｒ１←Ｒｓｐとする。そして、検証者アルゴリズムＶは、ｃ０＝Ｈ（Ｆ２（ｒ１）−ＣｈＡ・ｙ，ｒ１）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、この検証が成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０１６９】
（健全性について）
５パス方式の健全性は、証明者アルゴリズムＰが（ｃ０，ｃ１）、及び、検証者アルゴリズムＶが選択する２通りの（ＣｈＡ，ＣｈＡ’）について、要求ＣｈＢ＝０及び１に正しく回答した場合に、その回答内容から下記の式（２８）〜式（３０）を満たすＦ１、Ｆ２、Ｆ２’、ｒ０、ｒ１を計算できるということから保証されている。
【０１７０】
【数１５】
0005790287.tif 000016
【０１７１】
５パス方式の健全性が保証されることにより、多次多変数連立方程式の求解問題を解かない限りにおいて１／２＋１／ｑより高い確率で偽証することは不可能であることが保証される。つまり、検証者の要求ＣｈＡ＝０及び１の全てに正しく回答するためには、偽証者が上記の式（２８）〜式（３０）を満たすＦ１、Ｆ２、Ｆ２’、ｒ０、ｒ１を計算できる必要がある。言い換えると、偽証者はＦ（ｓ）＝ｙを満たすｓを計算できる必要がある。従って、多次多変数連立方程式の求解問題を解かない限り、偽証者は、１／２＋１／ｑより高い確率で偽証を成功させることができないのである。なお、上記の対話プロトコルを十分に多くの回数実行することにより、偽証の成功確率を無視できるほど小さくすることができる。
【０１７２】
（ハッシュ関数Ｈについて）
ここで、ハッシュ関数Ｈについて説明を補足する。上記のアルゴリズムでは、ハッシュ関数Ｈを用いてｃ０，ｃ１などを計算しているが、ハッシュ関数Ｈの代わりにコミットメント関数ＣＯＭを用いてもよい。コミットメント関数ＣＯＭは、文字列Ｓ及び乱数ρを引数にとる関数である。コミットメント関数の例としては、Ｓｈａｉ  ＨａｌｅｖｉとＳｉｌｖｉｏ  Ｍｉｃａｌｉによって国際会議ＣＲＹＰＴＯ１９９６で発表された方式などがある。
【０１７３】
例えば、コミットメント関数ＣＯＭを用いてｃ０，ｃ１を計算する場合について考えてみよう。この場合、ｃ０，ｃ１を計算する前に乱数ρ０，ρ１を用意し、ハッシュ関数Ｈ（・）を適用する代わりにコミットメント関数ＣＯＭ（・，ρ０），ＣＯＭ（・，ρ１）を適用してｃ０，ｃ１を生成する。また、検証者がｃｉを生成するために必要なρｉは、返答Ｒｓｐに含めて送られるようにする。
【０１７４】
以上、５パス方式に係る具体的なアルゴリズムの構成例について説明した。
【０１７５】
［３−２：２次多変数多項式に基づく効率的なアルゴリズム］
次に、５パス方式に係るアルゴリズムを効率化する方法について述べる。ここでは、多変数多項式Ｆとして２次多項式の組（ｆ１（ｘ），…，ｆｍ（ｘ））を利用する場合について説明する。
【０１７６】
３パス方式の効率的なアルゴリズムと同様、２つのベクトルｔ０∈Ｋｎ、ｅ０∈Ｋｍを用いて、多変数多項式Ｆ（ｘ＋ｒ０）をマスクするために用いた多変数多項式Ｆ１（ｘ）をＦ１（ｘ）＝Ｇ（ｘ、ｔ０）＋ｅ０のように表現する。この表現を用いると、多変数多項式Ｆ（ｘ＋ｒ０）について、下記の式（３１）で表現される関係が得られる。
【０１７７】
【数１６】
0005790287.tif 000017
【０１７８】
そのため、ｔ１＝ＣｈＡ・ｒ０＋ｔ０、ｅ１＝ＣｈＡ・Ｆ（ｒ０）＋ｅ０とすれば、マスク後の多変数多項式Ｆ２（ｘ）＝ＣｈＡ・Ｆ（ｘ＋ｒ０）＋Ｆ１（ｘ）も、２つのベクトルｔ１∈Ｋｎ、ｅ１∈Ｋｍにより表現することができる。これらの理由から、Ｆ１（ｘ）＝Ｇ（ｘ，ｔ０）＋ｅ０と設定すれば、Ｋｎ上のベクトル及びＫｍ上のベクトルを用いてＦ１及びＦ２を表現できるようになり、通信に必要なデータサイズを大幅に減らすことが可能になる。具体的には、数千〜数万倍程度、通信コストが削減される。
【０１７９】
また、上記の変形により、Ｆ２（或いはＦ１）からｒ０に関する情報が一切漏れることはない。例えば、ｅ１及びｔ１（或いはｅ０及びｔ０）を与えられても、ｅ０及びｔ０（或いはｅ１及びｔ１）を知らない限り、ｒ０の情報を一切知ることはできない。従って、零知識性は担保される。以下、図１０及び図１１を参照しながら、５パス方式に係る効率的なアルゴリズムについて説明する。
【０１８０】
（３−２−１：基本構成（図１０））
まず、図１０を参照しながら、５パス方式に係る効率的なアルゴリズムの基本構成について説明する。なお、鍵生成アルゴリズムＧｅｎの構成については説明を省略する。
【０１８１】
工程＃１：
図１０に示すように、証明者アルゴリズムＰは、ランダムにベクトルｒ０∈Ｋｎ、ｔ０∈Ｋｎ、ｅ０∈Ｋｍを生成する。次いで、証明者アルゴリズムＰは、ｒ１←ｓ−ｒ０を計算する。この計算は、秘密鍵ｓをベクトルｒ０によりマスクする操作に相当する。次いで、証明者アルゴリズムＰは、ベクトルｒ０，ｔ０，ｅ０のハッシュ値ｃ０を生成する。つまり、証明者アルゴリズムＰは、ｃ０←Ｈ（ｒ０，ｔ０，ｅ０）を計算する。次いで、証明者アルゴリズムＰは、Ｇ（ｔ０，ｒ１）＋ｅ０及びｒ１のハッシュ値ｃ１を生成する。つまり、証明者アルゴリズムＰは、ｃ０←Ｈ（ｒ１，Ｇ（ｔ０，ｒ１）＋ｅ０）を計算する。工程＃１で生成されたメッセージ（ｃ０，ｃ１）は、検証者アルゴリズムＶに送られる。
【０１８２】
工程＃２：
メッセージ（ｃ０，ｃ１）を受け取った検証者アルゴリズムＶは、ｑ通り存在する環Ｋの元からランダムに１つの数ＣｈＡを選択し、選択した数ＣｈＡを証明者アルゴリズムＰに送る。
【０１８３】
工程＃３：
数ＣｈＡを受け取った証明者アルゴリズムＰは、ｔ１←ＣｈＡ・ｒ０−ｔ０を計算する。さらに、証明者アルゴリズムＰは、ｅ１←ＣｈＡ・Ｆ（ｒ０）−ｅ０を計算する。そして、証明者アルゴリズムＰは、ｔ１及びｅ１を検証者アルゴリズムＶに送る。
【０１８４】
工程＃４：
ｔ１及びｅ１を受け取った検証者アルゴリズムＶは、２つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムＶは、検証パターンの種類を表す２つの数値｛０，１｝の中から１つの数値を選択し、選択した数値を要求ＣｈＢに設定する。この要求ＣｈＢは証明者アルゴリズムＰに送られる。
【０１８５】
工程＃５：
要求ＣｈＢを受け取った証明者アルゴリズムＰは、受け取った要求ＣｈＢに応じて検証者アルゴリズムＶに送り返す返答Ｒｓｐを生成する。ＣｈＢ＝０の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝ｒ０を生成する。ＣｈＢ＝１の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝ｒ１を生成する。工程＃５で生成された返答Ｒｓｐは、検証者アルゴリズムＶに送られる。
【０１８６】
工程＃６：
返答Ｒｓｐを受け取った検証者アルゴリズムＶは、受け取った返答Ｒｓｐを利用して以下の検証処理を実行する。
【０１８７】
ＣｈＢ＝０の場合、検証者アルゴリズムＶは、ｒ０←Ｒｓｐを実行する。そして、検証者アルゴリズムＶは、ｃ０＝Ｈ（ｒ０，ＣｈＡ・ｒ０−ｔ１，ＣｈＡ・Ｆ（ｒ０）−ｅ１）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、この検証が成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０１８８】
ＣｈＢ＝１の場合、検証者アルゴリズムＶは、ｒ１←Ｒｓｐを実行する。そして、検証者アルゴリズムＶは、ｃ１＝Ｈ１（ｒ１，ＣｈＡ・（ｙ−Ｆ（ｒ１））−Ｇ（ｔ１，ｒ１）−ｅ１）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、この検証が成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０１８９】
以上、５パス方式に係る効率的なアルゴリズムの構成例について説明した。このアルゴリズムを利用することにより、通信に必要なデータサイズが大幅に削減される。
【０１９０】
（３−２−２：並列化アルゴリズム（図１１））
次に、図１１を参照しながら、図１０に示した効率的なアルゴリズムを並列化する方法について説明する。なお、鍵生成アルゴリズムＧｅｎの構成については説明を省略する。
【０１９１】
先に述べた通り、５パス方式に係る対話プロトコルを適用すれば、偽証が成功する確率を（１／２＋１／ｑ）以下に抑制することができる。従って、この対話プロトコルを２回実行すれば、偽証が成功する確率を（１／２＋１／ｑ）２以下に抑制することができる。さらに、この対話プロトコルをＮ回実行すると、偽証が成功する確率は（１／２＋１／ｑ）Ｎとなり、Ｎを十分に大きい数（例えば、Ｎ＝８０）にすれば、偽証が成功する確率は無視できる程度に小さくなる。
【０１９２】
対話プロトコルを複数回実行する方法としては、例えば、メッセージ、要求、返答のやり取りを逐次的に複数回繰り返す直列的な方法と、１回分のやり取りで複数回分のメッセージ、要求、返答のやり取りを行う並列的な方法とが考えられる。ここでは、５パス方式に係る上記の対話プロトコルを並列的に実行するアルゴリズム（以下、並列化アルゴリズム）について説明する。
【０１９３】
工程＃１：
証明者アルゴリズムＰは、ｉ＝１〜Ｎについて処理（１）〜処理（４）を実行する。
処理（１）：証明者アルゴリズムＰは、ランダムにベクトルｒ０ｉ，ｔ０ｉ∈Ｋｎ及びｅ０ｉ∈Ｋｍを生成する。
処理（２）：証明者アルゴリズムＰは、ｒ１ｉ←ｓ−ｒ０ｉを計算する。この計算は、秘密鍵ｓをベクトルｒ０ｉによりマスクする操作に相当する。
処理（３）：証明者アルゴリズムＰは、ｃ０ｉ←Ｈ（ｒ０ｉ，ｔ０ｉ，ｅ０ｉ）を計算する。
処理（４）：証明者アルゴリズムＰは、ｃ１ｉ←Ｈ（ｒ１ｉ，Ｇ（ｔ０ｉ，ｒ１ｉ）＋ｅ０ｉ）を計算する。
ｉ＝１〜Ｎについて処理（１）〜処理（４）を実行した後、証明者アルゴリズムＰは、ハッシュ値Ｃｍｔ←Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を実行する。そして、工程＃１で生成されたハッシュ値Ｃｍｔは、検証者アルゴリズムＶに送られる。
【０１９４】
工程＃２：
ハッシュ値Ｃｍｔを受け取った検証者アルゴリズムＶは、ｉ＝１〜Ｎのそれぞれについて、ｑ通り存在する環Ｋの元からランダムに１つの数ＣｈＡｉを選択し、選択した数ＣｈＡｉ（ｉ＝１〜Ｎ）を証明者アルゴリズムＰに送る。
【０１９５】
工程＃３：
数ＣｈＡｉ（ｉ＝１〜Ｎ）を受け取った証明者アルゴリズムＰは、ｉ＝１〜Ｎのそれぞれについて、ｔ１ｉ←ＣｈＡｉ・ｒ０ｉ−ｔ０ｉを計算する。さらに、証明者アルゴリズムＰは、ｉ＝１〜Ｎのそれぞれについて、ｅ１ｉ←ＣｈＡｉ・Ｆ（ｒ０ｉ）−ｅ０ｉを計算する。そして、証明者アルゴリズムＰは、ｔ１１，…，ｔ１Ｎ及びｅ１１，…，ｅ１Ｎを検証者アルゴリズムＶに送る。
【０１９６】
工程＃４：
ｔ１１，…，ｔ１Ｎ及びｅ１１，…，ｅ１Ｎを受け取った検証者アルゴリズムＶは、ｉ＝１〜Ｎのそれぞれについて、２つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムＶは、検証パターンの種類を表す２つの数値｛０，１｝の中から１つの数値を選択し、選択した数値を要求ＣｈＢｉに設定する。要求ＣｈＢｉ（ｉ＝１〜Ｎ）は証明者アルゴリズムＰに送られる。
【０１９７】
工程＃５：
要求ＣｈＢｉ（ｉ＝１〜Ｎ）を受け取った証明者アルゴリズムＰは、ｉ＝１〜Ｎについて、受け取った要求ＣｈＢｉに応じて検証者アルゴリズムＶに送り返す返答Ｒｓｐｉを生成する。ＣｈＢｉ＝０の場合、証明者アルゴリズムＰは、返答Ｒｓｐｉ＝（ｒ０ｉ，ｃ１ｉ）を生成する。ＣｈＢｉ＝１の場合、証明者アルゴリズムＰは、返答Ｒｓｐｉ＝（ｒ１ｉ，ｃ０ｉ）を生成する。工程＃５で生成された返答Ｒｓｐｉ（ｉ＝１〜Ｎ）は、検証者アルゴリズムＶに送られる。
【０１９８】
工程＃６：
返答Ｒｓｐｉ（ｉ＝１〜Ｎ）を受け取った検証者アルゴリズムＶは、受け取った返答Ｒｓｐｉ（ｉ＝１〜Ｎ）を利用して以下の処理（１）及び処理（２）を実行する。
【０１９９】
処理（１）：ＣｈＢｉ＝０の場合、検証者アルゴリズムＶは、（ｒ０ｉ，ｃ１ｉ）←Ｒｓｐｉを実行する。そして、検証者アルゴリズムＶは、ｃ０ｉ＝Ｈ（ｒ０ｉ，ＣｈＡｉ・ｒ０ｉ−ｔ１ｉ，ＣｈＡｉ・Ｆ（ｒ０ｉ）−ｅ１ｉ）を計算する。そして、検証者アルゴリズムＶは、（ｃ０ｉ，ｃ１ｉ）を保持する。
【０２００】
処理（２）：ＣｈＢｉ＝１の場合、検証者アルゴリズムＶは、（ｒ１ｉ，ｃ０ｉ）←Ｒｓｐｉを実行する。そして、検証者アルゴリズムＶは、ｃ１ｉ＝Ｈ（ｒ１ｉ，ＣｈＡｉ・（ｙ−Ｆ（ｒ１ｉ））−Ｇ（ｔ１ｉ，ｒ１ｉ）−ｅ１ｉ）を計算する。そして、検証者アルゴリズムＶは、（ｃ０ｉ，ｃ１ｉ）を保持する。
【０２０１】
ｉ＝１〜Ｎについて処理（１）及び処理（２）を実行した後、検証者アルゴリズムＶは、Ｃｍｔ＝Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、この検証が成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０２０２】
以上、５パス方式に係る効率的な並列化アルゴリズムの構成例について説明した。なお、図１１に示した並列化アルゴリズムには、メッセージをハッシュ値に変換してから送信する工夫を盛り込んだ。この工夫により、通信効率が向上する。同様に、要求ＣｈＡ１，…，ＣｈＡＮ，ＣｈＢ１，…，ＣｈＢＮや返答Ｒｓｐ１，…，ＲｓｐＮなどをハッシュ値に変換してから送信するように構成を変形してもよい。このように構成を変形することで、更なる通信効率の向上が期待できる。
【０２０３】
［３−３：高次多変数多項式に基づく効率的なアルゴリズム（方式＃１）］
上記の効率的なアルゴリズムは、上記の式（８）で定義される２次多項式ｆｉの組で多変数多項式Ｆを表現することにより、上記の式（１０）で定義される多項式Ｇが双線形になるという性質を利用していた。但し、図１０に示した効率的なアルゴリズムは、公開鍵Ｆ（ｓ）をＣｈＡ倍した項がＣｈＡに依存する部分と、それ以外の部分とに分割できることを利用している。しかし、５パス方式の場合も多項式Ｇがｘかｙの少なくとも片方について線形であれば、多項式Ｇが双線形でなくとも、同様に効率的なアルゴリズムを構築することが可能である。
【０２０４】
（３次多項式ｆｉを利用した効率的なアルゴリズムの構築について）
３パス方式の場合と同様、環Ｒ上の３次多項式ｆｌを利用した効率的なアルゴリズムの構築方法について検討してみたい。３次多項式ｆｌを上記の式（１７）のように表現した場合に、Ｇｘ（ｘ，ｙ）及びＧｙ（ｘ，ｙ）がｘ及びｙについて線形になることについては式（１９）と式（２０）より分かる。
【０２０５】
そこで、上記の性質を利用し、新たな変数ｒ０，ｒ１，ｔ０，ｕ０，ｅ０を導入して、公開鍵Ｆ（ｓ）をＣｈＡ倍した項を分割する。多項式Ｇｘ，Ｇｙがそれぞれｘとｙについて線形であるから、変数ｒ０，ｒ１，ｔ０，ｕ０，ｅ０を用いて、下記の式（３２）〜式（３５）の関係が成り立つ。また、下記の式（３２）〜式（３５）は、ＣｈＡに依存する第１の部分と、ＣｈＡに依存しない第２の部分とに分けることができる。但し、第１の部分は、（ｒ１，ｔ１，ｕ１，ｅ１）で再現可能である。また、第２の部分は、（ｒ０，ｔ１，ｕ１，ｅ１）で再現可能である。
【０２０６】
例えば、下記の式（３２）に含まれる「ｅ０，Ｇｘ（ｔ０，ｒ１）」、下記の式（３３）に含まれる「ｔ０」、下記の式（３４）に含まれる「ｕ０」、下記の式（３５）に含まれる「ｅ０，Ｇｙ（ｒ０，ｕ０）」は第１の部分である。一方、下記の式（３２）に含まれる「ＣｈＡ・Ｆ（ｒ０＋ｒ１），ｅ１，ＣｈＡ・Ｆ（ｒ１），Ｇｘ（ｔ１，ｒ１）」、下記の式（３３）に含まれる「ＣｈＡ・ｒ０，ｔ１」、下記の式（３４）に含まれる「ＣｈＡ・ｒ１，ｕ１」、下記の式（３５）に含まれる「ＣｈＡ・Ｆ（ｒ０），Ｇｙ（ｒ０，ｕ１），ｅ１」は第２の部分である。
【０２０７】
また、秘密鍵ｓの定義及び下記の式（３２）〜式（３５）の関係から、（ｒ１，ｔ１，ｕ１，ｅ１）、（ｒ０，ｔ１，ｕ１，ｅ１）のいずれか１つを用いても秘密鍵ｓは得られないことが保証される。これらの性質を利用すると、例えば、環Ｒ上の３次多項式ｆｌを利用した５パス方式に係る効率的なアルゴリズム（以下、拡張アルゴリズム）を構築することができる。
【０２０８】
【数１７】
0005790287.tif 000018
【０２０９】
以下、具体的な拡張アルゴリズムの構成例について説明する。拡張アルゴリズムの設計に関する基本的なポイントは、下記の式（３６）及び式（３７）で表現されるメッセージを検証者に送ること、及び検証者が選択したＣｈＡについて、ＣｈＡに依存する部分（第１の部分）に関する検証を行うことの２点である。但し、「メッセージを生成する際に利用したｒ０及びｒ１を、検証の際に別のｒ０及びｒ１にすり替えられることを防ぐ」ために、ｒ０及びｒ１に関する検証を追加した構成例を以下で紹介する。
【０２１０】
【数１８】
0005790287.tif 000019
【０２１１】
（３−３−１：基本構成（図１２））
まず、図１２を参照しながら、５パス方式に係る拡張アルゴリズムの基本構成について説明する。なお、鍵生成アルゴリズムＧｅｎの構成については説明を省略する。
【０２１２】
工程＃１：
図１２に示すように、証明者アルゴリズムＰは、ランダムにベクトルｒ０，ｔ０，ｕ０∈Ｋｎ及びｅ０∈Ｋｍを生成する。次いで、証明者アルゴリズムＰは、ｒ１←ｓ−ｒ０を計算する。この計算は、秘密鍵ｓをベクトルｒ０によりマスクする操作に相当する。次いで、証明者アルゴリズムＰは、ｃ０←Ｈ（ｒ０，ｔ０，ｅ０−Ｇｙ（ｒ０，ｕ０））を計算する。次いで、証明者アルゴリズムＰは、ｃ１←Ｈ（ｒ１，ｕ０，Ｇｘ（ｔ０，ｒ１）＋ｅ０）を計算する。工程＃１で生成されたメッセージ（ｃ０，ｃ１）は、検証者アルゴリズムＶに送られる。
【０２１３】
工程＃２：
メッセージ（ｃ０，ｃ１）を受け取った検証者アルゴリズムＶは、ランダムに数ＣｈＡを選択する。この数ＣｈＡは証明者アルゴリズムＰに送られる。
【０２１４】
工程＃３：
数ＣｈＡを受け取った証明者アルゴリズムＰは、ｔ１←ＣｈＡ・ｒ０−ｔ０を計算する。次いで、証明者アルゴリズムＰは、ｕ１←ＣｈＡ・ｒ１−ｕ０を計算する。次いで、証明者アルゴリズムＰは、ｅ１←ＣｈＡ・Ｆ（ｒ０）＋ＣｈＡ・Ｇｙ（ｒ０，ｒ１）−ｅ０を計算する。工程＃３で生成された（ｔ１，ｕ１，ｅ１）は、検証者アルゴリズムＶに送られる。
【０２１５】
工程＃４：
（ｔ１，ｕ１，ｅ１）を受け取った検証者アルゴリズムＶは、２つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムＶは、検証パターンの種類を表す２つの数値｛０，１｝の中から１つの数値を選択し、選択した数値を要求ＣｈＢに設定する。この要求ＣｈＢは証明者アルゴリズムＰに送られる。
【０２１６】
工程＃５：
要求ＣｈＢを受け取った証明者アルゴリズムＰは、受け取った要求ＣｈＢに応じて検証者アルゴリズムＶに送る返答Ｒｓｐを生成する。ＣｈＢ＝０の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝ｒ０を生成する。ＣｈＢ＝１の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝ｒ１を生成する。工程＃５で生成された返答Ｒｓｐは、検証者アルゴリズムＶに送られる。
【０２１７】
工程＃６：
返答Ｒｓｐを受け取った検証者アルゴリズムＶは、受け取った返答Ｒｓｐを利用して以下の検証処理を実行する。
【０２１８】
ＣｈＢ＝０の場合、検証者アルゴリズムＶは、ｃ０＝Ｈ（ｒ０，ＣｈＡ・ｒ０−ｔ１，ＣｈＡ・Ｆ（ｒ０）＋Ｇｙ（ｒ０，ｕ１）−ｅ１）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、この検証が成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０２１９】
ＣｈＢ＝１の場合、検証者アルゴリズムＶは、ｃ１＝Ｈ（ｒ１，ＣｈＡ・ｒ１−ｕ１，ＣｈＡ・（ｙ−Ｆ（ｒ１））−Ｇｘ（ｔ１，ｒ１）−ｅ１）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、この検証が成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０２２０】
以上、５パス方式に係る拡張アルゴリズムの構成例について説明した。このアルゴリズムを利用することにより、通信に必要なデータサイズが大幅に削減される。また、３次多項式を利用していることにより、より高い安全性が実現されている。
【０２２１】
（３−３−２：並列化アルゴリズム（図１３））
次に、図１３を参照しながら、５パス方式に係る拡張アルゴリズムの並列化について説明する。なお、鍵生成アルゴリズムＧｅｎの構成については説明を省略する。
【０２２２】
工程＃１：
図１３に示すように、証明者アルゴリズムＰは、ｉ＝１〜Ｎについて、次の処理を実行する。まず、証明者アルゴリズムＰは、ランダムにベクトルｒ０ｉ，ｔ０ｉ，ｕ０ｉ∈Ｋｎ及びｅ０ｉ∈Ｋｍを生成する。次いで、証明者アルゴリズムＰは、ｒ１ｉ←ｓ−ｒ０ｉを計算する。この計算は、秘密鍵ｓをベクトルｒ０ｉによりマスクする操作に相当する。次いで、証明者アルゴリズムＰは、ｃ０ｉ←Ｈ（ｒ０ｉ，ｔ０ｉ，ｅ０ｉ−Ｇｙ（ｒ０ｉ，ｕ０ｉ））を計算する。次いで、証明者アルゴリズムＰは、ｃ１ｉ←Ｈ（ｒ１ｉ，ｕ０ｉ，Ｇｘ（ｔ０ｉ，ｒ１ｉ）＋ｅ０ｉ）を計算する。
【０２２３】
工程＃１（続き）：
（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を計算した後、証明者アルゴリズムＰは、ハッシュ値Ｃｍｔ←Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を計算する。工程＃１で生成されたハッシュ値Ｃｍｔは、検証者アルゴリズムＶに送られる。
【０２２４】
工程＃２：
ハッシュ値Ｃｍｔを受け取った検証者アルゴリズムＶは、ランダムに数ＣｈＡ１，…，ＣｈＡＮを選択する。数ＣｈＡ１，…，ＣｈＡＮは証明者アルゴリズムＰに送られる。
【０２２５】
工程＃３：
数ＣｈＡ１，…，ＣｈＡＮを受け取った証明者アルゴリズムＰは、ｉ＝１〜Ｎについて、次の処理を実行する。まず、証明者アルゴリズムＰは、ｔ１ｉ←ＣｈＡｉ・ｒ０ｉ−ｔ０ｉを計算する。次いで、証明者アルゴリズムＰは、ｕ１ｉ←ＣｈＡｉ・ｒ１ｉ−ｕ０ｉを計算する。次いで、証明者アルゴリズムＰは、ｅ１ｉ←ＣｈＡｉ・Ｆ（ｒ０ｉ）＋ＣｈＡｉ・Ｇｙ（ｒ０ｉ，ｒ１ｉ）−ｅ０ｉを計算する。
【０２２６】
工程＃３で生成された（ｔ１１，ｕ１１，ｅ１１，…，ｔ１Ｎ，ｕ１Ｎ，ｅ１Ｎ）は、検証者アルゴリズムＶに送られる。
【０２２７】
工程＃４：
（ｔ１１，ｕ１１，ｅ１１，…，ｔ１Ｎ，ｕ１Ｎ，ｅ１Ｎ）を受け取った検証者アルゴリズムＶは、ｉ＝１〜Ｎのそれぞれについて、２つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムＶは、ｉ＝１〜Ｎのそれぞれについて、検証パターンの種類を表す２つの数値｛０，１｝の中から１つの数値を選択し、選択した数値を要求ＣｈＢｉに設定する。要求ＣｈＢ１，…，ＣｈＢＮは証明者アルゴリズムＰに送られる。
【０２２８】
工程＃５：
要求ＣｈＢ１，…，ＣｈＢＮを受け取った証明者アルゴリズムＰは、ｉ＝１〜Ｎのそれぞれについて、受け取った要求ＣｈＢｉに応じて検証者アルゴリズムＶに送る返答Ｒｓｐｉを生成する。ＣｈＢｉ＝０の場合、証明者アルゴリズムＰは、返答Ｒｓｐｉ＝（ｒ０ｉ，ｃ１ｉ）を生成する。ＣｈＢｉ＝１の場合、証明者アルゴリズムＰは、返答Ｒｓｐｉ＝（ｒ１ｉ，ｃ０ｉ）を生成する。工程＃５で生成された返答Ｒｓｐｉは、検証者アルゴリズムＶに送られる。
【０２２９】
工程＃６：
返答Ｒｓｐｉ（ｉ＝１〜Ｎ）を受け取った検証者アルゴリズムＶは、受け取った返答Ｒｓｐｉを利用し、ｉ＝１〜Ｎについて次の処理を実行する。
【０２３０】
ＣｈＢｉ＝０の場合、検証者アルゴリズムＶは、ｃ０ｉ＝Ｈ（ｒ０ｉ，ＣｈＡｉ・ｒ０ｉ−ｔ１ｉ，ＣｈＡｉ・Ｆ（ｒ０ｉ）＋Ｇｙ（ｒ０ｉ，ｕ１ｉ）−ｅ１ｉ）を計算する。そして、検証者アルゴリズムＶは、（ｃ０ｉ，ｃ１ｉ）を保持する。
【０２３１】
ＣｈＢｉ＝１の場合、検証者アルゴリズムＶは、ｃ１ｉ＝Ｈ（ｒ１ｉ，ＣｈＡｉ・ｒ１ｉ−ｕ１ｉ，ＣｈＡｉ・（ｙ−Ｆ（ｒ１ｉ））−Ｇｘ（ｔ１ｉ，ｒ１ｉ）−ｅ１ｉ）を計算する。そして、検証者アルゴリズムＶは、（ｃ０ｉ，ｃ１ｉ）を保持する。
【０２３２】
ｉ＝１〜Ｎについて上記の処理を実行した後、検証者アルゴリズムＶは、Ｃｍｔ＝Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、この検証が成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０２３３】
以上、５パス方式に係る拡張アルゴリズムの並列化について説明した。このアルゴリズムを利用することにより、通信に必要なデータサイズが大幅に削減される。また、３次多項式を利用していることにより、より高い安全性が実現されている。
【０２３４】
［３−４：高次多変数多項式に基づく効率的なアルゴリズム（方式＃２）］
これまで、環Ｒ上の３次多項式ｆｌを利用した効率的なアルゴリズムの構築方法について説明してきた。ここでは標数ｑ及び位数ｑｋの環Ｒ上で定義される高次多項式ｆｌを利用した拡張アルゴリズムの構築方法について考える。この高次多項式ｆｌは、例えば、下記の式（３８）のように表現される。この高次多項式ｆｌを用いる場合、Ｇ（ｘ，ｙ）＝Ｆ（ｘ＋ｙ）−Ｆ（ｘ）−Ｆ（ｙ）＝（ｇ１，…，ｇｍ）で定義される多項式Ｇの成分ｇｌは、下記の式（３９）のように表現される。
【０２３５】
【数１９】
0005790287.tif 000020
【０２３６】
従って、ＣｈＡ∈Ｒについて、下記の式（４０）に示す関係が成り立つ。さらに、下記の式（４１）に示す関係も成り立つ。そこで、これらの性質（以下、準線形性と呼ぶ。）を利用し、新たな変数ｒ０，ｒ１，ｔ０ｚ，ｅ０を導入して、公開鍵Ｆ（ｓ）をＣｈＡ倍した項を分割する。多項式Ｇが準線形性を有することから、変数ｒ０，ｒ１，ｔ０ｚ，ｅ０を用いて、下記の式（４２）〜式（４４）の関係が成り立つ。また、下記の式（４２）〜式（４４）は、ＣｈＡに依存する第１の部分と、ＣｈＡに依存しない第２の部分とに分けることができる。但し、第１の部分は、（ｒ１，ｔ１ｚ，ｅ１）で再現可能である。また、第２の部分は、（ｒ０，ｔ１ｚ，ｅ１）で再現可能である。
【０２３７】
例えば、下記の式（４２）に含まれる「ｅ０，ΣＧｚ（ｔ０ｚ，ｒ１）」、下記の式（４３）に含まれる「ｔ０ｚ」、下記の式（４４）に含まれる「ｅ０」は第１の部分である。一方、下記の式（４２）に含まれる「ＣｈＡ・Ｆ（ｒ０＋ｒ１），ｅ１，ＣｈＡ・Ｆ（ｒ１），ΣＧｚ（ｔ１ｚ，ｒ１）」、下記の式（４３）に含まれる「ＣｈＡｑ（−ｚ）・ｒ０，ｔ１ｚ」（但し、ｑ（ｚ）＝ｑｚ；以下同様）、下記の式（４４）に含まれる「ＣｈＡ・Ｆ（ｒ０），ｅ１」は第２の部分である。
【０２３８】
また、秘密鍵ｓの定義及び下記の式（４２）〜式（４４）の関係から、（ｒ１，ｔ１ｚ，ｅ１）、（ｒ０，ｔ１ｚ，ｅ１）のいずれか１つを用いても秘密鍵ｓは得られないことが保証される。これらの性質を利用すると、例えば、環Ｒ上の高次多項式ｆｌを利用した５パス方式に係る効率的なアルゴリズム（以下、高次拡張アルゴリズム）を構築することができる。
【０２３９】
【数２０】
0005790287.tif 000021
【０２４０】
以下、具体的な高次拡張アルゴリズムの構成例について説明する。高次拡張アルゴリズムの設計に関する基本的なポイントは、下記の式（４５）及び式（４６）で表現されるメッセージを検証者に送ること、及び検証者が選択したＣｈＡについて、ＣｈＡに依存する部分（第１の部分）に関する検証を行うことの２点である。但し、「メッセージを生成する際に利用したｒ０及びｒ１を、検証の際に別のｒ０及びｒ１にすり替えられることを防ぐ」ために、ｒ０及びｒ１に関する検証を追加した構成例を以下で紹介する。
【０２４１】
【数２１】
0005790287.tif 000022
【０２４２】
（３−４−１：基本構成（図１４））
まず、図１４を参照しながら、５パス方式に係る高次拡張アルゴリズムの基本構成について説明する。なお、鍵生成アルゴリズムＧｅｎの構成については説明を省略する。
【０２４３】
工程＃１：
図１４に示すように、証明者アルゴリズムＰは、ランダムにベクトルｒ０，ｔ０１，…，ｔ０ｋ∈Ｋｎ及びｅ０∈Ｋｍを生成する。次いで、証明者アルゴリズムＰは、ｒ１←ｓ−ｒ０を計算する。この計算は、秘密鍵ｓをベクトルｒ０によりマスクする操作に相当する。次いで、証明者アルゴリズムＰは、ｃ０←Ｈ（ｒ０，ｔ０１，…，ｔ０ｋ，ｅ０）を計算する。次いで、証明者アルゴリズムＰは、ｃ１←Ｈ（ｒ１，ΣｚＧｚ（ｔ０ｚ，ｒ１）＋ｅ０）（但し、Σｚはｚ＝１〜ｋについての和を表す。）を計算する。工程＃１で生成されたメッセージ（ｃ０，ｃ１）は、検証者アルゴリズムＶに送られる。
【０２４４】
工程＃２：
メッセージ（ｃ０，ｃ１）を受け取った検証者アルゴリズムＶは、ランダムに数ＣｈＡを選択する。この数ＣｈＡは証明者アルゴリズムＰに送られる。
【０２４５】
工程＃３：
数ＣｈＡを受け取った証明者アルゴリズムＰは、ｚ＝１〜ｋについて、ｔ１ｚ←（ＣｈＡ）ｑ（ｚ−１）・ｒ０−ｔ０ｚを計算する。次いで、証明者アルゴリズムＰは、ｅ１←ＣｈＡ・Ｆ（ｒ０）−ｅ０を計算する。工程＃３で生成された（ｔ１１，…，ｔ１ｋ，ｅ１）は、検証者アルゴリズムＶに送られる。
【０２４６】
工程＃４：
（ｔ１１，…，ｔ１ｋ，ｅ１）を受け取った検証者アルゴリズムＶは、２つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムＶは、検証パターンの種類を表す２つの数値｛０，１｝の中から１つの数値を選択し、選択した数値を要求ＣｈＢに設定する。この要求ＣｈＢは証明者アルゴリズムＰに送られる。
【０２４７】
工程＃５：
要求ＣｈＢを受け取った証明者アルゴリズムＰは、受け取った要求ＣｈＢに応じて検証者アルゴリズムＶに送る返答Ｒｓｐを生成する。ＣｈＢ＝０の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝ｒ０を生成する。ＣｈＢ＝１の場合、証明者アルゴリズムＰは、返答Ｒｓｐ＝ｒ１を生成する。工程＃５で生成された返答Ｒｓｐは、検証者アルゴリズムＶに送られる。
【０２４８】
工程＃６：
返答Ｒｓｐを受け取った検証者アルゴリズムＶは、受け取った返答Ｒｓｐを利用して以下の検証処理を実行する。
【０２４９】
ＣｈＢ＝０の場合、検証者アルゴリズムＶは、ｃ０＝Ｈ（ｒ０，（ＣｈＡ）ｑ（０）・ｒ０−ｔ１１，…，（ＣｈＡ）ｑ（ｋ−１）・ｒ０−ｔ１ｋ，ＣｈＡ・Ｆ（ｒ０）−ｅ１）の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、この検証が成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０２５０】
ＣｈＢ＝１の場合、検証者アルゴリズムＶは、ｃ１＝Ｈ（ｒ１，ＣｈＡ・（ｙ−Ｆ（ｒ１））−ΣｚＧｚ（ｔ１ｚ，ｒ１））の等号が成り立つか否かを検証する。検証者アルゴリズムＶは、この検証が成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０２５１】
以上、５パス方式に係る高次拡張アルゴリズムの構成例について説明した。このアルゴリズムを利用することにより、通信に必要なデータサイズが大幅に削減される。また、高次多項式を利用していることにより、より高い安全性が実現されている。
【０２５２】
（３−４−２：並列化アルゴリズム（構成例１）（図１５））
次に、図１５を参照しながら、５パス方式に係る高次拡張アルゴリズムの並列化について説明する。なお、鍵生成アルゴリズムＧｅｎの構成については説明を省略する。
【０２５３】
工程＃１：
図１５に示すように、証明者アルゴリズムＰは、ｉ＝１〜Ｎについて、次の処理を実行する。まず、証明者アルゴリズムＰは、ランダムにベクトルｒ０ｉ，ｔ０１ｉ，…，ｔ０ｋｉ∈Ｋｎ及びｅ０ｉ∈Ｋｍを生成する。次いで、証明者アルゴリズムＰは、ｒ１ｉ←ｓ−ｒ０ｉを計算する。この計算は、秘密鍵ｓをベクトルｒ０ｉによりマスクする操作に相当する。次いで、証明者アルゴリズムＰは、ｃ０ｉ←Ｈ（ｒ０ｉ，ｔ０１ｉ，…，ｔ０ｋｉ，ｅ０ｉ）を計算する。次いで、証明者アルゴリズムＰは、ｃ１ｉ←Ｈ（ｒ１ｉ，ΣｚＧｚ（ｔ０ｚｉ，ｒ１ｉ）＋ｅ０ｉ）（但し、Σｚはｚ＝１〜ｋについての和を表す。）を計算する。工程＃１で生成されたメッセージ（ｃ０ｉ，ｃ１ｉ）（ｉ＝１〜Ｎ）は、検証者アルゴリズムＶに送られる。
【０２５４】
工程＃２：
メッセージ（ｃ０ｉ，ｃ１ｉ）（ｉ＝１〜Ｎ）を受け取った検証者アルゴリズムＶは、ランダムに数ＣｈＡ１，…，ＣｈＡＮを選択する。この数ＣｈＡ１，…，ＣｈＡＮは証明者アルゴリズムＰに送られる。
【０２５５】
工程＃３：
数ＣｈＡ１，…，ＣｈＡＮを受け取った証明者アルゴリズムＰは、ｉ＝１〜Ｎ及びｚ＝１〜ｋについて、ｔ１ｚｉ←（ＣｈＡｉ）ｑ（ｚ−１）・ｒ０ｉ−ｔ０ｚｉを計算する。次いで、証明者アルゴリズムＰは、ｅ１ｉ←ＣｈＡｉ・Ｆ（ｒ０ｉ）−ｅ０ｉを計算する。工程＃３で生成された（ｔ１１ｉ，…，ｔ１ｋｉ，ｅ１ｉ）（ｉ＝１〜Ｎ）は、検証者アルゴリズムＶに送られる。
【０２５６】
工程＃４：
（ｔ１１ｉ，…，ｔ１ｋｉ，ｅ１ｉ）（ｉ＝１〜Ｎ）を受け取った検証者アルゴリズムＶは、２つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムＶは、検証パターンの種類を表す２つの数値｛０，１｝の中から１つの数値を選択し、選択した数値を要求ＣｈＢｉに設定する。要求ＣｈＢｉ（ｉ＝１〜Ｎ）は証明者アルゴリズムＰに送られる。
【０２５７】
工程＃５：
要求ＣｈＢｉ（ｉ＝１〜Ｎ）を受け取った証明者アルゴリズムＰは、ｉ＝１〜Ｎのそれぞれについて、受け取った要求ＣｈＢｉに応じて検証者アルゴリズムＶに送る返答Ｒｓｐｉを生成する。ＣｈＢｉ＝０の場合、証明者アルゴリズムＰは、返答Ｒｓｐｉ＝ｒ０ｉを生成する。ＣｈＢｉ＝１の場合、証明者アルゴリズムＰは、返答Ｒｓｐｉ＝ｒ１ｉを生成する。工程＃５で生成された返答Ｒｓｐｉ（ｉ＝１〜Ｎ）は、検証者アルゴリズムＶに送られる。
【０２５８】
工程＃６：
返答Ｒｓｐｉ（ｉ＝１〜Ｎ）を受け取った検証者アルゴリズムＶは、受け取った返答Ｒｓｐｉを利用し、ｉ＝１〜Ｎについて次の認証処理を実行する。
【０２５９】
ＣｈＢｉ＝０の場合、検証者アルゴリズムＶは、ｃ０ｉ＝Ｈ（ｒ０ｉ，（ＣｈＡｉ）ｑ（０）・ｒ０ｉ−ｔ１１ｉ，…，（ＣｈＡｉ）ｑ（ｋ−１）・ｒ０ｉ−ｔ１ｋｉ，ＣｈＡｉ・Ｆ（ｒ０ｉ）−ｅ１ｉ）の等号が成り立つか否かを検証する。ＣｈＢｉ＝１の場合、検証者アルゴリズムＶは、ｃ１ｉ＝Ｈ（ｒ１ｉ，ＣｈＡｉ・（ｙ−Ｆ（ｒ１ｉ））−ΣｚＧｚ（ｔ１ｚｉ，ｒ１ｉ））の等号が成り立つか否かを検証する。
【０２６０】
検証者アルゴリズムＶは、全ての検証が成功した場合に認証成功を示す値１を出力し、検証に失敗があった場合に認証失敗を示す値０を出力する。
【０２６１】
以上、５パス方式に係る高次拡張アルゴリズムの並列化について説明した。このアルゴリズムを利用することにより、通信に必要なデータサイズが大幅に削減される。また、高次多項式を利用していることにより、より高い安全性が実現されている。
【０２６２】
（３−４−３：並列化アルゴリズム（構成例２：高効率）（図１６））
さて、図１５に示した高次拡張アルゴリズムの並列化構成において、１パス目にメッセージ（ｃ０ｉ，ｃ１ｉ）（ｉ＝１〜Ｎ）をそのまま送っていた。しかし、通信効率を考えると、メッセージ（ｃ０ｉ，ｃ１ｉ）（ｉ＝１〜Ｎ）を１つのハッシュ値に纏めて送る方が好ましい。１パス目でメッセージ（ｃ０ｉ，ｃ１ｉ）（ｉ＝１〜Ｎ）を１つのハッシュ値に纏めて送るには、図１６に示すようにアルゴリズムの構成を変形すればよい。
【０２６３】
図１６の構成例において、証明者アルゴリズムＰは、工程＃１でハッシュ値Ｃｍｔ←Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を計算している。また、証明者アルゴリズムＰは、工程＃５で返答Ｒｓｐｉを生成する際、ＣｈＢｉ＝０の場合に返答Ｒｓｐｉ＝（ｒ０ｉ，ｃ１ｉ）を生成し、ＣｈＢｉ＝１の場合に返答Ｒｓｐｉ＝（ｒ１ｉ，ｃ０ｉ）を生成している。一方、検証者アルゴリズムＶは、工程＃６において、（ＣｈＡｉ，ＣｈＢｉ，Ｒｓｐｉ）（ｉ＝１〜Ｎ）から（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を生成し、Ｃｍｔ＝（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）の等号が成り立つか否かを検証している。これらの変形を行うことにより、通信効率を高めることが可能になる。
【０２６４】
以上、高次拡張アルゴリズムに基づく効率的な並列化アルゴリズムについて説明した。
【０２６５】
（３−４−４：並列化アルゴリズム（構成例２：更に高効率）（図１７））
さて、図１５に示した高次拡張アルゴリズムの並列化構成において、１パス目にメッセージ（ｃ０ｉ，ｃ１ｉ）（ｉ＝１〜Ｎ）をそのまま送っていた。さらに、３パス目に（ｔ１１ｉ，…，ｔ１ｋｉ，ｅ１ｉ）（ｉ＝１〜Ｎ）をそのまま送っていた。しかし、通信効率を考えると、メッセージ（ｃ０ｉ，ｃ１ｉ）（ｉ＝１〜Ｎ）を１つのハッシュ値に纏めて送る方が好ましい。さらに、（ｔ１１ｉ，…，ｔ１ｋｉ，ｅ１ｉ）（ｉ＝１〜Ｎ）を１つのハッシュ値に纏めて送る方が好ましい。１パス目でメッセージ（ｃ０ｉ，ｃ１ｉ）（ｉ＝１〜Ｎ）を１つのハッシュ値に纏めて送り、３パス目で（ｔ１１ｉ，…，ｔ１ｋｉ，ｅ１ｉ）（ｉ＝１〜Ｎ）を１つのハッシュ値に纏めて送るには、図１７に示すようにアルゴリズムの構成を変形すればよい。
【０２６６】
図１７の構成例において、証明者アルゴリズムＰは、工程＃１でハッシュ値ＣｍｔＡ←Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を計算している。証明者アルゴリズムＰは、工程＃３でハッシュ値ＣｍｔＢ←Ｈ（ｔ１１１，…，ｔ１ｋＮ，ｅ１１，…，ｅ１Ｎ）を計算している。また、証明者アルゴリズムＰは、工程＃５で返答Ｒｓｐｉを生成する際、ＣｈＢｉ＝０の場合に返答Ｒｓｐｉ＝（ｒ０ｉ，ｔ０１ｉ，…，ｔ０ｋｉ，ｅ０ｉ，ｃ１ｉ）を生成し、ＣｈＢｉ＝１の場合に返答Ｒｓｐｉ＝（ｒ１ｉ，ｔ１１ｉ，…，ｔ１ｋｉ，ｅ１ｉ，ｃ０ｉ）を生成している。
【０２６７】
一方、検証者アルゴリズムＶは、工程＃６において、（ＣｈＡｉ，ＣｈＢｉ，Ｒｓｐｉ）（ｉ＝１〜Ｎ）から（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）及び（ｔ１１１，…，ｔ１ｋＮ，ｅ１１，…，ｅ１Ｎ）を生成し、ＣｍｔＡ＝（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）及びＣｍｔＢ＝（ｔ１１１，…，ｔ１ｋＮ，ｅ１１，…，ｅ１Ｎ）の等号が成り立つか否かを検証している。これらの変形を行うことにより、通信効率を更に高めることが可能になる。
【０２６８】
以上、高次拡張アルゴリズムに基づく更に効率的な並列化アルゴリズムについて説明した。
【０２６９】
以上説明した高次拡張アルゴリズムを適用することにより、より安全性が高く効率的な公開鍵認証方式を実現することが可能になる。例えば、５パス方式の拡張アルゴリズムにおいて、（ｑ，ｎ，ｍ，Ｎ）＝（２４，４５，３０，８８）とする場合、公開鍵のサイズは１２０ビット、秘密鍵のサイズは１８０ビット、通信データのサイズは２７５１２ビットとなる。
【０２７０】
同程度の安全性を担保しようとすると、５パス方式の高次拡張アルゴリズムの場合、例えば、（ｑ，ｎ，ｍ，Ｎ）＝（２２，４２，４０，１１８）の条件で済む。この条件において、公開鍵のサイズは８０ビット、秘密鍵のサイズは８４ビット、通信データのサイズは２７８１４ビットとなる。つまり、高次拡張アルゴリズムを適用することにより、通信データのサイズを同程度に維持しながら、公開鍵のサイズ及び秘密鍵のサイズを大幅に低減することが可能になる。
【０２７１】
なお、条件を（ｑ，ｎ，ｍ，Ｎ）＝（２３，２８，２７，９７）に変更してもよい。この場合、公開鍵のサイズは８１ビット、秘密鍵のサイズは８４ビット、通信データのサイズは２７１４５ビットとなる。さらに、条件を（ｑ，ｎ，ｍ，Ｎ）＝（２４，２１，２０，８８）に変更してもよい。この場合、公開鍵のサイズは８０ビット、秘密鍵のサイズは８４ビット、通信データのサイズは２８３９２ビットとなる。いずれの条件においても、大幅な効率化が達成されている。
【０２７２】
＜４：電子署名方式への変形＞
ここで、上記の公開鍵認証方式を電子署名方式へと変形する方法を紹介する。
【０２７３】
公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させると、証明者のみが検証者を納得させられるという点において、電子署名方式のモデルと近似していることが容易に理解されよう。こうした考えに基づき、上述した公開鍵認証方式を電子署名方式へと変形する方法について説明する。
【０２７４】
［４−１：３パスの公開鍵認証方式から電子署名方式への変形］
まず、３パスの公開鍵認証方式から電子署名方式への変形について説明する。
【０２７５】
（４−１−１：電子署名アルゴリズム（構成例１）（図１８））
図１８に示すように、３パス方式に係る効率的なアルゴリズム（例えば、図６及び図８を参照）は、３回の対話及び４つの工程＃１〜工程＃４で表現される。
【０２７６】
工程＃１は、ｉ＝１〜Ｎについて、ａｉ＝（ｒ０ｉ，ｔ０ｉ，ｅ０ｉ，ｒ１ｉ，ｔ１ｉ，ｅ１ｉ，ｃ０ｉ，ｃ１ｉ，ｃ２ｉ）を生成する処理（１）と、Ｃｍｔ←Ｈ（ｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎ）を計算する処理（２）とで構成される。工程＃１で証明者アルゴリズムＰにより生成されたＣｍｔは、検証者アルゴリズムＶへと送られる。
【０２７７】
工程＃２は、Ｃｈ１，…，ＣｈＮを選択する処理で構成される。工程＃２で検証者アルゴリズムＶにより選択されたＣｈ１，…，ＣｈＮは、証明者アルゴリズムＰへと送られる。
【０２７８】
工程＃３は、Ｃｈ１，…，ＣｈＮ及びａ１，…，ａＮを用いてＲｓｐ１，…，ＲｓｐＮを生成する処理で構成される。この処理をＲｓｐｉ←Ｓｅｌｅｃｔ（Ｃｈｉ，ａｉ）と表現する。工程＃３で証明者アルゴリズムＰにより生成されたＲｓｐ１，…，ＲｓｐＮは、検証者アルゴリズムＶへと送られる。
【０２７９】
工程＃４は、Ｃｈ１，…，ＣｈＮ及びＲｓｐ１，…，ＲｓｐＮを用いてｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎを再生する処理（１）と、再生したｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎを用いてＣｍｔ＝Ｈ（ｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎ）を検証する処理（２）とで構成される。
【０２８０】
上記の工程＃１〜工程＃４で表現される公開鍵認証方式のアルゴリズムは、図１８に示すような署名生成アルゴリズムＳｉｇ及び署名検証アルゴリズムＶｅｒに変形される。
【０２８１】
（署名生成アルゴリズムＳｉｇ）
まず、署名生成アルゴリズムＳｉｇの構成について述べる。署名生成アルゴリズムＳｉｇは、以下の処理（１）〜処理（５）で構成される。
【０２８２】
処理（１）：署名生成アルゴリズムＳｉｇは、ａｉ＝（ｒ０ｉ，ｔ０ｉ，ｅ０ｉ，ｒ１ｉ，ｔ１ｉ，ｅ１ｉ，ｃ０ｉ，ｃ１ｉ，ｃ２ｉ）を生成する。
処理（２）：署名生成アルゴリズムＳｉｇは、Ｃｍｔ←Ｈ（ｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎ）を計算する。
処理（３）：署名生成アルゴリズムＳｉｇは、（Ｃｈ１，…，ＣｈＮ）←Ｈ（Ｍ，Ｃｍｔ）を計算する。このＭは、署名を付与する文書である。
処理（４）：署名生成アルゴリズムＳｉｇは、Ｒｓｐｉ←Ｓｅｌｅｃｔ（Ｃｈｉ，ａｉ）を計算する。
処理（５）：署名生成アルゴリズムＳｉｇは、（Ｃｍｔ，Ｒｓｐ１，…，ＲｓｐＮ）を署名に設定する。
【０２８３】
（署名検証アルゴリズムＶｅｒ）
次に、署名検証アルゴリズムＶｅｒの構成について述べる。署名検証アルゴリズムＶｅｒは、以下の処理（１）〜処理（３）で構成される。
【０２８４】
処理（１）：署名検証アルゴリズムＶｅｒは、（Ｃｈ１，…，ＣｈＮ）←Ｈ（Ｍ，Ｃｍｔ）を計算する。
処理（２）：署名検証アルゴリズムＶｅｒは、Ｃｈ１，…，ＣｈＮ及びＲｓｐ１，…，ＲｓｐＮを用いてｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎを生成する。
処理（３）：署名検証アルゴリズムＶｅｒは、再生したｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎを用いてＣｍｔ＝Ｈ（ｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎ）を検証する。
【０２８５】
以上説明したように、公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させることで、公開鍵認証方式のアルゴリズムを電子署名方式のアルゴリズムへと変形することが可能になる。
【０２８６】
（４−１−２：電子署名アルゴリズム（構成例２：高効率）（図１９））
ところで、図１８に示した署名生成アルゴリズムＳｉｇの構成に注目すると、処理（２）及び処理（３）でハッシュ値の計算を行っていることに気づくであろう。また、署名検証アルゴリズムＶｅｒの構成に注目すると、処理（１）において、署名生成アルゴリズムＳｉｇの処理（３）と同じハッシュ値の計算を行っていることに気づくであろう。これらの処理に注目し、図１９に示すように署名生成アルゴリズムＳｉｇ及び署名検証アルゴリズムＶｅｒの構成を改良すると、さらに計算効率を向上させることができる。
【０２８７】
（署名生成アルゴリズムＳｉｇ）
まず、図１９を参照しながら、改良後の署名生成アルゴリズムＳｉｇの構成について説明する。署名生成アルゴリズムＳｉｇは、以下の処理（１）〜処理（４）で構成される。
【０２８８】
処理（１）：署名生成アルゴリズムＳｉｇは、ａｉ＝（ｒ０ｉ，ｔ０ｉ，ｅ０ｉ，ｒ１ｉ，ｔ１ｉ，ｅ１ｉ，ｃ０ｉ，ｃ１ｉ，ｃ２ｉ）を生成する。
処理（２）：署名生成アルゴリズムＳｉｇは、（Ｃｈ１，…，ＣｈＮ）←Ｈ（Ｍ，ｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎ）を計算する。このＭは、署名を付与する文書である。
処理（３）：署名生成アルゴリズムＳｉｇは、Ｒｓｐｉ←Ｓｅｌｅｃｔ（Ｃｈｉ，ａｉ）を計算する。
処理（４）：署名生成アルゴリズムＳｉｇは、（Ｃｈ１，…，ＣｈＮ，Ｒｓｐ１，…，ＲｓｐＮ）を署名に設定する。
【０２８９】
（署名検証アルゴリズムＶｅｒ）
次に、改良後の署名検証アルゴリズムＶｅｒの構成について説明する。署名検証アルゴリズムＶｅｒは、以下の処理（１）及び処理（２）で構成される。
【０２９０】
処理（１）：署名検証アルゴリズムＶｅｒは、Ｃｈ１，…，ＣｈＮ及びＲｓｐ１，…，ＲｓｐＮを用いてｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎを生成する。
処理（２）：署名検証アルゴリズムＶｅｒは、再生したｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎを用いて（Ｃｈ１，…，ＣｈＮ）＝Ｈ（ｃ０１，ｃ１１，ｃ２１，…，ｃ０Ｎ，ｃ１Ｎ，ｃ２Ｎ）を検証する。
【０２９１】
上記のように署名生成アルゴリズムＳｉｇ及び署名検証アルゴリズムＶｅｒの構成を改良することにより、各アルゴリズムにおいてハッシュ値の計算が１回ずつ削減され、計算効率が向上する。
【０２９２】
［４−２：５パスの公開鍵認証方式から電子署名方式への変形］
次に、５パスの公開鍵認証方式から電子署名方式への変形について説明する。
【０２９３】
（４−２−１：電子署名アルゴリズム（構成例１）（図２０））
図２０に示すように、５パス方式に係る効率的なアルゴリズム（例えば、図１１、図１３及び図１６を参照）は、５回の対話及び６つの工程＃１〜工程＃６で表現される。
【０２９４】
工程＃１は、ｉ＝１〜Ｎについて、ａｉ＝（ｒ０ｉ，ｔ０ｉ，ｅ０ｉ，ｒ１ｉ，ｔ１ｉ，ｅ１ｉ，ｃ０ｉ，ｃ１ｉ）を生成する処理（１）と、Ｃｍｔ←Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を計算する処理（２）とで構成される。工程＃１で証明者アルゴリズムＰにより生成されたＣｍｔは、検証者アルゴリズムＶへと送られる。
【０２９５】
工程＃２は、ＣｈＡ１，…，ＣｈＡＮを選択する処理で構成される。工程＃２で検証者アルゴリズムＶにより選択されたＣｈＡ１，…，ＣｈＡＮは、証明者アルゴリズムＰへと送られる。
【０２９６】
工程＃３は、ｉ＝１〜Ｎについて、ｂｉ＝（ｔ１ｉ，ｅ１ｉ）を生成する処理で構成される。工程＃３で証明者アルゴリズムＰにより生成されたｂ１，…，ｂＮは、検証者アルゴリズムＶへと送られる。
【０２９７】
工程＃４は、ＣｈＢ１，…，ＣｈＢＮを選択する処理で構成される。工程＃４で検証者アルゴリズムＶにより選択されたＣｈＢ１，…，ＣｈＢＮは、証明者アルゴリズムＰへと送られる。
【０２９８】
工程＃５は、ＣｈＢ１，…，ＣｈＢＮ，ａ１，…，ａＮ，ｂ１，…，ｂＮを用いてＲｓｐ１，…，ＲｓｐＮを生成する処理で構成される。この処理をＲｓｐｉ←Ｓｅｌｅｃｔ（ＣｈＢｉ，ａｉ，ｂｉ）と表現する。工程＃５で証明者アルゴリズムＰにより生成されたＲｓｐ１，…，ＲｓｐＮは、検証者アルゴリズムＶへと送られる。
【０２９９】
工程＃６は、ＣｈＡ１，…，ＣｈＡＮ，ＣｈＢ１，…，ＣｈＢＮ，Ｒｓｐ１，…，ＲｓｐＮを用いてｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎを再生する処理（１）と、再生したｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎを用いてＣｍｔ＝Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を検証する処理（２）とで構成される。
【０３００】
上記の工程＃１〜工程＃６で表現される公開鍵認証方式のアルゴリズムは、図２０に示すような署名生成アルゴリズムＳｉｇ及び署名検証アルゴリズムＶｅｒに変形される。
【０３０１】
（署名生成アルゴリズムＳｉｇ）
まず、署名生成アルゴリズムＳｉｇの構成について述べる。署名生成アルゴリズムＳｉｇは、以下の処理（１）〜処理（７）で構成される。
【０３０２】
処理（１）：署名生成アルゴリズムＳｉｇは、ａｉ＝（ｒ０ｉ，ｔ０ｉ，ｅ０ｉ，ｒ１ｉ，ｔ１ｉ，ｅ１ｉ，ｃ０ｉ，ｃ１ｉ）を生成する。
処理（２）：署名生成アルゴリズムＳｉｇは、Ｃｍｔ←Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を計算する。
処理（３）：署名生成アルゴリズムＳｉｇは、（ＣｈＡ１，…，ＣｈＡＮ）←Ｈ（Ｍ，Ｃｍｔ）を計算する。このＭは、署名を付与する文書である。
処理（４）：署名生成アルゴリズムＳｉｇは、ｉ＝１〜Ｎについて、ｂｉ＝（ｔ１ｉ，ｅ１ｉ）を生成する。
処理（５）：署名生成アルゴリズムＳｉｇは、（ＣｈＢ１，…，ＣｈＢＮ）←Ｈ（Ｍ，Ｃｍｔ，ＣｈＡ１，…，ＣｈＡＮ，ｂ１，…，ｂＮ）を計算する。なお、（ＣｈＢ１，…，ＣｈＢＮ）←Ｈ（ＣｈＡ１，…，ＣｈＡＮ，ｂ１，…，ｂＮ）と変形してもよい。
処理（６）：署名生成アルゴリズムＳｉｇは、Ｒｓｐｉ←Ｓｅｌｅｃｔ（ＣｈＢｉ，ａｉ，ｂｉ）を計算する。
処理（７）：署名生成アルゴリズムＳｉｇは、（Ｃｍｔ，ｂ１，…，ｂＮ，Ｒｓｐ１，…，ＲｓｐＮ）を電子署名に設定する。
【０３０３】
（署名検証アルゴリズムＶｅｒ）
次に、署名検証アルゴリズムＶｅｒの構成について述べる。署名検証アルゴリズムＶｅｒは、以下の処理（１）〜処理（４）で構成される。
【０３０４】
処理（１）：署名検証アルゴリズムＶｅｒは、（ＣｈＡ１，…，ＣｈＡＮ）←Ｈ（Ｍ，Ｃｍｔ）を計算する。
処理（２）：署名検証アルゴリズムＶｅｒは、（ＣｈＢ１，…，ＣｈＢＮ）←Ｈ（Ｍ，Ｃｍｔ，ＣｈＡ１，…，ＣｈＡＮ，ｂ１，…，ｂＮ）を計算する。なお、署名検証アルゴリズムＶｅｒが実行する処理（５）において、（ＣｈＢ１，…，ＣｈＢＮ）←Ｈ（ＣｈＡ１，…，ＣｈＡＮ，ｂ１，…，ｂＮ）と変形した場合、署名検証アルゴリズムＶｅｒは、（ＣｈＢ１，…，ＣｈＢＮ）←Ｈ（ＣｈＡ１，…，ＣｈＡＮ，ｂ１，…，ｂＮ）を計算する。
処理（３）：署名検証アルゴリズムＶｅｒは、ＣｈＡ１，…，ＣｈＡＮ，ＣｈＢ１，…，ＣｈＢＮ，Ｒｓｐ１，…，ＲｓｐＮを用いてｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎを生成する。
処理（４）：署名検証アルゴリズムＶｅｒは、再生したｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎを用いてＣｍｔ＝Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を検証する。
【０３０５】
以上説明したように、公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させることで、公開鍵認証方式のアルゴリズムを電子署名方式のアルゴリズムへと変形することが可能になる。
【０３０６】
（４−２−２：電子署名アルゴリズム（構成例２：高効率）（図２１））
図２１に示すように、５パス方式に係る更に効率的なアルゴリズム（例えば、図１７を参照）は、５回の対話及び６つの工程＃１〜工程＃６で表現される。
【０３０７】
工程＃１は、ｉ＝１〜Ｎについて、ａｉ＝（ｒ０ｉ，ｔ０ｉ，ｅ０ｉ，ｒ１ｉ，ｔ１ｉ，ｅ１ｉ，ｃ０ｉ，ｃ１ｉ）を生成する処理（１）と、ＣｍｔＡ←Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を計算する処理（２）とで構成される。工程＃１で証明者アルゴリズムＰにより生成されたＣｍｔＡは、検証者アルゴリズムＶへと送られる。
【０３０８】
工程＃２は、ＣｈＡ１，…，ＣｈＡＮを選択する処理で構成される。工程＃２で検証者アルゴリズムＶにより選択されたＣｈＡ１，…，ＣｈＡＮは、証明者アルゴリズムＰへと送られる。
【０３０９】
工程＃３は、ｉ＝１〜Ｎについて、ｂｉ＝（ｔ１ｉ，ｅ１ｉ）を生成する処理（１）と、ＣｍｔＢ←Ｈ（ｂ１，…，ｂＮ）を計算する処理（２）とで構成される。工程＃３で証明者アルゴリズムＰにより生成されたＣｍｔＢは、検証者アルゴリズムＶへと送られる。
【０３１０】
工程＃４は、ＣｈＢ１，…，ＣｈＢＮを選択する処理で構成される。工程＃４で検証者アルゴリズムＶにより選択されたＣｈＢ１，…，ＣｈＢＮは、証明者アルゴリズムＰへと送られる。
【０３１１】
工程＃５は、ＣｈＢ１，…，ＣｈＢＮ，ａ１，…，ａＮ，ｂ１，…，ｂＮを用いてＲｓｐ１，…，ＲｓｐＮを生成する処理で構成される。この処理をＲｓｐｉ←Ｓｅｌｅｃｔ（ＣｈＢｉ，ａｉ，ｂｉ）と表現する。工程＃５で証明者アルゴリズムＰにより生成されたＲｓｐ１，…，ＲｓｐＮは、検証者アルゴリズムＶへと送られる。
【０３１２】
工程＃６は、ＣｈＡ１，…，ＣｈＡＮ，ＣｈＢ１，…，ＣｈＢＮ，Ｒｓｐ１，…，ＲｓｐＮを用いてｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ，ｂ１，…，ｂＮを再生する処理（１）と、再生したｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎを用いてＣｍｔＡ＝Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を検証する処理（２）と、再生したｂ１，…，ｂＮを用いてＣｍｔＢ＝Ｈ（ｂ１，…，ｂＮ）を検証する処理（３）とで構成される。
【０３１３】
上記の工程＃１〜工程＃６で表現される公開鍵認証方式のアルゴリズムは、図２１に示すような署名生成アルゴリズムＳｉｇ及び署名検証アルゴリズムＶｅｒに変形される。
【０３１４】
（署名生成アルゴリズムＳｉｇ）
まず、署名生成アルゴリズムＳｉｇの構成について述べる。署名生成アルゴリズムＳｉｇは、以下の処理（１）〜処理（８）で構成される。
【０３１５】
処理（１）：署名生成アルゴリズムＳｉｇは、ａｉ＝（ｒ０ｉ，ｔ０ｉ，ｅ０ｉ，ｒ１ｉ，ｔ１ｉ，ｅ１ｉ，ｃ０ｉ，ｃ１ｉ）を生成する。
処理（２）：署名生成アルゴリズムＳｉｇは、ＣｍｔＡ←Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を計算する。
処理（３）：署名生成アルゴリズムＳｉｇは、（ＣｈＡ１，…，ＣｈＡＮ）←Ｈ（Ｍ，ＣｍｔＡ）を計算する。このＭは、署名を付与する文書である。
処理（４）：署名生成アルゴリズムＳｉｇは、ｉ＝１〜Ｎについて、ｂｉ＝（ｔ１ｉ，ｅ１ｉ）を生成する。
処理（５）：署名生成アルゴリズムＳｉｇは、ＣｍｔＢ←Ｈ（ｂ１，…，ｂＮ）を計算する。
処理（６）：署名生成アルゴリズムＳｉｇは、（ＣｈＢ１，…，ＣｈＢＮ）←Ｈ（Ｍ，Ｃｍｔ，ＣｈＡ１，…，ＣｈＡＮ，ＣｍｔＢ）を計算する。なお、（ＣｈＢ１，…，ＣｈＢＮ）←Ｈ（ＣｈＡ１，…，ＣｈＡＮ，ＣｍｔＢ）と変形してもよい。
処理（７）：署名生成アルゴリズムＳｉｇは、Ｒｓｐｉ←Ｓｅｌｅｃｔ（ＣｈＢｉ，ａｉ，ｂｉ）を計算する。
処理（８）：署名生成アルゴリズムＳｉｇは、（ＣｍｔＡ，ＣｍｔＢ，Ｒｓｐ１，…，ＲｓｐＮ）を電子署名に設定する。
【０３１６】
（署名検証アルゴリズムＶｅｒ）
次に、署名検証アルゴリズムＶｅｒの構成について述べる。署名検証アルゴリズムＶｅｒは、以下の処理（１）〜処理（５）で構成される。
【０３１７】
処理（１）：署名検証アルゴリズムＶｅｒは、（ＣｈＡ１，…，ＣｈＡＮ）←Ｈ（Ｍ，ＣｍｔＡ）を計算する。
処理（２）：署名検証アルゴリズムＶｅｒは、（ＣｈＢ１，…，ＣｈＢＮ）←Ｈ（Ｍ，ＣｍｔＡ，ＣｈＡ１，…，ＣｈＡＮ，ＣｍｔＢ）を計算する。なお、署名検証アルゴリズムＶｅｒが実行する処理（６）において、（ＣｈＢ１，…，ＣｈＢＮ）←Ｈ（ＣｈＡ１，…，ＣｈＡＮ，ＣｍｔＢ）と変形した場合、署名検証アルゴリズムＶｅｒは、（ＣｈＢ１，…，ＣｈＢＮ）←Ｈ（ＣｈＡ１，…，ＣｈＡＮ，ＣｍｔＢ）を計算する。
処理（３）：署名検証アルゴリズムＶｅｒは、ＣｈＡ１，…，ＣｈＡＮ，ＣｈＢ１，…，ＣｈＢＮ，Ｒｓｐ１，…，ＲｓｐＮを用いてｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ，ｂ１，…，ｂＮを生成する。
処理（４）：署名検証アルゴリズムＶｅｒは、再生したｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎを用いてＣｍｔＡ＝Ｈ（ｃ０１，ｃ１１，…，ｃ０Ｎ，ｃ１Ｎ）を検証する。
処理（５）：署名検証アルゴリズムＶｅｒは、再生したｂ１，…，ｂＮを用いてＣｍｔＢ＝Ｈ（ｂ１，…，ｂＮ）を検証する。
【０３１８】
以上説明したように、公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させることで、公開鍵認証方式のアルゴリズムを電子署名方式のアルゴリズムへと変形することが可能になる。
【０３１９】
＜５：ハイブリッド型アルゴリズム＞
偽証が成功する確率を無視できる程度にまで小さくするために、対話プロトコルを複数回実行する必要性については既に説明した通りである。また、対話プロトコルを複数回実行する方法として、直列的な方法と並列的な方法とを紹介した。特に、並列的な方法については、具体的な並列化アルゴリズムを示して説明した。ここでは、直列的な方法と並列的な方法とを組み合わせたハイブリッド型のアルゴリズムを紹介する。
【０３２０】
［５−１：３パスの公開鍵認証方式に係るハイブリッド型アルゴリズム］
まず、３パスの公開鍵認証方式に係るハイブリッド型アルゴリズムについて説明する。
【０３２１】
（５−１−１：並直列アルゴリズム（図２２））
図２２を参照しながら、ハイブリッド型の一構成例（以下、並直列構成）について説明する。図２２には、基本構成のアルゴリズム及び並直列構成のアルゴリズムを示した。
【０３２２】
基本構成の場合、１パス目にメッセージＣｍｔが証明者から検証者へと送られる。２パス目では、検証者から証明者へと要求Ｃｈが送られる。３パス目では、証明者から検証者へと返答Ｒｓｐが送られる。
【０３２３】
一方、並直列構成の場合、１パス目にＮ回分のメッセージ（Ｃｍｔ１，…，ＣｍｔＮ）が証明者から検証者へと送られる。２パス目では、検証者から証明者へと１回分の要求Ｃｈ１が送られる。３パス目では、証明者から検証者へと１回分の返答Ｒｓｐ１が送られる。その後、証明者と検証者との間で要求Ｃｈ２，…，ＣｈＮ及び返答Ｒｓｐ２，…，ＲｓｐＮのやり取りが逐次的に行われる。
【０３２４】
これまで説明してきた公開鍵認証方式のアルゴリズムに基づく並直列構成の場合、受動的攻撃に対する安全性が保証される。また、対話の回数が２Ｎ＋１回で済む。さらに、１パス目で送信されるＮ回分のメッセージを１つのハッシュ値に纏めると、通信効率を向上させることができる。
【０３２５】
（５−１−２：直並列アルゴリズム（図２３））
図２３を参照しながら、ハイブリッド型の他の一構成例（以下、直並列構成）について説明する。図２３には、基本構成のアルゴリズム及び直並列構成のアルゴリズムを示した。
【０３２６】
基本構成の場合、１パス目にメッセージＣｍｔが証明者から検証者へと送られる。２パス目では、検証者から証明者へと要求Ｃｈが送られる。３パス目では、証明者から検証者へと返答Ｒｓｐが送られる。
【０３２７】
直並列構成の場合、１パス目に１回分のメッセージＣｍｔ１が証明者から検証者へと送られる。２パス目では、検証者から証明者へと１回分の要求Ｃｈ１が送られる。その後、証明者と検証者との間でメッセージＣｍｔ２，…，ＣｍｔＮ及び要求Ｃｈ２，…，ＣｈＮのやり取りが逐次的に行われる。要求ＣｈＮが検証者から証明者へと送られた後、証明者から検証者へとＮ回分の返答Ｒｓｐ２，…，ＲｓｐＮが送られる。
【０３２８】
これまで説明してきた公開鍵認証方式のアルゴリズムに基づく直並列構成の場合、能動的攻撃に対する安全性が保証される。また、対話の回数が２Ｎ＋１回で済む。
【０３２９】
［５−２：５パスの公開鍵認証方式に係るハイブリッド型アルゴリズム］
次に、５パスの公開鍵認証方式に係るハイブリッド型アルゴリズムについて説明する。
【０３３０】
（５−２−１：並直列アルゴリズム（構成例＃１）（図２４））
まず、図２４を参照しながら、ハイブリッド型の一構成例（以下、並直列構成＃１）について説明する。図２４には、基本構成のアルゴリズム及び並直列構成＃１のアルゴリズムを示した。
【０３３１】
基本構成の場合、１パス目にメッセージＣｍｔＡが証明者から検証者へと送られる。２パス目では、検証者から証明者へと数ＣｈＡが送られる。３パス目では、証明者から検証者へとベクトルＣｍｔＢが送られる。４パス目では、検証者から証明者へと要求ＣｈＢが送られる。５パス目では、証明者から検証者へと返答Ｒｓｐが送られる。
【０３３２】
並直列構成＃１の場合、１パス目にＮ回分のメッセージ（ＣｍｔＡ１，…，ＣｍｔＡＮ）が証明者から検証者へと送られる。２パス目では、検証者から証明者へと１回分の数ＣｈＡ１が送られる。３パス目では、証明者から検証者へと１回分のベクトルＣｍｔＢ１が送られる。４パス目では、検証者から証明者へと１回分の要求ＣｈＢ１が送られる。５パス目では、証明者から検証者へと１回分の返答Ｒｓｐ１が送られる。その後、証明者と検証者との間で、ＣｈＡ２，…，ＣｈＡＮ，ＣｍｔＢ２，…，ＣｍｔＢＮ，ＣｈＢ２，…，ＣｈＢＮ，Ｒｓｐ２，…，ＲｓｐＮのやり取りが逐次的に行われる。
【０３３３】
並直列構成＃１の場合、受動的攻撃に対する安全性が保証される。また、対話の回数が４Ｎ＋１回で済む。さらに、１パス目で送信されるＮ回分のメッセージを１つのハッシュ値に纏めることにより、通信効率を向上させることができる。
【０３３４】
（５−２−２：並直列アルゴリズム（構成例＃２）（図２５））
次に、図２５を参照しながら、ハイブリッド型の他の一構成例（以下、並直列構成＃２）について説明する。図２５には、基本構成のアルゴリズム及び並直列構成＃２のアルゴリズムを示した。
【０３３５】
並直列構成＃２の場合、１パス目にＮ回分のメッセージ（ＣｍｔＡ１，…，ＣｍｔＡＮ）が証明者から検証者へと送られる。２パス目では、検証者から証明者へとＮ回分の数（ＣｈＡ１，…，ＣｈＡＮ）が送られる。３パス目では、証明者から検証者へとＮ回分のベクトル（ＣｍｔＢ１，…，ＣｍｔＢＮ）が送られる。４パス目では、検証者から証明者へと１回分の要求ＣｈＢ１が送られる。５パス目では、証明者から検証者へと１回分の返答Ｒｓｐ１が送られる。その後、証明者と検証者との間で、ＣｈＢ２，…，ＣｈＢＮ，Ｒｓｐ２，…，ＲｓｐＮのやり取りが逐次的に行われる。
【０３３６】
並直列構成＃２の場合、受動的攻撃に対する安全性が保証される。また、対話の回数が２Ｎ＋３回で済む。さらに、１パス目で送信されるＮ回分のメッセージや３パス目で送信されるＮ回分のベクトルなどを１つのハッシュ値に纏めることにより、通信効率を向上させることができる。
【０３３７】
（５−２−３：直並列アルゴリズム（構成例＃１）（図２６））
次に、図２６を参照しながら、ハイブリッド型の他の一構成例（以下、直並列構成＃１）について説明する。図２６には、基本構成のアルゴリズム及び直並列構成＃１のアルゴリズムを示した。
【０３３８】
直並列構成＃１の場合、１パス目に１回分のメッセージＣｍｔＡ１が証明者から検証者へと送られる。２パス目では、検証者から証明者へと１回分の数ＣｈＡ１が送られる。３パス目では、証明者から検証者へと１回分のベクトルＣｍｔＢ１が送られる。４パス目では、検証者から証明者へと１回分の要求ＣｈＢ１が送られる。その後、証明者と検証者との間で、ＣｍｔＡ２，…，ＣｍｔＡＮ，ＣｈＡ２，…，ＣｈＡＮ，ＣｍｔＢ２，…，ＣｍｔＢＮ，ＣｈＢ２，…，ＣｈＢＮのやり取りが逐次的に行われる。最後に、証明者から検証者へとＮ回分の返答（Ｒｓｐ１…，ＲｓｐＮ）が送られる。
【０３３９】
直並列構成＃１の場合、能動的攻撃に対する安全性が保証される。また、対話の回数が４Ｎ＋１回で済む。
【０３４０】
（５−２−４：直並列アルゴリズム（構成例＃２）（図２７））
次に、図２７を参照しながら、ハイブリッド型の他の一構成例（以下、直並列構成＃２）について説明する。図２７には、基本構成のアルゴリズム及び直並列構成＃２のアルゴリズムを示した。
【０３４１】
直並列構成＃２の場合、１パス目に１回分のメッセージＣｍｔＡ１が証明者から検証者へと送られる。２パス目では、検証者から証明者へと１回分の数ＣｈＡ１が送られる。その後、証明者と検証者との間で、ＣｍｔＡ２，…，ＣｍｔＡＮ，ＣｈＡ２，…，ＣｈＡＮのやり取りが逐次的に行われる。ＣｈＡＮのやり取りを終えた後、証明者から検証者へとＮ回分のベクトル（ＣｍｔＢ１，…，ＣｍｔＢＮ）が送られる。次いで、検証者から証明者へとＮ回分の要求（ＣｈＢ１，…，ＣｈＢ１）が送られる。最後に、証明者から検証者へとＮ回分の返答（Ｒｓｐ１…，ＲｓｐＮ）が送られる。
【０３４２】
直並列構成＃２の場合、能動的攻撃に対する安全性が保証される。また、対話の回数が２Ｎ＋３回で済む。
【０３４３】
以上、５パスの公開鍵認証方式に係るハイブリッド型アルゴリズムについて説明した。
【０３４４】
＜６：補遺＞
ここで、上記の公開鍵認証方式に関する説明の補足を行う。
【０３４５】
［６−１：パラメータの設定方法］
ここで、パラメータの設定方法について説明を補足する。
【０３４６】
（多変数多項式の係数について）
これまで、多変数多項式の係数又はその係数の生成に利用する乱数シード（以下、多変数多項式の係数など）をどのように設定するかについては詳しく言及してこなかった。多変数多項式の係数などは、システムに共通のパラメータとしてもよいし、ユーザ毎に異なるパラメータとしてもよい。
【０３４７】
しかし、多変数多項式の係数などをシステムに共通のパラメータとすると、その多変数多項式に脆弱性が見つかった場合、システム全体について設定を更新する必要が生じてしまう。また、ランダムに選んだ係数を持つ多変数多項式について、平均的な頑強性（解くことの難しさ）は解析されているが、ある特定の係数を持つ多変数多項式について十分な頑強性を有することを保証することは難しい。
【０３４８】
そこで、本件発明者は、各ユーザが選択した文字列などを擬似乱数生成器のシードに利用して多変数多項式の係数を生成する仕組みを考案した。例えば、ユーザのｅ−ｍａｉｌアドレスをシードに利用したり、ｅ−ｍａｉｌアドレスと更新日時などとを結合した文字列をシードに利用したりする方法などが考えられる。このような方法を用いると、万が一、ある文字列から生成された係数を持つ多変数多項式に脆弱性が見つかった場合でも、その係数を持つ多変数多項式を利用しているユーザのみに影響が限定される。また、文字列を変えるだけで多変数多項式が変更されるため、容易に脆弱性を解消することができる。
【０３４９】
以上、システムパラメータの設定方法について説明した。なお、上記の説明では文字列を例に挙げたが、ユーザ毎に異なる数字の列や記号の列を利用してもよい。
【０３５０】
（多項式の数ｍ及び変数の数ｎについて）
ところで、これまで説明してきた対話プロトコルは、受動的攻撃に対する安全性が保証されている。しかし、この対話プロトコルを並列的に繰り返し実行する場合、能動的攻撃に対する安全性が確実に保証されることを証明できるようにするには、以下で述べる条件が必要になる。
【０３５１】
上記の対話プロトコルは、１組の鍵ペア（公開鍵ｙ、秘密鍵ｓ）を用いて、「証明者がｙについてｙ＝Ｆ（ｓ）となるｓを知っていること」を検証者に検証させるためのアルゴリズムであった。そのため、検証で受理される対話を行った場合、「対話の際に証明者がｓを用いた」という情報を検証者に知られてしまう可能性が否定できない。また、多変数多項式Ｆについて衝突困難性が保証されてない。そのため、上記の対話プロトコルを並列的に繰り返し実行する場合、能動的攻撃に対する安全性が確実に保証されていることを無条件で証明することは難しい。
【０３５２】
そこで、本件発明者は、検証で受理される対話を行った場合においても、「対話の際に証明者がｓを用いた」という情報を検証者に知られないようにする方法について検討した。そして、本件発明者は、上記の対話プロトコルを並列的に繰り返し実行する場合においても、能動的攻撃に対する安全性を保証することが可能になる方法を考案した。この方法は、公開鍵として用いる多変数多項式ｆ１，…，ｆｍの数ｍをその変数の数ｎよりも十分に小さな値に設定するというものである。例えば、２ｍ−ｎ≪１となるようにｍ及びｎが設定される（例えば、ｎ＝１６０、ｍ＝８０の場合２−８０≪１である。）。
【０３５３】
多次多変数方程式の求解問題に対する解答の困難性に安全性の根拠をおく方式において、秘密鍵ｓ１と、それに対応する公開鍵ｐｋとが与えられても、その公開鍵ｐｋに対応する別の秘密鍵ｓ２を生成することは難しい。そのため、公開鍵ｐｋに対する秘密鍵ｓが２つ以上存在することを保証すれば、検証で受理される対話を行った場合においても、「対話の際に証明者がｓを用いた」という情報を検証者に知られないようにすることが可能になる。つまり、この保証が成り立てば、対話プロトコルを並列的に繰り返し実行する場合においても、能動的攻撃に対する安全性を保証することが可能になる。
【０３５４】
図２９を参照しながら、ｍ本のｎ変数多次多項式で構成される関数Ｆ：Ｋｎ→Ｋｍについて考えると（但し、ｎ＞ｍ）、２つ目の原像を持たない定義域の要素数は、最大で｜Ｋ｜ｍ−１個しか存在しない。そのため、｜Ｋ｜ｍ−ｎを十分に小さくすると、２つ目の原像を持たない定義域の要素が選択される確率を無視できる程度にまで小さくすることができる。つまり、ｎ変数多次多項式ｆ１，…，ｆｍの数ｍがその変数の数ｎよりも十分に小さな値に設定されていれば、公開鍵ｐｋに対して２つ以上の秘密鍵ｓが存在することを保証できる。その結果、検証で受理される対話を行った場合においても、「対話の際に証明者がｓを用いた」という情報を検証者に知られないようにすることが可能になり、対話プロトコルを並列的に繰り返し実行する場合においても、能動的攻撃に対する安全性が保証される。
【０３５５】
以上説明したように、ｎ変数多次多項式ｆ１，…，ｆｍの数ｍがその変数の数ｎよりも小さな値（ｎ＞ｍ；好ましくは２ｍ−ｎ≪１）に設定する設定条件を課すことで、対話プロトコルを並列的に繰り返し実行する場合の安全性を保証することが可能になる。
【０３５６】
［６−２：イレギュラーな要求に対する応答方法］
ここで、イレギュラーな要求に対する応答方法について考察する。
【０３５７】
（６−２−１：証明者による応答方法について）
対話プロトコルの中で検証者が偽りの要求を投げかけてくる可能性について考えてみよう。例えば、３パス方式の場合、証明者が検証者へとメッセージ（ｃ０，ｃ１，ｃ２）を送り、検証者が証明者へと要求Ｃｈ＝０を送った後、証明者から検証者へと要求Ｃｈ＝０に対応する返答Ｒｓｐが送られる。ここまでは正常な対話である。
【０３５８】
その後で、検証者が、証明者に要求Ｃｈ＝１に対応する返答Ｒｓｐをさらに要求したものとしよう。もし、この要求に応じ、証明者が要求Ｃｈ＝１に対応する返答Ｒｓｐを検証者に送ってしまうと、秘密鍵が検証者に漏洩してしまう。このような秘密鍵の漏洩は現実的に起こりうることである。例えば、検証者は、２パス目で要求Ｃｈ＝１を送信したのではなく、要求Ｃｈ＝０を送信したはずだと偽って、要求Ｃｈ＝１に対応する返答Ｒｓｐをさらに要求するかもしれない。一方、証明者は、２パス目で送信された要求Ｃｈのビットが通信エラーにより別のビットになってしまったと勘違いするかもしれない。
【０３５９】
そこで、本件発明者は、秘密鍵の漏洩が生じるのを避ける方法として、１回分のメッセージについて証明者が２通り以上の要求Ｃｈに対応する返答を求めてきた場合に、対話を終了するか、或いは、新しい乱数を利用して１パス目から対話をやり直す方法を考案した。この方法を適用すれば、検証者が偽って２通り以上の要求Ｃｈに対応する返答を求めてきても、秘密鍵が漏洩することはなくなる。
【０３６０】
（６−２−２：検証者による応答方法について）
次に、証明者が偽って要求Ｃｈの再送を要求してくる可能性について考えてみよう。例えば、３パス方式において、証明者が検証者へとメッセージ（ｃ０，ｃ１，ｃ２）を送り、検証者が証明者へと要求Ｃｈ＝０を送った後、証明者が要求Ｃｈの再送を要求してきたとしよう。この要求に応じて、検証者が再びランダムに要求Ｃｈを選択すると、先に送った要求Ｃｈ＝０とは異なる要求Ｃｈ＝１が選択される可能性がある。この場合、検証者から証明者へと要求Ｃｈ＝１が送られる。仮に、証明者が要求Ｃｈ＝１に対応する返答Ｒｓｐを検証者に送ることができたとしよう。
【０３６１】
この場合、証明者は、要求Ｃｈ＝１には回答できるが、要求Ｃｈ＝０には回答できなかったのかもしれない。つまり、証明者が偽証している可能性が否定できない。例えば、証明者は、要求Ｃｈを紛失してしまったので要求Ｃｈを再送して欲しいと検証者に求めるかもしれない。一方、検証者は、通信エラーにより先に送信した要求が紛失したと考え、証明者の求めに応じて要求Ｃｈを再送してしまうかもしれない。そして、再送した要求Ｃｈが先に送信した要求Ｃｈと異なるものである場合、偽証が成功してしまう。
【０３６２】
この例から分かるように、要求Ｃｈがランダムに選ばれることで、証明者に偽証の機会を与えてしまう。そこで、本件発明者は、偽証の機会を与えないようにするため、１回分のメッセージについて証明者が要求Ｃｈの送信を再度求めてきた場合に、検証者が対話を終了するか、或いは、新たな乱数を生成せずに前回と同じ要求Ｃｈを再送するように対話プロトコルを改良する方法を考案した。この方法を適用すると、要求Ｃｈの再送要求を利用した偽証の機会をなくすことができる。
【０３６３】
以上、イレギュラーな要求に対する安全な応答方法について説明した。なお、上記の説明においては３パスの基本構成を例に挙げたが、直列的な繰り返し構成、並列的な繰り返し構成、或いは、ハイブリッド型の繰り返し構成についても同様の工夫を加えることにより、安全性を向上させることができる。もちろん、５パスのアルゴリズムについても同様である。
【０３６４】
＜７：ハードウェア構成例＞
上記の各アルゴリズムは、例えば、図２８に示す情報処理装置のハードウェア構成を用いて実行することが可能である。つまり、当該各アルゴリズムの処理は、コンピュータプログラムを用いて図２８に示すハードウェアを制御することにより実現される。なお、このハードウェアの形態は任意であり、例えば、パーソナルコンピュータ、携帯電話、ＰＨＳ、ＰＤＡ等の携帯情報端末、ゲーム機、接触式又は非接触式のＩＣチップ、接触式又は非接触式のＩＣカード、又は種々の情報家電がこれに含まれる。但し、上記のＰＨＳは、Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙ−ｐｈｏｎｅ  Ｓｙｓｔｅｍの略である。また、上記のＰＤＡは、Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔの略である。
【０３６５】
図２８に示すように、このハードウェアは、主に、ＣＰＵ９０２と、ＲＯＭ９０４と、ＲＡＭ９０６と、ホストバス９０８と、ブリッジ９１０と、を有する。さらに、このハードウェアは、外部バス９１２と、インターフェース９１４と、入力部９１６と、出力部９１８と、記憶部９２０と、ドライブ９２２と、接続ポート９２４と、通信部９２６と、を有する。但し、上記のＣＰＵは、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略である。また、上記のＲＯＭは、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙの略である。そして、上記のＲＡＭは、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略である。
【０３６６】
ＣＰＵ９０２は、例えば、演算処理装置又は制御装置として機能し、ＲＯＭ９０４、ＲＡＭ９０６、記憶部９２０、又はリムーバブル記録媒体９２８に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ＲＯＭ９０４は、ＣＰＵ９０２に読み込まれるプログラムや演算に用いるデータ等を格納する手段である。ＲＡＭ９０６には、例えば、ＣＰＵ９０２に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等が一時的又は永続的に格納される。
【０３６７】
これらの構成要素は、例えば、高速なデータ伝送が可能なホストバス９０８を介して相互に接続される。一方、ホストバス９０８は、例えば、ブリッジ９１０を介して比較的データ伝送速度が低速な外部バス９１２に接続される。また、入力部９１６としては、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等が用いられる。さらに、入力部９１６としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラ（以下、リモコン）が用いられることもある。
【０３６８】
出力部９１８としては、例えば、ＣＲＴ、ＬＣＤ、ＰＤＰ、又はＥＬＤ等のディスプレイ装置、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置である。但し、上記のＣＲＴは、Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅの略である。また、上記のＬＣＤは、Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙの略である。そして、上記のＰＤＰは、Ｐｌａｓｍａ  ＤｉｓｐｌａｙＰａｎｅｌの略である。さらに、上記のＥＬＤは、Ｅｌｅｃｔｒｏ−Ｌｕｍｉｎｅｓｃｅｎｃｅ  Ｄｉｓｐｌａｙの略である。
【０３６９】
記憶部９２０は、各種のデータを格納するための装置である。記憶部９２０としては、例えば、ハードディスクドライブ（ＨＤＤ）等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等が用いられる。但し、上記のＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略である。
【０３７０】
ドライブ９２２は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体９２８に記録された情報を読み出し、又はリムーバブル記録媒体９２８に情報を書き込む装置である。リムーバブル記録媒体９２８は、例えば、ＤＶＤメディア、Ｂｌｕ−ｒａｙメディア、ＨＤ  ＤＶＤメディア、各種の半導体記憶メディア等である。もちろん、リムーバブル記録媒体９２８は、例えば、非接触型ＩＣチップを搭載したＩＣカード、又は電子機器等であってもよい。但し、上記のＩＣは、Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略である。
【０３７１】
接続ポート９２４は、例えば、ＵＳＢポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ、ＲＳ−２３２Ｃポート、又は光オーディオ端子等のような外部接続機器９３０を接続するためのポートである。外部接続機器９３０は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はＩＣレコーダ等である。但し、上記のＵＳＢは、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓの略である。また、上記のＳＣＳＩは、Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅの略である。
【０３７２】
通信部９２６は、ネットワーク９３２に接続するための通信デバイスであり、例えば、有線又は無線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、又はＷＵＳＢ用の通信カード、光通信用のルータ、ＡＤＳＬ用のルータ、又は接触又は非接触通信用のデバイス等である。また、通信部９２６に接続されるネットワーク９３２は、有線又は無線により接続されたネットワークにより構成され、例えば、インターネット、家庭内ＬＡＮ、赤外線通信、可視光通信、放送、又は衛星通信等である。但し、上記のＬＡＮは、Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋの略である。また、上記のＷＵＳＢは、Ｗｉｒｅｌｅｓｓ  ＵＳＢの略である。そして、上記のＡＤＳＬは、Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅの略である。
【０３７３】
＜８：まとめ＞
最後に、本技術の実施形態に係る技術内容について簡単に纏める。ここで述べる技術内容は、例えば、ＰＣ、携帯電話、ゲーム機、情報端末、情報家電、カーナビゲーションシステム等、種々の情報処理装置に対して適用することができる。なお、以下で述べる情報処理装置の機能は、１台の情報処理装置を利用して実現することも可能であるし、複数台の情報処理装置を利用して実現することも可能である。また、以下で述べる情報処理装置が処理を実行する際に用いるデータ記憶手段及び演算処理手段は、当該情報処理装置に設けられたものであってもよいし、ネットワークを介して接続された機器に設けられたものであってもよい。
【０３７４】
上記の情報処理装置の機能構成は以下のように表現される。例えば、下記（１）に記載の情報処理装置は、多次多変数連立方程式の求解困難性に安全性の根拠を置く効率的な公開鍵認証方式に係るアルゴリズムを実行する機能を有する。
【０３７５】
（１）
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｓ∈Ｋｎに基づいてメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組Ｆ及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する検証者に前記メッセージを提供するメッセージ提供部と、
前記検証者がランダムに選択した第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて第３の情報を生成する中間情報生成部と、
前記検証者に前記第３の情報を提供する中間情報提供部と、
ｋ通り（ｋ≧２）の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、
を備え、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
情報処理装置。
【０３７６】
（２）
前記メッセージ生成部は、Ｎ回分（Ｎ≧２）のメッセージを生成し、
前記メッセージ提供部は、Ｎ回分の前記メッセージを１回の対話で前記検証者に提供し、
前記中間情報生成部は、Ｎ回分の前記メッセージのそれぞれについて前記検証者が選択した前記第１の情報及び前記メッセージを生成する際に得られるＮ回分の前記第２の情報を用いてＮ回分の前記第３の情報を生成し、
前記中間情報提供部は、Ｎ回分の前記第３の情報を１回の対話で検証者に提供し、
前記回答提供部は、Ｎ回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するＮ回分の前記回答情報を１回の対話で前記検証者に提供する、
上記（１）に記載の情報処理装置。
【０３７７】
（３）
前記メッセージ生成部は、Ｎ回分（Ｎ≧２）のメッセージを生成すると共に、Ｎ回分の前記メッセージから１つのハッシュ値を生成し、
前記メッセージ提供部は、前記ハッシュ値を前記検証者に提供し、
前記中間情報生成部は、Ｎ回分の前記メッセージのそれぞれについて前記検証者が選択した前記第１の情報及び前記メッセージを生成する際に得られるＮ回分の前記第２の情報を用いてＮ回分の前記第３の情報を生成し、
前記中間情報提供部は、Ｎ回分の前記第３の情報を１回の対話で検証者に提供し、
前記回答提供部は、Ｎ回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するＮ回分の前記回答情報、及び、前記公開鍵及び前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを１回の対話で前記検証者に提供する、
上記（２）に記載の情報処理装置。
【０３７８】
（４）
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する情報保持部と、
前記多次多変数多項式の組Ｆ及びベクトルｓ∈Ｋｎに基づいて生成されたメッセージを取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、ランダムに選択した第１の情報を提供する情報提供部と、
前記第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて前記証明者が生成した第３の情報を取得する中間情報取得部と、
ｋ通り（ｋ≧３）の検証パターンの中からランダムに選択した１つの検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得部と、
前記メッセージ、前記第１の情報、前記第３の情報、前記多次多変数多項式の組Ｆ、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
情報処理装置。
【０３７９】
（５）
前記メッセージ取得部は、Ｎ回分（Ｎ≧２）の前記メッセージを１回の対話で取得し、
前記情報提供部は、Ｎ回分の前記メッセージのそれぞれについて前記第１の情報をランダムに選択し、選択したＮ回分の前記第１の情報を１回の対話で前記証明者に提供し、
前記中間情報取得部は、Ｎ回分の前記第１の情報及びＮ回分の前記メッセージを生成する際に得られるＮ回分の前記第２の情報を用いて前記証明者が生成したＮ回分の前記第３の情報を取得し、
前記パターン情報提供部は、Ｎ回分の前記メッセージのそれぞれについて検証パターンを選択し、選択したＮ回分の検証パターンの情報を１回の対話で前記証明者に提供し、
前記回答取得部は、前記選択したＮ回分の検証パターンに対応するＮ回分の前記回答情報を１回の対話で前記証明者から取得し、
前記検証部は、Ｎ回分の前記メッセージの全てについて検証が成功した場合に、前記証明者が前記ベクトルｓを保持していると判定する、
上記（４）に記載の情報処理装置。
【０３８０】
（６）
前記メッセージ取得部は、Ｎ回分（Ｎ≧２）の前記メッセージから生成された１つのハッシュ値を取得し、
前記情報提供部は、Ｎ回分の前記メッセージのそれぞれについて前記第１の情報をランダムに選択し、選択したＮ回分の前記第１の情報を１回の対話で前記証明者に提供し、
前記中間情報取得部は、Ｎ回分の前記第１の情報及びＮ回分の前記メッセージを生成する際に得られるＮ回分の前記第２の情報を用いて前記証明者が生成したＮ回分の前記第３の情報を取得し、
前記パターン情報提供部は、Ｎ回分の前記メッセージのそれぞれについて検証パターンを選択し、選択したＮ回分の検証パターンの情報を１回の対話で前記証明者に提供し、
前記回答取得部は、前記選択した検証パターンに対応する回答情報、及び、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを前記証明者から取得し、
前記検証部は、前記ハッシュ値、前記一部のメッセージ、前記公開鍵、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証し、Ｎ回分の前記メッセージの全てについて検証が成功した場合に、前記証明者が前記ベクトルｓを保持していると判定する、
上記（５）に記載の情報処理装置。
【０３８１】
（７）
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｓ∈Ｋｎに基づいてメッセージを生成するステップと、
前記多次多変数多項式の組Ｆ及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する検証者に前記メッセージを提供するステップと、
前記検証者がランダムに選択した第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて第３の情報を生成するステップと、
前記検証者に前記第３の情報を提供するステップと、
ｋ通り（ｋ≧２）の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、
を含み、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
情報処理方法。
【０３８２】
（８）
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する情報処理装置が、
前記多次多変数多項式の組Ｆ及びベクトルｓ∈Ｋｎに基づいて生成されたメッセージを取得するステップと、
前記メッセージを提供した証明者に対し、ランダムに選択した第１の情報を提供するステップと、
前記第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて前記証明者が生成した第３の情報を取得するステップと、
ｋ通り（ｋ≧３）の検証パターンの中からランダムに選択した１つの検証パターンの情報を前記証明者に提供するステップと、
前記選択した検証パターンに対応する回答情報を前記証明者から取得するステップと、
前記メッセージ、前記第１の情報、前記第３の情報、前記多次多変数多項式の組Ｆ、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証するステップと、
を含み、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
情報処理方法。
【０３８３】
（９）
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｓ∈Ｋｎに基づいてメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組Ｆ及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する検証者に前記メッセージを提供するメッセージ提供機能と、
前記検証者がランダムに選択した第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて第３の情報を生成する中間情報生成機能と、
前記検証者に前記第３の情報を提供する中間情報提供機能と、
ｋ通り（ｋ≧２）の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
プログラム。
【０３８４】
（１０）
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する情報保持機能と、
前記多次多変数多項式の組Ｆ及びベクトルｓ∈Ｋｎに基づいて生成されたメッセージを取得するメッセージ取得機能と、
前記メッセージを提供した証明者に対し、ランダムに選択した第１の情報を提供する情報提供機能と、
前記第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて前記証明者が生成した第３の情報を取得する中間情報取得機能と、
ｋ通り（ｋ≧３）の検証パターンの中からランダムに選択した１つの検証パターンの情報を前記証明者に提供するパターン情報提供機能と、
前記選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得部と、
前記メッセージ、前記第１の情報、前記第３の情報、前記多次多変数多項式の組Ｆ、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
プログラム。
【０３８５】
（１１）
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｓ∈Ｋｎに基づいてメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組Ｆ及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する検証者に前記メッセージを提供するメッセージ提供機能と、
前記検証者がランダムに選択した第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて第３の情報を生成する中間情報生成機能と、
前記検証者に前記第３の情報を提供する中間情報提供機能と、
ｋ通り（ｋ≧２）の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムが記録された、コンピュータにより読み取り可能な記録媒体であり、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
記録媒体。
【０３８６】
（１２）
多次多変数多項式の組Ｆ＝（ｆ１，…，ｆｍ）及びベクトルｙ＝（ｙ１，…，ｙｍ）＝（ｆ１（ｓ），…，ｆｍ（ｓ））を保持する情報保持機能と、
前記多次多変数多項式の組Ｆ及びベクトルｓ∈Ｋｎに基づいて生成されたメッセージを取得するメッセージ取得機能と、
前記メッセージを提供した証明者に対し、ランダムに選択した第１の情報を提供する情報提供機能と、
前記第１の情報及び前記メッセージを生成する際に得られる第２の情報を用いて前記証明者が生成した第３の情報を取得する中間情報取得機能と、
ｋ通り（ｋ≧３）の検証パターンの中からランダムに選択した１つの検証パターンの情報を前記証明者に提供するパターン情報提供機能と、
前記選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得部と、
前記メッセージ、前記第１の情報、前記第３の情報、前記多次多変数多項式の組Ｆ、及び前記回答情報に基づいて前記証明者が前記ベクトルｓを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムが記録された、コンピュータにより読み取り可能な記録媒体であり、
前記ベクトルｓは秘密鍵であり、
前記多次多変数多項式の組Ｆ及び前記ベクトルｙは公開鍵であり、
前記メッセージは、前記公開鍵、前記第１の情報、前記第３の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記多次多変数多項式の組Ｆは、標数ｑ及び位数ｑｋの環Ｒ上で定義される多項式ｆ１，…，ｆｍで構成され、ベクトルｘｌ＝（ｘｌ１，…，ｘｌｎ）（ｌ＝１，２）についてＧ（ｘ１，ｘ２）＝Ｆ（ｘ１＋ｘ２）−Ｆ（ｘ１）−Ｆ（ｘ２）で定義される多項式Ｇ（ｘ１，ｘ２）が、（ｘ１ｉ）ｑ（ｚ）（但し、１≦ｉ≦ｎ、ｑ（ｚ）＝ｑｚ、１≦ｚ≦ｋ）に比例する項で構成されるように設定されている、
記録媒体。
【０３８７】
（１３）
前記ｍ及びｎは、ｍ＜ｎの関係を有する、
上記（１）〜（６）のいずれか１項に記載の装置。
【０３８８】
（１４）
前記ｍ及びｎは、２ｍ−ｎ≪１の関係を有する、
上記（１３）に記載の装置。
【０３８９】
（備考）
上記の証明者アルゴリズムＰは、メッセージ生成部、メッセージ提供部、回答提供部、中間情報生成部、中間情報提供部の一例である。また、上記の検証者アルゴリズムＶは、情報保持部、メッセージ取得部、パターン情報提供部、回答取得部、検証部、中間情報取得部の一例である。
【０３９０】
以上、添付図面を参照しながら本技術の好適な実施形態について説明したが、本技術は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本技術の技術的範囲に属するものと了解される。
【符号の説明】
【０３９１】
Ｇｅｎ    鍵生成アルゴリズム
Ｐ        証明者アルゴリズム
Ｖ        検証者アルゴリズム
Ｓｉｇ    署名生成アルゴリズム
Ｖｅｒ    署名検証アルゴリズム
【図１】
0005790287.tif 000023
【図２】
0005790287.tif 000024
【図３】
0005790287.tif 000025
【図４】
0005790287.tif 000026
【図５】
0005790287.tif 000027
【図６】
0005790287.tif 000028
【図７】
0005790287.tif 000029
【図８】
0005790287.tif 000030
【図９】
0005790287.tif 000031
【図１０】
0005790287.tif 000032
【図１１】
0005790287.tif 000033
【図１２】
0005790287.tif 000034
【図１３】
0005790287.tif 000035
【図１４】
0005790287.tif 000036
【図１５】
0005790287.tif 000037
【図１６】
0005790287.tif 000038
【図１７】
0005790287.tif 000039
【図１８】
0005790287.tif 000040
【図１９】
0005790287.tif 000041
【図２０】
0005790287.tif 000042
【図２１】
0005790287.tif 000043
【図２２】
0005790287.tif 000044
【図２３】
0005790287.tif 000045
【図２４】
0005790287.tif 000046
【図２５】
0005790287.tif 000047
【図２６】
0005790287.tif 000048
【図２７】
0005790287.tif 000049
【図２８】
0005790287.tif 000050
【図２９】
0005790287.tif 000051