Voto justo en línea: ¿mito o realidad?

¡Hola, Habr! Mi nombre es Ivan, estoy desarrollando el servicio de votación en línea WE.Vote basado en la plataforma blockchain de Waves Enterprise. La idea misma de la votación en línea ha sido implementada durante mucho tiempo por diferentes empresas, pero en cualquier caso de "mayor responsabilidad", todavía recurren al buen papel antiguo. Veamos cómo el voto electrónico puede competir con él en las condiciones más estrictas.





La idea de la votación en línea no es nueva. Los servicios están surgiendo, pero la votación tradicional cara a cara en papeletas sigue siendo la forma más común de tomar decisiones colectivas importantes. Por ejemplo, en elecciones nacionales con millones de papeletas, miles de colegios electorales, observadores y voluntarios. O en las reuniones de accionistas de una gran empresa, donde incluso en la etapa de notificación de una próxima reunión, debe enviar un vagón de cartas certificadas y asegurarse de que se hayan recibido. O en las juntas generales de propietarios, donde hay que captar el momento en que cada uno de los inquilinos no está en el trabajo, ni de vacaciones ni en la casa de campo, para poder recorrer todos los apartamentos con un cuestionario. Sí, el "papel" es largo y caro. Pero a pesar de todas las desventajas de la votación en papel,sigue utilizándose activamente, en parte debido a la inercia de la legislación reguladora y, probablemente, en mayor medida debido a la creencia en la fiabilidad de los procedimientos tradicionales bien establecidos.





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





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





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





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





, , «»? , ?  .





, , — / , , , .  - :





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





, . , , .





. . , , , .





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





Boletín de matriz de preguntas y respuestas

,  ,  « » . , .





Contando resultados encriptados

, . . « » — , !





, -.  ,     . , :





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