Faire Online-Abstimmung: Mythos oder RealitÀt?

Hallo Habr! Mein Name ist Ivan. Ich entwickle den Online-Abstimmungsdienst WE.Vote, der auf der Blockchain-Plattform Waves Enterprise basiert. Die Idee des Online-Votings wurde schon lange von verschiedenen Unternehmen umgesetzt, aber in allen FĂ€llen von "erhöhter Verantwortung" greifen sie immer noch auf gutes altes Papier zurĂŒck. Mal sehen, wie E-Voting unter strengsten Bedingungen damit konkurrieren kann.





Die Idee der Online-Abstimmung ist nicht neu. Dienstleistungen entstehen, aber die traditionelle persönliche Abstimmung ĂŒber Papierstimmen ist nach wie vor die hĂ€ufigste Methode, um wichtige kollektive Entscheidungen zu treffen. Zum Beispiel bei nationalen Wahlen mit Millionen von Stimmzetteln, Tausenden von Wahllokalen, Beobachtern und Freiwilligen. Oder bei AktionĂ€rsversammlungen eines großen Unternehmens, bei denen Sie bereits in der Phase der Benachrichtigung ĂŒber eine bevorstehende Versammlung einen Wagen mit eingeschriebenen Briefen versenden und sicherstellen mĂŒssen, dass diese eingegangen sind. Oder bei Hauptversammlungen von Hausbesitzern, bei denen Sie den Moment festhalten mĂŒssen, in dem jeder Mieter nicht arbeitet, nicht im Urlaub oder in der Datscha, um alle Wohnungen mit einem Fragebogen zu durchsuchen. Ja, "Papier" ist lang und teuer. Aber trotz aller Nachteile der Papierabstimmung,Es wird weiterhin aktiv eingesetzt - teilweise aufgrund der TrĂ€gheit der Rechtsvorschriften und wahrscheinlich in grĂ¶ĂŸerem Maße aufgrund des Glaubens an die ZuverlĂ€ssigkeit traditioneller, gut etablierter Verfahren.





. - , . «» — , , , -. « », .





- — , -. ? , . , . , , —   .





« », « » - . ? . ?  ,   ( ).  , , ..  : , - . , , .





?  , « » - ? , «» «».    — «» , ? «» , , ?





, , «»? , ?  .





, , — / , , , .  - :





  1. : .





  2. , . , , // .





  3. . —  — , , (, ) , .





  4. , , , « ». , , «» . - , , — , . .





  5. , , , ( ).





  6. .   ,  , , , ... — - .





, - . , , . ,   . , — , . , , ,  .  , — .





.  -  , . .





: , ( ) . , , .





, .     , ,  , .    . , :





  • ;





  • — (e-mail );





  • — , , , ;





  • —  .





: (), : , . , , , . , , , , .





.  , .  .





, . ,    . ... e-mail. . , , . ,  ,  , — .





. , — . , , , . , , .





, , ,    , , ( -).  ,   ( ), ( ).





  «».  «» , , , . , . -, «». , -. , , — : , , , .





, , :





  • immutable- , .





  • , — -«», .





  • . , -, .





, , - . , , ! , . , , .  ( 99.9% ).





, , , , . , , , . , «» . , . - ?





, , ?  . ( , ) , « »? ? . , - ?





  — . , , , . , . - «», . N , , K , K < N.





, . . -, . -, . , . . ... , — . , — , , .





, — — , , . « IP» . , . , , . // , , 5 . . 500 , , .





?





. , , , , . ,    . , - . K N, .





   (MainPubliKey) DKG (distributed key generation) Torben Pryds Pedersen Â«A threshold cryptosystem without a trusted party»,  ( ( ) GF(p)). :  ( ) .





DKG sep256k1 (Bitcoin, Ethereum) SHA-256. , , Ed25519 -26 , . 256- , 512-.





DKG , . «» , -. — . 1 1 , , / (. ), .





   , .





DKG Pedersen 91

:





  1. E (Base) q.





  2. (BaseCommit) , x BaseCommit = x * Base .





  3. (k, n),  n â€”  (DecryptService), ,  k â€”  , . k <= (n+1)/2,  k - 1  â€”  , (MainPubliKey).





0. DecryptService





 n DecryptService  1  n. ,  DecryptService  , K N.





1.





 n DecryptService  (Pub_n)  (priv_n) : j-  : priv_jPub_j,  Pub_j = priv_j * Base ( Base â€” ). Pedersen commitment :





  1. ,  r_j.





  2. ,  _j = r * BaseCommit + Pub_j.





  3. _j  .





 n DecryptService   _j, DecryptService  r_j. DecryptService — Pub_j = _j - r * BaseCommit — Pub (MainPublicKey)  Pub_j.





   , . ...





