a16z: explicación detallada del principio de funcionamiento del proyecto de votación Cicada en la cadena ZK

原文:《Building Cicada: votación privada en cadena usando rompecabezas de bloqueo de tiempo》por Michael Zhu,a16z

Compilación: Kxp, BlockBeats

Todos los sistemas de votación deben basarse en la integridad y la transparencia para ser efectivos. Superficialmente, blockchain parece ser la plataforma ideal para construir estos sistemas. De hecho, muchas organizaciones descentralizadas han adoptado el voto sin permiso para expresar la voluntad colectiva, a menudo en el contexto de ejercer un poder financiero significativo o ajustar parámetros clave del protocolo. Sin embargo, la votación en cadena tiene algunos inconvenientes y los problemas de privacidad no se han explorado completamente para los sistemas de votación Web3, lo que ha tenido un impacto negativo. En la mayoría de los protocolos de votación en cadena que se usan hoy en día, las boletas y los resultados de la votación son completamente públicos. La falta de protección de la privacidad significa que los resultados de las votaciones son susceptibles de manipulación, al mismo tiempo que genera incentivos inconsistentes para los votantes, lo que podría conducir a resultados antidemocráticos.

Con ese fin, estamos lanzando Cicada: una nueva biblioteca Solidity de código abierto que aprovecha los acertijos de bloqueo de tiempo y las pruebas de conocimiento cero para la votación privada en cadena. En comparación con los sistemas existentes, Cicada tiene propiedades de privacidad únicas, minimiza la dependencia de la confianza y también es muy eficiente en la red principal de Ethereum.

En este documento, examinamos el estado actual de la privacidad de las votaciones y brindamos una introducción de alto nivel sobre cómo funciona Cicada (a continuación se presentarán pruebas formales). También alentamos a los desarrolladores a que se dirijan al repositorio de GitHub para obtener más detalles: Cicada se puede ajustar y ampliar de manera flexible para diferentes esquemas y características de votación. Esperamos trabajar con la comunidad para explorar estas posibilidades juntos.

Descripción general de la privacidad de la votación

En cualquier sistema de votación (en cadena o de otro tipo), debemos considerar muchos niveles diferentes de privacidad. La divulgación de boletas individuales, el conteo de votos en curso y la identidad del votante afectan a los votantes de diferentes maneras. Las propiedades de privacidad deseadas varían de un voto a otro, pero aquí hay algunas que a menudo se abordan en la literatura de criptografía y ciencias sociales:

**·**Privacidad de la boleta: la votación secreta, también conocida como "boleta australiana", es una forma de proteger la privacidad de los votantes individuales en los sistemas de votación del mundo real y reducir el soborno y la coerción (en la cadena). puede necesitar un mecanismo más poderoso que la votación secreta, consulte "sin recibo" a continuación para obtener más detalles). La privacidad del voto también puede reducir el sesgo de deseabilidad social: es menos probable que las personas voten en función de lo que otras personas piensan de sus elecciones.

**·**Privacidad del recuento de votos: muchos sistemas de votación ocultan los recuentos de votos en curso, es decir, la cantidad de votos que recibió cada opción, durante la votación de los votantes para evitar el impacto en la participación y los incentivos de los votantes. Hemos visto que esto sucede en el mundo real: por ejemplo, es más probable que los senadores estadounidenses que votan más tarde se alineen con su partido que los senadores que votan antes. En la votación ponderada con fichas en la cadena, las ballenas gigantes pueden mantener su falsa sensación de seguridad manteniendo a sus oponentes por delante (algunas personas pueden ser demasiado perezosas para votar porque creen que estas personas ganarán de todos modos) y luego votan por sí mismas en la votación. último momento votos para determinar el resultado.

· Anonimato del votante: en muchos sistemas de votación del mundo real, su voto se mantiene privado, pero los demás suelen saber si votó o no. Esto podría servir como protección contra el fraude electoral, ya que la publicación de registros de quién votó permitiría a las personas verificar si alguien votó en su nombre. En la cadena, sin embargo, podemos usar primitivas criptográficas para evitar el fraude electoral mientras mantenemos el anonimato; por ejemplo, al usar un semáforo, puede probar sin conocimiento que es un votante elegible y aún no ha votado.

· Sin capacidad de recepción: los votantes no deben proporcionar un "recibo" de su boleta a un tercero para probar cómo se emitió su voto por alguien, lo que podría conducir a la venta de la boleta. La coerción-resistencia es otra propiedad estrechamente relacionada, la de evitar que alguien sea obligado a votar de determinada manera. Estas propiedades son especialmente atractivas en un entorno descentralizado, donde el poder de voto puede volverse líquido a través de un mercado de contratos inteligentes. Desafortunadamente, estas propiedades son muy difíciles de lograr. De hecho, Juels et al., señalan que estas propiedades son imposibles de lograr en un entorno sin permiso y sin hardware de confianza.

Cicada se enfoca en la privacidad continua del conteo de votos, sin embargo (como discutiremos más adelante), se puede usar junto con pruebas de membresía de grupos de conocimiento cero para el anonimato de los votantes y la privacidad de las boletas.

Cicada: Privacidad en el conteo de votos usando acertijos homomórficos de bloqueo de tiempo

Para lograr la privacidad continua del recuento de votos, Cicada toma prestadas primitivas criptográficas que nunca (hasta donde sabemos) se han utilizado en la cadena.

En primer lugar, el acertijo de bloqueo temporal (Rivest, Shamir, Wagner, 1996) es un acertijo criptográfico cuyos secretos solo pueden revelarse después de que haya transcurrido un período de tiempo predeterminado; utilizado para resolver acertijos. Los acertijos de bloqueo de tiempo son útiles en el contexto de la votación para la privacidad del conteo de votos en curso: los usuarios pueden enviar sus votos como acertijos de bloqueo de tiempo, de modo que sus votos permanezcan privados durante el proceso de votación, pero se puede acceder a ellos después de que se divulgue la votación. A diferencia de la mayoría de las otras estructuras de votación privadas, esto permite lograr la privacidad del conteo de boletas sin depender de agencias estadísticas (como trabajadores electorales que cuentan boletas en papel o digitales), cifrado de umbral (varias partes confiables deben cooperar para descifrar un mensaje) o cualquier otra parte confiable : cualquiera puede resolver el acertijo de bloqueo de tiempo para asegurarse de que el resultado se revele después de votar.

En segundo lugar, el acertijo de bloqueo de tiempo homomórfico (Malavolta Thyagarajan, 2019) tiene la propiedad adicional de que se pueden realizar algunos cálculos en valores cifrados con el conocimiento de la clave secreta, el descifrado del acertijo o el uso de una puerta trasera. En particular, el rompecabezas de bloqueo de tiempo homomórfico lineal nos permite combinar rompecabezas para generar un nuevo rompecabezas que contiene la suma de los valores secretos de los rompecabezas originales.

Como señalan los autores del artículo, los acertijos de bloqueo de tiempo homomórficos lineales son particularmente adecuados para la votación privada: los votos se pueden codificar como acertijos y se pueden combinar homomórficamente para obtener acertijos que codifican las estadísticas finales. Esto significa que solo se requiere un cálculo para revelar el conteo final, en lugar de resolver un acertijo único para cada voto.

Nuevo sistema: eficiencia y compensaciones

Para un esquema de votación que se pueda aplicar prácticamente en cadena, hay varios factores a considerar. En primer lugar, un atacante podría intentar manipular los resultados de la votación enviando boletas codificadas incorrectamente. Por ejemplo, podríamos esperar que el acertijo de bloqueo de tiempo de cada boleta codificara un valor booleano: "1" para la resolución votada y "0" para la contra. Un partidario ferviente podría intentar usar un código como "100" para aumentar su poder de voto efectivo.

Podemos prevenir este ataque exigiendo a los votantes que presenten una prueba de conocimiento cero además de enviar la boleta en sí. Sin embargo, las pruebas de conocimiento cero pueden ser computacionalmente costosas: para mantener el costo de participación de los votantes lo más bajo posible, las pruebas deben (1) calcularse de manera eficiente en el lado del cliente y (2) verificarse de manera eficiente en la cadena.

Para que la prueba sea lo más eficiente posible, utilizamos un protocolo sigma personalizado. Esta es una prueba de conocimiento cero diseñada para relaciones algebraicas específicas, no un sistema de prueba general. Esto acelera en gran medida los tiempos de prueba: en una computadora portátil comercial, se necesitan solo 14 milisegundos para generar una prueba de validez de boleta en Python.

Aunque el proceso de verificación de este protocolo sigma es conceptualmente simple, en realidad requiere varias operaciones exponenciales de gran módulo. El esquema homomórfico lineal de Malavolta y Thyagarajan utiliza el cifrado de Paillier, por lo que estas operaciones exponenciales se realizarán en algún módulo RSA N^2. Para un N razonablemente grande, estas operaciones de exponenciación son prohibitivas en la mayoría de las cadenas EVM (que requieren millones de gas). Para reducir este costo, Cicada usa el exponente ElGamal en su lugar, que aún proporciona homomorfismo aditivo, pero opera en un módulo más pequeño (N en lugar de N ^ 2).

Una desventaja de usar ElGamal es que requiere logaritmos discretos exhaustivos para descifrar las estadísticas (tenga en cuenta que esto se hace fuera de la cadena y se verifica de manera eficiente en la cadena). Por lo tanto, solo debe usarse si el conteo final esperado es relativamente pequeño (por ejemplo, menos de 2^32, alrededor de 4,3 millones de votos). En el esquema original basado en Paillier, se puede descifrar de manera eficiente independientemente del tamaño de las estadísticas.

