Llegamos a ustedes gracias a:



Columnas de opinión

La prueba de conocimiento cero encuentra nueva vida en blockchain

Por: Matthew Tyson, fundador de Dark Horse Group

[01/09/2022] Una prueba de conocimiento cero, también conocida como protocolo ZKP, intenta establecer un hecho entre las partes con una cantidad mínima de intercambio de información. En criptografía, se pretende limitar la transferencia de información durante las actividades de autenticación. Los creadores de ZKP estudiaron explícitamente el movimiento de información, o conocimiento, en pruebas de computadora. La prueba de conocimiento cero fue un avance significativo en la introducción de una nueva área de estudio en ese momento. Sus implicaciones se están explorando nuevamente hoy en el contexto de la web3 y las blockchains.

[Reciba lo último de CIO Perú suscribiéndose a nuestro newsletter semanal]

La complejidad del conocimiento en los sistemas de prueba

Un nombre más preciso para las pruebas de conocimiento cero podría ser pruebas conscientes del conocimiento. El primer artículo que propuso la idea apareció con algunas variaciones a fines de la década de los años 80. El documento, que se refería a la complejidad del conocimiento en relación con los sistemas de prueba, planteaba la pregunta: Cuando una parte intenta probarle una declaración a la otra, ¿cuál es el mínimo de información que se debe transmitir?

El norte conceptual para tener en cuenta es que estamos tratando de comprender y controlar el flujo de información mientras que al mismo tiempo soportamos una verificación eficiente.

Prueba de conocimiento cero frente a cifrado asimétrico

La idea de la prueba de conocimiento cero surge de la era de los años 60 y 80, de la exploración de nuevos territorios conceptuales en la criptografía. Este es el mismo ambiente que nos trajo el cifrado asimétrico. Algunos protocolos ZKP utilizan la factorización prima como funciones unidireccionales (o trampilla) a lo largo de las líneas del intercambio de claves Diffie-Hellman o RSA, el algoritmo de cifrado.

Con el cifrado asimétrico, el objetivo principal es que ambas partes lleguen a un secreto compartido. En ZKP, el objetivo es hacer afirmaciones sin revelar información innecesaria. En el cifrado asimétrico, las partes comparten un número secreto; en ZKP, sin divulgar ese número, el probador demuestra su posesión de un número secreto.

No sorprende que ZKP esté encontrando un mayor uso en la blockchain.

ZKP en blockchain y web3

La capacidad de probar afirmaciones, o aserciones sin revelar los datos de prueba subyacentes, tiene una interesante variedad de usos. Por un lado, es bastante posible usar ZKP junto con las aplicaciones de autenticación existentes. Si usted puede demostrar que está en posesión de su contraseña, sin revelar el texto sin formato real de la contraseña, acaba de barrer un conjunto completo de vectores de ataque.

Sin embargo, usar ZKP para la autenticación de contraseña es un pequeño paso; en realidad no cambia el modelo fundamental con el que estamos familiarizados hoy. Para que este mecanismo de autenticación funcione, aún tendría que transmitir su contraseña a los servidores centrales del servicio con el que estaba interactuando y almacenarla allí. Para un enfoque más revolucionario, considere lo que sucedería si integráramos ZKP en el diseño de los sistemas de seguridad de aplicaciones. En ese caso, empezamos a ver alternativas a la autenticación existente. Si los gobiernos y los bancos asumieran el papel de emitir claves criptográficas para autenticar declaraciones importantes, los usuarios podrían usar protocolos ZKP para autenticar declaraciones.

Como ejemplo de alto nivel, si las agencias gubernamentales emitieran una clave como parte de un pasaporte, entonces ZKP podría usarse para demostrar un reclamo de ciudadanía sin revelar el número de pasaporte o el nombre del ciudadano. Con un poco más de hashing, el ciudadano podría usar ZKP para demostrar afirmaciones específicas como la edad.

Este tipo de funcionalidad encaja poderosamente con web3, porque los usuarios de blockchain ya tienen claves criptográficas y saben cómo usarlas. Además, ZKP podría permitir la autenticación de identidad y otros datos en el contexto de la identidad descentralizada de blockchain, ya sea en conjunto o aparte de las aplicaciones web2 existentes. Brindarles a los usuarios los medios para mostrar evidencia de prueba de conocimiento cero de su extracto bancario o puntaje de crédito a través de claves privadas permitiría nuevos tipos de funcionalidad financiera en cadena.

La conclusión es que ZKP busca minimizar las desventajas asociadas con los modelos de autenticación actuales: pérdida de control de los datos del usuario, exposición de los datos del usuario a hackers y monetización no consensuada de los datos del usuario.

Cómo funciona ZKP

En un sistema de prueba de conocimiento cero, una parte (el probador) le demuestra a la otra (el verificador) que el probador está en posesión de información, idealmente sin revelar nada más que ese hecho. Los autores del artículo original de ZKP utilizaron el ejemplo de un gráfico hamiltoniano, que es un tipo de gráfico que visita cada nodo en un gráfico conectado.