2.





 j- DecryptService :





  •  k - 1f_j(x) = f_j_0 + f_j_1*x + ... +  f_j_k-1* x^(k-1),  f_j0 = priv_j,  â€”  GF(q),  q â€” .





  •  i-  n : f_j(i) = f_j_0 + f_j_1*i + ... +  f_j_k-1 * i^(k-1).  f_j(i)  (shadow).





  •  f_j(i)   Pub_i  . ,  f_j(i)   priv_i, .. DecryptService  i.





3.





, DecryptService DKG, , . DecryptService  , Base: j- : fj,0 * Base, fj,1 * Base, ... , fj,k-1 * Base, fj,k-1 â€”  k - 1.





 i- DecryptService   f_j(i) ( j  1  n,  i),  n - 1  DKG. i- DecryptService   j:





  1.  f_j(i) * Base





  2. fj,0 * Base, fj.1 * Base, ... , fj,k-1 * Base





  3.  ifj,0 * Base,  i * ( fj,1 * Base), ... , i^(k-1) * ( fj,k-1 * Base)





  4. .





 f_j(i) * Base (  j  i, ), .  j:  f_j(i),  â€” 0.





,  s_i   f_j(i)   j , .





 k ,  s_i * Lagrange(k, i), Lagrange(k, i) â€” , (k)  i, , Pub (MainPublicKey),  â€”  priv_i.





3,     (MainPublicKey), , .     .





«» . , , «» K , . : . ? , .





4.





, M (MainPublicKey):





  1. r R = r * Base.





  2.   = M + r * MainPublicKey.





  3.  â€” (R, C) â€” .





  4.  priv  : priv * R.





  5.  MM = - priv * R.





, (R, C)  priv * R.





(, (k, n) = (3,6)),  s_i * R, , . « ». 3 6  s_i * R  , priv * R. , .





, , . , DecryptService « », , . DecryptService , , , .





 :  (), (DKG), , . , , .





, . , , .





. . , , , .





, , — , , — . , , . . . . — .





Frage und Antwort Matrix Bulletin

,  ,  « » . , .





Ergebnisse verschlĂŒsselt zĂ€hlen

, . . « » — , !





, -.  ,     . , :





1: ( R1, 1 ) =( r1 * Base, M1 + r1 * MainPublicKey )





2: ( R2, 2 ) =( r2 * Base, M2 + r2 * MainPublicKey )





: ( R1 + R2, C1 + C2 ) = ( ( r1+r2 ) * Base, M1 + M2 + ( r1 + r2 ) * MainPublicKey )





, (  MainPublicKey = priv * Base):





( M1 + M2 ) = ( C1 + C2 ) – priv * ( R1 + R2 ) = M1 + M2 + ( r1 + r2 ) * MainPublicKey â€“ priv * ( r1 + r2 ) * Base = M1 + M2





- «», - — «».





, , , . , , «». «» .





, , , , — . , . , , , , . . , , .





(ZKP — Zero Knowledge Proofs)

. . « » , , "1" «100500». «–100500» , . , « ».





   , - – . - , (, ) .





ZKP ( ) — « -» «»:





«A» , , «B», . «» «», :





  1. «» «» . «» , «».





  2. «» «» - , , .





  3. «» , «».





, «» , , , , 50/50. , «» , «» , «» . «» , , (, «» ), (, «» ) .





  , . :





ZKP

, , NIZK, , — «0» «1» — , . , «1».  , «1» .





( ) ZKP . , , , , . «1» ZKP . , N, . ZKP [0, 1, 2, 3]. ZKP [3] — .  [1, 2, 3] — 1 3 , .





, « proof» . .





:





(R_1, C_1), Proof_1,







.........................   







(R_M, C_M), Proof_M,







Sum_Proof







, ZKP . ( ), , — .





ZKP

, , , , , , . , . ,  — « ». « »  ,  .





: ,  ,  . , .





:  ,  , «» , , «». «ZK- »,  ZKP Chaum-Pedersen, x A = x * B C = x * D ( A B, C, D —  ).





:





  • ;





  • ;





  • , , .





[ [ 2,5,6 ], [ 3,5,5 ], [ 7,6 ], [ 10,3 ] ].





-

, , , , , . , «» — ; Google Forms :)





— -. , . , , «» . , «»,  — .    «» :  , - .





- . « » ,   ,  : , — . - DKG, .





?

, -. -,  — , DKG. -, - , . «» -.   ,  —  .





— , , , . UX â€” :)  — , ,  , , UX -, , .  , , , . , , : « , , , - ?». , , .





  ,     .  -   , . . ,   - , ..





— , . , . .








All Articles