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’を使って間接的に検証