(57)【特許請求の範囲】
【請求項１】
証明者装置と検証者装置とを含むゼロ知識証明システムであって、
Hをハッシュ関数族とし、Hn=def{hs∈H s.t. s∈{0,1}n}とし、各h∈Hnの定義域を{0,1}*とし、各h∈Hnの値域を{0,1}nとして、上記検証者装置は、ハッシュ関数h∈Hnを選択して上記証明者装置に送信し、
i=1,…,Nslot, j=1,…,nとし、Com(0n)を0nのコミットメントを出力する確率的アルゴリズムとして、上記証明者装置は、Ci,j=Com(0n)及びC’i,j=Com(0n)を計算して、C→i=(Ci,1,C’i,1,…,Ci,n,C’i,n)を上記検証者装置に送信し、
i=1,…,Nslotとして、上記検証者装置は、文字列ri∈{0,1}n^2を生成して上記証明者装置に送信し、
上記証明者装置の入力を(x,w)とし、wをxのwitnessとし、上記検証者装置の入力をxとし、Λ1を所定の言語として、上記証明者装置は、いわゆるwitness indistinguishability安全性を保証する対話証明方式であるWIPOKを用いて上記検証者装置と複数回の通信を上記の入力に基づいて行うことで「(x∈L)∨(<h,C→1,r1,…,C→Nslot,rNslot>∈Λ1)」を検証者に証明する、
ゼロ知識証明システム。
【請求項２】
証明者装置と検証者装置との間でゼロ知識証明を行うゼロ知識証明方法であって、
Hをハッシュ関数族とし、Hn=def{hs∈H s.t. s∈{0,1}n}とし、各h∈Hnの定義域を{0,1}*とし、各h∈Hnの値域を{0,1}nとして、上記検証者装置が、ハッシュ関数h∈Hnを選択して上記証明者装置に送信するステップと、
i=1,…,Nslot, j=1,…,nとし、Com(0n)を0nのコミットメントを出力する確率的アルゴリズムとして、上記証明者装置が、Ci,j=Com(0n)及びC’i,j=Com(0n)を計算して、C→i=(Ci,1,C’i,1,…,Ci,n,C’i,n)を上記検証者装置に送信するステップと、
i=1,…,Nslotとして、上記検証者装置が、文字列ri∈{0,1}n^2を生成して上記証明者装置に送信するステップと、
上記証明者装置の入力を(x,w)とし、wをxのwitnessとし、上記検証者装置の入力をxとし、Λ1を所定の言語として、上記証明者装置が、いわゆるwitness indistinguishability安全性を保証する対話証明方式であるWIPOKを用いて上記検証者装置と複数回の通信を上記の入力に基づいて行うことで「(x∈L)∨(<h,C→1,r1,…,C→Nslot,rNslot>∈Λ1)」を検証者に証明するステップと、
を含むゼロ知識証明方法。
【請求項３】
請求項１のゼロ知識証明システムの証明者装置。
【請求項４】
請求項１のゼロ知識証明システムの検証者装置。
【請求項５】
請求項３の証明者装置としてコンピュータを機能させるためのプログラム。
【請求項６】
請求項４の検証者装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号プロトコルに関するものであり、特に対話により証明を行う暗号プロトコル（対話証明）の一種であるゼロ知識証明に関するものである。
【背景技術】
【０００２】
ゼロ知識証明では、証明者と呼ばれるプロトコル参加者が検証者と呼ばれるプロトコル参加者と複数回の通信を行うことにより証明を行う。特に、証明者と検証者はNP 言語L とインスタンスx を共通入力として持ち、証明者はx ∈ Lが成り立つことを検証者に証明する。証明者はx ∈ L であることのwitness w を秘密入力として持つ。ゼロ知識証明の安全性として、以下の（１）から（３）が知られている。
（１）完全性： x ∈ L ならば（命題が真であるならば）、証明が成功する。
（２）健全性： x ∈ L でないならば（命題が偽であるならば）、どのような証明者も証明に失敗する。
（３）ゼロ知識性： x ∈ L ならば、どのような検証者に対してもx ∈ L であること以外の情報（例えばw に関する情報）は漏れない。
【０００３】
ゼロ知識証明は、単独でも認証などにおいて有用であり，さらに他の暗号プロトコルの構成要素としても有用であることが知られている。
【０００４】
ゼロ知識証明に関しては複数の追加的な性質や安全性が提案されているが、その中で本発明に関連するのは以下に挙げる公開乱数と並行実行可能性である。
【０００５】
公開乱数は、ゼロ知識証明の構成に関する性質であり、検証者が送信するメッセージは全て乱数であるという性質である。つまり、ゼロ知識証明では実行時に証明者と検証者が様々な値を交互に送信するが、公開乱数型のゼロ知識証明では実行時に検証者が送信する値が全て互いに独立な乱数である。公開乱数型のゼロ知識証明は、その構成の単純さから様々な応用が可能という長所がある。例えば公開乱数型のゼロ知識証明を用いると従来よりも強い健全性（リセット可能健全性）を満たすゼロ知識証明を構築できることが知られている。
【０００６】
並行実行可能性は、プロトコルを並行（concurrent）に実行しても安全性（特にゼロ知識性）が保たれるという性質である。ゼロ知識証明は、直列（sequential）実行においては常に安全性が保たれるが、一般に並行実行の場合は安全性が保たれるとは限らない。並行に実行するゼロ知識証明の数に制限は無く、また並行実行の順番にも制限が無い。並行実行可能ゼロ知識証明には，プロトコルが並行に実行される可能性がある状況でも安全に使用することができるという長所がある。例えばインターネットなどの非同期ネットワーク上では複数のゼロ知識証明を常に直列実行することは困難である。そのため、このようなネットワーク上でゼロ知識証明を利用するためには並行実行可能ゼロ知識証明が必要となる。
【０００７】
公開乱数型のゼロ知識証明と並行実行可能ゼロ知識証明に関する従来技術は多く存在するが、公開乱数と並行実行可能性の両者を同時に満たすことは困難であり従来技術は少ない。公開乱数型の並行実行可能ゼロ知識証明に関する従来技術について本発明に関連するのは以下に説明する非特許文献１，２に記載された技術である。
【０００８】
標準的な暗号学的仮定からの安全性証明が可能であり信頼できる第三者も利用しないという条件をつけると、公開乱数型の並行実行可能ゼロ知識証明に関する従来技術は非特許文献１に記載された技術のみである。しかし、非特許文献１で示されたゼロ知識証明にはラウンド数が大きいという欠点がある。つまり、非特許文献１のゼロ知識証明を実行する際には証明者と検証者が多数回の通信を行わなければならないため、実行時間が長くなり効率が悪い。具体的には、非特許文献１のゼロ知識証明におけるラウンド数はO(nε)である。ここで、nはセキュリティパラメータ、εは定数である。
【０００９】
また、ある種の信頼できる第三者を利用すると、標準的な仮定からの安全性証明が可能であり効率も良い公開乱数型の並行実行可能ゼロ知識証明が構築できることが示されている。特に、非特許文献２では、ランダムなハッシュ関数を公開する第三者がいるモデル（Global hash function model）において公開乱数型の並行実行可能ゼロ知識証明が提案されている。しかし、これらのプロトコルは信頼できる第三者を利用するため、利用可能な状況が限られるという欠点がある。
【００１０】
従来技術に関しては、（１）信頼できる第三者を利用しないが効率が悪い技術と、（２）効率は良いが信頼できる第三者を利用する技術とのどちらか２種類しかないという問題があった。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】Vipul Goyal, “Non-black-box simulation in the fully concurrent setting”, In STOC, pages 221-230, 2013.
【非特許文献２】Ran Canetti, Huijia Lin, and Omer Paneth, “Public-coin concurrent zero-knowledge in the global hash model”, In TCC, pages 80-99, 2013.
【発明の概要】
【発明が解決しようとする課題】
【００１２】
この発明は、従来よりも効率が良く、かつ、信頼できる第三者を利用しないゼロ知識証明システム及び方法、証明者装置、検証者装置並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の一態様によるゼロ知識証明システムは、証明者装置と検証者装置とを含むゼロ知識証明システムであって、Hをハッシュ関数族とし、Hn=def{hs∈H s.t. s∈{0,1}n}とし、各h∈Hnの定義域を{0,1}*とし、各h∈Hnの値域を{0,1}nとして、検証者装置は、ハッシュ関数h∈Hnを選択して証明者装置に送信し、i=1,…,Nslot, j=1,…,nとし、Com(0n)を0nのコミットメントを出力する確率的アルゴリズムとして、証明者装置は、Ci,j=Com(0n)及びC’i,j=Com(0n)を計算して、C→i=(Ci,1,C’i,1,…,Ci,n,C’i,n)を検証者装置に送信し、i=1,…,Nslotとして、検証者装置は、文字列ri∈{0,1}n^2を生成して証明者装置に送信し、証明者装置の入力を(x,w)とし、wをxのwitnessとし、検証者装置の入力をxとし、Λ1を所定の言語として、証明者装置は、いわゆるwitness indistinguishability安全性を保証する対話証明方式であるWIPOKを用いて検証者装置と複数回の通信を上記の入力に基づいて行うことで「(x∈L)∨(<h,C→1,r1,…,C→Nslot,rNslot>∈Λ1)」を検証者に証明する。
【発明の効果】
【００１４】
従来よりも効率が良く、かつ、信頼できる第三者を利用しないでゼロ知識証明を行うことができる。
【図面の簡単な説明】
【００１５】
【図１】ゼロ知識証明システムの機能ブロック図。
【発明を実施するための形態】
【００１６】
本発明は公開乱数型の並行実行可能ゼロ知識証明に関するものである。安全性は信頼できる第三者を利用せずに証明可能であり、かつ標準的な暗号学的からの安全性証明が可能である。同様の非特許文献１の技術と比べると、より小さいラウンド数（n^(ω(1/(log n)1/2)）で実現している。ここで、ω(1/(log n)1/2)は、1/(log n)1/2より漸近的に大きい任意の関数である。
【００１７】
本発明の実施形態では以下の従来技術を使用する。
【００１８】
衝突困難ハッシュ関数族： 本発明では衝突困難ハッシュ関数族H = {hs}s∈{0,1}*を利用する。ここで、各n∈Nに対してHn=def{hs∈H s.t. s∈{0,1}n}と表記する。このとき，各h∈Hnにおいて、hの定義域は{0,1}*（つまり任意長の文字列）、値域は{0,1}nである。
【００１９】
非対話コミットメント方式： 非対話コミットメント方式は確率的アルゴリズムComであり、文字列v∈{0,1}nと乱数r∈{0,1}poly(n)を入力としてvのコミットメントc=Com(v;r)を出力する。以下では「c←Com(v)」によって「ランダムにr∈{0,1}poly(n)を選びc=Com(v;r)を計算する」という操作を表す。「c←Com(v)」のことを「c=Com(v)」とも表現する。ここでは、特に、任意のcに対してCom(v;r)=cを満たす(v,r)が一意に定まるという性質を持つ方式を用いる。そのようなコミットメント方式は一方向性置換から構築できることがよく知られている。poly(n)は、nについての所定の多項式である。poly(n)は、Comに依存して定まる。
【００２０】
Witness-indistinguishable proof of knowledge： Witness-indistinguishable proof of knowledge (WIPOK)もゼロ知識証明と同様に対話証明の一種である。したがって、WIPOK においても証明者が検証者と複数回の通信を行うことで命題の証明を行う。ただし、WIPOK はゼロ知識性は保証せず、代わりにwitness indistinguishability という安全性を保証する。これは、「(x1∈ L1)∨(x2∈L2)」という形の命題を証明した際に、証明者がx1∈ L1が成り立つことを使って証明したのかx2∈L2が成り立つことを使って証明したのかを検証者が識別できないことを保証する。
【００２１】
WIPOK は、公開乱数のものであれば任意のものを用いることができる。なお、一方向性関数を用いると定数ラウンドの公開乱数型WIPOK が構築できることがよく知られている。
【００２２】
Universal argument： Universal argument（UA）もゼロ知識証明やWIPOK と同じく対話証明の１つである。ここでは、特に参考文献１のUA を用いる。
〔参考文献１〕Boaz Barak and Oded Goldreich, “Universal arguments and their applications”, SIAM J. Comput., 38(5):P.1661-1694, 2008.
【００２３】
このUA のラウンド数は4であるため、証明者と検証者の間での通信系列を(UA1,UA2,UA3,UA4)と書くことができる。つまり、ある値UA1を検証者が最初に送り、次に証明者が別の値UA2を送り、更に検証者がUA3を送り、最後に証明者がUA4を送る。
【００２４】
UA4を受信したあと、検証者は通信系列(UA1,UA2,UA3,UA4)から証明者による証明が正しいかを判定する。ここで、参考文献１のUAは公開乱数型であるためUA1とUA3は適切な長さの乱数である。具体的には、UA1はランダムなハッシュ関数h∈Hnであり、UA3はランダムなn2ビット文字列である。
【００２５】
以下、本発明の実施形態の技術的背景について説明する。本発明の実施形態の方式は，ゼロ知識証明の研究において盛んに使われるFeige-Lapidot-Sahai (FLS) technique に基づいている。このFLS technique について説明するために、まずゼロ知識証明の安全性であるゼロ知識性の定義について説明する。ゼロ知識性の定義においては、どのような検証者もwitness に関する情報などを得ていないことを表現するために、どのような検証者に対してもシミュレータが存在することを求めている。ここで、シミュレータは検証者と同じ入力（言語Lとインスタンスx）を受け取り、証明者-検証者間の通信系列を出力する（シミュレートする）。もし、どのような検証者に対してもシミュレータが存在するならば、直感的には以下の理由から検証者がwitnessに関する情報などを証明から得ていないことが保証される。
【００２６】
1. もし検証者が証明者と通信することで何らかの情報を得ているならば，その情報は証明者-検証者間の通信系列から計算できるはずである。検証者が証明者から得た情報は通信系列のみだからである。
2. したがって、もし検証者と同じ入力から証明者-検証者間の通信系列を出力するシミュレータが存在したら、検証者が得た情報は検証者の入力のみから計算できることになる。
3. これは検証者が得た情報は全て証明者と通信をすることなく計算することができることを意味するため、検証者の入力からは計算できない情報（witness w に関するものなど）を検証者は得ていないことになる。
【００２７】
このとき、FLS technique を用いたゼロ知識証明は以下のような形になる。なお、証明者が検証者に証明する命題はx∈Lである。
1. トラップドア情報生成フェイズ：証明者と検証者はトラップドア情報生成プロトコルと呼ばれるプロトコルを実行する。このプロトコルにおける証明者-検証者間の通信系列をtransと書くと、このプロトコルはtransに関して何らかの言語L~を定義する。
2. 証明フェイズ：証明者はWIPOK を用いて「(x∈L)∨(trans∈L~)」を証明する。トラップドア情報生成プロトコルは¬(trans∈L~)となるよう設計されているため、証明フェイズでのWIPOKによる証明が成功したらWIPOKの健全性からx∈Lが成り立つ。ここで、¬(trans∈Λ1)とは、transがΛ1の元ではないことを表す。一方でトラップドア情報生成プロトコルは、trans∈L~とシミュレートできるよう設計されてもいるため、シミュレータはtrans∈L~が成り立つことを用いて通信系列をシミュレートすることができる。
【００２８】
本発明の実施形態の方式は、前述のようにFLS techniqueに基づいているため、大まかな構成は上に示したものになる。
【００２９】
従来技術の違いは、新たに設計したトラップドア情報生成プロトコルを利用していることである。
【００３０】
以下、本発明の一実施形態であるゼロ知識証明システムについて説明する。
【００３１】
ゼロ知識証明システムは、図１に示すように、証明者装置Pと検証者装置Vとを例えば備えている。
入力： 証明者装置Pの入力は(x,w)、検証者装置Vの入力はxである。ここでNP言語Lに対してx∈Lであり、wはx∈Lのwitnessである。証明者装置Pの目的はx∈Lを証明することである。
パラメータ： 整数Nslot=n^ω(1/(log n)1/2)。
Stage 1: 検証者装置Vはランダムにハッシュ関数h∈Hnを選び、選択されたハッシュ関数hを証明者装置Pに送信する。
Stage 2: 各i∈{1,…,Nslot}について順番に、証明者装置Pと検証者装置Vは以下を行う。
1. 各j∈{1,…,n}について、証明者装置Pは、Ci,j←Com(0n)とC’i,j←Com(0n)を計算する。そして、証明者装置PはC→i=(Ci,1,C’i,1,…,Ci,n,C’i,n)を検証者Vに送信する。
2. 検証者装置Vはランダムな文字列ri∈{0,1}n^2を証明者装置Pに送信する。
このようにして、証明者装置Pは、i=1,…,Nslot, j=1,…,nとし、Ci,j=Com(0n)及びC’i,j=Com(0n)を計算して、C→i=(Ci,1,C’i,1,…,Ci,n,C’i,n)を検証者装置Vに送信する。
また、検証者装置Vは、i=1,…,Nslotとして、文字列ri∈{0,1}n^2を生成して証明者装置Pに送信する。
Stage 3: 証明者装置PはWIPOKを用いて「(x∈L)∨(<h,C→1,r1,…,C→Nslot,rNslot>∈Λ1)」を証明する。
【００３２】
ここで、Λ1は、上記FLS techniqueで説明したL~に対応する所定の言語である。すなわち、Λ1は、証明者装置Pと検証者装置Vとの間の通信プロトコルの通信系列をtransとして、上記通信プロトコルが¬(trans∈Λ1)となるよう設計されているが、trans∈Λ1とシミュレートできるよう設計されているという関係を満たす。具体的には、Λ1は以下の性質を満たす言語である。
【００３３】
言語Λ1：以下を満たすとき<h,C→1,r1,…,C→Nslot,rNslot>∈Λ1が成り立つ：
ある
i1,i2,i3∈{1,…,Nslot}およびj∈{1,…,n} s.t. i1<i2<i3,
UAの第2および第4 メッセージUA2∈{0,1}n，UA4∈{0,1}poly(n)，
Comに用いる乱数R∈{0,1}poly(n)
が存在して、
Ci3,j=Com(UA2;R), かつ
(h,UA2,ri3,UA4)は<h,Ci1,j,ri1,Ci2,j,C’i1,j,ri2>∈Λ2の正しい証明。
を満たす。
言語Λ2:以下を満たすとき<h,C1,r1,C2,C’1,r2>∈Λ2が成り立つ。
ある
オラクルマシンΠ s.t. |Π|≦T(n)，
UAの第2 および第4 メッセージUA2∈{0,1}n，UA4∈{0,1}poly(n)，
文字列τ s.t. |τ|≦T(n)，
Com に用いる乱数R1,R2,R’2∈{0,1}poly(n)，
整数T~≦T(n)
が存在して、
C1=Com(h(Π);R1), C2=Com(UA2,R2), C’2=Com(h(τ||T~);R’2)，かつ
r1はτの部分文字列，かつ
(h,UA2,r2,UA4)は<h,τ,T~>∈Λ3の正しい証明。
を満たす。
【００３４】
UA2∈{0,1}n，UA4∈{0,1}poly(n)は、シミュレータが通信系列をシミュレートする際に生成するメッセージである。
T(n)は、多項式より大きい関数、例えばnlogn等である。
言語Λ3:以下を満たすとき<Π,τ,T~>∈Λ3が成り立つ：
ある
文字列y s.t. |y|≦T~
が存在して，以下を満たす。
【００３５】
ΠOはT~ステップ内にτを出力する。ここで、Oはオラクルで、Qを受け取ったときにQ=Com(v;r)を満たす(v,r)を返す。Comの性質から、(v,r)は一意に定まる。
【００３６】
ΠOの実行時にΠがOにクエリする全てのQに対して、(Q,v,r)∈yが存在してQ=Com(v;r)を満たす。
【００３７】
以下、従来技術との比較について説明する。従来技術との違いはトラップドア生成プロトコル（Stage 1とStage 2）である。上記トラップドア情報生成プロトコルは非特許文献２のゼロ知識証明のトラップドア情報生成プロトコルに基づいている。しかし、非特許文献２のトラップドア情報生成プロトコルは信頼できる第三者を利用するため、上記の実施形態では主にトラップドア生成プロトコルによって定義する言語を上記したものへ変更することによって信頼できる第三者を不要にしている。特に、非特許文献２と比較すると言語を２種類から３種類に増やしている。
【００３８】
上記実施形態は、非特許文献１の方式と比較すると、ラウンド数をO(nε)からn^(ω(1/(log n)1/2)に削減しているため、効率が改善されている。また、非特許文献２の方式と比較すると、信頼できる第三者を利用しないため多様な状況で利用することができる。
【００３９】
［変形例等］
上記説明した処理は、記載の順にしたがって時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【００４０】
また、各装置における各種の処理機能をコンピュータによって実現してもよい。その場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、各装置における各種の処理機能がコンピュータ上で実現される。
【００４１】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００４２】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させてもよい。
【００４３】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶部に格納する。そして、処理の実行時、このコンピュータは、自己の記憶部に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実施形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよい。さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、プログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００４４】
また、コンピュータ上で所定のプログラムを実行させることにより、各装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
0006261493.tif 000002