Ciberseguridad
Contraseñas

El protocolo ZKP encuentra una nueva vida en el 'blockchain'

La prueba zero-knowledge tiene décadas de historia en la informática y la criptografía. Ahora está evolucionando para apoyar la autenticación descentralizada para blockchain y Web3.

Se acabaron las contraseñas

Una prueba zero knowledge (o 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, su objetivo es 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 las pruebas informáticas. La prueba ZKP supuso un importante avance al introducir un nuevo campo de estudio en la época. Sus implicaciones se están explorando de nuevo hoy en día en el contexto de la Web3 y el blockchain.

 

La complejidad del conocimiento en los sistemas de pruebas

Un nombre más preciso para las pruebas zero knowledge podría ser pruebas de knowledge aware. El primer artículo que propuso la idea apareció con algunas variaciones a finales de los años ochenta. El artículo, que se refería a la complejidad del conocimiento en relación con los sistemas de pruebas, planteaba la siguiente pregunta: cuando una parte intenta demostrar una afirmación a otra, ¿cuál es el mínimo de información que debe transmitirse? 

La estrella del norte conceptual que hay que tener en cuenta es que se trata de comprender y controlar el flujo de información al tiempo que se apoya una verificación eficiente.

 

ZKP vs cifrado asimétrico

La idea de ZKP proviene de la época de los años 70 y 80 en la que se exploraba un nuevo territorio conceptual en la criptografía. Es el mismo entorno que nos trajo el cifrado asimétrico. Algunos protocolos ZKP utilizan la factorización de primos como funciones (o trampas) de una sola vía, al estilo del intercambio de claves Diffie-Hellman o del algoritmo de cifrado RSA.

Con el cifrado asimétrico, el objetivo principal es que ambas partes lleguen a un secreto compartido. En el ZKP, el objetivo es hacer afirmaciones sin revelar información extraña. En el cifrado asimétrico, las partes comparten un número secreto, mientras que en ZKP, el ‘demostrador’ prueba su posesión de un número secreto sin divulgarlo.

No es de extrañar que ZKP esté encontrando un mayor uso en el blockchain.

 

ZKP en blockchain y Web3

La capacidad de demostrar afirmaciones o demandas sin desvelar los datos de prueba subyacentes tiene una interesante gama de usos. Por un lado, es muy posible utilizar ZKP junto con las aplicaciones de autenticación existentes. Si se puede demostrar que se posee la contraseña sin revelar el texto plano real de la misma, se acaba de eliminar toda una serie de vectores de ataque. 

Sin embargo, el uso de ZKP para la autenticación de contraseñas es un pequeño paso: no cambia realmente el modelo fundamental con el que estamos familiarizados hoy en día. Para que este mecanismo de autenticación funcione, todavía habría que transmitir la contraseña a los servidores centrales del servicio con el que se interactúa y almacenarla allí. Para un enfoque más revolucionario, considere lo que sucedería si integramos ZKP en el diseño de los sistemas de seguridad de las 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 las declaraciones importantes, los usuarios podrían utilizar los protocolos ZKP para autenticar las reclamaciones.

Como ejemplo de alto nivel, si los organismos gubernamentales emitieran una clave como parte de un pasaporte, entonces ZKP podría utilizarse para demostrar una reclamación de ciudadanía sin revelar el número de pasaporte o el nombre del ciudadano. Llevándolo un poco más allá, el ciudadano podría utilizar ZKP para demostrar afirmaciones específicas como la edad. 

Este tipo de funcionalidad encaja perfectamente con la Web3 porque los usuarios del blockchain ya tienen claves criptográficas y saben cómo utilizarlas. Además, ZKP podría permitir la autentificación de la identidad y de otros datos en el contexto de la identidad descentralizada de blockchain, ya sea junto o aparte de las aplicaciones de Web2 existentes. Dar a los usuarios los medios para mostrar pruebas zero-knowledge de su extracto bancario o puntuación de crédito a través de claves privadas permitiría nuevos tipos de funcionalidad financiera en la cadena de bloques. 

En definitiva, ZKP pretende minimizar los inconvenientes asociados a los actuales modelos de autenticación: pérdida de control de los datos del usuario, exposición de los datos a la piratería informática y su monetización no consentida.

 

Cómo funciona ZKP

En un sistema de prueba zero knowledge, una parte (el ‘demostrador’) demuestra a otra (el verificador) que está en posesión de información, idealmente sin revelar nada más que ese hecho. Los autores del documento original de ZKP utilizaron el ejemplo de un gráfico hamiltoniano, que es un tipo de gráfico que visita cada nodo de un gráfico conectado.

Un enfoque ingenuo para establecer que un ‘demostrador’ está en posesión de tal gráfico sería transmitir el propio gráfico. Pero este enfoque deja escapar mucha información más allá del hecho de que el ‘demostrador’ 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 imaginarnos un escenario en el que el verificador, por el contrario, pregunte repetidamente por información sobre líneas y puntos específicos del gráfico y el ‘demostrador’ responda. Si éste proporciona suficientes respuestas válidas, es probable que tenga 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 ‘demostrador’ se llama Peggy y el verificador se llama Víctor.

Digamos que Peggy ha creado una habitación con dos botones. Invita a Víctor a confirmar su afirmación de que los botones funcionan. La prueba es que ella puede saber cuándo se pulsa uno u otro botón. Para demostrar la afirmación "sin conocimiento", Peggy debe estar en una habitación diferente a la de Víctor. Ella no puede ver lo que él está haciendo, pero puede saber cuándo se pulsan los diferentes botones y puede comunicar lo que ve a Víctor. Tal vez Peggy pueda ver luces que se iluminan con diferentes colores según el botón que se pulse. 

La primera vez que Víctor pulsa un botón, Peggy le avisa de que se ha activado un botón. En este momento, Víctor puede suponer que, o bien Peggy ha hecho una buena suposición, o bien es realmente capaz de 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 rondas múltiples. Víctor puede pulsar el mismo botón o un botón diferente cada vez. Si adivina, el engaño de Peggy se revelará rápidamente. La probabilidad de adivinar correctamente se reduce con cada ronda. El proceso se puede repetir durante tantas rondas como se quiera hasta llegar a una probabilidad aceptable.

Este escenario demuestra a Víctor que Peggy sabe cuándo se ha pulsado un botón y el efecto de ese botón, que es todo lo que Víctor necesita saber. El experimento no revela los efectos del botón ni cómo Peggy es capaz de controlarlos. Demuestra a Víctor que los botones tienen efectos diferentes, pero no necesita saber cuáles son.

 

Prueba y probabilidad

La clave aquí es que Víctor tiene el control sobre qué botón pulsar, pero no conoce el efecto del botón. Depende de Peggy para completar el bucle de retroalimentación. Al mismo tiempo, conserva la capacidad de saber con un alto grado de probabilidad si Peggy puede ver legítimamente qué botón se ha pulsado. Por eso decimos que la prueba zero knowledge es probabilística y no determinista.

Otra cosa a tener en cuenta sobre el escenario de Peggy y Víctor es que se trata de lo que se llama una prueba interactiva. En este modelo, el verificador es capaz de interrogar al ‘demostrador’ a voluntad. Esto contrasta con las pruebas no interactivas, en las que el ‘demostrador’ lleva a cabo el proceso de verificación por su cuenta y transmite la prueba sin interactuar con el verificador. Cualquiera de los dos estilos puede aplicarse con ZKP.

 

Ir más allá con ZPK

La prueba zero knowledge es un campo en expansión, lo que hace que sea 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. Consulta el proyecto z-Cash para aprender sobre zk-SNARK.

A continuación se ofrecen algunas indicaciones más para profundizar en el tema:

  • Para una aplicación práctica de ZKP en blockchain, echa 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 este espacio, considere el proyecto Nightfall de Polygon.
  • Para ver un código de trabajo y una biblioteca, mira el proyecto Zilch.
  • Si quieres saber cómo trabaja una empresa convencional en este ámbito, consulta el trabajo de Auth0 con el proyecto MATTR.

El mejor lugar para obtener una base en los protocolos zero knowledge sigue siendo el libro blanco original de ZKP. Esto te da acceso a la lucha mental real que se lleva a cabo en la concepción de cómo el factor de tiempo computacional puede ser introducido en los sistemas de prueba para limitar la capacidad de los atacantes para falsificar las pruebas en tiempo NP. Todo se deriva de eso. La implementación del código y la infraestructura para hacer realidad la promesa de esas ideas es donde estamos hoy.



TE PUEDE INTERESAR...

Forma parte de nuestra comunidad

 

¿Te interesan nuestras conferencias?

 

 
Cobertura de nuestros encuentros
 
 
 
 
Lee aquí nuestra revista de canal

DealerWorld Digital