La elección del módulo RSA N también implica compensaciones. Nuestro método utiliza un módulo de 1024 bits para mejorar la eficiencia del gas. Si bien esto está muy por encima del módulo RSA máximo para la factorización (que es de 829 bits), está por debajo del tamaño de 2048 bits generalmente recomendado para el cifrado o la firma RSA. En nuestra aplicación, sin embargo, no necesitamos seguridad a largo plazo: una vez finalizada la elección, no hay riesgo si se factoriza N futuro. Después de que expire el bloqueo de tiempo, es razonable usar un módulo relativamente pequeño, asumiendo que las estadísticas y los votos se harán públicos. (Esto también se puede actualizar fácilmente en el futuro si mejora el algoritmo de factorización).

Anonimato y elegibilidad de votantes

Como se mencionó anteriormente, Cicada brinda privacidad continua en el conteo de votos: un rompecabezas de bloqueo de tiempo mantiene los conteos en secreto durante la votación. Sin embargo, cada boleta también es un rompecabezas de bloqueo de tiempo, encriptado bajo los mismos parámetros públicos. Esto significa que así como se pueden descifrar las estadísticas (realizando los cálculos necesarios), también se puede descifrar cada voto.

En otras palabras, Cicada solo garantiza el secreto de los votos durante la votación. Si un observador curioso quiere descifrar la boleta de un votante en particular, también puede hacerlo después del cierre de las urnas. El costo de descifrar cualquier boleta es el mismo que el costo de descifrar el conteo final, por lo que descifrar completamente una boleta con n votantes requiere trabajo O(n). Sin embargo, todos estos votos se pueden descifrar en paralelo (suponiendo que haya suficientes computadoras) en un proceso que lleva la misma cantidad de tiempo que descifrar el recuento final.

Para algunas encuestas, esto puede no ser ideal. Si bien estamos contentos con la privacidad temporal del conteo de votos, es posible que deseemos tener una privacidad de voto permanente. Para lograr esto, podemos combinar Cicada con un protocolo de elegibilidad de votantes anónimos a través de una prueba de membresía de grupo de conocimiento cero. De esa manera, incluso si se desclasifican las papeletas, solo se revelará cómo votó alguien, lo que ya se revela en el conteo.

En nuestro repositorio, proporcionamos un contrato de ejemplo que usa Semaphore para el anonimato de los votantes. Tenga en cuenta que el contrato de Cicada en sí mismo no hace suposiciones sobre la determinación o cumplimiento de la elegibilidad de los votantes. En particular, puede reemplazar Semaphore con Semacaulk o ZK Proof of State.

Agencia de recuento de votos

Uno de nuestros primeros objetivos al diseñar Cicada fue evitar la dependencia de las agencias de conteo de votos: muchos votos privados requieren una agencia de conteo semi-confiable (o un comité que coopere a través de un cómputo multipartidista seguro) que reciba y agregue los votos. En el contexto de blockchain, esto significa que estos esquemas no pueden llevarse a cabo solo a través de contratos inteligentes, sino que requieren cierta intervención humana y confianza.

En la mayoría de los regímenes, se confía en las agencias de estadística en términos de integridad (no pueden manipular el conteo de votos), pero también deben permanecer activas: si están fuera de línea, los resultados finales no se pueden calcular y los resultados de la votación se estancan indefinidamente. En algunos sistemas, también se confía en las agencias estadísticas para mantener la privacidad. Es decir, conocen el voto de cada votante, pero publican los resultados sin revelar esta información.

Si bien las agencias estadísticas son razonables (y necesarias) en muchos escenarios del mundo real, no son ideales en el contexto de las cadenas de bloques, donde nuestro objetivo es minimizar la confianza y garantizar la resistencia a la censura.

Conclusión

Cicada explora muchas direcciones en el campo de la privacidad de la votación en cadena y complementa la investigación en curso de otros grupos. Como se mencionó anteriormente, Cicada complementa las tecnologías de membresía de grupos anónimos como Semaphore, prueba de almacenamiento ZK y anuladores de limitación de velocidad. Cicada también se puede combinar con el comprobador de pruebas optimista propuesto por el equipo de Nouns Vortex para reducir la carga de gas de los votantes.

Además, tenemos la oportunidad de ajustar Cicada para admitir diferentes esquemas de votación (por ejemplo, votación ponderada, votación cuadrática), mientras que los esquemas más complejos pueden ser computacionalmente costosos para la red principal de Ethereum, pueden ser factibles en las redes de Capa 2 de. Con esto en mente, agradecemos cualquier sugerencia para la dirección futura de Cicada.

Ver originales
El contenido es solo de referencia, no una solicitud u oferta. No se proporciona asesoramiento fiscal, legal ni de inversión. Consulte el Descargo de responsabilidad para obtener más información sobre los riesgos.
  • Recompensa
  • Comentar
  • Compartir
Comentar
0/400
Sin comentarios
  • Anclado
Comercie con criptomonedas en cualquier lugar y en cualquier momento
qrCode
Escanee para descargar la aplicación Gate.io
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • ไทย
  • Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)