JP2017069604A - 証明装置、証明システム、証明方法、およびプログラム - Google Patents

証明装置、証明システム、証明方法、およびプログラム Download PDF

Info

Publication number
JP2017069604A
JP2017069604A JP2015189347A JP2015189347A JP2017069604A JP 2017069604 A JP2017069604 A JP 2017069604A JP 2015189347 A JP2015189347 A JP 2015189347A JP 2015189347 A JP2015189347 A JP 2015189347A JP 2017069604 A JP2017069604 A JP 2017069604A
Authority
JP
Japan
Prior art keywords
graph
commitment
com
challenge
decommitment
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
Application number
JP2015189347A
Other languages
English (en)
Other versions
JP6392191B2 (ja
Inventor
奨 清島
Susumu Kiyoshima
奨 清島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2015189347A priority Critical patent/JP6392191B2/ja
Publication of JP2017069604A publication Critical patent/JP2017069604A/ja
Application granted granted Critical
Publication of JP6392191B2 publication Critical patent/JP6392191B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】Yaoのプロトコルを用いずに漏洩耐性を持つゼロ知識証明を構成する。【解決手段】証明装置および検証装置はハミルトン閉路を持たないグラフG1を得る。証明装置はグラフG1と同じサイズの零行列の各要素0へのコミットメントci,jを含む集合{ci,j}を出力する。検証装置はチャレンジchを出力する。証明装置はチャレンジchが第1値である場合にG1に由来するグラフH(0)の隣接行列A(0)の各要素ai,j(0)にコミットメントci,jをデコミットするためのデコミットメントdi,j(0)を含む集合を出力し、チャレンジchが第2値である場合に、ハミルトン閉路のみを持つグラフH(1)の隣接行列A(1)の要素のうち閉路をなす枝に対応する各要素ap,q(1)にコミットメントcp,q∈{ci,j}をデコミットするためのデコミットメントdp,q(1)を含む集合を出力する。【選択図】図1

Description

本発明は、暗号技術に関し、特に対話により証明を行う対話証明技術に関する。
漏洩耐性を持つゼロ知識証明は証明者の内部状態の一部が検証者に漏れた場合でもゼロ知識性が成り立つゼロ知識証明である。漏洩耐性を持つゼロ知識証明の既存技術としては非特許文献1で提案された方式がある。
Omkant Pandey, "Achieving constant round leakage-resilient zero-knowledge," In Yehuda Lindell, editor, Theory of Cryptography - 11th Theory of Cryptography Conference, TCC 2014, San Diego, CA, USA, February 24-26, 2014. Proceedings, volume 8349 of Lecture Notes in Computer Science, pages 146-166. Springer, 2014. Andrew Chi-Chih Yao, "How to generate and exchange secrets (extended abstract)," In 27th Annual Symposium on Foundations of Computer Science, Toronto, Canada, 27-29 October 1986, pages 162-167. IEEE Computer Society, 1986.
しかし、非特許文献1の方式には二者間秘密計算プロトコルであるYaoのプロトコル(例えば、非特許文献2参照)が用いられている。Yaoのプロトコルは計算量が大きく、効率面で望ましくない。
本発明の課題は、Yaoのプロトコルを用いずに漏洩耐性を持つゼロ知識証明を構成することである。
証明装置が検証装置に対し、グラフGがハミルトン閉路を持つことを証明する。証明装置および検証装置はハミルトン閉路を持たないグラフGを得る。証明装置は、コミット対象0とグラフG,Gと乱数ri,jとを含む情報に応じて得られる、グラフGと同じサイズの零行列の各要素0へのコミットメントci,jを含む集合{ci,j}を出力する。検証装置はチャレンジchを出力する。証明装置は、チャレンジchの入力を受け付け、チャレンジchが第1値である場合に、グラフGに由来するグラフH(0)の隣接行列A(0)の各要素ai,j (0)にコミットメントci,jをデコミットするためのデコミットメントdi,j (0)を含む集合を出力し、チャレンジchが第1値と異なる第2値である場合に、ハミルトン閉路のみを持つグラフH(1)の隣接行列A(1)の要素のうち閉路をなす枝に対応する各要素ap,q (1)にコミットメントcp,q∈{ci,j}をデコミットするためのデコミットメントdp,q (1)を含む集合を出力する。検証装置は、チャレンジchが第1値である場合に、{ci,j},{di,j (0)},{ai,j (0)}およびグラフG,Gを含む情報を用いて、コミットメントci,jが要素ai,j (0)にデコミットされたことを検証し、チャレンジchが第2値である場合に、{cp,q},{dp,q (1)}およびグラフG,Gを含む情報を用いて、コミットメントcp,qが1にデコミットされたことを確認し、かつ、1にデコミットされた要素に対応する枝を持つグラフがハミルトン閉路であることを検証する。
本発明では、Yaoのプロトコルを用いずに漏洩耐性を持つゼロ知識証明を構成できる。
図1は実施形態の証明システムを例示するブロック図である。 図2は実施形態の証明方法および検証方法を例示するフロー図である。 図3は実施形態の証明方法および検証方法を例示するフロー図である。
以下、本発明の実施形態を説明する。
[定義]
まず、実施形態で使用する用語を定義する。
実施形態では、証明者として機能する証明装置が検証者として機能する検証装置と通信を行うことによりゼロ知識証明を行う。ゼロ知識証明とは、証明者が「命題が真である」こと以外の知識を検証者に与えることなく、「命題が真である」ことを検証者に証明する手法である。ここで、証明者が証明する命題は「NP言語Lとインスタンス(ステートメント)xに関してx∈Lが成り立つ」ことである。この命題はNP(Non-deterministic Polynomial)に属する問題であり、その解を求める多項式時間アルゴリズムは必ずしも知られていないが、多項式サイズの証拠(witness)が与えられれば、解の正しさを多項式時間で検証できる判定問題である。NP言語Lの例は「正しく生成されたRSA暗号の公開鍵の集合」であり、インスタンスxの例は「特定の公開鍵」である。この場合の証拠wの例は公開鍵の素因数からなる列である。証明者と検証者は共通入力としてNP言語Lとインスタンスxを持ち、更に証明者はx∈Lであることの証拠wを持つ。
ゼロ知識証明の安全性は、以下の健全性およびゼロ知識性によって定義される。
健全性は「x∈Lでないとき、どのような証明者も証明に失敗する」という性質である。ここではプロトコルに従わない悪意を持った証明者も考慮する。
ゼロ知識性は「x∈Lならば、どのような多項式時間の計算能力を持つ検証者に対しても命題が真(x∈L)であること以外の情報(例えば、証拠wに関する情報)は漏れない」という性質である。ここでもプロトコルに従わない悪意を持った検証者も考慮する。
健全性において多項式時間の計算能力を持つ証明者のみを考慮したものをゼロ知識アーギュメントと呼ぶ。ゼロ知識証明およびゼロ知識アーギュメントは単独でも認証などにおいて有用であり、さらに他の暗号プロトコルの構成要素としても有用であることが知られている。
またゼロ知識性を表現するために、任意の検証者に対するシミュレータという概念を用いる。このシミュレータは検証者と同じ入力(NP言語Lとインスタンスx)を受け取り、証明者−検証者間の実際の通信系列と識別できない通信系列を出力する(シミュレートする)。もし、どのような検証者に対してもシミュレータが存在するならば、直感的には以下の理由から検証者が証拠に関する情報などを証明から得ていないことが保証される。
1.もし検証者が証明者と通信することで何らかの情報を得ているならば、その情報は証明者−検証者間の通信系列から計算できるはずである。なぜなら、検証者が証明者から得た情報は通信系列のみだからである。
2.したがって、もし検証者と同じ入力から証明者−検証者間の通信系列を出力するシミュレータが存在したら、検証者が得た情報は検証者の入力のみから計算できることになる。
3.これは検証者が得た情報は全て証明者と通信をすることなく計算することができることを意味するため、検証者の入力からは計算できない情報を検証者は得ていないことになる。
漏洩耐性を持つゼロ知識証明とは、証明者の内部状態(例えば、証拠、秘密入力、生成した乱数など)の一部が検証者に漏れた場合でもゼロ知識性が成り立つゼロ知識証明である。特に、検証者が任意の関数fを選ぶと証明者の内部状態stに関する情報f(st)が検証者に漏洩するというモデルにおいてゼロ知識性が成り立つゼロ知識証明である。それは消費電力などを物理的に観測することで内部状態に関する情報を得るサイドチャネル攻撃に対して安全性を保証するゼロ知識証明であると考えることもできる。しかし、ゼロ知識性というのは命題が真であること以外の情報(例えば、証拠wに関する情報)が検証者に漏れないという性質であるため、証明者の内部状態の一部である証拠wについての情報が検証者に漏洩するとゼロ知識性の実現は不可能となる。そこで漏洩耐性を持つゼロ知識証明の定義においてはゼロ知識性の定義を緩和する。直感的には、耐漏洩ゼロ知識性は「命題が真であることおよび漏洩した内部情報以外の情報は検証者に漏れない」ことを保証する性質である。具体的には、まずゼロ知識性の定義におけるシミュレータに追加の能力を与え、任意の関数f’を選ぶとシミュレータが証拠wに関する部分情報f’(w)を得ることができるようにする。そして、検証者がLビットの漏洩情報を受け取るならばシミュレータもLビットの漏洩情報を受け取ることができるようにゼロ知識性の定義を変更したものを耐漏洩ゼロ知識性の定義とする。
任意の確率的アルゴリズムAlgoに対し、「y:=Algo(x;r)」によって「入力xと乱数rでAlgoを計算し出力yを得る」という操作を表す。また「y←Algo(x)」によって「適切な長さの乱数r∈{0,1}*」を用いて「y:=Algo(x;r)を計算してyを得る」という操作を表す。「α:=β」は「αをβにする」ことを意味する。
「非対話コミットメント方式」は確率的アルゴリズムの組(Com,Dec,Verify)である。Comはビットb∈{0,1}を入力としてbへのコミットメントc←Com(b)(すなわち、c:=(b;r))を出力する。Decはコミットメントcとコミットされた値bとコミット時に用いた乱数rを入力としてデコミットメントd:=Dec(b,c;r)を出力する。Verifyはコミットメントcとデコミットされた値bとデコミットメントdを入力としてデコミットメントdを検証する(Verify(b,c,d)=1ならば検証成功)。特に本形態ではコミットメントcが擬似乱数である(つまりランダムな|c|ビット記号列と識別できない)という性質を持つ方式を用いる。ただし、|c|はcのビット長を表す。「記号」は文字を含む概念である。そのような非対話コミットメント方式は一方向性置換から構築できることがよく知られている。
本形態では、非特許文献1の漏洩耐性を持つゼロ知識証明における前提処理である「encrypted preamble」を流用する(非特許文献1の3.3節参照)。encrypted preambleは証明者と検証者との間で行われる対話型の通信処理である。非特許文献1では、あるNP言語Lsimが存在し、どのような証明者に対してもencrypted preambleにおける証明者−検証者間の通信系列σ(例えば、データ列)はσ∈Lsimを満たさないことが示されている。また、任意の検証者に対してシミュレータが存在し、その出力σ’はσ’∈Lsimを満たしつつ更にencrypted preambleの通信系列と識別不可能である。さらにシミュレータは同時にσ’∈Lsimの証拠も計算できる。LsimはNP言語であるため、σ∈Lsimを満たすか否かの問題は、グラフGがハミルトン閉路を持つグラフの集合Lhamに属するか否かの問題(G∈Lhamを満たすか否かの問題)であるハミルトン閉路問題に帰着可能である。
[原理]
まず、ある特定の性質を満たすコミットメント方式SpecialComがあれば漏洩耐性を持つゼロ知識証明を構築することができることを示す。次にSpecialComを非対話コミットメント方式Comから構築することができることを示す。
<SpecialComを用いた漏洩耐性を持つゼロ知識証明の構成>
≪SpecialCom≫
SpecialCom=(S_Com,S_Dec,S_Verify)を以下のような性質を満たす非対話コミットメント方式とする。
S_Comはビットb∈{0,1}と2つのグラフG,Gを入力とし、乱数rを生成してbへのコミットメントc←S_Com(G,G,b)(すなわち、c:=S_Com(G,G,b;r))を出力する。本形態では、例えばコミットメントc←S_Com(G,G,b)が擬似乱数であるという性質を持つ。ただし、これは必須ではない。S_Decはコミットメントcとコミットされたビットbとコミット時に用いた乱数rとグラフG,Gを入力とし、デコミットメントd:=S_Dec(G,G,c,b;r)を出力する。S_Verifyはコミットメントcとデコミットされた値bとデコミットメントdとグラフG,Gを入力とし、デコミットメントdを検証する(S_Verify(G,G,b,c,d)=1ならば検証成功)。
SpecialComは以下の性質を満たす。
(性質1)G∈Lhamでなく、かつ、G∈Lhamでないとき(GおよびGが何れもハミルトン閉路を持たないとき)、拘束性が成り立つ。ただし、ハミルトン閉路を持つグラフの集合をLhamで表す。つまり、以下の関係が成り立つ。
{c|∃d s.t. S_Verify(G0,G1,0,c,d)=1}∩{c|∃d s.t. S_Verify(G0,G1,1,c,d)=1}=φ
ただし、「∃d s.t.α」はαを満たすようなdが存在することを表す。φは空集合を表す。
(性質2)G∈LhamやG∈Lhamが成り立つかどうかにかかわらず、秘匿性が成り立つ。つまり、以下の関係が成り立つ。
{c|c←S_Com(G0,G1,0)}~{c|c←S_Com(G0,G1,1)}
ただし、α~βはαとβとを識別できないことを意味する。
(性質3)G∈Lhamのときは、G∈Lhamの証拠wを用いて0へのコミットメントを1にデコミットすることができる。つまり、あるアルゴリズムS_Equivが存在し、以下が成り立つ。
・任意の乱数rに関し、c:=S_Com(G,G,0;r),d’:=S_Equiv(G,G,w;r)とするとS_Verify(G,G,1,c,d’)=1が成り立つ。
(性質4)G∈LhamかつG∈Lhamのときは、G∈Lhamの証拠wとG∈Lhamの証拠wとを用い、1へのコミットメントを0のコミットメントだと「説明」することができる。つまり、あるアルゴリズムS_Adaptが存在し、以下が成り立つ。
・任意の乱数rに関し、c:=S_Com(G,G,1;r),r’:=S_Adapt(G,G,w,w;r)とするとS_Com(G,G,0;r’)=cが成り立つ。
≪漏洩耐性を持つゼロ知識証明の構成≫
証明者をP、検証者をVと表現する。一般性を失うことなく(ハミルトン閉路問題はNP完全問題であり、一般性を失わない)、PはVと共有するグラフGがハミルトン閉路を持つこと(つまりG∈Lhamであること)を証明するものとする。証明者Pが証拠wを持つとする。
ステップ1:PとVは非特許文献1のencrypted preambleを行う。その通信系列をσとする。また、命題σをハミルトン閉路問題に帰着して得られたグラフをGとする。Gの節点数(「頂点数」「ノード数」とも呼ぶ)をnとする。前述のようにencrypted preambleが正しく行われれば、σ∈Lsimを満たさず、G∈Lhamともならない。
ステップ2:PとVは以下のステップ2(a)〜2(d)の処理をパラレルにK回行う。ただし、Kは正整数(定数)であり、たとえばセキュリティパラメータである。
ステップ2(a):PはSpecialComを用いてn×nの零行列にコミットする。つまり、Pは各i∈[n],j∈[n]について乱数ri,jを選んでコミットメントci,j:=S_Com(G,G,0;ri,j)を計算し、{ci,ji∈[n],j∈[n]をVに送る。なお、[n]は1以上n以下の整数からなる集合{1,…,n}を表し、{ci,ji∈[n],j∈[n]はci,j(ただし、i∈[n],j∈[n])を要素とした集合(例えば、ci,jをi行j列の要素とした行列)を表す。また{ci,ji∈[n],j∈[n]を{ci,j}と省略して記載する場合もある。
ステップ2(b):Vはランダムなチャレンジch∈{0,1}をPに送る。
ステップ2(c):ch=0ならば、PはG上のランダム置換πを選び、H(0)=π(G)の隣接行列A(0):=M(H(0))を計算する。ただし、π(G)はグラフGの節点(「頂点」「ノード」とも呼ぶ)をπに従ってランダムに置換して得られるグラフを表し、隣接行列A(0)をA(0)={ai,j (0)i∈[n],j∈[n]と表記する(ただし、ai,j (0)∈{0,1})。PはG∈Lhamであることを証明するためにSpecialComの(性質3)を利用し、G∈Lhamの証拠wおよび乱数ri,jを用いて{ci,ji∈[n],j∈[n]を{ai,j (0)i∈[n],j∈[n]にデコミットする。つまりPは各i∈[n],j∈[n]についてai,j (0)=0ならばdi,j (0):=S_Dec(G,G,ci,j,0;ri,j)を計算し、ai,j (0)=1ならばdi,j (0):=S_Equiv(G,G,w;ri,j)を計算し、{di,j (0)i∈[n],j∈[n]をVに送る。また、Pはランダム置換πを表す情報もVに送る。
ch=1ならば、Pはハミルトン閉路のみを持つグラフH(1)(節点数n)のn×nの隣接行列A(1):=M(H(1))をランダムに選択する。ただし、隣接行列A(1)をA(1)={ai,j (1)i∈[n],j∈[n]と表記する(ただし、ai,j (1)∈{0,1})。さらにPはSpecialComの(性質3)を利用し、証拠wおよび乱数ri,jを用い、グラフH(1)の閉路の部分についてcp,q∈{ci,ji∈[n],j∈[n]を各要素ap,q (1)(ただし、p∈[n],q∈[n])にデコミットする。言い換えると、PはグラフH(1)の隣接行列A(1)={ai,j (1)i∈[n],j∈[n]の要素のうち、閉路をなす枝に対応する各要素ap,q (1)=1にコミットメントcp,qをデコミットする。つまり、Pはap,q (1)=1となる各p∈[n],q∈[n]についてdp,q (1):=S_Equiv(G,G,w;rp,q)を計算し、{dp,q (1)p∈[n],q∈[n]をVに送る。
ステップ2(d):ch=0のとき、VはH(0)=π(G)の隣接行列A(0):=M(H(0))={ai,j (0)i∈[n],j∈[n]を計算し、{ci,ji∈[n],j∈[n]が{ai,j (0)i∈[n],j∈[n]にデコミットされたことを確認する。つまり、Vはすべてのi∈[n],j∈[n]についてS_Verify(G,G,ai,j (0),ci,j,di,j (0))=1が成り立つことを確認する。これが成り立てばこの回の検証は「合格」である。
ch=1のとき、Vはデコミットされた部分がハミルトン閉路となっていることを確認する。つまり、VはPから受け取ったすべてのdp,q (1)に関してS_Verify(G,G,1,cp,q,dp,q (1))=1が成り立つことを確認し、更にコミットメントcp,qがデコミットされた要素ap,q (1)が隣接行列においてハミルトン閉路を表すか(1にデコミットされた要素ap,q (1)に対応する枝を持つグラフがハミルトン閉路であるか)を確認する。これが成り立てばこの回の検証は「合格」である。
K回のすべてのステップ2(d)で「合格」となれば証明は「成功」である。1回でも不合格となれば証明は「失敗」である。
<安全性の証明>
≪健全性≫
健全性については、以下の理由で成り立つ。前述のようにencrypted preambleの通信系列σは任意の証明者に対してσ∈Lsimを満たさない。そのため、任意の証明者に対してG∈Lhamを満たさない。ここで、G∈Lhamが成り立たないと仮定する(健全性の定義参照)。このとき、SpecialComの(性質1)から拘束性が成り立つため、上述のステップ2(a)の時点でPがコミットした行列は一意に定まる。この行列がπ(G)の隣接行列A(0)であり、なおかつ、ハミルトン閉路を含むグラフの隣接行列であることはありえない。なぜなら、G∈Lhamを満たさず、そのランダム置換であるπ(G)もハミルトン閉路を含まないからである。そのため、G∈Lhamが成り立たないとき、上述のステップ2(c)でPが正しく答えられる確率は高々1/2である。言い換えると、G∈Lhamが成り立たないため(性質3)が成り立たず、Pがch=0およびch=1の両方に正しい応答を行うことはできない。ステップ2(a)〜2(d)はK回繰り返されるため、全ての繰り返しにおいてPが正しく答えられる確率は(1/2)以下となり、Kが十分大きいときにはその確率は無視できる。よって健全性が成り立つ。
≪耐漏洩性≫
耐漏洩性については,以下の理由で成り立つ。まず、前述のようにシミュレータはencrypted preambleの通信系列σ’をシミュレートしてσ’∈Lsimとすることができ、その証拠も計算できる。そのため、シミュレータはG’∈Lhamとすることができ、その証拠w’も計算できる。このときシミュレータはステップ2(a)および2(c)を以下のようにしてシミュレートできる。
ステップ2(a):シミュレータはG’上のランダム置換πを選び、H’=π(G’)の隣接行列A’:=M(H’)を計算する。隣接行列A’をA’={ai,j’}i∈[n],j∈[n]と表記する。このとき、シミュレータはSpecialComを用いてA’にコミットする。つまり、シミュレータは各i∈[n],j∈[n]について乱数ri,j’を選んでci,j’=S_Com(G,G’,ai,j’;ri,j’)を計算し、{ci,j’}i∈[n],j∈[n]をVに送る。
ステップ2(c):ch=0ならば、シミュレータは{ci,j’}i∈[n],j∈[n]を{ai,j’}i∈[n],j∈[n]にデコミットする。つまり、シミュレータは各i∈[n],j∈[n]についてdi,j’:=S_Dec(G,G’,ci,j’,ai,j’; ri,j’)を計算し、{di,j’}i∈[n],j∈[n]をVに送る。また、Pはランダム置換πを表す情報もVに送る。
ch=1ならば、シミュレータはH’の閉路の部分についてcp,q’∈{ci,j’}i∈[n],j∈[n]をap,q’(ただし、p∈[n],q∈[n])にデコミットする。つまり、シミュレータはap,q’=1となる各p∈[n],q∈[n]についてdp,q’:=S_Dec(G,G’,cp,q’,1;rp,q’)を計算し、{dp,q’}p∈[n],q∈[n]をVに送る。
SpecialComの秘匿性から、このシミュレーションは実際の通信系列と確かに識別不可能である。
Pの内部状態の一部のVへの漏洩についても以下のようにシミュレートできる。
ステップ1については非特許文献1と同様の方法で内部状態(入力と乱数)の漏洩をシミュレートできる。
ステップ2における証明者の内部状態は証拠wとコミットに用いた乱数ri,jである。そのため、Vが関数fを選んだときシミュレータは内部状態の漏洩としてf(w,{ri,j”}i∈[n],j∈[n])をシミュレートする必要がある。ri,j”=ri,jである必要はなく、wと{ci,j}が{ri,j”}i∈[n],j∈[n]に対応すればよい。そのために、シミュレータは、G∈Lhamの証拠wを入力についてS_Com(G,G’,0;ri,j”)=ci,j’を満たすようなri,j”を出力する関数F(w)=ri,j”を計算する。前述したステップ2(a)のシミュレーションに示したように、シミュレータはai,j’=0となる(i,j)についてはri,j”=ri,j’を知っている。一方、シミュレータはai,j’=1となる(i,j)についてはri,j’を知っているがri,j”≠ri,j’ではない。しかしながら、前述のようにシミュレータはG’∈Lhamの証拠w’を計算できる。そのため、SpecialComの(性質4)より、シミュレータはG∈Lhamの証拠wを入力としてai,j’=1へのコミットメントをai,j’=0のコミットメントだと「説明」できる。言い換えると、シミュレータはai,j’=0となる(i,j)であっても、ri,j”:=S_Adapt(G,G’,w,w’; ri,j’)によってS_Com(G,G’,0;ri,j”)=ci,j’を満たすようなri,j”を計算できる。よってシミュレータはこのような関数Fを計算できる。よって、シミュレータはwを入力としてf’(w,F(w))を計算する関数f’を選ぶと、耐漏洩ゼロ知識性の定義からwに対するf’(w)=f(w,{ri,j”}i∈[n],j∈[n])を受け取ることができ、それをVに送ることで証明者の内部状態の漏洩をシミュレートできる。
以上より、本形態の方式は漏洩耐性を持つゼロ知識証明である。
<SpecialComの具体例>
SpecialComの具体例を示す。この具体例では、SpecialComを得るために、既存技術であるハミルトン閉路コミットメント方式H_Com(例えば、参考文献1,2参照)と、適応的ハミルトン閉路コミットメント方式AH_Com(例えば、参考文献3参照)の組み合わせを行う。H_ComもAH_ComもComから構成できるコミットメント方式である。
参考文献1:Uriel Feige and Adi Shamir, “Zero knowledge proofs of knowledge in two rounds,” In Gilles Brassard,editor, Advances in Cryptology - CRYPTO '89, 9th Annual International Cryptology Conference, Santa Barbara, California, USA, August 20-24, 1989, Proceedings, volume 435 of Lecture Notes in Computer Science, pages 526-544. Springer, 1989.
参考文献2:Ran Canetti, Yehuda Lindell, Rafail Ostrovsky, and Amit Sahai, “Universally composable two-party and multi-party secure computation,” In John H. Reif, editor, Proceedings on 34th Annual ACM Symposium on Theory of Computing, May 19-21, 2002, Montreal, Quebec, Canada, pages 494-503. ACM, 2002.
参考文献3:Yehuda Lindell and Hila Zarosim, “Adaptive zero-knowledge proofs and adaptively secure oblivious transfer,” In Omer Reingold, editor, Theory of Cryptography, 6th Theory of Cryptography Conference, TCC 2009, San Francisco, CA, USA, March 15-17, 2009, Proceedings, volume 5444 of Lecture Notes in Computer Science, pages 183-201, Springer, 2009.
以下では、最初にHComとAHComについて簡単に説明し、次にそれらを用いたSpecialComの構成を例示する。
<HCom>
HComは確率的アルゴリズムの組(H_Com,H_Dec,H_Verify)からなる非対話コミットメント方式である。
≪H_Com≫
H_Comはビットb∈{0,1}とハミルトン閉路問題のインスタンスGを入力とし、乱数rを生成して以下のようにbへのコミットメントc←H_Com(G,b)(すなわち、c:=H_Com(G,b;r))を出力する。
b=0へのコミット:PはG上のランダム置換π’を選び、E(0)=π’(G)の隣接行列B(0):=M(E(0))を計算し、乱数ri,jを選択し、B(0)={bi,j (0)i∈[n],j∈[n]の各要素bi,j (0)∈{0,1}をComでコミットして得られるci,j←Com(bi,j (0))(すなわち、ci,j:=Com(bi,j (0);ri,j))からなる{ci,ji∈[n],j∈[n]をコミットメントcとして出力する。
b=1へのコミット:PはGと同じサイズでハミルトン閉路のみを持つグラフE(1)の隣接行列B(1):=M(E(1))を得、乱数ri,jを選択し、B(1)={bi,j (1)i∈[n],j∈[n]の各要素bi,j (1)∈{0,1}をComでコミットして得られるci,j←Com(bi,j (1))(すなわち、ci,j:=Com(bi,j (1);ri,j))からなる{ci,ji∈[n],j∈[n]をコミットメントcとして出力する。
≪H_Dec≫
H_Decはコミットメントcとコミットされた値bとコミットメントに用いられた乱数rを入力とし、デコミットメントd:=H_Dec(G,b,c;r)を出力する。
b=0へのデコミット:Pはdi,j (0):=Dec(bi,j (0),ci,j;ri,j)を得、{di,j (0)i∈[n],j∈[n]をデコミットメントdとしてπ’とともに出力する。
b=1へのデコミット:Pはdi,j (1):=Dec(bi,j (1),ci,j;ri,j)を得、{di,j (1)i∈[n],j∈[n]をデコミットメントdとして出力する。さらにPはE(1)の隣接行列B(1):=M(E(1))をdとともに出力する。
≪H_Verify≫
H_Verifyはコミットメントcとデコミットされた値bとデコミットメントdとインスタンスGとを入力としてデコミットメントdを検証する。
b=0の検証:VはE(0)=π’(G)の隣接行列B(0):=M(E(0))を計算し、B(0)={bi,j (0)i∈[n],j∈[n]の各要素bi,j (0)∈{0,1}を得、すべてのi∈[n],j∈[n]についてVerify(bi,j (0),ci,j,di,j (0))=1であれば検証成功とし、そうでなければ検証失敗とする。
b=1の検証:VはGと同じサイズでハミルトン閉路のみを持つグラフE(1)の隣接行列B(1):=M(E(1))を入力とし、B(1)={bi,j (1)i∈[n],j∈[n]の各要素bi,j (1)∈{0,1}を得、すべてのi∈[n],j∈[n]についてVerify(bi,j (1),ci,j,di,j (1))=1であれば検証成功とし、そうでなければ検証失敗とする。
(Com,Dec,Verify)の秘匿性からHComも秘匿性を満たす。Gがハミルトン閉路を持たないときは(つまりG∈Lhamが成り立たないときは)拘束性を満たす。つまり、コミットした後に0と1の両方にオープンすることはできない。なぜなら、コミットした時点でコミットしたグラフが一意に定まり、これがGの置換でありハミルトン閉路も含むということはありえないからである。HComの特徴は、G∈LhamのときにPがG∈Lhamの証拠w(つまりGのハミルトン閉路)を知っていると0へのコミットメントを0と1の両方にオープンすることができることである。
<AHCom>
AHComは確率的アルゴリズムの組(AH_Com,AH_Dec,AH_Verify)からなる非対話コミットメント方式である。
≪AH_Com≫
AH_Comはビットb∈{0,1}とハミルトン閉路問題のインスタンスGを入力とし、乱数rを生成して以下のようにbへのコミットメントc←AH_Com(G,b)(すなわち、c:=AH_Com(G,b;r))を出力する。
b=0へのコミット:PはG上のランダム置換π’を選び、E(0)=π’(G)の隣接行列B(0):=M(E(0))を計算し、乱数ri,jを選択し、B(0)={bi,j (0)i∈[n],j∈[n]の各要素bi,j (0)をComでコミットして得られるci,j←Com(bi,j (0))(すなわち、ci,j:=Com(bi,j (0);ri,j))からなる{ci,ji∈[n],j∈[n]をコミットメントcとして出力する。
b=1へのコミット:PはGと同じサイズでハミルトン閉路のみを持つグラフE(1)の隣接行列B(1):=M(E(1))を得、乱数ri,jを選択し、B(1)={bi,j (1)i∈[n],j∈[n]の各要素bi,j (1)を得る。bi,j (1)=1の場合、PはComでbi,j (1)をコミットして得られるci,j←Com(bi,j (1))(すなわちci,j:=Com(bi,j (1);ri,j))を得る。bi,j (1)=0の場合、PはComで0をコミットする代わりにCom(bi,j (1))と同じ長さのランダム記号列C(ri,j)をci,j:=C(ri,j)として得る。Pは{ci,ji∈[n],j∈[n]をコミットメントcとして出力する。
≪AH_Dec≫
AH_Decはコミットメントcとコミットされた値bとコミットメントに用いられた乱数rを入力とし、デコミットメントd:=AH_Dec(G,b,c;r)を出力する。
b=0へのデコミット:Pは、di,j (0):=Dec(bi,j (0),ci,j;ri,j)を得、{di,j (0)i∈[n],j∈[n]をデコミットメントdとしてπ’とともに出力する。
b=1へのデコミット:Pはbi,j (1)=1が成り立つような(i,j)のみについてdi,j (1):=Dec(bi,j (1),ci,j;ri,j)を得、{di,j (1)i∈[n],j∈[n]をデコミットメントdとして出力する。さらにPはE(1)の隣接行列B(1):=M(E(1))をdi,j (1)とともに出力する。
≪AH_Verify≫
AH_Verifyはコミットメントcとデコミットされた値bとデコミットメントdとインスタンスGとを入力としてデコミットメントdを検証する。
b=0の検証:VはE(0)=π’(G)の隣接行列B(0):=M(E(0))を計算し、B(0)={bi,j (0)i∈[n],j∈[n]の各要素bi,j (0)∈{0,1}を得、すべてのi∈[n],j∈[n]についてVerify(bi,j (0),ci,j,di,j (0))=1であれば検証成功とし、そうでなければ検証失敗とする。
b=1の検証:VはGと同じサイズでハミルトン閉路のみを持つグラフE(1)の隣接行列B(1):=M(E(1))を入力とし、B(1)={bi,j (1)i∈[n],j∈[n]の各要素bi,j (1)∈{0,1}を得る。Vはbi,j (1)=1の場合にはVerify(bi,j (1),ci,j,di,j (1))=1を確認し、bi,j (1)=0の場合にはci,jがCom(bi,j (1))と同じ長さのランダム記号列であるかを確認する。すべてのi∈[n],j∈[n]について、bi,j (1)=1の場合にVerify(bi,j (1),ci,j,di,j (1))=1となり、bi,j (1)=0の場合にci,jがCom(bi,j (1))と同じ長さのランダム記号列となれば検証成功とし、そうでなければ検証失敗とする。
AHComもHComと同じ性質を満たす。さらにAHComでは、G∈LhamのときPがG∈Lhamの証拠w(つまりGのハミルトン閉路)を知っていると、0へのコミットメントc←AH_Com(G,0)を計算した後にAH_Com(G,1;r’)=cを満たす乱数r’={ri,j’} i∈[n],j∈[n]を計算できる。この理由を示す。AH_Com(G,0)の要素ci,jとAH_Com(G,1;r)の要素ci,j’との間には以下の関係を想定できる。
(1)ci,jがbi,j (0)=1へのコミットメントであるが、ci,j’がランダム記号列である。
(2)ci,jがbi,j (0)=1へのコミットメントであり、ci,j’も1へのコミットメントである。
(3)ci,jがbi,j (0)=0へのコミットメントであり、ci,j’がランダム記号列である。
(4)ci,jがbi,j (0)=0へのコミットメントであるが、ci,j’は1へのコミットメントである。
(1)の場合、ci,j’はランダム記号列であり、Comの性質からci,jは長さ|ci,j|のランダム記号列と識別できない。そのため、(1)のような(i,j)についてはci,jをそのままri,j’とすればよい。
(2)のような(i,j)についてはci,jの生成に用いたri,jをそのままri,j’とすればよい。
(3)の場合、ci,j’はランダム記号列であるため、(3)のような(i,j)についてはci,jをそのままri,j’とすればよい。
(4)のような(i,j)についてはri,j’を特定できない。しかしながら、G∈Lhamであるため、証拠wを用いて(4)の場合を避けるようなハミルトン閉路のみを持つグラフE(1)を選択することは可能である。
よって上述の性質を満たす。
<HComとAHComを用いたSpecialComの構成>
HCom=(H_Com,H_Dec,H_Verify)を構成する(Com,Dec,Verify)を(AH_Com,AH_Dec,AH_Verify)にそれぞれ置換し、HComでのGをGに置換し、AHComでのGをGに置換することでSpecialCom=(S_Com,S_Dec,S_Verify)を構成できる。以下に具体的に示す。
≪S_Com≫
S_Comはビットb∈{0,1}とハミルトン閉路問題のインスタンス(グラフ)G,Gを入力とし、乱数rを生成して以下のようにbへのコミットメントc←S_Com(G,G,b)(すなわち、c:=S_Com(G,G,b;r))を出力する。
b=0へのコミット:PはG上のランダム置換π’を選び、E(0)=π’(G)の隣接行列B(0):=M(E(0))を計算し、乱数ri,jを選択し、B(0)={bi,j (0)i∈[n],j∈[n]の各要素bi,j (0)∈{0,1}をAH_Comでコミットして得られるci,j←AH_Com(G,bi,j (0))(すなわち、ci,j:=AH_Com(G,bi,j (0);ri,j))からなる{ci,ji∈[n],j∈[n]をコミットメントcとして出力する。
b=1へのコミット:PはGと同じサイズでハミルトン閉路のみを持つグラフE(1)の隣接行列B(1):=M(E(1))を得、乱数ri,jを選択し、B(1)={bi,j (1)i∈[n],j∈[n]の各要素bi,j (1)∈{0,1}をAH_Comでコミットして得られるci,j←AH_Com(G,bi,j (1))(すなわち、ci,j:=AH_Com(G,bi,j (1);ri,j))からなる{ci,ji∈[n],j∈[n]をコミットメントcとして出力する。
前述のように、方式AH_Comでの0へのコミットメントAH_Com(G,0)は、グラフGに由来するグラフT(0)=π’(G)(π’はランダム置換)の隣接行列U(0)の各要素uv,w (0)へのコミットメントcuv,w (0)を含む集合{cuv,w (0)}である。AH_Comでの1へのコミットメントAH_Com(G,1)は、Gと同じサイズでハミルトン閉路のみを持つグラフT(1)の隣接行列U(1)の各要素uv,w (1)に対応するcuv,w (1)を含む集合{cuv,w (1)}であり、要素uv,w (1)=1に対応するcuv,w (1)は要素uv,w (1)へのコミットメントであり、要素uv,w (1)=0に対応するcuv,w (1)はランダム記号列である。
≪S_Dec≫
S_Decはコミットメントcとコミットされた値bとコミットメントに用いられた乱数rを入力とし、デコミットメントd:=S_Dec(G,G,b,c;r)を出力する。
b=0へのデコミット:Pはdi,j (0):=AH_Dec(G,bi,j (0),ci,j;ri,j)を得、{di,j (0)i∈[n],j∈[n]をデコミットメントdとしてπ’とともに出力する。
b=1へのデコミット:Pはdi,j (1):=AH_Dec(G,bi,j (1),ci,j;ri,j)を得、{di,j (1)i∈[n],j∈[n]をデコミットメントdとして出力する。さらにPはE(1)の隣接行列B(1):=M(E(1))をdとともに出力する。
≪S_Verify≫
S_Verifyはコミットメントcとデコミットされた値bとデコミットメントdとインスタンス(グラフ)G,Gとを入力としてデコミットメントdを検証する。
b=0の検証:VはE(0)=π’(G)の隣接行列B(0):=M(E(0))を計算し、B(0)={bi,j (0)i∈[n],j∈[n]の各要素bi,j (0)∈{0,1}を得、すべてのi∈[n],j∈[n]についてAH_Verify(G,bi,j (0),ci,j,di,j (0))=1であれば検証成功とし、そうでなければ検証失敗とする。
b=1の検証:VはGと同じサイズでハミルトン閉路のみを持つグラフE(1)の隣接行列B(1):=M(E(1))を入力とし、B(1)={bi,j (1)i∈[n],j∈[n]の各要素bi,j (1)∈{0,1}を得、すべてのi∈[n],j∈[n]についてAH_Verify(G,bi,j (1),ci,j,di,j (1))=1であれば検証成功とし、そうでなければ検証失敗とする。
このようにHComとAHComを用いたSpecialComは、前述の(性質1)〜(性質4)を満たす。
(性質1)G∈Lhamでなく、かつ、G∈Lhamでないとき(GおよびGが何れもハミルトン閉路を持たないとき)は、AHComが拘束性を満たすのでHComの拘束性が保存されSpecialComも拘束性を満たす。
(性質2)AHComは常に秘匿性を満たすのでHComの秘匿性が保存されSpecialComも常に秘匿性を満たす。
(性質3)G∈LhamのときはHComの性質から0へのコミットメントを1へデコミットすることができる。
(性質4)G∈LhamかつG∈Lhamのときは、1へのコミットメントを0のコミットメントとして以下のように説明できる。1へのコミットメントを計算する際に用いたグラフをE(1)とする。このとき、G∈Lhamの証拠wを用いるとGのハミルトン閉路がE(1)のハミルトン閉路と重なるようにGを置換するπ(1)を計算することができる。このとき、SpecialComにおける0へのコミットメントが1へのコミットメントと異なる点は、E(0)=π’(G)では枝があるがE(1)では枝がない部分においてAH_Comで0ではなく1にコミットしていることである。ここでG∈LhamのときはAH_Comによる0へのコミットメントを1へのコミットメントだと説明することができるため、これによりSpecialComによる1へのコミットメントを0のコミットメントとして説明することができる。
[実施形態]
次に、図面を用いて実施形態を説明する。
<構成>
図1に例示するように、本形態の証明システム1は証明装置11および検証装置12を有する。証明装置11は、記憶部111、制御部112、前提処理部113、コミット部114、チャレンジ入力部115、およびデコミット部116を有する。検証装置12は、記憶部121、制御部122、前提処理部123、コミットメント入力部124、チャレンジ出力部125、および検証部126を有する。証明装置11と検証装置12は、ネットワーク等を通じて互いに情報の送受信が可能とされている。これらの装置は、例えば、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)およびRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される装置である。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。また、1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。
<処理>
図2および図3を用い、本形態における漏洩耐性を持つゼロ知識証明方法を説明する。本形態では証明装置11が検証装置12と共有するグラフGがハミルトン閉路を持つこと(つまりG∈Lhamであること)を証明する。G∈Lhamであることの一例は、特定の公開鍵(グラフGに対応)が正しく生成されたRSA暗号の公開鍵の集合(Lhamに対応)に属することである。
前処理において、証明装置11の記憶部111および検証装置12の記憶部121にグラフGが格納される。また、記憶部111にはさらにG∈Lhamであることの証拠wが格納される。証拠wの例はGのハミルトン閉路を表す情報であり、例えば公開鍵の素因数からなる列である。さらにセキュリティパラメータKが設定される。Kは正整数であり、例えばK=64である。
証明装置11の前提処理部113および検証装置12の前提処理部123は、非特許文献1のencrypted preambleを行ってその通信系列σを得、命題σをハミルトン閉路問題に帰着したグラフGを得る。encrypted preambleが正しく行われれば、Gはハミルトン閉路を持たない。Gは記憶部111,121に送られて記憶される(ステップS1,S2)。
証明装置11の制御部112はk=1に設定する(ステップS3)。コミット部114は、記憶部111からw,G,Gを読み込み、各i∈[n],j∈[n]について乱数ri,jを選択し(ステップS4)、コミットメントci,j:=S_Com(G,G,0;ri,j)を計算する(ステップS5)。コミット部114は、{ci,ji∈[n],j∈[n]および{ri,ji∈[n],j∈[n]を記憶部111に格納し、{ci,ji∈[n],j∈[n]を検証装置12に送信する(ステップS6)。すなわち、コミット部114は、コミット対象0とグラフG,Gと乱数ri,jとを含む情報に応じて得られる、グラフGと同じサイズ(n×n)の零行列の各要素0へのコミットメントci,jを含む集合{ci,j}を出力する。前述のように、GおよびGがハミルトン閉路を持たない場合、コミット対象0への拘束性が保証される(性質1)。グラフGがハミルトン閉路を持つ場合、0へのコミットメントci,jを1へデコミットするための値をデコミットメントdとすることができる(性質3)。グラフGおよびGがハミルトン閉路を持つ場合、b=1へのコミットメントcをb=0へのコミットメントとして示すことができる(性質4)。
{ci,ji∈[n],j∈[n]は検証装置12のコミットメント入力部124で受信され、記憶部121に格納される(ステップS7)。チャレンジ出力部125は、ランダムなチャレンジch∈{0,1}を選択して記憶部121に格納し(ステップS8)、さらにchを証明装置11に送信する(ステップS9)。
chは証明装置11のチャレンジ入力部115で受信され(入力を受け付け)、記憶部111に格納される(ステップS10)。デコミット部116は記憶部111からchを読み込み、ch=0であるかch=1であるかを判定する(ステップS11)。
ここでch=0と判定された場合、デコミット部116は、記憶部111からG,G,w,{ci,ji∈[n],j∈[n],{ri,ji∈[n],j∈[n]を読み込み、G上のランダム置換πを選び(ステップS12)、H(0)=π(G)の隣接行列A(0):=M(H(0))を計算する(ステップS13)。デコミット部116は、{ci,ji∈[n],j∈[n]をA(0)={ai,j (0)i∈[n],j∈[n]にデコミットするためのデコミットメントの集合{di,j (0)i∈[n],j∈[n]を得る。つまり、デコミット部116は、各i∈[n],j∈[n]についてai,j (0)=0ならばdi,j (0):=S_Dec(G,G,ci,j,0;ri,j)を計算し、ai,j (0)=1ならばdi,j (0):=S_Equiv(G,G,w;ri,j)を計算し、{di,j (0)i∈[n],j∈[n]を得る。デコミット部116は、πおよび{di,j (0)i∈[n],j∈[n]を検証装置12に送信する。すなわち、デコミット部116は、チャレンジchが0(第1値)である場合に、グラフGに由来するグラフH(0)の隣接行列A(0)={ai,j (0)i∈[n],j∈[n]の各要素ai,j (0)にコミットメントci,jをデコミットするためのデコミットメントdi,j (0)を含む集合を出力する(ステップS14)。
ステップS14で送信されたπおよび{di,j (0)i∈[n],j∈[n]は、検証装置12の検証部126で受信される(ステップS15)。検証部126は、記憶部121からG,G,{ci,ji∈[n],j∈[n]を読み込み、H(0)=π(G)の隣接行列A(0):=M(H(0))={ai,j (0)i∈[n],j∈[n]を計算し、これらと{di,j (0)i∈[n],j∈[n]を用い、{ci,ji∈[n],j∈[n]が{ai,j (0)i∈[n],j∈[n]にデコミットされたことを確認する。つまり、検証部126は、すべてのi∈[n],j∈[n]についてS_Verify(G,G,ai,j (0),ci,j,di,j (0))=1が成り立つことを確認する。何れかのi∈[n],j∈[n]についてS_Verify(G,G,ai,j (0),ci,j,di,j (0))=1が成り立たない場合、証明失敗として処理を終了する(ステップS24)。一方、すべてのi∈[n],j∈[n]についてS_Verify(G,G,ai,j (0),ci,j,di,j (0))=1が成り立つ場合、制御部122はk=Kであるかを判定する(ステップS17)。ここでk=Kでなければ、制御部122はk+1を新たなk(すなわちk:=k+1)とし(ステップS26)、処理をステップS4に戻す。一方、k=Kであれば証明成功として処理を終了する(ステップS25)。
一方、ステップS11でch=1と判定された場合、デコミット部116は、ハミルトン閉路のみを持つグラフH(1)のn×nの隣接行列A(1):=M(H(1))をランダムに選択する(ステップS18)。ただし、隣接行列A(1)をA(1)={ai,j (1)i∈[n],j∈[n]と表記する。さらにデコミット部116は、記憶部111からG,G,w,ri,jを読み込み、SpecialComの(性質3)を利用し、グラフH(1)の閉路の部分についてcp,q∈{ci,ji∈[n],j∈[n]を各要素ap,q (1)(ただし、p∈[n],q∈[n])にデコミットする。つまり、デコミット部116は、ap,q (1)=1となる各p∈[n],q∈[n]についてdp,q (1):=S_Equiv(G,G,w;rp,q)を計算し、{dp,q (1)p∈[n],q∈[n]を得る。デコミット部116は、{p,q,dp,q (1)p∈[n],q∈[n]を検証装置12に送信する。すなわち、デコミット部116は、チャレンジchが1(第1値と異なる第2値)である場合に、ハミルトン閉路のみを持つグラフH(1)の隣接行列A(1)の要素のうち閉路をなす枝に対応する各要素ap,q (1)にコミットメントcp,q∈{ci,j}をデコミットするためのデコミットメントdp,q (1)を含む集合を出力する(ステップS19)。
ステップS19で送信された{p,q,dp,q (1)p∈[n],q∈[n]は、検証装置12の検証部126で受信される(ステップS20)。検証部126は、記憶部121からG,G,{ci,ji∈[n],j∈[n]を読み込み、これらと{p,q,dp,q (1)p∈[n],q∈[n]を用い、ap,q (1)=1となるすべてのp∈[n],q∈[n]についてコミットメントcp,qが1にデコミットされたことを確認する。すなわち、検証部126は、ap,q (1)=1となるすべてのp∈[n],q∈[n]についてS_Verify(G,G,1,cp,q,dp,q (1))=1が成り立つかを判定する(ステップS21)。ここで、ap,q (1)=1となる何れかのp∈[n],q∈[n]についてS_Verify(G,G,1,cp,q,dp,q (1))=1が成り立たない場合、証明失敗として処理を終了する(ステップS24)。一方、ap,q (1)=1となるすべてのp∈[n],q∈[n]についてS_Verify(G,G,1,cp,q,dp,q (1))=1が成り立つ場合、検証部126は、1にデコミットされた要素ap,q (1)に対応する枝を持つグラフがハミルトン閉路であるかを確認する(ステップS22)。ここで、このグラフがハミルトン閉路でない場合、証明失敗として処理を終了する(ステップS24)。一方、このグラフがハミルトン閉路である場合、制御部122はk=Kであるかを判定する(ステップS23)。ここでk=Kでなければ、制御部122はk+1を新たなk(すなわちk:=k+1)とし(ステップS26)、処理をステップS4に戻す。一方、k=Kであれば証明成功として処理を終了する(ステップS25)。
<本形態の特徴>
本形態では、SpecialComを巧みに使うことで内部情報の漏洩のシミュレーションを可能とし、Yaoの二者間秘密計算プロトコルを用いずに漏洩耐性をもつゼロ知識証明の実現が可能となった。
[変形例等]
なお、本発明は上述の実施の形態に限定されるものではない。例えば、Gをランダム置換したものを「Gに由来するグラフ」とした例を説明したが、Gそのものを「Gに由来するグラフ」としてもよいし、Gを予め定められたように置換したものを「Gに由来するグラフ」としてもよい。各装置がネットワークを通じて情報をやり取りするのではなく、少なくとも一部の組の装置が可搬型記録媒体を介して情報をやり取りしてもよい。或いは、少なくとも一部の組の装置が非可搬型の記録媒体を介して情報をやり取りしてもよい。
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。
上記実施形態では、コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されたが、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
本発明は、例えば、サイドチャネル攻撃を受ける可能性がある環境下における電子商取引等での認証、公開鍵暗号方式等の暗号プロトコルでの公開鍵の正当性の検証などに利用できる。
1 証明システム
11 証明装置
12 検証装置

Claims (8)

  1. グラフGがハミルトン閉路を持つことを証明する証明装置であって、
    ハミルトン閉路を持たないグラフGを得る前提処理部と、
    コミット対象0と前記グラフG,Gと乱数ri,jとを含む情報に応じて得られる、前記グラフGと同じサイズの零行列の各要素0へのコミットメントci,jを含む集合{ci,j}を出力するコミット部と、
    チャレンジchの入力を受け付けるチャレンジ入力部と、
    前記チャレンジchが第1値である場合に、前記グラフGに由来するグラフH(0)の隣接行列A(0)の各要素ai,j (0)に前記コミットメントci,jをデコミットするためのデコミットメントdi,j (0)を含む集合を出力し、
    前記チャレンジchが前記第1値と異なる第2値である場合に、ハミルトン閉路のみを持つグラフH(1)の隣接行列A(1)の要素のうち閉路をなす枝に対応する各要素ap,q (1)に前記コミットメントcp,q∈{ci,j}をデコミットするためのデコミットメントdp,q (1)を含む集合を出力するデコミット部と、
    を有する証明装置。
  2. 請求項1の証明装置であって、
    前記グラフGがハミルトン閉路を持たない場合、前記コミット対象0への拘束性が保証され、
    前記グラフGがハミルトン閉路を持つ場合、0への前記コミットメントci,jを1へデコミットするための値を前記デコミットメントdとすることができ、
    前記グラフGおよびGがハミルトン閉路を持つ場合、b=1への前記コミットメントcをb=0へのコミットメントとして示すことができる、証明装置。
  3. 請求項1または2の証明装置であって、
    0への前記コミットメントci,jは、前記グラフGに由来するグラフE(0)の隣接行列B(0)の各要素bi,j (0)を方式AH_ComでコミットしたコミットメントCBi,j (0)←AH_Com(G,bi,j (0))を含む集合{CBi,j (0)}であり、
    1への前記コミットメントci,jは、前記グラフGと同じサイズでハミルトン閉路のみを持つグラフE(1)の隣接行列B(1)の各要素bi,j (1)を前記方式AH_ComでコミットしたコミットメントCBi,j (1)←AH_Com(G,bi,j (1))を含む集合{CBi,j (1)}であり、
    前記方式AH_Comでの0へのコミットメントAH_Com(G,0)は、前記グラフGに由来するグラフT(0)の隣接行列U(0)の各要素uv,w (0)へのコミットメントcuv,w (0)を含む集合{cuv,w (0)}であり、
    前記方式AH_Comでの1へのコミットメントAH_Com(G,1)は、前記グラフGと同じサイズでハミルトン閉路のみを持つグラフT(1)の隣接行列U(1)の各要素uv,w (1)に対応するcuv,w (1)を含む集合{cuv,w (1)}であり、要素uv,w (1)=1に対応するcuv,w (1)は前記要素uv,w (1)へのコミットメントであり、要素uv,w (1)=0に対応するcuv,w (1)はランダム記号列である、証明装置。
  4. 0または1のコミット対象b、グラフG,Gと乱数rとを含む情報に応じて得られる、前記コミット対象bへのコミットメントcを出力するコミット部と、
    前記コミットメントcに対してデコミットメントdを出力するデコミット部と、を有し、
    前記グラフGおよびGがハミルトン閉路を持たない場合、前記コミット対象bへの拘束性が保証され、
    前記グラフGがハミルトン閉路を持つ場合、b=0への前記コミットメントcをb=1へデコミットするための値を前記デコミットメントdとすることができ、
    前記グラフGおよびGがハミルトン閉路を持つ場合、b=1への前記コミットメントcをb=0へのコミットメントとして示すことができる、証明装置。
  5. 請求項4の証明装置であって、
    b=0への前記コミットメントcは、前記グラフGに由来するグラフE(0)の隣接行列B(0)の各要素bi,j (0)を方式AH_ComでコミットしたコミットメントCBi,j (0)←AH_Com(G,bi,j (0))を含む集合{CBi,j (0)}であり、
    b=1への前記コミットメントcは、前記グラフGと同じサイズでハミルトン閉路のみを持つグラフE(1)の隣接行列B(1)の各要素bi,j (1)を前記方式AH_ComでコミットしたコミットメントCBi,j (1)←AH_Com(G,bi,j (1))を含む集合{CBi,j (1)}であり、
    前記方式AH_Comでの0へのコミットメントAH_Com(G,0)は、前記グラフGに由来するグラフT(0)の隣接行列U(0)の各要素uv,w (0)へのコミットメントcuv,w (0)を含む集合{cuv,w (0)}であり、
    前記方式AH_Comでの1へのコミットメントAH_Com(G,1)は、前記グラフGと同じサイズでハミルトン閉路のみを持つグラフT(1)の隣接行列U(1)の各要素uv,w (1)に対応するcuv,w (1)を含む集合{cuv,w (1)}であり、要素uv,w (1)=1に対応するcuv,w (1)は前記要素uv,w (1)へのコミットメントであり、要素uv,w (1)=0に対応するcuv,w (1)はランダム記号列である、証明装置。
  6. グラフGがハミルトン閉路を持つことを証明する証明装置と、前記グラフGがハミルトン閉路を持つことを検証する検証装置とを有し、
    前記証明装置は、ハミルトン閉路を持たないグラフGを得る第1前提処理部を含み、
    前記検証装置は、前記グラフGを得る第2前提処理部を含み、
    前記証明装置は、コミット対象0と前記グラフG,Gと乱数ri,jとを含む情報に応じて得られる、前記グラフGと同じサイズの零行列の各要素0へのコミットメントci,jを含む集合{ci,j}を出力するコミット部を含み、
    前記検証装置は、チャレンジchを出力するチャレンジ出力部を含み、
    前記証明装置は、前記チャレンジchの入力を受け付けるチャレンジ入力部と、
    前記チャレンジchが第1値である場合に、前記グラフGに由来するグラフH(0)の隣接行列A(0)の各要素ai,j (0)に前記コミットメントci,jをデコミットするためのデコミットメントdi,j (0)を含む集合を出力し、
    前記チャレンジchが前記第1値と異なる第2値である場合に、ハミルトン閉路のみを持つグラフH(1)の隣接行列A(1)の要素のうち閉路をなす枝に対応する各要素ap,q (1)に前記コミットメントcp,q∈{ci,j}をデコミットするためのデコミットメントdp,q (1)を含む集合を出力するデコミット部と、を含み、
    前記検証装置は、
    前記チャレンジchが前記第1値である場合に、{ci,j},{di,j (0)},{ai,j (0)}および前記グラフG,Gを含む情報を用いて、前記コミットメントci,jが前記要素ai,j (0)にデコミットされたことを検証し、
    前記チャレンジchが前記第2値である場合に、{cp,q},{dp,q (1)}および前記グラフG,Gを含む情報を用いて、前記コミットメントcp,qが1にデコミットされたことを確認し、かつ、1にデコミットされた要素に対応する枝を持つグラフがハミルトン閉路であることを検証する検証部を含む、証明システム。
  7. グラフGがハミルトン閉路を持つことを証明する証明方法であって、
    前提処理部が、ハミルトン閉路を持たないグラフGを得、
    コミット部が、コミット対象0と前記グラフG,Gと乱数ri,jとを含む情報に応じて得られる、前記グラフGと同じサイズの零行列の各要素0へのコミットメントci,jを含む集合{ci,j}を出力し、
    入力部が、チャレンジchの入力を受け付け、
    デコミット部が、
    前記チャレンジchが第1値である場合に、前記グラフGに由来するグラフH(0)の隣接行列A(0)の各要素ai,j (0)に前記コミットメントci,jをデコミットするためのデコミットメントdi,j (0)を含む集合を出力し、
    (2)前記チャレンジchが前記第1値と異なる第2値である場合に、ハミルトン閉路のみを持つグラフH(1)の隣接行列A(1)の要素のうち閉路をなす枝に対応する各要素ap,q (1)に前記コミットメントcp,q∈{ci,j}をデコミットするためのデコミットメントdp,q (1)を含む集合を出力する証明方法。
  8. 請求項1から5の何れかの証明装置としてコンピュータを機能させるプログラム。
JP2015189347A 2015-09-28 2015-09-28 証明装置、証明システム、証明方法、およびプログラム Active JP6392191B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015189347A JP6392191B2 (ja) 2015-09-28 2015-09-28 証明装置、証明システム、証明方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015189347A JP6392191B2 (ja) 2015-09-28 2015-09-28 証明装置、証明システム、証明方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2017069604A true JP2017069604A (ja) 2017-04-06
JP6392191B2 JP6392191B2 (ja) 2018-09-19

Family

ID=58492891

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015189347A Active JP6392191B2 (ja) 2015-09-28 2015-09-28 証明装置、証明システム、証明方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP6392191B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120076302A1 (en) * 2010-09-28 2012-03-29 Alcatel-Lucent Usa Inc Leakage-Resilient Garbled Circuit Generation Using Reduced Memory Hardware Token
US8954728B1 (en) * 2012-12-28 2015-02-10 Emc Corporation Generation of exfiltration-resilient cryptographic keys

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120076302A1 (en) * 2010-09-28 2012-03-29 Alcatel-Lucent Usa Inc Leakage-Resilient Garbled Circuit Generation Using Reduced Memory Hardware Token
US8954728B1 (en) * 2012-12-28 2015-02-10 Emc Corporation Generation of exfiltration-resilient cryptographic keys

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BITANSKY, N., CANETTI, R. AND HALEVI, S.: "Leakage-Tolerant Interactive Protocols", LECTURE NOTES IN COMPUTER SCIENCE, vol. Vol.7194, JPN6018021595, 2012, pages 266 - 284, XP047328702, DOI: doi:10.1007/978-3-642-28914-9_15 *
GARG, S., JAIN, A. AND SAHAI, A.: "Leakage-Resilient Zero Knowledge", LECTURE NOTES IN COMPUTER SCIENCE, vol. Vol.6841, JPN6018021593, 2011, pages 297 - 315, XP047309772, DOI: doi:10.1007/978-3-642-22792-9_17 *
PANDEY, O.: "Archieving Constatnt Round Leakage-Resilient Zero-Knowledge", LECTURE NOTES IN COMPUTER SCIENCE, vol. Vol.8349, JPN6018021598, 2014, pages 146 - 166 *

Also Published As

Publication number Publication date
JP6392191B2 (ja) 2018-09-19

Similar Documents

Publication Publication Date Title
Gennaro et al. Lattice-based zk-SNARKs from square span programs
TWI794366B (zh) 用以安全分享密碼材料之系統及方法
Chung et al. Memory delegation
Yu et al. Enhanced privacy of a remote data integrity-checking protocol for secure cloud storage
Wei et al. Security and privacy for storage and computation in cloud computing
Groth et al. New techniques for noninteractive zero-knowledge
Lindell et al. Secure two-party computation via cut-and-choose oblivious transfer
US9860058B2 (en) Secret computation system, arithmetic unit, secret computation method and program
De Feo et al. SIDH proof of knowledge
CN104685826A (zh) 用于双方安全功能评估的输入一致性校验
TW201320701A (zh) 資訊處理裝置、資訊處理方法及程式
TWI511517B (zh) Information processing apparatus, information processing method, program and recording medium
Müller-Quade et al. Long-term security and universal composability
Pullonen Actively secure two-party computation: Efficient beaver triple generation
Branco et al. Roted: Random oblivious transfer for embedded devices
Alnahawi et al. On the state of post-quantum cryptography migration
Feng et al. Efficient and verifiable outsourcing scheme of sequence comparisons
JP6392191B2 (ja) 証明装置、証明システム、証明方法、およびプログラム
EP3991353A1 (en) Zero-knowledge contingent payments protocol for granting access to encrypted assets
Chuang et al. A two-party hierarchical deterministic wallets in practice
Wen et al. Post-quantum Sigma Protocols and Signatures from Low-Rank Matrix Completions
Nguyen et al. New Key Extraction Attacks on Threshold ECDSA Implementations
CN116383848B (zh) 一种三方安全计算防作恶方法、设备及介质
Kassem et al. Lattice-based direct anonymous attestation (LDAA)
Huang et al. A black-box construction of strongly unforgeable signature scheme in the leakage setting

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170829

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180727

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: 20180821

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180822

R150 Certificate of patent or registration of utility model

Ref document number: 6392191

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150