¡Bienvenido! ¿Eres nuevo en Zcash?
The Zcash network is young, but evolving quickly! Sign up and we'll be in touch with monthly highlights on ecosystem growth, network development and how to get started with Zcash!

Idioma

Protocolo de Computación Multipares zk-SNARK Mejorado

Sean Bowe, Ariel Gabizon and Ian Miers | Oct 31, 2017

zk-SNARKs, las pruebas de conocimiento-cero en el núcleo de Zcash, requieren una ceremonia de generación de parámetros para cada enunciado sobre el cual deseemos crear pruebas. Aunque la privacidad está protegida por zk-SNARK incondicionalmente, si esta ceremonia se viera comprometida, sería posible falsificar Zcash. Por lo tanto, es importante para nosotros garantizar que estos parámetros se creen de forma segura.

El año pasado, Zcash realizó una ceremonia de este tipo utilizando un protocolo de computación multipares (MPC). Estos protocolos tienen la propiedad de que solo una de las partes debe permanecer fuera de riesgo para que los parámetros resultantes sean seguros. En otras palabras, para comprometer la ceremonia, todos los participante deben verse comprometidos.

Sin embargo, el protocolo que utilizamos para la ceremonia no puede escalar más allá de un puñado de participantes. A medida que continuemos actualizando Zcash, tendremos que realizar más de estas acciones, por lo que es importante para nosotros mejorar la escalabilidad y el rendimiento de este protocolo. Además, los proyectos fuera de Zcash que deseen utilizar zk-SNARK necesitarán realizar sus propias configuraciones, por lo que nos gustaría que también fuera más económico y fácil para ellos.

Ariel Gabizon, Ian Miers y yo acabamos de publicar un paper detallando un nuevo protocolo MPC que puede escalar a un número prácticamente ilimitado de participantes. El paper también incluye la construcción de curva elíptica reforzada, BLS12-381, sobre la que hemos hablado antes en un post del blog.

MPC con participantes intercambiables

En el protocolo MPC original, todos los participantes debían hacerse cargo de su parte del "desecho tóxico" por adelantado, para protegerse contra ataques adaptativos. Esto significaba que todos los participantes debían estar disponibles durante todo el protocolo, y nadie podía abortar sin hacer abortar todo el protocolo. Los participantes necesitaban mantener su hardware bajo custodia durante todo el proceso, por lo que la ceremonia no podía escalar más allá de un puñado de personas.

Nuestro nuevo protocolo es lo que nos gusta llamar un MPC de participantes intercambiables. Como antes, alcanza con que un participante actúe honestamente para que la ceremonia sea segura. Pero a diferencia de la experiencia anterior, ahora los participantes se unen al protocolo, hacen su parte y se van inmediatamente. Esto hace que la ceremonia pueda escalar a un gran número de participantes y que pueda llevarse a cabo durante un período de tiempo más largo. También disminuye el área de ataque de los participantes y evita la necesidad de costosas sincronizaciones.

Dos fases

El protocolo MPC original involucraba tres fases de computaciones. Los participantes debían hacer su parte y luego esperar su turno en la siguiente fase. Entre la primera y la segunda fase, necesitábamos realizar transformaciones fast-fourier muy costosas. Como resultado de todo esto, el rendimiento del MPC original fue bajo.

En el nuevo protocolo, hemos logrado reducir el MPC a dos fases. Además, la primera fase es independiente del circuito zk-SNARK preciso, por lo que se puede realizar una gran ceremonia comunitaria que evalúe esta fase para todos los proyectos que deseen utilizar zk-SNARK. La segunda fase no implica transformaciones fast-fourier, lo que significa que los MPCs para Zcash y otros proyectos pueden escalar a un número ilimitado de participantes sin costosas computaciones.

Hemos comenzado una implementación de esta primera fase de la ceremonia de computación multipartes, escrita en Rust, que usa la nueva curva elíptica BLS12-381.

Resumen

Este nuevo protocolo permite ceremonias de generación de parámetros zk-SNARK mucho más seguras:

  • Permite que la ceremonia involucre a un mayor número de participantes, con la misma propiedad de que solo uno de ellos debe actuar honestamente para garantizar que los parámetros sean seguros.
  • Nos permite dar a los participantes una gran flexibilidad en el hardware y el sistema operativo que utilicen para participar. Como resultado, nos permite reducir la cantidad de dependencias y códigos que debemos auditar.
  • Reduce en gran medida el tiempo que los participantes deben dedicar a la ceremonia, reduciendo el área de superficie de los ataques y permitiendo que un grupo más amplio de participantes contribuya.
  • Utiliza una construcción de curva elíptica más robusta que mejora la seguridad.

Esperamos compartir más detalles sobre las ceremonias de generación de parámetros zk-SNARK próximamente.

zkSNARKs, cryptography, Parameter Generation | Ver todos los tags