Pruebas de Conocimiento Cero o “Zero Knowledge Proofs”

Explorando los conceptos básicos de la “Prueba interactiva de conocimiento cero” de los que quizás hayas escuchado antes si estas metido en el mundo de Crypto.

sheinix
4 min readNov 19, 2018

“Prueba interactiva de conocimiento cero o Zero Knowledge Proof es un método criptográfico mediante el cual una de las partes, puede demostrar a la otra, que ciertas declaraciones son ciertas sin revelar ninguna otra información acerca de la veracidad de la declaración”.

Supongamos que conozco un secreto que no quiero contarle a nadie, pero aún así, quiero hacerles saber que es cierto que yo se ese secreto, sin revelar los detalles. ¿Suena familiar?

Veamos un uso práctico:

El caso de uso de la votación es bastante bueno para explicar la practicidad de las pruebas de cero conocimiento. Supongamos que estamos participando de una votación, entonces tenemos que votar en una boleta. Pero ahora, quiero demostrarle a un verificador que voté sin revelar el voto que hice. ¡Ahí es donde entran las Pruebas de Cero Conocimiento!

El protocolo de Pruebas de Cero conocimiento tiene 3 requisitos.

1. Integridad

Se asume que las dos partes involucradas (el probador y el verificador) son honestos y seguirán el protocolo.

2. Solidez

Si asumimos que el probador no es honesto y no sabe un secreto y queremos convencer al verificador de que él o ella sabe el secreto, no será posible porque las posibilidades de engañar con éxito al verificador son demasiado bajas.

3. Cero Conocimiento

Esto significa que sabemos que hay una parte “A” que actúa de “probador”, un verificador “B” y que “A” demostrará al verificador “B” que “A” conoce el secreto. Así que “A” puede demostrar a “B” y solo a “B” que él o ella sabe un secreto. Los agentes externos a este proceso no tienen forma de estar seguros de la certeza de la prueba.

Ejemplo: La Extraña cueva de Ali Baba:

Este es el ejemplo más común e intuitivo para demostrar las pruebas interactivas de cero conocimiento:

Digamos que tenemos una cueva que tiene una puerta en el otro extremo y esta puerta solo se abre cuando alguien sabe el secreto para abrir esta puerta. Entonces digamos que “Bob” conoce el secreto para abrir la puerta de la cueva y quiere demostrarle a “Alice” que él conoce este secreto sin revelarlo.
El primer paso en el protocolo es poner a “Bob” dentro de la cueva y que eliga el camino que quiera, en este caso particular “A” o “B”.

Bob elige uno de los dos caminos al azar y Alice espera afuera de la cueva

2) Después de que Bob eligió el camino “A”, Alice entra a la cueva y le pide a Bob que salga apareciendo por el camino “B”.

Ahora Alice le pide a Bob que salga por el camino “B”

3) Debido a que Bob conoce el secreto para abrir la puerta, sale por el camino “B” y Alice puede verificar que Bob realmente conoce el secreto.

Alice ve a Bob salir por el camino B, está convencida … ¿o no?

4) El problema es que Bob podría tener suerte la primera vez, podría haber elegido el camino que Alice le había pedido y, por lo tanto, no necesitaba abrir la puerta. Así que en este momento es muy fácil engañar a Alice, porque hay un 50% de probabilidades de que Bob conozca el secreto. Para reducir la posibilidad de que Alice sea engañada por Bob, repiten el procedimiento varias veces. Cada vez que repiten este proceso, las posibilidades de engaño de Bob se reducen. Por ejemplo, si lo hacen 20 veces seguidas, la posibilidad de que Bob anticipara con éxito todas las solicitudes de Alice se volvería muy pequeña (aproximadamente una en un millón).

Una nota al margen sobre el requisito de cero conocimiento de este proceso es que, Bob le demostró a Alice y solo a Alice que él conoce el secreto. Por ejemplo, digamos que una amiga de Alice, “Sarah”, estaba con ella a la salida de la cueva. Sarah no debería estar convencida de que Bob conoce el secreto porque podrían estar de acuerdo de antemano en la secuencia de caminos que Alice solicitará a Bob.

Ahora que entendemos los conceptos básicos detrás de las pruebas interactivas de conocimiento cero, podemos ver cómo se aplican a Blockchain.

Pruebas de conocimiento cero no interactivas

Este protocolo también sirve para “pruebas secretas”, es decir, para pruebas en donde no se requiere interacción entre el probador y el verificador. Este protocolo es la base sobre la cual se construyen los “zkSNARKS” (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge). zKSNARKS es la columna vertebral del protocolo ZCash (un proyecto de blockchain basado en Zero Knowledge Proof) y una de las particularidades de la próxima versión de Ethereum Metropolis.

Un enfoque más práctico de uso es en el Blockchain de Ethereum:

Supongamos que tengo una empresa y pongo 10 ETH en un contrato inteligente el cual maneja la siguiente lógica: cualquier persona que interactúe con el contrato y realice ciertas tareas confidenciales, cuando se completen con éxito, el contrato inteligente le entregará los 10 ETH a la persona.
No quiero que todos conozcan estas tareas, ya que pueden ser perjudiciales para mi empresa. ZkSNARKS proporcionará las pruebas necesarias de que esas tareas se han completado con éxito sin revelar cuáles son. Esto significa que puedo demostrar mi “honestidad” como empresa si declaro que ciertas tareas se completaron o no, sin revelarlas.

ZKSnarks proporcionaran una capa de privacidad a las operaciones dentro de la Blockchain de Ethereum, tenemos que esperar y ver cómo se desarrollará, pero no hay duda de que esto será una gran adición para Ethereum.

--

--

sheinix
sheinix

Written by sheinix

Software Developer 👨‍💻 from #ARG 🇦🇷 living in #NZ 🇳🇿. Crazy about #Blockchain and #Bitcoin. #iOSDev & #Youtuber (Spanish): bit.ly/2O2xI7Y

No responses yet