WO2013024628A1 - 情報処理装置、及び情報処理方法 - Google Patents
情報処理装置、及び情報処理方法 Download PDFInfo
- Publication number
- WO2013024628A1 WO2013024628A1 PCT/JP2012/066011 JP2012066011W WO2013024628A1 WO 2013024628 A1 WO2013024628 A1 WO 2013024628A1 JP 2012066011 W JP2012066011 W JP 2012066011W WO 2013024628 A1 WO2013024628 A1 WO 2013024628A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- information
- algorithm
- verifier
- prover
- vector
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
- H04L9/3221—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs interactive zero-knowledge proofs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3093—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
Abstract
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分のメッセージを生成し、多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者にN回分のメッセージを提供し、k通り(k≧3)の検証パターンの中から検証者が選択したN回分の検証パターンに対応する回答情報を検証者に提供する情報処理装置が提供される。また、この情報処理装置は、N回分のメッセージを1回の対話で送り、N回分の回答情報を複数回の対話で送る。
Description
本技術は、情報処理装置、及び情報処理方法に関する。
情報処理技術や通信技術の急速な発展に伴い、公文書、私文書を問わず、文書の電子化が急速に進んでいる。これに伴い、多くの個人や企業は、電子文書の安全管理に大きな関心を寄せている。こうした関心の高まりを受け、各方面で電子文書の盗聴や偽造等のタンパリング行為に対する対抗策が盛んに研究されるようになってきた。電子文書の盗聴に対しては、例えば、電子文書を暗号化することにより安全性が確保される。また、電子文書の偽造に対しては、例えば、電子署名を利用することにより安全性が確保される。但し、利用する暗号や電子署名が高いタンパリング耐性を有していなければ、十分な安全性が保証されない。
電子署名は、電子文書の作成者を特定するために利用される。そのため、電子署名は、電子文書の作成者しか生成できないようにすべきである。仮に、悪意ある第三者が同じ電子署名を生成できてしまうと、その第三者が電子文書の作成者に成りすますことができてしまう。つまり、悪意ある第三者により電子文書が偽造されてしまう。こうした偽造を防止するため、電子署名の安全性については様々な議論が交わされてきた。現在広く利用されている電子署名方式としては、例えば、RSA署名方式やDSA署名方式などが知られている。
RSA署名方式は、「大きな合成数に対する素因数分解の困難性(以下、素因数分解問題)」を安全性の根拠とする。また、DSA署名方式は、「離散対数問題に対する解の導出の困難性」を安全性の根拠とする。これらの根拠は、古典的なコンピュータを利用して素因数分解問題や離散対数問題を効率的に解くアルゴリズムが存在しないことに起因する。つまり、上記の困難性は、古典的なコンピュータにおける計算量的な困難性を意味する。しかしながら、量子コンピュータを用いると、素因数分解問題や離散対数問題に対する解答が効率的に算出されてしまうと言われている。
現在利用されている電子署名方式や公開鍵認証方式の多くは、RSA署名方式やDSA署名方式と同様、素因数分解問題や離散対数問題の困難性に安全性の根拠をおいている。そのため、こうした電子署名方式や公開鍵認証方式は、量子コンピュータが実用化された場合に、その安全性が確保されないことになる。そこで、素因数分解問題や離散対数問題など、量子コンピュータにより容易に解かれてしまう問題とは異なる問題に安全性の根拠をおく新たな電子署名方式及び公開鍵認証方式の実現が求められている。量子コンピュータにより容易に解くことが難しい問題としては、例えば、多変数多項式問題がある。
多変数多項式問題に安全性の根拠をおく電子署名方式としては、例えば、MI(Matsumoto-Imai cryptography)、HFE(Hidden Field Equation cryptography)、OV(Oil-Vinegar signature scheme)、TTM(Tamed Transformation Method cryptography)に基づく方式が知られている。例えば、下記の非特許文献1、2には、HFEに基づく電子署名方式が開示されている。
Jacques Patarin Asymmetric Cryptography with a Hidden Monomial. CRYPTO 1996, pp.45-60.
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.
上記の通り、多変数多項式問題は、量子コンピュータを用いても解くことが困難なNP困難問題と呼ばれる問題の一例である。通常、HFEなどに代表される多変数多項式問題を利用した公開鍵認証方式は、特殊なトラップドアが仕込まれた多次多変数連立方程式を利用している。例えば、x1,…,xnに関する多次多変数連立方程式F(x1,…,xn)=yと線形変換A及びBが用意され、線形変換A及びBが秘密に管理される。この場合、多次多変数連立方程式F、線形変換A及びBがトラップドアとなる。
トラップドアF,A,Bを知っているエンティティは、x1,…,xnに関する方程式B(F(A(x1,…,xn)))=y’を解くことができる。一方、トラップドアF,A,Bを知らないエンティティは、x1,…,xnに関する方程式B(F(A(x1,…,xn)))=y’を解くことができない。この仕組みを利用することにより、多次多変数連立方程式の解答困難性を安全性の根拠とする公開鍵認証方式や電子署名方式が実現される。
上記の通り、こうした公開鍵認証方式や電子署名方式を実現するには、B(F(A(x1,…,xn)))=yを満たすような特殊な多次多変数連立方程式を用意する必要がある。また、署名生成時に多次多変数連立方程式Fを解く必要がある。そのため、利用可能な多次多変数連立方程式Fは、比較的容易に解けるものに限られていた。すなわち、これまでの方式においては、比較的容易に解ける3つの関数(トラップドア)B、F、Aを合成した形の多次多変数連立方程式B(F(A(x1,…,xn)))=yしか用いることができず、十分な安全性を確保することが難しかった。
本技術は、上記の事情に鑑みて、効率的に解く手段(トラップドア)が知られていない多次多変数連立方程式を用いて高い安全性を有する公開鍵認証方式又は電子署名方式を実現することが可能な、新規かつ改良された情報処理装置、及び情報処理方法の提供を意図して考案されたものである。
本技術のある観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するメッセージ提供部と、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供する回答提供部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理装置が提供される。
また、本技術の別の観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するメッセージ提供部と、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する回答提供部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理装置が提供される。
また、本技術の別の観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するメッセージ取得部と、前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得する回答取得部と、前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理装置が提供される。
また、本技術の別の観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するメッセージ取得部と、前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得する回答取得部と、前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理装置が提供される。
また、本技術の別の観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するメッセージ提供部と、N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成する中間情報生成部と、N回分の前記第3の情報を前記検証者に提供する中間情報提供部と、N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供する回答提供部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理装置が提供される。
また、本技術の別の観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するメッセージ提供部と、N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成する中間情報生成部と、N回分の前記第3の情報を前記検証者に提供する中間情報提供部と、N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する回答提供部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理装置が提供される。
また、本技術の別の観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するメッセージ取得部と、前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供部と、N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得部と、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得する回答取得部と、前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理装置が提供される。
また、本技術の別の観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するメッセージ取得部と、前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供部と、N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得部と、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得する回答取得部と、前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理装置が提供される。
また、本技術の別の観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するメッセージ取得部と、前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供部と、N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得部と、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得する回答取得部と、前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理装置が提供される。
また、本技術の別の観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するメッセージ取得部と、前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供部と、N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得部と、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得する回答取得部と、前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、を備え、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理装置が提供される。
また、本技術の別の観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するステップと、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するステップと、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供するステップと、を含み、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理方法が提供される。
また、本技術の別の観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するステップと、前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するステップと、前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得するステップと、前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、を含み、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理方法が提供される。
また、本技術の別の観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するステップと、前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するステップと、N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成するステップと、N回分の前記第3の情報を前記検証者に提供するステップと、N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供するステップと、を含み、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理方法が提供される。
また、本技術の別の観点によれば、環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するステップと、前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供するステップと、N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得するステップと、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するステップと、前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得するステップと、前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、を含み、前記ベクトルsは秘密鍵であり、前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、情報処理方法が提供される。
また、本技術の別の観点によれば、上記の情報処理装置が備える各部の機能をコンピュータに実現させるためのプログラムが提供される。さらに、本技術の別の観点によれば、当該プログラムが記録された、コンピュータにより読み取り可能な記録媒体が提供される。
以上説明したように本技術によれば、効率的に解く手段(トラップドア)が知られていない多次多変数連立方程式を用いて、高い安全性を有する公開鍵認証方式又は電子署名方式を実現することが可能になる。
以下に添付図面を参照しながら、本技術の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
[説明の流れについて]
ここで、以下に記載する本技術の実施形態に関する説明の流れについて簡単に述べる。まず、図1を参照しながら、公開鍵認証方式のアルゴリズム構成について説明する。次いで、図2を参照しながら、電子署名方式のアルゴリズム構成について説明する。次いで、図3を参照しながら、nパスの公開鍵認証方式について説明する。
ここで、以下に記載する本技術の実施形態に関する説明の流れについて簡単に述べる。まず、図1を参照しながら、公開鍵認証方式のアルゴリズム構成について説明する。次いで、図2を参照しながら、電子署名方式のアルゴリズム構成について説明する。次いで、図3を参照しながら、nパスの公開鍵認証方式について説明する。
次いで、図4を参照しながら、本技術の第1実施形態(3パス)に係る公開鍵認証方式のアルゴリズムについて説明する。次いで、図5を参照しながら、同実施形態に係る公開鍵認証方式の拡張アルゴリズムについて説明する。次いで、図6を参照しながら、同実施形態に係る公開鍵認証方式の並列化アルゴリズムについて説明する。次いで、図7を参照しながら、同実施形態に係る公開鍵認証方式の具体的なアルゴリズムについて説明する。次いで、図8~図15を参照しながら、同実施形態に係る公開鍵認証方式の効率的なアルゴリズム及びその変形例などについて説明する。
次いで、図16を参照しながら、本技術の第2実施形態(5パス)に係る公開鍵認証方式のアルゴリズムについて説明する。次いで、図17を参照しながら、同実施形態に係る公開鍵認証方式の拡張アルゴリズムについて説明する。次いで、図18及び図19を参照しながら、同実施形態に係る公開鍵認証方式の並列化アルゴリズムについて説明する。次いで、図20を参照しながら、同実施形態に係る公開鍵認証方式の具体的なアルゴリズムについて説明する。次いで、図21~図35を参照しながら、同実施形態に係る公開鍵認証方式の効率的なアルゴリズム及びその変形例などについて説明する。
次いで、本技術の第1及び第2実施形態に係る効率的なアルゴリズムを2次以上の多変数多項式に適用するための拡張手法について説明する。次いで、本技術の第1及び第2実施形態に係る対話プロトコルの頑強性を高める仕組みについて説明する。また、図36及び図37を参照しながら、イレギュラーな要求に起因する秘密鍵の漏洩を回避する仕組み及び偽証の機会をなくす仕組みについて述べる。次いで、図38を参照しながら、本技術の第1及び第2実施形態に係る各アルゴリズムを実現することが可能な情報処理装置のハードウェア構成例について説明する。
最後に、本実施形態の技術的思想について纏め、当該技術的思想から得られる作用効果について簡単に説明する。
(説明項目)
1:はじめに
1-1:公開鍵認証方式のアルゴリズム
1-2:電子署名方式のアルゴリズム
1-3:nパスの公開鍵認証方式
2:第1実施形態
2-1:公開鍵認証方式のアルゴリズム
2-2:拡張アルゴリズム
2-3:並列化アルゴリズム
2-4:具体例(2次多項式を利用する場合)
2-5:効率的なアルゴリズム
2-6:電子署名方式への変形
2-6-1:変形方法
2-6-2:電子署名アルゴリズムの効率化
2-7:多次多変数連立方程式の形式
2-7-1:共通鍵ブロック暗号に関する形式
2-7-2:ハッシュ関数に関する形式
2-7-3:ストリーム暗号に関する形式
2-8:直列・並列ハイブリッドアルゴリズム
3:第2実施形態
3-1:公開鍵認証方式のアルゴリズム
3-2:拡張アルゴリズム
3-3:並列化アルゴリズム
3-4:具体例(2次多項式を利用する場合)
3-5:効率的なアルゴリズム
3-6:直列・並列ハイブリッドアルゴリズム
4:効率的なアルゴリズムの拡張
4-1:多変数多項式の高次化について
4-2:拡張方式(高次項の追加)
5:頑強性を高める仕組み
5-1:システムパラメータの設定方法
5-2:イレギュラーな要求に対する応答方法
5-2-1:証明者による応答方法について
5-2-2:検証者による応答方法について
6:ハードウェア構成例
7:まとめ
1:はじめに
1-1:公開鍵認証方式のアルゴリズム
1-2:電子署名方式のアルゴリズム
1-3:nパスの公開鍵認証方式
2:第1実施形態
2-1:公開鍵認証方式のアルゴリズム
2-2:拡張アルゴリズム
2-3:並列化アルゴリズム
2-4:具体例(2次多項式を利用する場合)
2-5:効率的なアルゴリズム
2-6:電子署名方式への変形
2-6-1:変形方法
2-6-2:電子署名アルゴリズムの効率化
2-7:多次多変数連立方程式の形式
2-7-1:共通鍵ブロック暗号に関する形式
2-7-2:ハッシュ関数に関する形式
2-7-3:ストリーム暗号に関する形式
2-8:直列・並列ハイブリッドアルゴリズム
3:第2実施形態
3-1:公開鍵認証方式のアルゴリズム
3-2:拡張アルゴリズム
3-3:並列化アルゴリズム
3-4:具体例(2次多項式を利用する場合)
3-5:効率的なアルゴリズム
3-6:直列・並列ハイブリッドアルゴリズム
4:効率的なアルゴリズムの拡張
4-1:多変数多項式の高次化について
4-2:拡張方式(高次項の追加)
5:頑強性を高める仕組み
5-1:システムパラメータの設定方法
5-2:イレギュラーな要求に対する応答方法
5-2-1:証明者による応答方法について
5-2-2:検証者による応答方法について
6:ハードウェア構成例
7:まとめ
<1:はじめに>
はじめに、本技術に係る実施形態について詳細に説明するに先立ち、公開鍵認証方式のアルゴリズム、電子署名方式のアルゴリズム、及びnパスの公開鍵認証方式について、その概要を簡単に説明する。
はじめに、本技術に係る実施形態について詳細に説明するに先立ち、公開鍵認証方式のアルゴリズム、電子署名方式のアルゴリズム、及びnパスの公開鍵認証方式について、その概要を簡単に説明する。
[1-1:公開鍵認証方式のアルゴリズム]
まず、図1を参照しながら、公開鍵認証方式のアルゴリズムについて概要を説明する。図1は、公開鍵認証方式のアルゴリズムについて概要を説明するための説明図である。
まず、図1を参照しながら、公開鍵認証方式のアルゴリズムについて概要を説明する。図1は、公開鍵認証方式のアルゴリズムについて概要を説明するための説明図である。
公開鍵認証は、ある人(証明者)が、公開鍵pk及び秘密鍵skを利用して、他の人(検証者)に本人であることを納得させるために利用される。例えば、証明者Aの公開鍵pkAは、検証者Bに公開される。一方、証明者Aの秘密鍵skAは、証明者Aにより秘密に管理される。公開鍵認証の仕組みにおいては、公開鍵pkAに対応する秘密鍵skAを知る者が証明者A本人であるとみなされる。
公開鍵認証の仕組みを利用して証明者Aが証明者A本人であることを検証者Bに証明するには、対話プロトコルを介して、証明者Aが公開鍵pkAに対応する秘密鍵skAを知っているという証拠を検証者Bに提示すればよい。そして、証明者Aが秘密鍵skAを知っているという証拠が検証者Bに提示され、その証拠を検証者Bが確認し終えた場合、証明者Aの正当性(本人であること)が証明されたことになる。
但し、公開鍵認証の仕組みには、安全性を担保するために以下の条件が求められる。
1つ目の条件は、「対話プロトコルを実行した際に秘密鍵skを持たない偽証者により偽証が成立してしまう確率を限りなく小さくする」ことである。この1つ目の条件が成り立つことを「健全性」と呼ぶ。つまり、健全性とは、「秘密鍵skを持たない偽証者により、対話プロトコルの実行中に無視できない確率で偽証が成立することはないこと」と言い換えられる。2つ目の条件は、「対話プロトコルを実行したとしても、証明者Aが有する秘密鍵skAの情報が検証者Bに一切漏れることがない」ことである。この2つ目の条件が成り立つことを「零知識性」と呼ぶ。
安全に公開鍵認証を行うには、健全性及び零知識性を有する対話プロトコルを利用する必要がある。仮に、健全性及び零知識性を有しない対話プロトコルを用いて認証処理を行った場合には、偽証された可能性及び秘密鍵の情報が漏れてしまった可能性が否定できないため、処理自体が成功裡に完了しても証明者の正当性を証明したことにはならない。従って、対話プロトコルの健全性及び零知識性を如何に保証するかが重要になる。
(モデル)
公開鍵認証方式のモデルには、図1に示すように、証明者と検証者という2つのエンティティが存在する。証明者は、鍵生成アルゴリズムGenを用いて、証明者固有の秘密鍵skと公開鍵pkの組を生成する。次いで、証明者は、鍵生成アルゴリズムGenを用いて生成した秘密鍵skと公開鍵pkの組を利用して検証者と対話プロトコルを実行する。このとき、証明者は、証明者アルゴリズムPを利用して対話プロトコルを実行する。上記の通り、証明者は、証明者アルゴリズムPを利用し、対話プロトコルの中で秘密鍵skを保有している証拠を検証者に提示する。
公開鍵認証方式のモデルには、図1に示すように、証明者と検証者という2つのエンティティが存在する。証明者は、鍵生成アルゴリズムGenを用いて、証明者固有の秘密鍵skと公開鍵pkの組を生成する。次いで、証明者は、鍵生成アルゴリズムGenを用いて生成した秘密鍵skと公開鍵pkの組を利用して検証者と対話プロトコルを実行する。このとき、証明者は、証明者アルゴリズムPを利用して対話プロトコルを実行する。上記の通り、証明者は、証明者アルゴリズムPを利用し、対話プロトコルの中で秘密鍵skを保有している証拠を検証者に提示する。
一方、検証者は、検証者アルゴリズムVを利用して対話プロトコルを実行し、証明者が公開している公開鍵に対応する秘密鍵を、その証明者が保有しているか否かを検証する。つまり、検証者は、証明者が公開鍵に対応する秘密鍵を保有しているか否かを検証するエンティティである。このように、公開鍵認証方式のモデルは、証明者と検証者という2つのエンティティ、及び、鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVという3つのアルゴリズムにより構成される。
なお、以下の説明において、「証明者」「検証者」という表現を用いるが、これらの表現はあくまでもエンティティを意味するものである。従って、鍵生成アルゴリズムGen、証明者アルゴリズムPを実行する主体は、「証明者」のエンティティに対応する情報処理装置である。同様に、検証者アルゴリズムVを実行する主体は、情報処理装置である。これら情報処理装置のハードウェア構成は、例えば、図38に示した通りである。つまり、鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVは、ROM904、RAM906、記憶部920、リムーバブル記録媒体928などに記録されたプログラムに基づいてCPU902などにより実行される。
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、証明者により利用される。鍵生成アルゴリズムGenは、証明者に固有の秘密鍵skと公開鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された公開鍵pkは公開される。そして、公開された公開鍵pkは、検証者により利用される。一方、鍵生成アルゴリズムGenにより生成された秘密鍵skは、証明者が秘密に管理する。そして、証明者により秘密に管理される秘密鍵skは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するために利用される。形式的に、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、秘密鍵skと公開鍵pkを出力するアルゴリズムとして、下記の式(1)のように表現される。
鍵生成アルゴリズムGenは、証明者により利用される。鍵生成アルゴリズムGenは、証明者に固有の秘密鍵skと公開鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された公開鍵pkは公開される。そして、公開された公開鍵pkは、検証者により利用される。一方、鍵生成アルゴリズムGenにより生成された秘密鍵skは、証明者が秘密に管理する。そして、証明者により秘密に管理される秘密鍵skは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するために利用される。形式的に、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、秘密鍵skと公開鍵pkを出力するアルゴリズムとして、下記の式(1)のように表現される。
(証明者アルゴリズムP)
証明者アルゴリズムPは、証明者により利用される。証明者アルゴリズムPは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するためのアルゴリズムである。つまり、証明者アルゴリズムPは、秘密鍵skと公開鍵pkとを入力とし、対話プロトコルを実行するアルゴリズムである。
証明者アルゴリズムPは、証明者により利用される。証明者アルゴリズムPは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するためのアルゴリズムである。つまり、証明者アルゴリズムPは、秘密鍵skと公開鍵pkとを入力とし、対話プロトコルを実行するアルゴリズムである。
(検証者アルゴリズムV)
検証者アルゴリズムVは、検証者により利用される。検証者アルゴリズムVは、対話プロトコルの中で、公開鍵pkに対応する秘密鍵skを証明者が保有しているか否かを検証するアルゴリズムである。検証者アルゴリズムVは、公開鍵pkを入力とし、対話プロトコルの実行結果に応じて0又は1(1bit)を出力するアルゴリズムである。なお、検証者は、検証者アルゴリズムVが0を出力した場合には証明者が不正なものであると判断し、1を出力した場合には証明者が正当なものであると判断する。形式的に、検証者アルゴリズムVは、下記の式(2)のように表現される。
検証者アルゴリズムVは、検証者により利用される。検証者アルゴリズムVは、対話プロトコルの中で、公開鍵pkに対応する秘密鍵skを証明者が保有しているか否かを検証するアルゴリズムである。検証者アルゴリズムVは、公開鍵pkを入力とし、対話プロトコルの実行結果に応じて0又は1(1bit)を出力するアルゴリズムである。なお、検証者は、検証者アルゴリズムVが0を出力した場合には証明者が不正なものであると判断し、1を出力した場合には証明者が正当なものであると判断する。形式的に、検証者アルゴリズムVは、下記の式(2)のように表現される。
上記の通り、意味のある公開鍵認証を実現するには、対話プロトコルが健全性及び零知識性という2つの条件を満たしている必要がある。しかし、証明者が秘密鍵skを保有していることを証明するためには、証明者が秘密鍵skに依存した手続きを実行し、その結果を検証者に通知した上で、その通知内容に基づく検証を検証者に実行させる必要がある。秘密鍵skに依存した手続きを実行するのは、健全性を担保するために必要である。一方で、秘密鍵skの情報が一切検証者に漏れないようにする必要がある。そのため、これらの要件を満たすように、上記の鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVを巧妙に設計する必要がある。
以上、公開鍵認証方式のアルゴリズムについて、その概要を説明した。
[1-2:電子署名方式のアルゴリズム]
次に、図2を参照しながら、電子署名方式のアルゴリズムについて概要を説明する。図2は、電子署名方式のアルゴリズムについて概要を説明するための説明図である。
次に、図2を参照しながら、電子署名方式のアルゴリズムについて概要を説明する。図2は、電子署名方式のアルゴリズムについて概要を説明するための説明図である。
紙文書とは異なり、ある電子化されたデータに対して押印したり署名を記載したりすることはできない。そのため、電子化されたデータの作成者を証明するためには、紙文書に押印したり署名を記載したりするのと同等の効果が得られる電子的な仕組みを必要とする。この仕組みが電子署名である。電子署名とは、データの作成者しか知らない署名データをデータに関連付けて受領者に提供し、その署名データを受領者側で検証する仕組みのことを言う。
(モデル)
電子署名方式のモデルには、図2に示すように、署名者及び検証者という2つのエンティティが存在する。そして、電子署名方式のモデルは、鍵生成アルゴリズムGen、署名生成アルゴリズムSig、署名検証アルゴリズムVerという3つのアルゴリズムにより構成される。
電子署名方式のモデルには、図2に示すように、署名者及び検証者という2つのエンティティが存在する。そして、電子署名方式のモデルは、鍵生成アルゴリズムGen、署名生成アルゴリズムSig、署名検証アルゴリズムVerという3つのアルゴリズムにより構成される。
署名者は、鍵生成アルゴリズムGenを利用して署名者固有の署名鍵skと検証鍵pkとの組を生成する。また、署名者は、署名生成アルゴリズムSigを利用して文書Mに付与する電子署名σを生成する。つまり、署名者は、文書Mに電子署名を付与するエンティティである。一方、検証者は、署名検証アルゴリズムVerを利用して文書Mに付与された電子署名σを検証する。つまり、検証者は、文書Mの作成者が署名者であるか否かを確認するために、電子署名σを検証するエンティティである。
なお、以下の説明において、「署名者」「検証者」という表現を用いるが、これらの表現はあくまでもエンティティを意味するものである。従って、鍵生成アルゴリズムGen、署名生成アルゴリズムSigを実行する主体は、「署名者」のエンティティに対応する情報処理装置である。同様に、署名検証アルゴリズムVerを実行する主体は、情報処理装置である。これら情報処理装置のハードウェア構成は、例えば、図38に示した通りである。つまり、鍵生成アルゴリズムGen、署名生成アルゴリズムSig、署名検証アルゴリズムVerは、ROM904、RAM906、記憶部920、リムーバブル記録媒体928などに記録されたプログラムに基づいてCPU902などにより実行される。
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、署名者により利用される。鍵生成アルゴリズムGenは、署名者固有の署名鍵skと検証鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された検証鍵pkは公開される。一方、鍵生成アルゴリズムGenにより生成された署名鍵skは、署名者により秘密に管理される。そして、署名鍵skは、文書Mに付与される電子署名σの生成に利用される。例えば、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、署名鍵sk及び公開鍵pkを出力する。この場合、鍵生成アルゴリズムGenは、形式的に、下記の式(3)のように表現することができる。
鍵生成アルゴリズムGenは、署名者により利用される。鍵生成アルゴリズムGenは、署名者固有の署名鍵skと検証鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された検証鍵pkは公開される。一方、鍵生成アルゴリズムGenにより生成された署名鍵skは、署名者により秘密に管理される。そして、署名鍵skは、文書Mに付与される電子署名σの生成に利用される。例えば、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、署名鍵sk及び公開鍵pkを出力する。この場合、鍵生成アルゴリズムGenは、形式的に、下記の式(3)のように表現することができる。
(署名生成アルゴリズムSig)
署名生成アルゴリズムSigは、署名者により利用される。署名生成アルゴリズムSigは、文書Mに付与される電子署名σを生成するアルゴリズムである。署名生成アルゴリズムSigは、署名鍵skと文書Mとを入力とし、電子署名σを出力するアルゴリズムである。この署名生成アルゴリズムSigは、形式的に、下記の式(4)のように表現することができる。
署名生成アルゴリズムSigは、署名者により利用される。署名生成アルゴリズムSigは、文書Mに付与される電子署名σを生成するアルゴリズムである。署名生成アルゴリズムSigは、署名鍵skと文書Mとを入力とし、電子署名σを出力するアルゴリズムである。この署名生成アルゴリズムSigは、形式的に、下記の式(4)のように表現することができる。
(署名検証アルゴリズムVer)
署名検証アルゴリズムVerは、検証者により利用される。署名検証アルゴリズムVerは、電子署名σが文書Mに対する正当な電子署名であるか否かを検証するアルゴリズムである。署名検証アルゴリズムVerは、署名者の検証鍵pk、文書M、電子署名σを入力とし、0又は1(1bit)を出力するアルゴリズムである。この署名検証アルゴリズムVerは、形式的に、下記の式(5)のように表現することができる。なお、検証者は、署名検証アルゴリズムVerが0を出力した場合(公開鍵pkが文書Mと電子署名σを拒否する場合)に電子署名σが不当であると判断し、1を出力した場合(公開鍵pkが文書Mと電子署名σを受理する場合)に電子署名σが正当であると判断する。
署名検証アルゴリズムVerは、検証者により利用される。署名検証アルゴリズムVerは、電子署名σが文書Mに対する正当な電子署名であるか否かを検証するアルゴリズムである。署名検証アルゴリズムVerは、署名者の検証鍵pk、文書M、電子署名σを入力とし、0又は1(1bit)を出力するアルゴリズムである。この署名検証アルゴリズムVerは、形式的に、下記の式(5)のように表現することができる。なお、検証者は、署名検証アルゴリズムVerが0を出力した場合(公開鍵pkが文書Mと電子署名σを拒否する場合)に電子署名σが不当であると判断し、1を出力した場合(公開鍵pkが文書Mと電子署名σを受理する場合)に電子署名σが正当であると判断する。
以上、電子署名方式のアルゴリズムについて、その概要を説明した。
[1-3:nパスの公開鍵認証方式]
次に、図3を参照しながら、nパスの公開鍵認証方式について説明する。図3は、nパスの公開鍵認証方式について説明するための説明図である。
次に、図3を参照しながら、nパスの公開鍵認証方式について説明する。図3は、nパスの公開鍵認証方式について説明するための説明図である。
上記の通り、公開鍵認証方式は、対話プロトコルの中で、証明者が公開鍵pkに対応する秘密鍵skを保有していることを検証者に証明する認証方式である。また、対話プロトコルは、健全性及び零知識性という2つの条件を満たす必要がある。そのため、対話プロトコルの中では、図3に示すように、証明者及び検証者の双方がそれぞれ処理を実行しながらn回の情報交換を行う。
nパスの公開鍵認証方式の場合、証明者アルゴリズムPを用いて証明者により処理(工程#1)が実行され、情報T1が検証者に送信される。次いで、検証者アルゴリズムVを用いて検証者により処理(工程#2)が実行され、情報T2が証明者に送信される。さらに、k=3~nについて処理の実行及び情報Tkの送信が順次行われ、最後に処理(工程#n+1)が実行される。このように、情報がn回送受信される方式のことを「nパス」の公開鍵認証方式と呼ぶ。
以上、nパスの公開鍵認証方式について説明した。
<2:第1実施形態>
以下、本技術の第1実施形態について説明する。本実施形態は、多次多変数連立方程式に対する求解問題の困難性に安全性の根拠をおく公開鍵認証方式及び電子署名方式に関する。但し、本実施形態は、HFE電子署名方式などの従来手法とは異なり、効率的に解く手段(トラップドア)を持たない多次多変数連立方程式を利用する公開鍵認証方式及び電子署名方式に関する。
以下、本技術の第1実施形態について説明する。本実施形態は、多次多変数連立方程式に対する求解問題の困難性に安全性の根拠をおく公開鍵認証方式及び電子署名方式に関する。但し、本実施形態は、HFE電子署名方式などの従来手法とは異なり、効率的に解く手段(トラップドア)を持たない多次多変数連立方程式を利用する公開鍵認証方式及び電子署名方式に関する。
[2-1:公開鍵認証方式のアルゴリズム]
まず、図4を参照しながら、本実施形態に係る公開鍵認証方式(以下、本手法)のアルゴリズムについて説明する。図4は、本手法のアルゴリズムについて説明するための説明図である。なお、本手法は、鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVにより構成される。以下、各アルゴリズムの構成について説明する。
まず、図4を参照しながら、本実施形態に係る公開鍵認証方式(以下、本手法)のアルゴリズムについて説明する。図4は、本手法のアルゴリズムについて説明するための説明図である。なお、本手法は、鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVにより構成される。以下、各アルゴリズムの構成について説明する。
(鍵生成アルゴリズム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を秘密鍵に設定する。なお、以下では、ベクトル(x1,…,xn)をxと表記し、多変数多項式の組(f1(x),…,fm(x))をF(x)と表記することにする。
鍵生成アルゴリズム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を秘密鍵に設定する。なお、以下では、ベクトル(x1,…,xn)をxと表記し、多変数多項式の組(f1(x),…,fm(x))をF(x)と表記することにする。
(証明者アルゴリズムP、検証者アルゴリズムV)
次に、図4を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。
次に、図4を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。
上記の対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図4に示したフローチャートに沿って説明を進める。
工程#1:
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器G1に数wを適用してベクトルr∈Kn及び数wAを生成する。つまり、証明者アルゴリズムPは、(r,wA)←G1(w)を計算する。次いで、証明者アルゴリズムPは、擬似乱数生成器G2に数wAを適用して多変数多項式FA(x)=(fA 1(x),…,fA m(x))を生成する。つまり、証明者アルゴリズムPは、FA←G2(wA)を計算する。
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器G1に数wを適用してベクトルr∈Kn及び数wAを生成する。つまり、証明者アルゴリズムPは、(r,wA)←G1(w)を計算する。次いで、証明者アルゴリズムPは、擬似乱数生成器G2に数wAを適用して多変数多項式FA(x)=(fA 1(x),…,fA m(x))を生成する。つまり、証明者アルゴリズムPは、FA←G2(wA)を計算する。
工程#1(続き):
次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、FB(x)←F(x+r)+FA(x)を計算する。この計算は、xに関して多変数多項式F(x+r)を多変数多項式FA(x)によりマスクする操作に相当する。
次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、FB(x)←F(x+r)+FA(x)を計算する。この計算は、xに関して多変数多項式F(x+r)を多変数多項式FA(x)によりマスクする操作に相当する。
工程#1(続き):
次いで、証明者アルゴリズムPは、FA(z)及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FA(z),z)を計算する。また、証明者アルゴリズムPは、数wAのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(wA)を計算する。さらに、証明者アルゴリズムPは、多変数多項式FBのハッシュ値c3を生成する。つまり、証明者アルゴリズムPは、c3←H3(FB(x))を計算する。なお、上記のH1(…)、H2(…)、H3(…)は、ハッシュ関数である。このハッシュ値(c1,c2,c3)は、メッセージとして検証者アルゴリズムVに送られる。このとき、sに関する情報、rに関する情報、zに関する情報が検証者に一切漏れない点に注意されたい。
次いで、証明者アルゴリズムPは、FA(z)及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FA(z),z)を計算する。また、証明者アルゴリズムPは、数wAのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(wA)を計算する。さらに、証明者アルゴリズムPは、多変数多項式FBのハッシュ値c3を生成する。つまり、証明者アルゴリズムPは、c3←H3(FB(x))を計算する。なお、上記のH1(…)、H2(…)、H3(…)は、ハッシュ関数である。このハッシュ値(c1,c2,c3)は、メッセージとして検証者アルゴリズムVに送られる。このとき、sに関する情報、rに関する情報、zに関する情報が検証者に一切漏れない点に注意されたい。
工程#2:
メッセージ(c1,c2,c3)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
メッセージ(c1,c2,c3)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
工程#3:
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送る返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(wA,z)を生成する。d=2の場合、証明者アルゴリズムPは、返答σ=(FB(z),z)を生成する。工程#3で生成された返答σは、検証者アルゴリズムVに送られる。このとき、d=0の場合にはzに関する情報が検証者に一切漏れておらず、d=1又は2の場合にはrに関する情報が検証者に一切漏れない点に注意されたい。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送る返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(wA,z)を生成する。d=2の場合、証明者アルゴリズムPは、返答σ=(FB(z),z)を生成する。工程#3で生成された返答σは、検証者アルゴリズムVに送られる。このとき、d=0の場合にはzに関する情報が検証者に一切漏れておらず、d=1又は2の場合にはrに関する情報が検証者に一切漏れない点に注意されたい。
工程#4:
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
d=0の場合、検証者アルゴリズムVは、(rA,wB)←G1(σ)を計算する。さらに、検証者アルゴリズムVは、FC←G2(wB)を計算する。そして、検証者アルゴリズムVは、c2=H2(wB)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、c3=H3(F(x+rA)+FC(x))の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
d=1の場合、検証者アルゴリズムVは、(wB,zA)←σとする。さらに、検証者アルゴリズムVは、FC←G2(wB)を計算する。そして、検証者アルゴリズムVは、c1=H1(FC(zA),zA)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、c2=H2(wB)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
d=2の場合、検証者アルゴリズムVは、(FD,zA)←σとする。そして、検証者アルゴリズムVは、c1=H1(FD(zA)-y,zA))の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c3=H3(FD)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、本手法に係る各アルゴリズムの構成について説明した。
(本手法の健全性について)
ここで、本手法の健全性について説明を補足する。本手法の健全性は、「検証者アルゴリズムVが選択可能な要求d=0,1,2の全てについて、証明者アルゴリズムPが正しい返答σを返したならば、下記の式(6)及び式(7)を満たすFD、FC、rA、zAが計算可能になる」という論理に基づいて保証されている。
ここで、本手法の健全性について説明を補足する。本手法の健全性は、「検証者アルゴリズムVが選択可能な要求d=0,1,2の全てについて、証明者アルゴリズムPが正しい返答σを返したならば、下記の式(6)及び式(7)を満たすFD、FC、rA、zAが計算可能になる」という論理に基づいて保証されている。
上記の健全性が保証されることにより、多次多変数連立方程式の求解問題を解かない限りにおいて2/3より高い確率で偽証が成功することは不可能であると保証される。つまり、検証者の要求d=0,1,2の全てに正しく回答するためには、偽証者が上記の式(6)及び式(7)を満たすFD、FC、rA、zAを計算できる必要がある。言い換えると、偽証者はF(s)=yを満たすsを計算できる必要がある。但し、検証者の要求d=0,1,2の高々2つについて偽証者が正しく回答できてしまう可能性は残る。そのため、偽証の成功確率は2/3となる。なお、上記の対話プロトコルを十分な回数実行することで、偽証の成功確率は無視できるほど小さくなる。
以上、本手法の健全性について説明した。
(変形例)
ここで、上記アルゴリズムの一変形例を紹介する。上記の鍵生成アルゴリズムGenは、y←F(s)を計算し、公開鍵を(F,y)に設定していた。一方、本変形例において、鍵生成アルゴリズムGenは、(y1,…,ym)←F(s)及び(f1 *(x),…,fm *(x))←(f1(x)-y1,…,fm(x)-ym)を計算し、公開鍵を(f1 *,…,fm *)に設定する。このように変形すると、y=0として対話プロトコルを実行することが可能になる。
ここで、上記アルゴリズムの一変形例を紹介する。上記の鍵生成アルゴリズムGenは、y←F(s)を計算し、公開鍵を(F,y)に設定していた。一方、本変形例において、鍵生成アルゴリズムGenは、(y1,…,ym)←F(s)及び(f1 *(x),…,fm *(x))←(f1(x)-y1,…,fm(x)-ym)を計算し、公開鍵を(f1 *,…,fm *)に設定する。このように変形すると、y=0として対話プロトコルを実行することが可能になる。
また、上記の証明者アルゴリズムPは、FB(z)及びzからメッセージc1を生成していた。しかし、FB(z)=FA(z)の関係があることにより、FA(z)及びzからメッセージc1を生成するように変形しても、同様の対話プロトコルが実現される。また、FB(z)のハッシュ値とzのハッシュ値とを別々に計算し、それぞれをメッセージとして検証者アルゴリズムVに送るように証明者アルゴリズムPの構成を変形してもよい。
また、上記の証明者アルゴリズムPは、数wに擬似乱数生成器G1を適用してベクトルr及び数wAを生成していた。また、上記の証明者アルゴリズムPは、数wAを擬似乱数生成器G2に適用して多変数多項式FA(x)を生成していた。しかし、G1を恒等写像とし、最初からw=(r,FA)を算出するように証明者アルゴリズムPの構成を変形してもよい。この場合には、数wをG1に適用する必要はない。なお、G2についても同様である。
また、上記の対話プロトコルにおいては公開鍵を(F,y)としている。公開鍵に含まれる多変数多項式Fは秘密鍵skに依らないパラメータである。そのため、証明者毎に多変数多項式Fを設定せず、システム全体で共通の多変数多項式Fを利用するように構成されていてもよい。この場合、証明者毎に設定される公開鍵はyだけで済むことになり、公開鍵のサイズを小さくすることが可能になる。但し、安全性の観点から、証明者毎に多変数多項式Fを設定する方が好ましいケースも考えられる。このようなケースにおける多変数多項式Fの設定方法については後段において詳述する。
また、上記の対話プロトコルにおいては公開鍵を(f1,…,fm,y)としているが、F=(f1,…,fm)は適当に選択してもよいパラメータである。そのため、証明者及び検証者は、例えば、乱数のシードwpkを用意し、擬似乱数生成器G*を利用してF←G*(wpk)を計算してもよい。この場合、公開鍵は(wpk,y)となり、(F,y)を公開鍵として公開する場合よりも、公開鍵のサイズを小さくすることが可能になる。
上記のアルゴリズムでは、ハッシュ関数H1,H2,H3を用いてc1,c2,c3を計算しているが、ハッシュ関数の代わりにコミットメント関数COMを用いてもよい。コミットメント関数COMは、文字列Sと乱数ρの2つを引数にとる関数である。コミットメント関数の例としては、Shai HaleviとSilvio Micaliによって国際会議CRYPTO1996で発表された方式などがある。
このコミットメント関数を用いる場合、c1,c2,c3を計算する前に、乱数ρ1,ρ2,ρ3を用意し、ハッシュ関数H1(・),H2(・),H3(・)を適用する代わりにコミットメント関数COM(・,ρ1),COM(・,ρ2),COM(・,ρ2)を適用してc1,c2,c3を生成する。但し、検証者がciを生成するために必要なρiは、返答σに含めて送られる。なお、これらの変形は、後述する全てのアルゴリズムに適用可能である。
以上、本手法の変形例について説明した。
[2-2:拡張アルゴリズム]
次に、図5を参照しながら、本手法を拡張した公開鍵認証方式(以下、拡張手法)のアルゴリズムについて説明する。図5は、拡張手法に基づく対話プロトコルの流れについて説明するための説明図である。
次に、図5を参照しながら、本手法を拡張した公開鍵認証方式(以下、拡張手法)のアルゴリズムについて説明する。図5は、拡張手法に基づく対話プロトコルの流れについて説明するための説明図である。
ここで説明する拡張手法は、1パス目に送信するメッセージ(c1,c2,c3)を1つのハッシュ値cに変換して検証者に送るというものである。但し、3パス目で送る返答σを用いても復元できないメッセージについては、返答σと共に検証者に送られる。この拡張手法を適用すると、対話プロトコルの中で検証者に送る情報量を減らすことが可能になる。以下、拡張手法に係る各アルゴリズムの構成について詳細に説明する。
(鍵生成アルゴリズム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を秘密鍵に設定する。なお、以下では、ベクトル(x1,…,xn)をxと表記し、多変数多項式の組(f1(x),…,fm(x))をF(x)と表記することにする。
鍵生成アルゴリズム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を秘密鍵に設定する。なお、以下では、ベクトル(x1,…,xn)をxと表記し、多変数多項式の組(f1(x),…,fm(x))をF(x)と表記することにする。
(証明者アルゴリズムP、検証者アルゴリズムV)
次に、図5を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。
次に、図5を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。
上記の対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図5に示したフローチャートに沿って説明を進める。
工程#1:
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器G1に数wを適用してベクトルr∈Knと数wAを生成する。つまり、証明者アルゴリズムPは、(r,wA)←G1(w)を計算する。次いで、証明者アルゴリズムPは、擬似乱数生成器G2に数wAを適用して多変数多項式FA(x)=(fA 1(x),…,fA m(x))を生成する。つまり、証明者アルゴリズムPは、FA←G2(wA)を計算する。
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器G1に数wを適用してベクトルr∈Knと数wAを生成する。つまり、証明者アルゴリズムPは、(r,wA)←G1(w)を計算する。次いで、証明者アルゴリズムPは、擬似乱数生成器G2に数wAを適用して多変数多項式FA(x)=(fA 1(x),…,fA m(x))を生成する。つまり、証明者アルゴリズムPは、FA←G2(wA)を計算する。
工程#1(続き):
次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、FB(x)←F(x+r)+FA(x)を計算する。この計算は、xについての多項式の組F(x+r)を多項式の組FA(x)によりマスクする操作に相当する。
次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、FB(x)←F(x+r)+FA(x)を計算する。この計算は、xについての多項式の組F(x+r)を多項式の組FA(x)によりマスクする操作に相当する。
工程#1(続き):
次いで、証明者アルゴリズムPは、FB(z)とzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FB(z),z)を計算する。また、証明者アルゴリズムPは、数wAのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(wA)を計算する。さらに、証明者アルゴリズムPは、多項式の組FBのハッシュ値c3を生成する。つまり、証明者アルゴリズムPは、c3←H3(FB)を計算する。なお、上記のH1(…)、H2(…)、H3(…)は、ハッシュ関数である。拡張方式の場合、証明者アルゴリズムPは、ハッシュ値の組(c1,c2,c3)をハッシュ関数Hに適用してハッシュ値cを生成し、生成したハッシュ値cを検証者アルゴリズムVに送る。
次いで、証明者アルゴリズムPは、FB(z)とzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FB(z),z)を計算する。また、証明者アルゴリズムPは、数wAのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(wA)を計算する。さらに、証明者アルゴリズムPは、多項式の組FBのハッシュ値c3を生成する。つまり、証明者アルゴリズムPは、c3←H3(FB)を計算する。なお、上記のH1(…)、H2(…)、H3(…)は、ハッシュ関数である。拡張方式の場合、証明者アルゴリズムPは、ハッシュ値の組(c1,c2,c3)をハッシュ関数Hに適用してハッシュ値cを生成し、生成したハッシュ値cを検証者アルゴリズムVに送る。
工程#2:
ハッシュ値cを受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
ハッシュ値cを受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
工程#3:
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送る返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答(σ,c*)=(w,c1)を生成する。d=1の場合、証明者アルゴリズムPは、返答(σ,c*)=((wA,z),c3)を生成する。d=2の場合、証明者アルゴリズムPは、返答(σ,c*)=((FB,z),c2)を生成する。工程#3で生成された返答(σ,c*)は、検証者アルゴリズムVに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送る返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答(σ,c*)=(w,c1)を生成する。d=1の場合、証明者アルゴリズムPは、返答(σ,c*)=((wA,z),c3)を生成する。d=2の場合、証明者アルゴリズムPは、返答(σ,c*)=((FB,z),c2)を生成する。工程#3で生成された返答(σ,c*)は、検証者アルゴリズムVに送られる。
工程#4:
返答σを受け取った検証者アルゴリズムVは、受け取った返答(σ,c*)を利用して以下の検証処理を実行する。
返答σを受け取った検証者アルゴリズムVは、受け取った返答(σ,c*)を利用して以下の検証処理を実行する。
d=0の場合、検証者アルゴリズムVは、(rA,wB)←G1(σ)を計算する。次いで、検証者アルゴリズムVは、FC←G2(wB)を計算する。次いで、検証者アルゴリズムVは、c2
A=H2(wB)を計算する。次いで、検証者アルゴリズムVは、c3
A=H3(F(x+rA)+FC(x))を計算する。その後、検証者アルゴリズムVは、c=H(c*,c2
A,c3
A)の等号が成り立つか否かを検証する。そして、検証者アルゴリズムVは、検証が成功した場合に認証成功を示す値1を出力し、検証が失敗した場合に認証失敗を示す値0を出力する。
d=1の場合、検証者アルゴリズムVは、(wB,zA)←σとする。次いで、検証者アルゴリズムVは、FC←G2(wB)を計算する。次いで、検証者アルゴリズムVは、c1
A=H1(FC(zA),zA)を計算する。次いで、検証者アルゴリズムVは、c2
A=H2(wB)を計算する。その後、検証者アルゴリズムVは、c=H(c1
A,c2
A,c*)の等号が成り立つか否かを検証する。そして、検証者アルゴリズムVは、検証が成功した場合に認証成功を示す値1を出力し、検証が失敗した場合に認証失敗を示す値0を出力する。
d=2の場合、検証者アルゴリズムVは、(FD,zA)←σとする。次いで、検証者アルゴリズムVは、c1
A=H1(FD(zA)-y,zA)を計算する。次いで、検証者アルゴリズムVは、c3
A=H3(FD)を計算する。その後、検証者アルゴリズムVは、c=H(c1
A,c*,c3
A)の等号が成り立つか否かを検証する。そして、検証者アルゴリズムVは、検証が成功した場合に認証成功を示す値1を出力し、検証が失敗した場合に認証失敗を示す値0を出力する。
以上、拡張手法に係る各アルゴリズムの構成について説明した。拡張手法を適用することにより、対話プロトコルの中で送受信される情報量を削減することが可能になる。
[2-3:並列化アルゴリズム]
先に述べた通り、本手法又は拡張手法に係る対話プロトコルを適用すれば、偽証が成功する確率を2/3以下に抑制することができる。従って、この対話プロトコルを2回実行すれば、偽証が成功する確率を(2/3)2以下に抑制することができる。さらに、この対話プロトコルをN回実行すると、偽証が成功する確率は(2/3)Nとなり、Nを十分に大きい数(例えば、N=140)にすれば、偽証が成功する確率は無視できる程度に小さくなる。
先に述べた通り、本手法又は拡張手法に係る対話プロトコルを適用すれば、偽証が成功する確率を2/3以下に抑制することができる。従って、この対話プロトコルを2回実行すれば、偽証が成功する確率を(2/3)2以下に抑制することができる。さらに、この対話プロトコルをN回実行すると、偽証が成功する確率は(2/3)Nとなり、Nを十分に大きい数(例えば、N=140)にすれば、偽証が成功する確率は無視できる程度に小さくなる。
対話プロトコルを複数回実行する方法としては、例えば、メッセージ、要求、返答のやり取りを逐次的に複数回繰り返す直列的な方法と、1回分のやり取りで複数回分のメッセージ、要求、返答のやり取りを行う並列的な方法とが考えられる。ここでは、本手法に係る対話プロトコルを並列的な方法に係る対話プロトコル(以下、並列化アルゴリズム)に拡張する方法について説明する。例えば、並列化アルゴリズムは図6のようになる。以下、図6を参照しながら、並列化アルゴリズムの内容について説明する。
(鍵生成アルゴリズム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を秘密鍵に設定する。なお、以下では、ベクトル(x1,…,xn)をxと表記し、多変数多項式の組(f1(x),…,fm(x))をF(x)と表記することにする。
鍵生成アルゴリズム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を秘密鍵に設定する。なお、以下では、ベクトル(x1,…,xn)をxと表記し、多変数多項式の組(f1(x),…,fm(x))をF(x)と表記することにする。
(証明者アルゴリズムP、検証者アルゴリズムV)
次に、図6を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。
次に、図6を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。
上記の対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図6に示したフローチャートに沿って説明を進める。
工程#1:
まず、証明者アルゴリズムPは、i=1~Nについて、以下の処理(1)~処理(8)を実行する。
処理(1):証明者アルゴリズムPは、任意に数wiを選択する。
処理(2):証明者アルゴリズムPは、擬似乱数生成器G1に数wiを適用してベクトルri∈Knと数wi Aを生成する。つまり、証明者アルゴリズムPは、(ri,wi A)←G1(wi)を計算する。
処理(3):証明者アルゴリズムPは、擬似乱数生成器G2に数wi Aを適用して多変数多項式の組Fi A(x)を生成する。つまり、証明者アルゴリズムPは、Fi A←G2(wi A)を計算する。
処理(4):証明者アルゴリズムPは、zi←si-riを計算する。この計算は、秘密鍵siをベクトルriによりマスクする操作に相当する。
処理(5):証明者アルゴリズムPは、Fi B(x)←F(x+ri)+Fi A(x)を計算する。この計算は、xについての多項式の組F(x+ri)を多項式の組Fi A(x)によりマスクする操作に相当する。
処理(6):証明者アルゴリズムPは、Fi B(zi)及びziのハッシュ値c1,iを生成する。つまり、証明者アルゴリズムPは、c1,i←H1(Fi B(zi),zi)を計算する。
処理(7):証明者アルゴリズムPは、数wi Aのハッシュ値c2,iを生成する。つまり、証明者アルゴリズムPは、c2,i←H2(wi A)を計算する。
処理(8):証明者アルゴリズムPは、多項式の組Fi Bのハッシュ値c3,iを生成する。つまり、証明者アルゴリズムPは、c3,i←H3(Fi B)を計算する。
なお、上記のH1(…)、H2(…)、H3(…)は、ハッシュ関数である。また、ハッシュ値(c1,i,c2,i,c3,i)はメッセージである。
まず、証明者アルゴリズムPは、i=1~Nについて、以下の処理(1)~処理(8)を実行する。
処理(1):証明者アルゴリズムPは、任意に数wiを選択する。
処理(2):証明者アルゴリズムPは、擬似乱数生成器G1に数wiを適用してベクトルri∈Knと数wi Aを生成する。つまり、証明者アルゴリズムPは、(ri,wi A)←G1(wi)を計算する。
処理(3):証明者アルゴリズムPは、擬似乱数生成器G2に数wi Aを適用して多変数多項式の組Fi A(x)を生成する。つまり、証明者アルゴリズムPは、Fi A←G2(wi A)を計算する。
処理(4):証明者アルゴリズムPは、zi←si-riを計算する。この計算は、秘密鍵siをベクトルriによりマスクする操作に相当する。
処理(5):証明者アルゴリズムPは、Fi B(x)←F(x+ri)+Fi A(x)を計算する。この計算は、xについての多項式の組F(x+ri)を多項式の組Fi A(x)によりマスクする操作に相当する。
処理(6):証明者アルゴリズムPは、Fi B(zi)及びziのハッシュ値c1,iを生成する。つまり、証明者アルゴリズムPは、c1,i←H1(Fi B(zi),zi)を計算する。
処理(7):証明者アルゴリズムPは、数wi Aのハッシュ値c2,iを生成する。つまり、証明者アルゴリズムPは、c2,i←H2(wi A)を計算する。
処理(8):証明者アルゴリズムPは、多項式の組Fi Bのハッシュ値c3,iを生成する。つまり、証明者アルゴリズムPは、c3,i←H3(Fi B)を計算する。
なお、上記のH1(…)、H2(…)、H3(…)は、ハッシュ関数である。また、ハッシュ値(c1,i,c2,i,c3,i)はメッセージである。
i=1~Nについて、上記の処理(1)~処理(8)が実行された後、工程#1で生成されたメッセージ(c1,i,c2,i,c3,i)(i=1~N)は、検証者アルゴリズムVに送られる。
工程#2:
メッセージ(c1,i,c2,i,c3,i)(i=1~N)を受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1~Nのそれぞれについて、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求diに設定する。この要求diは証明者アルゴリズムPに送られる。
メッセージ(c1,i,c2,i,c3,i)(i=1~N)を受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1~Nのそれぞれについて、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求diに設定する。この要求diは証明者アルゴリズムPに送られる。
工程#3:
要求di(i=1~N)を受け取った証明者アルゴリズムPは、受け取った要求diに応じて検証者アルゴリズムVに送る返答σiを生成する。このとき、証明者アルゴリズムPは、i=1~Nについて、以下の処理(1)~処理(3)を実行する。
処理(1):di=0の場合、証明者アルゴリズムPは、返答σi=wiを生成する。
処理(2):di=1の場合、証明者アルゴリズムPは、返答σi=(wi A,zi)を生成する。
処理(3):di=2の場合、証明者アルゴリズムPは、返答σi=(Fi B,zi)を生成する。
上記の処理(1)~処理(3)の処理が実行された後、返答σi(i=1~N)は、検証者アルゴリズムVに送られる。
要求di(i=1~N)を受け取った証明者アルゴリズムPは、受け取った要求diに応じて検証者アルゴリズムVに送る返答σiを生成する。このとき、証明者アルゴリズムPは、i=1~Nについて、以下の処理(1)~処理(3)を実行する。
処理(1):di=0の場合、証明者アルゴリズムPは、返答σi=wiを生成する。
処理(2):di=1の場合、証明者アルゴリズムPは、返答σi=(wi A,zi)を生成する。
処理(3):di=2の場合、証明者アルゴリズムPは、返答σi=(Fi B,zi)を生成する。
上記の処理(1)~処理(3)の処理が実行された後、返答σi(i=1~N)は、検証者アルゴリズムVに送られる。
工程#4:
返答σi(i=1~N)を受け取った検証者アルゴリズムVは、受け取った返答σi(i=1~N)を利用して以下の検証処理を実行する。なお、以下の処理は、i=1~Nについて実行される。
返答σi(i=1~N)を受け取った検証者アルゴリズムVは、受け取った返答σi(i=1~N)を利用して以下の検証処理を実行する。なお、以下の処理は、i=1~Nについて実行される。
di=0の場合、検証者アルゴリズムVは、(ri
A,wi
B)←G1(σi)を計算する。さらに、検証者アルゴリズムVは、Fi
C←G2(wi
B)を計算する。そして、検証者アルゴリズムVは、c2,i=H2(wi
B)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、c3,i=H3(F(x+ri
A)+Fi
C(x))の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
di=1の場合、検証者アルゴリズムVは、(wi
B,zi
A)←σiとする。さらに、検証者アルゴリズムVは、Fi
C←G2(wi
B)を計算する。そして、検証者アルゴリズムVは、c1,i=H1(Fi
C(zi
A),zi
A)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、c2=H2(wi
B)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
di=2の場合、検証者アルゴリズムVは、(Fi
D,zi
A)←σiとする。そして、検証者アルゴリズムVは、c1,i=H1(Fi
D(zi
A)-y,zi
A)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c3,i=H3(Fi
D(x))の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、本手法の対話プロトコルを並列的に実行する方法について説明した。上記のように、本手法の対話プロトコルを繰り返し実行することにより、偽証が成功する確率を無視できる程度まで低減させることが可能になる。
なお、工程#1の後で(c1,1,c1,2,c1,3,…,cN,1,cN,2,cN,3)を検証者に送信する代わりに、ハッシュ値c=H(c1,1,c1,2,c1,3,…,cN,1,cN,2,cN,3)を送信するように変形してもよい。但し、返答から復元できないメッセージの存在を考慮し、このようなメッセージが返答と共に証明者から検証者へと送られるように対話プロトコルを変形する必要がある。この変形を適用すると、1パス目で送るメッセージが1つのハッシュ値cだけとなり、大幅に通信量が削減される。例えば、N回の並列的繰り返し構成の場合、送るべき情報の数を2N-1個削減することが可能になる。
(好適なパラメータの設定方法について)
さて、本実施形態に係る対話プロトコルは、受動的攻撃に対する安全性が保証されている。しかし、この対話プロトコルを並列的に繰り返し実行する上記の方法を適用した場合、能動的攻撃に対する安全性が確実に保証されていることを証明できるようにするには、以下に示すような条件が必要になる。
さて、本実施形態に係る対話プロトコルは、受動的攻撃に対する安全性が保証されている。しかし、この対話プロトコルを並列的に繰り返し実行する上記の方法を適用した場合、能動的攻撃に対する安全性が確実に保証されていることを証明できるようにするには、以下に示すような条件が必要になる。
上記の対話プロトコルは、1組の鍵ペア(公開鍵y、秘密鍵s)を用いて、「証明者がyについてy=F(s)となるsを知っていること」を検証者に検証させるためのアルゴリズムであった。そのため、検証で受理される対話を行った場合、「対話の際に証明者がsを用いた」という情報を検証者に知られてしまう可能性が否定できない。また、多変数多項式Fについて衝突困難性が保証されてない。そのため、上記の対話プロトコルを並列的に繰り返し実行する場合、能動的攻撃に対する安全性が確実に保証されていることを無条件で証明することは難しい。
そこで、本件発明者は、検証で受理される対話を行った場合においても、「対話の際に証明者がsを用いた」という情報を検証者に知られないようにする方法について検討した。そして、本件発明者は、上記の対話プロトコルを並列的に繰り返し実行する場合においても、能動的攻撃に対する安全性を保証することが可能になる方法を考案した。この方法は、公開鍵として用いる多変数多項式f1,…,fmの数mをその変数の数nよりも十分に小さな値に設定するというものである。例えば、2m-n≪1となるようにm及びnが設定される(例えば、n=160、m=80の場合2-80≪1である。)。
多次多変数方程式の求解問題に対する解答の困難性に安全性の根拠をおく方式において、秘密鍵s1と、それに対応する公開鍵pkとが与えられても、その公開鍵pkに対応する別の秘密鍵s2を生成することは難しい。そのため、公開鍵pkに対する秘密鍵sが2つ以上存在することを保証すれば、検証で受理される対話を行った場合においても、「対話の際に証明者がsを用いた」という情報を検証者に知られないようにすることが可能になる。つまり、この保証が成り立てば、対話プロトコルを並列的に繰り返し実行する場合においても、能動的攻撃に対する安全性を保証することが可能になる。
図40を参照しながら、m本のn変数多次多項式で構成される関数F:Kn→Kmについて考えると(但し、n>m)、2つ目の原像を持たない定義域の要素数は、最大で|K|m-1個しか存在しない。そのため、|K|m-nを十分に小さくすると、2つ目の原像を持たない定義域の要素が選択される確率を無視できる程度にまで小さくすることができる。つまり、n変数多次多項式f1,…,fmの数mがその変数の数nよりも十分に小さな値に設定されていれば、公開鍵pkに対して2つ以上の秘密鍵sが存在することを保証できる。その結果、検証で受理される対話を行った場合においても、「対話の際に証明者がsを用いた」という情報を検証者に知られないようにすることが可能になり、対話プロトコルを並列的に繰り返し実行する場合においても、能動的攻撃に対する安全性が保証される。
以上説明したように、n変数多次多項式f1,…,fmの数mがその変数の数nよりも小さな値(n>m;好ましくは2m-n≪1)に設定する設定条件を課すことで、対話プロトコルを並列的に繰り返し実行する場合の安全性を保証することが可能になる。
[2-4:具体例(2次多項式を利用する場合)]
次に、図7を参照しながら、多変数多項式Fとしてn変数2次多項式を利用する場合について説明する。図7は、本手法の一具体例について説明するための説明図である。
次に、図7を参照しながら、多変数多項式Fとしてn変数2次多項式を利用する場合について説明する。図7は、本手法の一具体例について説明するための説明図である。
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、環K上で定義されるm本の2次多項式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と表記し、2次多項式の組(f1(x),…,fm(x))をF(x)と表記する。但し、2次多項式fi(x)は、下記の式(8)のように表現されるものとする。
鍵生成アルゴリズムGenは、環K上で定義されるm本の2次多項式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と表記し、2次多項式の組(f1(x),…,fm(x))をF(x)と表記する。但し、2次多項式fi(x)は、下記の式(8)のように表現されるものとする。
(証明者アルゴリズムP、検証者アルゴリズムV)
次に、図7を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVにより実行される処理について説明する。
次に、図7を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVにより実行される処理について説明する。
工程#1:
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器G1に数wを適用してベクトルr∈Knと数wAを生成する。つまり、証明者アルゴリズムPは、(r,wA)←G1(w)を計算する。次いで、証明者アルゴリズムPは、擬似乱数生成器G2に数wAを適用して1次多項式の組f1 A(x),…,fm A(x)を生成する。つまり、証明者アルゴリズムPは、(f1 A,…,fm A)←G2(wA)を計算する。但し、1次多項式fi A(x)は、下記の式(9)のように表現される。また、1次多項式の組(f1 A(x),…,fm A(x))をFA(x)と表記する。
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器G1に数wを適用してベクトルr∈Knと数wAを生成する。つまり、証明者アルゴリズムPは、(r,wA)←G1(w)を計算する。次いで、証明者アルゴリズムPは、擬似乱数生成器G2に数wAを適用して1次多項式の組f1 A(x),…,fm A(x)を生成する。つまり、証明者アルゴリズムPは、(f1 A,…,fm A)←G2(wA)を計算する。但し、1次多項式fi A(x)は、下記の式(9)のように表現される。また、1次多項式の組(f1 A(x),…,fm A(x))をFA(x)と表記する。
工程#1(続き):
次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、FB(x)←F(x+r)+FA(x)を計算する。この計算は、xに関して2次多項式F(x+r)を1次多項式FA(x)によりマスクする操作に相当する。F(x+r)の中においてrに関する情報はxの1次の項にしか現れない。そのため、rに関する情報は全てFA(x)によりマスクされる。
次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、FB(x)←F(x+r)+FA(x)を計算する。この計算は、xに関して2次多項式F(x+r)を1次多項式FA(x)によりマスクする操作に相当する。F(x+r)の中においてrに関する情報はxの1次の項にしか現れない。そのため、rに関する情報は全てFA(x)によりマスクされる。
工程#1(続き):
次いで、証明者アルゴリズムPは、FA(z)及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FA(z),z)を計算する。また、証明者アルゴリズムPは、数wAのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(wA)を計算する。さらに、証明者アルゴリズムPは、多変数多項式FBのハッシュ値c3を生成する。つまり、証明者アルゴリズムPは、c3←H3(FB)を計算する。なお、上記のH1(…)、H2(…)、H3(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2,c3)は、検証者アルゴリズムVに送られる。
次いで、証明者アルゴリズムPは、FA(z)及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FA(z),z)を計算する。また、証明者アルゴリズムPは、数wAのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(wA)を計算する。さらに、証明者アルゴリズムPは、多変数多項式FBのハッシュ値c3を生成する。つまり、証明者アルゴリズムPは、c3←H3(FB)を計算する。なお、上記のH1(…)、H2(…)、H3(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2,c3)は、検証者アルゴリズムVに送られる。
工程#2:
メッセージ(c1,c2,c3)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
メッセージ(c1,c2,c3)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
工程#3:
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送る返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(wA,z)を生成する。d=2の場合、証明者アルゴリズムPは、返答σ=(FB(z),z)を生成する。工程#3で生成された返答σは、検証者アルゴリズムVに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送る返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(wA,z)を生成する。d=2の場合、証明者アルゴリズムPは、返答σ=(FB(z),z)を生成する。工程#3で生成された返答σは、検証者アルゴリズムVに送られる。
工程#4:
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
d=0の場合、検証者アルゴリズムVは、(rA,wB)←G1(σ)を計算する。さらに、検証者アルゴリズムVは、FC←G2(wB)を計算する。そして、検証者アルゴリズムVは、c2=H2(wB)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、c3=H3(F(x+rA)+FC(x))の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
d=1の場合、検証者アルゴリズムVは、(wB,zA)←σとする。さらに、検証者アルゴリズムVは、FC←G2(wB)を計算する。そして、検証者アルゴリズムVは、c1=H1(FC(zA),zA)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、c2=H2(wB)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
d=2の場合、検証者アルゴリズムVは、(FD,zA)←σとする。そして、検証者アルゴリズムVは、c1=H1(FD(zA)-y,zA))の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c3=H3(FD)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、本手法の一具体例について説明した。
[2-5:効率的なアルゴリズム]
次に、本手法に係るアルゴリズムを効率化する方法について述べる。2次多項式の組(f1(x),…,fm(x))は、下記の式(10)のように表現することができる。但し、x=(x1,…,xn)である。また、A1,…,Amは、n×n行列である。さらに、b1,…,bmはそれぞれn×1ベクトルである。
次に、本手法に係るアルゴリズムを効率化する方法について述べる。2次多項式の組(f1(x),…,fm(x))は、下記の式(10)のように表現することができる。但し、x=(x1,…,xn)である。また、A1,…,Amは、n×n行列である。さらに、b1,…,bmはそれぞれn×1ベクトルである。
この表現を用いると、多変数多項式Fは、下記の式(11)及び式(12)のように表現することができる。この表現が成り立つことは、下記の式(13)から容易に確認することができる。
このようにF(x+y)をxに依存する第1の部分と、yに依存する第2の部分と、x及びyの両方に依存する第3の部分とに分けたとき、第3の部分に対応する項Fb(x,y)は、x及びyについて双線形になる。この性質を利用すると、効率的なアルゴリズムを構築することが可能になる。
例えば、ベクトルt∈Kn、e∈Kmを用いて、多変数多項式F(x+r)のマスクに利用する多変数多項式FA(x)をFA(x)=Fb(x,t)+eと表現する。この場合、多変数多項式F(x+r)とFA(x)との和は、下記の式(14)のように表現される。
ここで、tA=r+t、eA=F(r)+eとおけば、多変数多項式FB(x)=F(x+r)+FA(x)は、ベクトルtA∈Kn、eA∈Kmにより表現することができる。そのため、FA(x)=Fb(x,t)+eに設定すれば、Kn上のベクトル及びKm上のベクトルを用いてFA及びFBを表現できるようになり、通信に必要なデータサイズを大幅に減らすことが可能になる。具体的には、数千~数万倍程度、通信効率が向上する。
なお、上記の変形により、FB(或いはFA)からrに関する情報が一切漏れることはない。例えば、eA及びtA(或いはe及びt)を与えられても、e及びt(或いはeA及びtA)を知らない限り、rの情報を一切知ることはできない。従って、上記の変形を本手法に施したとしても、零知識性は担保される。以下、図8~図10を参照しながら、本手法に係る効率的なアルゴリズムについて説明する。なお、鍵生成アルゴリズムGenの構成は変わらないため、ここでは詳細な説明を省略する。
(効率的なアルゴリズムの構成例1:図8)
まず、図8に示した効率的なアルゴリズムの構成について説明する。
まず、図8に示した効率的なアルゴリズムの構成について説明する。
工程#1:
証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器G1に数wを適用してベクトルr∈Knと数wAを生成する。つまり、証明者アルゴリズムPは、(r,wA)←G1(w)を計算する。次いで、証明者アルゴリズムPは、擬似乱数生成器G2に数wAを適用して2つのベクトルt∈Kn、e∈Kmを生成する。つまり、証明者アルゴリズムPは、(t,e)←G2(wA)を計算する。次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、tA←r+tを計算する。次いで、証明者アルゴリズムPは、eA←F(r)+eを計算する。
証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器G1に数wを適用してベクトルr∈Knと数wAを生成する。つまり、証明者アルゴリズムPは、(r,wA)←G1(w)を計算する。次いで、証明者アルゴリズムPは、擬似乱数生成器G2に数wAを適用して2つのベクトルt∈Kn、e∈Kmを生成する。つまり、証明者アルゴリズムPは、(t,e)←G2(wA)を計算する。次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、tA←r+tを計算する。次いで、証明者アルゴリズムPは、eA←F(r)+eを計算する。
工程#1(続き):
次いで、証明者アルゴリズムPは、上記の式(14)に基づいてFb(z,t)を算出し、Fb(z,t)+e及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(Fb(z,t)+e,z)を計算する。また、証明者アルゴリズムPは、数wAのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(wA)を計算する。さらに、証明者アルゴリズムPは、2つのベクトルtA及びeAのハッシュ値c3を生成する。つまり、証明者アルゴリズムPは、c3←H3(tA,eA)を計算する。なお、上記のH1(…)、H2(…)、H3(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2,c3)は、検証者アルゴリズムVに送られる。
次いで、証明者アルゴリズムPは、上記の式(14)に基づいてFb(z,t)を算出し、Fb(z,t)+e及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(Fb(z,t)+e,z)を計算する。また、証明者アルゴリズムPは、数wAのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(wA)を計算する。さらに、証明者アルゴリズムPは、2つのベクトルtA及びeAのハッシュ値c3を生成する。つまり、証明者アルゴリズムPは、c3←H3(tA,eA)を計算する。なお、上記のH1(…)、H2(…)、H3(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2,c3)は、検証者アルゴリズムVに送られる。
工程#2:
メッセージ(c1,c2,c3)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
メッセージ(c1,c2,c3)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
工程#3:
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送る返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(wA,z)を生成する。d=2の場合、証明者アルゴリズムPは、返答σ=(tA,eA,z)を生成する。工程#3で生成された返答σは、検証者アルゴリズムVに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送る返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(wA,z)を生成する。d=2の場合、証明者アルゴリズムPは、返答σ=(tA,eA,z)を生成する。工程#3で生成された返答σは、検証者アルゴリズムVに送られる。
工程#4:
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
d=0の場合、検証者アルゴリズムVは、(rA,wB)←G1(σ)を計算する。さらに、検証者アルゴリズムVは、(tB,eB)←G2(wB)を計算する。そして、検証者アルゴリズムVは、c2=H2(wB)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、c3=H3(rA+tB,F(rA)+eB)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
d=1の場合、検証者アルゴリズムVは、(wB,zA)←σとする。さらに、検証者アルゴリズムVは、(tB,eB)←G2(wB)を計算する。そして、検証者アルゴリズムVは、c1=H1(Fb(zA,tB)+eB,zA)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、c2=H2(wB)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
d=2の場合、検証者アルゴリズムVは、(tC,eC,zA)←σとする。そして、検証者アルゴリズムVは、c1=H1(F(zA)+Fb(zA,tC)+eC-y,zA)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c3=H3(tC,eC)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、効率的なアルゴリズムの構成例1について説明した。この効率的なアルゴリズムを利用することにより、通信に必要なデータサイズが大幅に削減される。また、F(x+r)の計算が必要なくなるため、計算効率も向上する。
(効率的なアルゴリズムの構成例2:図9)
次に、図9に示した効率的なアルゴリズムの構成について説明する。図9に示した構成を適用した場合も、図8に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図8に示した構成との差分について述べる。
次に、図9に示した効率的なアルゴリズムの構成について説明する。図9に示した構成を適用した場合も、図8に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図8に示した構成との差分について述べる。
図8に示したアルゴリズムの工程#3において、d=0の場合にσをwに設定しているが、d=0の場合に設定されるσは、(r,t,e)が復元できる情報であればどのような情報でもよい。例えば、図9に示すように、工程#3においてd=0の場合に設定されるσの内容を(wA,tA)にしてもよい。但し、この変形を行う場合には、工程#4において検証者アルゴリズムVが行う検証内容の一部を変形する必要がある。具体的には、工程#4においてd=0の場合に検証者アルゴリズムVが行う検証内容のうち、c3=H3(rA+tB,F(rA)+eB)の検証がc3=H3(tA,F(tA-tB)+eB)の検証に置き換えられる。
以上、効率的なアルゴリズムの構成例2について説明した。
(効率的なアルゴリズムの構成例3:図10)
次に、図10に示した効率的なアルゴリズムの構成について説明する。
次に、図10に示した効率的なアルゴリズムの構成について説明する。
工程#1:
証明者アルゴリズムPは、任意にベクトルr,t∈Kn及びe∈Kmを生成する。次いで、証明者アルゴリズムPは、rA←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、tA←r-tを計算する。次いで、証明者アルゴリズムPは、eA←F(r)-eを計算する。
証明者アルゴリズムPは、任意にベクトルr,t∈Kn及びe∈Kmを生成する。次いで、証明者アルゴリズムPは、rA←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、tA←r-tを計算する。次いで、証明者アルゴリズムPは、eA←F(r)-eを計算する。
工程#1(続き):
次いで、証明者アルゴリズムPは、c1←H1(Fb(rA,t)+e,rA)を計算する。次いで、証明者アルゴリズムPは、c2←H2(t,e)を計算する。次いで、証明者アルゴリズムPは、c3←H3(tA,eA)を計算する。なお、上記のH1(…)、H2(…)、H3(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2,c3)は、検証者アルゴリズムVに送られる。
次いで、証明者アルゴリズムPは、c1←H1(Fb(rA,t)+e,rA)を計算する。次いで、証明者アルゴリズムPは、c2←H2(t,e)を計算する。次いで、証明者アルゴリズムPは、c3←H3(tA,eA)を計算する。なお、上記のH1(…)、H2(…)、H3(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2,c3)は、検証者アルゴリズムVに送られる。
工程#2:
メッセージ(c1,c2,c3)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
メッセージ(c1,c2,c3)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
工程#3:
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送る返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=(r,tA,eA)を生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(rA,t,e)を生成する。d=2の場合、証明者アルゴリズムPは、返答σ=(rA,tA,eA)を生成する。工程#3で生成された返答σは、検証者アルゴリズムVに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送る返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=(r,tA,eA)を生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(rA,t,e)を生成する。d=2の場合、証明者アルゴリズムPは、返答σ=(rA,tA,eA)を生成する。工程#3で生成された返答σは、検証者アルゴリズムVに送られる。
工程#4:
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
d=0の場合、検証者アルゴリズムVは、c2=H2(r-tA,F(r)-eA)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c3=H3(tA,eA)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
d=1の場合、検証者アルゴリズムVは、c1=H1(Fb(rA,t)+e,rA)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c2=H2(t,e)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
d=2の場合、検証者アルゴリズムVは、c1=H1(y-F(rA)-Fb(tA,rA)-eA,rA)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c3=H3(tA,eA)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、効率的なアルゴリズムの構成例3について説明した。この効率的なアルゴリズムを利用することにより、通信に必要なデータサイズが大幅に削減される。また、F(x+r)の計算が必要なくなるため、計算効率も向上する。
(効率的なアルゴリズムの並列化:図11)
次に、図11を参照しながら、効率的なアルゴリズムを並列化する方法について説明する。図11に示した構成(以下、並列化アルゴリズム)は、上記の構成例3に係る効率的なアルゴリズムを並列化したものである。
次に、図11を参照しながら、効率的なアルゴリズムを並列化する方法について説明する。図11に示した構成(以下、並列化アルゴリズム)は、上記の構成例3に係る効率的なアルゴリズムを並列化したものである。
工程#1:
証明者アルゴリズムPは、i=1~Nについて処理(1)~処理(6)を実行する。
処理(1):証明者アルゴリズムPは、任意にベクトルri,ti∈Kn及びei∈Kmを生成する。
処理(2):証明者アルゴリズムPは、ri A←s-riを計算する。この計算は、秘密鍵sをベクトルriによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、ti A←ri-tiを計算する。
処理(3):証明者アルゴリズムPは、ei A←F(ri)-eiを計算する。
処理(4):証明者アルゴリズムPは、c1,i←H1(Fb(ri A,ti)+ei,ri A)を計算する。
処理(5):証明者アルゴリズムPは、c2,i←H2(ti,ei)を計算する。
処理(6):証明者アルゴリズムPは、c3,i←H3(ti A,ei A)を計算する。
証明者アルゴリズムPは、i=1~Nについて処理(1)~処理(6)を実行する。
処理(1):証明者アルゴリズムPは、任意にベクトルri,ti∈Kn及びei∈Kmを生成する。
処理(2):証明者アルゴリズムPは、ri A←s-riを計算する。この計算は、秘密鍵sをベクトルriによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、ti A←ri-tiを計算する。
処理(3):証明者アルゴリズムPは、ei A←F(ri)-eiを計算する。
処理(4):証明者アルゴリズムPは、c1,i←H1(Fb(ri A,ti)+ei,ri A)を計算する。
処理(5):証明者アルゴリズムPは、c2,i←H2(ti,ei)を計算する。
処理(6):証明者アルゴリズムPは、c3,i←H3(ti A,ei A)を計算する。
工程#1(続き)
i=1~Nについて上記の処理(1)~処理(6)を実行した後、証明者アルゴリズムPは、Cmt←H(c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)を計算する。なお、上記のH(…)、H1(…)、H2(…)、H3(…)は、ハッシュ関数である。工程#1で生成されたハッシュ値Cmtは、検証者アルゴリズムVに送られる。このように、メッセージ(c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)をハッシュ値に変換してから検証者アルゴリズムVに送ることで、通信量を削減することが可能になる。
i=1~Nについて上記の処理(1)~処理(6)を実行した後、証明者アルゴリズムPは、Cmt←H(c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)を計算する。なお、上記のH(…)、H1(…)、H2(…)、H3(…)は、ハッシュ関数である。工程#1で生成されたハッシュ値Cmtは、検証者アルゴリズムVに送られる。このように、メッセージ(c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)をハッシュ値に変換してから検証者アルゴリズムVに送ることで、通信量を削減することが可能になる。
工程#2:
ハッシュ値Cmtを受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1~Nのそれぞれについて、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求diに設定する。これらの要求d1,…,dNは、証明者アルゴリズムPに送られる。
ハッシュ値Cmtを受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1~Nのそれぞれについて、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求diに設定する。これらの要求d1,…,dNは、証明者アルゴリズムPに送られる。
工程#3:
要求d1,…,dNを受け取った証明者アルゴリズムPは、受け取った要求d1,…,dNのそれぞれ応じて検証者アルゴリズムVに送る返答Rsp1,…,RspNを生成する。di=0の場合、証明者アルゴリズムPは、σi=(ri,ti A,ei A)を生成する。さらに、証明者アルゴリズムPは、Rspi=(σi,c1,i)を生成する。di=1の場合、証明者アルゴリズムPは、σi=(ri A,ti,ei)を生成する。さらに、証明者アルゴリズムPは、Rspi=(σi,c3,i)を生成する。di=2の場合、証明者アルゴリズムPは、σi=(ri A,ti A,ei A)を生成する。さらに、証明者アルゴリズムPは、Rspi=(σi,c2,i)を生成する。
要求d1,…,dNを受け取った証明者アルゴリズムPは、受け取った要求d1,…,dNのそれぞれ応じて検証者アルゴリズムVに送る返答Rsp1,…,RspNを生成する。di=0の場合、証明者アルゴリズムPは、σi=(ri,ti A,ei A)を生成する。さらに、証明者アルゴリズムPは、Rspi=(σi,c1,i)を生成する。di=1の場合、証明者アルゴリズムPは、σi=(ri A,ti,ei)を生成する。さらに、証明者アルゴリズムPは、Rspi=(σi,c3,i)を生成する。di=2の場合、証明者アルゴリズムPは、σi=(ri A,ti A,ei A)を生成する。さらに、証明者アルゴリズムPは、Rspi=(σi,c2,i)を生成する。
工程#3で生成された返答Rsp1,…,RspNは、検証者アルゴリズムVに送られる。
工程#4:
返答Rsp1,…,RspNを受け取った検証者アルゴリズムVは、受け取った返答Rsp1,…,RspNを利用して以下の処理(1)~処理(3)をi=1~Nについて実行する。但し、検証者アルゴリズムVは、di=0の場合に処理(1)を実行し、di=1の場合に処理(2)を実行し、di=2の場合に処理(3)を実行する。
返答Rsp1,…,RspNを受け取った検証者アルゴリズムVは、受け取った返答Rsp1,…,RspNを利用して以下の処理(1)~処理(3)をi=1~Nについて実行する。但し、検証者アルゴリズムVは、di=0の場合に処理(1)を実行し、di=1の場合に処理(2)を実行し、di=2の場合に処理(3)を実行する。
処理(1):di=0の場合、検証者アルゴリズムVは、Rspiから(ri,ti
A,ei
A,c1,i)を取り出す。次いで、検証者アルゴリズムVは、c2,i=H2(ri-ti
A,F(ri)-ei
A)を計算する。さらに、検証者アルゴリズムVは、c3,i=H3(ti
A,ei
A)を計算する。そして、検証者アルゴリズムVは、(c1,i,c2,i,c3,i)を保持する。
処理(2):di=1の場合、検証者アルゴリズムVは、Rspiから(ri
A,ti,ei,c3,i)を取り出す。次いで、検証者アルゴリズムVは、c1,i=H1(Fb(ri
A,ti)+ei,ri
A)を計算する。さらに、検証者アルゴリズムVは、c2,i=H2(ti,ei)を計算する。そして、検証者アルゴリズムVは、(c1,i,c2,i,c3,i)を保持する。
処理(3):di=2の場合、検証者アルゴリズムVは、Rspiから(ri
A,ti
A,ei
A,c2,i)を取り出す。次いで、検証者アルゴリズムVは、c1,i=H1(y-F(ri
A)-Fb(ti
A,ri
A)-ei
A,ri
A)を計算する。さらに、検証者アルゴリズムVは、c3,i=H3(ti
A,ei
A)を計算する。そして、検証者アルゴリズムVは、(c1,i,c2,i,c3,i)を保持する。
処理(1)~処理(3)をi=1~Nについて実行した後、検証者アルゴリズムVは、Cmt=H(c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗した場合に認証失敗を示す値0を出力する。
以上、効率的なアルゴリズムの並列化について説明した。なお、図11に示した並列化アルゴリズムには、メッセージをハッシュ値に変換してから送信する工夫を盛り込んだ。この工夫により、通信効率が向上する。
[2-6:電子署名方式への変形]
ここで、本手法に係る公開鍵認証方式を電子署名方式へと変形する方法を紹介する。なお、公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させると、証明者のみが検証者を納得させられるという点において、電子署名方式のモデルと近似していることが容易に理解されよう。こうした考えに基づき、本手法に係る公開鍵認証方式を電子署名方式へと変形する方法について説明する。
ここで、本手法に係る公開鍵認証方式を電子署名方式へと変形する方法を紹介する。なお、公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させると、証明者のみが検証者を納得させられるという点において、電子署名方式のモデルと近似していることが容易に理解されよう。こうした考えに基づき、本手法に係る公開鍵認証方式を電子署名方式へと変形する方法について説明する。
(2-6-1:変形方法)
ここでは、上記の効率的なアルゴリズムの構成例3を電子署名方式のアルゴリズムに変形する方法を例に挙げて説明する。構成例3に係るアルゴリズムは、図12に示すように、おおまかに以下の4つの工程#1~工程#4で表現される。
ここでは、上記の効率的なアルゴリズムの構成例3を電子署名方式のアルゴリズムに変形する方法を例に挙げて説明する。構成例3に係るアルゴリズムは、図12に示すように、おおまかに以下の4つの工程#1~工程#4で表現される。
工程#1は、ai=(ri,ti,ei,ri
A,ti
A,ei
A,c1,i,c2,i,c3,i)を生成する処理(1)と、Cmt←H(c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)を計算する処理(2)とで構成される。工程#1で証明者アルゴリズムPにより生成されたCmtは、検証者アルゴリズムVへと送られる。
工程#2は、d1,…,dNを選択する処理で構成される。工程#2で検証者アルゴリズムVにより選択されたd1,…,dNは、証明者アルゴリズムPへと送られる。
工程#3は、d1,…,dN及びa1,…,aNを用いてRsp1,…,RspNを生成する処理で構成される。この処理をRspi←Select(di,ai)と表現する。工程#3で証明者アルゴリズムPにより生成されたRsp1,…,RspNは、検証者アルゴリズムVへと送られる。
工程#4は、d1,…,dN及びRsp1,…,RspNを用いてc1,1,c2,1,c3,1,…,c1,N,c2,N,c3,Nを再生する処理(1)と、再生したc1,1,c2,2,c3,3,…,c1,N,c2,N,c3,Nを用いてCmt=H(c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)を検証する処理(2)とで構成される。
上記の工程#1~工程#4で表現される公開鍵認証方式のアルゴリズムは、図12に示すような署名生成アルゴリズムSig及び署名検証アルゴリズムVerに変形される。
(署名生成アルゴリズムSig)
まず、署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)~処理(5)で構成される。
まず、署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)~処理(5)で構成される。
処理(1):署名生成アルゴリズムSigは、ai=(ri,ti,ei,ri
A,ti
A,ei
A,c1,i,c2,i,c3,i)を生成する。
処理(2):署名生成アルゴリズムSigは、Cmt←H(c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)を計算する。
処理(3):署名生成アルゴリズムSigは、(d1,…,dN)←H(M,Cmt)を計算する。このMは、署名を付与する文書である。
処理(4):署名生成アルゴリズムSigは、Rspi←Select(di,ai)を計算する。
処理(5):署名生成アルゴリズムSigは、(Cmt,Rsp1,…,RspN)を署名に設定する。
処理(2):署名生成アルゴリズムSigは、Cmt←H(c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)を計算する。
処理(3):署名生成アルゴリズムSigは、(d1,…,dN)←H(M,Cmt)を計算する。このMは、署名を付与する文書である。
処理(4):署名生成アルゴリズムSigは、Rspi←Select(di,ai)を計算する。
処理(5):署名生成アルゴリズムSigは、(Cmt,Rsp1,…,RspN)を署名に設定する。
(署名検証アルゴリズムVer)
次に、署名検証アルゴリズムVerの構成について述べる。署名検証アルゴリズムVerは、以下の処理(1)~処理(3)で構成される。
次に、署名検証アルゴリズムVerの構成について述べる。署名検証アルゴリズムVerは、以下の処理(1)~処理(3)で構成される。
処理(1):署名検証アルゴリズムVerは、(d1,…,dN)←H(M,Cmt)を計算する。
処理(2):署名検証アルゴリズムVerは、d1,…,dN及びRsp1,…,RspNを用いてc1,1,c2,1,c3,1,…,c1,N,c2,N,c3,Nを生成する。
処理(3):署名検証アルゴリズムVerは、再生したc1,1,c2,1,c3,1,…,c1,N,c2,N,c3,Nを用いてCmt=H(c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)を検証する。
処理(2):署名検証アルゴリズムVerは、d1,…,dN及びRsp1,…,RspNを用いてc1,1,c2,1,c3,1,…,c1,N,c2,N,c3,Nを生成する。
処理(3):署名検証アルゴリズムVerは、再生したc1,1,c2,1,c3,1,…,c1,N,c2,N,c3,Nを用いてCmt=H(c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)を検証する。
以上説明したように、公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させることで、公開鍵認証方式のアルゴリズムを電子署名方式のアルゴリズムに変形することができる。
(2-6-2:電子署名アルゴリズムの効率化)
さて、図13に示した署名生成アルゴリズムSigの構成に注目すると、処理(2)及び処理(3)でハッシュ値の計算を行っていることに気づくであろう。また、署名検証アルゴリズムVerの構成に注目すると、処理(1)において、署名生成アルゴリズムSigの処理(3)と同じハッシュ値の計算を行っていることに気づくであろう。これらの処理に注目し、図13に示すように署名生成アルゴリズムSig及び署名検証アルゴリズムVerの構成を改良することで、さらに計算効率を向上させることができる。
さて、図13に示した署名生成アルゴリズムSigの構成に注目すると、処理(2)及び処理(3)でハッシュ値の計算を行っていることに気づくであろう。また、署名検証アルゴリズムVerの構成に注目すると、処理(1)において、署名生成アルゴリズムSigの処理(3)と同じハッシュ値の計算を行っていることに気づくであろう。これらの処理に注目し、図13に示すように署名生成アルゴリズムSig及び署名検証アルゴリズムVerの構成を改良することで、さらに計算効率を向上させることができる。
(署名生成アルゴリズムSig)
まず、改良後の署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)~処理(4)で構成される。
まず、改良後の署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)~処理(4)で構成される。
処理(1):署名生成アルゴリズムSigは、ai=(ri,ti,ei,ri
A,ti
A,ei
A,c1,i,c2,i,c3,i)を生成する。
処理(2):署名生成アルゴリズムSigは、(d1,…,dN)←H(M,c1,1,c2,2,c3,3,…,c1,N,c2,N,c3,N)を計算する。このMは、署名を付与する文書である。
処理(3):署名生成アルゴリズムSigは、Rspi←Select(di,ai)を計算する。
処理(4):署名生成アルゴリズムSigは、(d1,…,dN,Rsp1,…,RspN)を署名に設定する。
処理(2):署名生成アルゴリズムSigは、(d1,…,dN)←H(M,c1,1,c2,2,c3,3,…,c1,N,c2,N,c3,N)を計算する。このMは、署名を付与する文書である。
処理(3):署名生成アルゴリズムSigは、Rspi←Select(di,ai)を計算する。
処理(4):署名生成アルゴリズムSigは、(d1,…,dN,Rsp1,…,RspN)を署名に設定する。
(署名検証アルゴリズムVer)
次に、改良後の署名検証アルゴリズムVerの構成について述べる。署名検証アルゴリズムVerは、以下の処理(1)及び処理(2)で構成される。
次に、改良後の署名検証アルゴリズムVerの構成について述べる。署名検証アルゴリズムVerは、以下の処理(1)及び処理(2)で構成される。
処理(1):署名検証アルゴリズムVerは、d1,…,dN及びRsp1,…,RspNを用いてc1,1,c2,2,c3,3,…,c1,N,c2,N,c3,Nを生成する。
処理(2):署名検証アルゴリズムVerは、再生したc1,1,c2,1,c3,1,…,c1,N,c2,N,c3,Nを用いて(d1,…,dN)=H(M,c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)を検証する。
処理(2):署名検証アルゴリズムVerは、再生したc1,1,c2,1,c3,1,…,c1,N,c2,N,c3,Nを用いて(d1,…,dN)=H(M,c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)を検証する。
上記のように署名生成アルゴリズムSig及び署名検証アルゴリズムVerの構成を改良することにより、各アルゴリズムにおいてハッシュ値の計算が1回ずつ削減される。その結果、さらに計算効率を向上させることができる。
[2-7:多次多変数連立方程式の形式]
これまで説明してきたように、本手法は、多次多変数連立方程式の求解問題に対する解答の困難性に安全性の根拠をおく方式である。また、本手法は、複雑な多次多変数連立方程式を利用可能な点に特徴がある。ここまでの説明においては多次多変数連立方程式の形式に特別な限定を行ってこなかったが、例えば、十分に困難性が補償されている暗号要素技術を表現に含む多次多変数連立方程式を利用することが好ましい。以下、本手法に適用可能な多次多変数連立方程式の具体例を紹介する。
これまで説明してきたように、本手法は、多次多変数連立方程式の求解問題に対する解答の困難性に安全性の根拠をおく方式である。また、本手法は、複雑な多次多変数連立方程式を利用可能な点に特徴がある。ここまでの説明においては多次多変数連立方程式の形式に特別な限定を行ってこなかったが、例えば、十分に困難性が補償されている暗号要素技術を表現に含む多次多変数連立方程式を利用することが好ましい。以下、本手法に適用可能な多次多変数連立方程式の具体例を紹介する。
(2-7-1:共通鍵ブロック暗号に関する形式)
AES、DES、KATANなどの共通鍵ブロック暗号技術は、よく解析され、安全性及び信頼性が高い要素技術である。これらの共通鍵ブロック暗号は、共通鍵ブロック暗号の鍵、平文、暗号文を変数とする多次多変数連立方程式により表現することができる。この多次多変数連立方程式において平文と暗号文を表現する変数に値を与えると、この多次多変数連立方程式は、鍵を表現する変数だけを変数に持つ方程式になる。
AES、DES、KATANなどの共通鍵ブロック暗号技術は、よく解析され、安全性及び信頼性が高い要素技術である。これらの共通鍵ブロック暗号は、共通鍵ブロック暗号の鍵、平文、暗号文を変数とする多次多変数連立方程式により表現することができる。この多次多変数連立方程式において平文と暗号文を表現する変数に値を与えると、この多次多変数連立方程式は、鍵を表現する変数だけを変数に持つ方程式になる。
このような共通鍵ブロック暗号を表現した多次多変数連立方程式の解を求めることは、平文と暗号文から共通鍵ブロック暗号の鍵を復元することに相当する。つまり、その共通鍵ブロック暗号の安全性が維持されている限りにおいて、その共通鍵ブロック暗号を表現した多次多変数連立方程式の求解困難性は担保される。そのため、ある共通鍵ブロック暗号方式を表現する多次多変数連立方程式を本手法に適用するならば、共通鍵ブロック暗号方式の安全性と同等の安全性を具備した公開鍵認証方式が実現される。
但し、共通鍵ブロック暗号を、鍵、平文、暗号文を変数とする多次多変数連立方程式で表現した場合、多項式の次数が大きくなるため、連立方程式を表現するためのデータサイズが増大してしまう。そこで、鍵、平文、暗号文に加え、それぞれのラウンドにおける内部状態を表現するための変数を導入する。この変数を導入すれば、共通鍵ブロック暗号を表現する多次多変数連立方程式の次数を小さくすることができる。例えば、平文と暗号文を表現する変数に適当な値を代入し、鍵と内部状態を表現するための変数に関する連立方程式を導入する。このような方法を採用することにより、変数の数は増加するが、次数が下がるため、連立方程式の表現はコンパクトになる。
(2-7-2:ハッシュ関数に関する形式)
同様に、SHA-1、SHA-256などのハッシュ関数に関する多次多変数連立方程式を本手法に適用することも可能である。これらのハッシュ関数は、ハッシュ関数の入力となるメッセージと出力となるハッシュ値を変数とする多次多変数連立方程式で表現することができる。この多次多変数連立方程式において、ハッシュ値を表現する変数に適当な値を与えると、対応する入力を表現した変数に関する多次多変数連立方程式が得られる。
同様に、SHA-1、SHA-256などのハッシュ関数に関する多次多変数連立方程式を本手法に適用することも可能である。これらのハッシュ関数は、ハッシュ関数の入力となるメッセージと出力となるハッシュ値を変数とする多次多変数連立方程式で表現することができる。この多次多変数連立方程式において、ハッシュ値を表現する変数に適当な値を与えると、対応する入力を表現した変数に関する多次多変数連立方程式が得られる。
このような多次多変数連立方程式の解を求めることは、ハッシュ値から、元になるメッセージの値を復元することに相当する。つまり、そのハッシュ関数の安全性(一方向性)が維持されている限りにおいて、そのハッシュ関数を表現した多次多変数連立方程式の求解問題に対する解答の困難性は担保される。そのため、あるハッシュ関数を表現した多次多変数連立方程式を本手法に適用すれば、ハッシュ関数の安全性に基づく公開鍵認証方式が実現される。
但し、入力メッセージ及びハッシュ値を変数とする多次多変数連立方程式でハッシュ関数を表現した場合には多項式の次数が大きくなるため、連立方程式を表現するためのデータサイズが増大してしまう。そこで、入力メッセージとハッシュ値に加え、内部状態を表現するための変数を導入する。この変数を導入すれば、ハッシュ関数を表現する多次多変数連立方程式の次数を小さくすることができる。例えば、ハッシュ値を表現する変数に適用な値を代入し、入力メッセージ及び内部状態を表現するための変数に関する連立方程式を導入する。このような方法を採用することにより、変数の数は増加するが、次数が下がるため、連立方程式の表現はコンパクトになる。
(2-7-3:ストリーム暗号に関する形式)
同様に、Triviumなどのストリーム暗号に関する多次多変数連立方程式を本手法に適用することも可能である。これらのストリーム暗号は、ストリーム暗号の初期の内部状態を表現する変数及び出力されるストリームを表現する変数に関する多次多変数連立方程式で表現することが可能である。この場合、出力ストリームを表現する変数に適当な値を与えると、対応する初期の内部状態を表現するための変数に関する多次多変数連立方程式が得られる。
同様に、Triviumなどのストリーム暗号に関する多次多変数連立方程式を本手法に適用することも可能である。これらのストリーム暗号は、ストリーム暗号の初期の内部状態を表現する変数及び出力されるストリームを表現する変数に関する多次多変数連立方程式で表現することが可能である。この場合、出力ストリームを表現する変数に適当な値を与えると、対応する初期の内部状態を表現するための変数に関する多次多変数連立方程式が得られる。
このような多次多変数連立方程式の解を求めることは、出力されたストリームの値から、元になった初期の内部状態を表現する変数を復元することに相当する。つまり、そのストリーム暗号の安全性が確保されている限りにおいて、そのストリーム暗号を表現した多次多変数連立方程式の求解問題に対する解答の困難性は担保されている。そのため、あるストリーム暗号を表現した多次多変数連立方程式を本手法に適用すれば、ストリーム暗号の安全性に基づく公開鍵認証方式が実現される。
但し、初期の内部状態と出力ストリームを変数とする多次多変数連立方程式でストリーム暗号を表現した場合、多項式の次数が大きくなり、連立方程式を表現するサイズが増大してしまう。そこで、初期の内部状態と出力ストリームに加え、それぞれのラウンドにおける内部状態を表現するための変数を導入する。この変数を導入すれば、ストリーム暗号を表現するための多次多変数連立方程式の次数を小さくすることが可能になる。例えば、出力ストリームを表現する変数に適当な値を代入し、初期の内部状態とラウンドにおける内部状態を表現するための変数に関する連立方程式を導入する。このような方法を採用することにより、変数の数は増加するが、次数が下がるため、連立方程式の表現はコンパクトになる。
以上、本手法に適用可能な多次多変数連立方程式の具体例について説明した。
[2-8:直列・並列ハイブリッドアルゴリズム]
偽証が成功する確率を無視できる程度にまで小さくするために、対話プロトコルを複数回実行する必要性については既に説明した通りである。また、対話プロトコルを複数回実行する方法として、直列的な方法と並列的な方法とを紹介した。特に、並列的な方法については、具体的な並列化アルゴリズムを示して説明した。ここでは、直列的な方法と並列的な方法とを組み合わせたハイブリッドタイプのアルゴリズムを紹介する。
偽証が成功する確率を無視できる程度にまで小さくするために、対話プロトコルを複数回実行する必要性については既に説明した通りである。また、対話プロトコルを複数回実行する方法として、直列的な方法と並列的な方法とを紹介した。特に、並列的な方法については、具体的な並列化アルゴリズムを示して説明した。ここでは、直列的な方法と並列的な方法とを組み合わせたハイブリッドタイプのアルゴリズムを紹介する。
(ハイブリッド構成1)
図14を参照しながら、ハイブリッドタイプのアルゴリズム(以下、並直列アルゴリズム)について説明する。図14には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び並直列アルゴリズムを示した。
図14を参照しながら、ハイブリッドタイプのアルゴリズム(以下、並直列アルゴリズム)について説明する。図14には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び並直列アルゴリズムを示した。
基本構成では、1パス目にメッセージ(c1,c2,c3)が証明者から検証者へと送られる。2パス目では、検証者から証明者へと要求dが送られる。3パス目では、証明者から検証者へと返答σが送られる。
上記の基本構成を並列化した場合、1パス目では、N回分のメッセージ(c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)が証明者から検証者へと送られる。2パス目では、検証者から証明者へとN回分の要求(d1,…,dN)が送られる。3パス目では、証明者から検証者へとN回分の返答(σ1,…,σN)が送られる。本手法に係る並列化アルゴリズムは、受動的攻撃に対する安全性が保証される。また、対話の回数が3回で済む。さらに、1パス目で送信されるN回分のメッセージを1つのハッシュ値に纏めることにより、通信効率を向上させることができる。
一方、上記の基本構成を直列化した場合、1パス目では、1回分のメッセージ(c1,1,c2,1,c3,1)が証明者から検証者へと送られる。2パス目では、検証者から証明者へと1回分の要求d1が送られる。3パス目では、証明者から検証者へと1回分の返答σ1が送られる。4パス目では、1回分のメッセージ(c1,2,c2,2,c3,2)が証明者から検証者へと送られる。5パス目では、検証者から証明者へと1回分の要求d2が送られる。6パス目では、証明者から検証者へと1回分の返答σ2が送られる。同様にして、証明者から検証者へと返答σNが送られるまで対話が繰り返し実行される。直列化アルゴリズムは、能動的攻撃に対する安全性が保証される。また、偽証確率が確実に削減されることを証明することが可能である。
さて、並直列アルゴリズムは、並列化アルゴリズムの性質と直列化アルゴリズムの性質とを併せ持つアルゴリズムである。図14に示した並直列アルゴリズムでは、1パス目で、N回分のメッセージ(c1,1,c2,1,c3,1,…,c1,N,c2,N,c3,N)が証明者から検証者へと送られる。2パス目では、検証者から証明者へと1回分の要求d1が送られる。3パス目では、証明者から検証者へと1回分の返答σ1が送られる。その後、証明者と検証者との間で要求d2,…,dN及び返答σ2,…,σNのやり取りが行われる。
本手法に基づく並直列アルゴリズムの場合、受動的攻撃に対する安全性が保証される。また、対話の回数が2N+1回で済む。さらに、1パス目で送信されるN回分のメッセージを1つのハッシュ値に纏めることにより、通信効率を向上させることができる。
(ハイブリッド構成2)
図15を参照しながら、他のハイブリッドタイプのアルゴリズム(以下、直並列アルゴリズム)について説明する。図15には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び直並列アルゴリズムを示した。なお、基本構成、直列化アルゴリズム、並列化アルゴリズムの構成及び性質については、上記の通りである。
図15を参照しながら、他のハイブリッドタイプのアルゴリズム(以下、直並列アルゴリズム)について説明する。図15には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び直並列アルゴリズムを示した。なお、基本構成、直列化アルゴリズム、並列化アルゴリズムの構成及び性質については、上記の通りである。
図15に示した直並列アルゴリズムは、並列化アルゴリズムの性質と直列化アルゴリズムの性質とを併せ持つアルゴリズムである。図15に示した直並列アルゴリズムでは、1パス目で、1回分のメッセージ(c1,1,c2,1,c3,1)が証明者から検証者へと送られる。2パス目では、検証者から証明者へと1回分の要求d1が送られる。その後、証明者と検証者との間でメッセージ(c1,2,c2,2,c3,2),…,(c1,N,c2,N,c3,N)及び要求d2,…,dNのやり取りが行われる。要求dNが検証者から証明者へと送られた後、証明者から検証者へとN回分の返答σ1,…,σNが送られる。
本手法に基づく直並列アルゴリズムの場合、能動的攻撃に対する安全性が保証される。また、対話の回数が2N+1回で済む。
以上、本手法に基づくハイブリッドタイプのアルゴリズムについて説明した。
以上、本技術の第1実施形態について説明した。
<3:第2実施形態>
次に、本技術の第2実施形態について説明する。これまで3パスの公開鍵認証方式について説明してきた。本実施形態では、5パスの公開鍵認証方式(以下、本手法)について説明する。本手法は、検証者の検証パターンを2q通りにすることにより、公開鍵認証方式の健全性を確保する方式である。
次に、本技術の第2実施形態について説明する。これまで3パスの公開鍵認証方式について説明してきた。本実施形態では、5パスの公開鍵認証方式(以下、本手法)について説明する。本手法は、検証者の検証パターンを2q通りにすることにより、公開鍵認証方式の健全性を確保する方式である。
なお、上記の第1実施形態に係る3パスの公開鍵認証方式は、対話プロトコル1回当たりの偽証確率が2/3であったが、本手法では、後述するように対話プロトコル1回当たりの偽証確率は1/2+1/qとなる。但し、qは、利用する環の位数である。従って、環の位数が十分に大きい場合、図39に示すように、本手法の方が1回当たりの偽証確率を低減することが可能になり、少ない対話プロトコルの実行回数で、偽証確率を十分に小さくすることができる。
5パスの公開鍵認証方式に係る対話プロトコルは、3パスの公開鍵認証方式に係る対話プロトコルよりも効率が低いように思われるかもしれない。しかし、5パスの公開鍵認証方式においては、環の位数を十分に大きくとった場合、対話プロトコル1回当たりの偽証確率が1/2に近くなるため、同じセキュリティレベルを達成するために必要な対話プロトコルの実行回数が少なくて済む。
例えば、偽証確率を1/2n以下にしたい場合、3パスの公開鍵認証方式においては、n/(log3-1)=1.701n回以上、対話プロトコルを実行する必要がある。一方、5パスの公開鍵認証方式においては、n/(1-log(1+1/q))回以上、対話プロトコルを実行する必要がある。図39に示すように、例えば、q=24にすれば、同じセキュリティレベルを実現するのに必要な通信量は、3パスの公開鍵認証方式に比べ、5パスの公開鍵認証方式の方が少なくなる。
[3-1:公開鍵認証方式のアルゴリズム]
以下、図16を参照しながら、5パスの公開鍵認証方式(本手法)に係るアルゴリズム構成について説明する。図16は、本手法に係るアルゴリズムの構成について説明するための説明図である。
以下、図16を参照しながら、5パスの公開鍵認証方式(本手法)に係るアルゴリズム構成について説明する。図16は、本手法に係るアルゴリズムの構成について説明するための説明図である。
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、環K上で定義されるm本の多変数多次多項式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)と表記する。
鍵生成アルゴリズムGenは、環K上で定義されるm本の多変数多次多項式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)と表記する。
(証明者アルゴリズムP、検証者アルゴリズムV)
次に、図16を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVが実行する処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図16に示したフローチャートに沿って説明を進める。
次に、図16を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVが実行する処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図16に示したフローチャートに沿って説明を進める。
工程#1:
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器Gに数wを適用してベクトルr∈Knと、n変数多項式の組FA(x)=(f1 A(x),…,fm A(x))を生成する。つまり、証明者アルゴリズムPは、(r,FA)←G(w)を計算する。次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器Gに数wを適用してベクトルr∈Knと、n変数多項式の組FA(x)=(f1 A(x),…,fm A(x))を生成する。つまり、証明者アルゴリズムPは、(r,FA)←G(w)を計算する。次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。
工程#1(続き):
次いで、証明者アルゴリズムPは、FA(z)及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FA(z),z)を計算する。また、証明者アルゴリズムPは、数wのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(w)を計算する。なお、上記のH1(…)、H2(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2)は、検証者に送られる。このとき、sに関する情報、rに関する情報、zに関する情報が検証者に一切漏れない点に注意されたい。
次いで、証明者アルゴリズムPは、FA(z)及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FA(z),z)を計算する。また、証明者アルゴリズムPは、数wのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(w)を計算する。なお、上記のH1(…)、H2(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2)は、検証者に送られる。このとき、sに関する情報、rに関する情報、zに関する情報が検証者に一切漏れない点に注意されたい。
工程#2:
検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数αを選択し、選択した数αを証明者アルゴリズムPに送る。
検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数αを選択し、選択した数αを証明者アルゴリズムPに送る。
工程#3:
数αを受け取った証明者アルゴリズムPは、FB(x)←αF(x+r)+FA(x)を計算する。この計算は、xに関して多変数多項式F(x+r)を多変数多項式FA(x)によりマスクする操作に相当する。工程#3で生成された多変数多項式FBは、検証者アルゴリズムVに送られる。このとき、d=0の場合にはzに関する情報が検証者に一切漏れておらず、d=1の場合にはrに関する情報が検証者に一切漏れない点に注意されたい。
数αを受け取った証明者アルゴリズムPは、FB(x)←αF(x+r)+FA(x)を計算する。この計算は、xに関して多変数多項式F(x+r)を多変数多項式FA(x)によりマスクする操作に相当する。工程#3で生成された多変数多項式FBは、検証者アルゴリズムVに送られる。このとき、d=0の場合にはzに関する情報が検証者に一切漏れておらず、d=1の場合にはrに関する情報が検証者に一切漏れない点に注意されたい。
工程#4:
多変数多項式FBを受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
多変数多項式FBを受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
工程#5:
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送り返す返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=zを生成する。工程#5で生成された返答σは、検証者アルゴリズムVに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送り返す返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=zを生成する。工程#5で生成された返答σは、検証者アルゴリズムVに送られる。
工程#6:
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
d=0の場合、検証者アルゴリズムVは、(rA,FC)←G(σ)を計算する。そして、検証者アルゴリズムVは、c2=H2(σ)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、FB(x)=αF(x+rA)+FC(x)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
d=1の場合、検証者アルゴリズムVは、zA←σを計算する。そして、検証者アルゴリズムVは、c1=H1(FC(zA)-αy,zA)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、本手法に係る各アルゴリズムの構成について説明した。
(本手法における健全性について)
本手法の健全性は、証明者アルゴリズムPが(c1,c2)、及び、検証者アルゴリズムVが選択する2通りの(α1,α2)について、要求d=0及び1に正しく回答した場合に、その回答内容から下記の式(15)~式(17)を満たすF1 D、F2 D、FC、rA、zAを計算できるということから保証されている。
本手法の健全性は、証明者アルゴリズムPが(c1,c2)、及び、検証者アルゴリズムVが選択する2通りの(α1,α2)について、要求d=0及び1に正しく回答した場合に、その回答内容から下記の式(15)~式(17)を満たすF1 D、F2 D、FC、rA、zAを計算できるということから保証されている。
本手法の健全性が保証されることにより、多次多変数連立方程式の求解問題を解かない限りにおいて1/2+1/qより高い確率で偽証することは不可能であることが保証される。つまり、検証者の要求d=0及び1の全てに正しく回答するためには、偽証者が上記の式(15)~式(17)を満たすF1
D、F2
D、FC、rA、zAを計算できる必要がある。言い換えると、偽証者はF(s)=yを満たすsを計算できる必要がある。従って、多次多変数連立方程式の求解問題を解かない限り、偽証者は、1/2+1/qより高い確率で偽証を成功させることができないのである。なお、上記の対話プロトコルを十分に多くの回数実行することにより、偽証の成功確率を無視できるほど小さくすることができる。
(変形例)
上記の鍵生成アルゴリズムGenは、y←F(s)を計算し、公開鍵を(F,y)に設定している。しかし、鍵生成アルゴリズムGenは、(y1,…,ym)←F(s)として、(f1 *(x),…,fm *(x))←(f1(x)-y1,…,fm(x)-ym)を計算し、公開鍵を(f1 *,…,fm *)に設定するように構成されていてもよい。このように変形すると、証明者アルゴリズムPと検証者アルゴリズムVとの間でy=0として対話プロトコルを実行することが可能になる。
上記の鍵生成アルゴリズムGenは、y←F(s)を計算し、公開鍵を(F,y)に設定している。しかし、鍵生成アルゴリズムGenは、(y1,…,ym)←F(s)として、(f1 *(x),…,fm *(x))←(f1(x)-y1,…,fm(x)-ym)を計算し、公開鍵を(f1 *,…,fm *)に設定するように構成されていてもよい。このように変形すると、証明者アルゴリズムPと検証者アルゴリズムVとの間でy=0として対話プロトコルを実行することが可能になる。
また、証明者アルゴリズムPは、FB(z)のハッシュ値と、zのハッシュ値とを別々に計算し、それぞれをメッセージとして検証者に送るようにしてもよい。
また、上記の証明者アルゴリズムPは、数wに擬似乱数生成器G1を適用してベクトルr及び数wAを生成していた。さらに、上記の証明者アルゴリズムPは、数wAを擬似乱数生成器G2に適用して多変数多項式FA(x)を生成していた。しかし、証明者アルゴリズムPは、G1を恒等写像とし、最初からw=(r,FA)を算出するように構成されていてもよい。この場合、数wをG1に適用する必要はない。G2についても同様である。
以上、本手法の変形例について説明した。
[3-2:拡張アルゴリズム]
次に、図17を参照しながら、本手法を拡張した公開鍵認証方式(以下、拡張手法)のアルゴリズムについて説明する。図17は、拡張手法に基づく対話プロトコルの流れについて説明するための説明図である。
次に、図17を参照しながら、本手法を拡張した公開鍵認証方式(以下、拡張手法)のアルゴリズムについて説明する。図17は、拡張手法に基づく対話プロトコルの流れについて説明するための説明図である。
ここで説明する拡張手法は、3パス目に送信する多変数多項式FBを1つのハッシュ値c3に変換して検証者に送る方式である。このように拡張することで、対話プロトコルの中で表現サイズの大きい多変数多項式FBを検証者アルゴリズムVに送る際の通信量を半減することが可能になり、やり取りすべき平均的なデータサイズを削減することができる。以下、拡張方式における各アルゴリズムの構成について詳細に説明する。
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、環K上で定義されるm本の多変数多次多項式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)と表記する。
鍵生成アルゴリズムGenは、環K上で定義されるm本の多変数多次多項式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)と表記する。
(証明者アルゴリズムP、検証者アルゴリズムV)
次に、図17を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVが実行する処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図17に示したフローチャートに沿って説明を進める。
次に、図17を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVが実行する処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図17に示したフローチャートに沿って説明を進める。
工程#1:
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器Gに数wを適用してベクトルr∈Kn及び多変数多項式FA(x)を生成する。つまり、証明者アルゴリズムPは、(r,FA)←G(w)を計算する。次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器Gに数wを適用してベクトルr∈Kn及び多変数多項式FA(x)を生成する。つまり、証明者アルゴリズムPは、(r,FA)←G(w)を計算する。次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。
工程#1(続き):
次いで、証明者アルゴリズムPは、FA(z)及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FA(z),z)を計算する。また、証明者アルゴリズムPは、数wのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(w)を計算する。なお、上記のH1(…)、H2(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2)は、検証者アルゴリズムVに送られる。
次いで、証明者アルゴリズムPは、FA(z)及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FA(z),z)を計算する。また、証明者アルゴリズムPは、数wのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(w)を計算する。なお、上記のH1(…)、H2(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2)は、検証者アルゴリズムVに送られる。
工程#2:
メッセージ(c1,c2)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数αを選択し、選択した数αを証明者アルゴリズムPに送る。
メッセージ(c1,c2)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数αを選択し、選択した数αを証明者アルゴリズムPに送る。
工程#3:
数αを受け取った証明者アルゴリズムPは、FB(x)←αF(x+r)+FA(x)を計算する。この計算は、xについて多変数多項式F(x+r)を多変数多項式FA(x)によりマスクする操作に相当する。さらに、証明者アルゴリズムPは、多変数多項式の組FBのハッシュ値c3を生成する。つまり、証明者アルゴリズムPは、c3←H3(FB(x))を計算する。なお、上記のH3(…)は、ハッシュ関数である。工程#3で生成されたメッセージc3は、検証者に送られる。
数αを受け取った証明者アルゴリズムPは、FB(x)←αF(x+r)+FA(x)を計算する。この計算は、xについて多変数多項式F(x+r)を多変数多項式FA(x)によりマスクする操作に相当する。さらに、証明者アルゴリズムPは、多変数多項式の組FBのハッシュ値c3を生成する。つまり、証明者アルゴリズムPは、c3←H3(FB(x))を計算する。なお、上記のH3(…)は、ハッシュ関数である。工程#3で生成されたメッセージc3は、検証者に送られる。
工程#4:
メッセージc3を受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
メッセージc3を受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
工程#5:
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送り返す返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(z,FB)を生成する。工程#5で生成された返答σは、検証者アルゴリズムVに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送り返す返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(z,FB)を生成する。工程#5で生成された返答σは、検証者アルゴリズムVに送られる。
工程#6:
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
d=0の場合、検証者アルゴリズムVは、(rA,FC)←G(σ)を計算する。そして、検証者アルゴリズムVは、c2=H2(σ)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、c3=H3(αF(x+rA)+FC(x))の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
d=1の場合、検証者アルゴリズムVは、(zA,FC)←σを計算する。そして、検証者アルゴリズムVは、c1=H1(FC(zA)-αy,zA)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、c2=H2(FC(x))の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、拡張方式の対話プロトコルの中で各アルゴリズムが実行する処理について説明した。このように拡張することで、対話プロトコルの中で表現サイズの大きい多変数多項式FBを検証者アルゴリズムVに送る際の通信量を半減することが可能になり、やり取りすべき平均的なデータサイズを削減することができる。
[3-3:並列化アルゴリズム]
さて、先に述べた通り、本手法又は拡張手法に係る対話プロトコルを適用すれば、偽証が成功する確率を(1/2+1/q)以下に抑制することができる。従って、この対話プロトコルを2回実行すれば、偽証が成功する確率を(1/2+1/q)2以下に抑制することができる。さらに、この対話プロトコルをN回実行すると、偽証が成功する確率は(1/2+1/q)Nとなり、Nを十分に大きい数(例えば、N=80)にすれば、偽証が成功する確率は無視できる程度に小さくなる。
さて、先に述べた通り、本手法又は拡張手法に係る対話プロトコルを適用すれば、偽証が成功する確率を(1/2+1/q)以下に抑制することができる。従って、この対話プロトコルを2回実行すれば、偽証が成功する確率を(1/2+1/q)2以下に抑制することができる。さらに、この対話プロトコルをN回実行すると、偽証が成功する確率は(1/2+1/q)Nとなり、Nを十分に大きい数(例えば、N=80)にすれば、偽証が成功する確率は無視できる程度に小さくなる。
対話プロトコルを複数回実行する方法としては、例えば、メッセージ、要求、返答のやり取りを逐次的に複数回繰り返す直列的な方法と、1回分のやり取りで複数回分のメッセージ、要求、返答のやり取りを行う並列的な方法とが考えられる。ここでは、本手法に係る対話プロトコルを並列的な方法に係る対話プロトコル(以下、並列化アルゴリズム)に拡張する方法について説明する。例えば、並列化アルゴリズムは図18のようになる。以下、図18を参照しながら、並列化アルゴリズムの内容について説明する。
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、環K上で定義されるm本の多変数多次多項式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)と表記する。
鍵生成アルゴリズムGenは、環K上で定義されるm本の多変数多次多項式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)と表記する。
(証明者アルゴリズムP、検証者アルゴリズムV)
次に、図18を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。
次に、図18を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。
上記の対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図18に示したフローチャートに沿って説明を進める。
工程#1:
まず、証明者アルゴリズムPは、i=1~Nについて、以下の処理(1)~処理(5)を実行する。
処理(1):証明者アルゴリズムPは、任意に数wiを選択する。
処理(2):証明者アルゴリズムPは、擬似乱数生成器Gに数wiを適用してベクトルri∈Kn及び多項式の組Fi A(x)を生成する。つまり、証明者アルゴリズムPは、(ri,Fi A)←G(wi)を計算する。
処理(3):証明者アルゴリズムPは、zi←s-riを計算する。この計算は、秘密鍵sをベクトルriによりマスクする操作に相当する。
処理(4):証明者アルゴリズムPは、Fi A(zi)及びziのハッシュ値c1,iを生成する。つまり、証明者アルゴリズムPは、c1,i←H1(Fi A(zi),zi)を計算する。
処理(5):証明者アルゴリズムPは、数wi Aのハッシュ値c2,iを生成する。つまり、証明者アルゴリズムPは、c2,i←H2(wi A)を計算する。
まず、証明者アルゴリズムPは、i=1~Nについて、以下の処理(1)~処理(5)を実行する。
処理(1):証明者アルゴリズムPは、任意に数wiを選択する。
処理(2):証明者アルゴリズムPは、擬似乱数生成器Gに数wiを適用してベクトルri∈Kn及び多項式の組Fi A(x)を生成する。つまり、証明者アルゴリズムPは、(ri,Fi A)←G(wi)を計算する。
処理(3):証明者アルゴリズムPは、zi←s-riを計算する。この計算は、秘密鍵sをベクトルriによりマスクする操作に相当する。
処理(4):証明者アルゴリズムPは、Fi A(zi)及びziのハッシュ値c1,iを生成する。つまり、証明者アルゴリズムPは、c1,i←H1(Fi A(zi),zi)を計算する。
処理(5):証明者アルゴリズムPは、数wi Aのハッシュ値c2,iを生成する。つまり、証明者アルゴリズムPは、c2,i←H2(wi A)を計算する。
i=1~Nについて、上記の処理(1)~処理(5)が実行された後、工程#1で生成されたメッセージ(c1,i,c2,i)(i=1~N)は、検証者アルゴリズムVに送られる。
工程#2:
メッセージ(c1,i,c2,i)(i=1~N)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムにN個の数α1,…,αNを選択する。そして、検証者アルゴリズムVは、選択した数α1,…,αNを証明者アルゴリズムPに送る。
メッセージ(c1,i,c2,i)(i=1~N)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムにN個の数α1,…,αNを選択する。そして、検証者アルゴリズムVは、選択した数α1,…,αNを証明者アルゴリズムPに送る。
工程#3:
数α1,…,αNを受け取った証明者アルゴリズムPは、i=1~Nについて、Fi B(x)←αiF(x+ri)+Fi A(x)を計算する。この計算は、xに関して多変数多項式F(x+ri)を多変数多項式Fi A(x)によりマスクする操作に相当する。そして、証明者アルゴリズムPは、多変数多項式F1 B,…,FN Bを検証者アルゴリズムVに送る。
数α1,…,αNを受け取った証明者アルゴリズムPは、i=1~Nについて、Fi B(x)←αiF(x+ri)+Fi A(x)を計算する。この計算は、xに関して多変数多項式F(x+ri)を多変数多項式Fi A(x)によりマスクする操作に相当する。そして、証明者アルゴリズムPは、多変数多項式F1 B,…,FN Bを検証者アルゴリズムVに送る。
工程#4:
多変数多項式F1 B,…,FN Bを受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1~Nのそれぞれについて、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求diに設定する。この要求diは証明者アルゴリズムPに送られる。
多変数多項式F1 B,…,FN Bを受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1~Nのそれぞれについて、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求diに設定する。この要求diは証明者アルゴリズムPに送られる。
工程#5:
要求di(i=1~N)を受け取った証明者アルゴリズムPは、受け取った要求diに応じて検証者アルゴリズムVに送り返す返答σiを生成する。ここで、証明者アルゴリズムPは、i=1~Nについて、以下の処理(1)及び処理(2)を実行する。
処理(1):di=0の場合、証明者アルゴリズムPは、返答σi=wiを生成する。
処理(2):di=1の場合、証明者アルゴリズムPは、返答σi=ziを生成する。
上記の処理(1)及び処理(2)の処理が実行された後、返答σi(i=1~N)は、検証者アルゴリズムVに送られる。
要求di(i=1~N)を受け取った証明者アルゴリズムPは、受け取った要求diに応じて検証者アルゴリズムVに送り返す返答σiを生成する。ここで、証明者アルゴリズムPは、i=1~Nについて、以下の処理(1)及び処理(2)を実行する。
処理(1):di=0の場合、証明者アルゴリズムPは、返答σi=wiを生成する。
処理(2):di=1の場合、証明者アルゴリズムPは、返答σi=ziを生成する。
上記の処理(1)及び処理(2)の処理が実行された後、返答σi(i=1~N)は、検証者アルゴリズムVに送られる。
工程#6:
返答σi(i=1~N)を受け取った検証者アルゴリズムVは、受け取った返答σi(i=1~N)を利用して以下の検証処理を実行する。なお、以下の処理は、i=1~Nについて実行される。
返答σi(i=1~N)を受け取った検証者アルゴリズムVは、受け取った返答σi(i=1~N)を利用して以下の検証処理を実行する。なお、以下の処理は、i=1~Nについて実行される。
di=0の場合、検証者アルゴリズムVは、(ri
A,Fi
C)←G(σi)を計算する。そして、検証者アルゴリズムVは、c2,i=H2(σi)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、Fi
B(x)=αiF(x+ri
A)+Fi
C(x)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
di=1の場合、検証者アルゴリズムVは、zi
A←σiを計算する。そして、検証者アルゴリズムVは、c1,i=H1(Fi
C(zi
A)-αiy,zi)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、本手法の対話プロトコルを並列的に実行する方法について説明した。上記のように、本手法の対話プロトコルを繰り返し実行することにより、偽証が成功する確率を無視できる程度まで低減させることが可能になる。なお、拡張方式についても同様にして並列化することが可能である。
(変形例)
上記の工程#1の後、メッセージ(c1,1,c1,2,…,cN,1,cN,2)を検証者アルゴリズムVに送信する代わりに、メッセージをハッシュ値H(c1,1,c1,2,…,cN,1,cN,2)にまとめて送信するように対話プロトコルの構成を変形してもよい。この変形を適用すると、1パス目で送るメッセージが1つのハッシュ値だけとなり、大幅に通信量を削減することが可能になる。但し、証明者アルゴリズムPから送られる情報を用いても検証者アルゴリズムVにより復元できないメッセージが存在するため、返答が送られる際に、そのメッセージも送られるようにする必要がある。なお、この構成によると、N回の並列的繰り返し構成の場合、送るべき情報の数をN-1個削減することが可能になる。
上記の工程#1の後、メッセージ(c1,1,c1,2,…,cN,1,cN,2)を検証者アルゴリズムVに送信する代わりに、メッセージをハッシュ値H(c1,1,c1,2,…,cN,1,cN,2)にまとめて送信するように対話プロトコルの構成を変形してもよい。この変形を適用すると、1パス目で送るメッセージが1つのハッシュ値だけとなり、大幅に通信量を削減することが可能になる。但し、証明者アルゴリズムPから送られる情報を用いても検証者アルゴリズムVにより復元できないメッセージが存在するため、返答が送られる際に、そのメッセージも送られるようにする必要がある。なお、この構成によると、N回の並列的繰り返し構成の場合、送るべき情報の数をN-1個削減することが可能になる。
(拡張方式に係る並列化アルゴリズムについて)
ここで、図19を参照しながら、拡張方式に係る並列化アルゴリズムの構成について説明する。なお、鍵生成アルゴリズムGenの構成については本手法に係る並列化アルゴリズムと同じであるため、詳細な説明を省略する。
ここで、図19を参照しながら、拡張方式に係る並列化アルゴリズムの構成について説明する。なお、鍵生成アルゴリズムGenの構成については本手法に係る並列化アルゴリズムと同じであるため、詳細な説明を省略する。
工程#1:
まず、証明者アルゴリズムPは、i=1~Nについて、以下の処理(1)~処理(5)を実行する。
処理(1):証明者アルゴリズムPは、任意に数wiを選択する。
処理(2):証明者アルゴリズムPは、擬似乱数生成器Gに数wiを適用してベクトルri∈Kn及び多変数多項式の組Fi A(x)を生成する。つまり、証明者アルゴリズムPは、(ri,Fi A)←G(wi)を計算する。
処理(3):証明者アルゴリズムPは、zi←s-riを計算する。この計算は、秘密鍵sをベクトルriによりマスクする操作に相当する。
処理(4):証明者アルゴリズムPは、Fi A(zi)及びziのハッシュ値c1,iを生成する。つまり、証明者アルゴリズムPは、c1,i←H1(Fi A(zi),zi)を計算する。
処理(5):証明者アルゴリズムPは、数wiのハッシュ値c2,iを生成する。つまり、証明者アルゴリズムPは、c2,i←H2(wi)を計算する。
まず、証明者アルゴリズムPは、i=1~Nについて、以下の処理(1)~処理(5)を実行する。
処理(1):証明者アルゴリズムPは、任意に数wiを選択する。
処理(2):証明者アルゴリズムPは、擬似乱数生成器Gに数wiを適用してベクトルri∈Kn及び多変数多項式の組Fi A(x)を生成する。つまり、証明者アルゴリズムPは、(ri,Fi A)←G(wi)を計算する。
処理(3):証明者アルゴリズムPは、zi←s-riを計算する。この計算は、秘密鍵sをベクトルriによりマスクする操作に相当する。
処理(4):証明者アルゴリズムPは、Fi A(zi)及びziのハッシュ値c1,iを生成する。つまり、証明者アルゴリズムPは、c1,i←H1(Fi A(zi),zi)を計算する。
処理(5):証明者アルゴリズムPは、数wiのハッシュ値c2,iを生成する。つまり、証明者アルゴリズムPは、c2,i←H2(wi)を計算する。
i=1~Nについて、上記の処理(1)~処理(5)が実行された後、工程#1で生成されたメッセージ(c1,i,c2,i)(i=1~N)は、検証者アルゴリズムVに送られる。
工程#2:
メッセージ(c1,i,c2,i)(i=1~N)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムにN個の数α1,…,αNを選択する。そして、検証者アルゴリズムVは、選択した数α1,…,αNを証明者に送る。
メッセージ(c1,i,c2,i)(i=1~N)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムにN個の数α1,…,αNを選択する。そして、検証者アルゴリズムVは、選択した数α1,…,αNを証明者に送る。
工程#3:
数α1,…,αNを受け取った証明者アルゴリズムPは、i=1~Nについて、Fi B(x)←αiF(x+ri)+Fi A(x)を計算する。この計算は、xに関して多変数多項式F(x+ri)を多変数多項式Fi A(x)によりマスクする操作に相当する。次いで、証明者アルゴリズムPは、多変数多項式F1 B,…,FN Bのハッシュ値c3を生成する。つまり、証明者アルゴリズムPは、c3←H3(F1 B,…,FN B)を計算する。なお、上記のH3(…)は、ハッシュ関数である。工程#3で生成されたメッセージc3は、検証者アルゴリズムVに送られる。
数α1,…,αNを受け取った証明者アルゴリズムPは、i=1~Nについて、Fi B(x)←αiF(x+ri)+Fi A(x)を計算する。この計算は、xに関して多変数多項式F(x+ri)を多変数多項式Fi A(x)によりマスクする操作に相当する。次いで、証明者アルゴリズムPは、多変数多項式F1 B,…,FN Bのハッシュ値c3を生成する。つまり、証明者アルゴリズムPは、c3←H3(F1 B,…,FN B)を計算する。なお、上記のH3(…)は、ハッシュ関数である。工程#3で生成されたメッセージc3は、検証者アルゴリズムVに送られる。
工程#4:
メッセージc3を受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1~Nのそれぞれについて、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求diに設定する。この要求diは証明者アルゴリズムPに送られる。
メッセージc3を受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1~Nのそれぞれについて、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求diに設定する。この要求diは証明者アルゴリズムPに送られる。
工程#5:
要求di(i=1~N)を受け取った証明者アルゴリズムPは、受け取った要求diに応じて検証者アルゴリズムVに送り返す返答σiを生成する。ここで、証明者アルゴリズムPは、i=1~Nについて、以下の処理(1)及び処理(2)を実行する。
処理1:di=0の場合、証明者アルゴリズムPは、返答σi=wiを生成する。
処理2:di=1の場合、証明者アルゴリズムPは、返答σi=(zi,Fi B)を生成する。
上記の処理(1)及び処理(2)の処理が実行された後、返答σi(i=1~N)は、検証者アルゴリズムVに送られる。
要求di(i=1~N)を受け取った証明者アルゴリズムPは、受け取った要求diに応じて検証者アルゴリズムVに送り返す返答σiを生成する。ここで、証明者アルゴリズムPは、i=1~Nについて、以下の処理(1)及び処理(2)を実行する。
処理1:di=0の場合、証明者アルゴリズムPは、返答σi=wiを生成する。
処理2:di=1の場合、証明者アルゴリズムPは、返答σi=(zi,Fi B)を生成する。
上記の処理(1)及び処理(2)の処理が実行された後、返答σi(i=1~N)は、検証者アルゴリズムVに送られる。
工程#6:
返答σi(i=1~N)を受け取った検証者アルゴリズムVは、受け取った返答σi(i=1~N)を利用して以下の検証処理を実行する。なお、以下の処理は、i=1~Nについて実行される。
返答σi(i=1~N)を受け取った検証者アルゴリズムVは、受け取った返答σi(i=1~N)を利用して以下の検証処理を実行する。なお、以下の処理は、i=1~Nについて実行される。
di=0の場合、検証者アルゴリズムVは、(ri
A,Fi
C)←G(σi)を計算する。さらに、検証者アルゴリズムVは、Fi
D←αiF(x+ri
A)+Fi
C(x)を計算する。そして、検証者アルゴリズムVは、c2,i=H2(σi)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、c3=H3(F1
D,…,FN
D)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
di=1の場合、検証者アルゴリズムVは、(zi
A,Fi
D)←σiとする。そして、検証者アルゴリズムVは、c1,i=H1(Fi
D(zi
A)-αiy,zi
A)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、c3=H3(F1
D,…,FN
D)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、拡張方式に係る並列化アルゴリズムの構成について説明した。
(好適なパラメータの設定方法について)
さて、上記の第1実施形態に係る対話プロトコルと同様、本実施形態に係る対話プロトコルは、受動的攻撃に対する安全性レベルを保証している。しかし、この対話プロトコルを並列的に繰り返し実行する上記の方法を適用した場合、能動的攻撃に対する安全性レベルが確実に保証されているということを証明するには、以下で説明するような条件が必要になる。
さて、上記の第1実施形態に係る対話プロトコルと同様、本実施形態に係る対話プロトコルは、受動的攻撃に対する安全性レベルを保証している。しかし、この対話プロトコルを並列的に繰り返し実行する上記の方法を適用した場合、能動的攻撃に対する安全性レベルが確実に保証されているということを証明するには、以下で説明するような条件が必要になる。
上記の対話プロトコルは、1組の鍵ペア(公開鍵y、秘密鍵s)を用い、秘密鍵sの情報を検証者に一切漏らさず、「証明者がy=F(s)となるsを知っていること」を対話を通じて証明者が検証者に証明するというものである。そのため、検証で受理される対話を行った場合、「対話の際に証明者がsを用いた」という情報を検証者に知られてしまう可能性が否定できない。また、多変数多項式Fには衝突困難性が保証されてない。そのため、上記の対話プロトコルを並列的に繰り返し実行する場合、能動的攻撃に対する安全性が確実に保証されているということを無条件で証明することは難しい。
そこで、本件発明者は、検証で受理される対話を行った場合においても、「対話の際に証明者がsを用いた」という情報を検証者に知られないようにする方法について検討した。そして、本件発明者は、上記の対話プロトコルを並列的に繰り返し実行する場合でも、能動的攻撃に対する安全性が確実に保証されていることを証明できるようにする方法を考案した。この方法は、公開鍵として用いるn変数多次多項式f1,…,fmの本数mを変数の数nよりも十分に小さな値に設定するという設定条件を課す方法である。例えば、2m-n≪1となるようにm及びnが設定される(例えば、n=160、m=80の場合2-80≪1である。)。
上記のような多次多変数方程式の求解問題に対する解答の困難性に安全性の根拠をおく方式において、秘密鍵s1と、それに対応する公開鍵pkとが与えられても、その公開鍵pkに対応する別の秘密鍵s2を生成することは難しい。そのため、公開鍵pkに対する秘密鍵sが2つ以上存在することを保証すれば、検証で受理される対話を行った場合においても、「対話の際に証明者がsを用いた」という情報を検証者に知られないようにすることが可能になる。つまり、この保証が可能になれば、対話プロトコルを並列的に繰り返し実行する場合においても、能動的攻撃に対する安全性を保証することが可能になる。
図40を参照しながら、m本のn変数多次多項式で構成される関数F:Kn→Kmについて考えると(但し、n>m)、2つ目の原像を持たない定義域の要素数は、最大で|K|m-1個しか存在しない。そのため、|K|m-nを十分に小さくすると、2つ目の原像を持たない定義域の要素が選択される確率を無視できる程度まで小さくすることができる。つまり、n変数多次多項式f1,…,fmの数mがその変数の数nよりも十分に小さな値に設定されていれば、公開鍵pkに対して2つ以上の秘密鍵sが存在することを保証できる。その結果、検証で受理される対話を行った場合においても、「対話の際に証明者がsを用いた」という情報を検証者に知られないようにすることが可能になり、対話プロトコルを並列的に繰り返し実行する場合においても、能動的攻撃に対する安全性が保証される。
以上説明したように、n変数多次多項式f1,…,fmの数mがその変数の数nよりも小さな値(n>m;好ましくは2m-n≪1)に設定する設定条件を課すことで、対話プロトコルを並列的に繰り返し実行する場合の安全性を保証することが可能になる。
[3-4:具体例(2次多項式を利用する場合)]
次に、図20を参照しながら、多変数多項式Fとしてn変数2次多項式を利用する場合について説明する。図20は、本手法の一具体例について説明するための説明図である。
次に、図20を参照しながら、多変数多項式Fとしてn変数2次多項式を利用する場合について説明する。図20は、本手法の一具体例について説明するための説明図である。
(鍵生成アルゴリズムGen)
鍵生成アルゴリズムGenは、環K上で定義されるm本の2次多項式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と表記し、2次多項式の組(f1(x),…,fm(x))をF(x)と表記する。
鍵生成アルゴリズムGenは、環K上で定義されるm本の2次多項式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と表記し、2次多項式の組(f1(x),…,fm(x))をF(x)と表記する。
(証明者アルゴリズムP、検証者アルゴリズムV)
次に、図20を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVにより実行される処理について説明する。
次に、図20を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVにより実行される処理について説明する。
工程#1:
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器Gに数wを適用してベクトルr∈Kn、及び多変数多項式の組FA(x)=(f1 A(x),…,fm A(x))を生成する。つまり、証明者アルゴリズムPは、(r,FA)←G(w)を計算する。次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。但し、2次多項式fi A(x)は、下記の式(18)のように表現される。
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器Gに数wを適用してベクトルr∈Kn、及び多変数多項式の組FA(x)=(f1 A(x),…,fm A(x))を生成する。つまり、証明者アルゴリズムPは、(r,FA)←G(w)を計算する。次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。但し、2次多項式fi A(x)は、下記の式(18)のように表現される。
工程#1(続き):
次いで、証明者アルゴリズムPは、FA(z)及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FA(z),z)を計算する。また、証明者アルゴリズムPは、数wのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(w)を計算する。なお、上記のH1(…)、H2(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2)は、検証者アルゴリズムVに送られる。
次いで、証明者アルゴリズムPは、FA(z)及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FA(z),z)を計算する。また、証明者アルゴリズムPは、数wのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(w)を計算する。なお、上記のH1(…)、H2(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2)は、検証者アルゴリズムVに送られる。
工程#2:
メッセージ(c1,c2)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数αを選択し、選択した数αを証明者アルゴリズムPに送る。
メッセージ(c1,c2)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数αを選択し、選択した数αを証明者アルゴリズムPに送る。
工程#3:
数αを受け取った証明者アルゴリズムPは、FB(x)←αF(x+r)+FA(x)を計算する。この計算は、xに関して多変数多項式F(x+r)を多変数多項式FA(x)によりマスクする操作に相当する。工程#3で生成された多変数多項式FBは、検証者アルゴリズムVに送られる。
数αを受け取った証明者アルゴリズムPは、FB(x)←αF(x+r)+FA(x)を計算する。この計算は、xに関して多変数多項式F(x+r)を多変数多項式FA(x)によりマスクする操作に相当する。工程#3で生成された多変数多項式FBは、検証者アルゴリズムVに送られる。
工程#4:
多変数多項式FBを受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
多変数多項式FBを受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
工程#5:
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送り返す返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=zを生成する。工程#5で生成された返答σは、検証者アルゴリズムVに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送り返す返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=zを生成する。工程#5で生成された返答σは、検証者アルゴリズムVに送られる。
工程#6:
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
d=0の場合、検証者アルゴリズムVは、(rA,FC)←G(σ)を計算する。そして、検証者アルゴリズムVは、c2=H2(σ)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、FB(x)=αF(x+rA)+FC(x)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
d=1の場合、検証者アルゴリズムVは、zA←σとする。そして、検証者アルゴリズムVは、c1=H1(FB(zA)-αy,zA)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、本手法の一具体例について説明した。
[3-5:効率的なアルゴリズム]
次に、本手法に係るアルゴリズムを効率化する方法について述べる。上記の第1実施形態において考察した効率化方法と同様、2つのベクトルt∈Kn、e∈Kmを用いて、多変数多項式F(x+r)をマスクするために用いた多変数多項式FA(x)をFA(x)=Fb(x、t)+eのように表現する。この表現を用いると、多変数多項式F(x+r)について、下記の式(19)で表現される関係が得られる。
次に、本手法に係るアルゴリズムを効率化する方法について述べる。上記の第1実施形態において考察した効率化方法と同様、2つのベクトルt∈Kn、e∈Kmを用いて、多変数多項式F(x+r)をマスクするために用いた多変数多項式FA(x)をFA(x)=Fb(x、t)+eのように表現する。この表現を用いると、多変数多項式F(x+r)について、下記の式(19)で表現される関係が得られる。
そのため、tA=αr+t,eA=αF(r)+eとすれば、マスク後の多変数多項式FB(x)=αF(x+r)+FA(x)も、2つのベクトルtA∈Kn、eA∈Kmにより表現することができる。これらの理由から、FA(x)=Fb(x,t)+eと設定すれば、Kn上のベクトル及びKm上のベクトルを用いてFA及びFBを表現できるようになり、通信に必要なデータサイズを大幅に減らすことが可能になる。具体的には、数千~数万倍程度、通信コストが削減される。
また、上記の変形により、FB(或いはFA)からrに関する情報が一切漏れることはない。例えば、eA及びtA(或いはe及びt)を与えられても、e及びt(或いはeA及びtA)を知らない限り、rの情報を一切知ることはできない。従って、上記の変形を施したとしても、零知識性は担保される。以下、図21~図27を参照しながら、本手法に係る効率的なアルゴリズムについて説明する。なお、鍵生成アルゴリズムGenの構成は変わらないため、ここでは詳細な説明を省略する。
(効率的なアルゴリズムの構成例1:図21)
まず、図21に示した効率的なアルゴリズムの構成について説明する。
まず、図21に示した効率的なアルゴリズムの構成について説明する。
工程#1:
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器Gに数wを適用してベクトルr∈Kn、t∈Kn、e∈Kmを生成する。つまり、証明者アルゴリズムPは、(r,t,e)←G(w)を計算する。次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器Gに数wを適用してベクトルr∈Kn、t∈Kn、e∈Kmを生成する。つまり、証明者アルゴリズムPは、(r,t,e)←G(w)を計算する。次いで、証明者アルゴリズムPは、z←s-rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。
工程#1(続き):
次いで、証明者アルゴリズムPは、Fb(z,t)+e及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(Fb(z,t)+e,z)を計算する。また、証明者アルゴリズムPは、数wのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(w)を計算する。なお、上記のH1(…)、H2(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2)は、検証者アルゴリズムVに送られる。
次いで、証明者アルゴリズムPは、Fb(z,t)+e及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(Fb(z,t)+e,z)を計算する。また、証明者アルゴリズムPは、数wのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(w)を計算する。なお、上記のH1(…)、H2(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2)は、検証者アルゴリズムVに送られる。
工程#2:
メッセージ(c1,c2)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数αを選択し、選択した数αを証明者アルゴリズムPに送る。
メッセージ(c1,c2)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数αを選択し、選択した数αを証明者アルゴリズムPに送る。
工程#3:
数αを受け取った証明者アルゴリズムPは、tA←αr+tを計算する。さらに、証明者アルゴリズムPは、eA←αF(r)+eを計算する。そして、証明者アルゴリズムPは、tA及びeAを検証者アルゴリズムVに送る。
数αを受け取った証明者アルゴリズムPは、tA←αr+tを計算する。さらに、証明者アルゴリズムPは、eA←αF(r)+eを計算する。そして、証明者アルゴリズムPは、tA及びeAを検証者アルゴリズムVに送る。
工程#4:
tA及びeAを受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
tA及びeAを受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
工程#5:
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送り返す返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=zを生成する。工程#5で生成された返答σは、検証者アルゴリズムVに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送り返す返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=zを生成する。工程#5で生成された返答σは、検証者アルゴリズムVに送られる。
工程#6:
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
d=0の場合、検証者アルゴリズムVは、(rA,tB,eB)←G(σ)を計算する。そして、検証者アルゴリズムVは、c2=H2(σ)の等号が成り立つか否かを検証する。また、検証者アルゴリズムVは、tA=αrA+tBの等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、eA=αF(rA)+eBの等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
d=1の場合、検証者アルゴリズムVは、zA←σを実行する。そして、検証者アルゴリズムVは、c1=H1(α(F(zA)-y)+Fb(zA,tA)+eA,zA)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、効率的なアルゴリズムの構成例1について説明した。この効率的なアルゴリズムを利用することにより、通信に必要なデータサイズが大幅に削減される。また、F(x+r)の計算が必要なくなるため、計算効率も向上する。
(効率的なアルゴリズムの構成例2:図22)
次に、図22に示した効率的なアルゴリズムの構成について説明する。図22に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図20に示した構成との差分について述べる。
次に、図22に示した効率的なアルゴリズムの構成について説明する。図22に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図20に示した構成との差分について述べる。
図20に示したアルゴリズムの工程#5において、d=0の場合にσをwに設定しているが、d=0の場合に設定されるσは、(tA,eB)に併せて用いることで(r,t,e)が復元できるような情報であればどのような情報でもよい。例えば、図22に示すように、工程#5においてd=0の場合に設定されるσの内容をrにしてもよい。但し、この変形を行う場合には、工程#1における計算c2←H2(w)をc2←H2(r,t,e)に変形する必要がある。また、工程#6においてd=0の場合に検証者アルゴリズムVにより実行される検証内容がc2=H2(r,tA-αr,eA-αF(r))の検証に置き換えられる。
以上、効率的なアルゴリズムの構成例2について説明した。
(効率的なアルゴリズムの構成例3:図23)
次に、図23に示した効率的なアルゴリズムの構成について説明する。図23に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図22に示した構成との差分について述べる。
次に、図23に示した効率的なアルゴリズムの構成について説明する。図23に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図22に示した構成との差分について述べる。
図22に示したアルゴリズムの工程#3において、tA←αr+tという計算を行っているが、この計算を図23に示すようにtA←α(r+t)という計算に変形してもよい。但し、この変形を行う場合には、工程#6においてd=0の場合に検証者アルゴリズムVにより実行される検証内容がc2=H2(r,α-1tA-r,eA-αF(r))の検証に置き換えられる。
以上、効率的なアルゴリズムの構成例3について説明した。
(効率的なアルゴリズムの構成例4:図24)
次に、図24に示した効率的なアルゴリズムの構成について説明する。図24に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図22に示した構成との差分について述べる。
次に、図24に示した効率的なアルゴリズムの構成について説明する。図24に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図22に示した構成との差分について述べる。
図22に示したアルゴリズムの工程#3において、eA←αF(r)+eという計算を行っているが、この計算を図24に示すようにeA←α(F(r)+e)という計算に変形してもよい。但し、この変形を行う場合には、工程#6においてd=0の場合に検証者アルゴリズムVにより実行される検証内容がc2=H2(r,tA-αr,eA-α-1eA-F(r))の検証に置き換えられる。
以上、効率的なアルゴリズムの構成例4について説明した。
(効率的なアルゴリズムの構成例5:図25)
次に、図25に示した効率的なアルゴリズムの構成について説明する。図25に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図22に示した構成との差分について述べる。
次に、図25に示した効率的なアルゴリズムの構成について説明する。図25に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図22に示した構成との差分について述べる。
図22に示したアルゴリズムの工程#5において、d=0の場合にσをrに設定しているが、d=0の場合に設定されるσは、(tA,eB)に併せて用いることで(r,t,e)が復元できるような情報であればどのような情報でもよい。例えば、図25に示すように、工程#5においてd=0の場合に設定されるσの内容をtにしてもよい。但し、この変形を行う場合には、工程#2においてαがα∈RK\{0}から選ばれるようにする。また、工程#6においてd=0の場合に検証者アルゴリズムVにより実行される検証内容がc2=H2(α-1(tA-t),t,eA-αF(α-1(tA-t)))の検証に置き換えられる。
以上、効率的なアルゴリズムの構成例5について説明した。
(効率的なアルゴリズムの構成例6:図26)
次に、図26に示した効率的なアルゴリズムの構成について説明する。図26に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図25に示した構成との差分について述べる。
次に、図26に示した効率的なアルゴリズムの構成について説明する。図26に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図25に示した構成との差分について述べる。
図25に示したアルゴリズムの工程#3において、tA←αr+tという計算を行っているが、この計算を図26に示すようにtA←α(r+t)という計算に変形してもよい。但し、この変形を行う場合には、工程#6においてd=0の場合に検証者アルゴリズムVにより実行される検証内容がc2=H2(α-1tA-t,t,eA-αF(α-1tA-t))の検証に置き換えられる。
以上、効率的なアルゴリズムの構成例6について説明した。
(効率的なアルゴリズムの構成例7:図27)
次に、図27に示した効率的なアルゴリズムの構成について説明する。図27に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図25に示した構成との差分について述べる。
次に、図27に示した効率的なアルゴリズムの構成について説明する。図27に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図25に示した構成との差分について述べる。
図25に示したアルゴリズムの工程#3において、eA←αF(r)+eという計算を行っているが、この計算を図27に示すようにeA←α(F(r)+e)という計算に変形してもよい。但し、この変形を行う場合には、工程#6においてd=0の場合に検証者アルゴリズムVにより実行される検証内容がc2=H2(α-1(tA-t),t,α-1eA-αF(α-1(tA-t)))の検証に置き換えられる。
以上、効率的なアルゴリズムの構成例7について説明した。
(効率的なアルゴリズムの並列化:図29)
次に、図29を参照しながら、効率的なアルゴリズムを並列化する方法について説明する。図29に示した構成(以下、並列化アルゴリズム)は、図28に示した効率的なアルゴリズムを並列化したものである。なお、図28に示した効率的なアルゴリズムは、図22に示した効率的なアルゴリズムと実質的に同じ構成を有するアルゴリズムである。以下、図29に示したフローチャートに沿って説明を進める。
次に、図29を参照しながら、効率的なアルゴリズムを並列化する方法について説明する。図29に示した構成(以下、並列化アルゴリズム)は、図28に示した効率的なアルゴリズムを並列化したものである。なお、図28に示した効率的なアルゴリズムは、図22に示した効率的なアルゴリズムと実質的に同じ構成を有するアルゴリズムである。以下、図29に示したフローチャートに沿って説明を進める。
工程#1:
証明者アルゴリズムPは、i=1~Nについて処理(1)~処理(4)を実行する。
処理(1):証明者アルゴリズムPは、任意にベクトルri,ti∈Kn及びei∈Kmを生成する。
処理(2):証明者アルゴリズムPは、ri A←s-riを計算する。この計算は、秘密鍵sをベクトルriによりマスクする操作に相当する。
処理(3):証明者アルゴリズムPは、c1,i←H1(ri,ti,ei)を計算する。
処理(4):証明者アルゴリズムPは、c2,i←H2(ri A,Fb(ri A,ti)+ei)を計算する。
工程#1で生成されたメッセージ(c1,1,c2,1,…,c1,N,c2,N)は、検証者アルゴリズムVに送られる。
証明者アルゴリズムPは、i=1~Nについて処理(1)~処理(4)を実行する。
処理(1):証明者アルゴリズムPは、任意にベクトルri,ti∈Kn及びei∈Kmを生成する。
処理(2):証明者アルゴリズムPは、ri A←s-riを計算する。この計算は、秘密鍵sをベクトルriによりマスクする操作に相当する。
処理(3):証明者アルゴリズムPは、c1,i←H1(ri,ti,ei)を計算する。
処理(4):証明者アルゴリズムPは、c2,i←H2(ri A,Fb(ri A,ti)+ei)を計算する。
工程#1で生成されたメッセージ(c1,1,c2,1,…,c1,N,c2,N)は、検証者アルゴリズムVに送られる。
工程#2:
メッセージ(c1,1,c2,1,…,c1,N,c2,N)を受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、q通り存在する環Kの元からランダムに1つの数αiを選択し、選択した数αiを証明者アルゴリズムPに送る。
メッセージ(c1,1,c2,1,…,c1,N,c2,N)を受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、q通り存在する環Kの元からランダムに1つの数αiを選択し、選択した数αiを証明者アルゴリズムPに送る。
工程#3:
数αiを受け取った証明者アルゴリズムPは、i=1~Nのそれぞれについて、ti A←αiri-tiを計算する。さらに、証明者アルゴリズムPは、i=1~Nのそれぞれについて、ei A←αiF(ri)-eiを計算する。そして、証明者アルゴリズムPは、t1 A,…,tN A及びe1 A,…,eN Aを検証者アルゴリズムVに送る。
数αiを受け取った証明者アルゴリズムPは、i=1~Nのそれぞれについて、ti A←αiri-tiを計算する。さらに、証明者アルゴリズムPは、i=1~Nのそれぞれについて、ei A←αiF(ri)-eiを計算する。そして、証明者アルゴリズムPは、t1 A,…,tN A及びe1 A,…,eN Aを検証者アルゴリズムVに送る。
工程#4:
t1 A,…,tN A及びe1 A,…,eN Aを受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求diに設定する。この要求di(i=1~N)は証明者アルゴリズムPに送られる。
t1 A,…,tN A及びe1 A,…,eN Aを受け取った検証者アルゴリズムVは、i=1~Nのそれぞれについて、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求diに設定する。この要求di(i=1~N)は証明者アルゴリズムPに送られる。
工程#5:
要求di(i=1~N)を受け取った証明者アルゴリズムPは、i=1~Nについて、受け取った要求diに応じて検証者アルゴリズムVに送り返す返答σiを生成する。di=0の場合、証明者アルゴリズムPは、返答σi=riを生成する。di=1の場合、証明者アルゴリズムPは、返答σi=ri Aを生成する。工程#5で生成された返答σiは、検証者アルゴリズムVに送られる。
要求di(i=1~N)を受け取った証明者アルゴリズムPは、i=1~Nについて、受け取った要求diに応じて検証者アルゴリズムVに送り返す返答σiを生成する。di=0の場合、証明者アルゴリズムPは、返答σi=riを生成する。di=1の場合、証明者アルゴリズムPは、返答σi=ri Aを生成する。工程#5で生成された返答σiは、検証者アルゴリズムVに送られる。
工程#6:
返答σi(i=1~N)を受け取った検証者アルゴリズムVは、受け取った返答σi(i=1~N)を利用して以下の検証処理を実行する。
返答σi(i=1~N)を受け取った検証者アルゴリズムVは、受け取った返答σi(i=1~N)を利用して以下の検証処理を実行する。
di=0の場合、検証者アルゴリズムVは、ri←σiを実行する。そして、検証者アルゴリズムVは、c1,i=H1(ri,αiri-ti
A,αiF(ri)-ei
A)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
di=1の場合、検証者アルゴリズムVは、ri
A←σiを実行する。そして、検証者アルゴリズムVは、c2,i=H2(ri
A,αi(y-F(ri
A))-Fb(ti
A,ri
A)-ei
A)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、効率的なアルゴリズムの並列化について説明した。
(並列化アルゴリズムの効率化:図30)
図29に示した並列化アルゴリズムは、図30に示すように効率化することができる。図30に示すように、この並列化アルゴリズムは、工程#1において、メッセージ(c1,1,c2,1,…,c1,N,c2,N)をハッシュ値cに変換し、そのハッシュ値cを1パス目で証明者アルゴリズムPから検証者アルゴリズムVへと送るように構成されている。また、この並列化アルゴリズムは、工程#5において、di=0の場合に返答σi=(ri,c2,i)を生成し、di=1の場合に返答σi=(ri A,c1,i)を生成するように構成されている。さらに、この並列化アルゴリズムは、工程#6において、次のような処理を実行するように構成されている。
図29に示した並列化アルゴリズムは、図30に示すように効率化することができる。図30に示すように、この並列化アルゴリズムは、工程#1において、メッセージ(c1,1,c2,1,…,c1,N,c2,N)をハッシュ値cに変換し、そのハッシュ値cを1パス目で証明者アルゴリズムPから検証者アルゴリズムVへと送るように構成されている。また、この並列化アルゴリズムは、工程#5において、di=0の場合に返答σi=(ri,c2,i)を生成し、di=1の場合に返答σi=(ri A,c1,i)を生成するように構成されている。さらに、この並列化アルゴリズムは、工程#6において、次のような処理を実行するように構成されている。
工程#6:
まず、検証者アルゴリズムVは、i=1~Nについて、処理(1)及び処理(2)を実行する。但し、実際には、di=0の場合に処理(1)が実行され、di=1の場合に処理(2)が実行される。
処理(1):di=0の場合、検証者アルゴリズムVは、(ri,c2,i)←σiを実行する。さらに、検証者アルゴリズムVは、c1,i=H1(ri,αiri-ti A,αiF(ri)-ei A)を計算する。そして、検証者アルゴリズムVは、(c1,i,c2,i)を保持する。
処理(2):di=1の場合、検証者アルゴリズムVは、(ri A,c1,i)←σiを実行する。さらに、検証者アルゴリズムVは、c2,i=H2(ri A,αi(y-F(ri A))-Fb(ti A,ri A)-ei A)を計算する。そして、検証者アルゴリズムVは、(c1,i,c2,i)を保持する。
i=1~Nについて、上記の処理(1)及び処理(2)を実行した後、検証者アルゴリズムVは、c=H(c1,1,c2,1,…,c1,N,c2,N)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
まず、検証者アルゴリズムVは、i=1~Nについて、処理(1)及び処理(2)を実行する。但し、実際には、di=0の場合に処理(1)が実行され、di=1の場合に処理(2)が実行される。
処理(1):di=0の場合、検証者アルゴリズムVは、(ri,c2,i)←σiを実行する。さらに、検証者アルゴリズムVは、c1,i=H1(ri,αiri-ti A,αiF(ri)-ei A)を計算する。そして、検証者アルゴリズムVは、(c1,i,c2,i)を保持する。
処理(2):di=1の場合、検証者アルゴリズムVは、(ri A,c1,i)←σiを実行する。さらに、検証者アルゴリズムVは、c2,i=H2(ri A,αi(y-F(ri A))-Fb(ti A,ri A)-ei A)を計算する。そして、検証者アルゴリズムVは、(c1,i,c2,i)を保持する。
i=1~Nについて、上記の処理(1)及び処理(2)を実行した後、検証者アルゴリズムVは、c=H(c1,1,c2,1,…,c1,N,c2,N)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、この検証が成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、並列化アルゴリズムの効率化について説明した。
(並列化アルゴリズムの更なる効率化:図31)
図30に示した並列化アルゴリズムは、図31に示すように更に効率化することができる。図31に示すように、この並列化アルゴリズムは、工程#3において、(t1 A,e1 A,…,tN A,eN A)をハッシュ値vに変換し、そのハッシュ値vを3パス目で証明者アルゴリズムPから検証者アルゴリズムVへと送るように構成されている。また、この並列化アルゴリズムは、工程#5において、di=0の場合に返答σi=(ri,ti,ei,c2,i)を生成し、di=1の場合に返答σi=(ri A,ti A,ei A,c1,i)を生成するように構成されている。さらに、この並列化アルゴリズムは、工程#6において、次のような処理を実行するように構成されている。
図30に示した並列化アルゴリズムは、図31に示すように更に効率化することができる。図31に示すように、この並列化アルゴリズムは、工程#3において、(t1 A,e1 A,…,tN A,eN A)をハッシュ値vに変換し、そのハッシュ値vを3パス目で証明者アルゴリズムPから検証者アルゴリズムVへと送るように構成されている。また、この並列化アルゴリズムは、工程#5において、di=0の場合に返答σi=(ri,ti,ei,c2,i)を生成し、di=1の場合に返答σi=(ri A,ti A,ei A,c1,i)を生成するように構成されている。さらに、この並列化アルゴリズムは、工程#6において、次のような処理を実行するように構成されている。
工程#6:
まず、検証者アルゴリズムVは、i=1~Nについて、処理(1)及び処理(2)を実行する。但し、実際には、di=0の場合に処理(1)が実行され、di=1の場合に処理(2)が実行される。
処理(1):di=0の場合、検証者アルゴリズムVは、(ri,ti,ei,c2,i)←σiを実行する。そして、検証者アルゴリズムVは、c1,i=H1(ri,ti,ei)を計算する。さらに、検証者アルゴリズムVは、ti A←αiri-ti、ei A←αiF(ri)-eiを計算する。そして、検証者アルゴリズムVは、(c1,i,c2,i)及び(ti A,ei A)を保持する。
処理(2):di=1の場合、検証者アルゴリズムVは、(ri A,ti A,ei A,c1,i)←σiを実行する。そして、検証者アルゴリズムVは、c2,i=H2(ri A,αi(y-F(ri A))-Fb(ri A,ti A)-ei A)を計算する。そして、検証者アルゴリズムVは、(c1,i,c2,i)及び(ti A,ei A)を保持する。
i=1~Nについて、上記の処理(1)及び処理(2)を実行した後、検証者アルゴリズムVは、c=H(c1,1,c2,1,…,c1,N,c2,N)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、v=H(t1 A,e1 A,…,tN A,eN A)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
まず、検証者アルゴリズムVは、i=1~Nについて、処理(1)及び処理(2)を実行する。但し、実際には、di=0の場合に処理(1)が実行され、di=1の場合に処理(2)が実行される。
処理(1):di=0の場合、検証者アルゴリズムVは、(ri,ti,ei,c2,i)←σiを実行する。そして、検証者アルゴリズムVは、c1,i=H1(ri,ti,ei)を計算する。さらに、検証者アルゴリズムVは、ti A←αiri-ti、ei A←αiF(ri)-eiを計算する。そして、検証者アルゴリズムVは、(c1,i,c2,i)及び(ti A,ei A)を保持する。
処理(2):di=1の場合、検証者アルゴリズムVは、(ri A,ti A,ei A,c1,i)←σiを実行する。そして、検証者アルゴリズムVは、c2,i=H2(ri A,αi(y-F(ri A))-Fb(ri A,ti A)-ei A)を計算する。そして、検証者アルゴリズムVは、(c1,i,c2,i)及び(ti A,ei A)を保持する。
i=1~Nについて、上記の処理(1)及び処理(2)を実行した後、検証者アルゴリズムVは、c=H(c1,1,c2,1,…,c1,N,c2,N)の等号が成り立つか否かを検証する。さらに、検証者アルゴリズムVは、v=H(t1 A,e1 A,…,tN A,eN A)の等号が成り立つか否かを検証する。検証者アルゴリズムVは、これらの検証が全て成功した場合に認証成功を示す値1を出力し、検証に失敗があった場合に認証失敗を示す値0を出力する。
以上、並列化アルゴリズムの更なる効率化を図れる構造について説明した。上記のように、証明者アルゴリズムPと検証者アルゴリズムVとの間でやり取りされる複数の情報をハッシュ値にまとめることで、3パス目の通信データのサイズを低減することが可能になる。さらに、上記のアルゴリズムの中で、ri,ti,eiを1つの乱数シードから生成するようにアルゴリズムの構成を変形することで、通信データサイズの期待値が削減される。また、要求diとして、0が選択された数と1が選択された数とが等しくなるように制限を加えると、確実に通信データサイズが削減される。
例えば、(q,n,m,N)=(24,45,30,88)に設定すると、図30に示したアルゴリズムの場合、公開鍵が120ビット、秘密鍵が180ビット、通信データサイズが42840ビットとなる。一方、図31に示したアルゴリズムの場合、(q,n,m,N)=(24,45,30,88)に設定すると、公開鍵が120ビット、秘密鍵が180ビット、通信データサイズが27512ビットとなる。このように、上述した並列化アルゴリズムの更なる効率化を行うことにより、通信データサイズを顕著に削減することが可能になる。
[3-6:直列・並列ハイブリッドアルゴリズム]
偽証が成功する確率を無視できる程度にまで小さくするために、対話プロトコルを複数回実行する必要性については既に説明した通りである。また、対話プロトコルを複数回実行する方法として、直列的な方法と並列的な方法とを紹介した。特に、並列的な方法については、具体的な並列化アルゴリズムを示して説明した。ここでは、直列的な方法と並列的な方法とを組み合わせたハイブリッドタイプのアルゴリズムを紹介する。
偽証が成功する確率を無視できる程度にまで小さくするために、対話プロトコルを複数回実行する必要性については既に説明した通りである。また、対話プロトコルを複数回実行する方法として、直列的な方法と並列的な方法とを紹介した。特に、並列的な方法については、具体的な並列化アルゴリズムを示して説明した。ここでは、直列的な方法と並列的な方法とを組み合わせたハイブリッドタイプのアルゴリズムを紹介する。
(ハイブリッド構成1)
図32を参照しながら、ハイブリッドタイプのアルゴリズム(以下、並直列アルゴリズム)について説明する。図32には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び並直列アルゴリズムを示した。
図32を参照しながら、ハイブリッドタイプのアルゴリズム(以下、並直列アルゴリズム)について説明する。図32には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び並直列アルゴリズムを示した。
基本構成では、1パス目にメッセージ(c1,c2)が証明者から検証者へと送られる。2パス目では、検証者から証明者へと数αが送られる。3パス目では、証明者から検証者へとベクトルtA及びeAが送られる。4パス目では、検証者から証明者へと要求dが送られる。5パス目では、証明者から検証者へと返答σが送られる。
上記の基本構成を並列化した場合、1パス目では、N回分のメッセージ(c1,1,c2,1,…,c1,N,c2,N)が証明者から検証者へと送られる。2パス目では、検証者から証明者へとN回分の数(α1,…,αN)が送られる。3パス目では、証明者から検証者へとN回分のベクトル(t1
A,…,tN
A,e1
A,…,eN
A)が送られる。4パス目では、検証者から証明者へとN回分の要求(d1,…,dN)が送られる。5パス目では、証明者から検証者へとN回分の返答(σ1,…,σN)が送られる。
本手法に係る並列化アルゴリズムは、受動的攻撃に対する安全性が保証される。また、対話の回数が5回で済む。さらに、1パス目で送信されるN回分のメッセージや3パス目で送信されるN回分のベクトルなどをそれぞれ1つのハッシュ値に纏めることにより、通信効率を向上させることができる。
一方、上記の基本構成を直列化した場合、1パス目では、1回分のメッセージ(c1,1,c2,1)が証明者から検証者へと送られる。2パス目では、検証者から証明者へと1回分の数α1が送られる。3パス目では、証明者から検証者へと1回分のベクトル(t1
A,e1
A)が送られる。4パス目では、検証者から証明者へと1回分の要求d1が送られる。5パス目では、証明者から検証者へと1回分の返答σ1が送られる。同様にして、証明者から検証者へと返答σNが送られるまで対話が繰り返し実行される。直列化アルゴリズムは、能動的攻撃に対する安全性が保証される。また、偽証確率が確実に削減されることを証明することが可能である。
さて、並直列アルゴリズムは、並列化アルゴリズムの性質と直列化アルゴリズムの性質とを併せ持つアルゴリズムである。図32に示した並直列アルゴリズムでは、1パス目で、N回分のメッセージ(c1,1,c2,1,…,c1,N,c2,N)が証明者から検証者へと送られる。2パス目では、検証者から証明者へと1回分の数α1が送られる。3パス目では、証明者から検証者へと1回分のベクトル(t1
A,e1
A)が送られる。4パス目では、検証者から証明者へと1回分の要求d1が送られる。5パス目では、証明者から検証者へと1回分の返答σ1が送られる。その後、証明者と検証者との間で、α2,…,αN,t2
A,e2
A,…,tN
A,eN
A,d2,…,dN,σ2,…,σNのやり取りが行われる。
本手法に基づく並直列アルゴリズムの場合、受動的攻撃に対する安全性が保証される。また、対話の回数が4N+1回で済む。さらに、1パス目で送信されるN回分のメッセージを1つのハッシュ値に纏めることにより、通信効率を向上させることができる。
(ハイブリッド構成2)
図33を参照しながら、他の並直列アルゴリズムについて説明する。図33には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び並直列アルゴリズムを示した。なお、基本構成、直列化アルゴリズム、並列化アルゴリズムの構成及び性質については、上記の通りである。
図33を参照しながら、他の並直列アルゴリズムについて説明する。図33には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び並直列アルゴリズムを示した。なお、基本構成、直列化アルゴリズム、並列化アルゴリズムの構成及び性質については、上記の通りである。
図33に示した並直列アルゴリズムは、並列化アルゴリズムの性質と直列化アルゴリズムの性質とを併せ持つアルゴリズムである。この並直列アルゴリズムでは、1パス目で、N回分のメッセージ(c1,1,c2,1,…,c1,N,c2,N)が証明者から検証者へと送られる。2パス目では、検証者から証明者へとN回分の数(α1,…,αN)が送られる。3パス目では、証明者から検証者へとN回分のベクトル(t1
A,e1
A,…,tN
A,eN
A)が送られる。4パス目では、検証者から証明者へと1回分の要求d1が送られる。5パス目では、証明者から検証者へと1回分の返答σ1が送られる。その後、証明者と検証者との間で、d2,…,dN,σ2,…,σNのやり取りが行われる。
本手法に基づく並直列アルゴリズムの場合、受動的攻撃に対する安全性が保証される。また、対話の回数が2N+3回で済む。さらに、1パス目で送信されるN回分のメッセージや3パス目で送信されるN回分のベクトルなどを1つのハッシュ値に纏めることにより、通信効率を向上させることができる。
(ハイブリッド構成3)
図34を参照しながら、他のハイブリッドタイプのアルゴリズム(以下、直並列アルゴリズム)について説明する。図34には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び直並列アルゴリズムを示した。なお、基本構成、直列化アルゴリズム、並列化アルゴリズムの構成及び性質については、上記の通りである。
図34を参照しながら、他のハイブリッドタイプのアルゴリズム(以下、直並列アルゴリズム)について説明する。図34には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び直並列アルゴリズムを示した。なお、基本構成、直列化アルゴリズム、並列化アルゴリズムの構成及び性質については、上記の通りである。
図34に示した直並列アルゴリズムは、並列化アルゴリズムの性質と直列化アルゴリズムの性質とを併せ持つアルゴリズムである。この直並列アルゴリズムでは、1パス目で、1回分のメッセージ(c1,1,c2,1)が証明者から検証者へと送られる。2パス目では、検証者から証明者へと1回分の数α1が送られる。3パス目では、証明者から検証者へと1回分のベクトル(t1
A,e1
A)が送られる。4パス目では、検証者から証明者へと1回分の要求d1が送られる。その後、証明者と検証者との間で、c1,2,c2,2,…,c1,N,c2,N,α2,…,αN,t2
A,e2
A,…,tN
A,eN
A,d2,…,dNのやり取りが行われる。最後に、証明者から検証者へとN回分の返答(σ1…,σN)が送られる。
本手法に基づく直並列アルゴリズムの場合、能動的攻撃に対する安全性が保証される。また、対話の回数が4N+1回で済む。
(ハイブリッド構成4)
図35を参照しながら、他の直並列アルゴリズムについて説明する。図35には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び直並列アルゴリズムを示した。なお、基本構成、直列化アルゴリズム、並列化アルゴリズムの構成及び性質については、上記の通りである。
図35を参照しながら、他の直並列アルゴリズムについて説明する。図35には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び直並列アルゴリズムを示した。なお、基本構成、直列化アルゴリズム、並列化アルゴリズムの構成及び性質については、上記の通りである。
図35に示した直並列アルゴリズムは、並列化アルゴリズムの性質と直列化アルゴリズムの性質とを併せ持つアルゴリズムである。この直並列アルゴリズムでは、1パス目で、1回分のメッセージ(c1,1,c2,1)が証明者から検証者へと送られる。2パス目では、検証者から証明者へと1回分の数α1が送られる。その後、証明者と検証者との間で、c1,2,c2,2,…,c1,N,c2,N,α2,…,αNのやり取りが行われる。αNのやり取りを終えた後、証明者から検証者へとN回分のベクトル(t1
A,e1
A,…,tN
A,eN
A)が送られる。次いで、検証者から証明者へとN回分の要求(d1,…,d1)が送られる。最後に、証明者から検証者へとN回分の返答(σ1…,σN)が送られる。
本手法に基づく直並列アルゴリズムの場合、受動的攻撃に対する安全性が保証される。また、対話の回数が2N+3回で済む。
以上、本手法に基づくハイブリッドタイプのアルゴリズムについて説明した。
以上、本技術の第2実施形態について説明した。なお、多変数連立方程式の形式については、上記の第1実施形態と同様である。
<4:効率的なアルゴリズムの拡張>
ところで、上記の第1及び第2実施形態に係る効率的なアルゴリズムは、下記の式(20)で表現される2次の多変数多項式を公開鍵(又はシステムパラメータ)として利用する構成であった。しかし、上記の効率的なアルゴリズムは、3次以上の次数を有する多変数多項式を公開鍵(又はシステムパラメータ)として利用する構成に拡張することができる。
ところで、上記の第1及び第2実施形態に係る効率的なアルゴリズムは、下記の式(20)で表現される2次の多変数多項式を公開鍵(又はシステムパラメータ)として利用する構成であった。しかし、上記の効率的なアルゴリズムは、3次以上の次数を有する多変数多項式を公開鍵(又はシステムパラメータ)として利用する構成に拡張することができる。
[4-1:多変数多項式の高次化について]
例えば、位数q=pkの体上で定義される3次以上の多変数多項式(下記の式(21)を参照)を公開鍵(又はシステムパラメータ)として利用する構成について考えてみよう。
例えば、位数q=pkの体上で定義される3次以上の多変数多項式(下記の式(21)を参照)を公開鍵(又はシステムパラメータ)として利用する構成について考えてみよう。
上記の第1及び第2実施形態に係る効率的なアルゴリズムにおける公開鍵として多変数多項式flが利用可能となる条件は、下記の式(22)が(x1,…,xn)及び(y1,…,yn)に対して双線形になることである。上記の式(20)で表現される多変数多項式の場合、下記の式(23)に示すように容易に双線形性を確認することができる(下線部がxi、yiのそれぞれについて線形となっている)。また、上記の式(21)で表現される多変数多項式の場合についても同様にして、下記の式(24)に示すように双線形性を確認することができる。但し、下記の式(24)の下線部は、位数pの体GF(p)上における双線形性を示している。そのため、上記の第2実施形態に係る効率的なアルゴリズムの公開鍵として上記の式(21)で表現される多変数多項式を利用する場合、当該アルゴリズムの工程#2の後に検証者が送信する数αは、GF(p)の要素に限定する必要がある。
このような理由から、上記の第1及び第2実施形態に係る効率的なアルゴリズムを拡張し、上記の式(21)で表現されるような3次以上の多変数多項式を公開鍵として利用するアルゴリズムを構築することが可能であると言える。
ここで、上記の式(20)で表現される多変数多項式(以下、2次多項式)と、上記の式(21)で表現される多変数多項式(以下、多次多項式)との関係について考察しておきたい。いま、位数q=pの体上で定義されるnk変数の2次多項式、及び位数q=pkの体上で定義されるn変数の多次多項式について考える。この場合、mk本の2次多項式で構成される連立方程式の解答困難性は、m本の多次多項式で構成される連立方程式の解答困難性と等価である。例えば、位数2の体上で定義される80本の80変数2次多項式により構成される連立方程式と、位数28の体上で定義される10本の10変数多次多項式とは、その解答困難性が等価である。
つまり、GF(pk)の要素と、GF(p)kの要素とを同型写像により同一視した場合、位数q=pの体上で定義されるmk本のnk変数2次多項式の組で表現される関数と等価な、位数q=pkの体上で定義されるm本のn変数多次多項式の組で表現される関数が存在する。例えば、GF(28)の要素と、GF(2)8の要素とを同型写像により同一視した場合、位数2の体上で定義される80本の80変数2次多項式の組で表現される関数と等価な、位数28の体上で定義される10本の10変数多次多項式の組で表現される関数が存在する。このような理由から、上記の2次多項式を利用するか、上記の多次多項式を利用するかは、任意に選択することが可能である。
ここで、上記の2次多項式を利用する場合の計算効率と上記の多次多項式を利用する場合の計算効率とについて考察しておきたい。
位数2の体上で定義されるnk変数の2次多項式を利用する場合、アルゴリズムに含まれる演算は、nk個の1ビット変数を対象に実行されることになる。つまり、演算の単位が1ビットとなる。一方、位数2kの体上で定義されるn変数の多次多項式を利用する場合、アルゴリズムに含まれる演算は、n個のkビット変数を対象に実行されることになる。つまり、演算の単位がkビットとなる。このk(k=2,3,4,…)は任意に設定することができる。そのため、実装上、都合の良い値にkを設定することにより、計算効率を向上させることが可能になる。例えば、32ビットのアーキティクチャ上にアルゴリズムを実装する場合、1ビット単位で演算を実行する構成にするよりも、32ビット単位で演算を実行する構成にする方が高い計算効率を得られる。
このように、上記の第1及び第2実施形態に係る効率的なアルゴリズムを、多次多項式を公開鍵として利用できるように拡張することで、演算の単位を実装するアーキティクチャに合わせることが可能になる。その結果、計算効率を向上させることが可能になる。
[4-2:拡張方式(高次項の追加)]
ところで、3次以上の多次多項式を利用する方法として、2次多項式に3次以上の項を追加する方法も考えられる。例えば、下記の式(25)に示すように、上記の式(20)で表現される2次多項式に4次の項を追加する方法が考えられる。多次多項式flを下記の式(25)のように定義すると、下記の式(26)で定義される項gl(x,y)は、下記の式(27)のように表現される。なお、以下では、項gl(x,y)のことをpolar formと呼ぶことがある。
ところで、3次以上の多次多項式を利用する方法として、2次多項式に3次以上の項を追加する方法も考えられる。例えば、下記の式(25)に示すように、上記の式(20)で表現される2次多項式に4次の項を追加する方法が考えられる。多次多項式flを下記の式(25)のように定義すると、下記の式(26)で定義される項gl(x,y)は、下記の式(27)のように表現される。なお、以下では、項gl(x,y)のことをpolar formと呼ぶことがある。
上記の式(27)に示すように、項gl(x,y)は双線形にならない。そこで、4つの変数x1,x2,x3,x4から2つ選んだ6通りの項xixj、及び4つの変数x1,x2,x3,x4から3つ選んだ4通りの項xixjxkを下記の式(28)及び式(29)のように4つの変数tij、tij
A、tijk、tijk
Aで表現する。この表現を用いると、3次以上の多変数多項式を用いて、上記の効率的なアルゴリズムを実現することができる。なお、上記の式(25)に示した例では、2次多項式に4次の項を追加しているが、4次の項に代えて3次の項(例えば、x1x2x3)又は5次以上の項(例えば、x1x2x3x4x5)を追加してもよい。このように、3次以上の項を追加することにより、方程式の頑強性を向上させることが可能になる。
<5:頑強性を高める仕組み>
ここで、上記の第1及び第2実施形態に係るアルゴリズムの頑強性を更に高めるための仕組みについて紹介する。
ここで、上記の第1及び第2実施形態に係るアルゴリズムの頑強性を更に高めるための仕組みについて紹介する。
[5-1:システムパラメータの設定方法]
これまで、多変数多項式の係数又はその係数の生成に利用する乱数シード(以下、多変数多項式の係数等)をどのように設定するかについては詳しく言及してこなかった。多変数多項式の係数等は、システムに共通のパラメータとしてもよいし、ユーザ毎に異なるパラメータとしてもよい。
これまで、多変数多項式の係数又はその係数の生成に利用する乱数シード(以下、多変数多項式の係数等)をどのように設定するかについては詳しく言及してこなかった。多変数多項式の係数等は、システムに共通のパラメータとしてもよいし、ユーザ毎に異なるパラメータとしてもよい。
しかし、多変数多項式の係数等をシステムに共通のパラメータとすると、その多変数多項式に脆弱性が見つかった場合、システム全体について設定を更新する必要が生じてしまう。また、ランダムに選んだ係数を持つ多変数多項式について、平均的な頑強性(解くことの難しさ)は解析されているが、ある特定の係数を持つ多変数多項式について十分な頑強性を有することを保証することは難しい。
そこで、本件発明者は、各ユーザが選択した文字列などを擬似乱数生成器のシードに利用して多変数多項式の係数を生成する仕組みを考案した。例えば、ユーザのe-mailアドレスをシードに利用したり、e-mailアドレスと更新日時などとを結合した文字列をシードに利用したりする方法などが考えられる。このような方法を用いると、万が一、ある文字列から生成された係数を持つ多変数多項式に脆弱性が見つかった場合でも、その係数を持つ多変数多項式を利用しているユーザのみに影響が限定される。また、文字列を変えるだけで多変数多項式が変更されるため、容易に脆弱性を解消することができる。
以上、システムパラメータの設定方法について説明した。なお、上記の説明では文字列を例に挙げたが、ユーザ毎に異なる数字の列や記号の列を利用してもよい。
[5-2:イレギュラーな要求に対する応答方法]
次に、イレギュラーな要求に対する応答方法について説明する。
次に、イレギュラーな要求に対する応答方法について説明する。
(5-2-1:証明者による応答方法について)
図36に示すように、対話プロトコルの中で、検証者が偽りの要求を投げかけてくる可能性が考えられる。図36の例では、証明者が検証者へとメッセージ(c1,c2,c3)を送り、検証者が証明者へと要求d=0を送った後、証明者から検証者へと要求d=0に対応する返答σが送られている。ここまでは正常な対話である。
図36に示すように、対話プロトコルの中で、検証者が偽りの要求を投げかけてくる可能性が考えられる。図36の例では、証明者が検証者へとメッセージ(c1,c2,c3)を送り、検証者が証明者へと要求d=0を送った後、証明者から検証者へと要求d=0に対応する返答σが送られている。ここまでは正常な対話である。
しかし、図36の例において、検証者は、証明者に要求d=1に対応する返答σをさらに要求している。もし、この要求に応じ、証明者が要求d=1に対応する返答σを検証者に送ってしまうと、秘密鍵が検証者に漏洩してしまう。このような秘密鍵の漏洩は現実的に起こりうることである。例えば、検証者は、2パス目で要求d=1を送信したのではなく、要求d=0を送信したはずだと偽って、要求d=1に対応する返答σをさらに要求するかもしれない。一方、証明者は、2パス目で送信された要求dのビットが通信エラーにより別のビットになってしまったと勘違いするかもしれない。
そこで、本件発明者は、上記のようにして秘密鍵の漏洩が生じるのを避ける方法を考案した。具体的には、1回分のメッセージについて証明者が2通り以上の要求dに対応する返答を求めてきた場合に、対話を終了するか、或いは、新しい乱数を利用して1パス目から対話をやり直す方法が考案された。この方法を適用すれば、検証者が偽って2通り以上の要求dに対応する返答を求めてきても、秘密鍵が漏洩することはなくなる。
以上、イレギュラーな要求により秘密鍵が漏洩しないようにする工夫について述べた。なお、ここでは3パスの基本構成を例に挙げたが、直列的な方法、並列的な方法、或いは、ハイブリッドタイプのアルゴリズムについても同様の工夫を加えることにより、安全性を向上させることができる。もちろん、5パスのアルゴリズムについても同様である。
(5-2-2:検証者による応答方法について)
また、図37に示すように、証明者が偽って要求dの再送を要求してくる可能性もある。図37の例では、証明者が検証者へとメッセージ(c1,c2,c3)を送り、検証者が証明者へと要求d=0を送った後、証明者が要求dの再送を要求している。この要求に応じて、検証者が再びランダムに要求dを選択すると、先に送った要求d=0とは異なる要求d=1が選択される可能性がある。この場合、検証者から証明者へと要求d=1が送られる。図37の例において、証明者は、要求d=1に対応する返答σを検証者に送っている。
また、図37に示すように、証明者が偽って要求dの再送を要求してくる可能性もある。図37の例では、証明者が検証者へとメッセージ(c1,c2,c3)を送り、検証者が証明者へと要求d=0を送った後、証明者が要求dの再送を要求している。この要求に応じて、検証者が再びランダムに要求dを選択すると、先に送った要求d=0とは異なる要求d=1が選択される可能性がある。この場合、検証者から証明者へと要求d=1が送られる。図37の例において、証明者は、要求d=1に対応する返答σを検証者に送っている。
しかし、証明者は、要求d=1には回答できるが、要求d=0には回答できなかったのかもしれない。つまり、証明者が偽証している可能性が否定できない。例えば、証明者は、要求dを紛失してしまったので要求dを再送して欲しいと検証者に求めるかもしれない。一方、検証者は、通信エラーにより先に送信した要求が紛失したと考え、証明者の求めに応じて要求dを再送してしまうかもしれない。そして、再送した要求dが先に送信した要求dと異なるものである場合、偽証が成功してしまう。
図37の例から分かるように、要求dがランダムに選ばれることで、証明者に偽証の機会を与えてしまう。そこで、本件発明者は、偽証の機会を与えないようにする方法を考案した。この方法は、1回分のメッセージについて証明者が要求dの送信を再度求めてきた場合に、検証者が対話を終了するか、或いは、新たな乱数を生成せずに前回と同じ要求dを再送するように対話プロトコルを改良するというものである。この方法を適用すると、要求dの再送要求を利用した偽証の機会をなくすことができる。
以上、イレギュラーな要求により偽証が成功する機会をなくす工夫について述べた。なお、ここでは3パスの基本構成を例に挙げたが、直列的な方法、並列的な方法、或いは、ハイブリッドタイプのアルゴリズムについても同様の工夫を加えることにより、安全性を向上させることができる。もちろん、5パスのアルゴリズムについても同様である。
<6:ハードウェア構成例>
上記の各アルゴリズムは、例えば、図38に示す情報処理装置のハードウェア構成を用いて実行することが可能である。つまり、当該各アルゴリズムの処理は、コンピュータプログラムを用いて図38に示すハードウェアを制御することにより実現される。なお、このハードウェアの形態は任意であり、例えば、パーソナルコンピュータ、携帯電話、PHS、PDA等の携帯情報端末、ゲーム機、接触式又は非接触式のICチップ、接触式又は非接触式のICカード、又は種々の情報家電がこれに含まれる。但し、上記のPHSは、Personal Handy-phone Systemの略である。また、上記のPDAは、Personal Digital Assistantの略である。
上記の各アルゴリズムは、例えば、図38に示す情報処理装置のハードウェア構成を用いて実行することが可能である。つまり、当該各アルゴリズムの処理は、コンピュータプログラムを用いて図38に示すハードウェアを制御することにより実現される。なお、このハードウェアの形態は任意であり、例えば、パーソナルコンピュータ、携帯電話、PHS、PDA等の携帯情報端末、ゲーム機、接触式又は非接触式のICチップ、接触式又は非接触式のICカード、又は種々の情報家電がこれに含まれる。但し、上記のPHSは、Personal Handy-phone Systemの略である。また、上記のPDAは、Personal Digital Assistantの略である。
図38に示すように、このハードウェアは、主に、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の略である。
CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータ等を格納する手段である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等が一時的又は永続的に格納される。
これらの構成要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等が用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラ(以下、リモコン)が用いられることもある。
出力部918としては、例えば、CRT、LCD、PDP、又はELD等のディスプレイ装置、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置である。但し、上記のCRTは、Cathode Ray Tubeの略である。また、上記のLCDは、Liquid Crystal Displayの略である。そして、上記のPDPは、Plasma DisplayPanelの略である。さらに、上記のELDは、Electro-Luminescence Displayの略である。
記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、ハードディスクドライブ(HDD)等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等が用いられる。但し、上記のHDDは、Hard Disk Driveの略である。
ドライブ922は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928は、例えば、DVDメディア、Blu-rayメディア、HD DVDメディア、各種の半導体記憶メディア等である。もちろん、リムーバブル記録媒体928は、例えば、非接触型ICチップを搭載したICカード、又は電子機器等であってもよい。但し、上記のICは、Integrated Circuitの略である。
接続ポート924は、例えば、USBポート、IEEE1394ポート、SCSI、RS-232Cポート、又は光オーディオ端子等のような外部接続機器930を接続するためのポートである。外部接続機器930は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はICレコーダ等である。但し、上記のUSBは、Universal Serial Busの略である。また、上記のSCSIは、Small Computer System Interfaceの略である。
通信部926は、ネットワーク932に接続するための通信デバイスであり、例えば、有線又は無線LAN、Bluetooth(登録商標)、又はWUSB用の通信カード、光通信用のルータ、ADSL用のルータ、又は接触又は非接触通信用のデバイス等である。また、通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークにより構成され、例えば、インターネット、家庭内LAN、赤外線通信、可視光通信、放送、又は衛星通信等である。但し、上記のLANは、Local Area Networkの略である。また、上記のWUSBは、Wireless USBの略である。そして、上記のADSLは、Asymmetric Digital Subscriber Lineの略である。
<7:まとめ>
最後に、本技術の実施形態に係る技術内容について簡単に纏める。ここで述べる技術内容は、例えば、PC、携帯電話、ゲーム機、情報端末、情報家電、カーナビゲーションシステム等、種々の情報処理装置に対して適用することができる。なお、以下で述べる情報処理装置の機能は、1台の情報処理装置を利用して実現することも可能であるし、複数台の情報処理装置を利用して実現することも可能である。また、以下で述べる情報処理装置が処理を実行する際に用いるデータ記憶手段及び演算処理手段は、当該情報処理装置に設けられたものであってもよいし、ネットワークを介して接続された機器に設けられたものであってもよい。
最後に、本技術の実施形態に係る技術内容について簡単に纏める。ここで述べる技術内容は、例えば、PC、携帯電話、ゲーム機、情報端末、情報家電、カーナビゲーションシステム等、種々の情報処理装置に対して適用することができる。なお、以下で述べる情報処理装置の機能は、1台の情報処理装置を利用して実現することも可能であるし、複数台の情報処理装置を利用して実現することも可能である。また、以下で述べる情報処理装置が処理を実行する際に用いるデータ記憶手段及び演算処理手段は、当該情報処理装置に設けられたものであってもよいし、ネットワークを介して接続された機器に設けられたものであってもよい。
上記の情報処理装置の機能構成は以下のように表現される。例えば、下記(1)に記載の情報処理装置は、多次多変数多項式の組Fを公開鍵として用い、検証者との間で対話プロトコルを実行することにより、検証者に秘密鍵sの情報を一切漏らすことなく、自身が秘密鍵sを知っていることを検証者に示すことができる。つまり、下記(1)に記載の情報処理装置は、多次多変数連立方程式の求解困難性に安全性の根拠を置く公開鍵認証方式の認証機能を有する。
(1)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
(2)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
(3)
前記メッセージ生成部は、N回分の前記メッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、N回分の前記メッセージに代えて1つの前記ハッシュ値を前記検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報、及び、前記公開鍵及び前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを前記検証者に提供する、
上記(1)に記載の情報処理装置。
前記メッセージ生成部は、N回分の前記メッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、N回分の前記メッセージに代えて1つの前記ハッシュ値を前記検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報、及び、前記公開鍵及び前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを前記検証者に提供する、
上記(1)に記載の情報処理装置。
(4)
前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)-F(x)-F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
上記(1)~(3)のいずれか1項に記載の情報処理装置。
前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)-F(x)-F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
上記(1)~(3)のいずれか1項に記載の情報処理装置。
(5)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得する回答取得部と、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得する回答取得部と、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
(6)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得する回答取得部と、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得する回答取得部と、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
(7)
前記メッセージ取得部は、N回分の前記メッセージに代えてN回分の前記メッセージから生成された1つのハッシュ値を取得し、
前記回答取得部は、前記選択した検証パターンに対応する回答情報、及び、前記公開鍵及び前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを前記証明者から取得し、
前記検証部は、前記ハッシュ値、前記一部のメッセージ、前記公開鍵、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する、
上記(5)に記載の情報処理装置。
前記メッセージ取得部は、N回分の前記メッセージに代えてN回分の前記メッセージから生成された1つのハッシュ値を取得し、
前記回答取得部は、前記選択した検証パターンに対応する回答情報、及び、前記公開鍵及び前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを前記証明者から取得し、
前記検証部は、前記ハッシュ値、前記一部のメッセージ、前記公開鍵、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する、
上記(5)に記載の情報処理装置。
(8)
前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)-F(x)-F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
上記(5)~(7)のいずれか1項に記載の情報処理装置。
前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)-F(x)-F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
上記(5)~(7)のいずれか1項に記載の情報処理装置。
(9)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成する中間情報生成部と、
N回分の前記第3の情報を前記検証者に提供する中間情報提供部と、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成する中間情報生成部と、
N回分の前記第3の情報を前記検証者に提供する中間情報提供部と、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
(10)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成する中間情報生成部と、
N回分の前記第3の情報を前記検証者に提供する中間情報提供部と、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成する中間情報生成部と、
N回分の前記第3の情報を前記検証者に提供する中間情報提供部と、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
(11)
前記メッセージ生成部は、N回分の前記メッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、N回分の前記メッセージに代えて1つの前記ハッシュ値を前記検証者に提供し、
前記中間情報生成部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した前記第1の情報及び前記メッセージを生成する際に得られるN回分の前記第2の情報を用いてN回分の前記第3の情報を生成し、
前記中間情報提供部は、N回分の前記第3の情報を前記検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報、及び、前記公開鍵及び前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを前記検証者に提供する、
上記(9)に記載の情報処理装置。
前記メッセージ生成部は、N回分の前記メッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、N回分の前記メッセージに代えて1つの前記ハッシュ値を前記検証者に提供し、
前記中間情報生成部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した前記第1の情報及び前記メッセージを生成する際に得られるN回分の前記第2の情報を用いてN回分の前記第3の情報を生成し、
前記中間情報提供部は、N回分の前記第3の情報を前記検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報、及び、前記公開鍵及び前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを前記検証者に提供する、
上記(9)に記載の情報処理装置。
(12)
前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)-F(x)-F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
上記(9)~(11)のいずれか1項に記載の情報処理装置。
前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)-F(x)-F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
上記(9)~(11)のいずれか1項に記載の情報処理装置。
(13)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供部と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得する回答取得部と、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供部と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得する回答取得部と、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
(14)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供部と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得する回答取得部と、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供部と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得する回答取得部と、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。
(15)
前記メッセージ取得部は、N回分の前記メッセージに代えてN回分の前記メッセージから生成された1つのハッシュ値を取得し、
前記情報提供部は、N回分の前記メッセージのそれぞれについて前記第1の情報をランダムに選択し、選択したN回分の前記第1の情報を前記証明者に提供し、
前記中間情報取得部は、N回分の前記第1の情報及びN回分の前記メッセージを生成する際に得られるN回分の前記第2の情報を用いて前記証明者が生成したN回分の前記第3の情報を取得し、
前記パターン情報提供部は、N回分の前記メッセージのそれぞれについて検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供し、
前記回答取得部は、前記選択した検証パターンに対応する回答情報、及び、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを前記証明者から取得し、
前記検証部は、前記ハッシュ値、前記一部のメッセージ、前記公開鍵、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証し、N回分の前記メッセージの全てについて検証が成功した場合に、前記証明者が前記ベクトルsを保持していると判定する、
上記(13)に記載の情報処理装置。
前記メッセージ取得部は、N回分の前記メッセージに代えてN回分の前記メッセージから生成された1つのハッシュ値を取得し、
前記情報提供部は、N回分の前記メッセージのそれぞれについて前記第1の情報をランダムに選択し、選択したN回分の前記第1の情報を前記証明者に提供し、
前記中間情報取得部は、N回分の前記第1の情報及びN回分の前記メッセージを生成する際に得られるN回分の前記第2の情報を用いて前記証明者が生成したN回分の前記第3の情報を取得し、
前記パターン情報提供部は、N回分の前記メッセージのそれぞれについて検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供し、
前記回答取得部は、前記選択した検証パターンに対応する回答情報、及び、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを前記証明者から取得し、
前記検証部は、前記ハッシュ値、前記一部のメッセージ、前記公開鍵、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証し、N回分の前記メッセージの全てについて検証が成功した場合に、前記証明者が前記ベクトルsを保持していると判定する、
上記(13)に記載の情報処理装置。
(16)
前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)-F(x)-F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
上記(13)~(15)のいずれか1項に記載の情報処理装置。
前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)-F(x)-F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
上記(13)~(15)のいずれか1項に記載の情報処理装置。
(17)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
(18)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するステップと、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するステップと、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得するステップと、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するステップと、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するステップと、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得するステップと、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
(19)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するステップと、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成するステップと、
N回分の前記第3の情報を前記検証者に提供するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するステップと、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成するステップと、
N回分の前記第3の情報を前記検証者に提供するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
(20)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するステップと、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供するステップと、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するステップと、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得するステップと、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するステップと、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供するステップと、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するステップと、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得するステップと、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
(21)
前記m及びnは、m<nの関係を有する、
上記(1)~(16)のいずれか1項に記載の情報処理装置。
前記m及びnは、m<nの関係を有する、
上記(1)~(16)のいずれか1項に記載の情報処理装置。
(22)
前記m及びnは、2m-n≪1の関係を有する、
上記(21)に記載の情報処理装置。
前記m及びnは、2m-n≪1の関係を有する、
上記(21)に記載の情報処理装置。
(23)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するメッセージ提供機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するメッセージ提供機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
(24)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するメッセージ提供機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するメッセージ提供機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
(25)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持機能と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するメッセージ取得機能と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供機能と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得する回答取得機能と、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持機能と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するメッセージ取得機能と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供機能と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得する回答取得機能と、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
(26)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持機能と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するメッセージ取得機能と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供機能と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得する回答取得機能と、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持機能と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するメッセージ取得機能と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供機能と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得する回答取得機能と、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
(27)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するメッセージ提供機能と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成する中間情報生成機能と、
N回分の前記第3の情報を前記検証者に提供する中間情報提供機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するメッセージ提供機能と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成する中間情報生成機能と、
N回分の前記第3の情報を前記検証者に提供する中間情報提供機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
(28)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するメッセージ提供機能と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成する中間情報生成機能と、
N回分の前記第3の情報を前記検証者に提供する中間情報提供機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するメッセージ提供機能と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成する中間情報生成機能と、
N回分の前記第3の情報を前記検証者に提供する中間情報提供機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
(29)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持機能と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するメッセージ取得機能と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供機能と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供機能と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得する回答取得機能と、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持機能と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するメッセージ取得機能と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供機能と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供機能と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得する回答取得機能と、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
(30)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持機能と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するメッセージ取得機能と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供機能と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供機能と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得する回答取得機能と、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持機能と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するメッセージ取得機能と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供機能と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供機能と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得する回答取得機能と、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
プログラム。
(31)
上記(23)~(30)のいずれか1項に記載されたプログラムが記録された、コンピュータにより読み取り可能な記録媒体が提供される。
上記(23)~(30)のいずれか1項に記載されたプログラムが記録された、コンピュータにより読み取り可能な記録媒体が提供される。
≪5パスの並直列繰り返し構成の変形例:証明者≫
(32)
前記中間情報生成部は、N回分の前記第1の情報を1回の対話で前記検証者から取得し、取得したN回分の前記第1の情報及びN回分の前記第2の情報を用いてN回分の前記第3の情報を生成し、
前記中間情報提供部は、N回分の前記第3の情報を1回の対話で前記検証者に提供する、
上記(9)に記載の情報処理装置。
(32)
前記中間情報生成部は、N回分の前記第1の情報を1回の対話で前記検証者から取得し、取得したN回分の前記第1の情報及びN回分の前記第2の情報を用いてN回分の前記第3の情報を生成し、
前記中間情報提供部は、N回分の前記第3の情報を1回の対話で前記検証者に提供する、
上記(9)に記載の情報処理装置。
(33)
前記中間情報生成部は、N回分の前記第1の情報及びN回分の前記第2の情報を用いてN回分の前記第3の情報を生成し、生成したN回分の前記第3の情報から1つの他のハッシュ値を生成し、
前記中間情報提供部は、N回分の前記第3の情報に代えて1つの前記他のハッシュ値を前記検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報、及び、前記公開鍵及び前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージ及び一部の前記第3の情報を前記検証者に提供する、
上記(11)に記載の情報処理装置。
前記中間情報生成部は、N回分の前記第1の情報及びN回分の前記第2の情報を用いてN回分の前記第3の情報を生成し、生成したN回分の前記第3の情報から1つの他のハッシュ値を生成し、
前記中間情報提供部は、N回分の前記第3の情報に代えて1つの前記他のハッシュ値を前記検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報、及び、前記公開鍵及び前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージ及び一部の前記第3の情報を前記検証者に提供する、
上記(11)に記載の情報処理装置。
≪5パスの直並列繰り返し構成の変形例:証明者≫
(34)
前記中間情報生成部は、N回分の前記第1の情報を複数回の対話で前記検証者から取得し、取得したN回分の前記第1の情報及びN回分の前記第2の情報を用いてN回分の前記第3の情報を生成し、
前記中間情報提供部は、N回分の前記第3の情報を1回の対話で前記検証者に提供し、
前記回答提供部は、前記検証者が選択したN回分の検証パターンを示す情報を1回の対話で取得し、取得した当該情報に基づいて前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する、
上記(10)に記載の情報処理装置。
(34)
前記中間情報生成部は、N回分の前記第1の情報を複数回の対話で前記検証者から取得し、取得したN回分の前記第1の情報及びN回分の前記第2の情報を用いてN回分の前記第3の情報を生成し、
前記中間情報提供部は、N回分の前記第3の情報を1回の対話で前記検証者に提供し、
前記回答提供部は、前記検証者が選択したN回分の検証パターンを示す情報を1回の対話で取得し、取得した当該情報に基づいて前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する、
上記(10)に記載の情報処理装置。
≪5パスの並直列繰り返し構成の変形例:検証者≫
(35)
前記情報提供部は、N回分の前記第1の情報を1回の対話で前記証明者に提供し、
前記中間情報取得部は、N回分の前記第3の情報を1回の対話で前記証明者から取得し、
前記パターン情報提供部は、N回分の前記検証パターンの情報を複数回の対話で前記証明者に提供する、
上記(13)に記載の情報処理装置。
(35)
前記情報提供部は、N回分の前記第1の情報を1回の対話で前記証明者に提供し、
前記中間情報取得部は、N回分の前記第3の情報を1回の対話で前記証明者から取得し、
前記パターン情報提供部は、N回分の前記検証パターンの情報を複数回の対話で前記証明者に提供する、
上記(13)に記載の情報処理装置。
(36)
前記中間情報取得部は、N回分の前記第3の情報に代えてN回分の前記第3の情報から生成された1つの他のハッシュ値を前記証明者から取得し、
前記回答取得部は、前記選択した検証パターンに対応する回答情報、及び、前記公開鍵、前記第1の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部の前記メッセージ及び一部の前記第3の情報を前記証明者から取得し、
前記検証部は、前記ハッシュ値、前記他のハッシュ値、前記一部のメッセージ、前記一部の第3の情報、前記公開鍵、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証し、N回分の前記メッセージの全てについて検証が成功した場合に、前記証明者が前記ベクトルsを保持していると判定する、
上記(15)に記載の情報処理装置。
前記中間情報取得部は、N回分の前記第3の情報に代えてN回分の前記第3の情報から生成された1つの他のハッシュ値を前記証明者から取得し、
前記回答取得部は、前記選択した検証パターンに対応する回答情報、及び、前記公開鍵、前記第1の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部の前記メッセージ及び一部の前記第3の情報を前記証明者から取得し、
前記検証部は、前記ハッシュ値、前記他のハッシュ値、前記一部のメッセージ、前記一部の第3の情報、前記公開鍵、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証し、N回分の前記メッセージの全てについて検証が成功した場合に、前記証明者が前記ベクトルsを保持していると判定する、
上記(15)に記載の情報処理装置。
≪5パスの直並列繰り返し構成の変形例:検証者≫
(37)
前記情報提供部は、N回分の前記第1の情報を複数回の対話で前記証明者に提供し、
前記中間情報取得部は、N回分の前記第3の情報を1回の対話で前記証明者から取得し、
前記パターン情報提供部は、選択したN回分の前記検証パターンの情報を1回の対話で前記証明者に提供する、
上記(14)に記載の情報処理装置。
(37)
前記情報提供部は、N回分の前記第1の情報を複数回の対話で前記証明者に提供し、
前記中間情報取得部は、N回分の前記第3の情報を1回の対話で前記証明者から取得し、
前記パターン情報提供部は、選択したN回分の前記検証パターンの情報を1回の対話で前記証明者に提供する、
上記(14)に記載の情報処理装置。
≪直並列繰り返し構成の方法(上記(2)に対応)≫
(38)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
(38)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
≪直並列繰り返し構成の方法(上記(6)に対応)≫
(39)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するステップと、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するステップと、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得するステップと、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
(39)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するステップと、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するステップと、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得するステップと、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
≪直並列繰り返し構成の方法(上記(10)に対応)≫
(40)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するステップと、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成するステップと、
N回分の前記第3の情報を前記検証者に提供するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
(40)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するステップと、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成するステップと、
N回分の前記第3の情報を前記検証者に提供するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
≪直並列繰り返し構成の方法(上記(14)に対応)≫
(41)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するステップと、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供するステップと、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するステップと、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得するステップと、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
(41)
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するステップと、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供するステップと、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するステップと、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得するステップと、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
(備考)
上記の証明者アルゴリズムPは、メッセージ生成部、メッセージ提供部、回答提供部、中間情報生成部、中間情報提供部の一例である。また、上記の検証者アルゴリズムVは、情報保持部、メッセージ取得部、パターン情報提供部、回答取得部、検証部、中間情報取得部の一例である。
上記の証明者アルゴリズムPは、メッセージ生成部、メッセージ提供部、回答提供部、中間情報生成部、中間情報提供部の一例である。また、上記の検証者アルゴリズムVは、情報保持部、メッセージ取得部、パターン情報提供部、回答取得部、検証部、中間情報取得部の一例である。
以上、添付図面を参照しながら本技術の好適な実施形態について説明したが、本技術は係る例に限定されないことは言うまでもない。当業者であれば、請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本技術の技術的範囲に属するものと了解される。
Gen 鍵生成アルゴリズム
P 証明者アルゴリズム
V 検証者アルゴリズム
Sig 署名生成アルゴリズム
Ver 署名検証アルゴリズム
P 証明者アルゴリズム
V 検証者アルゴリズム
Sig 署名生成アルゴリズム
Ver 署名検証アルゴリズム
Claims (20)
- 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。 - 前記メッセージ生成部は、N回分の前記メッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、N回分の前記メッセージに代えて1つの前記ハッシュ値を前記検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報、及び、前記公開鍵及び前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを前記検証者に提供する、
請求項1に記載の情報処理装置。 - 前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)-F(x)-F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
請求項1に記載の情報処理装置。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得する回答取得部と、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得する回答取得部と、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。 - 前記メッセージ取得部は、N回分の前記メッセージに代えてN回分の前記メッセージから生成された1つのハッシュ値を取得し、
前記回答取得部は、前記選択した検証パターンに対応する回答情報、及び、前記公開鍵及び前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを前記証明者から取得し、
前記検証部は、前記ハッシュ値、前記一部のメッセージ、前記公開鍵、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する、
請求項5に記載の情報処理装置。 - 前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)-F(x)-F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
請求項5に記載の情報処理装置。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成する中間情報生成部と、
N回分の前記第3の情報を前記検証者に提供する中間情報提供部と、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを複数回の対話で提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成する中間情報生成部と、
N回分の前記第3の情報を前記検証者に提供する中間情報提供部と、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を1回の対話で前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。 - 前記メッセージ生成部は、N回分の前記メッセージから1つのハッシュ値を生成し、
前記メッセージ提供部は、N回分の前記メッセージに代えて1つの前記ハッシュ値を前記検証者に提供し、
前記中間情報生成部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した前記第1の情報及び前記メッセージを生成する際に得られるN回分の前記第2の情報を用いてN回分の前記第3の情報を生成し、
前記中間情報提供部は、N回分の前記第3の情報を前記検証者に提供し、
前記回答提供部は、N回分の前記メッセージのそれぞれについて前記検証者が選択した検証パターンに対応するN回分の前記回答情報、及び、前記公開鍵及び前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージを前記検証者に提供する、
請求項9に記載の情報処理装置。 - 前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)-F(x)-F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
請求項9に記載の情報処理装置。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供部と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得する回答取得部と、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを複数回の対話で取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供部と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得する中間情報取得部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するパターン情報提供部と、
前記選択したN回分の検証パターンに対応するN回分の回答情報を1回の対話で前記証明者から取得する回答取得部と、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理装置。 - 前記メッセージ取得部は、N回分の前記メッセージに代えてN回分の前記メッセージから生成された1つのハッシュ値を取得し、
前記情報提供部は、N回分の前記メッセージのそれぞれについて前記第1の情報をランダムに選択し、選択したN回分の前記第1の情報を前記証明者に提供し、
前記中間情報取得部は、N回分の前記第1の情報及びN回分の前記メッセージを生成する際に得られるN回分の前記第2の情報を用いて前記証明者が生成したN回分の前記第3の情報を取得し、
前記パターン情報提供部は、N回分の前記メッセージのそれぞれについて検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供し、
前記回答取得部は、前記選択した検証パターンに対応する回答情報、及び、前記公開鍵、前記第1の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部の前記メッセージを前記証明者から取得し、
前記検証部は、前記ハッシュ値、前記一部のメッセージ、前記公開鍵、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証し、N回分の前記メッセージの全てについて検証が成功した場合に、前記証明者が前記ベクトルsを保持していると判定する、
請求項13に記載の情報処理装置。 - 前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)-F(x)-F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
請求項13に記載の情報処理装置。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するステップと、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するステップと、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得するステップと、
前記メッセージ、前記多次多変数多項式の組F、前記ベクトルy、及びN回分の前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵及び前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者にN回分の前記メッセージを1回の対話で提供するステップと、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成するステップと、
N回分の前記第3の情報を前記検証者に提供するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧2)の検証パターンの中から前記検証者が選択した検証パターンに対応するN回分の回答情報を複数回の対話で前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージを1回の対話で取得するステップと、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供するステップと、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報を取得するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに検証パターンを選択し、選択したN回分の検証パターンの情報を前記証明者に提供するステップと、
前記選択したN回分の検証パターンに対応するN回分の回答情報を複数回の対話で前記証明者から取得するステップと、
前記メッセージ、前記第1の情報、前記第3の情報、前記多次多変数多項式の組F、及び前記回答情報に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージは、前記公開鍵、前記第1の情報、前記第3の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られる情報である、
情報処理方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011-177335 | 2011-08-12 | ||
JP2011177335A JP2013042317A (ja) | 2011-08-12 | 2011-08-12 | 情報処理装置、及び情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2013024628A1 true WO2013024628A1 (ja) | 2013-02-21 |
Family
ID=47714957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2012/066011 WO2013024628A1 (ja) | 2011-08-12 | 2012-06-22 | 情報処理装置、及び情報処理方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2013042317A (ja) |
WO (1) | WO2013024628A1 (ja) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02266464A (ja) * | 1989-04-05 | 1990-10-31 | Nippon Telegr & Teleph Corp <Ntt> | 認証方法及びそれに用いる装置 |
-
2011
- 2011-08-12 JP JP2011177335A patent/JP2013042317A/ja not_active Withdrawn
-
2012
- 2012-06-22 WO PCT/JP2012/066011 patent/WO2013024628A1/ja active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02266464A (ja) * | 1989-04-05 | 1990-10-31 | Nippon Telegr & Teleph Corp <Ntt> | 認証方法及びそれに用いる装置 |
Non-Patent Citations (1)
Title |
---|
KOICHI SAKUMOTO ET AL.: "Public-Key Identification Schemes Based on Multivariate Quadratic Polynomials", ADVANCES IN CRYPTOLOGY- CRYPTO 2011 31ST ANNUAL CRYPTOLOGY CONFERENCE, SANTA BARBARA, CA, USA, AUGUST 14-18, 2011. PROCEEDINGS(LNCS 6841), vol. 6841, 6 August 2011 (2011-08-06), pages 706 - 723 * |
Also Published As
Publication number | Publication date |
---|---|
JP2013042317A (ja) | 2013-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5736816B2 (ja) | 認証装置、認証方法、プログラム、及び署名生成装置 | |
JP2013042315A (ja) | 情報処理装置、及び情報処理方法 | |
JP5593850B2 (ja) | 認証装置、認証方法、プログラム、及び署名生成装置 | |
JP5790289B2 (ja) | 情報処理装置、情報処理方法、プログラム、及び記録媒体 | |
JP5790287B2 (ja) | 情報処理装置、情報処理方法、プログラム、及び記録媒体 | |
JP5594034B2 (ja) | 認証装置、認証方法、及びプログラム | |
JP5790291B2 (ja) | 情報処理装置、署名提供方法、署名検証方法、プログラム、及び記録媒体 | |
JP5790286B2 (ja) | 情報処理装置、署名生成装置、情報処理方法、署名生成方法、及びプログラム | |
JP5790290B2 (ja) | 情報処理装置、情報処理方法、プログラム、及びプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP5790288B2 (ja) | 情報処理装置、及び情報処理方法 | |
WO2013024628A1 (ja) | 情報処理装置、及び情報処理方法 | |
JP2013047726A (ja) | 情報処理装置、署名生成装置、署名検証装置、情報処理方法、署名生成方法、及び署名検証方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 12824173 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 12824173 Country of ref document: EP Kind code of ref document: A1 |