JP2013042316A - 情報処理装置、情報処理方法、プログラム、及び記録媒体 - Google Patents
情報処理装置、情報処理方法、プログラム、及び記録媒体 Download PDFInfo
- Publication number
- JP2013042316A JP2013042316A JP2011177334A JP2011177334A JP2013042316A JP 2013042316 A JP2013042316 A JP 2013042316A JP 2011177334 A JP2011177334 A JP 2011177334A JP 2011177334 A JP2011177334 A JP 2011177334A JP 2013042316 A JP2013042316 A JP 2013042316A
- Authority
- JP
- Japan
- Prior art keywords
- information
- algorithm
- verifier
- prover
- vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- 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
-
- 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/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/3236—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 cryptographic hash functions
-
- 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/3271—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 challenge-response
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【解決手段】環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてメッセージを生成し、前記多次多変数多項式の組F及びベクトルy=(f1(s),…,fm(s))を保持する検証者に前記メッセージを提供し、k通り(k≧3)の検証パターンの中から前記検証者が選択した検証パターンに対応する回答情報を前記検証者に提供する情報処理装置が提供される。また、この情報処理装置は、複数のメッセージを検証者に送る際に、複数のメッセージや複数の情報をハッシュ値に纏めて送信する。
【選択図】図31
Description
ここで、以下に記載する本技術の実施形態に関する説明の流れについて簡単に述べる。まず、図1を参照しながら、公開鍵認証方式のアルゴリズム構成について説明する。次いで、図2を参照しながら、電子署名方式のアルゴリズム構成について説明する。次いで、図3を参照しながら、nパスの公開鍵認証方式について説明する。
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:まとめ
はじめに、本技術に係る実施形態について詳細に説明するに先立ち、公開鍵認証方式のアルゴリズム、電子署名方式のアルゴリズム、及びnパスの公開鍵認証方式について、その概要を簡単に説明する。
まず、図1を参照しながら、公開鍵認証方式のアルゴリズムについて概要を説明する。図1は、公開鍵認証方式のアルゴリズムについて概要を説明するための説明図である。
公開鍵認証方式のモデルには、図1に示すように、証明者と検証者という2つのエンティティが存在する。証明者は、鍵生成アルゴリズムGenを用いて、証明者固有の秘密鍵skと公開鍵pkの組を生成する。次いで、証明者は、鍵生成アルゴリズムGenを用いて生成した秘密鍵skと公開鍵pkの組を利用して検証者と対話プロトコルを実行する。このとき、証明者は、証明者アルゴリズムPを利用して対話プロトコルを実行する。上記の通り、証明者は、証明者アルゴリズムPを利用し、対話プロトコルの中で秘密鍵skを保有している証拠を検証者に提示する。
鍵生成アルゴリズムGenは、証明者により利用される。鍵生成アルゴリズムGenは、証明者に固有の秘密鍵skと公開鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された公開鍵pkは公開される。そして、公開された公開鍵pkは、検証者により利用される。一方、鍵生成アルゴリズムGenにより生成された秘密鍵skは、証明者が秘密に管理する。そして、証明者により秘密に管理される秘密鍵skは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するために利用される。形式的に、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、秘密鍵skと公開鍵pkを出力するアルゴリズムとして、下記の式(1)のように表現される。
証明者アルゴリズムPは、証明者により利用される。証明者アルゴリズムPは、公開鍵pkに対応する秘密鍵skを証明者が保有していることを検証者に対して証明するためのアルゴリズムである。つまり、証明者アルゴリズムPは、秘密鍵skと公開鍵pkとを入力とし、対話プロトコルを実行するアルゴリズムである。
検証者アルゴリズムVは、検証者により利用される。検証者アルゴリズムVは、対話プロトコルの中で、公開鍵pkに対応する秘密鍵skを証明者が保有しているか否かを検証するアルゴリズムである。検証者アルゴリズムVは、公開鍵pkを入力とし、対話プロトコルの実行結果に応じて0又は1(1bit)を出力するアルゴリズムである。なお、検証者は、検証者アルゴリズムVが0を出力した場合には証明者が不正なものであると判断し、1を出力した場合には証明者が正当なものであると判断する。形式的に、検証者アルゴリズムVは、下記の式(2)のように表現される。
次に、図2を参照しながら、電子署名方式のアルゴリズムについて概要を説明する。図2は、電子署名方式のアルゴリズムについて概要を説明するための説明図である。
電子署名方式のモデルには、図2に示すように、署名者及び検証者という2つのエンティティが存在する。そして、電子署名方式のモデルは、鍵生成アルゴリズムGen、署名生成アルゴリズムSig、署名検証アルゴリズムVerという3つのアルゴリズムにより構成される。
鍵生成アルゴリズムGenは、署名者により利用される。鍵生成アルゴリズムGenは、署名者固有の署名鍵skと検証鍵pkとの組を生成するアルゴリズムである。鍵生成アルゴリズムGenにより生成された検証鍵pkは公開される。一方、鍵生成アルゴリズムGenにより生成された署名鍵skは、署名者により秘密に管理される。そして、署名鍵skは、文書Mに付与される電子署名σの生成に利用される。例えば、鍵生成アルゴリズムGenは、セキュリティパラメータ1λ(λは0以上の整数)を入力とし、署名鍵sk及び公開鍵pkを出力する。この場合、鍵生成アルゴリズムGenは、形式的に、下記の式(3)のように表現することができる。
署名生成アルゴリズムSigは、署名者により利用される。署名生成アルゴリズムSigは、文書Mに付与される電子署名σを生成するアルゴリズムである。署名生成アルゴリズムSigは、署名鍵skと文書Mとを入力とし、電子署名σを出力するアルゴリズムである。この署名生成アルゴリズムSigは、形式的に、下記の式(4)のように表現することができる。
署名検証アルゴリズムVerは、検証者により利用される。署名検証アルゴリズムVerは、電子署名σが文書Mに対する正当な電子署名であるか否かを検証するアルゴリズムである。署名検証アルゴリズムVerは、署名者の検証鍵pk、文書M、電子署名σを入力とし、0又は1(1bit)を出力するアルゴリズムである。この署名検証アルゴリズムVerは、形式的に、下記の式(5)のように表現することができる。なお、検証者は、署名検証アルゴリズムVerが0を出力した場合(公開鍵pkが文書Mと電子署名σを拒否する場合)に電子署名σが不当であると判断し、1を出力した場合(公開鍵pkが文書Mと電子署名σを受理する場合)に電子署名σが正当であると判断する。
次に、図3を参照しながら、nパスの公開鍵認証方式について説明する。図3は、nパスの公開鍵認証方式について説明するための説明図である。
以下、本技術の第1実施形態について説明する。本実施形態は、多次多変数連立方程式に対する求解問題の困難性に安全性の根拠をおく公開鍵認証方式及び電子署名方式に関する。但し、本実施形態は、HFE電子署名方式などの従来手法とは異なり、効率的に解く手段(トラップドア)を持たない多次多変数連立方程式を利用する公開鍵認証方式及び電子署名方式に関する。
まず、図4を参照しながら、本実施形態に係る公開鍵認証方式(以下、本手法)のアルゴリズムについて説明する。図4は、本手法のアルゴリズムについて説明するための説明図である。なお、本手法は、鍵生成アルゴリズムGen、証明者アルゴリズムP、検証者アルゴリズムVにより構成される。以下、各アルゴリズムの構成について説明する。
鍵生成アルゴリズム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)と表記することにする。
次に、図4を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。
まず、証明者アルゴリズム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は、z←s−rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、FB(x)←F(x+r)+FA(x)を計算する。この計算は、xに関して多変数多項式F(x+r)を多変数多項式FA(x)によりマスクする操作に相当する。
次いで、証明者アルゴリズム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に関する情報が検証者に一切漏れない点に注意されたい。
メッセージ(c1,c2,c3)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
要求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に関する情報が検証者に一切漏れない点に注意されたい。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
ここで、本手法の健全性について説明を補足する。本手法の健全性は、「検証者アルゴリズムVが選択可能な要求d=0,1,2の全てについて、証明者アルゴリズムPが正しい返答σを返したならば、下記の式(6)及び式(7)を満たすFD、FC、rA、zAが計算可能になる」という論理に基づいて保証されている。
ここで、上記アルゴリズムの一変形例を紹介する。上記の鍵生成アルゴリズム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として対話プロトコルを実行することが可能になる。
次に、図5を参照しながら、本手法を拡張した公開鍵認証方式(以下、拡張手法)のアルゴリズムについて説明する。図5は、拡張手法に基づく対話プロトコルの流れについて説明するための説明図である。
鍵生成アルゴリズム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)と表記することにする。
次に、図5を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。
まず、証明者アルゴリズム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は、z←s−rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、FB(x)←F(x+r)+FA(x)を計算する。この計算は、xについての多項式の組F(x+r)を多項式の組FA(x)によりマスクする操作に相当する。
次いで、証明者アルゴリズム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に送る。
ハッシュ値cを受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
要求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に送られる。
返答σを受け取った検証者アルゴリズムVは、受け取った返答(σ,c*)を利用して以下の検証処理を実行する。
先に述べた通り、本手法又は拡張手法に係る対話プロトコルを適用すれば、偽証が成功する確率を2/3以下に抑制することができる。従って、この対話プロトコルを2回実行すれば、偽証が成功する確率を(2/3)2以下に抑制することができる。さらに、この対話プロトコルをN回実行すると、偽証が成功する確率は(2/3)Nとなり、Nを十分に大きい数(例えば、N=140)にすれば、偽証が成功する確率は無視できる程度に小さくなる。
鍵生成アルゴリズム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)と表記することにする。
次に、図6を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。
まず、証明者アルゴリズム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)はメッセージである。
メッセージ(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に送られる。
要求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に送られる。
返答σi(i=1〜N)を受け取った検証者アルゴリズムVは、受け取った返答σi(i=1〜N)を利用して以下の検証処理を実行する。なお、以下の処理は、i=1〜Nについて実行される。
さて、本実施形態に係る対話プロトコルは、受動的攻撃に対する安全性が保証されている。しかし、この対話プロトコルを並列的に繰り返し実行する上記の方法を適用した場合、能動的攻撃に対する安全性が確実に保証されていることを証明できるようにするには、以下に示すような条件が必要になる。
次に、図7を参照しながら、多変数多項式Fとしてn変数2次多項式を利用する場合について説明する。図7は、本手法の一具体例について説明するための説明図である。
鍵生成アルゴリズム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)のように表現されるものとする。
次に、図7を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVにより実行される処理について説明する。
まず、証明者アルゴリズム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は、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は、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に送られる。
メッセージ(c1,c2,c3)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送る返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(wA,z)を生成する。d=2の場合、証明者アルゴリズムPは、返答σ=(FB(z),z)を生成する。工程#3で生成された返答σは、検証者アルゴリズムVに送られる。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
次に、本手法に係るアルゴリズムを効率化する方法について述べる。2次多項式の組(f1(x),…,fm(x))は、下記の式(10)のように表現することができる。但し、x=(x1,…,xn)である。また、A1,…,Amは、n×n行列である。さらに、b1,…,bmはそれぞれn×1ベクトルである。
まず、図8に示した効率的なアルゴリズムの構成について説明する。
証明者アルゴリズム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は、上記の式(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に送られる。
メッセージ(c1,c2,c3)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送る返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(wA,z)を生成する。d=2の場合、証明者アルゴリズムPは、返答σ=(tA,eA,z)を生成する。工程#3で生成された返答σは、検証者アルゴリズムVに送られる。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
次に、図9に示した効率的なアルゴリズムの構成について説明する。図9に示した構成を適用した場合も、図8に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図8に示した構成との差分について述べる。
次に、図10に示した効率的なアルゴリズムの構成について説明する。
証明者アルゴリズムPは、任意にベクトルr,t∈Kn及びe∈Kmを生成する。次いで、証明者アルゴリズムPは、rA←s−rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。さらに、証明者アルゴリズムPは、tA←r-tを計算する。次いで、証明者アルゴリズムPは、eA←F(r)−eを計算する。
次いで、証明者アルゴリズム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に送られる。
メッセージ(c1,c2,c3)を受け取った検証者アルゴリズムVは、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送る返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=(r,tA,eA)を生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(rA,t,e)を生成する。d=2の場合、証明者アルゴリズムPは、返答σ=(rA,tA,eA)を生成する。工程#3で生成された返答σは、検証者アルゴリズムVに送られる。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
次に、図11を参照しながら、効率的なアルゴリズムを並列化する方法について説明する。図11に示した構成(以下、並列化アルゴリズム)は、上記の構成例3に係る効率的なアルゴリズムを並列化したものである。
証明者アルゴリズム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)を計算する。
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に送ることで、通信量を削減することが可能になる。
ハッシュ値Cmtを受け取った検証者アルゴリズムVは、i=1〜Nのそれぞれについて、3つの検証パターンのうち、どの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1〜Nのそれぞれについて、検証パターンの種類を表す3つの数値{0,1,2}の中から1つの数値を選択し、選択した数値を要求diに設定する。これらの要求d1,…,dNは、証明者アルゴリズムPに送られる。
要求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)を生成する。
返答Rsp1,…,RspNを受け取った検証者アルゴリズムVは、受け取った返答Rsp1,…,RspNを利用して以下の処理(1)〜処理(3)をi=1〜Nについて実行する。但し、検証者アルゴリズムVは、di=0の場合に処理(1)を実行し、di=1の場合に処理(2)を実行し、di=2の場合に処理(3)を実行する。
ここで、本手法に係る公開鍵認証方式を電子署名方式へと変形する方法を紹介する。なお、公開鍵認証方式のモデルにおける証明者を電子署名方式における署名者に対応させると、証明者のみが検証者を納得させられるという点において、電子署名方式のモデルと近似していることが容易に理解されよう。こうした考えに基づき、本手法に係る公開鍵認証方式を電子署名方式へと変形する方法について説明する。
ここでは、上記の効率的なアルゴリズムの構成例3を電子署名方式のアルゴリズムに変形する方法を例に挙げて説明する。構成例3に係るアルゴリズムは、図12に示すように、おおまかに以下の4つの工程#1〜工程#4で表現される。
まず、署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)〜処理(5)で構成される。
処理(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は、以下の処理(1)〜処理(3)で構成される。
処理(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)を検証する。
さて、図13に示した署名生成アルゴリズムSigの構成に注目すると、処理(2)及び処理(3)でハッシュ値の計算を行っていることに気づくであろう。また、署名検証アルゴリズムVerの構成に注目すると、処理(1)において、署名生成アルゴリズムSigの処理(3)と同じハッシュ値の計算を行っていることに気づくであろう。これらの処理に注目し、図13に示すように署名生成アルゴリズムSig及び署名検証アルゴリズムVerの構成を改良することで、さらに計算効率を向上させることができる。
まず、改良後の署名生成アルゴリズムSigの構成について述べる。署名生成アルゴリズムSigは、以下の処理(1)〜処理(4)で構成される。
処理(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は、以下の処理(1)及び処理(2)で構成される。
処理(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)を検証する。
これまで説明してきたように、本手法は、多次多変数連立方程式の求解問題に対する解答の困難性に安全性の根拠をおく方式である。また、本手法は、複雑な多次多変数連立方程式を利用可能な点に特徴がある。ここまでの説明においては多次多変数連立方程式の形式に特別な限定を行ってこなかったが、例えば、十分に困難性が補償されている暗号要素技術を表現に含む多次多変数連立方程式を利用することが好ましい。以下、本手法に適用可能な多次多変数連立方程式の具体例を紹介する。
AES、DES、KATANなどの共通鍵ブロック暗号技術は、よく解析され、安全性及び信頼性が高い要素技術である。これらの共通鍵ブロック暗号は、共通鍵ブロック暗号の鍵、平文、暗号文を変数とする多次多変数連立方程式により表現することができる。この多次多変数連立方程式において平文と暗号文を表現する変数に値を与えると、この多次多変数連立方程式は、鍵を表現する変数だけを変数に持つ方程式になる。
同様に、SHA−1、SHA−256などのハッシュ関数に関する多次多変数連立方程式を本手法に適用することも可能である。これらのハッシュ関数は、ハッシュ関数の入力となるメッセージと出力となるハッシュ値を変数とする多次多変数連立方程式で表現することができる。この多次多変数連立方程式において、ハッシュ値を表現する変数に適当な値を与えると、対応する入力を表現した変数に関する多次多変数連立方程式が得られる。
同様に、Triviumなどのストリーム暗号に関する多次多変数連立方程式を本手法に適用することも可能である。これらのストリーム暗号は、ストリーム暗号の初期の内部状態を表現する変数及び出力されるストリームを表現する変数に関する多次多変数連立方程式で表現することが可能である。この場合、出力ストリームを表現する変数に適当な値を与えると、対応する初期の内部状態を表現するための変数に関する多次多変数連立方程式が得られる。
偽証が成功する確率を無視できる程度にまで小さくするために、対話プロトコルを複数回実行する必要性については既に説明した通りである。また、対話プロトコルを複数回実行する方法として、直列的な方法と並列的な方法とを紹介した。特に、並列的な方法については、具体的な並列化アルゴリズムを示して説明した。ここでは、直列的な方法と並列的な方法とを組み合わせたハイブリッドタイプのアルゴリズムを紹介する。
図14を参照しながら、ハイブリッドタイプのアルゴリズム(以下、並直列アルゴリズム)について説明する。図14には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び並直列アルゴリズムを示した。
図15を参照しながら、他のハイブリッドタイプのアルゴリズム(以下、直並列アルゴリズム)について説明する。図15には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び直並列アルゴリズムを示した。なお、基本構成、直列化アルゴリズム、並列化アルゴリズムの構成及び性質については、上記の通りである。
次に、本技術の第2実施形態について説明する。これまで3パスの公開鍵認証方式について説明してきた。本実施形態では、5パスの公開鍵認証方式(以下、本手法)について説明する。本手法は、検証者の検証パターンを2q通りにすることにより、公開鍵認証方式の健全性を確保する方式である。
以下、図16を参照しながら、5パスの公開鍵認証方式(本手法)に係るアルゴリズム構成について説明する。図16は、本手法に係るアルゴリズムの構成について説明するための説明図である。
鍵生成アルゴリズム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)と表記する。
次に、図16を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVが実行する処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図16に示したフローチャートに沿って説明を進める。
まず、証明者アルゴリズム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は、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に関する情報が検証者に一切漏れない点に注意されたい。
検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数αを選択し、選択した数αを証明者アルゴリズムPに送る。
数αを受け取った証明者アルゴリズムPは、FB(x)←αF(x+r)+FA(x)を計算する。この計算は、xに関して多変数多項式F(x+r)を多変数多項式FA(x)によりマスクする操作に相当する。工程#3で生成された多変数多項式FBは、検証者アルゴリズムVに送られる。このとき、d=0の場合にはzに関する情報が検証者に一切漏れておらず、d=1の場合にはrに関する情報が検証者に一切漏れない点に注意されたい。
多変数多項式FBを受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送り返す返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=zを生成する。工程#5で生成された返答σは、検証者アルゴリズムVに送られる。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
本手法の健全性は、証明者アルゴリズムPが(c1,c2)、及び、検証者アルゴリズムVが選択する2通りの(α1,α2)について、要求d=0及び1に正しく回答した場合に、その回答内容から下記の式(15)〜式(17)を満たすF1 D、F2 D、FC、rA、zAを計算できるということから保証されている。
上記の鍵生成アルゴリズム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として対話プロトコルを実行することが可能になる。
次に、図17を参照しながら、本手法を拡張した公開鍵認証方式(以下、拡張手法)のアルゴリズムについて説明する。図17は、拡張手法に基づく対話プロトコルの流れについて説明するための説明図である。
鍵生成アルゴリズム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)と表記する。
次に、図17を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVが実行する処理について説明する。この対話プロトコルの中で、証明者は、秘密鍵sの情報を検証者に一切漏らさずに、「自身がy=F(s)を満たすsを知っていること」を検証者に示す。一方、検証者は、証明者がy=F(s)を満たすsを知っているか否かを検証する。なお、公開鍵pkは、検証者に公開されているものとする。また、秘密鍵sは、証明者により秘密に管理されているものとする。以下、図17に示したフローチャートに沿って説明を進める。
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器Gに数wを適用してベクトルr∈Kn及び多変数多項式FA(x)を生成する。つまり、証明者アルゴリズムPは、(r,FA)←G(w)を計算する。次いで、証明者アルゴリズムPは、z←s−rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。
次いで、証明者アルゴリズムPは、FA(z)及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FA(z),z)を計算する。また、証明者アルゴリズムPは、数wのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(w)を計算する。なお、上記のH1(…)、H2(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2)は、検証者アルゴリズムVに送られる。
メッセージ(c1,c2)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数αを選択し、選択した数αを証明者アルゴリズムPに送る。
数αを受け取った証明者アルゴリズム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は、検証者に送られる。
メッセージc3を受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送り返す返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=(z,FB)を生成する。工程#5で生成された返答σは、検証者アルゴリズムVに送られる。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
さて、先に述べた通り、本手法又は拡張手法に係る対話プロトコルを適用すれば、偽証が成功する確率を(1/2+1/q)以下に抑制することができる。従って、この対話プロトコルを2回実行すれば、偽証が成功する確率を(1/2+1/q)2以下に抑制することができる。さらに、この対話プロトコルをN回実行すると、偽証が成功する確率は(1/2+1/q)Nとなり、Nを十分に大きい数(例えば、N=80)にすれば、偽証が成功する確率は無視できる程度に小さくなる。
鍵生成アルゴリズム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)と表記する。
次に、図18を参照しながら、対話プロトコルの中で証明者アルゴリズムPが実行する処理及び検証者アルゴリズムVが実行する処理について説明する。
まず、証明者アルゴリズム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)を計算する。
メッセージ(c1,i,c2,i)(i=1〜N)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムにN個の数α1,…,αNを選択する。そして、検証者アルゴリズムVは、選択した数α1,…,αNを証明者アルゴリズムPに送る。
数α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に送る。
多変数多項式F1 B,…,FN Bを受け取った検証者アルゴリズムVは、i=1〜Nのそれぞれについて、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1〜Nのそれぞれについて、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求diに設定する。この要求diは証明者アルゴリズムPに送られる。
要求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に送られる。
返答σi(i=1〜N)を受け取った検証者アルゴリズムVは、受け取った返答σi(i=1〜N)を利用して以下の検証処理を実行する。なお、以下の処理は、i=1〜Nについて実行される。
上記の工程#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の構成については本手法に係る並列化アルゴリズムと同じであるため、詳細な説明を省略する。
まず、証明者アルゴリズム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)を計算する。
メッセージ(c1,i,c2,i)(i=1〜N)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムにN個の数α1,…,αNを選択する。そして、検証者アルゴリズムVは、選択した数α1,…,αNを証明者に送る。
数α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に送られる。
メッセージc3を受け取った検証者アルゴリズムVは、i=1〜Nのそれぞれについて、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、i=1〜Nのそれぞれについて、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求diに設定する。この要求diは証明者アルゴリズムPに送られる。
要求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に送られる。
返答σi(i=1〜N)を受け取った検証者アルゴリズムVは、受け取った返答σi(i=1〜N)を利用して以下の検証処理を実行する。なお、以下の処理は、i=1〜Nについて実行される。
さて、上記の第1実施形態に係る対話プロトコルと同様、本実施形態に係る対話プロトコルは、受動的攻撃に対する安全性レベルを保証している。しかし、この対話プロトコルを並列的に繰り返し実行する上記の方法を適用した場合、能動的攻撃に対する安全性レベルが確実に保証されているということを証明するには、以下で説明するような条件が必要になる。
次に、図20を参照しながら、多変数多項式Fとしてn変数2次多項式を利用する場合について説明する。図20は、本手法の一具体例について説明するための説明図である。
鍵生成アルゴリズム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)と表記する。
次に、図20を参照しながら、対話プロトコルの中で証明者アルゴリズムP及び検証者アルゴリズムVにより実行される処理について説明する。
まず、証明者アルゴリズム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は、FA(z)及びzのハッシュ値c1を生成する。つまり、証明者アルゴリズムPは、c1←H1(FA(z),z)を計算する。また、証明者アルゴリズムPは、数wのハッシュ値c2を生成する。つまり、証明者アルゴリズムPは、c2←H2(w)を計算する。なお、上記のH1(…)、H2(…)は、ハッシュ関数である。工程#1で生成されたメッセージ(c1,c2)は、検証者アルゴリズムVに送られる。
メッセージ(c1,c2)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数αを選択し、選択した数αを証明者アルゴリズムPに送る。
数αを受け取った証明者アルゴリズムPは、FB(x)←αF(x+r)+FA(x)を計算する。この計算は、xに関して多変数多項式F(x+r)を多変数多項式FA(x)によりマスクする操作に相当する。工程#3で生成された多変数多項式FBは、検証者アルゴリズムVに送られる。
多変数多項式FBを受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送り返す返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=zを生成する。工程#5で生成された返答σは、検証者アルゴリズムVに送られる。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
次に、本手法に係るアルゴリズムを効率化する方法について述べる。上記の第1実施形態において考察した効率化方法と同様、2つのベクトルt∈Kn、e∈Kmを用いて、多変数多項式F(x+r)をマスクするために用いた多変数多項式FA(x)をFA(x)=Fb(x、t)+eのように表現する。この表現を用いると、多変数多項式F(x+r)について、下記の式(19)で表現される関係が得られる。
まず、図21に示した効率的なアルゴリズムの構成について説明する。
まず、証明者アルゴリズムPは、任意に数wを選択する。次いで、証明者アルゴリズムPは、擬似乱数生成器Gに数wを適用してベクトルr∈Kn、t∈Kn、e∈Kmを生成する。つまり、証明者アルゴリズムPは、(r,t,e)←G(w)を計算する。次いで、証明者アルゴリズムPは、z←s−rを計算する。この計算は、秘密鍵sをベクトルrによりマスクする操作に相当する。
次いで、証明者アルゴリズム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に送られる。
メッセージ(c1,c2)を受け取った検証者アルゴリズムVは、q通り存在する環Kの元からランダムに1つの数αを選択し、選択した数αを証明者アルゴリズムPに送る。
数αを受け取った証明者アルゴリズムPは、tA←αr+tを計算する。さらに、証明者アルゴリズムPは、eA←αF(r)+eを計算する。そして、証明者アルゴリズムPは、tA及びeAを検証者アルゴリズムVに送る。
tA及びeAを受け取った検証者アルゴリズムVは、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求dに設定する。この要求dは証明者アルゴリズムPに送られる。
要求dを受け取った証明者アルゴリズムPは、受け取った要求dに応じて検証者アルゴリズムVに送り返す返答σを生成する。d=0の場合、証明者アルゴリズムPは、返答σ=wを生成する。d=1の場合、証明者アルゴリズムPは、返答σ=zを生成する。工程#5で生成された返答σは、検証者アルゴリズムVに送られる。
返答σを受け取った検証者アルゴリズムVは、受け取った返答σを利用して以下の検証処理を実行する。
次に、図22に示した効率的なアルゴリズムの構成について説明する。図22に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図20に示した構成との差分について述べる。
次に、図23に示した効率的なアルゴリズムの構成について説明する。図23に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図22に示した構成との差分について述べる。
次に、図24に示した効率的なアルゴリズムの構成について説明する。図24に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図22に示した構成との差分について述べる。
次に、図25に示した効率的なアルゴリズムの構成について説明する。図25に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図22に示した構成との差分について述べる。
次に、図26に示した効率的なアルゴリズムの構成について説明する。図26に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図25に示した構成との差分について述べる。
次に、図27に示した効率的なアルゴリズムの構成について説明する。図27に示した構成を適用した場合も、図20に示した構成を適用した場合と同様に、通信効率及び計算効率の向上効果が得られる。但し、ここでは図25に示した構成との差分について述べる。
次に、図29を参照しながら、効率的なアルゴリズムを並列化する方法について説明する。図29に示した構成(以下、並列化アルゴリズム)は、図28に示した効率的なアルゴリズムを並列化したものである。なお、図28に示した効率的なアルゴリズムは、図22に示した効率的なアルゴリズムと実質的に同じ構成を有するアルゴリズムである。以下、図29に示したフローチャートに沿って説明を進める。
証明者アルゴリズム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に送られる。
メッセージ(c1,1,c2,1,…,c1,N,c2,N)を受け取った検証者アルゴリズムVは、i=1〜Nのそれぞれについて、q通り存在する環Kの元からランダムに1つの数αiを選択し、選択した数αiを証明者アルゴリズムPに送る。
数α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に送る。
t1 A,…,tN A及びe1 A,…,eN Aを受け取った検証者アルゴリズムVは、i=1〜Nのそれぞれについて、2つの検証パターンのうち、どちらの検証パターンを利用するかを選択する。例えば、検証者アルゴリズムVは、検証パターンの種類を表す2つの数値{0,1}の中から1つの数値を選択し、選択した数値を要求diに設定する。この要求di(i=1〜N)は証明者アルゴリズムPに送られる。
要求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に送られる。
返答σi(i=1〜N)を受け取った検証者アルゴリズムVは、受け取った返答σi(i=1〜N)を利用して以下の検証処理を実行する。
図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において、次のような処理を実行するように構成されている。
まず、検証者アルゴリズム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を出力する。
図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において、次のような処理を実行するように構成されている。
まず、検証者アルゴリズム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を出力する。
偽証が成功する確率を無視できる程度にまで小さくするために、対話プロトコルを複数回実行する必要性については既に説明した通りである。また、対話プロトコルを複数回実行する方法として、直列的な方法と並列的な方法とを紹介した。特に、並列的な方法については、具体的な並列化アルゴリズムを示して説明した。ここでは、直列的な方法と並列的な方法とを組み合わせたハイブリッドタイプのアルゴリズムを紹介する。
図32を参照しながら、ハイブリッドタイプのアルゴリズム(以下、並直列アルゴリズム)について説明する。図32には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び並直列アルゴリズムを示した。
図33を参照しながら、他の並直列アルゴリズムについて説明する。図33には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び並直列アルゴリズムを示した。なお、基本構成、直列化アルゴリズム、並列化アルゴリズムの構成及び性質については、上記の通りである。
図34を参照しながら、他のハイブリッドタイプのアルゴリズム(以下、直並列アルゴリズム)について説明する。図34には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び直並列アルゴリズムを示した。なお、基本構成、直列化アルゴリズム、並列化アルゴリズムの構成及び性質については、上記の通りである。
図35を参照しながら、他の直並列アルゴリズムについて説明する。図35には、本手法に係る基本構成、この基本構成を直列化した直列化アルゴリズム、並列化した並列化アルゴリズム、及び直並列アルゴリズムを示した。なお、基本構成、直列化アルゴリズム、並列化アルゴリズムの構成及び性質については、上記の通りである。
ところで、上記の第1及び第2実施形態に係る効率的なアルゴリズムは、下記の式(20)で表現される2次の多変数多項式を公開鍵(又はシステムパラメータ)として利用する構成であった。しかし、上記の効率的なアルゴリズムは、3次以上の次数を有する多変数多項式を公開鍵(又はシステムパラメータ)として利用する構成に拡張することができる。
例えば、位数q=pkの体上で定義される3次以上の多変数多項式(下記の式(21)を参照)を公開鍵(又はシステムパラメータ)として利用する構成について考えてみよう。
ところで、3次以上の多次多項式を利用する方法として、2次多項式に3次以上の項を追加する方法も考えられる。例えば、下記の式(25)に示すように、上記の式(20)で表現される2次多項式に4次の項を追加する方法が考えられる。多次多項式flを下記の式(25)のように定義すると、下記の式(26)で定義される項gl(x,y)は、下記の式(27)のように表現される。なお、以下では、項gl(x,y)のことをpolar formと呼ぶことがある。
ここで、上記の第1及び第2実施形態に係るアルゴリズムの頑強性を更に高めるための仕組みについて紹介する。
これまで、多変数多項式の係数又はその係数の生成に利用する乱数シード(以下、多変数多項式の係数等)をどのように設定するかについては詳しく言及してこなかった。多変数多項式の係数等は、システムに共通のパラメータとしてもよいし、ユーザ毎に異なるパラメータとしてもよい。
次に、イレギュラーな要求に対する応答方法について説明する。
図36に示すように、対話プロトコルの中で、検証者が偽りの要求を投げかけてくる可能性が考えられる。図36の例では、証明者が検証者へとメッセージ(c1,c2,c3)を送り、検証者が証明者へと要求d=0を送った後、証明者から検証者へと要求d=0に対応する返答σが送られている。ここまでは正常な対話である。
また、図37に示すように、証明者が偽って要求dの再送を要求してくる可能性もある。図37の例では、証明者が検証者へとメッセージ(c1,c2,c3)を送り、検証者が証明者へと要求d=0を送った後、証明者が要求dの再送を要求している。この要求に応じて、検証者が再びランダムに要求dを選択すると、先に送った要求d=0とは異なる要求d=1が選択される可能性がある。この場合、検証者から証明者へと要求d=1が送られる。図37の例において、証明者は、要求d=1に対応する返答σを検証者に送っている。
上記の各アルゴリズムは、例えば、図38に示す情報処理装置のハードウェア構成を用いて実行することが可能である。つまり、当該各アルゴリズムの処理は、コンピュータプログラムを用いて図38に示すハードウェアを制御することにより実現される。なお、このハードウェアの形態は任意であり、例えば、パーソナルコンピュータ、携帯電話、PHS、PDA等の携帯情報端末、ゲーム機、接触式又は非接触式のICチップ、接触式又は非接触式のICカード、又は種々の情報家電がこれに含まれる。但し、上記のPHSは、Personal Handy−phone Systemの略である。また、上記のPDAは、Personal Digital Assistantの略である。
最後に、本技術の実施形態に係る技術内容について簡単に纏める。ここで述べる技術内容は、例えば、PC、携帯電話、ゲーム機、情報端末、情報家電、カーナビゲーションシステム等、種々の情報処理装置に対して適用することができる。なお、以下で述べる情報処理装置の機能は、1台の情報処理装置を利用して実現することも可能であるし、複数台の情報処理装置を利用して実現することも可能である。また、以下で述べる情報処理装置が処理を実行する際に用いるデータ記憶手段及び演算処理手段は、当該情報処理装置に設けられたものであってもよいし、ネットワークを介して接続された機器に設けられたものであってもよい。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成すると共に、N回分の前記メッセージから1つの第1のハッシュ値を算出するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記第1のハッシュ値を提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成すると共に、N回分の前記第3の情報から1つの第2のハッシュ値を生成する中間情報生成部と、
前記検証者に前記第2のハッシュ値を提供する中間情報提供部と、
N回分の前記メッセージのそれぞれについて前記検証者がk通り(k≧2)の検証パターンの中から選択した検証パターンに対応するN回分の回答情報、及び、前記多次多変数多項式の組Fと、前記ベクトルyと、前記回答情報とを利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージ及び一部の第3の情報を前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られるか、或いは、当該回答情報から得られる情報である、
情報処理装置。
前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)−F(x)−F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
上記(1)に記載の情報処理装置。
前記多次多変数多項式の組Fは、前記公開鍵を生成するユーザ毎に異なる情報を用いて生成される、
上記(1)又は(2)に記載の情報処理装置。
前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)−F(x)−F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定された2次多変数多項式の組FA=(f1 A,…,fm A)と、3次以上の次数を有する項の組GA=(g1 A,…,gm A)とを加算したものである、
上記(1)に記載の情報処理装置。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージから算出された1つの第1のハッシュ値を取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供部と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報から算出された1つの第2のハッシュ値を取得する中間情報取得部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに選択した検証パターンの情報を前記証明者に提供するパターン情報提供部と、
N回分の前記メッセージのそれぞれについて選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得部と、
前記多次多変数多項式の組F、前記ベクトルy、前記第1の情報、前記回答情報、前記第1のハッシュ値、及び前記第2のハッシュ値に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行するか、或いは、当該回答情報から得られる情報である、
情報処理装置。
前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)−F(x)−F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
上記(5)に記載の情報処理装置。
前記多次多変数多項式の組Fは、前記公開鍵を生成するユーザ毎に異なる情報を用いて生成される、
上記(5)又は(6)に記載の情報処理装置。
前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)−F(x)−F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定された2次多変数多項式の組FA=(f1 A,…,fm A)と、3次以上の次数を有する項の組GA=(g1 A,…,gm A)とを加算したものである、
上記(5)に記載の情報処理装置。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成すると共に、N回分の前記メッセージから1つの第1のハッシュ値を算出するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記第1のハッシュ値を提供するステップと、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成すると共に、N回分の前記第3の情報から1つの第2のハッシュ値を生成するステップと、
前記検証者に前記第2のハッシュ値を提供するステップと、
N回分の前記メッセージのそれぞれについて前記検証者がk通り(k≧2)の検証パターンの中から選択した検証パターンに対応するN回分の回答情報、及び、前記多次多変数多項式の組Fと、前記ベクトルyと、前記回答情報とを利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージ及び一部の第3の情報を前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られるか、或いは、当該回答情報から得られる情報である、
情報処理方法。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージから算出された1つの第1のハッシュ値を取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供するステップと、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報から算出された1つの第2のハッシュ値を取得するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに選択した検証パターンの情報を前記証明者に提供するパターン情報提供部と、
N回分の前記メッセージのそれぞれについて選択した検証パターンに対応する回答情報を前記証明者から取得するステップと、
前記多次多変数多項式の組F、前記ベクトルy、前記第1の情報、前記回答情報、前記第1のハッシュ値、及び前記第2のハッシュ値に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行するか、或いは、当該回答情報から得られる情報である、
情報処理方法。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成すると共に、N回分の前記メッセージから1つの第1のハッシュ値を算出するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記第1のハッシュ値を提供するメッセージ提供機能と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成すると共に、N回分の前記第3の情報から1つの第2のハッシュ値を生成する中間情報生成機能と、
前記検証者に前記第2のハッシュ値を提供する中間情報提供機能と、
N回分の前記メッセージのそれぞれについて前記検証者がk通り(k≧2)の検証パターンの中から選択した検証パターンに対応するN回分の回答情報、及び、前記多次多変数多項式の組Fと、前記ベクトルyと、前記回答情報とを利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージ及び一部の第3の情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られるか、或いは、当該回答情報から得られる情報である、
プログラム。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持機能と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージから算出された1つの第1のハッシュ値を取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供機能と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報から算出された1つの第2のハッシュ値を取得する中間情報取得機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに選択した検証パターンの情報を前記証明者に提供するパターン情報提供部と、
N回分の前記メッセージのそれぞれについて選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得機能と、
前記多次多変数多項式の組F、前記ベクトルy、前記第1の情報、前記回答情報、前記第1のハッシュ値、及び前記第2のハッシュ値に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行するか、或いは、当該回答情報から得られる情報である、
プログラム。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成すると共に、N回分の前記メッセージから1つの第1のハッシュ値を算出するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記第1のハッシュ値を提供するメッセージ提供機能と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成すると共に、N回分の前記第3の情報から1つの第2のハッシュ値を生成する中間情報生成機能と、
前記検証者に前記第2のハッシュ値を提供する中間情報提供機能と、
N回分の前記メッセージのそれぞれについて前記検証者がk通り(k≧2)の検証パターンの中から選択した検証パターンに対応するN回分の回答情報、及び、前記多次多変数多項式の組Fと、前記ベクトルyと、前記回答情報とを利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージ及び一部の第3の情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムが記録された、コンピュータにより読み取り可能な記録媒体であり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られるか、或いは、当該回答情報から得られる情報である、
記録媒体。
環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持機能と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージから算出された1つの第1のハッシュ値を取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供機能と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報から算出された1つの第2のハッシュ値を取得する中間情報取得機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに選択した検証パターンの情報を前記証明者に提供するパターン情報提供部と、
N回分の前記メッセージのそれぞれについて選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得機能と、
前記多次多変数多項式の組F、前記ベクトルy、前記第1の情報、前記回答情報、前記第1のハッシュ値、及び前記第2のハッシュ値に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムが記録された、コンピュータにより読み取り可能な記録媒体であり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行するか、或いは、当該回答情報から得られる情報である、
記録媒体。
前記m及びnは、m<nの関係を有する、
上記(1)〜(8)のいずれか1項に記載の情報処理装置。
前記m及びnは、2m−n≪1の関係を有する、
上記(15)に記載の情報処理装置。
上記の証明者アルゴリズムPは、メッセージ生成部、メッセージ提供部、回答提供部、中間情報生成部、中間情報提供部の一例である。また、上記の検証者アルゴリズムVは、情報保持部、メッセージ取得部、パターン情報提供部、回答取得部、検証部、中間情報取得部の一例である。
P 証明者アルゴリズム
V 検証者アルゴリズム
Sig 署名生成アルゴリズム
Ver 署名検証アルゴリズム
Claims (14)
- 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成すると共に、N回分の前記メッセージから1つの第1のハッシュ値を算出するメッセージ生成部と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記第1のハッシュ値を提供するメッセージ提供部と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成すると共に、N回分の前記第3の情報から1つの第2のハッシュ値を生成する中間情報生成部と、
前記検証者に前記第2のハッシュ値を提供する中間情報提供部と、
N回分の前記メッセージのそれぞれについて前記検証者がk通り(k≧2)の検証パターンの中から選択した検証パターンに対応するN回分の回答情報、及び、前記多次多変数多項式の組Fと、前記ベクトルyと、前記回答情報とを利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージ及び一部の第3の情報を前記検証者に提供する回答提供部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られるか、或いは、当該回答情報から得られる情報である、
情報処理装置。 - 前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)−F(x)−F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
請求項1に記載の情報処理装置。 - 前記多次多変数多項式の組Fは、前記公開鍵を生成するユーザ毎に異なる情報を用いて生成される、
請求項1に記載の情報処理装置。 - 前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)−F(x)−F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定された2次多変数多項式の組FA=(f1 A,…,fm A)と、3次以上の次数を有する項の組GA=(g1 A,…,gm A)とを加算したものである、
請求項1に記載の情報処理装置。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持部と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージから算出された1つの第1のハッシュ値を取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供部と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報から算出された1つの第2のハッシュ値を取得する中間情報取得部と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに選択した検証パターンの情報を前記証明者に提供するパターン情報提供部と、
N回分の前記メッセージのそれぞれについて選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得部と、
前記多次多変数多項式の組F、前記ベクトルy、前記第1の情報、前記回答情報、前記第1のハッシュ値、及び前記第2のハッシュ値に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証部と、
を備え、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行するか、或いは、当該回答情報から得られる情報である、
情報処理装置。 - 前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)−F(x)−F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定される、
請求項5に記載の情報処理装置。 - 前記多次多変数多項式の組Fは、前記公開鍵を生成するユーザ毎に異なる情報を用いて生成される、
請求項5に記載の情報処理装置。 - 前記多次多変数多項式の組Fは、Fb(x,y)=F(x+y)−F(x)−F(y)で定義されるFb(x,y)がx及びyに関して双線形となるように設定された2次多変数多項式の組FA=(f1 A,…,fm A)と、3次以上の次数を有する項の組GA=(g1 A,…,gm A)とを加算したものである、
請求項5に記載の情報処理装置。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成すると共に、N回分の前記メッセージから1つの第1のハッシュ値を算出するステップと、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記第1のハッシュ値を提供するステップと、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成すると共に、N回分の前記第3の情報から1つの第2のハッシュ値を生成するステップと、
前記検証者に前記第2のハッシュ値を提供するステップと、
N回分の前記メッセージのそれぞれについて前記検証者がk通り(k≧2)の検証パターンの中から選択した検証パターンに対応するN回分の回答情報、及び、前記多次多変数多項式の組Fと、前記ベクトルyと、前記回答情報とを利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージ及び一部の第3の情報を前記検証者に提供するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られるか、或いは、当該回答情報から得られる情報である、
情報処理方法。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持するステップと、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージから算出された1つの第1のハッシュ値を取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供するステップと、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報から算出された1つの第2のハッシュ値を取得するステップと、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに選択した検証パターンの情報を前記証明者に提供するパターン情報提供部と、
N回分の前記メッセージのそれぞれについて選択した検証パターンに対応する回答情報を前記証明者から取得するステップと、
前記多次多変数多項式の組F、前記ベクトルy、前記第1の情報、前記回答情報、前記第1のハッシュ値、及び前記第2のハッシュ値に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証するステップと、
を含み、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行するか、或いは、当該回答情報から得られる情報である、
情報処理方法。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成すると共に、N回分の前記メッセージから1つの第1のハッシュ値を算出するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記第1のハッシュ値を提供するメッセージ提供機能と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成すると共に、N回分の前記第3の情報から1つの第2のハッシュ値を生成する中間情報生成機能と、
前記検証者に前記第2のハッシュ値を提供する中間情報提供機能と、
N回分の前記メッセージのそれぞれについて前記検証者がk通り(k≧2)の検証パターンの中から選択した検証パターンに対応するN回分の回答情報、及び、前記多次多変数多項式の組Fと、前記ベクトルyと、前記回答情報とを利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージ及び一部の第3の情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られるか、或いは、当該回答情報から得られる情報である、
プログラム。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持機能と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージから算出された1つの第1のハッシュ値を取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供機能と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報から算出された1つの第2のハッシュ値を取得する中間情報取得機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに選択した検証パターンの情報を前記証明者に提供するパターン情報提供部と、
N回分の前記メッセージのそれぞれについて選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得機能と、
前記多次多変数多項式の組F、前記ベクトルy、前記第1の情報、前記回答情報、前記第1のハッシュ値、及び前記第2のハッシュ値に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムであり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行するか、或いは、当該回答情報から得られる情報である、
プログラム。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルs∈Knに基づいてN回分(N≧2)のメッセージを生成すると共に、N回分の前記メッセージから1つの第1のハッシュ値を算出するメッセージ生成機能と、
前記多次多変数多項式の組F及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する検証者に前記第1のハッシュ値を提供するメッセージ提供機能と、
N回分の前記メッセージのそれぞれについて前記検証者がランダムに選択した第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いてN回分の第3の情報を生成すると共に、N回分の前記第3の情報から1つの第2のハッシュ値を生成する中間情報生成機能と、
前記検証者に前記第2のハッシュ値を提供する中間情報提供機能と、
N回分の前記メッセージのそれぞれについて前記検証者がk通り(k≧2)の検証パターンの中から選択した検証パターンに対応するN回分の回答情報、及び、前記多次多変数多項式の組Fと、前記ベクトルyと、前記回答情報とを利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行しても得られない一部のメッセージ及び一部の第3の情報を前記検証者に提供する回答提供機能と、
をコンピュータに実現させるためのプログラムが記録された、コンピュータにより読み取り可能な記録媒体であり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して、当該回答情報に対応する検証パターン用に予め用意された演算を実行することで得られるか、或いは、当該回答情報から得られる情報である、
記録媒体。 - 環K上で定義される多次多変数多項式の組F=(f1,…,fm)及びベクトルy=(y1,…,ym)=(f1(s),…,fm(s))を保持する情報保持機能と、
前記多次多変数多項式の組F及びベクトルs∈Knに基づいて生成されたN回分(N≧2)のメッセージから算出された1つの第1のハッシュ値を取得するメッセージ取得部と、
前記メッセージを提供した証明者に対し、N回分の前記メッセージのそれぞれについてランダムに選択した第1の情報を提供する情報提供機能と、
N回分の前記第1の情報及び前記メッセージを生成する際に得られるN回分の第2の情報を用いて前記証明者が生成したN回分の第3の情報から算出された1つの第2のハッシュ値を取得する中間情報取得機能と、
N回分の前記メッセージのそれぞれについてk通り(k≧3)の検証パターンの中からランダムに選択した検証パターンの情報を前記証明者に提供するパターン情報提供部と、
N回分の前記メッセージのそれぞれについて選択した検証パターンに対応する回答情報を前記証明者から取得する回答取得機能と、
前記多次多変数多項式の組F、前記ベクトルy、前記第1の情報、前記回答情報、前記第1のハッシュ値、及び前記第2のハッシュ値に基づいて前記証明者が前記ベクトルsを保持しているか否かを検証する検証機能と、
をコンピュータに実現させるためのプログラムが記録された、コンピュータにより読み取り可能な記録媒体であり、
前記ベクトルsは秘密鍵であり、
前記多次多変数多項式の組F及び前記ベクトルyは公開鍵であり、
前記メッセージ及び前記第3の情報は、前記公開鍵、前記第1の情報、前記回答情報を利用して当該回答情報に対応する検証パターン用に予め用意された演算を実行するか、或いは、当該回答情報から得られる情報である、
記録媒体。
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011177334A JP5790289B2 (ja) | 2011-08-12 | 2011-08-12 | 情報処理装置、情報処理方法、プログラム、及び記録媒体 |
US14/237,010 US10122531B2 (en) | 2011-08-12 | 2012-07-31 | Information processing apparatus, information processing method, and recording medium |
CN201280037655.5A CN103718501B (zh) | 2011-08-12 | 2012-07-31 | 信息处理设备和信息处理方法 |
CA2839094A CA2839094C (en) | 2011-08-12 | 2012-07-31 | Information processing apparatus, information processing method, program, and recording medium |
RU2014104078/08A RU2600103C2 (ru) | 2011-08-12 | 2012-07-31 | Устройство обработки информации, способ обработки информации, программа и носитель записи |
BR112014002850A BR112014002850A2 (pt) | 2011-08-12 | 2012-07-31 | aparelho e método de processamento de informação, programa, e, mídia de gravação legível por computador |
PCT/JP2012/069452 WO2013024699A1 (ja) | 2011-08-12 | 2012-07-31 | 情報処理装置、情報処理方法、プログラム、及び記録媒体 |
EP12824052.0A EP2744147B1 (en) | 2011-08-12 | 2012-07-31 | Information processing device, information processing method, program, and recording medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011177334A JP5790289B2 (ja) | 2011-08-12 | 2011-08-12 | 情報処理装置、情報処理方法、プログラム、及び記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013042316A true JP2013042316A (ja) | 2013-02-28 |
JP5790289B2 JP5790289B2 (ja) | 2015-10-07 |
Family
ID=47715021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011177334A Expired - Fee Related JP5790289B2 (ja) | 2011-08-12 | 2011-08-12 | 情報処理装置、情報処理方法、プログラム、及び記録媒体 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10122531B2 (ja) |
EP (1) | EP2744147B1 (ja) |
JP (1) | JP5790289B2 (ja) |
CN (1) | CN103718501B (ja) |
BR (1) | BR112014002850A2 (ja) |
CA (1) | CA2839094C (ja) |
RU (1) | RU2600103C2 (ja) |
WO (1) | WO2013024699A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3006782A1 (fr) * | 2013-06-11 | 2014-12-12 | France Telecom | Procede et systeme de delegation d'un calcul d'une valeur de couplage bilineaire a un serveur de calcul |
EP2824480A1 (en) * | 2013-07-09 | 2015-01-14 | The European Union, represented by the European Commission | Digitally-signed satellite radio-navigation signals |
CN103490897B (zh) * | 2013-09-17 | 2017-04-05 | 华南理工大学 | 一种多变量公钥签名/验证系统及签名/验证方法 |
US10091000B2 (en) * | 2014-09-24 | 2018-10-02 | Intel Corporation | Techniques for distributing secret shares |
US9819495B2 (en) * | 2014-10-02 | 2017-11-14 | Qualcomm Incorporated | Systems and methods of dynamically adapting security certificate-key pair generation |
CN104486078A (zh) * | 2014-12-01 | 2015-04-01 | 北京成众志科技有限公司 | 一种信息多阶防伪编码与认证方法 |
CN115225278B (zh) * | 2022-06-07 | 2024-06-04 | 西安电子科技大学 | 基于数据感知哈希的数据持有性证明方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1870499B (zh) * | 2005-01-11 | 2012-01-04 | 丁津泰 | 产生新的多变量公钥密码系统的方法 |
US7961876B2 (en) * | 2005-01-11 | 2011-06-14 | Jintai Ding | Method to produce new multivariate public key cryptosystems |
US8019079B2 (en) * | 2007-07-08 | 2011-09-13 | Georgia Tech Research Corporation | Asymmetric cryptosystem employing paraunitary matrices |
JP4764447B2 (ja) * | 2008-03-19 | 2011-09-07 | 株式会社東芝 | グループ署名システム、装置及びプログラム |
JP5532048B2 (ja) * | 2009-07-13 | 2014-06-25 | 日本電気株式会社 | 匿名認証署名システム、ユーザ装置、検証装置、署名方法、検証方法およびそれらのプログラム |
IL206139A0 (en) * | 2010-06-02 | 2010-12-30 | Yaron Sella | Efficient multivariate signature generation |
JP5594034B2 (ja) | 2010-07-30 | 2014-09-24 | ソニー株式会社 | 認証装置、認証方法、及びプログラム |
-
2011
- 2011-08-12 JP JP2011177334A patent/JP5790289B2/ja not_active Expired - Fee Related
-
2012
- 2012-07-31 BR BR112014002850A patent/BR112014002850A2/pt not_active Application Discontinuation
- 2012-07-31 US US14/237,010 patent/US10122531B2/en active Active
- 2012-07-31 WO PCT/JP2012/069452 patent/WO2013024699A1/ja active Application Filing
- 2012-07-31 EP EP12824052.0A patent/EP2744147B1/en not_active Not-in-force
- 2012-07-31 RU RU2014104078/08A patent/RU2600103C2/ru not_active IP Right Cessation
- 2012-07-31 CA CA2839094A patent/CA2839094C/en not_active Expired - Fee Related
- 2012-07-31 CN CN201280037655.5A patent/CN103718501B/zh not_active Expired - Fee Related
Non-Patent Citations (2)
Title |
---|
JPN6012044860; 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 Volume 6841, 20110806, p.706-723, Springer * |
JPN6012044862; 辻井 重男 他: 暗号と情報セキュリティ 初版, 19900329, p.57-59, 株式会社昭晃堂 * |
Also Published As
Publication number | Publication date |
---|---|
BR112014002850A2 (pt) | 2017-03-01 |
WO2013024699A1 (ja) | 2013-02-21 |
RU2014104078A (ru) | 2015-08-10 |
CA2839094C (en) | 2020-05-12 |
US20140205087A1 (en) | 2014-07-24 |
RU2600103C2 (ru) | 2016-10-20 |
JP5790289B2 (ja) | 2015-10-07 |
EP2744147A4 (en) | 2015-09-09 |
EP2744147A1 (en) | 2014-06-18 |
CA2839094A1 (en) | 2013-02-21 |
CN103718501A (zh) | 2014-04-09 |
EP2744147B1 (en) | 2018-09-26 |
CN103718501B (zh) | 2017-04-19 |
US10122531B2 (en) | 2018-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5736816B2 (ja) | 認証装置、認証方法、プログラム、及び署名生成装置 | |
JP2013042315A (ja) | 情報処理装置、及び情報処理方法 | |
JP5790289B2 (ja) | 情報処理装置、情報処理方法、プログラム、及び記録媒体 | |
JP5790287B2 (ja) | 情報処理装置、情報処理方法、プログラム、及び記録媒体 | |
JP5790291B2 (ja) | 情報処理装置、署名提供方法、署名検証方法、プログラム、及び記録媒体 | |
JP5594034B2 (ja) | 認証装置、認証方法、及びプログラム | |
JP5790286B2 (ja) | 情報処理装置、署名生成装置、情報処理方法、署名生成方法、及びプログラム | |
JP5790290B2 (ja) | 情報処理装置、情報処理方法、プログラム、及びプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
WO2013031420A1 (ja) | 情報処理装置、署名生成装置、署名検証装置、情報処理方法、署名生成方法、及び署名検証方法 | |
JP5790288B2 (ja) | 情報処理装置、及び情報処理方法 | |
WO2013024628A1 (ja) | 情報処理装置、及び情報処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140625 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150407 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150608 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150707 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150720 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5790289 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |