お互いを信頼していなければ、ランダムな数字を生成することは可能ですか?パート2

こんにちは、Habr!

最初の部分、要件は、このような乱数発生器のために提唱し、その実施に二つのアプローチが考えられるもの、お互いを信頼していない参加者のための乱数を生成する必要があるかもしれないなぜ記事、我々は議論しました。

, .

, , , . : , , (x, y) , .

, :

  1. ( xG, Gx ). -- .

  2. G xG x.

p(x) k-1. , : p(x) k x ( p(x)), p(x) x.

, p(x) G, p(x)G k x, p(x)G x.

, , , .

n , , k , , k-1 , .

p(x) k-1, p(1), p(2), (n- p(n)). , G p(x)G x. p(i) “ ” i- ( i- ), p(i)G “ ” i- ( ). , p(i)G p(i).

, i- – , . , , .

, ? , . h -- . , h seed. h :

H = scalarToPoint(h)

i Hi = p(i)H, , p(i) H. Hi i- , . , , , .

k Hi = p(i)H, Hx = p(x)H x , . H0 = p(0)H, . , p(0), p(0)H – p(x)H, k p(i)H . p(i)H p(0)H.

, : , k-1 , , , k , k seed.

, . , Hi i p(i)H. i- p(i), i- Hi , - Hi Hi, :

最初の参加者によって送信された異なるH_1値は、異なる結果のH_0につながります
H_1, , H_0

Hi, , .

, p(x) k-1 i p(i), . G p(x)G x.

, xi, Xi.

:

  1. i pi(x) k-1. j pi(j), Xj. i- j- pi(j). i pi(j)G j 1 k .

  2. k , . , n . – Z k , (1).

  3. , pi(j) pi(j)G. Z , pi(j) pi(j)G.

  4. j p(j) pi(j) i Z. p(x)G pi(x)G i Z.

, p(x) – k-1, pi(x), – k-1. , , j p(j), p(x) x ≠ j. , , pi(x), j , p(x).

, . 1, 2 4 . 3 .

, , pi(j) pi(j)G. , i pi(j) j, j pi(j), .

, proofi(j), , e, proofi(j) pi(j)G, , epi(j), j. , , O(nk) , .

, , pi(j) pi(j)G , pi(j), pi(j)G, , . , pi(G) , , . , , , , , , .

, , . , , , k , , .

H_i

, , Hi, Hi = p(i)H, p(i).

, H, G, p(i)G . p(i) p(i)G G , dlog, , :

dlog(p(i)G, G) = dlog(Hi, H)

p(i). , Schnorr Protocol.

, Hi .

, , , . Hi .

: – H0, p(0)G – , Hi, ,

dlog(p(0)G, G) = dlog(H0, H)

, Schnorr Protocol , p(0), , , , . Hi , H0.

, - , , H0 , ,

H0 × G = p(0)G × H

elliptic curve pairings, . H0 – , , G, H p(0)G. H0 – , seed, , k n . , seed – , H0 – - , .

NEAR. NEAR – , .

, Rust, .

NEAR, -IDE .

, .

!




All Articles