Ist es möglich, Zufallszahlen zu generieren, wenn wir uns nicht vertrauen? Teil 2

Hallo Habr!

Im ersten Teil des Artikels haben wir diskutiert, warum es möglicherweise erforderlich ist, Zufallszahlen für Teilnehmer zu generieren, die sich nicht vertrauen, welche Anforderungen an solche Zufallszahlengeneratoren gestellt werden, und zwei Ansätze für ihre Implementierung in Betracht gezogen.

, .

, , , . : , , (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, :

Unterschiedliche H_1-Werte, die vom ersten Teilnehmer gesendet wurden, führen zu unterschiedlichen resultierenden 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