本発明は、否認可能零知識対話証明に適用される証明装置及び検証装置に関する。
従来のランダムオラクルモデルにおける否認可能零知識対話証明の技術について、例えば、非特許文献1に記載されている。以下、非特許文献1に記載された技術(従来技術1と記すことにする。)について説明する。
図4は、非特許文献1に記載される構成を示す説明図である。なお、本出願における図面において、合流する矢印は、矢印の元の情報が全て集まって矢印の先へ送られることを意味し、分岐する矢印は、矢印の元の情報全てまたは一部がそれぞれの矢印の先へ送られることを意味する。
また、従来技術1が証明する言語は、NP完全であるグラフの三彩色問題である。ここで、言語とはデータの集合を意味し、「言語が三彩色問題である」とは、データの集合が、三彩色問題の集合であることを意味する。また、あるdがある言語(例えば三色彩問題)に属することを証明するとは、dが三色彩問題の集合に属することを証明することである。従来技術1で、本言語を否認可能零知識で証明できるということは、従来技術1でNPに属する全ての言語が否認可能零知識で証明できることを意味する。
図4に示す証明装置103と検証装置104には、有方向グラフGn=(VG,EG)が共通入力101として入力される。ここで、VGはグラフの頂点の集合であり、EGは辺の集合であり、 両者によりグラフG が表現される。また、頂点の数(|VG|と記す。)は、|VG|=nとする。
また、証明装置103には各頂点の色 C=(c1,c2,...,cn)が証拠102として入力される。各i ∈{1,...,n} はci∈ {1,2,3}で、三色の色を表し、 頂点の塗り分けを表現する。C は、 全ての辺に関して、この辺で連結された二つの頂点が異る色となる様な塗り分けとする。
証明装置103は、検証装置104にG に関する上記の証拠C が存在することを否認可能零知識対話証明する。「対話証明する」とは、もし上記性質を持つC がG に対して存在しなければ、いかなる偽の証明装置を用いても、この偽の証明装置と検証装置(本例では検証装置104)が互いの通信及び各装置における計算を行なった後、検証装置(本例では検証装置104)が最終的に証明を受理することを表す信号を出力せず、証明装置(本例では証明装置103)と検証装置(本例では検証装置104)に上記G とC が入力されれば、検証装置(本例では検証装置104)は証明を受理することを表す信号を出力することを意味する。
また、否認可能零知識であるとは次のことを言う。いかなるデータが入力された、多項式時間しか動作しないいかなる偽の検証装置が証明装置(本例では証明装置103)と通信を行なっても、その偽の検証装置の出力は次の性質(性質Aと記す。)を満すことをいう。ただし、偽の検証装置は同じG と C が与えられた複数の証明装置と同時並行的に通信を行なうことが可能であるとする。ここで、上記の性質Aとは、偽の検証装置と通信可能な、多項式時間しか動作しないある模擬装置が存在して、この装置に上記偽の検証装置への入力が与えられたならば、この模擬装置が証明装置(本例では証明装置103)と通信が不可能であっても、上記偽の検証装置の出力とその分布が識別不可能なデータを出力することができることである。性質Aの具体例を示す。例えば、任意の偽の検証装置が、証明装置(本例では証明装置103)と通信をした後、何らかのデータを出力したとする。このデータをaと呼ぶことにする。一方、模擬装置は、偽の検証装置と通信を行い(このとき、証明装置として振る舞う)、その後、何らかのデータを出力する。このデータをbと呼ぶことにする。模擬装置は、どのような偽の検証装置を持ってきても、その出力データaの分布と識別不可能な分布を持つデータbを出力できる(性質A)。
なお、「データaの分布とデータbの分布とが識別不可能である」とは、以下のような意味である。あるデータの分布Aとデータの分布Bが与えられたとする。また、データaは、分布Aから一様無作為に選ばれたデータであり、データbは、分布Bから一様無作為に選ばれたデータであるとする。どのような識別装置D(0か1を出力する装置であるものとする。)を持ってきても、識別装置Dにaを入力した時における識別装置Dが1を出力する確率と、識別装置Dにbを入力した時における識別装置Dが1を出力する確率とが等しければ、データaの分布とデータbの分布とが識別不可能であるという。なお、確率は、分布A,Bからaとbとを何度も選びなおして求める。
以下、図4に示す証明装置103および検証装置104の動作について説明する。以下の説明では、離散対数問題を使った例を示すが、一般の(確率的)一方向性関数でも可能である。Gqを位数q の離散対数問題が難しい乗法群とし、g をその生成子とする。t を安全変数とする。t の値は、160以上であれば十分である。Hash(・)はハッシュ関数で、その出力の大きさはt ビットとする。
ステップ1:検証装置104は無作為にx ∈ Z/qZを選び、y=gxを計算する。
ステップ2:検証装置104は、i = 1,...,t に関してx'[i]∈ Z/qZを選び、y'[i] = gx'[i] とする。
ステップ3:検証装置104は、i = 1,...,t に関して、乱数 r[1,i] ∈ {0,1}n と、乱数 r[2,i] ∈ {0,1}n を選ぶ。検証装置104は、i = 1,...,t に関して、ハッシュ値 c[1,i] = Hash(x'[i],r[1,i]) と、ハッシュ値 c[2,i] = Hash(x'[i]+x,r[2,i]) と、をハッシュ関数を生成する装置105と何度も通信して生成する。
ステップ4:検証装置104は、t ビットのハッシュ値c を次の様に計算する。
h=Hash({g,y,y'[i],c[1,i],c[2,i]}i=1,...,t)
検証装置104は、i=1,...,t に関して、h のi 番目のビットが0ならば、t[1,i] = x'[i]、t[2,i] = r[1,i] とする。また、h のi 番目のビットが1ならば、t[1,i] = x'[i]+x、t[2,i] = r[2,i]) とする。
ステップ5:検証装置104は、証明装置103に{g,y,y'[i],c[1,i],c[2,i],t[1,i],t[2,i]}i=1,...,t)を送付する。
ステップ6:証明装置103は、h'=Hash({g,y,y'[i],c[1,i],c[2,i]}i=1,...,t) を計算する。証明装置103は、ハッシュ関数を計算する装置107と通信することで、i=1,...,t に関して、h'のi 番目のビットが0ならば、c[1,i] = Hash(t[1,i],t[2,i])であることと、gt[1,i] = y'[i] であることを確認し、h'のi 番目のビットが1ならば、c[2,i] = Hash(t[1,i],t[2,i])であることと、gt[2,i] = y・y'[i] であることを確認する。
ステップ7:証明装置103は、y = gxなるx を知っているか、あるいはG に対してC を知っていることの、ハッシュ関数107を用いた非対話的零知識証明を生成する。ただし、どちらを知っているかは識別できない様に証明する。また、ステップ7における非対話的零知識証明は、例えば、非特許文献3に記載された方法により生成する。
ステップ8:証明装置103は、ステップ7で生成した非対話的零知識証明を検証装置104に送付する。
ステップ9:検証装置104は、証明装置103から送られてきた非対話的零知識証明を検証し、正当であれば受理を、不当であれば不受理を表す信号を検証結果109として出力する。
ハッシュ関数がランダムなデータを返す関数だと仮定すれば、ステップ1−5は検証装置104の、検証装置104がx を知っていることの非対話的零知識証明である。これは次の様にして分かる。
証明装置103から送られるデータは、h'=Hash({g,y,y'[i],c[1,i],c[2,i]}i=1,...,t) に対し、以下のようになっていればよい。
すなわち、i=1,...,t に関して、h'のi 番目のビットが0ならば、c[1,i] = Hash(t[1,i],t[2,i])であり、gt[1,i] = y'[i] であり、h'のi 番目のビットが1ならば、c[2,i] = Hash(t[1,i],t[2,i])であり、gt[2,i] = y・y'[i] であればよい。
このようなデータは、あらかじめh'の値が決まっていれば簡単に生成可能である。ハッシュ関数がランダムな値を返す関数だと仮定すれば、このような仮定が可能である為、x を知らなくとも上記データは生成可能である。このため、このデータから証明装置103がいかなる知識を得ることもない。
上記の証明が、証明装置103と検証装置104とにおける対話証明となっていることは次の事から分かる。ステップ7において証明装置103は検証装置104に対し、G に対して(1)C を知っている、すなわちG に対してC が存在する、あるいは (2)x を知っている、のいずれかであることを証明している。ところが、ステップ5で受け取るデータから証明装置103は何ら知識を得ることができないため、Gq の離散対数を求めることができず、z を知ることができない。よって、上記の(1)を証明する必要がある。
また、上記の動作において、証明装置103と検証装置104とにおける対話は否認可能零知識となっていることは次の事から分かる。ランダムオラクルモデルでは検証装置104が、ハッシュ値 c[1,i] = Hash(x'[i],r[1,i])と、ハッシュ値 c[2,i] = Hash(x'[i]+x,r[2,i])とを計算する時には、それぞれ(x'[i],r[1,i])と(x'[i]+x,r[2,i])とをランダムオラクルに送らなければならない。模擬装置がこのような値を途中で傍受すると、(x'[i]+x) - x'[i] = x のように、容易にx を求めることができる。このx を知る模擬装置は、ステップ7において上記(2)の「x を知っていること」を証明することができる。これは上記(1) の「C を知っていること」の証明と識別できないため、証明装置103の生成するデータと識別ができないデータを生成することが可能である。
上記の動作で、証明装置103と検証装置104とにおける否認可能零知識対話証明は2ラウンドである。すなわち、検証装置104から証明装置103への通信が一回、証明装置103から検証装置104への通信が一回、合わせて二回の通信しか必要としない。
また、従来の特別正直検証者零知識対話証明の技術については、例えば、非特許文献2に記載されている。なお、「特別正直検証者」とは、検証者(検証装置)が証明者(証明装置)に送るデータが乱数であるという意味である。また、特別正直検証者零知識対話証明では、最初に証明装置から検証装置に送られるメッセージaRと、次に検証装置から証明装置に送られるメッセージeRと、最後に証明装置から検証装置に送られるメッセージzRとを用いる。「証明コミットメント」とは、上記の最初に検証装置に送られるメッセージaRのことである。また、「挑戦値」とは、次に検証装置から証明装置に送られるメッセージeRのことである。「応答」とは、最後に証明装置から検証装置に送られるメッセージzRのことである。
以下、非特許文献2に記載された技術(従来技術2と記すことにする。)について説明する。図5および図6は、非特許文献2に記載される構成を示す説明図である。また、以下の説明において、関係をR 、共通入力(図5および図6では共通入力207)をX 、証拠(図6では証拠208)をW の記号で表す。共通入力X と証拠W が関係R を満たすことを(X,W) ∈ Rと記す。
図5に示す証明コミットメント生成装置201は、関数ARにより証明コミットメントを生成する装置である。応答生成装置202は、関数ZRにより応答を生成する関数である。検証装置203は、関数VRにより検証結果を出力する装置である。図6に示す模擬装置204は、関数SRの演算を行う装置である。証拠抽出装置205は、関数ERにより証拠を抽出する装置である。関数AR、関数ZR、関数VR、関数SR、関数ERについては、後述する。
関係R に関する3ラウンド特別正直検証者零知識対話証明をSHVZKIP(R)と記す。これは、証明コミットメントを生成する関数AR、応答を生成する関数ZR、検証の為の関数VR、模擬の為の関数SR、証拠抽出の関数ERを用い、以下のような性質を満すものである。以下の説明で、RP,RSは、ランダムテープである。
[性質1]
挑戦値eR(図における挑戦値212)を乱数206とする。また、証明コミットメントaR(図における証明コミットメント209)と応答zR(図における応答210)が以下の式によって表されるとする。
aR = AR(X,W,RP)
zR = ZR(X,W,RP,eR)
このとき、VR = VR(X,aP,eR,zR)=1 が成り立つ。ここでVRの出力を検証結果211と呼ぶ。
[性質2]
証明コミットメントaR(図における証明コミットメント213)、第一挑戦値eRと第二挑戦値e'R (図では、第一挑戦値および第二挑戦値の組214として示している。)、第一応答zRと第二応答z'R (図では、第一応答および第二応答の組215として示している。)が以下の式を満たしているとする。
VR(X,aR,eR,zR)=1
VR(X,aR,e'R,z'R)=1
eR ≠ e'R
このとき、W'= ER(aR,eR,zR,e'R,z'R) なる証拠W'(図における証拠216) は、(X,W')∈ Rとなる。
[性質3]
挑戦値eR(図における挑戦値212)を乱数とする。また、証明コミットメントaR(図における証明コミットメント209)と応答zR(図における応答210)が以下の式によって表されるとする。ただし、RPはランダムテープ206である。
aR = AR(X,W,RP)
zR = ZR(X,W,RP,eR)
一方、挑戦値e'R (図における挑戦値216)を乱数とする。また、証明コミットメントa'R(図における証明コミットメント217)と応答z'R(図における応答218)が以下のように導出されるとする。ただし、RSはランダムテープ219である。
(a'R,z'R) = SR(X,e'R,RS)
このとき、ランダムテープRP(図におけるランダムテープ206)をランダムに振ったときの (aR,eR,zR) の分布と、ランダムテープRS(図におけるランダムテープ219)をランダムに振ったときの (a'R,e'R,z'R) の分布とを識別することが難しい。
SHVZKIP(R)を用いて対話証明を行なった場合、検証装置の選ぶeRがランダムでなければならないという制約があるが、一般に検証装置がその様なeRを選ぶ保証はないため、この対話証明は零知識とはならない。
しかし、多くのR に関する効率的なSHVZKIP(R)が知られているため、このSHVZKIP(R)を利用して、効率の悪化を抑えながら零知識対話証明を構成することには応用上意義がある。
以下に、SHVZKIP(R)の例をあげる。X はGqの二つの元(y,g) とし、W をZ/qZの元x とし、y=gxなる関係を満すとき、(X,W) ∈ Rとする。
関数ARは、例えば、以下のような関数である。入力は、X,W 、及びランダムテープRPである。そして、RPからランダムな x' ∈ Z/qZ を生成し、aR = y' =gx' として、aRを出力する。
関数ZRは、例えば、以下のような関数である。入力は、X,W、ランダムテープRP、及び eR=cである。そして、 zR = r = xc + x' mod q を計算し、zRを出力する。
関数VRは、例えば、以下のような関数である。入力は、X,aR,eR,zRである。そして、gr = yc y'が成立するならば1を出力し、成立しないならば0を出力する。
関数ERは、例えば、以下のような関数である。入力は、aR,eR=c,zR=r, e'R=c',z'R=r'である。そして、 W = x =(r-r')/(c'-c) mod q を計算し、W を出力する。
関数SRは、例えば、以下のような関数である。入力は、X,eR=c,及びランダムテープRSである。そして、RSからランダムな zR=r ∈ Z/qZ を生成し、aR = y' = gry-c を生成する。そして、(aR,zR) を出力する。
[非対話的知識の証明]
次に、非対話的知識の証明について説明する。上記の従来技術2では、証明装置と検証装置が対話(互いに通信)することで、証明者が検証者に、ある事例がある言語に属する事を証明した。一方、証明者が、検証者にデータを一回送るだけで、ある事例がある言語に属する事を証明する方法がある。これを非対話的証明と言う。特に、ある事例がある言語に属することを多項式時間で検証し得る証拠を保持していることを証明する場合は、非対話的知識の証明と言う。
非特許文献3に記された方法に従うと、特別正直検証者零知識対話証明を用いて、X に対して、(X,W) ∈ RなるR の知識があることの非対話的知識の証明の一例(PR)を次の様に構成できる。
PR = (aR,zR)
ただし、RPはランダムテープである。また、以下の関係が成り立っているものとする。
aR = AR(X,W,RP) ,
eR = Hash(X,aR) ,
aR = AR(X,W,RP,eR).
しかし、上記の従来技術1は、以下に示す問題を有している。
従来技術1では、ステップ3において、十分に大きなt に関して、t 個のコミットメント{c[1,i] と c[2.i]}i=1,...,t を生成する必要がある。この理由は次の通りである。模擬装置は、二つのコミットメント c[1,i] = Hash(x'[i],r[1,i])と c[2,i] = Hash(x'[i]+x,r[2,i])の両方の、コミットされた値x'[i] とx'[i]+x を必要とする。すなわち両方のコミットメントが正しく作られない限り、模擬装置はうまく働かない。ところが、実際の検証装置の動作では、各i に関して、片方しかコミットされた値を公開しない。それゆえ、公開しない方の値を不正に生成しておいても、証明装置に発覚しないおそれがある。このようなおそれがあるため、十分に多くのi に関して(t 個) コミットメントを生成することにより、検証装置が全てのi に関して証明装置を騙せる確率を十分に小さく(1/2t) している。
上記理由により、従来の技術は検証装置に数多くのコミットメント生成を要求し、ステップ6において証明装置に数多くの計算を要求する。このことにより、計算時間、両者の通信量が共に大きくなるという欠点を持っている。
従来技術1で説明したステップ1−5は離散対数の知識の非対話零知識証明であるが、次の離散対数の知識の非対話零知識証明と比べることで、その計算量と通信量の差がよく分かる。
y=gxとする。証明装置にg,y,x が入力され、検証者(検証装置)にg,y が入力される。
ステップ1:証明装置は、 x' ∈ Z/qZ を選び、y'=gx'を生成する。
ステップ2:証明装置は、c = Hash(g,y,y')を計算する。
ステップ3:証明装置は、t = c x +x' mod q を計算する。
ステップ4:証明装置は、(t,c) を検証装置に送付する。
ステップ5:検証装置は、c = Hash(g,y,gty-c) が成り立つことを確認する。
ここで示した非対話零知識証明における通信量と計算量は、どちらも従来の技術で利用されているものの、1/t 倍程であり、大変効率的である。
しかし、ここで示した方式を、既に説明した従来の方式に単純に適用することはできない。なぜなら、疑似装置が、ハッシュへの入力(g,y,y')をたとえ取り出せることができても、x を求めることができないからである。
一方、従来技術2には、従来技術2の説明の最後に挙げたように、効率的な方法が多くのR に対して数多くあるが、零知識性を持たない。特に、否認可能零知識性を持つことはない。
本発明は、上記問題点に鑑みてなされたものであって、特別正直検証者零知識対話証明の方法が与えられたときに、これを利用して、通信量と計算量共に少ない否認可能零知識対話証明を行えるようにすることを目的とする。
本発明による証明装置は、検証装置と通信可能に接続される証明装置であって、予め定められた関係を満たす共通入力および証拠とランダムテープとに基づいて、その関係に関する特別正直検証者零知識対話証明の証明コミットメントを生成する証明コミットメント生成装置と通信可能に接続され、共通入力と証拠とランダムテープと挑戦値とに基づいて、その関係に関する特別正直検証者零知識対話証明の応答を生成する応答生成装置と通信可能に接続され、その関係を満たす共通入力および証拠が入力される共通入力等入力手段と、ランダムテープが入力されるランダムテープ入力手段と、検証装置から挑戦値のコミットメントを受信する挑戦値コミットメント受信手段と、挑戦値コミットメント受信手段が挑戦値のコミットメントを受信した後に、共通入力と証拠とランダムテープとを証明コミットメント生成装置に送信して証明コミットメントを生成させ、当該証明コミットメントを検証装置に送信する証明コミットメント生成制御手段と、挑戦値および当該挑戦値のコミットメントの証拠となる乱数を検証装置から受信する挑戦値等受信手段と、挑戦値等受信手段が挑戦値および乱数を受信した後に、挑戦値コミットメント受信手段が受信した挑戦値のコミットメントが、挑戦値等受信手段が受信した挑戦値および乱数のハッシュ値であるか否かを検証することにより、挑戦値コミットメント受信手段が受信した挑戦値のコミットメントが、挑戦値等受信手段が受信した挑戦値のコミットメントであるか否かを検証する挑戦値コミットメント検証手段と、挑戦値コミットメント受信手段が受信した挑戦値のコミットメントが、挑戦値等受信手段が受信した挑戦値のコミットメントであると判定された場合に、共通入力と証拠とランダムテープと挑戦値とを応答生成装置に送信して応答を生成させ、当該応答を検証装置に送信する応答生成制御手段とを備えたことを特徴とする。
本発明による検証装置は、上記の証明装置と通信可能に接続される検証装置であって、共通入力と証明コミットメントと挑戦値と応答とに基づいて、予め定められた関係に関する特別正直検証者零知識対話証明の受理を表す信号または不受理を表す信号を出力する対話証明検証装置と通信可能に接続され、ハッシュ関数の計算を行うハッシュ関数の計算装置と通信可能に接続され、共通入力が入力される共通入力入力手段と、ランダムテープが入力されるランダムテープ入力手段と、ランダムテープを用いて挑戦値を生成する挑戦値生成手段と、ランダムテープを用いて乱数を生成する乱数生成手段と、挑戦値および乱数をハッシュ関数の計算装置に送信し、挑戦値および乱数に応じたハッシュ値を計算させ、当該ハッシュ値を挑戦値のコミットメントとして証明装置に送信する挑戦値コミットメント生成制御手段と、証明装置から証明コミットメントを受信する証明コミットメント受信手段と、証明装置から応答を受信する応答受信手段と、共通入力と証明コミットメントと挑戦値と応答とを対話証明検証装置に送信して、当該対話証明検証装置から特別正直検証者零知識対話証明の受理を表す信号または不受理を表す信号を受信し、受信した信号を検証結果として出力する検証結果出力手段とを備えたことを特徴とする。
本発明によれば、通信量と計算量共に少ない否認可能零知識対話証明を実現することができる。
以下、本発明の実施の形態を図面を参照して説明する。
以下の説明では、挑戦値のコミットメントに言及するが、この「コミットメント」と、既に説明した「証明コミットメント」とは異なるものである。そこで、まず、「コミットメント」について説明する。「U(例えば、挑戦値)のコミットメント」とは、以下の性質を有するデータである。すなわち、「Uのコミットメントのみが与えられても、Uに関する情報が何も得られず、Uのコミットメントを生成したものは、後にこれがUのコミットメントであることを証明することができる。」という性質を有し、そして、「いかなるU’≠Uに関してもU’のコミットメントであることを証明できない。」という性質を有するデータである。以下の説明で言及する「挑戦値のコミットメント」も、この性質を有する。
実施の形態1.
図1は、本発明の第1の実施の形態の証明装置および検証装置を示す説明図である。証明装置301および検証装置302は、互いに通信可能となるように接続されている。証明装置301には、(X,W) ∈ Rなる共通入力X 、証拠W 、および第一のランダムテープRPが入力される。この関係R は、予め定められた関係である。本実施の形態では、便宜的に、関係R のことを第一の関係と呼ぶことにする。
なお、共通入力は、証明装置および検証装置に共通に入力されるデータである。ただし、後述する第2の実施の形態では、検証装置が共通入力となるデータ(第2の実施の形態におけるX')を生成し、証明装置に送信する場合も示す。このように、検証装置が生成し、証明装置に送信するデータも共通入力となる。
証明装置301は、第一の関係に関する挑戦値のコミットメント検証装置324(以下、挑戦値のコミットメント検証装置324と記す。)と、対話的な、第一の関係に関する知識の証明生成装置330(以下、証明生成装置330と記す。)とを備える。
検証装置312は、第一の関係に関する挑戦値のコミットメント生成装置312(以下、挑戦値のコミットメント生成装置312と記す。)と、対話的な、第一の関係に関する知識の証明検証装置340(以下、証明検証装置340と記す。)とを備える。
挑戦値のコミットメント検証装置324は、ハッシュ関数の計算装置310と通信可能に接続される。また、証明生成装置330は、第一の関係R に関する特別正直検証者零知識対話証明の証明コミットメント生成装置303(以下、証明コミットメント生成装置303と記す。)と通信可能に接続される。また、証明生成装置330は、第一の関係R に関する特別正直検証者零知識対話証明の応答生成304(以下、応答生成装置304と記す。)と通信可能に接続される。
挑戦値のコミットメント生成装置312は、ハッシュ関数の計算装置311と通信可能に接続される。証明検証装置340は、第一の関係R に関する特別正直検証者零知識対話証明の検証装置305(以下、対話証明検証装置305と記す。)と通信可能に接続される。
証明コミットメント生成装置303は、関数(関数ARとする。)に従って、証明生成装置330からの入力に応じた証明コミットメントを生成し、証明生成装置330に出力する。なお、本実施の形態における関数ARの具体的な計算例は、例えば、従来技術2で示した関数ARと同様である。
応答生成装置304は、関数(関数ZRとする。)に従って、証明生成装置330からの入力に応じた応答を生成し、証明生成装置330に出力する。なお、本実施の形態における関数ZRの具体的な計算例は、例えば、従来技術2で示した関数ZRと同様である。
対話証明検証装置305は、関数(関数VRとする。)に従って、証明検証装置340からの入力に応じた検証結果を生成し、証明検証装置340に出力する。なお、本実施の形態における関数VRの具体的な計算例は、例えば、従来技術2で示した関数VRと同様である。なお、検証結果が1であれば、証明の受理を表し、検証結果が0であれば、証明の不受理を表すものとする。
挑戦値のコミットメント検証装置324には、挑戦値のコミットメント生成装置312から、挑戦値のコミットメント(c とする。)が入力される。挑戦値のコミットメント検証装置324は、証明検証装置340が証明生成装置330に対して出力する挑戦値および乱数を用いたハッシュ関数の計算結果が、挑戦値のコミットメントc と一致するか否かを判定する。
証明生成装置330には、前述の共通入力X 、証拠W 、および第一のランダムテープRPが入力される。また、証明生成装置330は、証明コミットメント生成装置303に生成させた証明コミットメントを、証明検証装置340に出力する。その後、証明生成装置330には、証明検証装置340から、挑戦値および乱数が入力される。挑戦値および乱数を用いたハッシュ関数の計算結果が、挑戦値のコミットメントc と一致していた場合には、証明生成装置330は、応答生成装置304に生成させた応答を証明検証装置340に出力する。
挑戦値のコミットメント生成装置312には、共通入力X 、および第二のランダムテープRVが入力される。そして、挑戦値のコミットメント生成装置312は、挑戦値、乱数を生成し、ハッシュ関数の計算装置311に挑戦値のコミットメントc を生成させる。挑戦値のコミットメント生成装置312は、挑戦値のコミットメントc を挑戦値のコミットメント検証装置324に出力する。
証明検証装置340には、証明生成装置330から証明コミットメントが入力される。その後、証明検証装置340は、挑戦値および乱数を証明生成装置330を出力する。そして、証明生成装置330から応答が入力される。証明検証装置340は、応答を受けると、対話証明検証装置305に検証結果を生成させ、その検証結果322を出力する。
なお、図1では、符号306を用いて共通入力X を示している。また、符号307を用いて証拠W を示している。また、符号308を用いて第一のランダムテープRPを示している。また、符号309を用いて第二のランダムテープRVを示している。
次に、証明装置301と検証装置302とによる関係R の否認可能零知識対話証明の動作について説明する。
まず、証明装置301の証明生成装置330に、(X,W) ∈ Rなる共通入力X 、証拠W 、および第一のランダムテープRPが入力される。
続いて、検証装置302が備える挑戦値のコミットメント生成装置312に、共通入力X 、および第二のランダムテープRVが入力される。
次に、挑戦値のコミットメント生成装置312は、以下のようにして、第一の関係R に関する挑戦値のコミットメントを、ハッシュ関数の計算装置311に生成させる。挑戦値のコミットメント生成装置312は、第二のランダムテープRVを用いて、挑戦値eRを選ぶ。また、挑戦値のコミットメント生成装置312は、第二のランダムテープRVを用いて、乱数r を選ぶ。この乱数r は、挑戦値のコミットメントの証拠となっている。挑戦値のコミットメント生成装置312は、挑戦値eRおよび乱数r をハッシュ関数の計算装置311に送信する。ハッシュ関数の計算装置311は、c = Hash(eR,r)として、挑戦値のコミットメントc を計算し、挑戦値のコミットメントc を挑戦値のコミットメント生成装置312に送信する。このときの通信を、図1では、通信313として示している。
挑戦値のコミットメント生成装置312は、ハッシュ関数の計算装置311から受信した挑戦値のコミットメントc を、挑戦値のコミットメント検証装置324に送信する(図1に示す通信314)。なお、挑戦値のコミットメント検証装置324は、挑戦値のコミットメント生成装置312から挑戦値のコミットメントc が送信されてくるのを待ち、挑戦値のコミットメント生成装置312から挑戦値のコミットメントc を受信する。
挑戦値のコミットメント検証装置324が挑戦値のコミットメントc を受信すると、証明生成装置330は、共通入力X 、証拠W 、および第一のランダムテープRPを、証明コミットメント生成装置303に送信する。証明コミットメント生成装置303は、関数ARによって、aR =AR(x,w,RP)として、証明コミットメントaRを生成する。そして、証明コミットメント生成装置303は、証明コミットメントaRを証明生成装置330に送信する。このときの通信を、図1では、通信315として示している。
証明生成装置330は、証明コミットメント生成装置303から受信した証明コミットメントaRを証明検証装置340に送信する(図1に示す通信316)。証明生成装置330は、証明コミットメントaRを送信した後、証明検証装置340から、挑戦値のコミットメントc によりコミットされた挑戦値およびそのコミットメントの証拠(乱数r )が送信されてくるのを待つ。
証明検証装置340は、証明コミットメントaRを受信した後、挑戦値eRおよび乱数r を証明生成装置330に送信する(図1に示す通信317)。証明検証装置340は、挑戦値eRおよび乱数r を送信した後、証明生成装置330から応答が送信されてくるのを待つ。
証明生成装置330が挑戦値eRおよび乱数r を受信すると、挑戦値のコミットメント検証装置324は、ハッシュ関数の計算装置310と通信を行い(図1に示す通信319)、挑戦値eRおよび乱数をr を用いたハッシュ関数の計算結果が、挑戦値のコミットメントc と一致するか否かを判定する。すなわち、ハッシュ関数の計算装置310に、Hash(eR,r)を計算させ、その計算結果が、既に受信している挑戦値のコミットメントc と一致するか否かを判定する。換言すると、既に受信している挑戦値のコミットメントc が挑戦値eRのコミットメントであるか否かを、乱数r を用いて検証する。
c = Hash(eR,r)が成立していないならば、挑戦値のコミットメント検証装置324は、証明装置301の停止命令を証明生成装置330に出力する(図1に示す出力325)。停止命令が出力された場合、証明装置301は動作を停止する。なお、c = Hash(eR,r)が成立しているならば、停止命令を出力しない。
停止命令が出力されなかった場合、証明生成装置330は、共通入力X 、証拠W 、挑戦値eR、および第一のランダムテープRPを、応答生成装置304に送信する。応答生成装置304は、関数ZRによって、zR =ZR(x,w,eR,RP) として、応答zRを生成する。そして、応答生成装置304は、応答zRを証明生成装置330に送信する。このときの通信を、図1では、通信320として示している。
証明生成装置330は、応答生成装置304から受信した応答zRを証明検証装置340に送信する(図1に示す通信318)。
証明検証装置340は、応答zRを受信すると、共通入力X 、証明コミットメントaR、挑戦値eR、および応答zRを、対話証明検証装置305に送信する。なお、証明検証装置340は、挑戦値のコミットメント生成装置312から挑戦値eRを受信すればよい(図1に示す通信326)。対話証明検証装置305は、関数VRによって、VR(X,aR,eR,zR)の計算結果を導出する。この計算結果は、例えば、1か0かのいずれかとなり、証明の受理あるいは不受理を表す。対話証明検証装置305は、証明の受理あるいは不受理を表す信号を証明検証装置340に送信する。このときの通信を、図1では、通信321として示している。
証明検証装置340は、受信した信号(証明の受理あるいは不受理を表す信号)を、検証結果322として出力する。
第1の実施の形態によれば、検証装置302から証明装置301への送信は、挑戦値のコミットメントc の送信(図1に示す通信314)、および、そのコミットメントが挑戦値のコミットメントであることを示すデータの送信(図1に示す通信317)のみである。よって、通信量が少なくて済み、方式を簡易化し、通信を効率化することができる。
第1の実施の形態において、証明装置が備える共通入力等入力手段、ランダムテープ入力手段、証明コミットメント生成制御手段、挑戦値等受信手段、および応答生成制御手段は、証明装置301の証明生成装置330によって実現される。また、証明装置が備える挑戦値コミットメント受信手段、挑戦値コミットメント検証手段は、証明装置301の挑戦値のコミットメント検証装置324によって実現される。
そして、検証装置が備える共通入力入力手段、ランダムテープ入力手段、挑戦値生成手段、乱数生成手段、挑戦値コミットメント生成制御手段は、検証装置302の挑戦値のコミットメント生成装置312によって実現される。また、検証装置が備える証明コミットメント受信手段、応答受信手段、検証結果出力手段は、検証装置303の証明検証装置340によって実現される。
実施の形態2.
以下の説明では、ビット毎の排他的論理和を符号∨によって表すものとする。
図2は、本発明の第2の実施の形態の証明装置および検証装置を示す説明図である。証明装置401および検証装置402は、互いに通信可能となるように接続されている。証明装置401には、(X,W) ∈ Rなる共通入力X、証拠W、第一のランダムテープRP、第二のランダムテープR'Pが入力される。この関係R は、予め定められた関係であり、以下、第一の関係と呼ぶ。なお、第一の関係R とは別の第二の関係をR'とする。
証明装置401は、第二の関係に関する非対話的知識の証明検証装置423(以下、第二関係証明検証装置423と記す。)と、非対話的な、第一の関係を満たす証拠、あるいは第二の関係を満たす証拠のいずれかの証拠の知識の証明生成装置425(以下、証明生成装置425と記す。)とを備える。
検証装置402は、第二の関係に関する非対話的知識の証明生成装置417(以下、第二関係証明生成装置417と記す。)と、非対話的な、第一の関係を満たす知識、あるいは第二の関係を満たす知識のいずれかの知識の証明検証装置434(以下、証明検証装置434と記す。)とを備える。
第二関係証明検証装置423は、ハッシュ関数の計算装置410と通信可能に接続される。また、第二関係証明検証装置423は、第二の関係R'に関する特別正直検証者零知識対話証明の検証装置408(以下、第二対話証明検証装置408と記す。)とも通信可能に接続されている。
証明生成装置425は、ハッシュ関数の計算装置410と通信可能に接続される。また、証明生成装置425は、第一の関係R に関する特別正直検証者零知識対話証明の証明コミットメント生成装置403(以下、第一証明コミットメント生成装置403と記す。)と通信可能に接続される。また、証明生成装置425は、第一の関係R に関する特別正直検証者零知識対話証明の応答生成装置404(以下、第一応答生成装置404と記す。)と通信可能に接続される。さらに、証明生成装置425は、第二の関係R'に関する特別正直検証者零知識対話証明の模擬装置409(以下、第二関係模擬装置409と記す。)と通信可能に接続される。
第二関係証明生成装置417は、ハッシュ関数の計算装置411と通信可能に接続される。また、第二関係証明生成装置417は、第二の関係R' に関する特別正直検証者零知識対話証明の証明コミットメント生成装置406(以下、第二証明コミットメント生成装置406)と通信可能に接続される。さらに、第二関係証明生成装置417は、第二の関係R'に関する特別正直検証者零知識対話証明の応答生成装置407(以下、第二応答生成装置407)と通信可能に接続される。
証明検証装置434は、ハッシュ関数の計算装置411と通信可能に接続される。また、証明検証装置434は、第一の関係R に関する特別正直検証者零知識対話証明の検証装置405(以下、第一対話証明検証装置405と記す。)と通信可能に接続される。さらに、証明検証装置434は、第二対話証明検証装置408と通信可能に接続される。
第一証明コミットメント生成装置403は、関数(関数ARとする。)に従って、証明生成装置425からの入力に応じた証明コミットメントを生成し、証明生成装置425に出力する。なお、本実施の形態における関数ARの具体的な計算例は、例えば、従来技術2で示した関数ARと同様である。
第一応答生成装置404は、関数(関数ZRとする。)に従って、証明生成装置425からの入力に応じた応答を生成し、証明生成装置425に出力する。なお、本実施の形態における関数ZRの具体的な計算例は、例えば、従来技術2で示した関数ZRと同様である。
第一対話証明検証装置405は、関数(関数VRとする。)に従って、証明検証装置434からの入力に応じた検証結果(証明の受理あるいは不受理を表す信号)を生成し、証明検証装置434に出力する。なお、本実施の形態における関数VRの具体的な計算例は、例えば、従来技術2で示した関数VRと同様である。なお、検証結果が1であれば、証明の受理を表し、検証結果が0であれば、証明の不受理を表すものとする。
第二証明コミットメント生成装置406は、関数(関数AR’ とする。)に従って、第二関係証明生成装置417からの入力に応じた証明コミットメント(aR'とする。)を生成し、第二関係証明生成装置417に出力する。関数AR’ は、共通入力、証拠、ランダムテープを入力とし、証明コミットメントを出力する関数である。ここでは、関数AR’ が関数ARとは異なる計算を行う関数であるものとして説明するが、第一の関係R と第二の関係R’とが同じ関係であるならば、関数AR’ が関数ARと同様の計算を行う関数であってもよい。
第二応答生成装置407は、関数(関数ZR’ とする。)に従って、第二関係証明生成装置417からの入力に応じた応答を生成し、第二関係証明生成装置417に出力する。関数ZR’ は、共通入力、証拠、挑戦値、およびランダムテープを入力とし、応答(zR'とする。)を出力する関数である。ここでは、関数ZR’ が関数ZRとは異なる計算を行う関数であるものとして説明するが、第一の関係R と第二の関係R’とが同じ関係であるならば、関数ZR’ が関数ZRと同様の計算を行う関数であってもよい。
第二対話証明検証装置408は、関数(関数VR’ とする。)に従って、第二関係証明検証装置423や証明検証装置434からの入力に応じた検証結果(証明の受理あるいは不受理を表す信号)を生成し、第二関係証明検証装置423や証明検証装置434にその検証結果を出力する。関数VR’ は、証明コミットメント、応答、共通入力、挑戦値を入力とし、検証結果を出力する関数である。ここでは、関数VR’ が関数VRとは異なる計算を行う関数であるものとして説明するが、第一の関係R と第二の関係R’とが同じ関係であるならば、関数VR’ が関数VRと同様の計算を行う関数であってもよい。なお、検証結果が1であれば、証明の受理を表し、検証結果が0であれば、証明の不受理を表すものとする。
第二関係模擬装置409は、関数(関数SR’ とする。)に従って、証明生成装置425からの入力に応じた証明コミットメントおよび応答を出力する。関数SR’ は、共通入力、挑戦値、およびランダムテープを入力とし、証明コミットメントおよび応答を出力する関数である。本実施の形態における関数SR’ の具体的な計算例は、例えば、従来技術2で示した関数SRと同様である。
第二関係証明生成装置417には、共通入力X と第三のランダムテープが入力される。なお、第三のランダムテープとしては、RVおよびR'V が入力される。また、第二関係証明生成装置417は、第二の関係R'に関する非対話的知識の証明(PR' とする。)を第二関係証明検証装置423に出力する。
第二関係証明検証装置423は、第二の関係R'に関する非対話的知識の証明PR' を用いて、所定の関係式が成立しているか否かを判定する。
証明生成装置425には、前述の共通入力X、証拠W、第一のランダムテープRP、第二のランダムテープR'Pが入力される。そして、非対話的な、第一の関係を満たす証拠、あるいは第二の関係を満たす証拠のいずれかの証拠の知識の証明(PR∨R'とする。)を生成し、その証明を証明検証装置434に出力する。
証明検証装置434は、第一対話証明検証装置405および第二対話証明検証装置408との通信結果に基づいて、証明PR∨R'の受理または不受理を表す信号を検証結果435として出力する。
なお、図2では、符号412を用いて共通入力X を示している。また、符号413を用いて証拠W を示している。また、符号414を用いて第一のランダムテープRPを示している。また、符号415を用いて第二のランダムテープR'P を示している。また、符号416を用いて第三のランダムテープRVおよびR'V を示している。
次に、証明装置401と検証装置402とによる関係R の否認可能零知識対話証明の動作について説明する。
まず、証明装置401の証明生成装置425に、(X,W) ∈ Rなる共通入力X 、証拠W 、第一のランダムテープRP、および第二のランダムテープR'Pが入力される。
続いて、検証装置402の第二関係証明生成装置417に、共通入力X 及び第三のランダムテープRVおよびR'V が入力される。
次に、第二関係証明生成装置417は、以下のようにして、第二の関係R'に関する非対話的知識の証明PR' を生成する。
第二関係証明生成装置417は、一様無作為に、(X',W') ∈ R' なるX',W' (第二の関係R'に関する共通入力および証拠)を、第三のランダムテープのうちのR'V を用いて生成する。
次に、第二関係証明生成装置417は、共通入力X'、証拠W'、第三のランダムテープのうちのRVを第二証明コミットメント生成装置406に送信する。第二証明コミットメント生成装置406は、関数AR’ によって、aR'=AR'(X',W', RV)として、証明コミットメントaR' を生成する。そして、第二証明コミットメント生成装置406は、証明コミットメントaR' を第二関係証明生成装置417に送信する。このときの通信を、図2では、通信418として示している。
次に、第二関係証明生成装置417は、共通入力X'、証明コミットメントaR' をハッシュ関数の計算装置411に送信する。ハッシュ関数の計算装置411は、eR' =Hash(X',aR') としてハッシュ値を計算する。ハッシュ関数の計算装置411は、ハッシュ値eR' を第二関係証明生成装置417に送信する。このときの通信を、図2では、通信419として示している。
次に、第二関係証明生成装置417は、共通入力X'、証拠W'、ハッシュ値eR' 、および第三のランダムテープのうちのRVを第二応答生成装置407に送信する。ここでは、ハッシュ値eR' を挑戦値として送信する。第二応答生成装置407は、関数ZR’ によって、zR' =ZR'(X',W',eR', RV)として、応答zR'を生成する。第二応答生成装置407は、応答zR'を第二関係証明生成装置417に送信する。このときの通信を、図2では、通信420として示している。
第二関係証明生成装置417は、第二の関係R'に関する非対話的知識の証明PR'を(X',aR',zR') とする。第二関係証明生成装置417は、以上のようにして生成した証明PR'=(X',aR',zR')を、第二関係証明検証装置423に送信する(図2に示す通信421)。
なお、第二関係証明検証装置423は、証明PR'(第二の関係R’に関する共通入力X'とその共通入力X'に対応する証拠W'の知識の非対話証明)が送信されてくるのを待ち、上記の通信421で、第二関係証明生成装置417をから証明PR'=(X',aR',zR')を受信する。
証明装置401の第二関係証明検証装置423は、以下のようにして、第二の関係R' に関する非対話的知識の証明 PR'を検証する。
第二関係証明検証装置423は、共通入力X'、証明コミットメントaR' をハッシュ関数の計算装置410に送信する。ハッシュ関数の計算装置410は、eR' = Hash(X',aR') としてハッシュ値を計算する。ハッシュ関数の計算装置410は、ハッシュ値eR'を第二関係証明検証装置423に送信する。このときの通信を、図2では、通信422として示している。
第二関係証明検証装置423は、共通入力X'、証明コミットメントaR' 、ハッシュ値eR'、応答zR'を第二対話証明検証装置408に送信する。ここでは、ハッシュ値eR' を挑戦値として送信する。第二対話証明検証装置408は、関数VR’ によって、VR'(X',aR',eR',zR')の計算結果を導出し、その計算結果を第二関係証明検証装置423に送信する。このときの通信を、図2では、通信424として示している。
第二関係証明検証装置423は、VR'(X',aR',eR',zR')=1が成り立つか否かを判定する。成り立っていないならば、証明装置401を停止する。また、成り立っているならば、証明装置401は、次に示す動作を行う。すなわち、VR'(X',aR',eR',zR')=1が成立していれば、証明 PR'を受理とし、成立していなければ証明 PR'を不受理とする。
証明装置401の証明生成装置425は、以下のようにして、第一の関係R を満す証拠あるいは第二の関 係R' を満す証拠の、いずれかの証拠に関する知識の非対話的知識の証明PR∨R'を生成する。
証明生成装置425は、第二のランダムテープR'Pを用いて乱数e'R'を生成し、これを第二の関係R'に関する挑戦値とする。
次に、証明生成装置425は、共通入力X'、挑戦値e'R'、および第二のランダムテープR'Pを第二関係模擬装置409に送信して、第二関係模擬装置409に第二の関係R'に関する証明コミットメントa'R'と応答z'R'を生成させる。第二関係模擬装置409は、関数SR’ によって、(a'R',z'R') =SR'(X',e'R',R'P)を導出し、証明コミットメントa'R'と応答z'R'を証明生成装置425に送信する。このときの通信を、図2では、通信426として示している。
次に、証明生成装置425は、共通入力X 、証拠W 、および第一のランダムテープRPを第一証明コミットメント生成装置403に送信する。第一証明コミットメント生成装置403は、関数ARによって、aR=AR(X,W,RP)として、証明コミットメントaRを生成し、証明生成装置425に送信する。このときの通信を、図2では、通信427として示している。
次に、証明生成装置425は、第一の関係R に関する共通入力X 、証明コミットメントaR、第二の関係R'に関する共通入力X'、証明コミットメントa'R'を、ハッシュ関数の計算装置410に送信する。ハッシュ関数の計算装置410は、e = Hash(X,aR,X',a'R')としてハッシュ値e を計算し、そのハッシュ値を証明生成装置425に送信する。このときの通信を、図2では、通信428として示している。
次に、証明生成装置425は、eR= e ∨ e'R'として、挑戦値eRを計算する。証明生成装置425は、共通入力X 、証拠W 、挑戦値eR、および第一のランダムテープRPを第一応答生成装置404に送信し、応答zRを生成させる。第一応答生成装置404は、関数ZRによって、zR=ZR(X,W,eR,RP)として、応答zRを生成し、応答zRを証明生成装置425に送信する。このときの通信を、図2では、通信429として示している。
証明生成装置425は、第一の関係R を満す証拠あるいは第二の関係R'を満す証拠の、いずれかの証拠に関する知識の非対話的知識の証明 PR∨R' を(aR,eR,zR, a'R',e'R',z'R') とする。証明生成装置425は、以上のようにして生成した証明PR∨R'= (aR,eR,zR, a'R',e'R',z'R')を、検証装置402の証明検証装置434に送信する(図2に示す通信429)。
証明検証装置434は、共通入力X (検証装置402に入力された共通入力X)、証明コミットメントaR、共通入力X'、および証明コミットメントa'R'をハッシュ関数の計算装置411に送信し、ハッシュ値を計算させる。ハッシュ関数の計算装置411は、Hash(X,aR,X',a'R')の計算結果を導出し、その計算結果(ハッシュ値)を証明検証装置434に送信する。このときの通信を、図2では、通信430として示している。そして、証明検証装置434は、Hash(X,aR,X',a'R')の計算結果が、eR∨e'R'と等しくなっているか否かを判定する。
次に、証明検証装置434は、共通入力X 、証明コミットメントaR、挑戦値eR、応答zRを第一対話証明検証装置405に送信する。第一対話証明検証装置405は、関数VRによって、VR(X,aR,eR,zR)の計算結果を導出し、その計算結果を証明検証装置434に送信する。このときの通信を、図2では、通信432として示している。証明検証装置434は、VR(X,aR,eR,zR)=1が成立しているか否かを判定する。
次に、証明検証装置434は、共通入力X'、証明コミットメントa'R'、挑戦値e'R'、応答z'R'を第二対話証明検証装置408に送信する。第二対話証明検証装置408は、関数VR’ によって、VR'(X',a'R',e'R',z'R')の計算結果を導出し、その計算結果を証明検証装置434に送信する。このときの通信を、図2では、通信431として示している。証明検証装置434は、VR'(X',a'R',e'R',z'R')=1が成立しているか否かを判定する。
証明検証装置434は、上記の各判定が全て成立している場合、すなわち、Hash(X,aR,X',a'R')=eR∨e'R'、VR(X,aR,eR,zR)=1、およびVR'(X',a'R',e'R',z'R')=1が全て成立している場合、“1”を検証結果435として出力する。その他の場合、証明検証装置434は、“0”を検証結果435として出力する。上記の“1”は、証明 PR∨R' を受理することを表す。また、上記の“0”は、証明 PR∨R' を受理しないことを表す。
第2の実施の形態によれば、検証装置402から証明装置401に送信する通信量が少なくて済み、通信量や計算量を抑えることができる。例えば、図4に示す従来技術1では、検証装置から証明装置に2t個のc[1,i]、c[2,i]を送信している。それに対し、第2の実施の形態では、検証装置402は、証明装置401に対して証明PR’を送信しているのみである。このように、本発明によれば、通信量や計算量を抑えることができる。
第2の実施の形態において、証明装置が備える非対話証明受信手段、非対話証明受理不受理判定手段は、証明装置402の第二関係証明検証装置423によって実現される。また、証明装置が備える共通入力等受信手段、ランダムテープ入力手段、証拠知識非対話証明生成手段、非対話証明送信手段は、証明装置402の証明生成装置425によって実現される。
そして、検証装置が備える共通入力入力手段、ランダムテープ入力手段、共通入力等生成手段、証拠知識非対話証明生成手段、非対話証明送信手段は、検証装置402の第二関係証明生成装置417によって実現される。また、検証装置が備える非対話証明受信手段、判定手段は、検証装置402の証明検証装置434によって実現される。
本発明によれば、特別正直検証者零知識対話証明が存在すれば否認可能零知識対話証明を行なうことが可能であり、特にその計算量と通信量に関する効率を従来技術1と比較して著しく高めることができる。
また、本発明によれば、証明装置が、検証装置と通信を行った事実を、いかなる検証装置も証明することができないため、効率的な否認不可署名、否認可能証明、レシートフリー電子投票を実現することができる。
また、上記の各実施の形態において、証明装置、検証装置を、それぞれプログラムに従って動作するコンピュータによって実現してもよい。
なお、上記の各実施の形態では、証明を受理する場合を“1”で表し、受理しない場合を“0”で表すようにしているが、逆であってもよい。
以下、第2の実施の形態の実施例について説明する。図3は、本発明の第2の形態の実施例を示す説明図である。本実施例では、第一の関係R と第二の関係R'として両方とも同じ離散対数の関係を用いる場合を例にして説明する。そして、本実施例の実現は、否認可能認証となっている。ここでは、証明装置が検証装置による認証を受ける。
図3に示す証明装置501は、第2の実施の形態における証明装置401に相当し、図3に検証装置502は、第2の実施の形態における検証装置402に相当する。
証明装置501は、第二の関係に関する非対話的知識の証明検証装置523(以下、第二関係証明検証装置523と記す。)と、非対話的な、第一の関係を満たす証拠、あるいは第二の関係を満たす証拠のいずれかの証拠の知識の証明生成装置525(以下、証明生成装置525と記す。)とを備える。これらは、それぞれ、第二の実施の形態における証明検証装置423、証明生成装置425に相当する。
検証装置502は、第二の関係に関する非対話的知識の証明生成装置517(以下、第二関係証明生成装置517と記す。)と、非対話的な、第一の関係を満たす知識、あるいは第二の関係を満たす知識のいずれかの知識の証明検証装置534(以下、証明検証装置534と記す。)とを備える。これらは、それぞれ、第二の実施の形態における第二関係証明生成装置417、証明検証装置434に相当する。
また、図3に示すハッシュ関数の計算装置510,511は、それぞれ第2の実施の形態におけるハッシュ関数の計算装置410,411に相当する。
また、図3では、符号512を用いて共通入力X を示している。また、符号513を用いて証拠W を示している。また、符号514を用いて第一のランダムテープRPを示している。また、符号515を用いて第二のランダムテープR'P を示している。また、符号516を用いて第三のランダムテープRVおよびR'V を示している。
本実施例では、第一の関係R と第二の関係R'として両方とも同じ離散対数の関係を用いる。従って、第2の実施の形態における第一証明コミットメント生成装置403および第二証明コミットメント生成装置406を、同一の装置で実現している。この装置は、図3に示す離散対数の関係に関する特別正直検証者零知識対話証明の証明コミットメント生成装置503(以下、証明コミットメント生成装置503と記す。)である。証明コミットメント生成装置503は、関数ARによって、証明コミットメントを生成する。
同様に、本実施例では、第2の実施の形態における第一応答生成装置404および第二応答生成装置407を、同一の装置で実現している。この装置は、図3に示す離散対数の関係に関する特別正直検証者零知識対話証明の応答生成装置504(以下、応答生成装置504と記す。)である。応答生成装置504は、関数ZRによって、応答を生成する。
同様に、本実施例では、第2の実施の形態における第一対話証明検証装置405および第二対話証明検証装置408を、同一の装置で実現している。この装置は、図3に示す離散対数の関係に関する特別正直検証者零知識対話証明の検証装置505(以下、対話証明検証装置505と記す。)である。対話証明検証装置505は、関数VRによって、検証結果を導出する。
また、図3に示す離散対数の関係に関する特別正直検証者零知識対話証明の模擬装置509(以下、模擬装置509と記す。)は、第二の実施の形態における第二関係模擬装置409に相当する。模擬装置509は、関数SR’ を用いて、証明コミットメントおよび応答を生成する。
以下に本実施例における関数AR、関数ZR、関数VR、関数SR’ について説明する。なお、本実施例では用いないが、補足として、従来技術2における関数ERについても併せて説明する。
[関数AR]
入力は、X,W 、及びランダムテープRPである。そして、RPからランダムな x' ∈ Z/qZ を生成し、aR = y' =gx' として、aRを出力する。
[関数ZR]
入力は、X,W、ランダムテープRP、及び eR=cである。そして、 zR = r = xc + x' mod q を計算し、zRを出力する。
[関数VR]
入力は、X,aR,eR,zRである。そして、gr = yc y'が成立するならば1を出力し、成立しないならば0を出力する。
[関数SR’ ]
入力は、X,eR=c,及びランダムテープRSである。そして、RSからランダムな zR=r ∈ Z/qZ を生成し、aR = y' = gry-c を生成する。そして、(aR,zR) を出力する。
[関数ER]
入力は、aR,eR=c,zR=r, e'R=c',z'R=r'である。そして、 W = x =(r-r')/(c'-c) mod q を計算し、W を出力する。
なお、上記の関数の説明で、入力となるランダムテープをRS等と表したが、これは入力となるランダムテープを便宜的に表したものに過ぎない。
次に、本実施例における証明装置と検証装置とによる否認可能認証の動作について説明する。
まず、証明装置501の証明生成装置525に、(X,W) ∈ Rなる共通入力X 、証拠W 、第一のランダムテープRP、および第二のランダムテープR'Pが入力される。
続いて、検証装置502の第二関係証明生成装置517に、共通入力X 及び第三のランダムテープRVおよびR'V が入力される。
次に、第二関係証明生成装置517は、以下のようにして、離散対数の関係に関する非対話的知識の証明PRを生成する。
第二関係証明生成装置517は、一様無作為に、(X',W') ∈R' なるX',W' を、第三のランダムテープのうちのR'V を用いて生成する。
次に、第二関係証明生成装置517は、共通入力X'、証拠W'、第三のランダムテープのうちのRVを証明コミットメント生成装置503に送信する。証明コミットメント生成装置503は、関数ARによって、αR= AR(X',W', RV)として、証明コミットメントαR を生成する。そして、証明コミットメント生成装置503は、証明コミットメントαR を第二関係証明生成装置517に送信する。このときの通信を、図3では、通信518として示している。
次に、第二関係証明生成装置517は、共通入力X'、証明コミットメントαR をハッシュ関数の計算装置511に送信する。ハッシュ関数の計算装置511は、εR=Hash(X', αR)としてハッシュ値を計算する。ハッシュ関数の計算装置511は、ハッシュ値εR を第二関係証明生成装置517に送信する。このときの通信を、図3では、通信519として示している。
次に、第二関係証明生成装置517は、共通入力X'、証拠W'、ハッシュ値εR 、および第三のランダムテープのうちのRVを応答生成装置504に送信する。ここでは、ハッシュ値εR を挑戦値として送信する。応答生成装置504は、関数ZRによって、ζR =ZR(X',W',εR, RV)として、応答ζR を生成する。応答生成装置504は、応答ζR を第二関係証明生成装置517に送信する。このときの通信を、図3では、通信520として示している。
第二関係証明生成装置517は、離散対数の関係に関する非対話的知識の証明PRを(X',εR,ζR)とする。第二関係証明生成装置517は、以上のようにして生成した証明 PR=(X',εR,ζR)を、第二関係証明検証装置523に送信する(図3に示す通信521)。
なお、第二関係証明検証装置523は、証明PRが送信されてくるのを待ち、上記の通信521で、第二関係証明生成装置517から証明 PR=(X',εR,ζR)を受信する。
証明装置501の第二関係証明検証装置523は、以下のようにして、離散対数の関係に関する非対話的知識の証明PRを検証する。
第二関係証明検証装置523は、共通入力X'、証明コミットメントαR をハッシュ関数の計算装置510に送信する。ハッシュ関数の計算装置510は、ε'R = Hash(X', αR)としてハッシュ値を計算する。ハッシュ関数の計算装置510は、ハッシュ値ε'Rを第二関係証明検証装置523に送信する。このときの通信を、図3では、通信522として示している。
第二関係証明検証装置523は、共通入力X'、証明コミットメントαR 、ハッシュ値ε'R、応答ζR を対話証明検証装置505に送信する。ここでは、ハッシュ値ε'Rを挑戦値として送信する。対話証明検証装置505は、関数VRによって、VR(X',αR,ε'R, ζR)の計算結果を導出し、その計算結果を第二関係証明検証装置523に送信する。このときの通信を、図3では、通信524として示している。
第二関係証明検証装置523は、VR(X',αR,ε'R, ζR)=1が成り立つか否かを判定する。成り立っていないならば、証明装置501を停止する。また、成り立っているならば、証明装置501は、次に示す動作を行う。すなわち、VR(X',αR,ε'R, ζR)=1が成立していれば、証明PRを受理とし、成立していなければ証明PRを不受理とする。
証明装置501の証明生成装置525は、以下のようにして、X に関して離散対数の関係を満す証拠あるいはX'に関して離散対数の関係を満す証拠の、いずれかの証拠に関する知識の非対話的知識の証明 PR(X)∨R(X') を生成する。
証明生成装置525は、第二のランダムテープR'P を用いて乱数e'Rを生成し、これを挑戦値とする。
次に、証明生成装置525は、共通入力X'、挑戦値e'R、および第二のランダムテープR'Pを模擬装置509に送信して、模擬装置509に証明コミットメントa'Rと応答z'Rを生成させる。模擬装置509は、関数SR’ によって、(a'R,z'R) =SR'(X',e'R,R'P)を導出し、証明コミットメントa'Rと応答z'Rを証明生成装置525に送信する。このときの通信を、図3では、通信526として示している。
次に、証明生成装置525は、共通入力X 、証拠W 、および第一のランダムテープRPを証明コミットメント生成装置503に送信する。証明コミットメント生成装置503は、関数ARによって、aR=AR(X,W,RP)として、証明コミットメントaRを生成し、証明生成装置525に送信する。このときの通信を、図3では、通信527として示している。
次に、証明生成装置525は、共通入力X 、証明コミットメントaR、共通入力X'、証明コミットメントa'Rを、ハッシュ関数の計算装置510に送信する。ハッシュ関数の計算装置510は、e = Hash(X,aR,X',a'R) としてハッシュ値e を計算し、そのハッシュ値を証明生成装置525に送信する。このときの通信を、図3では、通信528として示している。
次に、証明生成装置525は、eR= e ∨ e'Rとして、挑戦値eRを計算する。証明生成装置525は、共通入力X 、証拠W 、挑戦値eR、および第一のランダムテープRPを応答生成装置504に送信し、応答zRを生成させる。応答生成装置504は、関数ZRによって、zR=ZR(X,W,eR,RP)として、応答zRを生成し、応答zRを証明生成装置525に送信する。このときの通信を、図3では、通信529として示している。
証明生成装置525は、X に関する離散対数の関係を満す証拠あるいはX' に関する離散対数の関係を満す証拠の、いずれかの証拠に関する知識の非対話的知識の証明 PR(X)∨R(X') を(aR,eR,zR, a'R,e'R,z'R)とする。証明生成装置525は、以上のようにして生成した証明 PR(X)∨R(X') =(aR,eR,zR, a'R,e'R,z'R)を、検証装置502の証明検証装置534に送信する(図3に示す通信529)。
証明検証装置534は、共通入力X 、証明コミットメントaR、共通入力X'、および証明コミットメントa'Rをハッシュ関数の計算装置511に送信し、ハッシュ値を計算させる。ハッシュ関数の計算装置511は、Hash(X,aR,X',a'R) の計算結果を導出し、その計算結果(ハッシュ値)を証明検証装置534に送信する。このときの通信を、図3では、通信530として示している。そして、証明検証装置534は、Hash(X,aR,X',a'R) の計算結果が、eR∨e'Rと等しくなっているか否かを判定する。
次に、証明検証装置534は、共通入力X 、証明コミットメントaR、挑戦値eR、応答zRを対話証明検証装置505に送信する。対話証明検証装置505は、関数VRによって、VR(X,aR,eR,zR)の計算結果を導出し、その計算結果を証明検証装置534に送信する。このときの通信を、図3では、通信532として示している。証明検証装置534は、VR(X,aR,eR,zR)=1が成立しているか否かを判定する。
次に、証明検証装置534は、共通入力X'、証明コミットメントa'R、挑戦値e'R、応答z'Rを対話証明検証装置505に送信する。対話証明検証装置505は、関数VRによって、VR(X',a'R,e'R,z'R)の計算結果を導出し、その計算結果を証明検証装置534に送信する。このときの通信を、図3では、通信531として示している。証明検証装置534は、VR(X',a'R,e'R,z'R)=1が成立しているかを判定する。
証明検証装置534は、上記の各判定が全て成立している場合、すなわち、Hash(X,aR,X',a'R) =eR∨e'R、VR(X,aR,eR,zR)=1、およびVR(X',a'R,e'R,z'R)=1が全て成立している場合、“1”を検証結果535として出力する。その他の場合、証明検証装置534は、“0”をを検証結果535として出力する。上記の“1”は、証明 PR(X)∨R(X')を受理することを表す。また、上記の“0”は、証明 PR(X)∨R(X')を受理しないことを表す。
本発明は、例えば、否認不可署名の否認プロトコル、 否認不可署名の確認プロトコル、否認可能認証等に使われる否認可能零知識対話証明に適用可能である。
また、本発明は、スマートカード等の計算力の小さなハードウェアによる否認可能認証にも適用可能である。スマートカード等を用いて従来の方法で否認可能証明のようなプライバシー保護性が高い認証を行なう場合、スマートカード等の計算力の低さにより、膨大な時間がかかってしまっていた。本発明を適用することにより、一般に使われているプライバシー保護性が低い認証の高々2倍程度の計算量で、プライバシー保護性が高い認証を実現できる。
また、サーバ等が多くのプライバシー保護性が高い認証を行なう場合にも、本発明を用いることができる。一般に、サーバ等が多量の認証を行なう場合、個々の認証に必要な時間と通信量が大して多くなくとも、多量の認証を行なうと、全体としてそれらの量は膨大となる。本発明を用いれば、プライバシー保護性が高い認証を行っても、サーバの計算量と通信量を小さく抑えることができる。
また、プライバシー保護性が高い零知識証明を行なう場合にも、本発明を用いることができる。認証、電子投票、否認 不可署名、検証者指定署名等、高いプライバシー保護性が満されると都合のよいアプリケーションが多くある。また、これらのアプリケーションに対応する特別正直検証者零知識対話証明が数多く提案されている。これらの特別正直検証者零知識対話証明に本発明を適用すれば、高いプライバシー保護性が満される電子投票、否認不可署名、検証者指定署名等が容易に実現できる。
本発明の第1の実施の形態の証明装置および検証装置を示す説明図である。
本発明の第2の実施の形態の証明装置および検証装置を示す説明図である。
本発明の実施例を示す説明図である。
非特許文献1に記載される構成を示す説明図である。
非特許文献2に記載される構成を示す説明図である。
非特許文献2に記載される構成を示す説明図である。
符号の説明
301 証明装置
302 検証装置
303 証明コミットメント生成装置
304 応答生成装置
305 対話証明検証装置
310,311 ハッシュ関数の計算装置
312 挑戦値のコミットメント生成装置
324 挑戦値のコミットメント検証装置
330 証明生成装置
340 証明検証装置