情報処理装置、署名生成装置、情報処理方法、署名生成方法、及びプログラム
【課題】少ないメモリで高い安全性を有する効率的な公開鍵認証方式及び電子署名方式を実現すること。
【解決手段】
シードから乱数の組を発生させる乱数生成部と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成部と、前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供部と、を備え、前記署名生成部は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、署名生成装置が提供される。
【解決手段】
シードから乱数の組を発生させる乱数生成部と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成部と、前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供部と、を備え、前記署名生成部は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、署名生成装置が提供される。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、情報処理装置、署名生成装置、情報処理方法、署名生成方法、及びプログラムに関する。
【背景技術】
【0002】
情報処理技術や通信技術の急速な発展に伴い、公文書、私文書を問わず、文書の電子化が急速に進んでいる。これに伴い、多くの個人や企業は、電子文書の安全管理に大きな関心を寄せている。こうした関心の高まりを受け、各方面で電子文書の盗聴や偽造等のタンパリング行為に対する対抗策が盛んに研究されるようになってきた。電子文書の盗聴に対しては、例えば、電子文書を暗号化することにより安全性が確保される。また、電子文書の偽造に対しては、例えば、電子署名を利用することにより安全性が確保される。但し、利用する暗号や電子署名が高いタンパリング耐性を有していなければ、十分な安全性が保証されない。
【0003】
電子署名は、電子文書の作成者を特定するために利用される。そのため、電子署名は、電子文書の作成者しか生成できないようにすべきである。仮に、悪意ある第三者が同じ電子署名を生成できてしまうと、その第三者が電子文書の作成者に成りすますことができてしまう。つまり、悪意ある第三者により電子文書が偽造されてしまう。こうした偽造を防止するため、電子署名の安全性については様々な議論が交わされてきた。現在広く利用されている電子署名方式としては、例えば、RSA署名方式やDSA署名方式などが知られている。
【0004】
RSA署名方式は、「大きな合成数に対する素因数分解の困難性(以下、素因数分解問題)」を安全性の根拠とする。また、DSA署名方式は、「離散対数問題に対する解の導出の困難性」を安全性の根拠とする。これらの根拠は、古典的なコンピュータを利用して素因数分解問題や離散対数問題を効率的に解くアルゴリズムが存在しないことに起因する。つまり、上記の困難性は、古典的なコンピュータにおける計算量的な困難性を意味する。しかしながら、量子コンピュータを用いると、素因数分解問題や離散対数問題に対する解答が効率的に算出されてしまうと言われている。
【0005】
現在利用されている電子署名方式や公開鍵認証方式の多くは、RSA署名方式やDSA署名方式と同様、素因数分解問題や離散対数問題の困難性に安全性の根拠をおいている。そのため、こうした電子署名方式や公開鍵認証方式は、量子コンピュータが実用化された場合に、その安全性が確保されないことになる。そこで、素因数分解問題や離散対数問題など、量子コンピュータにより容易に解かれてしまう問題とは異なる問題に安全性の根拠をおく新たな電子署名方式及び公開鍵認証方式の実現が求められている。量子コンピュータにより容易に解くことが難しい問題としては、例えば、多変数多項式問題がある。
【0006】
多変数多項式問題に安全性の根拠をおく電子署名方式としては、例えば、MI(Matsumoto−Imai cryptography)、HFE(Hidden Field Equation cryptography)、OV(Oil−Vinegar signature scheme)、TTM(Tamed Transformation Method cryptography)に基づく方式が知られている。例えば、下記の非特許文献1、2には、HFEに基づく電子署名方式が開示されている。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】Jacques Patarin Asymmetric Cryptography with a Hidden Monomial. CRYPTO 1996, pp.45−60.
【非特許文献2】Patarin, J., Courtois, N., and Goubin, L. QUARTZ, 128−Bit Long Digital Signatures. In Naccache,D., Ed. Topics in Cryptology − CT−RSA 2001 (San Francisco, CA, USA, April 2001), vol. 2020 of Lecture Notes in Computer Science, Springer−Verlag., pp.282−297.
【発明の概要】
【発明が解決しようとする課題】
【0008】
上記の通り、多変数多項式問題は、量子コンピュータを用いても解くことが困難なNP困難問題と呼ばれる問題の一例である。通常、HFEなどに代表される多変数多項式問題を利用した公開鍵認証方式は、特殊なトラップドアが仕込まれた多次多変数連立方程式を利用している。例えば、x1,…,xnに関する多次多変数連立方程式F(x1,…,xn)=yと線形変換A及びBが用意され、線形変換A及びBが秘密に管理される。この場合、多次多変数連立方程式F、線形変換A及びBがトラップドアとなる。
【0009】
トラップドアF,A,Bを知っているエンティティは、x1,…,xnに関する方程式B(F(A(x1,…,xn)))=y’を解くことができる。一方、トラップドアF,A,Bを知らないエンティティは、x1,…,xnに関する方程式B(F(A(x1,…,xn)))=y’を解くことができない。この仕組みを利用することにより、多次多変数連立方程式の解答困難性を安全性の根拠とする公開鍵認証方式や電子署名方式が実現される。
【0010】
上記の通り、こうした公開鍵認証方式や電子署名方式を実現するには、B(F(A(x1,…,xn)))=yを満たすような特殊な多次多変数連立方程式を用意する必要がある。また、署名生成時に多次多変数連立方程式Fを解く必要がある。そのため、利用可能な多次多変数連立方程式Fは、比較的容易に解けるものに限られていた。すなわち、これまでの方式においては、比較的容易に解ける3つの関数(トラップドア)B、F、Aを合成した形の多次多変数連立方程式B(F(A(x1,…,xn)))=yしか用いることができず、十分な安全性を確保することが難しかった。
【0011】
本技術は、上記の事情に鑑みて、効率的に解く手段(トラップドア)が知られていない多次多変数連立方程式を用いて高い安全性を有する効率的な公開鍵認証方式又は電子署名方式を少ないメモリで実現することが可能な、新規かつ改良された情報処理装置、署名生成装置、情報処理方法、署名生成方法、及びプログラムの提供を意図して考案されたものである。
【課題を解決するための手段】
【0012】
本技術のある観点によれば、シードから乱数の組を発生させる乱数生成部と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成部と、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供部と、k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記メッセージ生成部は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、情報処理装置が提供される。
【0013】
また、本技術の別の観点によれば、シードから乱数の組を発生させる乱数生成部と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成部と、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供部と、前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成する中間情報生成部と、前記検証者に前記第3の情報を提供する中間情報提供部と、k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記メッセージ生成部は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、情報処理装置が提供される。
【0014】
また、本技術の別の観点によれば、シードから乱数の組を発生させる乱数生成部と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成部と、前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供部と、を備え、前記署名生成部は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、署名生成装置が提供される。
【0015】
また、本技術の別の観点によれば、シードから乱数の組を発生させるステップと、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するステップと、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するステップと、k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、を含み、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記生成するステップでは、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、情報処理方法が提供される。
【0016】
また、本技術の別の観点によれば、シードから乱数の組を発生させるステップと、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するステップと、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するステップと、前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成するステップと、前記検証者に前記第3の情報を提供するステップと、k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、を含み、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記メッセージを生成するステップでは、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、情報処理方法が提供される。
【0017】
また、本技術の別の観点によれば、シードから乱数の組を発生させるステップと、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成するステップと、前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供するステップと、を含み、前記生成するステップでは、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、署名生成方法が提供される。
【0018】
また、本技術の別の観点によれば、シードから乱数の組を発生させる乱数生成機能と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成機能と、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供機能と、k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、をコンピュータに実現させるためのプログラムであり、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記メッセージ生成機能は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、プログラムが提供される。
【0019】
また、本技術の別の観点によれば、シードから乱数の組を発生させる乱数生成機能と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成機能と、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供機能と、前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成する中間情報生成機能と、前記検証者に前記第3の情報を提供する中間情報提供機能と、k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、をコンピュータに実現させるためのプログラムであり、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記メッセージ生成機能は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、プログラムが提供される。
【0020】
また、本技術の別の観点によれば、シードから乱数の組を発生させる乱数生成機能と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成機能と、前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供機能と、をコンピュータに実現させるためのプログラムであり、前記署名生成機能は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、プログラムが提供される。
【0021】
また、本技術の別の観点によれば、上記のプログラムが記録された、コンピュータにより読み取り可能な記録媒体が提供される。
【0022】
また、本技術の別の観点によれば、上記のプログラムが記録された、コンピュータにより読み取り可能な記録媒体が提供される。
【発明の効果】
【0023】
以上説明したように本技術によれば、効率的に解く手段(トラップドア)が知られていない多次多変数連立方程式を用いて、高い安全性を有する効率的な公開鍵認証方式又は電子署名方式を実現することが可能になる。
【図面の簡単な説明】
【0024】
【図1】公開鍵認証方式に係るアルゴリズムの構成について説明するための説明図である。
【図2】電子署名方式に係るアルゴリズムの構成について説明するための説明図である。
【図3】nパスの公開鍵認証方式に係るアルゴリズムの構成について説明するための説明図である。
【図4】3パスの公開鍵認証方式に係る効率的なアルゴリズムについて説明するための説明図である。
【図5】3パスの公開鍵認証方式に係る効率的なアルゴリズムの並列化について説明するための説明図である。
【図6】5パスの公開鍵認証方式に係る効率的なアルゴリズムの構成例について説明するための説明図である。
【図7】5パスの公開鍵認証方式に係る効率的なアルゴリズムの並列化について説明するための説明図である。
【図8】3パスの公開鍵認証方式に係る効率的なアルゴリズムを電子署名方式のアルゴリズムに変形する方法について説明するための説明図である。
【図9】5パスの公開鍵認証方式に係る効率的なアルゴリズムを電子署名方式のアルゴリズムに変形する方法について説明するための説明図である。
【図10】3パス方式に係る中間変数の管理方法について説明するための説明図である。
【図11】5パス方式に係る中間変数の管理方法について説明するための説明図である。
【図12】本実施形態に係る中間変数の管理方法を3パス方式の基本構成に適用する方法について説明するための説明図である。
【図13】本実施形態に係る中間変数の管理方法を3パス方式の基本構成に適用する方法について説明するための説明図である。
【図14】本実施形態に係る中間変数の管理方法を3パス方式の基本構成に適用する方法について説明するための説明図である。
【図15】本実施形態に係る中間変数の管理方法を3パス方式の並列化構成に適用する方法について説明するための説明図である。
【図16】本実施形態に係る中間変数の管理方法を3パス方式の並列化構成に適用する方法について説明するための説明図である。
【図17】本実施形態に係る中間変数の管理方法を5パス方式の基本構成に適用する方法について説明するための説明図である。
【図18】本実施形態に係る中間変数の管理方法を5パス方式の基本構成に適用する方法について説明するための説明図である。
【図19】本実施形態に係る中間変数の管理方法を5パス方式の基本構成に適用する方法について説明するための説明図である。
【図20】本実施形態に係る中間変数の管理方法を5パス方式の基本構成に適用する方法について説明するための説明図である。
【図21】本実施形態に係る中間変数の管理方法を5パス方式の並列化構成に適用する方法について説明するための説明図である。
【図22】本実施形態に係る中間変数の管理方法を5パス方式の並列化構成に適用する方法について説明するための説明図である。
【図23】本実施形態に係る中間変数の管理方法を5パス方式の並列化構成に適用する方法について説明するための説明図である。
【図24】本実施形態の一変形例に係る中間変数の管理方法について説明するための説明図である。
【図25】本実施形態の一変形例に係る中間変数の管理方法について説明するための説明図である。
【図26】本実施形態の一変形例に係る中間変数の管理方法について説明するための説明図である。
【図27】本実施形態の一変形例に係る中間変数の管理方法について説明するための説明図である。
【図28】本実施形態の一変形例に係る中間変数の管理方法について説明するための説明図である。
【図29】本技術の各実施形態に係るアルゴリズムを実行することが可能な情報処理装置のハードウェア構成例について説明するための説明図である。
【発明を実施するための形態】
【0025】
以下に添付図面を参照しながら、本技術の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0026】
[説明の流れについて]
ここで、以下に記載する本技術の実施形態に関する説明の流れについて簡単に述べる。まず、図1を参照しながら、公開鍵認証方式のアルゴリズム構成について説明する。次いで、図2を参照しながら、電子署名方式のアルゴリズム構成について説明する。次いで、図3を参照しながら、nパスの公開鍵認証方式について説明する。
【0027】
次いで、図4及び図5を参照しながら、3パスの公開鍵認証方式に係るアルゴリズムの構成例について説明する。次いで、図6及び図7を参照しながら、5パスの公開鍵認証方式に係るアルゴリズムの構成例について説明する。次いで、図8及び図9を参照しながら、3パス及び5パスの公開鍵認証方式に係る効率的なアルゴリズムを電子署名方式のアルゴリズムに変形する方法について説明する。
【0028】
次いで、図10〜図28を参照しながら、本実施形態に係る中間変数の管理方法について説明する。次いで、図29を参照しながら、本技術の第1及び第2実施形態に係る各アルゴリズムを実現することが可能な情報処理装置のハードウェア構成例について説明する。最後に、本実施形態の技術的思想について纏め、当該技術的思想から得られる作用効果について簡単に説明する。
【0029】
(説明項目)
1:はじめに
1−1:公開鍵認証方式のアルゴリズム
1−2:電子署名方式のアルゴリズム
1−3:nパスの公開鍵認証方式
2:3パスの公開鍵認証方式に係るアルゴリズムの構成
2−1:具体的なアルゴリズムの構成例
2−2:並列化アルゴリズムの構成例
3:5パスの公開鍵認証方式に係るアルゴリズムの構成
3−1:具体的なアルゴリズムの構成例
3−2:並列化アルゴリズムの構成例
4:電子署名方式への変形
4−1:3パスの公開鍵認証方式から電子署名方式への変形
4−2:5パスの公開鍵認証方式から電子署名方式への変形
5:中間変数の効率的な管理方法
5−1:概要
5−2:適用例#1(3パス方式の基本構成への適用)
5−3:適用例#2(3パス方式の並列化構成への適用)
5−4:適用例#3(5パス方式の基本構成への適用)
5−5:適用例#4(5パス方式v並列化構成への適用)
5−6:適用例#5(電子署名方式への適用)
5−7:変形例A(ハッシュ関数の構造を考慮した構成)
5−7−1:3パス方式への適用
5−7−2:5パス方式への適用
5−8:変形例B(シードの決め方)
6:ハードウェア構成例
7:まとめ
【0030】
<1:はじめに>
本実施形態は、多次多変数連立方程式に対する求解問題の困難性に安全性の根拠をおく公開鍵認証方式及び電子署名方式に関する。但し、本実施形態は、HFE電子署名方式などの従来手法とは異なり、効率的に解く手段(トラップドア)を持たない多次多変数連立方程式を利用する公開鍵認証方式及び電子署名方式に関する。まず、公開鍵認証方式のアルゴリズム、電子署名方式のアルゴリズム、及びnパスの公開鍵認証方式について、その概要を簡単に説明する。
【0031】
[1−1:公開鍵認証方式のアルゴリズム]
まず、図1を参照しながら、公開鍵認証方式のアルゴリズムについて概要を説明する。図1は、公開鍵認証方式のアルゴリズムについて概要を説明するための説明図である。
【0032】
公開鍵認証は、ある人(証明者)が、公開鍵pk及び秘密鍵skを利用して、他の人(検証者)に本人であることを納得させるために利用される。例えば、証明者Aの公開鍵pkAは、検証者Bに公開される。一方、証明者Aの秘密鍵skAは、証明者Aにより秘密に管理される。公開鍵認証の仕組みにおいては、公開鍵pkAに対応する秘密鍵skAを知る者が証明者A本人であるとみなされる。
【0033】
公開鍵認証の仕組みを利用して証明者Aが証明者A本人であることを検証者Bに証明するには、対話プロトコルを介して、証明者Aが公開鍵pkAに対応する秘密鍵skAを知っているという証拠を検証者Bに提示すればよい。そして、証明者Aが秘密鍵skAを知っているという証拠が検証者Bに提示され、その証拠を検証者Bが確認し終えた場合、証明者Aの正当性(本人であること)が証明されたことになる。
【0034】
但し、公開鍵認証の仕組みには、安全性を担保するために以下の条件が求められる。
【0035】
1つ目の条件は、「対話プロトコルを実行した際に秘密鍵skを持たない偽証者により偽証が成立してしまう確率を限りなく小さくする」ことである。この1つ目の条件が成り立つことを「健全性」と呼ぶ。つまり、健全性とは、「秘密鍵skを持たない偽証者により、対話プロトコルの実行中に無視できない確率で偽証が成立することはないこと」と言い換えられる。2つ目の条件は、「対話プロトコルを実行したとしても、証明者Aが有する秘密鍵skAの情報が検証者Bに一切漏れることがない」ことである。この2つ目の条件が成り立つことを「零知識性」と呼ぶ。
【0036】
安全に公開鍵認証を行うには、健全性及び零知識性を有する対話プロトコルを利用する必要がある。仮に、健全性及び零知識性を有しない対話プロトコルを用いて認証処理を行った場合には、偽証された可能性及び秘密鍵の情報が漏れてしまった可能性が否定できないため、処理自体が成功裡に完了しても証明者の正当性を証明したことにはならない。従って、対話プロトコルの健全性及び零知識性を如何に保証するかが重要になる。
【0037】
(モデル)
公開鍵認証方式のモデルには、図1に示すように、証明者と検証者という2つのエンティティが存在する。証明者は、鍵生成アルゴリズムGenを用いて、証明者固有の秘密鍵skと公開鍵pkの組を生成する。次いで、証明者は、鍵生成アルゴリズムGenを用いて生成した秘密鍵skと公開鍵pkの組を利用して検証者と対話プロトコルを実行する。このとき、証明者は、証明者アルゴリズムPを利用して対話プロトコルを実行する。上記の通り、証明者は、証明者アルゴリズムPを利用し、対話プロトコルの中で秘密鍵skを保有している証拠を検証者に提示する。
【0038】
一方、検証者は、検証者アルゴリズムVを利用して対話プロトコルを実行し、証明者が公開している公開鍵に対応する秘密鍵を、その証明者が保有しているか否かを検証する。つまり、検証者は、証明者が公開鍵に対応する秘密鍵を保有しているか否かを検証するエンティティである。このように、公開鍵認証方式のモデルは、証明者と検証者という2つのエンティティ、及び、鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVという3つのアルゴリズムにより構成される。
【0039】
なお、以下の説明において、「証明者」「検証者」という表現を用いるが、これらの表現はあくまでもエンティティを意味するものである。従って、鍵生成アルゴリズムGen、証明者アルゴリズムPを実行する主体は、「証明者」のエンティティに対応する情報処理装置である。同様に、検証者アルゴリズムVを実行する主体は、情報処理装置である。これら情報処理装置のハードウェア構成は、例えば、図10に示した通りである。つまり、鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVは、ROM904、RAM906、記憶部920、リムーバブル記録媒体928などに記録されたプログラムに基づいてCPU902などにより実行される。
【0040】
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、証明者により利用される。鍵生成アルゴリズムGenは、証明者に固有の秘密鍵skと公開鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された公開鍵pkは公開される。そして、公開された公開鍵pkは、検証者により利用される。一方、鍵生成アルゴリズムGenにより生成された秘密鍵skは、証明者が秘密に管理する。そして、証明者により秘密に管理される秘密鍵skは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するために利用される。形式的に、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、秘密鍵skと公開鍵pkを出力するアルゴリズムとして、下記の式(1)のように表現される。
【0041】
【数1】
【0042】
(証明者アルゴリズムP)
証明者アルゴリズムPは、証明者により利用される。証明者アルゴリズムPは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するためのアルゴリズムである。つまり、証明者アルゴリズムPは、秘密鍵skと公開鍵pkとを入力とし、対話プロトコルを実行するアルゴリズムである。
【0043】
(検証者アルゴリズムV)
検証者アルゴリズムVは、検証者により利用される。検証者アルゴリズムVは、対話プロトコルの中で、公開鍵pkに対応する秘密鍵skを証明者が保有しているか否かを検証するアルゴリズムである。検証者アルゴリズムVは、公開鍵pkを入力とし、対話プロトコルの実行結果に応じて0又は1(1bit)を出力するアルゴリズムである。なお、検証者は、検証者アルゴリズムVが0を出力した場合には証明者が不正なものであると判断し、1を出力した場合には証明者が正当なものであると判断する。形式的に、検証者アルゴリズムVは、下記の式(2)のように表現される。
【0044】
【数2】
【0045】
上記の通り、意味のある公開鍵認証を実現するには、対話プロトコルが健全性及び零知識性という2つの条件を満たしている必要がある。しかし、証明者が秘密鍵skを保有していることを証明するためには、証明者が秘密鍵skに依存した手続きを実行し、その結果を検証者に通知した上で、その通知内容に基づく検証を検証者に実行させる必要がある。秘密鍵skに依存した手続きを実行するのは、健全性を担保するために必要である。一方で、秘密鍵skの情報が一切検証者に漏れないようにする必要がある。そのため、これらの要件を満たすように、上記の鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVを巧妙に設計する必要がある。
【0046】
以上、公開鍵認証方式のアルゴリズムについて、その概要を説明した。
【0047】
[1−2:電子署名方式のアルゴリズム]
次に、図2を参照しながら、電子署名方式のアルゴリズムについて概要を説明する。図2は、電子署名方式のアルゴリズムについて概要を説明するための説明図である。
【0048】
紙文書とは異なり、ある電子化されたデータに対して押印したり署名を記載したりすることはできない。そのため、電子化されたデータの作成者を証明するためには、紙文書に押印したり署名を記載したりするのと同等の効果が得られる電子的な仕組みを必要とする。この仕組みが電子署名である。電子署名とは、データの作成者しか知らない署名データをデータに関連付けて受領者に提供し、その署名データを受領者側で検証する仕組みのことを言う。
【0049】
(モデル)
電子署名方式のモデルには、図2に示すように、署名者及び検証者という2つのエンティティが存在する。そして、電子署名方式のモデルは、鍵生成アルゴリズムGen、署名生成アルゴリズムSig、署名検証アルゴリズムVerという3つのアルゴリズムにより構成される。
【0050】
署名者は、鍵生成アルゴリズムGenを利用して署名者固有の署名鍵skと検証鍵pkとの組を生成する。また、署名者は、署名生成アルゴリズムSigを利用して文書Mに付与する電子署名σを生成する。つまり、署名者は、文書Mに電子署名を付与するエンティティである。一方、検証者は、署名検証アルゴリズムVerを利用して文書Mに付与された電子署名σを検証する。つまり、検証者は、文書Mの作成者が署名者であるか否かを確認するために、電子署名σを検証するエンティティである。
【0051】
なお、以下の説明において、「署名者」「検証者」という表現を用いるが、これらの表現はあくまでもエンティティを意味するものである。従って、鍵生成アルゴリズムGen、署名生成アルゴリズムSigを実行する主体は、「署名者」のエンティティに対応する情報処理装置である。同様に、署名検証アルゴリズムVerを実行する主体は、情報処理装置である。これら情報処理装置のハードウェア構成は、例えば、図10に示した通りである。つまり、鍵生成アルゴリズムGen、署名生成アルゴリズムSig、署名検証アルゴリズムVerは、ROM904、RAM906、記憶部920、リムーバブル記録媒体928などに記録されたプログラムに基づいてCPU902などにより実行される。
【0052】
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、署名者により利用される。鍵生成アルゴリズムGenは、署名者固有の署名鍵skと検証鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された検証鍵pkは公開される。一方、鍵生成アルゴリズムGenにより生成された署名鍵skは、署名者により秘密に管理される。そして、署名鍵skは、文書Mに付与される電子署名σの生成に利用される。例えば、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、署名鍵sk及び公開鍵pkを出力する。この場合、鍵生成アルゴリズムGenは、形式的に、下記の式(3)のように表現することができる。
【0053】
【数3】
【0054】
(署名生成アルゴリズムSig)
署名生成アルゴリズムSigは、署名者により利用される。署名生成アルゴリズムSigは、文書Mに付与される電子署名σを生成するアルゴリズムである。署名生成アルゴリズムSigは、署名鍵skと文書Mとを入力とし、電子署名σを出力するアルゴリズムである。この署名生成アルゴリズムSigは、形式的に、下記の式(4)のように表現することができる。
【0055】
【数4】
【0056】
(署名検証アルゴリズムVer)
署名検証アルゴリズムVerは、検証者により利用される。署名検証アルゴリズムVerは、電子署名σが文書Mに対する正当な電子署名であるか否かを検証するアルゴリズムである。署名検証アルゴリズムVerは、署名者の検証鍵pk、文書M、電子署名σを入力とし、0又は1(1bit)を出力するアルゴリズムである。この署名検証アルゴリズムVerは、形式的に、下記の式(5)のように表現することができる。なお、検証者は、署名検証アルゴリズムVerが0を出力した場合(公開鍵pkが文書Mと電子署名σを拒否する場合)に電子署名σが不当であると判断し、1を出力した場合(公開鍵pkが文書Mと電子署名σを受理する場合)に電子署名σが正当であると判断する。
【0057】
【数5】
【0058】
以上、電子署名方式のアルゴリズムについて、その概要を説明した。
【0059】
[1−3:nパスの公開鍵認証方式]
次に、図3を参照しながら、nパスの公開鍵認証方式について説明する。図3は、nパスの公開鍵認証方式について説明するための説明図である。
【0060】
上記の通り、公開鍵認証方式は、対話プロトコルの中で、証明者が公開鍵pkに対応する秘密鍵skを保有していることを検証者に証明する認証方式である。また、対話プロトコルは、健全性及び零知識性という2つの条件を満たす必要がある。そのため、対話プロトコルの中では、図3に示すように、証明者及び検証者の双方がそれぞれ処理を実行しながらn回の情報交換を行う。
【0061】
nパスの公開鍵認証方式の場合、証明者アルゴリズムPを用いて証明者により処理(工程#1)が実行され、情報T1が検証者に送信される。次いで、検証者アルゴリズムVを用いて検証者により処理(工程#2)が実行され、情報T2が証明者に送信される。さらに、k=3〜nについて処理の実行及び情報Tkの送信が順次行われ、最後に処理(工程#n+1)が実行される。このように、情報がn回送受信される方式のことを「nパス」の公開鍵認証方式と呼ぶ。
【0062】
以上、nパスの公開鍵認証方式について説明した。
【0063】
<2:3パスの公開鍵認証方式に係るアルゴリズムの構成>
以下、3パスの公開鍵認証方式に係るアルゴリズムについて説明する。なお、以下の説明において、3パスの公開鍵認証方式のことを「3パス方式」と呼ぶ場合がある。
【0064】
[2−1:具体的なアルゴリズムの構成例(図4)]
まず、図4を参照しながら、3パス方式に係る具体的なアルゴリズムの構成例について紹介する。図4は、3パス方式に係る具体的なアルゴリズムの構成について説明するための説明図である。ここでは、公開鍵pkの一部として2次多項式の組(f1(x),…,fm(x))を利用する場合について考える。但し、2次多項式fi(x)は、下記の式(6)のように表現されるものとする。また、ベクトル(x1,…,xn)をxと表記し、2次多項式の組(f1(x),…,fm(x))を多変数多項式F(x)と表記することにする。
【0065】
【数6】
【0066】
また、2次多項式の組(f1(x),…,fm(x))は、下記の式(7)のように表現することができる。また、A1,…,Amは、n×n行列である。さらに、b1,…,bmはそれぞれn×1ベクトルである。
【0067】
【数7】
【0068】
この表現を用いると、多変数多項式Fは、下記の式(8)及び式(9)のように表現することができる。この表現が成り立つことは、下記の式(10)から容易に確認することができる。
【0069】
【数8】
【0070】
このようにF(x+y)をxに依存する第1の部分と、yに依存する第2の部分と、x及びyの両方に依存する第3の部分とに分けたとき、第3の部分に対応する項G(x,y)は、x及びyについて双線形になる。以下、項G(x,y)を双線形項と呼ぶ場合がある。この性質を利用すると、効率的なアルゴリズムを構築することが可能になる。
【0071】
例えば、ベクトルt0∈Kn、e0∈Kmを用いて、多変数多項式F(x+r)のマスクに利用する多変数多項式F1(x)をF1(x)=G(x,t0)+e0と表現する。この場合、多変数多項式F(x+r0)とG(x)との和は、下記の式(11)のように表現される。ここで、t1=r0+t0、e1=F(r0)+e0とおけば、多変数多項式F2(x)=F(x+r0)+F1(x)は、ベクトルt1∈Kn、e1∈Kmにより表現することができる。そのため、F1(x)=G(x,t0)+e0に設定すれば、Kn上のベクトル及びKm上のベクトルを用いてF1及びF2を表現できるようになり、通信に必要なデータサイズの少ない効率的なアルゴリズムを実現することが可能になる。
【0072】
【数9】
【0073】
なお、F2(或いはF1)からr0に関する情報が一切漏れることはない。例えば、e1及びt1(或いはe0及びt0)を与えられても、e0及びt0(或いはe1及びt1)を知らない限り、r0の情報を一切知ることはできない。従って、零知識性が担保される。以下、上記の論理に基づいて構築された3パス方式のアルゴリズムについて説明する。ここで説明する3パス方式のアルゴリズムは、以下のような鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVにより構成される。
【0074】
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、環K上で定義されるm本の多変数多項式f1(x1,…,xn),…,fm(x1,…,xn)、及びベクトルs=(s1,…,sn)∈Knを生成する。次に、鍵生成アルゴリズムGenは、y=(y1,…,ym)←(f1(s),…,fm(s))を計算する。そして、鍵生成アルゴリズムGenは、(f1(x1,…,xn),…,fm(x1,…,xn),y)を公開鍵pkに設定し、sを秘密鍵に設定する。
【0075】
(証明者アルゴリズムP、検証者アルゴリズムV)
以下、図4を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図4に示したフローチャートに沿って説明を進める。
【0076】
工程#1:
図4に示すように、まず、証明者アルゴリズムPは、ランダムにベクトルr0,t0∈Kn及びe0∈Kmを生成する。次いで、証明者アルゴリズムPは、r1←s−r0を計算する。この計算は、秘密鍵sをベクトルr0によりマスクする操作に相当する。さらに、証明者アルゴリズムPは、t1←r0−t0を計算する。次いで、証明者アルゴリズムPは、e1←F(r0)−e0を計算する。
【0077】
工程#1(続き):
次いで、証明者アルゴリズムPは、c0←H(r1,G(t0,r1)+e0)を計算する。次いで、証明者アルゴリズムPは、c1←H(t0,e0)を計算する。次いで、証明者アルゴリズムPは、c2←H(t1,e1)を計算する。工程#1で生成されたメッセージ(c0,c1,c2)は、検証者アルゴリズムVに送られる。
【0078】
工程#2:
メッセージ(c0,c1,c2)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求Chに設定する。この要求Chは証明者アルゴリズムPに送られる。
【0079】
工程#3:
要求Chを受け取った証明者アルゴリズムPは、受け取った要求Chに応じて検証者アルゴリズムVに送る返答Rspを生成する。Ch=0の場合、証明者アルゴリズムPは、返答Rsp=(r0,t1,e1)を生成する。Ch=1の場合、証明者アルゴリズムPは、返答Rsp=(r1,t0,e0)を生成する。Ch=2の場合、証明者アルゴリズムPは、返答Rsp=(r1,t1,e1)を生成する。工程#3で生成された返答Rspは、検証者アルゴリズムVに送られる。
【0080】
工程#4:
返答Rspを受け取った検証者アルゴリズムVは、受け取った返答Rspを利用して以下の検証処理を実行する。
【0081】
Ch=0の場合、検証者アルゴリズムVは、c1=H(r0−t1,F(r0)−e1)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c2=H(t1,e1)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
【0082】
Ch=1の場合、検証者アルゴリズムVは、c0=H(r1,G(t0,r1)+e0)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c1=H(t0,e0)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
【0083】
Ch=2の場合、検証者アルゴリズムVは、c0=H(r1,y−F(r1)−G(t1,r1)−e1)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c2=H(t1,e1)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
【0084】
以上、3パス方式に係る効率的なアルゴリズムの構成例について説明した。
【0085】
[2−2:並列化アルゴリズムの構成例(図5)]
次に、図5を参照しながら、図4に示した3パス方式のアルゴリズムを並列化する方法について説明する。なお、鍵生成アルゴリズムGenの構成については説明を省略する。
【0086】
さて、上記の対話プロトコルを適用すれば、偽証が成功する確率を2/3以下に抑制することができる。従って、この対話プロトコルを2回実行すれば、偽証が成功する確率を(2/3)2以下に抑制することができる。さらに、この対話プロトコルをN回実行すると、偽証が成功する確率は(2/3)Nとなり、Nを十分に大きい数(例えば、N=140)にすれば、偽証が成功する確率は無視できる程度に小さくなる。
【0087】
対話プロトコルを複数回実行する方法としては、例えば、メッセージ、要求、返答のやり取りを逐次的に複数回繰り返す直列的な方法と、1回分のやり取りで複数回分のメッセージ、要求、返答のやり取りを行う並列的な方法とが考えられる。さらに、直列的な方法と並列的な方法とを組み合わせたハイブリッド型の方法も考えられる。ここでは、図5を参照しながら、3パス方式に係る上記の対話プロトコルを並列的に実行するアルゴリズム(以下、並列化アルゴリズム)について説明する。
【0088】
工程#1:
図5に示すように、まず、証明者アルゴリズムPは、i=1〜Nについて以下の処理(1)〜処理(6)を実行する。
処理(1):証明者アルゴリズムPは、ランダムにベクトルr0i,t0i∈Kn及びe0i∈Kmを生成する。
処理(2):証明者アルゴリズムPは、r1i←s−r0iを計算する。この計算は、秘密鍵sをベクトルr0iによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、t1i←r0i+t0iを計算する。
処理(3):証明者アルゴリズムPは、e1i←F(r0i)−e0iを計算する。
処理(4):証明者アルゴリズムPは、c0i←H(r1i,G(r1i,t0i)+e0i)を計算する。
処理(5):証明者アルゴリズムPは、c1i←H(t0i,e0i)を計算する。
処理(6):証明者アルゴリズムPは、c2i←H(t1i,e1i)を計算する。
【0089】
工程#1(続き)
i=1〜Nについて上記の処理(1)〜処理(6)を実行した後、証明者アルゴリズムPは、Cmt←H(c01,c11,c21,…,c0N,c1N,c2N)を計算する。工程#1で生成されたハッシュ値Cmtは、検証者アルゴリズムVに送られる。このように、メッセージ(c01,c11,c21,…,c0N,c1N,c2N)をハッシュ値に変換してから検証者アルゴリズムVに送ることで、通信量を削減することが可能になる。
【0090】
工程#2:
ハッシュ値Cmtを受け取った検証者アルゴリズムVは、i=1〜Nのそれぞれについて、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1〜Nのそれぞれについて、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求Chiに設定する。要求Ch1,…,ChNは、証明者アルゴリズムPに送られる。
【0091】
工程#3:
要求Ch1,…,ChNを受け取った証明者アルゴリズムPは、受け取った要求Ch1,…,ChNのそれぞれ応じて検証者アルゴリズムVに送る返答Rsp1,…,RspNを生成する。Chi=0の場合、証明者アルゴリズムPは、Rspi=(r0i,t1i,e1i,c0i)を生成する。Chi=1の場合、証明者アルゴリズムPは、Rspi=(r1i,t0i,e0i,c2i)を生成する。Chi=2の場合、証明者アルゴリズムPは、Rspi=(r1i,t1i,e1i,c1i)を生成する。
【0092】
工程#3で生成された返答Rsp1,…,RspNは、検証者アルゴリズムVに送られる。
【0093】
工程#4:
返答Rsp1,…,RspNを受け取った検証者アルゴリズムVは、受け取った返答Rsp1,…,RspNを利用して以下の処理(1)〜処理(3)をi=1〜Nについて実行する。但し、検証者アルゴリズムVは、Chi=0の場合に処理(1)を実行し、Chi=1の場合に処理(2)を実行し、Chi=2の場合に処理(3)を実行する。
【0094】
処理(1):Chi=0の場合、検証者アルゴリズムVは、Rspiから(r0i,t1i,e1i,c0i)を取り出す。次いで、検証者アルゴリズムVは、c1i=H(r0i−t1i,F(r0i)−e1i)を計算する。さらに、検証者アルゴリズムVは、c2i=H(t1i,e1i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i,c2i)を保持する。
【0095】
処理(2):Chi=1の場合、検証者アルゴリズムVは、Rspiから(r1i,t0i,e0i,c2i)を取り出す。次いで、検証者アルゴリズムVは、c0i=H(r1i,G(t0i,r1i)+e0i)を計算する。さらに、検証者アルゴリズムVは、c1i=H(t0i,e0i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i,c2i)を保持する。
【0096】
処理(3):Chi=2の場合、検証者アルゴリズムVは、Rspiから(r1i,t1i,e1i,c1i)を取り出す。次いで、検証者アルゴリズムVは、c0i=H(r1i,y−F(r1i)−G(t1i,r1i)−e1i)を計算する。さらに、検証者アルゴリズムVは、c2i=H(t1i,e1i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i,c2i)を保持する。
【0097】
処理(1)〜処理(3)をi=1〜Nについて実行した後、検証者アルゴリズムVは、Cmt=H(c01,c11,c21,…,c0N,c1N,c2N)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗した場合に認証失敗を示す値0を出力する。
【0098】
以上、3パス方式に係る効率的な並列化アルゴリズムの構成例について説明した。
【0099】
<3:5パスの公開鍵認証方式に係るアルゴリズムの構成>
次に、5パスの公開鍵認証方式に係るアルゴリズムについて説明する。なお、以下の説明において、5パスの公開鍵認証方式のことを「5パス方式」と呼ぶ場合がある。
【0100】
3パス方式の場合には対話プロトコル1回当たりの偽証確率が2/3であったが、5パス方式の場合には対話プロトコル1回当たりの偽証確率が1/2+1/qとなる。但し、qは、利用する環の位数である。従って、環の位数が十分に大きい場合、5パス方式の方が1回当たりの偽証確率を低減することが可能になり、少ない対話プロトコルの実行回数で、偽証確率を十分に小さくすることができる。
【0101】
例えば、偽証確率を1/2n以下にしたい場合、3パス方式においては、n/(log3−1)=1.701n回以上、対話プロトコルを実行する必要がある。一方、偽証確率を1/2n以下にしたい場合、5パス方式においては、n/(1−log(1+1/q))回以上、対話プロトコルを実行する必要がある。従って、q=24にすれば、同じセキュリティレベルを実現するのに必要な通信量は、3パス方式に比べ、5パス方式の方が少なくなるのである。
【0102】
[3−1:具体的なアルゴリズムの構成例(図6)]
まず、図6を参照しながら、5パス方式に係る具体的なアルゴリズムの構成例について紹介する。図6は、5パス方式に係る具体的なアルゴリズムの構成について説明するための説明図である。ここでは、公開鍵pkの一部として2次多項式の組(f1(x),…,fm(x))を利用する場合について考える。但し、2次多項式fi(x)は、上記の式(6)のように表現されるものとする。また、ベクトル(x1,…,xn)をxと表記し、2次多項式の組(f1(x),…,fm(x))を多変数多項式F(x)と表記することにする。
【0103】
3パス方式に係るアルゴリズムと同様、2つのベクトルt0∈Kn、e0∈Kmを用いて、多変数多項式F(x+r0)をマスクするために用いた多変数多項式F1(x)をF1(x)=G(x、t0)+e0のように表現する。この表現を用いると、多変数多項式F(x+r0)について、下記の式(12)で表現される関係が得られる。
【0104】
【数10】
【0105】
そのため、t1=ChA・r0+t0、e1=ChA・F(r0)+e0とすれば、マスク後の多変数多項式F2(x)=ChA・F(x+r0)+F1(x)も、2つのベクトルt1∈Kn、e1∈Kmにより表現することができる。これらの理由から、F1(x)=G(x,t0)+e0と設定すれば、Kn上のベクトル及びKm上のベクトルを用いてF1及びF2を表現できるようになり、通信に必要なデータサイズが少ない効率的なアルゴリズムを実現することが可能になる。
【0106】
なお、F2(或いはF1)からr0に関する情報が一切漏れることはない。例えば、e1及びt1(或いはe0及びt0)を与えられても、e0及びt0(或いはe1及びt1)を知らない限り、r0の情報を一切知ることはできない。従って、零知識性は担保される。以下、上記の論理に基づいて構築された5パス方式のアルゴリズムについて説明する。ここで説明する5パス方式のアルゴリズムは、以下のような鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVにより構成される。
【0107】
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、環K上で定義される多変数多項式f1(x1,…,xn),…,fm(x1,…,xn)、及びベクトルs=(s1,…,sn)∈Knを生成する。次に、鍵生成アルゴリズムGenは、y=(y1,…,ym)←(f1(s),…,fm(s))を計算する。そして、鍵生成アルゴリズムGenは、(f1,…,fm,y)を公開鍵pkに設定し、sを秘密鍵に設定する。なお、以下では、ベクトル(x1,…,xn)をxと表記し、多変数多項式の組(f1(x),…,fm(x))をF(x)と表記する。
【0108】
(証明者アルゴリズムP、検証者アルゴリズムV)
以下、図6を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVにより実行される処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図6に示したフローチャートに沿って説明を進める。
【0109】
工程#1:
図6に示すように、まず、証明者アルゴリズムPは、ランダムにベクトルr0∈Kn、t0∈Kn、e0∈Kmを生成する。次いで、証明者アルゴリズムPは、r1←s−r0を計算する。この計算は、秘密鍵sをベクトルr0によりマスクする操作に相当する。次いで、証明者アルゴリズムPは、ベクトルr0,t0,e0のハッシュ値c0を生成する。つまり、証明者アルゴリズムPは、c0←H(r0,t0,e0)を計算する。次いで、証明者アルゴリズムPは、G(t0,r1)+e0及びr1のハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c0←H(r1,G(t0,r1)+e0)を計算する。工程#1で生成されたメッセージ(c0,c1)は、検証者アルゴリズムVに送られる。
【0110】
工程#2:
メッセージ(c0,c1)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数ChAを選択し、選択した数ChAを証明者アルゴリズムPに送る。
【0111】
工程#3:
数ChAを受け取った証明者アルゴリズムPは、t1←ChA・r0−t0を計算する。さらに、証明者アルゴリズムPは、e1←ChA・F(r0)−e0を計算する。そして、証明者アルゴリズムPは、t1及びe1を検証者アルゴリズムVに送る。
【0112】
工程#4:
t1及びe1を受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求ChBに設定する。この要求ChBは証明者アルゴリズムPに送られる。
【0113】
工程#5:
要求ChBを受け取った証明者アルゴリズムPは、受け取った要求ChBに応じて検証者アルゴリズムVに送り返す返答Rspを生成する。ChB=0の場合、証明者アルゴリズムPは、返答Rsp=r0を生成する。ChB=1の場合、証明者アルゴリズムPは、返答Rsp=r1を生成する。工程#5で生成された返答Rspは、検証者アルゴリズムVに送られる。
【0114】
工程#6:
返答Rspを受け取った検証者アルゴリズムVは、受け取った返答Rspを利用して以下の検証処理を実行する。
【0115】
ChB=0の場合、検証者アルゴリズムVは、r0←Rspを実行する。そして、検証者アルゴリズムVは、c0=H(r0,ChA・r0−t1,ChA・F(r0)−e1)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
【0116】
ChB=1の場合、検証者アルゴリズムVは、r1←Rspを実行する。そして、検証者アルゴリズムVは、c1=H1(r1,ChA・(y−F(r1))−G(t1,r1)−e1)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
【0117】
以上、5パス方式に係る効率的なアルゴリズムの構成例について説明した。
【0118】
[3−2:並列化アルゴリズムの構成例(図7)]
次に、図7を参照しながら、図6に示した5パス方式のアルゴリズムを並列化する方法について説明する。なお、鍵生成アルゴリズムGenの構成については説明を省略する。
【0119】
先に述べた通り、5パス方式に係る対話プロトコルを適用すれば、偽証が成功する確率を(1/2+1/q)以下に抑制することができる。従って、この対話プロトコルを2回実行すれば、偽証が成功する確率を(1/2+1/q)2以下に抑制することができる。さらに、この対話プロトコルをN回実行すると、偽証が成功する確率は(1/2+1/q)Nとなり、Nを十分に大きい数(例えば、N=80)にすれば、偽証が成功する確率は無視できる程度に小さくなる。
【0120】
対話プロトコルを複数回実行する方法としては、例えば、メッセージ、要求、返答のやり取りを逐次的に複数回繰り返す直列的な方法と、1回分のやり取りで複数回分のメッセージ、要求、返答のやり取りを行う並列的な方法とが考えられる。さらに、直列的な方法と並列的な方法とを組み合わせたハイブリッド型の方法も考えられる。ここでは、5パス方式に係る上記の対話プロトコルを並列的に実行するアルゴリズム(以下、並列化アルゴリズム)について説明する。
【0121】
工程#1:
図7に示すように、まず、証明者アルゴリズムPは、i=1〜Nについて処理(1)〜処理(4)を実行する。
処理(1):証明者アルゴリズムPは、ランダムにベクトルr0i,t0i∈Kn及びe0i∈Kmを生成する。
処理(2):証明者アルゴリズムPは、r1i←s−r0iを計算する。この計算は、秘密鍵sをベクトルr0iによりマスクする操作に相当する。
処理(3):証明者アルゴリズムPは、c0i←H(r0i,t0i,e0i)を計算する。
処理(4):証明者アルゴリズムPは、c1i←H(r1i,G(t0i,r1i)+e0i)を計算する。
i=1〜Nについて処理(1)〜処理(4)を実行した後、証明者アルゴリズムPは、ハッシュ値Cmt←H(c01,c11,…,c0N,c1N)を実行する。そして、工程#1で生成されたハッシュ値Cmtは、検証者アルゴリズムVに送られる。
【0122】
工程#2:
ハッシュ値Cmtを受け取った検証者アルゴリズムVは、i=1〜Nのそれぞれについて、q通り存在する環Kの元からランダムに1つの数ChAiを選択し、選択した数ChAi(i=1〜N)を証明者アルゴリズムPに送る。
【0123】
工程#3:
数ChAi(i=1〜N)を受け取った証明者アルゴリズムPは、i=1〜Nのそれぞれについて、t1i←ChAi・r0i−t0iを計算する。さらに、証明者アルゴリズムPは、i=1〜Nのそれぞれについて、e1i←ChAi・F(r0i)−e0iを計算する。そして、証明者アルゴリズムPは、t11,…,t1N及びe11,…,e1Nを検証者アルゴリズムVに送る。
【0124】
工程#4:
t11,…,t1N及びe11,…,e1Nを受け取った検証者アルゴリズムVは、i=1〜Nのそれぞれについて、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求ChBiに設定する。要求ChBi(i=1〜N)は証明者アルゴリズムPに送られる。
【0125】
工程#5:
要求ChBi(i=1〜N)を受け取った証明者アルゴリズムPは、i=1〜Nについて、受け取った要求ChBiに応じて検証者アルゴリズムVに送り返す返答Rspiを生成する。ChBi=0の場合、証明者アルゴリズムPは、返答Rspi=(r0i,c1i)を生成する。ChBi=1の場合、証明者アルゴリズムPは、返答Rspi=(r1i,c0i)を生成する。工程#5で生成された返答Rspi(i=1〜N)は、検証者アルゴリズムVに送られる。
【0126】
工程#6:
返答Rspi(i=1〜N)を受け取った検証者アルゴリズムVは、受け取った返答Rspi(i=1〜N)を利用して以下の処理(1)及び処理(2)を実行する。
【0127】
処理(1):ChBi=0の場合、検証者アルゴリズムVは、(r0i,c1i)←Rspiを実行する。そして、検証者アルゴリズムVは、c0i=H(r0i,ChAi・r0i−t1i,ChAi・F(r0i)−e1i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i)を保持する。
【0128】
処理(2):ChBi=1の場合、検証者アルゴリズムVは、(r1i,c0i)←Rspiを実行する。そして、検証者アルゴリズムVは、c1i=H(r1i,ChAi・(y−F(r1i))−G(t1i,r1i)−e1i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i)を保持する。
【0129】
i=1〜Nについて処理(1)及び処理(2)を実行した後、検証者アルゴリズムVは、Cmt=H(c01,c11,…,c0N,c1N)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
【0130】
以上、5パス方式に係る効率的な並列化アルゴリズムの構成例について説明した。
【0131】
<4:電子署名方式への変形>
次に、上記の公開鍵認証方式を電子署名方式へと変形する方法を紹介する。
【0132】
公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させると、証明者のみが検証者を納得させられるという点において、電子署名方式のモデルと近似していることが容易に理解されよう。こうした考えに基づき、上述した公開鍵認証方式を電子署名方式へと変形する方法について説明する。
【0133】
[4−1:3パスの公開鍵認証方式から電子署名方式への変形(図8)]
まず、3パスの公開鍵認証方式から電子署名方式への変形について説明する。
【0134】
図8に示すように、3パス方式に係る効率的なアルゴリズム(例えば、図5を参照)は、3回の対話及び4つの工程#1〜工程#4で表現される。
【0135】
工程#1は、i=1〜Nについて、ai=(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i,c2i)を生成する処理(1)と、Cmt←H(c01,c11,c21,…,c0N,c1N,c2N)を計算する処理(2)とで構成される。工程#1で証明者アルゴリズムPにより生成されたCmtは、検証者アルゴリズムVへと送られる。
【0136】
工程#2は、Ch1,…,ChNを選択する処理で構成される。工程#2で検証者アルゴリズムVにより選択されたCh1,…,ChNは、証明者アルゴリズムPへと送られる。
【0137】
工程#3は、Ch1,…,ChN及びa1,…,aNを用いてRsp1,…,RspNを生成する処理で構成される。この処理をRspi←Select(Chi,ai)と表現する。工程#3で証明者アルゴリズムPにより生成されたRsp1,…,RspNは、検証者アルゴリズムVへと送られる。
【0138】
工程#4は、Ch1,…,ChN及びRsp1,…,RspNを用いてc01,c11,c21,…,c0N,c1N,c2Nを再生する処理(1)と、再生したc01,c11,c21,…,c0N,c1N,c2Nを用いてCmt=H(c01,c11,c21,…,c0N,c1N,c2N)を検証する処理(2)とで構成される。
【0139】
上記の工程#1〜工程#4で表現される公開鍵認証方式のアルゴリズムは、図8に示すような署名生成アルゴリズムSig及び署名検証アルゴリズムVerに変形される。
【0140】
(署名生成アルゴリズムSig)
まず、署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)〜処理(5)で構成される。
【0141】
処理(1):署名生成アルゴリズムSigは、ai=(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i,c2i)を生成する。
処理(2):署名生成アルゴリズムSigは、Cmt←H(c01,c11,c21,…,c0N,c1N,c2N)を計算する。
処理(3):署名生成アルゴリズムSigは、(Ch1,…,ChN)←H(M,Cmt)を計算する。このMは、署名を付与する文書である。
処理(4):署名生成アルゴリズムSigは、Rspi←Select(Chi,ai)を計算する。
処理(5):署名生成アルゴリズムSigは、(Cmt,Rsp1,…,RspN)を署名に設定する。
【0142】
(署名検証アルゴリズムVer)
次に、署名検証アルゴリズムVerの構成について述べる。署名検証アルゴリズムVerは、以下の処理(1)〜処理(3)で構成される。
【0143】
処理(1):署名検証アルゴリズムVerは、(Ch1,…,ChN)←H(M,Cmt)を計算する。
処理(2):署名検証アルゴリズムVerは、Ch1,…,ChN及びRsp1,…,RspNを用いてc01,c11,c21,…,c0N,c1N,c2Nを生成する。
処理(3):署名検証アルゴリズムVerは、再生したc01,c11,c21,…,c0N,c1N,c2Nを用いてCmt=H(c01,c11,c21,…,c0N,c1N,c2N)を検証する。
【0144】
以上説明したように、公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させることで、公開鍵認証方式のアルゴリズムを電子署名方式のアルゴリズムへと変形することが可能になる。
【0145】
[4−2:5パスの公開鍵認証方式から電子署名方式への変形(図9)]
次に、5パスの公開鍵認証方式から電子署名方式への変形について説明する。
【0146】
図9に示すように、5パス方式に係る効率的なアルゴリズム(例えば、図7を参照)は、5回の対話及び6つの工程#1〜工程#6で表現される。
【0147】
工程#1は、i=1〜Nについて、ai=(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i)を生成する処理(1)と、Cmt←H(c01,c11,…,c0N,c1N)を計算する処理(2)とで構成される。工程#1で証明者アルゴリズムPにより生成されたCmtは、検証者アルゴリズムVへと送られる。
【0148】
工程#2は、ChA1,…,ChANを選択する処理で構成される。工程#2で検証者アルゴリズムVにより選択されたChA1,…,ChANは、証明者アルゴリズムPへと送られる。
【0149】
工程#3は、i=1〜Nについて、bi=(t1i,e1i)を生成する処理で構成される。工程#3で証明者アルゴリズムPにより生成されたb1,…,bNは、検証者アルゴリズムVへと送られる。
【0150】
工程#4は、ChB1,…,ChBNを選択する処理で構成される。工程#4で検証者アルゴリズムVにより選択されたChB1,…,ChBNは、証明者アルゴリズムPへと送られる。
【0151】
工程#5は、ChB1,…,ChBN,a1,…,aN,b1,…,bNを用いてRsp1,…,RspNを生成する処理で構成される。この処理をRspi←Select(ChBi,ai,bi)と表現する。工程#5で証明者アルゴリズムPにより生成されたRsp1,…,RspNは、検証者アルゴリズムVへと送られる。
【0152】
工程#6は、ChA1,…,ChAN,ChB1,…,ChBN,Rsp1,…,RspNを用いてc01,c11,…,c0N,c1Nを再生する処理(1)と、再生したc01,c11,…,c0N,c1Nを用いてCmt=H(c01,c11,…,c0N,c1N)を検証する処理(2)とで構成される。
【0153】
上記の工程#1〜工程#6で表現される公開鍵認証方式のアルゴリズムは、図9に示すような署名生成アルゴリズムSig及び署名検証アルゴリズムVerに変形される。
【0154】
(署名生成アルゴリズムSig)
まず、署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)〜処理(7)で構成される。
【0155】
処理(1):署名生成アルゴリズムSigは、ai=(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i)を生成する。
処理(2):署名生成アルゴリズムSigは、Cmt←H(c01,c11,…,c0N,c1N)を計算する。
処理(3):署名生成アルゴリズムSigは、(ChA1,…,ChAN)←H(M,Cmt)を計算する。このMは、署名を付与する文書である。
処理(4):署名生成アルゴリズムSigは、i=1〜Nについて、bi=(t1i,e1i)を生成する。
処理(5):署名生成アルゴリズムSigは、(ChB1,…,ChBN)←H(M,Cmt,ChA1,…,ChAN,b1,…,bN)を計算する。なお、(ChB1,…,ChBN)←H(ChA1,…,ChAN,b1,…,bN)と変形してもよい。
処理(6):署名生成アルゴリズムSigは、Rspi←Select(ChBi,ai,bi)を計算する。
処理(7):署名生成アルゴリズムSigは、(Cmt,b1,…,bN,Rsp1,…,RspN)を電子署名に設定する。
【0156】
(署名検証アルゴリズムVer)
次に、署名検証アルゴリズムVerの構成について述べる。署名検証アルゴリズムVerは、以下の処理(1)〜処理(4)で構成される。
【0157】
処理(1):署名検証アルゴリズムVerは、(ChA1,…,ChAN)←H(M,Cmt)を計算する。
処理(2):署名検証アルゴリズムVerは、(ChB1,…,ChBN)←H(M,Cmt,ChA1,…,ChAN,b1,…,bN)を計算する。なお、署名検証アルゴリズムVerが実行する処理(5)において、(ChB1,…,ChBN)←H(ChA1,…,ChAN,b1,…,bN)と変形した場合、署名検証アルゴリズムVerは、(ChB1,…,ChBN)←H(ChA1,…,ChAN,b1,…,bN)を計算する。
処理(3):署名検証アルゴリズムVerは、ChA1,…,ChAN,ChB1,…,ChBN,Rsp1,…,RspNを用いてc01,c11,…,c0N,c1Nを生成する。
処理(4):署名検証アルゴリズムVerは、再生したc01,c11,…,c0N,c1Nを用いてCmt=H(c01,c11,…,c0N,c1N)を検証する。
【0158】
以上説明したように、公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させることで、公開鍵認証方式のアルゴリズムを電子署名方式のアルゴリズムへと変形することが可能になる。
【0159】
<5:中間変数の効率的な管理方法>
ところで、上記の公開鍵認証方式及び電子署名方式のアルゴリズムを実行する際、多くの中間変数を証明者アルゴリズムPが保持していることに気づくであろう。例えば、図4に示した3パス方式のアルゴリズムにおいて、工程#1で生成した中間変数r0,t0,e0,r1,t1,e1は、証明者アルゴリズムPにより保持され、工程#3で再び利用される。また、図5に示した並列化アルゴリズムのように、工程#1でメッセージをハッシュ値Cmtに纏めて送信する構成の場合、証明者アルゴリズムPは、工程#3で再び利用する中間変数r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i,c2i(i=1〜N)を中間変数として保持しておく必要がある。そのため、上記の公開鍵認証方式及び電子署名方式のアルゴリズムを実行するには、十分な記憶領域が必要になる。
【0160】
そこで、本件発明者は、証明者アルゴリズムPが保持すべき中間変数の量を削減し、少ない記憶領域で上記の公開鍵認証方式及び電子署名方式のアルゴリズムを実行できるようにする仕組みを考案した。以下、この仕組み(以下、メモリ削減方法)について説明する。
【0161】
[5−1:概要(図10、図11)]
まず、図10及び図11を参照しながら、本実施形態に係るメモリ削減方法の概要について説明する。図10は、3パス方式のアルゴリズムを簡略的に表現したものである。一方、図11は、5パス方式のアルゴリズムを簡略的に表現したものである。
【0162】
図10に示すように、3パス方式の場合、(1)まず、証明者アルゴリズムPによりCmtが生成され、検証者アルゴリズムVへと送られる。(2)次いで、検証者アルゴリズムVによりChが選択され、証明者アルゴリズムPへと送られる。(3)次いで、証明者アルゴリズムPによりRspが生成され、検証者アルゴリズムVへと送られる。(4)次いで、検証者アルゴリズムVによりCmt及びRspに基づく検証が行われる。
【0163】
図10において、(a1,…,au)は、擬似乱数生成器により生成される中間変数である。一方、(b1,…,bv)は、乱数成分(a1,…,au)に基づいて生成される中間変数である。また、T1は、(b1,…,bv)を生成するための関数である。そして、T2は、Cmtを生成するための関数である。さらに、T3は、Rspを生成するための関数である。このように、Cmtを生成する過程で生成された中間変数は、Rspを生成する過程で利用される。そのため、証明者アルゴリズムPは、Cmtを検証者アルゴリズムVへと送った後も中間変数を保持している必要がある。
【0164】
5パス方式の場合、図11に示すように、(1)まず、検証者アルゴリズムVによりCmtAが生成され、検証者アルゴリズムVへと送られる。(2)次いで、検証者アルゴリズムVによりChAが選択され、証明者アルゴリズムPへと送られる。(3)次いで、検証者アルゴリズムVによりCmtBが生成され、検証者アルゴリズムVへと送られる。(4)次いで、検証者アルゴリズムVによりChBが選択され、証明者アルゴリズムPへと送られる。(5)次いで、証明者アルゴリズムPによりRspが生成され、検証者アルゴリズムVへと送られる。(6)次いで、検証者アルゴリズムVによりCmt及びRspに基づく検証が行われる。
【0165】
図11において、(a1,…,au)は、擬似乱数生成器により生成される中間変数である。一方、(b1,…,bv)は、乱数成分(a1,…,au)に基づいて生成される中間変数である。また、T1は、(b1,…,bv)を生成するための関数である。そして、T2は、CmtAを生成するための関数である。また、T3は、CmtBを生成するための関数である。さらに、T4は、Rspを生成するための関数である。このように、CmtAを生成する過程で生成された中間変数は、CmtB及びRspを生成する過程で利用される。そのため、証明者アルゴリズムPは、CmtAを検証者アルゴリズムVへと送った後も中間変数を保持している必要がある。
【0166】
しかしながら、図10及び図11に示したアルゴリズムの構成を注意深く分析した結果、擬似乱数生成器に入力するシードの値を保持することにより、中間変数を一時的に破棄できるようにアルゴリズムを変形可能なことが分かった。但し、中間変数を一時的に破棄できるようにするには、ハッシュ値Cmtの生成手順に工夫を施す必要がある。以下、具体例を参照しながら、一度に多くの中間変数を保持せずに済む工夫について詳細に説明する。なお、この工夫は、3パス方式、5パス方式、電子署名方式のいずれにも適用可能である。
【0167】
[5−2:適用例#1(3パス方式の基本構成への適用)(図12〜図14)]
まず、図12〜図14を参照しながら、本実施形態に係るメモリ削減方法を3パス方式の基本構成(図4を参照)に適用する場合のアルゴリズム構成について説明する。
【0168】
(全体構成)
3パス方式の基本構成は、例えば、図12のように表現することができる。図12に示すように、(1)まず、証明者アルゴリズムPは、メッセージc0,c1,c2に基づくハッシュ値Cmtを生成する。ハッシュ値Cmtの生成に際し、証明者アルゴリズムPは、擬似乱数生成器PRNGを用いて、(r0,t0,e0)=PRNG(seed)を生成する。次いで、証明者アルゴリズムPは、(r1,t1,e1)=(s−r0,r0−t0,F(r0)−e0)を算出する。次いで、証明者アルゴリズムPは、c0=H(r1,G(t0,r1)+e0)、c1=H(t0,e0)、c2=H(t1,e1)を算出する。次いで、証明者アルゴリズムPは、Cmt=H(c0,c1,c2)を算出する。
【0169】
証明者アルゴリズムPにより生成されたハッシュ値Cmtは、検証者アルゴリズムVへと送られる。(2)ハッシュ値Cmtを受け取った検証者アルゴリズムVは、チャレンジChを選択する。そして、検証者アルゴリズムVにより選択されたチャレンジChは、証明者アルゴリズムPへと送られる。
【0170】
(3)チャレンジChを受け取った証明者アルゴリズムPは、返答Rspを生成する。Rspの生成に際し、証明者アルゴリズムPは、チャレンジChに応じて(r0,t0,e0,r1,t1,e1,c0,c1,c2)の中から必要な組み合わせを選択し、返答Rspに設定する。そして、証明者アルゴリズムPにより生成された返答Rspは、検証者アルゴリズムVへと送られる。(4)返答Rspを受け取った検証者アルゴリズムVは、ハッシュ値Cmt、チャレンジCh、及び返答Rspに基づいて検証を実行する。
【0171】
ここで、以上説明した3パス方式の基本構成において、ハッシュ値Cmtの生成後に中間変数r0,t0,e0,r1,t1,e1,c0,c1,c2を一時的に破棄できるようにしたハッシュ値Cmtの生成方法について説明する。また、ここで説明するハッシュ値Cmtの生成方法を適用した場合における返答Rspの生成方法についても説明する。
【0172】
(ハッシュ値Cmtの生成方法)
まず、図13を参照する。図13に示すように、証明者アルゴリズムPは、ハッシュ値Cmtの生成を開始すると、まず、(r0,seedt0)=PRNG(seedr0)を算出し、その後でr0及びseedr0を記憶する(S101)。次いで、証明者アルゴリズムPは、(t0,seede0)=PRNG(seedt0)を算出し、その後でt0を記憶する(S102)。次いで、証明者アルゴリズムPは、(e0,seed’)=PRNG(seede0)を算出し、その後でe0を記憶する(S103)。
【0173】
次いで、証明者アルゴリズムPは、r1=s−r0を算出し、その後でr1を記憶する(S104)。次いで、証明者アルゴリズムPは、t1=r0−t0を算出し、その後でt1を記憶する(S105)。次いで、証明者アルゴリズムPは、e1=F(r0)−e0を算出し、その後でe1を記憶し、r0を消去する(S106)。次いで、証明者アルゴリズムPは、c2=H(t1,e1)を算出し、その後でc2を記憶し、t1及びe1を消去する(S107)。次いで、証明者アルゴリズムPは、c0=H(r1,G(t0,r1)+e0)を算出し、その後でc0を記憶し、r1を消去する(S108)。
【0174】
次いで、証明者アルゴリズムPは、c1=H(t0,e0)を算出し、その後でc1を記憶し、t0及びe0を消去する(S109)。次いで、証明者アルゴリズムPは、ハッシュ値Cmt=H(c0,c1,c2)を算出し、その後でc0,c1,c2を消去する(S110)。ステップS110の処理を完了した後、証明者アルゴリズムPは、ハッシュ値Cmtの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0,t0,e0,r1,t1,e1,c0,c1,c2)を保持していない。
【0175】
(返答Rspの生成方法)
次に、図14を参照する。図14に示すように、証明者アルゴリズムPは、チャレンジChの値を判別する(S121)。Ch=0の場合、証明者アルゴリズムPは、処理をステップS122に進める。Ch=1の場合、証明者アルゴリズムPは、処理をステップS124に進める。Ch=2の場合、証明者アルゴリズムPは、処理をステップS126に進める。
【0176】
処理をステップS122に進めた場合、証明者アルゴリズムPは、(r0,t1,e1,c0)を生成する(S122)。このとき、証明者アルゴリズムPは、図13に示したアルゴリズムのうち、必要なステップを実行して(r0,t1,e1,c0)を生成する。次いで、証明者アルゴリズムPは、返答Rsp=(r0,t1,e1,c0)を設定し(S123)、返答Rspの生成に係る一連の処理を終了する。
【0177】
また、処理をステップS124に進めた場合、証明者アルゴリズムPは、(r1,t0,e0,c2)を生成する(S124)。このとき、証明者アルゴリズムPは、図13に示したアルゴリズムのうち、必要なステップを実行して(r1,t0,e0,c2)を生成する。次いで、証明者アルゴリズムPは、返答Rsp=(r1,t0,e0,c2)を設定し(S125)、返答Rspの生成に係る一連の処理を終了する。
【0178】
また、処理をステップS126に進めた場合、証明者アルゴリズムPは、(r1,t1,e1,c1)を生成する(S126)。このとき、証明者アルゴリズムPは、図13に示したアルゴリズムのうち、必要なステップを実行して(r1,t1,e1,c1)を生成する。次いで、証明者アルゴリズムPは、返答Rsp=(r1,t1,e1,c1)を設定し(S127)、返答Rspの生成に係る一連の処理を終了する。
【0179】
以上、本実施形態に係るメモリ削減方法を3パス方式の基本構成に適用する場合のアルゴリズム構成について説明した。上記のメモリ削減方法を適用することにより、少ない記憶領域で3パス方式の公開鍵認証方式を実現することが可能になる。
【0180】
[5−3:適用例#2(3パス方式の並列化構成への適用)(図15、図16)]
次に、図15及び図16を参照しながら、本実施形態に係るメモリ削減方法を3パスの並列化構成(図5を参照)に適用する場合のアルゴリズム構成について説明する。ここでは、図5に示した3パス方式の並列化アルゴリズムに本実施形態に係るメモリ削減方法を適用する場合のアルゴリズム構成について考える。
【0181】
(ハッシュ値Cmtの生成方法)
まず、図15を参照する。図15に示すように、証明者アルゴリズムPは、ハッシュ値Cmtの生成を開始し、i=1〜Nについて、ステップS131〜S139の処理を繰り返し実行する。ステップS131において、証明者アルゴリズムPは、(r0i,seedt0i)=PRNG(seedr0i)を算出し、その後でr0iを記憶する(S131)。但し、証明者アルゴリズムPは、i=1の場合にseedr01を記憶する。
【0182】
次いで、証明者アルゴリズムPは、(t0i,seede0i)=PRNG(seedt0i)を算出し、その後でt0iを記憶する(S132)。次いで、証明者アルゴリズムPは、(e0i,seedr0(i+1))=PRNG(seede0i)を算出し、その後でe0iを記憶する(S133)。次いで、証明者アルゴリズムPは、r1i=s−r0iを算出し、その後でr1iを記憶する(S134)。次いで、証明者アルゴリズムPは、t1i=r0i−t0iを算出し、その後でt1iを記憶する(S135)。次いで、証明者アルゴリズムPは、e1i=F(r0i)−e0iを算出し、その後でe1iを記憶し、r0iを消去する(S136)。
【0183】
次いで、証明者アルゴリズムPは、c2i=H(t1i,e1i)を算出し、その後でc2iを記憶し、t1i及びe1iを消去する(S137)。次いで、証明者アルゴリズムPは、c0i=H(r1i,G(t0i,r1i))+e0iを算出し、その後でc0iを記憶し、r1iを消去する(S138)。次いで、証明者アルゴリズムPは、c1i=H(t0i,e0i)を算出し、その後でc1iを記憶し、t0i及びe0iを消去する(S139)。
【0184】
i=1〜Nについて、ステップS131〜S139の処理を実行した後、証明者アルゴリズムPは、ハッシュ値Cmt=H(c01,c11,c21,…,c0N,c1N,c2N)を算出し、その後でc01,c11,c21,…,c0N,c1N,c2Nを消去する(S140)。ステップS140の処理を完了した後、証明者アルゴリズムPは、ハッシュ値Cmtの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i,c2i)(i=1〜N)を保持していない。
【0185】
(返答Rspiの生成方法)
次に、図16を参照する。なお、i=1〜Nについて、同様に返答Rspiの生成処理が実行される。図16に示すように、証明者アルゴリズムPは、チャレンジChiの値を判別する(S151)。Chi=0の場合、証明者アルゴリズムPは、処理をステップS152に進める。Chi=1の場合、証明者アルゴリズムPは、処理をステップS154に進める。Chi=2の場合、証明者アルゴリズムPは、処理をステップS156に進める。
【0186】
処理をステップS152に進めた場合、証明者アルゴリズムPは、(r0i,t1i,e1i,c0i)を生成する(S152)。このとき、証明者アルゴリズムPは、図15に示したアルゴリズムのうち、必要なステップを実行して(r0i,t1i,e1i,c0i)を生成する。次いで、証明者アルゴリズムPは、返答Rspi=(r0i,t1i,e1i,c0i)を設定し(S153)、返答Rspiの生成に係る一連の処理を終了する。
【0187】
また、処理をステップS154に進めた場合、証明者アルゴリズムPは、(r1i,t0i,e0i,c2i)を生成する(S154)。このとき、証明者アルゴリズムPは、図15に示したアルゴリズムのうち、必要なステップを実行して(r1i,t0i,e0i,c2i)を生成する。次いで、証明者アルゴリズムPは、返答Rspi=(r1i,t0i,e0i,c2i)を設定し(S155)、返答Rspiの生成に係る一連の処理を終了する。
【0188】
また、処理をステップS156に進めた場合、証明者アルゴリズムPは、(r1i,t1i,e1i,c1i)を生成する(S156)。このとき、証明者アルゴリズムPは、図15に示したアルゴリズムのうち、必要なステップを実行して(r1i,t1i,e1i,c1i)を生成する。次いで、証明者アルゴリズムPは、返答Rspi=(r1i,t1i,e1i,c1i)を設定し(S157)、返答Rspiの生成に係る一連の処理を終了する。
【0189】
以上、本実施形態に係るメモリ削減方法を3パス方式の並列化構成に適用する場合のアルゴリズム構成について説明した。上記のメモリ削減方法を適用することにより、少ない記憶領域で3パス方式の並列化された公開鍵認証方式を実現することが可能になる。
【0190】
(メモリ削減効果について)
仮に、(q,n,m,N)=(2,80,80,140)とし、ciが160ビットで表せるとする場合、上記のメモリ削減方法を適用しないと、134400ビット分の記憶領域が必要になる。しかし、上記のメモリ削減方法を適用した場合、ci及びseed・が160ビットで表せるならば、アルゴリズムの実行に要する記憶領域は、68000ビットまで削減される。つまり、上記のメモリ削減方法を適用することにより、必要な記憶領域のサイズが半分以下で済むようになる。
【0191】
[5−4:適用例#3(5パス方式の基本構成への適用)(図17〜図20)]
次に、図17〜図20を参照しながら、本実施形態に係るメモリ削減方法を5パスの基本構成(図6を参照)に適用する場合のアルゴリズム構成について説明する。
【0192】
(全体構成)
5パス方式の基本構成は、例えば、図17のように表現することができる。図17に示すように、(1)まず、証明者アルゴリズムPは、メッセージc0,c1に基づくハッシュ値CmtAを生成する。ハッシュ値CmtAの生成に際し、証明者アルゴリズムPは、擬似乱数生成器PRNGを用いて、(r0,t0,e0)=PRNG(seed)を生成する。次いで、証明者アルゴリズムPは、r1=s−r0を算出する。次いで、証明者アルゴリズムPは、c0=H(r0,t0,e0)、c1=H(r1,G(t0,r1)+e0)を算出する。次いで、証明者アルゴリズムPは、CmtA=H(c0,c1)を算出する。
【0193】
証明者アルゴリズムPにより生成されたハッシュ値CmtAは、検証者アルゴリズムVへと送られる。(2)ハッシュ値CmtAを受け取った検証者アルゴリズムVは、チャレンジChAを選択する。そして、検証者アルゴリズムVにより選択されたチャレンジChAは、証明者アルゴリズムPへと送られる。
【0194】
(3)チャレンジChAを受け取った証明者アルゴリズムPは、チャレンジChA、中間変数t1,e1を含むコミットメント値CmtBを生成する。コミットメント値CmtBの生成に際し、証明者アルゴリズムPは、t1=ChA*r0−t0、e1=ChA*F(r0)−e0を算出する。次いで、証明者アルゴリズムPは、CmtB=(t1,e1)を設定する。
【0195】
証明者アルゴリズムPにより生成されたコミットメント値CmtBは、検証者アルゴリズムVへと送られる。(4)コミットメント値CmtBを受け取った検証者アルゴリズムVは、チャレンジChBを選択する。そして、検証者アルゴリズムVにより選択されたチャレンジChBは、証明者アルゴリズムPへと送られる。
【0196】
(5)チャレンジChBを受け取った証明者アルゴリズムPは、返答Rspを生成する。Rspの生成に際し、証明者アルゴリズムPは、チャレンジChBに応じて(r0,r1,c0,c1)の中から必要な組み合わせを選択し、返答Rspに設定する。そして、証明者アルゴリズムPにより生成された返答Rspは、検証者アルゴリズムVへと送られる。(6)返答Rspを受け取った検証者アルゴリズムVは、ハッシュ値CmtA、チャレンジChA、コミットメント値CmtB、チャレンジChB、及び返答Rspに基づいて検証を実行する。
【0197】
ここで、以上説明した5パス方式の基本構成において、ハッシュ値CmtAの生成後に中間変数r0,t0,e0,r1,c0,c1を一時的に破棄できるようにしたハッシュ値CmtAの生成方法について説明する。また、コミットメント値CmtBの生成後に中間変数r0,t0,e0を一時的に破棄できるようにしたコミットメント値CmtBの生成方法について説明する。さらに、ここで説明するハッシュ値CmtA及びコミットメント値CmtBの生成方法を適用した場合における返答Rspの生成方法についても説明する。
【0198】
(ハッシュ値CmtAの生成方法)
まず、図18を参照する。図18に示すように、証明者アルゴリズムPは、ハッシュ値CmtAの生成を開始すると、まず、(r0,seedt0)=PRNG(seedr0)を算出し、その後でr0及びseedr0を記憶する(S201)。次いで、証明者アルゴリズムPは、(t0,seede0)=PRNG(seedt0)を算出し、その後でt0を記憶する(S202)。次いで、証明者アルゴリズムPは、(e0,seed’)=PRNG(seede0)を算出し、その後でe0を記憶する(S203)。
【0199】
次いで、証明者アルゴリズムPは、r1=s−r0を算出し、その後でr1を記憶する(S204)。次いで、証明者アルゴリズムPは、c0=H(r0,t0,e0)を算出し、その後でc0を記憶し、r0を消去する(S205)。次いで、証明者アルゴリズムPは、c1=H(r1,G(t0,r1)+e0)を算出し、その後でc1を記憶し、r1,t0,e0を消去する(S206)。
【0200】
次いで、証明者アルゴリズムPは、ハッシュ値CmtA=H(c0,c1)を算出し、その後でc0,c1を消去する(S207)。ステップS207の処理を完了した後、証明者アルゴリズムPは、ハッシュ値CmtAの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0,t0,e0,r1,c0,c1)を保持していない。
【0201】
(ハッシュ値CmtBの生成方法)
次に、図19を参照する。図19に示すように、証明者アルゴリズムPは、コミットメント値CmtBの生成を開始すると、まず、(r0,seedt0)=PRNG(seedr0)を算出し、その後でr0及びseedr0を記憶する(S211)。次いで、証明者アルゴリズムPは、(t0,seede0)=PRNG(seedt0)を算出し、その後でt0を記憶する(S212)。
【0202】
次いで、証明者アルゴリズムPは、t1=ChA*r0−t0を算出し、その後でt1を記憶し、t0を消去する(S213)。次いで、証明者アルゴリズムPは、(e0,seed’)=PRNG(seede0)を算出し、その後でe0を記憶する(S214)。次いで、証明者アルゴリズムPは、e1=F(r0)−e0を算出し、その後でe1を記憶し、r0,e0を消去する(S215)。
【0203】
次いで、証明者アルゴリズムPは、コミットメント値CmtB=(t1,e1)を設定する(S216)。ステップS216の処理を完了した後、証明者アルゴリズムPは、コミットメント値CmtBの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0,t0,e0)を保持していない。
【0204】
(返答Rspの生成方法)
次に、図20を参照する。図20に示すように、証明者アルゴリズムPは、チャレンジChBの値を判別する(S221)。ChB=0の場合、証明者アルゴリズムPは、処理をステップS222に進める。ChB=1の場合、証明者アルゴリズムPは、処理をステップS224に進める。
【0205】
処理をステップS222に進めた場合、証明者アルゴリズムPは、(r0,c1)を生成する(S222)。このとき、証明者アルゴリズムPは、図18に示したアルゴリズムのうち、必要なステップを実行して(r0,c1)を生成する。次いで、証明者アルゴリズムPは、返答Rsp=(r0,c1)を設定し(S223)、返答Rspの生成に係る一連の処理を終了する。
【0206】
また、処理をステップS224に進めた場合、証明者アルゴリズムPは、(r1,c0)を生成する(S224)。このとき、証明者アルゴリズムPは、図18に示したアルゴリズムのうち、必要なステップを実行して(r1,c0)を生成する。次いで、証明者アルゴリズムPは、返答Rsp=(r1,c0)を設定し(S225)、返答Rspの生成に係る一連の処理を終了する。
【0207】
以上、本実施形態に係るメモリ削減方法を5パス方式の基本構成に適用する場合のアルゴリズム構成について説明した。上記のメモリ削減方法を適用することにより、少ない記憶領域で5パス方式の公開鍵認証方式を実現することが可能になる。
【0208】
[5−5:適用例#4(5パス方式の並列化構成への適用)(図20、図21)]
次に、図21及び図22を参照しながら、本実施形態に係るメモリ削減方法を5パスの並列化構成(図7を参照)に適用する場合のアルゴリズム構成について説明する。ここでは、図7に示した5パス方式の並列化アルゴリズムに本実施形態に係るメモリ削減方法を適用する場合のアルゴリズム構成について考える。
【0209】
(ハッシュ値CmtAの生成方法)
まず、図21を参照する。図21に示すように、証明者アルゴリズムPは、ハッシュ値CmtAの生成を開始し、i=1〜Nについて、ステップS231〜S236の処理を繰り返し実行する。ステップS231において、証明者アルゴリズムPは、(r0i,seedt0i)=PRNG(seedr0i)を算出し、その後でr0iを記憶する(S231)。但し、証明者アルゴリズムPはi=1の場合にseedr01を記憶する。次いで、証明者アルゴリズムPは、(t0i,seede0i)=PRNG(seedt0i)を算出し、その後でt0iを記憶する(S232)。次いで、証明者アルゴリズムPは、(e0i,seedr0(i+1))=PRNG(seede0i)を算出し、その後でe0iを記憶する(S233)。
【0210】
次いで、証明者アルゴリズムPは、r1i=s−r0iを算出し、その後でr1iを記憶する(S234)。次いで、証明者アルゴリズムPは、c0i=H(r0i,t0i,e0i)を算出し、その後でc0iを記憶し、r0iを消去する(S235)。次いで、証明者アルゴリズムPは、c1i=H(r1i,G(t0i,r1i)+e0i)を算出し、その後でc1iを記憶し、r1i,t0i,e0iを消去する(S236)。
【0211】
i=1〜Nについて、ステップS231〜S236の処理を実行した後、証明者アルゴリズムPは、ハッシュ値CmtA=H(c01,c11,…,c0N,c1N)を算出し、その後でc01,c11,…,c0N,c1Nを消去する(S237)。ステップS237の処理を完了した後、証明者アルゴリズムPは、ハッシュ値CmtAの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0i,t0i,e0i,r1i,c0i,c1i)(i=1〜N)を保持していない。
【0212】
(ハッシュ値CmtBの生成方法)
次に、図22を参照する。図22に示すように、証明者アルゴリズムPは、コミットメント値CmtBの生成を開始し、i=1〜Nについて、ステップS241〜S246の処理を繰り返し実行する。ステップS241において、証明者アルゴリズムPは、(r0i,seedt0i)=PRNG(seedr0i)を算出し、その後でr0iを記憶する(S241)。但し、証明者アルゴリズムPはi=1の場合にseedr01を記憶する。次いで、証明者アルゴリズムPは、(t0i,seede0i)=PRNG(seedt0i)を算出し、その後でt0iを記憶する(S242)。
【0213】
次いで、証明者アルゴリズムPは、t1i=ChAi*r0i−t0iを算出し、その後でt1iを記憶し、t0iを消去する(S243)。次いで、証明者アルゴリズムPは、(e0i,seedr0(i+1))=PRNG(seede0i)を算出し、その後でe0iを記憶する(S244)。次いで、証明者アルゴリズムPは、e1i=F(r0i)−e0iを算出し、その後でe1iを記憶し、r0i,e0iを消去する(S245)。次いで、証明者アルゴリズムPは、コミットメント値CmtB=(t1i,e1i)を設定し、検証者アルゴリズムVへと送り、その後でt1i,e1iを消去する(S246)。
【0214】
i=1〜Nについて、ステップS241〜S246の処理を実行した後、証明者アルゴリズムPは、コミットメント値CmtBの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0i,t0i,e0i,t1i,e1i)(i=1〜N)を保持していない。
【0215】
(返答Rspiの生成方法)
次に、図23を参照する。なお、i=1〜Nについて、同様に返答Rspiの生成処理が実行される。図23に示すように、証明者アルゴリズムPは、チャレンジChBiの値を判別する(S251)。ChBi=0の場合、証明者アルゴリズムPは、処理をステップS252に進める。ChBi=1の場合、証明者アルゴリズムPは、処理をステップS254に進める。
【0216】
処理をステップS252に進めた場合、証明者アルゴリズムPは、(r0i,c1i)を生成する(S252)。このとき、証明者アルゴリズムPは、図21に示したアルゴリズムのうち、必要なステップを実行して(r0i,c1i)を生成する。次いで、証明者アルゴリズムPは、返答Rspi=(r0i,c1i)を設定し(S253)、返答Rspiの生成に係る一連の処理を終了する。
【0217】
また、処理をステップS254に進めた場合、証明者アルゴリズムPは、(r1i,c0i)を生成する(S254)。このとき、証明者アルゴリズムPは、図21に示したアルゴリズムのうち、必要なステップを実行して(r1i,c0i)を生成する。次いで、証明者アルゴリズムPは、返答Rspi=(r1i,c0i)を設定し(S255)、返答Rspiの生成に係る一連の処理を終了する。
【0218】
以上、本実施形態に係るメモリ削減方法を5パス方式の並列化構成に適用する場合のアルゴリズム構成について説明した。上記のメモリ削減方法を適用することにより、少ない記憶領域で5パス方式の並列化された公開鍵認証方式を実現することが可能になる。
【0219】
(メモリ削減効果について)
仮に、(q,n,m,N)=(2,80,80,90)とし、ciが160ビットで表せるとする場合、上記のメモリ削減方法を適用しないと、72000ビット分以上の記憶領域が必要になる。しかし、上記のメモリ削減方法を適用した場合、ci及びseed・が160ビットで表せるならば、アルゴリズムの実行に要する記憶領域は、29600ビット以下にまで削減される。つまり、上記のメモリ削減方法を適用することにより、必要な記憶領域のサイズが半分以下で済むようになる。
【0220】
[5−6:適用例#5(電子署名方式への適用)]
次に、本実施形態に係るメモリ削減方法を電子署名方式(図8及び図9を参照)に適用する場合のアルゴリズム構成について述べる。図8及び図9に示した通り、上記の電子署名方式は、3パス方式や5パス方式の並列化アルゴリズムから得られる。そのため、署名生成アルゴリズムSigが実行する処理には、CmtやRspiの生成処理が含まれる。そこで、これらの処理に上記のメモリ削減方法を適用することで、一度に保持すべき中間変数の最大量が低減するため、少ない記憶領域で上記の電子署名方式に係るアルゴリズムを実行することが可能になる。
【0221】
[5−7:変形例A(ハッシュ関数の構造を考慮した構成)(図24)]
ところで、上記の各アルゴリズムにおいては、ハッシュ値Cmt又はCmtAを算出するために記憶領域にメッセージの値を保持していた。例えば、図15の例ではメッセージc0i,c1i,c2i(i=1〜N)が記憶領域に保持されている。同様に、図21の例ではメッセージc0i,c1i(i=1〜N)が記憶領域に保持されている。しかしながら、メッセージの値を全て記憶領域に格納しておくことは、記憶領域のサイズを節約するという観点からは好ましくない。そこで、本件発明者は、ハッシュ関数の構造に注目し、メッセージの値を全て記憶領域に格納しておくことなく、ハッシュ値Cmt又はCmtAを算出する方法を考案した。
【0222】
多くの場合、ハッシュ関数は、入力をブロック単位に区切り、ブロック単位で順次処理を進める構造を有している。例えば、SHA−1の場合、ハッシュ関数は、図24に示すような構造を有している。図24に示すハッシュ関数は、入力MをZ個のブロックm1,…,mZに区切り、インデックスjをインクリメントしながら、ブロックmjを初期値IV又は中間値CVjと共に所定の関数CFに作用させてハッシュ値を生成する。従って、中間値CVjが得られた時点で、それ以前に利用したブロックは不要になる。そこで、この特性を利用し、アルゴリズムの実行に必要な記憶領域のサイズを更に削減する仕組みを考案した。以下、この仕組みについて具体的に説明する。
【0223】
(5−7−1:変形例A1(3パス方式への適用)(図25、図26))
まず、図25及び図26を参照する。図25及び図26は、図15に示したアルゴリズムを改良した構成(ハッシュ関数の構造を考慮したアルゴリズム)を示したものである。
【0224】
図25に示すように、証明者アルゴリズムPは、ハッシュ値Cmtの生成を開始し、i=1〜Nについて、ステップS301〜S310の処理を繰り返し実行する。ステップS301において、証明者アルゴリズムPは、(r0i,seedt0i)=PRNG(seedr0i)を算出し、その後でr0iを記憶する(S301)。但し、証明者アルゴリズムPは、i=1の場合にseedr01を記憶する。
【0225】
次いで、証明者アルゴリズムPは、(t0i,seede0i)=PRNG(seedt0i)を算出し、その後でt0iを記憶する(S302)。次いで、証明者アルゴリズムPは、(e0i,seedr0(i+1))=PRNG(seede0i)を算出し、その後でe0iを記憶する(S303)。次いで、証明者アルゴリズムPは、r1i=s−r0iを算出し、その後でr1iを記憶する(S304)。次いで、証明者アルゴリズムPは、t1i=r0i−t0iを算出し、その後でt1iを記憶する(S305)。次いで、証明者アルゴリズムPは、e1i=F(r0i)−e0iを算出し、その後でe1iを記憶し、r0iを消去する(S306)。
【0226】
次いで、証明者アルゴリズムPは、c2i=H(t1i,e1i)を算出し、その後でc2iを記憶し、t1i及びe1iを消去する(S307)。次いで、証明者アルゴリズムPは、c0i=H(r1i,G(t0i,r1i))+e0iを算出し、その後でc0iを記憶し、r1iを消去する(S308)。次いで、証明者アルゴリズムPは、c1i=H(t0i,e0i)を算出し、その後でc1iを記憶し、t0i及びe0iを消去する(S309)。次いで、証明者アルゴリズムPは、ハッシュ値Cmt=H(c01,c11,c21,…,c0N,c1N,c2N)の算出に係る計算を実行する(S310:詳細は後述)。
【0227】
i=1〜Nについて、ステップS301〜S310の処理を実行した後、証明者アルゴリズムPは、ハッシュ値Cmtの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i,c2i)(i=1〜N)を保持していない。
【0228】
(ステップS310の処理について)
ここで、図26を参照しながら、ステップS310の処理について詳細に説明する。
【0229】
図26に示すように、ステップS310において、証明者アルゴリズムPは、既に記憶領域に保持しているメッセージ…,c0i,c1i,c2iの合計サイズがハッシュ関数のブロック単位以上であるか否かを判定する(S311)。保持しているメッセージの合計サイズがブロック単位以上の場合、証明者アルゴリズムPは、処理をステップS312に進める。一方、保持しているメッセージの合計サイズがブロック単位より小さい場合、証明者アルゴリズムPは、処理をステップS313に進める。
【0230】
処理をステップS312に進めた場合、証明者アルゴリズムPは、記憶領域に保持しているメッセージ…,c0i,c1i,c2iと、IV又は中間値CVjを利用して次の中間値CVj+1を生成して記憶領域に格納し、その後でメッセージ…,c0i,c1i,c2i及び中間値CVjを消去する(S312)。一方、処理をステップS313に進めた場合、証明者アルゴリズムPは、メッセージc0i,c1i,c2iを記憶領域に格納する(S313)。ステップS312又はS313の処理を実行した後、証明者アルゴリズムPは、ステップS310の処理を終了する。
【0231】
以上、ハッシュ関数の構造を考慮した3パス方式のアルゴリズムについて説明した。この構成を適用すると、(q,n,m,N)=(2,80,80,140)とし、ci及びseed・が160ビットで表せ、かつ、ハッシュ関数のブロック単位が512ビットの場合、アルゴリズムの実行に要する記憶領域は、1952ビット以下まで削減される。
【0232】
(5−7−2:変形例A2(5パス方式への適用)(図27、図28))
次に、図27及び図28を参照する。図27及び図28は、図21に示したアルゴリズムを改良した構成(ハッシュ関数の構造を考慮したアルゴリズム)を示したものである。
【0233】
図27に示すように、証明者アルゴリズムPは、ハッシュ値CmtAの生成を開始し、i=1〜Nについて、ステップS401〜S407の処理を繰り返し実行する。ステップS401において、証明者アルゴリズムPは、(r0i,seedt0i)=PRNG(seedr0i)を算出し、その後でr0iを記憶する(S401)。但し、証明者アルゴリズムPはi=1の場合にseedr01を記憶する。次いで、証明者アルゴリズムPは、(t0i,seede0i)=PRNG(seedt0i)を算出し、その後でt0iを記憶する(S402)。次いで、証明者アルゴリズムPは、(e0i,seedr0(i+1))=PRNG(seede0i)を算出し、その後でe0iを記憶する(S403)。
【0234】
次いで、証明者アルゴリズムPは、r1i=s−r0iを算出し、その後でr1iを記憶する(S404)。次いで、証明者アルゴリズムPは、c0i=H(r0i,t0i,e0i)を算出し、その後でc0iを記憶し、r0iを消去する(S405)。次いで、証明者アルゴリズムPは、c1i=H(r1i,G(t0i,r1i)+e0i)を算出し、その後でc1iを記憶し、r1i,t0i,e0iを消去する(S406)。次いで、証明者アルゴリズムPは、ハッシュ値CmtA=H(c01,c11,…,c0N,c1N)の算出に係る計算を実行する(S407:詳細は後述)。
【0235】
i=1〜Nについて、ステップS401〜S407の処理を実行した後、証明者アルゴリズムPは、ハッシュ値CmtAの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0i,t0i,e0i,r1i,c0i,c1i)(i=1〜N)を保持していない。
【0236】
(ステップS407の処理について)
ここで、図28を参照しながら、ステップS407の処理について詳細に説明する。
【0237】
図28に示すように、ステップS407において、証明者アルゴリズムPは、既に記憶領域に保持しているメッセージ…,c0i,c1iの合計サイズがハッシュ関数のブロック単位以上であるか否かを判定する(S411)。保持しているメッセージの合計サイズがブロック単位以上の場合、証明者アルゴリズムPは、処理をステップS412に進める。一方、保持しているメッセージの合計サイズがブロック単位より小さい場合、証明者アルゴリズムPは、処理をステップS413に進める。
【0238】
処理をステップS412に進めた場合、証明者アルゴリズムPは、記憶領域に保持しているメッセージ…,c0i,c1iと、IV又は中間値CVjを利用して次の中間値CVj+1を生成して記憶領域に格納し、その後でメッセージ…,c0i,c1i及び中間値CVjを消去する(S412)。一方、処理をステップS413に進めた場合、証明者アルゴリズムPは、メッセージc0i,c1iを記憶領域に格納する(S413)。ステップS412又はS413の処理を実行した後、証明者アルゴリズムPは、ステップS407の処理を終了する。
【0239】
以上、ハッシュ関数の構造を考慮した5パス方式のアルゴリズムについて説明した。この構成を適用すると、(q,n,m,N)=(2,80,80,90)とし、ci及びseed・が160ビットで表せ、かつ、ハッシュ関数のブロック単位が512ビットの場合、アルゴリズムの実行に要する記憶領域は、1712ビット以下まで削減される。
【0240】
[5−8:変形例B(シードの決め方)]
これまで、一つのシードから全ての乱数が生成される構成を念頭に置いて説明を進めてきたが、上記の各アルゴリズムは、このような構成に限定されるものではない。つまり、複数のシードから乱数が生成されるように構成することも可能である。例えば、下記の式(13)〜式(15)に示すように、1つのシードに対し、事前に取り決めた値を作用させ、任意の変数にランダムアクセスすることができるように構成してもよい。この例では、シードseed、テキスト“r”,“t”,“e”、インデックスiを組み合わせている。この例のように、一つのシードseedから任意の変数へとランダムアクセスできるようにすることで、必要な中間変数を直ちに取得することが可能になり、演算速度の向上が期待できる。
【0241】
【数11】
【0242】
以上、中間変数の効率的な管理方法について説明した。上記の方法を適用することで、アルゴリズムの実行に要する記憶領域のサイズを削減することが可能になる。
【0243】
<6:ハードウェア構成例(図29)>
上記の各アルゴリズムは、例えば、図29に示す情報処理装置のハードウェア構成を用いて実行することが可能である。つまり、当該各アルゴリズムの処理は、コンピュータプログラムを用いて図29に示すハードウェアを制御することにより実現される。なお、このハードウェアの形態は任意であり、例えば、パーソナルコンピュータ、携帯電話、PHS、PDA等の携帯情報端末、ゲーム機、接触式又は非接触式のICチップ、接触式又は非接触式のICカード、又は種々の情報家電がこれに含まれる。但し、上記のPHSは、Personal Handy−phone Systemの略である。また、上記のPDAは、Personal Digital Assistantの略である。
【0244】
図29に示すように、このハードウェアは、主に、CPU902と、ROM904と、RAM906と、ホストバス908と、ブリッジ910と、を有する。さらに、このハードウェアは、外部バス912と、インターフェース914と、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926と、を有する。但し、上記のCPUは、Central Processing Unitの略である。また、上記のROMは、Read Only Memoryの略である。そして、上記のRAMは、Random Access Memoryの略である。
【0245】
CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータ等を格納する手段である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等が一時的又は永続的に格納される。
【0246】
これらの構成要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等が用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラ(以下、リモコン)が用いられることもある。
【0247】
出力部918としては、例えば、CRT、LCD、PDP、又はELD等のディスプレイ装置、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置である。但し、上記のCRTは、Cathode Ray Tubeの略である。また、上記のLCDは、Liquid Crystal Displayの略である。そして、上記のPDPは、Plasma DisplayPanelの略である。さらに、上記のELDは、Electro−Luminescence Displayの略である。
【0248】
記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、ハードディスクドライブ(HDD)等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等が用いられる。但し、上記のHDDは、Hard Disk Driveの略である。
【0249】
ドライブ922は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928は、例えば、DVDメディア、Blu−rayメディア、HD DVDメディア、各種の半導体記憶メディア等である。もちろん、リムーバブル記録媒体928は、例えば、非接触型ICチップを搭載したICカード、又は電子機器等であってもよい。但し、上記のICは、Integrated Circuitの略である。
【0250】
接続ポート924は、例えば、USBポート、IEEE1394ポート、SCSI、RS−232Cポート、又は光オーディオ端子等のような外部接続機器930を接続するためのポートである。外部接続機器930は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はICレコーダ等である。但し、上記のUSBは、Universal Serial Busの略である。また、上記のSCSIは、Small Computer System Interfaceの略である。
【0251】
通信部926は、ネットワーク932に接続するための通信デバイスであり、例えば、有線又は無線LAN、Bluetooth(登録商標)、又はWUSB用の通信カード、光通信用のルータ、ADSL用のルータ、又は接触又は非接触通信用のデバイス等である。また、通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークにより構成され、例えば、インターネット、家庭内LAN、赤外線通信、可視光通信、放送、又は衛星通信等である。但し、上記のLANは、Local Area Networkの略である。また、上記のWUSBは、Wireless USBの略である。そして、上記のADSLは、Asymmetric Digital Subscriber Lineの略である。
【0252】
<7:まとめ>
最後に、本技術の実施形態に係る技術内容について簡単に纏める。ここで述べる技術内容は、例えば、PC、携帯電話、ゲーム機、情報端末、情報家電、カーナビゲーションシステム等、種々の情報処理装置に対して適用することができる。なお、以下で述べる情報処理装置の機能は、1台の情報処理装置を利用して実現することも可能であるし、複数台の情報処理装置を利用して実現することも可能である。また、以下で述べる情報処理装置が処理を実行する際に用いるデータ記憶手段及び演算処理手段は、当該情報処理装置に設けられたものであってもよいし、ネットワークを介して接続された機器に設けられたものであってもよい。
【0253】
上記の情報処理装置の機能構成は以下のように表現される。例えば、下記(1)に記載の情報処理装置は、多次多変数連立方程式の求解困難性に安全性の根拠を置く効率的な公開鍵認証方式又は電子署名方式のアルゴリズムを実行する機能を有する。
【0254】
(1)
シードから乱数の組を発生させる乱数生成部と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供部と、
k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成部は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
情報処理装置。
【0255】
(2)
前記回答提供部は、前記記憶装置に格納されたシードを利用し、前記回答情報として用いる前記乱数又は前記中間変数を再生成する、
上記(1)に記載の情報処理装置。
【0256】
(3)
前記メッセージ生成部は、N回分(N≧2)のメッセージを生成し、
前記メッセージ提供部は、N回分の前記メッセージを1回の対話で前記検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報を1回の対話で前記検証者に提供する、
上記(1)又は(2)に記載の情報処理装置。
【0257】
(4)
前記メッセージ生成部は、前記N回分のメッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、前記N回分のメッセージに代えて前記ハッシュ値を前記検証者に提供する、
上記(3)に記載の情報処理装置。
【0258】
(5)
前記メッセージ生成部は、生成した前記メッセージを記憶装置に格納し、前記記憶装置に格納したメッセージの合計サイズがハッシュ関数のブロック単位より大きい場合に、当該記憶装置に格納したメッセージを利用して、当該ハッシュ関数が前記ハッシュ値の計算途中で算出する中間値を算出し、前記記憶装置に格納したメッセージを消去する処理を逐次実行して前記ハッシュ値を算出する、
上記(4)に記載の情報処理装置。
【0259】
(6)
シードから乱数の組を発生させる乱数生成部と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供部と、
前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成する中間情報生成部と、
前記検証者に前記第3の情報を提供する中間情報提供部と、
k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記2次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成部は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
情報処理装置。
【0260】
(7)
前記中間情報生成部は、前記記憶装置に格納されたシードを利用して、前記第3の情報を生成する際に用いる前記乱数又は前記中間変数を再生成する、
上記(6)に記載の情報処理装置。
【0261】
(8)
前記中間情報生成部は、前記第3の情報の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
上記(7)に記載の情報処理装置。
【0262】
(9)
前記回答提供部は、前記記憶装置に格納されたシードを利用し、前記回答情報として用いる前記乱数又は前記中間変数を再生成する、
上記(6)〜(8)のいずれか1項に記載の情報処理装置。
【0263】
(10)
前記メッセージ生成部は、N回分(N≧2)のメッセージを生成し、
前記メッセージ提供部は、N回分の前記メッセージを1回の対話で前記検証者に提供し、
前記中間情報生成部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した前記第1の情報及び前記メッセージを生成する際に得られるN回分の前記第2の情報を用いてN回分の前記第3の情報を生成し、
前記中間情報提供部は、N回分の前記第3の情報を1回の対話で検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報を1回の対話で前記検証者に提供する、
上記(6)〜(9)のいずれか1項に記載の情報処理装置。
【0264】
(11)
前記メッセージ生成部は、前記N回分のメッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、前記N回分のメッセージに代えて前記ハッシュ値を前記検証者に提供する、
上記(10)に記載の情報処理装置。
【0265】
(12)
前記メッセージ生成部は、生成した前記メッセージを記憶装置に格納し、前記記憶装置に格納したメッセージの合計サイズがハッシュ関数のブロック単位より大きい場合に、当該記憶装置に格納したメッセージを利用して、当該ハッシュ関数が前記ハッシュ値の計算途中で算出する中間値を算出し、前記記憶装置に格納したメッセージを消去する処理を逐次実行して前記ハッシュ値を算出する、
上記(11)に記載の情報処理装置。
【0266】
(13)
シードから乱数の組を発生させる乱数生成部と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成部と、
前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供部と、
を備え、
前記署名生成部は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
署名生成装置。
【0267】
(14)
シードから乱数の組を発生させるステップと、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するステップと、
k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記生成するステップでは、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、
情報処理方法。
【0268】
(15)
シードから乱数の組を発生させるステップと、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するステップと、
前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成するステップと、
前記検証者に前記第3の情報を提供するステップと、
k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記2次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージを生成するステップでは、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、
情報処理方法。
【0269】
(16)
シードから乱数の組を発生させるステップと、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供するステップと、
を含み、
前記生成するステップでは、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、
署名生成方法。
【0270】
(17)
シードから乱数の組を発生させる乱数生成機能と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供機能と、
k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成機能は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
プログラム。
【0271】
(18)
シードから乱数の組を発生させる乱数生成機能と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供機能と、
前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成する中間情報生成機能と、
前記検証者に前記第3の情報を提供する中間情報提供機能と、
k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記2次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成機能は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
プログラム。
【0272】
(19)
シードから乱数の組を発生させる乱数生成機能と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成機能と、
前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記署名生成機能は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
プログラム。
【0273】
(20)
上記の(17)〜(19)のいずれか1項に記載のプログラムが記録された、コンピュータにより読み取り可能な記録媒体。
【0274】
(備考)
上記の証明者アルゴリズムPは、乱数生成部、メッセージ生成部、メッセージ提供部、回答提供部、中間情報生成部、中間情報提供部の一例である。また、上記の署名生成アルゴリズムSigは、乱数生成部、署名生成部、署名提供部の一例である。
【0275】
以上、添付図面を参照しながら本技術の好適な実施形態について説明したが、本技術は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本技術の技術的範囲に属するものと了解される。
【0276】
上記の説明において、ハッシュ関数Hを用いるアルゴリズムを紹介したが、ハッシュ関数Hの代わりにコミットメント関数COMを用いてもよい。コミットメント関数COMは、文字列S及び乱数ρを引数にとる関数である。コミットメント関数の例としては、Shai HaleviとSilvio Micaliによって国際会議CRYPTO1996で発表された方式などがある。
【符号の説明】
【0277】
Gen 鍵生成アルゴリズム
P 証明者アルゴリズム
V 検証者アルゴリズム
Sig 署名生成アルゴリズム
Ver 署名検証アルゴリズム
【技術分野】
【0001】
本技術は、情報処理装置、署名生成装置、情報処理方法、署名生成方法、及びプログラムに関する。
【背景技術】
【0002】
情報処理技術や通信技術の急速な発展に伴い、公文書、私文書を問わず、文書の電子化が急速に進んでいる。これに伴い、多くの個人や企業は、電子文書の安全管理に大きな関心を寄せている。こうした関心の高まりを受け、各方面で電子文書の盗聴や偽造等のタンパリング行為に対する対抗策が盛んに研究されるようになってきた。電子文書の盗聴に対しては、例えば、電子文書を暗号化することにより安全性が確保される。また、電子文書の偽造に対しては、例えば、電子署名を利用することにより安全性が確保される。但し、利用する暗号や電子署名が高いタンパリング耐性を有していなければ、十分な安全性が保証されない。
【0003】
電子署名は、電子文書の作成者を特定するために利用される。そのため、電子署名は、電子文書の作成者しか生成できないようにすべきである。仮に、悪意ある第三者が同じ電子署名を生成できてしまうと、その第三者が電子文書の作成者に成りすますことができてしまう。つまり、悪意ある第三者により電子文書が偽造されてしまう。こうした偽造を防止するため、電子署名の安全性については様々な議論が交わされてきた。現在広く利用されている電子署名方式としては、例えば、RSA署名方式やDSA署名方式などが知られている。
【0004】
RSA署名方式は、「大きな合成数に対する素因数分解の困難性(以下、素因数分解問題)」を安全性の根拠とする。また、DSA署名方式は、「離散対数問題に対する解の導出の困難性」を安全性の根拠とする。これらの根拠は、古典的なコンピュータを利用して素因数分解問題や離散対数問題を効率的に解くアルゴリズムが存在しないことに起因する。つまり、上記の困難性は、古典的なコンピュータにおける計算量的な困難性を意味する。しかしながら、量子コンピュータを用いると、素因数分解問題や離散対数問題に対する解答が効率的に算出されてしまうと言われている。
【0005】
現在利用されている電子署名方式や公開鍵認証方式の多くは、RSA署名方式やDSA署名方式と同様、素因数分解問題や離散対数問題の困難性に安全性の根拠をおいている。そのため、こうした電子署名方式や公開鍵認証方式は、量子コンピュータが実用化された場合に、その安全性が確保されないことになる。そこで、素因数分解問題や離散対数問題など、量子コンピュータにより容易に解かれてしまう問題とは異なる問題に安全性の根拠をおく新たな電子署名方式及び公開鍵認証方式の実現が求められている。量子コンピュータにより容易に解くことが難しい問題としては、例えば、多変数多項式問題がある。
【0006】
多変数多項式問題に安全性の根拠をおく電子署名方式としては、例えば、MI(Matsumoto−Imai cryptography)、HFE(Hidden Field Equation cryptography)、OV(Oil−Vinegar signature scheme)、TTM(Tamed Transformation Method cryptography)に基づく方式が知られている。例えば、下記の非特許文献1、2には、HFEに基づく電子署名方式が開示されている。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】Jacques Patarin Asymmetric Cryptography with a Hidden Monomial. CRYPTO 1996, pp.45−60.
【非特許文献2】Patarin, J., Courtois, N., and Goubin, L. QUARTZ, 128−Bit Long Digital Signatures. In Naccache,D., Ed. Topics in Cryptology − CT−RSA 2001 (San Francisco, CA, USA, April 2001), vol. 2020 of Lecture Notes in Computer Science, Springer−Verlag., pp.282−297.
【発明の概要】
【発明が解決しようとする課題】
【0008】
上記の通り、多変数多項式問題は、量子コンピュータを用いても解くことが困難なNP困難問題と呼ばれる問題の一例である。通常、HFEなどに代表される多変数多項式問題を利用した公開鍵認証方式は、特殊なトラップドアが仕込まれた多次多変数連立方程式を利用している。例えば、x1,…,xnに関する多次多変数連立方程式F(x1,…,xn)=yと線形変換A及びBが用意され、線形変換A及びBが秘密に管理される。この場合、多次多変数連立方程式F、線形変換A及びBがトラップドアとなる。
【0009】
トラップドアF,A,Bを知っているエンティティは、x1,…,xnに関する方程式B(F(A(x1,…,xn)))=y’を解くことができる。一方、トラップドアF,A,Bを知らないエンティティは、x1,…,xnに関する方程式B(F(A(x1,…,xn)))=y’を解くことができない。この仕組みを利用することにより、多次多変数連立方程式の解答困難性を安全性の根拠とする公開鍵認証方式や電子署名方式が実現される。
【0010】
上記の通り、こうした公開鍵認証方式や電子署名方式を実現するには、B(F(A(x1,…,xn)))=yを満たすような特殊な多次多変数連立方程式を用意する必要がある。また、署名生成時に多次多変数連立方程式Fを解く必要がある。そのため、利用可能な多次多変数連立方程式Fは、比較的容易に解けるものに限られていた。すなわち、これまでの方式においては、比較的容易に解ける3つの関数(トラップドア)B、F、Aを合成した形の多次多変数連立方程式B(F(A(x1,…,xn)))=yしか用いることができず、十分な安全性を確保することが難しかった。
【0011】
本技術は、上記の事情に鑑みて、効率的に解く手段(トラップドア)が知られていない多次多変数連立方程式を用いて高い安全性を有する効率的な公開鍵認証方式又は電子署名方式を少ないメモリで実現することが可能な、新規かつ改良された情報処理装置、署名生成装置、情報処理方法、署名生成方法、及びプログラムの提供を意図して考案されたものである。
【課題を解決するための手段】
【0012】
本技術のある観点によれば、シードから乱数の組を発生させる乱数生成部と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成部と、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供部と、k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記メッセージ生成部は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、情報処理装置が提供される。
【0013】
また、本技術の別の観点によれば、シードから乱数の組を発生させる乱数生成部と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成部と、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供部と、前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成する中間情報生成部と、前記検証者に前記第3の情報を提供する中間情報提供部と、k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記メッセージ生成部は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、情報処理装置が提供される。
【0014】
また、本技術の別の観点によれば、シードから乱数の組を発生させる乱数生成部と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成部と、前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供部と、を備え、前記署名生成部は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、署名生成装置が提供される。
【0015】
また、本技術の別の観点によれば、シードから乱数の組を発生させるステップと、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するステップと、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するステップと、k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、を含み、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記生成するステップでは、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、情報処理方法が提供される。
【0016】
また、本技術の別の観点によれば、シードから乱数の組を発生させるステップと、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するステップと、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するステップと、前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成するステップと、前記検証者に前記第3の情報を提供するステップと、k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、を含み、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記メッセージを生成するステップでは、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、情報処理方法が提供される。
【0017】
また、本技術の別の観点によれば、シードから乱数の組を発生させるステップと、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成するステップと、前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供するステップと、を含み、前記生成するステップでは、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、署名生成方法が提供される。
【0018】
また、本技術の別の観点によれば、シードから乱数の組を発生させる乱数生成機能と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成機能と、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供機能と、k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、をコンピュータに実現させるためのプログラムであり、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記メッセージ生成機能は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、プログラムが提供される。
【0019】
また、本技術の別の観点によれば、シードから乱数の組を発生させる乱数生成機能と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成機能と、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供機能と、前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成する中間情報生成機能と、前記検証者に前記第3の情報を提供する中間情報提供機能と、k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、をコンピュータに実現させるためのプログラムであり、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、前記メッセージ生成機能は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、プログラムが提供される。
【0020】
また、本技術の別の観点によれば、シードから乱数の組を発生させる乱数生成機能と、環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成機能と、前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供機能と、をコンピュータに実現させるためのプログラムであり、前記署名生成機能は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、プログラムが提供される。
【0021】
また、本技術の別の観点によれば、上記のプログラムが記録された、コンピュータにより読み取り可能な記録媒体が提供される。
【0022】
また、本技術の別の観点によれば、上記のプログラムが記録された、コンピュータにより読み取り可能な記録媒体が提供される。
【発明の効果】
【0023】
以上説明したように本技術によれば、効率的に解く手段(トラップドア)が知られていない多次多変数連立方程式を用いて、高い安全性を有する効率的な公開鍵認証方式又は電子署名方式を実現することが可能になる。
【図面の簡単な説明】
【0024】
【図1】公開鍵認証方式に係るアルゴリズムの構成について説明するための説明図である。
【図2】電子署名方式に係るアルゴリズムの構成について説明するための説明図である。
【図3】nパスの公開鍵認証方式に係るアルゴリズムの構成について説明するための説明図である。
【図4】3パスの公開鍵認証方式に係る効率的なアルゴリズムについて説明するための説明図である。
【図5】3パスの公開鍵認証方式に係る効率的なアルゴリズムの並列化について説明するための説明図である。
【図6】5パスの公開鍵認証方式に係る効率的なアルゴリズムの構成例について説明するための説明図である。
【図7】5パスの公開鍵認証方式に係る効率的なアルゴリズムの並列化について説明するための説明図である。
【図8】3パスの公開鍵認証方式に係る効率的なアルゴリズムを電子署名方式のアルゴリズムに変形する方法について説明するための説明図である。
【図9】5パスの公開鍵認証方式に係る効率的なアルゴリズムを電子署名方式のアルゴリズムに変形する方法について説明するための説明図である。
【図10】3パス方式に係る中間変数の管理方法について説明するための説明図である。
【図11】5パス方式に係る中間変数の管理方法について説明するための説明図である。
【図12】本実施形態に係る中間変数の管理方法を3パス方式の基本構成に適用する方法について説明するための説明図である。
【図13】本実施形態に係る中間変数の管理方法を3パス方式の基本構成に適用する方法について説明するための説明図である。
【図14】本実施形態に係る中間変数の管理方法を3パス方式の基本構成に適用する方法について説明するための説明図である。
【図15】本実施形態に係る中間変数の管理方法を3パス方式の並列化構成に適用する方法について説明するための説明図である。
【図16】本実施形態に係る中間変数の管理方法を3パス方式の並列化構成に適用する方法について説明するための説明図である。
【図17】本実施形態に係る中間変数の管理方法を5パス方式の基本構成に適用する方法について説明するための説明図である。
【図18】本実施形態に係る中間変数の管理方法を5パス方式の基本構成に適用する方法について説明するための説明図である。
【図19】本実施形態に係る中間変数の管理方法を5パス方式の基本構成に適用する方法について説明するための説明図である。
【図20】本実施形態に係る中間変数の管理方法を5パス方式の基本構成に適用する方法について説明するための説明図である。
【図21】本実施形態に係る中間変数の管理方法を5パス方式の並列化構成に適用する方法について説明するための説明図である。
【図22】本実施形態に係る中間変数の管理方法を5パス方式の並列化構成に適用する方法について説明するための説明図である。
【図23】本実施形態に係る中間変数の管理方法を5パス方式の並列化構成に適用する方法について説明するための説明図である。
【図24】本実施形態の一変形例に係る中間変数の管理方法について説明するための説明図である。
【図25】本実施形態の一変形例に係る中間変数の管理方法について説明するための説明図である。
【図26】本実施形態の一変形例に係る中間変数の管理方法について説明するための説明図である。
【図27】本実施形態の一変形例に係る中間変数の管理方法について説明するための説明図である。
【図28】本実施形態の一変形例に係る中間変数の管理方法について説明するための説明図である。
【図29】本技術の各実施形態に係るアルゴリズムを実行することが可能な情報処理装置のハードウェア構成例について説明するための説明図である。
【発明を実施するための形態】
【0025】
以下に添付図面を参照しながら、本技術の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0026】
[説明の流れについて]
ここで、以下に記載する本技術の実施形態に関する説明の流れについて簡単に述べる。まず、図1を参照しながら、公開鍵認証方式のアルゴリズム構成について説明する。次いで、図2を参照しながら、電子署名方式のアルゴリズム構成について説明する。次いで、図3を参照しながら、nパスの公開鍵認証方式について説明する。
【0027】
次いで、図4及び図5を参照しながら、3パスの公開鍵認証方式に係るアルゴリズムの構成例について説明する。次いで、図6及び図7を参照しながら、5パスの公開鍵認証方式に係るアルゴリズムの構成例について説明する。次いで、図8及び図9を参照しながら、3パス及び5パスの公開鍵認証方式に係る効率的なアルゴリズムを電子署名方式のアルゴリズムに変形する方法について説明する。
【0028】
次いで、図10〜図28を参照しながら、本実施形態に係る中間変数の管理方法について説明する。次いで、図29を参照しながら、本技術の第1及び第2実施形態に係る各アルゴリズムを実現することが可能な情報処理装置のハードウェア構成例について説明する。最後に、本実施形態の技術的思想について纏め、当該技術的思想から得られる作用効果について簡単に説明する。
【0029】
(説明項目)
1:はじめに
1−1:公開鍵認証方式のアルゴリズム
1−2:電子署名方式のアルゴリズム
1−3:nパスの公開鍵認証方式
2:3パスの公開鍵認証方式に係るアルゴリズムの構成
2−1:具体的なアルゴリズムの構成例
2−2:並列化アルゴリズムの構成例
3:5パスの公開鍵認証方式に係るアルゴリズムの構成
3−1:具体的なアルゴリズムの構成例
3−2:並列化アルゴリズムの構成例
4:電子署名方式への変形
4−1:3パスの公開鍵認証方式から電子署名方式への変形
4−2:5パスの公開鍵認証方式から電子署名方式への変形
5:中間変数の効率的な管理方法
5−1:概要
5−2:適用例#1(3パス方式の基本構成への適用)
5−3:適用例#2(3パス方式の並列化構成への適用)
5−4:適用例#3(5パス方式の基本構成への適用)
5−5:適用例#4(5パス方式v並列化構成への適用)
5−6:適用例#5(電子署名方式への適用)
5−7:変形例A(ハッシュ関数の構造を考慮した構成)
5−7−1:3パス方式への適用
5−7−2:5パス方式への適用
5−8:変形例B(シードの決め方)
6:ハードウェア構成例
7:まとめ
【0030】
<1:はじめに>
本実施形態は、多次多変数連立方程式に対する求解問題の困難性に安全性の根拠をおく公開鍵認証方式及び電子署名方式に関する。但し、本実施形態は、HFE電子署名方式などの従来手法とは異なり、効率的に解く手段(トラップドア)を持たない多次多変数連立方程式を利用する公開鍵認証方式及び電子署名方式に関する。まず、公開鍵認証方式のアルゴリズム、電子署名方式のアルゴリズム、及びnパスの公開鍵認証方式について、その概要を簡単に説明する。
【0031】
[1−1:公開鍵認証方式のアルゴリズム]
まず、図1を参照しながら、公開鍵認証方式のアルゴリズムについて概要を説明する。図1は、公開鍵認証方式のアルゴリズムについて概要を説明するための説明図である。
【0032】
公開鍵認証は、ある人(証明者)が、公開鍵pk及び秘密鍵skを利用して、他の人(検証者)に本人であることを納得させるために利用される。例えば、証明者Aの公開鍵pkAは、検証者Bに公開される。一方、証明者Aの秘密鍵skAは、証明者Aにより秘密に管理される。公開鍵認証の仕組みにおいては、公開鍵pkAに対応する秘密鍵skAを知る者が証明者A本人であるとみなされる。
【0033】
公開鍵認証の仕組みを利用して証明者Aが証明者A本人であることを検証者Bに証明するには、対話プロトコルを介して、証明者Aが公開鍵pkAに対応する秘密鍵skAを知っているという証拠を検証者Bに提示すればよい。そして、証明者Aが秘密鍵skAを知っているという証拠が検証者Bに提示され、その証拠を検証者Bが確認し終えた場合、証明者Aの正当性(本人であること)が証明されたことになる。
【0034】
但し、公開鍵認証の仕組みには、安全性を担保するために以下の条件が求められる。
【0035】
1つ目の条件は、「対話プロトコルを実行した際に秘密鍵skを持たない偽証者により偽証が成立してしまう確率を限りなく小さくする」ことである。この1つ目の条件が成り立つことを「健全性」と呼ぶ。つまり、健全性とは、「秘密鍵skを持たない偽証者により、対話プロトコルの実行中に無視できない確率で偽証が成立することはないこと」と言い換えられる。2つ目の条件は、「対話プロトコルを実行したとしても、証明者Aが有する秘密鍵skAの情報が検証者Bに一切漏れることがない」ことである。この2つ目の条件が成り立つことを「零知識性」と呼ぶ。
【0036】
安全に公開鍵認証を行うには、健全性及び零知識性を有する対話プロトコルを利用する必要がある。仮に、健全性及び零知識性を有しない対話プロトコルを用いて認証処理を行った場合には、偽証された可能性及び秘密鍵の情報が漏れてしまった可能性が否定できないため、処理自体が成功裡に完了しても証明者の正当性を証明したことにはならない。従って、対話プロトコルの健全性及び零知識性を如何に保証するかが重要になる。
【0037】
(モデル)
公開鍵認証方式のモデルには、図1に示すように、証明者と検証者という2つのエンティティが存在する。証明者は、鍵生成アルゴリズムGenを用いて、証明者固有の秘密鍵skと公開鍵pkの組を生成する。次いで、証明者は、鍵生成アルゴリズムGenを用いて生成した秘密鍵skと公開鍵pkの組を利用して検証者と対話プロトコルを実行する。このとき、証明者は、証明者アルゴリズムPを利用して対話プロトコルを実行する。上記の通り、証明者は、証明者アルゴリズムPを利用し、対話プロトコルの中で秘密鍵skを保有している証拠を検証者に提示する。
【0038】
一方、検証者は、検証者アルゴリズムVを利用して対話プロトコルを実行し、証明者が公開している公開鍵に対応する秘密鍵を、その証明者が保有しているか否かを検証する。つまり、検証者は、証明者が公開鍵に対応する秘密鍵を保有しているか否かを検証するエンティティである。このように、公開鍵認証方式のモデルは、証明者と検証者という2つのエンティティ、及び、鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVという3つのアルゴリズムにより構成される。
【0039】
なお、以下の説明において、「証明者」「検証者」という表現を用いるが、これらの表現はあくまでもエンティティを意味するものである。従って、鍵生成アルゴリズムGen、証明者アルゴリズムPを実行する主体は、「証明者」のエンティティに対応する情報処理装置である。同様に、検証者アルゴリズムVを実行する主体は、情報処理装置である。これら情報処理装置のハードウェア構成は、例えば、図10に示した通りである。つまり、鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVは、ROM904、RAM906、記憶部920、リムーバブル記録媒体928などに記録されたプログラムに基づいてCPU902などにより実行される。
【0040】
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、証明者により利用される。鍵生成アルゴリズムGenは、証明者に固有の秘密鍵skと公開鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された公開鍵pkは公開される。そして、公開された公開鍵pkは、検証者により利用される。一方、鍵生成アルゴリズムGenにより生成された秘密鍵skは、証明者が秘密に管理する。そして、証明者により秘密に管理される秘密鍵skは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するために利用される。形式的に、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、秘密鍵skと公開鍵pkを出力するアルゴリズムとして、下記の式(1)のように表現される。
【0041】
【数1】
【0042】
(証明者アルゴリズムP)
証明者アルゴリズムPは、証明者により利用される。証明者アルゴリズムPは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するためのアルゴリズムである。つまり、証明者アルゴリズムPは、秘密鍵skと公開鍵pkとを入力とし、対話プロトコルを実行するアルゴリズムである。
【0043】
(検証者アルゴリズムV)
検証者アルゴリズムVは、検証者により利用される。検証者アルゴリズムVは、対話プロトコルの中で、公開鍵pkに対応する秘密鍵skを証明者が保有しているか否かを検証するアルゴリズムである。検証者アルゴリズムVは、公開鍵pkを入力とし、対話プロトコルの実行結果に応じて0又は1(1bit)を出力するアルゴリズムである。なお、検証者は、検証者アルゴリズムVが0を出力した場合には証明者が不正なものであると判断し、1を出力した場合には証明者が正当なものであると判断する。形式的に、検証者アルゴリズムVは、下記の式(2)のように表現される。
【0044】
【数2】
【0045】
上記の通り、意味のある公開鍵認証を実現するには、対話プロトコルが健全性及び零知識性という2つの条件を満たしている必要がある。しかし、証明者が秘密鍵skを保有していることを証明するためには、証明者が秘密鍵skに依存した手続きを実行し、その結果を検証者に通知した上で、その通知内容に基づく検証を検証者に実行させる必要がある。秘密鍵skに依存した手続きを実行するのは、健全性を担保するために必要である。一方で、秘密鍵skの情報が一切検証者に漏れないようにする必要がある。そのため、これらの要件を満たすように、上記の鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVを巧妙に設計する必要がある。
【0046】
以上、公開鍵認証方式のアルゴリズムについて、その概要を説明した。
【0047】
[1−2:電子署名方式のアルゴリズム]
次に、図2を参照しながら、電子署名方式のアルゴリズムについて概要を説明する。図2は、電子署名方式のアルゴリズムについて概要を説明するための説明図である。
【0048】
紙文書とは異なり、ある電子化されたデータに対して押印したり署名を記載したりすることはできない。そのため、電子化されたデータの作成者を証明するためには、紙文書に押印したり署名を記載したりするのと同等の効果が得られる電子的な仕組みを必要とする。この仕組みが電子署名である。電子署名とは、データの作成者しか知らない署名データをデータに関連付けて受領者に提供し、その署名データを受領者側で検証する仕組みのことを言う。
【0049】
(モデル)
電子署名方式のモデルには、図2に示すように、署名者及び検証者という2つのエンティティが存在する。そして、電子署名方式のモデルは、鍵生成アルゴリズムGen、署名生成アルゴリズムSig、署名検証アルゴリズムVerという3つのアルゴリズムにより構成される。
【0050】
署名者は、鍵生成アルゴリズムGenを利用して署名者固有の署名鍵skと検証鍵pkとの組を生成する。また、署名者は、署名生成アルゴリズムSigを利用して文書Mに付与する電子署名σを生成する。つまり、署名者は、文書Mに電子署名を付与するエンティティである。一方、検証者は、署名検証アルゴリズムVerを利用して文書Mに付与された電子署名σを検証する。つまり、検証者は、文書Mの作成者が署名者であるか否かを確認するために、電子署名σを検証するエンティティである。
【0051】
なお、以下の説明において、「署名者」「検証者」という表現を用いるが、これらの表現はあくまでもエンティティを意味するものである。従って、鍵生成アルゴリズムGen、署名生成アルゴリズムSigを実行する主体は、「署名者」のエンティティに対応する情報処理装置である。同様に、署名検証アルゴリズムVerを実行する主体は、情報処理装置である。これら情報処理装置のハードウェア構成は、例えば、図10に示した通りである。つまり、鍵生成アルゴリズムGen、署名生成アルゴリズムSig、署名検証アルゴリズムVerは、ROM904、RAM906、記憶部920、リムーバブル記録媒体928などに記録されたプログラムに基づいてCPU902などにより実行される。
【0052】
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、署名者により利用される。鍵生成アルゴリズムGenは、署名者固有の署名鍵skと検証鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された検証鍵pkは公開される。一方、鍵生成アルゴリズムGenにより生成された署名鍵skは、署名者により秘密に管理される。そして、署名鍵skは、文書Mに付与される電子署名σの生成に利用される。例えば、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、署名鍵sk及び公開鍵pkを出力する。この場合、鍵生成アルゴリズムGenは、形式的に、下記の式(3)のように表現することができる。
【0053】
【数3】
【0054】
(署名生成アルゴリズムSig)
署名生成アルゴリズムSigは、署名者により利用される。署名生成アルゴリズムSigは、文書Mに付与される電子署名σを生成するアルゴリズムである。署名生成アルゴリズムSigは、署名鍵skと文書Mとを入力とし、電子署名σを出力するアルゴリズムである。この署名生成アルゴリズムSigは、形式的に、下記の式(4)のように表現することができる。
【0055】
【数4】
【0056】
(署名検証アルゴリズムVer)
署名検証アルゴリズムVerは、検証者により利用される。署名検証アルゴリズムVerは、電子署名σが文書Mに対する正当な電子署名であるか否かを検証するアルゴリズムである。署名検証アルゴリズムVerは、署名者の検証鍵pk、文書M、電子署名σを入力とし、0又は1(1bit)を出力するアルゴリズムである。この署名検証アルゴリズムVerは、形式的に、下記の式(5)のように表現することができる。なお、検証者は、署名検証アルゴリズムVerが0を出力した場合(公開鍵pkが文書Mと電子署名σを拒否する場合)に電子署名σが不当であると判断し、1を出力した場合(公開鍵pkが文書Mと電子署名σを受理する場合)に電子署名σが正当であると判断する。
【0057】
【数5】
【0058】
以上、電子署名方式のアルゴリズムについて、その概要を説明した。
【0059】
[1−3:nパスの公開鍵認証方式]
次に、図3を参照しながら、nパスの公開鍵認証方式について説明する。図3は、nパスの公開鍵認証方式について説明するための説明図である。
【0060】
上記の通り、公開鍵認証方式は、対話プロトコルの中で、証明者が公開鍵pkに対応する秘密鍵skを保有していることを検証者に証明する認証方式である。また、対話プロトコルは、健全性及び零知識性という2つの条件を満たす必要がある。そのため、対話プロトコルの中では、図3に示すように、証明者及び検証者の双方がそれぞれ処理を実行しながらn回の情報交換を行う。
【0061】
nパスの公開鍵認証方式の場合、証明者アルゴリズムPを用いて証明者により処理(工程#1)が実行され、情報T1が検証者に送信される。次いで、検証者アルゴリズムVを用いて検証者により処理(工程#2)が実行され、情報T2が証明者に送信される。さらに、k=3〜nについて処理の実行及び情報Tkの送信が順次行われ、最後に処理(工程#n+1)が実行される。このように、情報がn回送受信される方式のことを「nパス」の公開鍵認証方式と呼ぶ。
【0062】
以上、nパスの公開鍵認証方式について説明した。
【0063】
<2:3パスの公開鍵認証方式に係るアルゴリズムの構成>
以下、3パスの公開鍵認証方式に係るアルゴリズムについて説明する。なお、以下の説明において、3パスの公開鍵認証方式のことを「3パス方式」と呼ぶ場合がある。
【0064】
[2−1:具体的なアルゴリズムの構成例(図4)]
まず、図4を参照しながら、3パス方式に係る具体的なアルゴリズムの構成例について紹介する。図4は、3パス方式に係る具体的なアルゴリズムの構成について説明するための説明図である。ここでは、公開鍵pkの一部として2次多項式の組(f1(x),…,fm(x))を利用する場合について考える。但し、2次多項式fi(x)は、下記の式(6)のように表現されるものとする。また、ベクトル(x1,…,xn)をxと表記し、2次多項式の組(f1(x),…,fm(x))を多変数多項式F(x)と表記することにする。
【0065】
【数6】
【0066】
また、2次多項式の組(f1(x),…,fm(x))は、下記の式(7)のように表現することができる。また、A1,…,Amは、n×n行列である。さらに、b1,…,bmはそれぞれn×1ベクトルである。
【0067】
【数7】
【0068】
この表現を用いると、多変数多項式Fは、下記の式(8)及び式(9)のように表現することができる。この表現が成り立つことは、下記の式(10)から容易に確認することができる。
【0069】
【数8】
【0070】
このようにF(x+y)をxに依存する第1の部分と、yに依存する第2の部分と、x及びyの両方に依存する第3の部分とに分けたとき、第3の部分に対応する項G(x,y)は、x及びyについて双線形になる。以下、項G(x,y)を双線形項と呼ぶ場合がある。この性質を利用すると、効率的なアルゴリズムを構築することが可能になる。
【0071】
例えば、ベクトルt0∈Kn、e0∈Kmを用いて、多変数多項式F(x+r)のマスクに利用する多変数多項式F1(x)をF1(x)=G(x,t0)+e0と表現する。この場合、多変数多項式F(x+r0)とG(x)との和は、下記の式(11)のように表現される。ここで、t1=r0+t0、e1=F(r0)+e0とおけば、多変数多項式F2(x)=F(x+r0)+F1(x)は、ベクトルt1∈Kn、e1∈Kmにより表現することができる。そのため、F1(x)=G(x,t0)+e0に設定すれば、Kn上のベクトル及びKm上のベクトルを用いてF1及びF2を表現できるようになり、通信に必要なデータサイズの少ない効率的なアルゴリズムを実現することが可能になる。
【0072】
【数9】
【0073】
なお、F2(或いはF1)からr0に関する情報が一切漏れることはない。例えば、e1及びt1(或いはe0及びt0)を与えられても、e0及びt0(或いはe1及びt1)を知らない限り、r0の情報を一切知ることはできない。従って、零知識性が担保される。以下、上記の論理に基づいて構築された3パス方式のアルゴリズムについて説明する。ここで説明する3パス方式のアルゴリズムは、以下のような鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVにより構成される。
【0074】
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、環K上で定義されるm本の多変数多項式f1(x1,…,xn),…,fm(x1,…,xn)、及びベクトルs=(s1,…,sn)∈Knを生成する。次に、鍵生成アルゴリズムGenは、y=(y1,…,ym)←(f1(s),…,fm(s))を計算する。そして、鍵生成アルゴリズムGenは、(f1(x1,…,xn),…,fm(x1,…,xn),y)を公開鍵pkに設定し、sを秘密鍵に設定する。
【0075】
(証明者アルゴリズムP、検証者アルゴリズムV)
以下、図4を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図4に示したフローチャートに沿って説明を進める。
【0076】
工程#1:
図4に示すように、まず、証明者アルゴリズムPは、ランダムにベクトルr0,t0∈Kn及びe0∈Kmを生成する。次いで、証明者アルゴリズムPは、r1←s−r0を計算する。この計算は、秘密鍵sをベクトルr0によりマスクする操作に相当する。さらに、証明者アルゴリズムPは、t1←r0−t0を計算する。次いで、証明者アルゴリズムPは、e1←F(r0)−e0を計算する。
【0077】
工程#1(続き):
次いで、証明者アルゴリズムPは、c0←H(r1,G(t0,r1)+e0)を計算する。次いで、証明者アルゴリズムPは、c1←H(t0,e0)を計算する。次いで、証明者アルゴリズムPは、c2←H(t1,e1)を計算する。工程#1で生成されたメッセージ(c0,c1,c2)は、検証者アルゴリズムVに送られる。
【0078】
工程#2:
メッセージ(c0,c1,c2)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求Chに設定する。この要求Chは証明者アルゴリズムPに送られる。
【0079】
工程#3:
要求Chを受け取った証明者アルゴリズムPは、受け取った要求Chに応じて検証者アルゴリズムVに送る返答Rspを生成する。Ch=0の場合、証明者アルゴリズムPは、返答Rsp=(r0,t1,e1)を生成する。Ch=1の場合、証明者アルゴリズムPは、返答Rsp=(r1,t0,e0)を生成する。Ch=2の場合、証明者アルゴリズムPは、返答Rsp=(r1,t1,e1)を生成する。工程#3で生成された返答Rspは、検証者アルゴリズムVに送られる。
【0080】
工程#4:
返答Rspを受け取った検証者アルゴリズムVは、受け取った返答Rspを利用して以下の検証処理を実行する。
【0081】
Ch=0の場合、検証者アルゴリズムVは、c1=H(r0−t1,F(r0)−e1)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c2=H(t1,e1)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
【0082】
Ch=1の場合、検証者アルゴリズムVは、c0=H(r1,G(t0,r1)+e0)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c1=H(t0,e0)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
【0083】
Ch=2の場合、検証者アルゴリズムVは、c0=H(r1,y−F(r1)−G(t1,r1)−e1)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c2=H(t1,e1)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
【0084】
以上、3パス方式に係る効率的なアルゴリズムの構成例について説明した。
【0085】
[2−2:並列化アルゴリズムの構成例(図5)]
次に、図5を参照しながら、図4に示した3パス方式のアルゴリズムを並列化する方法について説明する。なお、鍵生成アルゴリズムGenの構成については説明を省略する。
【0086】
さて、上記の対話プロトコルを適用すれば、偽証が成功する確率を2/3以下に抑制することができる。従って、この対話プロトコルを2回実行すれば、偽証が成功する確率を(2/3)2以下に抑制することができる。さらに、この対話プロトコルをN回実行すると、偽証が成功する確率は(2/3)Nとなり、Nを十分に大きい数(例えば、N=140)にすれば、偽証が成功する確率は無視できる程度に小さくなる。
【0087】
対話プロトコルを複数回実行する方法としては、例えば、メッセージ、要求、返答のやり取りを逐次的に複数回繰り返す直列的な方法と、1回分のやり取りで複数回分のメッセージ、要求、返答のやり取りを行う並列的な方法とが考えられる。さらに、直列的な方法と並列的な方法とを組み合わせたハイブリッド型の方法も考えられる。ここでは、図5を参照しながら、3パス方式に係る上記の対話プロトコルを並列的に実行するアルゴリズム(以下、並列化アルゴリズム)について説明する。
【0088】
工程#1:
図5に示すように、まず、証明者アルゴリズムPは、i=1〜Nについて以下の処理(1)〜処理(6)を実行する。
処理(1):証明者アルゴリズムPは、ランダムにベクトルr0i,t0i∈Kn及びe0i∈Kmを生成する。
処理(2):証明者アルゴリズムPは、r1i←s−r0iを計算する。この計算は、秘密鍵sをベクトルr0iによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、t1i←r0i+t0iを計算する。
処理(3):証明者アルゴリズムPは、e1i←F(r0i)−e0iを計算する。
処理(4):証明者アルゴリズムPは、c0i←H(r1i,G(r1i,t0i)+e0i)を計算する。
処理(5):証明者アルゴリズムPは、c1i←H(t0i,e0i)を計算する。
処理(6):証明者アルゴリズムPは、c2i←H(t1i,e1i)を計算する。
【0089】
工程#1(続き)
i=1〜Nについて上記の処理(1)〜処理(6)を実行した後、証明者アルゴリズムPは、Cmt←H(c01,c11,c21,…,c0N,c1N,c2N)を計算する。工程#1で生成されたハッシュ値Cmtは、検証者アルゴリズムVに送られる。このように、メッセージ(c01,c11,c21,…,c0N,c1N,c2N)をハッシュ値に変換してから検証者アルゴリズムVに送ることで、通信量を削減することが可能になる。
【0090】
工程#2:
ハッシュ値Cmtを受け取った検証者アルゴリズムVは、i=1〜Nのそれぞれについて、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1〜Nのそれぞれについて、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求Chiに設定する。要求Ch1,…,ChNは、証明者アルゴリズムPに送られる。
【0091】
工程#3:
要求Ch1,…,ChNを受け取った証明者アルゴリズムPは、受け取った要求Ch1,…,ChNのそれぞれ応じて検証者アルゴリズムVに送る返答Rsp1,…,RspNを生成する。Chi=0の場合、証明者アルゴリズムPは、Rspi=(r0i,t1i,e1i,c0i)を生成する。Chi=1の場合、証明者アルゴリズムPは、Rspi=(r1i,t0i,e0i,c2i)を生成する。Chi=2の場合、証明者アルゴリズムPは、Rspi=(r1i,t1i,e1i,c1i)を生成する。
【0092】
工程#3で生成された返答Rsp1,…,RspNは、検証者アルゴリズムVに送られる。
【0093】
工程#4:
返答Rsp1,…,RspNを受け取った検証者アルゴリズムVは、受け取った返答Rsp1,…,RspNを利用して以下の処理(1)〜処理(3)をi=1〜Nについて実行する。但し、検証者アルゴリズムVは、Chi=0の場合に処理(1)を実行し、Chi=1の場合に処理(2)を実行し、Chi=2の場合に処理(3)を実行する。
【0094】
処理(1):Chi=0の場合、検証者アルゴリズムVは、Rspiから(r0i,t1i,e1i,c0i)を取り出す。次いで、検証者アルゴリズムVは、c1i=H(r0i−t1i,F(r0i)−e1i)を計算する。さらに、検証者アルゴリズムVは、c2i=H(t1i,e1i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i,c2i)を保持する。
【0095】
処理(2):Chi=1の場合、検証者アルゴリズムVは、Rspiから(r1i,t0i,e0i,c2i)を取り出す。次いで、検証者アルゴリズムVは、c0i=H(r1i,G(t0i,r1i)+e0i)を計算する。さらに、検証者アルゴリズムVは、c1i=H(t0i,e0i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i,c2i)を保持する。
【0096】
処理(3):Chi=2の場合、検証者アルゴリズムVは、Rspiから(r1i,t1i,e1i,c1i)を取り出す。次いで、検証者アルゴリズムVは、c0i=H(r1i,y−F(r1i)−G(t1i,r1i)−e1i)を計算する。さらに、検証者アルゴリズムVは、c2i=H(t1i,e1i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i,c2i)を保持する。
【0097】
処理(1)〜処理(3)をi=1〜Nについて実行した後、検証者アルゴリズムVは、Cmt=H(c01,c11,c21,…,c0N,c1N,c2N)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗した場合に認証失敗を示す値0を出力する。
【0098】
以上、3パス方式に係る効率的な並列化アルゴリズムの構成例について説明した。
【0099】
<3:5パスの公開鍵認証方式に係るアルゴリズムの構成>
次に、5パスの公開鍵認証方式に係るアルゴリズムについて説明する。なお、以下の説明において、5パスの公開鍵認証方式のことを「5パス方式」と呼ぶ場合がある。
【0100】
3パス方式の場合には対話プロトコル1回当たりの偽証確率が2/3であったが、5パス方式の場合には対話プロトコル1回当たりの偽証確率が1/2+1/qとなる。但し、qは、利用する環の位数である。従って、環の位数が十分に大きい場合、5パス方式の方が1回当たりの偽証確率を低減することが可能になり、少ない対話プロトコルの実行回数で、偽証確率を十分に小さくすることができる。
【0101】
例えば、偽証確率を1/2n以下にしたい場合、3パス方式においては、n/(log3−1)=1.701n回以上、対話プロトコルを実行する必要がある。一方、偽証確率を1/2n以下にしたい場合、5パス方式においては、n/(1−log(1+1/q))回以上、対話プロトコルを実行する必要がある。従って、q=24にすれば、同じセキュリティレベルを実現するのに必要な通信量は、3パス方式に比べ、5パス方式の方が少なくなるのである。
【0102】
[3−1:具体的なアルゴリズムの構成例(図6)]
まず、図6を参照しながら、5パス方式に係る具体的なアルゴリズムの構成例について紹介する。図6は、5パス方式に係る具体的なアルゴリズムの構成について説明するための説明図である。ここでは、公開鍵pkの一部として2次多項式の組(f1(x),…,fm(x))を利用する場合について考える。但し、2次多項式fi(x)は、上記の式(6)のように表現されるものとする。また、ベクトル(x1,…,xn)をxと表記し、2次多項式の組(f1(x),…,fm(x))を多変数多項式F(x)と表記することにする。
【0103】
3パス方式に係るアルゴリズムと同様、2つのベクトルt0∈Kn、e0∈Kmを用いて、多変数多項式F(x+r0)をマスクするために用いた多変数多項式F1(x)をF1(x)=G(x、t0)+e0のように表現する。この表現を用いると、多変数多項式F(x+r0)について、下記の式(12)で表現される関係が得られる。
【0104】
【数10】
【0105】
そのため、t1=ChA・r0+t0、e1=ChA・F(r0)+e0とすれば、マスク後の多変数多項式F2(x)=ChA・F(x+r0)+F1(x)も、2つのベクトルt1∈Kn、e1∈Kmにより表現することができる。これらの理由から、F1(x)=G(x,t0)+e0と設定すれば、Kn上のベクトル及びKm上のベクトルを用いてF1及びF2を表現できるようになり、通信に必要なデータサイズが少ない効率的なアルゴリズムを実現することが可能になる。
【0106】
なお、F2(或いはF1)からr0に関する情報が一切漏れることはない。例えば、e1及びt1(或いはe0及びt0)を与えられても、e0及びt0(或いはe1及びt1)を知らない限り、r0の情報を一切知ることはできない。従って、零知識性は担保される。以下、上記の論理に基づいて構築された5パス方式のアルゴリズムについて説明する。ここで説明する5パス方式のアルゴリズムは、以下のような鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVにより構成される。
【0107】
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、環K上で定義される多変数多項式f1(x1,…,xn),…,fm(x1,…,xn)、及びベクトルs=(s1,…,sn)∈Knを生成する。次に、鍵生成アルゴリズムGenは、y=(y1,…,ym)←(f1(s),…,fm(s))を計算する。そして、鍵生成アルゴリズムGenは、(f1,…,fm,y)を公開鍵pkに設定し、sを秘密鍵に設定する。なお、以下では、ベクトル(x1,…,xn)をxと表記し、多変数多項式の組(f1(x),…,fm(x))をF(x)と表記する。
【0108】
(証明者アルゴリズムP、検証者アルゴリズムV)
以下、図6を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVにより実行される処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図6に示したフローチャートに沿って説明を進める。
【0109】
工程#1:
図6に示すように、まず、証明者アルゴリズムPは、ランダムにベクトルr0∈Kn、t0∈Kn、e0∈Kmを生成する。次いで、証明者アルゴリズムPは、r1←s−r0を計算する。この計算は、秘密鍵sをベクトルr0によりマスクする操作に相当する。次いで、証明者アルゴリズムPは、ベクトルr0,t0,e0のハッシュ値c0を生成する。つまり、証明者アルゴリズムPは、c0←H(r0,t0,e0)を計算する。次いで、証明者アルゴリズムPは、G(t0,r1)+e0及びr1のハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c0←H(r1,G(t0,r1)+e0)を計算する。工程#1で生成されたメッセージ(c0,c1)は、検証者アルゴリズムVに送られる。
【0110】
工程#2:
メッセージ(c0,c1)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数ChAを選択し、選択した数ChAを証明者アルゴリズムPに送る。
【0111】
工程#3:
数ChAを受け取った証明者アルゴリズムPは、t1←ChA・r0−t0を計算する。さらに、証明者アルゴリズムPは、e1←ChA・F(r0)−e0を計算する。そして、証明者アルゴリズムPは、t1及びe1を検証者アルゴリズムVに送る。
【0112】
工程#4:
t1及びe1を受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求ChBに設定する。この要求ChBは証明者アルゴリズムPに送られる。
【0113】
工程#5:
要求ChBを受け取った証明者アルゴリズムPは、受け取った要求ChBに応じて検証者アルゴリズムVに送り返す返答Rspを生成する。ChB=0の場合、証明者アルゴリズムPは、返答Rsp=r0を生成する。ChB=1の場合、証明者アルゴリズムPは、返答Rsp=r1を生成する。工程#5で生成された返答Rspは、検証者アルゴリズムVに送られる。
【0114】
工程#6:
返答Rspを受け取った検証者アルゴリズムVは、受け取った返答Rspを利用して以下の検証処理を実行する。
【0115】
ChB=0の場合、検証者アルゴリズムVは、r0←Rspを実行する。そして、検証者アルゴリズムVは、c0=H(r0,ChA・r0−t1,ChA・F(r0)−e1)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
【0116】
ChB=1の場合、検証者アルゴリズムVは、r1←Rspを実行する。そして、検証者アルゴリズムVは、c1=H1(r1,ChA・(y−F(r1))−G(t1,r1)−e1)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
【0117】
以上、5パス方式に係る効率的なアルゴリズムの構成例について説明した。
【0118】
[3−2:並列化アルゴリズムの構成例(図7)]
次に、図7を参照しながら、図6に示した5パス方式のアルゴリズムを並列化する方法について説明する。なお、鍵生成アルゴリズムGenの構成については説明を省略する。
【0119】
先に述べた通り、5パス方式に係る対話プロトコルを適用すれば、偽証が成功する確率を(1/2+1/q)以下に抑制することができる。従って、この対話プロトコルを2回実行すれば、偽証が成功する確率を(1/2+1/q)2以下に抑制することができる。さらに、この対話プロトコルをN回実行すると、偽証が成功する確率は(1/2+1/q)Nとなり、Nを十分に大きい数(例えば、N=80)にすれば、偽証が成功する確率は無視できる程度に小さくなる。
【0120】
対話プロトコルを複数回実行する方法としては、例えば、メッセージ、要求、返答のやり取りを逐次的に複数回繰り返す直列的な方法と、1回分のやり取りで複数回分のメッセージ、要求、返答のやり取りを行う並列的な方法とが考えられる。さらに、直列的な方法と並列的な方法とを組み合わせたハイブリッド型の方法も考えられる。ここでは、5パス方式に係る上記の対話プロトコルを並列的に実行するアルゴリズム(以下、並列化アルゴリズム)について説明する。
【0121】
工程#1:
図7に示すように、まず、証明者アルゴリズムPは、i=1〜Nについて処理(1)〜処理(4)を実行する。
処理(1):証明者アルゴリズムPは、ランダムにベクトルr0i,t0i∈Kn及びe0i∈Kmを生成する。
処理(2):証明者アルゴリズムPは、r1i←s−r0iを計算する。この計算は、秘密鍵sをベクトルr0iによりマスクする操作に相当する。
処理(3):証明者アルゴリズムPは、c0i←H(r0i,t0i,e0i)を計算する。
処理(4):証明者アルゴリズムPは、c1i←H(r1i,G(t0i,r1i)+e0i)を計算する。
i=1〜Nについて処理(1)〜処理(4)を実行した後、証明者アルゴリズムPは、ハッシュ値Cmt←H(c01,c11,…,c0N,c1N)を実行する。そして、工程#1で生成されたハッシュ値Cmtは、検証者アルゴリズムVに送られる。
【0122】
工程#2:
ハッシュ値Cmtを受け取った検証者アルゴリズムVは、i=1〜Nのそれぞれについて、q通り存在する環Kの元からランダムに1つの数ChAiを選択し、選択した数ChAi(i=1〜N)を証明者アルゴリズムPに送る。
【0123】
工程#3:
数ChAi(i=1〜N)を受け取った証明者アルゴリズムPは、i=1〜Nのそれぞれについて、t1i←ChAi・r0i−t0iを計算する。さらに、証明者アルゴリズムPは、i=1〜Nのそれぞれについて、e1i←ChAi・F(r0i)−e0iを計算する。そして、証明者アルゴリズムPは、t11,…,t1N及びe11,…,e1Nを検証者アルゴリズムVに送る。
【0124】
工程#4:
t11,…,t1N及びe11,…,e1Nを受け取った検証者アルゴリズムVは、i=1〜Nのそれぞれについて、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求ChBiに設定する。要求ChBi(i=1〜N)は証明者アルゴリズムPに送られる。
【0125】
工程#5:
要求ChBi(i=1〜N)を受け取った証明者アルゴリズムPは、i=1〜Nについて、受け取った要求ChBiに応じて検証者アルゴリズムVに送り返す返答Rspiを生成する。ChBi=0の場合、証明者アルゴリズムPは、返答Rspi=(r0i,c1i)を生成する。ChBi=1の場合、証明者アルゴリズムPは、返答Rspi=(r1i,c0i)を生成する。工程#5で生成された返答Rspi(i=1〜N)は、検証者アルゴリズムVに送られる。
【0126】
工程#6:
返答Rspi(i=1〜N)を受け取った検証者アルゴリズムVは、受け取った返答Rspi(i=1〜N)を利用して以下の処理(1)及び処理(2)を実行する。
【0127】
処理(1):ChBi=0の場合、検証者アルゴリズムVは、(r0i,c1i)←Rspiを実行する。そして、検証者アルゴリズムVは、c0i=H(r0i,ChAi・r0i−t1i,ChAi・F(r0i)−e1i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i)を保持する。
【0128】
処理(2):ChBi=1の場合、検証者アルゴリズムVは、(r1i,c0i)←Rspiを実行する。そして、検証者アルゴリズムVは、c1i=H(r1i,ChAi・(y−F(r1i))−G(t1i,r1i)−e1i)を計算する。そして、検証者アルゴリズムVは、(c0i,c1i)を保持する。
【0129】
i=1〜Nについて処理(1)及び処理(2)を実行した後、検証者アルゴリズムVは、Cmt=H(c01,c11,…,c0N,c1N)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
【0130】
以上、5パス方式に係る効率的な並列化アルゴリズムの構成例について説明した。
【0131】
<4:電子署名方式への変形>
次に、上記の公開鍵認証方式を電子署名方式へと変形する方法を紹介する。
【0132】
公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させると、証明者のみが検証者を納得させられるという点において、電子署名方式のモデルと近似していることが容易に理解されよう。こうした考えに基づき、上述した公開鍵認証方式を電子署名方式へと変形する方法について説明する。
【0133】
[4−1:3パスの公開鍵認証方式から電子署名方式への変形(図8)]
まず、3パスの公開鍵認証方式から電子署名方式への変形について説明する。
【0134】
図8に示すように、3パス方式に係る効率的なアルゴリズム(例えば、図5を参照)は、3回の対話及び4つの工程#1〜工程#4で表現される。
【0135】
工程#1は、i=1〜Nについて、ai=(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i,c2i)を生成する処理(1)と、Cmt←H(c01,c11,c21,…,c0N,c1N,c2N)を計算する処理(2)とで構成される。工程#1で証明者アルゴリズムPにより生成されたCmtは、検証者アルゴリズムVへと送られる。
【0136】
工程#2は、Ch1,…,ChNを選択する処理で構成される。工程#2で検証者アルゴリズムVにより選択されたCh1,…,ChNは、証明者アルゴリズムPへと送られる。
【0137】
工程#3は、Ch1,…,ChN及びa1,…,aNを用いてRsp1,…,RspNを生成する処理で構成される。この処理をRspi←Select(Chi,ai)と表現する。工程#3で証明者アルゴリズムPにより生成されたRsp1,…,RspNは、検証者アルゴリズムVへと送られる。
【0138】
工程#4は、Ch1,…,ChN及びRsp1,…,RspNを用いてc01,c11,c21,…,c0N,c1N,c2Nを再生する処理(1)と、再生したc01,c11,c21,…,c0N,c1N,c2Nを用いてCmt=H(c01,c11,c21,…,c0N,c1N,c2N)を検証する処理(2)とで構成される。
【0139】
上記の工程#1〜工程#4で表現される公開鍵認証方式のアルゴリズムは、図8に示すような署名生成アルゴリズムSig及び署名検証アルゴリズムVerに変形される。
【0140】
(署名生成アルゴリズムSig)
まず、署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)〜処理(5)で構成される。
【0141】
処理(1):署名生成アルゴリズムSigは、ai=(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i,c2i)を生成する。
処理(2):署名生成アルゴリズムSigは、Cmt←H(c01,c11,c21,…,c0N,c1N,c2N)を計算する。
処理(3):署名生成アルゴリズムSigは、(Ch1,…,ChN)←H(M,Cmt)を計算する。このMは、署名を付与する文書である。
処理(4):署名生成アルゴリズムSigは、Rspi←Select(Chi,ai)を計算する。
処理(5):署名生成アルゴリズムSigは、(Cmt,Rsp1,…,RspN)を署名に設定する。
【0142】
(署名検証アルゴリズムVer)
次に、署名検証アルゴリズムVerの構成について述べる。署名検証アルゴリズムVerは、以下の処理(1)〜処理(3)で構成される。
【0143】
処理(1):署名検証アルゴリズムVerは、(Ch1,…,ChN)←H(M,Cmt)を計算する。
処理(2):署名検証アルゴリズムVerは、Ch1,…,ChN及びRsp1,…,RspNを用いてc01,c11,c21,…,c0N,c1N,c2Nを生成する。
処理(3):署名検証アルゴリズムVerは、再生したc01,c11,c21,…,c0N,c1N,c2Nを用いてCmt=H(c01,c11,c21,…,c0N,c1N,c2N)を検証する。
【0144】
以上説明したように、公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させることで、公開鍵認証方式のアルゴリズムを電子署名方式のアルゴリズムへと変形することが可能になる。
【0145】
[4−2:5パスの公開鍵認証方式から電子署名方式への変形(図9)]
次に、5パスの公開鍵認証方式から電子署名方式への変形について説明する。
【0146】
図9に示すように、5パス方式に係る効率的なアルゴリズム(例えば、図7を参照)は、5回の対話及び6つの工程#1〜工程#6で表現される。
【0147】
工程#1は、i=1〜Nについて、ai=(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i)を生成する処理(1)と、Cmt←H(c01,c11,…,c0N,c1N)を計算する処理(2)とで構成される。工程#1で証明者アルゴリズムPにより生成されたCmtは、検証者アルゴリズムVへと送られる。
【0148】
工程#2は、ChA1,…,ChANを選択する処理で構成される。工程#2で検証者アルゴリズムVにより選択されたChA1,…,ChANは、証明者アルゴリズムPへと送られる。
【0149】
工程#3は、i=1〜Nについて、bi=(t1i,e1i)を生成する処理で構成される。工程#3で証明者アルゴリズムPにより生成されたb1,…,bNは、検証者アルゴリズムVへと送られる。
【0150】
工程#4は、ChB1,…,ChBNを選択する処理で構成される。工程#4で検証者アルゴリズムVにより選択されたChB1,…,ChBNは、証明者アルゴリズムPへと送られる。
【0151】
工程#5は、ChB1,…,ChBN,a1,…,aN,b1,…,bNを用いてRsp1,…,RspNを生成する処理で構成される。この処理をRspi←Select(ChBi,ai,bi)と表現する。工程#5で証明者アルゴリズムPにより生成されたRsp1,…,RspNは、検証者アルゴリズムVへと送られる。
【0152】
工程#6は、ChA1,…,ChAN,ChB1,…,ChBN,Rsp1,…,RspNを用いてc01,c11,…,c0N,c1Nを再生する処理(1)と、再生したc01,c11,…,c0N,c1Nを用いてCmt=H(c01,c11,…,c0N,c1N)を検証する処理(2)とで構成される。
【0153】
上記の工程#1〜工程#6で表現される公開鍵認証方式のアルゴリズムは、図9に示すような署名生成アルゴリズムSig及び署名検証アルゴリズムVerに変形される。
【0154】
(署名生成アルゴリズムSig)
まず、署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)〜処理(7)で構成される。
【0155】
処理(1):署名生成アルゴリズムSigは、ai=(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i)を生成する。
処理(2):署名生成アルゴリズムSigは、Cmt←H(c01,c11,…,c0N,c1N)を計算する。
処理(3):署名生成アルゴリズムSigは、(ChA1,…,ChAN)←H(M,Cmt)を計算する。このMは、署名を付与する文書である。
処理(4):署名生成アルゴリズムSigは、i=1〜Nについて、bi=(t1i,e1i)を生成する。
処理(5):署名生成アルゴリズムSigは、(ChB1,…,ChBN)←H(M,Cmt,ChA1,…,ChAN,b1,…,bN)を計算する。なお、(ChB1,…,ChBN)←H(ChA1,…,ChAN,b1,…,bN)と変形してもよい。
処理(6):署名生成アルゴリズムSigは、Rspi←Select(ChBi,ai,bi)を計算する。
処理(7):署名生成アルゴリズムSigは、(Cmt,b1,…,bN,Rsp1,…,RspN)を電子署名に設定する。
【0156】
(署名検証アルゴリズムVer)
次に、署名検証アルゴリズムVerの構成について述べる。署名検証アルゴリズムVerは、以下の処理(1)〜処理(4)で構成される。
【0157】
処理(1):署名検証アルゴリズムVerは、(ChA1,…,ChAN)←H(M,Cmt)を計算する。
処理(2):署名検証アルゴリズムVerは、(ChB1,…,ChBN)←H(M,Cmt,ChA1,…,ChAN,b1,…,bN)を計算する。なお、署名検証アルゴリズムVerが実行する処理(5)において、(ChB1,…,ChBN)←H(ChA1,…,ChAN,b1,…,bN)と変形した場合、署名検証アルゴリズムVerは、(ChB1,…,ChBN)←H(ChA1,…,ChAN,b1,…,bN)を計算する。
処理(3):署名検証アルゴリズムVerは、ChA1,…,ChAN,ChB1,…,ChBN,Rsp1,…,RspNを用いてc01,c11,…,c0N,c1Nを生成する。
処理(4):署名検証アルゴリズムVerは、再生したc01,c11,…,c0N,c1Nを用いてCmt=H(c01,c11,…,c0N,c1N)を検証する。
【0158】
以上説明したように、公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させることで、公開鍵認証方式のアルゴリズムを電子署名方式のアルゴリズムへと変形することが可能になる。
【0159】
<5:中間変数の効率的な管理方法>
ところで、上記の公開鍵認証方式及び電子署名方式のアルゴリズムを実行する際、多くの中間変数を証明者アルゴリズムPが保持していることに気づくであろう。例えば、図4に示した3パス方式のアルゴリズムにおいて、工程#1で生成した中間変数r0,t0,e0,r1,t1,e1は、証明者アルゴリズムPにより保持され、工程#3で再び利用される。また、図5に示した並列化アルゴリズムのように、工程#1でメッセージをハッシュ値Cmtに纏めて送信する構成の場合、証明者アルゴリズムPは、工程#3で再び利用する中間変数r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i,c2i(i=1〜N)を中間変数として保持しておく必要がある。そのため、上記の公開鍵認証方式及び電子署名方式のアルゴリズムを実行するには、十分な記憶領域が必要になる。
【0160】
そこで、本件発明者は、証明者アルゴリズムPが保持すべき中間変数の量を削減し、少ない記憶領域で上記の公開鍵認証方式及び電子署名方式のアルゴリズムを実行できるようにする仕組みを考案した。以下、この仕組み(以下、メモリ削減方法)について説明する。
【0161】
[5−1:概要(図10、図11)]
まず、図10及び図11を参照しながら、本実施形態に係るメモリ削減方法の概要について説明する。図10は、3パス方式のアルゴリズムを簡略的に表現したものである。一方、図11は、5パス方式のアルゴリズムを簡略的に表現したものである。
【0162】
図10に示すように、3パス方式の場合、(1)まず、証明者アルゴリズムPによりCmtが生成され、検証者アルゴリズムVへと送られる。(2)次いで、検証者アルゴリズムVによりChが選択され、証明者アルゴリズムPへと送られる。(3)次いで、証明者アルゴリズムPによりRspが生成され、検証者アルゴリズムVへと送られる。(4)次いで、検証者アルゴリズムVによりCmt及びRspに基づく検証が行われる。
【0163】
図10において、(a1,…,au)は、擬似乱数生成器により生成される中間変数である。一方、(b1,…,bv)は、乱数成分(a1,…,au)に基づいて生成される中間変数である。また、T1は、(b1,…,bv)を生成するための関数である。そして、T2は、Cmtを生成するための関数である。さらに、T3は、Rspを生成するための関数である。このように、Cmtを生成する過程で生成された中間変数は、Rspを生成する過程で利用される。そのため、証明者アルゴリズムPは、Cmtを検証者アルゴリズムVへと送った後も中間変数を保持している必要がある。
【0164】
5パス方式の場合、図11に示すように、(1)まず、検証者アルゴリズムVによりCmtAが生成され、検証者アルゴリズムVへと送られる。(2)次いで、検証者アルゴリズムVによりChAが選択され、証明者アルゴリズムPへと送られる。(3)次いで、検証者アルゴリズムVによりCmtBが生成され、検証者アルゴリズムVへと送られる。(4)次いで、検証者アルゴリズムVによりChBが選択され、証明者アルゴリズムPへと送られる。(5)次いで、証明者アルゴリズムPによりRspが生成され、検証者アルゴリズムVへと送られる。(6)次いで、検証者アルゴリズムVによりCmt及びRspに基づく検証が行われる。
【0165】
図11において、(a1,…,au)は、擬似乱数生成器により生成される中間変数である。一方、(b1,…,bv)は、乱数成分(a1,…,au)に基づいて生成される中間変数である。また、T1は、(b1,…,bv)を生成するための関数である。そして、T2は、CmtAを生成するための関数である。また、T3は、CmtBを生成するための関数である。さらに、T4は、Rspを生成するための関数である。このように、CmtAを生成する過程で生成された中間変数は、CmtB及びRspを生成する過程で利用される。そのため、証明者アルゴリズムPは、CmtAを検証者アルゴリズムVへと送った後も中間変数を保持している必要がある。
【0166】
しかしながら、図10及び図11に示したアルゴリズムの構成を注意深く分析した結果、擬似乱数生成器に入力するシードの値を保持することにより、中間変数を一時的に破棄できるようにアルゴリズムを変形可能なことが分かった。但し、中間変数を一時的に破棄できるようにするには、ハッシュ値Cmtの生成手順に工夫を施す必要がある。以下、具体例を参照しながら、一度に多くの中間変数を保持せずに済む工夫について詳細に説明する。なお、この工夫は、3パス方式、5パス方式、電子署名方式のいずれにも適用可能である。
【0167】
[5−2:適用例#1(3パス方式の基本構成への適用)(図12〜図14)]
まず、図12〜図14を参照しながら、本実施形態に係るメモリ削減方法を3パス方式の基本構成(図4を参照)に適用する場合のアルゴリズム構成について説明する。
【0168】
(全体構成)
3パス方式の基本構成は、例えば、図12のように表現することができる。図12に示すように、(1)まず、証明者アルゴリズムPは、メッセージc0,c1,c2に基づくハッシュ値Cmtを生成する。ハッシュ値Cmtの生成に際し、証明者アルゴリズムPは、擬似乱数生成器PRNGを用いて、(r0,t0,e0)=PRNG(seed)を生成する。次いで、証明者アルゴリズムPは、(r1,t1,e1)=(s−r0,r0−t0,F(r0)−e0)を算出する。次いで、証明者アルゴリズムPは、c0=H(r1,G(t0,r1)+e0)、c1=H(t0,e0)、c2=H(t1,e1)を算出する。次いで、証明者アルゴリズムPは、Cmt=H(c0,c1,c2)を算出する。
【0169】
証明者アルゴリズムPにより生成されたハッシュ値Cmtは、検証者アルゴリズムVへと送られる。(2)ハッシュ値Cmtを受け取った検証者アルゴリズムVは、チャレンジChを選択する。そして、検証者アルゴリズムVにより選択されたチャレンジChは、証明者アルゴリズムPへと送られる。
【0170】
(3)チャレンジChを受け取った証明者アルゴリズムPは、返答Rspを生成する。Rspの生成に際し、証明者アルゴリズムPは、チャレンジChに応じて(r0,t0,e0,r1,t1,e1,c0,c1,c2)の中から必要な組み合わせを選択し、返答Rspに設定する。そして、証明者アルゴリズムPにより生成された返答Rspは、検証者アルゴリズムVへと送られる。(4)返答Rspを受け取った検証者アルゴリズムVは、ハッシュ値Cmt、チャレンジCh、及び返答Rspに基づいて検証を実行する。
【0171】
ここで、以上説明した3パス方式の基本構成において、ハッシュ値Cmtの生成後に中間変数r0,t0,e0,r1,t1,e1,c0,c1,c2を一時的に破棄できるようにしたハッシュ値Cmtの生成方法について説明する。また、ここで説明するハッシュ値Cmtの生成方法を適用した場合における返答Rspの生成方法についても説明する。
【0172】
(ハッシュ値Cmtの生成方法)
まず、図13を参照する。図13に示すように、証明者アルゴリズムPは、ハッシュ値Cmtの生成を開始すると、まず、(r0,seedt0)=PRNG(seedr0)を算出し、その後でr0及びseedr0を記憶する(S101)。次いで、証明者アルゴリズムPは、(t0,seede0)=PRNG(seedt0)を算出し、その後でt0を記憶する(S102)。次いで、証明者アルゴリズムPは、(e0,seed’)=PRNG(seede0)を算出し、その後でe0を記憶する(S103)。
【0173】
次いで、証明者アルゴリズムPは、r1=s−r0を算出し、その後でr1を記憶する(S104)。次いで、証明者アルゴリズムPは、t1=r0−t0を算出し、その後でt1を記憶する(S105)。次いで、証明者アルゴリズムPは、e1=F(r0)−e0を算出し、その後でe1を記憶し、r0を消去する(S106)。次いで、証明者アルゴリズムPは、c2=H(t1,e1)を算出し、その後でc2を記憶し、t1及びe1を消去する(S107)。次いで、証明者アルゴリズムPは、c0=H(r1,G(t0,r1)+e0)を算出し、その後でc0を記憶し、r1を消去する(S108)。
【0174】
次いで、証明者アルゴリズムPは、c1=H(t0,e0)を算出し、その後でc1を記憶し、t0及びe0を消去する(S109)。次いで、証明者アルゴリズムPは、ハッシュ値Cmt=H(c0,c1,c2)を算出し、その後でc0,c1,c2を消去する(S110)。ステップS110の処理を完了した後、証明者アルゴリズムPは、ハッシュ値Cmtの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0,t0,e0,r1,t1,e1,c0,c1,c2)を保持していない。
【0175】
(返答Rspの生成方法)
次に、図14を参照する。図14に示すように、証明者アルゴリズムPは、チャレンジChの値を判別する(S121)。Ch=0の場合、証明者アルゴリズムPは、処理をステップS122に進める。Ch=1の場合、証明者アルゴリズムPは、処理をステップS124に進める。Ch=2の場合、証明者アルゴリズムPは、処理をステップS126に進める。
【0176】
処理をステップS122に進めた場合、証明者アルゴリズムPは、(r0,t1,e1,c0)を生成する(S122)。このとき、証明者アルゴリズムPは、図13に示したアルゴリズムのうち、必要なステップを実行して(r0,t1,e1,c0)を生成する。次いで、証明者アルゴリズムPは、返答Rsp=(r0,t1,e1,c0)を設定し(S123)、返答Rspの生成に係る一連の処理を終了する。
【0177】
また、処理をステップS124に進めた場合、証明者アルゴリズムPは、(r1,t0,e0,c2)を生成する(S124)。このとき、証明者アルゴリズムPは、図13に示したアルゴリズムのうち、必要なステップを実行して(r1,t0,e0,c2)を生成する。次いで、証明者アルゴリズムPは、返答Rsp=(r1,t0,e0,c2)を設定し(S125)、返答Rspの生成に係る一連の処理を終了する。
【0178】
また、処理をステップS126に進めた場合、証明者アルゴリズムPは、(r1,t1,e1,c1)を生成する(S126)。このとき、証明者アルゴリズムPは、図13に示したアルゴリズムのうち、必要なステップを実行して(r1,t1,e1,c1)を生成する。次いで、証明者アルゴリズムPは、返答Rsp=(r1,t1,e1,c1)を設定し(S127)、返答Rspの生成に係る一連の処理を終了する。
【0179】
以上、本実施形態に係るメモリ削減方法を3パス方式の基本構成に適用する場合のアルゴリズム構成について説明した。上記のメモリ削減方法を適用することにより、少ない記憶領域で3パス方式の公開鍵認証方式を実現することが可能になる。
【0180】
[5−3:適用例#2(3パス方式の並列化構成への適用)(図15、図16)]
次に、図15及び図16を参照しながら、本実施形態に係るメモリ削減方法を3パスの並列化構成(図5を参照)に適用する場合のアルゴリズム構成について説明する。ここでは、図5に示した3パス方式の並列化アルゴリズムに本実施形態に係るメモリ削減方法を適用する場合のアルゴリズム構成について考える。
【0181】
(ハッシュ値Cmtの生成方法)
まず、図15を参照する。図15に示すように、証明者アルゴリズムPは、ハッシュ値Cmtの生成を開始し、i=1〜Nについて、ステップS131〜S139の処理を繰り返し実行する。ステップS131において、証明者アルゴリズムPは、(r0i,seedt0i)=PRNG(seedr0i)を算出し、その後でr0iを記憶する(S131)。但し、証明者アルゴリズムPは、i=1の場合にseedr01を記憶する。
【0182】
次いで、証明者アルゴリズムPは、(t0i,seede0i)=PRNG(seedt0i)を算出し、その後でt0iを記憶する(S132)。次いで、証明者アルゴリズムPは、(e0i,seedr0(i+1))=PRNG(seede0i)を算出し、その後でe0iを記憶する(S133)。次いで、証明者アルゴリズムPは、r1i=s−r0iを算出し、その後でr1iを記憶する(S134)。次いで、証明者アルゴリズムPは、t1i=r0i−t0iを算出し、その後でt1iを記憶する(S135)。次いで、証明者アルゴリズムPは、e1i=F(r0i)−e0iを算出し、その後でe1iを記憶し、r0iを消去する(S136)。
【0183】
次いで、証明者アルゴリズムPは、c2i=H(t1i,e1i)を算出し、その後でc2iを記憶し、t1i及びe1iを消去する(S137)。次いで、証明者アルゴリズムPは、c0i=H(r1i,G(t0i,r1i))+e0iを算出し、その後でc0iを記憶し、r1iを消去する(S138)。次いで、証明者アルゴリズムPは、c1i=H(t0i,e0i)を算出し、その後でc1iを記憶し、t0i及びe0iを消去する(S139)。
【0184】
i=1〜Nについて、ステップS131〜S139の処理を実行した後、証明者アルゴリズムPは、ハッシュ値Cmt=H(c01,c11,c21,…,c0N,c1N,c2N)を算出し、その後でc01,c11,c21,…,c0N,c1N,c2Nを消去する(S140)。ステップS140の処理を完了した後、証明者アルゴリズムPは、ハッシュ値Cmtの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i,c2i)(i=1〜N)を保持していない。
【0185】
(返答Rspiの生成方法)
次に、図16を参照する。なお、i=1〜Nについて、同様に返答Rspiの生成処理が実行される。図16に示すように、証明者アルゴリズムPは、チャレンジChiの値を判別する(S151)。Chi=0の場合、証明者アルゴリズムPは、処理をステップS152に進める。Chi=1の場合、証明者アルゴリズムPは、処理をステップS154に進める。Chi=2の場合、証明者アルゴリズムPは、処理をステップS156に進める。
【0186】
処理をステップS152に進めた場合、証明者アルゴリズムPは、(r0i,t1i,e1i,c0i)を生成する(S152)。このとき、証明者アルゴリズムPは、図15に示したアルゴリズムのうち、必要なステップを実行して(r0i,t1i,e1i,c0i)を生成する。次いで、証明者アルゴリズムPは、返答Rspi=(r0i,t1i,e1i,c0i)を設定し(S153)、返答Rspiの生成に係る一連の処理を終了する。
【0187】
また、処理をステップS154に進めた場合、証明者アルゴリズムPは、(r1i,t0i,e0i,c2i)を生成する(S154)。このとき、証明者アルゴリズムPは、図15に示したアルゴリズムのうち、必要なステップを実行して(r1i,t0i,e0i,c2i)を生成する。次いで、証明者アルゴリズムPは、返答Rspi=(r1i,t0i,e0i,c2i)を設定し(S155)、返答Rspiの生成に係る一連の処理を終了する。
【0188】
また、処理をステップS156に進めた場合、証明者アルゴリズムPは、(r1i,t1i,e1i,c1i)を生成する(S156)。このとき、証明者アルゴリズムPは、図15に示したアルゴリズムのうち、必要なステップを実行して(r1i,t1i,e1i,c1i)を生成する。次いで、証明者アルゴリズムPは、返答Rspi=(r1i,t1i,e1i,c1i)を設定し(S157)、返答Rspiの生成に係る一連の処理を終了する。
【0189】
以上、本実施形態に係るメモリ削減方法を3パス方式の並列化構成に適用する場合のアルゴリズム構成について説明した。上記のメモリ削減方法を適用することにより、少ない記憶領域で3パス方式の並列化された公開鍵認証方式を実現することが可能になる。
【0190】
(メモリ削減効果について)
仮に、(q,n,m,N)=(2,80,80,140)とし、ciが160ビットで表せるとする場合、上記のメモリ削減方法を適用しないと、134400ビット分の記憶領域が必要になる。しかし、上記のメモリ削減方法を適用した場合、ci及びseed・が160ビットで表せるならば、アルゴリズムの実行に要する記憶領域は、68000ビットまで削減される。つまり、上記のメモリ削減方法を適用することにより、必要な記憶領域のサイズが半分以下で済むようになる。
【0191】
[5−4:適用例#3(5パス方式の基本構成への適用)(図17〜図20)]
次に、図17〜図20を参照しながら、本実施形態に係るメモリ削減方法を5パスの基本構成(図6を参照)に適用する場合のアルゴリズム構成について説明する。
【0192】
(全体構成)
5パス方式の基本構成は、例えば、図17のように表現することができる。図17に示すように、(1)まず、証明者アルゴリズムPは、メッセージc0,c1に基づくハッシュ値CmtAを生成する。ハッシュ値CmtAの生成に際し、証明者アルゴリズムPは、擬似乱数生成器PRNGを用いて、(r0,t0,e0)=PRNG(seed)を生成する。次いで、証明者アルゴリズムPは、r1=s−r0を算出する。次いで、証明者アルゴリズムPは、c0=H(r0,t0,e0)、c1=H(r1,G(t0,r1)+e0)を算出する。次いで、証明者アルゴリズムPは、CmtA=H(c0,c1)を算出する。
【0193】
証明者アルゴリズムPにより生成されたハッシュ値CmtAは、検証者アルゴリズムVへと送られる。(2)ハッシュ値CmtAを受け取った検証者アルゴリズムVは、チャレンジChAを選択する。そして、検証者アルゴリズムVにより選択されたチャレンジChAは、証明者アルゴリズムPへと送られる。
【0194】
(3)チャレンジChAを受け取った証明者アルゴリズムPは、チャレンジChA、中間変数t1,e1を含むコミットメント値CmtBを生成する。コミットメント値CmtBの生成に際し、証明者アルゴリズムPは、t1=ChA*r0−t0、e1=ChA*F(r0)−e0を算出する。次いで、証明者アルゴリズムPは、CmtB=(t1,e1)を設定する。
【0195】
証明者アルゴリズムPにより生成されたコミットメント値CmtBは、検証者アルゴリズムVへと送られる。(4)コミットメント値CmtBを受け取った検証者アルゴリズムVは、チャレンジChBを選択する。そして、検証者アルゴリズムVにより選択されたチャレンジChBは、証明者アルゴリズムPへと送られる。
【0196】
(5)チャレンジChBを受け取った証明者アルゴリズムPは、返答Rspを生成する。Rspの生成に際し、証明者アルゴリズムPは、チャレンジChBに応じて(r0,r1,c0,c1)の中から必要な組み合わせを選択し、返答Rspに設定する。そして、証明者アルゴリズムPにより生成された返答Rspは、検証者アルゴリズムVへと送られる。(6)返答Rspを受け取った検証者アルゴリズムVは、ハッシュ値CmtA、チャレンジChA、コミットメント値CmtB、チャレンジChB、及び返答Rspに基づいて検証を実行する。
【0197】
ここで、以上説明した5パス方式の基本構成において、ハッシュ値CmtAの生成後に中間変数r0,t0,e0,r1,c0,c1を一時的に破棄できるようにしたハッシュ値CmtAの生成方法について説明する。また、コミットメント値CmtBの生成後に中間変数r0,t0,e0を一時的に破棄できるようにしたコミットメント値CmtBの生成方法について説明する。さらに、ここで説明するハッシュ値CmtA及びコミットメント値CmtBの生成方法を適用した場合における返答Rspの生成方法についても説明する。
【0198】
(ハッシュ値CmtAの生成方法)
まず、図18を参照する。図18に示すように、証明者アルゴリズムPは、ハッシュ値CmtAの生成を開始すると、まず、(r0,seedt0)=PRNG(seedr0)を算出し、その後でr0及びseedr0を記憶する(S201)。次いで、証明者アルゴリズムPは、(t0,seede0)=PRNG(seedt0)を算出し、その後でt0を記憶する(S202)。次いで、証明者アルゴリズムPは、(e0,seed’)=PRNG(seede0)を算出し、その後でe0を記憶する(S203)。
【0199】
次いで、証明者アルゴリズムPは、r1=s−r0を算出し、その後でr1を記憶する(S204)。次いで、証明者アルゴリズムPは、c0=H(r0,t0,e0)を算出し、その後でc0を記憶し、r0を消去する(S205)。次いで、証明者アルゴリズムPは、c1=H(r1,G(t0,r1)+e0)を算出し、その後でc1を記憶し、r1,t0,e0を消去する(S206)。
【0200】
次いで、証明者アルゴリズムPは、ハッシュ値CmtA=H(c0,c1)を算出し、その後でc0,c1を消去する(S207)。ステップS207の処理を完了した後、証明者アルゴリズムPは、ハッシュ値CmtAの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0,t0,e0,r1,c0,c1)を保持していない。
【0201】
(ハッシュ値CmtBの生成方法)
次に、図19を参照する。図19に示すように、証明者アルゴリズムPは、コミットメント値CmtBの生成を開始すると、まず、(r0,seedt0)=PRNG(seedr0)を算出し、その後でr0及びseedr0を記憶する(S211)。次いで、証明者アルゴリズムPは、(t0,seede0)=PRNG(seedt0)を算出し、その後でt0を記憶する(S212)。
【0202】
次いで、証明者アルゴリズムPは、t1=ChA*r0−t0を算出し、その後でt1を記憶し、t0を消去する(S213)。次いで、証明者アルゴリズムPは、(e0,seed’)=PRNG(seede0)を算出し、その後でe0を記憶する(S214)。次いで、証明者アルゴリズムPは、e1=F(r0)−e0を算出し、その後でe1を記憶し、r0,e0を消去する(S215)。
【0203】
次いで、証明者アルゴリズムPは、コミットメント値CmtB=(t1,e1)を設定する(S216)。ステップS216の処理を完了した後、証明者アルゴリズムPは、コミットメント値CmtBの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0,t0,e0)を保持していない。
【0204】
(返答Rspの生成方法)
次に、図20を参照する。図20に示すように、証明者アルゴリズムPは、チャレンジChBの値を判別する(S221)。ChB=0の場合、証明者アルゴリズムPは、処理をステップS222に進める。ChB=1の場合、証明者アルゴリズムPは、処理をステップS224に進める。
【0205】
処理をステップS222に進めた場合、証明者アルゴリズムPは、(r0,c1)を生成する(S222)。このとき、証明者アルゴリズムPは、図18に示したアルゴリズムのうち、必要なステップを実行して(r0,c1)を生成する。次いで、証明者アルゴリズムPは、返答Rsp=(r0,c1)を設定し(S223)、返答Rspの生成に係る一連の処理を終了する。
【0206】
また、処理をステップS224に進めた場合、証明者アルゴリズムPは、(r1,c0)を生成する(S224)。このとき、証明者アルゴリズムPは、図18に示したアルゴリズムのうち、必要なステップを実行して(r1,c0)を生成する。次いで、証明者アルゴリズムPは、返答Rsp=(r1,c0)を設定し(S225)、返答Rspの生成に係る一連の処理を終了する。
【0207】
以上、本実施形態に係るメモリ削減方法を5パス方式の基本構成に適用する場合のアルゴリズム構成について説明した。上記のメモリ削減方法を適用することにより、少ない記憶領域で5パス方式の公開鍵認証方式を実現することが可能になる。
【0208】
[5−5:適用例#4(5パス方式の並列化構成への適用)(図20、図21)]
次に、図21及び図22を参照しながら、本実施形態に係るメモリ削減方法を5パスの並列化構成(図7を参照)に適用する場合のアルゴリズム構成について説明する。ここでは、図7に示した5パス方式の並列化アルゴリズムに本実施形態に係るメモリ削減方法を適用する場合のアルゴリズム構成について考える。
【0209】
(ハッシュ値CmtAの生成方法)
まず、図21を参照する。図21に示すように、証明者アルゴリズムPは、ハッシュ値CmtAの生成を開始し、i=1〜Nについて、ステップS231〜S236の処理を繰り返し実行する。ステップS231において、証明者アルゴリズムPは、(r0i,seedt0i)=PRNG(seedr0i)を算出し、その後でr0iを記憶する(S231)。但し、証明者アルゴリズムPはi=1の場合にseedr01を記憶する。次いで、証明者アルゴリズムPは、(t0i,seede0i)=PRNG(seedt0i)を算出し、その後でt0iを記憶する(S232)。次いで、証明者アルゴリズムPは、(e0i,seedr0(i+1))=PRNG(seede0i)を算出し、その後でe0iを記憶する(S233)。
【0210】
次いで、証明者アルゴリズムPは、r1i=s−r0iを算出し、その後でr1iを記憶する(S234)。次いで、証明者アルゴリズムPは、c0i=H(r0i,t0i,e0i)を算出し、その後でc0iを記憶し、r0iを消去する(S235)。次いで、証明者アルゴリズムPは、c1i=H(r1i,G(t0i,r1i)+e0i)を算出し、その後でc1iを記憶し、r1i,t0i,e0iを消去する(S236)。
【0211】
i=1〜Nについて、ステップS231〜S236の処理を実行した後、証明者アルゴリズムPは、ハッシュ値CmtA=H(c01,c11,…,c0N,c1N)を算出し、その後でc01,c11,…,c0N,c1Nを消去する(S237)。ステップS237の処理を完了した後、証明者アルゴリズムPは、ハッシュ値CmtAの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0i,t0i,e0i,r1i,c0i,c1i)(i=1〜N)を保持していない。
【0212】
(ハッシュ値CmtBの生成方法)
次に、図22を参照する。図22に示すように、証明者アルゴリズムPは、コミットメント値CmtBの生成を開始し、i=1〜Nについて、ステップS241〜S246の処理を繰り返し実行する。ステップS241において、証明者アルゴリズムPは、(r0i,seedt0i)=PRNG(seedr0i)を算出し、その後でr0iを記憶する(S241)。但し、証明者アルゴリズムPはi=1の場合にseedr01を記憶する。次いで、証明者アルゴリズムPは、(t0i,seede0i)=PRNG(seedt0i)を算出し、その後でt0iを記憶する(S242)。
【0213】
次いで、証明者アルゴリズムPは、t1i=ChAi*r0i−t0iを算出し、その後でt1iを記憶し、t0iを消去する(S243)。次いで、証明者アルゴリズムPは、(e0i,seedr0(i+1))=PRNG(seede0i)を算出し、その後でe0iを記憶する(S244)。次いで、証明者アルゴリズムPは、e1i=F(r0i)−e0iを算出し、その後でe1iを記憶し、r0i,e0iを消去する(S245)。次いで、証明者アルゴリズムPは、コミットメント値CmtB=(t1i,e1i)を設定し、検証者アルゴリズムVへと送り、その後でt1i,e1iを消去する(S246)。
【0214】
i=1〜Nについて、ステップS241〜S246の処理を実行した後、証明者アルゴリズムPは、コミットメント値CmtBの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0i,t0i,e0i,t1i,e1i)(i=1〜N)を保持していない。
【0215】
(返答Rspiの生成方法)
次に、図23を参照する。なお、i=1〜Nについて、同様に返答Rspiの生成処理が実行される。図23に示すように、証明者アルゴリズムPは、チャレンジChBiの値を判別する(S251)。ChBi=0の場合、証明者アルゴリズムPは、処理をステップS252に進める。ChBi=1の場合、証明者アルゴリズムPは、処理をステップS254に進める。
【0216】
処理をステップS252に進めた場合、証明者アルゴリズムPは、(r0i,c1i)を生成する(S252)。このとき、証明者アルゴリズムPは、図21に示したアルゴリズムのうち、必要なステップを実行して(r0i,c1i)を生成する。次いで、証明者アルゴリズムPは、返答Rspi=(r0i,c1i)を設定し(S253)、返答Rspiの生成に係る一連の処理を終了する。
【0217】
また、処理をステップS254に進めた場合、証明者アルゴリズムPは、(r1i,c0i)を生成する(S254)。このとき、証明者アルゴリズムPは、図21に示したアルゴリズムのうち、必要なステップを実行して(r1i,c0i)を生成する。次いで、証明者アルゴリズムPは、返答Rspi=(r1i,c0i)を設定し(S255)、返答Rspiの生成に係る一連の処理を終了する。
【0218】
以上、本実施形態に係るメモリ削減方法を5パス方式の並列化構成に適用する場合のアルゴリズム構成について説明した。上記のメモリ削減方法を適用することにより、少ない記憶領域で5パス方式の並列化された公開鍵認証方式を実現することが可能になる。
【0219】
(メモリ削減効果について)
仮に、(q,n,m,N)=(2,80,80,90)とし、ciが160ビットで表せるとする場合、上記のメモリ削減方法を適用しないと、72000ビット分以上の記憶領域が必要になる。しかし、上記のメモリ削減方法を適用した場合、ci及びseed・が160ビットで表せるならば、アルゴリズムの実行に要する記憶領域は、29600ビット以下にまで削減される。つまり、上記のメモリ削減方法を適用することにより、必要な記憶領域のサイズが半分以下で済むようになる。
【0220】
[5−6:適用例#5(電子署名方式への適用)]
次に、本実施形態に係るメモリ削減方法を電子署名方式(図8及び図9を参照)に適用する場合のアルゴリズム構成について述べる。図8及び図9に示した通り、上記の電子署名方式は、3パス方式や5パス方式の並列化アルゴリズムから得られる。そのため、署名生成アルゴリズムSigが実行する処理には、CmtやRspiの生成処理が含まれる。そこで、これらの処理に上記のメモリ削減方法を適用することで、一度に保持すべき中間変数の最大量が低減するため、少ない記憶領域で上記の電子署名方式に係るアルゴリズムを実行することが可能になる。
【0221】
[5−7:変形例A(ハッシュ関数の構造を考慮した構成)(図24)]
ところで、上記の各アルゴリズムにおいては、ハッシュ値Cmt又はCmtAを算出するために記憶領域にメッセージの値を保持していた。例えば、図15の例ではメッセージc0i,c1i,c2i(i=1〜N)が記憶領域に保持されている。同様に、図21の例ではメッセージc0i,c1i(i=1〜N)が記憶領域に保持されている。しかしながら、メッセージの値を全て記憶領域に格納しておくことは、記憶領域のサイズを節約するという観点からは好ましくない。そこで、本件発明者は、ハッシュ関数の構造に注目し、メッセージの値を全て記憶領域に格納しておくことなく、ハッシュ値Cmt又はCmtAを算出する方法を考案した。
【0222】
多くの場合、ハッシュ関数は、入力をブロック単位に区切り、ブロック単位で順次処理を進める構造を有している。例えば、SHA−1の場合、ハッシュ関数は、図24に示すような構造を有している。図24に示すハッシュ関数は、入力MをZ個のブロックm1,…,mZに区切り、インデックスjをインクリメントしながら、ブロックmjを初期値IV又は中間値CVjと共に所定の関数CFに作用させてハッシュ値を生成する。従って、中間値CVjが得られた時点で、それ以前に利用したブロックは不要になる。そこで、この特性を利用し、アルゴリズムの実行に必要な記憶領域のサイズを更に削減する仕組みを考案した。以下、この仕組みについて具体的に説明する。
【0223】
(5−7−1:変形例A1(3パス方式への適用)(図25、図26))
まず、図25及び図26を参照する。図25及び図26は、図15に示したアルゴリズムを改良した構成(ハッシュ関数の構造を考慮したアルゴリズム)を示したものである。
【0224】
図25に示すように、証明者アルゴリズムPは、ハッシュ値Cmtの生成を開始し、i=1〜Nについて、ステップS301〜S310の処理を繰り返し実行する。ステップS301において、証明者アルゴリズムPは、(r0i,seedt0i)=PRNG(seedr0i)を算出し、その後でr0iを記憶する(S301)。但し、証明者アルゴリズムPは、i=1の場合にseedr01を記憶する。
【0225】
次いで、証明者アルゴリズムPは、(t0i,seede0i)=PRNG(seedt0i)を算出し、その後でt0iを記憶する(S302)。次いで、証明者アルゴリズムPは、(e0i,seedr0(i+1))=PRNG(seede0i)を算出し、その後でe0iを記憶する(S303)。次いで、証明者アルゴリズムPは、r1i=s−r0iを算出し、その後でr1iを記憶する(S304)。次いで、証明者アルゴリズムPは、t1i=r0i−t0iを算出し、その後でt1iを記憶する(S305)。次いで、証明者アルゴリズムPは、e1i=F(r0i)−e0iを算出し、その後でe1iを記憶し、r0iを消去する(S306)。
【0226】
次いで、証明者アルゴリズムPは、c2i=H(t1i,e1i)を算出し、その後でc2iを記憶し、t1i及びe1iを消去する(S307)。次いで、証明者アルゴリズムPは、c0i=H(r1i,G(t0i,r1i))+e0iを算出し、その後でc0iを記憶し、r1iを消去する(S308)。次いで、証明者アルゴリズムPは、c1i=H(t0i,e0i)を算出し、その後でc1iを記憶し、t0i及びe0iを消去する(S309)。次いで、証明者アルゴリズムPは、ハッシュ値Cmt=H(c01,c11,c21,…,c0N,c1N,c2N)の算出に係る計算を実行する(S310:詳細は後述)。
【0227】
i=1〜Nについて、ステップS301〜S310の処理を実行した後、証明者アルゴリズムPは、ハッシュ値Cmtの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0i,t0i,e0i,r1i,t1i,e1i,c0i,c1i,c2i)(i=1〜N)を保持していない。
【0228】
(ステップS310の処理について)
ここで、図26を参照しながら、ステップS310の処理について詳細に説明する。
【0229】
図26に示すように、ステップS310において、証明者アルゴリズムPは、既に記憶領域に保持しているメッセージ…,c0i,c1i,c2iの合計サイズがハッシュ関数のブロック単位以上であるか否かを判定する(S311)。保持しているメッセージの合計サイズがブロック単位以上の場合、証明者アルゴリズムPは、処理をステップS312に進める。一方、保持しているメッセージの合計サイズがブロック単位より小さい場合、証明者アルゴリズムPは、処理をステップS313に進める。
【0230】
処理をステップS312に進めた場合、証明者アルゴリズムPは、記憶領域に保持しているメッセージ…,c0i,c1i,c2iと、IV又は中間値CVjを利用して次の中間値CVj+1を生成して記憶領域に格納し、その後でメッセージ…,c0i,c1i,c2i及び中間値CVjを消去する(S312)。一方、処理をステップS313に進めた場合、証明者アルゴリズムPは、メッセージc0i,c1i,c2iを記憶領域に格納する(S313)。ステップS312又はS313の処理を実行した後、証明者アルゴリズムPは、ステップS310の処理を終了する。
【0231】
以上、ハッシュ関数の構造を考慮した3パス方式のアルゴリズムについて説明した。この構成を適用すると、(q,n,m,N)=(2,80,80,140)とし、ci及びseed・が160ビットで表せ、かつ、ハッシュ関数のブロック単位が512ビットの場合、アルゴリズムの実行に要する記憶領域は、1952ビット以下まで削減される。
【0232】
(5−7−2:変形例A2(5パス方式への適用)(図27、図28))
次に、図27及び図28を参照する。図27及び図28は、図21に示したアルゴリズムを改良した構成(ハッシュ関数の構造を考慮したアルゴリズム)を示したものである。
【0233】
図27に示すように、証明者アルゴリズムPは、ハッシュ値CmtAの生成を開始し、i=1〜Nについて、ステップS401〜S407の処理を繰り返し実行する。ステップS401において、証明者アルゴリズムPは、(r0i,seedt0i)=PRNG(seedr0i)を算出し、その後でr0iを記憶する(S401)。但し、証明者アルゴリズムPはi=1の場合にseedr01を記憶する。次いで、証明者アルゴリズムPは、(t0i,seede0i)=PRNG(seedt0i)を算出し、その後でt0iを記憶する(S402)。次いで、証明者アルゴリズムPは、(e0i,seedr0(i+1))=PRNG(seede0i)を算出し、その後でe0iを記憶する(S403)。
【0234】
次いで、証明者アルゴリズムPは、r1i=s−r0iを算出し、その後でr1iを記憶する(S404)。次いで、証明者アルゴリズムPは、c0i=H(r0i,t0i,e0i)を算出し、その後でc0iを記憶し、r0iを消去する(S405)。次いで、証明者アルゴリズムPは、c1i=H(r1i,G(t0i,r1i)+e0i)を算出し、その後でc1iを記憶し、r1i,t0i,e0iを消去する(S406)。次いで、証明者アルゴリズムPは、ハッシュ値CmtA=H(c01,c11,…,c0N,c1N)の算出に係る計算を実行する(S407:詳細は後述)。
【0235】
i=1〜Nについて、ステップS401〜S407の処理を実行した後、証明者アルゴリズムPは、ハッシュ値CmtAの生成に係る一連の処理を終了する。なお、この時点で証明者アルゴリズムPは、中間変数(r0i,t0i,e0i,r1i,c0i,c1i)(i=1〜N)を保持していない。
【0236】
(ステップS407の処理について)
ここで、図28を参照しながら、ステップS407の処理について詳細に説明する。
【0237】
図28に示すように、ステップS407において、証明者アルゴリズムPは、既に記憶領域に保持しているメッセージ…,c0i,c1iの合計サイズがハッシュ関数のブロック単位以上であるか否かを判定する(S411)。保持しているメッセージの合計サイズがブロック単位以上の場合、証明者アルゴリズムPは、処理をステップS412に進める。一方、保持しているメッセージの合計サイズがブロック単位より小さい場合、証明者アルゴリズムPは、処理をステップS413に進める。
【0238】
処理をステップS412に進めた場合、証明者アルゴリズムPは、記憶領域に保持しているメッセージ…,c0i,c1iと、IV又は中間値CVjを利用して次の中間値CVj+1を生成して記憶領域に格納し、その後でメッセージ…,c0i,c1i及び中間値CVjを消去する(S412)。一方、処理をステップS413に進めた場合、証明者アルゴリズムPは、メッセージc0i,c1iを記憶領域に格納する(S413)。ステップS412又はS413の処理を実行した後、証明者アルゴリズムPは、ステップS407の処理を終了する。
【0239】
以上、ハッシュ関数の構造を考慮した5パス方式のアルゴリズムについて説明した。この構成を適用すると、(q,n,m,N)=(2,80,80,90)とし、ci及びseed・が160ビットで表せ、かつ、ハッシュ関数のブロック単位が512ビットの場合、アルゴリズムの実行に要する記憶領域は、1712ビット以下まで削減される。
【0240】
[5−8:変形例B(シードの決め方)]
これまで、一つのシードから全ての乱数が生成される構成を念頭に置いて説明を進めてきたが、上記の各アルゴリズムは、このような構成に限定されるものではない。つまり、複数のシードから乱数が生成されるように構成することも可能である。例えば、下記の式(13)〜式(15)に示すように、1つのシードに対し、事前に取り決めた値を作用させ、任意の変数にランダムアクセスすることができるように構成してもよい。この例では、シードseed、テキスト“r”,“t”,“e”、インデックスiを組み合わせている。この例のように、一つのシードseedから任意の変数へとランダムアクセスできるようにすることで、必要な中間変数を直ちに取得することが可能になり、演算速度の向上が期待できる。
【0241】
【数11】
【0242】
以上、中間変数の効率的な管理方法について説明した。上記の方法を適用することで、アルゴリズムの実行に要する記憶領域のサイズを削減することが可能になる。
【0243】
<6:ハードウェア構成例(図29)>
上記の各アルゴリズムは、例えば、図29に示す情報処理装置のハードウェア構成を用いて実行することが可能である。つまり、当該各アルゴリズムの処理は、コンピュータプログラムを用いて図29に示すハードウェアを制御することにより実現される。なお、このハードウェアの形態は任意であり、例えば、パーソナルコンピュータ、携帯電話、PHS、PDA等の携帯情報端末、ゲーム機、接触式又は非接触式のICチップ、接触式又は非接触式のICカード、又は種々の情報家電がこれに含まれる。但し、上記のPHSは、Personal Handy−phone Systemの略である。また、上記のPDAは、Personal Digital Assistantの略である。
【0244】
図29に示すように、このハードウェアは、主に、CPU902と、ROM904と、RAM906と、ホストバス908と、ブリッジ910と、を有する。さらに、このハードウェアは、外部バス912と、インターフェース914と、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926と、を有する。但し、上記のCPUは、Central Processing Unitの略である。また、上記のROMは、Read Only Memoryの略である。そして、上記のRAMは、Random Access Memoryの略である。
【0245】
CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータ等を格納する手段である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等が一時的又は永続的に格納される。
【0246】
これらの構成要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等が用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラ(以下、リモコン)が用いられることもある。
【0247】
出力部918としては、例えば、CRT、LCD、PDP、又はELD等のディスプレイ装置、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置である。但し、上記のCRTは、Cathode Ray Tubeの略である。また、上記のLCDは、Liquid Crystal Displayの略である。そして、上記のPDPは、Plasma DisplayPanelの略である。さらに、上記のELDは、Electro−Luminescence Displayの略である。
【0248】
記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、ハードディスクドライブ(HDD)等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等が用いられる。但し、上記のHDDは、Hard Disk Driveの略である。
【0249】
ドライブ922は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928は、例えば、DVDメディア、Blu−rayメディア、HD DVDメディア、各種の半導体記憶メディア等である。もちろん、リムーバブル記録媒体928は、例えば、非接触型ICチップを搭載したICカード、又は電子機器等であってもよい。但し、上記のICは、Integrated Circuitの略である。
【0250】
接続ポート924は、例えば、USBポート、IEEE1394ポート、SCSI、RS−232Cポート、又は光オーディオ端子等のような外部接続機器930を接続するためのポートである。外部接続機器930は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はICレコーダ等である。但し、上記のUSBは、Universal Serial Busの略である。また、上記のSCSIは、Small Computer System Interfaceの略である。
【0251】
通信部926は、ネットワーク932に接続するための通信デバイスであり、例えば、有線又は無線LAN、Bluetooth(登録商標)、又はWUSB用の通信カード、光通信用のルータ、ADSL用のルータ、又は接触又は非接触通信用のデバイス等である。また、通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークにより構成され、例えば、インターネット、家庭内LAN、赤外線通信、可視光通信、放送、又は衛星通信等である。但し、上記のLANは、Local Area Networkの略である。また、上記のWUSBは、Wireless USBの略である。そして、上記のADSLは、Asymmetric Digital Subscriber Lineの略である。
【0252】
<7:まとめ>
最後に、本技術の実施形態に係る技術内容について簡単に纏める。ここで述べる技術内容は、例えば、PC、携帯電話、ゲーム機、情報端末、情報家電、カーナビゲーションシステム等、種々の情報処理装置に対して適用することができる。なお、以下で述べる情報処理装置の機能は、1台の情報処理装置を利用して実現することも可能であるし、複数台の情報処理装置を利用して実現することも可能である。また、以下で述べる情報処理装置が処理を実行する際に用いるデータ記憶手段及び演算処理手段は、当該情報処理装置に設けられたものであってもよいし、ネットワークを介して接続された機器に設けられたものであってもよい。
【0253】
上記の情報処理装置の機能構成は以下のように表現される。例えば、下記(1)に記載の情報処理装置は、多次多変数連立方程式の求解困難性に安全性の根拠を置く効率的な公開鍵認証方式又は電子署名方式のアルゴリズムを実行する機能を有する。
【0254】
(1)
シードから乱数の組を発生させる乱数生成部と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供部と、
k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成部は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
情報処理装置。
【0255】
(2)
前記回答提供部は、前記記憶装置に格納されたシードを利用し、前記回答情報として用いる前記乱数又は前記中間変数を再生成する、
上記(1)に記載の情報処理装置。
【0256】
(3)
前記メッセージ生成部は、N回分(N≧2)のメッセージを生成し、
前記メッセージ提供部は、N回分の前記メッセージを1回の対話で前記検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報を1回の対話で前記検証者に提供する、
上記(1)又は(2)に記載の情報処理装置。
【0257】
(4)
前記メッセージ生成部は、前記N回分のメッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、前記N回分のメッセージに代えて前記ハッシュ値を前記検証者に提供する、
上記(3)に記載の情報処理装置。
【0258】
(5)
前記メッセージ生成部は、生成した前記メッセージを記憶装置に格納し、前記記憶装置に格納したメッセージの合計サイズがハッシュ関数のブロック単位より大きい場合に、当該記憶装置に格納したメッセージを利用して、当該ハッシュ関数が前記ハッシュ値の計算途中で算出する中間値を算出し、前記記憶装置に格納したメッセージを消去する処理を逐次実行して前記ハッシュ値を算出する、
上記(4)に記載の情報処理装置。
【0259】
(6)
シードから乱数の組を発生させる乱数生成部と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供部と、
前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成する中間情報生成部と、
前記検証者に前記第3の情報を提供する中間情報提供部と、
k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記2次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成部は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
情報処理装置。
【0260】
(7)
前記中間情報生成部は、前記記憶装置に格納されたシードを利用して、前記第3の情報を生成する際に用いる前記乱数又は前記中間変数を再生成する、
上記(6)に記載の情報処理装置。
【0261】
(8)
前記中間情報生成部は、前記第3の情報の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
上記(7)に記載の情報処理装置。
【0262】
(9)
前記回答提供部は、前記記憶装置に格納されたシードを利用し、前記回答情報として用いる前記乱数又は前記中間変数を再生成する、
上記(6)〜(8)のいずれか1項に記載の情報処理装置。
【0263】
(10)
前記メッセージ生成部は、N回分(N≧2)のメッセージを生成し、
前記メッセージ提供部は、N回分の前記メッセージを1回の対話で前記検証者に提供し、
前記中間情報生成部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した前記第1の情報及び前記メッセージを生成する際に得られるN回分の前記第2の情報を用いてN回分の前記第3の情報を生成し、
前記中間情報提供部は、N回分の前記第3の情報を1回の対話で検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報を1回の対話で前記検証者に提供する、
上記(6)〜(9)のいずれか1項に記載の情報処理装置。
【0264】
(11)
前記メッセージ生成部は、前記N回分のメッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、前記N回分のメッセージに代えて前記ハッシュ値を前記検証者に提供する、
上記(10)に記載の情報処理装置。
【0265】
(12)
前記メッセージ生成部は、生成した前記メッセージを記憶装置に格納し、前記記憶装置に格納したメッセージの合計サイズがハッシュ関数のブロック単位より大きい場合に、当該記憶装置に格納したメッセージを利用して、当該ハッシュ関数が前記ハッシュ値の計算途中で算出する中間値を算出し、前記記憶装置に格納したメッセージを消去する処理を逐次実行して前記ハッシュ値を算出する、
上記(11)に記載の情報処理装置。
【0266】
(13)
シードから乱数の組を発生させる乱数生成部と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成部と、
前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供部と、
を備え、
前記署名生成部は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
署名生成装置。
【0267】
(14)
シードから乱数の組を発生させるステップと、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するステップと、
k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記生成するステップでは、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、
情報処理方法。
【0268】
(15)
シードから乱数の組を発生させるステップと、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するステップと、
前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成するステップと、
前記検証者に前記第3の情報を提供するステップと、
k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記2次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージを生成するステップでは、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、
情報処理方法。
【0269】
(16)
シードから乱数の組を発生させるステップと、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供するステップと、
を含み、
前記生成するステップでは、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、
署名生成方法。
【0270】
(17)
シードから乱数の組を発生させる乱数生成機能と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供機能と、
k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成機能は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
プログラム。
【0271】
(18)
シードから乱数の組を発生させる乱数生成機能と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供機能と、
前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成する中間情報生成機能と、
前記検証者に前記第3の情報を提供する中間情報提供機能と、
k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記2次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成機能は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
プログラム。
【0272】
(19)
シードから乱数の組を発生させる乱数生成機能と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成機能と、
前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記署名生成機能は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
プログラム。
【0273】
(20)
上記の(17)〜(19)のいずれか1項に記載のプログラムが記録された、コンピュータにより読み取り可能な記録媒体。
【0274】
(備考)
上記の証明者アルゴリズムPは、乱数生成部、メッセージ生成部、メッセージ提供部、回答提供部、中間情報生成部、中間情報提供部の一例である。また、上記の署名生成アルゴリズムSigは、乱数生成部、署名生成部、署名提供部の一例である。
【0275】
以上、添付図面を参照しながら本技術の好適な実施形態について説明したが、本技術は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本技術の技術的範囲に属するものと了解される。
【0276】
上記の説明において、ハッシュ関数Hを用いるアルゴリズムを紹介したが、ハッシュ関数Hの代わりにコミットメント関数COMを用いてもよい。コミットメント関数COMは、文字列S及び乱数ρを引数にとる関数である。コミットメント関数の例としては、Shai HaleviとSilvio Micaliによって国際会議CRYPTO1996で発表された方式などがある。
【符号の説明】
【0277】
Gen 鍵生成アルゴリズム
P 証明者アルゴリズム
V 検証者アルゴリズム
Sig 署名生成アルゴリズム
Ver 署名検証アルゴリズム
【特許請求の範囲】
【請求項1】
シードから乱数の組を発生させる乱数生成部と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供部と、
k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成部は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
情報処理装置。
【請求項2】
前記回答提供部は、前記記憶装置に格納されたシードを利用し、前記回答情報として用いる前記乱数又は前記中間変数を再生成する、
請求項1に記載の情報処理装置。
【請求項3】
前記メッセージ生成部は、N回分(N≧2)のメッセージを生成し、
前記メッセージ提供部は、N回分の前記メッセージを1回の対話で前記検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報を1回の対話で前記検証者に提供する、
請求項1に記載の情報処理装置。
【請求項4】
前記メッセージ生成部は、前記N回分のメッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、前記N回分のメッセージに代えて前記ハッシュ値を前記検証者に提供する、
請求項3に記載の情報処理装置。
【請求項5】
前記メッセージ生成部は、生成した前記メッセージを記憶装置に格納し、前記記憶装置に格納したメッセージの合計サイズがハッシュ関数のブロック単位より大きい場合に、当該記憶装置に格納したメッセージを利用して、当該ハッシュ関数が前記ハッシュ値の計算途中で算出する中間値を算出し、前記記憶装置に格納したメッセージを消去する処理を逐次実行して前記ハッシュ値を算出する、
請求項4に記載の情報処理装置。
【請求項6】
シードから乱数の組を発生させる乱数生成部と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供部と、
前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成する中間情報生成部と、
前記検証者に前記第3の情報を提供する中間情報提供部と、
k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成部は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
情報処理装置。
【請求項7】
前記中間情報生成部は、前記記憶装置に格納されたシードを利用して、前記第3の情報を生成する際に用いる前記乱数又は前記中間変数を再生成する、
請求項6に記載の情報処理装置。
【請求項8】
前記中間情報生成部は、前記第3の情報の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
請求項7に記載の情報処理装置。
【請求項9】
前記回答提供部は、前記記憶装置に格納されたシードを利用し、前記回答情報として用いる前記乱数又は前記中間変数を再生成する、
請求項6に記載の情報処理装置。
【請求項10】
前記メッセージ生成部は、N回分(N≧2)のメッセージを生成し、
前記メッセージ提供部は、N回分の前記メッセージを1回の対話で前記検証者に提供し、
前記中間情報生成部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した前記第1の情報及び前記メッセージを生成する際に得られるN回分の前記第2の情報を用いてN回分の前記第3の情報を生成し、
前記中間情報提供部は、N回分の前記第3の情報を1回の対話で検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報を1回の対話で前記検証者に提供する、
請求項6に記載の情報処理装置。
【請求項11】
前記メッセージ生成部は、前記N回分のメッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、前記N回分のメッセージに代えて前記ハッシュ値を前記検証者に提供する、
請求項10に記載の情報処理装置。
【請求項12】
前記メッセージ生成部は、生成した前記メッセージを記憶装置に格納し、前記記憶装置に格納したメッセージの合計サイズがハッシュ関数のブロック単位より大きい場合に、当該記憶装置に格納したメッセージを利用して、当該ハッシュ関数が前記ハッシュ値の計算途中で算出する中間値を算出し、前記記憶装置に格納したメッセージを消去する処理を逐次実行して前記ハッシュ値を算出する、
請求項11に記載の情報処理装置。
【請求項13】
シードから乱数の組を発生させる乱数生成部と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成部と、
前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供部と、
を備え、
前記署名生成部は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
署名生成装置。
【請求項14】
シードから乱数の組を発生させるステップと、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するステップと、
k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記生成するステップでは、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、
情報処理方法。
【請求項15】
シードから乱数の組を発生させるステップと、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するステップと、
前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成するステップと、
前記検証者に前記第3の情報を提供するステップと、
k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージを生成するステップでは、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、
情報処理方法。
【請求項16】
シードから乱数の組を発生させるステップと、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供するステップと、
を含み、
前記生成するステップでは、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、
署名生成方法。
【請求項17】
シードから乱数の組を発生させる乱数生成機能と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供機能と、
k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成機能は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
プログラム。
【請求項18】
シードから乱数の組を発生させる乱数生成機能と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供機能と、
前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成する中間情報生成機能と、
前記検証者に前記第3の情報を提供する中間情報提供機能と、
k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成機能は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
プログラム。
【請求項19】
シードから乱数の組を発生させる乱数生成機能と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成機能と、
前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記署名生成機能は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
プログラム。
【請求項1】
シードから乱数の組を発生させる乱数生成部と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供部と、
k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成部は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
情報処理装置。
【請求項2】
前記回答提供部は、前記記憶装置に格納されたシードを利用し、前記回答情報として用いる前記乱数又は前記中間変数を再生成する、
請求項1に記載の情報処理装置。
【請求項3】
前記メッセージ生成部は、N回分(N≧2)のメッセージを生成し、
前記メッセージ提供部は、N回分の前記メッセージを1回の対話で前記検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報を1回の対話で前記検証者に提供する、
請求項1に記載の情報処理装置。
【請求項4】
前記メッセージ生成部は、前記N回分のメッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、前記N回分のメッセージに代えて前記ハッシュ値を前記検証者に提供する、
請求項3に記載の情報処理装置。
【請求項5】
前記メッセージ生成部は、生成した前記メッセージを記憶装置に格納し、前記記憶装置に格納したメッセージの合計サイズがハッシュ関数のブロック単位より大きい場合に、当該記憶装置に格納したメッセージを利用して、当該ハッシュ関数が前記ハッシュ値の計算途中で算出する中間値を算出し、前記記憶装置に格納したメッセージを消去する処理を逐次実行して前記ハッシュ値を算出する、
請求項4に記載の情報処理装置。
【請求項6】
シードから乱数の組を発生させる乱数生成部と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供部と、
前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成する中間情報生成部と、
前記検証者に前記第3の情報を提供する中間情報提供部と、
k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成部は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
情報処理装置。
【請求項7】
前記中間情報生成部は、前記記憶装置に格納されたシードを利用して、前記第3の情報を生成する際に用いる前記乱数又は前記中間変数を再生成する、
請求項6に記載の情報処理装置。
【請求項8】
前記中間情報生成部は、前記第3の情報の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
請求項7に記載の情報処理装置。
【請求項9】
前記回答提供部は、前記記憶装置に格納されたシードを利用し、前記回答情報として用いる前記乱数又は前記中間変数を再生成する、
請求項6に記載の情報処理装置。
【請求項10】
前記メッセージ生成部は、N回分(N≧2)のメッセージを生成し、
前記メッセージ提供部は、N回分の前記メッセージを1回の対話で前記検証者に提供し、
前記中間情報生成部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した前記第1の情報及び前記メッセージを生成する際に得られるN回分の前記第2の情報を用いてN回分の前記第3の情報を生成し、
前記中間情報提供部は、N回分の前記第3の情報を1回の対話で検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報を1回の対話で前記検証者に提供する、
請求項6に記載の情報処理装置。
【請求項11】
前記メッセージ生成部は、前記N回分のメッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、前記N回分のメッセージに代えて前記ハッシュ値を前記検証者に提供する、
請求項10に記載の情報処理装置。
【請求項12】
前記メッセージ生成部は、生成した前記メッセージを記憶装置に格納し、前記記憶装置に格納したメッセージの合計サイズがハッシュ関数のブロック単位より大きい場合に、当該記憶装置に格納したメッセージを利用して、当該ハッシュ関数が前記ハッシュ値の計算途中で算出する中間値を算出し、前記記憶装置に格納したメッセージを消去する処理を逐次実行して前記ハッシュ値を算出する、
請求項11に記載の情報処理装置。
【請求項13】
シードから乱数の組を発生させる乱数生成部と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成部と、
前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供部と、
を備え、
前記署名生成部は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
署名生成装置。
【請求項14】
シードから乱数の組を発生させるステップと、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するステップと、
k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記生成するステップでは、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、
情報処理方法。
【請求項15】
シードから乱数の組を発生させるステップと、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するステップと、
前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成するステップと、
前記検証者に前記第3の情報を提供するステップと、
k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージを生成するステップでは、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、
情報処理方法。
【請求項16】
シードから乱数の組を発生させるステップと、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供するステップと、
を含み、
前記生成するステップでは、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する処理が実行される、
署名生成方法。
【請求項17】
シードから乱数の組を発生させる乱数生成機能と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供機能と、
k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成機能は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
プログラム。
【請求項18】
シードから乱数の組を発生させる乱数生成機能と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及びベクトルs∈Knに基づいてメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供するメッセージ提供機能と、
前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られる第2の情報を用いて第3の情報を生成する中間情報生成機能と、
前記検証者に前記第3の情報を提供する中間情報提供機能と、
k通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記回答情報は、前記乱数の組及び前記メッセージの中から前記検証パターンに応じて選択される情報であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報であり、
前記メッセージ生成機能は、記憶装置に前記シードを格納し、前記メッセージの生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
プログラム。
【請求項19】
シードから乱数の組を発生させる乱数生成機能と、
環K上で定義される多次多変数多項式の組F=(f1,…,fm)、前記乱数の組、及び署名鍵s∈Knを用いて文書Mに対する電子署名を生成する署名生成機能と、
前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者へと前記電子署名を提供する署名提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記署名生成機能は、記憶装置に前記シードを格納し、前記電子署名の生成過程で不要になった前記乱数及び当該乱数から生成された中間変数を順次消去する、
プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【公開番号】特開2013−48350(P2013−48350A)
【公開日】平成25年3月7日(2013.3.7)
【国際特許分類】
【出願番号】特願2011−185944(P2011−185944)
【出願日】平成23年8月29日(2011.8.29)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成25年3月7日(2013.3.7)
【国際特許分類】
【出願日】平成23年8月29日(2011.8.29)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]