暗号理論における安全性の証明: Identification Protocol(ユーザ認証プロトコル)の Zero-Knowledge 性 羽田 知史( IBM 東京基礎研究所) Satoshi Hada (IBM Research - Tokyo) mailto: satoshih at jp ibm com
2.
Simulation Paradigm は、「一切、情報が漏れない」を表現する方法ですアイデア:攻撃者が計算できるものは、攻撃の対象がなくても、計算できる。 例:攻撃者が(公開鍵、暗号文)から計算できるものは、その(公開鍵、暗号文)がなくても計算できる。 つまり、攻撃者の出力を(公開鍵、暗号文)がなくても Simulate できる。 ∀ 攻撃者 A 、∃ Simulator S s.t. anything A can compute from public key and ciphertexts, S can compute without them.
3.
Witness Hiding 性の定義には問題があります。Witness Hiding 性の定義 攻撃が成功するとは? P と通信したあとに、 sk を計算できる 任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは? ∀ 攻撃者 A, ∃negligible function δ(n) s.t., Pr[(pk,sk) ← KG(1 n ) ; s ← < P(pk,sk), A(pk) > : s=sk] < δ(n) 問題点 sk の特定のビットは、 P と通信することにより漏れるかもしれない、という可能性を否定するほど強い定義ではない ただし、 Identification プロトコルの安全性には十分 ゼロ知識性は、この問題を解決できます
4.
ゼロ知識性は、ユーザ認証プロトコルにおいて1ビットたりとも漏れない、という性質で、 Simulation Paradigmに基づいて定義されます 表記 Key generator KG 入力: 1 n (セキュリティパラメータ) 出力:( pk,sk ) pk: a public key of length n sk: a corresponding secret key Identification プロトコル (P,V) (P,V) への共通入力 pk P への秘密入力 sk 出力 < P(pk,sk), V(pk) > : V の decision Pr[(pk,sk) ←KG(1 n ) : < P(pk,sk), V(pk) >=Accept]=1 悪意のある検証者 A が得る情報 < P(pk,sk), A(pk) > は、 A の使う乱数 R と交換されるメッセージ ゼロ知識性の定義 証明者 P とのデータ通信から得られる情報は、証明者 P と通信しなくても得ることができる。 ∀ 攻撃者(悪意のある検証者) A, ∃simulator S, 以下の 2 つの確率分布が識別不可能(等しい、統計的に、あるいは、計算量的に識別不可能 ) {(pk,sk) ← KG(1 n ) ; history ← < P(pk,sk), A(pk) > : history } と {(pk,sk) ← KG(1 n ) ; history ← S(pk) : history}
5.
統計的に識別不可能な確率分布 二つの確率分布 An と B n は、以下の条件を満たすとき、統計的に識別不可能と言われます。 ∃ negligible function negl(n) s.t. | Pr [A n = ] – Pr [B n = ]| negl(n).
Black-box Simulation ゼロ知識プロトコルとは?(先ほどの)ゼロ知識性の定義 ∀ 攻撃者(悪意のある検証者) A, ∃simulator S, 以下の 2 つの確率分布が識別不可能 {(pk,sk) ← KG(1 n ) ; history ← < P(pk,sk), A(pk) > : history } と {(pk,sk) ← KG(1 n ) ; history ← S(pk) : history} Black-box simulation ゼロ知識性の定義 ∃ simulator S s.t.∀ 攻撃者(悪意のある検証者) A, 以下の 2 つの確率分布が識別不可能 {(pk,sk) ← KG(1 n ) ; history ← < P(pk,sk), A(pk) > : history } と {(pk,sk) ← KG(1 n ) ; history ← S A (pk) : history} Quantifiers の順番が逆 Black-box simulation ZK 性の方が強い Requirement Black-box simulation ZK 性は(前者の) ZK 性を満たす 通常、 ZK 性は、この強い定義の下で、議論されている その逆が成り立つか?は B. Barak, "How to go beyond the black-box simulation barrier," FOCS 2001
8.
証明者 検証者 公開鍵:v 秘密鍵: s s.t. v=g -s (mod p) x=v e g y が成り立てば Accept 左辺: x=g r 右辺: v e g y =g -es g r+es =g r e x=g r (mod p) y=r+es (mod q) 乱数: r ∈ Z q 乱数: e ( n bits ) Schnorr の Identification プロトコル は離散対数問題の困難性に基づいたプロトコルです 離散対数が困難という仮定の下では、公開鍵から秘密鍵を計算できない
9.
証明者 検証者 公開鍵:v 秘密鍵: s s.t. v=g -s e y=r+es (mod q) 乱数: r ∈ Z q 乱数: e ( n bits ) 悪意のある証明者の観点から、 プロトコル は安全か? x=v e g y ? x=g r (mod p) ある x=g r を送信したとき、2つの異なる (e,e’) に対して、正しく返事できるなら、つまり、 (y,y’) s.t. x=v e g y =v e’ g y’ を計算できるなら、 s=(y’-y)/(e-e’) mod q として計算できる。つまり、高い確率で、なりすましできるためには、 s の知識が必須である。
証明者 検証者 公開鍵:v 秘密鍵: s s.t. v=g -s (mod p) x=v e g y が成り立てば Accept 左辺: x=g r 右辺: v e g y =g -es g r+es =g r e=0 or 1 x=g r (mod p) y=r+es (mod q) 乱数: r ∈ Z q 乱数: e ( 1 bits ) Schnorr の Identification プロトコル において、 e が 1 ビットの場合を考えます。 離散対数が困難という仮定の下では、公開鍵から秘密鍵を計算できない
12.
公開鍵: v 秘密鍵:s s.t. v=g -s e=0 or 1 x=g r (mod p) y=r+es (mod q) 乱数: r ∈ Z q 乱数: e ( 1 bits ) Schnorr の Identification プロトコル において、 e が 1 ビットの場合を考えます。 e が 1/2 の確率で予測できるので、 s を知らなくても、なりすましは 1/2 の確率で成功する。 ある x=g r を送信したとき、 e=0 and 1 の両方に対して、正しく返事できるなら、つまり、 (y,y’) s.t. x=g y =vg y’ を計算できるなら、 s=y-y’mod q として計算できる。 y から s を計算するには、 r を計算する必要があるが、 x から r を計算するのは困難(離散対数問題)。 => 実際、 ZK 性を満たす x=v e g y ?
13.
プロトコルの規定どおりに振舞う正直な検証者 V に対しては、Perfect に Simulation 可能です。 入力:公開鍵 v Step 1: ランダムに e=0 or 1 を生成( V のチャレンジを事前に生成)。 Step 2-0 : e=0 のとき、 x=g y を満たす (x,y) をランダムに生成。 Step 2-1 : e=1 のとき、 x=vg y を満たす (x,y) をランダムに生成。 Step 3 : (x,e,y) を出力
14.
正直な検証者と悪意のある検証者の違い e=0 or1 x=g r (mod p) e=0 or 1 x=g r (mod p) 正直な検証者は、 e を x とは独立にランダムに生成 悪意のある検証者は、 e を x に依存して、生成できる。 e=f(x) x より e を先に決められない
15.
悪意のある任意の検証者に対する Simulation は、Perfect ではないですが、 Statistically Indistinguishable です。 入力:公開鍵 v ブラックボックスアクセス: A Step 1: ランダムに e=0 or 1 を生成( A のチャレンジ e を予測)。 Step 2-0 : e=0 のとき、 x=g y を満たす (x,y) をランダムに生成。 Step 2-1 : e=1 のとき、 x=vg y を満たす (x,y) をランダムに生成。 Step 3 : x を A に入力( A の使用する乱数を R として生成) Step 4: A が e’ を出力 Step 5: e=e’ ならば、 (x,e,y;R) を出力、 e=e’ でないなら、 Step 2 からやり直し( A が使用する乱数を R を新たに生成、 n 回繰り返す) Step 5 で、 A の振る舞いにかかわらず、 1/2 の確率で e=e’ となる( e=0 の時と e=1 の時の x の確率分布は等しい) n 回繰り返しても、終わらない確率は、 1/2 n (negligible) この分だけ、確率分布にずれが生じます
16.
e=1 ビットの場合の SequentialComposition n 回すべて、検証者が Accept したときのみ、全体としても Accept する。 なりすましの確率は、 1/2 n ( negligible )になる かつ、 ZK 性も保持される( Simulation を n 回繰り返せばよい) 厳密には、 Simulation をする際、悪意のある検証者が前回までに得た情報を保持していることを考慮する必要がある。 n 回繰り返す x1 e1 y1 x2 e2 y2 xn en yn
17.
e=1 ビットの場合の ParallelComposition n 回すべて、検証者が Accept したときのみ、全体としても Accept する。 なりすましの確率は、 1/2 n ( negligible )になる ZK 性は保持されるか? n 回繰り返す x1 e1 y1 x2 e2 y2 xn en yn
18.
不可能性 O. Goldreichand H. Krawczyk, ``On the Composition of Zero-Knowledge Proof Systems,'' SIAM Journal on Computing, Vol.25, No.1, pp.169-192, 1996. T. Itoh and K. Sakurai, ``On the Complexity of Constant Round ZKIP of Possession of Knowledge,” IEICE Trans. Fundamentals, Vol. E76-A, No. 1, pp. 31-39, 1993.
証明者 検証者 公開鍵:v 秘密鍵: s s.t. v=g -s (mod p) x=v e g y が成り立てば Accept 左辺: x=g r 右辺: v e g y =g -es g r+es =g r e x=g r (mod p) y=r+es (mod q) 乱数: r ∈ Z q 乱数: e ( n bits ) Schnorr のオリジナルのプロトコルでは、 e が n ビットなので、 Simulation は難しそう 離散対数が困難という仮定の下では、公開鍵から秘密鍵を計算できない
21.
Simulation が難しいのはどういう場合か? e(n ビット ) x Simulator こういうやりかたで有用な情報を得ることができるかは、不明であるが、プロトコルの規定通りに振舞わないという意味では、悪意がある。 悪意のある検証者は、 e を x から Deterministic に計算する。 e=f(x) 出力される n ビットの e を予測できない場合
22.
e が nビットの場合の、 Deterministic な悪意のある任意の検証者に対する Simulation は、 e が 1 ビットの時と同じやり方だとうまくいきそうにない。 入力:公開鍵 v ブラックボックスアクセス: A Step 1: ランダムに e ( n ビット ) を生成( A のチャレンジ e を予測)。 Step 2 : x=v e g y を満たす (x,y) をランダムに生成。 Step 3 : x を A に入力( A の使用する乱数を R として生成 ) Step 4: A が e’=f(x) を出力 Step 5: e=e’ ならば、 (x,e,y; R ) を出力、 e=e’ でないなら、 Step 2 からやり直し( A の使用する乱数を R を新たに生成) Step 5 で、 e=e’ となる確率は、 negligible かもしれない( f に依存)。
23.
f が乱数表のときは、 Simulationは、本当に難しいです e (n ビット ) 悪意のある検証者は、 e を x に Deterministic に 依存して、生成できる。 e=f(x) 乱数表(非一様な Advice として与えられる) ただし、乱数表のサイズ (qn) は、指数関数的に大きいので、このような検証者に対して、 Simulation できることを ZK 性の定義は要求しません。ですが議論がシンプルにするために、とりあえず、この問題は忘れます。 Simulator x E0 x=g 0 Eq x=g q-1 … E2 x=g 2 E1 x=g 1 (ランダムな) e の値 x の値
24.
e が nビットの場合の、乱数表を使う Deterministic な悪意のある検証者に対する Simulation は、 e が 1 ビットの時と同じやり方だとうまくいきそうにない。 Step 5 で、 e=e’ となる確率は、 1/ 2 n (negligible) です。 入力:公開鍵 v ブラックボックスアクセス: A ( 乱数表 f を使う ) Step 1: ランダムに e ( n ビット ) を生成( A のチャレンジ e を予測)。 Step 2 : x=v e g y を満たす (x,y) をランダムに生成。 Step 3 : x を A に入力( A の使用する乱数を R として生成 ) Step 4: A が e’=f(x) を出力 Step 5: e=e’ ならば、 (x,e,y; R ) を出力、 e=e’ でないなら、 Step 2 からやり直し( A の使用する乱数を R を新たに生成)
25.
e が nビットの場合の、乱数表を使う Deterministic な悪意のある検証者に対する Simulation は、 e が 1 ビットの時と同じやり方だとうまくいきそうにない。 Step 5 で、 e=e’ となる確率は、 1/2 n (negligible) です。 e=e’ とならない場合、 (x,e’,y’) s.t. x=v e’ g y’ を出力できると、 s を計算できてしまいます(離散対数問題を解ける) Step 1&2 で、 x の作り方に工夫するしかない。 入力:公開鍵 v ブラックボックスアクセス: A ( 乱数表 f を使う ) Step 1: ランダムに e (n ビット ) を生成( A のチャレンジ e を予測)。 Step 2 : x=v e g y を満たす (x,y) をランダムに生成。 Step 3 : x を A に入力 Step 4: A が e’=f(x) を出力 Step 5: e=e’ ならば、 (x,e,y) を出力、 e=e’ でないなら、 Step 2 からやり直し
26.
e が nビットの場合の、乱数表を使う Deterministic な悪意のある検証者に対する一般的な Simulation は以下のようになります。 入力:公開鍵 v ブラックボックスアクセス: A ( 乱数表 f を使う ) Step 1: 以下を t(n) 回繰り返す ( t(n) は A に依存しない多項式 ) Step 1-1: x を生成(以前生成した以外の x ) Step 1-2 : x を A に入力し、 A が e=f(x) を出力 Step 2: いずれかの i において、 xi=v ei g y を満たす y を出力 S1 公開鍵 v x1 e1=f(x1) S2 x2 e2=f(x2) St xt et=f(xt) y s.t. ∃i, xi=v ei g y E A
27.
e が nビットの場合の、乱数表を使う Deterministic な悪意のある検証者に対する一般的な Simulation が成功すると仮定すると、 Pr[ (p,q,g)←PG(1 n );(v,s)←KG(p,q,g); // 鍵生成 x1←S1(v);e1←{0,1} n ; //1 st x2←S2(v,(x1,e1));e2←{0,1} n ; //2nd x3←S3(v,(x1,e1),(x2,e2));e3←{0,1} n ; //3rd … xi←Si(v,(x1,e1),(x2,e2),…);ei←{0,1} n ; //i’th … xt←St(v,(x1,e1),(x2,e2),…);et←{0,1} n ; //t’th y←E(v,(x1,e1),(x2,e2),…, (xt,et)) //y の計算 : ∃ i, xi=v ei g y // 事象: Simulation が成功 ]>1-1/2 n // 確率:限りなく 1 に近い どの i で Simulation が成功するか?
28.
e が nビットの場合の、乱数表を使う Deterministic な悪意のある検証者に対する一般的な Simulation が成功すると仮定すると、 ∃ i, Pr[ (p,q,g)←PG(1 n );(v,s)←KG(p,q,g); // 鍵生成 x1←S1(v);e1←{0,1} n ; //1 st x2←S2(v,(x1,e1));e2←{0,1} n ; //2nd x3←S3(v,(x1,e1),(x2,e2));e3←{0,1} n ; //3rd … xi←Si(v,(x1,e1),(x2,e2),…);ei←{0,1} n ; //i’th … xt←St(v,(x1,e1),(x2,e2),…);et←{0,1} n ; //t’th y←E(v,(x1,e1),(x2,e2),…, (xt,et)) //y の計算 : xi=v ei g y // 事象: Simulation が成功 ]> (1-1/2 n )/t(n) この処理を悪意のある証明者の観点で見直すことができる
29.
e が nビットの場合の、乱数表を使う Deterministic な悪意のある検証者に対する一般的な Simulation が成功すると仮定すると、 ∃ i, Pr[ (p,q,g)←PG(1 n );(v,s)←KG(p,q,g); // 鍵生成 ((x1,e1),(x2,e2),..,xi)←P’(v); //S1,S2,…,Si を使用して計算 ei←{0,1} n ; // 検証者からのチャレンジ y←P’(v, (x1,e1),(x2,e2),..,(xi,ei)) //Si+1, …, St, E を使用して計算 : xi=v ei g y // 事象:なりすまし成功 ]> (1-1/2 n )/t(n) どの i でなりすましが成功するか? xi ei y 悪意のある証明者 P’
30.
e が nビットの場合の、乱数表を使う Deterministic な悪意のある検証者に対する一般的な Simulation が成功すると仮定すると、 Pr[ (p,q,g)←PG(1 n );(v,s)←KG(p,q,g); // 鍵生成 i←{1,2,…t(n)}; // ランダムに i を選ぶ ((x1,e1),(x2,e2),..,xi)←P’(v); //S1,S2,…,Si を使用して計算 ei←{0,1} n ; // 検証者からのチャレンジ y←P’’(v, (x1,e1),(x2,e2),..,(xi,ei)) //Si+1, …, St, E を使用して計算 : xi=v ei g y // 事象:なりすまし成功 ]> (1-1/2 n )/(t(n)) 2 Schnorr のプロトコルは「知識の証明」であるので、離散対数問題を解けることを意味する。 xi ei y
31.
以上の議論のまとめ:「離散対数問題の困難性の仮定の下で、 Schnorr のプロトコルはZK 性を満たさない」ことを証明しています。 仮定: Schnorr のプロトコルが、 Blackbox ZK 性を満たすと仮定する。つまり、単一の Blackbox Simulator S が存在し、乱数表 f を使う Deterministic な検証者 A の Simulation が可能。 結論: S を使って、離散対数問題を解くことができます。 ただし、乱数表のサイズは、指数関数的に大きいので、このような検証者に対して、 Simulation できることを ZK 性の定義は要求しません。この問題を別途解決する必要があります。
32.
Simulator が Aに問い合わせる回数は、せいぜい多項式回 t(n) なので、 f のサイズを小さくできるかもしれない。 e (n ビット ) 悪意のある検証者は、 e を x に Deterministic に 依存して、生成できる。 e=f(x) 乱数表 Simulator x f が満たすべき性質( f は F(1 n ) により生成される) uniformity ∀x, f(x) is uniformly distributed over {0,1} n ∀x, ∀e∈ {0,1} n , Prob[f←F(1 n ) : f(x)=e]=1/2 n t-wise independence ∀(x1,x2,..,xt) (全て異なる) , ∀(e1,e2,..,et)∈ {0,1} nt , Prob[f←F(1 n ) : f(x1)=e1 and f(x2)=e2 and …. f(xt)=et] = 1/2 nt f は乱数表でなくても、いわゆる t-wise independent function であればよい E0 x=g 0 Eq x=g q-1 … E2 x=g 2 E1 x=g 1 (ランダムな) e の値 X の値
33.
t-wise Independent Functionの具体例 Pair-wise independent function t=2 の場合 F(1 n ): Z p ->Z p (p は n ビットの素数 ) { f(x)=ax+b | a∈Z p , b∈Z p } 1 次方程式の集合 各関数は、 2n ビットで表現できる (a と b の情報 ) Uniformity ∀ x∈Z p , ∀e∈Z p , Prob[f←F(1 n ) : f(x)=e]=1/p Pair-wise independence ∀ x∈Z p , ∀y∈Z p (x neq y), ∀e1∈Z p , ∀e2∈Z p , Prob[f←F(1 n ) : f(x)=e1 and f(y)=e2]=1/p 2 ((x,y),(e1,e2)) が与えられたとき、 f(x)=e1 and f(y)=e2 を満たす( a,b )は一意にきまる(方程式をとける) Three-wise independence? No ((x,y),(e1,e2)) が与えられたとき、( a,b )は一意に決まるので、 f(z) の値も一意に決まってしまう。 t(n)-wise independent function 同様に (t(n)-1) 次方程式を考えればよい。 各関数は、 t(n)*n ビットで表現できる。