Seguridad
Herramienta

¿Qué es zk-SNARK?

Una introducción al protocolo de conocimiento cero más popular a través de una perspectiva crítica y detallada. Desde su concepción teórica hasta su aplicación práctica pasando por su evolución.

zk-SNARK

Zk-SNARK, que significa conocimiento o argumento sucinto no interactivo de conocimiento cero, es el protocolo de conocimiento cero más popular.  Este es un espacio de creciente importancia, ya que los sistemas de conocimiento cero son un área de desarrollo activo que puede alterar el funcionamiento de la autenticación. Si bien las matemáticas son intensas, las ideas generales no son difíciles de entender. 

 

¿Qué es el conocimiento cero?

El conocimiento cero es el intento de utilizar la menor cantidad de información posible al verificar una declaración. Es decir, trabaja para idear pruebas que eviten la transferencia de datos adicionales. Encontramos un precedente en este campo en el artículo Knowledge Complexity of Interactive Proof Systems, que apareció en algunas ediciones durante la década de 1980. Como su propio nombre indica, el documento se compromete a obtener una comprensión de cómo se comporta el conocimiento en la demostración de declaraciones entre sistemas que interactúan

Un paper que se entiende mejor como un descendiente del artículo seminal de 1971 de Stephen Cook The Completeness of Theorem Proving Procedures, que inspiró el campo de la teoría de la complejidad en las ciencias de la computación. El artículo de Cook intentó examinar y poner límites a la complejidad de los algoritmos de forma explícita. De manera paralela, el artículo sobre la complejidad del conocimiento puso el objeto de estudio en un enfoque explícito, intentando poner límites superiores e inferiores a su alrededor en las demostraciones.

 

Cero conocimiento y autenticación

Por prueba podemos entender autenticaciónCuando dos o más sistemas de software están en comunicación y una de las partes hace un reclamo, ¿cómo prueba su reclamo a las otras partes? El conocimiento cero analiza cómo se hace esto y propone métodos alternativos a los enfoques ingenuos, métodos que reducen la cantidad de fuga de conocimiento y, por lo tanto, mejoran la seguridad del sistema en general. Por ejemplo, en un enfoque ingenuo, un sistema puede afirmar tener conocimiento de una contraseña. Para demostrarlo a otro sistema, simplemente se transmitiría la contraseña. Los protocolos de conocimiento cero funcionan para convencer con un mínimo de conocimiento, sin enviar la contraseña en sí en este ejemplo. Tales pruebas se basan en la probabilidad. Permiten la alta probabilidad de que la autenticación sea válida.

Las pruebas interactivas requieren el diálogo continuo entre las partes. El probador y el verificador se involucran en una ida y vuelta, donde el verificador interroga al probador para obtener información. Cada respuesta correcta aumenta la confianza del verificador (reduce la probabilidad de que el probador esté mintiendo) en la afirmación del probador. La innovación contenida en las pruebas de zk-SNARK es que este proceso de diálogo está encapsulado en un paquete seguro que se puede entregar una vez del probador al verificador. A partir de entonces, el verificador puede interactuar con la prueba misma. Por lo tanto, son pruebas no interactivas.

Las pruebas no interactivas se demostraron por primera vez en 1988 en el artículo Non-interactive Zero-Knowledge. Este trabajo planteó la viabilidad de encapsular pruebas de conocimiento cero en un formato no interactivo. A esto le siguió en 2012 From Extractable Collision Resistance to Succinct Non-Interactive Arguments of Knowledge, y Back Again, que introdujo SNARK. Desde entonces, la historia ha sido la de refinar e implementar gradualmente la idea básica.

 

Implementaciones de zk-SNARK

Si la idea de SNARK se percibe como un concepto específico, entonces, la primera implementación práctica se basa en el protocolo Pinocchio, propuesto en 2013. En el citado documento se describe un esquema para el cómputo público verificable, en el que se pueden usar recursos de cómputo no confiables para confirmar la ejecución de funciones. Esta idea se elaboró ??y describió con más detalle en Succinct Non-Interactive Zero Knowledge for a Von Neumann Architecture. La conclusión de gran parte del trabajo aquí es que zk-SNARK parece ser un matorral matemático impenetrable. De hecho, hay hazañas mentales impresionantes que incluyen saltos intuitivos al estilo de Diffie-Hellman, así como una cantidad increíble de trabajo duro para lograr las transformaciones que sustentan los sistemas de trabajo. Mucha inspiración y transpiración.

