Vote équitable en ligne: mythe ou réalité?

Bonjour, Habr! Je m'appelle Ivan, je développe le service de vote en ligne WE.Vote basé sur la plateforme blockchain Waves Enterprise. L'idée même du vote en ligne a longtemps été mise en œuvre par différentes entreprises, mais dans tous les cas de «responsabilité accrue», elles ont encore recours au bon vieux papier. Voyons comment le vote électronique peut lui concurrencer dans les conditions les plus strictes.





L'idée du vote en ligne n'est pas nouvelle. Les services émergent, mais le vote traditionnel en face à face sur les bulletins de vote papier reste le moyen le plus courant de prendre des décisions collectives importantes. Par exemple, lors d'élections nationales avec des millions de bulletins de vote, des milliers de bureaux de vote, des observateurs et des bénévoles. Ou lors d'assemblées d'actionnaires d'une grande entreprise, où même au stade de la notification d'une assemblée à venir, vous devez envoyer un wagon de lettres recommandées et vous assurer qu'elles ont été reçues. Ou lors des assemblées générales des propriétaires, où il faut saisir le moment où chacun des locataires n'est pas au travail, pas en vacances ou à la datcha, afin de faire le tour de tous les appartements avec un questionnaire. Oui, le «papier» est long et coûteux. Mais malgré tous les inconvénients du vote papier,il continue d'être activement utilisé - en partie en raison de l'inertie de la législation réglementaire et, probablement, dans une plus grande mesure en raison de la croyance en la fiabilité des procédures traditionnelles et bien établies.





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





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





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





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





, , «»? , ?  .





, , — / , , , .  - :





  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), , . , , .





, . , , .





. . , , , .





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





Bulletin de la matrice de questions et réponses

,  ,  « » . , .





Comptage des résultats chiffrés

, . . « » — , !





, -.  ,     . , :





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