Slide 1

Slide 1 text

Inner Product Argument


Slide 2

Slide 2 text

Slide 3

Slide 3 text

2 Vector Pedersen Commitment
 任意の値に対するコミットメント方式 
 
 ● 楕円曲線上の2点G, Hを生成点とする(Hの離散対数は誰も知らない) 
 ● ランダムな値をr(ブラインドファクター)
 ● コミットしたい値をa
 
 とした場合、Pedersen CommitmentはC = aG + bH
 
 ● コミットメントCからコミットした値aを逆算することは不可能
 ● rとaを開示することで、コミットした値を証明することが可能 
 
 Vector Pedersen Commitment=ベクトル(a = (a 1 , a 2 , …, a n ))に対するコミットメント
 ● n個の点G 1 , G 2 , …, G n を準備し、
 ● C = a 1 G 1 + a 2 G 2 + … + a n G n + bHを計算する
 
 コミットメントは加算・減算できる 


Slide 4

Slide 4 text

3 Inner Product Argument
 セットアップ:
 ● G = (G 1 , G 2 , …, G n )
 ● H = (H 1 , H 2 , …, H n )
 
 コミット:
 長さnの2つのベクトルA = (a 1 , a 2 , …, a n ), B = (b 1 , b 2 , …, b n )に対し、
 コミットメントは 
 
 
 
 
 Pは楕円曲線上の点、PからA, Bの内容は分からない


Slide 5

Slide 5 text

4 Inner Product Argument
 (簡単なサンプル)n = 2の場合(A = (a 1 , a 2 ), B = (b 1 , b 2 ))
 
 コミット:
 ● P = a 1 G 1 + a 2 G 2 + b 1 H 1 + b 2 H 2
 
 
 オープン:
 cをAとBの内積、つまり c = <A, B>とし、
 PがそのようなA, Bの有効なコミットメントであることを証明する
 
 
 
 証明者
 検証者


Slide 6

Slide 6 text

5 Inner Product Argument
 証明者
 検証者
 ① ランダムな要素Uを選択して、証明者に送信
 ② 受け取ったUを使って以下を計算し、検証者に送信 
 ● L = a 1 G 2 + b 2 H 1 + a 1 b 2 U
 ● R = a 2 G 1 + b 1 H 2 + a 2 b 1 U
 ③ ランダムな数値xを選択し、送信者に送信
 ④ xを使って以下を計算し、検証者に送信 
 ● a’ = a 1 x + a 2 x-1
 ● b’ = b 1 x-1 + b 2 x
 ⑤ 検証者は以下が成立するか検証する 
 x2L + P + cU + x-2R = x-1a’G 1 + xa’G 2 + xb’H 1 + x-1b’H 2 + a’b’U
 ※ a’, b’は半分のサイズ(2→1)になる


Slide 7

Slide 7 text

6 検証式の内容
 x2L + P + cU + x-2R = x-1a’G 1 + xa’G 2 + xb’H 1 + x-1b’H 2 + a’b’U
 x-1a’G 1 = x-1(a 1 x + a 2 x-1)G 1
 = a 1 G 1 + x-2a 2 G 1 
 
 xa’G 2 = x(a 1 x + a 2 x-1)G 2 
 = x2a 1 G 2 + a 2 G 2
 
 xb’H 1 = x(b 1 x-1 + b 2 x)H 1
 = b 1 H 1 + x2b 2 H 1 
 
 x-1b’H 2 = x-1(b 1 x-1 + b 2 x)H 2
 = x-2b 1 H 2 + b 2 H 2 
 
 a’b’U = (a 1 x + a 2 x-1)(b 1 x-1 + b 2 x)U
 = (a 1 b 1 + x2a 1 b 2 + x-2a 2 b 1 + a 2 b 2 )U
 = cU + x2a 1 b 2 U + x-2a 2 b 1 U
 x2L = x2a 1 G 2 + x2b 2 H 1 + x2a 1 b 2 U 
 
 P = a 1 G 1 + a 2 G 2 + b 1 H 1 + b 2 H 2
 
 x-2R = x-2a 2 G 1 + x-2b 1 H 2 + x-2a 2 b 1 U
 
 何をやっている?
 ● 検証者が選択した値xを使って、a’, b’を計算することで
 元のベクトルA, Bの値をブラインドし、
 ● Pがc = の関係を満たすへのコミットメントであることを
 a’, b’を使って間接的に検証


Slide 8

Slide 8 text

7 n > 2の場合
 n = 2kの場合
 
 A, B, H, Gを半分に分割する
 
 
 
 証明者が作成するL, Rは、
 
 
 
 証明者が作成するA', B'は
 ● L = a 1 G 2 + b 2 H 1 + a 1 b 2 U
 ● R = a 2 G 1 + b 1 H 2 + a 2 b 1 U
 ● L = + + U
 ● R = + + U
 ● a’ = a 1 x + a 2 x-1
 ● b’ = b 1 x-1 + b 2 x
 ● A' = xA lo + x-1A hi
 ● B’ = x-1B lo + xB hi
 そして
 ● G' = x-1G lo + xG hi
 ● H’ = xH lo + x-1H hi


Slide 9

Slide 9 text

8 n > 2の場合
 ● A' = xA lo + x-1A hi
 ● B’ = x-1B lo + xB hi
 
 結果として得られるA', B', G’, H’は元のA, Bの半分のサイズになる。
 そして、これらを新しいA, Bとして、同様の計算をn = 2になるまで繰り返す。
 
 n = 2になったら、検証者はn = 2のケースと同じ検証を行う。
 
 x2L + P + cU + x-2R = x-1a’G 1 + xa’G 2 + xb’H 1 + x-1b’H 2 + a’b’U
 
 ● G' = x-1G lo + xG hi
 ● H’ = xH lo + x-1H hi