Un enfoque ingenuo para establecer que un probador estaba en posesión de dicho gráfico sería transmitir el gráfico mismo. Pero ese enfoque filtra mucha información, más allá del hecho de que el probador tiene el gráfico. En palabras de los creadores de ZKP, "contiene más conocimiento que el hamiltoniano/no hamiltoniano de un solo bit.

Podemos imaginar un escenario en el que el verificador, en cambio, consulta repetidamente información sobre líneas y puntos específicos en el gráfico y el probador responde. Si el probador proporciona suficientes respuestas válidas, es probable que, de hecho, tengan el gráfico hamiltoniano. El gráfico en sí nunca se transmite.

Un experimento mental de ZKP

En el cifrado de clave pública, los actores se llaman tradicionalmente Alice, Bob y Eve. En ZKP, el probador se llama Peggy y el verificador se llama Victor.

Figura 1. Sala de conocimiento cero y botones de Peggy.
ZKP,criptografía, conocimiento cero, blockchain, web3

Digamos que Peggy ha creado una habitación amueblada con dos botones. Invita a Victor a confirmar su afirmación de que los botones funcionan. La prueba es que puede decir cuándo se presiona uno u otro botón. Para probar la afirmación de manera de "conocimiento cero, Peggy debe estar en una habitación diferente a la de Victor. Ella no puede ver lo que él está haciendo, pero puede decir cuándo se presionan diferentes botones y puede comunicarle lo que ve a Victor. Tal vez Peggy pueda ver luces que se iluminan con diferentes colores dependiendo del botón que presione. La figura 1 muestra el diseño en forma de dibujos animados.

La primera vez que Victor presiona un botón, Peggy le advierte a Victor que se activó un botón. En este punto, Victor puede suponer que Peggy ha hecho una buena suposición o que realmente puede ver un efecto. Cualquiera de las dos posibilidades es igualmente cierta.

Para aumentar las probabilidades de que Peggy no haga trampa, los dos pueden proceder con varias rondas. Victor puede presionar el mismo botón, o un botón diferente, cada vez. Si está adivinando, el engaño de Peggy se revelará rápidamente. La probabilidad de adivinar correctamente se hace más pequeña con cada ronda. El proceso puede repetirse tantas rondas como se requieran hasta llegar a una probabilidad aceptable.

Este escenario le demuestra a Victor que Peggy sabe cuándo se presionó un botón y el efecto de ese botón, que es todo lo que Victor necesita saber. El experimento no revela los efectos del botón o cómo Peggy puede monitorearlos. Le demuestra a Victor que los botones tienen diferentes efectos, pero no necesita saber cuáles son.

Prueba y probabilidad

La clave aquí es que Victor tiene control sobre qué botón presionar, pero no conoce el efecto del botón. Él depende de Peggy para completar el ciclo de retroalimentación. Al mismo tiempo, conserva la capacidad de notar, con un alto grado de probabilidad, si Peggy puede ver legítimamente qué botón se presionó. Por eso decimos que la prueba de conocimiento cero es una prueba probabilística en lugar de determinista.

Algo más para tener en cuenta sobre el escenario de Peggy y Victor es que se trata de una prueba interactiva. En este modelo, el verificador puede interrogar al probador a voluntad. Esto contrasta con las pruebas no interactivas, donde el probador realiza el proceso de verificación por su cuenta y transmite la prueba sin interactuar con el verificador. Cualquiera de los estilos se puede aplicar usando ZKP.

Más allá de ZPK

La prueba de conocimiento cero es un campo en expansión, lo que lo convierte en un área emocionante e incierta para explorar. El protocolo genérico más común es zk-SNARK, o Zero Knowledge Succinct Non-Interactive Argument of Knowledge. Consulte el proyecto z-Cash para obtener información sobre zk-SNARK.

Aquí hay algunos consejos más para seguir estudiando:

  • Para una aplicación práctica de ZKP en blockchains, eche un vistazo al proyecto Mina.
  • ZKP también juega un papel importante en el nivel 2 de Ethereum, donde la optimización del rendimiento es fundamental. Para un proyecto específico en el espacio, considere el proyecto Nightfall de Polygon.
  • Para ver el código de trabajo y una biblioteca, consulte el proyecto Zilch.
  • Para saber cómo trabaja una empresa convencional en este espacio, consulte el trabajo de Auth0 con el proyecto MATTR.

El mejor lugar para obtener una base en los protocolos de prueba de conocimiento cero sigue siendo el documento técnico original de ZKP. Esto le da acceso a la disputa mental real que se está produciendo al concebir cómo se puede introducir el factor del tiempo computacional en los sistemas de prueba para limitar la capacidad de los atacantes de falsificar pruebas en tiempo NP. Todo fluye de eso. Implementar el código y la infraestructura para hacer realidad la promesa de esas ideas es donde estamos hoy.

Matthew Tyson es fundador de Dark Horse Group, Inc. Cree en la tecnología que da prioridad a las personas. Cuando no está tocando la guitarra, Matt explora el campo y las tierras filosóficas del interior. Escribe para JavaWorld desde el 2007.

Puede ver también: