a16z: Cómo Cicada usa acertijos de bloqueo de tiempo y pruebas de conocimiento cero para permitir la votación en cadena

Cicada tiene propiedades de privacidad novedosas, minimiza las suposiciones de confianza y es lo suficientemente eficiente como para usarse en la red principal de Ethereum.

**Escrito por:**Michael Zhu

Compilado por: Lynn, MarsBit

Todos los sistemas de votación que funcionan de manera significativa se basan en la integridad y la transparencia. A primera vista, esto hace que la cadena de bloques sea una plataforma ideal para construir estos sistemas; de hecho, muchas organizaciones descentralizadas han adoptado el voto sin permiso como un medio para expresar la intención colectiva, a menudo ejerciendo una gran riqueza o ajustando los parámetros clave del protocolo en el caso de. Pero la votación en cadena también tiene desventajas: la privacidad aún no se ha explorado ni desarrollado, lo que no es bueno para los sistemas de votación Web3: en la mayoría de los protocolos de votación en cadena actualmente en uso, las boletas y los resultados de la votación son completamente públicos. Sin privacidad, los resultados de las votaciones pueden manipularse fácilmente y los incentivos para los votantes pueden desalinearse, lo que podría conducir a resultados antidemocráticos.

Es por eso que 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 permitir la votación privada en cadena. En comparación con los sistemas existentes, Cicada tiene nuevas propiedades de privacidad, minimiza las suposiciones de confianza y es lo suficientemente eficiente como para usarse en la red principal de Ethereum.

En esta publicación, examinamos el estado de la privacidad de la votación y brindamos una descripción de alto nivel de cómo funciona Cicada (próximamente se presentarán pruebas formales). También alentamos a los desarrolladores a consultar el repositorio de GitHub: Cicada se puede modificar y ampliar de muchas maneras para admitir diferentes esquemas y funciones de votación, y esperamos trabajar con la comunidad para explorar estas posibilidades.

Breve Encuesta de Urnas Privadas

En cualquier sistema de votación (en cadena o no), hay muchos niveles diferentes de privacidad a considerar. La divulgación de las papeletas individuales, los conteos acumulados y las identidades de los votantes afectan la motivación de los votantes de diferentes maneras. Las propiedades de privacidad necesarias dependen del contexto de la votación. Algunos que aparecen con frecuencia en la literatura de criptografía y ciencias sociales:

  • Privacidad de la boleta: las boletas secretas, también conocidas como "boletas australianas", se desarrollaron para los sistemas de votación del mundo real como una forma de preservar las preferencias individuales de los votantes y mitigar el soborno y la coerción (establecidos en cadena, es posible que requiera una propiedad más fuerte que la boleta privacidad - consulte "sin recibo" a continuación). La privacidad del voto también puede mitigar el sesgo de deseabilidad social: alguien tiene menos presión para votar en función de lo que otros piensan de sus elecciones.
  • Privacidad de los conteos en curso: muchos sistemas de votación ocultan los conteos en curso, o cuántos votos ya se han emitido para cada opción, mientras los votantes aún están votando, para evitar afectar 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. Y en cadena: en la votación ponderada por fichas, las ballenas pueden adormecer a sus oponentes con una falsa sensación de seguridad manteniéndolos adelante (algunos pueden ser demasiado perezosos para votar, asumiendo que ganarán de todos modos), y luego emitir su propio voto en Ven a última hora y decide el resultado.
  • Anonimato del votante: en muchos sistemas de votación del mundo real, su voto no es público, pero el hecho de que votó a menudo es público. Esto es importante para prevenir el fraude electoral, porque la publicación de registros de votantes permite a las personas verificar si otros votaron en su nombre. En la cadena, sin embargo, podemos prevenir el fraude electoral mientras preservamos el anonimato utilizando primitivas criptográficas; por ejemplo, con Semaphore, puede probar sin conocimiento que es un votante válido que aún no ha votado.
  • Sin capacidad de recepción: los votantes individuales proporcionan un "recibo" de su boleta para demostrar cómo votaron a un tercero, lo que de otro modo podría resultar en una venta de boletos. Una propiedad estrechamente relacionada pero más fuerte es la resistencia a la coerción, que evita que alguien coaccione a los votantes para que voten de cierta manera. Estas propiedades son particularmente atractivas en un entorno descentralizado, donde los derechos de voto pueden liquidarse a través de mercados de contratos inteligentes. Desafortunadamente, también son difíciles de implementar; de hecho, Juels et al., señalan que es imposible en un entorno sin permisos y sin hardware de confianza.

Cicada se enfoca en la privacidad del conteo de votos en curso, pero (como veremos más adelante) se puede combinar con pruebas de membresía de grupos de conocimiento cero para lograr el anonimato de los votantes y la privacidad de las boletas.