La complejidad de zk-SNARK se ve agravada por su novedad. La teoría en sí, como se ha visto, es un desarrollo reciente y aún se está elaborando. Las implementaciones son un área especialmente activa, ya que los fundamentos se abstraen y luego se integran en bibliotecas destinadas a aplicaciones y casos de uso específicos. Esos casos de uso en sí mismos se están descubriendo a medida que la aplicabilidad de zk-SNARK se prueba en la naturaleza con sistemas en funcionamiento. Los casos de uso y los sistemas de software que los admiten son de mayor interés aquí, pero antes de pasar a eso, obtengamos una comprensión más profunda de cómo funciona zk-SNARK sin ahondar demasiado en las matemáticas.

 

Cómo funciona zk-SNARK

ZK-SNARK verifica fundamentalmente que se ha realizado un cálculo. Esto se hace tomando el cálculo original (es decir, una función) y expresándolo en un formato muy específico, algo que se logra a través de una serie de transformaciones matemáticas. Ese formato final es el formato real de zk-SNARK que se puede usar para demostrar que se ha realizado el cálculo con la entrada dada (la entrada se llama testigo en zk-SNARK, porque se puede usar para demostrar que se ha producido el cálculo con ese argumento).

Dos comentarios son apropiados acerca de ese arreglo. En primer lugar, para muchas aplicaciones, el arreglo requiere primero modificar el reclamo deseado en un equivalente funcional. Por ejemplo, en el caso de una contraseña, la contraseña de texto sin formato se puede ejecutar a través de un algoritmo hashLo que luego se probará es que el hash se ejecutó contra la contraseña, lo que equivale a probar la posesión de la contraseña.

La siguiente apreciación es que la naturaleza de la computación verificable abre un nuevo modelo de computación que tiene implicaciones más allá de la simple autenticación de declaraciones. Ese modelo permite la externalización de la computación a recursos de terceros, incluso en un entorno sin confianza, porque el recurso puede demostrar criptográficamente la ejecución. Esto tiene consecuencias importantes para las cadenas de bloques, porque en lugar de verificar las transacciones transmitiendo la información real, las cadenas de bloques pueden usar zk-SNARK para transmitir solo la prueba. El protocolo MINA es un ejemplo de una cadena de bloques que funciona en esta línea de pensamiento.

La subcontratación de computación de esta manera también puede tener casos de uso más allá de blockchain, al crear una especie de mercado de computación sin la necesidad de organizaciones de terceros confiables. Hoy en día, esas organizaciones son generalmente proveedores de nube de varios tipos. El truco clave que realiza zk-SNARK es convertir el cálculo en una forma polinomial. En ese formato, el cálculo se puede probar probando puntos en el gráfico de polinomios. Es decir, las soluciones del polinomio se utilizan para verificar que el probador está realmente en posesión de la prueba, en lugar del polinomio en sí. Al probar una serie de puntos, la prueba aumenta la confiabilidad probable. Entonces, la primera parte de las transformaciones son responsables de convertir una función en una forma matemática (circuito algebraico -> R1CS), luego convertirla en un polinomio (QAP) y luego convertirla en una forma que sea verificable de manera eficiente (PCP lineal -> Interactivo lineal). prueba) y finalmente una forma transmisible: el propio SNARK.

 

Aplicaciones para zk-SNARK

Además del potencial para mover blockchains a computación verificable, zk-SNARK puede admitir autenticación de estilo de conocimiento cero, tanto en términos de proporcionar credenciales para iniciar sesión como más ampliamente para establecer declaraciones. Por ejemplo, afirmar que el usuario tiene una cuenta bancaria por un monto determinado (esto requeriría interactuar con el banco como un tercero).

Al usar zk-SNARK, es posible una especie de autenticación anónima. Es decir, el usuario puede demostrar que se le permite acceder a un recurso basado simplemente en un hecho en su posesión, en lugar de su identidad. Dicho mecanismo aumenta la seguridad de los sistemas seguros al limitar la cantidad de conocimiento intercambiado al realizar actividades de autenticación. Finalmente, es posible implementar sistemas de pago totalmente anónimos con zk-SNARK. Una transacción puede continuar verificando los fondos disponibles, asegurándose de que estén en depósito, verificando la entrega de bienes y completando el contrato, todo sin divulgar la identidad de ninguna de las partes.



TE PUEDE INTERESAR...

Accede a la cobertura de nuestros encuentros
 
Lee aquí nuestra revista digital de canal

DealerWorld Digital

 

Forma parte de nuestra comunidad
 
¿Interesado en nuestros foros? 

 

Whitepaper