Presentamos a Cicada: privacidad en el conteo de votos del problema de bloqueo de tiempo homomórfico

Para lograr la privacidad del conteo continuo de votos, Cicada aprovecha las primitivas criptográficas que (hasta donde sabemos) nunca antes se habían usado en la cadena.

Primero, el acertijo de bloqueo de tiempo (Rivest, Shamir, Wagner, 1996) es un acertijo encriptado que encapsula un secreto que solo puede revelarse después de que transcurra una cantidad de tiempo predeterminada; más específicamente, el acertijo puede repetirse haciendo algo no cálculos paralelos para descifrar. Los acertijos con límite de tiempo son útiles en el contexto de la votación para lograr privacidad en la ejecución de estadísticas: los usuarios pueden enviar sus votos como acertijos con límite de tiempo para que se mantengan en secreto durante el proceso de votación pero se puedan revelar después de la votación. A diferencia de la mayoría de las otras estructuras de votación privadas, esto permite que la privacidad estadística opere sin depender de las agencias estadísticas (como los trabajadores electorales que cuentan las boletas en papel o digitales), el cifrado de umbral (varias partes confiables deben cooperar para descifrar un mensaje) o cualquier otra parte confiable: Cualquiera puede resolver un acertijo de bloqueo de tiempo para asegurarse de que el resultado se revele después de votar.

En segundo lugar, un acertijo de bloqueo de tiempo isomorfo (Malavolta Thyagarajan, 2019) tiene la propiedad adicional de que algunos cálculos sobre valores cifrados son posibles con el conocimiento de la clave secreta, el descifrado del acertijo o el uso de una puerta trasera. En particular, un rompecabezas de bloqueo de tiempo linealmente homomórfico nos permite combinar rompecabezas para producir un nuevo rompecabezas que encapsula la suma de los valores secretos del rompecabezas original.

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

Una nueva estructura: eficiencia y compensaciones

Hay varias cuestiones a considerar para que un esquema de votación sea práctico en la cadena. En primer lugar, un atacante puede intentar manipular los votos emitiendo una boleta codificada incorrectamente. Por ejemplo, podríamos querer que el acertijo de bloqueo de tiempo para cada boleta esté codificado como un valor booleano: "1" para la propuesta que se vota y "0" para la contra. Un ferviente partidario de la propuesta podría tratar de codificar algo como "100" para expandir su poder de voto efectivo.

Podemos prevenir este ataque haciendo que el votante envíe una prueba de conocimiento cero de la validez del voto junto con el voto mismo. Sin embargo, las pruebas de conocimiento cero son costosas desde el punto de vista computacional: para mantener el costo de participación de los votantes lo más bajo posible, las pruebas deben ser (1) computables de manera eficiente del lado del cliente y (2) verificables de manera eficiente en la cadena.

Para que las pruebas sean lo más eficientes posible, utilizamos un protocolo sigma personalizado: pruebas de conocimiento cero diseñadas para relaciones algebraicas específicas, en lugar de un sistema de prueba general. Esto hace que el tiempo del probador sea extremadamente rápido: generar una prueba de validez de boleta en Python toma 14 ms en una computadora portátil comercial.

Si bien el validador del protocolo sigma es conceptualmente simple, requiere una cantidad bastante grande de exponenciaciones modulares. El esquema homomórfico lineal de Malavolta y Thyagarajan utiliza el cifrado de Paillier, por lo que estas exponenciaciones realizarán el módulo N^2 para algún RSA módulo N. Para tamaños razonables de N, la exponenciación es muy costosa (millones de gas) en la mayoría de las cadenas EVM. Para reducir costos, Cicada usa Exponential ElGamal: Exponential ElGamal aún proporciona homomorfismos aditivos, pero funciona en módulos más pequeños (N en lugar de N ^ 2).

Una desventaja de usar ElGamal es que el paso final de descifrar el conteo requiere la fuerza bruta del registro discreto (tenga en cuenta que esto se hace fuera de la cadena y se verifica de manera efectiva en la cadena). Por lo tanto, solo funciona si el número final esperado de votos es bastante pequeño (por ejemplo, menos de 2^32, o alrededor de 4,3 millones de votos). En el esquema original basado en Paillier, los conteos se pueden descifrar de manera eficiente independientemente de su tamaño.

La elección del módulo RSA N también implica compensaciones. Nuestra implementación utiliza un módulo de 1024 bits para la eficiencia del gas. Si bien esto está muy por encima del módulo RSA más grande jamás factorizado públicamente (829 bits), está por debajo del tamaño comúnmente recomendado de 2048 bits para el cifrado o la firma RSA. Sin embargo, nuestra aplicación no requiere seguridad a largo plazo: una vez finalizada la elección, no hay riesgo si se considera N en el futuro. Es razonable utilizar un módulo relativamente pequeño, suponiendo que los recuentos y los votos se hagan públicos después de que expire el bloqueo de tiempo. (Esto también se puede actualizar fácilmente en el futuro si mejora el algoritmo de descomposición).

Anonimato y elegibilidad de votantes

Como se mencionó anteriormente, Cicada brinda privacidad en el conteo de ejecuciones: una propiedad de rompecabezas bloqueada en el tiempo que mantiene la privacidad del conteo de votos durante la votación. Sin embargo, cada boleta individual también es un rompecabezas de bloqueo de tiempo, encriptado bajo los mismos parámetros públicos. Esto significa que así como se puede descifrar el conteo (realizando los cálculos necesarios), también se puede descifrar cada voto. En otras palabras, Cicada garantiza la privacidad de la boleta solo durante la votación; si los observadores curiosos desean descifrar la boleta de un votante en particular, pueden hacerlo. Descifrar cualquier boleta individual es tan costoso como descifrar el recuento final, por lo que ingenuamente se necesita O(n) trabajo para descifrar completamente una boleta con n votantes. Pero todos estos votos se pueden descifrar en paralelo (suponiendo que haya suficientes máquinas), tomando la misma cantidad de tiempo de reloj de pared que se necesita para descifrar el recuento final.

Para algunos votos, esto puede no ser deseable. Si bien estamos contentos con la privacidad del conteo de votos en forma temporal, es posible que deseemos la privacidad de la votación de forma indefinida. Para lograr esto, podemos combinar Cicada con un protocolo de elegibilidad de votantes anónimos, instanciado con una prueba de pertenencia a un grupo de conocimiento cero. De esa manera, incluso si se desclasifica la boleta, todo lo que revela es que alguien votó de esa manera, y eso ya lo sabemos por el conteo.

En nuestro repositorio, incluimos un contrato de ejemplo que usa Semaphore para anonimizar a los votantes. Tenga en cuenta, sin embargo, que el contrato de Cicada en sí mismo no hace suposiciones sobre cómo se determina o se hace cumplir la elegibilidad de los votantes. En particular, puede reemplazar Semaphore con, por ejemplo, Semacaulk o ZK Proof of State (como se sugiere aquí y aquí).

Autoridad estadística

Una de nuestras primeras prioridades al diseñar Cicada fue evitar la necesidad de una agencia de estadística: muchas estructuras de votación privadas requieren una agencia de estadística semi-confiable (o comité delegado, coordinado a través de un cómputo multipartidista seguro) para recibir y agregar votos. En un contexto de cadena de bloques, esto significa que estos esquemas no pueden ejecutarse solo mediante contratos inteligentes, lo que requiere cierta intervención humana y confianza.

En la mayoría de las estructuras, no se confía en la integridad de las autoridades de escrutinio (no pueden manipular el conteo de votos), pero se confía en su vivacidad: si están fuera de línea, no pueden calcular el resultado final, lo que retrasa la votación indefinidamente. En algunas estructuras, también se confía en ellos para mantener la privacidad, es decir, saben cómo vota cada individuo, pero se espera que publiquen los resultados de los votos sin revelar esta información.

Si bien las autoridades estadísticas son una suposición razonable (y necesaria) en muchos escenarios del mundo real, no son ideales en un entorno de cadena de bloques, donde nuestro objetivo es minimizar la confianza y garantizar la resistencia a la censura.

Cicada explora una de las muchas direcciones en el campo de la privacidad de la votación en cadena y complementa gran parte de la investigación realizada por otros grupos. Como se mencionó anteriormente, Cicada está estrechamente relacionado con las tecnologías de pertenencia a grupos anónimos, como los semáforos, la prueba de almacenamiento ZK y los invalidadores de límite de velocidad. Cicada también puede integrar el comprobador de pruebas optimista propuesto por el equipo de Nouns Vortex para reducir la carga de gas de los votantes.

También existe la oportunidad de adaptar Cicada para admitir diferentes esquemas de votación (p. ej., votación ponderada por fichas, votación cuadrática): los esquemas más complejos pueden ser demasiado costosos desde el punto de vista computacional para la red principal de Ethereum, pero pueden ser prácticos en L2. Con esto en mente, agradecemos sus contribuciones, bifurcaciones y sugerencias sobre dónde llevar a Cicada a continuación.

*Agradecimientos: Cicada fue desarrollado conjuntamente con Joseph Bonneau. Gracias a Andrew Hall por la información de antecedentes sobre los antecedentes históricos de la privacidad en la votación. Gracias también a Robert Hackett por sus comentarios sobre este artículo. Un agradecimiento especial a Stephanie Zinn por la edición. *

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)